commit cd0af5a1d33a563e3eb7d0db9d1bfc36f9c8fb1d Author: craisinlord Date: Mon Jun 22 14:47:55 2026 -0500 Initial commit diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 00000000..59499bce --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..1ca1690f --- /dev/null +++ b/build.gradle @@ -0,0 +1,81 @@ +plugins { + id "architectury-plugin" version "3.4-SNAPSHOT" + id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false +// id "com.modrinth.minotaur" version "2.+" + id "com.matthewprenger.cursegradle" version "1.4.0" + id "me.modmuss50.mod-publish-plugin" version "0.5.1" +} + +architectury { + minecraft = rootProject.minecraft_version +} + +subprojects { + apply plugin: "dev.architectury.loom" +// apply plugin: "com.modrinth.minotaur" + apply plugin: "me.modmuss50.mod-publish-plugin" + apply plugin: "com.matthewprenger.cursegradle" + + version = "${rootProject.mod_version}+${rootProject.minecraft_version}-${name}" + + loom { + silentMojangMappingsLicense() + } + + dependencies { + minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" + mappings loom.officialMojangMappings() + } +} + +allprojects { + apply plugin: "java" + apply plugin: "architectury-plugin" + apply plugin: "maven-publish" + + archivesBaseName = rootProject.modid + version = "${rootProject.mod_version}+${rootProject.minecraft_version}-${name}" + group = rootProject.maven_group + + repositories { + maven { url "https://maven.fabricmc.net/" } + maven { url "https://maven.neoforged.net/releases" } + mavenCentral() + maven { url = 'https://maven.quiltmc.org/repository/release' } + maven { + url = 'https://maven.cafeteria.dev/releases' + content { + includeGroup 'dev.cafeteria' + } + } + exclusiveContent { + forRepository { + maven { + name = "GeckoLib" + url = "https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/" + } + } + filter { + includeGroup("software.bernie.geckolib") + } + } + maven { url "https://nexus.resourcefulbees.com/repository/telepathicgrunt/" } + maven { url "https://maven.architectury.dev/" } + maven { url "https://maven.shedaniel.me" } + maven { url "https://jitpack.io" } + maven { url "https://www.cursemaven.com" } + maven { url "https://api.modrinth.com/maven/" } + } + + tasks.withType(JavaCompile) { + options.encoding = "UTF-8" + options.release = 21 + } + + java { + withSourcesJar() + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + } +} diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 00000000..38199053 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,61 @@ +dependencies { + + // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies + // Do NOT use other classes from fabric loader + modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" + +// modImplementation("curse.maven:create-${create_curseforge_id}:${create_curseforge_file_id}") +// modImplementation("curse.maven:selene-499980:4754433") + compileOnly("curse.maven:intapi-${project.intapi_curseforge_id}:${project.intapi_curseforge_file_id_neoforge}") + compileOnly("curse.maven:create-${project.create_curseforge_id_neoforge}:${project.create_curseforge_file_id_neoforge}") + compileOnly("curse.maven:marvel-${project.marvel_curseforge_id}:${project.marvel_curseforge_file_id}") + compileOnly("curse.maven:stellaris-${project.stellaris_curseforge_id}:${project.stellaris_curseforge_file_id}") + compileOnly("curse.maven:aperture-${project.aperture_curseforge_id}:${project.aperture_curseforge_file_id}") + compileOnly("curse.maven:inventory_pets-${project.inventory_pets_curseforge_id}:${project.inventory_pets_curseforge_file_id}") + compileOnly("curse.maven:cataclysm-${project.cataclysm_curseforge_id}:${project.cataclysm_curseforge_file_id}") + compileOnly("curse.maven:iaf-${project.iaf_curseforge_id}:${project.iaf_curseforge_file_id}") + compileOnly("curse.maven:backpack-${project.backpack_curseforge_id}:${project.backpack_curseforge_file_id}") +// compileOnly("curse.maven:regions_unexplored-${project.regions_unexplored_curseforge_id}:${project.regions_unexplored_curseforge_file_id}") +// compileOnly("curse.maven:geckolib-${project.geckolib_curseforge_id}:${project.geckolib_curseforge_file_id}") + compileOnly(files("$rootDir/infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/infinity-2.7.1+1.21.1-fabric.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge-sources.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/gravity-api-1.0.7-1.20.1.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/Cloro's Gravity Gun Mod (Release 1.3.1).jar")) +// compileOnly(files("$rootDir/infinite_dimensions_jars/antarchy-1.0.0+1.21.1-neoforge.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/VanillaBackport-neoforge-1.21.1-1.1.7.6.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/soul-fire-d-neoforge-1.21-6.1.0.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/prometheus-neoforge-1.21-1.2.5.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/sable-neoforge-1.21.1-2.0.3.jar")) + compileOnly("software.bernie.geckolib:geckolib-neoforge-${minecraft_version}:${geckolib_version}") +// +// compileOnly group: 'org.ow2.asm', name: 'asm-tree', version: '9.4' +// implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' + + + annotationProcessor "org.spongepowered:mixin:0.8.7:processor" + implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:${rootProject.mixin_extras}")) +} + +architectury { + common("fabric", "neoforge") +} + +loom { + mixin { + useLegacyMixinAp = true + defaultRefmapName = "antarchy.refmap.json" + } +} + +jar { + exclude "architectury.common.json" + + manifest { + attributes 'Fabric-Loom-Remap': true + } +} + +sourcesJar { + exclude "architectury.common.json" +} diff --git a/common/src/main/java/com/craisinlord/antarchy/Antarchy.java b/common/src/main/java/com/craisinlord/antarchy/Antarchy.java new file mode 100644 index 00000000..aa7fc096 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/Antarchy.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy; + +import com.craisinlord.integrated_api.events.lifecycle.ServerGoingToStartEvent; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + + +public class Antarchy { + public static final String MODID = "antarchy"; + public static final Logger LOGGER = LogManager.getLogger(); + + public static void init() { + ServerGoingToStartEvent.EVENT.addListener(Antarchy::serverAboutToStart); + } + private static void serverAboutToStart(final ServerGoingToStartEvent event) { + } +} \ No newline at end of file diff --git a/common/src/main/java/com/craisinlord/antarchy/compat/infinity/InfinityCompat.java b/common/src/main/java/com/craisinlord/antarchy/compat/infinity/InfinityCompat.java new file mode 100644 index 00000000..7bf2e947 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/compat/infinity/InfinityCompat.java @@ -0,0 +1,16 @@ +package com.craisinlord.antarchy.compat.infinity; + +public final class InfinityCompat { + private static InfinityCompatBridge bridge = InfinityCompatBridge.NOOP; + + private InfinityCompat() { + } + + public static InfinityCompatBridge get() { + return bridge; + } + + public static void bind(InfinityCompatBridge compatBridge) { + bridge = compatBridge != null ? compatBridge : InfinityCompatBridge.NOOP; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/compat/infinity/InfinityCompatBridge.java b/common/src/main/java/com/craisinlord/antarchy/compat/infinity/InfinityCompatBridge.java new file mode 100644 index 00000000..88ece53d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/compat/infinity/InfinityCompatBridge.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.compat.infinity; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.util.RandomSource; + +public interface InfinityCompatBridge { + InfinityCompatBridge NOOP = new InfinityCompatBridge() { + }; + + default boolean isAvailable() { + return false; + } + + default ResourceLocation getRandomDimensionId(RandomSource random) { + return null; + } + + default boolean requestWarp(ServerPlayer player, ResourceLocation dimensionId) { + return false; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java b/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java new file mode 100644 index 00000000..0d1ab5d4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -0,0 +1,2255 @@ +package com.craisinlord.antarchy.config; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; + +public final class AntarchySettings { + private static boolean disableInfinityBookPortalCreation = false; + private static boolean easterBunnyEnabled = true; + private static int easterBunnyNaturalSpawnChancePercent = 1; + private static boolean rainbowAntsLeadToInfinityDimensions = true; + private static boolean brownAntRequiresReagent = false; + private static boolean redAntRequiresReagent = false; + private static boolean rainbowAntRequiresReagent = true; + private static boolean termiteRequiresReagent = false; + private static boolean antsStealFromChests = true; + private static boolean duplicatorTreeEnabled = true; + private static boolean glowingTorchflowers = true; + private static boolean glowVinesUnderLeaves = true; + private static boolean sizeChangingRaysEnabled = true; + private static double sizeRayMinScale = 0.1D; + private static double sizeRayMaxScale = 10.0D; + private static double sizeRayDeltaPerHit = 0.25D; + private static double shrinkingPotionDelta = 0.3D; + private static double growthPotionDelta = 0.5D; + private static double antDanceRadius = 5.0D; + private static double brownAntHealth = 5.0D; + private static double redAntHealth = 5.0D; + private static double rainbowAntHealth = 5.0D; + private static double termiteHealth = 5.0D; + private static double waspHealth = 16.0D; + private static double waspAttackDamage = 4.0D; + private static double waspMovementSpeed = 0.39D; + private static double bomberHealth = 10.0D; + private static double bomberAttackDamage = 4.0D; + private static double bomberExplosionDamage = 8.0D; + private static double bomberExplosionRadius = 4.0D; + private static double redAntAttackDamage = 3.0D; + private static double ultimateSwordAttackDamage = 30.0D; + private static double ultimatePickaxeAttackDamage = 22.0D; + private static double ultimateAxeAttackDamage = 38.0D; + private static double ultimateShovelAttackDamage = 24.0D; + private static double ultimateHoeAttackDamage = 8.0D; + private static double ultimateBowAttackDamage = 18.0D; + private static double ultimateBowPlayerHeal = 8.0D; + private static double ultimateBowDrawSpeedMultiplier = 2.5D; + private static boolean ultimateBowComesEnchantedWithFlame = true; + private static double ultimateCrossbowAttackDamage = 8.0D; + private static double ultimateCrossbowChargeSpeedMultiplier = 0.25D; + private static double ultimateMaceDamageMultiplier = 1.5D; + private static double battleAxeAttackDamage = 44.0D; + private static double bigBerthaAttackDamage = 55.0D; + private static double bigBerthaReachBonus = 3.0D; + private static double bigBerthaAttackSpeed = -3.0D; + private static double scorpionWhipBaseDamage = 10.0D; + private static double scorpionWhipReachBonus = 5.0D; + private static int scorpionWhipPoisonDurationTicks = 100; + private static double scorpionWhipTetherMaxRange = 10.0D; + private static int scorpionWhipReelCooldownTicks = 10; + private static double scorpionWhipSnapBonusDamage = 6.0D; + private static int scorpionWhipSnapCooldownTicks = 30; + private static double scorpionWhipPullStrength = 0.75D; + private static double scorpionWhipHeavyPullMultiplier = 0.25D; + private static double scorpionWhipSelfPullMultiplier = 0.45D; + private static int bloodCrystalKatanaAttackDamage = 7; + private static double bloodCrystalKatanaLaunchStrength = 1.1D; + private static int bloodCrystalKatanaTrailDurationTicks = 12; + private static double bigBerthaBasiliskCooldownSeconds = 7.0D; + private static double bigBerthaLucidInvertedDurationSeconds = 3.0D; + private static double bigBerthaLucidInvertedDamageBonusPercent = 25.0D; + private static double potentNyxiteInvertedDurationSeconds = 2.0D; + private static int ultimateToolEnchantability = 25; + private static int ultimateArmorEnchantability = 10; + private static int ultimateBowEnchantability = 20; + private static int ultimateCrossbowEnchantability = 20; + private static int ultimateMaceEnchantability = 20; + private static boolean ultimateToolsThreeByThreeEnabled = true; + private static boolean ultimateArmorComesEnchanted = true; + private static int ultimateHelmetArmorValue = 4; + private static int ultimateChestplateArmorValue = 9; + private static int ultimateLeggingsArmorValue = 7; + private static int ultimateBootsArmorValue = 4; + private static double ultimateHelmetArmorToughness = 3.0D; + private static double ultimateChestplateArmorToughness = 3.0D; + private static double ultimateLeggingsArmorToughness = 3.0D; + private static double ultimateBootsArmorToughness = 3.0D; + private static ResourceKey brownAntDestinationDimension = dimensionKey("antarchy:elythia"); + private static ResourceKey redAntDestinationDimension = dimensionKey("antarchy:thoraxis"); + private static ResourceKey termiteDestinationDimension = dimensionKey("antarchy:cavaryn"); + private static ResourceKey rainbowAntNonInfinityFallbackDimension = dimensionKey("antarchy:elythia"); + private static double krakenHealth = 750.0D; + private static double krakenAttackDamage = 45.0D; + private static double brutalflyHealth = 400.0D; + private static double brutalflySwipeDamage = 15.0D; + private static double brutalflySpitDamage = 5.0D; + private static double mantisHealth = 50.0D; + private static double mantisAttackDamage = 9.0D; + private static double mantisMovementSpeed = 0.42D; + private static double mantisFlyingSpeed = 0.77D; + private static boolean mantisIgnoreLightLevel = false; + private static double krakenProjectileDamageTakenMultiplier = 0.5D; + private static boolean krakenSquidSpawnEnabled = true; + private static boolean krakenMassSpawnEnabled = true; + private static double squidzookaCooldownSeconds = 1.0D; + private static double squidzookaLaunchVelocity = 2.1D; + private static double sizeRayCooldownSeconds = 1.0D; + private static boolean invertProjectilesFromInvertedPlayers = false; + private static boolean gravityGunEnabled = true; + private static boolean gravityGunBlocksEnabled = true; + private static boolean gravityGunEntitiesEnabled = true; + private static double gravityGunRange = 16.0D; + private static double gravityGunThrowStrength = 1.8D; + private static double gravityGunBlastStrength = 1.4D; + private static double gravityGunCooldownSeconds = 0.35D; + private static double gravityGunMaxHoldDistance = 10.0D; + private static double lucidAttackRange = 9.0D; + private static double lucidPearlInvertedDurationSeconds = 6.0D; + private static int corneaEarNightVisionSeconds = 15; + private static int mogglesVisionRadius = 2; + private static int mogglesVisionMaxLight = 7; + private static float mogglesVisionAlpha = 0.35f; + private static boolean dreamSandEnabled = true; + private static boolean entitySpecificFireOverlayEnabled = true; + private static double dreamSandJumpVelocityMultiplier = 1.3D; + private static double dreamSandGravityMultiplier = 0.45D; + private static double dreamSandFallDamageMultiplier = 0.35D; + private static double dreamSandEffectDurationSeconds = 7.0D; + private static boolean ichorWitherEnabled = true; + private static int nightmareHelmetArmorValue = 3; + private static int nightmareChestplateArmorValue = 8; + private static int nightmareLeggingsArmorValue = 6; + private static int nightmareBootsArmorValue = 3; + private static double nightmareHelmetArmorToughness = 3.0D; + private static double nightmareChestplateArmorToughness = 3.0D; + private static double nightmareLeggingsArmorToughness = 3.0D; + private static double nightmareBootsArmorToughness = 3.0D; + + private static double nightmareArmorDreadAuraRangePerPiece = 1.25D; + private static double nightmareHelmetDoubleDamageChance = 0.04D; + private static double nightmareChestplateDoubleDamageChance = 0.06D; + private static double nightmareLeggingsDoubleDamageChance = 0.05D; + private static double nightmareBootsDoubleDamageChance = 0.03D; + + private static double nightmareSwordBaseDamage = 15.0D; + + private static double nightmareSwordScalingFactor = 1.0D; + private static boolean basiliskPetrifyingGazeEnabled = true; + private static int basiliskSpawnMaxLightLevel = 5; + private static boolean diamondMinecartEnabled = true; + private static boolean diamondMinecartPlacesRails = true; + private static double diamondMinecartCruiseSpeed = 0.6D; + private static double diamondMinecartMaxSpeed = 1.0D; + private static double diamondMinecartAcceleration = 0.03D; + private static double diamondMinecartDeceleration = 0.04D; + private static double diamondMinecartCoastDeceleration = 0.01D; + private static boolean diamondMinecartMobDamageEnabled = true; + private static double diamondMinecartMaxMobDamage = 8.0D; + private static boolean dreadHallucinationSoundsEnabled = true; + private static double dreadHallucinationSoundMinInterval = 3.0D; + private static double dreadHallucinationSoundMaxInterval = 10.0D; + private static boolean dreadHallucinationMobsEnabled = true; + private static double dreadHallucinationMobMinInterval = 6.0D; + private static double dreadHallucinationMobMaxInterval = 16.0D; + private static double brownAntMovementSpeed = 0.28D; + private static double redAntMovementSpeed = 0.30D; + private static double rainbowAntMovementSpeed = 0.28D; + private static double termiteMovementSpeed = 0.28D; + private static double brownAntAttackDamage = 1.0D; + private static double rainbowAntAttackDamage = 1.0D; + private static double termiteAttackDamage = 1.0D; + private static double flyingSquirrelHealth = 10.0D; + private static double flyingSquirrelMovementSpeed = 0.35D; + private static double flyingSquirrelFollowRange = 16.0D; + private static double caterpillarHealth = 6.0D; + private static double caterpillarMovementSpeed = 0.24D; + private static double caterpillarFollowRange = 14.0D; + private static double caterpillarPupationTimeSeconds = 600.0D; + private static double butterflyHealth = 6.0D; + private static double butterflyMovementSpeed = 0.3D; + private static double butterflyFlyingSpeed = 0.55D; + private static double butterflyFollowRange = 32.0D; + private static double reverieHealth = 20.0D; + private static double reverieInterestRadius = 16.0D; + private static double reverieAbandonPlayerDistance = 24.0D; + private static int reverieNoticeDurationTicks = 20; + private static int reverieInterestDurationTicks = 360; + private static int reverieRebindCooldownTicks = 100; + private static int reverieDamageReactionDurationTicks = 40; + private static double reverieDangerousFallDistance = 4.0D; + private static double reverieDangerousFallSpeed = 0.18D; + private static double reverieWarningThreatRadius = 10.0D; + private static double reverieWarningThreatVerticalRange = 5.0D; + private static int reverieDuplicationCooldownTicks = 6000; + private static final boolean reverieOnlyPlayerDamage = true; + private static final double reveriePreferredFollowMinDistance = 3.0D; + private static final double reveriePreferredFollowMaxDistance = 6.0D; + private static final double reverieCatchUpDistance = 12.0D; + private static final double reveriePurpleProtectRadius = 2.7D; + private static final int reverieWarningApproachTicks = 8; + private static final int reverieWarningHoverTicks = 6; + private static final int reverieWarningReturnTicks = 8; + private static final int reverieWarningPlayerHoverTicks = 10; + private static final double reverieAmbientTargetMinRadius = 1.2D; + private static final double reverieAmbientTargetMaxRadius = 4.4D; + private static final double reverieAmbientTargetVerticalRange = 1.8D; + private static final int reverieAmbientTargetMaxAgeTicks = 40; + private static final int reverieAmbientPulseIntervalMinTicks = 12; + private static final int reverieAmbientPulseIntervalMaxTicks = 19; + private static double basiliskHealth = 100.0D; + private static double basiliskAttackDamage = 12.0D; + private static double basiliskMovementSpeed = 0.25D; + private static double basiliskArmor = 6.0D; + private static double basiliskKnockbackResistance = 0.5D; + private static double basiliskFollowRange = 28.0D; + private static int basiliskXpReward = 50; + private static int basiliskAttackAnimTicks = 18; + private static int basiliskAttackHitTick = 8; + private static int basiliskAttackCooldownTicks = 20; + private static int basiliskHissCooldownTicks = 600; + private static double basiliskGazeRange = 12.0D; + private static double basiliskGazeDotThreshold = 0.64D; + private static double basiliskFacingThreshold = 0.45D; + private static int basiliskHissChargeTicks = 30; + private static int basiliskPlayerParalyzeTicks = 50; + private static int basiliskPreyPetrifyCooldownTicks = 500; + private static double basiliskPreyPetrifyRange = 8.0D; + private static int basiliskPreyPetrifyTicks = 200; + private static double emperorScorpionHealth = 100.0D; + private static double emperorScorpionAttackDamage = 12.0D; + private static double emperorScorpionMovementSpeed = 0.32D; + private static double emperorScorpionArmor = 6.0D; + private static double emperorScorpionKnockbackResistance = 0.6D; + private static double emperorScorpionFollowRange = 32.0D; + private static int emperorScorpionXpReward = 25; + private static int emperorScorpionClawAnimTicks = 12; + private static int emperorScorpionClawHitTick = 6; + private static int emperorScorpionClawCooldownTicks = 16; + private static int emperorScorpionStingAnimTicks = 18; + private static int emperorScorpionStingHitTick = 9; + private static int emperorScorpionStingCooldownTicks = 42; + private static int emperorScorpionPoisonTicks = 100; + private static int emperorScorpionWeaknessTicks = 80; + private static int emperorScorpionSummonIntervalTicks = 180; + private static int emperorScorpionMaxSummonedScorpions = 4; + private static double scorpionHealth = 30.0D; + private static double scorpionAttackDamage = 5.0D; + private static double scorpionMovementSpeed = 0.29D; + private static double scorpionArmor = 2.0D; + private static double scorpionKnockbackResistance = 0.2D; + private static double scorpionFollowRange = 24.0D; + private static int scorpionXpReward = 5; + private static int scorpionAttackAnimTicks = 12; + private static int scorpionAttackHitTick = 6; + private static int scorpionAttackCooldownTicks = 16; + private static int scorpionPoisonTicks = 80; + private static double bedBugHealth = 18.0D; + private static double bedBugAttackDamage = 4.0D; + private static double bedBugMovementSpeed = 0.24D; + private static double bedBugArmor = 2.0D; + private static double bedBugFollowRange = 20.0D; + private static int bedBugXpReward = 4; + private static int bedBugBiteAnimTicks = 10; + private static int bedBugAttackHitTick = 5; + private static int bedBugAttackCooldownTicks = 12; + private static int bedBugMinLayEggDelay = 80; + private static int bedBugMaxLayEggDelay = 160; + private static double bedBugFoodSearchRadius = 10.0D; + private static double bedBugEggGuardRadius = 7.0D; + private static double bedBugAttackStartReachBuffer = 1.15D; + private static double bedBugAttackReachBuffer = 0.3D; + private static double bedBugAttackLungeHorizontalSpeed = 0.42D; + private static double bedBugAttackLungeVerticalSpeed = 0.1D; + private static float bedBugHealAmount = 2.0F; + private static double brutalflyArmor = 10.0D; + private static double brutalflyArmorToughness = 4.0D; + private static double brutalflyKnockbackResistance = 0.7D; + private static double brutalflyMovementSpeed = 0.34D; + private static double brutalflyFlyingSpeed = 0.55D; + private static double brutalflyFollowRange = 48.0D; + private static int brutalflyXpReward = 80; + private static int brutalflyDeathSpawnCountMin = 5; + private static int brutalflyDeathSpawnCountMax = 10; + private static int brutalflySpitWindupTicks = 16; + private static int brutalflySwipeTicks = 18; + private static float brutalflySwipeKnockback = 2.8F; + private static int brutalflyPhaseOneSpitCooldownMin = 70; + private static int brutalflyPhaseOneSpitCooldownMax = 95; + private static int brutalflyPhaseTwoSpitCooldownMin = 42; + private static int brutalflyPhaseTwoSpitCooldownMax = 60; + private static int brutalflyPhaseThreeSpitCooldownMin = 26; + private static int brutalflyPhaseThreeSpitCooldownMax = 40; + private static int brutalflyPhaseOneMeleeCooldownMin = 42; + private static int brutalflyPhaseOneMeleeCooldownMax = 51; + private static int brutalflyPhaseTwoMeleeCooldownMin = 30; + private static int brutalflyPhaseTwoMeleeCooldownMax = 37; + private static int brutalflyPhaseThreeMeleeCooldownMin = 20; + private static int brutalflyPhaseThreeMeleeCooldownMax = 26; + private static double cloudSharkHealth = 40.0D; + private static double cloudSharkAttackDamage = 5.0D; + private static double cloudSharkMovementSpeed = 0.34D; + private static double cloudSharkFlyingSpeed = 0.5D; + private static double cloudSharkFollowRange = 40.0D; + private static double cloudSharkKnockbackResistance = 0.2D; + private static int cloudSharkXpReward = 8; + private static double krakenMovementSpeed = 0.24D; + private static double krakenFlyingSpeed = 0.24D; + private static double krakenFollowRange = 64.0D; + private static double krakenKnockbackResistance = 0.8D; + private static double krakenArmor = 8.0D; + private static int krakenXpReward = 60; + private static double krakenPhaseTwoSpeedBonus = 0.15D; + private static double krakenPhaseTwoFlyingSpeedBonus = 0.15D; + private static double krakenPhaseTwoDamageBonus = 4.0D; + private static double krakenBossBarRange = 40.0D; + private static float krakenLightningDamagePhaseOne = 8.0F; + private static float krakenLightningDamagePhaseTwo = 12.0F; + private static int krakenLightningAmbientCooldownPhaseOneMin = 80; + private static int krakenLightningAmbientCooldownPhaseOneMax = 160; + private static int krakenLightningAmbientCooldownPhaseTwoMin = 35; + private static int krakenLightningAmbientCooldownPhaseTwoMax = 70; + private static int krakenLightningStrikeCooldownPhaseOneMin = 60; + private static int krakenLightningStrikeCooldownPhaseOneMax = 140; + private static int krakenLightningStrikeCooldownPhaseTwoMin = 26; + private static int krakenLightningStrikeCooldownPhaseTwoMax = 46; + private static int krakenPhaseSummonCooldownPhaseOneMin = 90; + private static int krakenPhaseSummonCooldownPhaseOneMax = 140; + private static int krakenPhaseSummonCooldownPhaseTwoMin = 90; + private static int krakenPhaseSummonCooldownPhaseTwoMax = 140; + private static int krakenPhaseSummonedMinionsMin = 1; + private static int krakenPhaseSummonedMinionsMax = 2; + private static int krakenPhaseTwoMinionsNearbyCap = 12; + private static int krakenPhaseTwoMinionSpawnAttempts = 18; + private static double lucidHealth = 30.0D; + private static double lucidAttackDamage = 4.0D; + private static double lucidMovementSpeed = 0.22D; + private static double lucidFlyingSpeed = 0.35D; + private static double lucidFollowRange = 40.0D; + private static double lucidKnockbackResistance = 0.5D; + private static int lucidXpReward = 10; + private static int lucidAttackWindupTicks = 16; + private static int lucidAttackRecoveryTicks = 8; + private static int lucidBurstShots = 3; + private static int lucidBurstIntervalTicks = 6; + private static int lucidAttackCooldownTicks = 52; + private static double lucidMinEffectiveAttackRange = 10.0D; + private static double lucidMinHoverRange = 6.5D; + private static double lucidCloseRange = 4.5D; + private static double lucidDefaultHoverHeight = 2.75D; + private static double lucidHitboxWidthScale = 1.3D; + private static double lucidHitboxHeightScale = 1.48D; + private static double lucidHitboxYOffset = 1.08D; + private static double missileSquidHealth = 50.0D; + private static double missileSquidAttackDamage = 6.0D; + private static double missileSquidMovementSpeed = 0.84D; + private static double missileSquidFlyingSpeed = 0.84D; + private static double missileSquidFollowRange = 20.0D; + private static double missileSquidKnockbackResistance = 0.15D; + private static int missileSquidXpReward = 6; + private static int missileSquidLatchDamageInterval = 15; + private static float missileSquidLatchDamage = 2.0F; + private static double missileSquidAttachRangeSqr = 2.25D; + private static double molewormHealth = 8.0D; + private static double molewormAttackDamage = 1.0D; + private static double molewormMovementSpeed = 0.25D; + private static int molewormXpReward = 0; + private static double triffidHealth = 80.0D; + private static double triffidAttackDamage = 10.0D; + private static double triffidGrabDamage = 15.0D; + private static double molevoreHealth = 60.0D; + private static double molevoreAttackDamage = 10.0D; + private static double molevoreMovementSpeed = 0.27D; + private static double molevoreArmor = 6.0D; + private static double molevoreKnockbackResistance = 0.65D; + private static double molevoreFollowRange = 28.0D; + private static int molevoreXpReward = 20; + private static int molevoreSpinTicks = 12; + private static int molevoreCooldownTicks = 60; + private static double molevoreChargeSpeed = 1.15D; + private static double molevoreBreakRange = 1.8D; + private static double molevoreBreakVerticalRange = 2.2D; + private static double molevoreBreakHalfWidth = 1.1D; + private static double nightmareHealth = 180.0D; + private static double nightmareAttackDamage = 14.0D; + private static double nightmareMovementSpeed = 0.28D; + private static double nightmareFlyingSpeed = 0.3D; + private static double nightmareFollowRange = 48.0D; + private static double nightmareKnockbackResistance = 0.75D; + private static double nightmareArmor = 8.0D; + private static int nightmareXpReward = 25; + private static int nightmareAttackTotalTicks = 18; + private static int nightmareAttackDamageTick = 9; + private static int nightmareIntroRoarTicks = 32; + private static int nightmareCombatRoarTicks = 24; + private static int nightmareDeathTicks = 36; + private static int nightmareTargetResetTicks = 60; + private static int nightmareBedBugEggSearchInterval = 30; + private static int nightmareDreadTicks = 160; + private static int nightmareWeaknessTicks = 100; + private static double nightmarePatrolSpeed = 0.34D; + private static double nightmareCombatFlightSpeed = 0.58D; + private static double nightmareGroundApproachSpeed = 0.82D; + private static double nightmareAttackStartRangeSqr = 42.25D; + private static double nightmareGroundApproachRangeSqr = 16.0D * 16.0D; + private static double nightmareAttackReachRadius = 2.65D; + private static double nightmareAttackCommitHorizontalRange = 4.2D; + private static double nightmareAttackCommitVerticalRange = 2.8D; + private static double nightmareFlightReengageRangeSqr = 10.0D * 10.0D; + private static double nightmareCloseApproachRangeSqr = 6.0D * 6.0D; + private static double nightmareRoarRetryDistanceSqr = 20.0D * 20.0D; + private static double nightmareBedBugEggBreakRangeSqr = 2.8D * 2.8D; + private static float nightmareAirPatrolChance = 0.2F; + private static double battleAxeAttackSpeed = -3.1D; + private static double basiliskDaggerAttackDamage = 6.0D; + private static double basiliskDaggerAttackSpeed = -1.8D; + private static int basiliskDaggerPoisonDurationTicks = 200; + private static int basiliskDaggerPoisonAmplifier = 2; + private static double ultimateSwordAttackSpeed = -2.4D; + private static double ultimatePickaxeAttackSpeed = -2.8D; + private static double ultimateAxeAttackSpeed = -3.0D; + private static double ultimateShovelAttackSpeed = -3.0D; + private static double ultimateHoeAttackSpeed = 0.0D; + private static double ultimateMaceAttackSpeed = -3.4D; + private static double nightmareSwordAttackSpeed = -2.4D; + private static int bigBerthaBasiliskParalyzeDurationTicks = 80; + private static int bigBerthaKrakenSlowTicks = 80; + private static double ductTapeRepairPercentPerUse = 0.25D; + private static double ultimateArmorKnockbackResistance = 0.1D; + private static double nightmareArmorKnockbackResistance = 0.1D; + private static int fallenKingCrownArmorValue = 2; + private static double fallenKingCrownArmorToughness = 0.0D; + private static boolean elythiaFireflyParticlesEnabled = true; + private static int bloodCrystalArmorShieldRechargeTicks = 600; + private static int bloodCrystalAppleShieldCount = 2; + private static int bloodCrystalAppleDurationTicks = 2400; + private static int bloodCrystalAppleShieldRechargeTicks = 600; + private static int bloodCrystalHardMaxShields = 8; + // Armor stats (iron defense, gold durability, 0 toughness by default) + private static int bloodCrystalHelmetDefense = 2; + private static int bloodCrystalChestplateDefense = 6; + private static int bloodCrystalLeggingsDefense = 5; + private static int bloodCrystalBootsDefense = 2; + private static double bloodCrystalArmorToughness = 0.0; + private static int bloodCrystalHelmetDurability = 77; + private static int bloodCrystalChestplateDurability = 112; + private static int bloodCrystalLeggingsDurability = 105; + private static int bloodCrystalBootsDurability = 91; + + private AntarchySettings() { + } + + private static ResourceKey dimensionKey(String id) { + return ResourceKey.create(net.minecraft.core.registries.Registries.DIMENSION, ResourceLocation.parse(id)); + } + + public static boolean disableInfinityBookPortalCreation() { + return disableInfinityBookPortalCreation; + } + + public static boolean easterBunnyEnabled() { + return easterBunnyEnabled; + } + + public static int easterBunnyNaturalSpawnChancePercent() { + return easterBunnyNaturalSpawnChancePercent; + } + + public static boolean rainbowAntsLeadToInfinityDimensions() { + return rainbowAntsLeadToInfinityDimensions; + } + + public static boolean brownAntRequiresReagent() { + return brownAntRequiresReagent; + } + + public static boolean redAntRequiresReagent() { + return redAntRequiresReagent; + } + + public static boolean rainbowAntRequiresReagent() { + return rainbowAntRequiresReagent; + } + + public static boolean termiteRequiresReagent() { + return termiteRequiresReagent; + } + + public static boolean antsStealFromChests() { + return antsStealFromChests; + } + + public static boolean duplicatorTreeEnabled() { + return duplicatorTreeEnabled; + } + + public static boolean glowingTorchflowers() { + return glowingTorchflowers; + } + + public static boolean glowVinesUnderLeaves() { + return glowVinesUnderLeaves; + } + + public static boolean sizeChangingRaysEnabled() { + return sizeChangingRaysEnabled; + } + + public static double sizeRayMinScale() { + return sizeRayMinScale; + } + + public static double sizeRayMaxScale() { + return sizeRayMaxScale; + } + + public static double sizeRayDeltaPerHit() { + return sizeRayDeltaPerHit; + } + + public static double shrinkingPotionDelta() { + return shrinkingPotionDelta; + } + + public static double growthPotionDelta() { + return growthPotionDelta; + } + + public static double antDanceRadius() { + return antDanceRadius; + } + + public static double brownAntHealth() { + return brownAntHealth; + } + + public static double redAntHealth() { + return redAntHealth; + } + + public static double rainbowAntHealth() { + return rainbowAntHealth; + } + + public static double termiteHealth() { + return termiteHealth; + } + + public static double redAntAttackDamage() { + return redAntAttackDamage; + } + + public static double ultimateSwordAttackDamage() { + return ultimateSwordAttackDamage; + } + + public static double ultimatePickaxeAttackDamage() { + return ultimatePickaxeAttackDamage; + } + + public static double ultimateAxeAttackDamage() { + return ultimateAxeAttackDamage; + } + + public static double ultimateShovelAttackDamage() { + return ultimateShovelAttackDamage; + } + + public static double ultimateHoeAttackDamage() { + return ultimateHoeAttackDamage; + } + + public static double ultimateBowAttackDamage() { + return ultimateBowAttackDamage; + } + + public static double ultimateBowPlayerHeal() { + return ultimateBowPlayerHeal; + } + + public static double ultimateBowDrawSpeedMultiplier() { + return ultimateBowDrawSpeedMultiplier; + } + + public static boolean ultimateBowComesEnchantedWithFlame() { + return ultimateBowComesEnchantedWithFlame; + } + + public static double ultimateCrossbowAttackDamage() { + return ultimateCrossbowAttackDamage; + } + + public static double ultimateCrossbowChargeSpeedMultiplier() { + return ultimateCrossbowChargeSpeedMultiplier; + } + + public static double ultimateMaceDamageMultiplier() { + return ultimateMaceDamageMultiplier; + } + + public static double battleAxeAttackDamage() { + return battleAxeAttackDamage; + } + + public static double bigBerthaAttackDamage() { + return bigBerthaAttackDamage; + } + + public static double bigBerthaReachBonus() { + return bigBerthaReachBonus; + } + + public static double bigBerthaAttackSpeed() { + return bigBerthaAttackSpeed; + } + + public static double bigBerthaBasiliskCooldownSeconds() { + return bigBerthaBasiliskCooldownSeconds; + } + + public static double bigBerthaLucidInvertedDurationSeconds() { + return bigBerthaLucidInvertedDurationSeconds; + } + + public static double bigBerthaLucidInvertedDamageBonusPercent() { + return bigBerthaLucidInvertedDamageBonusPercent; + } + + public static double potentNyxiteInvertedDurationSeconds() { + return potentNyxiteInvertedDurationSeconds; + } + + public static int ultimateToolEnchantability() { + return ultimateToolEnchantability; + } + + public static int ultimateArmorEnchantability() { + return ultimateArmorEnchantability; + } + + public static int ultimateBowEnchantability() { + return ultimateBowEnchantability; + } + + public static int ultimateCrossbowEnchantability() { + return ultimateCrossbowEnchantability; + } + + public static int ultimateMaceEnchantability() { + return ultimateMaceEnchantability; + } + + public static boolean ultimateToolsThreeByThreeEnabled() { + return ultimateToolsThreeByThreeEnabled; + } + + public static boolean ultimateArmorComesEnchanted() { + return ultimateArmorComesEnchanted; + } + + public static int ultimateHelmetArmorValue() { + return ultimateHelmetArmorValue; + } + + public static int ultimateChestplateArmorValue() { + return ultimateChestplateArmorValue; + } + + public static int ultimateLeggingsArmorValue() { + return ultimateLeggingsArmorValue; + } + + public static int ultimateBootsArmorValue() { + return ultimateBootsArmorValue; + } + + public static double ultimateHelmetArmorToughness() { + return ultimateHelmetArmorToughness; + } + + public static double ultimateChestplateArmorToughness() { + return ultimateChestplateArmorToughness; + } + + public static double ultimateLeggingsArmorToughness() { + return ultimateLeggingsArmorToughness; + } + + public static double ultimateBootsArmorToughness() { + return ultimateBootsArmorToughness; + } + + public static ResourceKey brownAntDestinationDimension() { + return brownAntDestinationDimension; + } + + public static ResourceKey redAntDestinationDimension() { + return redAntDestinationDimension; + } + + public static ResourceKey termiteDestinationDimension() { + return termiteDestinationDimension; + } + + public static ResourceKey rainbowAntNonInfinityFallbackDimension() { + return rainbowAntNonInfinityFallbackDimension; + } + + public static double krakenHealth() { + return krakenHealth; + } + + public static double krakenAttackDamage() { + return krakenAttackDamage; + } + + public static double brutalflyHealth() { + return brutalflyHealth; + } + + public static double brutalflySwipeDamage() { + return brutalflySwipeDamage; + } + + public static double brutalflySpitDamage() { + return brutalflySpitDamage; + } + + public static double mantisHealth() { + return mantisHealth; + } + + public static double mantisAttackDamage() { + return mantisAttackDamage; + } + + public static double mantisMovementSpeed() { + return mantisMovementSpeed; + } + + public static double mantisFlyingSpeed() { + return mantisFlyingSpeed; + } + + public static boolean mantisIgnoreLightLevel() { + return mantisIgnoreLightLevel; + } + + public static void setMantisIgnoreLightLevel(boolean value) { + mantisIgnoreLightLevel = value; + } + + public static double waspHealth() { + return waspHealth; + } + + public static double waspAttackDamage() { + return waspAttackDamage; + } + + public static double waspMovementSpeed() { + return waspMovementSpeed; + } + + public static void setWaspMovementSpeed(double value) { + waspMovementSpeed = value; + } + + public static double bomberHealth() { + return bomberHealth; + } + + public static double bomberAttackDamage() { + return bomberAttackDamage; + } + + public static double bomberExplosionDamage() { + return bomberExplosionDamage; + } + + public static double bomberExplosionRadius() { + return bomberExplosionRadius; + } + + public static double krakenProjectileDamageTakenMultiplier() { + return krakenProjectileDamageTakenMultiplier; + } + + public static boolean krakenSquidSpawnEnabled() { + return krakenSquidSpawnEnabled; + } + + public static boolean krakenMassSpawnEnabled() { + return krakenMassSpawnEnabled; + } + + public static double squidzookaCooldownSeconds() { + return squidzookaCooldownSeconds; + } + + public static double squidzookaLaunchVelocity() { + return squidzookaLaunchVelocity; + } + + public static double sizeRayCooldownSeconds() { + return sizeRayCooldownSeconds; + } + + public static boolean invertProjectilesFromInvertedPlayers() { + return invertProjectilesFromInvertedPlayers; + } + + public static boolean gravityGunEnabled() { + return gravityGunEnabled; + } + + public static boolean gravityGunBlocksEnabled() { + return gravityGunBlocksEnabled; + } + + public static boolean gravityGunEntitiesEnabled() { + return gravityGunEntitiesEnabled; + } + + public static double gravityGunRange() { + return gravityGunRange; + } + + public static double gravityGunThrowStrength() { + return gravityGunThrowStrength; + } + + public static double gravityGunBlastStrength() { + return gravityGunBlastStrength; + } + + public static double gravityGunCooldownSeconds() { + return gravityGunCooldownSeconds; + } + + public static double gravityGunMaxHoldDistance() { + return gravityGunMaxHoldDistance; + } + + public static void setDisableInfinityBookPortalCreation(boolean value) { + disableInfinityBookPortalCreation = value; + } + + public static void setEasterBunnyEnabled(boolean value) { + easterBunnyEnabled = value; + } + + public static void setEasterBunnyNaturalSpawnChancePercent(int value) { + easterBunnyNaturalSpawnChancePercent = value; + } + + public static void setRainbowAntsLeadToInfinityDimensions(boolean value) { + rainbowAntsLeadToInfinityDimensions = value; + } + + public static void setBrownAntRequiresReagent(boolean value) { + brownAntRequiresReagent = value; + } + + public static void setRedAntRequiresReagent(boolean value) { + redAntRequiresReagent = value; + } + + public static void setRainbowAntRequiresReagent(boolean value) { + rainbowAntRequiresReagent = value; + } + + public static void setTermiteRequiresReagent(boolean value) { + termiteRequiresReagent = value; + } + + public static void setAntsStealFromChests(boolean value) { + antsStealFromChests = value; + } + + public static void setDuplicatorTreeEnabled(boolean value) { + duplicatorTreeEnabled = value; + } + + public static void setGlowingTorchflowers(boolean value) { + glowingTorchflowers = value; + } + + public static void setGlowVinesUnderLeaves(boolean value) { + glowVinesUnderLeaves = value; + } + + public static void setSizeChangingRaysEnabled(boolean value) { + sizeChangingRaysEnabled = value; + } + + public static void setSizeRayMinScale(double value) { + sizeRayMinScale = value; + } + + public static void setSizeRayMaxScale(double value) { + sizeRayMaxScale = value; + } + + public static void setSizeRayDeltaPerHit(double value) { + sizeRayDeltaPerHit = value; + } + + public static void setShrinkingPotionDelta(double value) { + shrinkingPotionDelta = value; + } + + public static void setGrowthPotionDelta(double value) { + growthPotionDelta = value; + } + + public static void setAntDanceRadius(double value) { + antDanceRadius = value; + } + + public static void setBrownAntHealth(double value) { + brownAntHealth = value; + } + + public static void setRedAntHealth(double value) { + redAntHealth = value; + } + + public static void setRainbowAntHealth(double value) { + rainbowAntHealth = value; + } + + public static void setTermiteHealth(double value) { + termiteHealth = value; + } + + public static void setWaspHealth(double value) { + waspHealth = value; + } + + public static void setWaspAttackDamage(double value) { + waspAttackDamage = value; + } + + public static void setBomberHealth(double value) { + bomberHealth = value; + } + + public static void setBomberAttackDamage(double value) { + bomberAttackDamage = value; + } + + public static void setBomberExplosionDamage(double value) { + bomberExplosionDamage = value; + } + + public static void setBomberExplosionRadius(double value) { + bomberExplosionRadius = value; + } + + public static void setRedAntAttackDamage(double value) { + redAntAttackDamage = value; + } + + public static void setUltimateSwordAttackDamage(double value) { + ultimateSwordAttackDamage = value; + } + + public static void setUltimatePickaxeAttackDamage(double value) { + ultimatePickaxeAttackDamage = value; + } + + public static void setUltimateAxeAttackDamage(double value) { + ultimateAxeAttackDamage = value; + } + + public static void setUltimateShovelAttackDamage(double value) { + ultimateShovelAttackDamage = value; + } + + public static void setUltimateHoeAttackDamage(double value) { + ultimateHoeAttackDamage = value; + } + + public static void setUltimateBowAttackDamage(double value) { + ultimateBowAttackDamage = value; + } + + public static void setUltimateBowPlayerHeal(double value) { + ultimateBowPlayerHeal = value; + } + + public static void setUltimateBowDrawSpeedMultiplier(double value) { + ultimateBowDrawSpeedMultiplier = value; + } + + public static void setUltimateBowComesEnchantedWithFlame(boolean value) { + ultimateBowComesEnchantedWithFlame = value; + } + + public static void setUltimateCrossbowAttackDamage(double value) { + ultimateCrossbowAttackDamage = value; + } + + public static void setUltimateCrossbowChargeSpeedMultiplier(double value) { + ultimateCrossbowChargeSpeedMultiplier = value; + } + + public static void setUltimateMaceDamageMultiplier(double value) { + ultimateMaceDamageMultiplier = value; + } + + public static void setBattleAxeAttackDamage(double value) { + battleAxeAttackDamage = value; + } + + public static void setBigBerthaAttackDamage(double value) { + bigBerthaAttackDamage = value; + } + + public static void setBigBerthaReachBonus(double value) { + bigBerthaReachBonus = value; + } + + public static void setBigBerthaAttackSpeed(double value) { + bigBerthaAttackSpeed = value; + } + + public static void setBigBerthaBasiliskCooldownSeconds(double value) { + bigBerthaBasiliskCooldownSeconds = value; + } + + public static void setBigBerthaLucidInvertedDurationSeconds(double value) { + bigBerthaLucidInvertedDurationSeconds = value; + } + + public static void setBigBerthaLucidInvertedDamageBonusPercent(double value) { + bigBerthaLucidInvertedDamageBonusPercent = value; + } + + public static void setPotentNyxiteInvertedDurationSeconds(double value) { + potentNyxiteInvertedDurationSeconds = value; + } + + public static void setUltimateToolEnchantability(int value) { + ultimateToolEnchantability = value; + } + + public static void setUltimateArmorEnchantability(int value) { + ultimateArmorEnchantability = value; + } + + public static void setUltimateBowEnchantability(int value) { + ultimateBowEnchantability = value; + } + + public static void setUltimateCrossbowEnchantability(int value) { + ultimateCrossbowEnchantability = value; + } + + public static void setUltimateMaceEnchantability(int value) { + ultimateMaceEnchantability = value; + } + + public static void setUltimateToolsThreeByThreeEnabled(boolean value) { + ultimateToolsThreeByThreeEnabled = value; + } + + public static void setUltimateArmorComesEnchanted(boolean value) { + ultimateArmorComesEnchanted = value; + } + + public static void setUltimateHelmetArmorValue(int value) { + ultimateHelmetArmorValue = value; + } + + public static void setUltimateChestplateArmorValue(int value) { + ultimateChestplateArmorValue = value; + } + + public static void setUltimateLeggingsArmorValue(int value) { + ultimateLeggingsArmorValue = value; + } + + public static void setUltimateBootsArmorValue(int value) { + ultimateBootsArmorValue = value; + } + + public static void setUltimateHelmetArmorToughness(double value) { + ultimateHelmetArmorToughness = value; + } + + public static void setUltimateChestplateArmorToughness(double value) { + ultimateChestplateArmorToughness = value; + } + + public static void setUltimateLeggingsArmorToughness(double value) { + ultimateLeggingsArmorToughness = value; + } + + public static void setUltimateBootsArmorToughness(double value) { + ultimateBootsArmorToughness = value; + } + + public static void setBrownAntDestinationDimension(String value) { + brownAntDestinationDimension = dimensionKey(value); + } + + public static void setRedAntDestinationDimension(String value) { + redAntDestinationDimension = dimensionKey(value); + } + + public static void setTermiteDestinationDimension(String value) { + termiteDestinationDimension = dimensionKey(value); + } + + public static void setRainbowAntNonInfinityFallbackDimension(String value) { + rainbowAntNonInfinityFallbackDimension = dimensionKey(value); + } + + public static void setKrakenHealth(double value) { + krakenHealth = value; + } + + public static void setKrakenAttackDamage(double value) { + krakenAttackDamage = value; + } + + public static void setBrutalflyHealth(double value) { + brutalflyHealth = value; + } + + public static void setBrutalflySwipeDamage(double value) { + brutalflySwipeDamage = value; + } + + public static void setBrutalflySpitDamage(double value) { + brutalflySpitDamage = value; + } + + public static void setMantisHealth(double value) { + mantisHealth = value; + } + + public static void setMantisAttackDamage(double value) { + mantisAttackDamage = value; + } + + public static void setMantisMovementSpeed(double value) { + mantisMovementSpeed = value; + } + + public static void setMantisFlyingSpeed(double value) { + mantisFlyingSpeed = value; + } + + public static void setKrakenProjectileDamageTakenMultiplier(double value) { + krakenProjectileDamageTakenMultiplier = value; + } + + public static void setKrakenSquidSpawnEnabled(boolean value) { + krakenSquidSpawnEnabled = value; + } + + public static void setKrakenMassSpawnEnabled(boolean value) { + krakenMassSpawnEnabled = value; + } + + public static void setSquidzookaCooldownSeconds(double value) { + squidzookaCooldownSeconds = value; + } + + public static void setSquidzookaLaunchVelocity(double value) { + squidzookaLaunchVelocity = value; + } + + public static void setSizeRayCooldownSeconds(double value) { + sizeRayCooldownSeconds = value; + } + + public static void setInvertProjectilesFromInvertedPlayers(boolean value) { + invertProjectilesFromInvertedPlayers = value; + } + + public static void setGravityGunEnabled(boolean value) { + gravityGunEnabled = value; + } + + public static void setGravityGunBlocksEnabled(boolean value) { + gravityGunBlocksEnabled = value; + } + + public static void setGravityGunEntitiesEnabled(boolean value) { + gravityGunEntitiesEnabled = value; + } + + public static void setGravityGunRange(double value) { + gravityGunRange = value; + } + + public static void setGravityGunThrowStrength(double value) { + gravityGunThrowStrength = value; + } + + public static void setGravityGunBlastStrength(double value) { + gravityGunBlastStrength = value; + } + + public static void setGravityGunCooldownSeconds(double value) { + gravityGunCooldownSeconds = value; + } + + public static void setGravityGunMaxHoldDistance(double value) { + gravityGunMaxHoldDistance = value; + } + + public static double lucidAttackRange() { + return lucidAttackRange; + } + + public static void setLucidAttackRange(double value) { + lucidAttackRange = value; + } + + public static double lucidPearlInvertedDurationSeconds() { + return lucidPearlInvertedDurationSeconds; + } + + public static void setLucidPearlInvertedDurationSeconds(double value) { + lucidPearlInvertedDurationSeconds = value; + } + + public static int corneaEarNightVisionSeconds() { + return corneaEarNightVisionSeconds; + } + + public static void setCorneaEarNightVisionSeconds(int value) { + corneaEarNightVisionSeconds = value; + } + + public static int mogglesVisionRadius() { + return mogglesVisionRadius; + } + + public static void setMogglesVisionRadius(int value) { + mogglesVisionRadius = value; + } + + public static int mogglesVisionMaxLight() { + return mogglesVisionMaxLight; + } + + public static void setMogglesVisionMaxLight(int value) { + mogglesVisionMaxLight = value; + } + + public static float mogglesVisionAlpha() { + return mogglesVisionAlpha; + } + + public static void setMogglesVisionAlpha(float value) { + mogglesVisionAlpha = value; + } + + public static boolean dreamSandEnabled() { + return dreamSandEnabled; + } + + public static boolean entitySpecificFireOverlayEnabled() { + return entitySpecificFireOverlayEnabled; + } + + public static void setDreamSandEnabled(boolean value) { + dreamSandEnabled = value; + } + + public static void setEntitySpecificFireOverlayEnabled(boolean value) { + entitySpecificFireOverlayEnabled = value; + } + + public static double dreamSandJumpVelocityMultiplier() { + return dreamSandJumpVelocityMultiplier; + } + + public static void setDreamSandJumpVelocityMultiplier(double value) { + dreamSandJumpVelocityMultiplier = value; + } + + public static double dreamSandGravityMultiplier() { + return dreamSandGravityMultiplier; + } + + public static void setDreamSandGravityMultiplier(double value) { + dreamSandGravityMultiplier = value; + } + + public static double dreamSandFallDamageMultiplier() { + return dreamSandFallDamageMultiplier; + } + + public static void setDreamSandFallDamageMultiplier(double value) { + dreamSandFallDamageMultiplier = value; + } + + public static double dreamSandEffectDurationSeconds() { + return dreamSandEffectDurationSeconds; + } + + public static void setDreamSandEffectDurationSeconds(double value) { + dreamSandEffectDurationSeconds = value; + } + + public static boolean ichorWitherEnabled() { + return ichorWitherEnabled; + } + + public static void setIchorWitherEnabled(boolean value) { + ichorWitherEnabled = value; + } + + public static int nightmareHelmetArmorValue() { return nightmareHelmetArmorValue; } + public static void setNightmareHelmetArmorValue(int v) { nightmareHelmetArmorValue = v; } + + public static int nightmareChestplateArmorValue() { return nightmareChestplateArmorValue; } + public static void setNightmareChestplateArmorValue(int v) { nightmareChestplateArmorValue = v; } + + public static int nightmareLeggingsArmorValue() { return nightmareLeggingsArmorValue; } + public static void setNightmareLeggingsArmorValue(int v) { nightmareLeggingsArmorValue = v; } + + public static int nightmareBootsArmorValue() { return nightmareBootsArmorValue; } + public static void setNightmareBootsArmorValue(int v) { nightmareBootsArmorValue = v; } + + public static double nightmareHelmetArmorToughness() { return nightmareHelmetArmorToughness; } + public static void setNightmareHelmetArmorToughness(double v) { nightmareHelmetArmorToughness = v; } + + public static double nightmareChestplateArmorToughness() { return nightmareChestplateArmorToughness; } + public static void setNightmareChestplateArmorToughness(double v) { nightmareChestplateArmorToughness = v; } + + public static double nightmareLeggingsArmorToughness() { return nightmareLeggingsArmorToughness; } + public static void setNightmareLeggingsArmorToughness(double v) { nightmareLeggingsArmorToughness = v; } + + public static double nightmareBootsArmorToughness() { return nightmareBootsArmorToughness; } + public static void setNightmareBootsArmorToughness(double v) { nightmareBootsArmorToughness = v; } + + public static double nightmareArmorDreadAuraRangePerPiece() { return nightmareArmorDreadAuraRangePerPiece; } + public static void setNightmareArmorDreadAuraRangePerPiece(double v) { nightmareArmorDreadAuraRangePerPiece = v; } + + public static double nightmareHelmetDoubleDamageChance() { return nightmareHelmetDoubleDamageChance; } + public static void setNightmareHelmetDoubleDamageChance(double v) { nightmareHelmetDoubleDamageChance = v; } + + public static double nightmareChestplateDoubleDamageChance() { return nightmareChestplateDoubleDamageChance; } + public static void setNightmareChestplateDoubleDamageChance(double v) { nightmareChestplateDoubleDamageChance = v; } + + public static double nightmareLeggingsDoubleDamageChance() { return nightmareLeggingsDoubleDamageChance; } + public static void setNightmareLeggingsDoubleDamageChance(double v) { nightmareLeggingsDoubleDamageChance = v; } + + public static double nightmareBootsDoubleDamageChance() { return nightmareBootsDoubleDamageChance; } + public static void setNightmareBootsDoubleDamageChance(double v) { nightmareBootsDoubleDamageChance = v; } + + public static double nightmareSwordBaseDamage() { return nightmareSwordBaseDamage; } + public static void setNightmareSwordBaseDamage(double v) { nightmareSwordBaseDamage = v; } + + public static double nightmareSwordScalingFactor() { return nightmareSwordScalingFactor; } + public static void setNightmareSwordScalingFactor(double v) { nightmareSwordScalingFactor = v; } + + public static boolean basiliskPetrifyingGazeEnabled() { + return basiliskPetrifyingGazeEnabled; + } + + public static void setBasiliskPetrifyingGazeEnabled(boolean value) { + basiliskPetrifyingGazeEnabled = value; + } + + public static int basiliskSpawnMaxLightLevel() { + return basiliskSpawnMaxLightLevel; + } + + public static void setBasiliskSpawnMaxLightLevel(int value) { + basiliskSpawnMaxLightLevel = value; + } + + public static int basiliskPlayerParalyzeTicks() { return basiliskPlayerParalyzeTicks; } + public static void setBasiliskPlayerParalyzeTicks(int value) { basiliskPlayerParalyzeTicks = value; } + + public static boolean diamondMinecartEnabled() { return diamondMinecartEnabled; } + public static void setDiamondMinecartEnabled(boolean v) { diamondMinecartEnabled = v; } + + public static boolean diamondMinecartPlacesRails() { return diamondMinecartPlacesRails; } + public static void setDiamondMinecartPlacesRails(boolean v) { diamondMinecartPlacesRails = v; } + + public static double diamondMinecartCruiseSpeed() { return diamondMinecartCruiseSpeed; } + public static void setDiamondMinecartCruiseSpeed(double v) { diamondMinecartCruiseSpeed = v; } + + public static double diamondMinecartMaxSpeed() { return diamondMinecartMaxSpeed; } + public static void setDiamondMinecartMaxSpeed(double v) { diamondMinecartMaxSpeed = v; } + + public static double diamondMinecartAcceleration() { return diamondMinecartAcceleration; } + public static void setDiamondMinecartAcceleration(double v) { diamondMinecartAcceleration = v; } + + public static double diamondMinecartDeceleration() { return diamondMinecartDeceleration; } + public static void setDiamondMinecartDeceleration(double v) { diamondMinecartDeceleration = v; } + + public static double diamondMinecartCoastDeceleration() { return diamondMinecartCoastDeceleration; } + public static void setDiamondMinecartCoastDeceleration(double v) { diamondMinecartCoastDeceleration = v; } + + public static boolean diamondMinecartMobDamageEnabled() { return diamondMinecartMobDamageEnabled; } + public static void setDiamondMinecartMobDamageEnabled(boolean v) { diamondMinecartMobDamageEnabled = v; } + + public static double diamondMinecartMaxMobDamage() { return diamondMinecartMaxMobDamage; } + public static void setDiamondMinecartMaxMobDamage(double v) { diamondMinecartMaxMobDamage = v; } + + public static boolean dreadHallucinationSoundsEnabled() { + return dreadHallucinationSoundsEnabled; + } + + public static void setDreadHallucinationSoundsEnabled(boolean value) { + dreadHallucinationSoundsEnabled = value; + } + + public static double dreadHallucinationSoundMinInterval() { + return dreadHallucinationSoundMinInterval; + } + + public static void setDreadHallucinationSoundMinInterval(double value) { + dreadHallucinationSoundMinInterval = value; + } + + public static double dreadHallucinationSoundMaxInterval() { + return dreadHallucinationSoundMaxInterval; + } + + public static void setDreadHallucinationSoundMaxInterval(double value) { + dreadHallucinationSoundMaxInterval = value; + } + + public static boolean dreadHallucinationMobsEnabled() { + return dreadHallucinationMobsEnabled; + } + + public static void setDreadHallucinationMobsEnabled(boolean value) { + dreadHallucinationMobsEnabled = value; + } + + public static double dreadHallucinationMobMinInterval() { + return dreadHallucinationMobMinInterval; + } + + public static void setDreadHallucinationMobMinInterval(double value) { + dreadHallucinationMobMinInterval = value; + } + + public static double dreadHallucinationMobMaxInterval() { + return dreadHallucinationMobMaxInterval; + } + + public static void setDreadHallucinationMobMaxInterval(double value) { + dreadHallucinationMobMaxInterval = value; + } + + public static double brownAntMovementSpeed() { return brownAntMovementSpeed; } + public static void setBrownAntMovementSpeed(double value) { brownAntMovementSpeed = value; } + + public static double redAntMovementSpeed() { return redAntMovementSpeed; } + public static void setRedAntMovementSpeed(double value) { redAntMovementSpeed = value; } + + public static double rainbowAntMovementSpeed() { return rainbowAntMovementSpeed; } + public static void setRainbowAntMovementSpeed(double value) { rainbowAntMovementSpeed = value; } + + public static double termiteMovementSpeed() { return termiteMovementSpeed; } + public static void setTermiteMovementSpeed(double value) { termiteMovementSpeed = value; } + + public static double brownAntAttackDamage() { return brownAntAttackDamage; } + public static void setBrownAntAttackDamage(double value) { brownAntAttackDamage = value; } + + public static double rainbowAntAttackDamage() { return rainbowAntAttackDamage; } + public static void setRainbowAntAttackDamage(double value) { rainbowAntAttackDamage = value; } + + public static double termiteAttackDamage() { return termiteAttackDamage; } + public static void setTermiteAttackDamage(double value) { termiteAttackDamage = value; } + + public static double flyingSquirrelHealth() { return flyingSquirrelHealth; } + public static void setFlyingSquirrelHealth(double value) { flyingSquirrelHealth = value; } + + public static double flyingSquirrelMovementSpeed() { return flyingSquirrelMovementSpeed; } + public static void setFlyingSquirrelMovementSpeed(double value) { flyingSquirrelMovementSpeed = value; } + + public static double flyingSquirrelFollowRange() { return flyingSquirrelFollowRange; } + public static void setFlyingSquirrelFollowRange(double value) { flyingSquirrelFollowRange = value; } + + public static double caterpillarHealth() { return caterpillarHealth; } + public static void setCaterpillarHealth(double value) { caterpillarHealth = value; } + + public static double caterpillarMovementSpeed() { return caterpillarMovementSpeed; } + public static void setCaterpillarMovementSpeed(double value) { caterpillarMovementSpeed = value; } + + public static double caterpillarFollowRange() { return caterpillarFollowRange; } + public static void setCaterpillarFollowRange(double value) { caterpillarFollowRange = value; } + + public static double caterpillarPupationTimeSeconds() { return caterpillarPupationTimeSeconds; } + public static void setCaterpillarPupationTimeSeconds(double value) { caterpillarPupationTimeSeconds = value; } + public static int caterpillarPupationTimeTicks() { return Math.max(1, (int)Math.round(caterpillarPupationTimeSeconds * 20.0D)); } + + private static double hushweedSporeLifetimeSeconds = 5.0D; + public static double hushweedSporeLifetimeSeconds() { return hushweedSporeLifetimeSeconds; } + public static void setHushweedSporeLifetimeSeconds(double value) { hushweedSporeLifetimeSeconds = value; } + public static int hushweedSporeLifetimeTicks() { return Math.max(1, (int)Math.round(hushweedSporeLifetimeSeconds * 20.0D)); } + + public static double butterflyHealth() { return butterflyHealth; } + public static void setButterflyHealth(double value) { butterflyHealth = value; } + + public static double butterflyMovementSpeed() { return butterflyMovementSpeed; } + public static void setButterflyMovementSpeed(double value) { butterflyMovementSpeed = value; } + + public static double butterflyFlyingSpeed() { return butterflyFlyingSpeed; } + public static void setButterflyFlyingSpeed(double value) { butterflyFlyingSpeed = value; } + + public static double butterflyFollowRange() { return butterflyFollowRange; } + public static void setButterflyFollowRange(double value) { butterflyFollowRange = value; } + + public static double reverieHealth() { return reverieHealth; } + public static void setReverieHealth(double value) { reverieHealth = value; } + + public static double reverieInterestRadius() { return reverieInterestRadius; } + public static void setReverieInterestRadius(double v) { reverieInterestRadius = v; } + + public static double reverieAbandonPlayerDistance() { return reverieAbandonPlayerDistance; } + public static void setReverieAbandonPlayerDistance(double v){ reverieAbandonPlayerDistance = v; } + + public static int reverieNoticeDurationTicks() { return reverieNoticeDurationTicks; } + public static void setReverieNoticeDurationTicks(int v) { reverieNoticeDurationTicks = v; } + + public static int reverieInterestDurationTicks() { return reverieInterestDurationTicks; } + public static void setReverieInterestDurationTicks(int v) { reverieInterestDurationTicks = v; } + + public static int reverieRebindCooldownTicks() { return reverieRebindCooldownTicks; } + public static void setReverieRebindCooldownTicks(int v) { reverieRebindCooldownTicks = v; } + + public static int reverieDamageReactionDurationTicks() { return reverieDamageReactionDurationTicks; } + public static void setReverieDamageReactionDurationTicks(int v){ reverieDamageReactionDurationTicks = v; } + + public static double reverieDangerousFallDistance() { return reverieDangerousFallDistance; } + public static void setReverieDangerousFallDistance(double v){ reverieDangerousFallDistance = v; } + + public static double reverieDangerousFallSpeed() { return reverieDangerousFallSpeed; } + public static void setReverieDangerousFallSpeed(double v) { reverieDangerousFallSpeed = v; } + + public static double reverieWarningThreatRadius() { return reverieWarningThreatRadius; } + public static void setReverieWarningThreatRadius(double v) { reverieWarningThreatRadius = v; } + + public static double reverieWarningThreatVerticalRange() { return reverieWarningThreatVerticalRange; } + public static void setReverieWarningThreatVerticalRange(double v){ reverieWarningThreatVerticalRange = v; } + + public static int reverieDuplicationCooldownTicks() { return reverieDuplicationCooldownTicks; } + public static void setReverieDuplicationCooldownTicks(int v){ reverieDuplicationCooldownTicks = v; } + + // Hardcoded AI tuning — getters only, no config wiring + public static boolean reverieOnlyPlayerDamage() { return reverieOnlyPlayerDamage; } + public static double reveriePreferredFollowMinDistance() { return reveriePreferredFollowMinDistance; } + public static double reveriePreferredFollowMaxDistance() { return reveriePreferredFollowMaxDistance; } + public static double reverieCatchUpDistance() { return reverieCatchUpDistance; } + public static double reveriePurpleProtectRadius() { return reveriePurpleProtectRadius; } + public static int reverieWarningApproachTicks() { return reverieWarningApproachTicks; } + public static int reverieWarningHoverTicks() { return reverieWarningHoverTicks; } + public static int reverieWarningReturnTicks() { return reverieWarningReturnTicks; } + public static int reverieWarningPlayerHoverTicks() { return reverieWarningPlayerHoverTicks; } + public static double reverieAmbientTargetMinRadius() { return reverieAmbientTargetMinRadius; } + public static double reverieAmbientTargetMaxRadius() { return reverieAmbientTargetMaxRadius; } + public static double reverieAmbientTargetVerticalRange() { return reverieAmbientTargetVerticalRange; } + public static int reverieAmbientTargetMaxAgeTicks() { return reverieAmbientTargetMaxAgeTicks; } + public static int reverieAmbientPulseIntervalMinTicks() { return reverieAmbientPulseIntervalMinTicks; } + public static int reverieAmbientPulseIntervalMaxTicks() { return reverieAmbientPulseIntervalMaxTicks; } + + public static double emperorScorpionHealth() { return emperorScorpionHealth; } + public static void setEmperorScorpionHealth(double value) { emperorScorpionHealth = value; } + + public static double scorpionWhipBaseDamage() { return scorpionWhipBaseDamage; } + public static void setScorpionWhipBaseDamage(double value) { scorpionWhipBaseDamage = value; } + + public static double scorpionWhipReachBonus() { return scorpionWhipReachBonus; } + public static void setScorpionWhipReachBonus(double value) { scorpionWhipReachBonus = value; } + + public static int scorpionWhipPoisonDurationTicks() { return scorpionWhipPoisonDurationTicks; } + public static void setScorpionWhipPoisonDurationTicks(int value) { scorpionWhipPoisonDurationTicks = value; } + + public static double scorpionWhipTetherMaxRange() { return scorpionWhipTetherMaxRange; } + public static void setScorpionWhipTetherMaxRange(double value) { scorpionWhipTetherMaxRange = value; } + + public static int scorpionWhipReelCooldownTicks() { return scorpionWhipReelCooldownTicks; } + public static void setScorpionWhipReelCooldownTicks(int value) { scorpionWhipReelCooldownTicks = value; } + + public static double scorpionWhipSnapBonusDamage() { return scorpionWhipSnapBonusDamage; } + public static void setScorpionWhipSnapBonusDamage(double value) { scorpionWhipSnapBonusDamage = value; } + + public static int scorpionWhipSnapCooldownTicks() { return scorpionWhipSnapCooldownTicks; } + public static void setScorpionWhipSnapCooldownTicks(int value) { scorpionWhipSnapCooldownTicks = value; } + + public static double scorpionWhipPullStrength() { return scorpionWhipPullStrength; } + public static void setScorpionWhipPullStrength(double value) { scorpionWhipPullStrength = value; } + + public static double scorpionWhipHeavyPullMultiplier() { return scorpionWhipHeavyPullMultiplier; } + public static void setScorpionWhipHeavyPullMultiplier(double value) { scorpionWhipHeavyPullMultiplier = value; } + + public static double scorpionWhipSelfPullMultiplier() { return scorpionWhipSelfPullMultiplier; } + public static void setScorpionWhipSelfPullMultiplier(double value) { scorpionWhipSelfPullMultiplier = value; } + + public static int bloodCrystalKatanaAttackDamage() { return bloodCrystalKatanaAttackDamage; } + public static void setBloodCrystalKatanaAttackDamage(int value) { bloodCrystalKatanaAttackDamage = value; } + + public static double bloodCrystalKatanaLaunchStrength() { return bloodCrystalKatanaLaunchStrength; } + public static void setBloodCrystalKatanaLaunchStrength(double value) { bloodCrystalKatanaLaunchStrength = value; } + + public static int bloodCrystalKatanaTrailDurationTicks() { return bloodCrystalKatanaTrailDurationTicks; } + public static void setBloodCrystalKatanaTrailDurationTicks(int value) { bloodCrystalKatanaTrailDurationTicks = value; } + + public static double emperorScorpionAttackDamage() { return emperorScorpionAttackDamage; } + public static void setEmperorScorpionAttackDamage(double value) { emperorScorpionAttackDamage = value; } + + public static double emperorScorpionMovementSpeed() { return emperorScorpionMovementSpeed; } + public static void setEmperorScorpionMovementSpeed(double value) { emperorScorpionMovementSpeed = value; } + + public static double emperorScorpionArmor() { return emperorScorpionArmor; } + public static void setEmperorScorpionArmor(double value) { emperorScorpionArmor = value; } + + public static double emperorScorpionKnockbackResistance() { return emperorScorpionKnockbackResistance; } + public static void setEmperorScorpionKnockbackResistance(double value) { emperorScorpionKnockbackResistance = value; } + + public static double emperorScorpionFollowRange() { return emperorScorpionFollowRange; } + public static void setEmperorScorpionFollowRange(double value) { emperorScorpionFollowRange = value; } + + public static int emperorScorpionXpReward() { return emperorScorpionXpReward; } + public static void setEmperorScorpionXpReward(int value) { emperorScorpionXpReward = value; } + + public static int emperorScorpionClawAnimTicks() { return emperorScorpionClawAnimTicks; } + public static void setEmperorScorpionClawAnimTicks(int value) { emperorScorpionClawAnimTicks = value; } + + public static int emperorScorpionClawHitTick() { return emperorScorpionClawHitTick; } + public static void setEmperorScorpionClawHitTick(int value) { emperorScorpionClawHitTick = value; } + + public static int emperorScorpionClawCooldownTicks() { return emperorScorpionClawCooldownTicks; } + public static void setEmperorScorpionClawCooldownTicks(int value) { emperorScorpionClawCooldownTicks = value; } + + public static int emperorScorpionStingAnimTicks() { return emperorScorpionStingAnimTicks; } + public static void setEmperorScorpionStingAnimTicks(int value) { emperorScorpionStingAnimTicks = value; } + + public static int emperorScorpionStingHitTick() { return emperorScorpionStingHitTick; } + public static void setEmperorScorpionStingHitTick(int value) { emperorScorpionStingHitTick = value; } + + public static int emperorScorpionStingCooldownTicks() { return emperorScorpionStingCooldownTicks; } + public static void setEmperorScorpionStingCooldownTicks(int value) { emperorScorpionStingCooldownTicks = value; } + + public static int emperorScorpionPoisonTicks() { return emperorScorpionPoisonTicks; } + public static void setEmperorScorpionPoisonTicks(int value) { emperorScorpionPoisonTicks = value; } + + public static int emperorScorpionWeaknessTicks() { return emperorScorpionWeaknessTicks; } + public static void setEmperorScorpionWeaknessTicks(int value) { emperorScorpionWeaknessTicks = value; } + + public static int emperorScorpionSummonIntervalTicks() { return emperorScorpionSummonIntervalTicks; } + public static void setEmperorScorpionSummonIntervalTicks(int value) { emperorScorpionSummonIntervalTicks = value; } + + public static int emperorScorpionMaxSummonedScorpions() { return emperorScorpionMaxSummonedScorpions; } + public static void setEmperorScorpionMaxSummonedScorpions(int value) { emperorScorpionMaxSummonedScorpions = value; } + + public static double scorpionHealth() { return scorpionHealth; } + public static void setScorpionHealth(double value) { scorpionHealth = value; } + + public static double scorpionAttackDamage() { return scorpionAttackDamage; } + public static void setScorpionAttackDamage(double value) { scorpionAttackDamage = value; } + + public static double scorpionMovementSpeed() { return scorpionMovementSpeed; } + public static void setScorpionMovementSpeed(double value) { scorpionMovementSpeed = value; } + + public static double scorpionArmor() { return scorpionArmor; } + public static void setScorpionArmor(double value) { scorpionArmor = value; } + + public static double scorpionKnockbackResistance() { return scorpionKnockbackResistance; } + public static void setScorpionKnockbackResistance(double value) { scorpionKnockbackResistance = value; } + + public static double scorpionFollowRange() { return scorpionFollowRange; } + public static void setScorpionFollowRange(double value) { scorpionFollowRange = value; } + + public static int scorpionXpReward() { return scorpionXpReward; } + public static void setScorpionXpReward(int value) { scorpionXpReward = value; } + + public static int scorpionAttackAnimTicks() { return scorpionAttackAnimTicks; } + public static void setScorpionAttackAnimTicks(int value) { scorpionAttackAnimTicks = value; } + + public static int scorpionAttackHitTick() { return scorpionAttackHitTick; } + public static void setScorpionAttackHitTick(int value) { scorpionAttackHitTick = value; } + + public static int scorpionAttackCooldownTicks() { return scorpionAttackCooldownTicks; } + public static void setScorpionAttackCooldownTicks(int value) { scorpionAttackCooldownTicks = value; } + + public static int scorpionPoisonTicks() { return scorpionPoisonTicks; } + public static void setScorpionPoisonTicks(int value) { scorpionPoisonTicks = value; } + + public static double bedBugHealth() { return bedBugHealth; } + public static void setBedBugHealth(double value) { bedBugHealth = value; } + + public static double bedBugAttackDamage() { return bedBugAttackDamage; } + public static void setBedBugAttackDamage(double value) { bedBugAttackDamage = value; } + + public static double bedBugMovementSpeed() { return bedBugMovementSpeed; } + public static void setBedBugMovementSpeed(double value) { bedBugMovementSpeed = value; } + + public static double bedBugArmor() { return bedBugArmor; } + public static void setBedBugArmor(double value) { bedBugArmor = value; } + + public static double bedBugFollowRange() { return bedBugFollowRange; } + public static void setBedBugFollowRange(double value) { bedBugFollowRange = value; } + + public static int bedBugXpReward() { return bedBugXpReward; } + public static void setBedBugXpReward(int value) { bedBugXpReward = value; } + + public static int bedBugBiteAnimTicks() { return bedBugBiteAnimTicks; } + public static void setBedBugBiteAnimTicks(int value) { bedBugBiteAnimTicks = value; } + + public static int bedBugAttackHitTick() { return bedBugAttackHitTick; } + public static void setBedBugAttackHitTick(int value) { bedBugAttackHitTick = value; } + + public static int bedBugAttackCooldownTicks() { return bedBugAttackCooldownTicks; } + public static void setBedBugAttackCooldownTicks(int value) { bedBugAttackCooldownTicks = value; } + + public static int bedBugMinLayEggDelay() { return bedBugMinLayEggDelay; } + public static void setBedBugMinLayEggDelay(int value) { bedBugMinLayEggDelay = value; } + + public static int bedBugMaxLayEggDelay() { return bedBugMaxLayEggDelay; } + public static void setBedBugMaxLayEggDelay(int value) { bedBugMaxLayEggDelay = value; } + + public static double bedBugFoodSearchRadius() { return bedBugFoodSearchRadius; } + public static void setBedBugFoodSearchRadius(double value) { bedBugFoodSearchRadius = value; } + + public static double bedBugEggGuardRadius() { return bedBugEggGuardRadius; } + public static void setBedBugEggGuardRadius(double value) { bedBugEggGuardRadius = value; } + + public static double bedBugAttackStartReachBuffer() { return bedBugAttackStartReachBuffer; } + public static void setBedBugAttackStartReachBuffer(double value) { bedBugAttackStartReachBuffer = value; } + + public static double bedBugAttackReachBuffer() { return bedBugAttackReachBuffer; } + public static void setBedBugAttackReachBuffer(double value) { bedBugAttackReachBuffer = value; } + + public static double bedBugAttackLungeHorizontalSpeed() { return bedBugAttackLungeHorizontalSpeed; } + public static void setBedBugAttackLungeHorizontalSpeed(double value) { bedBugAttackLungeHorizontalSpeed = value; } + + public static double bedBugAttackLungeVerticalSpeed() { return bedBugAttackLungeVerticalSpeed; } + public static void setBedBugAttackLungeVerticalSpeed(double value) { bedBugAttackLungeVerticalSpeed = value; } + + public static float bedBugHealAmount() { return bedBugHealAmount; } + public static void setBedBugHealAmount(float value) { bedBugHealAmount = value; } + + public static double brutalflyArmor() { return brutalflyArmor; } + public static void setBrutalflyArmor(double value) { brutalflyArmor = value; } + + public static double brutalflyArmorToughness() { return brutalflyArmorToughness; } + public static void setBrutalflyArmorToughness(double value) { brutalflyArmorToughness = value; } + + public static double brutalflyKnockbackResistance() { return brutalflyKnockbackResistance; } + public static void setBrutalflyKnockbackResistance(double value) { brutalflyKnockbackResistance = value; } + + public static double brutalflyMovementSpeed() { return brutalflyMovementSpeed; } + public static void setBrutalflyMovementSpeed(double value) { brutalflyMovementSpeed = value; } + + public static double brutalflyFlyingSpeed() { return brutalflyFlyingSpeed; } + public static void setBrutalflyFlyingSpeed(double value) { brutalflyFlyingSpeed = value; } + + public static double brutalflyFollowRange() { return brutalflyFollowRange; } + public static void setBrutalflyFollowRange(double value) { brutalflyFollowRange = value; } + + public static int brutalflyXpReward() { return brutalflyXpReward; } + public static void setBrutalflyXpReward(int value) { brutalflyXpReward = value; } + + public static int brutalflyDeathSpawnCountMin() { return brutalflyDeathSpawnCountMin; } + public static void setBrutalflyDeathSpawnCountMin(int value) { brutalflyDeathSpawnCountMin = value; } + + public static int brutalflyDeathSpawnCountMax() { return brutalflyDeathSpawnCountMax; } + public static void setBrutalflyDeathSpawnCountMax(int value) { brutalflyDeathSpawnCountMax = value; } + + public static int brutalflySpitWindupTicks() { return brutalflySpitWindupTicks; } + public static void setBrutalflySpitWindupTicks(int value) { brutalflySpitWindupTicks = value; } + + public static int brutalflySwipeTicks() { return brutalflySwipeTicks; } + public static void setBrutalflySwipeTicks(int value) { brutalflySwipeTicks = value; } + + public static float brutalflySwipeKnockback() { return brutalflySwipeKnockback; } + public static void setBrutalflySwipeKnockback(float value) { brutalflySwipeKnockback = value; } + + public static int brutalflyPhaseOneSpitCooldownMin() { return brutalflyPhaseOneSpitCooldownMin; } + public static void setBrutalflyPhaseOneSpitCooldownMin(int value) { brutalflyPhaseOneSpitCooldownMin = value; } + + public static int brutalflyPhaseOneSpitCooldownMax() { return brutalflyPhaseOneSpitCooldownMax; } + public static void setBrutalflyPhaseOneSpitCooldownMax(int value) { brutalflyPhaseOneSpitCooldownMax = value; } + + public static int brutalflyPhaseTwoSpitCooldownMin() { return brutalflyPhaseTwoSpitCooldownMin; } + public static void setBrutalflyPhaseTwoSpitCooldownMin(int value) { brutalflyPhaseTwoSpitCooldownMin = value; } + + public static int brutalflyPhaseTwoSpitCooldownMax() { return brutalflyPhaseTwoSpitCooldownMax; } + public static void setBrutalflyPhaseTwoSpitCooldownMax(int value) { brutalflyPhaseTwoSpitCooldownMax = value; } + + public static int brutalflyPhaseThreeSpitCooldownMin() { return brutalflyPhaseThreeSpitCooldownMin; } + public static void setBrutalflyPhaseThreeSpitCooldownMin(int value) { brutalflyPhaseThreeSpitCooldownMin = value; } + + public static int brutalflyPhaseThreeSpitCooldownMax() { return brutalflyPhaseThreeSpitCooldownMax; } + public static void setBrutalflyPhaseThreeSpitCooldownMax(int value) { brutalflyPhaseThreeSpitCooldownMax = value; } + + public static int brutalflyPhaseOneMeleeCooldownMin() { return brutalflyPhaseOneMeleeCooldownMin; } + public static void setBrutalflyPhaseOneMeleeCooldownMin(int value) { brutalflyPhaseOneMeleeCooldownMin = value; } + + public static int brutalflyPhaseOneMeleeCooldownMax() { return brutalflyPhaseOneMeleeCooldownMax; } + public static void setBrutalflyPhaseOneMeleeCooldownMax(int value) { brutalflyPhaseOneMeleeCooldownMax = value; } + + public static int brutalflyPhaseTwoMeleeCooldownMin() { return brutalflyPhaseTwoMeleeCooldownMin; } + public static void setBrutalflyPhaseTwoMeleeCooldownMin(int value) { brutalflyPhaseTwoMeleeCooldownMin = value; } + + public static int brutalflyPhaseTwoMeleeCooldownMax() { return brutalflyPhaseTwoMeleeCooldownMax; } + public static void setBrutalflyPhaseTwoMeleeCooldownMax(int value) { brutalflyPhaseTwoMeleeCooldownMax = value; } + + public static int brutalflyPhaseThreeMeleeCooldownMin() { return brutalflyPhaseThreeMeleeCooldownMin; } + public static void setBrutalflyPhaseThreeMeleeCooldownMin(int value) { brutalflyPhaseThreeMeleeCooldownMin = value; } + + public static int brutalflyPhaseThreeMeleeCooldownMax() { return brutalflyPhaseThreeMeleeCooldownMax; } + public static void setBrutalflyPhaseThreeMeleeCooldownMax(int value) { brutalflyPhaseThreeMeleeCooldownMax = value; } + + public static double cloudSharkHealth() { return cloudSharkHealth; } + public static void setCloudSharkHealth(double value) { cloudSharkHealth = value; } + + public static double cloudSharkAttackDamage() { return cloudSharkAttackDamage; } + public static void setCloudSharkAttackDamage(double value) { cloudSharkAttackDamage = value; } + + public static double cloudSharkMovementSpeed() { return cloudSharkMovementSpeed; } + public static void setCloudSharkMovementSpeed(double value) { cloudSharkMovementSpeed = value; } + + public static double cloudSharkFlyingSpeed() { return cloudSharkFlyingSpeed; } + public static void setCloudSharkFlyingSpeed(double value) { cloudSharkFlyingSpeed = value; } + + public static double cloudSharkFollowRange() { return cloudSharkFollowRange; } + public static void setCloudSharkFollowRange(double value) { cloudSharkFollowRange = value; } + + public static double cloudSharkKnockbackResistance() { return cloudSharkKnockbackResistance; } + public static void setCloudSharkKnockbackResistance(double value) { cloudSharkKnockbackResistance = value; } + + public static int cloudSharkXpReward() { return cloudSharkXpReward; } + public static void setCloudSharkXpReward(int value) { cloudSharkXpReward = value; } + + public static double krakenMovementSpeed() { return krakenMovementSpeed; } + public static void setKrakenMovementSpeed(double value) { krakenMovementSpeed = value; } + + public static double krakenFlyingSpeed() { return krakenFlyingSpeed; } + public static void setKrakenFlyingSpeed(double value) { krakenFlyingSpeed = value; } + + public static double krakenFollowRange() { return krakenFollowRange; } + public static void setKrakenFollowRange(double value) { krakenFollowRange = value; } + + public static double krakenKnockbackResistance() { return krakenKnockbackResistance; } + public static void setKrakenKnockbackResistance(double value) { krakenKnockbackResistance = value; } + + public static double krakenArmor() { return krakenArmor; } + public static void setKrakenArmor(double value) { krakenArmor = value; } + + public static int krakenXpReward() { return krakenXpReward; } + public static void setKrakenXpReward(int value) { krakenXpReward = value; } + + public static double krakenPhaseTwoSpeedBonus() { return krakenPhaseTwoSpeedBonus; } + public static void setKrakenPhaseTwoSpeedBonus(double value) { krakenPhaseTwoSpeedBonus = value; } + + public static double krakenPhaseTwoFlyingSpeedBonus() { return krakenPhaseTwoFlyingSpeedBonus; } + public static void setKrakenPhaseTwoFlyingSpeedBonus(double value) { krakenPhaseTwoFlyingSpeedBonus = value; } + + public static double krakenPhaseTwoDamageBonus() { return krakenPhaseTwoDamageBonus; } + public static void setKrakenPhaseTwoDamageBonus(double value) { krakenPhaseTwoDamageBonus = value; } + + public static double krakenBossBarRange() { return krakenBossBarRange; } + public static void setKrakenBossBarRange(double value) { krakenBossBarRange = value; } + + public static float krakenLightningDamagePhaseOne() { return krakenLightningDamagePhaseOne; } + public static void setKrakenLightningDamagePhaseOne(float value) { krakenLightningDamagePhaseOne = value; } + + public static float krakenLightningDamagePhaseTwo() { return krakenLightningDamagePhaseTwo; } + public static void setKrakenLightningDamagePhaseTwo(float value) { krakenLightningDamagePhaseTwo = value; } + + public static int krakenLightningAmbientCooldownPhaseOneMin() { return krakenLightningAmbientCooldownPhaseOneMin; } + public static void setKrakenLightningAmbientCooldownPhaseOneMin(int value) { krakenLightningAmbientCooldownPhaseOneMin = value; } + + public static int krakenLightningAmbientCooldownPhaseOneMax() { return krakenLightningAmbientCooldownPhaseOneMax; } + public static void setKrakenLightningAmbientCooldownPhaseOneMax(int value) { krakenLightningAmbientCooldownPhaseOneMax = value; } + + public static int krakenLightningAmbientCooldownPhaseTwoMin() { return krakenLightningAmbientCooldownPhaseTwoMin; } + public static void setKrakenLightningAmbientCooldownPhaseTwoMin(int value) { krakenLightningAmbientCooldownPhaseTwoMin = value; } + + public static int krakenLightningAmbientCooldownPhaseTwoMax() { return krakenLightningAmbientCooldownPhaseTwoMax; } + public static void setKrakenLightningAmbientCooldownPhaseTwoMax(int value) { krakenLightningAmbientCooldownPhaseTwoMax = value; } + + public static int krakenLightningStrikeCooldownPhaseOneMin() { return krakenLightningStrikeCooldownPhaseOneMin; } + public static void setKrakenLightningStrikeCooldownPhaseOneMin(int value) { krakenLightningStrikeCooldownPhaseOneMin = value; } + + public static int krakenLightningStrikeCooldownPhaseOneMax() { return krakenLightningStrikeCooldownPhaseOneMax; } + public static void setKrakenLightningStrikeCooldownPhaseOneMax(int value) { krakenLightningStrikeCooldownPhaseOneMax = value; } + + public static int krakenLightningStrikeCooldownPhaseTwoMin() { return krakenLightningStrikeCooldownPhaseTwoMin; } + public static void setKrakenLightningStrikeCooldownPhaseTwoMin(int value) { krakenLightningStrikeCooldownPhaseTwoMin = value; } + + public static int krakenLightningStrikeCooldownPhaseTwoMax() { return krakenLightningStrikeCooldownPhaseTwoMax; } + public static void setKrakenLightningStrikeCooldownPhaseTwoMax(int value) { krakenLightningStrikeCooldownPhaseTwoMax = value; } + + public static int krakenPhaseSummonCooldownPhaseOneMin() { return krakenPhaseSummonCooldownPhaseOneMin; } + public static void setKrakenPhaseSummonCooldownPhaseOneMin(int value) { krakenPhaseSummonCooldownPhaseOneMin = value; } + + public static int krakenPhaseSummonCooldownPhaseOneMax() { return krakenPhaseSummonCooldownPhaseOneMax; } + public static void setKrakenPhaseSummonCooldownPhaseOneMax(int value) { krakenPhaseSummonCooldownPhaseOneMax = value; } + + public static int krakenPhaseSummonCooldownPhaseTwoMin() { return krakenPhaseSummonCooldownPhaseTwoMin; } + public static void setKrakenPhaseSummonCooldownPhaseTwoMin(int value) { krakenPhaseSummonCooldownPhaseTwoMin = value; } + + public static int krakenPhaseSummonCooldownPhaseTwoMax() { return krakenPhaseSummonCooldownPhaseTwoMax; } + public static void setKrakenPhaseSummonCooldownPhaseTwoMax(int value) { krakenPhaseSummonCooldownPhaseTwoMax = value; } + + public static int krakenPhaseSummonedMinionsMin() { return krakenPhaseSummonedMinionsMin; } + public static void setKrakenPhaseSummonedMinionsMin(int value) { krakenPhaseSummonedMinionsMin = value; } + + public static int krakenPhaseSummonedMinionsMax() { return krakenPhaseSummonedMinionsMax; } + public static void setKrakenPhaseSummonedMinionsMax(int value) { krakenPhaseSummonedMinionsMax = value; } + + public static int krakenPhaseTwoMinionsNearbyCap() { return krakenPhaseTwoMinionsNearbyCap; } + public static void setKrakenPhaseTwoMinionsNearbyCap(int value) { krakenPhaseTwoMinionsNearbyCap = value; } + + public static int krakenPhaseTwoMinionSpawnAttempts() { return krakenPhaseTwoMinionSpawnAttempts; } + public static void setKrakenPhaseTwoMinionSpawnAttempts(int value) { krakenPhaseTwoMinionSpawnAttempts = value; } + + public static double lucidHealth() { return lucidHealth; } + public static void setLucidHealth(double value) { lucidHealth = value; } + + public static double lucidAttackDamage() { return lucidAttackDamage; } + public static void setLucidAttackDamage(double value) { lucidAttackDamage = value; } + + public static double lucidMovementSpeed() { return lucidMovementSpeed; } + public static void setLucidMovementSpeed(double value) { lucidMovementSpeed = value; } + + public static double lucidFlyingSpeed() { return lucidFlyingSpeed; } + public static void setLucidFlyingSpeed(double value) { lucidFlyingSpeed = value; } + + public static double lucidFollowRange() { return lucidFollowRange; } + public static void setLucidFollowRange(double value) { lucidFollowRange = value; } + + public static double lucidKnockbackResistance() { return lucidKnockbackResistance; } + public static void setLucidKnockbackResistance(double value) { lucidKnockbackResistance = value; } + + public static int lucidXpReward() { return lucidXpReward; } + public static void setLucidXpReward(int value) { lucidXpReward = value; } + + public static int lucidAttackWindupTicks() { return lucidAttackWindupTicks; } + public static void setLucidAttackWindupTicks(int value) { lucidAttackWindupTicks = value; } + + public static int lucidAttackRecoveryTicks() { return lucidAttackRecoveryTicks; } + public static void setLucidAttackRecoveryTicks(int value) { lucidAttackRecoveryTicks = value; } + + public static int lucidBurstShots() { return lucidBurstShots; } + public static void setLucidBurstShots(int value) { lucidBurstShots = value; } + + public static int lucidBurstIntervalTicks() { return lucidBurstIntervalTicks; } + public static void setLucidBurstIntervalTicks(int value) { lucidBurstIntervalTicks = value; } + + public static int lucidAttackCooldownTicks() { return lucidAttackCooldownTicks; } + public static void setLucidAttackCooldownTicks(int value) { lucidAttackCooldownTicks = value; } + + public static double lucidMinEffectiveAttackRange() { return lucidMinEffectiveAttackRange; } + public static void setLucidMinEffectiveAttackRange(double value) { lucidMinEffectiveAttackRange = value; } + + public static double lucidMinHoverRange() { return lucidMinHoverRange; } + public static void setLucidMinHoverRange(double value) { lucidMinHoverRange = value; } + + public static double lucidCloseRange() { return lucidCloseRange; } + public static void setLucidCloseRange(double value) { lucidCloseRange = value; } + + public static double lucidDefaultHoverHeight() { return lucidDefaultHoverHeight; } + public static void setLucidDefaultHoverHeight(double value) { lucidDefaultHoverHeight = value; } + + public static double lucidHitboxWidthScale() { return lucidHitboxWidthScale; } + public static void setLucidHitboxWidthScale(double value) { lucidHitboxWidthScale = value; } + + public static double lucidHitboxHeightScale() { return lucidHitboxHeightScale; } + public static void setLucidHitboxHeightScale(double value) { lucidHitboxHeightScale = value; } + + public static double lucidHitboxYOffset() { return lucidHitboxYOffset; } + public static void setLucidHitboxYOffset(double value) { lucidHitboxYOffset = value; } + + public static double missileSquidHealth() { return missileSquidHealth; } + public static void setMissileSquidHealth(double value) { missileSquidHealth = value; } + + public static double missileSquidAttackDamage() { return missileSquidAttackDamage; } + public static void setMissileSquidAttackDamage(double value) { missileSquidAttackDamage = value; } + + public static double missileSquidMovementSpeed() { return missileSquidMovementSpeed; } + public static void setMissileSquidMovementSpeed(double value) { missileSquidMovementSpeed = value; } + + public static double missileSquidFlyingSpeed() { return missileSquidFlyingSpeed; } + public static void setMissileSquidFlyingSpeed(double value) { missileSquidFlyingSpeed = value; } + + public static double missileSquidFollowRange() { return missileSquidFollowRange; } + public static void setMissileSquidFollowRange(double value) { missileSquidFollowRange = value; } + + public static double missileSquidKnockbackResistance() { return missileSquidKnockbackResistance; } + public static void setMissileSquidKnockbackResistance(double value) { missileSquidKnockbackResistance = value; } + + public static int missileSquidXpReward() { return missileSquidXpReward; } + public static void setMissileSquidXpReward(int value) { missileSquidXpReward = value; } + + public static int missileSquidLatchDamageInterval() { return missileSquidLatchDamageInterval; } + public static void setMissileSquidLatchDamageInterval(int value) { missileSquidLatchDamageInterval = value; } + + public static float missileSquidLatchDamage() { return missileSquidLatchDamage; } + public static void setMissileSquidLatchDamage(float value) { missileSquidLatchDamage = value; } + + public static double missileSquidAttachRangeSqr() { return missileSquidAttachRangeSqr; } + public static void setMissileSquidAttachRangeSqr(double value) { missileSquidAttachRangeSqr = value; } + + public static double molewormHealth() { return molewormHealth; } + public static void setMolewormHealth(double value) { molewormHealth = value; } + + public static double molewormAttackDamage() { return molewormAttackDamage; } + public static void setMolewormAttackDamage(double value) { molewormAttackDamage = value; } + + public static double molewormMovementSpeed() { return molewormMovementSpeed; } + public static void setMolewormMovementSpeed(double value) { molewormMovementSpeed = value; } + + public static int molewormXpReward() { return molewormXpReward; } + public static void setMolewormXpReward(int value) { molewormXpReward = value; } + + public static double triffidHealth() { return triffidHealth; } + public static void setTriffidHealth(double value) { triffidHealth = value; } + + public static double triffidAttackDamage() { return triffidAttackDamage; } + public static void setTriffidAttackDamage(double value) { triffidAttackDamage = value; } + + public static double triffidGrabDamage() { return triffidGrabDamage; } + public static void setTriffidGrabDamage(double value) { triffidGrabDamage = value; } + + public static double molevoreHealth() { return molevoreHealth; } + public static void setMolevoreHealth(double value) { molevoreHealth = value; } + + public static double molevoreAttackDamage() { return molevoreAttackDamage; } + public static void setMolevoreAttackDamage(double value) { molevoreAttackDamage = value; } + + public static double molevoreMovementSpeed() { return molevoreMovementSpeed; } + public static void setMolevoreMovementSpeed(double value) { molevoreMovementSpeed = value; } + + public static double molevoreArmor() { return molevoreArmor; } + public static void setMolevoreArmor(double value) { molevoreArmor = value; } + + public static double molevoreKnockbackResistance() { return molevoreKnockbackResistance; } + public static void setMolevoreKnockbackResistance(double value) { molevoreKnockbackResistance = value; } + + public static double molevoreFollowRange() { return molevoreFollowRange; } + public static void setMolevoreFollowRange(double value) { molevoreFollowRange = value; } + + public static int molevoreXpReward() { return molevoreXpReward; } + public static void setMolevoreXpReward(int value) { molevoreXpReward = value; } + + public static int molevoreSpinTicks() { return molevoreSpinTicks; } + public static void setMolevoreSpinTicks(int value) { molevoreSpinTicks = value; } + + public static int molevoreCooldownTicks() { return molevoreCooldownTicks; } + public static void setMolevoreCooldownTicks(int value) { molevoreCooldownTicks = value; } + + public static double molevoreChargeSpeed() { return molevoreChargeSpeed; } + public static void setMolevoreChargeSpeed(double value) { molevoreChargeSpeed = value; } + + public static double molevoreBreakRange() { return molevoreBreakRange; } + public static void setMolevoreBreakRange(double value) { molevoreBreakRange = value; } + + public static double molevoreBreakVerticalRange() { return molevoreBreakVerticalRange; } + public static void setMolevoreBreakVerticalRange(double value) { molevoreBreakVerticalRange = value; } + + public static double molevoreBreakHalfWidth() { return molevoreBreakHalfWidth; } + public static void setMolevoreBreakHalfWidth(double value) { molevoreBreakHalfWidth = value; } + + public static double nightmareHealth() { return nightmareHealth; } + public static void setNightmareHealth(double value) { nightmareHealth = value; } + + public static double nightmareAttackDamage() { return nightmareAttackDamage; } + public static void setNightmareAttackDamage(double value) { nightmareAttackDamage = value; } + + public static double nightmareMovementSpeed() { return nightmareMovementSpeed; } + public static void setNightmareMovementSpeed(double value) { nightmareMovementSpeed = value; } + + public static double nightmareFlyingSpeed() { return nightmareFlyingSpeed; } + public static void setNightmareFlyingSpeed(double value) { nightmareFlyingSpeed = value; } + + public static double nightmareFollowRange() { return nightmareFollowRange; } + public static void setNightmareFollowRange(double value) { nightmareFollowRange = value; } + + public static double nightmareKnockbackResistance() { return nightmareKnockbackResistance; } + public static void setNightmareKnockbackResistance(double value) { nightmareKnockbackResistance = value; } + + public static double nightmareArmor() { return nightmareArmor; } + public static void setNightmareArmor(double value) { nightmareArmor = value; } + + public static int nightmareXpReward() { return nightmareXpReward; } + public static void setNightmareXpReward(int value) { nightmareXpReward = value; } + + public static int nightmareAttackTotalTicks() { return nightmareAttackTotalTicks; } + public static void setNightmareAttackTotalTicks(int value) { nightmareAttackTotalTicks = value; } + + public static int nightmareAttackDamageTick() { return nightmareAttackDamageTick; } + public static void setNightmareAttackDamageTick(int value) { nightmareAttackDamageTick = value; } + + public static int nightmareIntroRoarTicks() { return nightmareIntroRoarTicks; } + public static void setNightmareIntroRoarTicks(int value) { nightmareIntroRoarTicks = value; } + + public static int nightmareCombatRoarTicks() { return nightmareCombatRoarTicks; } + public static void setNightmareCombatRoarTicks(int value) { nightmareCombatRoarTicks = value; } + + public static int nightmareDeathTicks() { return nightmareDeathTicks; } + public static void setNightmareDeathTicks(int value) { nightmareDeathTicks = value; } + + public static int nightmareTargetResetTicks() { return nightmareTargetResetTicks; } + public static void setNightmareTargetResetTicks(int value) { nightmareTargetResetTicks = value; } + + public static int nightmareBedBugEggSearchInterval() { return nightmareBedBugEggSearchInterval; } + public static void setNightmareBedBugEggSearchInterval(int value) { nightmareBedBugEggSearchInterval = value; } + + public static int nightmareDreadTicks() { return nightmareDreadTicks; } + public static void setNightmareDreadTicks(int value) { nightmareDreadTicks = value; } + + public static int nightmareWeaknessTicks() { return nightmareWeaknessTicks; } + public static void setNightmareWeaknessTicks(int value) { nightmareWeaknessTicks = value; } + + public static double nightmarePatrolSpeed() { return nightmarePatrolSpeed; } + public static void setNightmarePatrolSpeed(double value) { nightmarePatrolSpeed = value; } + + public static double nightmareCombatFlightSpeed() { return nightmareCombatFlightSpeed; } + public static void setNightmareCombatFlightSpeed(double value) { nightmareCombatFlightSpeed = value; } + + public static double nightmareGroundApproachSpeed() { return nightmareGroundApproachSpeed; } + public static void setNightmareGroundApproachSpeed(double value) { nightmareGroundApproachSpeed = value; } + + public static double nightmareAttackStartRangeSqr() { return nightmareAttackStartRangeSqr; } + public static void setNightmareAttackStartRangeSqr(double value) { nightmareAttackStartRangeSqr = value; } + + public static double nightmareGroundApproachRangeSqr() { return nightmareGroundApproachRangeSqr; } + public static void setNightmareGroundApproachRangeSqr(double value) { nightmareGroundApproachRangeSqr = value; } + + public static double nightmareAttackReachRadius() { return nightmareAttackReachRadius; } + public static void setNightmareAttackReachRadius(double value) { nightmareAttackReachRadius = value; } + + public static double nightmareAttackCommitHorizontalRange() { return nightmareAttackCommitHorizontalRange; } + public static void setNightmareAttackCommitHorizontalRange(double value) { nightmareAttackCommitHorizontalRange = value; } + + public static double nightmareAttackCommitVerticalRange() { return nightmareAttackCommitVerticalRange; } + public static void setNightmareAttackCommitVerticalRange(double value) { nightmareAttackCommitVerticalRange = value; } + + public static double nightmareFlightReengageRangeSqr() { return nightmareFlightReengageRangeSqr; } + public static void setNightmareFlightReengageRangeSqr(double value) { nightmareFlightReengageRangeSqr = value; } + + public static double nightmareCloseApproachRangeSqr() { return nightmareCloseApproachRangeSqr; } + public static void setNightmareCloseApproachRangeSqr(double value) { nightmareCloseApproachRangeSqr = value; } + + public static double nightmareRoarRetryDistanceSqr() { return nightmareRoarRetryDistanceSqr; } + public static void setNightmareRoarRetryDistanceSqr(double value) { nightmareRoarRetryDistanceSqr = value; } + + public static double nightmareBedBugEggBreakRangeSqr() { return nightmareBedBugEggBreakRangeSqr; } + public static void setNightmareBedBugEggBreakRangeSqr(double value) { nightmareBedBugEggBreakRangeSqr = value; } + + public static float nightmareAirPatrolChance() { return nightmareAirPatrolChance; } + public static void setNightmareAirPatrolChance(float value) { nightmareAirPatrolChance = value; } + + public static double battleAxeAttackSpeed() { return battleAxeAttackSpeed; } + public static void setBattleAxeAttackSpeed(double value) { battleAxeAttackSpeed = value; } + + public static double basiliskDaggerAttackDamage() { return basiliskDaggerAttackDamage; } + public static void setBasiliskDaggerAttackDamage(double value) { basiliskDaggerAttackDamage = value; } + + public static double basiliskDaggerAttackSpeed() { return basiliskDaggerAttackSpeed; } + public static void setBasiliskDaggerAttackSpeed(double value) { basiliskDaggerAttackSpeed = value; } + + public static int basiliskDaggerPoisonDurationTicks() { return basiliskDaggerPoisonDurationTicks; } + public static void setBasiliskDaggerPoisonDurationTicks(int value) { basiliskDaggerPoisonDurationTicks = value; } + + public static int basiliskDaggerPoisonAmplifier() { return basiliskDaggerPoisonAmplifier; } + public static void setBasiliskDaggerPoisonAmplifier(int value) { basiliskDaggerPoisonAmplifier = value; } + + public static double ultimateSwordAttackSpeed() { return ultimateSwordAttackSpeed; } + public static void setUltimateSwordAttackSpeed(double value) { ultimateSwordAttackSpeed = value; } + + public static double ultimatePickaxeAttackSpeed() { return ultimatePickaxeAttackSpeed; } + public static void setUltimatePickaxeAttackSpeed(double value) { ultimatePickaxeAttackSpeed = value; } + + public static double ultimateAxeAttackSpeed() { return ultimateAxeAttackSpeed; } + public static void setUltimateAxeAttackSpeed(double value) { ultimateAxeAttackSpeed = value; } + + public static double ultimateShovelAttackSpeed() { return ultimateShovelAttackSpeed; } + public static void setUltimateShovelAttackSpeed(double value) { ultimateShovelAttackSpeed = value; } + + public static double ultimateHoeAttackSpeed() { return ultimateHoeAttackSpeed; } + public static void setUltimateHoeAttackSpeed(double value) { ultimateHoeAttackSpeed = value; } + + public static double ultimateMaceAttackSpeed() { return ultimateMaceAttackSpeed; } + public static void setUltimateMaceAttackSpeed(double value) { ultimateMaceAttackSpeed = value; } + + public static double nightmareSwordAttackSpeed() { return nightmareSwordAttackSpeed; } + public static void setNightmareSwordAttackSpeed(double value) { nightmareSwordAttackSpeed = value; } + + public static int bigBerthaBasiliskParalyzeDurationTicks() { return bigBerthaBasiliskParalyzeDurationTicks; } + public static void setBigBerthaBasiliskParalyzeDurationTicks(int value) { bigBerthaBasiliskParalyzeDurationTicks = value; } + + public static int bigBerthaKrakenSlowTicks() { return bigBerthaKrakenSlowTicks; } + public static void setBigBerthaKrakenSlowTicks(int value) { bigBerthaKrakenSlowTicks = value; } + + public static double ductTapeRepairPercentPerUse() { return ductTapeRepairPercentPerUse; } + public static void setDuctTapeRepairPercentPerUse(double value) { ductTapeRepairPercentPerUse = value; } + + public static double ultimateArmorKnockbackResistance() { return ultimateArmorKnockbackResistance; } + public static void setUltimateArmorKnockbackResistance(double value) { ultimateArmorKnockbackResistance = value; } + + public static double nightmareArmorKnockbackResistance() { return nightmareArmorKnockbackResistance; } + public static void setNightmareArmorKnockbackResistance(double value) { nightmareArmorKnockbackResistance = value; } + + public static int fallenKingCrownArmorValue() { return fallenKingCrownArmorValue; } + public static void setFallenKingCrownArmorValue(int value) { fallenKingCrownArmorValue = value; } + + public static double fallenKingCrownArmorToughness() { return fallenKingCrownArmorToughness; } + public static void setFallenKingCrownArmorToughness(double value) { fallenKingCrownArmorToughness = value; } + + public static boolean elythiaFireflyParticlesEnabled() { return elythiaFireflyParticlesEnabled; } + public static void setElythiaFireflyParticlesEnabled(boolean value) { elythiaFireflyParticlesEnabled = value; } + + public static int bloodCrystalArmorShieldRechargeTicks() { return bloodCrystalArmorShieldRechargeTicks; } + public static void setBloodCrystalArmorShieldRechargeTicks(int v) { bloodCrystalArmorShieldRechargeTicks = v; } + + public static int bloodCrystalAppleShieldCount() { return bloodCrystalAppleShieldCount; } + public static void setBloodCrystalAppleShieldCount(int v) { bloodCrystalAppleShieldCount = v; } + + public static int bloodCrystalHelmetDefense() { return bloodCrystalHelmetDefense; } + public static void setBloodCrystalHelmetDefense(int v) { bloodCrystalHelmetDefense = v; } + public static int bloodCrystalChestplateDefense() { return bloodCrystalChestplateDefense; } + public static void setBloodCrystalChestplateDefense(int v) { bloodCrystalChestplateDefense = v; } + public static int bloodCrystalLeggingsDefense() { return bloodCrystalLeggingsDefense; } + public static void setBloodCrystalLeggingsDefense(int v) { bloodCrystalLeggingsDefense = v; } + public static int bloodCrystalBootsDefense() { return bloodCrystalBootsDefense; } + public static void setBloodCrystalBootsDefense(int v) { bloodCrystalBootsDefense = v; } + public static double bloodCrystalArmorToughness() { return bloodCrystalArmorToughness; } + public static void setBloodCrystalArmorToughness(double v) { bloodCrystalArmorToughness = v; } + public static int bloodCrystalHelmetDurability() { return bloodCrystalHelmetDurability; } + public static void setBloodCrystalHelmetDurability(int v) { bloodCrystalHelmetDurability = v; } + public static int bloodCrystalChestplateDurability() { return bloodCrystalChestplateDurability; } + public static void setBloodCrystalChestplateDurability(int v) { bloodCrystalChestplateDurability = v; } + public static int bloodCrystalLeggingsDurability() { return bloodCrystalLeggingsDurability; } + public static void setBloodCrystalLeggingsDurability(int v) { bloodCrystalLeggingsDurability = v; } + public static int bloodCrystalBootsDurability() { return bloodCrystalBootsDurability; } + public static void setBloodCrystalBootsDurability(int v) { bloodCrystalBootsDurability = v; } + + public static int bloodCrystalAppleDurationTicks() { return bloodCrystalAppleDurationTicks; } + public static void setBloodCrystalAppleDurationTicks(int v) { bloodCrystalAppleDurationTicks = v; } + + public static int bloodCrystalAppleShieldRechargeTicks() { return bloodCrystalAppleShieldRechargeTicks; } + public static void setBloodCrystalAppleShieldRechargeTicks(int v) { bloodCrystalAppleShieldRechargeTicks = v; } + + public static int bloodCrystalHardMaxShields() { return bloodCrystalHardMaxShields; } + public static void setBloodCrystalHardMaxShields(int v) { bloodCrystalHardMaxShields = v; } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyAdvancements.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyAdvancements.java new file mode 100644 index 00000000..ad7c3374 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyAdvancements.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content; + +import net.minecraft.advancements.AdvancementHolder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.Nullable; + +public final class AntarchyAdvancements { + private AntarchyAdvancements() { + } + + public static boolean award(ServerPlayer player, ResourceLocation advancementId) { + MinecraftServer server = player.serverLevel().getServer(); + if (server == null) { + return false; + } + + AdvancementHolder holder = server.getAdvancements().get(advancementId); + if (holder == null) { + return false; + } + + return player.getAdvancements().award(holder, "impossible"); + } + + @Nullable + public static AdvancementHolder get(MinecraftServer server, ResourceLocation advancementId) { + return server.getAdvancements().get(advancementId); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java new file mode 100644 index 00000000..f2f45f04 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -0,0 +1,286 @@ +package com.craisinlord.antarchy.content; + +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import java.util.function.Supplier; +import net.minecraft.core.Holder; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public final class AntarchyObjects { + private static final Supplier UNBOUND = () -> { + throw new IllegalStateException("Antarchy object supplier was accessed before registration finished"); + }; + + @SuppressWarnings("unchecked") + public static Supplier> EASTER_BUNNY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> FLYING_SQUIRREL = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> KRAKEN = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> MISSILE_SQUID = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> MOLEWORM = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> MANTIS = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> BED_BUG = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> WASP = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> BOMBER = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> SCORPION = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> CATERPILLAR = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> BUTTERFLY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> REVERIE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> TRIFFID = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> BRUTALFLY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> BRUTALFLY_ORB = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> HUSH_PROJECTILE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier DUPLICATOR_LOG = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier DUPLICATOR_SAPLING = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier DUCT_TAPE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier INFESTED_ROOTED_DIRT = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier INFESTED_COARSE_DIRT = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier NYXITE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier CLOUD_BLOCK = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier TRIFFID_GOO_BLOCK = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier PALE_NYXITE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier NYXITE_SPIKE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier POTENT_NYXITE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier ANTIMETAL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier POLISHED_ANTIMETAL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier BUDDING_BLOOD_CRYSTAL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SMALL_BLOOD_CRYSTAL_BUD = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier MEDIUM_BLOOD_CRYSTAL_BUD = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier LARGE_BLOOD_CRYSTAL_BUD = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier BLOOD_CRYSTAL_CRYSTAL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier OURANWOOD_ACORN = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier KRAKEN_TOOTH = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier MOGGLES = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier REVERIE_BOTTLE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> DREAD = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> DOUBLE_DAMAGE_CHANCE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> BLOODGLASS_MAX_HEARTS = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> BLOODGLASS_WARD = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> PARALYZED_EFFECT = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> INVERTED_EFFECT = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier OURANWOOD_ACORN_BLOCK = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier MOSSY_OURANWOOD_LOG = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier MOSSY_OURANWOOD_WOOD = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier ORANGE_MILKWEED = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier PINK_MILKWEED = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier TORCHFLOWER_BUSH = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier BED_BUG_EGG = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier WASP_NEST = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier HUSHWEED = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SQUIRREL_NEST_BLOCK = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ANT_NEST_BLOCK_ENTITY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> DREAM_CAMPFIRE_BLOCK_ENTITY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> WASP_NEST_BLOCK_ENTITY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> HUSHWEED_BLOCK_ENTITY = (Supplier>) UNBOUND; + + private AntarchyObjects() { + } + + public static void bind( + Supplier> easterBunny, + Supplier> flyingSquirrel, + Supplier> kraken, + Supplier> missileSquid, + Supplier> moleworm, + Supplier> mantis, + Supplier> bedBug, + Supplier> wasp, + Supplier> bomber, + Supplier> scorpion, + Supplier> caterpillar, + Supplier> butterfly, + Supplier> reverie, + Supplier> triffid, + Supplier> brutalfly, + Supplier> brutalflyOrb, + Supplier> hushProjectile, + Supplier duplicatorLog, + Supplier duplicatorSapling, + Supplier ductTape, + Supplier infestedRootedDirt, + Supplier infestedCoarseDirt, + Supplier nyxite, + Supplier cloudBlock, + Supplier triffidGooBlock, + Supplier paleNyxite, + Supplier nyxiteSpike, + Supplier potentNyxite, + Supplier antimetal, + Supplier polishedAntimetal, + Supplier buddingBloodCrystal, + Supplier smallBloodCrystalBud, + Supplier mediumBloodCrystalBud, + Supplier largeBloodCrystalBud, + Supplier bloodCrystalCrystal, + Supplier ouranwoodAcorn, + Supplier krakenTooth, + Supplier moggles, + Supplier reverieBottle, + Supplier> dread, + Supplier> paralyzedEffect, + Supplier> invertedEffect, + Supplier ouranwoodAcornBlock, + Supplier mossyOuranwoodLog, + Supplier mossyOuranwoodWood, + Supplier orangeMilkweed, + Supplier pinkMilkweed, + Supplier torchflowerBush, + Supplier bedBugEggs, + Supplier waspNest, + Supplier hushweed, + Supplier squirrelNestBlock, + Supplier> antNestBlockEntity, + Supplier> dreamCampfireBlockEntity, + Supplier> waspNestBlockEntity, + Supplier> hushweedBlockEntity, + Supplier> doubleDamageChance, + Supplier> bloodglassMaxHearts, + Supplier> bloodglassWard + ) { + EASTER_BUNNY = easterBunny; + FLYING_SQUIRREL = flyingSquirrel; + KRAKEN = kraken; + MISSILE_SQUID = missileSquid; + MOLEWORM = moleworm; + MANTIS = mantis; + BED_BUG = bedBug; + WASP = wasp; + BOMBER = bomber; + SCORPION = scorpion; + CATERPILLAR = caterpillar; + BUTTERFLY = butterfly; + REVERIE = reverie; + TRIFFID = triffid; + BRUTALFLY = brutalfly; + BRUTALFLY_ORB = brutalflyOrb; + HUSH_PROJECTILE = hushProjectile; + DUPLICATOR_LOG = duplicatorLog; + DUPLICATOR_SAPLING = duplicatorSapling; + DUCT_TAPE = ductTape; + INFESTED_ROOTED_DIRT = infestedRootedDirt; + INFESTED_COARSE_DIRT = infestedCoarseDirt; + NYXITE = nyxite; + CLOUD_BLOCK = cloudBlock; + TRIFFID_GOO_BLOCK = triffidGooBlock; + PALE_NYXITE = paleNyxite; + NYXITE_SPIKE = nyxiteSpike; + POTENT_NYXITE = potentNyxite; + ANTIMETAL = antimetal; + POLISHED_ANTIMETAL = polishedAntimetal; + BUDDING_BLOOD_CRYSTAL = buddingBloodCrystal; + SMALL_BLOOD_CRYSTAL_BUD = smallBloodCrystalBud; + MEDIUM_BLOOD_CRYSTAL_BUD = mediumBloodCrystalBud; + LARGE_BLOOD_CRYSTAL_BUD = largeBloodCrystalBud; + BLOOD_CRYSTAL_CRYSTAL = bloodCrystalCrystal; + OURANWOOD_ACORN = ouranwoodAcorn; + KRAKEN_TOOTH = krakenTooth; + MOGGLES = moggles; + REVERIE_BOTTLE = reverieBottle; + DREAD = dread; + PARALYZED_EFFECT = paralyzedEffect; + INVERTED_EFFECT = invertedEffect; + OURANWOOD_ACORN_BLOCK = ouranwoodAcornBlock; + MOSSY_OURANWOOD_LOG = mossyOuranwoodLog; + MOSSY_OURANWOOD_WOOD = mossyOuranwoodWood; + ORANGE_MILKWEED = orangeMilkweed; + PINK_MILKWEED = pinkMilkweed; + TORCHFLOWER_BUSH = torchflowerBush; + BED_BUG_EGG = bedBugEggs; + WASP_NEST = waspNest; + HUSHWEED = hushweed; + SQUIRREL_NEST_BLOCK = squirrelNestBlock; + ANT_NEST_BLOCK_ENTITY = antNestBlockEntity; + DREAM_CAMPFIRE_BLOCK_ENTITY = dreamCampfireBlockEntity; + WASP_NEST_BLOCK_ENTITY = waspNestBlockEntity; + HUSHWEED_BLOCK_ENTITY = hushweedBlockEntity; + DOUBLE_DAMAGE_CHANCE = doubleDamageChance; + BLOODGLASS_MAX_HEARTS = bloodglassMaxHearts; + BLOODGLASS_WARD = bloodglassWard; + } + + public static boolean isDuplicatorTreeBlock(BlockState state) { + return state.is(DUPLICATOR_LOG.get()) || state.is(DUPLICATOR_SAPLING.get()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java new file mode 100644 index 00000000..cd113d7a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java @@ -0,0 +1,352 @@ +package com.craisinlord.antarchy.content; + +import java.util.function.Supplier; +import net.minecraft.sounds.SoundEvent; + +@SuppressWarnings("unchecked") +public final class AntarchySoundEvents { + private static final Supplier UNBOUND = () -> { + throw new IllegalStateException("Antarchy sound event supplier was accessed before registration finished"); + }; + + public static Supplier SQUIDZOOKA_FIRE = (Supplier) UNBOUND; + public static Supplier SHRINK_RAY_SOUND = (Supplier) UNBOUND; + public static Supplier GROWTH_RAY_SOUND = (Supplier) UNBOUND; + public static Supplier SIZE_RAY_CHARGE = (Supplier) UNBOUND; + public static Supplier ANT_AMBIENT = (Supplier) UNBOUND; + public static Supplier ANT_IDLE = (Supplier) UNBOUND; + public static Supplier ANT_HURT = (Supplier) UNBOUND; + public static Supplier ANT_BITE = (Supplier) UNBOUND; + public static Supplier ANT_GATHER = (Supplier) UNBOUND; + public static Supplier ANT_NEST = (Supplier) UNBOUND; + public static Supplier CLOUD_SHARK_BITE = (Supplier) UNBOUND; + public static Supplier CLOUD_SHARK_IDLE = (Supplier) UNBOUND; + public static Supplier CLOUD_SHARK_HURT = (Supplier) UNBOUND; + public static Supplier CLOUD_SHARK_DEATH = (Supplier) UNBOUND; + public static Supplier CLOUD_SHARK_FLY = (Supplier) UNBOUND; + public static Supplier CATERPILLAR_IDLE = (Supplier) UNBOUND; + public static Supplier CATERPILLAR_HURT = (Supplier) UNBOUND; + public static Supplier CATERPILLAR_CRAWL = (Supplier) UNBOUND; + public static Supplier BUTTERFLY_HURT = (Supplier) UNBOUND; + public static Supplier BRUTALFLY_IDLE = (Supplier) UNBOUND; + public static Supplier BRUTALFLY_DEATH = (Supplier) UNBOUND; + public static Supplier ELYTHIA_FIREFLY_AMBIENT = (Supplier) UNBOUND; + public static Supplier MISSILE_SQUID_AMBIENT = (Supplier) UNBOUND; + public static Supplier MISSILE_SQUID_HURT = (Supplier) UNBOUND; + public static Supplier MISSILE_SQUID_DEATH = (Supplier) UNBOUND; + public static Supplier MISSILE_SQUID_ATTACK = (Supplier) UNBOUND; + public static Supplier KRAKEN_FLYING_LOOP = (Supplier) UNBOUND; + public static Supplier KRAKEN_FLYING_SIDEWAYS_LOOP = (Supplier) UNBOUND; + public static Supplier KRAKEN_ATTACK = (Supplier) UNBOUND; + public static Supplier KRAKEN_SPIN = (Supplier) UNBOUND; + public static Supplier KRAKEN_ROAR = (Supplier) UNBOUND; + public static Supplier KRAKEN_SUMMON = (Supplier) UNBOUND; + public static Supplier KRAKEN_HURT = (Supplier) UNBOUND; + public static Supplier KRAKEN_DEATH = (Supplier) UNBOUND; + public static Supplier BASILISK_IDLE_LOOP = (Supplier) UNBOUND; + public static Supplier BASILISK_SLITHER_LOOP = (Supplier) UNBOUND; + public static Supplier BASILISK_BITE = (Supplier) UNBOUND; + public static Supplier BASILISK_HISS = (Supplier) UNBOUND; + public static Supplier BASILISK_HURT = (Supplier) UNBOUND; + public static Supplier BASILISK_DEATH = (Supplier) UNBOUND; + public static Supplier THORAXIS_NIGHTMARE_WASTES_AMBIENT = (Supplier) UNBOUND; + public static Supplier THORAXIS_NIGHTMARE_WASTES_ADDITIONS = (Supplier) UNBOUND; + public static Supplier THORAXIS_NIGHTMARE_WASTES_MOOD = (Supplier) UNBOUND; + public static Supplier THORAXIS_DREAM_DUNES_AMBIENT = (Supplier) UNBOUND; + public static Supplier THORAXIS_DREAM_DUNES_ADDITIONS = (Supplier) UNBOUND; + public static Supplier THORAXIS_DREAM_DUNES_MOOD = (Supplier) UNBOUND; + public static Supplier THORAXIS_LUCID_POOLS_AMBIENT = (Supplier) UNBOUND; + public static Supplier THORAXIS_LUCID_POOLS_ADDITIONS = (Supplier) UNBOUND; + public static Supplier THORAXIS_LUCID_POOLS_MOOD = (Supplier) UNBOUND; + public static Supplier LUCID_AMBIENT = (Supplier) UNBOUND; + public static Supplier LUCID_FLYING = (Supplier) UNBOUND; + public static Supplier LUCID_ATTACK = (Supplier) UNBOUND; + public static Supplier LUCID_BOLT_SOUND = (Supplier) UNBOUND; + public static Supplier LUCID_HURT = (Supplier) UNBOUND; + public static Supplier LUCID_DEATH = (Supplier) UNBOUND; + public static Supplier REVERIE_IDLE = (Supplier) UNBOUND; + public static Supplier REVERIE_HURT = (Supplier) UNBOUND; + public static Supplier REVERIE_WORRY = (Supplier) UNBOUND; + public static Supplier REVERIE_SAVE = (Supplier) UNBOUND; + public static Supplier REVERIE_JOIN_PLAYER = (Supplier) UNBOUND; + public static Supplier REVERIE_ALERT = (Supplier) UNBOUND; + public static Supplier FLYING_SQUIRREL_IDLE = (Supplier) UNBOUND; + public static Supplier FLYING_SQUIRREL_BEG = (Supplier) UNBOUND; + public static Supplier FLYING_SQUIRREL_NUT = (Supplier) UNBOUND; + public static Supplier FLYING_SQUIRREL_GLIDE_LOOP = (Supplier) UNBOUND; + public static Supplier FLYING_SQUIRREL_HURT = (Supplier) UNBOUND; + public static Supplier FLYING_SQUIRREL_DEATH = (Supplier) UNBOUND; + public static Supplier NIGHTMARE_IDLE = (Supplier) UNBOUND; + public static Supplier NIGHTMARE_HURT = (Supplier) UNBOUND; + public static Supplier NIGHTMARE_ROAR = (Supplier) UNBOUND; + public static Supplier NIGHTMARE_DEATH = (Supplier) UNBOUND; + public static Supplier NIGHTMARE_BITE = (Supplier) UNBOUND; + public static Supplier NIGHTMARE_FLAP = (Supplier) UNBOUND; + public static Supplier TRIFFID_ATTACK = (Supplier) UNBOUND; + public static Supplier TRIFFID_GRAB = (Supplier) UNBOUND; + public static Supplier TRIFFID_HURT = (Supplier) UNBOUND; + public static Supplier TRIFFID_DEATH = (Supplier) UNBOUND; + public static Supplier TRIFFID_HISS = (Supplier) UNBOUND; + public static Supplier TRIFFID_GROWL = (Supplier) UNBOUND; + public static Supplier MANTIS_AMBIENT = (Supplier) UNBOUND; + public static Supplier MANTIS_HURT = (Supplier) UNBOUND; + public static Supplier MANTIS_ATTACK = (Supplier) UNBOUND; + public static Supplier MANTIS_FLY_LOOP = (Supplier) UNBOUND; + public static Supplier GRAVITY_GUN_PICKUP = (Supplier) UNBOUND; + public static Supplier GRAVITY_GUN_DROP = (Supplier) UNBOUND; + public static Supplier GRAVITY_GUN_HOLD_LOOP = (Supplier) UNBOUND; + public static Supplier GRAVITY_GUN_LAUNCH = (Supplier) UNBOUND; + public static Supplier GRAVITY_GUN_DRYFIRE = (Supplier) UNBOUND; + public static Supplier BED_BUG_AMBIENT = (Supplier) UNBOUND; + public static Supplier BED_BUG_HURT = (Supplier) UNBOUND; + public static Supplier BED_BUG_ATTACK = (Supplier) UNBOUND; + public static Supplier WASP_IDLE = (Supplier) UNBOUND; + public static Supplier WASP_HURT = (Supplier) UNBOUND; + public static Supplier WASP_ATTACK = (Supplier) UNBOUND; + public static Supplier WASP_DEATH = (Supplier) UNBOUND; + public static Supplier SCORPION_AMBIENT = (Supplier) UNBOUND; + public static Supplier SCORPION_HURT = (Supplier) UNBOUND; + public static Supplier SCORPION_ATTACK = (Supplier) UNBOUND; + public static Supplier EMPEROR_SCORPION_AMBIENT = (Supplier) UNBOUND; + public static Supplier EMPEROR_SCORPION_HURT = (Supplier) UNBOUND; + public static Supplier EMPEROR_SCORPION_ATTACK = (Supplier) UNBOUND; + public static Supplier EMPEROR_SCORPION_ROAR = (Supplier) UNBOUND; + public static Supplier MOLEWORM_AMBIENT = (Supplier) UNBOUND; + public static Supplier MOLEWORM_HURT = (Supplier) UNBOUND; + public static Supplier MOLEWORM_ATTACK = (Supplier) UNBOUND; + public static Supplier MOLEWORM_DIG = (Supplier) UNBOUND; + public static Supplier MOLEVORE_AMBIENT = (Supplier) UNBOUND; + public static Supplier MOLEVORE_HURT = (Supplier) UNBOUND; + public static Supplier MOLEVORE_ATTACK = (Supplier) UNBOUND; + public static Supplier MOLEVORE_DIG = (Supplier) UNBOUND; + public static Supplier DUCT_TAPE_USE = (Supplier) UNBOUND; + + private AntarchySoundEvents() { + } + + public static void bind( + Supplier squidzookaFire, + Supplier shrinkRaySound, + Supplier growthRaySound, + Supplier sizeRayCharge, + Supplier antAmbient, + Supplier antIdle, + Supplier antHurt, + Supplier antBite, + Supplier antGather, + Supplier antNest, + Supplier cloudSharkBite, + Supplier cloudSharkIdle, + Supplier cloudSharkHurt, + Supplier cloudSharkDeath, + Supplier cloudSharkFly, + Supplier caterpillarIdle, + Supplier caterpillarHurt, + Supplier caterpillarCrawl, + Supplier butterflyHurt, + Supplier brutalflyIdle, + Supplier brutalflyDeath, + Supplier elythiaFireflyAmbient, + Supplier missileSquidAmbient, + Supplier missileSquidHurt, + Supplier missileSquidDeath, + Supplier missileSquidAttack, + Supplier krakenFlyingLoop, + Supplier krakenFlyingSidewaysLoop, + Supplier krakenAttack, + Supplier krakenSpin, + Supplier krakenRoar, + Supplier krakenSummon, + Supplier krakenHurt, + Supplier krakenDeath, + Supplier basiliskIdleLoop, + Supplier basiliskSlitherLoop, + Supplier basiliskBite, + Supplier basiliskHiss, + Supplier basiliskHurt, + Supplier basiliskDeath, + Supplier thoraxisNightmareWastesAmbient, + Supplier thoraxisNightmareWastesAdditions, + Supplier thoraxisNightmareWastesMood, + Supplier thoraxisDreamDunesAmbient, + Supplier thoraxisDreamDunesAdditions, + Supplier thoraxisDreamDunesMood, + Supplier thoraxisLucidPoolsAmbient, + Supplier thoraxisLucidPoolsAdditions, + Supplier thoraxisLucidPoolsMood, + Supplier lucidAmbient, + Supplier lucidFlying, + Supplier lucidAttack, + Supplier lucidBoltSound, + Supplier lucidHurt, + Supplier lucidDeath, + Supplier reverieIdle, + Supplier reverieHurt, + Supplier reverieWorry, + Supplier reverieSave, + Supplier reverieJoinPlayer, + Supplier reverieAlert, + Supplier flyingSquirrelIdle, + Supplier flyingSquirrelBeg, + Supplier flyingSquirrelNut, + Supplier flyingSquirrelGlideLoop, + Supplier flyingSquirrelHurt, + Supplier flyingSquirrelDeath, + Supplier nightmareIdle, + Supplier nightmareHurt, + Supplier nightmareRoar, + Supplier nightmareDeath, + Supplier nightmareBite, + Supplier nightmareFlap, + Supplier triffidAttack, + Supplier triffidGrab, + Supplier triffidHurt, + Supplier triffidDeath, + Supplier triffidHiss, + Supplier triffidGrowl, + Supplier mantisAmbient, + Supplier mantisHurt, + Supplier mantisAttack, + Supplier mantisFlyLoop, + Supplier gravityGunPickup, + Supplier gravityGunDrop, + Supplier gravityGunHoldLoop, + Supplier gravityGunLaunch, + Supplier gravityGunDryfire, + Supplier bedBugAmbient, + Supplier bedBugHurt, + Supplier bedBugAttack, + Supplier waspIdle, + Supplier waspHurt, + Supplier waspAttack, + Supplier waspDeath, + Supplier scorpionAmbient, + Supplier scorpionHurt, + Supplier scorpionAttack, + Supplier emperorScorpionAmbient, + Supplier emperorScorpionHurt, + Supplier emperorScorpionAttack, + Supplier emperorScorpionRoar, + Supplier molewormAmbient, + Supplier molewormHurt, + Supplier molewormAttack, + Supplier molewormDig, + Supplier molevoreAmbient, + Supplier molevoreHurt, + Supplier molevoreAttack, + Supplier molevoreDig, + Supplier ductTapeUse + ) { + SQUIDZOOKA_FIRE = squidzookaFire; + SHRINK_RAY_SOUND = shrinkRaySound; + GROWTH_RAY_SOUND = growthRaySound; + SIZE_RAY_CHARGE = sizeRayCharge; + ANT_AMBIENT = antAmbient; + ANT_IDLE = antIdle; + ANT_HURT = antHurt; + ANT_BITE = antBite; + ANT_GATHER = antGather; + ANT_NEST = antNest; + CLOUD_SHARK_BITE = cloudSharkBite; + CLOUD_SHARK_IDLE = cloudSharkIdle; + CLOUD_SHARK_HURT = cloudSharkHurt; + CLOUD_SHARK_DEATH = cloudSharkDeath; + CLOUD_SHARK_FLY = cloudSharkFly; + CATERPILLAR_IDLE = caterpillarIdle; + CATERPILLAR_HURT = caterpillarHurt; + CATERPILLAR_CRAWL = caterpillarCrawl; + BUTTERFLY_HURT = butterflyHurt; + BRUTALFLY_IDLE = brutalflyIdle; + BRUTALFLY_DEATH = brutalflyDeath; + ELYTHIA_FIREFLY_AMBIENT = elythiaFireflyAmbient; + MISSILE_SQUID_AMBIENT = missileSquidAmbient; + MISSILE_SQUID_HURT = missileSquidHurt; + MISSILE_SQUID_DEATH = missileSquidDeath; + MISSILE_SQUID_ATTACK = missileSquidAttack; + KRAKEN_FLYING_LOOP = krakenFlyingLoop; + KRAKEN_FLYING_SIDEWAYS_LOOP = krakenFlyingSidewaysLoop; + KRAKEN_ATTACK = krakenAttack; + KRAKEN_SPIN = krakenSpin; + KRAKEN_ROAR = krakenRoar; + KRAKEN_SUMMON = krakenSummon; + KRAKEN_HURT = krakenHurt; + KRAKEN_DEATH = krakenDeath; + BASILISK_IDLE_LOOP = basiliskIdleLoop; + BASILISK_SLITHER_LOOP = basiliskSlitherLoop; + BASILISK_BITE = basiliskBite; + BASILISK_HISS = basiliskHiss; + BASILISK_HURT = basiliskHurt; + BASILISK_DEATH = basiliskDeath; + THORAXIS_NIGHTMARE_WASTES_AMBIENT = thoraxisNightmareWastesAmbient; + THORAXIS_NIGHTMARE_WASTES_ADDITIONS = thoraxisNightmareWastesAdditions; + THORAXIS_NIGHTMARE_WASTES_MOOD = thoraxisNightmareWastesMood; + THORAXIS_DREAM_DUNES_AMBIENT = thoraxisDreamDunesAmbient; + THORAXIS_DREAM_DUNES_ADDITIONS = thoraxisDreamDunesAdditions; + THORAXIS_DREAM_DUNES_MOOD = thoraxisDreamDunesMood; + THORAXIS_LUCID_POOLS_AMBIENT = thoraxisLucidPoolsAmbient; + THORAXIS_LUCID_POOLS_ADDITIONS = thoraxisLucidPoolsAdditions; + THORAXIS_LUCID_POOLS_MOOD = thoraxisLucidPoolsMood; + LUCID_AMBIENT = lucidAmbient; + LUCID_FLYING = lucidFlying; + LUCID_ATTACK = lucidAttack; + LUCID_BOLT_SOUND = lucidBoltSound; + LUCID_HURT = lucidHurt; + LUCID_DEATH = lucidDeath; + REVERIE_IDLE = reverieIdle; + REVERIE_HURT = reverieHurt; + REVERIE_WORRY = reverieWorry; + REVERIE_SAVE = reverieSave; + REVERIE_JOIN_PLAYER = reverieJoinPlayer; + REVERIE_ALERT = reverieAlert; + FLYING_SQUIRREL_IDLE = flyingSquirrelIdle; + FLYING_SQUIRREL_BEG = flyingSquirrelBeg; + FLYING_SQUIRREL_NUT = flyingSquirrelNut; + FLYING_SQUIRREL_GLIDE_LOOP = flyingSquirrelGlideLoop; + FLYING_SQUIRREL_HURT = flyingSquirrelHurt; + FLYING_SQUIRREL_DEATH = flyingSquirrelDeath; + NIGHTMARE_IDLE = nightmareIdle; + NIGHTMARE_HURT = nightmareHurt; + NIGHTMARE_ROAR = nightmareRoar; + NIGHTMARE_DEATH = nightmareDeath; + NIGHTMARE_BITE = nightmareBite; + NIGHTMARE_FLAP = nightmareFlap; + TRIFFID_ATTACK = triffidAttack; + TRIFFID_GRAB = triffidGrab; + TRIFFID_HURT = triffidHurt; + TRIFFID_DEATH = triffidDeath; + TRIFFID_HISS = triffidHiss; + TRIFFID_GROWL = triffidGrowl; + MANTIS_AMBIENT = mantisAmbient; + MANTIS_HURT = mantisHurt; + MANTIS_ATTACK = mantisAttack; + MANTIS_FLY_LOOP = mantisFlyLoop; + GRAVITY_GUN_PICKUP = gravityGunPickup; + GRAVITY_GUN_DROP = gravityGunDrop; + GRAVITY_GUN_HOLD_LOOP = gravityGunHoldLoop; + GRAVITY_GUN_LAUNCH = gravityGunLaunch; + GRAVITY_GUN_DRYFIRE = gravityGunDryfire; + BED_BUG_AMBIENT = bedBugAmbient; + BED_BUG_HURT = bedBugHurt; + BED_BUG_ATTACK = bedBugAttack; + WASP_IDLE = waspIdle; + WASP_HURT = waspHurt; + WASP_ATTACK = waspAttack; + WASP_DEATH = waspDeath; + SCORPION_AMBIENT = scorpionAmbient; + SCORPION_HURT = scorpionHurt; + SCORPION_ATTACK = scorpionAttack; + EMPEROR_SCORPION_AMBIENT = emperorScorpionAmbient; + EMPEROR_SCORPION_HURT = emperorScorpionHurt; + EMPEROR_SCORPION_ATTACK = emperorScorpionAttack; + EMPEROR_SCORPION_ROAR = emperorScorpionRoar; + MOLEWORM_AMBIENT = molewormAmbient; + MOLEWORM_HURT = molewormHurt; + MOLEWORM_ATTACK = molewormAttack; + MOLEWORM_DIG = molewormDig; + MOLEVORE_AMBIENT = molevoreAmbient; + MOLEVORE_HURT = molevoreHurt; + MOLEVORE_ATTACK = molevoreAttack; + MOLEVORE_DIG = molevoreDig; + DUCT_TAPE_USE = ductTapeUse; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java new file mode 100644 index 00000000..d7e170f6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java @@ -0,0 +1,101 @@ +package com.craisinlord.antarchy.content; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.biome.Biome; + +public final class AntarchyTags { + private AntarchyTags() { + } + + private static ResourceLocation id(String path) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path); + } + + public static final class Blocks { + public static final TagKey DUPLICATOR_TREE_BLACKLIST = TagKey.create(Registries.BLOCK, id("duplicator_tree_blacklist")); + public static final TagKey GRAVITY_GUN_BLACKLIST = TagKey.create(Registries.BLOCK, id("gravity_gun_blacklist")); + public static final TagKey DREAM_FIRE_BASE_BLOCKS = TagKey.create(Registries.BLOCK, id("dream_fire_base_blocks")); + public static final TagKey POTENT_NYXITE_ACTIVATION_BLOCKS = TagKey.create(Registries.BLOCK, id("potent_nyxite_activation_blocks")); + public static final TagKey CORNEA_STALK_PLANTABLE = TagKey.create(Registries.BLOCK, id("cornea_stalk_plantable")); + public static final TagKey MOLEVORE_BREAKABLE_BLOCKS = TagKey.create(Registries.BLOCK, id("molevore_breakable_blocks")); + public static final TagKey NIGHTMARE_BREAKABLE = TagKey.create(Registries.BLOCK, id("nightmare_breakable")); + public static final TagKey MOLEVORE_SEE_THROUGH_BLOCKS = TagKey.create(Registries.BLOCK, id("molevore_see_through_blocks")); + public static final TagKey TERMITE_FOODS = TagKey.create(Registries.BLOCK, id("termite_foods")); + public static final TagKey UMBRAL_MOSS_REPLACEABLE = TagKey.create(Registries.BLOCK, id("umbral_moss_replaceable")); + + private Blocks() { + } + } + + public static final class DamageType { + public static final TagKey BYPASSES_BLOODGLASS = + TagKey.create(net.minecraft.core.registries.Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath("antarchy", "bypasses_bloodglass")); + + private DamageType() { + } + } + + public static final class Entities { + public static final TagKey> BASILISK_PREY = TagKey.create(Registries.ENTITY_TYPE, id("basilisk_prey")); + public static final TagKey> DREAM_SAND_LOW_GRAVITY_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("dream_sand_low_gravity_blacklist")); + public static final TagKey> GRAVITY_GUN_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("gravity_gun_blacklist")); + public static final TagKey> INVERTED_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("inverted_immune")); + public static final TagKey> LUCID_BOLT_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("lucid_bolt_immune")); + public static final TagKey> DUCT_TAPE_STICK_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("duct_tape_stick_blacklist")); + public static final TagKey> NIGHTMARE_NO_ATTACK = TagKey.create(Registries.ENTITY_TYPE, id("nightmare_no_attack")); + public static final TagKey> SIZE_CHANGING_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("size_changing_immune")); + public static final TagKey> PARALYSIS_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("paralysis_immune")); + public static final TagKey> HUSHWEED_TARGETS = TagKey.create(Registries.ENTITY_TYPE, id("hushweed_targets")); + public static final TagKey> TRIFFID_PREY = TagKey.create(Registries.ENTITY_TYPE, id("triffid_prey")); + public static final TagKey> SCORPION_WHIP_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("scorpion_whip_immune")); + public static final TagKey> SCORPION_WHIP_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("scorpion_whip_blacklist")); + + private Entities() { + } + } + + public static final class SoundEvents { + + public static final TagKey DREAD_HALLUCINATION_SOUNDS = TagKey.create(Registries.SOUND_EVENT, id("dread_hallucination_sounds")); + + private SoundEvents() { + } + } + + public static final class Items { + public static final TagKey EASTER_BUNNY_SPAWN_EGG_BLACKLIST = TagKey.create(Registries.ITEM, id("easter_bunny_spawn_egg_blacklist")); + public static final TagKey DUCT_TAPE_BLACKLIST = TagKey.create(Registries.ITEM, id("duct_tape_blacklist")); + public static final TagKey BROWN_ANT_ACTIVATION_ITEMS = TagKey.create(Registries.ITEM, id("brown_ant_activation_items")); + public static final TagKey BROWN_ANT_BREEDING_FOODS = TagKey.create(Registries.ITEM, id("brown_ant_breeding_foods")); + public static final TagKey RED_ANT_ACTIVATION_ITEMS = TagKey.create(Registries.ITEM, id("red_ant_activation_items")); + public static final TagKey RED_ANT_BREEDING_FOODS = TagKey.create(Registries.ITEM, id("red_ant_breeding_foods")); + public static final TagKey RAINBOW_ANT_ACTIVATION_ITEMS = TagKey.create(Registries.ITEM, id("rainbow_ant_activation_items")); + public static final TagKey RAINBOW_ANT_BREEDING_FOODS = TagKey.create(Registries.ITEM, id("rainbow_ant_breeding_foods")); + public static final TagKey TERMITE_ACTIVATION_ITEMS = TagKey.create(Registries.ITEM, id("termite_activation_items")); + public static final TagKey TERMITE_FOODS = TagKey.create(Registries.ITEM, id("termite_foods")); + public static final TagKey TERMITE_BREEDING_FOODS = TagKey.create(Registries.ITEM, id("termite_breeding_foods")); + public static final TagKey FLYING_SQUIRREL_NUTS = TagKey.create(Registries.ITEM, id("flying_squirrel_nuts")); + public static final TagKey CATERPILLAR_FOODS = TagKey.create(Registries.ITEM, id("caterpillar_foods")); + public static final TagKey BUTTERFLY_BREEDING_FOODS = TagKey.create(Registries.ITEM, id("butterfly_breeding_foods")); + public static final TagKey REVERIE_DUPLICATION_ITEMS = TagKey.create(Registries.ITEM, id("reverie_duplication_items")); + + private Items() { + } + } + + public static final class Biomes { + public static final TagKey MANTIS_SPAWN_BIOMES = TagKey.create(Registries.BIOME, id("mantis_spawn_biomes")); + public static final TagKey MANTIS_OVERWORLD_SPAWN_BIOMES = TagKey.create(Registries.BIOME, id("mantis_overworld_spawn_biomes")); + + private Biomes() { + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/SizeRayDispenseBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/SizeRayDispenseBehavior.java new file mode 100644 index 00000000..b5f6eb97 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/SizeRayDispenseBehavior.java @@ -0,0 +1,42 @@ +package com.craisinlord.antarchy.content; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import net.minecraft.core.Direction; +import net.minecraft.core.Position; +import net.minecraft.core.dispenser.BlockSource; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.DispenserBlock; + +public class SizeRayDispenseBehavior extends DefaultDispenseItemBehavior { + @Override + protected ItemStack execute(BlockSource source, ItemStack stack) { + if (!AntarchySettings.sizeChangingRaysEnabled()) { + return super.execute(source, stack); + } + + if (!(stack.getItem() instanceof SizeRayItem sizeRayItem)) { + return super.execute(source, stack); + } + + Direction direction = source.state().getValue(DispenserBlock.FACING); + Position position = DispenserBlock.getDispensePosition(source); + SizeRayProjectileEntity projectile = sizeRayItem.createProjectile(source.level(), stack); + projectile.setPos(position.x(), position.y(), position.z()); + projectile.shoot(direction.getStepX(), direction.getStepY() + 0.1D, direction.getStepZ(), 1.6F, 0.0F); + source.level().addFreshEntity(projectile); + if (stack.isDamageableItem()) { + int nextDamage = stack.getDamageValue() + 1; + if (nextDamage >= stack.getMaxDamage()) { + stack.shrink(1); + } else { + stack.setDamageValue(nextDamage); + } + } else { + stack.shrink(1); + } + return stack; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/AntNestBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/AntNestBlock.java new file mode 100644 index 00000000..783e96de --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/AntNestBlock.java @@ -0,0 +1,191 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.mojang.serialization.MapCodec; +import java.util.List; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.Registries; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.item.context.BlockPlaceContext; + +public class AntNestBlock extends BaseEntityBlock { + public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + private final Supplier>> antTypesSupplier; + private final Supplier> blockEntityTypeSupplier; + private final int maxOccupants; + private final boolean populateInitialAnts; + private final boolean damageSteppers; + private final MapCodec codec; + + public AntNestBlock( + Supplier> antTypeSupplier, + Supplier> blockEntityTypeSupplier, + BlockBehaviour.Properties properties + ) { + this(() -> List.of(antTypeSupplier.get()), blockEntityTypeSupplier, 7, true, false, properties); + } + + public AntNestBlock( + Supplier> antTypeSupplier, + Supplier> blockEntityTypeSupplier, + boolean damageSteppers, + BlockBehaviour.Properties properties + ) { + this(() -> List.of(antTypeSupplier.get()), blockEntityTypeSupplier, 7, true, damageSteppers, properties); + } + + public AntNestBlock( + Supplier>> antTypesSupplier, + Supplier> blockEntityTypeSupplier, + int maxOccupants, + boolean populateInitialAnts, + boolean damageSteppers, + BlockBehaviour.Properties properties + ) { + super(properties); + this.antTypesSupplier = antTypesSupplier; + this.blockEntityTypeSupplier = blockEntityTypeSupplier; + this.maxOccupants = maxOccupants; + this.populateInitialAnts = populateInitialAnts; + this.damageSteppers = damageSteppers; + this.codec = Block.simpleCodec(ignored -> this); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new AntNestBlockEntity(pos, state); + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { + return level.isClientSide + ? null + : createTickerHelper(blockEntityType, this.blockEntityTypeSupplier.get(), + (tickLevel, tickPos, tickState, nest) -> { + if (tickLevel instanceof ServerLevel serverLevel) { + AntNestBlockEntity.serverTick(serverLevel, tickPos, tickState, nest); + } + }); + } + + @Override + public void setPlacedBy(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.LivingEntity placer, ItemStack stack) { + super.setPlacedBy(level, pos, state, placer, stack); + if (!level.isClientSide && this.populateInitialAnts && level.getBlockEntity(pos) instanceof AntNestBlockEntity nestBlockEntity) { + nestBlockEntity.populateInitialAnts((ServerLevel) level); + } + } + + @Override + public ItemStack getCloneItemStack(net.minecraft.world.level.LevelReader level, BlockPos pos, BlockState state) { + ItemStack stack = super.getCloneItemStack(level, pos, state); + if (level instanceof Level actualLevel && actualLevel.getBlockEntity(pos) instanceof AntNestBlockEntity nestBlockEntity) { + BlockItem.setBlockEntityData(stack, AntarchyObjects.ANT_NEST_BLOCK_ENTITY.get(), nestBlockEntity.saveWithoutMetadata(actualLevel.registryAccess())); + } + return stack; + } + + @Override + public void playerDestroy(Level level, Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) { + var silkTouch = level.registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.SILK_TOUCH); + boolean hasSilkTouch = EnchantmentHelper.getItemEnchantmentLevel(silkTouch, stack) > 0; + ItemStack droppedNest = hasSilkTouch ? this.getCloneItemStack(level, pos, state) : ItemStack.EMPTY; + + super.playerDestroy(level, player, pos, state, blockEntity, stack); + + if (hasSilkTouch) { + if (!droppedNest.isEmpty() && level instanceof ServerLevel serverLevel) { + Block.popResource(serverLevel, pos, droppedNest); + } + return; + } + + if (blockEntity instanceof AntNestBlockEntity nestBlockEntity && level instanceof ServerLevel serverLevel) { + nestBlockEntity.releaseAll(serverLevel); + } + } + + @Override + public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { + if (this.damageSteppers && entity instanceof LivingEntity && !entity.isSteppingCarefully()) { + entity.hurt(level.damageSources().hotFloor(), 1.0F); + } + + super.stepOn(level, pos, state, entity); + } + + public boolean canAccept(EntityType antType) { + for (EntityType supportedType : this.antTypes()) { + if (supportedType == antType) { + return true; + } + } + return false; + } + + public int maxOccupants() { + return this.maxOccupants; + } + + public boolean shouldPopulateInitialAnts() { + return this.populateInitialAnts; + } + + public EntityType initialAntType(RandomSource random) { + List> antTypes = this.antTypes(); + if (antTypes.isEmpty()) { + throw new IllegalStateException("Ant nest block must declare at least one supported ant type"); + } + return antTypes.get(random.nextInt(antTypes.size())); + } + + private List> antTypes() { + return this.antTypesSupplier.get(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java new file mode 100644 index 00000000..9f3f7cc7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.world.level.block.ScaffoldingBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; + +public class AntimetalScaffoldingBlock extends ScaffoldingBlock { + + public static final MapCodec CODEC = simpleCodec(AntimetalScaffoldingBlock::new); + +// @Override +// public MapCodec codec() { return CODEC; } + + public AntimetalScaffoldingBlock(BlockBehaviour.Properties properties) { + super(properties); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java new file mode 100644 index 00000000..c1be1778 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java @@ -0,0 +1,208 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.entity.ambient.Bat; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class BedBugEggBlock extends Block { + public static final MapCodec CODEC = Block.simpleCodec(BedBugEggBlock::new); + public static final IntegerProperty HATCH = BlockStateProperties.HATCH; + public static final IntegerProperty EGGS = BlockStateProperties.EGGS; + private static final int MAX_HATCH = 2; + private static final int MAX_EGGS = 4; + private static final VoxelShape SINGLE_SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 7.0D, 13.0D); + private static final VoxelShape MULTI_SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 7.0D, 15.0D); + + public BedBugEggBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HATCH, 0).setValue(EGGS, 1)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return state.getValue(EGGS) > 1 ? MULTI_SHAPE : SINGLE_SHAPE; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); + } + + @Override + protected boolean canBeReplaced(BlockState state, BlockPlaceContext context) { + return !context.isSecondaryUseActive() + && context.getItemInHand().is(this.asItem()) + && state.getValue(EGGS) < MAX_EGGS; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + BlockState existingState = context.getLevel().getBlockState(context.getClickedPos()); + if (existingState.is(this)) { + return existingState.setValue(EGGS, Math.min(MAX_EGGS, existingState.getValue(EGGS) + 1)); + } + + return this.defaultBlockState(); + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return true; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (!this.shouldUpdateHatchLevel(level) || !hasHatchSupport(level, pos)) { + return; + } + + int hatch = state.getValue(HATCH); + if (hatch < MAX_HATCH) { + level.setBlock(pos, state.setValue(HATCH, hatch + 1), 2); + level.playSound(null, pos, SoundEvents.TURTLE_EGG_CRACK, SoundSource.BLOCKS, 0.7F, 0.95F + random.nextFloat() * 0.1F); + return; + } + + this.hatchEggs(level, pos, state, random); + } + + @Override + public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { + if (!entity.isSteppingCarefully()) { + this.destroyEgg(level, state, pos, entity, 100); + } + super.stepOn(level, pos, state, entity); + } + + @Override + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + if (!(entity instanceof Zombie)) { + this.destroyEgg(level, state, pos, entity, 3); + } + super.fallOn(level, state, pos, entity, fallDistance); + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) { + if (hasHatchSupport(level, pos) && !level.isClientSide) { + level.levelEvent(2012, pos, 15); + } + } + + @Override + public void playerDestroy(Level level, Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, net.minecraft.world.item.ItemStack stack) { + super.playerDestroy(level, player, pos, state, blockEntity, stack); + this.decreaseEggs(level, pos, state); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(HATCH, EGGS); + } + + public static boolean hasHatchSupport(BlockGetter level, BlockPos pos) { + return isSupportedGround(level, pos.below()); + } + + public static boolean isSupportedGround(BlockGetter level, BlockPos pos) { + return level.getBlockState(pos).is(BlockTags.SAND) || level.getBlockState(pos).blocksMotion(); + } + + private void destroyEgg(Level level, BlockState state, BlockPos pos, Entity entity, int chance) { + if (level.isClientSide || !this.canDestroyEgg(level, entity) || level.random.nextInt(chance) != 0) { + return; + } + + level.playSound(null, pos, SoundEvents.TURTLE_EGG_BREAK, SoundSource.BLOCKS, 0.7F, 0.9F + level.random.nextFloat() * 0.2F); + this.decreaseEggs(level, pos, state); + } + + private void hatchEggs(ServerLevel level, BlockPos pos, BlockState state, RandomSource random) { + level.removeBlock(pos, false); + level.playSound(null, pos, SoundEvents.TURTLE_EGG_HATCH, SoundSource.BLOCKS, 0.75F, 0.95F + random.nextFloat() * 0.1F); + + for (int i = 0; i < state.getValue(EGGS); i++) { + BedBugEntity bedBug = AntarchyObjects.BED_BUG.get().create(level); + if (bedBug == null) { + continue; + } + + bedBug.setAge(-24000); + bedBug.setHomeEggPos(pos); + double spawnX = pos.getX() + 0.25D + random.nextDouble() * 0.5D; + double spawnZ = pos.getZ() + 0.25D + random.nextDouble() * 0.5D; + bedBug.moveTo(spawnX, pos.getY() + 0.1D, spawnZ, random.nextFloat() * 360.0F, 0.0F); + level.addFreshEntity(bedBug); + } + } + + private void decreaseEggs(Level level, BlockPos pos, BlockState state) { + int eggs = state.getValue(EGGS); + if (eggs <= 1) { + level.destroyBlock(pos, false); + return; + } + + level.setBlock(pos, state.setValue(EGGS, eggs - 1), 2); + } + + private boolean shouldUpdateHatchLevel(Level level) { + return level.random.nextInt(500) == 0; + } + + private boolean canDestroyEgg(Level level, Entity entity) { + if (entity instanceof BedBugEntity || entity instanceof Bat) { + return false; + } + + if (entity instanceof net.minecraft.world.entity.LivingEntity) { + return entity instanceof Player || level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + } + + return false; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BloodCrystalGrowthBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BloodCrystalGrowthBlock.java new file mode 100644 index 00000000..9848c762 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BloodCrystalGrowthBlock.java @@ -0,0 +1,84 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.AmethystClusterBlock; +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.BlockStateProperties; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; + +import java.util.function.Supplier; + +public class BloodCrystalGrowthBlock extends Block { + private static final Direction[] DIRECTIONS = Direction.values(); + + private final Supplier smallBud; + private final Supplier mediumBud; + private final Supplier largeBud; + private final Supplier cluster; + + public BloodCrystalGrowthBlock( + Properties properties, + Supplier smallBud, + Supplier mediumBud, + Supplier largeBud, + Supplier cluster + ) { + super(properties); + this.smallBud = smallBud; + this.mediumBud = mediumBud; + this.largeBud = largeBud; + this.cluster = cluster; + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return !state.is(this.cluster.get()); + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (random.nextInt(5) != 0) { + return; + } + + Direction direction = DIRECTIONS[random.nextInt(DIRECTIONS.length)]; + BlockPos targetPos = pos.relative(direction); + BlockState targetState = level.getBlockState(targetPos); + Block nextBlock = null; + + if (canGrowInto(targetState)) { + nextBlock = this.smallBud.get(); + } else if (isStage(targetState, this.smallBud.get(), direction)) { + nextBlock = this.mediumBud.get(); + } else if (isStage(targetState, this.mediumBud.get(), direction)) { + nextBlock = this.largeBud.get(); + } else if (isStage(targetState, this.largeBud.get(), direction)) { + nextBlock = this.cluster.get(); + } + + if (nextBlock == null) { + return; + } + + FluidState fluidState = targetState.getFluidState(); + BlockState nextState = nextBlock.defaultBlockState() + .setValue(AmethystClusterBlock.FACING, direction) + .setValue(BlockStateProperties.WATERLOGGED, fluidState.getType() == Fluids.WATER && fluidState.getAmount() == 8); + level.setBlockAndUpdate(targetPos, nextState); + } + + private static boolean canGrowInto(BlockState state) { + return state.isAir() || state.is(Blocks.WATER) && state.getFluidState().getAmount() == 8; + } + + private static boolean isStage(BlockState state, Block block, Direction direction) { + return state.is(block) && state.hasProperty(AmethystClusterBlock.FACING) && state.getValue(AmethystClusterBlock.FACING) == direction; + } +} + diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BuddingBloodCrystalBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BuddingBloodCrystalBlock.java new file mode 100644 index 00000000..73d90bc8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BuddingBloodCrystalBlock.java @@ -0,0 +1,84 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.AmethystClusterBlock; +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.BlockStateProperties; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; + +import java.util.function.Supplier; + +public class BuddingBloodCrystalBlock extends Block { + private static final Direction[] DIRECTIONS = Direction.values(); + + private final Supplier smallBud; + private final Supplier mediumBud; + private final Supplier largeBud; + private final Supplier crystal; + + public BuddingBloodCrystalBlock( + Properties properties, + Supplier smallBud, + Supplier mediumBud, + Supplier largeBud, + Supplier crystal + ) { + super(properties); + this.smallBud = smallBud; + this.mediumBud = mediumBud; + this.largeBud = largeBud; + this.crystal = crystal; + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return true; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (random.nextInt(5) != 0) { + return; + } + + Direction direction = DIRECTIONS[random.nextInt(DIRECTIONS.length)]; + BlockPos targetPos = pos.relative(direction); + BlockState targetState = level.getBlockState(targetPos); + Block nextBlock = null; + + if (canGrowInto(targetState)) { + nextBlock = this.smallBud.get(); + } else if (isStage(targetState, this.smallBud.get(), direction)) { + nextBlock = this.mediumBud.get(); + } else if (isStage(targetState, this.mediumBud.get(), direction)) { + nextBlock = this.largeBud.get(); + } else if (isStage(targetState, this.largeBud.get(), direction)) { + nextBlock = this.crystal.get(); + } + + if (nextBlock == null) { + return; + } + + FluidState fluidState = targetState.getFluidState(); + BlockState nextState = nextBlock.defaultBlockState() + .setValue(AmethystClusterBlock.FACING, direction) + .setValue(BlockStateProperties.WATERLOGGED, fluidState.getType() == Fluids.WATER && fluidState.getAmount() == 8); + level.setBlockAndUpdate(targetPos, nextState); + } + + private static boolean canGrowInto(BlockState state) { + return state.isAir() || state.is(Blocks.WATER) && state.getFluidState().getAmount() == 8; + } + + private static boolean isStage(BlockState state, Block block, Direction direction) { + return state.is(block) && state.hasProperty(AmethystClusterBlock.FACING) && state.getValue(AmethystClusterBlock.FACING) == direction; + } +} + diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/CloudBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/CloudBlock.java new file mode 100644 index 00000000..a9f42662 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/CloudBlock.java @@ -0,0 +1,86 @@ +package com.craisinlord.antarchy.content.block; + +import java.util.Optional; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.BucketPickup; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.EntityCollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; + +public final class CloudBlock extends Block implements BucketPickup { + private static final VoxelShape EMPTY = Shapes.empty(); + + private final Supplier bucketItem; + + public CloudBlock(Supplier bucketItem, BlockBehaviour.Properties properties) { + super(properties); + this.bucketItem = bucketItem; + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + if (context instanceof EntityCollisionContext ecc) { + Entity entity = ecc.getEntity(); + if (entity instanceof net.minecraft.world.entity.LivingEntity le && le.isShiftKeyDown()) { + return EMPTY; + } + } + return Shapes.block(); + } + + @Override + protected VoxelShape getVisualShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return EMPTY; + } + + @Override + protected boolean skipRendering(BlockState state, BlockState adjacentBlockState, Direction side) { + return adjacentBlockState.is(this) || super.skipRendering(state, adjacentBlockState, side); + } + + @Override + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + entity.causeFallDamage(fallDistance, 0.0F, level.damageSources().fall()); + } + + public void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + Vec3 motion = entity.getDeltaMovement(); + double slowedY = motion.y < 0.0D ? Math.max(motion.y * 0.4D, -0.08D) : motion.y; + entity.setDeltaMovement(motion.x * 0.92D, slowedY, motion.z * 0.92D); + entity.fallDistance = 0.0F; + } + + public ItemStack pickupBlock(@Nullable Player player, LevelAccessor level, BlockPos pos, BlockState state) { + level.setBlock(pos, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(), 11); + return new ItemStack(bucketItem.get()); + } + + @Override + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { + return new ItemStack(bucketItem.get()); + } + + @Override + public Optional getPickupSound() { + return Optional.of(SoundEvents.BUCKET_FILL); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/CorneaStalkBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/CorneaStalkBlock.java new file mode 100644 index 00000000..26047442 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/CorneaStalkBlock.java @@ -0,0 +1,184 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; +import com.mojang.serialization.MapCodec; +import java.util.Optional; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; +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.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraft.world.item.Item; +import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.core.registries.Registries; + +public class CorneaStalkBlock extends BushBlock implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(CorneaStalkBlock::new); + public static final IntegerProperty AGE = BlockStateProperties.AGE_3; + public static final BooleanProperty HANGING = BlockStateProperties.HANGING; + private static final int MAX_AGE = 3; + private static final int RIPE_AGE = 2; + private static final VoxelShape[] FLOOR_SHAPES = new VoxelShape[] { + Block.box(5.0D, 0.0D, 5.0D, 11.0D, 7.0D, 11.0D), + Block.box(4.0D, 0.0D, 4.0D, 12.0D, 10.0D, 12.0D), + Block.box(3.0D, 0.0D, 3.0D, 13.0D, 13.0D, 13.0D), + Block.box(2.5D, 0.0D, 2.5D, 13.5D, 14.5D, 13.5D) + }; + private static final VoxelShape[] HANGING_SHAPES = new VoxelShape[] { + Block.box(5.0D, 9.0D, 5.0D, 11.0D, 16.0D, 11.0D), + Block.box(4.0D, 6.0D, 4.0D, 12.0D, 16.0D, 12.0D), + Block.box(3.0D, 3.0D, 3.0D, 13.0D, 16.0D, 13.0D), + Block.box(2.5D, 1.5D, 2.5D, 13.5D, 16.0D, 13.5D) + }; + private static final ResourceLocation CORNEA_EAR_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "cornea_ear"); + + public CorneaStalkBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(AGE, 0).setValue(HANGING, false)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return state.getValue(HANGING) ? HANGING_SHAPES[state.getValue(AGE)] : FLOOR_SHAPES[state.getValue(AGE)]; + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + return state.is(AntarchyTags.Blocks.CORNEA_STALK_PLANTABLE); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + BlockPos supportPos = state.getValue(HANGING) ? pos.above() : pos.below(); + return this.mayPlaceOn(level.getBlockState(supportPos), level, supportPos); + } + + @Override + protected BlockState updateShape(BlockState state, net.minecraft.core.Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return state.getValue(AGE) < MAX_AGE; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + int age = state.getValue(AGE); + if (age >= MAX_AGE) { + return; + } + + BlockPos growthEndPos = state.getValue(HANGING) ? pos.below() : pos.above(); + if (level.getMaxLocalRawBrightness(growthEndPos) >= 9 && random.nextInt(5) == 0) { + level.setBlock(pos, state.setValue(AGE, age + 1), Block.UPDATE_ALL); + } + } + + @Override + public void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + if (!level.isClientSide && state.getValue(AGE) > 0 && entity instanceof LivingEntity livingEntity && !livingEntity.isSteppingCarefully()) { + livingEntity.hurt(AntarchyDamageSources.corneaStalkPrick(level), 1.0F); + } + super.entityInside(state, level, pos, entity); + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return state.getValue(AGE) < MAX_AGE; + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return true; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + int age = state.getValue(AGE); + if (age < MAX_AGE) { + level.setBlock(pos, state.setValue(AGE, age + 1), Block.UPDATE_ALL); + } + } + + @Override + protected ItemInteractionResult useItemOn( + ItemStack stack, + BlockState state, + Level level, + BlockPos pos, + Player player, + net.minecraft.world.InteractionHand hand, + net.minecraft.world.phys.BlockHitResult hitResult + ) { + if (!state.is(this) || state.getValue(AGE) < RIPE_AGE) { + return super.useItemOn(stack, state, level, pos, player, hand, hitResult); + } + + if (!level.isClientSide) { + this.dropCorneaFruit(level, pos, level.random); + level.setBlock(pos, state.setValue(AGE, 1), Block.UPDATE_ALL); + } + + return ItemInteractionResult.sidedSuccess(level.isClientSide); + } + + @Override + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { + return BuiltInRegistries.ITEM.getOptional(CORNEA_EAR_ID) + .map(ItemStack::new) + .orElseGet(() -> super.getCloneItemStack(level, pos, state)); + } + + @Override + public void playerDestroy(Level level, Player player, BlockPos pos, BlockState state, net.minecraft.world.level.block.entity.BlockEntity blockEntity, ItemStack stack) { + super.playerDestroy(level, player, pos, state, blockEntity, stack); + var silkTouch = level.registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.SILK_TOUCH); + if (EnchantmentHelper.getItemEnchantmentLevel(silkTouch, stack) > 0) { + return; + } + + if (state.getValue(AGE) >= RIPE_AGE && level instanceof ServerLevel serverLevel) { + this.dropCorneaFruit(serverLevel, pos, serverLevel.random); + } + } + + private void dropCorneaFruit(Level level, BlockPos pos, RandomSource random) { + Optional item = BuiltInRegistries.ITEM.getOptional(CORNEA_EAR_ID); + item.ifPresent(value -> Block.popResource(level, pos, new ItemStack(value, 1 + random.nextInt(2)))); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(AGE, HANGING); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java new file mode 100644 index 00000000..13e5723e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.CampfireBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.CampfireBlockEntity; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public class DreamCampfireBlock extends CampfireBlock { + @SuppressWarnings("rawtypes") + public static final MapCodec CODEC = (MapCodec) simpleCodec(DreamCampfireBlock::new); + + public DreamCampfireBlock(BlockBehaviour.Properties properties) { + super(false, 2, properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + DreamCampfireBlockEntity.beginConstruction(); + try { + return new DreamCampfireBlockEntity(pos, state); + } finally { + DreamCampfireBlockEntity.endConstruction(); + } + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { + BlockEntityType dreamCampfireType = AntarchyObjects.DREAM_CAMPFIRE_BLOCK_ENTITY.get(); + if (level.isClientSide) { + return state.getValue(LIT) + ? createTickerHelper(blockEntityType, dreamCampfireType, CampfireBlockEntity::particleTick) + : null; + } + return state.getValue(LIT) + ? createTickerHelper(blockEntityType, dreamCampfireType, CampfireBlockEntity::cookTick) + : createTickerHelper(blockEntityType, dreamCampfireType, CampfireBlockEntity::cooldownTick); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingFireBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingFireBlock.java new file mode 100644 index 00000000..da81e052 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingFireBlock.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyTags; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoulFireBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class DreamCeilingFireBlock extends SoulFireBlock { + private static final VoxelShape SHAPE = Block.box(2.0D, 12.0D, 2.0D, 14.0D, 16.0D, 14.0D); + + @SuppressWarnings("rawtypes") + public static final MapCodec CODEC = (MapCodec) simpleCodec(DreamCeilingFireBlock::new); + + public DreamCeilingFireBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return level.getBlockState(pos.above()).is(AntarchyTags.Blocks.DREAM_FIRE_BASE_BLOCKS); + } + + @Override + public VoxelShape getShape(BlockState state, net.minecraft.world.level.BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamFireBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamFireBlock.java new file mode 100644 index 00000000..3db3ff8d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamFireBlock.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyTags; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.SoulFireBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.LevelReader; + +public class DreamFireBlock extends SoulFireBlock { + @SuppressWarnings("rawtypes") + public static final MapCodec CODEC = (MapCodec) simpleCodec(DreamFireBlock::new); + + public DreamFireBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return level.getBlockState(pos.below()).is(AntarchyTags.Blocks.DREAM_FIRE_BASE_BLOCKS); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamSandBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamSandBlock.java new file mode 100644 index 00000000..c71fced0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamSandBlock.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.FallingBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; + +public class DreamSandBlock extends FallingBlock { + @SuppressWarnings("rawtypes") + public static final MapCodec CODEC = (MapCodec) simpleCodec(DreamSandBlock::new); + + public DreamSandBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + entity.causeFallDamage(fallDistance, 0.0F, level.damageSources().fall()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamTorchBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamTorchBlock.java new file mode 100644 index 00000000..01155baf --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamTorchBlock.java @@ -0,0 +1,36 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.TorchBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public class DreamTorchBlock extends TorchBlock { + private static final ResourceLocation DREAM_FIRE_FLAME_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_fire_flame"); + + public DreamTorchBlock(BlockBehaviour.Properties properties) { + super(ParticleTypes.SOUL_FIRE_FLAME, properties); + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + double x = pos.getX() + 0.5D; + double y = pos.getY() + 0.7D; + double z = pos.getZ() + 0.5D; + level.addParticle(ParticleTypes.SMOKE, x, y, z, 0.0D, 0.0D, 0.0D); + level.addParticle(getDreamFlameParticle(), x, y, z, 0.0D, 0.0D, 0.0D); + } + + private static ParticleOptions getDreamFlameParticle() { + return BuiltInRegistries.PARTICLE_TYPE.get(DREAM_FIRE_FLAME_ID) instanceof ParticleOptions particleOptions + ? particleOptions + : ParticleTypes.SOUL_FIRE_FLAME; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamWallTorchBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamWallTorchBlock.java new file mode 100644 index 00000000..f5da1f10 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamWallTorchBlock.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.WallTorchBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public class DreamWallTorchBlock extends WallTorchBlock { + private static final ResourceLocation DREAM_FIRE_FLAME_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_fire_flame"); + + public DreamWallTorchBlock(BlockBehaviour.Properties properties) { + super(ParticleTypes.SOUL_FIRE_FLAME, properties); + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + Direction direction = state.getValue(FACING).getOpposite(); + double x = pos.getX() + 0.5D + 0.27D * direction.getStepX(); + double y = pos.getY() + 0.92D; + double z = pos.getZ() + 0.5D + 0.27D * direction.getStepZ(); + level.addParticle(ParticleTypes.SMOKE, x, y, z, 0.0D, 0.0D, 0.0D); + level.addParticle(getDreamFlameParticle(), x, y, z, 0.0D, 0.0D, 0.0D); + } + + private static ParticleOptions getDreamFlameParticle() { + return BuiltInRegistries.PARTICLE_TYPE.get(DREAM_FIRE_FLAME_ID) instanceof ParticleOptions particleOptions + ? particleOptions + : ParticleTypes.SOUL_FIRE_FLAME; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java new file mode 100644 index 00000000..f881db51 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java @@ -0,0 +1,538 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyAdvancements; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.mojang.serialization.MapCodec; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.DiggerItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ShearsItem; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.AttachFace; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class DuctTapeBlock extends Block { + public static final MapCodec CODEC = Block.simpleCodec(DuctTapeBlock::new); + public static final int MAX_USES = 4; + private static final ResourceLocation DUCT_TAPE_ADVANCEMENT_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "duct_tape"); + public static final IntegerProperty USES = IntegerProperty.create("uses", 1, MAX_USES); + public static final EnumProperty FACE = BlockStateProperties.ATTACH_FACE; + public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + + private static final int TAPE_HEIGHT = 2; + private static final long STICK_SOUND_COOLDOWN_TICKS = 10L; + private static final long TAPE_DECAY_INTERVAL_TICKS = 30L; + private static final double FLOOR_TRIGGER_HEIGHT = 0.30D; + private static final double WALL_TRIGGER_DEPTH = 0.25D; + private static final double TRIGGER_PAD = 0.12D; + private static final double WALL_Y_PAD = 0.12D; + private static final double WALL_SIDE_PAD = 0.08D; + private static final double WALL_INNER_INSET = 0.03D; + private static final double TRIGGER_INFLATE_DEFAULT = 0.15D; + + private static final Map STICK_SOUND_TIMES = new HashMap<>(); + private static final Map STICK_CONTACT_KEYS = new HashMap<>(); + private static final Map TAPE_DECAY_TIMES = new HashMap<>(); + private static final Map STUCK_ENTITIES = new HashMap<>(); + + public DuctTapeBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any() + .setValue(USES, MAX_USES) + .setValue(FACE, AttachFace.FLOOR) + .setValue(FACING, Direction.NORTH)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return getShapeFor(state); + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return Shapes.empty(); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return switch (state.getValue(FACE)) { + case FLOOR -> level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + case WALL -> { + BlockPos supportPos = pos.relative(state.getValue(FACING).getOpposite()); + yield level.getBlockState(supportPos).isFaceSturdy(level, supportPos, state.getValue(FACING)); + } + default -> false; + }; + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); + } + + @Override + protected boolean canBeReplaced(BlockState state, BlockPlaceContext context) { + return false; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + Direction clickedFace = context.getClickedFace(); + BlockState state = this.defaultBlockState(); + if (clickedFace.getAxis().isHorizontal()) { + state = state.setValue(FACE, AttachFace.WALL).setValue(FACING, clickedFace); + } else { + state = state.setValue(FACE, AttachFace.FLOOR).setValue(FACING, context.getHorizontalDirection()); + } + + return state.canSurvive(context.getLevel(), context.getClickedPos()) ? state : null; + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (!state.is(newState.getBlock())) { + releaseEntitiesForTape(level, pos); + } + super.onRemove(state, level, pos, newState, movedByPiston); + } + + @Override + protected ItemInteractionResult useItemOn( + ItemStack stack, + BlockState state, + Level level, + BlockPos pos, + Player player, + InteractionHand hand, + BlockHitResult hitResult + ) { + if (stack.is(AntarchyObjects.DUCT_TAPE.get().asItem())) { + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } + + if (isReleaseTool(stack) && (isStuckToTape(player) || isTouchingTape(level, player))) { + if (!level.isClientSide) { + consumeTapeUse(level, pos, state); + level.playSound(null, pos, SoundEvents.WOOL_BREAK, SoundSource.BLOCKS, 0.8F, 0.9F + level.random.nextFloat() * 0.2F); + } + return ItemInteractionResult.sidedSuccess(level.isClientSide); + } + + if (!stack.isDamageableItem() || !stack.isDamaged() || stack.is(AntarchyTags.Items.DUCT_TAPE_BLACKLIST)) { + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } + + int repairPerUse = Math.max(1, (int) Math.ceil(stack.getMaxDamage() * AntarchySettings.ductTapeRepairPercentPerUse())); + int currentDamage = stack.getDamageValue(); + int repairedDamage = Math.min(currentDamage, repairPerUse); + + if (repairedDamage <= 0) { + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } + + if (!level.isClientSide) { + stack.setDamageValue(currentDamage - repairedDamage); + if (!player.getAbilities().instabuild) { + consumeTapeUse(level, pos, state); + } + if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer) { + AntarchyAdvancements.award(serverPlayer, DUCT_TAPE_ADVANCEMENT_ID); + } + level.playSound(null, pos, AntarchySoundEvents.DUCT_TAPE_USE.get(), SoundSource.BLOCKS, 0.9F, 0.95F + level.random.nextFloat() * 0.1F); + } + + return ItemInteractionResult.sidedSuccess(level.isClientSide); + } + + @Override + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + if (level.isClientSide || entity.isSpectator() || !touchesTape(level, entity, pos, state)) { + return; + } + + rememberStuckContact(level, pos, entity); + if (!(entity instanceof ItemEntity)) { + maybeConsumeTapeDecay(level, pos, state); + } + long gameTime = level.getGameTime(); + String tapeKey = tapeKey(level, pos); + if (shouldPlayStickSound(entity.getUUID(), tapeKey, gameTime)) { + level.playSound(null, pos, AntarchySoundEvents.DUCT_TAPE_USE.get(), SoundSource.BLOCKS, 0.85F, 0.9F + level.random.nextFloat() * 0.15F); + } + applyStick(state, pos, entity); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(USES, FACE, FACING); + } + + private static VoxelShape getShapeFor(BlockState state) { + int depth = switch (state.getValue(USES)) { + case 1 -> 4; + case 2 -> 8; + case 3 -> 12; + default -> 16; + }; + + return switch (state.getValue(FACE)) { + case FLOOR -> switch (state.getValue(FACING)) { + case NORTH -> Block.box(0.0D, 0.0D, 16.0D - depth, 16.0D, TAPE_HEIGHT, 16.0D); + case SOUTH -> Block.box(0.0D, 0.0D, 0.0D, 16.0D, TAPE_HEIGHT, depth); + case EAST -> Block.box(0.0D, 0.0D, 0.0D, depth, TAPE_HEIGHT, 16.0D); + case WEST -> Block.box(16.0D - depth, 0.0D, 0.0D, 16.0D, TAPE_HEIGHT, 16.0D); + default -> Block.box(0.0D, 0.0D, 0.0D, 16.0D, TAPE_HEIGHT, 16.0D); + }; + case WALL -> switch (state.getValue(FACING)) { + case NORTH -> Block.box(0.0D, 16.0D - depth, 16.0D - TAPE_HEIGHT, 16.0D, 16.0D, 16.0D); + case SOUTH -> Block.box(0.0D, 16.0D - depth, 0.0D, 16.0D, 16.0D, TAPE_HEIGHT); + case EAST -> Block.box(0.0D, 16.0D - depth, 0.0D, TAPE_HEIGHT, 16.0D, 16.0D); + case WEST -> Block.box(16.0D - TAPE_HEIGHT, 16.0D - depth, 0.0D, 16.0D, 16.0D, 16.0D); + default -> Block.box(0.0D, 16.0D - depth, 0.0D, TAPE_HEIGHT, 16.0D, 16.0D); + }; + default -> Block.box(0.0D, 0.0D, 0.0D, 16.0D, TAPE_HEIGHT, 16.0D); + }; + } + + private static boolean isReleaseTool(ItemStack stack) { + return stack.getItem() instanceof DiggerItem + || stack.getItem() instanceof SwordItem + || stack.getItem() instanceof ShearsItem; + } + + private static void consumeTapeUse(Level level, BlockPos pos, BlockState state) { + int remainingUses = state.getValue(USES) - 1; + if (remainingUses > 0) { + level.setBlock(pos, state.setValue(USES, remainingUses), Block.UPDATE_ALL); + return; + } + + releaseEntitiesForTape(level, pos); + TAPE_DECAY_TIMES.remove(tapeDecayKey(level, pos)); + level.removeBlock(pos, false); + } + + private static void removeTape(Level level, BlockPos pos, BlockState state) { + releaseEntitiesForTape(level, pos); + TAPE_DECAY_TIMES.remove(tapeDecayKey(level, pos)); + level.removeBlock(pos, false); + } + + private static void maybeConsumeTapeDecay(Level level, BlockPos pos, BlockState state) { + long gameTime = level.getGameTime(); + String key = tapeDecayKey(level, pos); + Long lastConsumed = TAPE_DECAY_TIMES.get(key); + if (lastConsumed == null) { + TAPE_DECAY_TIMES.put(key, gameTime); + return; + } + + if (gameTime - lastConsumed < TAPE_DECAY_INTERVAL_TICKS) { + return; + } + + TAPE_DECAY_TIMES.put(key, gameTime); + consumeTapeUse(level, pos, state); + } + + public static void tickStuckEntity(Entity entity) { + if (entity == null || entity.level().isClientSide() || isStickyBlacklist(entity)) { + return; + } + + if (!entity.isAlive() || entity.isRemoved()) { + releaseEntity(entity); + return; + } + + StuckContact contact = STUCK_ENTITIES.get(entity.getUUID()); + if (contact != null && isContactValid(entity.level(), contact)) { + BlockPos pos = BlockPos.of(contact.blockPos()); + BlockState state = entity.level().getBlockState(pos); + applyStick(state, pos, entity); + if (!(entity instanceof ItemEntity)) { + maybeConsumeTapeDecay(entity.level(), pos, state); + } + return; + } + + if (contact != null) { + releaseEntity(entity); + } + + TapeHit hit = findTouchedTape(entity.level(), entity); + if (hit == null) { + if (entity.isNoGravity()) { + entity.setNoGravity(false); + } + return; + } + + rememberStuckContact(entity.level(), hit.pos(), entity); + applyStick(hit.state(), hit.pos(), entity); + if (!(entity instanceof ItemEntity)) { + maybeConsumeTapeDecay(entity.level(), hit.pos(), hit.state()); + } + } + + public static boolean isStuckToTape(Entity entity) { + if (entity == null || entity.level().isClientSide() || isStickyBlacklist(entity)) { + return false; + } + + StuckContact contact = STUCK_ENTITIES.get(entity.getUUID()); + return contact != null && isContactValid(entity.level(), contact); + } + + public static boolean isTouchingTape(Entity entity) { + return entity != null && isTouchingTape(entity.level(), entity); + } + + public static boolean isTouchingTape(Level level, Entity entity) { + if (isStickyBlacklist(entity)) { + return false; + } + + return findTouchedTape(level, entity) != null; + } + + private static boolean isStickyBlacklist(Entity entity) { + return entity != null && entity.getType().is(AntarchyTags.Entities.DUCT_TAPE_STICK_BLACKLIST); + } + + private static void applyStick(BlockState state, BlockPos pos, Entity entity) { + entity.setDeltaMovement(Vec3.ZERO); + entity.resetFallDistance(); + entity.hasImpulse = true; + entity.setNoGravity(true); + + Vec3 anchor = getTapeAnchor(state, pos, entity); + entity.setPos(anchor.x, anchor.y, anchor.z); + + if (state.getValue(FACE) == AttachFace.FLOOR) { + entity.setOnGround(true); + } + } + + private static void rememberStuckContact(Level level, BlockPos pos, Entity entity) { + UUID entityId = entity.getUUID(); + String key = tapeKey(level, pos); + StuckContact existing = STUCK_ENTITIES.get(entityId); + if (existing != null && existing.tapeKey().equals(key)) { + return; + } + + double offsetX = entity.getX() - pos.getX(); + double offsetY = entity.getY() - pos.getY(); + double offsetZ = entity.getZ() - pos.getZ(); + STUCK_ENTITIES.put(entityId, new StuckContact( + key, + level.dimension().location().toString(), + pos.asLong(), + clamp(offsetX, 0.05D, 0.95D), + clamp(offsetY, 0.0D, 0.98D), + clamp(offsetZ, 0.05D, 0.95D) + )); + } + + private static Vec3 getTapeAnchor(BlockState state, BlockPos pos, Entity entity) { + StuckContact contact = STUCK_ENTITIES.get(entity.getUUID()); + double offsetX = contact != null ? contact.offsetX() : 0.5D; + double offsetY = contact != null ? contact.offsetY() : 0.0D; + double offsetZ = contact != null ? contact.offsetZ() : 0.5D; + double wallOffset = entity instanceof Player ? 0.06D : -0.28D; + double centerX = pos.getX() + 0.5D; + double centerZ = pos.getZ() + 0.5D; + + return switch (state.getValue(FACE)) { + case FLOOR -> new Vec3( + pos.getX() + offsetX, + pos.getY() + 0.01D, + pos.getZ() + offsetZ + ); + case WALL -> switch (state.getValue(FACING)) { + case NORTH -> new Vec3(centerX, pos.getY() + offsetY, pos.getZ() - wallOffset); + case SOUTH -> new Vec3(centerX, pos.getY() + offsetY, pos.getZ() + 1.0D + wallOffset); + case EAST -> new Vec3(pos.getX() + 1.0D + wallOffset, pos.getY() + offsetY, centerZ); + case WEST -> new Vec3(pos.getX() - wallOffset, pos.getY() + offsetY, centerZ); + default -> new Vec3(centerX, pos.getY() + offsetY, centerZ); + }; + default -> new Vec3(pos.getX() + offsetX, pos.getY() + 0.01D, pos.getZ() + offsetZ); + }; + } + + private static boolean isContactValid(Level level, StuckContact contact) { + if (!level.dimension().location().toString().equals(contact.dimensionId())) { + return false; + } + + BlockPos pos = BlockPos.of(contact.blockPos()); + BlockState state = level.getBlockState(pos); + return state.getBlock() instanceof DuctTapeBlock + && tapeKey(level, pos).equals(contact.tapeKey()); + } + + private static TapeHit findTouchedTape(Level level, Entity entity) { + AABB box = entity.getBoundingBox().inflate(0.30D); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + BlockState state = level.getBlockState(cursor); + if (state.getBlock() instanceof DuctTapeBlock && touchesTape(level, entity, cursor, state)) { + return new TapeHit(cursor.immutable(), state); + } + } + } + } + return null; + } + + private static boolean touchesTape(Level level, Entity entity, BlockPos pos, BlockState state) { + return entity.getBoundingBox().intersects(getStickyTriggerBounds(state, pos)); + } + + private static AABB getStickyTriggerBounds(BlockState state, BlockPos pos) { + AABB bounds = getShapeFor(state).bounds().move(pos); + return switch (state.getValue(FACE)) { + case FLOOR -> new AABB( + bounds.minX - TRIGGER_PAD, + pos.getY() - 0.02D, + bounds.minZ - TRIGGER_PAD, + bounds.maxX + TRIGGER_PAD, + pos.getY() + FLOOR_TRIGGER_HEIGHT, + bounds.maxZ + TRIGGER_PAD + ); + case WALL -> { + yield switch (state.getValue(FACING)) { + case NORTH -> new AABB(bounds.minX - WALL_SIDE_PAD, bounds.minY - WALL_Y_PAD, bounds.minZ - WALL_TRIGGER_DEPTH, bounds.maxX + WALL_SIDE_PAD, bounds.maxY + WALL_Y_PAD, bounds.maxZ + WALL_INNER_INSET); + case SOUTH -> new AABB(bounds.minX - WALL_SIDE_PAD, bounds.minY - WALL_Y_PAD, bounds.minZ - WALL_INNER_INSET, bounds.maxX + WALL_SIDE_PAD, bounds.maxY + WALL_Y_PAD, bounds.maxZ + WALL_TRIGGER_DEPTH); + case EAST -> new AABB(bounds.minX - WALL_TRIGGER_DEPTH, bounds.minY - WALL_Y_PAD, bounds.minZ - WALL_SIDE_PAD, bounds.maxX + WALL_INNER_INSET, bounds.maxY + WALL_Y_PAD, bounds.maxZ + WALL_SIDE_PAD); + case WEST -> new AABB(bounds.minX - WALL_INNER_INSET, bounds.minY - WALL_Y_PAD, bounds.minZ - WALL_SIDE_PAD, bounds.maxX + WALL_TRIGGER_DEPTH, bounds.maxY + WALL_Y_PAD, bounds.maxZ + WALL_SIDE_PAD); + default -> bounds.inflate(TRIGGER_INFLATE_DEFAULT); + }; + } + default -> bounds.inflate(TRIGGER_INFLATE_DEFAULT); + }; + } + + private static void releaseEntitiesForTape(Level level, BlockPos pos) { + String key = tapeKey(level, pos); + AABB searchBox = AABB.unitCubeFromLowerCorner(Vec3.atLowerCornerOf(pos)).inflate(2.0D); + STUCK_ENTITIES.entrySet().removeIf(entry -> { + StuckContact contact = entry.getValue(); + if (!key.equals(contact.tapeKey())) { + return false; + } + + level.getEntitiesOfClass(Entity.class, searchBox, candidate -> candidate.getUUID().equals(entry.getKey())) + .forEach(candidate -> candidate.setNoGravity(false)); + + STICK_SOUND_TIMES.remove(entry.getKey()); + STICK_CONTACT_KEYS.remove(entry.getKey()); + return true; + }); + } + + private static void releaseEntity(Entity entity) { + if (entity == null) { + return; + } + + STUCK_ENTITIES.remove(entity.getUUID()); + STICK_SOUND_TIMES.remove(entity.getUUID()); + STICK_CONTACT_KEYS.remove(entity.getUUID()); + entity.setNoGravity(false); + } + + private static String tapeDecayKey(Level level, BlockPos pos) { + return level.dimension().location() + ":" + pos.asLong(); + } + + private static String tapeKey(Level level, BlockPos pos) { + return level.dimension().location() + ":" + pos.asLong(); + } + + private static boolean shouldPlayStickSound(UUID entityId, String tapeKey, long gameTime) { + String lastKey = STICK_CONTACT_KEYS.get(entityId); + Long lastContact = STICK_SOUND_TIMES.get(entityId); + if (lastKey == null || !tapeKey.equals(lastKey)) { + STICK_CONTACT_KEYS.put(entityId, tapeKey); + STICK_SOUND_TIMES.put(entityId, gameTime); + return true; + } + + if (lastContact == null || gameTime - lastContact > STICK_SOUND_COOLDOWN_TICKS) { + STICK_SOUND_TIMES.put(entityId, gameTime); + return true; + } + + return false; + } + + private static double clamp(double value, double min, double max) { + return Math.max(min, Math.min(max, value)); + } + + private record StuckContact( + String tapeKey, + String dimensionId, + long blockPos, + double offsetX, + double offsetY, + double offsetZ + ) { + } + + private record TapeHit(BlockPos pos, BlockState state) { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorLogBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorLogBlock.java new file mode 100644 index 00000000..025f6d53 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorLogBlock.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.content.block; + +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.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public class DuplicatorLogBlock extends RotatedPillarBlock { + public static final MapCodec CODEC = Block.simpleCodec(DuplicatorLogBlock::new); + + public DuplicatorLogBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + DuplicatorTreeLogic.tryDuplicate(level, pos, random); + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (level instanceof ServerLevel serverLevel && !state.is(newState.getBlock())) { + DuplicatorTreeLogic.invalidateCacheNear(serverLevel, pos); + } + super.onRemove(state, level, pos, newState, movedByPiston); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorSaplingBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorSaplingBlock.java new file mode 100644 index 00000000..9977fce0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorSaplingBlock.java @@ -0,0 +1,176 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class DuplicatorSaplingBlock extends BushBlock implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(DuplicatorSaplingBlock::new); + public static final IntegerProperty STAGE = BlockStateProperties.STAGE; + private static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 14.0D, 14.0D); + + public DuplicatorSaplingBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(STAGE, 0)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + return state.is(BlockTags.DIRT) || state.is(Blocks.FARMLAND); + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (!AntarchySettings.duplicatorTreeEnabled()) { + return; + } + + if (level.getMaxLocalRawBrightness(pos.above()) >= 9 && random.nextInt(7) == 0) { + this.advanceTree(level, pos, state, random); + } + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return true; + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return random.nextFloat() < 0.75F; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + if (!AntarchySettings.duplicatorTreeEnabled()) { + return; + } + + this.advanceTree(level, pos, state, random); + } + + private void advanceTree(ServerLevel level, BlockPos pos, BlockState state, RandomSource random) { + if (state.getValue(STAGE) == 0) { + level.setBlock(pos, state.setValue(STAGE, 1), Block.UPDATE_ALL); + return; + } + + this.growTree(level, pos); + } + + private void growTree(ServerLevel level, BlockPos pos) { + if (!this.canGenerate(level, pos)) { + return; + } + + BlockState logState = AntarchyObjects.DUPLICATOR_LOG.get().defaultBlockState(); + BlockState leafState = Blocks.OAK_LEAVES.defaultBlockState() + .setValue(LeavesBlock.PERSISTENT, true) + .setValue(LeavesBlock.DISTANCE, 1); + + level.setBlock(pos, Blocks.AIR.defaultBlockState(), Block.UPDATE_ALL); + + for (int y = 0; y < 4; y++) { + level.setBlock(pos.above(y), logState, Block.UPDATE_ALL); + } + + BlockPos canopyBase = pos.above(3); + for (int x = -2; x <= 2; x++) { + for (int z = -2; z <= 2; z++) { + if (Math.abs(x) == 2 && Math.abs(z) == 2) { + continue; + } + + this.placeLeaves(level, canopyBase.offset(x, 0, z), leafState); + this.placeLeaves(level, canopyBase.offset(x, 1, z), leafState); + } + } + + this.placeLeaves(level, canopyBase.above(2), leafState); + this.placeLeaves(level, canopyBase.above(1).north(), leafState); + this.placeLeaves(level, canopyBase.above(1).south(), leafState); + this.placeLeaves(level, canopyBase.above(1).east(), leafState); + this.placeLeaves(level, canopyBase.above(1).west(), leafState); + } + + private void placeLeaves(ServerLevel level, BlockPos pos, BlockState leafState) { + BlockState existingState = level.getBlockState(pos); + if (existingState.isAir() || existingState.canBeReplaced()) { + level.setBlock(pos, leafState, Block.UPDATE_ALL); + } + } + + private boolean canGenerate(ServerLevel level, BlockPos pos) { + for (int y = 0; y <= 6; y++) { + int radius = y >= 3 ? 2 : 1; + + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + BlockPos checkPos = pos.offset(x, y, z); + BlockState checkState = level.getBlockState(checkPos); + if (!this.canReplaceForTree(pos, checkPos, checkState)) { + return false; + } + } + } + } + + return level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + } + + private boolean canReplaceForTree(BlockPos saplingPos, BlockPos checkPos, BlockState checkState) { + if (checkPos.equals(saplingPos) && checkState.is(this)) { + return true; + } + + return checkState.isAir() || checkState.canBeReplaced(); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(STAGE); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorTreeLogic.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorTreeLogic.java new file mode 100644 index 00000000..49cced4e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorTreeLogic.java @@ -0,0 +1,233 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.WeakHashMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.state.BlockState; + +public final class DuplicatorTreeLogic { + private static final int SOURCE_RADIUS = 1; + private static final int LOG_SEARCH_RADIUS = 2; + private static final int LOG_SEARCH_BELOW = 5; + private static final int LOG_SEARCH_ABOVE = 1; + + // Cache center log pos per chunk. WeakHashMap lets levels be GC'd when unloaded. + private static final WeakHashMap> CENTER_LOG_CACHE = new WeakHashMap<>(); + + private DuplicatorTreeLogic() { + } + + public static void invalidateCacheNear(ServerLevel level, BlockPos pos) { + HashMap map = CENTER_LOG_CACHE.get(level); + if (map != null) { + map.remove(ChunkPos.asLong(pos)); + } + } + + public static void tryDuplicate(ServerLevel level, BlockPos origin, RandomSource random) { + if (!AntarchySettings.duplicatorTreeEnabled()) { + return; + } + + if (random.nextInt(10) != 0) { + return; + } + + BlockPos centerLogPos = findCenterLog(level, origin); + if (centerLogPos == null) { + return; + } + + List sourceCandidates = collectSourceCandidates(level, centerLogPos); + if (sourceCandidates.isEmpty()) { + return; + } + + List targetCandidates = collectTargetCandidates(level, centerLogPos); + if (targetCandidates.isEmpty()) { + return; + } + + BlockPos sourcePos = sourceCandidates.get(random.nextInt(sourceCandidates.size())); + BlockState sourceState = level.getBlockState(sourcePos); + BlockPos targetPos = targetCandidates.get(random.nextInt(targetCandidates.size())); + + BlockState placedState = Block.updateFromNeighbourShapes(sourceState, level, targetPos); + if (!placedState.canSurvive(level, targetPos)) { + return; + } + + level.setBlock(targetPos, placedState, Block.UPDATE_ALL); + level.levelEvent(2001, targetPos, Block.getId(sourceState)); + playDuplicateEffects(level, centerLogPos, sourcePos, targetPos); + } + + private static boolean isValidSource(ServerLevel level, BlockPos pos, BlockState state) { + if (state.isAir() || state.is(AntarchyTags.Blocks.DUPLICATOR_TREE_BLACKLIST) || AntarchyObjects.isDuplicatorTreeBlock(state)) { + return false; + } + + if (state.getBlock() instanceof EntityBlock || !state.getFluidState().isEmpty()) { + return false; + } + + if (state.is(AntarchyObjects.DUCT_TAPE.get())) { + return true; + } + + return state.isCollisionShapeFullBlock(level, pos); + } + + private static boolean isValidTarget(ServerLevel level, BlockPos pos) { + BlockState targetState = level.getBlockState(pos); + if (!targetState.isAir() && !targetState.canBeReplaced()) { + return false; + } + + return level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + } + + private static List collectSourceCandidates(ServerLevel level, BlockPos centerLogPos) { + List positions = new ArrayList<>(); + + for (int x = -SOURCE_RADIUS; x <= SOURCE_RADIUS; x++) { + for (int z = -SOURCE_RADIUS; z <= SOURCE_RADIUS; z++) { + if (x == 0 && z == 0) { + continue; + } + + BlockPos checkPos = centerLogPos.offset(x, 0, z); + BlockState checkState = level.getBlockState(checkPos); + if (isValidSource(level, checkPos, checkState)) { + positions.add(checkPos); + } + } + } + + return positions; + } + + private static List collectTargetCandidates(ServerLevel level, BlockPos centerLogPos) { + List positions = new ArrayList<>(); + + for (int x = -SOURCE_RADIUS; x <= SOURCE_RADIUS; x++) { + for (int z = -SOURCE_RADIUS; z <= SOURCE_RADIUS; z++) { + if (x == 0 && z == 0) { + continue; + } + + BlockPos checkPos = centerLogPos.offset(x, 0, z); + if (isValidTarget(level, checkPos)) { + positions.add(checkPos); + } + } + } + + return positions; + } + + private static BlockPos findCenterLog(ServerLevel level, BlockPos origin) { + if (level.getBlockState(origin).is(AntarchyObjects.DUPLICATOR_LOG.get())) { + return descendToBaseLog(level, origin); + } + + long chunkKey = ChunkPos.asLong(origin); + HashMap cache = CENTER_LOG_CACHE.computeIfAbsent(level, k -> new HashMap<>()); + BlockPos cached = cache.get(chunkKey); + if (cached != null) { + if (level.getBlockState(cached).is(AntarchyObjects.DUPLICATOR_LOG.get())) { + return cached; + } + cache.remove(chunkKey); + } + + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + BlockPos bestPos = null; + int bestDistance = Integer.MAX_VALUE; + + for (int y = -LOG_SEARCH_BELOW; y <= LOG_SEARCH_ABOVE; y++) { + for (int x = -LOG_SEARCH_RADIUS; x <= LOG_SEARCH_RADIUS; x++) { + for (int z = -LOG_SEARCH_RADIUS; z <= LOG_SEARCH_RADIUS; z++) { + cursor.setWithOffset(origin, x, y, z); + if (!level.getBlockState(cursor).is(AntarchyObjects.DUPLICATOR_LOG.get())) { + continue; + } + + int distance = Math.abs(x) + Math.abs(y) + Math.abs(z); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = cursor.immutable(); + } + } + } + } + + BlockPos result = bestPos == null ? null : descendToBaseLog(level, bestPos); + if (result != null) { + cache.put(chunkKey, result); + } + return result; + } + + private static BlockPos descendToBaseLog(ServerLevel level, BlockPos pos) { + BlockPos.MutableBlockPos cursor = pos.mutable(); + while (level.getBlockState(cursor.below()).is(AntarchyObjects.DUPLICATOR_LOG.get())) { + cursor.move(Direction.DOWN); + } + + return cursor.immutable(); + } + + private static void playDuplicateEffects(ServerLevel level, BlockPos centerLogPos, BlockPos sourcePos, BlockPos targetPos) { + level.sendParticles( + ParticleTypes.HAPPY_VILLAGER, + centerLogPos.getX() + 0.5D, + centerLogPos.getY() + 0.9D, + centerLogPos.getZ() + 0.5D, + 4, + 0.35D, + 0.35D, + 0.35D, + 0.02D + ); + level.sendParticles( + ParticleTypes.ENCHANT, + sourcePos.getX() + 0.5D, + sourcePos.getY() + 0.5D, + sourcePos.getZ() + 0.5D, + 5, + 0.15D, + 0.15D, + 0.15D, + 0.04D + ); + level.sendParticles( + ParticleTypes.WAX_ON, + targetPos.getX() + 0.5D, + targetPos.getY() + 0.5D, + targetPos.getZ() + 0.5D, + 6, + 0.25D, + 0.25D, + 0.25D, + 0.01D + ); + + level.playSound(null, centerLogPos, SoundEvents.AMETHYST_BLOCK_CHIME, SoundSource.BLOCKS, 0.7F, 1.25F); + level.playSound(null, targetPos, SoundEvents.ALLAY_ITEM_TAKEN, SoundSource.BLOCKS, 0.55F, 0.9F + level.random.nextFloat() * 0.2F); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/HushweedBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/HushweedBlock.java new file mode 100644 index 00000000..a5ab4b04 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/HushweedBlock.java @@ -0,0 +1,122 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.mojang.serialization.MapCodec; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; + +public class HushweedBlock extends BaseEntityBlock { + public static final DirectionProperty FACING = BlockStateProperties.VERTICAL_DIRECTION; + public static final MapCodec CODEC = Block.simpleCodec(HushweedBlock::new); + + public HushweedBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.UP)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + Direction facing = context.getClickedFace() == Direction.DOWN ? Direction.DOWN : Direction.UP; + BlockState placed = this.defaultBlockState().setValue(FACING, facing); + if (placed.canSurvive(context.getLevel(), context.getClickedPos())) { + return placed; + } + + BlockState fallback = this.defaultBlockState().setValue(FACING, facing.getOpposite()); + return fallback.canSurvive(context.getLevel(), context.getClickedPos()) ? fallback : null; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return Blocks.AZALEA.defaultBlockState().getShape(level, pos, context); + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return Blocks.AZALEA.defaultBlockState().getCollisionShape(level, pos, context); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + Direction facing = state.getValue(FACING); + BlockPos supportPos = facing == Direction.UP ? pos.below() : pos.above(); + Direction supportFace = facing == Direction.UP ? Direction.UP : Direction.DOWN; + return level.getBlockState(supportPos).isFaceSturdy(level, supportPos, supportFace); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + net.minecraft.world.level.LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Override + public void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + if (!level.isClientSide && entity instanceof LivingEntity livingEntity && !livingEntity.isSteppingCarefully()) { + livingEntity.hurt(level.damageSources().sweetBerryBush(), 1.0F); + } + super.entityInside(state, level, pos, entity); + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new HushweedBlockEntity(pos, state); + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { + Supplier> typeSupplier = AntarchyObjects.HUSHWEED_BLOCK_ENTITY; + return level.isClientSide + ? null + : createTickerHelper(blockEntityType, typeSupplier.get(), + (tickLevel, tickPos, tickState, blockEntity) -> { + if (tickLevel instanceof net.minecraft.server.level.ServerLevel serverLevel) { + HushweedBlockEntity.serverTick(serverLevel, tickPos, tickState, blockEntity); + } + }); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/InfestedCoarseDirtBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/InfestedCoarseDirtBlock.java new file mode 100644 index 00000000..5383c112 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/InfestedCoarseDirtBlock.java @@ -0,0 +1,106 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +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 org.jetbrains.annotations.Nullable; + +public class InfestedCoarseDirtBlock extends Block { + private final MapCodec codec; + + public InfestedCoarseDirtBlock(BlockBehaviour.Properties properties) { + super(properties); + this.codec = Block.simpleCodec(ignored -> this); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (random.nextFloat() < 0.35F) { + this.tryReleaseMoleworm(level, pos); + } + } + + @Override + public void stepOn(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.Entity entity) { + super.stepOn(level, pos, state, entity); + if (!level.isClientSide && entity instanceof Player && level.random.nextFloat() < 0.22F) { + this.tryReleaseMoleworm((ServerLevel) level, pos); + } + } + + private void tryReleaseMoleworm(ServerLevel level, BlockPos pos) { + Player nearbyPlayer = level.getNearestPlayer(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, 4.5D, false); + if (nearbyPlayer == null) { + return; + } + + BlockPos emergencePos = findEmergencePos(level, pos); + if (emergencePos == null) { + return; + } + + if (!(AntarchyObjects.MOLEWORM.get().create(level) instanceof MolewormEntity moleworm)) { + return; + } + + moleworm.moveTo(emergencePos.getX() + 0.5D, emergencePos.getY() + 0.05D, emergencePos.getZ() + 0.5D, level.random.nextFloat() * 360.0F, 0.0F); + if (!level.noCollision(moleworm)) { + moleworm.discard(); + return; + } + + level.setBlock(pos, Blocks.COARSE_DIRT.defaultBlockState(), 3); + level.addFreshEntity(moleworm); + level.playSound(null, emergencePos, SoundEvents.SILVERFISH_STEP, net.minecraft.sounds.SoundSource.BLOCKS, 0.45F, 0.8F + level.random.nextFloat() * 0.25F); + level.sendParticles(net.minecraft.core.particles.ParticleTypes.POOF, pos.getX() + 0.5D, pos.getY() + 0.45D, pos.getZ() + 0.5D, 8, 0.18D, 0.08D, 0.18D, 0.01D); + } + + @Nullable + private static BlockPos findEmergencePos(BlockGetter level, BlockPos origin) { + BlockPos[] candidates = new BlockPos[] { + origin.above(), + origin.north(), + origin.south(), + origin.east(), + origin.west(), + origin.north().above(), + origin.south().above(), + origin.east().above(), + origin.west().above() + }; + + for (BlockPos candidate : candidates) { + if (isOpenStandingSpot(level, candidate)) { + return candidate; + } + } + + return null; + } + + private static boolean isOpenStandingSpot(BlockGetter level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + BlockState above = level.getBlockState(pos.above()); + BlockState below = level.getBlockState(pos.below()); + return state.isAir() + && above.isAir() + && below.isFaceSturdy(level, pos.below(), Direction.UP); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/InfestedRootedDirtBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/InfestedRootedDirtBlock.java new file mode 100644 index 00000000..cb8a62b3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/InfestedRootedDirtBlock.java @@ -0,0 +1,105 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.Nullable; + +public class InfestedRootedDirtBlock extends Block { + private final MapCodec codec; + + public InfestedRootedDirtBlock(BlockBehaviour.Properties properties) { + super(properties); + this.codec = Block.simpleCodec(ignored -> this); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (random.nextFloat() < 0.35F) { + this.tryReleaseMoleworm(level, pos); + } + } + + @Override + public void stepOn(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.Entity entity) { + super.stepOn(level, pos, state, entity); + if (!level.isClientSide && entity instanceof Player && level.random.nextFloat() < 0.22F) { + this.tryReleaseMoleworm((ServerLevel) level, pos); + } + } + + private void tryReleaseMoleworm(ServerLevel level, BlockPos pos) { + Player nearbyPlayer = level.getNearestPlayer(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, 4.5D, false); + if (nearbyPlayer == null) { + return; + } + + BlockPos emergencePos = findEmergencePos(level, pos); + if (emergencePos == null) { + return; + } + + if (!(AntarchyObjects.MOLEWORM.get().create(level) instanceof MolewormEntity moleworm)) { + return; + } + + moleworm.moveTo(emergencePos.getX() + 0.5D, emergencePos.getY() + 0.05D, emergencePos.getZ() + 0.5D, level.random.nextFloat() * 360.0F, 0.0F); + if (!level.noCollision(moleworm)) { + moleworm.discard(); + return; + } + + level.setBlock(pos, net.minecraft.world.level.block.Blocks.ROOTED_DIRT.defaultBlockState(), 3); + level.addFreshEntity(moleworm); + level.playSound(null, emergencePos, SoundEvents.SILVERFISH_STEP, net.minecraft.sounds.SoundSource.BLOCKS, 0.45F, 0.8F + level.random.nextFloat() * 0.25F); + level.sendParticles(net.minecraft.core.particles.ParticleTypes.POOF, pos.getX() + 0.5D, pos.getY() + 0.45D, pos.getZ() + 0.5D, 8, 0.18D, 0.08D, 0.18D, 0.01D); + } + + @Nullable + private static BlockPos findEmergencePos(BlockGetter level, BlockPos origin) { + BlockPos[] candidates = new BlockPos[] { + origin.above(), + origin.north(), + origin.south(), + origin.east(), + origin.west(), + origin.north().above(), + origin.south().above(), + origin.east().above(), + origin.west().above() + }; + + for (BlockPos candidate : candidates) { + if (isOpenStandingSpot(level, candidate)) { + return candidate; + } + } + + return null; + } + + private static boolean isOpenStandingSpot(BlockGetter level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + BlockState above = level.getBlockState(pos.above()); + BlockState below = level.getBlockState(pos.below()); + return state.isAir() + && above.isAir() + && below.isFaceSturdy(level, pos.below(), Direction.UP); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/MilkweedBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/MilkweedBlock.java new file mode 100644 index 00000000..0ff8b607 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/MilkweedBlock.java @@ -0,0 +1,74 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.ItemInteractionResult; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.player.Player; +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.BonemealableBlock; +import net.minecraft.world.level.block.DoublePlantBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.phys.BlockHitResult; + +public class MilkweedBlock extends DoublePlantBlock implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(MilkweedBlock::new); + + public MilkweedBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any() + .setValue(BlockStateProperties.DOUBLE_BLOCK_HALF, DoubleBlockHalf.LOWER)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected ItemInteractionResult useItemOn( + ItemStack stack, + BlockState state, + Level level, + BlockPos pos, + Player player, + InteractionHand hand, + BlockHitResult hitResult + ) { + if (player.getItemInHand(hand).is(Items.BONE_MEAL)) { + popResource(level, pos, new ItemStack(state.getBlock().asItem(), 1)); + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } + + return super.useItemOn(stack, state, level, pos, player, hand, hitResult); + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return true; + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return true; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + } + + @Override + protected boolean canBeReplaced(BlockState state, BlockPlaceContext context) { + return false; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/NyxiteSpikeBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/NyxiteSpikeBlock.java new file mode 100644 index 00000000..81a59050 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/NyxiteSpikeBlock.java @@ -0,0 +1,168 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.PointedDripstoneBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.DripstoneThickness; +import net.minecraft.world.level.material.Fluids; + +public class NyxiteSpikeBlock extends PointedDripstoneBlock { + @SuppressWarnings("rawtypes") + public static final MapCodec CODEC = (MapCodec) Block.simpleCodec(NyxiteSpikeBlock::new); + + public NyxiteSpikeBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + LevelAccessor level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + Direction direction = calculateTipDirection(level, pos, context.getNearestLookingVerticalDirection().getOpposite()); + if (direction == null) { + return null; + } + + boolean mergeTips = !context.isSecondaryUseActive(); + DripstoneThickness thickness = calculateDripstoneThickness(level, pos, direction, mergeTips); + if (thickness == null) { + return null; + } + + return this.defaultBlockState() + .setValue(TIP_DIRECTION, direction) + .setValue(THICKNESS, thickness) + .setValue(WATERLOGGED, level.getFluidState(pos).getType() == Fluids.WATER); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + if (state.getValue(WATERLOGGED)) { + level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + + if (direction != Direction.UP && direction != Direction.DOWN) { + return state; + } + + Direction tipDirection = state.getValue(TIP_DIRECTION); + if (tipDirection == Direction.DOWN && level.getBlockTicks().hasScheduledTick(pos, this)) { + return state; + } + + if (direction == tipDirection.getOpposite() && !this.canSurvive(state, level, pos)) { + if (tipDirection == Direction.DOWN) { + level.scheduleTick(pos, this, 2); + } else { + level.scheduleTick(pos, this, 1); + } + + return state; + } + + boolean mergeTips = state.getValue(THICKNESS) == DripstoneThickness.TIP_MERGE; + return state.setValue(THICKNESS, calculateDripstoneThickness(level, pos, tipDirection, mergeTips)); + } + + @Override + public boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return isValidPointedDripstonePlacement(level, pos, state.getValue(TIP_DIRECTION)); + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (this.canSurvive(state, level, pos)) { + return; + } + + if (state.getValue(TIP_DIRECTION) == Direction.DOWN) { + BlockPos.MutableBlockPos root = pos.mutable(); + while (isNyxiteSpikeWithDirection(level.getBlockState(root.above()), Direction.DOWN)) { + root.move(Direction.UP); + } + + BlockPos.MutableBlockPos cursor = root.mutable(); + while (isNyxiteSpikeWithDirection(level.getBlockState(cursor), Direction.DOWN)) { + BlockState fallingState = level.getBlockState(cursor); + if (isNyxiteSpikeWithDirection(fallingState, Direction.DOWN)) { + FallingBlockEntity.fall(level, cursor, fallingState); + } + cursor.move(Direction.DOWN); + } + return; + } + + BlockPos.MutableBlockPos cursor = pos.mutable(); + while (isNyxiteSpikeWithDirection(level.getBlockState(cursor), Direction.UP)) { + BlockState spikeState = level.getBlockState(cursor); + dropResources(spikeState, level, cursor); + level.removeBlock(cursor, false); + cursor.move(Direction.UP); + } + } + + private static Direction calculateTipDirection(LevelReader level, BlockPos pos, Direction preferredDirection) { + if (isValidPointedDripstonePlacement(level, pos, preferredDirection)) { + return preferredDirection; + } + + Direction opposite = preferredDirection.getOpposite(); + return isValidPointedDripstonePlacement(level, pos, opposite) ? opposite : null; + } + + private static DripstoneThickness calculateDripstoneThickness(LevelReader level, BlockPos pos, Direction direction, boolean mergeTips) { + Direction opposite = direction.getOpposite(); + BlockState forwardState = level.getBlockState(pos.relative(direction)); + if (isNyxiteSpikeWithDirection(forwardState, opposite)) { + return !mergeTips && forwardState.getValue(THICKNESS) != DripstoneThickness.TIP_MERGE + ? DripstoneThickness.TIP + : DripstoneThickness.TIP_MERGE; + } + + if (!isNyxiteSpikeWithDirection(forwardState, direction)) { + return DripstoneThickness.TIP; + } + + DripstoneThickness forwardThickness = forwardState.getValue(THICKNESS); + if (forwardThickness != DripstoneThickness.TIP && forwardThickness != DripstoneThickness.TIP_MERGE) { + BlockState backState = level.getBlockState(pos.relative(opposite)); + return !isNyxiteSpikeWithDirection(backState, direction) ? DripstoneThickness.BASE : DripstoneThickness.MIDDLE; + } + + return DripstoneThickness.FRUSTUM; + } + + private static boolean isValidPointedDripstonePlacement(LevelReader level, BlockPos pos, Direction direction) { + BlockPos supportPos = pos.relative(direction.getOpposite()); + BlockState supportState = level.getBlockState(supportPos); + return supportState.isFaceSturdy(level, supportPos, direction) || isNyxiteSpikeWithDirection(supportState, direction); + } + + private static boolean isNyxiteSpikeWithDirection(BlockState state, Direction direction) { + return state.is(AntarchyObjects.NYXITE_SPIKE.get()) && state.getValue(TIP_DIRECTION) == direction; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodAcornBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodAcornBlock.java new file mode 100644 index 00000000..4c0e1c3c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodAcornBlock.java @@ -0,0 +1,205 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeGrowers; +import com.mojang.serialization.MapCodec; +import java.util.LinkedHashMap; +import java.util.Map; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class OuranwoodAcornBlock extends BushBlock implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(OuranwoodAcornBlock::new); + public static final int MAX_STAGE = 2; + public static final BooleanProperty HANGING = BlockStateProperties.HANGING; + public static final IntegerProperty STAGE = IntegerProperty.create("stage", 0, MAX_STAGE); + private static final VoxelShape[] SAPLING_SHAPES = new VoxelShape[] { + Block.box(5.5D, 0.0D, 5.5D, 10.5D, 4.0D, 10.5D), + Block.box(3.5D, 0.0D, 3.5D, 12.5D, 8.0D, 12.5D), + Block.box(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D) + }; + private static final VoxelShape HANGING_SHAPE = Block.box(4.0D, 2.0D, 4.0D, 12.0D, 16.0D, 12.0D); + + public OuranwoodAcornBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HANGING, false).setValue(STAGE, 0)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + int stage = state.getValue(STAGE); + return state.getValue(HANGING) ? HANGING_SHAPE : SAPLING_SHAPES[stage]; + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + return state.is(BlockTags.DIRT) || state.is(Blocks.FARMLAND); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + if (state.getValue(HANGING)) { + return level.getBlockState(pos.above()).is(BlockTags.LEAVES); + } + + return super.canSurvive(state, level, pos); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (state.getValue(HANGING)) { + return; + } + + if (level.getMaxLocalRawBrightness(pos.above()) >= 9 && random.nextInt(7) == 0) { + this.advanceGrowth(level, pos, state, random); + } + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return !state.getValue(HANGING); + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return !state.getValue(HANGING) && random.nextFloat() < 0.75F; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + if (state.getValue(HANGING)) { + return; + } + + this.advanceGrowth(level, pos, state, random); + } + + private void advanceGrowth(ServerLevel level, BlockPos pos, BlockState state, RandomSource random) { + if (state.getValue(STAGE) < MAX_STAGE) { + level.setBlock(pos, state.setValue(STAGE, state.getValue(STAGE) + 1), Block.UPDATE_ALL); + return; + } + + this.growConfiguredTree(level, pos, state, random); + } + + private void growConfiguredTree(ServerLevel level, BlockPos pos, BlockState state, RandomSource random) { + Footprint largeFootprint = this.findFootprint(level, pos, 3); + if (largeFootprint != null) { + if (largeFootprint.fullyMatured()) { + this.placeConfiguredTree(level, largeFootprint, OuranwoodTreeGrowers.OURANWOOD_LARGE_TREE, random); + } + return; + } + + Footprint mediumFootprint = this.findFootprint(level, pos, 2); + if (mediumFootprint != null) { + if (mediumFootprint.fullyMatured()) { + this.placeConfiguredTree(level, mediumFootprint, OuranwoodTreeGrowers.OURANWOOD_MEDIUM_TREE, random); + } + return; + } + + this.placeConfiguredTree(level, new Footprint(pos, Map.of(pos, state)), OuranwoodTreeGrowers.OURANWOOD_YOUNG_TREE, random); + } + + private Footprint findFootprint(ServerLevel level, BlockPos pos, int size) { + for (int offsetX = 0; offsetX < size; offsetX++) { + for (int offsetZ = 0; offsetZ < size; offsetZ++) { + BlockPos origin = pos.offset(-offsetX, 0, -offsetZ); + Map blocks = new LinkedHashMap<>(); + boolean matches = true; + boolean fullyMatured = true; + + for (int x = 0; x < size && matches; x++) { + for (int z = 0; z < size; z++) { + BlockPos checkPos = origin.offset(x, 0, z); + BlockState checkState = level.getBlockState(checkPos); + if (!checkState.is(this) || checkState.getValue(HANGING)) { + matches = false; + break; + } + + fullyMatured &= checkState.getValue(STAGE) >= MAX_STAGE; + blocks.put(checkPos, checkState); + } + } + + if (matches) { + return new Footprint(origin, blocks, fullyMatured); + } + } + } + + return null; + } + + private void placeConfiguredTree(ServerLevel level, Footprint footprint, ResourceKey> featureKey, RandomSource random) { + Holder.Reference> feature = level.registryAccess() + .lookupOrThrow(Registries.CONFIGURED_FEATURE) + .getOrThrow(featureKey); + + for (BlockPos saplingPos : footprint.blocks().keySet()) { + level.removeBlock(saplingPos, false); + } + + if (feature.value().place(level, level.getChunkSource().getGenerator(), random, footprint.origin())) { + return; + } + + for (Map.Entry entry : footprint.blocks().entrySet()) { + level.setBlock(entry.getKey(), entry.getValue(), Block.UPDATE_ALL); + } + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(HANGING, STAGE); + } + + private record Footprint(BlockPos origin, Map blocks, boolean fullyMatured) { + private Footprint(BlockPos origin, Map blocks) { + this(origin, blocks, true); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLeavesBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLeavesBlock.java new file mode 100644 index 00000000..88b3c0ab --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLeavesBlock.java @@ -0,0 +1,195 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; + +public class OuranwoodLeavesBlock extends LeavesBlock implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(OuranwoodLeavesBlock::new); + + /* + * We still include vanilla LeavesBlock.DISTANCE in the state definition because + * LeavesBlock's constructor sets it. + * + * This is the real Ouranwood decay distance. + */ + public static final IntegerProperty OURANWOOD_DISTANCE = IntegerProperty.create("ouranwood_distance", 1, 17); + + public static final BooleanProperty PERSISTENT = LeavesBlock.PERSISTENT; + public static final BooleanProperty WATERLOGGED = LeavesBlock.WATERLOGGED; + + public static final int OURANWOOD_MAX_DISTANCE = 16; + public static final int OURANWOOD_DECAY_DISTANCE = OURANWOOD_MAX_DISTANCE + 1; + + public OuranwoodLeavesBlock(BlockBehaviour.Properties properties) { + super(properties); + + this.registerDefaultState(this.stateDefinition.any() + .setValue(LeavesBlock.DISTANCE, LeavesBlock.DECAY_DISTANCE) + .setValue(OURANWOOD_DISTANCE, OURANWOOD_DECAY_DISTANCE) + .setValue(PERSISTENT, false) + .setValue(WATERLOGGED, false)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(LeavesBlock.DISTANCE, OURANWOOD_DISTANCE, PERSISTENT, WATERLOGGED); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + FluidState fluidState = context.getLevel().getFluidState(context.getClickedPos()); + + BlockState state = this.defaultBlockState() + .setValue(PERSISTENT, true) + .setValue(WATERLOGGED, fluidState.getType() == Fluids.WATER); + + return recalculateDistance(state, context.getLevel(), context.getClickedPos()); + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return decaying(state); + } + + @Override + protected boolean decaying(BlockState state) { + return !state.getValue(PERSISTENT) + && state.getValue(OURANWOOD_DISTANCE) > OURANWOOD_MAX_DISTANCE; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (decaying(state)) { + dropResources(state, level, pos); + level.removeBlock(pos, false); + } + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + level.setBlock(pos, recalculateDistance(state, level, pos), Block.UPDATE_ALL); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + if (state.getValue(WATERLOGGED)) { + level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + + int neighborDistance = Math.min(OURANWOOD_DECAY_DISTANCE, getDistanceAt(neighborState) + 1); + int currentDistance = state.getValue(OURANWOOD_DISTANCE); + + if (neighborDistance != 1 || currentDistance != neighborDistance) { + level.scheduleTick(pos, this, 1); + } + + return state; + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return this.canGrowHangingAcorn(level, pos); + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return true; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + if (this.canGrowHangingAcorn(level, pos)) { + level.setBlock(pos.below(), createHangingAcornState(0), Block.UPDATE_ALL); + } + } + + private boolean canGrowHangingAcorn(LevelReader level, BlockPos pos) { + return level.getBlockState(pos.below()).isAir(); + } + + public static BlockState createHangingAcornState(int stage) { + return AntarchyObjects.OURANWOOD_ACORN_BLOCK.get().defaultBlockState() + .setValue(OuranwoodAcornBlock.HANGING, true) + .setValue(OuranwoodAcornBlock.STAGE, stage); + } + + private static BlockState recalculateDistance(BlockState state, LevelReader level, BlockPos pos) { + int bestDistance = OURANWOOD_DECAY_DISTANCE; + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + + for (Direction direction : Direction.values()) { + cursor.setWithOffset(pos, direction); + bestDistance = Math.min(bestDistance, getDistanceAt(level.getBlockState(cursor)) + 1); + + if (bestDistance == 1) { + break; + } + } + + bestDistance = Math.min(OURANWOOD_DECAY_DISTANCE, bestDistance); + return setOuranwoodDistance(state, bestDistance); + } + + private static BlockState setOuranwoodDistance(BlockState state, int distance) { + int ouranwoodDistance = Math.max(1, Math.min(OURANWOOD_DECAY_DISTANCE, distance)); + int vanillaDistance = Math.min(LeavesBlock.DECAY_DISTANCE, ouranwoodDistance); + + return state + .setValue(OURANWOOD_DISTANCE, ouranwoodDistance) + .setValue(LeavesBlock.DISTANCE, vanillaDistance); + } + + private static int getDistanceAt(BlockState state) { + if (state.is(BlockTags.LOGS)) { + return 0; + } + if (state.hasProperty(OURANWOOD_DISTANCE)) { + return state.getValue(OURANWOOD_DISTANCE); + } + if (state.hasProperty(LeavesBlock.DISTANCE)) { + return state.getValue(LeavesBlock.DISTANCE); + } + + return OURANWOOD_DECAY_DISTANCE; + } + + public static BlockState setOuranwoodDistanceForWorldgen(BlockState state, int distance) { + int ouranwoodDistance = Math.max(1, Math.min(OURANWOOD_DECAY_DISTANCE, distance)); + int vanillaDistance = Math.min(LeavesBlock.DECAY_DISTANCE, ouranwoodDistance); + + return state + .setValue(OURANWOOD_DISTANCE, ouranwoodDistance) + .setValue(LeavesBlock.DISTANCE, vanillaDistance); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLogBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLogBlock.java new file mode 100644 index 00000000..6fc981ae --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLogBlock.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import java.util.function.Supplier; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.Block; + +public class OuranwoodLogBlock extends RotatedPillarBlock { + public static final MapCodec CODEC = Block.simpleCodec(OuranwoodLogBlock::new); + + public OuranwoodLogBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + public OuranwoodLogBlock(Supplier strippedBlock, BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodSquirrelNestBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodSquirrelNestBlock.java new file mode 100644 index 00000000..585e0ede --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodSquirrelNestBlock.java @@ -0,0 +1,73 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +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.StateDefinition; +import net.minecraft.world.level.block.state.properties.IntegerProperty; + +/** + * Invisible world-gen-only marker placed inside a flying squirrel hollow. + * Schedules itself to replace with COARSE_DIRT and spawn squirrels shortly + * after the chunk loads, so entity creation never blocks the gen thread. + * No BlockItem is registered, so this block never appears in creative or JEI. + */ +public class OuranwoodSquirrelNestBlock extends Block { + public static final IntegerProperty SQUIRREL_COUNT = IntegerProperty.create("squirrels", 1, 3); + + public OuranwoodSquirrelNestBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(SQUIRREL_COUNT, 1)); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(SQUIRREL_COUNT); + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + int count = state.getValue(SQUIRREL_COUNT); + for (int i = 0; i < count; i++) { + BlockPos spawnPos = findSpawnPos(level, pos, random); + if (spawnPos == null) continue; + + FlyingSquirrelEntity squirrel = AntarchyObjects.FLYING_SQUIRREL.get().create(level); + if (squirrel == null) continue; + + squirrel.moveTo( + spawnPos.getX() + 0.2D + random.nextDouble() * 0.6D, + spawnPos.getY() + 0.05D, + spawnPos.getZ() + 0.2D + random.nextDouble() * 0.6D, + random.nextFloat() * 360.0F, + 0.0F + ); + level.addFreshEntity(squirrel); + } + level.setBlock(pos, Blocks.COARSE_DIRT.defaultBlockState(), Block.UPDATE_ALL); + } + + private static BlockPos findSpawnPos(ServerLevel level, BlockPos nestPos, RandomSource random) { + if (level.isEmptyBlock(nestPos.above())) { + return nestPos.above(); + } + for (int attempt = 0; attempt < 8; attempt++) { + BlockPos candidate = nestPos.offset( + random.nextInt(3) - 1, + random.nextInt(2), + random.nextInt(3) - 1 + ); + if (level.isEmptyBlock(candidate) && !level.getBlockState(candidate.below()).canBeReplaced()) { + return candidate; + } + } + return null; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java new file mode 100644 index 00000000..75fe9911 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java @@ -0,0 +1,318 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.mojang.serialization.MapCodec; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; + +public class PotentNyxiteBlock extends BaseEntityBlock { + private static final ResourceLocation ANTIWATER_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "antiwater"); + private static final ResourceLocation FLOWING_ANTIWATER_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_antiwater"); + private static final ResourceLocation ICHOR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ichor"); + private static final ResourceLocation FLOWING_ICHOR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_ichor"); + private static final ResourceLocation HYPNOTIC_GAS_SOUND_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "potent_nyxite_hypnotic_gas"); + private static final ResourceLocation HYPNOTIC_GAS_CLOUD_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas_cloud"); + private static final ResourceLocation HYPNOTIC_GAS_CLOUD_DOWN_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas_cloud_down"); + + public static final EnumProperty STATE = EnumProperty.create("state", PotentNyxiteState.class); + + private final Supplier> blockEntityTypeSupplier; + private final MapCodec codec; + + public PotentNyxiteBlock( + Supplier> blockEntityTypeSupplier, + BlockBehaviour.Properties properties + ) { + super(properties); + this.blockEntityTypeSupplier = blockEntityTypeSupplier; + this.codec = Block.simpleCodec(ignored -> this); + this.registerDefaultState(this.stateDefinition.any().setValue(STATE, PotentNyxiteState.DRY)); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(STATE); + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new PotentNyxiteBlockEntity(pos, state, this.blockEntityTypeSupplier); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(STATE, resolveState(context.getLevel(), context.getClickedPos(), this.defaultBlockState())); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + return state.setValue(STATE, resolveState(level, pos, state)); + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { + return level.isClientSide + ? createTickerHelper(blockEntityType, this.blockEntityTypeSupplier.get(), PotentNyxiteBlockEntity::clientTick) + : createTickerHelper(blockEntityType, this.blockEntityTypeSupplier.get(), (tickLevel, tickPos, tickState, blockEntity) -> { + if (tickLevel instanceof ServerLevel serverLevel) { + PotentNyxiteBlockEntity.serverTick(serverLevel, tickPos, tickState, blockEntity); + } + }); + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { + super.onPlace(state, level, pos, oldState, movedByPiston); + PotentNyxiteBlockEntity.handleStateActivation(level, pos, state); + } + + @Override + public boolean triggerEvent(BlockState state, Level level, BlockPos pos, int id, int param) { + BlockEntity blockEntity = level.getBlockEntity(pos); + if (blockEntity instanceof PotentNyxiteBlockEntity potentNyxiteBlockEntity) { + potentNyxiteBlockEntity.markEruptionStart(level.getGameTime()); + } + return true; + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + Direction fluidDirection = getFluidColumnDirection(level, pos); + if (state.getValue(STATE) == PotentNyxiteState.DRY || fluidDirection == null) { + return; + } + + Direction eruptionDirection = fluidDirection.getOpposite(); + BlockPos particlePos = pos.relative(eruptionDirection); + ResourceLocation particleId = eruptionDirection == Direction.DOWN ? HYPNOTIC_GAS_CLOUD_DOWN_ID : HYPNOTIC_GAS_CLOUD_ID; + spawnHypnoticGasParticlesAt(level, random, particlePos, particleId, eruptionDirection); + if (random.nextBoolean()) { + spawnHypnoticGasParticlesAt(level, random, particlePos, particleId, eruptionDirection); + } + + if (random.nextInt(10) == 0) { + level.playLocalSound( + pos.getX() + 0.5D, + pos.getY() + 0.5D, + pos.getZ() + 0.5D, + BuiltInRegistries.SOUND_EVENT.get(HYPNOTIC_GAS_SOUND_ID), + SoundSource.AMBIENT, + 1.75F, + 1.0F, + false + ); + } + } + + public static PotentNyxiteState resolveState(LevelAccessor level, BlockPos pos, BlockState state) { + Direction fluidDirection = getFluidColumnDirection(level, pos); + if (fluidDirection == null) { + return hasHypnoticGasFluid(level, pos) ? PotentNyxiteState.WET : PotentNyxiteState.DRY; + } + + if (hasContinuousTrigger(level, pos, fluidDirection)) { + return PotentNyxiteState.CONTINUOUS; + } + + if (hasPeriodicTrigger(level, pos, fluidDirection)) { + return PotentNyxiteState.DORMANT; + } + + return PotentNyxiteState.WET; + } + + public static boolean hasPeriodicTrigger(LevelAccessor level, BlockPos pos) { + Direction fluidDirection = getFluidColumnDirection(level, pos); + return fluidDirection != null && hasPeriodicTrigger(level, pos, fluidDirection); + } + + public static boolean hasHypnoticGasFluid(LevelAccessor level, BlockPos pos) { + return hasGasFluid(level, pos, Direction.UP) || hasGasFluid(level, pos, Direction.DOWN); + } + + public static boolean hasContinuousTrigger(LevelAccessor level, BlockPos pos) { + Direction fluidDirection = getFluidColumnDirection(level, pos); + return fluidDirection != null && hasContinuousTrigger(level, pos, fluidDirection); + } + + public static boolean isAntiwater(FluidState fluidState) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); + return ANTIWATER_ID.equals(fluidId) || FLOWING_ANTIWATER_ID.equals(fluidId); + } + + public static boolean isIchor(FluidState fluidState) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); + return ICHOR_ID.equals(fluidId) || FLOWING_ICHOR_ID.equals(fluidId); + } + + public static Direction getEruptionDirection(LevelAccessor level, BlockPos pos) { + Direction fluidDirection = getFluidColumnDirection(level, pos); + if (fluidDirection != null) { + return fluidDirection.getOpposite(); + } + + return Direction.UP; + } + + public static Direction getFluidColumnDirection(LevelAccessor level, BlockPos pos) { + boolean hasUpFluid = hasValidFluidColumn(level, pos, Direction.UP); + boolean hasDownFluid = hasValidFluidColumn(level, pos, Direction.DOWN); + if (!hasUpFluid && !hasDownFluid) { + return null; + } + + if (hasUpFluid && !hasDownFluid) { + return Direction.UP; + } + + if (hasDownFluid && !hasUpFluid) { + return Direction.DOWN; + } + + boolean hasUpHeat = hasContinuousTrigger(level, pos, Direction.UP); + boolean hasDownHeat = hasContinuousTrigger(level, pos, Direction.DOWN); + if (hasUpHeat && !hasDownHeat) { + return Direction.DOWN; + } + + if (hasDownHeat && !hasUpHeat) { + return Direction.UP; + } + + boolean hasUpTag = hasPeriodicTrigger(level, pos, Direction.UP); + boolean hasDownTag = hasPeriodicTrigger(level, pos, Direction.DOWN); + if (hasUpTag && !hasDownTag) { + return Direction.DOWN; + } + + if (hasDownTag && !hasUpTag) { + return Direction.UP; + } + + return Direction.UP; + } + + public static boolean hasAntiwaterOnSide(LevelAccessor level, BlockPos pos, Direction direction) { + FluidState fluidState = level.getFluidState(pos.relative(direction)); + return fluidState.isSource() && isAntiwater(fluidState); + } + + public static boolean hasGasFluid(LevelAccessor level, BlockPos pos, Direction direction) { + FluidState fluidState = level.getFluidState(pos.relative(direction)); + return fluidState.isSource() && isAntiwater(fluidState); + } + + public static boolean hasPeriodicTrigger(LevelAccessor level, BlockPos pos, Direction direction) { + int fluidBlocks = getFluidColumnDepth(level, pos, direction); + return fluidBlocks > 0 + && level.getBlockState(pos.relative(direction, fluidBlocks + 1)).is(AntarchyTags.Blocks.POTENT_NYXITE_ACTIVATION_BLOCKS); + } + + public static boolean hasContinuousTrigger(LevelAccessor level, BlockPos pos, Direction direction) { + int fluidBlocks = getFluidColumnDepth(level, pos, direction); + if (fluidBlocks <= 0) { + return false; + } + + FluidState fluidState = level.getFluidState(pos.relative(direction, fluidBlocks + 1)); + return fluidState.isSourceOfType(Fluids.LAVA); + } + + public static int getFluidColumnDepth(LevelAccessor level, BlockPos pos, Direction direction) { + if (direction != Direction.UP && direction != Direction.DOWN) { + return 0; + } + + int depth = 0; + BlockPos.MutableBlockPos cursor = pos.relative(direction).mutable(); + while (true) { + FluidState fluidState = level.getFluidState(cursor); + if (!fluidState.isSource() || !isAntiwater(fluidState)) { + break; + } + + depth++; + cursor.move(direction); + } + + if (depth <= 0) { + return 0; + } + + BlockState terminatorState = level.getBlockState(cursor); + FluidState terminatorFluidState = level.getFluidState(cursor); + if (terminatorFluidState.isSourceOfType(Fluids.LAVA) || terminatorState.is(AntarchyTags.Blocks.POTENT_NYXITE_ACTIVATION_BLOCKS)) { + return depth; + } + + return 0; + } + + private static boolean hasValidFluidColumn(LevelAccessor level, BlockPos pos, Direction direction) { + return getFluidColumnDepth(level, pos, direction) > 0; + } + + private static void spawnHypnoticGasParticlesAt( + Level level, + RandomSource random, + BlockPos particlePos, + ResourceLocation particleId, + Direction eruptionDirection + ) { + level.addAlwaysVisibleParticle( + simpleParticle(particleId), + particlePos.getX() + 0.2D + random.nextDouble() * 0.6D, + particlePos.getY() + 0.1D + random.nextDouble() * 0.35D, + particlePos.getZ() + 0.2D + random.nextDouble() * 0.6D, + 0.0D, + eruptionDirection == Direction.UP ? 0.01D : -0.01D, + 0.0D + ); + } + + private static SimpleParticleType simpleParticle(ResourceLocation id) { + return (SimpleParticleType) BuiltInRegistries.PARTICLE_TYPE.get(id); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/SignalSavingBulbBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/SignalSavingBulbBlock.java new file mode 100644 index 00000000..73dcf073 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/SignalSavingBulbBlock.java @@ -0,0 +1,82 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; + +public class SignalSavingBulbBlock extends Block { + + public static final BooleanProperty LIT = BlockStateProperties.LIT; + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public static final IntegerProperty BRIGHTNESS = IntegerProperty.create("brightness", 0, 15); + + public SignalSavingBulbBlock(BlockBehaviour.Properties properties) { + super(properties.lightLevel(state -> state.getValue(LIT) ? state.getValue(BRIGHTNESS) : 0)); + this.registerDefaultState(this.defaultBlockState() + .setValue(LIT, false) + .setValue(POWERED, false) + .setValue(BRIGHTNESS, 0)); + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean moving) { + if (oldState.getBlock() != state.getBlock() && level instanceof ServerLevel serverLevel) { + this.checkAndFlip(state, serverLevel, pos); + } + } + + @Override + protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, boolean moving) { + if (level instanceof ServerLevel serverLevel) { + this.checkAndFlip(state, serverLevel, pos); + } + } + + public void checkAndFlip(BlockState state, ServerLevel level, BlockPos pos) { + boolean receiving = level.hasNeighborSignal(pos); + boolean wasPowered = state.getValue(POWERED); + + if (receiving == wasPowered) return; + + BlockState newState = state; + + if (!wasPowered) { + boolean isLit = state.getValue(LIT); + if (!isLit) { + int strength = level.getBestNeighborSignal(pos); + newState = state.setValue(LIT, true).setValue(BRIGHTNESS, Math.max(strength, 1)); + level.playSound((Player) null, pos, SoundEvents.COPPER_BULB_TURN_ON, SoundSource.BLOCKS); + } else { + newState = state.setValue(LIT, false).setValue(BRIGHTNESS, 0); + level.playSound((Player) null, pos, SoundEvents.COPPER_BULB_TURN_OFF, SoundSource.BLOCKS); + } + } + + level.setBlock(pos, newState.setValue(POWERED, receiving), 3); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(LIT, POWERED, BRIGHTNESS); + } + + @Override + protected boolean hasAnalogOutputSignal(BlockState state) { + return true; + } + + @Override + protected int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos) { + return state.getValue(LIT) ? state.getValue(BRIGHTNESS) : 0; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/TorchflowerBushBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/TorchflowerBushBlock.java new file mode 100644 index 00000000..00cf1a0d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/TorchflowerBushBlock.java @@ -0,0 +1,18 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; + +public class TorchflowerBushBlock extends MilkweedBlock { + public static final MapCodec CODEC = Block.simpleCodec(TorchflowerBushBlock::new); + + public TorchflowerBushBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return (MapCodec) (MapCodec) CODEC; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/TriffidGooBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/TriffidGooBlock.java new file mode 100644 index 00000000..0e15050c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/TriffidGooBlock.java @@ -0,0 +1,76 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +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.phys.Vec3; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.EntityCollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class TriffidGooBlock extends Block { + + private static final double BOUNCE_VELOCITY_THRESHOLD = 0.6; + private static final double MAX_SINK_SPEED = 0.05; + private static final double SPRINT_VELOCITY_THRESHOLD = 0.1; + + public TriffidGooBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + public boolean isStickyBlock(BlockState state) { + return true; + } + + public boolean canStickTo(BlockState state, BlockState other) { + return !other.is(Blocks.SLIME_BLOCK) && !other.is(Blocks.HONEY_BLOCK); + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + if (context instanceof EntityCollisionContext ecc) { + Entity entity = ecc.getEntity(); + if (entity != null) { + Vec3 delta = entity.getDeltaMovement(); + double vy = delta.y; + double hSpeed = Math.sqrt(delta.x * delta.x + delta.z * delta.z); + if (vy <= 0.0 && vy > -BOUNCE_VELOCITY_THRESHOLD && hSpeed < SPRINT_VELOCITY_THRESHOLD) { + return Shapes.empty(); + } + } + } + return super.getCollisionShape(state, level, pos, context); + } + + @Override + public void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + Vec3 delta = entity.getDeltaMovement(); + if (delta.y < -MAX_SINK_SPEED) { + entity.setDeltaMovement(delta.x * 0.9, -MAX_SINK_SPEED, delta.z * 0.9); + } else { + entity.setDeltaMovement(delta.x * 0.9, delta.y, delta.z * 0.9); + } + entity.fallDistance = 0.0F; + } + + @Override + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + entity.causeFallDamage(fallDistance, 0.0F, level.damageSources().fall()); + } + + @Override + public void updateEntityAfterFallOn(BlockGetter level, Entity entity) { + Vec3 delta = entity.getDeltaMovement(); + if (delta.y < 0.0) { + double coefficient = entity instanceof LivingEntity ? 1.0 : 0.8; + entity.setDeltaMovement(delta.x, -delta.y * coefficient, delta.z); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossBlock.java new file mode 100644 index 00000000..a36b409b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossBlock.java @@ -0,0 +1,54 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +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.BonemealableBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +public class UmbralMossBlock extends Block implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(UmbralMossBlock::new); + private static final ResourceKey> UMBRAL_MOSS_PATCH_BONEMEAL = ResourceKey.create( + Registries.CONFIGURED_FEATURE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "umbral_moss_patch_bonemeal") + ); + + public UmbralMossBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return level.getBlockState(pos.above()).isAir(); + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return true; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + Holder.Reference> feature = level.registryAccess() + .lookupOrThrow(Registries.CONFIGURED_FEATURE) + .getOrThrow(UMBRAL_MOSS_PATCH_BONEMEAL); + feature.value().place(level, level.getChunkSource().getGenerator(), random, pos); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossCarpetBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossCarpetBlock.java new file mode 100644 index 00000000..1411b744 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossCarpetBlock.java @@ -0,0 +1,136 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.WallSide; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class UmbralMossCarpetBlock extends Block { + public static final MapCodec CODEC = Block.simpleCodec(UmbralMossCarpetBlock::new); + public static final BooleanProperty BOTTOM = BlockStateProperties.BOTTOM; + public static final net.minecraft.world.level.block.state.properties.EnumProperty NORTH_WALL = BlockStateProperties.NORTH_WALL; + public static final net.minecraft.world.level.block.state.properties.EnumProperty EAST_WALL = BlockStateProperties.EAST_WALL; + public static final net.minecraft.world.level.block.state.properties.EnumProperty SOUTH_WALL = BlockStateProperties.SOUTH_WALL; + public static final net.minecraft.world.level.block.state.properties.EnumProperty WEST_WALL = BlockStateProperties.WEST_WALL; + + private static final VoxelShape FLOOR_SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D); + private static final VoxelShape NORTH_LOW = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 6.0D, 1.0D); + private static final VoxelShape NORTH_TALL = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 1.0D); + private static final VoxelShape EAST_LOW = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 6.0D, 16.0D); + private static final VoxelShape EAST_TALL = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); + private static final VoxelShape SOUTH_LOW = Block.box(0.0D, 0.0D, 15.0D, 16.0D, 6.0D, 16.0D); + private static final VoxelShape SOUTH_TALL = Block.box(0.0D, 0.0D, 15.0D, 16.0D, 16.0D, 16.0D); + private static final VoxelShape WEST_LOW = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 6.0D, 16.0D); + private static final VoxelShape WEST_TALL = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 16.0D, 16.0D); + + public UmbralMossCarpetBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any() + .setValue(BOTTOM, true) + .setValue(NORTH_WALL, WallSide.NONE) + .setValue(EAST_WALL, WallSide.NONE) + .setValue(SOUTH_WALL, WallSide.NONE) + .setValue(WEST_WALL, WallSide.NONE)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(BOTTOM, NORTH_WALL, EAST_WALL, SOUTH_WALL, WEST_WALL); + } + + @Override + public BlockState getStateForPlacement(net.minecraft.world.item.context.BlockPlaceContext context) { + BlockPos pos = context.getClickedPos(); + Direction face = context.getClickedFace(); + BlockState state = this.defaultBlockState() + .setValue(BOTTOM, face == Direction.UP) + .setValue(NORTH_WALL, WallSide.NONE) + .setValue(EAST_WALL, WallSide.NONE) + .setValue(SOUTH_WALL, WallSide.NONE) + .setValue(WEST_WALL, WallSide.NONE); + if (!state.getValue(BOTTOM)) { + state = switch (face) { + case NORTH -> state.setValue(NORTH_WALL, WallSide.TALL); + case EAST -> state.setValue(EAST_WALL, WallSide.TALL); + case SOUTH -> state.setValue(SOUTH_WALL, WallSide.TALL); + case WEST -> state.setValue(WEST_WALL, WallSide.TALL); + default -> state; + }; + } + return state; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + if (state.getValue(BOTTOM)) { + return level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + } + + if (supportsWall(level, pos, Direction.NORTH, state.getValue(NORTH_WALL))) { + return true; + } + if (supportsWall(level, pos, Direction.EAST, state.getValue(EAST_WALL))) { + return true; + } + if (supportsWall(level, pos, Direction.SOUTH, state.getValue(SOUTH_WALL))) { + return true; + } + if (supportsWall(level, pos, Direction.WEST, state.getValue(WEST_WALL))) { + return true; + } + + return level.getBlockState(pos.above()).isFaceSturdy(level, pos.above(), Direction.DOWN); + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + return state.canSurvive(level, pos) ? state : net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + if (state.getValue(BOTTOM)) { + return FLOOR_SHAPE; + } + + VoxelShape shape = Shapes.empty(); + shape = combine(shape, state.getValue(NORTH_WALL), NORTH_LOW, NORTH_TALL); + shape = combine(shape, state.getValue(EAST_WALL), EAST_LOW, EAST_TALL); + shape = combine(shape, state.getValue(SOUTH_WALL), SOUTH_LOW, SOUTH_TALL); + shape = combine(shape, state.getValue(WEST_WALL), WEST_LOW, WEST_TALL); + return shape.isEmpty() ? FLOOR_SHAPE : shape; + } + + private static boolean supportsWall(LevelReader level, BlockPos pos, Direction direction, WallSide side) { + if (side == WallSide.NONE) { + return false; + } + BlockPos supportPos = pos.relative(direction); + return level.getBlockState(supportPos).isFaceSturdy(level, supportPos, direction.getOpposite()); + } + + private static VoxelShape combine(VoxelShape current, WallSide side, VoxelShape lowShape, VoxelShape tallShape) { + if (side == WallSide.NONE) { + return current; + } + return Shapes.or(current, side == WallSide.TALL ? tallShape : lowShape); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/WaspNestBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/WaspNestBlock.java new file mode 100644 index 00000000..dafb66c2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/WaspNestBlock.java @@ -0,0 +1,122 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import org.jetbrains.annotations.Nullable; +import java.util.function.Supplier; + +public class WaspNestBlock extends BaseEntityBlock { + public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + private final Supplier> blockEntityTypeSupplier; + private final int maxOccupants; + private final boolean populateInitialWasps; + private final MapCodec codec; + + public WaspNestBlock( + Supplier> blockEntityTypeSupplier, + BlockBehaviour.Properties properties + ) { + this(blockEntityTypeSupplier, 4, true, properties); + } + + public WaspNestBlock( + Supplier> blockEntityTypeSupplier, + int maxOccupants, + boolean populateInitialWasps, + BlockBehaviour.Properties properties + ) { + super(properties); + this.blockEntityTypeSupplier = blockEntityTypeSupplier; + this.maxOccupants = maxOccupants; + this.populateInitialWasps = populateInitialWasps; + this.codec = Block.simpleCodec(ignored -> this); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new WaspNestBlockEntity(pos, state); + } + + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { + return level.isClientSide + ? null + : createTickerHelper(blockEntityType, this.blockEntityTypeSupplier.get(), + (tickLevel, tickPos, tickState, nest) -> { + if (tickLevel instanceof ServerLevel serverLevel) { + WaspNestBlockEntity.serverTick(serverLevel, tickPos, tickState, nest); + } + }); + } + + @Override + public void setPlacedBy(Level level, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { + super.setPlacedBy(level, pos, state, placer, stack); + if (!level.isClientSide && this.populateInitialWasps && level.getBlockEntity(pos) instanceof WaspNestBlockEntity nestBlockEntity) { + nestBlockEntity.populateInitialWasps((ServerLevel) level); + } + } + + @Override + public BlockState playerWillDestroy(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.player.Player player) { + if (!level.isClientSide && level.getBlockEntity(pos) instanceof WaspNestBlockEntity nestBlockEntity) { + nestBlockEntity.releaseAll((ServerLevel) level); + } + + return super.playerWillDestroy(level, pos, state, player); + } + + public int maxOccupants() { + return this.maxOccupants; + } + + public boolean shouldPopulateInitialWasps() { + return this.populateInitialWasps; + } + + public EntityType waspType() { + return com.craisinlord.antarchy.content.AntarchyObjects.WASP.get(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/AntNestBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/AntNestBlockEntity.java new file mode 100644 index 00000000..06684b2a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/AntNestBlockEntity.java @@ -0,0 +1,194 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.AntNestBlock; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class AntNestBlockEntity extends BlockEntity { + private static final String STORED_ANTS = "StoredAnts"; + private static final String NBT_INITIALIZED = "Initialized"; + private static final int RELEASE_COOLDOWN_MIN = 80; + private static final int RELEASE_COOLDOWN_RANGE = 100; + private static final int ENTER_NEST_COOLDOWN = 200; + private static final int INITIAL_ANT_COUNT_MIN = 2; + private static final int INITIAL_ANT_COUNT_RANGE = 4; + private static final double SPAWN_OFFSET_XZ = 0.5D; + private static final double SPAWN_OFFSET_Y = 0.05D; + + private final List storedAnts = new ArrayList<>(); + private int releaseCooldown = RELEASE_COOLDOWN_MIN; + private boolean initialized = false; + + public AntNestBlockEntity(BlockPos pos, BlockState blockState) { + super(AntarchyObjects.ANT_NEST_BLOCK_ENTITY.get(), pos, blockState); + } + + public static void serverTick(ServerLevel level, BlockPos pos, BlockState state, AntNestBlockEntity nest) { + if (!nest.initialized) { + nest.populateInitialAnts(level); + } + + if (level.isNight() || level.isRaining()) { + return; + } + + if (nest.storedAnts.isEmpty()) { + return; + } + + if (--nest.releaseCooldown > 0) { + return; + } + + nest.releaseCooldown = RELEASE_COOLDOWN_MIN + level.random.nextInt(RELEASE_COOLDOWN_RANGE); + nest.releaseOne(level); + } + + public void populateInitialAnts(ServerLevel level) { + if (this.initialized) { + return; + } + + this.initialized = true; + if (!this.nestBlock().shouldPopulateInitialAnts()) { + return; + } + + int amount = INITIAL_ANT_COUNT_MIN + level.random.nextInt(INITIAL_ANT_COUNT_RANGE); + for (int i = 0; i < amount && this.storedAnts.size() < this.maxOccupants(); i++) { + EntityType antType = this.nestBlock().initialAntType(level.random); + this.storedAnts.add(this.createStoredAnt(level, antType)); + } + this.setChanged(); + } + + public boolean canAccept(EntityType antType) { + return this.nestBlock().canAccept(antType) && this.storedAnts.size() < this.maxOccupants(); + } + + public boolean tryStoreAnt(BaseAntEntity antEntity) { + if (!this.canAccept(antEntity.getType())) { + return false; + } + + antEntity.onEnterNest(); + CompoundTag antTag = new CompoundTag(); + antEntity.addAdditionalSaveData(antTag); + this.storedAnts.add(new StoredAnt(antEntity.getType(), antTag)); + this.releaseCooldown = Math.max(this.releaseCooldown, ENTER_NEST_COOLDOWN); + antEntity.discard(); + this.setChanged(); + return true; + } + + public void releaseAll(ServerLevel level) { + while (!this.storedAnts.isEmpty()) { + this.releaseOne(level); + } + } + + private void releaseOne(ServerLevel level) { + if (this.storedAnts.isEmpty()) { + return; + } + + StoredAnt storedAnt = this.storedAnts.get(0); + BaseAntEntity antEntity = storedAnt.create(level); + if (antEntity == null) { + this.storedAnts.remove(0); + return; + } + + BlockPos spawnPos = this.getBlockPos().above(); + if (!level.getBlockState(spawnPos).canBeReplaced()) { + return; + } + + antEntity.moveTo(spawnPos.getX() + SPAWN_OFFSET_XZ, spawnPos.getY() + SPAWN_OFFSET_Y, spawnPos.getZ() + SPAWN_OFFSET_XZ, level.random.nextFloat() * 360.0F, 0.0F); + if (!level.noCollision(antEntity)) { + return; + } + + this.storedAnts.remove(0); + antEntity.setNestPos(this.getBlockPos()); + antEntity.onExitNest(); + level.addFreshEntity(antEntity); + this.setChanged(); + } + + private int maxOccupants() { + return this.nestBlock().maxOccupants(); + } + + private AntNestBlock nestBlock() { + return (AntNestBlock) this.getBlockState().getBlock(); + } + + private StoredAnt createStoredAnt(ServerLevel level, EntityType antType) { + if (!(antType.create(level) instanceof BaseAntEntity antEntity)) { + return new StoredAnt(antType, new CompoundTag()); + } + + antEntity.setNestPos(this.getBlockPos()); + CompoundTag antTag = new CompoundTag(); + antEntity.addAdditionalSaveData(antTag); + return new StoredAnt(antType, antTag); + } + + @Override + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + tag.putBoolean(NBT_INITIALIZED, this.initialized); + ListTag listTag = new ListTag(); + for (StoredAnt storedAnt : this.storedAnts) { + listTag.add(storedAnt.save()); + } + tag.put(STORED_ANTS, listTag); + } + + @Override + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.initialized = tag.getBoolean(NBT_INITIALIZED); + this.storedAnts.clear(); + ListTag listTag = tag.getList(STORED_ANTS, Tag.TAG_COMPOUND); + for (int i = 0; i < listTag.size(); i++) { + this.storedAnts.add(StoredAnt.load(listTag.getCompound(i))); + } + } + + private record StoredAnt(EntityType antType, CompoundTag data) { + private CompoundTag save() { + CompoundTag tag = new CompoundTag(); + tag.putString("id", BuiltInRegistries.ENTITY_TYPE.getKey(this.antType).toString()); + tag.put("data", this.data.copy()); + return tag; + } + + private static StoredAnt load(CompoundTag tag) { + EntityType antType = BuiltInRegistries.ENTITY_TYPE.getOptional(net.minecraft.resources.ResourceLocation.parse(tag.getString("id"))).orElse(EntityType.SILVERFISH); + return new StoredAnt(antType, tag.getCompound("data")); + } + + private BaseAntEntity create(ServerLevel level) { + if (!(this.antType.create(level) instanceof BaseAntEntity antEntity)) { + return null; + } + + antEntity.readAdditionalSaveData(this.data.copy()); + return antEntity; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/DreamCampfireBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/DreamCampfireBlockEntity.java new file mode 100644 index 00000000..9eee189b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/DreamCampfireBlockEntity.java @@ -0,0 +1,32 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.CampfireBlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class DreamCampfireBlockEntity extends CampfireBlockEntity { + private static final ThreadLocal CONSTRUCTING_DREAM_CAMPFIRE = ThreadLocal.withInitial(() -> false); + + public DreamCampfireBlockEntity(BlockPos pos, BlockState blockState) { + super(pos, blockState); + } + + @Override + public BlockEntityType getType() { + return AntarchyObjects.DREAM_CAMPFIRE_BLOCK_ENTITY.get(); + } + + public static void beginConstruction() { + CONSTRUCTING_DREAM_CAMPFIRE.set(true); + } + + public static void endConstruction() { + CONSTRUCTING_DREAM_CAMPFIRE.set(false); + } + + public static boolean isConstructingDreamCampfire() { + return CONSTRUCTING_DREAM_CAMPFIRE.get(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/HushweedBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/HushweedBlockEntity.java new file mode 100644 index 00000000..06e3b4c4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/HushweedBlockEntity.java @@ -0,0 +1,69 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.block.HushweedBlock; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.Difficulty; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class HushweedBlockEntity extends BlockEntity { + private static final int COOLDOWN_TICKS = 30; + private static final double ATTACK_RANGE = 8.0D; + private static final double PROJECTILE_CLEARANCE = 1.1D; + private int cooldownTicks; + + public HushweedBlockEntity(BlockPos pos, BlockState blockState) { + super(AntarchyObjects.HUSHWEED_BLOCK_ENTITY.get(), pos, blockState); + } + + public static void serverTick(ServerLevel level, BlockPos pos, BlockState state, HushweedBlockEntity blockEntity) { + if (level.getDifficulty() == Difficulty.PEACEFUL) { + return; + } + + if (blockEntity.cooldownTicks > 0) { + blockEntity.cooldownTicks--; + return; + } + + Vec3 center = Vec3.atCenterOf(pos); + LivingEntity target = level.getEntitiesOfClass( + LivingEntity.class, + new AABB(pos).inflate(ATTACK_RANGE), + entity -> entity.isAlive() + && entity.getType().is(AntarchyTags.Entities.HUSHWEED_TARGETS) + && (!(entity instanceof Player player) || (!player.isCreative() && !player.isSpectator()))) + .stream() + .min(java.util.Comparator.comparingDouble(entity -> entity.distanceToSqr(center))) + .orElse(null); + if (target == null) { + return; + } + + Direction facing = state.getValue(HushweedBlock.FACING); + Vec3 spawnPos = facing == Direction.UP + ? new Vec3(pos.getX() + 0.5D, pos.getY() + PROJECTILE_CLEARANCE, pos.getZ() + 0.5D) + : new Vec3(pos.getX() + 0.5D, pos.getY() + (1.0D - PROJECTILE_CLEARANCE), pos.getZ() + 0.5D); + Vec3 targetPos = target.getEyePosition().subtract(spawnPos); + if (targetPos.lengthSqr() < 1.0E-6D) { + return; + } + + HushProjectileEntity projectile = new HushProjectileEntity(AntarchyObjects.HUSH_PROJECTILE.get(), level); + projectile.setPos(spawnPos.x, spawnPos.y, spawnPos.z); + projectile.setTargetUuid(target.getUUID()); + projectile.setDeltaMovement(0.0D, 0.27D, 0.0D); + projectile.setNoGravity(true); + level.addFreshEntity(projectile); + blockEntity.cooldownTicks = COOLDOWN_TICKS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java new file mode 100644 index 00000000..6c26f48f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java @@ -0,0 +1,521 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import java.util.List; +import java.util.function.Predicate; +import java.util.function.Supplier; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySelector; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public class PotentNyxiteBlockEntity extends BlockEntity { + public static final long GEYSER_SALT = -904011478L; + + private static final ResourceLocation HYPNOTIC_GAS_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas"); + private static final ResourceLocation HYPNOTIC_GAS_DOWN_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas_down"); + private static final ResourceLocation HYPNOTIC_GAS_CLOUD_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas_cloud"); + private static final ResourceLocation HYPNOTIC_GAS_CLOUD_DOWN_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas_cloud_down"); + private static final ResourceLocation INVERTED_GEYSER_ERUPTION_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "inverted_geyser_eruption"); + private static final ResourceLocation GEYSER_ERUPTION_START_SOUND_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "potent_nyxite_geyser_eruption_start"); + private static final ResourceLocation GEYSER_ERUPTION_ACTIVE_SOUND_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "potent_nyxite_geyser_eruption_active"); + private static final ResourceLocation GEYSER_CONTINUOUS_START_SOUND_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "potent_nyxite_geyser_continuous_start"); + private static final ResourceLocation GEYSER_CONTINUOUS_ACTIVE_SOUND_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "potent_nyxite_geyser_continuous_active"); + + private static final int MAX_FLUID_COLUMN_STEPS = 5; + private static final Predicate EFFECT_PREDICATE = EntitySelector.NO_SPECTATORS.and(EntitySelector.ENTITY_STILL_ALIVE); + + private int waitingCountdown = -1; + private long eruptionTick = -1L; + + public PotentNyxiteBlockEntity( + BlockPos pos, + BlockState blockState, + Supplier> blockEntityTypeSupplier + ) { + super(blockEntityTypeSupplier.get(), pos, blockState); + } + + public static void serverTick(ServerLevel level, BlockPos pos, BlockState state, PotentNyxiteBlockEntity blockEntity) { + blockEntity.serverTick(level, pos, state); + } + + public static void clientTick(Level level, BlockPos pos, BlockState state, PotentNyxiteBlockEntity blockEntity) { + if (level instanceof ClientLevel clientLevel) { + blockEntity.clientTick(clientLevel, pos, state); + } + } + + public static void handleStateActivation(Level level, BlockPos pos, BlockState state) { + PotentNyxiteState stateValue = state.getValue(PotentNyxiteBlock.STATE); + if (stateValue != PotentNyxiteState.ERUPTING && stateValue != PotentNyxiteState.CONTINUOUS) { + return; + } + + level.blockEvent(pos, state.getBlock(), 0, 0); + level.playSound( + null, + pos, + BuiltInRegistries.SOUND_EVENT.get( + stateValue == PotentNyxiteState.CONTINUOUS ? GEYSER_CONTINUOUS_START_SOUND_ID : GEYSER_ERUPTION_START_SOUND_ID + ), + net.minecraft.sounds.SoundSource.BLOCKS, + 2.5F, + 1.0F + ); + } + + public void markEruptionStart(long gameTime) { + this.eruptionTick = gameTime; + } + + @Override + public void setLevel(Level level) { + super.setLevel(level); + if (this.eruptionTick == -1L) { + this.eruptionTick = level.getGameTime(); + } + } + + @Override + protected void saveAdditional(CompoundTag tag, net.minecraft.core.HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + tag.putInt("countdown", this.waitingCountdown); + tag.putLong("eruption_tick", this.eruptionTick); + } + + @Override + protected void loadAdditional(CompoundTag tag, net.minecraft.core.HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.waitingCountdown = tag.getInt("countdown"); + this.eruptionTick = tag.getLong("eruption_tick"); + } + + private void serverTick(ServerLevel level, BlockPos pos, BlockState state) { + if (!(state.getBlock() instanceof PotentNyxiteBlock)) { + return; + } + + Direction fluidDirection = PotentNyxiteBlock.getFluidColumnDirection(level, pos); + BlockPos source = fluidDirection == null ? null : findHypnoticGasSourceBlock(level, pos, fluidDirection); + BlockPos adjustedSource = source == null || fluidDirection == null ? null : getAdjustedSource(source, fluidDirection); + if (level.getGameTime() % 30L == 0L && adjustedSource != null) { + applyHypnoticGasEffects(level, adjustedSource, fluidDirection); + } + + PotentNyxiteState environmentState = PotentNyxiteBlock.resolveState(level, pos, state); + PotentNyxiteState currentState = state.getValue(PotentNyxiteBlock.STATE); + + if (environmentState == PotentNyxiteState.CONTINUOUS) { + if (currentState != PotentNyxiteState.CONTINUOUS) { + BlockState newState = state.setValue(PotentNyxiteBlock.STATE, PotentNyxiteState.CONTINUOUS); + level.setBlock(pos, newState, Block.UPDATE_CLIENTS); + handleStateActivation(level, pos, newState); + this.setChanged(); + } + this.waitingCountdown = -1; + launchEntities(level, pos); + return; + } + + if (environmentState == PotentNyxiteState.DORMANT) { + if (currentState != PotentNyxiteState.DORMANT && currentState != PotentNyxiteState.ERUPTING) { + level.setBlock(pos, state.setValue(PotentNyxiteBlock.STATE, PotentNyxiteState.DORMANT), Block.UPDATE_CLIENTS); + currentState = PotentNyxiteState.DORMANT; + } + + if (source != null && fluidDirection != null && level.getGameTime() % 20L == 0L) { + int fluidBlocks = getFluidBlocks(level, pos, source, fluidDirection); + RandomSource geyserRandom = geyserPositional(level, pos); + if (this.waitingCountdown <= 0) { + if (currentState == PotentNyxiteState.ERUPTING) { + geyserRandom.nextInt(); + this.waitingCountdown = Math.max(1, fluidBlocks - 1) + geyserRandom.nextIntBetweenInclusive(1, 2); + } else { + this.waitingCountdown = 10 * Math.max(0, fluidBlocks - 1) + geyserRandom.nextIntBetweenInclusive(15, 30); + } + } + + if (this.waitingCountdown > 0) { + this.waitingCountdown--; + } + + if (this.waitingCountdown == 0) { + PotentNyxiteState nextState = currentState == PotentNyxiteState.ERUPTING + ? PotentNyxiteState.DORMANT + : PotentNyxiteState.ERUPTING; + BlockState newState = state.setValue(PotentNyxiteBlock.STATE, nextState); + level.setBlock(pos, newState, Block.UPDATE_CLIENTS); + if (nextState == PotentNyxiteState.ERUPTING) { + handleStateActivation(level, pos, newState); + level.gameEvent(GameEvent.BLOCK_ACTIVATE, pos, GameEvent.Context.of(newState)); + } else { + level.gameEvent(GameEvent.BLOCK_DEACTIVATE, pos, GameEvent.Context.of(newState)); + } + currentState = nextState; + this.setChanged(); + } + } + + if (currentState == PotentNyxiteState.ERUPTING) { + launchEntities(level, pos); + } + return; + } + + PotentNyxiteState fallbackState = environmentState == PotentNyxiteState.WET ? PotentNyxiteState.WET : PotentNyxiteState.DRY; + if (currentState != fallbackState) { + level.setBlock(pos, state.setValue(PotentNyxiteBlock.STATE, fallbackState), Block.UPDATE_CLIENTS); + } + this.waitingCountdown = -1; + } + + private void clientTick(ClientLevel level, BlockPos pos, BlockState state) { + Direction fluidDirection = PotentNyxiteBlock.getFluidColumnDirection(level, pos); + if (fluidDirection == null) { + return; + } + + BlockPos source = findHypnoticGasSourceBlock(level, pos, fluidDirection); + Direction eruptionDirection = PotentNyxiteBlock.getEruptionDirection(level, pos); + if (source != null && level.getGameTime() % 4L == 0L) { + boolean flipped = eruptionDirection == Direction.DOWN; + RandomSource random = level.getRandom(); + int count = flipped ? 3 : 4; + Vec3 center = Vec3.atCenterOf(source); + for (int i = 0; i < count; i++) { + double angle = random.nextDouble() * Mth.TWO_PI; + double radius = 0.18D + random.nextDouble() * 0.32D; + double outwardX = Mth.cos((float) angle) * radius; + double outwardZ = Mth.sin((float) angle) * radius; + double x = center.x + outwardX; + double z = center.z + outwardZ; + double y = source.getY() + (flipped ? 0.72D : 0.18D) + random.nextDouble() * 0.20D; + double driftX = outwardX * 0.015D; + double driftY = flipped ? 0.02D : 0.015D; + double driftZ = outwardZ * 0.015D; + level.addAlwaysVisibleParticle( + simpleParticle(flipped ? HYPNOTIC_GAS_DOWN_ID : HYPNOTIC_GAS_ID), + x, + y, + z, + driftX, + driftY, + driftZ + ); + } + } + if (source != null && level.getGameTime() % 20L == 0L) { + ResourceLocation cloudParticleId = eruptionDirection == Direction.DOWN + ? HYPNOTIC_GAS_CLOUD_DOWN_ID + : HYPNOTIC_GAS_CLOUD_ID; + level.addParticle(simpleParticle(cloudParticleId), source.getX() + 0.5D, source.getY() + 0.5D, source.getZ() + 0.5D, 0.0D, 0.0D, 0.0D); + } + + PotentNyxiteState stateValue = state.getValue(PotentNyxiteBlock.STATE); + if ((stateValue == PotentNyxiteState.ERUPTING || stateValue == PotentNyxiteState.CONTINUOUS) && source != null) { + int fluidBlocks = getFluidBlocks(level, pos, source, fluidDirection); + long eruptionTime = level.getGameTime() - this.eruptionTick; + + if (eruptionDirection == Direction.DOWN && eruptionTime % 20L == 0L) { + spawnDownwardHypnoticGasTrail(level, source, fluidBlocks); + } + + if (eruptionTime % 20L == 0L) { + level.addParticle( + new InvertedGeyserParticleOptions(geyserParticleType(INVERTED_GEYSER_ERUPTION_ID), fluidBlocks, eruptionDirection), + source.getX() + 0.5D, + source.getY(), + source.getZ() + 0.5D, + 0.0D, + 0.0D, + 0.0D + ); + } + + if (eruptionTime % 40L == 0L) { + level.playLocalSound( + source.getX() + 0.5D, + source.getY() + 0.5D, + source.getZ() + 0.5D, + BuiltInRegistries.SOUND_EVENT.get( + stateValue == PotentNyxiteState.CONTINUOUS ? GEYSER_CONTINUOUS_ACTIVE_SOUND_ID : GEYSER_ERUPTION_ACTIVE_SOUND_ID + ), + net.minecraft.sounds.SoundSource.BLOCKS, + 1.0F, + 1.0F, + false + ); + } + } + } + + private static void applyHypnoticGasEffects(ServerLevel level, BlockPos source, Direction fluidDirection) { + for (LivingEntity entity : getNearbyLivingEntities(level, source)) { + if (canBeReachedByHypnoticGas(level, source, entity.getEyePosition(), fluidDirection)) { + entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 240, 0, true, true)); + } + } + } + + private void launchEntities(ServerLevel level, BlockPos pos) { + Direction fluidDirection = PotentNyxiteBlock.getFluidColumnDirection(level, pos); + if (fluidDirection == null) { + return; + } + + BlockPos source = findHypnoticGasSourceBlock(level, pos, fluidDirection); + if (source == null) { + return; + } + + Direction eruptionDirection = PotentNyxiteBlock.getEruptionDirection(level, pos); + int fluidBlocks = getFluidBlocks(level, pos, source, fluidDirection); + int unobstructedBlocks = getUnobstructedBlockCount(level, source, eruptionDirection, fluidBlocks); + if (unobstructedBlocks <= 0) { + return; + } + + BlockPos start = source; + BlockPos end = source.relative(eruptionDirection, unobstructedBlocks - 1); + AABB area = new AABB( + Math.min(start.getX(), end.getX()), + Math.min(start.getY(), end.getY()), + Math.min(start.getZ(), end.getZ()), + Math.max(start.getX(), end.getX()) + 1.0D, + Math.max(start.getY(), end.getY()) + 1.0D, + Math.max(start.getZ(), end.getZ()) + 1.0D + ); + + Vec3 worldPush = new Vec3(0.0D, eruptionDirection.getStepY() * 0.2D, 0.0D); + double velocityThreshold = 0.3D + fluidBlocks * 0.1D; + int invertedDurationTicks = Mth.floor(AntarchySettings.potentNyxiteInvertedDurationSeconds() * 20.0D); + Holder invertedEffect = AntarchyObjects.INVERTED_EFFECT.get(); + + for (Entity entity : level.getEntitiesOfClass(Entity.class, area, EFFECT_PREDICATE)) { + if (entity instanceof Player player && player.getAbilities().flying) { + continue; + } + + AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(entity); + Vec3 currentWorldVelocity = gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecPlayerToWorld(entity.getDeltaMovement(), gravityDirection) + : entity.getDeltaMovement(); + + double axisVelocity = currentWorldVelocity.y * eruptionDirection.getStepY(); + if (axisVelocity <= velocityThreshold) { + Vec3 nextWorldVelocity = currentWorldVelocity.add(worldPush); + entity.setDeltaMovement( + gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecWorldToPlayer(nextWorldVelocity, gravityDirection) + : nextWorldVelocity + ); + entity.hurtMarked = true; + entity.hasImpulse = true; + entity.fallDistance = 0.0F; + } + + if (entity instanceof LivingEntity livingEntity) { + livingEntity.addEffect(new MobEffectInstance(invertedEffect, invertedDurationTicks, 0, false, true, true)); + } + } + } + + private static List getNearbyLivingEntities(Level level, BlockPos source) { + AABB aabb = new AABB(source).inflate(2.5D, 0.0D, 2.5D); + return level.getEntitiesOfClass(LivingEntity.class, aabb, entity -> EFFECT_PREDICATE.test(entity)); + } + + public static RandomSource geyserPositional(ServerLevel level, BlockPos pos) { + return new net.minecraft.world.level.levelgen.XoroshiroRandomSource(level.getSeed() ^ GEYSER_SALT).forkPositional().at(pos); + } + + public static BlockPos findHypnoticGasSourceBlock(LevelAccessor level, BlockPos origin, Direction direction) { + if (direction == Direction.DOWN) { + return origin.above(); + } + + return findLegacyHypnoticGasSourceBlock(level, origin, direction); + } + + private static BlockPos findLegacyHypnoticGasSourceBlock(LevelAccessor level, BlockPos origin, Direction direction) { + BlockPos.MutableBlockPos cursor = origin.relative(direction).mutable(); + + for (int i = 0; i <= MAX_FLUID_COLUMN_STEPS; i++) { + FluidState fluidState = level.getFluidState(cursor); + BlockState blockState = level.getBlockState(cursor); + + if (fluidState.isSource() && isHypnoticGasFluid(fluidState) && isGeyserPassableBlock(level, cursor)) { + cursor.move(direction); + continue; + } + + if (isGeyserPassableBlock(level, cursor)) { + return cursor.immutable(); + } + + return null; + } + + return null; + } + + public static Vec3 pickRandomHypnoticGasSpawnPoint(Level level, BlockPos source) { + RandomSource random = level.getRandom(); + Vec3 offset = new Vec3(random.nextFloat() - 0.5F, 0.0D, random.nextFloat() - 0.5F).normalize(); + float distance = random.nextFloat() * 3.0F; + return Vec3.atCenterOf(source).add(offset.scale(distance)).subtract(0.0D, 0.25D, 0.0D); + } + + public static boolean canBeReachedByHypnoticGas(Level level, BlockPos source, Vec3 pos) { + Direction fluidDirection = isHypnoticGasFluid(level.getFluidState(source.below())) ? Direction.DOWN : Direction.UP; + return canBeReachedByHypnoticGas(level, source, pos, fluidDirection); + } + + public static boolean canBeReachedByHypnoticGas(Level level, BlockPos source, Vec3 pos, Direction fluidDirection) { + BlockPos blockPos = BlockPos.containing(pos); + if (!isGeyserPassableBlock(level, blockPos)) { + return false; + } + + if (pos.distanceToSqr(Vec3.atCenterOf(source)) > 9.0D) { + return false; + } + + if (fluidDirection == Direction.DOWN) { + return haveLineOfSight(level, Vec3.atCenterOf(source), pos); + } + + Direction adjacentFluidDirection = findAdjacentFluidDirection(level, source); + if (adjacentFluidDirection == null) { + return false; + } + + Vec3 sourceSupport = Vec3.atCenterOf(source.relative(adjacentFluidDirection)); + Vec3 targetSupport = pos.add( + adjacentFluidDirection.getStepX(), + adjacentFluidDirection.getStepY(), + adjacentFluidDirection.getStepZ() + ); + return isHypnoticGasFluid(level.getFluidState(BlockPos.containing(targetSupport))) + && haveLineOfSight(level, sourceSupport, targetSupport); + } + + public static void spawnHypnoticGasParticle(Level level, Vec3 pos, boolean flipped) { + level.addAlwaysVisibleParticle(simpleParticle(flipped ? HYPNOTIC_GAS_DOWN_ID : HYPNOTIC_GAS_ID), pos.x, pos.y, pos.z, 0.0D, 0.0D, 0.0D); + } + + public static void spawnHypnoticGasParticle(Level level, Vec3 pos) { + spawnHypnoticGasParticle(level, pos, false); + } + + private static void spawnDownwardHypnoticGasTrail(ClientLevel level, BlockPos source, int fluidBlocks) { + RandomSource random = level.getRandom(); + int particleCount = Math.max(3, fluidBlocks + 1); + for (int i = 0; i < particleCount; i++) { + double progress = particleCount == 1 ? 0.0D : (double) i / (double) (particleCount - 1); + double y = source.getY() + 0.35D - progress * Math.max(1, fluidBlocks); + double x = source.getX() + 0.5D + (random.nextDouble() - 0.5D) * 0.35D; + double z = source.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.35D; + level.addParticle(simpleParticle(HYPNOTIC_GAS_DOWN_ID), x, y, z, 0.0D, -0.01D, 0.0D); + } + } + + private static BlockPos getAdjustedSource(BlockPos source, Direction direction) { + return direction == Direction.DOWN ? source.above() : source; + } + + private static Direction findAdjacentFluidDirection(LevelAccessor level, BlockPos source) { + if (isHypnoticGasFluid(level.getFluidState(source.above()))) { + return Direction.UP; + } + if (isHypnoticGasFluid(level.getFluidState(source.below()))) { + return Direction.DOWN; + } + return null; + } + + private static int getFluidBlocks(LevelAccessor level, BlockPos origin, BlockPos source, Direction fluidDirection) { + if (fluidDirection == Direction.DOWN) { + return PotentNyxiteBlock.getFluidColumnDepth(level, origin, fluidDirection); + } + + return fluidBlocksBetween(origin, source, fluidDirection); + } + + private static int fluidBlocksBetween(BlockPos origin, BlockPos source, Direction fluidDirection) { + return Math.max(1, Math.abs(source.getY() - origin.getY()) - 1); + } + + private static int getUnobstructedBlockCount(LevelAccessor level, BlockPos start, Direction direction, int fluidBlocks) { + int geyserForceHeight = 6 * Math.max(1, fluidBlocks); + for (int i = 0; i < geyserForceHeight; i++) { + BlockPos currentPos = start.relative(direction, i); + if (!isGeyserPassableBlock(level, currentPos)) { + return i; + } + } + return geyserForceHeight; + } + + private static boolean isGeyserPassableBlock(LevelAccessor level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + FluidState fluidState = level.getFluidState(pos); + return state.isAir() + || (fluidState.isSource() && isHypnoticGasFluid(fluidState)) + || state.getCollisionShape(level, pos).isEmpty(); + } + + private static boolean isHypnoticGasFluid(FluidState fluidState) { + return PotentNyxiteBlock.isAntiwater(fluidState); + } + + private static boolean haveLineOfSight(Level level, Vec3 from, Vec3 to) { + HitResult hitResult = level.clip(new ClipContext(from, to, ClipContext.Block.VISUAL, ClipContext.Fluid.NONE, net.minecraft.world.phys.shapes.CollisionContext.empty())); + return hitResult.getType() != HitResult.Type.BLOCK; + } + + private static SimpleParticleType simpleParticle(ResourceLocation id) { + return (SimpleParticleType) BuiltInRegistries.PARTICLE_TYPE.get(id); + } + + @SuppressWarnings("unchecked") + private static ParticleType geyserParticleType(ResourceLocation id) { + return (ParticleType) BuiltInRegistries.PARTICLE_TYPE.get(id); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/WaspNestBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/WaspNestBlockEntity.java new file mode 100644 index 00000000..ec4f9899 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/WaspNestBlockEntity.java @@ -0,0 +1,213 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.WaspNestBlock; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class WaspNestBlockEntity extends BlockEntity { + private static final String STORED_WASPS = "StoredWasps"; + private static final String PANDA_VARIANT = "PandaVariant"; + private static final int PANDA_VARIANT_CHANCE = 20; + private final List storedWasps = new ArrayList<>(); + private int releaseCooldown = 100; + private boolean initialized = false; + private boolean pandaVariant; + + public WaspNestBlockEntity(BlockPos pos, BlockState blockState) { + super(AntarchyObjects.WASP_NEST_BLOCK_ENTITY.get(), pos, blockState); + } + + public static void serverTick(ServerLevel level, BlockPos pos, BlockState state, WaspNestBlockEntity nest) { + if (!nest.initialized) { + nest.populateInitialWasps(level); + } + + if (level.isNight() || level.isRaining()) { + return; + } + + if (nest.storedWasps.isEmpty()) { + return; + } + + if (--nest.releaseCooldown > 0) { + return; + } + + nest.releaseCooldown = 80 + level.random.nextInt(100); + nest.releaseOne(level); + } + + public void populateInitialWasps(ServerLevel level) { + if (this.initialized) { + return; + } + + this.initialized = true; + if (!this.nestBlock().shouldPopulateInitialWasps()) { + return; + } + + this.pandaVariant = level.random.nextInt(PANDA_VARIANT_CHANCE) == 0; + int amount = 1 + level.random.nextInt(3); + for (int i = 0; i < amount && this.storedWasps.size() < this.maxOccupants(); i++) { + this.storedWasps.add(this.createStoredWasp(level, this.nestBlock().waspType())); + } + this.setChanged(); + } + + public boolean tryStoreWasp(WaspEntity waspEntity) { + if (this.storedWasps.size() >= this.maxOccupants()) { + return false; + } + + waspEntity.setPandaVariant(this.pandaVariant); + CompoundTag waspTag = new CompoundTag(); + waspEntity.addAdditionalSaveData(waspTag); + this.storedWasps.add(new StoredWasp(waspEntity.getType(), waspTag)); + this.releaseCooldown = Math.max(this.releaseCooldown, 200); + waspEntity.discard(); + this.setChanged(); + return true; + } + + public void releaseAll(ServerLevel level) { + while (!this.storedWasps.isEmpty()) { + this.releaseOne(level); + } + } + + private void releaseOne(ServerLevel level) { + if (this.storedWasps.isEmpty()) { + return; + } + + StoredWasp storedWasp = this.storedWasps.get(0); + WaspEntity waspEntity = storedWasp.create(level); + if (waspEntity == null) { + this.storedWasps.remove(0); + return; + } + + BlockPos spawnPos = this.findReleasePos(level); + if (spawnPos == null) { + this.storedWasps.remove(0); + this.setChanged(); + return; + } + + waspEntity.moveTo( + spawnPos.getX() + 0.5D, + spawnPos.getY() + 0.05D, + spawnPos.getZ() + 0.5D, + level.random.nextFloat() * 360.0F, + 0.0F + ); + waspEntity.setHivePos(this.getBlockPos()); + if (!level.noCollision(waspEntity)) { + this.storedWasps.remove(0); + this.setChanged(); + return; + } + + this.storedWasps.remove(0); + level.addFreshEntity(waspEntity); + this.setChanged(); + } + + private int maxOccupants() { + return this.nestBlock().maxOccupants(); + } + + private WaspNestBlock nestBlock() { + return (WaspNestBlock) this.getBlockState().getBlock(); + } + + private BlockPos findReleasePos(ServerLevel level) { + Direction facing = this.getBlockState().getValue(WaspNestBlock.FACING); + BlockPos front = this.getBlockPos().relative(facing); + if (level.getBlockState(front).canBeReplaced() && level.getBlockState(front.above()).canBeReplaced()) { + return front; + } + + BlockPos above = this.getBlockPos().above(); + if (level.getBlockState(above).canBeReplaced() && level.getBlockState(above.above()).canBeReplaced()) { + return above; + } + + return null; + } + + private StoredWasp createStoredWasp(ServerLevel level, EntityType waspType) { + if (!(waspType.create(level) instanceof WaspEntity waspEntity)) { + return new StoredWasp(waspType, new CompoundTag()); + } + + waspEntity.setPandaVariant(this.pandaVariant); + CompoundTag waspTag = new CompoundTag(); + waspEntity.addAdditionalSaveData(waspTag); + return new StoredWasp(waspType, waspTag); + } + + @Override + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + tag.putBoolean("Initialized", this.initialized); + tag.putBoolean(PANDA_VARIANT, this.pandaVariant); + ListTag listTag = new ListTag(); + for (StoredWasp storedWasp : this.storedWasps) { + listTag.add(storedWasp.save()); + } + tag.put(STORED_WASPS, listTag); + } + + @Override + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.initialized = tag.getBoolean("Initialized"); + this.pandaVariant = tag.getBoolean(PANDA_VARIANT); + this.storedWasps.clear(); + ListTag listTag = tag.getList(STORED_WASPS, Tag.TAG_COMPOUND); + for (int i = 0; i < listTag.size(); i++) { + this.storedWasps.add(StoredWasp.load(listTag.getCompound(i))); + } + } + + private record StoredWasp(EntityType waspType, CompoundTag data) { + private CompoundTag save() { + CompoundTag tag = new CompoundTag(); + tag.putString("id", BuiltInRegistries.ENTITY_TYPE.getKey(this.waspType).toString()); + tag.put("data", this.data.copy()); + return tag; + } + + private static StoredWasp load(CompoundTag tag) { + EntityType waspType = BuiltInRegistries.ENTITY_TYPE.getOptional(ResourceLocation.parse(tag.getString("id"))) + .orElse(AntarchyObjects.WASP.get()); + return new StoredWasp(waspType, tag.getCompound("data")); + } + + private WaspEntity create(ServerLevel level) { + if (!(this.waspType.create(level) instanceof WaspEntity waspEntity)) { + return null; + } + + waspEntity.readAdditionalSaveData(this.data.copy()); + return waspEntity; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/state/PotentNyxiteState.java b/common/src/main/java/com/craisinlord/antarchy/content/block/state/PotentNyxiteState.java new file mode 100644 index 00000000..87986054 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/state/PotentNyxiteState.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.block.state; + +import net.minecraft.util.StringRepresentable; + +public enum PotentNyxiteState implements StringRepresentable { + DRY("dry"), + WET("wet"), + DORMANT("dormant"), + ERUPTING("erupting"), + CONTINUOUS("continuous"); + + private final String serializedName; + + PotentNyxiteState(String serializedName) { + this.serializedName = serializedName; + } + + @Override + public String getSerializedName() { + return this.serializedName; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/bloodglass/BloodglassAccess.java b/common/src/main/java/com/craisinlord/antarchy/content/bloodglass/BloodglassAccess.java new file mode 100644 index 00000000..54c5b4f1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/bloodglass/BloodglassAccess.java @@ -0,0 +1,26 @@ +package com.craisinlord.antarchy.content.bloodglass; + +public interface BloodglassAccess { + int antarchy$getArmorShieldsActive(); + void antarchy$setArmorShieldsActive(int count); + int antarchy$getArmorShieldLostCount(); + void antarchy$setArmorShieldLostCount(int count); + int antarchy$getArmorRechargeTimer(); + void antarchy$setArmorRechargeTimer(int ticks); + + int antarchy$getAppleShieldsActive(); + void antarchy$setAppleShieldsActive(int count); + int antarchy$getAppleShieldLostCount(); + void antarchy$setAppleShieldLostCount(int count); + int antarchy$getAppleRechargeTimer(); + void antarchy$setAppleRechargeTimer(int ticks); + + default int antarchy$getTotalShieldsActive() { + return antarchy$getArmorShieldsActive() + antarchy$getAppleShieldsActive(); + } + + default int antarchy$getTotalShieldsMax() { + return antarchy$getArmorShieldsActive() + antarchy$getArmorShieldLostCount() + + antarchy$getAppleShieldsActive() + antarchy$getAppleShieldLostCount(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/BloodCrystalKatanaTrailClientState.java b/common/src/main/java/com/craisinlord/antarchy/content/client/BloodCrystalKatanaTrailClientState.java new file mode 100644 index 00000000..fc64233c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/BloodCrystalKatanaTrailClientState.java @@ -0,0 +1,40 @@ +package com.craisinlord.antarchy.content.client; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public final class BloodCrystalKatanaTrailClientState { + private static final Map ACTIVE = new HashMap<>(); + + private BloodCrystalKatanaTrailClientState() {} + + public static void trigger(int entityId, int durationTicks) { + if (durationTicks <= 0) { + ACTIVE.remove(entityId); + return; + } + ACTIVE.put(entityId, durationTicks); + } + + public static int getRemainingTicks(int entityId) { + return ACTIVE.getOrDefault(entityId, 0); + } + + public static void tick() { + Iterator> iterator = ACTIVE.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + int remaining = entry.getValue() - 1; + if (remaining <= 0) { + iterator.remove(); + } else { + entry.setValue(remaining); + } + } + } + + public static void clear() { + ACTIVE.clear(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/BloodglassClientState.java b/common/src/main/java/com/craisinlord/antarchy/content/client/BloodglassClientState.java new file mode 100644 index 00000000..36cec713 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/BloodglassClientState.java @@ -0,0 +1,16 @@ +package com.craisinlord.antarchy.content.client; + +public final class BloodglassClientState { + private BloodglassClientState() {} + + private static int shieldsActive = 0; + private static int shieldsMax = 0; + + public static void update(int active, int max) { + shieldsActive = active; + shieldsMax = max; + } + + public static int getShieldsActive() { return shieldsActive; } + public static int getShieldsMax() { return shieldsMax; } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/BrutalflyElytraClientState.java b/common/src/main/java/com/craisinlord/antarchy/content/client/BrutalflyElytraClientState.java new file mode 100644 index 00000000..61ec3dea --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/BrutalflyElytraClientState.java @@ -0,0 +1,54 @@ +package com.craisinlord.antarchy.content.client; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.util.Mth; + +public final class BrutalflyElytraClientState { + private static final Map ACTIVE_ANIMATIONS = new ConcurrentHashMap<>(); + + private BrutalflyElytraClientState() { + } + + public static void trigger(int entityId, int durationTicks, float strength) { + if (durationTicks <= 0) { + ACTIVE_ANIMATIONS.remove(entityId); + return; + } + ACTIVE_ANIMATIONS.put(entityId, new AnimationState(durationTicks, durationTicks, strength)); + } + + public static AnimationState get(int entityId) { + return ACTIVE_ANIMATIONS.get(entityId); + } + + public static void tick() { + ACTIVE_ANIMATIONS.entrySet().removeIf(entry -> entry.getValue().tick() <= 0); + } + + public static final class AnimationState { + private final int durationTicks; + private int remainingTicks; + private final float strength; + + private AnimationState(int durationTicks, int remainingTicks, float strength) { + this.durationTicks = Math.max(1, durationTicks); + this.remainingTicks = Math.max(0, remainingTicks); + this.strength = strength; + } + + public float progress(float partialTick) { + float remaining = Mth.clamp(this.remainingTicks - partialTick, 0.0F, (float) this.durationTicks); + return 1.0F - remaining / (float) this.durationTicks; + } + + public float strength() { + return this.strength; + } + + private int tick() { + this.remainingTicks--; + return this.remainingTicks; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/ScorpionWhipTetherClientState.java b/common/src/main/java/com/craisinlord/antarchy/content/client/ScorpionWhipTetherClientState.java new file mode 100644 index 00000000..78e8c942 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/ScorpionWhipTetherClientState.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.content.client; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public final class ScorpionWhipTetherClientState { + private static final Map TETHERS = new ConcurrentHashMap<>(); + + private ScorpionWhipTetherClientState() { + } + + public static void update(int playerId, int targetId) { + if (targetId < 0) { + TETHERS.remove(playerId); + } else { + TETHERS.put(playerId, targetId); + } + } + + public static Map snapshot() { + return Map.copyOf(TETHERS); + } + + public static void clear() { + TETHERS.clear(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/ThoraxisWeatherClientState.java b/common/src/main/java/com/craisinlord/antarchy/content/client/ThoraxisWeatherClientState.java new file mode 100644 index 00000000..b60eb51f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/ThoraxisWeatherClientState.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.content.client; + +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherKind; +import java.util.HashMap; +import java.util.Map; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; + +public final class ThoraxisWeatherClientState { + private static final Map STATES = new HashMap<>(); + + private ThoraxisWeatherClientState() { + } + + public static void apply(ResourceLocation dimension, ThoraxisWeatherKind kind, long expiresAt, int anchorX, int anchorY, int anchorZ) { + if (kind == ThoraxisWeatherKind.NONE) { + STATES.remove(dimension); + return; + } + + STATES.put(dimension, new ThoraxisWeatherState(kind, expiresAt, new BlockPos(anchorX, anchorY, anchorZ))); + } + + public static ThoraxisWeatherState current(Level level) { + if (level == null) { + return null; + } + + ThoraxisWeatherState state = STATES.get(level.dimension().location()); + if (state == null) { + return null; + } + + long now = level.getGameTime(); + if (state.expiresAt > 0L && now > state.expiresAt) { + STATES.remove(level.dimension().location()); + return null; + } + + return state; + } + + public record ThoraxisWeatherState(ThoraxisWeatherKind kind, long expiresAt, BlockPos anchor) { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/hud/BloodglassHudRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/hud/BloodglassHudRenderer.java new file mode 100644 index 00000000..e5871041 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/hud/BloodglassHudRenderer.java @@ -0,0 +1,57 @@ +package com.craisinlord.antarchy.content.client.hud; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.BloodglassClientState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; + +public final class BloodglassHudRenderer { + private static final ResourceLocation HEART_CONTAINER = + ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/heart/container.png"); + private static final ResourceLocation HEART_FULL = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/gui/sprites/hud/bloodglass_heart.png"); + private static final ResourceLocation HEART_CRACKED = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/gui/sprites/hud/bloodglass_heart_cracked.png"); + private static final int HEART_SIZE = 9; + private static final int HEART_PITCH = 8; + + private BloodglassHudRenderer() {} + + public static void render(GuiGraphics gui) { + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui) return; + Player player = mc.player; + if (player == null || player.isDeadOrDying()) return; + if (player.isCreative() || player.isSpectator()) return; + + int total = BloodglassClientState.getShieldsMax(); + if (total <= 0) return; + + int active = BloodglassClientState.getShieldsActive(); + int w = mc.getWindow().getGuiScaledWidth(); + int h = mc.getWindow().getGuiScaledHeight(); + + int maxHealth = Mth.ceil(player.getMaxHealth()); + int absorption = Mth.ceil(player.getAbsorptionAmount()); + int healthHearts = Mth.ceil(maxHealth / 2.0f); + int absorptionHearts = Mth.ceil(absorption / 2.0f); + int totalVanillaRows = Mth.ceil((healthHearts + absorptionHearts) / 10.0f); + boolean hasArmor = player.getArmorValue() > 0; + int baseTop = h - 39 - (totalVanillaRows * 10) - (hasArmor ? 10 : 0); + + int left = w / 2 - 91; + + for (int i = 0; i < total; i++) { + int row = i / 10; + int col = i % 10; + int x = left + col * HEART_PITCH; + int y = baseTop - row * 10; + ResourceLocation tex = (i < active) ? HEART_FULL : HEART_CRACKED; + gui.blit(HEART_CONTAINER, x, y, 0, 0, HEART_SIZE, HEART_SIZE, HEART_SIZE, HEART_SIZE); + gui.blit(tex, x, y, 0, 0, HEART_SIZE, HEART_SIZE, HEART_SIZE, HEART_SIZE); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/AntModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/AntModel.java new file mode 100644 index 00000000..7ce6cb12 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/AntModel.java @@ -0,0 +1,41 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class AntModel extends GeoModel { + private static final ResourceLocation MODEL = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/ant.geo.json"); + private static final ResourceLocation ANIMATIONS = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/ant.animation.json"); + private static final ResourceLocation BROWN_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/brown_ant.png"); + private static final ResourceLocation RED_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/red_ant.png"); + private static final ResourceLocation RAINBOW_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/rainbow_ant.png"); + + @Override + public ResourceLocation getModelResource(BaseAntEntity animatable) { + return MODEL; + } + + @Override + public ResourceLocation getTextureResource(BaseAntEntity animatable) { + if (animatable instanceof RedAntEntity) { + return RED_TEXTURE; + } + if (animatable instanceof RainbowAntEntity) { + return RAINBOW_TEXTURE; + } + if (animatable instanceof BrownAntEntity) { + return BROWN_TEXTURE; + } + return BROWN_TEXTURE; + } + + @Override + public ResourceLocation getAnimationResource(BaseAntEntity animatable) { + return ANIMATIONS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/AppleCowModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/AppleCowModel.java new file mode 100644 index 00000000..a9e65799 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/AppleCowModel.java @@ -0,0 +1,70 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.AppleCowEntity; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class AppleCowModel extends GeoModel { + private static final ResourceLocation MODEL = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/apple_cow.geo.json"); + private static final ResourceLocation BABY_MODEL = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/baby_apple_cow.geo.json"); + private static final ResourceLocation ANIMATION = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/apple_cow.animation.json"); + private static final ResourceLocation BABY_ANIMATION = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/baby_apple_cow.animation.json"); + private static final ResourceLocation APPLE_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/apple_cow.png"); + private static final ResourceLocation APPLE_SHEARED_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/apple_cow_sheared.png"); + private static final ResourceLocation BABY_APPLE_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/baby_apple_cow.png"); + private static final ResourceLocation GOLDEN_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/golden_apple_cow.png"); + private static final ResourceLocation GOLDEN_SHEARED_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/golden_apple_cow_sheared.png"); + private static final ResourceLocation BABY_GOLDEN_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/baby_golden_apple_cow.png"); + private static final ResourceLocation ENCHANTED_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/enchanted_golden_apple_cow.png"); + private static final ResourceLocation ENCHANTED_SHEARED_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/apple_cow/enchanted_golden_apple_cow_sheared.png"); + + @Override + public ResourceLocation getModelResource(AppleCowEntity animatable) { + return animatable.isBaby() ? BABY_MODEL : MODEL; + } + + @Override + public ResourceLocation getTextureResource(AppleCowEntity animatable) { + return textureFor(animatable); + } + + @Override + public ResourceLocation getAnimationResource(AppleCowEntity animatable) { + return animatable.isBaby() ? BABY_ANIMATION : ANIMATION; + } + + public static ResourceLocation textureFor(AppleCowEntity entity) { + if (entity.isBaby()) { + if (entity instanceof EnchantedGoldenAppleCow) { + return entity.isSheared() ? ENCHANTED_SHEARED_TEXTURE : ENCHANTED_TEXTURE; + } + if (entity instanceof GoldenAppleCow) { + return entity.isSheared() ? GOLDEN_SHEARED_TEXTURE : BABY_GOLDEN_TEXTURE; + } + return entity.isSheared() ? APPLE_SHEARED_TEXTURE : BABY_APPLE_TEXTURE; + } + + if (entity instanceof EnchantedGoldenAppleCow) { + return entity.isSheared() ? ENCHANTED_SHEARED_TEXTURE : ENCHANTED_TEXTURE; + } + if (entity instanceof GoldenAppleCow) { + return entity.isSheared() ? GOLDEN_SHEARED_TEXTURE : GOLDEN_TEXTURE; + } + return entity.isSheared() ? APPLE_SHEARED_TEXTURE : APPLE_TEXTURE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/BasiliskModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BasiliskModel.java new file mode 100644 index 00000000..799d864e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BasiliskModel.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class BasiliskModel extends GeoModel { + + @Override + public ResourceLocation getModelResource(BasiliskEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/basilisk.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(BasiliskEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/basilisk.png"); + } + + @Override + public ResourceLocation getAnimationResource(BasiliskEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/basilisk.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/BedBugModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BedBugModel.java new file mode 100644 index 00000000..6ce12c6a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BedBugModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class BedBugModel extends GeoModel { + @Override + public ResourceLocation getModelResource(BedBugEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/bed_bug.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(BedBugEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/bed_bug.png"); + } + + @Override + public ResourceLocation getAnimationResource(BedBugEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/bed_bug.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/BomberModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BomberModel.java new file mode 100644 index 00000000..a382f233 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BomberModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class BomberModel extends GeoModel { + @Override + public ResourceLocation getModelResource(BomberEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/bomber.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(BomberEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/bomber.png"); + } + + @Override + public ResourceLocation getAnimationResource(BomberEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/bomber.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/BrutalflyElytraModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BrutalflyElytraModel.java new file mode 100644 index 00000000..b8bdba4b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BrutalflyElytraModel.java @@ -0,0 +1,62 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; + +public final class BrutalflyElytraModel { + public static final ModelLayerLocation LAYER_LOCATION = + new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "brutalfly_elytra"), "main"); + + private final ModelPart root; + private final ModelPart leftWing; + private final ModelPart rightWing; + + public BrutalflyElytraModel(ModelPart root) { + this.root = root; + this.leftWing = root.getChild("left_wing"); + this.rightWing = root.getChild("right_wing"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition root = meshDefinition.getRoot(); + root.addOrReplaceChild( + "left_wing", + CubeListBuilder.create().texOffs(22, 0).addBox(-10.0F, 0.0F, -1.0F, 10.0F, 20.0F, 2.0F), + PartPose.offset(5.0F, 0.0F, -1.5F) + ); + root.addOrReplaceChild( + "right_wing", + CubeListBuilder.create().mirror().texOffs(22, 0).addBox(0.0F, 0.0F, -1.0F, 10.0F, 20.0F, 2.0F), + PartPose.offset(-5.0F, 0.0F, -1.5F) + ); + return LayerDefinition.create(meshDefinition, 64, 32); + } + + public void setupAnimation(float progress, float strength, boolean crouching) { + float wave = Mth.sin(progress * Mth.PI); + float flap = wave * strength; + float basePitch = crouching ? -0.18F : -0.05F; + float wingSpread = 0.55F; + this.leftWing.xRot = basePitch - flap * 1.2F; + this.rightWing.xRot = basePitch - flap * 1.2F; + this.leftWing.yRot = -wingSpread; + this.rightWing.yRot = -wingSpread; + this.leftWing.zRot = -0.35F - flap * 0.7F; + this.rightWing.zRot = -0.35F - flap * 0.7F; + } + + public void renderToBuffer(PoseStack poseStack, VertexConsumer consumer, int packedLight, int overlay) { + this.root.render(poseStack, consumer, packedLight, overlay); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/BrutalflyModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BrutalflyModel.java new file mode 100644 index 00000000..8ba48354 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/BrutalflyModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class BrutalflyModel extends GeoModel { + @Override + public ResourceLocation getModelResource(BrutalflyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/brutalfly.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(BrutalflyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/brutalfly.png"); + } + + @Override + public ResourceLocation getAnimationResource(BrutalflyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/brutalfly.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/ButterflyModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ButterflyModel.java new file mode 100644 index 00000000..b491ddb3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ButterflyModel.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class ButterflyModel extends GeoModel { + private static final String TEXTURE_PATH_PREFIX = "textures/entity/butterfly/butterfly_"; + + @Override + public ResourceLocation getModelResource(ButterflyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/butterfly.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(ButterflyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath( + Antarchy.MODID, + TEXTURE_PATH_PREFIX + animatable.getTextureVariantName() + ".png" + ); + } + + @Override + public ResourceLocation getAnimationResource(ButterflyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/butterfly.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/CaterpillarModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/CaterpillarModel.java new file mode 100644 index 00000000..d17267fb --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/CaterpillarModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class CaterpillarModel extends GeoModel { + @Override + public ResourceLocation getModelResource(CaterpillarEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/caterpillar.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(CaterpillarEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/caterpillar.png"); + } + + @Override + public ResourceLocation getAnimationResource(CaterpillarEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/caterpillar.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/CloudSharkModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/CloudSharkModel.java new file mode 100644 index 00000000..c1d8a5ce --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/CloudSharkModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class CloudSharkModel extends GeoModel { + @Override + public ResourceLocation getModelResource(CloudSharkEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/cloud_shark.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(CloudSharkEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/cloud_shark.png"); + } + + @Override + public ResourceLocation getAnimationResource(CloudSharkEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/cloud_shark.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/EasterBunnyModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/EasterBunnyModel.java new file mode 100644 index 00000000..3ad526a9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/EasterBunnyModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class EasterBunnyModel extends GeoModel { + @Override + public ResourceLocation getModelResource(EasterBunnyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/easter_bunny.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(EasterBunnyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/easter_bunny.png"); + } + + @Override + public ResourceLocation getAnimationResource(EasterBunnyEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/easter_bunny.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/EmperorScorpionModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/EmperorScorpionModel.java new file mode 100644 index 00000000..1c66b057 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/EmperorScorpionModel.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class EmperorScorpionModel extends GeoModel { + + @Override + public ResourceLocation getModelResource(EmperorScorpionEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/emperor_scorpion.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(EmperorScorpionEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/emperor_scorpion.png"); + } + + @Override + public ResourceLocation getAnimationResource(EmperorScorpionEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/emperor_scorpion.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/FlyingSquirrelModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/FlyingSquirrelModel.java new file mode 100644 index 00000000..bf78ce70 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/FlyingSquirrelModel.java @@ -0,0 +1,67 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.cache.object.GeoBone; +import software.bernie.geckolib.model.GeoModel; + +public class FlyingSquirrelModel extends GeoModel { + private static final ResourceLocation REGULAR_TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/flying_squirrel/flying_squirrel.png"); + private static final ResourceLocation BROWN_TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/flying_squirrel/flying_squirrel_brown.png"); + private static final ResourceLocation ALBINO_TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/flying_squirrel/flying_squirrel_albino.png"); + private static final float SHOULDER_BODY_ROT_X = 65.0F * Mth.DEG_TO_RAD; + private static final float SHOULDER_LEFT_ARM_ROT_Z = 0.0F; + private static final float SHOULDER_RIGHT_ARM_ROT_Z = 0.0F; + private static final float SHOULDER_TAIL_ROT_X = 42.5F * Mth.DEG_TO_RAD; + private static final float SHOULDER_HEAD_ROT_X = -60.0F * Mth.DEG_TO_RAD; + + @Override + public ResourceLocation getModelResource(FlyingSquirrelEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "geo/flying_squirrel.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(FlyingSquirrelEntity animatable) { + return switch (animatable.getTextureVariantName()) { + case "brown" -> BROWN_TEXTURE; + case "albino" -> ALBINO_TEXTURE; + default -> REGULAR_TEXTURE; + }; + } + + @Override + public ResourceLocation getAnimationResource(FlyingSquirrelEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "animations/flying_squirrel.animation.json"); + } + + @Override + public void setCustomAnimations(FlyingSquirrelEntity animatable, long instanceId, AnimationState animationState) { + super.setCustomAnimations(animatable, instanceId, animationState); + + this.getBone("squirrel").ifPresent(root -> root.setScaleX(animatable.shouldMirrorIdleAnimation() ? -1.0F : 1.0F)); + + if (animatable.isOnShoulder()) { + this.getBone("body").ifPresent(bone -> bone.setRotX(SHOULDER_BODY_ROT_X)); + this.getBone("left_arm").ifPresent(bone -> bone.setRotZ(SHOULDER_LEFT_ARM_ROT_Z)); + this.getBone("right_arm").ifPresent(bone -> bone.setRotZ(SHOULDER_RIGHT_ARM_ROT_Z)); + this.getBone("tail").ifPresent(bone -> bone.setRotX(SHOULDER_TAIL_ROT_X)); + this.getBone("head").ifPresent(bone -> { + bone.setRotX(SHOULDER_HEAD_ROT_X); + bone.setPosY(-1.0425F); + bone.setPosZ(-1.31366F); + }); + this.getBone("left_flying_part").ifPresent(FlyingSquirrelModel::hideBone); + this.getBone("right_flying_part").ifPresent(FlyingSquirrelModel::hideBone); + this.getBone("left_cheeks").ifPresent(FlyingSquirrelModel::hideBone); + this.getBone("right_cheeks").ifPresent(FlyingSquirrelModel::hideBone); + } + } + + private static void hideBone(GeoBone bone) { + bone.setScaleX(0.0F); + bone.setScaleY(0.0F); + bone.setScaleZ(0.0F); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/KrakenModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/KrakenModel.java new file mode 100644 index 00000000..abed8910 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/KrakenModel.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class KrakenModel extends GeoModel { + @Override + public ResourceLocation getModelResource(KrakenEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "geo/kraken.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(KrakenEntity animatable) { + return animatable.isPhaseTwo() + ? ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/kraken_purple.png") + : ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/kraken.png"); + } + + @Override + public ResourceLocation getAnimationResource(KrakenEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "animations/kraken.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/LucidModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/LucidModel.java new file mode 100644 index 00000000..31d6f376 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/LucidModel.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class LucidModel extends GeoModel { + + @Override + public ResourceLocation getModelResource(LucidEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/lucid.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(LucidEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/lucid.png"); + } + + @Override + public ResourceLocation getAnimationResource(LucidEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/lucid.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/MantisModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MantisModel.java new file mode 100644 index 00000000..862873c2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MantisModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class MantisModel extends GeoModel { + @Override + public ResourceLocation getModelResource(MantisEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/mantis.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(MantisEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/mantis.png"); + } + + @Override + public ResourceLocation getAnimationResource(MantisEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/mantis.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/MissileSquidModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MissileSquidModel.java new file mode 100644 index 00000000..2880b631 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MissileSquidModel.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class MissileSquidModel extends GeoModel { + @Override + public ResourceLocation getModelResource(MissileSquidEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "geo/missile_squid.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(MissileSquidEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/missile_squid.png"); + } + + @Override + public ResourceLocation getAnimationResource(MissileSquidEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "animations/missile_squid.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/MolevoreModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MolevoreModel.java new file mode 100644 index 00000000..8baa28b2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MolevoreModel.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class MolevoreModel extends GeoModel { + private static final ResourceLocation MODEL = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/molevore.geo.json"); + private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/molevore.png"); + private static final ResourceLocation ANIMATION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/molevore.animation.json"); + + @Override + public ResourceLocation getModelResource(MolevoreEntity animatable) { + return MODEL; + } + + @Override + public ResourceLocation getTextureResource(MolevoreEntity animatable) { + return TEXTURE; + } + + @Override + public ResourceLocation getAnimationResource(MolevoreEntity animatable) { + return ANIMATION; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/MolewormModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MolewormModel.java new file mode 100644 index 00000000..54446f82 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/MolewormModel.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class MolewormModel extends GeoModel { + private static final ResourceLocation MODEL = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/moleworm.geo.json"); + private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/moleworm.png"); + private static final ResourceLocation ANIMATION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/moleworm.animation.json"); + + @Override + public ResourceLocation getModelResource(MolewormEntity animatable) { + return MODEL; + } + + @Override + public ResourceLocation getTextureResource(MolewormEntity animatable) { + return TEXTURE; + } + + @Override + public ResourceLocation getAnimationResource(MolewormEntity animatable) { + return ANIMATION; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/NightmareModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/NightmareModel.java new file mode 100644 index 00000000..a412667a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/NightmareModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class NightmareModel extends GeoModel { + @Override + public ResourceLocation getModelResource(NightmareEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/nightmare.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(NightmareEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/nightmare.png"); + } + + @Override + public ResourceLocation getAnimationResource(NightmareEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/nightmare.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/ResourceBackedGeoItemModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ResourceBackedGeoItemModel.java new file mode 100644 index 00000000..1df1cc31 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ResourceBackedGeoItemModel.java @@ -0,0 +1,33 @@ +package com.craisinlord.antarchy.content.client.model; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import software.bernie.geckolib.animatable.GeoAnimatable; +import software.bernie.geckolib.model.GeoModel; + +public class ResourceBackedGeoItemModel extends GeoModel { + private final ResourceLocation modelLocation; + private final ResourceLocation textureLocation; + private final ResourceLocation animationLocation; + + public ResourceBackedGeoItemModel(ResourceLocation modelLocation, ResourceLocation textureLocation, ResourceLocation animationLocation) { + this.modelLocation = modelLocation; + this.textureLocation = textureLocation; + this.animationLocation = animationLocation; + } + + @Override + public ResourceLocation getModelResource(T animatable) { + return this.modelLocation; + } + + @Override + public ResourceLocation getTextureResource(T animatable) { + return this.textureLocation; + } + + @Override + public ResourceLocation getAnimationResource(T animatable) { + return this.animationLocation; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/ReverieModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ReverieModel.java new file mode 100644 index 00000000..d6051fb8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ReverieModel.java @@ -0,0 +1,45 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class ReverieModel extends GeoModel { + private static final ResourceLocation WHITE_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/reverie/reverie_white.png"); + private static final ResourceLocation YELLOW_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/reverie/reverie_yellow.png"); + private static final ResourceLocation BLUE_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/reverie/reverie_blue.png"); + private static final ResourceLocation PURPLE_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/reverie/reverie_purple.png"); + private static final ResourceLocation RED_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/reverie/reverie_red.png"); + + @Override + public ResourceLocation getModelResource(ReverieEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/reverie.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(ReverieEntity animatable) { + return textureForMood(animatable.getMood()); + } + + @Override + public ResourceLocation getAnimationResource(ReverieEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/reverie.animation.json"); + } + + public static ResourceLocation textureForMood(ReverieEntity.Mood mood) { + return switch (mood) { + case WHITE -> WHITE_TEXTURE; + case YELLOW -> YELLOW_TEXTURE; + case BLUE -> BLUE_TEXTURE; + case PURPLE -> PURPLE_TEXTURE; + case RED -> RED_TEXTURE; + default -> WHITE_TEXTURE; + }; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/ScorpionModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ScorpionModel.java new file mode 100644 index 00000000..5b23cbc6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/ScorpionModel.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class ScorpionModel extends GeoModel { + + @Override + public ResourceLocation getModelResource(ScorpionEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/scorpion.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(ScorpionEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/scorpion.png"); + } + + @Override + public ResourceLocation getAnimationResource(ScorpionEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/scorpion.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/TriffidModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/TriffidModel.java new file mode 100644 index 00000000..b1a8cf55 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/TriffidModel.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class TriffidModel extends GeoModel { + private static final ResourceLocation MODEL = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/triffid.geo.json"); + private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/triffid.png"); + private static final ResourceLocation ANIMATION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/triffid.animation.json"); + + @Override + public ResourceLocation getModelResource(TriffidEntity animatable) { + return MODEL; + } + + @Override + public ResourceLocation getTextureResource(TriffidEntity animatable) { + return TEXTURE; + } + + @Override + public ResourceLocation getAnimationResource(TriffidEntity animatable) { + return ANIMATION; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/WaspModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/WaspModel.java new file mode 100644 index 00000000..6e908f1d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/WaspModel.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class WaspModel extends GeoModel { + private static final ResourceLocation DEFAULT_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/wasp.png"); + private static final ResourceLocation PANDA_TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/wasp_panda.png"); + + @Override + public ResourceLocation getModelResource(WaspEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/wasp.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(WaspEntity animatable) { + return animatable.isPandaVariant() ? PANDA_TEXTURE : DEFAULT_TEXTURE; + } + + @Override + public ResourceLocation getAnimationResource(WaspEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/wasp.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/DreamFlameParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/DreamFlameParticle.java new file mode 100644 index 00000000..d84d1c71 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/DreamFlameParticle.java @@ -0,0 +1,49 @@ +package com.craisinlord.antarchy.content.client.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.core.particles.SimpleParticleType; + +public final class DreamFlameParticle extends TextureSheetParticle { + private final SpriteSet sprites; + + protected DreamFlameParticle(ClientLevel level, double x, double y, double z, double xd, double yd, double zd, SpriteSet sprites) { + super(level, x, y, z, xd, yd, zd); + this.sprites = sprites; + this.friction = 0.96F; + this.xd = xd * 0.01D; + this.yd = yd * 0.01D; + this.zd = zd * 0.01D; + this.quadSize *= 1.25F; + this.lifetime = 8 + this.random.nextInt(4); + this.pickSprite(sprites); + } + + @Override + public void tick() { + super.tick(); + this.pickSprite(this.sprites); + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; + } + + public static final class Provider implements ParticleProvider { + private final SpriteSet sprites; + + public Provider(SpriteSet sprites) { + this.sprites = sprites; + } + + @Override + public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xd, double yd, double zd) { + return new DreamFlameParticle(level, x, y, z, xd, yd, zd, this.sprites); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/FireflyParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/FireflyParticle.java new file mode 100644 index 00000000..3c82835a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/FireflyParticle.java @@ -0,0 +1,85 @@ +package com.craisinlord.antarchy.content.client.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.Mth; + +public final class FireflyParticle extends TextureSheetParticle { + private static final int FADE_TICKS = 8; + + private FireflyParticle(ClientLevel level, double x, double y, double z, SpriteSet sprites) { + super(level, x, y, z, 0.0, 0.0, 0.0); + this.setSprite(sprites.get(0, 1)); + this.lifetime = 30 + this.random.nextInt(78); + this.quadSize = 0.10F + this.random.nextFloat() * 0.04F; + this.setColor(0.92F, 0.98F, 0.45F); + this.setAlpha(0.0F); + this.yd = 0.004 + this.random.nextDouble() * 0.003; + this.xd = (this.random.nextDouble() - 0.5) * 0.008; + this.zd = (this.random.nextDouble() - 0.5) * 0.008; + this.hasPhysics = false; + } + + @Override + public void tick() { + this.xo = this.x; + this.yo = this.y; + this.zo = this.z; + + if (this.age >= this.lifetime) { + this.remove(); + return; + } + + float bobOffset = Mth.sin(this.age * 0.18F) * 0.006F; + this.xd += bobOffset; + this.zd -= bobOffset; + + this.xd *= 0.94; + this.yd *= 0.98; + this.zd *= 0.94; + + this.move(this.xd, this.yd, this.zd); + + float alpha; + if (this.age < FADE_TICKS) { + alpha = (float) this.age / FADE_TICKS; + } else if (this.age > this.lifetime - FADE_TICKS) { + alpha = (float) (this.lifetime - this.age) / FADE_TICKS; + } else { + alpha = 1.0F; + } + this.setAlpha(alpha * 0.85F); + + this.age++; + } + + @Override + public int getLightColor(float partialTick) { + return LightTexture.FULL_BRIGHT; + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; + } + + public static final class Provider implements ParticleProvider { + private final SpriteSet sprites; + + public Provider(SpriteSet sprites) { + this.sprites = sprites; + } + + @Override + public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xd, double yd, double zd) { + return new FireflyParticle(level, x, y, z, this.sprites); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/HypnoticGasCloudParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/HypnoticGasCloudParticle.java new file mode 100644 index 00000000..4881f8de --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/HypnoticGasCloudParticle.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.content.client.particle; + +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.NoRenderParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.world.phys.Vec3; + +public final class HypnoticGasCloudParticle extends NoRenderParticle { + private final boolean flipped; + + public HypnoticGasCloudParticle(ClientLevel level, double x, double y, double z, boolean flipped) { + super(level, x, y, z); + this.flipped = flipped; + this.lifetime = 20; + } + + @Override + public void tick() { + super.tick(); + if (this.age % 2 != 0) { + return; + } + + BlockPos source = BlockPos.containing(this.x, this.y, this.z); + Vec3 spawnPoint = PotentNyxiteBlockEntity.pickRandomHypnoticGasSpawnPoint(this.level, source); + if (PotentNyxiteBlockEntity.canBeReachedByHypnoticGas(this.level, source, spawnPoint)) { + PotentNyxiteBlockEntity.spawnHypnoticGasParticle(this.level, spawnPoint, this.flipped); + } + } + + public static final class Provider implements ParticleProvider { + private final boolean flipped; + + public Provider() { + this(false); + } + + public Provider(boolean flipped) { + this.flipped = flipped; + } + + @Override + public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xd, double yd, double zd) { + return new HypnoticGasCloudParticle(level, x, y, z, this.flipped); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/HypnoticGasParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/HypnoticGasParticle.java new file mode 100644 index 00000000..e46d44f3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/HypnoticGasParticle.java @@ -0,0 +1,71 @@ +package com.craisinlord.antarchy.content.client.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.BaseAshSmokeParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.Mth; + +public final class HypnoticGasParticle extends BaseAshSmokeParticle { + private final float fadeOutStartingPoint; + + private HypnoticGasParticle( + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd, + float scale, + boolean flipped, + SpriteSet sprites + ) { + super(level, x, y, z, 0.1F, 0.1F, 0.1F, xd, yd, zd, scale, sprites, 0.3F, 5, -0.02F, true); + this.rCol = 1.0F; + this.gCol = 1.0F; + this.bCol = 1.0F; + if (flipped) { + this.roll = Mth.PI; + this.oRoll = Mth.PI; + } + this.lifetime = (int) (6.0D / (this.random.nextFloat() * 0.5D + 0.5D) * scale); + this.fadeOutStartingPoint = this.lifetime / 2.0F; + } + + @Override + public void tick() { + super.tick(); + if (this.age > this.fadeOutStartingPoint) { + float agePastFadeStart = this.age - this.fadeOutStartingPoint; + this.setAlpha((this.lifetime - agePastFadeStart) / this.lifetime); + } + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; + } + + public static final class Provider implements ParticleProvider { + private final SpriteSet sprites; + private final boolean flipped; + + public Provider(SpriteSet sprites) { + this(sprites, false); + } + + public Provider(SpriteSet sprites, boolean flipped) { + this.sprites = sprites; + this.flipped = flipped; + } + + @Override + public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xd, double yd, double zd) { + return new HypnoticGasParticle(level, x, y, z, xd, yd, zd, 3.0F, this.flipped, this.sprites); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserBaseParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserBaseParticle.java new file mode 100644 index 00000000..5a4e5f6f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserBaseParticle.java @@ -0,0 +1,77 @@ +package com.craisinlord.antarchy.content.client.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.BaseAshSmokeParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; + +public final class InvertedGeyserBaseParticle extends BaseAshSmokeParticle { + protected InvertedGeyserBaseParticle( + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd, + float scale, + float lifetimeScale, + Direction direction, + SpriteSet sprites + ) { + super(level, x, y, z, scale, scale, scale, xd, yd, zd, lifetimeScale, sprites, 0.0F, 0, 0.0F, true); + this.friction = 0.725F; + this.rCol = 1.0F; + this.gCol = 1.0F; + this.bCol = 1.0F; + if (direction == Direction.DOWN) { + this.roll = Mth.PI; + this.oRoll = Mth.PI; + } + this.yd = Math.abs(this.yd) * direction.getStepY(); + float lifetimeFactor = 0.8F + 0.2F * level.getRandom().nextFloat(); + this.lifetime = (int) (25.0F * lifetimeFactor); + } + + public static final class Provider implements ParticleProvider { + private final SpriteSet sprites; + + public Provider(SpriteSet sprites) { + this.sprites = sprites; + } + + @Override + public Particle createParticle( + InvertedGeyserBaseParticleOptions options, + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd + ) { + double shiftedX = x + (level.getRandom().nextFloat() - 0.5F) * 0.5F; + double shiftedY = y + (level.getRandom().nextFloat() - 0.5F) * 0.5F + 0.2D * options.direction().getStepY(); + double shiftedZ = z + (level.getRandom().nextFloat() - 0.5F) * 0.5F; + float scale = options.burstImpulseBase() + 0.25F + options.fluidBlocks(); + float lifetimeScale = 3.0F + 0.125F * options.fluidBlocks(); + return new InvertedGeyserBaseParticle( + level, + shiftedX, + shiftedY, + shiftedZ, + xd, + yd, + zd, + scale, + lifetimeScale, + options.direction(), + this.sprites + ); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserBaseParticleOptions.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserBaseParticleOptions.java new file mode 100644 index 00000000..d70650e6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserBaseParticleOptions.java @@ -0,0 +1,62 @@ +package com.craisinlord.antarchy.content.client.particle; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import io.netty.buffer.ByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.util.ExtraCodecs; + +public record InvertedGeyserBaseParticleOptions( + ParticleType type, + int fluidBlocks, + float burstImpulseBase, + Direction direction +) implements ParticleOptions { + private static final Codec VERTICAL_DIRECTION_CODEC = Codec.STRING.xmap( + name -> "down".equals(name) ? Direction.DOWN : Direction.UP, + Direction::getName + ); + private static final StreamCodec VERTICAL_DIRECTION_STREAM_CODEC = + ByteBufCodecs.STRING_UTF8.map( + name -> "down".equals(name) ? Direction.DOWN : Direction.UP, + Direction::getName + ); + + public static MapCodec codec(ParticleType type) { + return RecordCodecBuilder.mapCodec(instance -> instance.group( + ExtraCodecs.POSITIVE_INT.fieldOf("fluid_blocks").forGetter(InvertedGeyserBaseParticleOptions::fluidBlocks), + Codec.FLOAT.fieldOf("burst_impulse_base").forGetter(InvertedGeyserBaseParticleOptions::burstImpulseBase), + VERTICAL_DIRECTION_CODEC.fieldOf("direction").forGetter(InvertedGeyserBaseParticleOptions::direction) + ).apply(instance, (fluidBlocks, burstImpulseBase, direction) -> + new InvertedGeyserBaseParticleOptions(type, fluidBlocks, burstImpulseBase, direction))); + } + + public static StreamCodec streamCodec(ParticleType type) { + return new StreamCodec<>() { + @Override + public InvertedGeyserBaseParticleOptions decode(ByteBuf buffer) { + int fluidBlocks = ByteBufCodecs.INT.decode(buffer); + float burstImpulseBase = ByteBufCodecs.FLOAT.decode(buffer); + Direction direction = VERTICAL_DIRECTION_STREAM_CODEC.decode(buffer); + return new InvertedGeyserBaseParticleOptions(type, fluidBlocks, burstImpulseBase, direction); + } + + @Override + public void encode(ByteBuf buffer, InvertedGeyserBaseParticleOptions value) { + ByteBufCodecs.INT.encode(buffer, value.fluidBlocks()); + ByteBufCodecs.FLOAT.encode(buffer, value.burstImpulseBase()); + VERTICAL_DIRECTION_STREAM_CODEC.encode(buffer, value.direction()); + } + }; + } + + @Override + public ParticleType getType() { + return this.type; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserParticleOptions.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserParticleOptions.java new file mode 100644 index 00000000..1177707c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserParticleOptions.java @@ -0,0 +1,57 @@ +package com.craisinlord.antarchy.content.client.particle; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import io.netty.buffer.ByteBuf; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.util.ExtraCodecs; + +public record InvertedGeyserParticleOptions( + ParticleType type, + int fluidBlocks, + Direction direction +) implements ParticleOptions { + private static final Codec VERTICAL_DIRECTION_CODEC = Codec.STRING.xmap( + name -> "down".equals(name) ? Direction.DOWN : Direction.UP, + Direction::getName + ); + private static final StreamCodec VERTICAL_DIRECTION_STREAM_CODEC = + ByteBufCodecs.STRING_UTF8.map( + name -> "down".equals(name) ? Direction.DOWN : Direction.UP, + Direction::getName + ); + + public static MapCodec codec(ParticleType type) { + return RecordCodecBuilder.mapCodec(instance -> instance.group( + ExtraCodecs.POSITIVE_INT.fieldOf("fluid_blocks").forGetter(InvertedGeyserParticleOptions::fluidBlocks), + VERTICAL_DIRECTION_CODEC.fieldOf("direction").forGetter(InvertedGeyserParticleOptions::direction) + ).apply(instance, (fluidBlocks, direction) -> new InvertedGeyserParticleOptions(type, fluidBlocks, direction))); + } + + public static StreamCodec streamCodec(ParticleType type) { + return new StreamCodec<>() { + @Override + public InvertedGeyserParticleOptions decode(ByteBuf buffer) { + int fluidBlocks = ByteBufCodecs.INT.decode(buffer); + Direction direction = VERTICAL_DIRECTION_STREAM_CODEC.decode(buffer); + return new InvertedGeyserParticleOptions(type, fluidBlocks, direction); + } + + @Override + public void encode(ByteBuf buffer, InvertedGeyserParticleOptions value) { + ByteBufCodecs.INT.encode(buffer, value.fluidBlocks()); + VERTICAL_DIRECTION_STREAM_CODEC.encode(buffer, value.direction()); + } + }; + } + + @Override + public ParticleType getType() { + return this.type; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserPlumeParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserPlumeParticle.java new file mode 100644 index 00000000..12987240 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/InvertedGeyserPlumeParticle.java @@ -0,0 +1,114 @@ +package com.craisinlord.antarchy.content.client.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; + +public final class InvertedGeyserPlumeParticle extends TextureSheetParticle { + private final double startY; + private final double limitY; + private final float horizontalSprayX; + private final float horizontalSprayZ; + private final float initialPropulsion; + private final float minSize; + private final float maxSize; + private final SpriteSet sprites; + private final Direction direction; + + public InvertedGeyserPlumeParticle( + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd, + InvertedGeyserParticleOptions options, + SpriteSet sprites + ) { + super(level, x, y, z, xd, yd, zd); + int forceHeight = 5 * Math.max(1, options.fluidBlocks()); + this.hasPhysics = true; + this.speedUpWhenYMotionIsBlocked = true; + this.lifetime = forceHeight * 5; + this.yd = 0.0D; + this.startY = y; + this.direction = options.direction(); + this.limitY = this.startY + this.direction.getStepY() * (forceHeight - 1); + if (this.direction == Direction.DOWN) { + this.roll = Mth.PI; + this.oRoll = Mth.PI; + } + this.horizontalSprayX = (level.getRandom().nextFloat() - 0.5F) * 0.2F; + this.horizontalSprayZ = (level.getRandom().nextFloat() - 0.5F) * 0.2F; + this.friction = 1.0F; + this.initialPropulsion = (options.fluidBlocks() == 1 ? 1.5F : 1.0F) * forceHeight * 1.45F; + this.gravity = -this.direction.getStepY() * this.initialPropulsion; + float baseSize = this.quadSize * 0.75F; + this.minSize = baseSize * (2.0F + forceHeight / 8.0F); + this.maxSize = baseSize * (3.0F + forceHeight / 8.0F); + this.quadSize = this.minSize; + this.sprites = sprites; + this.setSpriteFromAge(sprites); + } + + @Override + public void tick() { + super.tick(); + if (!this.removed && hasReachedTerminalState()) { + this.lifetime = Math.min(this.lifetime, this.age + 5); + this.friction = 0.0F; + this.remove(); + } + + double progress = Mth.clamp((this.y - this.startY) / (this.limitY - this.startY), 0.0D, 1.0D); + double progressCurve = Math.pow(progress, 3.0D); + this.gravity = this.direction.getStepY() * this.initialPropulsion * (float) progressCurve * 0.12F; + this.xd = progress * this.horizontalSprayX; + this.zd = progress * this.horizontalSprayZ; + this.setSpriteFromAge(this.sprites); + this.quadSize = this.minSize + (float) (progress * (this.maxSize - this.minSize)); + } + + private boolean hasReachedTerminalState() { + if (this.direction == Direction.UP) { + return this.yd < 0.0D || this.y > this.limitY || this.y == this.yo; + } + return this.yd > 0.0D || this.y < this.limitY || this.y == this.yo; + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_OPAQUE; + } + + public static final class Provider implements ParticleProvider { + private final SpriteSet sprites; + + public Provider(SpriteSet sprites) { + this.sprites = sprites; + } + + @Override + public Particle createParticle( + InvertedGeyserParticleOptions options, + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd + ) { + double shiftedX = x + (level.getRandom().nextFloat() - 0.5F) * 0.2F; + double shiftedY = y + level.getRandom().nextFloat() * options.direction().getStepY(); + double shiftedZ = z + (level.getRandom().nextFloat() - 0.5F) * 0.2F; + return new InvertedGeyserPlumeParticle(level, shiftedX, shiftedY, shiftedZ, xd, yd, zd, options, this.sprites); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AnimatedHeldItemRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AnimatedHeldItemRenderer.java new file mode 100644 index 00000000..5c21bdb2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AnimatedHeldItemRenderer.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import net.minecraft.world.item.Item; +import software.bernie.geckolib.animatable.GeoAnimatable; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.model.GeoModel; +import software.bernie.geckolib.renderer.GeoItemRenderer; + +public class AnimatedHeldItemRenderer extends GeoItemRenderer { + public AnimatedHeldItemRenderer(GeoModel model) { + super(model); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntCarriedFoodGeoLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntCarriedFoodGeoLayer.java new file mode 100644 index 00000000..cddb1908 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntCarriedFoodGeoLayer.java @@ -0,0 +1,45 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.GeoBone; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.BlockAndItemGeoLayer; + +public class AntCarriedFoodGeoLayer extends BlockAndItemGeoLayer { + private static final String FOOD_BONE = "head"; + + public AntCarriedFoodGeoLayer(GeoRenderer renderer) { + super(renderer); + } + + @Override + protected @Nullable ItemStack getStackForBone(GeoBone bone, BaseAntEntity animatable) { + if (!FOOD_BONE.equals(bone.getName())) { + return super.getStackForBone(bone, animatable); + } + + ItemStack carriedFood = animatable.getCarriedFood(); + return carriedFood.isEmpty() ? super.getStackForBone(bone, animatable) : carriedFood.copy(); + } + + @Override + protected ItemDisplayContext getTransformTypeForStack(GeoBone bone, ItemStack stack, BaseAntEntity animatable) { + return ItemDisplayContext.FIXED; + } + + @Override + protected void renderStackForBone(PoseStack poseStack, GeoBone bone, ItemStack stack, BaseAntEntity animatable, MultiBufferSource bufferSource, float partialTick, int packedLight, int packedOverlay) { + double yOffset = animatable.isDancing() ? -0.055D : -0.04D; + poseStack.translate(0.0D, yOffset, -0.42D); + poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); + poseStack.mulPose(Axis.ZP.rotationDegrees(180.0F)); + poseStack.scale(0.4F, 0.4F, 0.4F); + super.renderStackForBone(poseStack, bone, stack, animatable, bufferSource, partialTick, packedLight, packedOverlay); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntCarriedFoodLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntCarriedFoodLayer.java new file mode 100644 index 00000000..2197e1a6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntCarriedFoodLayer.java @@ -0,0 +1,60 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.model.SilverfishModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; + +public class AntCarriedFoodLayer extends RenderLayer> { + private final ItemRenderer itemRenderer; + + public AntCarriedFoodLayer(RenderLayerParent> renderer, ItemRenderer itemRenderer) { + super(renderer); + this.itemRenderer = itemRenderer; + } + + @Override + public void render( + PoseStack poseStack, + MultiBufferSource buffer, + int packedLight, + T ant, + float limbSwing, + float limbSwingAmount, + float partialTick, + float ageInTicks, + float netHeadYaw, + float headPitch + ) { + ItemStack carriedFood = ant.getCarriedFood(); + if (carriedFood.isEmpty()) { + return; + } + + poseStack.pushPose(); + poseStack.translate(0.0F, 0.08F, -0.06F); + poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); + poseStack.mulPose(Axis.ZP.rotationDegrees(180.0F)); + poseStack.scale(0.22F, 0.22F, 0.22F); + this.itemRenderer.renderStatic( + ant, + carriedFood, + ItemDisplayContext.FIXED, + false, + poseStack, + buffer, + ant.level(), + packedLight, + OverlayTexture.NO_OVERLAY, + ant.getId() + ); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntRenderer.java new file mode 100644 index 00000000..e0bcf371 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntRenderer.java @@ -0,0 +1,36 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.AntModel; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class AntRenderer extends GeoEntityRenderer { + private static final float ADULT_SHADOW_RADIUS = 0.3F; + private static final float ADULT_SCALE = 0.85F; + private static final float BABY_SCALE = 0.5F; + + public AntRenderer(EntityRendererProvider.Context context) { + super(context, new AntModel()); + this.shadowRadius = ADULT_SHADOW_RADIUS; + this.addRenderLayer(new AntCarriedFoodGeoLayer(this)); + } + + @Override + public void preRender(PoseStack poseStack, BaseAntEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + + if (animatable.isBaby()) { + poseStack.scale(ADULT_SCALE * BABY_SCALE, ADULT_SCALE * BABY_SCALE, ADULT_SCALE * BABY_SCALE); + this.shadowRadius = ADULT_SHADOW_RADIUS * BABY_SCALE; + } else { + poseStack.scale(ADULT_SCALE, ADULT_SCALE, ADULT_SCALE); + this.shadowRadius = ADULT_SHADOW_RADIUS; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntiwaterFluidRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntiwaterFluidRenderer.java new file mode 100644 index 00000000..cf4f472d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AntiwaterFluidRenderer.java @@ -0,0 +1,344 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.block.LiquidBlockRenderer; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.Vec3; + +public final class AntiwaterFluidRenderer { + private static final float SURFACE_NUDGE = 0.001F; + + private AntiwaterFluidRenderer() { + } + + public static void render( + BlockAndTintGetter level, + BlockPos pos, + VertexConsumer buffer, + BlockState blockState, + FluidState fluidState, + TextureAtlasSprite stillSprite, + TextureAtlasSprite flowSprite, + TextureAtlasSprite overlaySprite, + int tint + ) { + float alpha = (tint >> 24 & 255) / 255.0F; + float red = (tint >> 16 & 255) / 255.0F; + float green = (tint >> 8 & 255) / 255.0F; + float blue = (tint & 255) / 255.0F; + + BlockState downState = level.getBlockState(pos.below()); + FluidState downFluid = downState.getFluidState(); + BlockState upState = level.getBlockState(pos.above()); + BlockState northState = level.getBlockState(pos.north()); + FluidState northFluid = northState.getFluidState(); + BlockState southState = level.getBlockState(pos.south()); + FluidState southFluid = southState.getFluidState(); + BlockState westState = level.getBlockState(pos.west()); + FluidState westFluid = westState.getFluidState(); + BlockState eastState = level.getBlockState(pos.east()); + FluidState eastFluid = eastState.getFluidState(); + + boolean renderBottomSurface = LiquidBlockRenderer.shouldRenderFace(level, pos, fluidState, blockState, Direction.DOWN, downFluid); + boolean renderNorth = LiquidBlockRenderer.shouldRenderFace(level, pos, fluidState, blockState, Direction.NORTH, northFluid); + boolean renderSouth = LiquidBlockRenderer.shouldRenderFace(level, pos, fluidState, blockState, Direction.SOUTH, southFluid); + boolean renderWest = LiquidBlockRenderer.shouldRenderFace(level, pos, fluidState, blockState, Direction.WEST, westFluid); + boolean renderEast = LiquidBlockRenderer.shouldRenderFace(level, pos, fluidState, blockState, Direction.EAST, eastFluid); + boolean renderAttachedTop = LiquidBlockRenderer.shouldRenderFace(level, pos, fluidState, blockState, Direction.UP, upState.getFluidState()); + + if (!renderBottomSurface && !renderNorth && !renderSouth && !renderWest && !renderEast && !renderAttachedTop) { + return; + } + + float shadeDown = level.getShade(Direction.DOWN, true); + float shadeUp = level.getShade(Direction.UP, true); + float shadeNorth = level.getShade(Direction.NORTH, true); + float shadeWest = level.getShade(Direction.WEST, true); + Fluid fluid = fluidState.getType(); + float centerHeight = getHangingHeight(level, fluid, pos, blockState, fluidState); + float neHeight; + float nwHeight; + float seHeight; + float swHeight; + if (centerHeight >= 1.0F) { + neHeight = 1.0F; + nwHeight = 1.0F; + seHeight = 1.0F; + swHeight = 1.0F; + } else { + float northHeight = getHangingHeight(level, fluid, pos.north(), northState, northFluid); + float southHeight = getHangingHeight(level, fluid, pos.south(), southState, southFluid); + float eastHeight = getHangingHeight(level, fluid, pos.east(), eastState, eastFluid); + float westHeight = getHangingHeight(level, fluid, pos.west(), westState, westFluid); + neHeight = calculateAverageHeight(level, fluid, centerHeight, northHeight, eastHeight, pos.north().east()); + nwHeight = calculateAverageHeight(level, fluid, centerHeight, northHeight, westHeight, pos.north().west()); + seHeight = calculateAverageHeight(level, fluid, centerHeight, southHeight, eastHeight, pos.south().east()); + swHeight = calculateAverageHeight(level, fluid, centerHeight, southHeight, westHeight, pos.south().west()); + } + + float neBottom = 1.0F - neHeight; + float nwBottom = 1.0F - nwHeight; + float seBottom = 1.0F - seHeight; + float swBottom = 1.0F - swHeight; + + float x = pos.getX() & 15; + float y = pos.getY() & 15; + float z = pos.getZ() & 15; + float bottomOffset = renderBottomSurface ? SURFACE_NUDGE : 0.0F; + + if (renderBottomSurface) { + renderBottomFace(level, pos, buffer, fluidState, flowSprite, stillSprite, alpha, red, green, blue, x, y, z, nwBottom, swBottom, seBottom, neBottom); + } + + if (renderAttachedTop) { + float u0 = stillSprite.getU0(); + float u1 = stillSprite.getU1(); + float v0 = stillSprite.getV0(); + float v1 = stillSprite.getV1(); + int light = getLightColor(level, pos.above()); + float r = shadeUp * red; + float g = shadeUp * green; + float b = shadeUp * blue; + emitDoubleSidedQuad( + buffer, + x, y + 1.0F - SURFACE_NUDGE, z + 1.0F, u0, v1, + x, y + 1.0F - SURFACE_NUDGE, z, u0, v0, + x + 1.0F, y + 1.0F - SURFACE_NUDGE, z, u1, v0, + x + 1.0F, y + 1.0F - SURFACE_NUDGE, z + 1.0F, u1, v1, + r, g, b, alpha, light + ); + } + + int sideLight = getLightColor(level, pos); + for (Direction direction : Direction.Plane.HORIZONTAL) { + float leftBottom; + float rightBottom; + float x0; + float x1; + float z0; + float z1; + boolean renderSide; + switch (direction) { + case NORTH -> { + leftBottom = nwBottom; + rightBottom = neBottom; + x0 = x; + x1 = x + 1.0F; + z0 = z + SURFACE_NUDGE; + z1 = z + SURFACE_NUDGE; + renderSide = renderNorth; + } + case SOUTH -> { + leftBottom = seBottom; + rightBottom = swBottom; + x0 = x + 1.0F; + x1 = x; + z0 = z + 1.0F - SURFACE_NUDGE; + z1 = z + 1.0F - SURFACE_NUDGE; + renderSide = renderSouth; + } + case WEST -> { + leftBottom = swBottom; + rightBottom = nwBottom; + x0 = x + SURFACE_NUDGE; + x1 = x + SURFACE_NUDGE; + z0 = z + 1.0F; + z1 = z; + renderSide = renderWest; + } + default -> { + leftBottom = neBottom; + rightBottom = seBottom; + x0 = x + 1.0F - SURFACE_NUDGE; + x1 = x + 1.0F - SURFACE_NUDGE; + z0 = z; + z1 = z + 1.0F; + renderSide = renderEast; + } + } + + if (!renderSide) { + continue; + } + + TextureAtlasSprite sideSprite = flowSprite; + + float u0 = sideSprite.getU(0.0F); + float u1 = sideSprite.getU(0.5F); + float lowerVLeft = sideSprite.getV(0.5F); + float lowerVRight = sideSprite.getV(0.5F); + float upperVLeft = sideSprite.getV(leftBottom * 0.5F); + float upperVRight = sideSprite.getV(rightBottom * 0.5F); + float sideShade = direction.getAxis() == Direction.Axis.Z ? shadeNorth : shadeWest; + float r = shadeUp * sideShade * red; + float g = shadeUp * sideShade * green; + float b = shadeUp * sideShade * blue; + + vertex(buffer, x0, y + leftBottom, z0, r, g, b, alpha, u0, upperVLeft, sideLight); + vertex(buffer, x1, y + rightBottom, z1, r, g, b, alpha, u1, upperVRight, sideLight); + vertex(buffer, x1, y + 1.0F - bottomOffset, z1, r, g, b, alpha, u1, lowerVRight, sideLight); + vertex(buffer, x0, y + 1.0F - bottomOffset, z0, r, g, b, alpha, u0, lowerVLeft, sideLight); + + if (sideSprite != overlaySprite) { + vertex(buffer, x0, y + 1.0F - bottomOffset, z0, r, g, b, alpha, u0, lowerVLeft, sideLight); + vertex(buffer, x1, y + 1.0F - bottomOffset, z1, r, g, b, alpha, u1, lowerVRight, sideLight); + vertex(buffer, x1, y + rightBottom, z1, r, g, b, alpha, u1, upperVRight, sideLight); + vertex(buffer, x0, y + leftBottom, z0, r, g, b, alpha, u0, upperVLeft, sideLight); + } + } + } + + private static void renderBottomFace( + BlockAndTintGetter level, + BlockPos pos, + VertexConsumer buffer, + FluidState fluidState, + TextureAtlasSprite flowSprite, + TextureAtlasSprite stillSprite, + float alpha, + float red, + float green, + float blue, + float x, + float y, + float z, + float nwBottom, + float swBottom, + float seBottom, + float neBottom + ) { + Vec3 flow = fluidState.getFlow(level, pos); + float u0; + float u1; + float u2; + float u3; + float v0; + float v1; + float v2; + float v3; + if (flow.x == 0.0D && flow.z == 0.0D) { + u0 = stillSprite.getU(0.0F); + v0 = stillSprite.getV(0.0F); + u1 = u0; + v1 = stillSprite.getV(1.0F); + u2 = stillSprite.getU(1.0F); + v2 = v1; + u3 = u2; + v3 = v0; + } else { + float angle = (float) Mth.atan2(flow.z, flow.x) + (float) (Math.PI / 2); + float sin = Mth.sin(angle) * 0.25F; + float cos = Mth.cos(angle) * 0.25F; + u0 = flowSprite.getU(0.5F + (-cos - sin)); + v0 = flowSprite.getV(0.5F + (-cos + sin)); + u1 = flowSprite.getU(0.5F + (-cos + sin)); + v1 = flowSprite.getV(0.5F + (cos + sin)); + u2 = flowSprite.getU(0.5F + (cos + sin)); + v2 = flowSprite.getV(0.5F + (cos - sin)); + u3 = flowSprite.getU(0.5F + (cos - sin)); + v3 = flowSprite.getV(0.5F + (-cos - sin)); + } + + int light = getLightColor(level, pos.below()); + float r = level.getShade(Direction.DOWN, true) * red; + float g = level.getShade(Direction.DOWN, true) * green; + float b = level.getShade(Direction.DOWN, true) * blue; + emitDoubleSidedQuad( + buffer, + x, y + nwBottom + SURFACE_NUDGE, z, u0, v0, + x, y + swBottom + SURFACE_NUDGE, z + 1.0F, u1, v1, + x + 1.0F, y + seBottom + SURFACE_NUDGE, z + 1.0F, u2, v2, + x + 1.0F, y + neBottom + SURFACE_NUDGE, z, u3, v3, + r, g, b, alpha, light + ); + } + + private static void emitDoubleSidedQuad( + VertexConsumer buffer, + float x0, float y0, float z0, float u0, float v0, + float x1, float y1, float z1, float u1, float v1, + float x2, float y2, float z2, float u2, float v2, + float x3, float y3, float z3, float u3, float v3, + float red, float green, float blue, float alpha, int light + ) { + vertex(buffer, x0, y0, z0, red, green, blue, alpha, u0, v0, light); + vertex(buffer, x1, y1, z1, red, green, blue, alpha, u1, v1, light); + vertex(buffer, x2, y2, z2, red, green, blue, alpha, u2, v2, light); + vertex(buffer, x3, y3, z3, red, green, blue, alpha, u3, v3, light); + + vertex(buffer, x3, y3, z3, red, green, blue, alpha, u3, v3, light); + vertex(buffer, x2, y2, z2, red, green, blue, alpha, u2, v2, light); + vertex(buffer, x1, y1, z1, red, green, blue, alpha, u1, v1, light); + vertex(buffer, x0, y0, z0, red, green, blue, alpha, u0, v0, light); + } + + private static float calculateAverageHeight(BlockAndTintGetter level, Fluid fluid, float currentHeight, float height1, float height2, BlockPos pos) { + if (height2 >= 1.0F || height1 >= 1.0F) { + return 1.0F; + } + + float[] weighted = new float[2]; + if (height2 > 0.0F || height1 > 0.0F) { + float diagonalHeight = getHangingHeight(level, fluid, pos); + if (diagonalHeight >= 1.0F) { + return 1.0F; + } + addWeightedHeight(weighted, diagonalHeight); + } + + addWeightedHeight(weighted, currentHeight); + addWeightedHeight(weighted, height2); + addWeightedHeight(weighted, height1); + return weighted[0] / weighted[1]; + } + + private static void addWeightedHeight(float[] output, float height) { + if (height >= 0.8F) { + output[0] += height * 10.0F; + output[1] += 10.0F; + } else if (height >= 0.0F) { + output[0] += height; + output[1] += 1.0F; + } + } + + private static float getHangingHeight(BlockAndTintGetter level, Fluid fluid, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return getHangingHeight(level, fluid, pos, state, state.getFluidState()); + } + + private static float getHangingHeight(BlockAndTintGetter level, Fluid fluid, BlockPos pos, BlockState blockState, FluidState fluidState) { + if (!fluid.isSame(fluidState.getType())) { + return !blockState.isSolid() ? 0.0F : -1.0F; + } + + BlockState belowState = level.getBlockState(pos.below()); + return fluid.isSame(belowState.getFluidState().getType()) + ? 1.0F + : fluidState.getOwnHeight(); + } + + private static void vertex(VertexConsumer buffer, float x, float y, float z, float red, float green, float blue, float alpha, float u, float v, int light) { + buffer.addVertex(x, y, z) + .setColor(red, green, blue, alpha) + .setUv(u, v) + .setLight(light) + .setNormal(0.0F, -1.0F, 0.0F); + } + + private static int getLightColor(BlockAndTintGetter level, BlockPos pos) { + int light = LevelRenderer.getLightColor(level, pos); + int aboveLight = LevelRenderer.getLightColor(level, pos.above()); + int block = Math.max(light & 255, aboveLight & 255); + int sky = Math.max((light >> 16) & 255, (aboveLight >> 16) & 255); + return block | (sky << 16); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AppleCowRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AppleCowRenderer.java new file mode 100644 index 00000000..a46c13aa --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/AppleCowRenderer.java @@ -0,0 +1,77 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.AppleCowModel; +import com.craisinlord.antarchy.content.entity.AppleCowEntity; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class AppleCowRenderer extends GeoEntityRenderer { + private static final float ADULT_SHADOW_RADIUS = 0.7F; + private static final float BABY_SCALE = 0.85F; + + public AppleCowRenderer(EntityRendererProvider.Context context) { + super(context, new AppleCowModel()); + this.shadowRadius = ADULT_SHADOW_RADIUS; + this.addRenderLayer(new EnchantedLayer(this)); + } + + @Override + public RenderType getRenderType(AppleCowEntity animatable, ResourceLocation texture, @Nullable MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityCutoutNoCull(texture); + } + + @Override + public void preRender(PoseStack poseStack, AppleCowEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, + @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + + if (animatable.isBaby()) { + poseStack.scale(BABY_SCALE, BABY_SCALE, BABY_SCALE); + this.shadowRadius = ADULT_SHADOW_RADIUS * BABY_SCALE; + } else { + this.shadowRadius = ADULT_SHADOW_RADIUS; + } + } + + private static final class EnchantedLayer extends GeoRenderLayer { + private EnchantedLayer(AppleCowRenderer renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, AppleCowEntity animatable, BakedGeoModel bakedModel, @Nullable RenderType renderType, + MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, float partialTick, + int packedLight, int packedOverlay) { + if (!(animatable instanceof EnchantedGoldenAppleCow)) { + return; + } + + ResourceLocation texture = AppleCowModel.textureFor(animatable); + RenderType foilType = RenderType.entityCutoutNoCull(texture); + VertexConsumer foilBuffer = ItemRenderer.getFoilBufferDirect(bufferSource, foilType, false, true); + this.getRenderer().reRender( + bakedModel, + poseStack, + bufferSource, + animatable, + foilType, + foilBuffer, + partialTick, + packedLight, + OverlayTexture.NO_OVERLAY, + 0xFFFFFFFF + ); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BasiliskRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BasiliskRenderer.java new file mode 100644 index 00000000..76d644ea --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BasiliskRenderer.java @@ -0,0 +1,14 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.BasiliskModel; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class BasiliskRenderer extends GeoEntityRenderer { + + public BasiliskRenderer(EntityRendererProvider.Context context) { + super(context, new BasiliskModel()); + this.shadowRadius = 1.0F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BedBugRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BedBugRenderer.java new file mode 100644 index 00000000..846857f2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BedBugRenderer.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.BedBugModel; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class BedBugRenderer extends GeoEntityRenderer { + private static final float ADULT_SCALE = 0.9F; + private static final float BABY_SCALE = 0.38F; + private static final float ADULT_SHADOW_RADIUS = 0.65F; + + public BedBugRenderer(EntityRendererProvider.Context context) { + super(context, new BedBugModel()); + this.shadowRadius = ADULT_SHADOW_RADIUS; + this.withScale(ADULT_SCALE); + } + + @Override + public void preRender(PoseStack poseStack, BedBugEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + + if (animatable.isBaby()) { + poseStack.scale(BABY_SCALE, BABY_SCALE, BABY_SCALE); + this.shadowRadius = ADULT_SHADOW_RADIUS * BABY_SCALE; + } else { + this.shadowRadius = ADULT_SHADOW_RADIUS; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BomberRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BomberRenderer.java new file mode 100644 index 00000000..eb8e5f63 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BomberRenderer.java @@ -0,0 +1,68 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.model.BomberModel; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class BomberRenderer extends GeoEntityRenderer { + private static final ResourceLocation TEXTURE = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/bomber.png"); + + public BomberRenderer(EntityRendererProvider.Context context) { + super(context, new BomberModel()); + this.shadowRadius = 0.12F; + this.addRenderLayer(new BomberFlashLayer(this)); + } + + @Override + public RenderType getRenderType(BomberEntity animatable, ResourceLocation texture, @Nullable MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityCutoutNoCull(texture); + } + + @Override + public void preRender(PoseStack poseStack, BomberEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + this.shadowRadius = 0.12F; + } + + public static final class BomberFlashLayer extends GeoRenderLayer { + private BomberFlashLayer(GeoEntityRenderer renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, BomberEntity animatable, BakedGeoModel bakedModel, @Nullable RenderType renderType, + MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, float partialTick, + int packedLight, int packedOverlay) { + if (!animatable.isFlashing()) { + return; + } + + RenderType flashType = RenderType.eyes(TEXTURE); + VertexConsumer flashBuffer = bufferSource.getBuffer(flashType); + this.getRenderer().reRender( + bakedModel, + poseStack, + bufferSource, + animatable, + flashType, + flashBuffer, + partialTick, + 0xF000F0, + OverlayTexture.NO_OVERLAY, + 0xFFFFFFFF + ); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyElytraLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyElytraLayer.java new file mode 100644 index 00000000..af43a607 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyElytraLayer.java @@ -0,0 +1,81 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.BrutalflyElytraClientState; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.mixins.client.ElytraModelAccessor; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.ElytraModel; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.geom.ModelPart; + +public final class BrutalflyElytraLayer extends RenderLayer> { + private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/models/armor/brutalfly_wings.png"); + private final ElytraModel model; + + public BrutalflyElytraLayer(RenderLayerParent> renderer) { + super(renderer); + this.model = new ElytraModel<>(Minecraft.getInstance().getEntityModels().bakeLayer(ModelLayers.ELYTRA)); + } + + @Override + public void render( + PoseStack poseStack, + MultiBufferSource buffer, + int packedLight, + AbstractClientPlayer player, + float limbSwing, + float limbSwingAmount, + float partialTick, + float ageInTicks, + float netHeadYaw, + float headPitch + ) { + if (!BrutalflyElytraItem.isWearingBrutalflyElytra(player) || player.isInvisible()) { + return; + } + + ItemStack chestStack = player.getItemBySlot(EquipmentSlot.CHEST); + BrutalflyElytraClientState.AnimationState animationState = BrutalflyElytraClientState.get(player.getId()); + float progress = animationState != null ? animationState.progress(partialTick) : 0.0F; + + poseStack.pushPose(); + this.getParentModel().copyPropertiesTo(this.model); + if (player.isCrouching()) { + poseStack.translate(0.0F, 0.0F, 0.125F); + } + this.model.setupAnim(player, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + + ElytraModelAccessor accessor = (ElytraModelAccessor) (Object) this.model; + ModelPart leftWing = accessor.antarchy$getLeftWing(); + ModelPart rightWing = accessor.antarchy$getRightWing(); + float strength = animationState != null ? animationState.strength() : 0.0F; + float flap = net.minecraft.util.Mth.sin(progress * net.minecraft.util.Mth.PI); + float liftOffset = flap * (2.8F + strength * 0.8F); + float pitchOffset = flap * (0.35F + strength * 0.12F); + float tipCurl = flap * (0.30F + strength * 0.10F); + leftWing.y -= liftOffset; + rightWing.y -= liftOffset; + leftWing.xRot -= pitchOffset; + rightWing.xRot -= pitchOffset; + leftWing.zRot -= tipCurl; + rightWing.zRot += tipCurl; + + VertexConsumer consumer = ItemRenderer.getFoilBufferDirect(buffer, RenderType.armorCutoutNoCull(TEXTURE), false, chestStack.hasFoil()); + this.model.renderToBuffer(poseStack, consumer, packedLight, OverlayTexture.NO_OVERLAY); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyOrbRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyOrbRenderer.java new file mode 100644 index 00000000..3511f13a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyOrbRenderer.java @@ -0,0 +1,89 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import org.joml.Matrix4f; + +public class BrutalflyOrbRenderer extends EntityRenderer { + private static final ResourceLocation ORB_TEXTURE = + ResourceLocation.withDefaultNamespace("textures/entity/enderdragon/dragon_fireball.png"); + + public BrutalflyOrbRenderer(EntityRendererProvider.Context context) { + super(context); + } + + @Override + protected int getBlockLightLevel(BrutalflyOrbEntity entity, BlockPos pos) { + return 15; + } + + @Override + public void render(BrutalflyOrbEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight) { + poseStack.pushPose(); + poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation()); + + float scale = entity.isLingeringOrb() ? entity.getOrbRadius(partialTick) * 0.38F : 0.8F; + poseStack.scale(scale, scale, scale); + + float red; + float green; + float blue; + if (entity.getOrbVariant() == BrutalflyOrbEntity.OrbVariant.POISON) { + red = 0.32F; + green = 0.92F; + blue = 0.26F; + } else { + red = 1.0F; + green = 0.62F; + blue = 0.08F; + } + + float alpha = entity.isLingeringOrb() ? 0.72F : 0.95F; + VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityTranslucent(ORB_TEXTURE)); + PoseStack.Pose pose = poseStack.last(); + Matrix4f matrix4f = pose.pose(); + + addVertex(vertexConsumer, pose, matrix4f, -0.5F, -0.5F, 0.0F, 1.0F, red, green, blue, alpha, packedLight); + addVertex(vertexConsumer, pose, matrix4f, 0.5F, -0.5F, 1.0F, 1.0F, red, green, blue, alpha, packedLight); + addVertex(vertexConsumer, pose, matrix4f, 0.5F, 0.5F, 1.0F, 0.0F, red, green, blue, alpha, packedLight); + addVertex(vertexConsumer, pose, matrix4f, -0.5F, 0.5F, 0.0F, 0.0F, red, green, blue, alpha, packedLight); + + poseStack.popPose(); + super.render(entity, entityYaw, partialTick, poseStack, buffer, packedLight); + } + + private static void addVertex( + VertexConsumer vertexConsumer, + PoseStack.Pose pose, + Matrix4f matrix4f, + float x, + float y, + float u, + float v, + float red, + float green, + float blue, + float alpha, + int packedLight + ) { + vertexConsumer.addVertex(matrix4f, x, y, 0.0F) + .setColor(red, green, blue, alpha) + .setUv(u, v) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(packedLight) + .setNormal(pose, 0.0F, 0.0F, 1.0F); + } + + @Override + public ResourceLocation getTextureLocation(BrutalflyOrbEntity entity) { + return ORB_TEXTURE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyRenderer.java new file mode 100644 index 00000000..a5d7f88d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/BrutalflyRenderer.java @@ -0,0 +1,56 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.BrutalflyModel; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class BrutalflyRenderer extends GeoEntityRenderer { + + private static final double COCOONED_VISUAL_Y_OFFSET = 1.0D; + + public BrutalflyRenderer(EntityRendererProvider.Context context) { + super(context, new BrutalflyModel()); + this.shadowRadius = 1.35F; + } + + @Override + public RenderType getRenderType(BrutalflyEntity animatable, ResourceLocation texture, @Nullable MultiBufferSource bufferSource, float partialTick) { + if (animatable.isCocooned()) { + return RenderType.entityCutoutNoCull(texture); + } + + return super.getRenderType(animatable, texture, bufferSource, partialTick); + } + + @Override + public void preRender(PoseStack poseStack, BrutalflyEntity animatable, BakedGeoModel model, + @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, + boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + if (animatable.isCocooned()) { + this.shadowRadius = 0.25F; + poseStack.translate(0.0D, COCOONED_VISUAL_Y_OFFSET, 0.0D); + } else { + this.shadowRadius = 1.35F; + } + } + + @Override + protected int getBlockLightLevel(BrutalflyEntity entity, BlockPos pos) { + return entity.isCocooned() ? 8 : super.getBlockLightLevel(entity, pos); + } + + @Override + protected float getDeathMaxRotation(BrutalflyEntity animatable) { + return 0.0F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ButterflyRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ButterflyRenderer.java new file mode 100644 index 00000000..42f37a47 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ButterflyRenderer.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.ButterflyModel; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class ButterflyRenderer extends GeoEntityRenderer { + private static final float VISUAL_SCALE = 0.8F; + private static final float SHADOW_RADIUS = 0.18F; + + public ButterflyRenderer(EntityRendererProvider.Context context) { + super(context, new ButterflyModel()); + this.shadowRadius = SHADOW_RADIUS; + this.withScale(VISUAL_SCALE); + } + + @Override + public void preRender(PoseStack poseStack, ButterflyEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + this.shadowRadius = SHADOW_RADIUS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CaterpillarRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CaterpillarRenderer.java new file mode 100644 index 00000000..1e770a21 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CaterpillarRenderer.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.CaterpillarModel; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class CaterpillarRenderer extends GeoEntityRenderer { + private static final float VISUAL_SCALE = 0.8F; + private static final float SHADOW_RADIUS = 0.25F; + + public CaterpillarRenderer(EntityRendererProvider.Context context) { + super(context, new CaterpillarModel()); + this.shadowRadius = SHADOW_RADIUS; + this.withScale(VISUAL_SCALE); + } + + @Override + public void preRender(PoseStack poseStack, CaterpillarEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + this.shadowRadius = SHADOW_RADIUS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CloudSharkRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CloudSharkRenderer.java new file mode 100644 index 00000000..bc99df12 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CloudSharkRenderer.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.CloudSharkModel; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class CloudSharkRenderer extends GeoEntityRenderer { + private static final float SHADOW_RADIUS = 0.6F; + + public CloudSharkRenderer(EntityRendererProvider.Context context) { + super(context, new CloudSharkModel()); + this.shadowRadius = SHADOW_RADIUS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/DiamondMinecartRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/DiamondMinecartRenderer.java new file mode 100644 index 00000000..d579d366 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/DiamondMinecartRenderer.java @@ -0,0 +1,21 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MinecartRenderer; +import net.minecraft.resources.ResourceLocation; + +public class DiamondMinecartRenderer extends MinecartRenderer { + private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/diamond_minecart.png"); + + public DiamondMinecartRenderer(EntityRendererProvider.Context context) { + super(context, ModelLayers.MINECART); + } + + @Override + public ResourceLocation getTextureLocation(DiamondMinecartEntity entity) { + return TEXTURE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/DrTrayaurusRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/DrTrayaurusRenderer.java new file mode 100644 index 00000000..2dc83cb1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/DrTrayaurusRenderer.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import net.minecraft.client.model.VillagerModel; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; + +public class DrTrayaurusRenderer extends MobRenderer> { + private final ResourceLocation texture; + + public DrTrayaurusRenderer(EntityRendererProvider.Context context, ResourceLocation texture) { + super(context, new VillagerModel<>(context.bakeLayer(ModelLayers.VILLAGER)), 0.5F); + this.texture = texture; + } + + @Override + public ResourceLocation getTextureLocation(DrTrayaurusEntity entity) { + return this.texture; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/EasterBunnyRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/EasterBunnyRenderer.java new file mode 100644 index 00000000..20c4d1d9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/EasterBunnyRenderer.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.EasterBunnyModel; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class EasterBunnyRenderer extends GeoEntityRenderer { + private static final float SHADOW_RADIUS = 0.3F; + + public EasterBunnyRenderer(EntityRendererProvider.Context context) { + super(context, new EasterBunnyModel()); + this.shadowRadius = SHADOW_RADIUS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ElythiaSkyRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ElythiaSkyRenderer.java new file mode 100644 index 00000000..51673580 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ElythiaSkyRenderer.java @@ -0,0 +1,361 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexBuffer; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexSorting; + +import java.util.Random; +import com.mojang.math.Axis; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; +import org.joml.Matrix4fStack; + +public final class ElythiaSkyRenderer { + public static final ResourceKey ELYTHIA = ResourceKey.create( + Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "elythia") + ); + private static final ResourceLocation SUN_TEXTURE = ResourceLocation.withDefaultNamespace("textures/environment/sun.png"); + private static final ResourceLocation MOON_TEXTURE = ResourceLocation.withDefaultNamespace("textures/environment/moon_phases.png"); + private static final float SKY_RADIUS = 100.0F; + private static final float BODY_SIZE = 32.0F; + + @org.jetbrains.annotations.Nullable + private static VertexBuffer coloredStarBuffer = null; + + private ElythiaSkyRenderer() { + } + + public static boolean shouldRender(ClientLevel level) { + return level.dimension().equals(ELYTHIA); + } + + public static void render( + Minecraft minecraft, + ClientLevel level, + PoseStack poseStack, + Matrix4f projectionMatrix, + float partialTick, + Camera camera, + boolean isFoggy, + Runnable setupFog, + VertexBuffer skyBuffer, + VertexBuffer darkBuffer, + VertexBuffer starBuffer + ) { + setupFog.run(); + if (isFoggy || minecraft.options.hideLightningFlash().get() || minecraft.gameRenderer.getMainCamera() != camera) { + return; + } + + Vec3 skyColor = level.getSkyColor(camera.getPosition(), partialTick); + float red = (float) skyColor.x; + float green = (float) skyColor.y; + float blue = (float) skyColor.z; + float rainLevel = level.getRainLevel(partialTick); + float starBrightness = level.getStarBrightness(partialTick) * (1.0F - rainLevel); + float timeOfDay = level.getTimeOfDay(partialTick); + + // Blend in a dark purple when it's night (starBrightness > 0) + float nightPurpleR = 0.055F; + float nightPurpleG = 0.010F; + float nightPurpleB = 0.120F; + red = red + nightPurpleR * starBrightness; + green = green + nightPurpleG * starBrightness; + blue = blue + nightPurpleB * starBrightness; + + RenderSystem.depthMask(false); + RenderSystem.setShaderColor(red, green, blue, 1.0F); + skyBuffer.bind(); + skyBuffer.drawWithShader(poseStack.last().pose(), projectionMatrix, GameRenderer.getPositionShader()); + VertexBuffer.unbind(); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + + renderSunrise(poseStack, projectionMatrix, level, partialTick, rainLevel); + renderCelestialBodies(poseStack.last().pose(), projectionMatrix, timeOfDay, rainLevel); + + if (starBrightness > 0.1F) { + if (coloredStarBuffer == null) { + coloredStarBuffer = buildColoredStarBuffer(); + } + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.setShaderColor(starBrightness, starBrightness, starBrightness, starBrightness); + coloredStarBuffer.bind(); + coloredStarBuffer.drawWithShader(poseStack.last().pose(), projectionMatrix, GameRenderer.getPositionColorShader()); + VertexBuffer.unbind(); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.disableBlend(); + } + + if (camera.getEntity() != null) { + double horizon = camera.getEntity().getEyePosition(partialTick).y - level.getLevelData().getHorizonHeight(level); + if (horizon < 0.0D) { + poseStack.pushPose(); + poseStack.translate(0.0F, 12.0F, 0.0F); + darkBuffer.bind(); + darkBuffer.drawWithShader(poseStack.last().pose(), projectionMatrix, GameRenderer.getPositionShader()); + VertexBuffer.unbind(); + poseStack.popPose(); + } + } + + RenderSystem.depthMask(true); + } + + private static VertexBuffer buildColoredStarBuffer() { + Random random = new Random(10842L); + BufferBuilder builder = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + + for (int i = 0; i < 1500; i++) { + double x = random.nextFloat() * 2.0F - 1.0F; + double y = random.nextFloat() * 2.0F - 1.0F; + double z = random.nextFloat() * 2.0F - 1.0F; + double size = 0.15F + random.nextFloat() * 0.1F; + double lenSq = x * x + y * y + z * z; + if (lenSq < 1.0D && lenSq > 0.01D) { + double len = 1.0D / Math.sqrt(lenSq); + x *= len; y *= len; z *= len; + double sx = x * 100.0D, sy = y * 100.0D, sz = z * 100.0D; + double yaw = Math.atan2(x, z); + double sinYaw = Math.sin(yaw), cosYaw = Math.cos(yaw); + double pitch = Math.atan2(Math.sqrt(x * x + z * z), y); + double sinPitch = Math.sin(pitch), cosPitch = Math.cos(pitch); + double rot = random.nextDouble() * Math.PI * 2.0D; + double sinRot = Math.sin(rot), cosRot = Math.cos(rot); + + float[] color = pickStarColor(random); + + for (int j = 0; j < 4; j++) { + double u = (j & 2) - 1; + double v = (j + 1 & 2) - 1; + double px = u * cosRot - v * sinRot; + double py = v * cosRot + u * sinRot; + double qx = px * sinPitch; + double qy = -px * cosPitch; + double rx = qy * sinYaw - py * cosYaw; + double ry = py * sinYaw + qy * cosYaw; + builder.addVertex((float)(sx + rx * size), (float)(sy + qx * size), (float)(sz + ry * size)) + .setColor(color[0], color[1], color[2], 1.0F); + } + } + } + + MeshData mesh = builder.buildOrThrow(); + VertexBuffer buffer = new VertexBuffer(VertexBuffer.Usage.STATIC); + buffer.bind(); + buffer.upload(mesh); + VertexBuffer.unbind(); + return buffer; + } + + private static float[] pickStarColor(Random random) { + float roll = random.nextFloat(); + if (roll < 0.80F) return new float[]{1.0F, 1.0F, 1.0F}; // white + if (roll < 0.87F) return new float[]{0.85F, 0.60F, 1.00F}; // light purple + if (roll < 0.94F) return new float[]{1.00F, 0.95F, 0.50F}; // yellow + return new float[]{1.0F, 0.45F, 0.45F}; // red + } + + private static void renderSunrise(PoseStack poseStack, Matrix4f projectionMatrix, ClientLevel level, float partialTick, float rainLevel) { + float[] sunriseColor = level.effects().getSunriseColor(level.getTimeOfDay(partialTick), partialTick); + if (sunriseColor == null || rainLevel >= 1.0F) { + return; + } + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.backupProjectionMatrix(); + RenderSystem.setProjectionMatrix(projectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN); + + poseStack.pushPose(); + poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); + poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.sin(level.getSunAngle(partialTick)) < 0.0F ? 180.0F : 0.0F)); + poseStack.mulPose(Axis.ZP.rotationDegrees(90.0F)); + + Matrix4f matrix = poseStack.last().pose(); + BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_COLOR); + buffer.addVertex(matrix, 0.0F, 100.0F, 0.0F).setColor(sunriseColor[0], sunriseColor[1], sunriseColor[2], sunriseColor[3] * (1.0F - rainLevel)); + for (int i = 0; i <= 32; i++) { + float angle = i * Mth.TWO_PI / 32.0F; + float x = Mth.sin(angle) * 120.0F; + float y = Mth.cos(angle) * 120.0F; + buffer.addVertex(matrix, x, y, -5.0F).setColor(sunriseColor[0], sunriseColor[1], sunriseColor[2], 0.0F); + } + BufferUploader.drawWithShader(buffer.buildOrThrow()); + + poseStack.popPose(); + RenderSystem.restoreProjectionMatrix(); + RenderSystem.enableCull(); + RenderSystem.disableBlend(); + } + + private static void renderCelestialBodies(Matrix4f modelViewMatrix, Matrix4f projectionMatrix, float timeOfDay, float rainLevel) { + float t = timeOfDay * 360.0F; + + // Purple sun + float sun1Orbit = t; + renderBodyGlow(modelViewMatrix, projectionMatrix, sun1Orbit, 0.0F, 0xD06BFF, rainLevel, 70.0F); + renderTexturedBody(modelViewMatrix, projectionMatrix, sun1Orbit, 0.0F, 38.0F, 0xD06BFF, 1.0F, SUN_TEXTURE, false, 0, t * 0.8F); + + // Orange sub + float sun2Orbit = t * 0.73F + 54.0F; + renderBodyGlow(modelViewMatrix, projectionMatrix, sun2Orbit, -14.0F, 0xFF9A33, rainLevel, 70.0F); + renderTexturedBody(modelViewMatrix, projectionMatrix, sun2Orbit, -14.0F, 16.0F, 0xFF9A33, 1.0F, SUN_TEXTURE, false, 0, -t * 0.5F); + + // Dark green moon + float moon2Orbit = t * 1.27F + 228.0F; + renderBodyGlow(modelViewMatrix, projectionMatrix, moon2Orbit, 36.0F, 0x4FD84D, rainLevel, 78.0F); + renderTexturedBody(modelViewMatrix, projectionMatrix, moon2Orbit, 36.0F, 14.0F, 0x4FD84D, 1.0F, MOON_TEXTURE, true, 1, t * 0.3F); + + // Light green moon + float moon3Orbit = t * 0.38F + 122.0F; + renderBodyGlow(modelViewMatrix, projectionMatrix, moon3Orbit, -34.0F, 0xA3FF8F, rainLevel, 78.0F); + renderTexturedBody(modelViewMatrix, projectionMatrix, moon3Orbit, -34.0F, 12.0F, 0xA3FF8F, 1.0F, MOON_TEXTURE, true, 2, -t * 0.6F); + } + + private static void renderBodyGlow( + Matrix4f modelViewMatrix, + Matrix4f projectionMatrix, + float orbitDegrees, + float yawDegrees, + int rgb, + float rainLevel, + float glowRadius + ) { + float orbitRad = (float) Math.toRadians(orbitDegrees); + float yawRad = (float) Math.toRadians(yawDegrees); + + float bodyHeight = Mth.cos(yawRad) * Mth.cos(orbitRad); + + float horizonGlow = 1.0F - Mth.clamp(Math.abs(bodyHeight) * 2.0F, 0.0F, 1.0F); + float visibility = Mth.clamp((bodyHeight + 0.4F) * 2.5F, 0.0F, 1.0F); + float alpha = horizonGlow * visibility * 0.65F * (1.0F - rainLevel); + + if (alpha <= 0.01F) { + return; + } + + float r = ((rgb >> 16) & 0xFF) / 255.0F; + float g = ((rgb >> 8) & 0xFF) / 255.0F; + float b = (rgb & 0xFF) / 255.0F; + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.backupProjectionMatrix(); + RenderSystem.setProjectionMatrix(projectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN); + + Matrix4fStack modelViewStack = RenderSystem.getModelViewStack(); + modelViewStack.pushMatrix(); + modelViewStack.set(modelViewMatrix); + modelViewStack.rotateX(orbitRad); + modelViewStack.rotateZ(yawRad); + RenderSystem.applyModelViewMatrix(); + + BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_COLOR); + buffer.addVertex(0.0F, SKY_RADIUS, 0.0F).setColor(r, g, b, alpha); + for (int i = 0; i <= 16; i++) { + float angle = i * Mth.TWO_PI / 16.0F; + buffer.addVertex(Mth.sin(angle) * glowRadius, SKY_RADIUS, Mth.cos(angle) * glowRadius).setColor(r, g, b, 0.0F); + } + BufferUploader.drawWithShader(buffer.buildOrThrow()); + + modelViewStack.popMatrix(); + RenderSystem.applyModelViewMatrix(); + RenderSystem.restoreProjectionMatrix(); + RenderSystem.enableCull(); + RenderSystem.disableBlend(); + } + + private static void renderTexturedBody( + Matrix4f modelViewMatrix, + Matrix4f projectionMatrix, + float orbitDegrees, + float yawDegrees, + float radius, + int rgb, + float alpha, + ResourceLocation texture, + boolean usePhaseSheet, + int phaseIndex, + float selfRotationDegrees + ) { + RenderSystem.enableBlend(); + RenderSystem.blendFuncSeparate( + GlStateManager.SourceFactor.ONE, + GlStateManager.DestFactor.ONE, + GlStateManager.SourceFactor.ONE, + GlStateManager.DestFactor.ZERO + ); + RenderSystem.disableCull(); + RenderSystem.setShaderColor( + ((rgb >> 16) & 0xFF) / 255.0F, + ((rgb >> 8) & 0xFF) / 255.0F, + (rgb & 0xFF) / 255.0F, + alpha + ); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, texture); + RenderSystem.backupProjectionMatrix(); + RenderSystem.setProjectionMatrix(projectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN); + + Matrix4fStack modelViewStack = RenderSystem.getModelViewStack(); + modelViewStack.pushMatrix(); + modelViewStack.set(modelViewMatrix); + modelViewStack.rotateX((float) Math.toRadians(orbitDegrees)); + modelViewStack.rotateZ((float) Math.toRadians(yawDegrees)); + modelViewStack.rotateY((float) Math.toRadians(selfRotationDegrees)); + RenderSystem.applyModelViewMatrix(); + + BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); + float halfSize = BODY_SIZE * 0.5F * (radius / 22.0F); + float minU = 0.0F; + float maxU = 1.0F; + float minV = 0.0F; + float maxV = 1.0F; + if (usePhaseSheet) { + int phaseX = phaseIndex % 4; + int phaseY = phaseIndex / 4; + minU = phaseX / 4.0F; + maxU = (phaseX + 1) / 4.0F; + minV = phaseY / 2.0F; + maxV = (phaseY + 1) / 2.0F; + } + + buffer.addVertex(-halfSize, SKY_RADIUS, -halfSize).setUv(minU, minV); + buffer.addVertex(-halfSize, SKY_RADIUS, halfSize).setUv(minU, maxV); + buffer.addVertex(halfSize, SKY_RADIUS, halfSize).setUv(maxU, maxV); + buffer.addVertex(halfSize, SKY_RADIUS, -halfSize).setUv(maxU, minV); + BufferUploader.drawWithShader(buffer.buildOrThrow()); + + modelViewStack.popMatrix(); + RenderSystem.applyModelViewMatrix(); + RenderSystem.restoreProjectionMatrix(); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.defaultBlendFunc(); + RenderSystem.enableCull(); + RenderSystem.disableBlend(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/EmperorScorpionRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/EmperorScorpionRenderer.java new file mode 100644 index 00000000..013c777a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/EmperorScorpionRenderer.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.EmperorScorpionModel; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class EmperorScorpionRenderer extends GeoEntityRenderer { + + public EmperorScorpionRenderer(EntityRendererProvider.Context context) { + super(context, new EmperorScorpionModel()); + this.shadowRadius = 3.0F; + this.withScale(1.5F); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/FlyingSquirrelRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/FlyingSquirrelRenderer.java new file mode 100644 index 00000000..5593eee3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/FlyingSquirrelRenderer.java @@ -0,0 +1,53 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.FlyingSquirrelModel; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Axis; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class FlyingSquirrelRenderer extends GeoEntityRenderer { + private static final float ADULT_SHADOW_RADIUS = 0.3F; + private static final float BABY_SCALE = 0.6F; + + public FlyingSquirrelRenderer(EntityRendererProvider.Context context) { + super(context, new FlyingSquirrelModel()); + this.shadowRadius = ADULT_SHADOW_RADIUS; + } + + @Override + public void preRender(PoseStack poseStack, FlyingSquirrelEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + + if (animatable.isBaby()) { + poseStack.scale(BABY_SCALE, BABY_SCALE, BABY_SCALE); + this.shadowRadius = ADULT_SHADOW_RADIUS * BABY_SCALE; + } else { + this.shadowRadius = ADULT_SHADOW_RADIUS; + } + } + + @Override + protected void applyRotations(FlyingSquirrelEntity animatable, PoseStack poseStack, float ageInTicks, float rotationYaw, float partialTick, float nativeScale) { + float appliedYaw = rotationYaw; + float appliedPitch = Mth.lerp(partialTick, animatable.xRotO, animatable.getXRot()); + + if (animatable.isOnShoulder() && animatable.getVehicle() instanceof Player player) { + appliedYaw = Mth.rotLerp(partialTick, player.yHeadRotO, player.yHeadRot); + appliedPitch = Mth.lerp(partialTick, player.xRotO, player.getXRot()); + } + + super.applyRotations(animatable, poseStack, ageInTicks, appliedYaw, partialTick, nativeScale); + + if (animatable.isOnShoulder()) { + poseStack.mulPose(Axis.XP.rotationDegrees(-appliedPitch)); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/HushProjectileRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/HushProjectileRenderer.java new file mode 100644 index 00000000..69c58806 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/HushProjectileRenderer.java @@ -0,0 +1,68 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import org.joml.Matrix4f; + +public class HushProjectileRenderer extends EntityRenderer { + private static final ResourceLocation ORB_TEXTURE = + ResourceLocation.withDefaultNamespace("textures/entity/enderdragon/dragon_fireball.png"); + + public HushProjectileRenderer(EntityRendererProvider.Context context) { + super(context); + } + + @Override + protected int getBlockLightLevel(HushProjectileEntity entity, BlockPos pos) { + return 15; + } + + @Override + public void render(HushProjectileEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight) { + poseStack.pushPose(); + poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation()); + poseStack.scale(0.55F, 0.55F, 0.55F); + + VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityTranslucent(ORB_TEXTURE)); + PoseStack.Pose pose = poseStack.last(); + Matrix4f matrix4f = pose.pose(); + addVertex(vertexConsumer, pose, matrix4f, -0.5F, -0.5F, 0.0F, 1.0F, packedLight); + addVertex(vertexConsumer, pose, matrix4f, 0.5F, -0.5F, 1.0F, 1.0F, packedLight); + addVertex(vertexConsumer, pose, matrix4f, 0.5F, 0.5F, 1.0F, 0.0F, packedLight); + addVertex(vertexConsumer, pose, matrix4f, -0.5F, 0.5F, 0.0F, 0.0F, packedLight); + + poseStack.popPose(); + super.render(entity, entityYaw, partialTick, poseStack, buffer, packedLight); + } + + private static void addVertex( + VertexConsumer vertexConsumer, + PoseStack.Pose pose, + Matrix4f matrix4f, + float x, + float y, + float u, + float v, + int packedLight + ) { + vertexConsumer.addVertex(matrix4f, x, y, 0.0F) + .setColor(1.0F, 0.08F, 0.08F, 0.95F) + .setUv(u, v) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(packedLight) + .setNormal(pose, 0.0F, 0.0F, 1.0F); + } + + @Override + public ResourceLocation getTextureLocation(HushProjectileEntity entity) { + return ORB_TEXTURE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/KrakenRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/KrakenRenderer.java new file mode 100644 index 00000000..153fd33f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/KrakenRenderer.java @@ -0,0 +1,14 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.KrakenModel; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class KrakenRenderer extends GeoEntityRenderer { + public KrakenRenderer(EntityRendererProvider.Context context) { + super(context, new KrakenModel()); + this.shadowRadius = 3.6F; + this.withScale(3.0F); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java new file mode 100644 index 00000000..3722cfa6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java @@ -0,0 +1,144 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; + +public class LucidBoltRenderer extends EntityRenderer { + private static final ResourceLocation BEAM_TEXTURE = ResourceLocation.withDefaultNamespace("textures/entity/beacon_beam.png"); + private static final Vec3 WORLD_UP = new Vec3(0.0D, 1.0D, 0.0D); + private static final Vec3 WORLD_RIGHT = new Vec3(1.0D, 0.0D, 0.0D); + private static final Vec3 WORLD_FORWARD = new Vec3(0.0D, 0.0D, 1.0D); + + public LucidBoltRenderer(EntityRendererProvider.Context context) { + super(context); + } + + @Override + protected int getBlockLightLevel(LucidBoltEntity entity, BlockPos pos) { + return 15; + } + + @Override + public void render(LucidBoltEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight) { + poseStack.pushPose(); + + Vec3 forward = getRenderDirection(entity, partialTick); + Vec3 right = createPerpendicular(forward, WORLD_UP); + Vec3 up = forward.cross(right); + if (up.lengthSqr() < 1.0E-6D) { + up = WORLD_UP; + } else { + up = up.normalize(); + } + + float pulse = 0.85F + 0.15F * Mth.sin((entity.tickCount + partialTick) * 0.55F); + float alpha = 0.92F * pulse; + Vec3 delta = entity.getDeltaMovement(); + float length = (float) Mth.clamp(delta.length() * 2.3D + 0.95D, 0.9D, 2.5D); + + VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityTranslucent(BEAM_TEXTURE)); + PoseStack.Pose pose = poseStack.last(); + + renderBeamRibbon(pose, vertexConsumer, packedLight, 1.0F, 0.18F, 0.08F, alpha, 0.13F, forward, right, length); + renderBeamRibbon(pose, vertexConsumer, packedLight, 1.0F, 0.48F, 0.18F, alpha * 0.58F, 0.24F, forward, up, length); + + poseStack.popPose(); + super.render(entity, entityYaw, partialTick, poseStack, buffer, packedLight); + } + + private static Vec3 getRenderDirection(LucidBoltEntity entity, float partialTick) { + Vec3 delta = entity.getDeltaMovement(); + if (delta.lengthSqr() > 1.0E-6D) { + return delta.normalize(); + } + + float yaw = Mth.rotLerp(partialTick, entity.yRotO, entity.getYRot()) * ((float) Math.PI / 180.0F); + float pitch = Mth.lerp(partialTick, entity.xRotO, entity.getXRot()) * ((float) Math.PI / 180.0F); + float cosPitch = Mth.cos(pitch); + Vec3 direction = new Vec3( + -Mth.sin(yaw) * cosPitch, + -Mth.sin(pitch), + Mth.cos(yaw) * cosPitch + ); + return direction.lengthSqr() > 1.0E-6D ? direction.normalize() : WORLD_FORWARD; + } + + private static Vec3 createPerpendicular(Vec3 forward, Vec3 preferredAxis) { + Vec3 perpendicular = forward.cross(preferredAxis); + if (perpendicular.lengthSqr() < 1.0E-6D) { + perpendicular = forward.cross(WORLD_RIGHT); + } + if (perpendicular.lengthSqr() < 1.0E-6D) { + perpendicular = WORLD_UP; + } + return perpendicular.normalize(); + } + + private static void renderBeamRibbon( + PoseStack.Pose pose, + VertexConsumer vertexConsumer, + int packedLight, + float red, + float green, + float blue, + float alpha, + float halfWidth, + Vec3 forward, + Vec3 sideways, + float length + ) { + Matrix4f matrix4f = pose.pose(); + Vec3 offset = sideways.scale(halfWidth); + Vec3 end = forward.scale(length); + Vec3 normal = sideways.cross(forward); + if (normal.lengthSqr() < 1.0E-6D) { + normal = WORLD_UP; + } else { + normal = normal.normalize(); + } + + emitVertex(vertexConsumer, pose, matrix4f, offset.scale(-1.0D), red, green, blue, alpha, 0.0F, 0.0F, normal, packedLight); + emitVertex(vertexConsumer, pose, matrix4f, offset, red, green, blue, alpha, 1.0F, 0.0F, normal, packedLight); + emitVertex(vertexConsumer, pose, matrix4f, end.add(offset), red, green, blue, alpha, 1.0F, 1.0F, normal, packedLight); + emitVertex(vertexConsumer, pose, matrix4f, end.add(offset.scale(-1.0D)), red, green, blue, alpha, 0.0F, 1.0F, normal, packedLight); + } + + private static void emitVertex( + VertexConsumer vertexConsumer, + PoseStack.Pose pose, + Matrix4f matrix4f, + Vec3 position, + float red, + float green, + float blue, + float alpha, + float u, + float v, + Vec3 normal, + int packedLight + ) { + vertexConsumer + .addVertex(matrix4f, (float) position.x, (float) position.y, (float) position.z) + .setColor(red, green, blue, alpha) + .setUv(u, v) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(packedLight) + .setNormal(pose, (float) normal.x, (float) normal.y, (float) normal.z); + } + + @Override + public ResourceLocation getTextureLocation(LucidBoltEntity entity) { + return BEAM_TEXTURE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidRenderer.java new file mode 100644 index 00000000..ce8664af --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidRenderer.java @@ -0,0 +1,36 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.LucidModel; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class LucidRenderer extends GeoEntityRenderer { + + private static final float VISUAL_SCALE = 0.9F; + private static final double VISUAL_Y_OFFSET = -0.30D; + + public LucidRenderer(EntityRendererProvider.Context context) { + super(context, new LucidModel()); + this.shadowRadius = 0.5F; + this.withScale(VISUAL_SCALE); + } + + @Override + public void preRender(PoseStack poseStack, LucidEntity animatable, BakedGeoModel model, + @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, + boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + poseStack.translate(0.0D, VISUAL_Y_OFFSET, 0.0D); + } + + @Override + protected float getDeathMaxRotation(LucidEntity animatable) { + return 0.0F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MantisRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MantisRenderer.java new file mode 100644 index 00000000..a6765568 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MantisRenderer.java @@ -0,0 +1,14 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.MantisModel; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class MantisRenderer extends GeoEntityRenderer { + public MantisRenderer(EntityRendererProvider.Context context) { + super(context, new MantisModel()); + this.shadowRadius = 1.0F; + this.withScale(1.25F); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MissileSquidRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MissileSquidRenderer.java new file mode 100644 index 00000000..83943dc3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MissileSquidRenderer.java @@ -0,0 +1,19 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.MissileSquidModel; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.world.phys.Vec3; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class MissileSquidRenderer extends GeoEntityRenderer { + public MissileSquidRenderer(EntityRendererProvider.Context context) { + super(context, new MissileSquidModel()); + this.shadowRadius = 1.3F; + } + + @Override + public Vec3 getRenderOffset(MissileSquidEntity entity, float partialTick) { + return new Vec3(0.0D, -2.0D, 0.0D); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MolevoreRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MolevoreRenderer.java new file mode 100644 index 00000000..dcbb43e5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MolevoreRenderer.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.MolevoreModel; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class MolevoreRenderer extends GeoEntityRenderer { + public MolevoreRenderer(EntityRendererProvider.Context context) { + super(context, new MolevoreModel()); + this.shadowRadius = 2.0F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MolewormRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MolewormRenderer.java new file mode 100644 index 00000000..a9cc8e79 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/MolewormRenderer.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.MolewormModel; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class MolewormRenderer extends GeoEntityRenderer { + public MolewormRenderer(EntityRendererProvider.Context context) { + super(context, new MolewormModel()); + this.shadowRadius = 0.25F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/NightmareRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/NightmareRenderer.java new file mode 100644 index 00000000..dc0d0786 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/NightmareRenderer.java @@ -0,0 +1,19 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.NightmareModel; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class NightmareRenderer extends GeoEntityRenderer { + public NightmareRenderer(EntityRendererProvider.Context context) { + super(context, new NightmareModel()); + this.shadowRadius = 1.8F; + this.withScale(1.15F); + } + + @Override + protected float getDeathMaxRotation(NightmareEntity animatable) { + return 0.0F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/OuranwoodBoatRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/OuranwoodBoatRenderer.java new file mode 100644 index 00000000..6c0c4d72 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/OuranwoodBoatRenderer.java @@ -0,0 +1,78 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Axis; +import net.minecraft.client.model.BoatModel; +import net.minecraft.client.model.ChestBoatModel; +import net.minecraft.client.model.ListModel; +import net.minecraft.client.model.WaterPatchModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.vehicle.Boat; +import org.joml.Quaternionf; + +public class OuranwoodBoatRenderer extends EntityRenderer { + private static final String MAIN_LAYER = "main"; + private final ResourceLocation texture; + private final ListModel model; + + public OuranwoodBoatRenderer(EntityRendererProvider.Context context, ResourceLocation texture, boolean chest) { + super(context); + this.shadowRadius = 0.8F; + this.texture = texture; + this.model = chest + ? new ChestBoatModel(context.bakeLayer(chestBoatLayer())) + : new BoatModel(context.bakeLayer(boatLayer())); + } + + public static ModelLayerLocation boatLayer() { + return new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath("antarchy", "boat/ouranwood"), MAIN_LAYER); + } + + public static ModelLayerLocation chestBoatLayer() { + return new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath("antarchy", "chest_boat/ouranwood"), MAIN_LAYER); + } + + @Override + public void render(T boat, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight) { + poseStack.pushPose(); + poseStack.translate(0.0F, 0.375F, 0.0F); + poseStack.mulPose(Axis.YP.rotationDegrees(180.0F - entityYaw)); + + float hurtTime = boat.getHurtTime() - partialTick; + float damage = Math.max(boat.getDamage() - partialTick, 0.0F); + if (hurtTime > 0.0F) { + poseStack.mulPose(Axis.XP.rotationDegrees(Mth.sin(hurtTime) * hurtTime * damage / 10.0F * boat.getHurtDir())); + } + + float bubbleAngle = boat.getBubbleAngle(partialTick); + if (!Mth.equal(bubbleAngle, 0.0F)) { + poseStack.mulPose(new Quaternionf().setAngleAxis(boat.getBubbleAngle(partialTick) * ((float) Math.PI / 180.0F), 1.0F, 0.0F, 1.0F)); + } + + poseStack.scale(-1.0F, -1.0F, 1.0F); + poseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); + this.model.setupAnim(boat, partialTick, 0.0F, -0.1F, 0.0F, 0.0F); + VertexConsumer consumer = buffer.getBuffer(this.model.renderType(this.texture)); + this.model.renderToBuffer(poseStack, consumer, packedLight, OverlayTexture.NO_OVERLAY); + if (!boat.isUnderWater() && this.model instanceof WaterPatchModel waterPatchModel) { + VertexConsumer waterConsumer = buffer.getBuffer(RenderType.waterMask()); + waterPatchModel.waterPatch().render(poseStack, waterConsumer, packedLight, OverlayTexture.NO_OVERLAY); + } + + poseStack.popPose(); + super.render(boat, entityYaw, partialTick, poseStack, buffer, packedLight); + } + + @Override + public ResourceLocation getTextureLocation(T boat) { + return this.texture; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStoneGeoLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStoneGeoLayer.java new file mode 100644 index 00000000..d08d186d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStoneGeoLayer.java @@ -0,0 +1,54 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoAnimatable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public final class ParalyzedStoneGeoLayer extends GeoRenderLayer { + private static final ResourceLocation STONE_TEXTURE = ResourceLocation.withDefaultNamespace("textures/block/stone.png"); + private static final int STONE_TINT = 0xFFB1ADA4; + + public ParalyzedStoneGeoLayer(GeoRenderer renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, T animatable, BakedGeoModel bakedModel, @Nullable RenderType renderType, + MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, float partialTick, + int packedLight, int packedOverlay) { + if (!(animatable instanceof Entity entity) || !(entity instanceof LivingEntity livingEntity)) { + return; + } + if (!livingEntity.hasEffect(AntarchyObjects.PARALYZED_EFFECT.get())) { + return; + } + + poseStack.pushPose(); + poseStack.scale(1.02f, 1.02f, 1.02f); + RenderType stoneRenderType = RenderType.entityCutoutNoCull(STONE_TEXTURE); + VertexConsumer stoneBuffer = bufferSource.getBuffer(stoneRenderType); + this.getRenderer().reRender( + bakedModel, + poseStack, + bufferSource, + animatable, + stoneRenderType, + stoneBuffer, + partialTick, + packedLight, + packedOverlay, + STONE_TINT + ); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStoneLivingLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStoneLivingLayer.java new file mode 100644 index 00000000..f07e97d5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStoneLivingLayer.java @@ -0,0 +1,42 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; + +public final class ParalyzedStoneLivingLayer> extends RenderLayer { + private static final ResourceLocation STONE_TEXTURE = ResourceLocation.withDefaultNamespace("textures/block/stone.png"); + private static final int STONE_TINT = 0xFFB1ADA4; + + public ParalyzedStoneLivingLayer(RenderLayerParent renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, MultiBufferSource buffer, int packedLight, T entity, + float limbSwing, float limbSwingAmount, float partialTick, float ageInTicks, + float netHeadYaw, float headPitch) { + if (!entity.hasEffect(AntarchyObjects.PARALYZED_EFFECT.get())) { + return; + } + poseStack.pushPose(); + poseStack.scale(1.02f, 1.02f, 1.02f); + VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityCutoutNoCull(STONE_TEXTURE)); + this.getParentModel().renderToBuffer( + poseStack, + vertexConsumer, + packedLight, + LivingEntityRenderer.getOverlayCoords(entity, 0.0F), + STONE_TINT + ); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStonePlayerLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStonePlayerLayer.java new file mode 100644 index 00000000..757ab15b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ParalyzedStonePlayerLayer.java @@ -0,0 +1,43 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.resources.ResourceLocation; + +public final class ParalyzedStonePlayerLayer extends RenderLayer> { + private static final ResourceLocation STONE_TEXTURE = ResourceLocation.withDefaultNamespace("textures/block/stone.png"); + private static final int STONE_TINT = 0xFFB1ADA4; + + public ParalyzedStonePlayerLayer(RenderLayerParent> renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, MultiBufferSource buffer, int packedLight, AbstractClientPlayer player, + float limbSwing, float limbSwingAmount, float partialTick, float ageInTicks, float netHeadYaw, + float headPitch) { + if (!player.hasEffect(AntarchyObjects.PARALYZED_EFFECT.get())) { + return; + } + + poseStack.pushPose(); + poseStack.scale(1.05f, 1.05f, 1.05f); + VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityCutoutNoCull(STONE_TEXTURE)); + this.getParentModel().renderToBuffer( + poseStack, + vertexConsumer, + packedLight, + LivingEntityRenderer.getOverlayCoords(player, 0.0F), + STONE_TINT + ); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ReverieRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ReverieRenderer.java new file mode 100644 index 00000000..4326c68a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ReverieRenderer.java @@ -0,0 +1,146 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.ReverieModel; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import java.util.HashMap; +import java.util.Map; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class ReverieRenderer extends GeoEntityRenderer { + private static final float VISUAL_SCALE = 0.7F; + private static final float SHADOW_RADIUS = 0.12F; + private static final int CROSSFADE_TICKS = 12; + private final Map transitions = new HashMap<>(); + + public ReverieRenderer(EntityRendererProvider.Context context) { + super(context, new ReverieModel()); + this.shadowRadius = SHADOW_RADIUS; + this.withScale(VISUAL_SCALE); + this.addRenderLayer(new ReverieCrossfadeLayer(this)); + } + + @Override + public void render(ReverieEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { + this.updateTransition(entity); + super.render(entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); + } + + @Override + public void preRender(PoseStack poseStack, ReverieEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + this.shadowRadius = SHADOW_RADIUS; + } + + @Override + public RenderType getRenderType(ReverieEntity animatable, ResourceLocation texture, @Nullable MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(texture); + } + + @Override + protected int getBlockLightLevel(ReverieEntity entity, BlockPos pos) { + return 15; + } + + @Nullable + ReverieEntity.Mood getPreviousMood(ReverieEntity entity) { + MoodTransitionState state = this.transitions.get(entity.getId()); + if (state == null || state.currentMood == state.previousMood) { + return null; + } + return state.previousMood; + } + + float getPreviousMoodAlpha(ReverieEntity entity, float partialTick) { + return 1.0F - this.getTransitionProgress(entity, partialTick); + } + + private void updateTransition(ReverieEntity entity) { + ReverieEntity.Mood mood = entity.getMood(); + MoodTransitionState state = this.transitions.computeIfAbsent(entity.getId(), ignored -> + new MoodTransitionState(mood, mood, entity.tickCount)); + + if (state.currentMood != mood) { + state.previousMood = state.currentMood; + state.currentMood = mood; + state.transitionStartTick = entity.tickCount; + } else if (state.currentMood == state.previousMood && entity.tickCount - state.transitionStartTick > CROSSFADE_TICKS) { + this.transitions.remove(entity.getId()); + } + } + + private float getTransitionProgress(ReverieEntity entity, float partialTick) { + MoodTransitionState state = this.transitions.get(entity.getId()); + if (state == null || state.currentMood == state.previousMood) { + return 1.0F; + } + + float elapsed = (entity.tickCount - state.transitionStartTick) + partialTick; + if (elapsed >= CROSSFADE_TICKS) { + state.previousMood = state.currentMood; + return 1.0F; + } + + return Math.max(0.0F, Math.min(1.0F, elapsed / CROSSFADE_TICKS)); + } + + private static final class MoodTransitionState { + private ReverieEntity.Mood previousMood; + private ReverieEntity.Mood currentMood; + private int transitionStartTick; + + private MoodTransitionState(ReverieEntity.Mood previousMood, ReverieEntity.Mood currentMood, int transitionStartTick) { + this.previousMood = previousMood; + this.currentMood = currentMood; + this.transitionStartTick = transitionStartTick; + } + } + + private static final class ReverieCrossfadeLayer extends GeoRenderLayer { + private ReverieCrossfadeLayer(ReverieRenderer renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, ReverieEntity animatable, BakedGeoModel bakedModel, @Nullable RenderType renderType, + MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, float partialTick, + int packedLight, int packedOverlay) { + ReverieRenderer renderer = (ReverieRenderer) this.getRenderer(); + ReverieEntity.Mood previousMood = renderer.getPreviousMood(animatable); + if (previousMood == null) { + return; + } + + float alpha = renderer.getPreviousMoodAlpha(animatable, partialTick); + if (alpha <= 0.0F) { + return; + } + + ResourceLocation previousTexture = ReverieModel.textureForMood(previousMood); + RenderType previousRenderType = RenderType.entityTranslucent(previousTexture); + VertexConsumer previousBuffer = bufferSource.getBuffer(previousRenderType); + int color = ((Math.max(0, Math.min(255, Math.round(alpha * 255.0F))) & 0xFF) << 24) | 0x00FFFFFF; + this.getRenderer().reRender( + bakedModel, + poseStack, + bufferSource, + animatable, + previousRenderType, + previousBuffer, + partialTick, + packedLight, + packedOverlay, + color + ); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ScorpionRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ScorpionRenderer.java new file mode 100644 index 00000000..892679a9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/ScorpionRenderer.java @@ -0,0 +1,14 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.ScorpionModel; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class ScorpionRenderer extends GeoEntityRenderer { + + public ScorpionRenderer(EntityRendererProvider.Context context) { + super(context, new ScorpionModel()); + this.shadowRadius = 0.6F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/SizeRayProjectileRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/SizeRayProjectileRenderer.java new file mode 100644 index 00000000..461cb6f8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/SizeRayProjectileRenderer.java @@ -0,0 +1,159 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; + +public class SizeRayProjectileRenderer extends EntityRenderer { + private static final ResourceLocation BEAM_TEXTURE = ResourceLocation.withDefaultNamespace("textures/entity/beacon_beam.png"); + private static final Vec3 WORLD_UP = new Vec3(0.0D, 1.0D, 0.0D); + private static final Vec3 WORLD_RIGHT = new Vec3(1.0D, 0.0D, 0.0D); + private static final Vec3 WORLD_FORWARD = new Vec3(0.0D, 0.0D, 1.0D); + + public SizeRayProjectileRenderer(EntityRendererProvider.Context context) { + super(context); + } + + @Override + protected int getBlockLightLevel(SizeRayProjectileEntity entity, BlockPos pos) { + return 15; + } + + @Override + public void render( + SizeRayProjectileEntity entity, + float entityYaw, + float partialTick, + PoseStack poseStack, + MultiBufferSource buffer, + int packedLight + ) { + poseStack.pushPose(); + + Vec3 forward = getRenderDirection(entity, partialTick); + Vec3 right = createPerpendicular(forward, WORLD_UP); + Vec3 up = forward.cross(right); + if (up.lengthSqr() < 1.0E-6D) { + up = WORLD_UP; + } else { + up = up.normalize(); + } + + int chargeLevel = Math.max(1, entity.getEffectiveChargeLevel()); + float chargeScale = 1.0F + 0.35F * (chargeLevel - 1); + float pulse = 0.84F + 0.16F * Mth.sin((entity.tickCount + partialTick) * 0.35F); + float alpha = 0.95F * pulse; + float[] color = entity.getSizeRayType() == SizeRayProjectileEntity.SizeRayType.SHRINK + ? new float[] { 1.0F, 0.92F, 0.15F } + : new float[] { 0.24F, 0.62F, 1.0F }; + + Vec3 delta = entity.getDeltaMovement(); + float length = (float) Mth.clamp(delta.length() * 2.8D + 1.2D, 1.2D, 3.2D); + float width = 0.15F * chargeScale; + float outerWidth = 0.28F * chargeScale; + + VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityTranslucent(BEAM_TEXTURE)); + PoseStack.Pose pose = poseStack.last(); + + renderBeamRibbon(pose, vertexConsumer, packedLight, color[0], color[1], color[2], alpha, width, forward, right, length); + renderBeamRibbon(pose, vertexConsumer, packedLight, color[0], color[1], color[2], alpha * 0.55F, outerWidth, forward, up, length); + + poseStack.popPose(); + super.render(entity, entityYaw, partialTick, poseStack, buffer, packedLight); + } + + private static Vec3 getRenderDirection(SizeRayProjectileEntity entity, float partialTick) { + Vec3 delta = entity.getDeltaMovement(); + if (delta.lengthSqr() > 1.0E-6D) { + return delta.normalize(); + } + + float yaw = Mth.rotLerp(partialTick, entity.yRotO, entity.getYRot()) * ((float) Math.PI / 180.0F); + float pitch = Mth.lerp(partialTick, entity.xRotO, entity.getXRot()) * ((float) Math.PI / 180.0F); + float cosPitch = Mth.cos(pitch); + Vec3 direction = new Vec3( + -Mth.sin(yaw) * cosPitch, + -Mth.sin(pitch), + Mth.cos(yaw) * cosPitch + ); + return direction.lengthSqr() > 1.0E-6D ? direction.normalize() : WORLD_FORWARD; + } + + private static Vec3 createPerpendicular(Vec3 forward, Vec3 preferredAxis) { + Vec3 perpendicular = forward.cross(preferredAxis); + if (perpendicular.lengthSqr() < 1.0E-6D) { + perpendicular = forward.cross(WORLD_RIGHT); + } + if (perpendicular.lengthSqr() < 1.0E-6D) { + perpendicular = WORLD_UP; + } + return perpendicular.normalize(); + } + + private static void renderBeamRibbon( + PoseStack.Pose pose, + VertexConsumer vertexConsumer, + int packedLight, + float red, + float green, + float blue, + float alpha, + float halfWidth, + Vec3 forward, + Vec3 sideways, + float length + ) { + Matrix4f matrix4f = pose.pose(); + Vec3 offset = sideways.scale(halfWidth); + Vec3 end = forward.scale(length); + Vec3 normal = sideways.cross(forward); + if (normal.lengthSqr() < 1.0E-6D) { + normal = WORLD_UP; + } else { + normal = normal.normalize(); + } + + emitVertex(vertexConsumer, pose, matrix4f, offset.scale(-1.0D), red, green, blue, alpha, 0.0F, 0.0F, normal, packedLight); + emitVertex(vertexConsumer, pose, matrix4f, offset, red, green, blue, alpha, 1.0F, 0.0F, normal, packedLight); + emitVertex(vertexConsumer, pose, matrix4f, end.add(offset), red, green, blue, alpha, 1.0F, 1.0F, normal, packedLight); + emitVertex(vertexConsumer, pose, matrix4f, end.add(offset.scale(-1.0D)), red, green, blue, alpha, 0.0F, 1.0F, normal, packedLight); + } + + private static void emitVertex( + VertexConsumer vertexConsumer, + PoseStack.Pose pose, + Matrix4f matrix4f, + Vec3 position, + float red, + float green, + float blue, + float alpha, + float u, + float v, + Vec3 normal, + int packedLight + ) { + vertexConsumer + .addVertex(matrix4f, (float) position.x, (float) position.y, (float) position.z) + .setColor(red, green, blue, alpha) + .setUv(u, v) + .setOverlay(OverlayTexture.NO_OVERLAY) + .setLight(packedLight) + .setNormal(pose, (float) normal.x, (float) normal.y, (float) normal.z); + } + + @Override + public ResourceLocation getTextureLocation(SizeRayProjectileEntity entity) { + return BEAM_TEXTURE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/TriffidRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/TriffidRenderer.java new file mode 100644 index 00000000..423eeb70 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/TriffidRenderer.java @@ -0,0 +1,18 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.TriffidModel; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class TriffidRenderer extends GeoEntityRenderer { + public TriffidRenderer(EntityRendererProvider.Context context) { + super(context, new TriffidModel()); + this.shadowRadius = 1.4F; + } + + @Override + protected float getDeathMaxRotation(TriffidEntity animatable) { + return 0.0F; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/UpwardFallingBlockRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/UpwardFallingBlockRenderer.java new file mode 100644 index 00000000..6081a863 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/UpwardFallingBlockRenderer.java @@ -0,0 +1,42 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.BlockState; + +public class UpwardFallingBlockRenderer extends EntityRenderer { + + public UpwardFallingBlockRenderer(EntityRendererProvider.Context context) { + super(context); + this.shadowRadius = 0.5F; + } + + @Override + public void render(UpwardFallingBlockEntity entity, float yaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int light) { + BlockState blockState = entity.getBlockState(); + if (blockState.isAir()) return; + + poseStack.pushPose(); + // Center the block model on the entity origin + poseStack.translate(-0.5, 0.0, -0.5); + Minecraft.getInstance().getBlockRenderer().renderSingleBlock( + blockState, poseStack, bufferSource, light, OverlayTexture.NO_OVERLAY + ); + poseStack.popPose(); + + super.render(entity, yaw, partialTick, poseStack, bufferSource, light); + } + + @Override + @SuppressWarnings("deprecation") + public ResourceLocation getTextureLocation(UpwardFallingBlockEntity entity) { + return TextureAtlas.LOCATION_BLOCKS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/WaspRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/WaspRenderer.java new file mode 100644 index 00000000..f9553a84 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/WaspRenderer.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.WaspModel; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class WaspRenderer extends GeoEntityRenderer { + public WaspRenderer(EntityRendererProvider.Context context) { + super(context, new WaspModel()); + this.shadowRadius = 0.55F; + } + + @Override + public void preRender(PoseStack poseStack, WaspEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + poseStack.translate(0.0D, -0.5D, 0.0D); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/command/CaterpillarCommand.java b/common/src/main/java/com/craisinlord/antarchy/content/command/CaterpillarCommand.java new file mode 100644 index 00000000..990cca73 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/command/CaterpillarCommand.java @@ -0,0 +1,43 @@ +package com.craisinlord.antarchy.content.command; + +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.context.CommandContext; +import java.util.Collection; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.Entity; + +public final class CaterpillarCommand { + private CaterpillarCommand() { + } + + public static void register(CommandDispatcher dispatcher) { + dispatcher.register( + Commands.literal("caterpillar") + .requires(source -> source.hasPermission(2)) + .then(Commands.literal("pupate") + .then(Commands.argument("targets", EntityArgument.entities()) + .executes(context -> forcePupation(context, EntityArgument.getEntities(context, "targets"))))) + ); + } + + private static int forcePupation(CommandContext context, Collection targets) { + int affected = 0; + for (Entity target : targets) { + if (target instanceof CaterpillarEntity caterpillar) { + caterpillar.forcePupation(); + affected++; + } + } + + final int affectedCount = affected; + context.getSource().sendSuccess( + () -> Component.literal("Forced pupation for " + affectedCount + " caterpillar(s)"), + true + ); + return affectedCount; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/command/GravityCommand.java b/common/src/main/java/com/craisinlord/antarchy/content/command/GravityCommand.java new file mode 100644 index 00000000..df009da1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/command/GravityCommand.java @@ -0,0 +1,75 @@ +package com.craisinlord.antarchy.content.command; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.context.CommandContext; +import java.util.Collection; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.Entity; + +public final class GravityCommand { + private static final AntarchyGravityTransition COMMAND_TRANSITION = new AntarchyGravityTransition(12); + + private GravityCommand() { + } + + public static void register(CommandDispatcher dispatcher) { + dispatcher.register( + Commands.literal("gravity") + .requires(source -> source.hasPermission(2)) + .then(Commands.literal("get") + .then(Commands.argument("targets", EntityArgument.entities()) + .executes(context -> getGravity(context, EntityArgument.getEntities(context, "targets"))))) + .then(Commands.literal("set") + .then(Commands.argument("targets", EntityArgument.entities()) + .then(Commands.literal("down") + .executes(context -> setGravity(context, EntityArgument.getEntities(context, "targets"), AntarchyGravityDirection.DOWN))) + .then(Commands.literal("up") + .executes(context -> setGravity(context, EntityArgument.getEntities(context, "targets"), AntarchyGravityDirection.UP))))) + .then(Commands.literal("clear") + .then(Commands.argument("targets", EntityArgument.entities()) + .executes(context -> clearGravity(context, EntityArgument.getEntities(context, "targets"))))) + ); + } + + private static int getGravity(CommandContext context, Collection targets) { + for (Entity target : targets) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(target); + context.getSource().sendSuccess( + () -> Component.literal(target.getName().getString() + ": " + direction.getSerializedName()), + false + ); + } + + return targets.size(); + } + + private static int setGravity(CommandContext context, Collection targets, AntarchyGravityDirection direction) { + for (Entity target : targets) { + AntarchyGravityApi.setGravityDirection(target, direction, COMMAND_TRANSITION); + } + + context.getSource().sendSuccess( + () -> Component.literal("Set gravity " + direction.getSerializedName() + " for " + targets.size() + " target(s)"), + true + ); + return targets.size(); + } + + private static int clearGravity(CommandContext context, Collection targets) { + for (Entity target : targets) { + AntarchyGravityApi.setGravityDirection(target, AntarchyGravityDirection.DOWN, COMMAND_TRANSITION); + } + + context.getSource().sendSuccess( + () -> Component.literal("Reset gravity for " + targets.size() + " target(s)"), + true + ); + return targets.size(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/damage/AntarchyDamageSources.java b/common/src/main/java/com/craisinlord/antarchy/content/damage/AntarchyDamageSources.java new file mode 100644 index 00000000..676c3522 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/damage/AntarchyDamageSources.java @@ -0,0 +1,92 @@ +package com.craisinlord.antarchy.content.damage; + +import net.minecraft.core.registries.Registries; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; + +public final class AntarchyDamageSources { + public static DamageSource krakenMauling(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.KRAKEN_MAULING), + attacker + ); + } + + public static DamageSource krakenLightning(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.KRAKEN_LIGHTNING), + attacker + ); + } + + public static DamageSource bedBugBite(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.BED_BUG_BITE), + attacker + ); + } + + public static DamageSource nightmareMauling(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.NIGHTMARE_MAULING), + attacker + ); + } + + public static DamageSource basiliskBite(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.BASILISK_BITE), + attacker + ); + } + + public static DamageSource emperorScorpionSting(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.EMPEROR_SCORPION_STING), + attacker + ); + } + + public static DamageSource triffidMauling(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.TRIFFID_MAULING), + attacker + ); + } + + public static DamageSource triffidSwallow(ServerLevel level, Entity attacker) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.TRIFFID_SWALLOW), + attacker + ); + } + + public static DamageSource corneaStalkPrick(Level level) { + return new DamageSource( + level.registryAccess() + .registryOrThrow(Registries.DAMAGE_TYPE) + .getHolderOrThrow(AntarchyDamageTypes.CORNEA_STALK_PRICK) + ); + } + + private AntarchyDamageSources() { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/damage/AntarchyDamageTypes.java b/common/src/main/java/com/craisinlord/antarchy/content/damage/AntarchyDamageTypes.java new file mode 100644 index 00000000..199db290 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/damage/AntarchyDamageTypes.java @@ -0,0 +1,66 @@ +package com.craisinlord.antarchy.content.damage; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.damagesource.DamageType; + +public final class AntarchyDamageTypes { + public static final ResourceKey KRAKEN_MAULING = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "kraken_mauling") + ); + + public static final ResourceKey KRAKEN_LIGHTNING = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "kraken_lightning") + ); + + public static final ResourceKey BED_BUG_BITE = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "bed_bug_bite") + ); + + public static final ResourceKey NIGHTMARE_MAULING = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_mauling") + ); + + public static final ResourceKey BASILISK_BITE = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "basilisk_bite") + ); + + public static final ResourceKey EMPEROR_SCORPION_STING = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "emperor_scorpion_sting") + ); + + public static final ResourceKey TRIFFID_MAULING = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "triffid_mauling") + ); + + public static final ResourceKey TRIFFID_SWALLOW = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "triffid_swallow") + ); + + public static final ResourceKey CORNEA_STALK_PRICK = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cornea_stalk_prick") + ); + + private AntarchyDamageTypes() { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/BloodglassWardEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/BloodglassWardEffect.java new file mode 100644 index 00000000..cbc03936 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/BloodglassWardEffect.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.content.effect; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; + +public final class BloodglassWardEffect extends MobEffect { + public static final ResourceLocation MODIFIER_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "bloodglass_ward_hearts"); + + public BloodglassWardEffect() { + super(MobEffectCategory.BENEFICIAL, 0xAC3E5C); + } + + @Override + public void addAttributeModifiers(AttributeMap attributeMap, int amplifier) { + AttributeInstance instance = attributeMap.getInstance(AntarchyObjects.BLOODGLASS_MAX_HEARTS.get()); + if (instance == null) return; + instance.addTransientModifier( + new AttributeModifier(MODIFIER_ID, amplifier + 1, AttributeModifier.Operation.ADD_VALUE) + ); + } + + @Override + public void removeAttributeModifiers(AttributeMap attributeMap) { + AttributeInstance instance = attributeMap.getInstance(AntarchyObjects.BLOODGLASS_MAX_HEARTS.get()); + if (instance == null) return; + instance.removeModifier(MODIFIER_ID); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/DreadMobEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/DreadMobEffect.java new file mode 100644 index 00000000..37a4c136 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/DreadMobEffect.java @@ -0,0 +1,10 @@ +package com.craisinlord.antarchy.content.effect; + +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; + +public final class DreadMobEffect extends MobEffect { + public DreadMobEffect() { + super(MobEffectCategory.HARMFUL, 0x1A0A1A); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/GrowthMobEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/GrowthMobEffect.java new file mode 100644 index 00000000..3ae4fe5d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/GrowthMobEffect.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.content.effect; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; + +public final class GrowthMobEffect extends MobEffect { + public static final ResourceLocation MODIFIER_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "growth_effect_scale"); + + public GrowthMobEffect() { + super(MobEffectCategory.NEUTRAL, 0xADD8E6); + } + + @Override + public void addAttributeModifiers(AttributeMap attributeMap, int amplifier) { + AttributeInstance instance = attributeMap.getInstance(Attributes.SCALE); + if (instance == null) return; + double amount = AntarchySettings.growthPotionDelta() * (amplifier + 1); + instance.addTransientModifier( + new AttributeModifier(MODIFIER_ID, amount, AttributeModifier.Operation.ADD_MULTIPLIED_TOTAL) + ); + } + + @Override + public void removeAttributeModifiers(AttributeMap attributeMap) { + AttributeInstance instance = attributeMap.getInstance(Attributes.SCALE); + if (instance == null) return; + instance.removeModifier(MODIFIER_ID); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/InvertedMobEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/InvertedMobEffect.java new file mode 100644 index 00000000..b3bb5f15 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/InvertedMobEffect.java @@ -0,0 +1,40 @@ +package com.craisinlord.antarchy.content.effect; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; + +public final class InvertedMobEffect extends MobEffect { + private static final AntarchyGravityTransition EFFECT_TRANSITION = new AntarchyGravityTransition(12); + + public InvertedMobEffect() { + super(MobEffectCategory.HARMFUL, 0x8B0000); + } + + + @Override + public boolean applyEffectTick(LivingEntity entity, int amplifier) { + if (!entity.level().isClientSide()) { + if (AntarchyGravityApi.getGravityDirection(entity) != AntarchyGravityDirection.UP || !AntarchyGravityApi.isGravityForced(entity)) { + AntarchyGravityApi.setForcedGravityDirection(entity, AntarchyGravityDirection.UP, EFFECT_TRANSITION); + } + } else { + // Mob effects are synced by vanilla, so this fires on the client too. + // If the gravity state hasn't been applied yet , apply it directly without position adjustment. + if (!AntarchyGravityApi.isGravityInverted(entity)) { + AntarchyGravityApi.applySyncedState(entity, AntarchyGravityDirection.UP, AntarchyGravityDirection.UP, true, 0, 0); + } + } + return true; + } + + + @Override + public boolean shouldApplyEffectTickThisTick(int duration, int amplifier) { + return true; + } + +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/ParalyzedMobEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/ParalyzedMobEffect.java new file mode 100644 index 00000000..5e4f66ab --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/ParalyzedMobEffect.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.content.effect; + +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.phys.Vec3; + +public final class ParalyzedMobEffect extends MobEffect { + public ParalyzedMobEffect() { + super(MobEffectCategory.HARMFUL, 0x808080); + } + + @Override + public boolean applyEffectTick(LivingEntity entity, int amplifier) { + if (!entity.level().isClientSide()) { + entity.setDeltaMovement(Vec3.ZERO); + entity.hasImpulse = true; + entity.stopUsingItem(); + entity.setSprinting(false); + entity.setYRot(entity.yRotO); + entity.setXRot(entity.xRotO); + entity.yHeadRot = entity.yHeadRotO; + entity.yBodyRot = entity.yBodyRotO; + + if (entity instanceof Mob mob) { + mob.getNavigation().stop(); + } + } + + return true; + } + + @Override + public boolean shouldApplyEffectTickThisTick(int duration, int amplifier) { + return true; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/ShrinkMobEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/ShrinkMobEffect.java new file mode 100644 index 00000000..e69d2c27 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/ShrinkMobEffect.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.content.effect; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; + +public final class ShrinkMobEffect extends MobEffect { + public static final ResourceLocation MODIFIER_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "shrinking_effect_scale"); + + public ShrinkMobEffect() { + super(MobEffectCategory.NEUTRAL, 0xFFFF00); + } + + @Override + public void addAttributeModifiers(AttributeMap attributeMap, int amplifier) { + AttributeInstance instance = attributeMap.getInstance(Attributes.SCALE); + if (instance == null) return; + double amount = -(AntarchySettings.shrinkingPotionDelta() * (amplifier + 1)); + instance.addTransientModifier( + new AttributeModifier(MODIFIER_ID, amount, AttributeModifier.Operation.ADD_MULTIPLIED_TOTAL) + ); + } + + @Override + public void removeAttributeModifiers(AttributeMap attributeMap) { + AttributeInstance instance = attributeMap.getInstance(Attributes.SCALE); + if (instance == null) return; + instance.removeModifier(MODIFIER_ID); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntity.java new file mode 100644 index 00000000..13ddc3d6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntity.java @@ -0,0 +1,445 @@ +package com.craisinlord.antarchy.content.entity; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.Shearable; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.phys.Vec3; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.EnumSet; + +public abstract class AppleCowEntity extends Cow implements GeoEntity, Shearable { + private static final EntityDataAccessor SLEEPING = + SynchedEntityData.defineId(AppleCowEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor QUIRK_TICKS = + SynchedEntityData.defineId(AppleCowEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor SHEARED = + SynchedEntityData.defineId(AppleCowEntity.class, EntityDataSerializers.BOOLEAN); + + private static final String SLEEPING_KEY = "Sleeping"; + private static final String SLEEP_TICKS_KEY = "SleepTicks"; + private static final String NAP_COOLDOWN_KEY = "NapCooldown"; + private static final String QUIRK_TICKS_KEY = "QuirkTicks"; + private static final String SHEARED_KEY = "Sheared"; + private static final String GRASS_EAT_TICKS_KEY = "GrassEatTicks"; + private static final String MAIN_CONTROLLER = "main_controller"; + private static final String SLEEP_TRANSITION_CONTROLLER = "sleep_transition_controller"; + private static final String START_SLEEP_TRIGGER = "start_sleep"; + private static final String WAKE_UP_TRIGGER = "wake_up"; + + private static final int IDLE_ANIMATION_CYCLE_TICKS = 40; + private static final int QUIRK_ANIMATION_TICKS = 35; + private static final int QUIRK_CHANCE = 50; + private static final int DAY_NAP_MIN_TICKS = 20 * 60; + private static final int DAY_NAP_MAX_TICKS = 20 * 60 * 2; + private static final int DAY_NAP_COOLDOWN_TICKS = 20 * 60 * 10; + private static final int NIGHT_NAP_COOLDOWN_TICKS = 20 * 60 * 8; + private static final int GRASS_REGROW_TICKS = 20 * 60 * 3; + + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation SLEEP_ANIM = RawAnimation.begin().thenLoop("sleep"); + private static final RawAnimation QUIRK_ANIM = RawAnimation.begin().thenPlay("quirk"); + private static final RawAnimation START_SLEEP_ANIM = RawAnimation.begin().thenPlay("start sleep"); + private static final RawAnimation WAKE_UP_ANIM = RawAnimation.begin().thenPlay("wake up"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private int sleepTicksRemaining; + private int napCooldownTicks; + private int idleAnimationCycleTicks; + private int grassEatTicks; + + protected AppleCowEntity(EntityType entityType, Level level) { + super(entityType, level); + this.napCooldownTicks = randomNapCooldown(); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(SLEEPING, false); + builder.define(QUIRK_TICKS, 0); + builder.define(SHEARED, false); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + this.goalSelector.addGoal(0, new AppleCowSleepGoal()); + this.goalSelector.addGoal(1, new AppleCowGrazeGoal()); + } + + @Override + public Cow getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + return this.getType().create(level) instanceof Cow offspring ? offspring : null; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, MAIN_CONTROLLER, 0, this::mainAnimController)); + controllers.add(new AnimationController<>(this, SLEEP_TRANSITION_CONTROLLER, 0, state -> PlayState.STOP) + .triggerableAnim(START_SLEEP_TRIGGER, START_SLEEP_ANIM) + .triggerableAnim(WAKE_UP_TRIGGER, WAKE_UP_ANIM)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + + if (this.level().isClientSide) { + return; + } + + int quirkTicks = this.getQuirkTicks(); + if (quirkTicks > 0) { + this.setQuirkTicks(quirkTicks - 1); + } + + if (this.napCooldownTicks > 0) { + this.napCooldownTicks--; + } + + if (this.isSleeping()) { + this.applySleepStillness(); + this.idleAnimationCycleTicks = 0; + + if (this.shouldWakeUp()) { + this.stopCowSleeping(); + return; + } + + if (this.sleepTicksRemaining > 0) { + this.sleepTicksRemaining--; + if (this.sleepTicksRemaining <= 0) { + this.stopCowSleeping(); + } + } + return; + } + + if (!this.isSheared()) { + this.grassEatTicks = 0; + } + + if (this.shouldStartNap()) { + this.startSleeping(Mth.nextInt(this.random, DAY_NAP_MIN_TICKS, DAY_NAP_MAX_TICKS)); + return; + } + + this.tickIdleQuirk(); + } + + @Override + public boolean hurt(net.minecraft.world.damagesource.DamageSource source, float amount) { + this.stopCowSleeping(); + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack heldItem = player.getItemInHand(hand); + if (heldItem.is(Items.SHEARS) && this.readyForShearing()) { + if (!this.level().isClientSide) { + this.shear(player == null ? SoundSource.BLOCKS : SoundSource.PLAYERS); + heldItem.hurtAndBreak(1, player, hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); + } + this.stopCowSleeping(); + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + this.stopCowSleeping(); + return super.mobInteract(player, hand); + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putBoolean(SLEEPING_KEY, this.isSleeping()); + tag.putInt(SLEEP_TICKS_KEY, this.sleepTicksRemaining); + tag.putInt(NAP_COOLDOWN_KEY, this.napCooldownTicks); + tag.putInt(QUIRK_TICKS_KEY, this.getQuirkTicks()); + tag.putBoolean(SHEARED_KEY, this.isSheared()); + tag.putInt(GRASS_EAT_TICKS_KEY, this.grassEatTicks); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.entityData.set(SLEEPING, tag.getBoolean(SLEEPING_KEY)); + this.sleepTicksRemaining = tag.getInt(SLEEP_TICKS_KEY); + this.napCooldownTicks = tag.contains(NAP_COOLDOWN_KEY) ? tag.getInt(NAP_COOLDOWN_KEY) : randomNapCooldown(); + this.setQuirkTicks(tag.getInt(QUIRK_TICKS_KEY)); + this.setSheared(tag.getBoolean(SHEARED_KEY)); + this.grassEatTicks = tag.getInt(GRASS_EAT_TICKS_KEY); + } + + public boolean isSleeping() { + return this.entityData.get(SLEEPING); + } + + public int getQuirkTicks() { + return this.entityData.get(QUIRK_TICKS); + } + + public boolean isSheared() { + return this.entityData.get(SHEARED); + } + + private void setQuirkTicks(int ticks) { + this.entityData.set(QUIRK_TICKS, Math.max(0, ticks)); + } + + private void setSheared(boolean sheared) { + this.entityData.set(SHEARED, sheared); + } + + private PlayState mainAnimController(AnimationState state) { + if (this.isSleeping()) { + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(SLEEP_ANIM); + } + + if (state.isMoving()) { + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(WALK_ANIM); + } + + if (this.getQuirkTicks() > 0) { + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(QUIRK_ANIM); + } + + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(IDLE_ANIM); + } + + private void tickIdleQuirk() { + if (this.getQuirkTicks() > 0 || !this.isEligibleForSleep() || this.isMovingForAnimation()) { + this.idleAnimationCycleTicks = 0; + return; + } + + this.idleAnimationCycleTicks++; + if (this.idleAnimationCycleTicks < IDLE_ANIMATION_CYCLE_TICKS) { + return; + } + + this.idleAnimationCycleTicks = 0; + if (this.random.nextInt(QUIRK_CHANCE) == 0) { + this.setQuirkTicks(QUIRK_ANIMATION_TICKS); + } + } + + private boolean shouldStartNap() { + return this.napCooldownTicks <= 0 + && this.isEligibleForSleep(); + } + + private boolean shouldWakeUp() { + if (!this.isSleeping()) { + return false; + } + + if (!this.isAlive() || this.isInWaterOrBubble() || this.isOnFire() || this.hurtTime > 0 || this.isLeashed() + || this.isPassenger() || this.isVehicle() || this.isInLove() || !this.onGround()) { + return true; + } + + return false; + } + + private boolean isEligibleForSleep() { + return this.onGround() + && !this.isInWaterOrBubble() + && !this.isOnFire() + && !this.isLeashed() + && !this.isPassenger() + && !this.isVehicle() + && !this.isInLove() + && this.getTarget() == null + && !this.isPanicking() + && !this.isMovingForAnimation(); + } + + private boolean isMovingForAnimation() { + return this.getDeltaMovement().horizontalDistanceSqr() > 1.0E-4D || this.getNavigation().isInProgress(); + } + + private void startSleeping(int sleepTicks) { + this.entityData.set(SLEEPING, true); + this.sleepTicksRemaining = sleepTicks; + this.idleAnimationCycleTicks = 0; + this.setQuirkTicks(0); + this.applySleepStillness(); + if (!this.level().isClientSide) { + this.triggerAnim(SLEEP_TRANSITION_CONTROLLER, START_SLEEP_TRIGGER); + } + } + + private void stopCowSleeping() { + if (!this.isSleeping()) { + return; + } + + this.entityData.set(SLEEPING, false); + this.sleepTicksRemaining = 0; + this.napCooldownTicks = randomNapCooldown(); + if (!this.level().isClientSide) { + this.triggerAnim(SLEEP_TRANSITION_CONTROLLER, WAKE_UP_TRIGGER); + } + } + + private void applySleepStillness() { + Vec3 motion = this.getDeltaMovement(); + this.getNavigation().stop(); + this.setJumping(false); + this.setSprinting(false); + this.zza = 0.0F; + this.xxa = 0.0F; + this.setDeltaMovement(0.0D, motion.y < 0.0D ? motion.y : 0.0D, 0.0D); + } + + private int randomNapCooldown() { + return this.level().isNight() ? NIGHT_NAP_COOLDOWN_TICKS : DAY_NAP_COOLDOWN_TICKS; + } + + @Override + public boolean readyForShearing() { + return !this.isBaby() && !this.isSleeping() && !this.isSheared(); + } + + @Override + public void shear(SoundSource source) { + if (this.level().isClientSide || !this.readyForShearing()) { + return; + } + + this.setSheared(true); + this.grassEatTicks = 0; + this.stopCowSleeping(); + this.playSound(SoundEvents.SHEEP_SHEAR, 1.0F, 1.0F); + this.spawnAtLocation(new ItemStack(this.shearDropItem(), 2), this.getBbHeight() * 0.66F); + } + + private net.minecraft.world.item.Item shearDropItem() { + if (this instanceof AppleCowEntityVariants.EnchantedGoldenAppleCow) { + return Items.ENCHANTED_GOLDEN_APPLE; + } + + if (this instanceof AppleCowEntityVariants.GoldenAppleCow) { + return Items.GOLDEN_APPLE; + } + + return Items.APPLE; + } + + private final class AppleCowSleepGoal extends Goal { + private AppleCowSleepGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.JUMP, Flag.LOOK)); + } + + @Override + public boolean canUse() { + return AppleCowEntity.this.isSleeping(); + } + + @Override + public boolean canContinueToUse() { + return AppleCowEntity.this.isSleeping(); + } + + @Override + public void start() { + AppleCowEntity.this.applySleepStillness(); + } + + @Override + public void tick() { + AppleCowEntity.this.applySleepStillness(); + } + } + + private final class AppleCowGrazeGoal extends Goal { + private AppleCowGrazeGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + @Override + public boolean canUse() { + return AppleCowEntity.this.isSheared() + && AppleCowEntity.this.isOnGrassBlock() + && AppleCowEntity.this.isEligibleForSleep() + && AppleCowEntity.this.random.nextInt(20) == 0; + } + + @Override + public boolean canContinueToUse() { + return AppleCowEntity.this.isSheared() + && AppleCowEntity.this.isOnGrassBlock() + && AppleCowEntity.this.grassEatTicks < GRASS_REGROW_TICKS; + } + + @Override + public void start() { + AppleCowEntity.this.getNavigation().stop(); + } + + @Override + public void tick() { + AppleCowEntity.this.getNavigation().stop(); + if (!AppleCowEntity.this.level().isClientSide && AppleCowEntity.this.isSheared() && AppleCowEntity.this.isOnGrassBlock()) { + AppleCowEntity.this.grassEatTicks++; + if (AppleCowEntity.this.grassEatTicks >= GRASS_REGROW_TICKS) { + AppleCowEntity.this.setSheared(false); + AppleCowEntity.this.grassEatTicks = 0; + AppleCowEntity.this.playSound(SoundEvents.GENERIC_EAT, 0.7F, 1.0F + AppleCowEntity.this.random.nextFloat() * 0.2F); + } else if (AppleCowEntity.this.grassEatTicks % 40 == 0) { + AppleCowEntity.this.playSound(SoundEvents.GENERIC_EAT, 0.4F, 1.0F + AppleCowEntity.this.random.nextFloat() * 0.15F); + } + } + } + + @Override + public void stop() { + if (!AppleCowEntity.this.isSheared()) { + AppleCowEntity.this.grassEatTicks = 0; + } + } + } + + private boolean isOnGrassBlock() { + BlockPos below = this.blockPosition().below(); + return this.level().getBlockState(below).is(Blocks.GRASS_BLOCK); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntityVariants.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntityVariants.java new file mode 100644 index 00000000..8789e97b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntityVariants.java @@ -0,0 +1,34 @@ +package com.craisinlord.antarchy.content.entity; + +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.level.Level; + +public final class AppleCowEntityVariants { + private AppleCowEntityVariants() { + } + + public static class AppleCow extends AppleCowEntity { + public AppleCow(EntityType entityType, Level level) { + super(entityType, level); + } + } + + public static class GoldenAppleCow extends AppleCowEntity { + public GoldenAppleCow(EntityType entityType, Level level) { + super(entityType, level); + } + } + + public static class EnchantedGoldenAppleCow extends AppleCowEntity { + public EnchantedGoldenAppleCow(EntityType entityType, Level level) { + super(entityType, level); + } + } + + public static class HoneyedAppleCow extends AppleCowEntity { + public HoneyedAppleCow(EntityType entityType, Level level) { + super(entityType, level); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java new file mode 100644 index 00000000..e25ef9e9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java @@ -0,0 +1,732 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.BedBugEggBlock; +import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ExperienceOrb; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.BreedGoal; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.RandomStrollGoal; +import net.minecraft.world.entity.ai.goal.TemptGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.Comparator; +import java.util.EnumSet; + +public class BedBugEntity extends Animal implements GeoEntity { + private static final byte BITE_ANIM_EVENT = 18; + private static final String BITE_TICKS_KEY = "BiteTicks"; + private static final String HAS_PENDING_EGGS_KEY = "HasPendingEggs"; + private static final String LAY_EGG_COOLDOWN_KEY = "LayEggCooldown"; + private static final String EGG_NEST_X_KEY = "EggNestX"; + private static final String EGG_NEST_Y_KEY = "EggNestY"; + private static final String EGG_NEST_Z_KEY = "EggNestZ"; + private static final int BITE_ANIM_TICKS = 10; + private static final int ATTACK_HIT_TICK = 5; + private static final int ATTACK_COOLDOWN_TICKS = 12; + private static final int MIN_LAY_EGG_DELAY = 80; + private static final int MAX_LAY_EGG_DELAY = 160; + private static final double FOOD_SEARCH_RADIUS = 10.0D; + private static final double EGG_GUARD_RADIUS = 7.0D; + private static final double ATTACK_START_REACH_BUFFER = 1.15D; + private static final double ATTACK_REACH_BUFFER = 0.3D; + private static final double ATTACK_LUNGE_HORIZONTAL_SPEED = 0.42D; + private static final double ATTACK_LUNGE_VERTICAL_SPEED = 0.1D; + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation BITE_ANIM = RawAnimation.begin().thenPlay("bite"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + @Nullable + private BlockPos eggNestPos; + private int biteAnimationTicks; + private int attackAnimTicks; + private int attackCooldownTicks; + private boolean attackDamageApplied; + @Nullable + private LivingEntity attackTarget; + private boolean hasPendingEggs; + private int layEggCooldown; + @Nullable + private ItemEntity cachedRottenFlesh; + private int nextFoodSearchTick; + private int guardNestCooldown; + + public BedBugEntity(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 4; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 18.0D) + .add(Attributes.MOVEMENT_SPEED, 0.24D) + .add(Attributes.ATTACK_DAMAGE, 4.0D) + .add(Attributes.FOLLOW_RANGE, 20.0D) + .add(Attributes.ARMOR, 2.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return level.getDifficulty() != Difficulty.PEACEFUL + && Animal.checkAnimalSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new TemptGoal(this, 1.0D, Ingredient.of(Items.ROTTEN_FLESH), false)); + this.goalSelector.addGoal(2, new BreedGoal(this, 0.9D)); + this.goalSelector.addGoal(3, new SeekRottenFleshGoal()); + this.goalSelector.addGoal(4, new GuardEggNestGoal()); + this.goalSelector.addGoal(5, new BedBugMeleeAttackGoal()); + this.goalSelector.addGoal(6, new RandomStrollGoal(this, 0.85D)); + this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 10.0F)); + this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>( + this, + Player.class, + 10, + true, + false, + entity -> entity instanceof Player player && this.shouldTargetPlayer(player) + )); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 2, this::mainAnimController)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + + if (this.biteAnimationTicks > 0) { + this.biteAnimationTicks--; + if (this.biteAnimationTicks <= 0) { + this.biteAnimationTicks = 0; + } + } + + if (this.level().isClientSide) { + return; + } + + if (this.attackCooldownTicks > 0) { + this.attackCooldownTicks--; + } + + if (this.attackAnimTicks > 0) { + this.tickAttackWindup(); + this.attackAnimTicks--; + if (this.attackAnimTicks <= 0) { + this.resetAttackState(); + } + } + + if (this.guardNestCooldown > 0) { + this.guardNestCooldown--; + } + + if (this.hasFoodPriorityTarget() && !(this.getTarget() instanceof Player)) { + this.setTarget(null); + } + + if (this.eggNestPos != null && !this.level().getBlockState(this.eggNestPos).is(AntarchyObjects.BED_BUG_EGG.get())) { + this.eggNestPos = this.findNearbyEggNest(); + } + + if (this.hasPendingEggs && --this.layEggCooldown <= 0) { + this.layClutch(); + } + } + + @Override + public boolean doHurtTarget(net.minecraft.world.entity.Entity target) { + if (!(target instanceof LivingEntity livingTarget)) { + return false; + } + + boolean hurt = this.level() instanceof ServerLevel serverLevel + ? livingTarget.hurt(AntarchyDamageSources.bedBugBite(serverLevel, this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)) + : super.doHurtTarget(target); + if (hurt) { + this.playSound(AntarchySoundEvents.BED_BUG_ATTACK.get(), 0.45F, 1.0F + this.random.nextFloat() * 0.1F); + } + return hurt; + } + + @Override + public boolean isFood(ItemStack stack) { + return stack.is(Items.ROTTEN_FLESH); + } + + @Override + public boolean canMate(Animal otherAnimal) { + return otherAnimal instanceof BedBugEntity + && otherAnimal != this + && this.isInLove() + && otherAnimal.isInLove(); + } + + @Override + @Nullable + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + return AntarchyObjects.BED_BUG.get().create(level); + } + + @Override + public void spawnChildFromBreeding(ServerLevel level, Animal otherParent) { + this.setAge(6000); + otherParent.setAge(6000); + this.resetLove(); + otherParent.resetLove(); + this.hasPendingEggs = true; + this.layEggCooldown = MIN_LAY_EGG_DELAY + this.random.nextInt(MAX_LAY_EGG_DELAY - MIN_LAY_EGG_DELAY + 1); + this.level().broadcastEntityEvent(this, (byte) 18); + if (this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { + level.addFreshEntity(new ExperienceOrb(level, this.getX(), this.getY(), this.getZ(), this.random.nextInt(7) + 1)); + } + } + + @Override + @Nullable + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData spawnGroupData) { + BedBugSpawnData bedBugSpawnData = spawnGroupData instanceof BedBugSpawnData data ? data : new BedBugSpawnData(); + super.finalizeSpawn(level, difficulty, spawnReason, null); + + if (bedBugSpawnData.eggNestPos == null && (spawnReason == MobSpawnType.NATURAL || spawnReason == MobSpawnType.CHUNK_GENERATION) && this.random.nextFloat() < 0.55F) { + bedBugSpawnData.eggNestPos = this.createNaturalEggNest(level); + } + + this.eggNestPos = bedBugSpawnData.eggNestPos; + return bedBugSpawnData; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(BITE_TICKS_KEY, this.biteAnimationTicks); + tag.putBoolean(HAS_PENDING_EGGS_KEY, this.hasPendingEggs); + tag.putInt(LAY_EGG_COOLDOWN_KEY, this.layEggCooldown); + if (this.eggNestPos != null) { + tag.putInt(EGG_NEST_X_KEY, this.eggNestPos.getX()); + tag.putInt(EGG_NEST_Y_KEY, this.eggNestPos.getY()); + tag.putInt(EGG_NEST_Z_KEY, this.eggNestPos.getZ()); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.biteAnimationTicks = Math.max(0, tag.getInt(BITE_TICKS_KEY)); + this.hasPendingEggs = tag.getBoolean(HAS_PENDING_EGGS_KEY); + this.layEggCooldown = tag.getInt(LAY_EGG_COOLDOWN_KEY); + if (tag.contains(EGG_NEST_X_KEY) && tag.contains(EGG_NEST_Y_KEY) && tag.contains(EGG_NEST_Z_KEY)) { + this.eggNestPos = new BlockPos(tag.getInt(EGG_NEST_X_KEY), tag.getInt(EGG_NEST_Y_KEY), tag.getInt(EGG_NEST_Z_KEY)); + } else { + this.eggNestPos = null; + } + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.BED_BUG_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.BED_BUG_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.BED_BUG_HURT.get(); + } + + @Override + protected float getSoundVolume() { + return 0.45F; + } + + @Override + public float getVoicePitch() { + return 1.25F + this.random.nextFloat() * 0.1F; + } + + public void setHomeEggPos(BlockPos eggPos) { + this.eggNestPos = eggPos.immutable(); + } + + @Nullable + public BlockPos getHomeEggPos() { + return this.eggNestPos; + } + + private PlayState mainAnimController(AnimationState state) { + if (this.biteAnimationTicks > 0) { + return state.setAndContinue(BITE_ANIM); + } + + if (this.getDeltaMovement().horizontalDistanceSqr() > 0.003D) { + state.getController().setAnimationSpeed(1.15D); + return state.setAndContinue(WALK_ANIM); + } + + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(IDLE_ANIM); + } + + private void startBiteAnimation() { + this.biteAnimationTicks = BITE_ANIM_TICKS; + this.level().broadcastEntityEvent(this, BITE_ANIM_EVENT); + } + + private void beginAttack(LivingEntity target) { + this.attackTarget = target; + this.attackAnimTicks = BITE_ANIM_TICKS; + this.attackCooldownTicks = ATTACK_COOLDOWN_TICKS; + this.attackDamageApplied = false; + this.getNavigation().stop(); + this.startBiteAnimation(); + this.commitLunge(target, ATTACK_LUNGE_HORIZONTAL_SPEED, ATTACK_LUNGE_VERTICAL_SPEED); + } + + private boolean shouldTargetPlayer(@Nullable Player player) { + return player != null + && !player.isCreative() + && !player.isSpectator() + && this.level().getDifficulty() != Difficulty.PEACEFUL + && !this.hasFoodPriorityTarget(); + } + + private boolean hasFoodPriorityTarget() { + return !this.isAttackLocked() && this.nearestRottenFlesh() != null; + } + + private void tickAttackWindup() { + if (this.attackTarget == null || !this.attackTarget.isAlive()) { + this.resetAttackState(); + return; + } + + this.getLookControl().setLookAt(this.attackTarget, 30.0F, 30.0F); + if (!this.attackDamageApplied + && this.attackAnimTicks == ATTACK_HIT_TICK + && this.distanceToSqr(this.attackTarget) <= this.getAttackReachSqr(this.attackTarget)) { + this.attackDamageApplied = true; + this.doHurtTarget(this.attackTarget); + } + } + + private void commitLunge(LivingEntity target, double horizontalSpeed, double verticalSpeed) { + Vec3 lunge = target.position().subtract(this.position()); + Vec3 horizontal = new Vec3(lunge.x, 0.0D, lunge.z); + if (horizontal.lengthSqr() < 1.0E-4D) { + return; + } + horizontal = horizontal.normalize().scale(horizontalSpeed); + this.setDeltaMovement(this.getDeltaMovement().add(horizontal.x, verticalSpeed, horizontal.z)); + this.hasImpulse = true; + } + + private double getAttackStartReachSqr(LivingEntity target) { + double reach = this.getBbWidth() * 1.7D + target.getBbWidth() + ATTACK_START_REACH_BUFFER; + return reach * reach + 1.0D; + } + + private double getAttackReachSqr(LivingEntity target) { + double reach = this.getBbWidth() * 1.55D + target.getBbWidth() + ATTACK_REACH_BUFFER; + return reach * reach + 1.0D; + } + + private void resetAttackState() { + this.attackAnimTicks = 0; + this.attackDamageApplied = false; + this.attackTarget = null; + } + + private boolean isAttackLocked() { + return this.attackAnimTicks > 0; + } + + private boolean shouldSnapBackToCombat() { + if (this.getHealth() < this.getMaxHealth() * 0.4F) { + return true; + } + LivingEntity lastAttacker = this.getLastHurtByMob(); + return lastAttacker != null && lastAttacker.isAlive() && this.distanceToSqr(lastAttacker) < 9.0D; + } + + @Nullable + private ItemEntity nearestRottenFlesh() { + if (this.tickCount >= this.nextFoodSearchTick || (this.cachedRottenFlesh != null && !this.cachedRottenFlesh.isAlive())) { + this.cachedRottenFlesh = this.findNearestRottenFlesh(); + this.nextFoodSearchTick = this.tickCount + 5; + } + return this.cachedRottenFlesh; + } + + @Override + public void handleEntityEvent(byte id) { + if (id == BITE_ANIM_EVENT) { + this.biteAnimationTicks = BITE_ANIM_TICKS; + return; + } + super.handleEntityEvent(id); + } + + private void invalidateFoodCache() { + this.cachedRottenFlesh = null; + this.nextFoodSearchTick = 0; + } + + @Nullable + private ItemEntity findNearestRottenFlesh() { + return this.level().getEntitiesOfClass( + ItemEntity.class, + this.getBoundingBox().inflate(FOOD_SEARCH_RADIUS, 2.0D, FOOD_SEARCH_RADIUS), + itemEntity -> itemEntity.isAlive() + && !itemEntity.getItem().isEmpty() + && itemEntity.getItem().is(Items.ROTTEN_FLESH)) + .stream() + .min(Comparator.comparingDouble(this::distanceToSqr)) + .orElse(null); + } + + @Nullable + private BlockPos findNearbyEggNest() { + BlockPos origin = this.blockPosition(); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + double bestDistance = Double.MAX_VALUE; + BlockPos bestPos = null; + + for (int x = -10; x <= 10; x++) { + for (int y = -3; y <= 3; y++) { + for (int z = -10; z <= 10; z++) { + cursor.set(origin.getX() + x, origin.getY() + y, origin.getZ() + z); + if (!this.level().getBlockState(cursor).is(AntarchyObjects.BED_BUG_EGG.get())) { + continue; + } + + double distance = cursor.distSqr(origin); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = cursor.immutable(); + } + } + } + } + + return bestPos; + } + + @Nullable + private BlockPos createNaturalEggNest(ServerLevelAccessor level) { + BlockPos origin = this.blockPosition(); + for (int attempt = 0; attempt < 12; attempt++) { + BlockPos candidate = origin.offset(this.random.nextInt(9) - 4, 0, this.random.nextInt(9) - 4); + BlockPos surface = level.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, candidate); + if (!level.isEmptyBlock(surface) || !level.getBlockState(surface.below()).isFaceSturdy(level, surface.below(), net.minecraft.core.Direction.UP)) { + continue; + } + + int eggs = 1 + this.random.nextInt(4); + level.setBlock(surface, AntarchyObjects.BED_BUG_EGG.get().defaultBlockState().setValue(BedBugEggBlock.EGGS, eggs), Block.UPDATE_ALL); + return surface.immutable(); + } + + return null; + } + + private void layClutch() { + BlockPos eggPos = this.findEggLayPos(); + if (eggPos == null) { + this.layEggCooldown = 40; + return; + } + + int eggs = 1 + this.random.nextInt(4); + this.level().setBlock( + eggPos, + AntarchyObjects.BED_BUG_EGG.get().defaultBlockState().setValue(BedBugEggBlock.EGGS, eggs), + 3 + ); + this.eggNestPos = eggPos; + this.hasPendingEggs = false; + this.playSound(SoundEvents.TURTLE_LAY_EGG, 0.8F, 1.15F + this.random.nextFloat() * 0.08F); + } + + @Nullable + private BlockPos findEggLayPos() { + if (this.eggNestPos != null && this.level().getBlockState(this.eggNestPos).isAir() && this.level().getBlockState(this.eggNestPos.below()).isFaceSturdy(this.level(), this.eggNestPos.below(), net.minecraft.core.Direction.UP)) { + return this.eggNestPos; + } + + BlockPos origin = this.blockPosition(); + for (int attempt = 0; attempt < 12; attempt++) { + BlockPos candidate = origin.offset(this.random.nextInt(7) - 3, 0, this.random.nextInt(7) - 3); + BlockPos surface = this.level().getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, candidate); + if (this.level().isEmptyBlock(surface) && this.level().getBlockState(surface.below()).isFaceSturdy(this.level(), surface.below(), net.minecraft.core.Direction.UP)) { + return surface.immutable(); + } + } + + return null; + } + + private final class BedBugMeleeAttackGoal extends MeleeAttackGoal { + private BedBugMeleeAttackGoal() { + super(BedBugEntity.this, 1.0D, true); + } + + @Override + public boolean canUse() { + return !BedBugEntity.this.hasFoodPriorityTarget() && super.canUse(); + } + + @Override + public boolean canContinueToUse() { + return !BedBugEntity.this.hasFoodPriorityTarget() + && (BedBugEntity.this.isAttackLocked() || super.canContinueToUse()); + } + + @Override + protected void checkAndPerformAttack(LivingEntity enemy) { + if (BedBugEntity.this.isAttackLocked()) { + return; + } + if (BedBugEntity.this.distanceToSqr(enemy) <= BedBugEntity.this.getAttackStartReachSqr(enemy)) { + if (this.isTimeToAttack() && BedBugEntity.this.attackCooldownTicks <= 0) { + this.resetAttackCooldown(); + BedBugEntity.this.beginAttack(enemy); + } + return; + } + super.checkAndPerformAttack(enemy); + } + } + + private final class SeekRottenFleshGoal extends Goal { + @Nullable + private ItemEntity targetFood; + private double lastDistanceSqr; + private int stuckTicks; + + private SeekRottenFleshGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + @Override + public boolean canUse() { + this.targetFood = BedBugEntity.this.nearestRottenFlesh(); + return this.targetFood != null + && BedBugEntity.this.biteAnimationTicks <= 0 + && !BedBugEntity.this.isAttackLocked() + && BedBugEntity.this.getTarget() == null; + } + + @Override + public boolean canContinueToUse() { + if (BedBugEntity.this.shouldSnapBackToCombat()) { + BedBugEntity.this.invalidateFoodCache(); + return false; + } + return this.targetFood != null + && this.targetFood.isAlive() + && !this.targetFood.getItem().isEmpty() + && this.targetFood.getItem().is(Items.ROTTEN_FLESH) + && BedBugEntity.this.getTarget() == null + && !BedBugEntity.this.isAttackLocked(); + } + + @Override + public void start() { + BedBugEntity.this.setTarget(null); + this.lastDistanceSqr = Double.MAX_VALUE; + this.stuckTicks = 0; + } + + @Override + public void stop() { + BedBugEntity.this.getNavigation().stop(); + this.targetFood = null; + this.lastDistanceSqr = Double.MAX_VALUE; + this.stuckTicks = 0; + } + + @Override + public void tick() { + if (this.targetFood == null) { + return; + } + + BedBugEntity.this.getLookControl().setLookAt(this.targetFood, 30.0F, 30.0F); + BedBugEntity.this.getNavigation().moveTo(this.targetFood, 1.0D); + double distanceSqr = BedBugEntity.this.distanceToSqr(this.targetFood); + + if (distanceSqr < this.lastDistanceSqr - 0.2D) { + this.lastDistanceSqr = distanceSqr; + this.stuckTicks = 0; + } else if (BedBugEntity.this.getNavigation().isDone() && distanceSqr > 4.0D) { + if (++this.stuckTicks >= 20) { + BedBugEntity.this.invalidateFoodCache(); + this.targetFood = null; + return; + } + } else { + this.lastDistanceSqr = distanceSqr; + } + + if (distanceSqr <= 2.0D) { + ItemStack stack = this.targetFood.getItem(); + stack.shrink(1); + if (stack.isEmpty()) { + this.targetFood.discard(); + } else { + this.targetFood.setItem(stack); + } + BedBugEntity.this.heal(2.0F); + BedBugEntity.this.startBiteAnimation(); + BedBugEntity.this.playSound(SoundEvents.GENERIC_EAT, 0.45F, 1.2F + BedBugEntity.this.random.nextFloat() * 0.2F); + BedBugEntity.this.invalidateFoodCache(); + this.targetFood = null; + BedBugEntity.this.getNavigation().stop(); + } + } + } + + private final class GuardEggNestGoal extends Goal { + @Nullable + private Vec3 patrolPos; + + private GuardEggNestGoal() { + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + public boolean canUse() { + if (BedBugEntity.this.guardNestCooldown > 0 + || BedBugEntity.this.eggNestPos == null + || BedBugEntity.this.hasFoodPriorityTarget() + || BedBugEntity.this.getTarget() != null + || BedBugEntity.this.hasPendingEggs) { + return false; + } + + this.patrolPos = this.findPatrolPos(); + return this.patrolPos != null; + } + + @Override + public boolean canContinueToUse() { + return this.patrolPos != null + && BedBugEntity.this.getTarget() == null + && !BedBugEntity.this.hasFoodPriorityTarget() + && !BedBugEntity.this.getNavigation().isDone(); + } + + @Override + public void start() { + if (this.patrolPos != null) { + BedBugEntity.this.getNavigation().moveTo(this.patrolPos.x, this.patrolPos.y, this.patrolPos.z, 0.9D); + } + } + + @Override + public void tick() { + if (this.patrolPos != null) { + BedBugEntity.this.getLookControl().setLookAt(this.patrolPos.x, this.patrolPos.y, this.patrolPos.z, 20.0F, 20.0F); + } + } + + @Override + public void stop() { + BedBugEntity.this.getNavigation().stop(); + BedBugEntity.this.guardNestCooldown = 20 + BedBugEntity.this.random.nextInt(20); + this.patrolPos = null; + } + + @Nullable + private Vec3 findPatrolPos() { + if (BedBugEntity.this.eggNestPos == null) { + return null; + } + + double distanceToNest = BedBugEntity.this.distanceToSqr(Vec3.atCenterOf(BedBugEntity.this.eggNestPos)); + if (distanceToNest < 9.0D && BedBugEntity.this.random.nextInt(6) != 0) { + return null; + } + + for (int attempt = 0; attempt < 10; attempt++) { + BlockPos candidate = BedBugEntity.this.eggNestPos.offset(BedBugEntity.this.random.nextInt(11) - 5, 0, BedBugEntity.this.random.nextInt(11) - 5); + BlockPos surface = BedBugEntity.this.level().getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, candidate); + if (surface.distSqr(BedBugEntity.this.eggNestPos) > EGG_GUARD_RADIUS * EGG_GUARD_RADIUS) { + continue; + } + return Vec3.atBottomCenterOf(surface); + } + + return Vec3.atBottomCenterOf(BedBugEntity.this.eggNestPos); + } + } + + private static final class BedBugSpawnData implements SpawnGroupData { + @Nullable + private BlockPos eggNestPos; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java new file mode 100644 index 00000000..5c073b38 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java @@ -0,0 +1,241 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.Objects; +import net.minecraft.core.BlockPos; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.Level.ExplosionInteraction; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class BomberEntity extends Monster implements GeoEntity { + private static final EntityDataAccessor FUSE_TICKS_DATA = + SynchedEntityData.defineId(BomberEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DETONATING_DATA = + SynchedEntityData.defineId(BomberEntity.class, EntityDataSerializers.BOOLEAN); + + private static final int DEFAULT_FUSE_TICKS = 80; + private static final int EXPLODE_ANIM_START_TICKS = 25; + private static final int FLASH_INTERVAL_TICKS = 5; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation EXPLODE_ANIM = RawAnimation.begin().thenPlay("explode"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + private int fuseTicks; + private boolean detonating; + + public BomberEntity(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 8; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, AntarchySettings.bomberHealth()) + .add(Attributes.MOVEMENT_SPEED, 0.28D) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.bomberAttackDamage()) + .add(Attributes.FOLLOW_RANGE, 24.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return level.getDifficulty() != Difficulty.PEACEFUL + && level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()) + && Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(FUSE_TICKS_DATA, 0); + builder.define(DETONATING_DATA, false); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new BomberAttackGoal()); + this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 10.0F)); + this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData spawnGroupData) { + double maxHealth = AntarchySettings.bomberHealth(); + double attackDamage = AntarchySettings.bomberAttackDamage(); + Objects.requireNonNull(this.getAttribute(Attributes.MAX_HEALTH)).setBaseValue(maxHealth); + this.setHealth((float) maxHealth); + Objects.requireNonNull(this.getAttribute(Attributes.ATTACK_DAMAGE)).setBaseValue(attackDamage); + return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); + } + + @Override + public boolean doHurtTarget(Entity target) { + if (!(target instanceof LivingEntity livingTarget)) { + return super.doHurtTarget(target); + } + + livingTarget.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); + this.primeFuse(); + return true; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + + if (!this.level().isClientSide && this.detonating) { + this.getNavigation().stop(); + this.setDeltaMovement(0.0D, 0.0D, 0.0D); + this.hasImpulse = false; + + if (this.fuseTicks > 0) { + this.fuseTicks--; + this.entityData.set(FUSE_TICKS_DATA, this.fuseTicks); + } + + if (this.fuseTicks <= 0) { + this.detonate(); + } + } + } + + public boolean isDetonating() { + return this.entityData.get(DETONATING_DATA); + } + + public int getFuseTicks() { + return this.entityData.get(FUSE_TICKS_DATA); + } + + public boolean isFlashing() { + return this.isDetonating() + && this.getFuseTicks() > 0 + && (this.getFuseTicks() / FLASH_INTERVAL_TICKS) % 2 == 0; + } + + private PlayState mainAnimController(AnimationState state) { + if (this.isDetonating() && this.getFuseTicks() <= EXPLODE_ANIM_START_TICKS) { + return state.setAndContinue(EXPLODE_ANIM); + } + + return state.setAndContinue(state.isMoving() ? WALK_ANIM : IDLE_ANIM); + } + + private void primeFuse() { + if (this.detonating) { + return; + } + + this.detonating = true; + this.fuseTicks = DEFAULT_FUSE_TICKS; + this.entityData.set(DETONATING_DATA, true); + this.entityData.set(FUSE_TICKS_DATA, this.fuseTicks); + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + this.hasImpulse = false; + this.playSound(SoundEvents.TNT_PRIMED, 1.0F, 0.9F + this.random.nextFloat() * 0.2F); + } + + private void detonate() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + this.discard(); + return; + } + + double x = this.getX(); + double y = this.getY(0.0625D); + double z = this.getZ(); + float radius = (float) AntarchySettings.bomberExplosionRadius(); + serverLevel.explode(this, x, y, z, radius, ExplosionInteraction.TNT); + + double extraDamage = AntarchySettings.bomberExplosionDamage(); + if (extraDamage > 0.0D) { + AABB damageBox = this.getBoundingBox().inflate(radius * 2.0D); + for (LivingEntity livingEntity : serverLevel.getEntitiesOfClass(LivingEntity.class, damageBox, entity -> entity.isAlive() && entity != this)) { + double distance = Math.sqrt(this.distanceToSqr(livingEntity)); + double falloff = radius <= 0.0F ? 0.0D : Math.max(0.0D, 1.0D - distance / radius); + if (falloff <= 0.0D) { + continue; + } + + livingEntity.hurt(this.level().damageSources().generic(), (float) (extraDamage * falloff)); + } + } + + this.detonating = false; + this.fuseTicks = 0; + this.entityData.set(DETONATING_DATA, false); + this.entityData.set(FUSE_TICKS_DATA, 0); + this.discard(); + } + + private final class BomberAttackGoal extends MeleeAttackGoal { + private BomberAttackGoal() { + super(BomberEntity.this, 1.1D, true); + } + + @Override + public boolean canUse() { + return !BomberEntity.this.detonating && super.canUse(); + } + + @Override + public boolean canContinueToUse() { + return !BomberEntity.this.detonating && super.canContinueToUse(); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java new file mode 100644 index 00000000..95683035 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java @@ -0,0 +1,826 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import java.util.EnumSet; +import java.util.Optional; +import java.util.function.Predicate; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.control.LookControl; +import net.minecraft.world.entity.ai.goal.BreedGoal; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.TemptGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.util.AirAndWaterRandomPos; +import net.minecraft.world.entity.ai.util.HoverRandomPos; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.animal.FlyingAnimal; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.CropBlock; +import net.minecraft.world.level.block.DoublePlantBlock; +import net.minecraft.world.level.block.StemBlock; +import net.minecraft.world.level.block.SweetBerryBushBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class ButterflyEntity extends Animal implements FlyingAnimal, GeoEntity { + private static final ResourceKey ELYTHIA_DIMENSION = ResourceKey.create( + Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "elythia") + ); + private static final TagKey CAN_SPAWN_BIOMES = TagKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "butterfly_can_spawn_biomes") + ); + + private static final EntityDataAccessor ACTIVITY_STATE = + SynchedEntityData.defineId(ButterflyEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor TEXTURE_VARIANT = + SynchedEntityData.defineId(ButterflyEntity.class, EntityDataSerializers.INT); + + private static final String ACTIVITY_STATE_KEY = "ActivityState"; + private static final String STAGE_TICKS_KEY = "StageTicks"; + private static final String TEXTURE_VARIANT_KEY = "TextureVariant"; + private static final String SAVED_FLOWER_X_KEY = "SavedFlowerX"; + private static final String SAVED_FLOWER_Y_KEY = "SavedFlowerY"; + private static final String SAVED_FLOWER_Z_KEY = "SavedFlowerZ"; + private static final String HAS_NECTAR_KEY = "HasNectar"; + + private static final int EMERGE_TICKS = 34; + private static final int FLOWER_SEARCH_COOLDOWN_MIN = 80; + private static final int FLOWER_SEARCH_COOLDOWN_MAX = 200; + private static final int FLOWER_RETRY_COOLDOWN = 200; + private static final int MAX_CROPS_GROWN_PER_POLLINATION = 10; + private static final String[] TEXTURE_VARIANT_NAMES = { + "brown", + "blue", + "green", + "magenta", + "yellow", + "cyan", + "lavender", + "light_blue", + "orange", + "purple" + }; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly"); + private static final RawAnimation EMERGE_ANIM = RawAnimation.begin().thenPlay("coocon2"); + private static final RawAnimation POLLINATE_ANIM = RawAnimation.begin().thenLoop("eat"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + @Nullable + BlockPos savedFlowerPos; + int remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(this.random, FLOWER_SEARCH_COOLDOWN_MIN, FLOWER_SEARCH_COOLDOWN_MAX); + private boolean hasNectar; + private int cropsGrownSincePollination; + private int stageTicks; + @Nullable + private ButterflyPollinateGoal butterflyPollinateGoal; + + public ButterflyEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 20, true); + this.lookControl = new ButterflyLookControl(this); + this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); + this.setPathfindingMalus(PathType.WATER, -1.0F); + this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); + this.setPathfindingMalus(PathType.LEAVES, -1.0F); + this.setPathfindingMalus(PathType.FENCE, -1.0F); + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 6.0D) + .add(Attributes.FLYING_SPEED, 0.55D) + .add(Attributes.MOVEMENT_SPEED, 0.3D) + .add(Attributes.FOLLOW_RANGE, 16.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return (level.getLevel().dimension().equals(ELYTHIA_DIMENSION) || level.getBiome(pos).is(CAN_SPAWN_BIOMES)) + && Animal.checkAnimalSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ACTIVITY_STATE, ActivityState.NORMAL.ordinal()); + builder.define(TEXTURE_VARIANT, 0); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new TemptGoal(this, 1.25D, Ingredient.of(AntarchyTags.Items.BUTTERFLY_BREEDING_FOODS), false)); + this.goalSelector.addGoal(1, new BreedGoal(this, 1.0D)); + this.butterflyPollinateGoal = new ButterflyPollinateGoal(); + this.goalSelector.addGoal(2, this.butterflyPollinateGoal); + this.goalSelector.addGoal(3, new ButterflyGrowCropGoal()); + this.goalSelector.addGoal(4, new ButterflyWanderGoal()); + this.goalSelector.addGoal(5, new RandomLookAroundGoal(this)); + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation navigation = new FlyingPathNavigation(this, level) { + @Override + public boolean isStableDestination(BlockPos pos) { + return !this.level.getBlockState(pos.below()).isAir(); + } + + @Override + public void tick() { + if (!ButterflyEntity.this.isPollinating()) { + super.tick(); + } + } + }; + navigation.setCanOpenDoors(false); + navigation.setCanFloat(false); + navigation.setCanPassDoors(true); + return navigation; + } + + @Override + public float getWalkTargetValue(BlockPos pos, LevelReader level) { + return level.getBlockState(pos).isAir() ? 10.0F : 0.0F; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 2, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + if (this.getActivityState() == ActivityState.EMERGING) { + return state.setAndContinue(EMERGE_ANIM); + } + + if (this.isPollinating()) { + return state.setAndContinue(POLLINATE_ANIM); + } + + if (this.onGround()) { + return state.setAndContinue(IDLE_ANIM); + } + + state.getController().setAnimationSpeed(0.78D); + return state.setAndContinue(FLY_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Nullable + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnType, @Nullable SpawnGroupData spawnGroupData) { + this.assignRandomTextureVariant(); + return super.finalizeSpawn(level, difficulty, spawnType, spawnGroupData); + } + + @Override + public void tick() { + super.tick(); + + if (this.level().isClientSide) { + return; + } + + if (this.getActivityState() == ActivityState.EMERGING) { + if (this.stageTicks > 0) { + this.stageTicks--; + } + if (this.stageTicks <= 0) { + this.setActivityState(ActivityState.NORMAL); + } + } + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.getActivityState() == ActivityState.EMERGING && source.is(DamageTypes.IN_WALL)) { + return false; + } + + return super.hurt(source, amount); + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public void aiStep() { + super.aiStep(); + + if (!this.level().isClientSide) { + if (this.remainingCooldownBeforeLocatingNewFlower > 0) { + this.remainingCooldownBeforeLocatingNewFlower--; + } + } + } + + public void setEmergingFromChrysalis() { + this.setActivityState(ActivityState.EMERGING); + this.stageTicks = EMERGE_TICKS; + this.setDeltaMovement(Vec3.ZERO); + } + + public boolean isPollinating() { + return this.getActivityState() == ActivityState.POLLINATING; + } + + private void setPollinating(boolean pollinating) { + if (this.getActivityState() == ActivityState.EMERGING) { + return; + } + + this.setActivityState(pollinating ? ActivityState.POLLINATING : ActivityState.NORMAL); + } + + boolean hasNectar() { + return this.hasNectar; + } + + private void setHasNectar(boolean hasNectar) { + this.hasNectar = hasNectar; + if (hasNectar) { + this.cropsGrownSincePollination = 0; + } + } + + void dropOffNectar() { + this.hasNectar = false; + this.cropsGrownSincePollination = 0; + } + + public boolean hasSavedFlowerPos() { + return this.savedFlowerPos != null; + } + + public boolean isFlowerValid(BlockPos pos) { + return this.level().isLoaded(pos) && this.isValidPollinationBlock(this.level().getBlockState(pos)); + } + + private boolean isValidPollinationBlock(BlockState state) { + if (state.hasProperty(BlockStateProperties.WATERLOGGED) && Boolean.TRUE.equals(state.getValue(BlockStateProperties.WATERLOGGED))) { + return false; + } + + if (!state.is(BlockTags.FLOWERS)) { + return false; + } + + if (state.is(Blocks.SUNFLOWER)) { + return state.getValue(DoublePlantBlock.HALF) == DoubleBlockHalf.UPPER; + } + + return true; + } + + boolean isTooFarAway(BlockPos pos) { + return !pos.closerThan(this.blockPosition(), 32.0D); + } + + boolean closerThan(BlockPos pos, int distance) { + return pos.closerThan(this.blockPosition(), (double) distance); + } + + @Override + public boolean isFood(ItemStack stack) { + return stack.is(AntarchyTags.Items.BUTTERFLY_BREEDING_FOODS); + } + + public String getTextureVariantName() { + int variant = this.getTextureVariant(); + return TEXTURE_VARIANT_NAMES[Mth.clamp(variant, 0, TEXTURE_VARIANT_NAMES.length - 1)]; + } + + public void assignRandomTextureVariant() { + this.setTextureVariant(this.random.nextInt(TEXTURE_VARIANT_NAMES.length)); + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + CaterpillarEntity caterpillar = AntarchyObjects.CATERPILLAR.get().create(level); + if (caterpillar != null) { + caterpillar.setBaby(true); + } + return caterpillar; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(ACTIVITY_STATE_KEY, this.getActivityState().ordinal()); + tag.putInt(STAGE_TICKS_KEY, this.stageTicks); + tag.putInt(TEXTURE_VARIANT_KEY, this.getTextureVariant()); + tag.putBoolean(HAS_NECTAR_KEY, this.hasNectar); + if (this.savedFlowerPos != null) { + tag.putInt(SAVED_FLOWER_X_KEY, this.savedFlowerPos.getX()); + tag.putInt(SAVED_FLOWER_Y_KEY, this.savedFlowerPos.getY()); + tag.putInt(SAVED_FLOWER_Z_KEY, this.savedFlowerPos.getZ()); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + ActivityState savedState = ActivityState.byOrdinal(tag.getInt(ACTIVITY_STATE_KEY)); + this.setActivityState(savedState == ActivityState.POLLINATING ? ActivityState.NORMAL : savedState); + this.stageTicks = tag.getInt(STAGE_TICKS_KEY); + if (tag.contains(TEXTURE_VARIANT_KEY)) { + this.setTextureVariant(tag.getInt(TEXTURE_VARIANT_KEY)); + } else { + this.assignRandomTextureVariant(); + } + this.hasNectar = tag.getBoolean(HAS_NECTAR_KEY); + this.savedFlowerPos = tag.contains(SAVED_FLOWER_X_KEY) + ? new BlockPos(tag.getInt(SAVED_FLOWER_X_KEY), tag.getInt(SAVED_FLOWER_Y_KEY), tag.getInt(SAVED_FLOWER_Z_KEY)) + : null; + } + + @Override + protected SoundEvent getAmbientSound() { + return null; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.BUTTERFLY_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return SoundEvents.BEE_DEATH; + } + + @Override + protected void playStepSound(BlockPos pos, BlockState state) { + } + + @Override + protected void checkFallDamage(double distance, boolean onGround, BlockState state, BlockPos pos) { + } + + @Override + protected void jumpInLiquid(net.minecraft.tags.TagKey fluidTag) { + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, 0.01D, 0.0D)); + } + + @Override + public boolean isFlying() { + return !this.onGround(); + } + + private void setActivityState(ActivityState state) { + this.entityData.set(ACTIVITY_STATE, state.ordinal()); + } + + private ActivityState getActivityState() { + return ActivityState.byOrdinal(this.entityData.get(ACTIVITY_STATE)); + } + + private int getTextureVariant() { + return this.entityData.get(TEXTURE_VARIANT); + } + + private void setTextureVariant(int variant) { + this.entityData.set(TEXTURE_VARIANT, Mth.clamp(variant, 0, TEXTURE_VARIANT_NAMES.length - 1)); + } + + private enum ActivityState { + NORMAL, + EMERGING, + POLLINATING; + + private static final ActivityState[] VALUES = values(); + + private static ActivityState byOrdinal(int ordinal) { + if (ordinal < 0 || ordinal >= VALUES.length) { + return NORMAL; + } + return VALUES[ordinal]; + } + } + + private abstract class BaseButterflyGoal extends Goal { + @Override + public boolean canUse() { + return ButterflyEntity.this.getActivityState() != ActivityState.EMERGING && this.canButterflyUse(); + } + + @Override + public boolean canContinueToUse() { + return ButterflyEntity.this.getActivityState() != ActivityState.EMERGING && this.canButterflyContinueToUse(); + } + + protected abstract boolean canButterflyUse(); + + protected abstract boolean canButterflyContinueToUse(); + } + + private final class ButterflyLookControl extends LookControl { + private ButterflyLookControl(Mob mob) { + super(mob); + } + + @Override + protected boolean resetXRotOnTick() { + return !ButterflyEntity.this.isPollinating(); + } + } + + private final class ButterflyPollinateGoal extends BaseButterflyGoal { + private static final int MIN_SUCCESSFUL_POLLINATION_TICKS = 24; + private static final int MAX_POLLINATING_TICKS = 70; + private static final int POSITION_CHANGE_CHANCE = 20; + private static final double ARRIVAL_THRESHOLD = 0.18D; + private static final double APPROACH_SPEED = 1.1D; + private static final double HOVER_SPEED = 0.52D; + private static final float HOVER_HEIGHT_WITHIN_FLOWER = 0.7F; + private static final float HOVER_POS_OFFSET = 0.45F; + private static final double SEARCH_RADIUS = 5.0D; + private static final int FLOWER_SEARCH_INTERVAL = 40; + + private final Predicate validFlowerPredicate = ButterflyEntity.this::isValidPollinationBlock; + @Nullable + private Vec3 hoverPos; + private int successfulPollinatingTicks; + private int totalPollinatingTicks; + @Nullable + private BlockPos lastSearchResult; + private int ticksSinceLastSearch = FLOWER_SEARCH_INTERVAL; + + private ButterflyPollinateGoal() { + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + protected boolean canButterflyUse() { + if (ButterflyEntity.this.remainingCooldownBeforeLocatingNewFlower > 0 || ButterflyEntity.this.hasNectar() || ButterflyEntity.this.level().isRaining()) { + return false; + } + + BlockPos targetFlower = this.resolveFlowerTarget(); + if (targetFlower == null) { + ButterflyEntity.this.remainingCooldownBeforeLocatingNewFlower = + Mth.nextInt(ButterflyEntity.this.random, FLOWER_SEARCH_COOLDOWN_MIN, FLOWER_SEARCH_COOLDOWN_MAX); + return false; + } + + ButterflyEntity.this.savedFlowerPos = targetFlower; + return true; + } + + @Override + protected boolean canButterflyContinueToUse() { + if (ButterflyEntity.this.savedFlowerPos == null || ButterflyEntity.this.level().isRaining()) { + return false; + } + + if (this.totalPollinatingTicks >= MAX_POLLINATING_TICKS) { + return false; + } + + if (ButterflyEntity.this.tickCount % 20 == 0 && !ButterflyEntity.this.isFlowerValid(ButterflyEntity.this.savedFlowerPos)) { + ButterflyEntity.this.savedFlowerPos = null; + return false; + } + + if (this.successfulPollinatingTicks > MIN_SUCCESSFUL_POLLINATION_TICKS) { + return ButterflyEntity.this.random.nextFloat() < 0.2F; + } + + return true; + } + + @Override + public boolean requiresUpdateEveryTick() { + return true; + } + + @Override + public void start() { + this.hoverPos = null; + this.successfulPollinatingTicks = 0; + this.totalPollinatingTicks = 0; + ButterflyEntity.this.setPollinating(false); + this.moveTowardFlowerCenter(); + } + + @Override + public void stop() { + if (this.successfulPollinatingTicks > MIN_SUCCESSFUL_POLLINATION_TICKS) { + ButterflyEntity.this.setHasNectar(true); + } + + ButterflyEntity.this.setPollinating(false); + ButterflyEntity.this.getNavigation().stop(); + ButterflyEntity.this.remainingCooldownBeforeLocatingNewFlower = FLOWER_RETRY_COOLDOWN; + } + + @Override + public void tick() { + if (ButterflyEntity.this.savedFlowerPos == null) { + return; + } + + this.totalPollinatingTicks++; + Vec3 flowerHoverPos = Vec3.atBottomCenterOf(ButterflyEntity.this.savedFlowerPos) + .add(0.0D, HOVER_HEIGHT_WITHIN_FLOWER, 0.0D); + + if (ButterflyEntity.this.position().distanceTo(flowerHoverPos) > 1.1D) { + ButterflyEntity.this.setPollinating(false); + this.hoverPos = flowerHoverPos; + this.moveTowardFlowerCenter(); + return; + } + + ButterflyEntity.this.setPollinating(true); + ButterflyEntity.this.getNavigation().stop(); + if (this.hoverPos == null) { + this.hoverPos = flowerHoverPos; + } + + boolean atHoverPos = ButterflyEntity.this.position().distanceTo(this.hoverPos) <= ARRIVAL_THRESHOLD; + boolean shouldMove = true; + if (atHoverPos) { + if (ButterflyEntity.this.random.nextInt(POSITION_CHANGE_CHANCE) == 0) { + this.hoverPos = new Vec3( + flowerHoverPos.x + this.getOffset(), + flowerHoverPos.y + (ButterflyEntity.this.random.nextDouble() - 0.5D) * 0.12D, + flowerHoverPos.z + this.getOffset() + ); + } else { + shouldMove = false; + } + + ButterflyEntity.this.getLookControl().setLookAt(flowerHoverPos.x, flowerHoverPos.y, flowerHoverPos.z); + } + + if (shouldMove && this.hoverPos != null) { + ButterflyEntity.this.getMoveControl().setWantedPosition( + this.hoverPos.x, + this.hoverPos.y, + this.hoverPos.z, + HOVER_SPEED + ); + } + + this.successfulPollinatingTicks++; + } + + @Nullable + private BlockPos resolveFlowerTarget() { + if (ButterflyEntity.this.savedFlowerPos != null) { + if (ButterflyEntity.this.isFlowerValid(ButterflyEntity.this.savedFlowerPos) && !ButterflyEntity.this.isTooFarAway(ButterflyEntity.this.savedFlowerPos)) { + return ButterflyEntity.this.savedFlowerPos; + } + ButterflyEntity.this.savedFlowerPos = null; + } + + this.ticksSinceLastSearch++; + if (this.ticksSinceLastSearch >= FLOWER_SEARCH_INTERVAL) { + this.ticksSinceLastSearch = 0; + this.lastSearchResult = this.findNearbyFlower().orElse(null); + } + return this.lastSearchResult; + } + + private void moveTowardFlowerCenter() { + if (ButterflyEntity.this.savedFlowerPos == null) { + return; + } + + ButterflyEntity.this.getNavigation().moveTo( + ButterflyEntity.this.savedFlowerPos.getX() + 0.5D, + ButterflyEntity.this.savedFlowerPos.getY() + 0.5D, + ButterflyEntity.this.savedFlowerPos.getZ() + 0.5D, + APPROACH_SPEED + ); + } + + private float getOffset() { + return (ButterflyEntity.this.random.nextFloat() * 2.0F - 1.0F) * HOVER_POS_OFFSET; + } + + private Optional findNearbyFlower() { + BlockPos origin = ButterflyEntity.this.blockPosition(); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + + for (int y = 0; (double) y <= SEARCH_RADIUS; y = y > 0 ? -y : 1 - y) { + for (int ring = 0; (double) ring < SEARCH_RADIUS; ++ring) { + for (int x = 0; x <= ring; x = x > 0 ? -x : 1 - x) { + for (int z = x < ring && x > -ring ? ring : 0; z <= ring; z = z > 0 ? -z : 1 - z) { + cursor.setWithOffset(origin, x, y - 1, z); + if (origin.closerThan(cursor, SEARCH_RADIUS) + && this.validFlowerPredicate.test(ButterflyEntity.this.level().getBlockState(cursor))) { + return Optional.of(cursor.immutable()); + } + } + } + } + } + + return Optional.empty(); + } + } + + private final class ButterflyGrowCropGoal extends BaseButterflyGoal { + private static final int GROW_CHANCE = 30; + + @Override + protected boolean canButterflyUse() { + if (!ButterflyEntity.this.hasNectar() || ButterflyEntity.this.cropsGrownSincePollination >= MAX_CROPS_GROWN_PER_POLLINATION) { + return false; + } + + return ButterflyEntity.this.random.nextFloat() >= 0.3F; + } + + @Override + protected boolean canButterflyContinueToUse() { + return this.canButterflyUse(); + } + + @Override + public void stop() { + if (ButterflyEntity.this.cropsGrownSincePollination >= MAX_CROPS_GROWN_PER_POLLINATION) { + ButterflyEntity.this.dropOffNectar(); + } + } + + @Override + public void tick() { + if (!(ButterflyEntity.this.level() instanceof ServerLevel serverLevel)) { + return; + } + + if (ButterflyEntity.this.random.nextInt(this.adjustedTickDelay(GROW_CHANCE)) != 0) { + return; + } + + for (int depth = 1; depth <= 2; depth++) { + BlockPos cropPos = ButterflyEntity.this.blockPosition().below(depth); + BlockState cropState = ButterflyEntity.this.level().getBlockState(cropPos); + Block block = cropState.getBlock(); + BlockState updatedState = null; + + if (!cropState.is(BlockTags.BEE_GROWABLES)) { + continue; + } + + if (block instanceof CropBlock cropBlock) { + if (!cropBlock.isMaxAge(cropState)) { + updatedState = cropBlock.getStateForAge(cropBlock.getAge(cropState) + 1); + } + } else if (block instanceof StemBlock) { + int age = cropState.getValue(StemBlock.AGE); + if (age < 7) { + updatedState = cropState.setValue(StemBlock.AGE, age + 1); + } + } else if (cropState.is(Blocks.SWEET_BERRY_BUSH)) { + int age = cropState.getValue(SweetBerryBushBlock.AGE); + if (age < 3) { + updatedState = cropState.setValue(SweetBerryBushBlock.AGE, age + 1); + } + } else if (cropState.is(Blocks.CAVE_VINES) || cropState.is(Blocks.CAVE_VINES_PLANT)) { + ((BonemealableBlock) cropState.getBlock()).performBonemeal(serverLevel, ButterflyEntity.this.random, cropPos, cropState); + ButterflyEntity.this.level().levelEvent(2011, cropPos, 15); + ButterflyEntity.this.cropsGrownSincePollination++; + } + + if (updatedState != null) { + ButterflyEntity.this.level().levelEvent(2011, cropPos, 15); + ButterflyEntity.this.level().setBlockAndUpdate(cropPos, updatedState); + ButterflyEntity.this.cropsGrownSincePollination++; + } + + if (ButterflyEntity.this.cropsGrownSincePollination >= MAX_CROPS_GROWN_PER_POLLINATION) { + ButterflyEntity.this.dropOffNectar(); + return; + } + } + } + } + + private final class ButterflyWanderGoal extends BaseButterflyGoal { + private ButterflyWanderGoal() { + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + protected boolean canButterflyUse() { + return ButterflyEntity.this.getNavigation().isDone() + && ButterflyEntity.this.random.nextInt(16) == 0; + } + + @Override + protected boolean canButterflyContinueToUse() { + return ButterflyEntity.this.getNavigation().isInProgress(); + } + + @Override + public void start() { + Vec3 target = this.findPos(); + if (target != null) { + ButterflyEntity.this.getNavigation().moveTo(target.x, target.y, target.z, 1.0D); + } + } + + @Nullable + private Vec3 findPos() { + Vec3 direction; + if (ButterflyEntity.this.savedFlowerPos != null && !ButterflyEntity.this.closerThan(ButterflyEntity.this.savedFlowerPos, 10)) { + direction = Vec3.atCenterOf(ButterflyEntity.this.savedFlowerPos).subtract(ButterflyEntity.this.position()).normalize(); + } else { + direction = ButterflyEntity.this.getViewVector(0.0F); + } + + Vec3 hoverTarget = HoverRandomPos.getPos( + ButterflyEntity.this, + 8, + 7, + direction.x, + direction.z, + (float) Math.PI / 2.0F, + 3, + 1 + ); + if (hoverTarget != null) { + return hoverTarget; + } + + return AirAndWaterRandomPos.getPos( + ButterflyEntity.this, + 8, + 4, + -2, + direction.x, + direction.z, + (double) ((float) Math.PI / 2.0F) + ); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java new file mode 100644 index 00000000..833d2707 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java @@ -0,0 +1,659 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.config.AntarchySettings; + +import java.util.UUID; +import java.util.EnumSet; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; +import net.minecraft.util.RandomSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.TemptGoal; +import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.animation.keyframe.event.builtin.AutoPlayingSoundKeyframeHandler; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class CaterpillarEntity extends Animal implements GeoEntity { + private static final ResourceKey ELYTHIA_DIMENSION = ResourceKey.create( + net.minecraft.core.registries.Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "elythia") + ); + private static final TagKey CAN_SPAWN_BIOMES = TagKey.create( + net.minecraft.core.registries.Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "caterpillar_can_spawn_biomes") + ); + private static final EntityDataAccessor LIFE_STAGE = + SynchedEntityData.defineId(CaterpillarEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor EAT_ANIMATION_TICKS = + SynchedEntityData.defineId(CaterpillarEntity.class, EntityDataSerializers.INT); + + private static final String GROWTH_TICKS_KEY = "GrowthTicks"; + private static final String STAGE_TICKS_KEY = "StageTicks"; + private static final String EAT_ANIM_TICKS_KEY = "EatAnimTicks"; + private static final String PUPATION_TARGET_X_KEY = "PupationTargetX"; + private static final String PUPATION_TARGET_Y_KEY = "PupationTargetY"; + private static final String PUPATION_TARGET_Z_KEY = "PupationTargetZ"; + + private static final int FOOD_SEARCH_INTERVAL_TICKS = 20; + private static final int FOOD_REPATH_INTERVAL_TICKS = 12; + private static final int EAT_SEARCH_INTERVAL_TICKS = 5; + private static final double FOOD_SEARCH_RANGE = 10.0D; + private static final double FOOD_EAT_REACH = 1.4D; + private static final int GROWTH_TICKS_TO_PUPATE = 4800; + private static final int FOOD_GROWTH_BONUS = 600; + private static final int EAT_ANIM_TICKS = 30; + private static final int EAT_CONSUME_TICK = 16; + private static final int PUPATION_ANIM_TICKS = 25; + private static final int PUPATION_SEARCH_INTERVAL_TICKS = 20; + private static final int PUPATION_SEARCH_RADIUS_HORIZONTAL = 8; + private static final int PUPATION_SEARCH_RADIUS_VERTICAL = 8; + private static final double PUPATION_BEGIN_DISTANCE_SQR = 0.35D; + private static final double FOOD_SPEED = 1.0D; + private static final double PLAYER_FOLLOW_SPEED = 0.95D; + private static final double PUPATION_SPEED = 0.9D; + + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation EAT_ANIM = RawAnimation.begin().thenPlay("eat"); + private static final RawAnimation PUPATION_ANIM = RawAnimation.begin().thenPlay("Coocon"); + private static final RawAnimation CHRYSALIS_ANIM = RawAnimation.begin().thenLoop("coocon"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + @Nullable + private ItemEntity targetFoodItem; + @Nullable + private BlockPos pupationStandPos; + @Nullable + private UUID eatingFoodEntityId; + private boolean hasConsumedCurrentFood; + private int growthTicks; + private int stageTicks; + private int nextFoodSearchTick; + private int nextFoodRepathTick; + private int nextEatSearchTick; + private int nextPupationSearchTick; + + public CaterpillarEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setPathfindingMalus(PathType.LEAVES, -1.0F); + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 6.0D) + .add(Attributes.MOVEMENT_SPEED, 0.156D) + .add(Attributes.FOLLOW_RANGE, 14.0D); + } + + @Override + protected PathNavigation createNavigation(Level level) { + GroundPathNavigation navigation = new GroundPathNavigation(this, level) { + @Override + public boolean isStableDestination(BlockPos pos) { + return CaterpillarEntity.this.isWalkableStandPos(pos); + } + }; + navigation.setCanFloat(false); + navigation.setCanOpenDoors(false); + navigation.setCanPassDoors(true); + return navigation; + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return (level.getLevel().dimension().equals(ELYTHIA_DIMENSION) || level.getBiome(pos).is(CAN_SPAWN_BIOMES)) + && Animal.checkAnimalSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new TemptGoal(this, PLAYER_FOLLOW_SPEED, Ingredient.of(AntarchyTags.Items.CATERPILLAR_FOODS), false)); + this.goalSelector.addGoal(2, new PupationSeekGoal()); + this.goalSelector.addGoal(3, new WaterAvoidingRandomStrollGoal(this, 0.9D)); + this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); + } + + @Override + public float maxUpStep() { + return 1.0F; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(LIFE_STAGE, LifeStage.CRAWLING.ordinal()); + builder.define(EAT_ANIMATION_TICKS, 0); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 2, this::mainAnimController) + .setSoundKeyframeHandler(new AutoPlayingSoundKeyframeHandler<>())); + } + + private PlayState mainAnimController(AnimationState state) { + if (this.getLifeStage() == LifeStage.PUPATING) { + return state.setAndContinue(PUPATION_ANIM); + } + + if (this.getLifeStage() == LifeStage.CHRYSALIS) { + return state.setAndContinue(CHRYSALIS_ANIM); + } + + if (this.getEatAnimationTicks() > 0) { + return state.setAndContinue(EAT_ANIM); + } + + return state.isMoving() ? state.setAndContinue(WALK_ANIM) : state.setAndContinue(IDLE_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + + if (this.level().isClientSide) { + return; + } + + LifeStage stage = this.getLifeStage(); + if (stage == LifeStage.PUPATING) { + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + if (this.stageTicks > 0) { + this.stageTicks--; + } + if (this.stageTicks <= 0) { + this.enterChrysalis(); + } + return; + } + + if (stage == LifeStage.CHRYSALIS) { + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + if (this.stageTicks > 0) { + this.stageTicks--; + } + if (this.stageTicks <= 0) { + this.metamorphose(); + } + return; + } + + if (this.getEatAnimationTicks() > 0) { + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + this.tickEatingFood(); + this.setEatAnimationTicks(this.getEatAnimationTicks() - 1); + if (this.getEatAnimationTicks() <= 1) { + this.eatingFoodEntityId = null; + this.hasConsumedCurrentFood = false; + } + return; + } + + if (this.isNoGravity()) { + this.setNoGravity(false); + } + + if (!this.isBaby()) { + this.growthTicks++; + } + + if (this.targetFoodItem != null && !this.isValidFoodItem(this.targetFoodItem)) { + this.targetFoodItem = null; + } + + if (this.pupationStandPos != null && !this.isValidPupationStandPos(this.pupationStandPos)) { + this.pupationStandPos = null; + } + + if (this.readyToPupate()) { + this.setLifeStage(LifeStage.SEEKING_PUPATION); + this.handlePupationSeeking(); + return; + } + + if (this.getLifeStage() != LifeStage.CRAWLING) { + this.setLifeStage(LifeStage.CRAWLING); + } + this.handleFoodForaging(); + } + + private void handleFoodForaging() { + if (this.tryEatNearbyFoodItem()) { + this.targetFoodItem = null; + this.getNavigation().stop(); + return; + } + + ItemEntity targetItem = this.getCurrentFoodTarget(); + if (targetItem == null) { + return; + } + + if (this.getNavigation().isDone() || this.tickCount >= this.nextFoodRepathTick) { + this.getNavigation().moveTo(targetItem, FOOD_SPEED); + this.nextFoodRepathTick = this.tickCount + FOOD_REPATH_INTERVAL_TICKS; + } + } + + private boolean tryEatNearbyFoodItem() { + if (this.tickCount < this.nextEatSearchTick) { + return false; + } + this.nextEatSearchTick = this.tickCount + EAT_SEARCH_INTERVAL_TICKS; + + for (ItemEntity itemEntity : this.level().getEntitiesOfClass( + ItemEntity.class, + this.getBoundingBox().inflate(FOOD_EAT_REACH, 0.6D, FOOD_EAT_REACH), + this::isValidFoodItem)) { + this.startEatingFood(itemEntity); + this.setEatAnimationTicks(EAT_ANIM_TICKS); + return true; + } + + return false; + } + + @Nullable + private ItemEntity getCurrentFoodTarget() { + if (this.targetFoodItem != null && this.isValidFoodItem(this.targetFoodItem)) { + return this.targetFoodItem; + } + + if (this.tickCount < this.nextFoodSearchTick) { + return null; + } + + this.nextFoodSearchTick = this.tickCount + FOOD_SEARCH_INTERVAL_TICKS; + this.targetFoodItem = this.findClosestFoodItem(); + return this.targetFoodItem; + } + + @Nullable + private ItemEntity findClosestFoodItem() { + ItemEntity bestMatch = null; + double bestDistance = Double.MAX_VALUE; + + for (ItemEntity itemEntity : this.level().getEntitiesOfClass( + ItemEntity.class, + this.getBoundingBox().inflate(FOOD_SEARCH_RANGE), + this::isValidFoodItem)) { + double distance = this.distanceToSqr(itemEntity); + if (distance < bestDistance) { + bestDistance = distance; + bestMatch = itemEntity; + } + } + + return bestMatch; + } + + private boolean isValidFoodItem(ItemEntity itemEntity) { + return itemEntity.isAlive() + && !itemEntity.getItem().isEmpty() + && itemEntity.getItem().is(AntarchyTags.Items.CATERPILLAR_FOODS); + } + + private void startEatingFood(ItemEntity itemEntity) { + this.eatingFoodEntityId = itemEntity.getUUID(); + this.hasConsumedCurrentFood = false; + } + + private void tickEatingFood() { + if (this.hasConsumedCurrentFood || this.eatingFoodEntityId == null || this.getEatAnimationTicks() > EAT_CONSUME_TICK) { + return; + } + + ItemEntity itemEntity = this.findFoodEntityByUuid(this.eatingFoodEntityId); + if (itemEntity != null) { + ItemStack stack = itemEntity.getItem(); + if (stack.is(AntarchyTags.Items.CATERPILLAR_FOODS)) { + stack.shrink(1); + if (stack.isEmpty()) { + itemEntity.discard(); + } else { + itemEntity.setItem(stack); + } + this.growthTicks = Math.min(GROWTH_TICKS_TO_PUPATE, this.growthTicks + FOOD_GROWTH_BONUS); + } + } + + this.hasConsumedCurrentFood = true; + } + + @Nullable + private ItemEntity findFoodEntityByUuid(UUID uuid) { + for (ItemEntity itemEntity : this.level().getEntitiesOfClass( + ItemEntity.class, + this.getBoundingBox().inflate(3.0D), + entity -> entity.getUUID().equals(uuid))) { + return itemEntity; + } + return null; + } + + private void handlePupationSeeking() { + BlockPos standPos = this.getCurrentPupationStandPos(); + if (standPos == null) { + return; + } + + Vec3 targetCenter = Vec3.atBottomCenterOf(standPos); + if (this.distanceToSqr(targetCenter) <= PUPATION_BEGIN_DISTANCE_SQR) { + this.beginPupation(standPos); + return; + } + + if (this.getNavigation().isDone() || this.tickCount >= this.nextFoodRepathTick) { + this.getNavigation().moveTo(targetCenter.x, targetCenter.y, targetCenter.z, PUPATION_SPEED); + this.nextFoodRepathTick = this.tickCount + FOOD_REPATH_INTERVAL_TICKS; + } + } + + @Nullable + private BlockPos getCurrentPupationStandPos() { + if (this.pupationStandPos != null && this.isValidPupationStandPos(this.pupationStandPos)) { + return this.pupationStandPos; + } + + if (this.tickCount < this.nextPupationSearchTick) { + return null; + } + + this.nextPupationSearchTick = this.tickCount + PUPATION_SEARCH_INTERVAL_TICKS; + this.pupationStandPos = this.findClosestPupationStandPos(); + return this.pupationStandPos; + } + + @Nullable + private BlockPos findClosestPupationStandPos() { + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + double bestDistance = Double.MAX_VALUE; + + for (BlockPos pos : BlockPos.betweenClosed( + origin.offset(-PUPATION_SEARCH_RADIUS_HORIZONTAL, -PUPATION_SEARCH_RADIUS_VERTICAL, -PUPATION_SEARCH_RADIUS_HORIZONTAL), + origin.offset(PUPATION_SEARCH_RADIUS_HORIZONTAL, PUPATION_SEARCH_RADIUS_VERTICAL, PUPATION_SEARCH_RADIUS_HORIZONTAL))) { + if (!this.isValidPupationStandPos(pos)) { + continue; + } + + double distance = pos.distSqr(origin); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = pos.immutable(); + } + } + + return bestPos; + } + + private boolean isValidPupationStandPos(BlockPos pos) { + BlockPos ceilingPos = pos.above(3); + if (!this.level().getBlockState(pos).isAir() + || !this.level().getBlockState(pos.above()).isAir() + || !this.level().getBlockState(pos.above(2)).isAir()) { + return false; + } + + BlockState supportState = this.level().getBlockState(ceilingPos); + return !supportState.isAir() && supportState.isFaceSturdy(this.level(), ceilingPos, Direction.DOWN); + } + + private boolean isWalkableStandPos(BlockPos pos) { + BlockState floorState = this.level().getBlockState(pos.below()); + return this.level().getBlockState(pos).isAir() + && this.level().getBlockState(pos.above()).isAir() + && floorState.isFaceSturdy(this.level(), pos.below(), Direction.UP); + } + + private void beginPupation(BlockPos standPos) { + this.pupationStandPos = standPos.immutable(); + this.setLifeStage(LifeStage.PUPATING); + this.stageTicks = PUPATION_ANIM_TICKS; + this.targetFoodItem = null; + this.getNavigation().stop(); + this.setNoGravity(true); + this.setDeltaMovement(Vec3.ZERO); + this.moveTo(standPos.getX() + 0.5D, standPos.getY() + 0.85D, standPos.getZ() + 0.5D, this.getYRot(), this.getXRot()); + } + + private void enterChrysalis() { + this.setLifeStage(LifeStage.CHRYSALIS); + this.stageTicks = AntarchySettings.caterpillarPupationTimeTicks(); + this.setNoGravity(true); + this.setDeltaMovement(Vec3.ZERO); + } + + public void spawnAsChrysalis() { + this.growthTicks = GROWTH_TICKS_TO_PUPATE; + this.setLifeStage(LifeStage.CHRYSALIS); + this.stageTicks = AntarchySettings.caterpillarPupationTimeTicks(); + this.setNoGravity(true); + this.setDeltaMovement(Vec3.ZERO); + this.setPersistenceRequired(); + } + + private void metamorphose() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + ButterflyEntity butterfly = AntarchyObjects.BUTTERFLY.get().create(serverLevel); + if (butterfly == null) { + return; + } + + butterfly.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); + butterfly.assignRandomTextureVariant(); + butterfly.setEmergingFromChrysalis(); + if (this.hasCustomName()) { + butterfly.setCustomName(this.getCustomName()); + butterfly.setCustomNameVisible(this.isCustomNameVisible()); + } + if (this.isPersistenceRequired()) { + butterfly.setPersistenceRequired(); + } + serverLevel.addFreshEntity(butterfly); + this.discard(); + } + + private boolean readyToPupate() { + return !this.isBaby() && this.growthTicks >= GROWTH_TICKS_TO_PUPATE; + } + + public void forcePupation() { + this.growthTicks = GROWTH_TICKS_TO_PUPATE; + this.pupationStandPos = null; + this.stageTicks = 0; + this.nextPupationSearchTick = 0; + this.setLifeStage(LifeStage.SEEKING_PUPATION); + this.getNavigation().stop(); + this.setNoGravity(false); + } + + private int getEatAnimationTicks() { + return this.entityData.get(EAT_ANIMATION_TICKS); + } + + private void setEatAnimationTicks(int ticks) { + this.entityData.set(EAT_ANIMATION_TICKS, Math.max(0, ticks)); + } + + private void setLifeStage(LifeStage stage) { + this.entityData.set(LIFE_STAGE, stage.ordinal()); + } + + private LifeStage getLifeStage() { + int index = this.entityData.get(LIFE_STAGE); + if (index < 0 || index >= LifeStage.VALUES.length) { + return LifeStage.CRAWLING; + } + return LifeStage.VALUES[index]; + } + + @Override + public boolean isFood(ItemStack stack) { + return stack.is(AntarchyTags.Items.CATERPILLAR_FOODS); + } + + @Override + public boolean canFallInLove() { + return false; + } + + @Override + @Nullable + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + return null; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(GROWTH_TICKS_KEY, this.growthTicks); + tag.putInt(STAGE_TICKS_KEY, this.stageTicks); + tag.putInt(EAT_ANIM_TICKS_KEY, this.getEatAnimationTicks()); + tag.putInt("LifeStage", this.getLifeStage().ordinal()); + if (this.pupationStandPos != null) { + tag.putInt(PUPATION_TARGET_X_KEY, this.pupationStandPos.getX()); + tag.putInt(PUPATION_TARGET_Y_KEY, this.pupationStandPos.getY()); + tag.putInt(PUPATION_TARGET_Z_KEY, this.pupationStandPos.getZ()); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.growthTicks = tag.getInt(GROWTH_TICKS_KEY); + this.stageTicks = tag.getInt(STAGE_TICKS_KEY); + this.setEatAnimationTicks(tag.getInt(EAT_ANIM_TICKS_KEY)); + this.setLifeStage(LifeStage.VALUES[Math.max(0, Math.min(LifeStage.VALUES.length - 1, tag.getInt("LifeStage")))]); + this.pupationStandPos = tag.contains(PUPATION_TARGET_X_KEY) + ? new BlockPos(tag.getInt(PUPATION_TARGET_X_KEY), tag.getInt(PUPATION_TARGET_Y_KEY), tag.getInt(PUPATION_TARGET_Z_KEY)) + : null; + this.targetFoodItem = null; + this.eatingFoodEntityId = null; + this.hasConsumedCurrentFood = false; + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.CATERPILLAR_IDLE.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.CATERPILLAR_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.CATERPILLAR_HURT.get(); + } + + private enum LifeStage { + CRAWLING, + SEEKING_PUPATION, + PUPATING, + CHRYSALIS; + + private static final LifeStage[] VALUES = LifeStage.values(); + } + + private final class PupationSeekGoal extends Goal { + private PupationSeekGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + @Override + public boolean canUse() { + return !CaterpillarEntity.this.isBaby() && CaterpillarEntity.this.readyToPupate(); + } + + @Override + public boolean canContinueToUse() { + return !CaterpillarEntity.this.isBaby() + && (CaterpillarEntity.this.readyToPupate() + || CaterpillarEntity.this.getLifeStage() == LifeStage.SEEKING_PUPATION + || CaterpillarEntity.this.getLifeStage() == LifeStage.PUPATING + || CaterpillarEntity.this.getLifeStage() == LifeStage.CHRYSALIS); + } + + @Override + public void start() { + CaterpillarEntity.this.setLifeStage(LifeStage.SEEKING_PUPATION); + CaterpillarEntity.this.nextPupationSearchTick = 0; + } + + @Override + public void stop() { + CaterpillarEntity.this.getNavigation().stop(); + } + + @Override + public void tick() { + if (CaterpillarEntity.this.getLifeStage() == LifeStage.PUPATING + || CaterpillarEntity.this.getLifeStage() == LifeStage.CHRYSALIS) { + return; + } + + CaterpillarEntity.this.setLifeStage(LifeStage.SEEKING_PUPATION); + CaterpillarEntity.this.handlePupationSeeking(); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/DiamondMinecartEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/DiamondMinecartEntity.java new file mode 100644 index 00000000..c9655da6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/DiamondMinecartEntity.java @@ -0,0 +1,405 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.Minecart; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseRailBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.RailBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.RailShape; +import net.minecraft.world.phys.AABB; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class DiamondMinecartEntity extends Minecart { + private static final EntityDataAccessor SYNCED_SPEED = + SynchedEntityData.defineId(DiamondMinecartEntity.class, EntityDataSerializers.FLOAT); + private static final EntityDataAccessor SYNCED_FACING = + SynchedEntityData.defineId(DiamondMinecartEntity.class, EntityDataSerializers.INT); + + private byte inputFlags = 0; + private float currentSpeed = 0.0F; + private Direction facingDir = Direction.SOUTH; + private BlockPos lastBlockPos = null; + private boolean railWarningCooldown = false; + + private final Item dropItem; + + private record RailPlan(RailShape currentShape, BlockPos nextPos, RailShape nextShape) { + } + + public DiamondMinecartEntity(EntityType entityType, Level level, Item dropItem) { + super(entityType, level); + this.dropItem = dropItem; + } + + public DiamondMinecartEntity(EntityType entityType, Level level, + double x, double y, double z, Item dropItem) { + super(entityType, level); + this.setPos(x, y, z); + this.dropItem = dropItem; + } + + @Override + protected Item getDropItem() { + return this.dropItem; + } + + @Override + public AbstractMinecart.Type getMinecartType() { + return AbstractMinecart.Type.RIDEABLE; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(SYNCED_SPEED, 0.0F); + builder.define(SYNCED_FACING, 2); + } + + public float getSyncedSpeed() { + return this.entityData.get(SYNCED_SPEED); + } + + public Direction getSyncedFacing() { + int idx = this.entityData.get(SYNCED_FACING); + return switch (idx) { + case 0 -> Direction.NORTH; + case 1 -> Direction.EAST; + case 3 -> Direction.WEST; + default -> Direction.SOUTH; + }; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putString("DiamondFacing", this.facingDir.getName()); + tag.putFloat("DiamondSpeed", this.currentSpeed); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + if (tag.contains("DiamondFacing")) { + Direction direction = Direction.byName(tag.getString("DiamondFacing")); + if (direction != null && direction.getAxis() != Direction.Axis.Y) { + this.facingDir = direction; + } + } + this.currentSpeed = tag.getFloat("DiamondSpeed"); + } + + @Override + protected double getMaxSpeed() { + return 0.4D; + } + + public void onInputReceived(byte flags) { + this.inputFlags = flags; + } + + @Override + public void tick() { + super.tick(); + } + + private void serverTick() { + Player rider = this.getRidingPlayer(); + boolean hasRider = rider != null; + + if (this.lastBlockPos == null) { + if (rider != null) { + this.facingDir = getLookFacing(rider, Direction.SOUTH); + } + this.lastBlockPos = this.blockPosition(); + } + + if (hasRider) { + float cruiseSpeed = (float) AntarchySettings.diamondMinecartCruiseSpeed(); + float maxSpeed = (float) AntarchySettings.diamondMinecartMaxSpeed(); + float accel = (float) AntarchySettings.diamondMinecartAcceleration(); + float decel = (float) AntarchySettings.diamondMinecartDeceleration(); + float coast = (float) AntarchySettings.diamondMinecartCoastDeceleration(); + + cruiseSpeed = Math.max(0.0F, Math.min(cruiseSpeed, maxSpeed)); + + boolean forward = (this.inputFlags & 0x01) != 0; + boolean back = (this.inputFlags & 0x02) != 0; + + float targetSpeed = forward ? maxSpeed : cruiseSpeed; + if (back && !forward) { + targetSpeed = Math.max(0.0F, cruiseSpeed - decel); + } + + if (this.currentSpeed < targetSpeed) { + this.currentSpeed = Math.min(this.currentSpeed + accel, targetSpeed); + } else if (this.currentSpeed > targetSpeed) { + this.currentSpeed = Math.max(this.currentSpeed - coast, targetSpeed); + } + } else { + float coast = (float) AntarchySettings.diamondMinecartCoastDeceleration(); + this.currentSpeed = Math.max(this.currentSpeed - coast, 0.0F); + this.railWarningCooldown = false; + } + + this.entityData.set(SYNCED_SPEED, this.currentSpeed); + this.entityData.set(SYNCED_FACING, facingDirectionIndex(this.facingDir)); + + BlockPos currentPos = this.blockPosition(); + if (!currentPos.equals(this.lastBlockPos)) { + this.onEnteredNewBlock(currentPos, rider); + this.lastBlockPos = currentPos; + } + + if (AntarchySettings.diamondMinecartPlacesRails() && hasRider) { + this.ensureRailAt(currentPos, this.level().getBlockState(currentPos), getStockShape(this.facingDir), false); + } + + if (AntarchySettings.diamondMinecartMobDamageEnabled() && this.currentSpeed > 0.15F && hasRider) { + this.applyMobCollisionDamage(); + } + } + + private void onEnteredNewBlock(BlockPos currentPos, @Nullable Player rider) { + Direction previousFacing = this.facingDir; + if (rider != null && (this.inputFlags & 0x01) != 0) { + Direction lookedFacing = getLookFacing(rider, this.facingDir); + if (lookedFacing != this.facingDir.getOpposite()) { + this.facingDir = lookedFacing; + } + } + + boolean turned = this.facingDir != previousFacing; + if (!AntarchySettings.diamondMinecartPlacesRails() || rider == null) { + return; + } + + RailPlan railPlan = this.buildRailPlan(currentPos, previousFacing, turned); + if (railPlan == null) { + return; + } + + this.ensureRailAt(currentPos, this.level().getBlockState(currentPos), railPlan.currentShape(), false); + this.placeRailAt(railPlan.nextPos(), railPlan.nextShape(), rider); + this.refreshRailConnections(currentPos); + this.refreshRailConnections(railPlan.nextPos()); + } + + @Nullable + private RailPlan buildRailPlan(BlockPos currentPos, Direction previousFacing, boolean turned) { + BlockPos flatAhead = currentPos.relative(this.facingDir); + if (canPlaceRailAt(flatAhead)) { + RailShape currentShape = turned ? getTurnShape(previousFacing, this.facingDir) : getStockShape(this.facingDir); + return new RailPlan(currentShape, flatAhead, getStockShape(this.facingDir)); + } + + if (!turned) { + BlockPos upAhead = flatAhead.above(); + if (canPlaceRailAt(upAhead)) { + return new RailPlan(getAscendingShape(this.facingDir), upAhead, getStockShape(this.facingDir)); + } + + BlockPos downAhead = flatAhead.below(); + if (canPlaceRailAt(downAhead)) { + return new RailPlan(getDescendingEntryShape(this.facingDir), downAhead, getStockShape(this.facingDir)); + } + } + + return null; + } + + private void placeRailAt(BlockPos pos, RailShape shape, Player rider) { + BlockState existing = this.level().getBlockState(pos); + if (BaseRailBlock.isRail(existing)) { + this.setRailShapeAt(pos, shape); + return; + } + + if (!canPlaceRailAt(pos, existing)) { + return; + } + + if (!consumeRailFromInventory(rider)) { + if (!this.railWarningCooldown) { + rider.displayClientMessage( + net.minecraft.network.chat.Component.literal("The Diamond Minecart is out of rails!"), + true + ); + this.railWarningCooldown = true; + this.currentSpeed = 0.0F; + } + return; + } + + this.railWarningCooldown = false; + this.level().setBlock(pos, Blocks.RAIL.defaultBlockState().setValue(RailBlock.SHAPE, shape), 3); + this.refreshRailConnections(pos); + } + + private void ensureRailAt(BlockPos pos, BlockState existing, RailShape shape, boolean consume) { + if (BaseRailBlock.isRail(existing)) { + this.setRailShapeAt(pos, shape); + return; + } + + if (!canPlaceRailAt(pos, existing)) { + return; + } + + Player rider = this.getRidingPlayer(); + if (consume && rider != null && !consumeRailFromInventory(rider)) { + return; + } + + this.level().setBlock(pos, Blocks.RAIL.defaultBlockState().setValue(RailBlock.SHAPE, shape), 3); + this.refreshRailConnections(pos); + } + + private void setRailShapeAt(BlockPos pos, RailShape shape) { + BlockState state = this.level().getBlockState(pos); + if (state.getBlock() instanceof RailBlock) { + this.level().setBlock(pos, state.setValue(RailBlock.SHAPE, shape), 3); + this.refreshRailConnections(pos); + } + } + + private void refreshRailConnections(BlockPos pos) { + this.level().updateNeighborsAt(pos, Blocks.RAIL); + this.level().updateNeighborsAt(pos.above(), Blocks.RAIL); + this.level().updateNeighborsAt(pos.below(), Blocks.RAIL); + for (Direction direction : Direction.Plane.HORIZONTAL) { + this.level().updateNeighborsAt(pos.relative(direction), Blocks.RAIL); + this.level().updateNeighborsAt(pos.relative(direction).above(), Blocks.RAIL); + this.level().updateNeighborsAt(pos.relative(direction).below(), Blocks.RAIL); + } + } + + private boolean consumeRailFromInventory(Player player) { + for (int i = 0; i < player.getInventory().getContainerSize(); i++) { + ItemStack stack = player.getInventory().getItem(i); + if (stack.is(Items.RAIL)) { + stack.shrink(1); + return true; + } + } + return false; + } + + public static RailShape getStockShape(Direction facing) { + return (facing == Direction.NORTH || facing == Direction.SOUTH) + ? RailShape.NORTH_SOUTH + : RailShape.EAST_WEST; + } + + public static RailShape getTurnShape(Direction oldFacing, Direction newFacing) { + Direction entry = oldFacing.getOpposite(); + Direction exit = newFacing; + + boolean hasNorth = entry == Direction.NORTH || exit == Direction.NORTH; + boolean hasEast = entry == Direction.EAST || exit == Direction.EAST; + boolean hasSouth = entry == Direction.SOUTH || exit == Direction.SOUTH; + boolean hasWest = entry == Direction.WEST || exit == Direction.WEST; + + if (hasNorth && hasEast) return RailShape.NORTH_EAST; + if (hasNorth && hasWest) return RailShape.NORTH_WEST; + if (hasSouth && hasEast) return RailShape.SOUTH_EAST; + if (hasSouth && hasWest) return RailShape.SOUTH_WEST; + return getStockShape(newFacing); + } + + private static RailShape getAscendingShape(Direction facing) { + return switch (facing) { + case NORTH -> RailShape.ASCENDING_NORTH; + case SOUTH -> RailShape.ASCENDING_SOUTH; + case EAST -> RailShape.ASCENDING_EAST; + case WEST -> RailShape.ASCENDING_WEST; + default -> RailShape.NORTH_SOUTH; + }; + } + + private static RailShape getDescendingEntryShape(Direction facing) { + return getAscendingShape(facing.getOpposite()); + } + + private static boolean isWithinRailBuildHeight(BlockPos pos) { + return pos.getY() >= -64 && pos.getY() < 320; + } + + private boolean canPlaceRailAt(BlockPos pos) { + return canPlaceRailAt(pos, this.level().getBlockState(pos)); + } + + private boolean canPlaceRailAt(BlockPos pos, BlockState existing) { + if (!isWithinRailBuildHeight(pos) || !this.level().getBlockState(pos.below()).isSolid()) { + return false; + } + return BaseRailBlock.isRail(existing) || existing.isAir() || existing.canBeReplaced(); + } + + private void applyMobCollisionDamage() { + double maxDamage = AntarchySettings.diamondMinecartMaxMobDamage(); + double maxSpeed = AntarchySettings.diamondMinecartMaxSpeed(); + float damage = maxSpeed <= 0.0D ? 0.0F : (float) (maxDamage * (this.currentSpeed / maxSpeed)); + + DamageSource source = this.level().damageSources().generic(); + AABB hitBox = this.getBoundingBox().inflate(0.2D, 0.0D, 0.2D); + List nearby = this.level().getEntitiesOfClass(LivingEntity.class, hitBox, + entity -> !(entity instanceof Player player && this.hasPassenger(player))); + + for (LivingEntity mob : nearby) { + mob.hurt(source, damage); + double dx = mob.getX() - this.getX(); + double dz = mob.getZ() - this.getZ(); + double len = Math.sqrt(dx * dx + dz * dz); + if (len > 0.001D) { + mob.setDeltaMovement(mob.getDeltaMovement().add( + dx / len * 0.5D, + 0.3D, + dz / len * 0.5D + )); + } + } + } + + @Nullable + private Player getRidingPlayer() { + for (Entity passenger : this.getPassengers()) { + if (passenger instanceof Player player) { + return player; + } + } + return null; + } + + private static Direction getLookFacing(Player rider, Direction fallback) { + Direction direction = Direction.fromYRot(rider.getYRot()); + return direction.getAxis() == Direction.Axis.Y ? fallback : direction; + } + + private static int facingDirectionIndex(Direction dir) { + return switch (dir) { + case NORTH -> 0; + case EAST -> 1; + case WEST -> 3; + default -> 2; + }; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/DrTrayaurusEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/DrTrayaurusEntity.java new file mode 100644 index 00000000..81b61163 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/DrTrayaurusEntity.java @@ -0,0 +1,114 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.entity.trades.DrTrayaurusTradeManager; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.PanicGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.RandomStrollGoal; +import net.minecraft.world.entity.ai.goal.TradeWithPlayerGoal; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; + +public class DrTrayaurusEntity extends AbstractVillager { + private static final Component DISPLAY_NAME = Component.literal("Dr. Trayaurus"); + + public DrTrayaurusEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); + this.goalSelector.addGoal(2, new PanicGoal(this, 0.8D)); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, 0.45D)); + this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F)); + this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); + } + + @Override + public Component getName() { + return DISPLAY_NAME; + } + + @Override + public boolean hasCustomName() { + return true; + } + + @Override + public boolean isCustomNameVisible() { + return true; + } + + @Override + public boolean shouldShowName() { + return true; + } + + @Override + public boolean requiresCustomPersistence() { + return true; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + protected Component getTypeName() { + return DISPLAY_NAME; + } + + @Override + protected void updateTrades() { + MerchantOffers offers = this.getOffers(); + offers.clear(); + offers.addAll(DrTrayaurusTradeManager.createOffers()); + this.overrideXp(1); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (stack.interactLivingEntity(player, this, hand).consumesAction()) { + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + if (!this.level().isClientSide && this.isAlive() && !this.isTrading()) { + this.setTradingPlayer(player); + MerchantOffers offers = this.getOffers(); + if (!offers.isEmpty()) { + this.openTradingScreen(player, this.getName(), 0); + } + } + + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + @Override + public void notifyTradeUpdated(ItemStack stack) { + } + + @Override + public void rewardTradeXp(net.minecraft.world.item.trading.MerchantOffer offer) { + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + return null; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/EasterBunnyEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/EasterBunnyEntity.java new file mode 100644 index 00000000..7dedfa5a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/EasterBunnyEntity.java @@ -0,0 +1,180 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; +import java.util.Comparator; +import java.util.List; +import net.minecraft.core.HolderGetter; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.SpawnEggItem; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class EasterBunnyEntity extends Rabbit implements GeoEntity { + private static final int MIN_LAY_COOLDOWN = 20 * 45; + private static final int MAX_LAY_COOLDOWN = 20 * 120; + private static final int LAY_ANIMATION_TICKS = 40; + private static final String MAIN_CONTROLLER = "main_controller"; + private static final String LAY_CONTROLLER = "lay_controller"; + private static final String LAY_TRIGGER = "lay"; + private static final String LAY_COOLDOWN_KEY = "LayCooldown"; + private static final String LAY_ANIM_TICKS_KEY = "LayAnimTicks"; + private static final EntityDataAccessor LAY_ANIM_TICKS = + SynchedEntityData.defineId(EasterBunnyEntity.class, EntityDataSerializers.INT); + private static final List SPAWN_EGG_ITEMS = BuiltInRegistries.ITEM.stream() + .filter(SpawnEggItem.class::isInstance) + .sorted(Comparator.comparing(item -> BuiltInRegistries.ITEM.getKey(item).toString())) + .toList(); + private int layCooldown = this.createLayCooldown(); + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation HOP_ANIM = RawAnimation.begin().thenLoop("hop"); + public EasterBunnyEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(LAY_ANIM_TICKS, 0); + } + + @Override + public void tick() { + super.tick(); + + if (this.level().isClientSide || !this.isAlive()) { + return; + } + + if (!AntarchySettings.easterBunnyEnabled() || this.isBaby()) { + return; + } + + if (this.getLayAnimationTicks() > 0) { + this.setLayAnimationTicks(this.getLayAnimationTicks() - 1); + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + if (this.getLayAnimationTicks() == 0) { + this.layRandomSpawnEgg(); + this.layCooldown = this.createLayCooldown(); + } + } else if (--this.layCooldown <= 0 && this.onGround()) { + this.startLayingEgg(); + } + } + + @Override + public boolean isFood(ItemStack stack) { + return stack.is(Items.CARROT) || stack.is(Items.GOLDEN_CARROT) || stack.is(Items.DANDELION); + } + + @Override + public Rabbit getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + return AntarchyObjects.EASTER_BUNNY.get().create(level); + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(LAY_COOLDOWN_KEY, this.layCooldown); + tag.putInt(LAY_ANIM_TICKS_KEY, this.getLayAnimationTicks()); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.layCooldown = tag.contains(LAY_COOLDOWN_KEY) ? tag.getInt(LAY_COOLDOWN_KEY) : this.createLayCooldown(); + this.setLayAnimationTicks(Math.max(0, tag.getInt(LAY_ANIM_TICKS_KEY))); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, MAIN_CONTROLLER, 0, this::mainAnimController)); + controllers.add(new AnimationController<>(this, LAY_CONTROLLER, 0, state -> PlayState.STOP) + .triggerableAnim(LAY_TRIGGER, RawAnimation.begin().thenPlay("lay"))); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + private PlayState mainAnimController(AnimationState state) { + if (this.getDeltaMovement().horizontalDistanceSqr() > 1.0E-4D) { + state.getController().setAnimationSpeed(1.35D); + return state.setAndContinue(HOP_ANIM); + } + + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(IDLE_ANIM); + } + + private int getLayAnimationTicks() { + return this.entityData.get(LAY_ANIM_TICKS); + } + + private void setLayAnimationTicks(int ticks) { + this.entityData.set(LAY_ANIM_TICKS, Math.max(0, ticks)); + } + + private void startLayingEgg() { + this.setLayAnimationTicks(LAY_ANIMATION_TICKS); + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + this.triggerAnim(LAY_CONTROLLER, LAY_TRIGGER); + } + + private void layRandomSpawnEgg() { + Item item = this.getRandomSpawnEgg(); + if (item == Items.AIR) { + return; + } + + this.spawnAtLocation(new ItemStack(item), 0.2F); + this.playSound(SoundEvents.CHICKEN_EGG, 1.0F, 0.95F + this.random.nextFloat() * 0.1F); + } + + private Item getRandomSpawnEgg() { + HolderGetter items = this.level().registryAccess().lookupOrThrow(Registries.ITEM); + List candidates = SPAWN_EGG_ITEMS.stream() + .filter(item -> !this.isBlacklistedSpawnEgg(items, item)) + .toList(); + + return candidates.isEmpty() ? Items.AIR : candidates.get(this.random.nextInt(candidates.size())); + } + + private boolean isBlacklistedSpawnEgg(HolderGetter items, Item item) { + return BuiltInRegistries.ITEM.getResourceKey(item) + .map(items::getOrThrow) + .map(holder -> holder.is(AntarchyTags.Items.EASTER_BUNNY_SPAWN_EGG_BLACKLIST)) + .orElse(false); + } + + private int createLayCooldown() { + return MIN_LAY_COOLDOWN + this.random.nextInt(MAX_LAY_COOLDOWN - MIN_LAY_COOLDOWN + 1); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java new file mode 100644 index 00000000..bed77337 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java @@ -0,0 +1,431 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerBossEvent; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.BossEvent; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.RandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class EmperorScorpionEntity extends Monster implements GeoEntity { + private static final byte CLAW_ATTACK_ANIM_EVENT = 4; + private static final byte STING_ATTACK_ANIM_EVENT = 5; + + private static final int CLAW_ATTACK_ANIM_TICKS = 12; + private static final int CLAW_ATTACK_HIT_TICK = 6; + private static final int CLAW_ATTACK_COOLDOWN_TICKS = 16; + private static final int STING_ATTACK_ANIM_TICKS = 18; + private static final int STING_ATTACK_HIT_TICK = 9; + private static final int STING_ATTACK_COOLDOWN_TICKS = 42; + private static final int POISON_DURATION_TICKS = 100; + private static final int WEAKNESS_DURATION_TICKS = 80; + private static final int SUMMON_INTERVAL_TICKS = 180; + private static final int MAX_SUMMONED_SCORPIONS = 4; + private static final String EMPEROR_SUMMON_TAG = "antarchy_emperor_summoned"; + + private static final ResourceKey THORAXIS_KEY = + ResourceKey.create(Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis")); + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private final ServerBossEvent bossEvent = + new ServerBossEvent(this.getDisplayName(), BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.PROGRESS); + + private int attackAnimTicks = 0; + private int attackHitTick = 0; + private int attackCooldownTicks = 0; + private int stingCooldownTicks = 0; + private int summonCooldown = 0; + private boolean attackDamageApplied = false; + private boolean stingAttackActive = false; + @Nullable private LivingEntity attackTarget; + + public EmperorScorpionEntity(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 25; + this.bossEvent.setDarkenScreen(false); + } + + public static AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 200.0D) + .add(Attributes.MOVEMENT_SPEED, 0.32D) + .add(Attributes.ATTACK_DAMAGE, 18.0D) + .add(Attributes.ARMOR, 6.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.6D) + .add(Attributes.FOLLOW_RANGE, 32.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, + MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG + || spawnReason == MobSpawnType.SPAWNER + || spawnReason == MobSpawnType.COMMAND) { + return true; + } + if (!level.getLevel().dimension().equals(THORAXIS_KEY)) { + return false; + } + return level.getDifficulty() != Difficulty.PEACEFUL + && Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new EmperorScorpionAttackGoal()); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, 0.8D)); + this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 12.0F)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public float maxUpStep() { + return 1.5F; + } + + @Override + public int getMaxHeadYRot() { + return 35; + } + + @Override + public void tick() { + super.tick(); + this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); + if (this.attackCooldownTicks > 0) { + this.attackCooldownTicks--; + } + if (this.stingCooldownTicks > 0) { + this.stingCooldownTicks--; + } + if (this.attackAnimTicks > 0) { + if (!this.level().isClientSide) { + this.tickAttackWindup(); + } + this.attackAnimTicks--; + if (this.attackAnimTicks <= 0) { + this.resetAttackState(); + } + } + if (this.summonCooldown > 0) { + this.summonCooldown--; + } + + if (this.getTarget() != null + && this.summonCooldown <= 0 + && !this.isAttackLocked() + && this.getHealth() <= this.getMaxHealth() * 0.75F + && this.level() instanceof ServerLevel serverLevel) { + this.trySummonScorpions(serverLevel); + } + } + + private void trySummonScorpions(ServerLevel serverLevel) { + long nearby = serverLevel.getEntitiesOfClass(ScorpionEntity.class, this.getBoundingBox().inflate(16.0D), + scorpion -> scorpion.getTags().contains(EMPEROR_SUMMON_TAG)).size(); + this.summonCooldown = SUMMON_INTERVAL_TICKS; + if (nearby >= MAX_SUMMONED_SCORPIONS) { + return; + } + + int toSpawn = 1 + this.random.nextInt(2); + EntityType scorpionType = AntarchyObjects.SCORPION.get(); + for (int i = 0; i < toSpawn; i++) { + double offsetX = (this.random.nextDouble() - 0.5D) * 6.0D; + double offsetZ = (this.random.nextDouble() - 0.5D) * 6.0D; + BlockPos xzPos = BlockPos.containing(this.getX() + offsetX, 0, this.getZ() + offsetZ); + BlockPos spawnPos = serverLevel.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, xzPos); + @Nullable ScorpionEntity scorpion = scorpionType.create(serverLevel); + if (scorpion == null) continue; + scorpion.moveTo(spawnPos.getX() + 0.5D, spawnPos.getY(), spawnPos.getZ() + 0.5D, + this.getYRot(), 0.0F); + scorpion.addTag(EMPEROR_SUMMON_TAG); + scorpion.setTarget(this.getTarget()); + scorpion.finalizeSpawn(serverLevel, + serverLevel.getCurrentDifficultyAt(spawnPos), + MobSpawnType.MOB_SUMMONED, null); + serverLevel.addFreshEntity(scorpion); + } + this.playSound(AntarchySoundEvents.EMPEROR_SCORPION_ROAR.get(), 1.2F, 0.75F); + } + + @Override + public boolean doHurtTarget(Entity target) { + return this.performStingAttack(target); + } + + private boolean performClawAttack(Entity target) { + boolean hurt = super.doHurtTarget(target); + if (hurt) { + this.playSound(AntarchySoundEvents.EMPEROR_SCORPION_ATTACK.get(), 0.9F, 0.95F + this.random.nextFloat() * 0.08F); + } + return hurt; + } + + private boolean performStingAttack(Entity target) { + boolean hurt; + if (this.level() instanceof ServerLevel serverLevel) { + hurt = target.hurt(AntarchyDamageSources.emperorScorpionSting(serverLevel, this), + (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); + } else { + hurt = super.doHurtTarget(target); + } + if (hurt && target instanceof LivingEntity living) { + int poisonDuration = this.level().getDifficulty() == Difficulty.HARD + ? POISON_DURATION_TICKS * 2 : POISON_DURATION_TICKS; + living.addEffect(new MobEffectInstance(MobEffects.POISON, poisonDuration, 0)); + living.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, WEAKNESS_DURATION_TICKS, 0)); + this.playSound(AntarchySoundEvents.EMPEROR_SCORPION_ATTACK.get(), 1.0F, 0.9F + this.random.nextFloat() * 0.08F); + } + return hurt; + } + + private void beginClawAttack(LivingEntity target) { + this.attackTarget = target; + this.attackAnimTicks = CLAW_ATTACK_ANIM_TICKS; + this.attackHitTick = CLAW_ATTACK_HIT_TICK; + this.attackCooldownTicks = CLAW_ATTACK_COOLDOWN_TICKS; + this.attackDamageApplied = false; + this.stingAttackActive = false; + this.getNavigation().stop(); + this.level().broadcastEntityEvent(this, CLAW_ATTACK_ANIM_EVENT); + this.commitLunge(target, 0.42D, 0.10D); + } + + private void beginStingAttack(LivingEntity target) { + this.attackTarget = target; + this.attackAnimTicks = STING_ATTACK_ANIM_TICKS; + this.attackHitTick = STING_ATTACK_HIT_TICK; + this.attackCooldownTicks = STING_ATTACK_COOLDOWN_TICKS; + this.stingCooldownTicks = STING_ATTACK_COOLDOWN_TICKS; + this.attackDamageApplied = false; + this.stingAttackActive = true; + this.getNavigation().stop(); + this.level().broadcastEntityEvent(this, STING_ATTACK_ANIM_EVENT); + this.commitLunge(target, 0.55D, 0.14D); + } + + private void tickAttackWindup() { + if (this.attackTarget == null || !this.attackTarget.isAlive()) { + this.resetAttackState(); + return; + } + + this.getLookControl().setLookAt(this.attackTarget, 30.0F, 30.0F); + if (!this.attackDamageApplied + && this.attackAnimTicks == this.attackHitTick + && this.distanceToSqr(this.attackTarget) <= this.getAttackReachSqr(this.attackTarget)) { + this.attackDamageApplied = true; + if (this.stingAttackActive) { + this.performStingAttack(this.attackTarget); + } else { + this.performClawAttack(this.attackTarget); + } + } + + if (this.attackAnimTicks <= 0) { + this.resetAttackState(); + } + } + + private double getAttackReachSqr(LivingEntity target) { + double reach = this.getBbWidth() * 1.9D + target.getBbWidth(); + return reach * reach + 1.5D; + } + + private void resetAttackState() { + this.attackAnimTicks = 0; + this.attackHitTick = 0; + this.attackDamageApplied = false; + this.stingAttackActive = false; + this.attackTarget = null; + } + + private void commitLunge(LivingEntity target, double horizontalSpeed, double verticalSpeed) { + Vec3 lunge = target.position().subtract(this.position()); + Vec3 horizontal = new Vec3(lunge.x, 0.0D, lunge.z); + if (horizontal.lengthSqr() < 1.0E-4D) { + return; + } + horizontal = horizontal.normalize().scale(horizontalSpeed); + this.setDeltaMovement(this.getDeltaMovement().add(horizontal.x, verticalSpeed, horizontal.z)); + this.hasImpulse = true; + } + + private boolean shouldUseSting(LivingEntity target) { + return this.stingCooldownTicks <= 0 + && this.distanceToSqr(target) <= this.getAttackReachSqr(target) + 2.0D + && (this.getHealth() <= this.getMaxHealth() * 0.6F || this.random.nextFloat() < 0.45F); + } + + private boolean isAttackLocked() { + return this.attackAnimTicks > 0; + } + + @Override + public void handleEntityEvent(byte id) { + if (id == CLAW_ATTACK_ANIM_EVENT) { + this.attackAnimTicks = CLAW_ATTACK_ANIM_TICKS; + this.attackDamageApplied = false; + this.stingAttackActive = false; + return; + } + if (id == STING_ATTACK_ANIM_EVENT) { + this.attackAnimTicks = STING_ATTACK_ANIM_TICKS; + this.attackDamageApplied = false; + this.stingAttackActive = true; + return; + } + super.handleEntityEvent(id); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main", 3, this::mainController)); + } + + private PlayState mainController(AnimationState state) { + if (this.attackAnimTicks > 0) { + return state.setAndContinue(ATTACK_ANIM); + } + if (state.isMoving()) { + return state.setAndContinue(WALK_ANIM); + } + return state.setAndContinue(IDLE_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.EMPEROR_SCORPION_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource source) { + return AntarchySoundEvents.EMPEROR_SCORPION_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.EMPEROR_SCORPION_HURT.get(); + } + + @Override + protected float getSoundVolume() { + return 0.8F; + } + + @Override + public void setCustomName(@Nullable net.minecraft.network.chat.Component name) { + super.setCustomName(name); + this.bossEvent.setName(this.getDisplayName()); + } + + @Override + public void startSeenByPlayer(ServerPlayer serverPlayer) { + super.startSeenByPlayer(serverPlayer); + this.bossEvent.addPlayer(serverPlayer); + } + + @Override + public void stopSeenByPlayer(ServerPlayer serverPlayer) { + super.stopSeenByPlayer(serverPlayer); + this.bossEvent.removePlayer(serverPlayer); + } + + @Override + public void remove(RemovalReason reason) { + super.remove(reason); + this.bossEvent.removeAllPlayers(); + } + + private final class EmperorScorpionAttackGoal extends MeleeAttackGoal { + private EmperorScorpionAttackGoal() { + super(EmperorScorpionEntity.this, 1.15D, true); + } + + @Override + public void tick() { + if (EmperorScorpionEntity.this.attackTarget != null) { + EmperorScorpionEntity.this.getLookControl().setLookAt( + EmperorScorpionEntity.this.attackTarget, 30.0F, 30.0F); + } + super.tick(); + } + + @Override + public boolean canContinueToUse() { + return EmperorScorpionEntity.this.isAttackLocked() || super.canContinueToUse(); + } + + @Override + protected void checkAndPerformAttack(LivingEntity enemy) { + if (EmperorScorpionEntity.this.isAttackLocked()) { + return; + } + if (this.canPerformAttack(enemy) + && this.isTimeToAttack() + && EmperorScorpionEntity.this.attackCooldownTicks <= 0) { + this.resetAttackCooldown(); + if (EmperorScorpionEntity.this.shouldUseSting(enemy)) { + EmperorScorpionEntity.this.beginStingAttack(enemy); + } else { + EmperorScorpionEntity.this.beginClawAttack(enemy); + } + return; + } + super.checkAndPerformAttack(enemy); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/HushProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/HushProjectileEntity.java new file mode 100644 index 00000000..b3efe369 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/HushProjectileEntity.java @@ -0,0 +1,142 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import java.util.UUID; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; + +public class HushProjectileEntity extends ThrowableItemProjectile { + private static final int DREAD_DURATION_TICKS = 300; + private static final double TRAVEL_SPEED = 0.27D; + private static final DustParticleOptions HUSH_PARTICLES = new DustParticleOptions(new org.joml.Vector3f(1.0F, 0.05F, 0.05F), 1.0F); + private static final String TARGET_UUID_KEY = "HushTarget"; + + private UUID targetUuid; + + public HushProjectileEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + protected Item getDefaultItem() { + return Items.REDSTONE; + } + + @Override + protected double getDefaultGravity() { + return 0.0D; + } + + @Override + public boolean isPickable() { + return true; + } + + @Override + public boolean hurt(net.minecraft.world.damagesource.DamageSource source, float amount) { + if (!this.level().isClientSide && !this.isRemoved()) { + this.discard(); + return true; + } + return false; + } + + @Override + public void tick() { + if (!this.level().isClientSide) { + if (this.tickCount > AntarchySettings.hushweedSporeLifetimeTicks()) { + this.discard(); + return; + } + + this.tickGuidedFlight(); + } + + super.tick(); + if (this.level().isClientSide) { + this.level().addParticle(HUSH_PARTICLES, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + } + } + + public void setTargetUuid(UUID targetUuid) { + this.targetUuid = targetUuid; + } + + private void tickGuidedFlight() { + if (this.targetUuid == null) { + this.discard(); + return; + } + + LivingEntity target = this.level().getEntitiesOfClass( + LivingEntity.class, + this.getBoundingBox().inflate(48.0D), + entity -> entity.isAlive() && entity.getUUID().equals(this.targetUuid) + ).stream().findFirst().orElse(null); + if (target == null) { + this.discard(); + return; + } + + Vec3 toTarget = target.getEyePosition().subtract(this.position()); + if (toTarget.lengthSqr() < 1.0E-6D) { + this.discard(); + return; + } + + // Smoothly steer toward the target each tick — no hard phase transition. + // The initial upward launch velocity from HushweedBlockEntity gives a natural + // rising arc before the homing takes over. + Vec3 desired = toTarget.normalize().scale(TRAVEL_SPEED); + this.setDeltaMovement(this.getDeltaMovement().lerp(desired, 0.1D)); + } + + @Override + protected void onHitEntity(EntityHitResult result) { + super.onHitEntity(result); + if (!this.level().isClientSide && result.getEntity() instanceof LivingEntity livingEntity) { + livingEntity.hurt(this.damageSources().magic(), 1.0F); + livingEntity.addEffect(new MobEffectInstance(AntarchyObjects.DREAD.get(), DREAD_DURATION_TICKS, 0, false, true, true)); + this.discard(); + } + } + + @Override + protected void onHitBlock(BlockHitResult result) { + super.onHitBlock(result); + if (!this.level().isClientSide) { + if (this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(HUSH_PARTICLES, this.getX(), this.getY(), this.getZ(), 6, 0.1D, 0.1D, 0.1D, 0.0D); + } + this.discard(); + } + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + if (this.targetUuid != null) { + tag.putUUID(TARGET_UUID_KEY, this.targetUuid); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + if (tag.hasUUID(TARGET_UUID_KEY)) { + this.targetUuid = tag.getUUID(TARGET_UUID_KEY); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/MantisEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/MantisEntity.java new file mode 100644 index 00000000..5174df37 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/MantisEntity.java @@ -0,0 +1,350 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.Entity; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class MantisEntity extends Monster implements GeoEntity { + private static final Logger LOGGER = LoggerFactory.getLogger(MantisEntity.class); + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + private static final RawAnimation FLY_ATTACK_ANIM = RawAnimation.begin().thenPlay("flyattack"); + + private static final int ANIM_IDLE = 0; + private static final int ANIM_WALK = 1; + private static final int ANIM_FLY = 2; + private static final int ANIM_ATTACK = 3; + private static final int ANIM_FLY_ATTACK = 4; + private static final double WANDER_SPEED = 0.48D; + private static final double COMBAT_SPEED = 0.75D; + + private static final net.minecraft.network.syncher.EntityDataAccessor ANIMATION_STATE = + net.minecraft.network.syncher.SynchedEntityData.defineId(MantisEntity.class, net.minecraft.network.syncher.EntityDataSerializers.INT); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private int attackAnimationTicks; + private int flyBurstTicks; + private int flyCooldownTicks; + private int debugLogTicks = 0; + + public MantisEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setNoGravity(false); + this.setPathfindingMalus(PathType.WATER, -1.0F); + this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); + this.setPathfindingMalus(PathType.LEAVES, -1.0F); + this.setPathfindingMalus(PathType.FENCE, -1.0F); + this.xpReward = 12; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, AntarchySettings.mantisHealth()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.mantisAttackDamage()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.mantisMovementSpeed()) + .add(Attributes.FLYING_SPEED, AntarchySettings.mantisFlyingSpeed()) + .add(Attributes.FOLLOW_RANGE, 32.0D) + .add(Attributes.ARMOR, 4.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + if (level.getDifficulty() == Difficulty.PEACEFUL) { + return false; + } + + if (spawnReason != MobSpawnType.NATURAL) { + return false; + } + + boolean atSurface = level.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, pos).getY() <= pos.getY(); + boolean posOpen = level.isEmptyBlock(pos) && level.isEmptyBlock(pos.above()) && level.getFluidState(pos).isEmpty(); + boolean onSolidGround = level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP) + && !(level.getBlockState(pos.below()).getBlock() instanceof LeavesBlock); + + if (!posOpen || !onSolidGround) { + return false; + } + + if (!hasNearbyMantisCapacity(level, pos)) { + return false; + } + + boolean ignoreLightLevel = AntarchySettings.mantisIgnoreLightLevel(); + + if (level.getLevel().isDay() && level.getBiome(pos).is(AntarchyTags.Biomes.MANTIS_OVERWORLD_SPAWN_BIOMES)) { + return atSurface && level.canSeeSky(pos) && (ignoreLightLevel || Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random)); + } + + // Elythia meadow (and any future mantis_spawn_biomes): nighttime, no sky-access requirement + if (level.getLevel().isNight() && level.getBiome(pos).is(AntarchyTags.Biomes.MANTIS_SPAWN_BIOMES)) { + return atSurface && (ignoreLightLevel || Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random)); + } + + return false; + } + + private static boolean hasNearbyMantisCapacity(ServerLevelAccessor level, BlockPos pos) { + return level.getLevel().getEntitiesOfClass( + MantisEntity.class, + new AABB(pos).inflate(64.0D), + Entity::isAlive + ).size() < 3; + } + + @Override + protected void defineSynchedData(net.minecraft.network.syncher.SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIMATION_STATE, ANIM_IDLE); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(2, new MeleeAttackGoal(this, COMBAT_SPEED, true)); + this.goalSelector.addGoal(3, new WaterAvoidingRandomStrollGoal(this, WANDER_SPEED)); + + HurtByTargetGoal hurtByTargetGoal = new HurtByTargetGoal(this); + this.targetSelector.addGoal(1, hurtByTargetGoal); + // randomInterval lowered from default 10 to 5 for faster re-acquisition + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 5, true, false, null)); + } + + @Override + protected PathNavigation createNavigation(Level level) { + GroundPathNavigation navigation = new GroundPathNavigation(this, level); + navigation.setCanOpenDoors(false); + navigation.setCanPassDoors(true); + navigation.setCanFloat(true); + return navigation; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getAnimationState()) { + case ANIM_WALK -> state.setAndContinue(WALK_ANIM); + case ANIM_FLY -> state.setAndContinue(FLY_ANIM); + case ANIM_ATTACK -> state.setAndContinue(ATTACK_ANIM); + case ANIM_FLY_ATTACK -> state.setAndContinue(FLY_ATTACK_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + if (!this.level().isClientSide) { + if (this.attackAnimationTicks > 0) { + this.attackAnimationTicks--; + } + + if (this.flyBurstTicks > 0) { + this.flyBurstTicks--; + if (this.flyBurstTicks % 8 == 0) { + this.playSound(AntarchySoundEvents.MANTIS_FLY_LOOP.get(), 0.45F, 0.95F + this.random.nextFloat() * 0.1F); + } + } + + if (this.flyCooldownTicks > 0) { + this.flyCooldownTicks--; + } + + LivingEntity target = this.getTarget(); + if (target != null && target.isAlive()) { + this.getLookControl().setLookAt(target, 30.0F, 30.0F); + } else if (this.flyBurstTicks <= 0 && this.flyCooldownTicks <= 0 && this.onGround() && this.random.nextInt(180) == 0) { + this.startFlightBurst(); + } + + this.setNoGravity(this.isFlyingNow()); + this.updateAnimationState(); + this.tickDebugLog(); + } + + this.updateFlightRotation(); + } + + @Override + public boolean doHurtTarget(net.minecraft.world.entity.Entity target) { + boolean hurt = super.doHurtTarget(target); + if (hurt) { + this.attackAnimationTicks = 10; + this.playSound(AntarchySoundEvents.MANTIS_ATTACK.get(), 1.0F, 0.95F + this.random.nextFloat() * 0.1F); + } + return hurt; + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.MANTIS_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.MANTIS_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.MANTIS_HURT.get(); + } + + @Override + protected float getSoundVolume() { + return 1.1F; + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource damageSource) { + return false; + } + + @Override + public void setYBodyRot(float yBodyRot) { + // Only sync yRot from body rotation during flight — on the ground this + // conflicted with navigation and contributed to post-attack spinning + if (this.isFlyingNow()) { + this.setYRot(yBodyRot); + } + super.setYBodyRot(yBodyRot); + } + + private void startFlightBurst() { + this.flyBurstTicks = 40 + this.random.nextInt(30); + this.flyCooldownTicks = 160 + this.random.nextInt(80); + Vec3 lift = Vec3.directionFromRotation(0.0F, this.random.nextFloat() * 360.0F).scale(0.18D); + this.setNoGravity(true); + this.setDeltaMovement(this.getDeltaMovement().add(lift.x, 0.28D, lift.z)); + this.navigation.stop(); + } + + private int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setAnimationState(int animationState) { + this.entityData.set(ANIMATION_STATE, animationState); + } + + private void updateAnimationState() { + if (this.attackAnimationTicks > 0) { + this.setAnimationState(this.isFlyingNow() ? ANIM_FLY_ATTACK : ANIM_ATTACK); + return; + } + + Vec3 velocity = this.getDeltaMovement(); + if (this.isFlyingNow() || (!this.onGround() && velocity.lengthSqr() > 1.0E-4D)) { + this.setAnimationState(ANIM_FLY); + } else if (this.onGround()) { + this.setAnimationState(velocity.horizontalDistanceSqr() > 1.0E-4D ? ANIM_WALK : ANIM_IDLE); + } else { + this.setAnimationState(ANIM_IDLE); + } + } + + private void updateFlightRotation() { + // Only override rotation during actual flight — on the ground this fought the + // navigation system, causing the mantis to spin 180° after each attack + if (!this.isFlyingNow()) { + return; + } + + Vec3 motion = this.getDeltaMovement(); + if (motion.lengthSqr() < 1.0E-5D) { + return; + } + + double horizontal = Math.sqrt(motion.x * motion.x + motion.z * motion.z); + this.setYRot((float) (Math.atan2(motion.z, motion.x) * (180.0D / Math.PI)) - 90.0F); + this.setXRot((float) (-(Math.atan2(motion.y, horizontal) * (180.0D / Math.PI)))); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + + + private boolean isFlyingNow() { + return this.flyBurstTicks > 0; + } + + private void tickDebugLog() { + if (++this.debugLogTicks < 100) { + return; + } + this.debugLogTicks = 0; + LivingEntity target = this.getTarget(); + int animState = this.getAnimationState(); + LOGGER.debug( + "[Mantis id={}] pos={},{},{} target={} anim={} attackTicks={} flyBurst={} flyCooldown={} onGround={} navDone={}", + this.getId(), + (int) this.getX(), (int) this.getY(), (int) this.getZ(), + target != null ? target.getName().getString() : "none", + animState, + this.attackAnimationTicks, + this.flyBurstTicks, + this.flyCooldownTicks, + this.onGround(), + this.getNavigation().isDone() + ); + } + + + + +} + + + diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java new file mode 100644 index 00000000..4f0f88f4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java @@ -0,0 +1,705 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.control.SmoothSwimmingMoveControl; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.ProjectileUtil; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.List; +import java.util.UUID; + +public class MissileSquidEntity extends Monster implements GeoEntity { + private static final EntityDataAccessor ANIMATION_STATE = SynchedEntityData.defineId(MissileSquidEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor CAN_FLY = SynchedEntityData.defineId(MissileSquidEntity.class, EntityDataSerializers.BOOLEAN); + + private static final String BITE_COOLDOWN_KEY = "BiteCooldown"; + private static final String CAN_FLY_KEY = "CanFly"; + private static final String LAUNCHED_FROM_SQUIDZOOKA_KEY = "LaunchedFromSquidzooka"; + private static final String LAUNCH_OWNER_KEY = "LaunchOwner"; + private static final String ARMED_AFTER_LANDING_KEY = "ArmedAfterLanding"; + private static final String ACTION_ANIM_TICKS_KEY = "ActionAnimTicks"; + private static final double AGGRO_SPEED = 0.5D; + private static final double PATROL_SPEED = 0.28D; + private static final double ATTACH_RANGE_SQR = 2.25D; + private static final int LATCH_DAMAGE_INTERVAL = 15; + private static final float LATCH_DAMAGE = 2.0F; + private static final int ANIM_IDLE = 0; + private static final int ANIM_SWIM = 1; + private static final int ANIM_ATTACK = 2; + private static final int ATTACK_ANIM_TICKS = 10; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation SWIM_ANIM = RawAnimation.begin().thenLoop("swim"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + + @Nullable + private Vec3 patrolTarget; + private int patrolRetargetTicks; + private int strafeRetargetTicks; + private int biteCooldown; + private int actionAnimationTicks; + private float orbitDirection = 1.0F; + private int attachedTargetId = -1; + private boolean launchedFromSquidzooka; + private boolean armedAfterLanding; + @Nullable + private UUID launchOwnerUuid; + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public MissileSquidEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new SmoothSwimmingMoveControl(this, 80, 8, 0.06F, 0.12F, true); + this.xpReward = 6; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 50.0D) + .add(Attributes.ATTACK_DAMAGE, 6.0D) + .add(Attributes.MOVEMENT_SPEED, 0.84D) + .add(Attributes.FLYING_SPEED, 0.84D) + .add(Attributes.FOLLOW_RANGE, 20.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.15D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + return level.getDifficulty() != Difficulty.PEACEFUL + && pos.getY() <= level.getSeaLevel() - 10 + && level.getFluidState(pos).is(FluidTags.WATER) + && level.getFluidState(pos.above()).is(FluidTags.WATER); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIMATION_STATE, ANIM_IDLE); + builder.define(CAN_FLY, false); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 10.0F)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + + HurtByTargetGoal hurtByTargetGoal = new HurtByTargetGoal(this); + hurtByTargetGoal.setAlertOthers(MissileSquidEntity.class); + this.targetSelector.addGoal(1, hurtByTargetGoal); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getAnimationState()) { + case ANIM_ATTACK -> state.setAndContinue(ATTACK_ANIM); + case ANIM_SWIM -> state.setAndContinue(SWIM_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation navigation = new FlyingPathNavigation(this, level); + navigation.setCanOpenDoors(false); + navigation.setCanFloat(true); + navigation.setCanPassDoors(true); + return navigation; + } + + @Override + public void onSyncedDataUpdated(EntityDataAccessor key) { + super.onSyncedDataUpdated(key); + if (CAN_FLY.equals(key)) { + this.moveControl = this.canFly() + ? new FlyingMoveControl(this, 20, true) + : new SmoothSwimmingMoveControl(this, 80, 8, 0.06F, 0.12F, true); + } + } + + @Override + public void tick() { + super.tick(); + LivingEntity attachedTarget = this.getAttachedTarget(); + this.setNoGravity(attachedTarget != null || (!this.launchedFromSquidzooka && (this.isInWater() || this.canFly()))); + + if (attachedTarget != null) { + if (!this.level().isClientSide) { + this.tickAnimationTimers(); + this.tickAttachedTarget(attachedTarget); + this.updateAnimationState(); + } else { + this.positionOnAttachedTarget(attachedTarget); + this.updateAttachedRotation(attachedTarget); + } + return; + } + + if (this.launchedFromSquidzooka) { + if (!this.level().isClientSide) { + this.tickAnimationTimers(); + } + this.tickLaunchedSquid(); + this.updateSwimRotation(); + if (!this.level().isClientSide) { + this.updateAnimationState(); + } + return; + } + + if (this.level().isClientSide) { + this.tickClientParticles(); + this.updateSwimRotation(); + return; + } + + this.tickAnimationTimers(); + + if (this.biteCooldown > 0) { + this.biteCooldown--; + } + + LivingEntity target = this.getTarget(); + if ((target == null || !target.isAlive() || !this.canTargetEntity(target)) && this.tickCount % 10 == 0) { + LivingEntity nearbyTarget = this.findNearestAttackTarget(); + if (nearbyTarget != null) { + this.setTarget(nearbyTarget); + target = nearbyTarget; + } else { + this.setTarget(null); + target = null; + } + } + + if (target != null && target.isAlive()) { + this.tickAggroMovement(target); + } else { + this.tickPatrolMovement(); + } + + this.updateSwimRotation(); + this.updateAnimationState(); + } + + @Override + public void baseTick() { + int airSupply = this.getAirSupply(); + super.baseTick(); + this.handleWaterAnimalAirSupply(airSupply); + } + + @Override + public void travel(Vec3 travelVector) { + if (this.getAttachedTarget() != null) { + this.setDeltaMovement(Vec3.ZERO); + return; + } + + if (this.launchedFromSquidzooka) { + return; + } + + if (this.isEffectiveAi() && (this.isInWater() || this.canFly())) { + this.moveRelative(this.getSpeed(), travelVector); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(this.isInWater() ? 0.92D : 0.91D)); + return; + } + + super.travel(travelVector); + } + + @Override + public boolean doHurtTarget(Entity target) { + return target instanceof LivingEntity livingTarget && this.attachToTarget(livingTarget); + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.MISSILE_SQUID_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.MISSILE_SQUID_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.MISSILE_SQUID_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 0.8F; + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return true; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(BITE_COOLDOWN_KEY, this.biteCooldown); + tag.putBoolean(CAN_FLY_KEY, this.canFly()); + tag.putBoolean(LAUNCHED_FROM_SQUIDZOOKA_KEY, this.launchedFromSquidzooka); + tag.putBoolean(ARMED_AFTER_LANDING_KEY, this.armedAfterLanding); + tag.putInt(ACTION_ANIM_TICKS_KEY, this.actionAnimationTicks); + if (this.launchOwnerUuid != null) { + tag.putUUID(LAUNCH_OWNER_KEY, this.launchOwnerUuid); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.biteCooldown = tag.getInt(BITE_COOLDOWN_KEY); + this.setCanFly(tag.getBoolean(CAN_FLY_KEY)); + this.launchedFromSquidzooka = tag.getBoolean(LAUNCHED_FROM_SQUIDZOOKA_KEY); + this.armedAfterLanding = tag.getBoolean(ARMED_AFTER_LANDING_KEY); + this.actionAnimationTicks = Math.max(0, tag.getInt(ACTION_ANIM_TICKS_KEY)); + this.launchOwnerUuid = tag.hasUUID(LAUNCH_OWNER_KEY) ? tag.getUUID(LAUNCH_OWNER_KEY) : null; + this.updateAnimationState(); + } + + private void tickAggroMovement(LivingEntity target) { + this.patrolTarget = null; + this.getLookControl().setLookAt(target, 30.0F, 30.0F); + + if (!this.isInWater() && !this.canFly()) { + this.tickGroundAggroMovement(target); + return; + } + + if (this.strafeRetargetTicks-- <= 0) { + this.strafeRetargetTicks = 6 + this.random.nextInt(8); + if (this.random.nextFloat() < 0.35F) { + this.orbitDirection *= -1.0F; + } + } + + Vec3 attackPoint = this.createAttachApproachPoint(target); + this.getMoveControl().setWantedPosition(attackPoint.x, attackPoint.y, attackPoint.z, AGGRO_SPEED); + + if (this.biteCooldown <= 0 && this.distanceToSqr(attackPoint) <= ATTACH_RANGE_SQR && this.hasLineOfSight(target)) { + this.doHurtTarget(target); + } + } + + private void tickPatrolMovement() { + this.strafeRetargetTicks = 0; + + if (this.patrolRetargetTicks-- <= 0 || this.patrolTarget == null || this.position().distanceToSqr(this.patrolTarget) < 3.0D) { + this.patrolRetargetTicks = 24 + this.random.nextInt(18); + this.patrolTarget = this.findPatrolTarget(); + } + + if (this.patrolTarget != null) { + this.getMoveControl().setWantedPosition(this.patrolTarget.x, this.patrolTarget.y, this.patrolTarget.z, PATROL_SPEED); + } + } + + private Vec3 createAttachApproachPoint(LivingEntity target) { + return target.position().add(0.0D, target.getBbHeight() * 0.6D, 0.0D); + } + + private Vec3 findPatrolTarget() { + BlockPos origin = this.blockPosition(); + for (int attempt = 0; attempt < 16; attempt++) { + BlockPos candidate = origin.offset(this.random.nextInt(17) - 8, this.random.nextInt(7) - 3, this.random.nextInt(17) - 8); + boolean candidateOpen = this.level().isEmptyBlock(candidate) || this.level().getFluidState(candidate).is(FluidTags.WATER); + boolean aboveOpen = this.level().isEmptyBlock(candidate.above()) || this.level().getFluidState(candidate.above()).is(FluidTags.WATER); + if (this.canFly()) { + if (!candidateOpen || !aboveOpen) { + continue; + } + } else if (!this.level().getFluidState(candidate).is(FluidTags.WATER) || !this.level().getFluidState(candidate.above()).is(FluidTags.WATER)) { + continue; + } + + return Vec3.atCenterOf(candidate); + } + + return this.position(); + } + + public void launchFromSquidzooka(LivingEntity owner, float velocity) { + Vec3 direction = Vec3.directionFromRotation(new Vec2(owner.getXRot(), owner.getYRot())); + this.launchAsProjectile(owner, direction.scale(velocity).add(owner.getDeltaMovement())); + } + + public void launchAsProjectile(@Nullable LivingEntity owner, Vec3 velocity) { + this.attachedTargetId = -1; + this.launchedFromSquidzooka = true; + this.armedAfterLanding = false; + this.launchOwnerUuid = owner != null ? owner.getUUID() : null; + this.setTarget(null); + this.setNoGravity(false); + this.setDeltaMovement(velocity); + this.hasImpulse = true; + this.updateAnimationState(); + } + + private void tickLaunchedSquid() { + if (this.level().isClientSide) { + return; + } + + Vec3 start = this.position(); + Vec3 velocity = this.getDeltaMovement(); + Vec3 end = start.add(velocity); + + EntityHitResult entityHit = ProjectileUtil.getEntityHitResult( + this.level(), + this, + start, + end, + this.getBoundingBox().expandTowards(velocity).inflate(0.35D), + this::canLaunchHit + ); + + if (entityHit != null) { + Vec3 location = entityHit.getLocation(); + this.moveTo(location.x, location.y, location.z, this.getYRot(), this.getXRot()); + if (entityHit.getEntity() instanceof LivingEntity livingEntity) { + this.attachToTarget(livingEntity); + } else { + this.armAfterLanding(null); + } + return; + } + + this.move(MoverType.SELF, velocity); + Vec3 movedVelocity = this.getDeltaMovement(); + if (!this.isNoGravity()) { + movedVelocity = movedVelocity.add(0.0D, -0.08D, 0.0D); + } + + this.setDeltaMovement(movedVelocity.scale(this.isInWater() ? 0.9D : 0.98D)); + this.hasImpulse = true; + + if (this.onGround() || this.horizontalCollision || this.verticalCollision) { + this.armAfterLanding(this.findLandingTarget()); + } + } + + private boolean canLaunchHit(Entity entity) { + if (!(entity instanceof LivingEntity livingEntity) || entity == this) { + return false; + } + + return this.canTargetEntity(livingEntity) && entity.isPickable(); + } + + @Nullable + private LivingEntity findLandingTarget() { + List nearbyTargets = this.level().getEntitiesOfClass( + LivingEntity.class, + new AABB(this.blockPosition()).inflate(2.5D), + this::canLaunchHit + ); + return nearbyTargets.isEmpty() ? null : nearbyTargets.get(0); + } + + private void armAfterLanding(@Nullable LivingEntity target) { + this.attachedTargetId = -1; + this.launchedFromSquidzooka = false; + this.armedAfterLanding = true; + this.fallDistance = 0.0F; + if (target != null && this.canTargetEntity(target)) { + this.setTarget(target); + } + this.updateAnimationState(); + } + + @Nullable + private LivingEntity findNearestAttackTarget() { + double followRange = this.getAttributeValue(Attributes.FOLLOW_RANGE); + Player nearestPlayer = this.level().getNearestPlayer(this, followRange); + return nearestPlayer != null && this.canTargetEntity(nearestPlayer) ? nearestPlayer : null; + } + + private boolean canTargetEntity(LivingEntity entity) { + if (entity == this || !entity.isAlive() || entity.getType() == this.getType() || entity instanceof KrakenEntity) { + return false; + } + + if (this.launchOwnerUuid != null && this.launchOwnerUuid.equals(entity.getUUID())) { + return false; + } + + if (entity instanceof Player player) { + if (player.isCreative() || player.isSpectator()) { + return false; + } + return this.level().getDifficulty() != Difficulty.PEACEFUL; + } + + return true; + } + + private void tickGroundAggroMovement(LivingEntity target) { + Vec3 horizontal = target.position().subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (horizontal.lengthSqr() > 1.0E-4D && this.onGround()) { + Vec3 lunge = horizontal.normalize().scale(0.16D).add(0.0D, 0.24D, 0.0D); + this.setDeltaMovement(this.getDeltaMovement().add(lunge)); + this.hasImpulse = true; + } + + if (this.biteCooldown <= 0 && this.distanceToSqr(target) <= ATTACH_RANGE_SQR && this.hasLineOfSight(target)) { + this.doHurtTarget(target); + } + } + + private void tickClientParticles() { + if ((this.getTarget() != null || this.biteCooldown > 0 || this.getAttachedTarget() != null) && this.tickCount % 3 == 0) { + this.level().addParticle( + ParticleTypes.BUBBLE, + this.getX() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + this.getY() + 0.3D + this.random.nextDouble() * 0.4D, + this.getZ() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + 0.0D, + 0.02D, + 0.0D + ); + } + } + + private void updateSwimRotation() { + Vec3 velocity = this.getDeltaMovement(); + if (velocity.horizontalDistanceSqr() > 1.0E-4D) { + float targetYaw = (float) (Mth.atan2(velocity.z, velocity.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(Mth.approachDegrees(this.getYRot(), targetYaw, 10.0F)); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + + if (velocity.lengthSqr() > 1.0E-4D) { + float targetPitch = (float) (-(Mth.atan2(velocity.y, velocity.horizontalDistance()) * (180.0D / Math.PI))); + this.setXRot(Mth.approachDegrees(this.getXRot(), targetPitch, 8.0F)); + } + } + + private void handleWaterAnimalAirSupply(int previousAirSupply) { + if (!this.isAlive()) { + return; + } + + if (this.isInWaterOrBubble()) { + this.setAirSupply(this.getMaxAirSupply()); + return; + } + + this.setAirSupply(previousAirSupply - 1); + if (this.getAirSupply() == -20) { + this.setAirSupply(0); + this.hurt(this.damageSources().drown(), 2.0F); + } + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public boolean canAttack(LivingEntity target) { + return this.canTargetEntity(target) && super.canAttack(target); + } + + + @Nullable + private LivingEntity getAttachedTarget() { + if (this.attachedTargetId < 0) { + return null; + } + + Entity entity = this.level().getEntity(this.attachedTargetId); + return entity instanceof LivingEntity livingEntity && this.canTargetEntity(livingEntity) ? livingEntity : null; + } + + private boolean attachToTarget(LivingEntity target) { + if (!this.canTargetEntity(target) || this.hasAttachedSquid(target)) { + return false; + } + + this.attachedTargetId = target.getId(); + this.launchedFromSquidzooka = false; + this.armedAfterLanding = true; + this.setTarget(target); + this.setDeltaMovement(Vec3.ZERO); + this.hasImpulse = true; + this.biteCooldown = LATCH_DAMAGE_INTERVAL; + this.playActionAnimation(ANIM_ATTACK, ATTACK_ANIM_TICKS); + this.positionOnAttachedTarget(target); + this.updateAttachedRotation(target); + this.playSound(AntarchySoundEvents.MISSILE_SQUID_ATTACK.get(), 0.8F, 1.15F + this.random.nextFloat() * 0.15F); + return true; + } + + private boolean hasAttachedSquid(LivingEntity target) { + return !this.level().getEntitiesOfClass( + MissileSquidEntity.class, + target.getBoundingBox().inflate(1.5D), + squid -> squid != this && squid.attachedTargetId == target.getId() + ).isEmpty(); + } + + private void detachFromTarget() { + this.attachedTargetId = -1; + this.setTarget(null); + } + + private void tickAttachedTarget(LivingEntity target) { + if (!target.isAlive() || !this.canTargetEntity(target)) { + this.detachFromTarget(); + return; + } + + this.getNavigation().stop(); + this.getMoveControl().setWantedPosition(this.getX(), this.getY(), this.getZ(), 0.0D); + this.setDeltaMovement(Vec3.ZERO); + this.positionOnAttachedTarget(target); + this.updateAttachedRotation(target); + + if (this.biteCooldown > 0) { + this.biteCooldown--; + } + + if (this.biteCooldown <= 0) { + Vec3 previousMovement = target.getDeltaMovement(); + boolean hurt = target.hurt(this.damageSources().mobAttack(this), LATCH_DAMAGE); + target.setDeltaMovement(previousMovement); + if (hurt) { + this.playActionAnimation(ANIM_ATTACK, ATTACK_ANIM_TICKS); + } + this.biteCooldown = LATCH_DAMAGE_INTERVAL; + } + } + + private void positionOnAttachedTarget(LivingEntity target) { + Vec3 anchor = this.createLatchAnchor(target); + this.moveTo(anchor.x, anchor.y, anchor.z, this.getYRot(), this.getXRot()); + this.resetFallDistance(); + } + + private Vec3 createLatchAnchor(LivingEntity target) { + return target.position().add( + 0.0D, + target.getBbHeight() + 0.15D, + 0.0D + ); + } + + private void updateAttachedRotation(LivingEntity target) { + Vec3 direction = target.position().subtract(this.position()); + if (direction.horizontalDistanceSqr() > 1.0E-4D) { + float targetYaw = (float)(Mth.atan2(direction.z, direction.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(targetYaw); + this.yBodyRot = targetYaw; + this.yHeadRot = targetYaw; + } + this.setXRot(0.0F); + } + + public int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + public boolean canFly() { + return this.entityData.get(CAN_FLY); + } + + public void setCanFly(boolean canFly) { + this.entityData.set(CAN_FLY, canFly); + this.moveControl = canFly + ? new FlyingMoveControl(this, 20, true) + : new SmoothSwimmingMoveControl(this, 80, 8, 0.06F, 0.12F, true); + } + + private void setAnimationState(int animationState) { + this.entityData.set(ANIMATION_STATE, animationState); + } + + private void playActionAnimation(int animationState, int ticks) { + this.setAnimationState(animationState); + this.actionAnimationTicks = ticks; + } + + private void tickAnimationTimers() { + if (this.actionAnimationTicks > 0) { + this.actionAnimationTicks--; + } + } + + private void updateAnimationState() { + if (this.getAttachedTarget() != null || this.actionAnimationTicks > 0) { + this.setAnimationState(ANIM_ATTACK); + return; + } + + Vec3 velocity = this.getDeltaMovement(); + if (this.launchedFromSquidzooka + || this.getTarget() != null + || velocity.lengthSqr() > 1.0E-3D + || (this.isInWater() && velocity.horizontalDistanceSqr() > 1.0E-4D)) { + this.setAnimationState(ANIM_SWIM); + return; + } + + this.setAnimationState(ANIM_IDLE); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java new file mode 100644 index 00000000..201a34db --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java @@ -0,0 +1,684 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class MolevoreEntity extends Monster implements GeoEntity { + private static final ResourceKey MOLEWORM_CAVES = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "moleworm_caves") + ); + private static final EntityDataAccessor ACTION_STATE = SynchedEntityData.defineId(MolevoreEntity.class, EntityDataSerializers.INT); + + private static final int ACTION_NONE = 0; + private static final int ACTION_DIG_UP = 1; + private static final int ACTION_CLAW_SWIPE = 2; + private static final int ACTION_SPIN_CHARGE = 3; + private static final int ACTION_HURT = 4; + private static final int ACTION_DEATH = 5; + private static final int ACTION_IDLE_DIG = 6; + + private static final int DIG_UP_TICKS = 60; + private static final int SWIPE_TICKS = 18; + private static final int SWIPE_DAMAGE_TICK = 8; + private static final int SPIN_TOTAL_TICKS = 32; + private static final int SPIN_WINDUP_TICKS = 10; + private static final int HURT_TICKS = 10; + private static final int DEATH_TICKS = 34; + + private static final double CHASE_SPEED = 1.05D; + private static final double WANDER_SPEED = 0.8D; + private static final double SPIN_SPEED = 1.15D; + private static final double SWIPE_RANGE = 3.6D; + private static final double SPIN_RANGE_MIN = 4.0D; + private static final double SPIN_RANGE_MAX = 14.0D; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlay("death"); + private static final RawAnimation HURT_ANIM = RawAnimation.begin().thenPlay("hurt"); + private static final RawAnimation DIG_UP_ANIM = RawAnimation.begin().thenPlay("digging up"); + private static final RawAnimation CLAW_SWIPE_ANIM = RawAnimation.begin().thenPlay("claw swiping"); + private static final RawAnimation SPINNING_ANIM = RawAnimation.begin().thenPlay("spinning"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private final Set spinHitEntities = new HashSet<>(); + + private int actionTicks; + private int attackCooldown; + private int idleDigCooldown; + private boolean swipeDamageApplied; + private Vec3 spinDirection = Vec3.ZERO; + + public MolevoreEntity(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 20; + this.idleDigCooldown = 100; + } + + public static AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 60.0D) + .add(Attributes.MOVEMENT_SPEED, 0.27D) + .add(Attributes.ATTACK_DAMAGE, 10.0D) + .add(Attributes.ARMOR, 6.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.65D) + .add(Attributes.FOLLOW_RANGE, 28.0D); + } + + public static boolean canSpawn(EntityType entityType, LevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + return hasSpawnPocket(level, pos); + } + + private static boolean hasSpawnPocket(LevelAccessor level, BlockPos pos) { + if (!level.getBiome(pos).is(MOLEWORM_CAVES)) { + return false; + } + + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + BlockPos airPos = pos.offset(dx, 0, dz); + if (!level.getBlockState(airPos).isAir() || !level.getBlockState(airPos.above()).isAir()) { + return false; + } + } + } + + return true; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ACTION_STATE, ACTION_NONE); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, WANDER_SPEED)); + this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 12.0F)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers()); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getActionState()) { + case ACTION_DIG_UP -> state.setAndContinue(DIG_UP_ANIM); + case ACTION_CLAW_SWIPE -> state.setAndContinue(CLAW_SWIPE_ANIM); + case ACTION_SPIN_CHARGE -> state.setAndContinue(SPINNING_ANIM); + case ACTION_HURT -> state.setAndContinue(HURT_ANIM); + case ACTION_DEATH -> state.setAndContinue(DEATH_ANIM); + case ACTION_IDLE_DIG -> state.setAndContinue(CLAW_SWIPE_ANIM); + default -> state.setAndContinue(state.isMoving() ? WALK_ANIM : IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + @Nullable + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData spawnGroupData) { + SpawnGroupData finalized = super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); + if (spawnReason != MobSpawnType.SPAWN_EGG) { + this.startDigUp(); + } + return finalized; + } + + @Override + public void tick() { + super.tick(); + + if (this.level().isClientSide) { + return; + } + + if (this.attackCooldown > 0) { + this.attackCooldown--; + } + if (this.idleDigCooldown > 0) { + this.idleDigCooldown--; + } + + if (this.getActionState() == ACTION_DEATH) { + return; + } + + switch (this.getActionState()) { + case ACTION_DIG_UP -> this.tickDigUp(); + case ACTION_CLAW_SWIPE -> this.tickClawSwipe(); + case ACTION_SPIN_CHARGE -> this.tickSpinCharge(); + case ACTION_HURT -> this.tickHurtAnimation(); + case ACTION_IDLE_DIG -> this.tickIdleDig(); + default -> this.tickCombat(); + } + } + + @Override + public boolean hasLineOfSight(Entity entity) { + Vec3 start = new Vec3(this.getX(), this.getEyeY(), this.getZ()); + Vec3 end = new Vec3(entity.getX(), entity.getEyeY(), entity.getZ()); + Vec3 delta = end.subtract(start); + double distance = delta.length(); + if (distance < 1.0E-6D) { + return true; + } + int steps = Math.max(1, Mth.ceil(distance / 0.5D)); + Vec3 step = delta.scale(1.0D / steps); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + int lastX = Integer.MIN_VALUE; + int lastY = Integer.MIN_VALUE; + int lastZ = Integer.MIN_VALUE; + + for (int i = 0; i <= steps; i++) { + Vec3 sample = start.add(step.scale(i)); + int bx = Mth.floor(sample.x); + int by = Mth.floor(sample.y); + int bz = Mth.floor(sample.z); + if (bx == lastX && by == lastY && bz == lastZ) { + continue; + } + lastX = bx; + lastY = by; + lastZ = bz; + cursor.set(bx, by, bz); + + BlockState state = this.level().getBlockState(cursor); + if (state.isAir() + || state.is(AntarchyTags.Blocks.MOLEVORE_SEE_THROUGH_BLOCKS) + || state.getCollisionShape(this.level(), cursor).isEmpty()) { + continue; + } + + return false; + } + + return true; + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.isInvulnerableTo(source)) { + return false; + } + + boolean hurt = super.hurt(source, amount); + if (!hurt || this.level().isClientSide) { + return hurt; + } + + if (!this.isDeadOrDying() && this.getActionState() != ACTION_DIG_UP && this.getActionState() != ACTION_DEATH) { + if (this.getActionState() == ACTION_NONE) { + this.setActionState(ACTION_HURT); + this.actionTicks = HURT_TICKS; + } + } + + return true; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return super.removeWhenFarAway(distanceToClosestPlayer); + } + + @Override + public boolean canBeCollidedWith() { + return this.getActionState() != ACTION_DIG_UP && super.canBeCollidedWith(); + } + + @Override + public boolean canAttack(LivingEntity target) { + return target instanceof Player player && !player.isCreative() && !player.isSpectator() && super.canAttack(target); + } + + @Override + protected SoundEvent getAmbientSound() { + return this.getActionState() == ACTION_DIG_UP ? null : AntarchySoundEvents.MOLEVORE_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.MOLEVORE_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.MOLEVORE_HURT.get(); + } + + @Override + protected void playStepSound(BlockPos pos, BlockState state) { + this.playSound(AntarchySoundEvents.MOLEVORE_DIG.get(), 0.18F, 0.9F); + } + + @Override + protected float getSoundVolume() { + return 0.9F; + } + + @Override + public float getWalkTargetValue(BlockPos pos, net.minecraft.world.level.LevelReader level) { + return level.getBlockState(pos.below()).is(AntarchyTags.Blocks.MOLEVORE_SEE_THROUGH_BLOCKS) + ? 8.0F + : super.getWalkTargetValue(pos, level); + } + + @Override + public float maxUpStep() { + return 1.0F; + } + + @Override + public void travel(Vec3 travelVector) { + if (this.level().isClientSide || this.getActionState() != ACTION_SPIN_CHARGE) { + super.travel(travelVector); + return; + } + + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.96D)); + } + + @Override + public void die(DamageSource damageSource) { + if (!this.level().isClientSide && this.getActionState() != ACTION_DEATH) { + this.setActionState(ACTION_DEATH); + this.actionTicks = DEATH_TICKS; + this.attackCooldown = 0; + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + } + super.die(damageSource); + } + + @Override + protected void tickDeath() { + this.deathTime++; + if (this.deathTime == 1) { + this.setActionState(ACTION_DEATH); + } + if (this.deathTime >= DEATH_TICKS) { + this.remove(RemovalReason.KILLED); + } + } + + private void tickCombat() { + LivingEntity target = this.getTarget(); + if (target == null || !target.isAlive()) { + this.setDeltaMovement(this.getDeltaMovement().scale(0.8D)); + if (this.idleDigCooldown <= 0 && this.random.nextFloat() < 0.01F) { + this.startIdleDig(); + } + return; + } + + this.getLookControl().setLookAt(target, 30.0F, 20.0F); + double distanceToTarget = this.distanceToSqr(target); + + if (this.attackCooldown <= 0) { + if (distanceToTarget <= SWIPE_RANGE * SWIPE_RANGE) { + this.startClawSwipe(); + return; + } + + if (distanceToTarget >= SPIN_RANGE_MIN * SPIN_RANGE_MIN + && distanceToTarget <= SPIN_RANGE_MAX * SPIN_RANGE_MAX + && this.random.nextFloat() < 0.05F) { + this.startSpinCharge(target); + return; + } + } + + this.getNavigation().moveTo(target, CHASE_SPEED); + + if (this.horizontalCollision && this.canBreakBlocks()) { + this.breakTaggedBlocksInFront(1.7D, 2.0D, 1.0D); + } + } + + private void startDigUp() { + this.setActionState(ACTION_DIG_UP); + this.actionTicks = DIG_UP_TICKS; + this.attackCooldown = 30; + this.setDeltaMovement(Vec3.ZERO); + } + + private void tickDigUp() { + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + if (this.actionTicks == DIG_UP_TICKS) { + this.playSound(AntarchySoundEvents.MOLEVORE_DIG.get(), 0.9F, 0.75F); + } + if (this.tickCount % 4 == 0 && this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles( + net.minecraft.core.particles.ParticleTypes.POOF, + this.getX(), + this.getY() + 0.3D, + this.getZ(), + 8, + this.getBbWidth() * 0.25D, + 0.12D, + this.getBbWidth() * 0.25D, + 0.02D + ); + } + if (--this.actionTicks <= 0) { + this.setActionState(ACTION_NONE); + } + } + + private void startClawSwipe() { + this.setActionState(ACTION_CLAW_SWIPE); + this.actionTicks = SWIPE_TICKS; + this.swipeDamageApplied = false; + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.35D)); + this.playSound(AntarchySoundEvents.MOLEVORE_ATTACK.get(), 0.9F, 0.65F); + } + + private void tickClawSwipe() { + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.6D)); + LivingEntity target = this.getTarget(); + if (target != null) { + this.getLookControl().setLookAt(target, 35.0F, 20.0F); + } + + int elapsed = SWIPE_TICKS - this.actionTicks; + if (!this.swipeDamageApplied && elapsed >= SWIPE_DAMAGE_TICK) { + this.performClawSwipe(); + this.swipeDamageApplied = true; + } + + if (--this.actionTicks <= 0) { + this.setActionState(ACTION_NONE); + this.attackCooldown = 20; + } + } + + private void performClawSwipe() { + AABB hitBox = this.getBoundingBox().inflate(3.0D, 1.3D, 3.0D); + for (LivingEntity entity : this.level().getEntitiesOfClass(LivingEntity.class, hitBox, this::isValidSwipeTarget)) { + if (!this.isInFront(entity.position(), 0.05D)) { + continue; + } + + if (entity.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE))) { + Vec3 push = entity.position().subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (push.lengthSqr() < 1.0E-4D) { + push = this.getViewVector(1.0F).multiply(1.0D, 0.0D, 1.0D); + } + push = push.normalize().scale(0.8D); + entity.push(push.x, 0.25D, push.z); + entity.hurtMarked = true; + } + } + + if (this.canBreakBlocks()) { + this.breakTaggedBlocksInFront(2.8D, 2.2D, 1.15D); + } + + this.playSound(AntarchySoundEvents.MOLEVORE_ATTACK.get(), 1.0F, 0.85F); + } + + private void startSpinCharge(LivingEntity target) { + Vec3 horizontal = target.position().subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (horizontal.lengthSqr() < 1.0E-4D) { + return; + } + + this.spinDirection = horizontal.normalize(); + this.spinHitEntities.clear(); + this.setActionState(ACTION_SPIN_CHARGE); + this.actionTicks = SPIN_TOTAL_TICKS; + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + this.playSound(AntarchySoundEvents.MOLEVORE_ATTACK.get(), 1.2F, 0.75F); + } + + private void tickSpinCharge() { + this.getNavigation().stop(); + LivingEntity target = this.getTarget(); + boolean inWindup = this.actionTicks > SPIN_TOTAL_TICKS - SPIN_WINDUP_TICKS; + + if (target != null && inWindup) { + this.getLookControl().setLookAt(target, 35.0F, 20.0F); + Vec3 horizontal = target.position().subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (horizontal.lengthSqr() > 1.0E-4D) { + this.spinDirection = horizontal.normalize(); + } + this.setDeltaMovement(this.getDeltaMovement().scale(0.2D)); + } else { + Vec3 lookTarget = this.position().add(this.spinDirection); + this.getLookControl().setLookAt(lookTarget.x, this.getEyeY(), lookTarget.z, 360.0F, 0.0F); + Vec3 motion = this.spinDirection.scale(SPIN_SPEED).add(0.0D, this.onGround() ? 0.08D : 0.0D, 0.0D); + this.setDeltaMovement(motion); + this.hasImpulse = true; + this.performSpinChargeHit(); + } + if (this.horizontalCollision && !inWindup) { + boolean brokeDirt = this.canBreakBlocks() + && this.breakTaggedBlocksInDirection(this.spinDirection, 1.8D, 2.2D, 1.1D); + if (!brokeDirt) { + this.actionTicks = Math.min(this.actionTicks, 3); + } + } else if (this.horizontalCollision) { + this.actionTicks = Math.min(this.actionTicks, 3); + } + + if (--this.actionTicks <= 0) { + this.spinHitEntities.clear(); + this.setActionState(ACTION_NONE); + this.setDeltaMovement(this.getDeltaMovement().scale(0.25D)); + this.attackCooldown = 60; + } + } + + private void performSpinChargeHit() { + AABB hitBox = this.getBoundingBox().inflate(0.55D, 0.35D, 0.55D); + for (LivingEntity entity : this.level().getEntitiesOfClass(LivingEntity.class, hitBox, this::isValidSwipeTarget)) { + if (!this.spinHitEntities.add(entity.getUUID())) { + continue; + } + + if (entity.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE) * 1.65F)) { + Vec3 push = this.spinDirection.lengthSqr() > 0.0D ? this.spinDirection : entity.position().subtract(this.position()).normalize(); + entity.push(push.x * 1.15D, 0.35D, push.z * 1.15D); + entity.hurtMarked = true; + this.playSound(AntarchySoundEvents.MOLEVORE_ATTACK.get(), 1.0F, 0.65F + this.random.nextFloat() * 0.1F); + } + } + } + + private void startIdleDig() { + this.setActionState(ACTION_IDLE_DIG); + this.actionTicks = SWIPE_TICKS; + this.swipeDamageApplied = false; + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.35D)); + this.playSound(AntarchySoundEvents.MOLEVORE_DIG.get(), 0.9F, 0.55F); + } + + private void tickIdleDig() { + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.6D)); + + int elapsed = SWIPE_TICKS - this.actionTicks; + if (!this.swipeDamageApplied && elapsed >= SWIPE_DAMAGE_TICK) { + this.performIdleDig(); + this.swipeDamageApplied = true; + } + + if (--this.actionTicks <= 0) { + this.setActionState(ACTION_NONE); + this.idleDigCooldown = 120 + this.random.nextInt(80); + } + } + + + private void performIdleDig() { + if (!this.canBreakBlocks()) return; + + Vec3 forward = this.getViewVector(1.0F).normalize(); + Vec3 digCenter = this.position() + .add(forward.scale(1.0D)) + .add(0.0D, -0.5D, 0.0D); + + double halfWidth = 0.9D; + double digDepth = 1.5D; + BlockPos min = BlockPos.containing(digCenter.x - halfWidth, digCenter.y - digDepth, digCenter.z - halfWidth); + BlockPos max = BlockPos.containing(digCenter.x + halfWidth, digCenter.y + 0.4D, digCenter.z + halfWidth); + + Vec3 hForward = forward.multiply(1.0D, 0.0D, 1.0D); + for (BlockPos pos : BlockPos.betweenClosed(min, max)) { + BlockState state = this.level().getBlockState(pos); + if (!state.is(AntarchyTags.Blocks.MOLEVORE_BREAKABLE_BLOCKS) || state.isAir()) { + continue; + } + if (hForward.lengthSqr() > 1.0E-4D) { + Vec3 toBlock = Vec3.atCenterOf(pos).subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (toBlock.lengthSqr() > 1.0E-4D && hForward.normalize().dot(toBlock.normalize()) < -0.2D) { + continue; + } + } + this.level().destroyBlock(pos, false, this); + } + + this.playSound(AntarchySoundEvents.MOLEVORE_ATTACK.get(), 1.0F, 0.8F + this.random.nextFloat() * 0.1F); + } + + private void tickHurtAnimation() { + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.5D)); + if (--this.actionTicks <= 0) { + this.setActionState(ACTION_NONE); + } + } + + private boolean isValidSwipeTarget(LivingEntity entity) { + return entity.isAlive() && entity != this && this.canAttack(entity); + } + + + private boolean breakTaggedBlocksInFront(double range, double verticalRange, double halfWidth) { + return this.breakTaggedBlocksInDirection(this.getViewVector(1.0F).normalize(), range, verticalRange, halfWidth); + } + + + private boolean breakTaggedBlocksInDirection(Vec3 direction, double range, double verticalRange, double halfWidth) { + if (!canMobGrief(this.level())) { + return false; + } + + Vec3 forward = direction.normalize(); + Vec3 center = this.position().add(forward.scale(range * 0.5D)).add(0.0D, this.getBbHeight() * 0.4D, 0.0D); + BlockPos min = BlockPos.containing(center.x - halfWidth, center.y - verticalRange * 0.5D, center.z - halfWidth); + BlockPos max = BlockPos.containing(center.x + halfWidth, center.y + verticalRange * 0.5D, center.z + halfWidth); + + boolean broke = false; + Vec3 hForward = forward.multiply(1.0D, 0.0D, 1.0D); + for (BlockPos pos : BlockPos.betweenClosed(min, max)) { + BlockState state = this.level().getBlockState(pos); + if (!state.is(AntarchyTags.Blocks.MOLEVORE_BREAKABLE_BLOCKS) || state.isAir()) { + continue; + } + + Vec3 blockCenter = Vec3.atCenterOf(pos); + Vec3 toBlock = blockCenter.subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (hForward.lengthSqr() > 1.0E-4D && toBlock.lengthSqr() > 1.0E-4D + && hForward.normalize().dot(toBlock.normalize()) < -0.15D) { + continue; + } + + this.level().destroyBlock(pos, false, this); + broke = true; + } + return broke; + } + + private boolean isInFront(Vec3 position, double minimumDot) { + Vec3 forward = this.getViewVector(1.0F).multiply(1.0D, 0.0D, 1.0D); + Vec3 toTarget = position.subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (forward.lengthSqr() < 1.0E-4D || toTarget.lengthSqr() < 1.0E-4D) { + return true; + } + return forward.normalize().dot(toTarget.normalize()) >= minimumDot; + } + + private int getActionState() { + return this.entityData.get(ACTION_STATE); + } + + private void setActionState(int actionState) { + this.entityData.set(ACTION_STATE, actionState); + } + + private boolean canBreakBlocks() { + return canMobGrief(this.level()); + } + + private static boolean canMobGrief(Level level) { + return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/MolewormEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolewormEntity.java new file mode 100644 index 00000000..6787d82e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolewormEntity.java @@ -0,0 +1,491 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import java.util.EnumSet; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.DamageTypeTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.ClimbOnTopOfPowderSnowGoal; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.monster.Silverfish; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class MolewormEntity extends Monster implements GeoEntity { + private static final EntityDataAccessor ANIMATION_STATE = SynchedEntityData.defineId(MolewormEntity.class, EntityDataSerializers.INT); + + private static final int ANIM_IDLE = 0; + private static final int ANIM_WALK = 1; + private static final int ANIM_DIG = 2; + private static final int ANIM_DEATH = 3; + private static final int DIG_ANIMATION_TICKS = 20; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation DIG_ANIM = RawAnimation.begin().thenPlay("Dig"); + private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlay("Death"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + @Nullable + private WakeUpFriendsGoal friendsGoal; + @Nullable + private BlockPos mergeTargetPos; + private int mergeTicks; + + public MolewormEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + public static AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 8.0D) + .add(Attributes.MOVEMENT_SPEED, 0.25D) + .add(Attributes.ATTACK_DAMAGE, 1.0D); + } + + @SuppressWarnings("unchecked") + public static boolean canSpawn(EntityType entityType, LevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + return Silverfish.checkSilverfishSpawnRules((EntityType) (EntityType) entityType, level, spawnReason, pos, random); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIMATION_STATE, ANIM_IDLE); + } + + @Override + protected void registerGoals() { + this.friendsGoal = new WakeUpFriendsGoal(this); + this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level())); + this.goalSelector.addGoal(3, this.friendsGoal); + this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false)); + this.goalSelector.addGoal(5, new MergeWithDirtGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers()); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getAnimationState()) { + case ANIM_WALK -> state.setAndContinue(WALK_ANIM); + case ANIM_DIG -> state.setAndContinue(DIG_ANIM); + case ANIM_DEATH -> state.setAndContinue(DEATH_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + protected Entity.MovementEmission getMovementEmission() { + return Entity.MovementEmission.EVENTS; + } + + @Override + public EntityDimensions getDefaultDimensions(Pose pose) { + return EntityDimensions.scalable(0.4F, 0.3F); + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.MOLEWORM_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.MOLEWORM_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.MOLEWORM_HURT.get(); + } + + @Override + protected void playStepSound(BlockPos pos, BlockState state) { + this.playSound(AntarchySoundEvents.MOLEWORM_DIG.get(), 0.15F, 1.0F); + } + + @Override + public boolean doHurtTarget(Entity target) { + boolean hurt = super.doHurtTarget(target); + if (hurt && target instanceof LivingEntity) { + this.playSound(AntarchySoundEvents.MOLEWORM_ATTACK.get(), 0.35F, 0.95F + this.random.nextFloat() * 0.1F); + } + return hurt; + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.isInvulnerableTo(source)) { + return false; + } + + if ((source.getEntity() != null || source.is(DamageTypeTags.ALWAYS_TRIGGERS_SILVERFISH)) && this.friendsGoal != null) { + this.friendsGoal.notifyHurt(); + } + + boolean hurt = super.hurt(source, amount); + if (hurt && this.isMerging()) { + this.cancelMerge(); + } + return hurt; + } + + @Override + public void tick() { + this.yBodyRot = this.getYRot(); + super.tick(); + + if (!this.level().isClientSide && this.isMerging()) { + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + this.mergeTicks--; + if (this.mergeTicks <= 0) { + this.completeMerge(); + } + } + + if (!this.level().isClientSide) { + this.updateAnimationState(); + } + } + + @Override + public void setYBodyRot(float yBodyRot) { + this.setYRot(yBodyRot); + super.setYBodyRot(yBodyRot); + } + + @Override + public float getWalkTargetValue(BlockPos pos, LevelReader level) { + return isMergeHost(level.getBlockState(pos.below())) ? 10.0F : super.getWalkTargetValue(pos, level); + } + + public boolean isMerging() { + return this.mergeTicks > 0 && this.mergeTargetPos != null; + } + + private int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setAnimationState(int animationState) { + this.entityData.set(ANIMATION_STATE, animationState); + } + + private void startMerge(BlockPos targetPos) { + this.mergeTargetPos = targetPos.immutable(); + this.mergeTicks = DIG_ANIMATION_TICKS; + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + this.setAnimationState(ANIM_DIG); + } + + private void cancelMerge() { + this.mergeTargetPos = null; + this.mergeTicks = 0; + } + + private void completeMerge() { + BlockPos targetPos = this.mergeTargetPos; + this.cancelMerge(); + if (targetPos == null || !canMobGrief(this.level())) { + return; + } + + BlockState targetState = this.level().getBlockState(targetPos); + BlockState infestedState = infestedStateByHost(targetState); + if (infestedState == null) { + return; + } + + this.level().setBlock(targetPos, infestedState, 3); + this.spawnAnim(); + this.discard(); + } + + private void updateAnimationState() { + if (this.isDeadOrDying()) { + this.setAnimationState(ANIM_DEATH); + return; + } + + if (this.isMerging()) { + this.setAnimationState(ANIM_DIG); + return; + } + + Vec3 velocity = this.getDeltaMovement(); + if (velocity.horizontalDistanceSqr() > 1.0E-4D || this.walkAnimation.speed() > 0.02F) { + this.setAnimationState(ANIM_WALK); + return; + } + + this.setAnimationState(ANIM_IDLE); + } + + private static boolean isMergeHost(BlockState state) { + return state.is(Blocks.COARSE_DIRT) || state.is(Blocks.ROOTED_DIRT); + } + + private static boolean canMobGrief(Level level) { + return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + } + + private static boolean isInfestedDirt(BlockState state) { + return state.is(AntarchyObjects.INFESTED_COARSE_DIRT.get()) || state.is(AntarchyObjects.INFESTED_ROOTED_DIRT.get()); + } + + @Nullable + private static BlockState infestedStateByHost(BlockState state) { + if (state.is(Blocks.COARSE_DIRT)) { + return AntarchyObjects.INFESTED_COARSE_DIRT.get().defaultBlockState(); + } + if (state.is(Blocks.ROOTED_DIRT)) { + return AntarchyObjects.INFESTED_ROOTED_DIRT.get().defaultBlockState(); + } + return null; + } + + @Nullable + private static BlockState hostStateByInfested(BlockState state) { + if (state.is(AntarchyObjects.INFESTED_COARSE_DIRT.get())) { + return Blocks.COARSE_DIRT.defaultBlockState(); + } + if (state.is(AntarchyObjects.INFESTED_ROOTED_DIRT.get())) { + return Blocks.ROOTED_DIRT.defaultBlockState(); + } + return null; + } + + @Nullable + private static BlockPos findEmergencePos(Level level, BlockPos origin) { + BlockPos[] candidates = new BlockPos[] { + origin.above(), + origin.north(), + origin.south(), + origin.east(), + origin.west(), + origin.north().above(), + origin.south().above(), + origin.east().above(), + origin.west().above() + }; + + for (BlockPos candidate : candidates) { + BlockState state = level.getBlockState(candidate); + BlockState above = level.getBlockState(candidate.above()); + BlockState below = level.getBlockState(candidate.below()); + if (state.isAir() && above.isAir() && below.isFaceSturdy(level, candidate.below(), Direction.UP)) { + return candidate; + } + } + + return null; + } + + private static final class MergeWithDirtGoal extends RandomStrollGoal { + private final MolewormEntity moleworm; + @Nullable + private BlockPos mergePos; + private boolean doMerge; + + private MergeWithDirtGoal(MolewormEntity moleworm) { + super(moleworm, 1.0D, 10); + this.moleworm = moleworm; + this.setFlags(EnumSet.of(Goal.Flag.MOVE)); + } + + @Override + public boolean canUse() { + if (this.moleworm.isMerging() || this.mob.getTarget() != null || !this.mob.getNavigation().isDone()) { + return false; + } + + RandomSource random = this.mob.getRandom(); + if (canMobGrief(this.mob.level()) && random.nextInt(reducedTickDelay(10)) == 0) { + BlockPos candidate = this.mob.blockPosition().below(); + if (isMergeHost(this.mob.level().getBlockState(candidate))) { + this.mergePos = candidate; + this.doMerge = true; + return true; + } + } + + this.doMerge = false; + this.mergePos = null; + return super.canUse(); + } + + @Override + public boolean canContinueToUse() { + return this.doMerge ? this.moleworm.isMerging() : super.canContinueToUse(); + } + + @Override + public void start() { + if (!this.doMerge || this.mergePos == null) { + super.start(); + return; + } + + if (isMergeHost(this.moleworm.level().getBlockState(this.mergePos))) { + this.moleworm.startMerge(this.mergePos); + } else { + this.doMerge = false; + this.mergePos = null; + } + } + + @Override + public void stop() { + super.stop(); + this.doMerge = false; + this.mergePos = null; + } + } + + private static final class WakeUpFriendsGoal extends Goal { + private final MolewormEntity moleworm; + private int lookForFriends; + + private WakeUpFriendsGoal(MolewormEntity moleworm) { + this.moleworm = moleworm; + } + + public void notifyHurt() { + if (this.lookForFriends == 0) { + this.lookForFriends = this.adjustedTickDelay(20); + } + } + + @Override + public boolean canUse() { + return this.lookForFriends > 0; + } + + @Override + public void tick() { + this.lookForFriends--; + if (this.lookForFriends > 0) { + return; + } + + Level level = this.moleworm.level(); + RandomSource random = this.moleworm.getRandom(); + BlockPos origin = this.moleworm.blockPosition(); + + for (BlockPos friendPos : BlockPos.betweenClosed(origin.offset(-5, -3, -5), origin.offset(5, 3, 5))) { + BlockState friendState = level.getBlockState(friendPos); + if (!isInfestedDirt(friendState)) { + continue; + } + + if (canMobGrief(level)) { + releaseFriend(level, friendPos.immutable(), friendState, this.moleworm); + } else { + BlockState hostState = hostStateByInfested(friendState); + if (hostState != null) { + level.setBlock(friendPos, hostState, 3); + } + } + + if (random.nextBoolean()) { + return; + } + } + } + + private static void releaseFriend(Level level, BlockPos infestedPos, BlockState infestedState, MolewormEntity source) { + BlockState hostState = hostStateByInfested(infestedState); + if (hostState == null) { + return; + } + + BlockPos emergencePos = findEmergencePos(level, infestedPos); + if (!(source.getType().create(level) instanceof MolewormEntity friend)) { + level.setBlock(infestedPos, hostState, 3); + return; + } + + if (emergencePos == null) { + friend.discard(); + level.setBlock(infestedPos, hostState, 3); + return; + } + + friend.moveTo( + emergencePos.getX() + 0.5D, + emergencePos.getY() + 0.05D, + emergencePos.getZ() + 0.5D, + level.random.nextFloat() * 360.0F, + 0.0F + ); + + if (!level.noCollision(friend)) { + friend.discard(); + level.setBlock(infestedPos, hostState, 3); + return; + } + + level.setBlock(infestedPos, hostState, 3); + level.addFreshEntity(friend); + level.playSound(null, emergencePos, AntarchySoundEvents.MOLEWORM_DIG.get(), net.minecraft.sounds.SoundSource.BLOCKS, 0.45F, 0.8F + level.random.nextFloat() * 0.25F); + level.addParticle( + net.minecraft.core.particles.ParticleTypes.POOF, + infestedPos.getX() + 0.5D, + infestedPos.getY() + 0.45D, + infestedPos.getZ() + 0.5D, + 0.0D, + 0.0D, + 0.0D + ); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodBoatEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodBoatEntity.java new file mode 100644 index 00000000..990b7432 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodBoatEntity.java @@ -0,0 +1,21 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; + +public class OuranwoodBoatEntity extends Boat { + public OuranwoodBoatEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setVariant(Type.OAK); + } + + @Override + public Item getDropItem() { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ouranwood_boat")); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodChestBoatEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodChestBoatEntity.java new file mode 100644 index 00000000..f98da01f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodChestBoatEntity.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.entity.vehicle.ChestBoat; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; + +public class OuranwoodChestBoatEntity extends ChestBoat { + public OuranwoodChestBoatEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setVariant(Type.OAK); + } + + @Override + public Item getDropItem() { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ouranwood_chest_boat")); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java new file mode 100644 index 00000000..e921e142 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java @@ -0,0 +1,1242 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyAdvancements; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess; +import java.util.EnumSet; +import java.util.List; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.tags.DamageTypeTags; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.animal.FlyingAnimal; +import net.minecraft.world.entity.monster.Enemy; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEntity { + private static final EntityDataAccessor MOOD = + SynchedEntityData.defineId(ReverieEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor ANIMATION_STATE = + SynchedEntityData.defineId(ReverieEntity.class, EntityDataSerializers.INT); + private static final ResourceKey THORAXIS_DIMENSION = ResourceKey.create( + Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis") + ); + + private static final String FOCUS_PLAYER_KEY = "FocusPlayer"; + private static final String NOTICE_PLAYER_KEY = "NoticePlayer"; + private static final String MOOD_KEY = "Mood"; + private static final String NOTICE_TICKS_KEY = "NoticeTicks"; + private static final String INTEREST_TICKS_KEY = "InterestTicks"; + private static final String DAMAGE_REACTION_TICKS_KEY = "DamageReactionTicks"; + private static final String DUPLICATION_COOLDOWN_KEY = "DuplicationCooldownTicks"; + private static final String REBIND_COOLDOWN_TICKS_KEY = "RebindCooldownTicks"; + private static final ResourceLocation HEY_LISTEN_ADVANCEMENT = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hey_listen"); + private static final ResourceKey POISON_DAMAGE_TYPE = ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath("minecraft", "poison") + ); + + private static final int ANIM_IDLE = 0; + private static final int ANIM_FLY = 1; + private static final int PURPLE_SUPPORT_SCAN_RANGE = 7; + private static final int INVERSION_REACTION_TICKS = 200; + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + @Nullable private UUID focusPlayerUuid; + @Nullable private Player cachedFocusPlayer; + @Nullable private UUID noticedPlayerUuid; + @Nullable private Player cachedNoticedPlayer; + @Nullable private Vec3 ambientTarget; + + private int noticeTicks; + private int interestTicks; + private int damageReactionTicks; + private int duplicationCooldownTicks; + private int movementPulseCooldown; + private int ambientTargetAge; + private int warningCycleTicks; + private int rebindCooldownTicks; + private int inversionReactionTicks; + private boolean pendingJoinSound; + private Mood pendingMoodSound; + private int pendingMoodSoundTicks; + private boolean trackedFocusInverted; + private boolean trackedFocusInvertedInitialized; + + private int nextNoticeScanTick; + private int nextDuplicationScanTick; + private int nextThreatScanTick; + private int nextFallCheckTick; + private boolean cachedIsFallingDangerously; + @Nullable private LivingEntity cachedWarningThreat; + + private final double cfgInterestRadius; + private final double cfgAbandonDistance; + private final int cfgNoticeDuration; + private final int cfgInterestDuration; + private final int cfgRebindCooldown; + private final int cfgDuplicationCooldown; + private final double cfgDangerousFallSpeed; + private final double cfgDangerousFallDistance; + private final double cfgWarningThreatRadius; + private final double cfgWarningThreatVerticalRange; + private final int cfgWarningApproachTicks; + private final int cfgWarningHoverTicks; + private final int cfgWarningReturnTicks; + private final int cfgWarningPlayerHoverTicks; + private final double cfgCatchUpDistance; + private final double cfgFollowMinDistance; + private final double cfgFollowMaxDistance; + private final double cfgAmbientMinRadius; + private final double cfgAmbientMaxRadius; + private final double cfgAmbientVerticalRange; + private final int cfgAmbientMaxAgeTicks; + private final int cfgAmbientPulseMinTicks; + private final int cfgAmbientPulseMaxTicks; + + public ReverieEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 20, true); + this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); + this.setPathfindingMalus(PathType.WATER, -1.0F); + this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); + this.setPathfindingMalus(PathType.LEAVES, -1.0F); + this.setPathfindingMalus(PathType.FENCE, -1.0F); + this.xpReward = 0; + this.setNoGravity(true); + this.noPhysics = true; + this.cfgInterestRadius = AntarchySettings.reverieInterestRadius(); + this.cfgAbandonDistance = AntarchySettings.reverieAbandonPlayerDistance(); + this.cfgNoticeDuration = AntarchySettings.reverieNoticeDurationTicks(); + this.cfgInterestDuration = AntarchySettings.reverieInterestDurationTicks(); + this.cfgRebindCooldown = AntarchySettings.reverieRebindCooldownTicks(); + this.cfgDuplicationCooldown = AntarchySettings.reverieDuplicationCooldownTicks(); + this.cfgDangerousFallSpeed = AntarchySettings.reverieDangerousFallSpeed(); + this.cfgDangerousFallDistance = AntarchySettings.reverieDangerousFallDistance(); + this.cfgWarningThreatRadius = AntarchySettings.reverieWarningThreatRadius(); + this.cfgWarningThreatVerticalRange = AntarchySettings.reverieWarningThreatVerticalRange(); + this.cfgWarningApproachTicks = AntarchySettings.reverieWarningApproachTicks(); + this.cfgWarningHoverTicks = AntarchySettings.reverieWarningHoverTicks(); + this.cfgWarningReturnTicks = AntarchySettings.reverieWarningReturnTicks(); + this.cfgWarningPlayerHoverTicks = AntarchySettings.reverieWarningPlayerHoverTicks(); + this.cfgCatchUpDistance = AntarchySettings.reverieCatchUpDistance(); + this.cfgFollowMinDistance = AntarchySettings.reveriePreferredFollowMinDistance(); + this.cfgFollowMaxDistance = AntarchySettings.reveriePreferredFollowMaxDistance(); + this.cfgAmbientMinRadius = AntarchySettings.reverieAmbientTargetMinRadius(); + this.cfgAmbientMaxRadius = AntarchySettings.reverieAmbientTargetMaxRadius(); + this.cfgAmbientVerticalRange = AntarchySettings.reverieAmbientTargetVerticalRange(); + this.cfgAmbientMaxAgeTicks = AntarchySettings.reverieAmbientTargetMaxAgeTicks(); + this.cfgAmbientPulseMinTicks = AntarchySettings.reverieAmbientPulseIntervalMinTicks(); + this.cfgAmbientPulseMaxTicks = AntarchySettings.reverieAmbientPulseIntervalMaxTicks(); + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, AntarchySettings.reverieHealth()) + .add(Attributes.FLYING_SPEED, 0.45D) + .add(Attributes.MOVEMENT_SPEED, 0.2D) + .add(Attributes.FOLLOW_RANGE, 32.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return level.getLevel().dimension().equals(THORAXIS_DIMENSION) + && level.getBlockState(pos).isAir() + && level.getFluidState(pos).isEmpty() + && Mob.checkMobSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new ReverieBoundGoal()); + this.goalSelector.addGoal(2, new ReverieAmbientGoal()); + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation navigation = new FlyingPathNavigation(this, level) { + @Override + public boolean isStableDestination(BlockPos pos) { + return this.level.getBlockState(pos).isAir(); + } + }; + navigation.setCanOpenDoors(false); + navigation.setCanFloat(false); + navigation.setCanPassDoors(true); + return navigation; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(MOOD, Mood.WHITE.ordinal()); + builder.define(ANIMATION_STATE, ANIM_IDLE); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 2, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + return this.getAnimationState() == ANIM_IDLE + ? state.setAndContinue(IDLE_ANIM) + : state.setAndContinue(FLY_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + + if (this.level().isClientSide) { + this.tickClientEffects(); + return; + } + + if (this.duplicationCooldownTicks > 0) { + this.duplicationCooldownTicks--; + } + if (this.rebindCooldownTicks > 0) { + this.rebindCooldownTicks--; + } + if (this.damageReactionTicks > 0) { + this.damageReactionTicks--; + } + if (this.noticeTicks > 0) { + this.noticeTicks--; + } + if (this.movementPulseCooldown > 0) { + this.movementPulseCooldown--; + } + if (this.inversionReactionTicks > 0) { + this.inversionReactionTicks--; + } + this.tickPendingMoodSound(); + + this.tickNoticeAndFocus(); + this.tickInterestTimer(); + Player focus = this.getFocusPlayer(); + if (focus != null) { + this.syncFocusInversionState(focus); + } + this.tickMoodAndSupport(); + this.tickLookTarget(); + this.applyPassiveDriftDamping(); + this.updateAnimationState(); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.isImmuneToSource(source)) { + return false; + } + + boolean hurt = super.hurt(source, amount); + if (hurt && !this.level().isClientSide) { + this.releaseFocus(); + this.clearNoticePlayer(); + this.ambientTarget = null; + this.damageReactionTicks = 0; + this.inversionReactionTicks = 0; + this.transitionToMood(Mood.WHITE); + } + return hurt; + } + + private boolean isImmuneToSource(DamageSource source) { + return source.is(DamageTypeTags.IS_FIRE) + || source.is(DamageTypes.IN_WALL) + || source.is(DamageTypes.WITHER) + || source.is(POISON_DAMAGE_TYPE); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (stack.is(Items.GLASS_BOTTLE)) { + return this.captureIntoBottle(player, hand); + } + + if (!stack.is(AntarchyTags.Items.REVERIE_DUPLICATION_ITEMS)) { + return super.mobInteract(player, hand); + } + + if (this.level().isClientSide) { + return InteractionResult.SUCCESS; + } + + if (!(this.level() instanceof ServerLevel serverLevel)) { + return InteractionResult.PASS; + } + + if (this.duplicationCooldownTicks > 0) { + return InteractionResult.CONSUME; + } + + ReverieEntity duplicate = AntarchyObjects.REVERIE.get().create(serverLevel); + if (duplicate == null) { + return InteractionResult.PASS; + } + + duplicate.moveTo( + this.getX() + (this.random.nextDouble() - 0.5D) * 1.5D, + this.getY() + 0.25D, + this.getZ() + (this.random.nextDouble() - 0.5D) * 1.5D, + this.getYRot(), + this.getXRot() + ); + duplicate.setDeltaMovement(this.getDeltaMovement().scale(0.25D).add(0.0D, 0.08D, 0.0D)); + serverLevel.addFreshEntity(duplicate); + this.duplicationCooldownTicks = this.cfgDuplicationCooldown; + duplicate.duplicationCooldownTicks = this.cfgDuplicationCooldown; + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + return InteractionResult.CONSUME; + } + + private InteractionResult captureIntoBottle(Player player, InteractionHand hand) { + if (this.level().isClientSide) { + return InteractionResult.SUCCESS; + } + + if (!(this.level() instanceof ServerLevel serverLevel)) { + return InteractionResult.PASS; + } + + ItemStack reverieBottle = new ItemStack(AntarchyObjects.REVERIE_BOTTLE.get()); + CompoundTag tag = new CompoundTag(); + this.saveWithoutId(tag); + tag.remove("UUID"); + tag.remove("Pos"); + tag.remove("Motion"); + tag.remove("Rotation"); + tag.remove("FallDistance"); + tag.remove("OnGround"); + tag.remove("Dimension"); + tag.remove("Passengers"); + tag.remove("PortalCooldown"); + + CustomData.update(DataComponents.CUSTOM_DATA, reverieBottle, customData -> customData.put("StoredReverie", tag)); + if (this.hasCustomName()) { + reverieBottle.set(DataComponents.CUSTOM_NAME, this.getCustomName()); + } + + ItemStack heldStack = player.getItemInHand(hand); + if (player.getAbilities().instabuild || heldStack.getCount() <= 1) { + player.setItemInHand(hand, reverieBottle); + } else { + heldStack.shrink(1); + if (!player.getInventory().add(reverieBottle)) { + player.drop(reverieBottle, false); + } + } + + serverLevel.playSound(null, this.blockPosition(), net.minecraft.sounds.SoundEvents.BOTTLE_FILL, net.minecraft.sounds.SoundSource.PLAYERS, 1.0F, 1.0F); + this.discard(); + return InteractionResult.CONSUME; + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + protected void checkFallDamage(double distance, boolean onGround, BlockState state, BlockPos pos) { + } + + @Override + protected void jumpInLiquid(net.minecraft.tags.TagKey fluidTag) { + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, 0.01D, 0.0D)); + } + + @Override + public boolean isFlying() { + return !this.onGround(); + } + + @Override + public boolean isPushable() { + return false; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return this.getFocusPlayer() == null && super.removeWhenFarAway(distanceToClosestPlayer); + } + + public Mood getMood() { + return Mood.byOrdinal(this.entityData.get(MOOD)); + } + + public boolean isPurpleMood() { + return this.getMood() == Mood.PURPLE; + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.REVERIE_IDLE.get(); + } + + @Override + public int getAmbientSoundInterval() { + return super.getAmbientSoundInterval() * 4; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.REVERIE_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return null; + } + + @Override + public float getWalkTargetValue(BlockPos pos, LevelReader level) { + return level.getBlockState(pos).isAir() ? 10.0F : 0.0F; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(MOOD_KEY, this.getMood().ordinal()); + tag.putInt(NOTICE_TICKS_KEY, this.noticeTicks); + tag.putInt(INTEREST_TICKS_KEY, this.interestTicks); + tag.putInt(DAMAGE_REACTION_TICKS_KEY, this.damageReactionTicks); + tag.putInt(DUPLICATION_COOLDOWN_KEY, this.duplicationCooldownTicks); + tag.putInt(REBIND_COOLDOWN_TICKS_KEY, this.rebindCooldownTicks); + if (this.focusPlayerUuid != null) { + tag.putUUID(FOCUS_PLAYER_KEY, this.focusPlayerUuid); + } + if (this.noticedPlayerUuid != null) { + tag.putUUID(NOTICE_PLAYER_KEY, this.noticedPlayerUuid); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.setMoodRaw(Mood.byOrdinal(tag.getInt(MOOD_KEY))); + this.noticeTicks = tag.getInt(NOTICE_TICKS_KEY); + this.interestTicks = tag.getInt(INTEREST_TICKS_KEY); + this.damageReactionTicks = tag.getInt(DAMAGE_REACTION_TICKS_KEY); + this.duplicationCooldownTicks = tag.getInt(DUPLICATION_COOLDOWN_KEY); + this.rebindCooldownTicks = tag.getInt(REBIND_COOLDOWN_TICKS_KEY); + this.focusPlayerUuid = tag.hasUUID(FOCUS_PLAYER_KEY) ? tag.getUUID(FOCUS_PLAYER_KEY) : null; + this.noticedPlayerUuid = tag.hasUUID(NOTICE_PLAYER_KEY) ? tag.getUUID(NOTICE_PLAYER_KEY) : null; + this.cachedFocusPlayer = null; + this.cachedNoticedPlayer = null; + } + + private void tickNoticeAndFocus() { + Player shardHolder = this.findDuplicationItemHolder(); + if (shardHolder != null) { + boolean wasDifferentFocus = this.getFocusPlayer() == null || !shardHolder.getUUID().equals(this.focusPlayerUuid); + this.setFocusPlayer(shardHolder); + this.clearNoticePlayer(); + this.warningCycleTicks = 0; + this.interestTicks = this.cfgInterestDuration; + this.pendingJoinSound = wasDifferentFocus; + if (wasDifferentFocus) { + this.awardJoinAdvancement(shardHolder); + } + this.transitionToMood(Mood.YELLOW); + return; + } + + Player focus = this.getFocusPlayer(); + if (focus != null && !this.isValidBoundPlayer(focus)) { + this.releaseFocus(); + focus = null; + } + + if (focus != null) { + this.clearNoticePlayer(); + return; + } + + Player noticed = this.getNoticedPlayer(); + if (!this.isValidNoticePlayer(noticed)) { + this.clearNoticePlayer(); + noticed = null; + } + + if (noticed == null) { + if (this.rebindCooldownTicks > 0) { + this.clearNoticePlayer(); + return; + } + Player nearby = this.findNoticeCandidate(); + if (nearby != null) { + this.setNoticedPlayer(nearby); + this.noticeTicks = this.cfgNoticeDuration; + } + return; + } + + if (this.noticeTicks <= 0) { + boolean wasUnbound = this.getFocusPlayer() == null; + this.setFocusPlayer(noticed); + this.clearNoticePlayer(); + this.warningCycleTicks = 0; + this.pendingJoinSound = wasUnbound; + if (wasUnbound) { + this.awardJoinAdvancement(noticed); + } + this.transitionToMood(Mood.YELLOW); + } + } + + private void tickInterestTimer() { + if (this.getFocusPlayer() == null) { + this.interestTicks = 0; + return; + } + + if (this.interestTicks > 0) { + this.interestTicks--; + } + + if (this.interestTicks <= 0) { + this.releaseFocus(); + this.transitionToMood(Mood.WHITE); + } + } + + private void tickMoodAndSupport() { + Player focus = this.getFocusPlayer(); + Mood desiredMood = this.getDesiredMood(focus); + this.transitionToMood(desiredMood); + + if (desiredMood == Mood.RED) { + this.warningCycleTicks++; + } else { + this.warningCycleTicks = 0; + } + + if (desiredMood == Mood.PURPLE && focus != null && !this.shouldSuppressSlowFalling(focus)) { + focus.addEffect(new MobEffectInstance(MobEffects.SLOW_FALLING, 100, 0, false, true, true)); + } + } + + private Mood getDesiredMood(@Nullable Player focus) { + if (focus == null) { + return Mood.WHITE; + } + if (this.shouldSuppressSlowFalling(focus)) { + if (this.isPlayerTakingDamage(focus)) { + return Mood.BLUE; + } + if (this.damageReactionTicks > 0 || this.findWarningThreat(focus) != null) { + return Mood.RED; + } + return Mood.YELLOW; + } + if (this.inversionReactionTicks > 0) { + return Mood.PURPLE; + } + if (this.isPlayerInDangerousFall(focus)) { + return Mood.PURPLE; + } + if (this.isPlayerTakingDamage(focus)) { + return Mood.BLUE; + } + if (this.damageReactionTicks > 0 || this.findWarningThreat(focus) != null) { + return Mood.RED; + } + return Mood.YELLOW; + } + + private boolean isPlayerTakingDamage(Player focus) { + return focus.hurtTime > 0 || focus.invulnerableTime > 0; + } + + private boolean shouldSuppressSlowFalling(Player focus) { + return focus.isFallFlying() + || focus.getAbilities().flying + || focus.getItemBySlot(EquipmentSlot.CHEST).is(Items.ELYTRA); + } + + private boolean isPlayerCurrentlyFallingDangerously(Player focus) { + if (this.tickCount < this.nextFallCheckTick) { + return this.cachedIsFallingDangerously; + } + this.nextFallCheckTick = this.tickCount + 5; + this.cachedIsFallingDangerously = this.checkIsFallingDangerously(focus); + return this.cachedIsFallingDangerously; + } + + private boolean checkIsFallingDangerously(Player focus) { + if (focus.onGround() || focus.onClimbable() || focus.isFallFlying() || focus.isPassenger()) { + return false; + } + if (this.isPlayerInsideAntiwater(focus)) { + return false; + } + if (focus instanceof DreamSandLowGravityAccess access && access.antarchy$getDreamSandLandingGraceTicks() > 0) { + return false; + } + + AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(focus); + Vec3 localMotion = AntarchyGravityRotationUtil.vecWorldToPlayer(focus.getDeltaMovement(), gravityDirection); + double descentThreshold = Math.max(0.02D, this.cfgDangerousFallSpeed); + boolean invertedGravity = gravityDirection.isInverted(); + if (invertedGravity ? localMotion.y < descentThreshold : localMotion.y > -descentThreshold) { + return false; + } + + return this.getDangerousFallSupportDistance(focus) >= this.cfgDangerousFallDistance; + } + + private void tickLookTarget() { + Player focus = this.getFocusPlayer(); + if (focus != null) { + this.getLookControl().setLookAt(focus, 30.0F, 30.0F); + return; + } + + Player noticed = this.getNoticedPlayer(); + if (noticed != null) { + this.getLookControl().setLookAt(noticed, 30.0F, 30.0F); + } + } + + private void applyPassiveDriftDamping() { + Vec3 motion = this.getDeltaMovement(); + double damping = this.getMood() == Mood.RED ? 0.88D : 0.82D; + if (motion.lengthSqr() < 1.0E-4D) { + this.setDeltaMovement(Vec3.ZERO); + return; + } + this.setDeltaMovement(motion.scale(damping)); + } + + private void updateAnimationState() { + Vec3 delta = this.getDeltaMovement(); + this.setAnimationState(delta.lengthSqr() > 0.01D ? ANIM_FLY : ANIM_IDLE); + } + + private int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setAnimationState(int state) { + if (this.getAnimationState() != state) { + this.entityData.set(ANIMATION_STATE, state); + } + } + + private void transitionToMood(Mood mood) { + Mood current = this.getMood(); + if (current == mood) { + return; + } + + this.setMoodRaw(mood); + if (mood == Mood.BLUE || mood == Mood.PURPLE || mood == Mood.RED) { + this.queueMoodSound(mood); + } else if (mood != Mood.YELLOW || this.pendingJoinSound) { + this.playMoodSound(mood); + } + if (mood == Mood.YELLOW) { + this.pendingJoinSound = false; + } + if (this.getFocusPlayer() != null && mood != Mood.WHITE) { + this.interestTicks = this.cfgInterestDuration; + } + } + + public void syncFocusInversionState() { + Player focus = this.getFocusPlayer(); + if (focus == null) { + this.trackedFocusInvertedInitialized = false; + return; + } + + this.syncFocusInversionState(focus); + } + + private void syncFocusInversionState(Player focus) { + boolean inverted = focus.hasEffect(AntarchyObjects.INVERTED_EFFECT.get()); + if (!this.trackedFocusInvertedInitialized) { + this.trackedFocusInverted = inverted; + this.trackedFocusInvertedInitialized = true; + return; + } + + if (!this.trackedFocusInverted && inverted) { + this.trackedFocusInverted = inverted; + this.triggerInversionReaction(focus); + return; + } + + this.trackedFocusInverted = inverted; + } + + private void triggerInversionReaction(Player focus) { + if (this.shouldSuppressSlowFalling(focus)) { + return; + } + this.inversionReactionTicks = INVERSION_REACTION_TICKS; + this.transitionToMood(Mood.PURPLE); + focus.addEffect(new MobEffectInstance(MobEffects.SLOW_FALLING, INVERSION_REACTION_TICKS, 0, false, true, true)); + } + + private void playMoodSound(Mood mood) { + SoundEvent sound = switch (mood) { + case WHITE -> null; + case YELLOW -> AntarchySoundEvents.REVERIE_JOIN_PLAYER.get(); + case BLUE -> AntarchySoundEvents.REVERIE_WORRY.get(); + case PURPLE -> AntarchySoundEvents.REVERIE_SAVE.get(); + case RED -> AntarchySoundEvents.REVERIE_ALERT.get(); + }; + if (sound != null) { + this.playSound(sound, 0.9F, 0.95F + this.random.nextFloat() * 0.1F); + } + } + + private void queueMoodSound(Mood mood) { + this.pendingMoodSound = mood; + this.pendingMoodSoundTicks = 2 + this.random.nextInt(7); + } + + private void tickPendingMoodSound() { + if (this.pendingMoodSound == null) { + return; + } + + if (this.pendingMoodSoundTicks > 0) { + this.pendingMoodSoundTicks--; + return; + } + + this.playMoodSound(this.pendingMoodSound); + this.pendingMoodSound = null; + } + + private void setMoodRaw(Mood mood) { + this.entityData.set(MOOD, mood.ordinal()); + } + + private void tickClientEffects() { + } + + @Nullable + private Player getFocusPlayer() { + if (this.cachedFocusPlayer != null && this.cachedFocusPlayer.isAlive() && this.cachedFocusPlayer.getUUID().equals(this.focusPlayerUuid)) { + return this.cachedFocusPlayer; + } + if (this.focusPlayerUuid == null) { + this.cachedFocusPlayer = null; + return null; + } + if (this.level() instanceof ServerLevel serverLevel) { + this.cachedFocusPlayer = serverLevel.getPlayerByUUID(this.focusPlayerUuid); + return this.cachedFocusPlayer; + } + return null; + } + + private void setFocusPlayer(@Nullable Player player) { + this.cachedFocusPlayer = player; + this.focusPlayerUuid = player != null ? player.getUUID() : null; + this.trackedFocusInvertedInitialized = false; + } + + private void clearFocusState() { + this.setFocusPlayer(null); + this.interestTicks = 0; + this.warningCycleTicks = 0; + this.inversionReactionTicks = 0; + this.pendingJoinSound = false; + this.pendingMoodSound = null; + this.pendingMoodSoundTicks = 0; + this.trackedFocusInvertedInitialized = false; + } + + private void awardJoinAdvancement(Player player) { + if (player instanceof ServerPlayer serverPlayer) { + AntarchyAdvancements.award(serverPlayer, HEY_LISTEN_ADVANCEMENT); + } + } + + private void releaseFocus() { + this.clearFocusState(); + this.rebindCooldownTicks = this.cfgRebindCooldown; + } + + @Nullable + private Player getNoticedPlayer() { + if (this.cachedNoticedPlayer != null && this.cachedNoticedPlayer.isAlive() && this.cachedNoticedPlayer.getUUID().equals(this.noticedPlayerUuid)) { + return this.cachedNoticedPlayer; + } + if (this.noticedPlayerUuid == null) { + this.cachedNoticedPlayer = null; + return null; + } + if (this.level() instanceof ServerLevel serverLevel) { + this.cachedNoticedPlayer = serverLevel.getPlayerByUUID(this.noticedPlayerUuid); + return this.cachedNoticedPlayer; + } + return null; + } + + private void setNoticedPlayer(@Nullable Player player) { + this.cachedNoticedPlayer = player; + this.noticedPlayerUuid = player != null ? player.getUUID() : null; + } + + private void clearNoticePlayer() { + this.setNoticedPlayer(null); + this.noticeTicks = 0; + } + + @Nullable + private Player findNoticeCandidate() { + if (this.tickCount < this.nextNoticeScanTick) { + return null; + } + this.nextNoticeScanTick = this.tickCount + 20; + List nearbyPlayers = this.level().getEntitiesOfClass( + Player.class, + this.getBoundingBox().inflate(this.cfgInterestRadius) + ); + + Player nearest = null; + double nearestDistanceSqr = Double.MAX_VALUE; + for (Player player : nearbyPlayers) { + if (!this.isValidNoticePlayer(player)) { + continue; + } + double distanceSqr = this.distanceToSqr(player); + if (distanceSqr < nearestDistanceSqr) { + nearest = player; + nearestDistanceSqr = distanceSqr; + } + } + return nearest; + } + + @Nullable + private Player findDuplicationItemHolder() { + if (this.tickCount < this.nextDuplicationScanTick) { + return null; + } + this.nextDuplicationScanTick = this.tickCount + 20; + List nearbyPlayers = this.level().getEntitiesOfClass( + Player.class, + this.getBoundingBox().inflate(this.cfgInterestRadius) + ); + + Player nearest = null; + double nearestDistanceSqr = Double.MAX_VALUE; + for (Player player : nearbyPlayers) { + if (!this.isValidBoundPlayer(player) || !this.isHoldingDuplicationItem(player)) { + continue; + } + + double distanceSqr = this.distanceToSqr(player); + if (distanceSqr < nearestDistanceSqr) { + nearest = player; + nearestDistanceSqr = distanceSqr; + } + } + return nearest; + } + + private boolean isValidNoticePlayer(@Nullable Player player) { + double maxDistance = this.cfgInterestRadius; + return player != null + && player.isAlive() + && !player.isSpectator() + && !player.isCreative() + && this.distanceToSqr(player) <= maxDistance * maxDistance; + } + + private boolean isHoldingDuplicationItem(Player player) { + return player.getMainHandItem().is(AntarchyTags.Items.REVERIE_DUPLICATION_ITEMS) + || player.getOffhandItem().is(AntarchyTags.Items.REVERIE_DUPLICATION_ITEMS); + } + + private boolean isValidBoundPlayer(@Nullable Player player) { + double maxDistance = this.cfgAbandonDistance; + return player != null + && player.isAlive() + && !player.isSpectator() + && !player.isCreative() + && this.distanceToSqr(player) <= maxDistance * maxDistance; + } + + @Nullable + private LivingEntity findWarningThreat(Player focus) { + LivingEntity lastAttacker = this.getLastHurtByMob(); + if (this.damageReactionTicks > 0 && this.isValidThreat(lastAttacker, focus)) { + this.cachedWarningThreat = lastAttacker; + return this.cachedWarningThreat; + } + + if (this.tickCount < this.nextThreatScanTick) { + return this.cachedWarningThreat != null && this.cachedWarningThreat.isAlive() ? this.cachedWarningThreat : null; + } + + this.nextThreatScanTick = this.tickCount + 10; + AABB threatArea = focus.getBoundingBox().inflate(this.cfgWarningThreatRadius, this.cfgWarningThreatVerticalRange, this.cfgWarningThreatRadius); + List threats = this.level().getEntitiesOfClass(LivingEntity.class, threatArea, entity -> this.isValidThreat(entity, focus)); + + LivingEntity prioritized = null; + double prioritizedDistance = Double.MAX_VALUE; + LivingEntity fallback = null; + double fallbackDistance = Double.MAX_VALUE; + for (LivingEntity threat : threats) { + double distance = focus.distanceToSqr(threat); + if (threat.getLastHurtMob() == focus || (threat instanceof Mob mob && mob.getTarget() == focus)) { + if (distance < prioritizedDistance) { + prioritized = threat; + prioritizedDistance = distance; + } + } + if (distance < fallbackDistance) { + fallback = threat; + fallbackDistance = distance; + } + } + this.cachedWarningThreat = prioritized != null ? prioritized : fallback; + return this.cachedWarningThreat; + } + + private boolean isValidThreat(@Nullable LivingEntity entity, Player focus) { + return entity != null + && entity.isAlive() + && entity != this + && entity != focus + && entity instanceof Enemy; + } + + private boolean isPlayerInDangerousFall(Player focus) { + return this.isPlayerCurrentlyFallingDangerously(focus); + } + + private int getDangerousFallSupportDistance(Player focus) { + int scanRange = Math.max(PURPLE_SUPPORT_SCAN_RANGE, Mth.ceil(this.cfgDangerousFallDistance) + 2); + return this.getGravitySupportDistance(focus, scanRange); + } + + private int getGravitySupportDistance(Player focus, int maxDistanceBlocks) { + Direction gravityDown = AntarchyGravityRotationUtil.getGravityDownDirection(focus); + Direction supportFace = gravityDown.getOpposite(); + BlockPos cursor = focus.blockPosition(); + for (int distance = 1; distance <= maxDistanceBlocks; distance++) { + cursor = cursor.relative(gravityDown); + BlockState supportState = this.level().getBlockState(cursor); + if (supportState.isFaceSturdy(this.level(), cursor, supportFace)) { + return distance; + } + } + return -1; + } + + private boolean isPlayerInsideAntiwater(Player focus) { + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + BlockPos min = focus.blockPosition().offset(-1, 0, -1); + BlockPos max = focus.blockPosition().offset(1, 2, 1); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + if (PotentNyxiteBlock.isAntiwater(this.level().getFluidState(cursor))) { + return true; + } + } + } + } + return false; + } + + private Vec3 getOrbitTarget(Player focus) { + double desiredMin = Math.min(this.cfgFollowMinDistance, this.cfgFollowMaxDistance); + double desiredMax = Math.max(this.cfgFollowMinDistance, this.cfgFollowMaxDistance); + double orbitTime = (this.tickCount * 0.08D) + (this.getId() * 0.53D); + double distance = this.distanceTo(focus); + double orbitBlend = Mth.clamp((distance - desiredMin) / Math.max(0.001D, desiredMax - desiredMin), 0.0D, 1.0D); + double radius = Mth.lerp(1.0D - orbitBlend, desiredMin * 0.35D, desiredMax * 0.85D); + Vec3 tetherAnchor = focus.position().add(focus.getDeltaMovement().scale(0.75D)); + double angle = orbitTime * (this.getId() % 2 == 0 ? 1.0D : -1.0D); + double verticalOffset = AntarchyGravityApi.isGravityInverted(focus) ? -2.15D : 1.15D; + double y = tetherAnchor.y + verticalOffset + Math.sin(orbitTime * 0.8D) * 0.2D; + return new Vec3( + tetherAnchor.x + Math.cos(angle) * radius, + Mth.clamp(y, this.level().getMinBuildHeight() + 2.0D, this.level().getMaxBuildHeight() - 2.0D), + tetherAnchor.z + Math.sin(angle) * radius + ); + } + + private Vec3 getPurpleProtectTarget(Player focus) { + double verticalOffset = AntarchyGravityApi.isGravityInverted(focus) ? -0.95D : 0.95D; + Vec3 tetherAnchor = focus.position().add(focus.getDeltaMovement().scale(0.85D)); + Vec3 sideOffset = Vec3.directionFromRotation(0.0F, focus.getYRot() + 90.0F).scale(0.45D); + return new Vec3( + tetherAnchor.x + sideOffset.x, + Mth.clamp(tetherAnchor.y + verticalOffset, this.level().getMinBuildHeight() + 2.0D, this.level().getMaxBuildHeight() - 2.0D), + tetherAnchor.z + sideOffset.z + ); + } + + private Vec3 getWarningTarget(Player focus, LivingEntity threat) { + int approachTicks = this.cfgWarningApproachTicks; + int hoverTicks = this.cfgWarningHoverTicks; + int returnTicks = this.cfgWarningReturnTicks; + int playerHoverTicks = this.cfgWarningPlayerHoverTicks; + int phaseLength = approachTicks + hoverTicks + returnTicks + playerHoverTicks; + int phase = this.warningCycleTicks % Math.max(1, phaseLength); + if (phase < approachTicks) { + return threat.position().add(0.0D, threat.getBbHeight() * 0.65D, 0.0D); + } + if (phase < approachTicks + hoverTicks) { + return threat.position().add(0.0D, threat.getBbHeight() * 1.05D, 0.0D); + } + if (phase < approachTicks + hoverTicks + returnTicks) { + return this.getOrbitTarget(focus); + } + return focus.position().add(0.0D, 1.8D, 0.0D); + } + + private double getWarningSpeed(Player focus) { + return this.distanceTo(focus) > this.cfgCatchUpDistance ? 0.42D : 0.34D; + } + + private void pulseToward(Vec3 target, double impulse, double maxSpeed, int pulseInterval) { + Vec3 toTarget = target.subtract(this.position()); + double distance = toTarget.length(); + if (distance < 0.08D) { + return; + } + + if (this.movementPulseCooldown > 0 && distance < 1.25D && maxSpeed < 0.5D) { + return; + } + + Vec3 direction = toTarget.scale(1.0D / distance); + Vec3 nextMotion = this.getDeltaMovement().scale(0.55D).add(direction.scale(Math.min(impulse, 0.1D + distance * 0.08D))); + if (nextMotion.lengthSqr() > maxSpeed * maxSpeed) { + nextMotion = nextMotion.normalize().scale(maxSpeed); + } + + this.setDeltaMovement(nextMotion); + this.hasImpulse = true; + this.movementPulseCooldown = pulseInterval; + } + + private Vec3 pickAmbientTarget() { + double angle = this.random.nextDouble() * (Math.PI * 2.0D); + double maxRadius = Math.max(this.cfgAmbientMinRadius, this.cfgAmbientMaxRadius); + double radius = this.cfgAmbientMinRadius + this.random.nextDouble() * Math.max(0.0D, maxRadius - this.cfgAmbientMinRadius); + double vertical = (this.random.nextDouble() - 0.5D) * this.cfgAmbientVerticalRange; + return new Vec3( + this.getX() + Math.cos(angle) * radius, + Mth.clamp(this.getY() + vertical, this.level().getMinBuildHeight() + 2.0D, this.level().getMaxBuildHeight() - 2.0D), + this.getZ() + Math.sin(angle) * radius + ); + } + + public enum Mood { + YELLOW, + BLUE, + PURPLE, + RED, + WHITE; + + private static final Mood[] VALUES = values(); + + private static Mood byOrdinal(int ordinal) { + if (ordinal < 0 || ordinal >= VALUES.length) { + return WHITE; + } + return VALUES[ordinal]; + } + } + + private final class ReverieBoundGoal extends Goal { + private ReverieBoundGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + @Override + public boolean canUse() { + return ReverieEntity.this.getFocusPlayer() != null; + } + + @Override + public boolean canContinueToUse() { + return ReverieEntity.this.getFocusPlayer() != null; + } + + @Override + public boolean requiresUpdateEveryTick() { + return true; + } + + @Override + public void tick() { + Player focus = ReverieEntity.this.getFocusPlayer(); + if (focus == null) { + return; + } + + Mood mood = ReverieEntity.this.getMood(); + double distance = ReverieEntity.this.distanceTo(focus); + double catchUpDistance = ReverieEntity.this.cfgCatchUpDistance; + boolean urgentCatchUp = distance > catchUpDistance; + if (mood == Mood.PURPLE) { + Vec3 target = ReverieEntity.this.getPurpleProtectTarget(focus); + ReverieEntity.this.pulseToward(target, urgentCatchUp ? 0.72D : 0.48D, urgentCatchUp ? 1.20D : 0.85D, 1); + return; + } + + if (mood == Mood.RED) { + LivingEntity threat = ReverieEntity.this.findWarningThreat(focus); + Vec3 target = threat != null + ? ReverieEntity.this.getWarningTarget(focus, threat) + : ReverieEntity.this.getOrbitTarget(focus); + ReverieEntity.this.pulseToward(target, urgentCatchUp ? 0.45D : 0.24D, urgentCatchUp ? 1.05D : ReverieEntity.this.getWarningSpeed(focus), urgentCatchUp ? 1 : 5); + return; + } + + Vec3 orbitTarget = ReverieEntity.this.getOrbitTarget(focus); + double desiredMax = Math.max(ReverieEntity.this.cfgFollowMinDistance, ReverieEntity.this.cfgFollowMaxDistance); + boolean worried = mood == Mood.BLUE; + if (worried && distance <= desiredMax && !focus.hasEffect(MobEffects.DAMAGE_RESISTANCE)) { + focus.addEffect(new MobEffectInstance(MobEffects.DAMAGE_RESISTANCE, 60, 0, false, true, true)); + } + double impulse = urgentCatchUp ? 0.56D : (worried ? 0.32D : (distance > desiredMax ? 0.24D : 0.18D)); + double maxSpeed = urgentCatchUp ? 1.05D : (worried ? 0.68D : (distance > desiredMax ? 0.50D : 0.32D)); + int pulseInterval = urgentCatchUp ? 1 : (worried ? 2 : (distance > desiredMax ? 3 : 5)); + ReverieEntity.this.pulseToward(orbitTarget, impulse, maxSpeed, pulseInterval); + } + } + + private final class ReverieAmbientGoal extends Goal { + private ReverieAmbientGoal() { + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + public boolean canUse() { + return ReverieEntity.this.getFocusPlayer() == null; + } + + @Override + public boolean canContinueToUse() { + return ReverieEntity.this.getFocusPlayer() == null; + } + + @Override + public boolean requiresUpdateEveryTick() { + return true; + } + + @Override + public void tick() { + if (ReverieEntity.this.getNoticedPlayer() != null) { + ReverieEntity.this.ambientTarget = null; + ReverieEntity.this.ambientTargetAge = 0; + return; + } + + if (ReverieEntity.this.ambientTarget == null + || ReverieEntity.this.ambientTarget.distanceTo(ReverieEntity.this.position()) < 0.8D + || ReverieEntity.this.ambientTargetAge++ > ReverieEntity.this.cfgAmbientMaxAgeTicks) { + ReverieEntity.this.ambientTarget = ReverieEntity.this.pickAmbientTarget(); + ReverieEntity.this.ambientTargetAge = 0; + } + + int minInterval = ReverieEntity.this.cfgAmbientPulseMinTicks; + int maxInterval = Math.max(minInterval, ReverieEntity.this.cfgAmbientPulseMaxTicks); + ReverieEntity.this.pulseToward( + ReverieEntity.this.ambientTarget, + 0.14D, + 0.18D, + minInterval + ReverieEntity.this.random.nextInt(Math.max(1, maxInterval - minInterval + 1)) + ); + } + } +} + diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java new file mode 100644 index 00000000..16999635 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java @@ -0,0 +1,262 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.RandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; +import org.jetbrains.annotations.Nullable; + +public class ScorpionEntity extends Monster implements GeoEntity { + private static final byte ATTACK_ANIM_EVENT = 4; + + private static final int ATTACK_ANIM_TICKS = 12; + private static final int ATTACK_HIT_TICK = 6; + private static final int ATTACK_COOLDOWN_TICKS = 16; + private static final int POISON_DURATION_TICKS = 80; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("Idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + private int attackAnimTicks = 0; + private int attackCooldownTicks = 0; + private boolean attackDamageApplied = false; + @Nullable private LivingEntity attackTarget; + + public ScorpionEntity(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 5; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 30.0D) + .add(Attributes.MOVEMENT_SPEED, 0.29D) + .add(Attributes.ATTACK_DAMAGE, 5.0D) + .add(Attributes.FOLLOW_RANGE, 24.0D) + .add(Attributes.ARMOR, 2.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.2D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, + MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG + || spawnReason == MobSpawnType.SPAWNER + || spawnReason == MobSpawnType.COMMAND) { + return true; + } + return level.getDifficulty() != Difficulty.PEACEFUL + && Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new ScorpionMeleeAttackGoal()); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, 0.8D)); + this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public void tick() { + super.tick(); + if (this.attackCooldownTicks > 0) { + this.attackCooldownTicks--; + } + if (this.attackAnimTicks > 0) { + if (!this.level().isClientSide) { + this.tickAttackWindup(); + } + this.attackAnimTicks--; + if (this.attackAnimTicks <= 0) { + this.resetAttackState(); + } + } + } + + @Override + public boolean doHurtTarget(net.minecraft.world.entity.Entity target) { + boolean hurt = super.doHurtTarget(target); + if (hurt && target instanceof LivingEntity living) { + int duration = this.level().getDifficulty() == Difficulty.HARD + ? POISON_DURATION_TICKS * 2 + : POISON_DURATION_TICKS; + living.addEffect(new MobEffectInstance(MobEffects.POISON, duration, 0)); + this.playSound(AntarchySoundEvents.SCORPION_ATTACK.get(), 0.65F, 0.95F + this.random.nextFloat() * 0.1F); + } + return hurt; + } + + private void beginAttack(LivingEntity target) { + this.attackTarget = target; + this.attackAnimTicks = ATTACK_ANIM_TICKS; + this.attackCooldownTicks = ATTACK_COOLDOWN_TICKS; + this.attackDamageApplied = false; + this.getNavigation().stop(); + this.level().broadcastEntityEvent(this, ATTACK_ANIM_EVENT); + this.commitLunge(target, 0.48D, 0.12D); + } + + private void tickAttackWindup() { + if (this.attackTarget == null || !this.attackTarget.isAlive()) { + this.resetAttackState(); + return; + } + + this.getLookControl().setLookAt(this.attackTarget, 30.0F, 30.0F); + if (!this.attackDamageApplied + && this.attackAnimTicks == ATTACK_HIT_TICK + && this.distanceToSqr(this.attackTarget) <= this.getAttackReachSqr(this.attackTarget)) { + this.attackDamageApplied = true; + this.doHurtTarget(this.attackTarget); + } + + if (this.attackAnimTicks <= 0) { + this.resetAttackState(); + } + } + + private double getAttackReachSqr(LivingEntity target) { + double reach = this.getBbWidth() * 1.7D + target.getBbWidth(); + return reach * reach + 1.0D; + } + + private void resetAttackState() { + this.attackAnimTicks = 0; + this.attackDamageApplied = false; + this.attackTarget = null; + } + + private void commitLunge(LivingEntity target, double horizontalSpeed, double verticalSpeed) { + Vec3 lunge = target.position().subtract(this.position()); + Vec3 horizontal = new Vec3(lunge.x, 0.0D, lunge.z); + if (horizontal.lengthSqr() < 1.0E-4D) { + return; + } + horizontal = horizontal.normalize().scale(horizontalSpeed); + this.setDeltaMovement(this.getDeltaMovement().add(horizontal.x, verticalSpeed, horizontal.z)); + this.hasImpulse = true; + } + + private boolean isAttackLocked() { + return this.attackAnimTicks > 0; + } + + @Override + public void handleEntityEvent(byte id) { + if (id == ATTACK_ANIM_EVENT) { + this.attackAnimTicks = ATTACK_ANIM_TICKS; + this.attackDamageApplied = false; + return; + } + super.handleEntityEvent(id); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main", 3, this::mainController)); + } + + private PlayState mainController(AnimationState state) { + if (this.attackAnimTicks > 0) { + return state.setAndContinue(ATTACK_ANIM); + } + if (state.isMoving()) { + return state.setAndContinue(WALK_ANIM); + } + return state.setAndContinue(IDLE_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.SCORPION_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource source) { + return AntarchySoundEvents.SCORPION_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.SCORPION_HURT.get(); + } + + @Override + protected float getSoundVolume() { + return 0.6F; + } + + private final class ScorpionMeleeAttackGoal extends MeleeAttackGoal { + private ScorpionMeleeAttackGoal() { + super(ScorpionEntity.this, 1.15D, true); + } + + @Override + public void tick() { + if (ScorpionEntity.this.attackTarget != null) { + ScorpionEntity.this.getLookControl().setLookAt(ScorpionEntity.this.attackTarget, 30.0F, 30.0F); + } + super.tick(); + } + + @Override + public boolean canContinueToUse() { + return ScorpionEntity.this.isAttackLocked() || super.canContinueToUse(); + } + + @Override + protected void checkAndPerformAttack(LivingEntity enemy) { + if (ScorpionEntity.this.isAttackLocked()) { + return; + } + if (this.canPerformAttack(enemy) && this.isTimeToAttack() && ScorpionEntity.this.attackCooldownTicks <= 0) { + this.resetAttackCooldown(); + ScorpionEntity.this.beginAttack(enemy); + return; + } + super.checkAndPerformAttack(enemy); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/SizeRayProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/SizeRayProjectileEntity.java new file mode 100644 index 00000000..a54f17a5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/SizeRayProjectileEntity.java @@ -0,0 +1,226 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyAdvancements; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; + +public class SizeRayProjectileEntity extends AbstractArrow { + + public static final ResourceLocation SIZE_RAY_MODIFIER_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "size_ray_scale"); + private static final ResourceLocation LEGACY_SHRINK_MODIFIER_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "shrink_ray_scale"); + private static final ResourceLocation LEGACY_GROW_MODIFIER_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "grow_ray_scale"); + private static final String STAGE_TAG_PREFIX = Antarchy.MODID + ":size_ray_stage_"; + private static final String CHARGE_LEVEL_KEY = "ChargeLevel"; + private static final int LEGACY_STAGE_RANGE = 3; + private static final int MAX_LIFETIME_TICKS = 20; + private static final ResourceLocation VERY_HUNGRY_CATERPILLAR_ADVANCEMENT = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "very_hungry_caterpillar"); + private static final EntityDataAccessor CHARGE_LEVEL = + SynchedEntityData.defineId(SizeRayProjectileEntity.class, EntityDataSerializers.INT); + + private final SizeRayType sizeRayType; + + public SizeRayProjectileEntity( + EntityType entityType, + Level level, + SizeRayType sizeRayType + ) { + super(entityType, level); + this.sizeRayType = sizeRayType; + this.configureAsRay(); + this.setChargeLevel(1); + } + + public SizeRayProjectileEntity( + EntityType entityType, + LivingEntity shooter, + Level level, + ItemStack firedFromWeapon, + SizeRayType sizeRayType + ) { + super(entityType, shooter, level, firedFromWeapon.copyWithCount(1), firedFromWeapon); + this.sizeRayType = sizeRayType; + this.configureAsRay(); + this.setChargeLevel(1); + } + + public static SizeRayProjectileEntity createShrink( + EntityType entityType, Level level + ) { + return new SizeRayProjectileEntity(entityType, level, SizeRayType.SHRINK); + } + + public static SizeRayProjectileEntity createGrowth( + EntityType entityType, Level level + ) { + return new SizeRayProjectileEntity(entityType, level, SizeRayType.GROWTH); + } + + public SizeRayType getSizeRayType() { + return this.sizeRayType; + } + + public int getChargeLevel() { + return this.entityData.get(CHARGE_LEVEL); + } + + public int getEffectiveChargeLevel() { + return Math.max(1, Math.min(this.getChargeLevel(), this.getMaximumUsefulChargeLevel())); + } + + public void setChargeLevel(int chargeLevel) { + this.entityData.set(CHARGE_LEVEL, Math.max(1, chargeLevel)); + } + + @Override + protected ItemStack getDefaultPickupItem() { + return ItemStack.EMPTY; + } + + @Override + protected double getDefaultGravity() { + return 0.0D; + } + + @Override + protected void onHitEntity(EntityHitResult result) { + if (!this.level().isClientSide() + && AntarchySettings.sizeChangingRaysEnabled() + && result.getEntity() instanceof LivingEntity livingEntity + && !livingEntity.getType().is(AntarchyTags.Entities.SIZE_CHANGING_IMMUNE)) { + applyScaleChange(livingEntity); + if (this.sizeRayType == SizeRayType.GROWTH + && livingEntity instanceof CaterpillarEntity + && this.getOwner() instanceof ServerPlayer serverPlayer) { + AntarchyAdvancements.award(serverPlayer, VERY_HUNGRY_CATERPILLAR_ADVANCEMENT); + } + } + this.discard(); + } + + @Override + protected void onHitBlock(BlockHitResult result) { + this.discard(); + } + + @Override + public void tick() { + if (!this.level().isClientSide() && this.tickCount > MAX_LIFETIME_TICKS) { + this.discard(); + return; + } + + super.tick(); + + if (!this.level().isClientSide() && this.tickCount > MAX_LIFETIME_TICKS) { + this.discard(); + } + } + + private void configureAsRay() { + this.pickup = Pickup.DISALLOWED; + this.setNoGravity(true); + this.setBaseDamage(0.0D); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(CHARGE_LEVEL, 1); + } + + + private void applyScaleChange(LivingEntity livingEntity) { + this.applyScaleChange(livingEntity, this.getEffectiveChargeLevel()); + } + + private void applyScaleChange(LivingEntity livingEntity, int chargeLevel) { + AttributeInstance scaleAttribute = livingEntity.getAttribute(Attributes.SCALE); + if (scaleAttribute == null) return; + + migrateLegacy(livingEntity, scaleAttribute); + AttributeModifier existing = scaleAttribute.getModifier(SIZE_RAY_MODIFIER_ID); + double current = existing != null ? existing.amount() : 0.0; + + double delta = AntarchySettings.sizeRayDeltaPerHit(); + double snappedCurrent = Math.round(current / delta) * delta; + double next = this.sizeRayType == SizeRayType.SHRINK + ? snappedCurrent - delta * chargeLevel + : snappedCurrent + delta * chargeLevel; + double minOffset = AntarchySettings.sizeRayMinScale() - 1.0; + double maxOffset = AntarchySettings.sizeRayMaxScale() - 1.0; + next = Mth.clamp(next, minOffset, maxOffset); + + writeModifier(scaleAttribute, next); + } + + public int getMaximumUsefulChargeLevel() { + double delta = AntarchySettings.sizeRayDeltaPerHit(); + double availableOffset = this.sizeRayType == SizeRayType.SHRINK + ? 1.0D - AntarchySettings.sizeRayMinScale() + : AntarchySettings.sizeRayMaxScale() - 1.0D; + return Math.max(1, (int) Math.ceil(availableOffset / delta)); + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(CHARGE_LEVEL_KEY, this.getChargeLevel()); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.setChargeLevel(Math.max(1, tag.getInt(CHARGE_LEVEL_KEY))); + } + + + public static void writeModifier(AttributeInstance scaleAttribute, double offset) { + scaleAttribute.removeModifier(SIZE_RAY_MODIFIER_ID); + if (offset != 0.0) { + scaleAttribute.addPermanentModifier( + new AttributeModifier( + SIZE_RAY_MODIFIER_ID, + offset, + AttributeModifier.Operation.ADD_MULTIPLIED_TOTAL + ) + ); + } + } + + + private static void migrateLegacy(LivingEntity livingEntity, AttributeInstance scaleAttribute) { + scaleAttribute.removeModifier(LEGACY_SHRINK_MODIFIER_ID); + scaleAttribute.removeModifier(LEGACY_GROW_MODIFIER_ID); + for (int i = -LEGACY_STAGE_RANGE; i <= LEGACY_STAGE_RANGE; i++) { + if (i != 0) livingEntity.removeTag(STAGE_TAG_PREFIX + i); + } + } + + public enum SizeRayType { + SHRINK, + GROWTH + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/TriffidEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/TriffidEntity.java new file mode 100644 index 00000000..627fb719 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/TriffidEntity.java @@ -0,0 +1,531 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class TriffidEntity extends Monster implements GeoEntity { + private static final EntityDataAccessor ACTION_STATE = SynchedEntityData.defineId(TriffidEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor AWAKE = SynchedEntityData.defineId(TriffidEntity.class, EntityDataSerializers.BOOLEAN); + private static final int ACTION_NONE = 0; + private static final int ACTION_SWEEP = 1; + private static final int ACTION_GRAB = 2; + private static final int ACTION_DEATH = 3; + + private static final int SWEEP_TOTAL_TICKS = 20; + private static final int SWEEP_ACTIVE_START = 7; + private static final int SWEEP_ACTIVE_END = 14; + private static final int SWEEP_COOLDOWN_TICKS = 24; + private static final int GRAB_TOTAL_TICKS = 24; + private static final int GRAB_PULL_START = 6; + private static final int GRAB_PULL_END = 18; + private static final int GRAB_DAMAGE_TICK = 19; + private static final int GRAB_COOLDOWN_TICKS = 42; + private static final int DEATH_TICKS = 32; + + private static final double WAKE_RANGE = 12.0D; + private static final double SWEEP_RANGE = 4.25D; + private static final double GRAB_RANGE = 5.25D; + private static final double MIN_GRAB_RANGE = 2.0D; + private static final double FOLLOW_RANGE = 14.0D; + private static final double TURN_SPEED_DEGREES = 5.0D; + + private static final RawAnimation DORMANT_ANIM = RawAnimation.begin().thenLoop("dormant"); + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation SWEEP_ANIM = RawAnimation.begin().thenPlay("attack"); + private static final RawAnimation GRAB_ANIM = RawAnimation.begin().thenPlay("grab"); + private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlayAndHold("death"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private final Set sweepHitEntities = new HashSet<>(); + + private int actionTicks; + private int attackCooldown; + private float actionStartYaw; + private int grabTargetId = -1; + private boolean grabDamageApplied; + private int preySearchCooldown = 0; + + public TriffidEntity(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 15; + } + + public static AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, AntarchySettings.triffidHealth()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.triffidAttackDamage()) + .add(Attributes.FOLLOW_RANGE, FOLLOW_RANGE) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D) + .add(Attributes.MOVEMENT_SPEED, 0.0D); + } + + public static boolean canSpawn(EntityType entityType, LevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (pos.getY() < level.getMinBuildHeight() || pos.getY() + 7 >= level.getMaxBuildHeight()) { + return false; + } + + BlockPos[] footprint = new BlockPos[] { + pos, + pos.east(), + pos.south(), + pos.east().south() + }; + + for (BlockPos footprintPos : footprint) { + if (!level.getBlockState(footprintPos).isAir()) { + return false; + } + + BlockPos below = footprintPos.below(); + if (!level.getBlockState(below).isFaceSturdy(level, below, Direction.UP)) { + return false; + } + + for (int y = 1; y <= 7; y++) { + if (!level.getBlockState(footprintPos.above(y)).isAir()) { + return false; + } + } + } + + return true; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ACTION_STATE, ACTION_NONE); + builder.define(AWAKE, false); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 16.0F)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 10, true, false, TriffidEntity::isValidPreyTarget)); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getActionState()) { + case ACTION_SWEEP -> state.setAndContinue(SWEEP_ANIM); + case ACTION_GRAB -> state.setAndContinue(GRAB_ANIM); + case ACTION_DEATH -> state.setAndContinue(DEATH_ANIM); + default -> state.setAndContinue(this.isAwake() ? IDLE_ANIM : DORMANT_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + this.getNavigation().stop(); + Vec3 movement = this.getDeltaMovement(); + this.setDeltaMovement(0.0D, movement.y, 0.0D); + this.zza = 0.0F; + this.xxa = 0.0F; + + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + + if (this.level().isClientSide) { + return; + } + + this.syncConfiguredAttributes(); + + if (this.attackCooldown > 0) { + this.attackCooldown--; + } + + if (this.getActionState() == ACTION_DEATH) { + return; + } + + if (this.preySearchCooldown > 0) { + this.preySearchCooldown--; + } else { + this.preySearchCooldown = 20; + this.setAwake(this.hasNearbyPrey()); + if (!isValidLivePrey(this.getTarget())) { + this.setTarget(this.findNearestPrey()); + } + } + + LivingEntity target = this.getTarget(); + + if (this.getActionState() == ACTION_SWEEP) { + this.tickSweepAttack(); + return; + } + + if (this.getActionState() == ACTION_GRAB) { + this.tickGrabAttack(); + return; + } + + if (target != null) { + this.rotateToward(target, TURN_SPEED_DEGREES); + this.getLookControl().setLookAt(target, 30.0F, 30.0F); + this.tryStartAttack(target); + } + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.isInvulnerableTo(source)) { + return false; + } + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource damageSource) { + if (!this.level().isClientSide && this.getActionState() != ACTION_DEATH) { + this.setActionState(ACTION_DEATH); + this.actionTicks = DEATH_TICKS; + this.attackCooldown = 0; + this.grabTargetId = -1; + this.setTarget(null); + this.getNavigation().stop(); + this.setDeltaMovement(Vec3.ZERO); + } + super.die(damageSource); + } + + @Override + protected void tickDeath() { + this.deathTime++; + if (this.deathTime >= DEATH_TICKS) { + this.remove(RemovalReason.KILLED); + } + } + + @Override + protected SoundEvent getAmbientSound() { + if (this.getActionState() != ACTION_NONE) { + return null; + } + + if (!this.isAwake()) { + return this.random.nextInt(24) == 0 ? AntarchySoundEvents.TRIFFID_HISS.get() : null; + } + + return this.getTarget() != null ? AntarchySoundEvents.TRIFFID_GROWL.get() : null; + } + + @Override + public int getAmbientSoundInterval() { + if (!this.isAwake()) { + return 200; + } + + return this.getTarget() != null ? 80 : 160; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.TRIFFID_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.TRIFFID_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 0.7F; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public boolean canAttack(LivingEntity target) { + return isValidPreyTarget(target); + } + + @Override + public void knockback(double strength, double x, double z) { + } + + private void tryStartAttack(LivingEntity target) { + if (this.attackCooldown > 0 || !this.hasLineOfSight(target)) { + return; + } + + double distance = this.distanceTo(target); + boolean inSweepRange = distance <= SWEEP_RANGE; + boolean inGrabRange = distance >= MIN_GRAB_RANGE && distance <= GRAB_RANGE; + + if (inSweepRange) { + if (inGrabRange && isLowHealthPrey(target) && this.random.nextFloat() < 0.25F) { + this.startGrabAttack(target); + } else { + this.startSweepAttack(target); + } + return; + } + + if (inGrabRange && (isLowHealthPrey(target) || this.random.nextFloat() < 0.08F)) { + this.startGrabAttack(target); + } + } + + private void startSweepAttack(LivingEntity target) { + this.setActionState(ACTION_SWEEP); + this.actionTicks = SWEEP_TOTAL_TICKS; + this.attackCooldown = SWEEP_COOLDOWN_TICKS; + this.actionStartYaw = this.getAngleTo(target) - 100.0F; + this.sweepHitEntities.clear(); + this.setYRot(this.actionStartYaw); + this.playSound(AntarchySoundEvents.TRIFFID_ATTACK.get(), 0.9F, 0.75F); + } + + private void tickSweepAttack() { + int elapsed = SWEEP_TOTAL_TICKS - this.actionTicks; + float progress = elapsed / (float) SWEEP_TOTAL_TICKS; + this.setYRot(this.actionStartYaw + 200.0F * progress); + + if (elapsed >= SWEEP_ACTIVE_START && elapsed <= SWEEP_ACTIVE_END) { + this.applySweepDamage(); + } + + this.actionTicks--; + if (this.actionTicks <= 0) { + this.setActionState(ACTION_NONE); + this.sweepHitEntities.clear(); + } + } + + private void applySweepDamage() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + List candidates = this.level().getEntitiesOfClass( + LivingEntity.class, + this.getBoundingBox().inflate(SWEEP_RANGE, 1.0D, SWEEP_RANGE), + TriffidEntity::isValidLivePrey + ); + + for (LivingEntity candidate : candidates) { + if (candidate == this || this.sweepHitEntities.contains(candidate.getUUID())) { + continue; + } + if (this.distanceTo(candidate) > SWEEP_RANGE) { + continue; + } + + float relativeYaw = Mth.wrapDegrees(this.getAngleTo(candidate) - this.getYRot()); + if (Math.abs(relativeYaw) > 70.0F) { + continue; + } + + if (candidate.hurt(AntarchyDamageSources.triffidMauling(serverLevel, this), (float) AntarchySettings.triffidAttackDamage())) { + this.sweepHitEntities.add(candidate.getUUID()); + } + } + } + + private void startGrabAttack(LivingEntity target) { + this.setActionState(ACTION_GRAB); + this.actionTicks = GRAB_TOTAL_TICKS; + this.attackCooldown = GRAB_COOLDOWN_TICKS; + this.grabTargetId = target.getId(); + this.grabDamageApplied = false; + this.setYRot(this.getAngleTo(target)); + this.playSound(AntarchySoundEvents.TRIFFID_GRAB.get(), 0.8F, 0.85F); + } + + private void tickGrabAttack() { + LivingEntity grabTarget = this.getGrabTarget(); + if (!isValidLivePrey(grabTarget)) { + this.finishGrabAttack(); + return; + } + + this.rotateToward(grabTarget, TURN_SPEED_DEGREES * 1.25D); + int elapsed = GRAB_TOTAL_TICKS - this.actionTicks; + if (elapsed >= GRAB_PULL_START && elapsed <= GRAB_PULL_END) { + this.pullTargetTowardMouth(grabTarget); + } + + if (!this.grabDamageApplied && elapsed >= GRAB_DAMAGE_TICK) { + this.grabDamageApplied = true; + if (this.level() instanceof ServerLevel serverLevel) { + grabTarget.hurt(AntarchyDamageSources.triffidSwallow(serverLevel, this), (float) AntarchySettings.triffidGrabDamage()); + } else { + grabTarget.hurt(this.damageSources().mobAttack(this), (float) AntarchySettings.triffidGrabDamage()); + } + } + + this.actionTicks--; + if (this.actionTicks <= 0) { + this.finishGrabAttack(); + } + } + + private void pullTargetTowardMouth(LivingEntity target) { + Vec3 mouthPos = this.position().add(Vec3.directionFromRotation(0.0F, this.getYRot()).scale(1.45D)).add(0.0D, 2.3D, 0.0D); + Vec3 targetCenter = target.getBoundingBox().getCenter(); + Vec3 offset = mouthPos.subtract(targetCenter); + double distance = offset.length(); + if (distance < 1.0E-4D) { + return; + } + + Vec3 pull = offset.normalize().scale(Math.min(1.0D, 0.2D + distance * 0.18D)); + target.setDeltaMovement(target.getDeltaMovement().scale(0.35D).add(pull)); + target.hurtMarked = true; + target.fallDistance = 0.0F; + } + + private void finishGrabAttack() { + this.setActionState(ACTION_NONE); + this.actionTicks = 0; + this.grabTargetId = -1; + this.grabDamageApplied = false; + } + + private void rotateToward(LivingEntity target, double maxStep) { + float targetYaw = this.getAngleTo(target); + this.setYRot(this.rotateTowards(this.getYRot(), targetYaw, (float) maxStep)); + } + + private float getAngleTo(Entity target) { + double dx = target.getX() - this.getX(); + double dz = target.getZ() - this.getZ(); + return (float) (Mth.atan2(dz, dx) * (180.0F / Math.PI)) - 90.0F; + } + + private float rotateTowards(float currentYaw, float targetYaw, float maxStep) { + return currentYaw + Mth.clamp(Mth.wrapDegrees(targetYaw - currentYaw), -maxStep, maxStep); + } + + private boolean hasNearbyPrey() { + return !this.level().getEntitiesOfClass( + LivingEntity.class, + this.getBoundingBox().inflate(WAKE_RANGE, 4.0D, WAKE_RANGE), + TriffidEntity::isValidLivePrey + ).isEmpty(); + } + + @Nullable + private LivingEntity findNearestPrey() { + List candidates = this.level().getEntitiesOfClass( + LivingEntity.class, + this.getBoundingBox().inflate(FOLLOW_RANGE, 6.0D, FOLLOW_RANGE), + TriffidEntity::isValidLivePrey + ); + LivingEntity best = null; + double bestDistance = Double.MAX_VALUE; + for (LivingEntity candidate : candidates) { + double distance = this.distanceToSqr(candidate); + if (distance < bestDistance) { + bestDistance = distance; + best = candidate; + } + } + return best; + } + + @Nullable + private LivingEntity getGrabTarget() { + Entity entity = this.level().getEntity(this.grabTargetId); + return entity instanceof LivingEntity living ? living : null; + } + + private void syncConfiguredAttributes() { + if (this.getAttribute(Attributes.MAX_HEALTH) != null) { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(AntarchySettings.triffidHealth()); + } + if (this.getAttribute(Attributes.ATTACK_DAMAGE) != null) { + this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(AntarchySettings.triffidAttackDamage()); + } + } + + private static boolean isLowHealthPrey(LivingEntity target) { + return target.getHealth() <= Math.max((float) AntarchySettings.triffidGrabDamage(), target.getMaxHealth() * 0.35F); + } + + private int getActionState() { + return this.entityData.get(ACTION_STATE); + } + + private void setActionState(int state) { + this.entityData.set(ACTION_STATE, state); + } + + private boolean isAwake() { + return this.entityData.get(AWAKE); + } + + private void setAwake(boolean awake) { + this.entityData.set(AWAKE, awake); + } + + private static boolean isValidLivePrey(@Nullable LivingEntity target) { + return target != null && target.isAlive() && isValidPreyTarget(target); + } + + private static boolean isValidPreyTarget(LivingEntity target) { + if (target instanceof Player player) { + return !player.isCreative() && !player.isSpectator(); + } + return target.getType().is(AntarchyTags.Entities.TRIFFID_PREY); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/UpwardFallingBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/UpwardFallingBlockEntity.java new file mode 100644 index 00000000..57665291 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/UpwardFallingBlockEntity.java @@ -0,0 +1,135 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; + +import java.util.function.Supplier; + +public class UpwardFallingBlockEntity extends Entity { + + /** Set by the platform registration before any block tick fires. */ + public static Supplier> TYPE; + + private static final EntityDataAccessor DATA_BLOCK_STATE = + SynchedEntityData.defineId(UpwardFallingBlockEntity.class, EntityDataSerializers.BLOCK_STATE); + + private static final double RISE_SPEED = 0.5; + private static final int MAX_TICKS = 200; + + public int time = 0; + + public UpwardFallingBlockEntity(EntityType type, Level level) { + super(type, level); + this.noPhysics = true; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + builder.define(DATA_BLOCK_STATE, Blocks.AIR.defaultBlockState()); + } + + public BlockState getBlockState() { + return this.entityData.get(DATA_BLOCK_STATE); + } + + public static void fallUp(Level level, BlockPos pos, BlockState state) { + if (level.isClientSide) return; + // Prevent stacking multiple entities from the same block position + if (!level.getEntitiesOfClass(UpwardFallingBlockEntity.class, new AABB(pos)).isEmpty()) return; + + level.removeBlock(pos, false); + UpwardFallingBlockEntity entity = new UpwardFallingBlockEntity(TYPE.get(), level); + entity.entityData.set(DATA_BLOCK_STATE, state); + entity.setPos(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); + level.addFreshEntity(entity); + } + + @Override + public void tick() { + super.tick(); + + if (level().isClientSide) return; + + BlockState blockState = getBlockState(); + if (blockState.isAir()) { + discard(); + return; + } + + time++; + if (time > MAX_TICKS || getY() >= level().getMaxBuildHeight()) { + dropAndRemove(blockState); + return; + } + + // Move upward directly — noPhysics=true means move() just calls setPos() + setPos(getX(), getY() + RISE_SPEED, getZ()); + + BlockPos headPos = BlockPos.containing(getX(), getY() + getBbHeight(), getZ()); + BlockState above = level().getBlockState(headPos); + + // Leaves block the entity but can't hold scaffolding — drop as item + if (above.is(BlockTags.LEAVES)) { + dropAndRemove(blockState); + return; + } + + boolean hitCeiling = above.isFaceSturdy(level(), headPos, Direction.DOWN); + boolean hitScaffolding = above.getBlock() instanceof AntimetalScaffoldingBlock; + + if (hitCeiling || hitScaffolding) { + BlockPos placePos = headPos.below(); + BlockState atPlace = level().getBlockState(placePos); + if (atPlace.isAir() || atPlace.canBeReplaced()) { + level().setBlock(placePos, blockState, 3); + } else { + dropAndRemove(blockState); + return; + } + discard(); + } + } + + private void dropAndRemove(BlockState state) { + if (!level().isClientSide && !state.isAir()) { + ItemStack drop = new ItemStack(state.getBlock().asItem()); + if (!drop.isEmpty()) spawnAtLocation(drop); + } + discard(); + } + + @Override + protected void readAdditionalSaveData(CompoundTag tag) { + if (tag.contains("BlockState")) { + BlockState state = NbtUtils.readBlockState( + level().holderLookup(net.minecraft.core.registries.Registries.BLOCK), + tag.getCompound("BlockState") + ); + entityData.set(DATA_BLOCK_STATE, state); + } + time = tag.getInt("Time"); + } + + @Override + protected void addAdditionalSaveData(CompoundTag tag) { + tag.put("BlockState", NbtUtils.writeBlockState(getBlockState())); + tag.putInt("Time", time); + } + + @Override public boolean isPickable() { return false; } + @Override public boolean isPushable() { return false; } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java new file mode 100644 index 00000000..6f8df95d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java @@ -0,0 +1,481 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import java.util.EnumSet; +import java.util.Objects; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.util.AirAndWaterRandomPos; +import net.minecraft.world.entity.ai.util.HoverRandomPos; +import net.minecraft.world.entity.animal.FlyingAnimal; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class WaspEntity extends Monster implements GeoEntity, FlyingAnimal { + private static final EntityDataAccessor TEXTURE_VARIANT = + SynchedEntityData.defineId(WaspEntity.class, EntityDataSerializers.INT); + private static final byte ATTACK_ANIM_EVENT = 4; + private static final int ATTACK_ANIM_TICKS = 10; + private static final int POISON_DURATION_TICKS = 100; + private static final double CHASE_SPEED = 0.36D; + private static final double WANDER_SPEED = 0.34D; + private static final String TEXTURE_VARIANT_KEY = "TextureVariant"; + private static final int TEXTURE_VARIANT_DEFAULT = 0; + private static final int TEXTURE_VARIANT_PANDA = 1; + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private int attackAnimTicks; + private boolean configuredAttributesSynced; + @Nullable private BlockPos hivePos; + + public WaspEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 30, true); + this.setNoGravity(true); + this.xpReward = 5; + } + + public static AttributeSupplier.Builder createAttributes() { + return net.minecraft.world.entity.Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, AntarchySettings.waspHealth()) + .add(Attributes.FLYING_SPEED, AntarchySettings.waspMovementSpeed()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.waspMovementSpeed()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.waspAttackDamage()) + .add(Attributes.ARMOR, 1.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return level.getDifficulty() != Difficulty.PEACEFUL + && level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(TEXTURE_VARIANT, TEXTURE_VARIANT_DEFAULT); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(2, new MeleeAttackGoal(this, CHASE_SPEED, true)); + this.goalSelector.addGoal(3, new WaspGoToNestGoal()); + this.goalSelector.addGoal(4, new WaspWanderGoal()); + this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 8.0F)); + this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation nav = new FlyingPathNavigation(this, level); + nav.setCanOpenDoors(false); + nav.setCanFloat(true); + return nav; + } + + @Override + public void travel(Vec3 travelVector) { + if (this.isEffectiveAi() || this.isControlledByLocalInstance()) { + if (this.isInWater()) { + this.moveRelative(0.02F, travelVector); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.8D)); + } else if (this.isInLava()) { + this.moveRelative(0.02F, travelVector); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.5D)); + } else { + this.moveRelative(this.getSpeed(), travelVector); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.9D)); + } + } + this.calculateEntityAnimation(false); + } + + public void setHivePos(@Nullable BlockPos pos) { + this.hivePos = pos; + } + + @Nullable + public BlockPos getHivePos() { + return this.hivePos; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + if (this.hivePos != null) { + tag.put("HivePos", NbtUtils.writeBlockPos(this.hivePos)); + } + tag.putInt(TEXTURE_VARIANT_KEY, this.getTextureVariant()); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.hivePos = tag.contains("HivePos") + ? NbtUtils.readBlockPos(tag, "HivePos").orElse(null) + : null; + if (tag.contains(TEXTURE_VARIANT_KEY)) { + this.setTextureVariant(tag.getInt(TEXTURE_VARIANT_KEY)); + } + } + + @Override + public void tick() { + super.tick(); + this.realignHitbox(); + if (!this.level().isClientSide && !this.configuredAttributesSynced) { + this.syncConfiguredAttributes(); + this.configuredAttributesSynced = true; + } + this.setNoGravity(true); + this.setOnGround(false); + + if (this.attackAnimTicks > 0) { + this.attackAnimTicks--; + } + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData spawnGroupData) { + this.syncConfiguredAttributes(); + this.configuredAttributesSynced = true; + this.setHealth((float) AntarchySettings.waspHealth()); + if (spawnReason == MobSpawnType.SPAWN_EGG && this.random.nextInt(20) == 0) { + this.setPandaVariant(true); + } + return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); + } + + @Override + public void refreshDimensions() { + super.refreshDimensions(); + this.realignHitbox(); + } + + @Override + public boolean doHurtTarget(net.minecraft.world.entity.Entity target) { + if (!(target instanceof LivingEntity livingTarget)) { + return super.doHurtTarget(target); + } + + this.beginAttackAnimation(); + boolean hurt = livingTarget.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); + if (hurt) { + int poisonDuration = this.level().getDifficulty() == Difficulty.HARD + ? POISON_DURATION_TICKS * 2 + : POISON_DURATION_TICKS; + livingTarget.addEffect(new MobEffectInstance(MobEffects.POISON, poisonDuration, 0)); + this.playSound(AntarchySoundEvents.WASP_ATTACK.get(), 0.9F, 0.9F + this.random.nextFloat() * 0.2F); + } + + return hurt; + } + + private void beginAttackAnimation() { + this.attackAnimTicks = ATTACK_ANIM_TICKS; + this.swing(InteractionHand.MAIN_HAND); + if (!this.level().isClientSide) { + this.level().broadcastEntityEvent(this, ATTACK_ANIM_EVENT); + } + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.WASP_IDLE.get(); + } + + @Override + public int getAmbientSoundInterval() { + return 20; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.WASP_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.WASP_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 0.7F; + } + + @Override + public float getVoicePitch() { + return 1.15F + this.random.nextFloat() * 0.15F; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + private PlayState mainAnimController(AnimationState state) { + if (this.attackAnimTicks > 0) { + return state.setAndContinue(ATTACK_ANIM); + } + + return state.setAndContinue(IDLE_ANIM); + } + + @Override + public void handleEntityEvent(byte id) { + if (id == ATTACK_ANIM_EVENT) { + this.attackAnimTicks = ATTACK_ANIM_TICKS; + return; + } + super.handleEntityEvent(id); + } + + @Override + public Vec3 getLeashOffset() { + return new Vec3(0.0D, 0.2D, 0.0D); + } + + public boolean isPandaVariant() { + return this.getTextureVariant() == TEXTURE_VARIANT_PANDA; + } + + public int getTextureVariant() { + return this.entityData.get(TEXTURE_VARIANT); + } + + public void setTextureVariant(int variant) { + this.entityData.set(TEXTURE_VARIANT, Mth.clamp(variant, TEXTURE_VARIANT_DEFAULT, TEXTURE_VARIANT_PANDA)); + } + + public void setPandaVariant(boolean pandaVariant) { + this.setTextureVariant(pandaVariant ? TEXTURE_VARIANT_PANDA : TEXTURE_VARIANT_DEFAULT); + } + + @Override + public boolean isFlying() { + return !this.onGround(); + } + + private void realignHitbox() { + double halfWidth = this.getBbWidth() * 0.5D; + double height = this.getBbHeight(); + this.setBoundingBox(new AABB( + this.getX() - halfWidth, + this.getY(), + this.getZ() - halfWidth, + this.getX() + halfWidth, + this.getY() + height, + this.getZ() + halfWidth + )); + } + + private void syncConfiguredAttributes() { + Objects.requireNonNull(this.getAttribute(Attributes.MAX_HEALTH)).setBaseValue(AntarchySettings.waspHealth()); + Objects.requireNonNull(this.getAttribute(Attributes.ATTACK_DAMAGE)).setBaseValue(AntarchySettings.waspAttackDamage()); + Objects.requireNonNull(this.getAttribute(Attributes.FLYING_SPEED)).setBaseValue(AntarchySettings.waspMovementSpeed()); + Objects.requireNonNull(this.getAttribute(Attributes.MOVEMENT_SPEED)).setBaseValue(AntarchySettings.waspMovementSpeed()); + } + + private boolean hasValidHive() { + if (this.hivePos == null || !this.level().isLoaded(this.hivePos)) { + return false; + } + + BlockEntity blockEntity = this.level().getBlockEntity(this.hivePos); + return blockEntity instanceof WaspNestBlockEntity; + } + + private boolean closerThan(BlockPos pos, int distance) { + return pos.closerThan(this.blockPosition(), distance); + } + + private final class WaspWanderGoal extends Goal { + private static final int WANDER_THRESHOLD = 22; + + private WaspWanderGoal() { + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + public boolean canUse() { + boolean hasHive = WaspEntity.this.hasValidHive(); + return WaspEntity.this.getTarget() == null + && (!hasHive || (!WaspEntity.this.level().isNight() && !WaspEntity.this.level().isRaining())) + && WaspEntity.this.navigation.isDone() + && WaspEntity.this.random.nextInt(10) == 0; + } + + @Override + public boolean canContinueToUse() { + return WaspEntity.this.navigation.isInProgress(); + } + + @Override + public void start() { + Vec3 targetPos = this.findPos(); + if (targetPos != null) { + WaspEntity.this.navigation.moveTo( + WaspEntity.this.navigation.createPath(BlockPos.containing(targetPos), 1), + WANDER_SPEED + ); + } + } + + @Nullable + private Vec3 findPos() { + Vec3 bias; + if (WaspEntity.this.hasValidHive() && !WaspEntity.this.closerThan(WaspEntity.this.hivePos, WANDER_THRESHOLD)) { + bias = Vec3.atCenterOf(WaspEntity.this.hivePos).subtract(WaspEntity.this.position()).normalize(); + } else { + bias = WaspEntity.this.getViewVector(0.0F); + } + + Vec3 hover = HoverRandomPos.getPos( + WaspEntity.this, + 8, + 7, + bias.x, + bias.z, + (float) Math.PI / 2.0F, + 3, + 1 + ); + if (hover != null) { + return hover; + } + + return AirAndWaterRandomPos.getPos( + WaspEntity.this, + 8, + 4, + -2, + bias.x, + bias.z, + (double) ((float) Math.PI / 2.0F) + ); + } + } + + private class WaspGoToNestGoal extends Goal { + private static final int TIMEOUT_TICKS = 600; + private static final double NEST_REACH_DISTANCE_SQ = 4.0; + private static final double MAX_HIVE_DISTANCE_SQ = 2048; + private int travelTicks; + + WaspGoToNestGoal() { + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + public boolean canUse() { + BlockPos hive = WaspEntity.this.hivePos; + return hive != null + && WaspEntity.this.getTarget() == null + && (WaspEntity.this.level().isNight() || WaspEntity.this.level().isRaining()) + && hive.distSqr(WaspEntity.this.blockPosition()) <= MAX_HIVE_DISTANCE_SQ; + } + + @Override + public boolean canContinueToUse() { + return this.canUse() && this.travelTicks < TIMEOUT_TICKS; + } + + @Override + public void start() { + this.travelTicks = 0; + BlockPos hive = WaspEntity.this.hivePos; + WaspEntity.this.navigation.moveTo(hive.getX() + 0.5, hive.getY() + 0.5, hive.getZ() + 0.5, WANDER_SPEED); + } + + @Override + public void tick() { + this.travelTicks++; + BlockPos hive = WaspEntity.this.hivePos; + if (hive == null) { + return; + } + + if (WaspEntity.this.position().distanceToSqr(Vec3.atCenterOf(hive)) <= NEST_REACH_DISTANCE_SQ) { + Level level = WaspEntity.this.level(); + if (level instanceof ServerLevel serverLevel) { + BlockEntity be = serverLevel.getBlockEntity(hive); + if (be instanceof WaspNestBlockEntity nest) { + nest.tryStoreWasp(WaspEntity.this); + } else { + WaspEntity.this.hivePos = null; + } + } + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntMarchManager.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntMarchManager.java new file mode 100644 index 00000000..b3bc48dc --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntMarchManager.java @@ -0,0 +1,103 @@ +package com.craisinlord.antarchy.content.entity.ant; + +import net.minecraft.server.level.ServerLevel; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import java.util.UUID; +import java.util.WeakHashMap; + +final class AntMarchManager { + private static final WeakHashMap INSTANCES = new WeakHashMap<>(); + + + private final Map> marches = new HashMap<>(); + + private AntMarchManager() {} + + static AntMarchManager get(ServerLevel level) { + return INSTANCES.computeIfAbsent(level, l -> new AntMarchManager()); + } + + + void register(UUID leaderUuid, int marchOrder, BaseAntEntity ant) { + marches.computeIfAbsent(leaderUuid, k -> new TreeMap<>()).put(marchOrder, ant); + } + + + void unregister(UUID leaderUuid, int marchOrder) { + TreeMap march = marches.get(leaderUuid); + if (march == null) return; + march.remove(marchOrder); + if (march.isEmpty()) marches.remove(leaderUuid); + } + + + @Nullable + BaseAntEntity getLeader(UUID leaderUuid) { + return getByOrder(leaderUuid, 0); + } + + + @Nullable + BaseAntEntity getPredecessor(UUID leaderUuid, int order) { + return order > 0 ? getByOrder(leaderUuid, order - 1) : null; + } + + + int getNextOrder(UUID leaderUuid) { + TreeMap march = marches.get(leaderUuid); + if (march == null || march.isEmpty()) return 1; + return march.lastKey() + 1; + } + + + List getParticipantsNear(BaseAntEntity seeker, double radius, double verticalRange) { + double radiusSqr = radius * radius; + List result = new ArrayList<>(); + for (TreeMap march : marches.values()) { + for (BaseAntEntity ant : march.values()) { + if (ant == seeker || !ant.isAlive()) continue; + double dy = Math.abs(ant.getY() - seeker.getY()); + if (dy > verticalRange) continue; + double dx = ant.getX() - seeker.getX(); + double dz = ant.getZ() - seeker.getZ(); + if (dx * dx + dz * dz <= radiusSqr) { + result.add(ant); + } + } + } + return result; + } + + + void cleanup() { + Iterator>> marchIter = marches.entrySet().iterator(); + while (marchIter.hasNext()) { + Map.Entry> entry = marchIter.next(); + entry.getValue().entrySet().removeIf(e -> !e.getValue().isAlive()); + if (entry.getValue().isEmpty()) { + marchIter.remove(); + } + } + } + + @Nullable + private BaseAntEntity getByOrder(UUID leaderUuid, int order) { + TreeMap march = marches.get(leaderUuid); + if (march == null) return null; + BaseAntEntity ant = march.get(order); + if (ant == null) return null; + if (!ant.isAlive()) { + march.remove(order); + if (march.isEmpty()) marches.remove(leaderUuid); + return null; + } + return ant; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntTeleportHelper.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntTeleportHelper.java new file mode 100644 index 00000000..97d66961 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntTeleportHelper.java @@ -0,0 +1,177 @@ +package com.craisinlord.antarchy.content.entity.ant; + +import java.util.LinkedHashSet; +import java.util.Set; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.PlayerRespawnLogic; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.DismountHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public final class AntTeleportHelper { + private AntTeleportHelper() { + } + + static InteractionResult handleInteraction(BaseAntEntity ant, Player player, ItemStack itemStack) { + if (ant.requiresActivationReagent() && !ant.isTeleportActivatedState()) { + if (!(player instanceof ServerPlayer serverPlayer)) { + return InteractionResult.SUCCESS; + } + + if (itemStack.is(ant.activationItemsTag())) { + return activateTeleport(ant, serverPlayer, itemStack); + } + + if (!itemStack.isEmpty()) { + return InteractionResult.PASS; + } + + serverPlayer.displayClientMessage(Component.translatable(ant.needsReagentMessageKey()), true); + return InteractionResult.CONSUME; + } + + if (!itemStack.isEmpty()) { + return InteractionResult.PASS; + } + + if (!(player instanceof ServerPlayer serverPlayer)) { + return InteractionResult.SUCCESS; + } + + ServerLevel configuredDestination = resolveConfiguredDestinationLevel(ant, serverPlayer.serverLevel()); + ServerLevel destination = configuredDestination != null && serverPlayer.serverLevel().dimension() == configuredDestination.dimension() + ? resolveReturnDestinationLevel(serverPlayer) + : configuredDestination; + if (destination == null) { + return InteractionResult.PASS; + } + + Vec3 destinationPos = getDestinationPosition(serverPlayer, destination); + serverPlayer.teleportTo(destination, destinationPos.x, destinationPos.y, destinationPos.z, serverPlayer.getYRot(), serverPlayer.getXRot()); + serverPlayer.playSound(SoundEvents.ENDERMAN_TELEPORT, 1.0F, 1.0F); + return InteractionResult.CONSUME; + } + + private static InteractionResult activateTeleport(BaseAntEntity ant, ServerPlayer player, ItemStack stack) { + ant.setTeleportActivatedState(true); + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + + player.displayClientMessage(Component.translatable(ant.activationMessageKey()), true); + ant.playSound(SoundEvents.END_PORTAL_SPAWN, 0.8F, 1.1F); + return InteractionResult.CONSUME; + } + + @Nullable + private static ServerLevel resolveConfiguredDestinationLevel(BaseAntEntity ant, ServerLevel serverLevel) { + return serverLevel.getServer().getLevel(ant.destinationDimension()); + } + + public static ServerLevel resolveReturnDestinationLevel(ServerPlayer player) { + ResourceKey respawnDimension = player.getRespawnDimension(); + ServerLevel destination = player.server.getLevel(respawnDimension); + if (destination != null && respawnDimension == Level.OVERWORLD) { + return destination; + } + + // If the player's respawn is not in the overworld, return them to overworld spawn instead. + return player.server.overworld(); + } + + public static Vec3 getDestinationPosition(ServerPlayer player, ServerLevel destination) { + BlockPos respawnPos = player.getRespawnPosition(); + BlockPos preferredPos; + if (respawnPos != null && destination.dimension() == player.getRespawnDimension()) { + preferredPos = respawnPos; + } else { + preferredPos = destination.dimension() == Level.END ? ServerLevel.END_SPAWN_POINT : destination.getSharedSpawnPos(); + } + + Vec3 safeArrivalPos = findSafeArrivalPosition(player, destination, preferredPos); + if (safeArrivalPos != null) { + return safeArrivalPos; + } + + BlockPos fallbackPos = player.adjustSpawnLocation(destination, preferredPos); + return Vec3.atBottomCenterOf(fallbackPos); + } + + @Nullable + private static Vec3 findSafeArrivalPosition(ServerPlayer player, ServerLevel destination, BlockPos preferredPos) { + Set candidates = new LinkedHashSet<>(); + BlockPos adjustedPreferredPos = player.adjustSpawnLocation(destination, preferredPos); + addArrivalCandidate(candidates, preferredPos); + addArrivalCandidate(candidates, preferredPos.above()); + addArrivalCandidate(candidates, adjustedPreferredPos); + + if (destination.dimensionType().hasSkyLight()) { + addArrivalCandidate(candidates, PlayerRespawnLogic.getSpawnPosInChunk(destination, new ChunkPos(preferredPos))); + addArrivalCandidate(candidates, PlayerRespawnLogic.getSpawnPosInChunk(destination, new ChunkPos(adjustedPreferredPos))); + } + + for (int radius = 0; radius <= 4; radius++) { + for (int xOffset = -radius; xOffset <= radius; xOffset++) { + for (int zOffset = -radius; zOffset <= radius; zOffset++) { + if (radius > 0 && Math.abs(xOffset) != radius && Math.abs(zOffset) != radius) { + continue; + } + + BlockPos searchPos = preferredPos.offset(xOffset, 0, zOffset); + addArrivalCandidate(candidates, destination.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, searchPos)); + addArrivalCandidate(candidates, destination.getHeightmapPos(Heightmap.Types.WORLD_SURFACE, searchPos)); + } + } + } + + for (BlockPos candidate : candidates) { + Vec3 safePos = tryFindSafeDismount(player, destination, candidate); + if (safePos != null) { + return safePos; + } + } + + return null; + } + + private static void addArrivalCandidate(Set candidates, @Nullable BlockPos pos) { + if (pos == null) { + return; + } + + candidates.add(pos); + candidates.add(pos.above()); + if (pos.getY() > Integer.MIN_VALUE) { + candidates.add(pos.below()); + } + } + + @Nullable + private static Vec3 tryFindSafeDismount(ServerPlayer player, ServerLevel destination, BlockPos candidate) { + Vec3 safePos = DismountHelper.findSafeDismountLocation(player.getType(), destination, candidate, true); + if (safePos != null) { + return safePos; + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + safePos = DismountHelper.findSafeDismountLocation(player.getType(), destination, candidate.relative(direction), true); + if (safePos != null) { + return safePos; + } + } + + return null; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BaseAntEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BaseAntEntity.java new file mode 100644 index 00000000..464d61f2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BaseAntEntity.java @@ -0,0 +1,1688 @@ +package com.craisinlord.antarchy.content.entity.ant; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import java.util.Comparator; +import java.util.EnumSet; +import java.util.List; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.TagKey; +import net.minecraft.util.Mth; +import net.minecraft.world.Container; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.AvoidEntityGoal; +import net.minecraft.world.entity.ai.goal.BreedGoal; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.PanicGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.TemptGoal; +import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.ChestBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public abstract class BaseAntEntity extends Animal implements GeoEntity { + private static final double ATTRIBUTE_EPSILON = 1.0E-4D; + private static final double MAX_NEST_WANDER_DISTANCE_SQR = 576.0D; + private static final EntityDataAccessor CARRIED_FOOD = SynchedEntityData.defineId(BaseAntEntity.class, EntityDataSerializers.ITEM_STACK); + private static final EntityDataAccessor DANCING = SynchedEntityData.defineId(BaseAntEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor BITE_ANIM_TICKS = SynchedEntityData.defineId(BaseAntEntity.class, EntityDataSerializers.INT); + private static final String HAS_FOOD = "HasFood"; + private static final String CARRIED_FOOD_TAG = "CarriedFood"; + private static final String OUTSIDE_NEST_TICKS_KEY = "OutsideNestTicks"; + private static final String NEST_X = "NestX"; + private static final String NEST_Y = "NestY"; + private static final String NEST_Z = "NestZ"; + private static final String TELEPORT_ACTIVATED = "TeleportActivated"; + private static final String MARCH_LEADER_UUID = "MarchLeaderUuid"; + private static final String MARCH_ORDER_KEY = "MarchOrder"; + private static final int MIN_OUTSIDE_NEST_TICKS = 20 * 30; + private static final int EXTRA_OUTSIDE_NEST_TICKS = 20 * 30; + private static final double MARCH_SEARCH_RADIUS = 12.0D; + private static final double MARCH_LEADER_LOST_DISTANCE_SQR = 400.0D; + private static final int MARCH_FOLLOW_REPATH_TICKS = 6; + private static final int ATTRIBUTE_SYNC_INTERVAL_TICKS = 200; + private static final int NEST_SEARCH_RADIUS_HORIZONTAL = 16; + private static final int NEST_SEARCH_RADIUS_VERTICAL = 4; + private static final int NEST_SEARCH_INTERVAL_TICKS = 80; + private static final int FOOD_NEST_SEARCH_INTERVAL_TICKS = 20; + private static final int CHEST_SEARCH_INTERVAL_TICKS = 20; + private static final int SHARED_CHEST_MEMORY_TICKS = 120; + private static final double FOOD_CHEST_SEARCH_RADIUS = 20.0D; + private static final int GROUND_FOOD_CACHE_INTERVAL_TICKS = 20; + private static final int NEST_CACHE_INTERVAL_TICKS = 20; + private static final int STUCK_WARN_TICKS = 60; + private static final int STUCK_REPEAT_TICKS = 100; + private static final int RETURN_NAV_FAILURE_STREAK = 20; + private static final int RETURN_NAV_FAILURE_COOLDOWN = 200; + private static final int JUKEBOX_SCAN_INTERVAL_TICKS = 40; + private static final int CHEST_REPATH_TICKS = 12; + private static final double GROUND_FOOD_MOVE_SPEED = 1.12D; + private static final double CHEST_MOVE_SPEED = 1.02D; + private static final double SHARED_CHEST_MOVE_SPEED = 1.04D; + private static final double SHARED_GROUND_FOOD_MOVE_SPEED = 1.08D; + private static final double MARCH_FOLLOW_SPEED = 0.98D; + private static final double MARCH_FOLLOW_CATCHUP_SPEED = 1.14D; + private static final double STROLL_SPEED = 1.0D; + private static final double ESCAPE_MOVE_SPEED = 1.18D; + private static final double NEST_RETURN_MOVE_SPEED = 1.02D; + private static final double FOOD_RETURN_MOVE_SPEED = 1.08D; + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenLoop("attack"); + private static final RawAnimation DANCE_ANIM = RawAnimation.begin().thenLoop("dance"); + + + @Nullable + private BlockPos nestPos; + @Nullable + private BlockPos jukeboxPos; + private int outsideNestTicks; + private boolean teleportActivated; + @Nullable + private UUID marchLeaderUuid; + private int marchOrder = -1; + private int nextMarchFollowRepathTick; + private int nextNestSearchTick; + @Nullable + private BlockPos targetFoodChestPos; + private int nextFoodChestSearchTick; + @Nullable + private BlockPos recentFoodChestPos; + private int recentFoodChestExpireTick; + @Nullable + private BlockPos recentGroundFoodPos; + private int recentGroundFoodExpireTick; + @Nullable + private ItemEntity cachedNearestGroundFood; + private int nextGroundFoodCacheTick; + private int stuckDetectorTicks; + private int returnToNestFailureCooldownTick; + private boolean cachedHasUsableNest; + private boolean nestCacheDirty = true; + private int nextNestCacheTick; + private int nextJukeboxScanTick; + private double cachedDanceRadius = 1.0D; + private int nextIdleSoundTick; + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + protected BaseAntEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(CARRIED_FOOD, ItemStack.EMPTY); + builder.define(DANCING, false); + builder.define(BITE_ANIM_TICKS, 0); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 2, this::mainAnimController)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new AntDanceGoal()); + this.goalSelector.addGoal(2, new PanicGoal(this, 1.4D)); + this.goalSelector.addGoal(4, new TemptGoal(this, 1.0D, Ingredient.of(this.breedingFoodsTag()), false)); + this.goalSelector.addGoal(5, new BreedGoal(this, 1.0D)); + this.goalSelector.addGoal(6, new AntSharedMarchForageGoal()); + this.goalSelector.addGoal(7, new AntMarchFollowGoal()); + this.goalSelector.addGoal(8, new AntReturnToNestGoal()); + this.goalSelector.addGoal(9, new AntForageGoal()); + this.goalSelector.addGoal(10, new AntFoodEscapeGoal()); + this.goalSelector.addGoal(11, new AntRandomStrollGoal(STROLL_SPEED)); + this.goalSelector.addGoal(12, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + } + + @Override + public void tick() { + super.tick(); + + if (!this.isAlive() || this.isRemoved()) { + return; + } + + this.tickJukeboxDanceState(); + + if (!this.level().isClientSide && (this.tickCount <= 1 || this.tickCount % ATTRIBUTE_SYNC_INTERVAL_TICKS == 0)) { + this.syncConfiguredAttributes(); + if (this.level() instanceof ServerLevel serverLevel) { + AntMarchManager.get(serverLevel).cleanup(); + } + } + + if (this.level().isClientSide) { + return; + } + + if (this.getBiteAnimationTicks() > 0) { + this.setBiteAnimationTicks(this.getBiteAnimationTicks() - 1); + } + + if (this.isDancing()) { + this.setTarget(null); + this.leaveMarch(); + this.getNavigation().stop(); + return; + } + + if (this.shouldSearchForNest()) { + this.findNearestNestIfNeeded(); + } + + if (this.outsideNestTicks > 0) { + this.outsideNestTicks--; + } + + if (this.getTarget() != null) { + this.leaveMarch(); + return; + } + + if (!this.canMarch()) { + this.leaveMarch(); + } else if (this.tickCount % 20 == 0) { + this.refreshMarch(); + } + + if (this.tryEnterNest()) { + return; + } + + if (this.handlePriorityForaging()) { + return; + } + + this.tickLeaderStuckDetector(); + this.tickIdleSound(); + } + + @Override + public void setRecordPlayingNearby(BlockPos songPosition, boolean isPlaying) { + this.jukeboxPos = songPosition == null ? null : songPosition.immutable(); + this.setDancing(isPlaying && this.jukeboxPos != null); + this.nextJukeboxScanTick = 0; + } + + + private void tickLeaderStuckDetector() { + if (this.level().isClientSide || !this.isMarchLeader()) { + return; + } + + boolean anyMoveGoalRunning = false; + for (var wrapped : this.goalSelector.getAvailableGoals()) { + if (wrapped.isRunning() && wrapped.getGoal().getFlags().contains(Goal.Flag.MOVE)) { + anyMoveGoalRunning = true; + break; + } + } + + if (!anyMoveGoalRunning && this.getNavigation().isDone()) { + this.stuckDetectorTicks++; + } else { + this.stuckDetectorTicks = 0; + } + } + + private static void logDebug(String message, Object... args) { + } + + private static void logWarn(String message, Object... args) { + } + + @Override + public void remove(Entity.RemovalReason reason) { + if (!this.level().isClientSide && this.isInMarch() && this.level() instanceof ServerLevel serverLevel) { + AntMarchManager.get(serverLevel).unregister(this.marchLeaderUuid, this.marchOrder); + } + super.remove(reason); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack itemStack = player.getItemInHand(hand); + if (this.isFood(itemStack)) { + return super.mobInteract(player, hand); + } + + return AntTeleportHelper.handleInteraction(this, player, itemStack); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.isDancing() && (source == this.damageSources().inWall() || source == this.damageSources().cramming())) { + return false; + } + + return super.hurt(source, amount); + } + + @Override + public boolean doHurtTarget(Entity target) { + boolean attacked = super.doHurtTarget(target); + if (attacked) { + if (this instanceof RedAntEntity) { + this.setBiteAnimationTicks(8); + } + this.playSound(AntarchySoundEvents.ANT_BITE.get(), 0.35F, 0.95F + this.random.nextFloat() * 0.1F); + } + return attacked; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putBoolean(HAS_FOOD, this.isCarryingFood()); + if (this.isCarryingFood()) { + tag.put(CARRIED_FOOD_TAG, this.getCarriedFood().save(this.registryAccess())); + } + tag.putInt(OUTSIDE_NEST_TICKS_KEY, this.outsideNestTicks); + tag.putBoolean(TELEPORT_ACTIVATED, this.teleportActivated); + if (this.marchLeaderUuid != null) { + tag.putUUID(MARCH_LEADER_UUID, this.marchLeaderUuid); + tag.putInt(MARCH_ORDER_KEY, this.marchOrder); + } + if (this.nestPos != null) { + tag.putInt(NEST_X, this.nestPos.getX()); + tag.putInt(NEST_Y, this.nestPos.getY()); + tag.putInt(NEST_Z, this.nestPos.getZ()); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + if (tag.contains(CARRIED_FOOD_TAG)) { + this.setCarriedFood(ItemStack.parseOptional(this.registryAccess(), tag.getCompound(CARRIED_FOOD_TAG))); + } else if (tag.getBoolean(HAS_FOOD)) { + this.setCarriedFood(new ItemStack(Items.APPLE)); + } else { + this.clearCarriedFood(); + } + this.outsideNestTicks = tag.getInt(OUTSIDE_NEST_TICKS_KEY); + this.teleportActivated = tag.getBoolean(TELEPORT_ACTIVATED); + if (tag.hasUUID(MARCH_LEADER_UUID)) { + this.marchLeaderUuid = tag.getUUID(MARCH_LEADER_UUID); + this.marchOrder = Math.max(0, tag.getInt(MARCH_ORDER_KEY)); + } else { + this.marchLeaderUuid = null; + this.marchOrder = -1; + } + if (tag.contains(NEST_X) && tag.contains(NEST_Y) && tag.contains(NEST_Z)) { + this.nestPos = new BlockPos(tag.getInt(NEST_X), tag.getInt(NEST_Y), tag.getInt(NEST_Z)); + } else { + this.nestPos = null; + } + this.nextMarchFollowRepathTick = 0; + this.nextJukeboxScanTick = 0; + this.clearFoodChestTarget(); + this.clearRecentFoodChest(); + this.clearRecentGroundFood(); + this.nextNestSearchTick = 0; + this.markNestCacheDirty(); + this.invalidateGroundFoodCache(); + } + + public void setNestPos(BlockPos nestPos) { + this.nestPos = nestPos; + this.markNestCacheDirty(); + } + + public void onEnterNest() { + this.clearCarriedFood(); + this.outsideNestTicks = 0; + this.clearFoodChestTarget(); + this.clearRecentFoodChest(); + this.clearRecentGroundFood(); + this.leaveMarch(); + this.markNestCacheDirty(); + this.playSound(AntarchySoundEvents.ANT_NEST.get(), 0.3F, 1.0F + this.getRandom().nextFloat() * 0.1F); + } + + public void onExitNest() { + this.outsideNestTicks = MIN_OUTSIDE_NEST_TICKS + this.random.nextInt(EXTRA_OUTSIDE_NEST_TICKS); + this.clearFoodChestTarget(); + this.clearRecentFoodChest(); + this.clearRecentGroundFood(); + this.leaveMarch(); + this.markNestCacheDirty(); + this.playSound(AntarchySoundEvents.ANT_NEST.get(), 0.3F, 1.0F + this.getRandom().nextFloat() * 0.1F); + } + + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + BaseAntEntity child = this.getType().create(level) instanceof BaseAntEntity antChild ? antChild : null; + if (child != null) { + child.setNestPos(this.nestPos); + } + return child; + } + + @Override + protected void dropCustomDeathLoot(ServerLevel level, net.minecraft.world.damagesource.DamageSource damageSource, boolean recentlyHit) { + super.dropCustomDeathLoot(level, damageSource, recentlyHit); + if (this.isCarryingFood()) { + ItemStack droppedFood = this.getCarriedFood().copy(); + this.clearCarriedFood(); + ItemEntity itemEntity = this.spawnAtLocation(droppedFood, 0.1F); + if (itemEntity != null) { + itemEntity.setPickUpDelay(40); + } + } + } + + @Override + public boolean isFood(ItemStack stack) { + return stack.is(this.breedingFoodsTag()); + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.ANT_AMBIENT.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.ANT_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.ANT_HURT.get(); + } + + @Override + public void playAmbientSound() { + SoundEvent ambientSound = this.getAmbientSound(); + if (ambientSound != null) { + this.playSound(ambientSound, 0.1F, this.getVoicePitch()); + } + } + + @Override + protected void playStepSound(BlockPos pos, BlockState state) { + } + + protected abstract ResourceKey destinationDimension(); + protected abstract TagKey activationItemsTag(); + protected abstract TagKey breedingFoodsTag(); + protected abstract String activationMessageKey(); + protected abstract String needsReagentMessageKey(); + protected abstract double configuredMaxHealth(); + + protected boolean requiresActivationReagent() { return false; } + protected double configuredAttackDamage() { return 1.0D; } + protected boolean canForageGroundFood() { return true; } + protected boolean canGroupWithNestmates() { return true; } + protected boolean canMarch() { return true; } + protected boolean canTraverseFluidFloor(FluidState fluidState) { return false; } + + + protected boolean handlePriorityForaging() { return false; } + + private boolean shouldUseSharedMarchForageGoal() { + return this.canRunAntMovementGoals() + && this.canMarch() + && this.isMarchFollower() + && !this.isCarryingFood() + && !this.isInLove() + && (this.getSharedMarchFoodChestPos() != null || this.getSharedMarchGroundFoodPos() != null); + } + + private void tickSharedMarchForageGoal() { + if (!this.handleSharedMarchChestForaging()) { + this.handleSharedMarchGroundFoodForaging(); + } + } + + private boolean shouldUseMarchFollowGoal() { + return this.canRunAntMovementGoals() + && this.canMarch() + && this.isMarchFollower() + && !this.shouldUseSharedMarchForageGoal(); + } + + private void tickMarchFollowGoal() { + this.handleMarchFollowing(); + } + + private boolean shouldUseReturnToNestGoal() { + if (this.tickCount < this.returnToNestFailureCooldownTick) { + return false; + } + return this.canRunAntMovementGoals() && this.shouldReturnToNest(this.getReturnToNestReason()); + } + + private void tickReturnToNestGoal() { + this.navigateToNest(1.15D); + } + + private boolean shouldUseForageGoal() { + return this.canRunAntMovementGoals() + && this.canForageGroundFood() + && !this.isCarryingFood() + && !this.isInLove() + && this.hasForageTarget(); + } + + private void tickForageGoal() { + this.handleGroundFoodForaging(); + } + + private void findNearestNestIfNeeded() { + this.nextNestSearchTick = this.tickCount + (this.isCarryingFood() ? FOOD_NEST_SEARCH_INTERVAL_TICKS : NEST_SEARCH_INTERVAL_TICKS); + if (this.hasUsableNest()) { + return; + } + this.nestPos = this.findNearestNestInLoadedChunks(); + this.markNestCacheDirty(); + } + + @Nullable + private BlockPos findNearestNestInLoadedChunks() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return this.findNearestNestInArea(); + } + + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + int bestDistance = Integer.MAX_VALUE; + int minChunkX = (origin.getX() - NEST_SEARCH_RADIUS_HORIZONTAL) >> 4; + int maxChunkX = (origin.getX() + NEST_SEARCH_RADIUS_HORIZONTAL) >> 4; + int minChunkZ = (origin.getZ() - NEST_SEARCH_RADIUS_HORIZONTAL) >> 4; + int maxChunkZ = (origin.getZ() + NEST_SEARCH_RADIUS_HORIZONTAL) >> 4; + + for (int chunkX = minChunkX; chunkX <= maxChunkX; chunkX++) { + for (int chunkZ = minChunkZ; chunkZ <= maxChunkZ; chunkZ++) { + if (!serverLevel.hasChunk(chunkX, chunkZ)) { + continue; + } + + LevelChunk chunk = serverLevel.getChunk(chunkX, chunkZ); + for (BlockEntity blockEntity : chunk.getBlockEntities().values()) { + if (!(blockEntity instanceof AntNestBlockEntity nestBlockEntity) || !nestBlockEntity.canAccept(this.getType())) { + continue; + } + + BlockPos pos = blockEntity.getBlockPos(); + if (Math.abs(pos.getX() - origin.getX()) > NEST_SEARCH_RADIUS_HORIZONTAL + || Math.abs(pos.getY() - origin.getY()) > NEST_SEARCH_RADIUS_VERTICAL + || Math.abs(pos.getZ() - origin.getZ()) > NEST_SEARCH_RADIUS_HORIZONTAL) { + continue; + } + + int distance = pos.distManhattan(origin); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = pos.immutable(); + } + } + } + } + + return bestPos; + } + + @Nullable + private BlockPos findNearestNestInArea() { + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + int bestDistance = Integer.MAX_VALUE; + + for (BlockPos pos : BlockPos.betweenClosed( + origin.offset(-NEST_SEARCH_RADIUS_HORIZONTAL, -NEST_SEARCH_RADIUS_VERTICAL, -NEST_SEARCH_RADIUS_HORIZONTAL), + origin.offset(NEST_SEARCH_RADIUS_HORIZONTAL, NEST_SEARCH_RADIUS_VERTICAL, NEST_SEARCH_RADIUS_HORIZONTAL))) { + BlockEntity blockEntity = this.level().getBlockEntity(pos); + if (!(blockEntity instanceof AntNestBlockEntity nestBlockEntity) || !nestBlockEntity.canAccept(this.getType())) { + continue; + } + + int distance = pos.distManhattan(origin); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = pos.immutable(); + } + } + + return bestPos; + } + + private boolean handleGroundFoodForaging() { + if (!this.canForageGroundFood() || this.isCarryingFood() || this.isInLove()) { + return false; + } + + ItemEntity nearestFood = this.nearestGroundFood(); + + if (nearestFood == null) { + return this.handleChestFoodForaging(); + } + + if (this.distanceToSqr(nearestFood) <= 2.25D) { + this.collectGroundFood(nearestFood); + return true; + } + + this.getNavigation().moveTo(nearestFood, GROUND_FOOD_MOVE_SPEED); + return true; + } + + private boolean handleChestFoodForaging() { + if (!AntarchySettings.antsStealFromChests()) { + return false; + } + + BlockPos chestPos = this.getCurrentFoodChestPos(); + if (chestPos == null) { + return false; + } + + Vec3 chestCenter = Vec3.atBottomCenterOf(chestPos); + if (this.distanceToSqr(chestCenter) <= 4.0D) { + return this.stealFoodFromChest(chestPos); + } + + if (this.getNavigation().isDone() || this.tickCount % CHEST_REPATH_TICKS == 0) { + this.getNavigation().moveTo(chestCenter.x, chestCenter.y, chestCenter.z, CHEST_MOVE_SPEED); + } + return true; + } + + private boolean handleSharedMarchChestForaging() { + if (this.isCarryingFood() || this.isInLove() || !AntarchySettings.antsStealFromChests()) { + return false; + } + + BlockPos chestPos = this.getSharedMarchFoodChestPos(); + if (chestPos == null) { + return false; + } + + this.targetFoodChestPos = chestPos; + Vec3 chestCenter = Vec3.atBottomCenterOf(chestPos); + if (this.distanceToSqr(chestCenter) <= 4.0D) { + return this.stealFoodFromChest(chestPos); + } + + if (this.getNavigation().isDone() || this.tickCount % CHEST_REPATH_TICKS == 0) { + this.getNavigation().moveTo(chestCenter.x, chestCenter.y, chestCenter.z, SHARED_CHEST_MOVE_SPEED); + } + return true; + } + + private boolean handleSharedMarchGroundFoodForaging() { + if (this.isCarryingFood() || this.isInLove()) { + return false; + } + + BlockPos groundFoodPos = this.getSharedMarchGroundFoodPos(); + if (groundFoodPos == null) { + return false; + } + + ItemEntity nearestFood = this.findNearestGroundFoodAt(groundFoodPos); + if (nearestFood == null) { + return false; + } + + if (this.distanceToSqr(nearestFood) <= 2.25D) { + this.collectGroundFood(nearestFood); + return true; + } + + this.getNavigation().moveTo(nearestFood, SHARED_GROUND_FOOD_MOVE_SPEED); + return true; + } + + @Nullable + private BlockPos getCurrentFoodChestPos() { + if (this.targetFoodChestPos != null && this.isValidFoodChest(this.targetFoodChestPos)) { + return this.targetFoodChestPos; + } + + this.targetFoodChestPos = null; + BlockPos sharedMarchChestPos = this.getSharedMarchFoodChestPos(); + if (sharedMarchChestPos != null) { + this.targetFoodChestPos = sharedMarchChestPos; + return this.targetFoodChestPos; + } + if (this.tickCount < this.nextFoodChestSearchTick) { + return null; + } + + this.nextFoodChestSearchTick = this.tickCount + CHEST_SEARCH_INTERVAL_TICKS; + this.targetFoodChestPos = this.findClosestFoodChest(); + return this.targetFoodChestPos; + } + + @Nullable + private BlockPos findClosestFoodChest() { + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + double bestDistance = Double.MAX_VALUE; + + for (BlockPos pos : BlockPos.betweenClosed( + origin.offset(-(int) FOOD_CHEST_SEARCH_RADIUS, -2, -(int) FOOD_CHEST_SEARCH_RADIUS), + origin.offset((int) FOOD_CHEST_SEARCH_RADIUS, 2, (int) FOOD_CHEST_SEARCH_RADIUS))) { + BlockEntity blockEntity = this.level().getBlockEntity(pos); + if (!(blockEntity instanceof ChestBlockEntity chestBlockEntity) || this.findStealableFoodSlot(chestBlockEntity) < 0) { + continue; + } + + double distance = pos.distSqr(origin); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = pos.immutable(); + } + } + + return bestPos; + } + + private boolean isValidFoodChest(BlockPos chestPos) { + BlockEntity blockEntity = this.level().getBlockEntity(chestPos); + return blockEntity instanceof ChestBlockEntity chestBlockEntity && this.findStealableFoodSlot(chestBlockEntity) >= 0; + } + + private void clearFoodChestTarget() { + this.targetFoodChestPos = null; + this.nextFoodChestSearchTick = 0; + } + + private boolean stealFoodFromChest(BlockPos chestPos) { + BlockEntity blockEntity = this.level().getBlockEntity(chestPos); + if (!(blockEntity instanceof ChestBlockEntity chestBlockEntity)) { + this.clearFoodChestTarget(); + return false; + } + + int foodSlot = this.findStealableFoodSlot(chestBlockEntity); + if (foodSlot < 0) { + this.clearFoodChestTarget(); + return false; + } + + ItemStack stolenStack = chestBlockEntity.removeItem(foodSlot, 1); + if (stolenStack.isEmpty()) { + this.clearFoodChestTarget(); + return false; + } + + this.playSound(AntarchySoundEvents.ANT_GATHER.get(), 0.3F, 1.0F + this.getRandom().nextFloat() * 0.1F); + this.startReturningToNestWithFood(stolenStack, chestPos); + return true; + } + + private int findStealableFoodSlot(Container container) { + for (int slot = 0; slot < container.getContainerSize(); slot++) { + ItemStack itemStack = container.getItem(slot); + if (!itemStack.isEmpty() && this.isGroundFood(itemStack)) { + return slot; + } + } + + return -1; + } + + private void refreshMarch() { + this.validateMarchState(); + if (this.isInMarch()) { + return; + } + + if (this.tryJoinNearbyMarch()) { + return; + } + + this.startOwnMarch(); + } + + private void validateMarchState() { + if (!this.isInMarch()) { + return; + } + + if (this.isMarchLeader()) { + return; + } + + if (!(this.level() instanceof ServerLevel serverLevel)) { + this.leaveMarch(); + return; + } + + BaseAntEntity leader = AntMarchManager.get(serverLevel).getLeader(this.marchLeaderUuid); + if (leader == null || !leader.isAlive() || !this.canShareMarchWith(leader)) { + this.leaveMarch(); + return; + } + + if (this.distanceToSqr(leader) > MARCH_LEADER_LOST_DISTANCE_SQR) { + this.leaveMarch(); + } + } + + private boolean tryJoinNearbyMarch() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return false; + } + + AntMarchManager manager = AntMarchManager.get(serverLevel); + List candidates = manager.getParticipantsNear(this, MARCH_SEARCH_RADIUS, 3.0D); + + BaseAntEntity targetMarchAnt = candidates.stream() + .filter(ant -> ant.isInMarch() && ant.canAcceptMarchFollower(this) && this.canShareMarchWith(ant)) + .min(Comparator.comparingDouble(this::distanceToSqr)) + .orElse(null); + + if (targetMarchAnt == null) { + return false; + } + + BaseAntEntity leader = targetMarchAnt.isMarchLeader() + ? targetMarchAnt + : manager.getLeader(targetMarchAnt.marchLeaderUuid); + + if (leader == null || leader == this) { + return false; + } + + this.joinMarch(leader, manager.getNextOrder(leader.getUUID())); + return true; + } + + private void startOwnMarch() { + if (this.isInMarch()) { + return; + } + + this.marchLeaderUuid = this.getUUID(); + this.marchOrder = 0; + if (this.level() instanceof ServerLevel serverLevel) { + AntMarchManager.get(serverLevel).register(this.marchLeaderUuid, this.marchOrder, this); + } + } + + private void joinMarch(BaseAntEntity leader, int order) { + if (this.isInMarch()) { + this.leaveMarch(); + } + this.marchLeaderUuid = leader.getUUID(); + this.marchOrder = order; + this.nextMarchFollowRepathTick = 0; + if (this.level() instanceof ServerLevel serverLevel) { + AntMarchManager.get(serverLevel).register(this.marchLeaderUuid, this.marchOrder, this); + } + } + + private void leaveMarch() { + if (!this.isInMarch()) { + return; + } + + if (this.level() instanceof ServerLevel serverLevel) { + AntMarchManager.get(serverLevel).unregister(this.marchLeaderUuid, this.marchOrder); + } + this.marchLeaderUuid = null; + this.marchOrder = -1; + this.nextMarchFollowRepathTick = 0; + } + + private boolean handleMarchFollowing() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return false; + } + + AntMarchManager manager = AntMarchManager.get(serverLevel); + BaseAntEntity leader = manager.getLeader(this.marchLeaderUuid); + if (leader == null) { + this.leaveMarch(); + return false; + } + + BaseAntEntity predecessor = manager.getPredecessor(this.marchLeaderUuid, this.marchOrder); + if (predecessor == null) { + predecessor = leader; + } + + Vec3 followTarget = this.getMarchFollowTarget(predecessor); + double distanceToTarget = this.distanceToSqr(followTarget.x, followTarget.y, followTarget.z); + if (distanceToTarget > 0.04D + && (this.getNavigation().isDone() + || distanceToTarget > 4.0D + || this.tickCount >= this.nextMarchFollowRepathTick)) { + double followSpeed = distanceToTarget > 4.0D ? MARCH_FOLLOW_CATCHUP_SPEED : MARCH_FOLLOW_SPEED; + this.getNavigation().moveTo(followTarget.x, followTarget.y, followTarget.z, followSpeed); + this.nextMarchFollowRepathTick = this.tickCount + MARCH_FOLLOW_REPATH_TICKS; + } + return true; + } + + private Vec3 getMarchFollowTarget(BaseAntEntity predecessor) { + Vec3 direction = predecessor.getDeltaMovement(); + Vec3 horizontal = new Vec3(direction.x, 0.0D, direction.z); + if (horizontal.lengthSqr() < 1.0E-4D) { + float yawRadians = predecessor.getYRot() * ((float) Math.PI / 180.0F); + horizontal = new Vec3(-Mth.sin(yawRadians), 0.0D, Mth.cos(yawRadians)); + } + if (horizontal.lengthSqr() < 1.0E-4D) { + horizontal = new Vec3(0.0D, 0.0D, 1.0D); + } + + return predecessor.position().subtract(horizontal.normalize().scale(0.85D)).add(0.0D, 0.05D, 0.0D); + } + + boolean isInMarch() { + return this.marchLeaderUuid != null && this.marchOrder >= 0; + } + + boolean isMarchLeader() { + return this.isInMarch() && this.marchOrder == 0 && this.getUUID().equals(this.marchLeaderUuid); + } + + private boolean isMarchFollower() { + return this.isInMarch() && !this.isMarchLeader(); + } + + boolean canAcceptMarchFollower(BaseAntEntity otherAnt) { + return this.isInMarch() && this.canShareMarchWith(otherAnt); + } + + private boolean canShareMarchWith(BaseAntEntity otherAnt) { + if (otherAnt.getType() == this.getType()) { + return true; + } + + return this.canGroupWithNestmates() + && otherAnt.canGroupWithNestmates() + && this.sharesNestWith(otherAnt); + } + + private boolean tryEnterNest() { + if (this.nestPos == null + || this.tickCount % 5 != 0 + || !this.canEnterNest() + || !this.isNearNestEntrance()) { + return false; + } + + BlockEntity blockEntity = this.level().getBlockEntity(this.nestPos); + return blockEntity instanceof AntNestBlockEntity nestBlockEntity && nestBlockEntity.tryStoreAnt(this); + } + + private boolean shouldReturnToNest(@Nullable String returnReason) { + return returnReason != null && this.canEnterNest(); + } + + private boolean canEnterNest() { + return this.isCarryingFood() || this.outsideNestTicks <= 0; + } + + private void navigateToNest(double speed) { + if (this.nestPos == null) { + return; + } + + BlockPos entrancePos = this.nestPos.above(); + Vec3 entrance = Vec3.atBottomCenterOf(entrancePos); + double horizontalDistanceSqr = Mth.lengthSquared(this.getX() - entrance.x, this.getZ() - entrance.z); + if (horizontalDistanceSqr <= 4.0D && Math.abs(this.getY() - entrance.y) <= 1.5D) { + this.getNavigation().stop(); + this.getMoveControl().setWantedPosition(entrance.x, entrance.y, entrance.z, Math.min(speed, NEST_RETURN_MOVE_SPEED)); + return; + } + + if (this.tickCount % 10 == 0 || this.getNavigation().isDone()) { + this.getNavigation().moveTo(entrance.x, entrance.y, entrance.z, Math.min(speed, NEST_RETURN_MOVE_SPEED)); + } + } + + private boolean isNearNestEntrance() { + if (this.nestPos == null) { + return false; + } + + BlockPos entrancePos = this.nestPos.above(); + if (!this.blockPosition().equals(entrancePos)) { + return false; + } + + Vec3 entrance = Vec3.atBottomCenterOf(entrancePos); + return Math.abs(this.getX() - entrance.x) <= 0.35D + && Math.abs(this.getZ() - entrance.z) <= 0.35D + && Math.abs(this.getY() - entrance.y) <= 0.8D; + } + + private boolean shouldSearchForNest() { + return !this.hasUsableNest() && this.tickCount >= this.nextNestSearchTick; + } + + private void markNestCacheDirty() { + this.nestCacheDirty = true; + this.nextNestCacheTick = 0; + } + + private boolean hasUsableNest() { + if (this.nestCacheDirty || this.tickCount >= this.nextNestCacheTick) { + this.cachedHasUsableNest = this.nestPos != null + && this.level().getBlockEntity(this.nestPos) instanceof AntNestBlockEntity nestBlockEntity + && nestBlockEntity.canAccept(this.getType()); + this.nestCacheDirty = false; + this.nextNestCacheTick = this.tickCount + NEST_CACHE_INTERVAL_TICKS; + } + return this.cachedHasUsableNest; + } + + @Nullable + private ItemEntity nearestGroundFood() { + if (this.tickCount >= this.nextGroundFoodCacheTick + || (this.cachedNearestGroundFood != null && !this.cachedNearestGroundFood.isAlive())) { + this.cachedNearestGroundFood = this.findNearestGroundFoodRaw(); + this.nextGroundFoodCacheTick = this.tickCount + GROUND_FOOD_CACHE_INTERVAL_TICKS; + } + return this.cachedNearestGroundFood; + } + + private void invalidateGroundFoodCache() { + this.cachedNearestGroundFood = null; + this.nextGroundFoodCacheTick = 0; + } + + private boolean canRunAntMovementGoals() { + return !this.level().isClientSide && this.isAlive() && !this.isRemoved() && this.getTarget() == null; + } + + private boolean hasForageTarget() { + return this.nearestGroundFood() != null || this.getCurrentFoodChestPos() != null; + } + + private boolean sharesNestWith(BaseAntEntity otherAnt) { + return this.nestPos != null && this.nestPos.equals(otherAnt.nestPos); + } + + private boolean isGroundFood(ItemStack stack) { + return stack.has(DataComponents.FOOD); + } + + private void collectGroundFood(ItemEntity itemEntity) { + this.rememberRecentGroundFood(itemEntity.blockPosition()); + this.invalidateGroundFoodCache(); + ItemStack itemStack = itemEntity.getItem(); + ItemStack carriedStack = itemStack.copyWithCount(1); + itemStack.shrink(1); + if (itemStack.isEmpty()) { + itemEntity.discard(); + } else { + itemEntity.setItem(itemStack); + } + + this.playSound(AntarchySoundEvents.ANT_GATHER.get(), 0.4F, 1.0F + this.getRandom().nextFloat() * 0.1F); + this.startReturningToNestWithFood(carriedStack); + } + + private void tickIdleSound() { + if (this.tickCount < this.nextIdleSoundTick) { + return; + } + + if (!this.onGround() || this.getTarget() != null || this.isCarryingFood() || this.isDancing()) { + return; + } + + if (this.getDeltaMovement().horizontalDistanceSqr() > 0.0025D) { + return; + } + + this.nextIdleSoundTick = this.tickCount + 60 + this.random.nextInt(120); + this.playSound(AntarchySoundEvents.ANT_IDLE.get(), 0.1F, 0.9F + this.random.nextFloat() * 0.15F); + } + + @Nullable + private String getReturnToNestReason() { + if (!this.hasUsableNest()) { + return null; + } + + if (this.isCarryingFood()) { + return "has_food"; + } + + if (this.level().isNight()) { + return "night"; + } + + if (this.level().isRaining()) { + return "raining"; + } + + if (this.distanceToSqr(Vec3.atCenterOf(this.nestPos.above())) > MAX_NEST_WANDER_DISTANCE_SQR) { + return "too_far_from_nest"; + } + + return null; + } + + private void syncConfiguredAttributes() { + this.syncAttribute(this.getAttribute(Attributes.MAX_HEALTH), this.configuredMaxHealth(), true); + this.syncAttribute(this.getAttribute(Attributes.ATTACK_DAMAGE), this.configuredAttackDamage(), false); + } + + public boolean isDancing() { + return this.entityData.get(DANCING); + } + + private void setDancing(boolean dancing) { + this.entityData.set(DANCING, dancing); + } + + private void tickJukeboxDanceState() { + if (this.jukeboxPos != null) { + if (this.tickCount % 20 == 0 && !this.isJukeboxActivelyPlayingAt(this.jukeboxPos, this.cachedDanceRadius)) { + this.jukeboxPos = null; + if (this.isDancing()) { + this.setDancing(false); + } + } + if (this.jukeboxPos != null) { + return; + } + } + + if (this.tickCount < this.nextJukeboxScanTick) { + if (this.isDancing()) { + this.setDancing(false); + } + return; + } + + this.cachedDanceRadius = Math.max(1.0D, AntarchySettings.antDanceRadius()); + this.nextJukeboxScanTick = this.tickCount + JUKEBOX_SCAN_INTERVAL_TICKS; + BlockPos nearbyJukebox = this.findNearestPlayingJukebox(this.cachedDanceRadius); + this.jukeboxPos = nearbyJukebox; + this.setDancing(nearbyJukebox != null); + } + + private boolean isJukeboxActivelyPlayingAt(BlockPos jukeboxPos, double danceRadius) { + if (!jukeboxPos.closerToCenterThan(this.position(), danceRadius)) { + return false; + } + + return this.isJukeboxPlayingFromState(jukeboxPos); + } + + @Nullable + private BlockPos findNearestPlayingJukebox(double danceRadius) { + int radius = Mth.ceil(danceRadius); + BlockPos center = this.blockPosition(); + BlockPos closest = null; + double closestDistanceSqr = Double.MAX_VALUE; + + for (BlockPos pos : BlockPos.betweenClosed( + center.getX() - radius, center.getY() - radius, center.getZ() - radius, + center.getX() + radius, center.getY() + radius, center.getZ() + radius)) { + if (!pos.closerToCenterThan(this.position(), danceRadius)) { + continue; + } + + if (!this.level().getBlockState(pos).is(Blocks.JUKEBOX)) { + continue; + } + + if (!this.isJukeboxPlayingFromState(pos)) { + continue; + } + + double distanceSqr = this.distanceToSqr(Vec3.atCenterOf(pos)); + if (distanceSqr < closestDistanceSqr) { + closestDistanceSqr = distanceSqr; + closest = pos.immutable(); + } + } + + return closest; + } + + private boolean isJukeboxPlayingFromState(BlockPos pos) { + BlockState state = this.level().getBlockState(pos); + if (!state.is(Blocks.JUKEBOX)) { + return false; + } + + return state.hasProperty(BlockStateProperties.HAS_RECORD) && state.getValue(BlockStateProperties.HAS_RECORD); + } + + private PlayState mainAnimController(AnimationState state) { + if (this.isDancing()) { + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(DANCE_ANIM); + } + + if (this.shouldPlayAttackAnimation()) { + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(ATTACK_ANIM); + } + + if (this.walkAnimation.isMoving() || this.getDeltaMovement().horizontalDistanceSqr() > 1.0E-4D) { + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(WALK_ANIM); + } + + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(IDLE_ANIM); + } + + private boolean shouldPlayAttackAnimation() { + if (!(this instanceof RedAntEntity)) { + return false; + } + + return this.getBiteAnimationTicks() > 0; + } + + private int getBiteAnimationTicks() { + return this.entityData.get(BITE_ANIM_TICKS); + } + + private void setBiteAnimationTicks(int ticks) { + this.entityData.set(BITE_ANIM_TICKS, Math.max(0, ticks)); + } + + private void syncAttribute(@Nullable AttributeInstance attributeInstance, double desiredValue, boolean rescaleCurrentHealth) { + if (attributeInstance == null || Math.abs(attributeInstance.getBaseValue() - desiredValue) < ATTRIBUTE_EPSILON) { + return; + } + + if (rescaleCurrentHealth) { + double previousMaxHealth = attributeInstance.getBaseValue(); + float healthRatio = previousMaxHealth > 0.0D ? this.getHealth() / (float) previousMaxHealth : 1.0F; + attributeInstance.setBaseValue(desiredValue); + this.setHealth((float) Mth.clamp(healthRatio * desiredValue, 0.0D, desiredValue)); + return; + } + + attributeInstance.setBaseValue(desiredValue); + } + + protected ServerLevel resolveReturnDestinationLevel(ServerPlayer player) { + return AntTeleportHelper.resolveReturnDestinationLevel(player); + } + + protected Vec3 getDestinationPosition(ServerLevel destination, ServerPlayer player) { + return AntTeleportHelper.getDestinationPosition(player, destination); + } + + public boolean isCarryingFood() { + return !this.getCarriedFood().isEmpty(); + } + + public ItemStack getCarriedFood() { + return this.entityData.get(CARRIED_FOOD); + } + + boolean isTeleportActivatedState() { + return this.teleportActivated; + } + + void setTeleportActivatedState(boolean teleportActivated) { + this.teleportActivated = teleportActivated; + } + + private void setCarriedFood(ItemStack stack) { + this.entityData.set(CARRIED_FOOD, stack.isEmpty() ? ItemStack.EMPTY : stack.copyWithCount(1)); + } + + private void clearCarriedFood() { + this.entityData.set(CARRIED_FOOD, ItemStack.EMPTY); + } + + private void startReturningToNestWithFood(ItemStack carriedFood, @Nullable BlockPos sourceChestPos) { + this.setCarriedFood(carriedFood); + this.outsideNestTicks = 0; + if (sourceChestPos != null) { + this.rememberRecentFoodChest(sourceChestPos); + } + this.clearFoodChestTarget(); + if (!this.hasUsableNest()) { + this.findNearestNestIfNeeded(); + } + if (this.nestPos != null) { + if (this.isMarchLeader()) { + logDebug( + "[Antarchy] March leader {} picked up {} and is heading to nest at {}.", + this.getUUID(), carriedFood.getItem(), this.nestPos); + } + Vec3 entrance = Vec3.atBottomCenterOf(this.nestPos.above()); + this.getNavigation().moveTo(entrance.x, entrance.y, entrance.z, FOOD_RETURN_MOVE_SPEED); + } else { + if (this.isMarchLeader()) { + logWarn( + "[Antarchy] March leader {} picked up {} but has no nest — stroll fallback. pos={}", + this.getUUID(), carriedFood.getItem(), this.blockPosition()); + } + this.getNavigation().stop(); + } + } + + private void startReturningToNestWithFood(ItemStack carriedFood) { + this.startReturningToNestWithFood(carriedFood, null); + } + + private void rememberRecentFoodChest(BlockPos chestPos) { + this.recentFoodChestPos = chestPos.immutable(); + this.recentFoodChestExpireTick = this.tickCount + SHARED_CHEST_MEMORY_TICKS; + } + + private void clearRecentFoodChest() { + this.recentFoodChestPos = null; + this.recentFoodChestExpireTick = 0; + } + + private void rememberRecentGroundFood(BlockPos foodPos) { + this.recentGroundFoodPos = foodPos.immutable(); + this.recentGroundFoodExpireTick = this.tickCount + SHARED_CHEST_MEMORY_TICKS; + } + + private void clearRecentGroundFood() { + this.recentGroundFoodPos = null; + this.recentGroundFoodExpireTick = 0; + } + + @Nullable + private BlockPos getSharedMarchFoodChestPos() { + if (!this.isMarchFollower() || !(this.level() instanceof ServerLevel serverLevel)) { + return null; + } + + BaseAntEntity leader = AntMarchManager.get(serverLevel).getLeader(this.marchLeaderUuid); + if (leader == null || leader == this) { + return null; + } + + if (leader.targetFoodChestPos != null && this.isValidFoodChest(leader.targetFoodChestPos)) { + return leader.targetFoodChestPos; + } + + if (leader.recentFoodChestPos != null + && leader.tickCount <= leader.recentFoodChestExpireTick + && this.isValidFoodChest(leader.recentFoodChestPos)) { + return leader.recentFoodChestPos; + } + + return null; + } + + @Nullable + private BlockPos getSharedMarchGroundFoodPos() { + if (!this.isMarchFollower() || !(this.level() instanceof ServerLevel serverLevel)) { + return null; + } + + BaseAntEntity leader = AntMarchManager.get(serverLevel).getLeader(this.marchLeaderUuid); + if (leader == null || leader == this) { + return null; + } + + if (leader.recentGroundFoodPos != null + && leader.tickCount <= leader.recentGroundFoodExpireTick + && this.findNearestGroundFoodAt(leader.recentGroundFoodPos) != null) { + return leader.recentGroundFoodPos; + } + + return null; + } + + @Nullable + private ItemEntity findNearestGroundFoodAt(BlockPos foodPos) { + return this.level().getEntitiesOfClass( + ItemEntity.class, + new AABB(foodPos).inflate(2.0D, 1.5D, 2.0D), + itemEntity -> itemEntity.isAlive() + && !itemEntity.getItem().isEmpty() + && this.isGroundFood(itemEntity.getItem())) + .stream() + .min(Comparator.comparingDouble(this::distanceToSqr)) + .orElse(null); + } + + @Nullable + private ItemEntity findNearestGroundFoodRaw() { + return this.level().getEntitiesOfClass( + ItemEntity.class, + this.getBoundingBox().inflate(10.0D, 2.0D, 10.0D), + itemEntity -> itemEntity.isAlive() + && !itemEntity.getItem().isEmpty() + && this.isGroundFood(itemEntity.getItem())) + .stream() + .min(Comparator.comparingDouble(this::distanceToSqr)) + .orElse(null); + } + + private abstract class AbstractAntMoveGoal extends Goal { + protected AbstractAntMoveGoal() { + this.setFlags(EnumSet.of(Goal.Flag.MOVE)); + } + } + + private final class AntDanceGoal extends Goal { + private AntDanceGoal() { + this.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK, Goal.Flag.TARGET)); + } + + @Override + public boolean canUse() { + return isDancing(); + } + + @Override + public boolean canContinueToUse() { + return isDancing(); + } + + @Override + public void start() { + setTarget(null); + leaveMarch(); + getNavigation().stop(); + } + + @Override + public void tick() { + setTarget(null); + getNavigation().stop(); + getLookControl().setLookAt(getX(), getEyeY(), getZ(), 10.0F, 10.0F); + } + + @Override + public void stop() { + getNavigation().stop(); + } + } + + private final class AntSharedMarchForageGoal extends AbstractAntMoveGoal { + @Override + public boolean canUse() { + return shouldUseSharedMarchForageGoal(); + } + + @Override + public boolean canContinueToUse() { + return shouldUseSharedMarchForageGoal(); + } + + @Override + public void tick() { + tickSharedMarchForageGoal(); + } + } + + private final class AntMarchFollowGoal extends AbstractAntMoveGoal { + @Override + public boolean canUse() { + return shouldUseMarchFollowGoal(); + } + + @Override + public boolean canContinueToUse() { + return shouldUseMarchFollowGoal(); + } + + @Override + public void tick() { + tickMarchFollowGoal(); + } + } + + private final class AntReturnToNestGoal extends AbstractAntMoveGoal { + + private int navDoneStreak; + + @Override + public boolean canUse() { + return shouldUseReturnToNestGoal(); + } + + @Override + public boolean canContinueToUse() { + if (navDoneStreak >= RETURN_NAV_FAILURE_STREAK) { + returnToNestFailureCooldownTick = tickCount + RETURN_NAV_FAILURE_COOLDOWN; + logDebug( + "[Antarchy] AntReturnToNestGoal giving up — nav failed for {} ticks. " + + "leader={} pos={} nestPos={} reason={} cooldown={}t", + navDoneStreak, getUUID(), blockPosition(), nestPos, + getReturnToNestReason(), RETURN_NAV_FAILURE_COOLDOWN); + return false; + } + return shouldUseReturnToNestGoal(); + } + + @Override + public void start() { + navDoneStreak = 0; + if (isMarchLeader()) { + logDebug( + "[Antarchy] AntReturnToNestGoal START — leader={} nestPos={} carrying={} reason={}", + getUUID(), nestPos, isCarryingFood(), getReturnToNestReason()); + } + } + + @Override + public void stop() { + if (isMarchLeader()) { + logDebug( + "[Antarchy] AntReturnToNestGoal STOP — leader={} nestPos={} carrying={} navDone={}", + getUUID(), nestPos, isCarryingFood(), getNavigation().isDone()); + } + navDoneStreak = 0; + } + + @Override + public void tick() { + tickReturnToNestGoal(); + if (getNavigation().isDone()) { + navDoneStreak++; + if (isMarchLeader() && navDoneStreak == RETURN_NAV_FAILURE_STREAK) { + logDebug( + "[Antarchy] AntReturnToNestGoal nav stalled for {} ticks — will give up next canContinueToUse. " + + "leader={} pos={} nestPos={} carrying={} reason={}", + navDoneStreak, getUUID(), blockPosition(), nestPos, + isCarryingFood(), getReturnToNestReason()); + } + } else { + navDoneStreak = 0; + } + } + } + + private final class AntForageGoal extends AbstractAntMoveGoal { + @Override + public boolean canUse() { + return shouldUseForageGoal(); + } + + @Override + public boolean canContinueToUse() { + return shouldUseForageGoal(); + } + + @Override + public void start() { + if (isMarchLeader()) { + logDebug( + "[Antarchy] AntForageGoal START — leader={} pos={} groundFood={} chest={}", + getUUID(), blockPosition(), + nearestGroundFood() != null ? nearestGroundFood().blockPosition() : "null", + getCurrentFoodChestPos()); + } + } + + @Override + public void stop() { + if (isMarchLeader()) { + logDebug( + "[Antarchy] AntForageGoal STOP — leader={} pos={} carrying={}", + getUUID(), blockPosition(), isCarryingFood()); + } + } + + @Override + public void tick() { + tickForageGoal(); + } + } + + + private final class AntFoodEscapeGoal extends AvoidEntityGoal { + AntFoodEscapeGoal() { + super(BaseAntEntity.this, Player.class, 12.0F, ESCAPE_MOVE_SPEED, ESCAPE_MOVE_SPEED); + } + + @Override + public boolean canUse() { + return isCarryingFood() && !hasUsableNest() && super.canUse(); + } + + @Override + public boolean canContinueToUse() { + return isCarryingFood() && !hasUsableNest() && super.canContinueToUse(); + } + } + + + private final class AntRandomStrollGoal extends WaterAvoidingRandomStrollGoal { + private static final double FORWARD_BIAS_DISTANCE = 8.0D; + private static final int FORWARD_SEARCH_RADIUS = 8; + private static final int WIDE_SEARCH_RADIUS = 16; + private static final int MIN_DISTANCE_SQR = 4; + + AntRandomStrollGoal(double speedModifier) { + super(BaseAntEntity.this, speedModifier, 5); + } + @Override + public boolean canUse() { + if (isMarchLeader() || (isCarryingFood() && !hasUsableNest())) { + Vec3 pos = getPosition(); + if (pos != null) { + wantedX = pos.x; + wantedY = pos.y; + wantedZ = pos.z; + return true; + } + return false; + } + return super.canUse(); + } + + @Override + @Nullable + protected Vec3 getPosition() { + Vec3 heading = getStrollHeading(); + Vec3 forwardBias = position().add(heading.scale(FORWARD_BIAS_DISTANCE)); + Vec3 forward = findStrollTarget(BlockPos.containing(forwardBias), FORWARD_SEARCH_RADIUS); + if (forward != null) return forward; + return findStrollTarget(blockPosition(), WIDE_SEARCH_RADIUS); + } + + @Nullable + private Vec3 findStrollTarget(BlockPos center, int radius) { + for (int attempt = 0; attempt < 16; attempt++) { + int x = center.getX() + random.nextInt(radius * 2 + 1) - radius; + int z = center.getZ() + random.nextInt(radius * 2 + 1) - radius; + + BlockPos candidate = null; + for (int dy = 2; dy >= -4; dy--) { + BlockPos pos = new BlockPos(x, center.getY() + dy, z); + if (isValidStrollPos(pos)) { + candidate = pos; + break; + } + } + + if (candidate == null) continue; + if (candidate.distSqr(blockPosition()) < MIN_DISTANCE_SQR) continue; + if (nestPos != null && candidate.distSqr(nestPos) > MAX_NEST_WANDER_DISTANCE_SQR) continue; + + return new Vec3(candidate.getX() + 0.5D, candidate.getY(), candidate.getZ() + 0.5D); + } + return null; + } + + private Vec3 getStrollHeading() { + Vec3 movement = getDeltaMovement(); + Vec3 horizontal = new Vec3(movement.x, 0.0D, movement.z); + if (horizontal.lengthSqr() > 1.0E-4D) return horizontal.normalize(); + float yawRad = getYRot() * ((float) Math.PI / 180.0F); + return new Vec3(-Mth.sin(yawRad), 0.0D, Mth.cos(yawRad)); + } + + private boolean isValidStrollPos(BlockPos pos) { + BlockState floor = level().getBlockState(pos.below()); + FluidState fluidBelow = level().getFluidState(pos.below()); + if (!level().getBlockState(pos).isAir()) return false; + if (!fluidBelow.isEmpty() && !BaseAntEntity.this.canTraverseFluidFloor(fluidBelow)) return false; + if (!floor.isFaceSturdy(level(), pos.below(), Direction.UP)) return false; + AABB box = getBoundingBox().move( + pos.getX() + 0.5D - getX(), + pos.getY() - getY(), + pos.getZ() + 0.5D - getZ()); + return level().noCollision(BaseAntEntity.this, box); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BrownAntEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BrownAntEntity.java new file mode 100644 index 00000000..3cad8fd5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BrownAntEntity.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.content.entity.ant; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.resources.ResourceKey; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; +import software.bernie.geckolib.animatable.GeoEntity; + +public class BrownAntEntity extends BaseAntEntity implements GeoEntity { + public BrownAntEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + protected ResourceKey destinationDimension() { + return AntarchySettings.brownAntDestinationDimension(); + } + + @Override + protected TagKey activationItemsTag() { + return AntarchyTags.Items.BROWN_ANT_ACTIVATION_ITEMS; + } + + @Override + protected TagKey breedingFoodsTag() { + return AntarchyTags.Items.BROWN_ANT_BREEDING_FOODS; + } + + @Override + protected boolean requiresActivationReagent() { + return AntarchySettings.brownAntRequiresReagent(); + } + + @Override + protected String activationMessageKey() { + return "message.antarchy.brown_ant_activated"; + } + + @Override + protected String needsReagentMessageKey() { + return "message.antarchy.brown_ant_needs_reagent"; + } + + @Override + protected double configuredMaxHealth() { + return AntarchySettings.brownAntHealth(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/RainbowAntEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/RainbowAntEntity.java new file mode 100644 index 00000000..8d8ecd75 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/RainbowAntEntity.java @@ -0,0 +1,326 @@ +package com.craisinlord.antarchy.content.entity.ant; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.TagKey; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.LevelResource; +import net.minecraft.world.phys.Vec3; +import software.bernie.geckolib.animatable.GeoEntity; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Comparator; + +public class RainbowAntEntity extends BaseAntEntity implements GeoEntity { + private static final String DIMENSION_ID_TAG = "InfinityDimensionId"; + private static final String ACTIVATED_TAG = "InfinityActivated"; + private static final String INHERITED_TAG = "InfinityInherited"; + private static final String REROLL_ON_NEXT_REAGENT_TAG = "InfinityRerollOnNextReagent"; + private static final String INFINITY_NAMESPACE = "infinity"; + private String infinityDimensionId = ""; + private boolean infinityActivated; + private boolean infinityInherited; + private boolean infinityRerollOnNextReagent; + + public RainbowAntEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + public boolean requiresCustomPersistence() { + return this.hasActiveInfinityDestination() || super.requiresCustomPersistence(); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + if (!AntarchySettings.rainbowAntsLeadToInfinityDimensions() || !InfinityCompat.get().isAvailable()) { + return super.mobInteract(player, hand); + } + + if (!(player instanceof ServerPlayer serverPlayer)) { + return InteractionResult.SUCCESS; + } + + ItemStack heldItem = player.getItemInHand(hand); + + if (this.isInInfinityDimension(serverPlayer.serverLevel())) { + ServerLevel returnLevel = this.resolveReturnDestinationLevel(serverPlayer); + Vec3 returnPos = this.getDestinationPosition(returnLevel, serverPlayer); + serverPlayer.teleportTo(returnLevel, returnPos.x, returnPos.y, returnPos.z, serverPlayer.getYRot(), serverPlayer.getXRot()); + serverPlayer.playSound(SoundEvents.ENDERMAN_TELEPORT, 1.0F, 1.0F); + return InteractionResult.CONSUME; + } + + if (!this.infinityActivated) { + if (!AntarchySettings.rainbowAntRequiresReagent()) { + if (this.isFood(heldItem)) { + return super.mobInteract(player, hand); + } + + if (!heldItem.isEmpty() && !heldItem.is(AntarchyTags.Items.RAINBOW_ANT_ACTIVATION_ITEMS)) { + return InteractionResult.PASS; + } + + return this.activateInfinityDestination(serverPlayer, heldItem); + } + + if (heldItem.is(AntarchyTags.Items.RAINBOW_ANT_ACTIVATION_ITEMS)) { + return this.activateInfinityDestination(serverPlayer, heldItem); + } + + if (!heldItem.isEmpty()) { + return InteractionResult.PASS; + } + + serverPlayer.displayClientMessage(Component.translatable("message.antarchy.rainbow_ant_needs_reagent"), true); + return InteractionResult.CONSUME; + } + + if (this.isFood(heldItem)) { + return super.mobInteract(player, hand); + } + + if (!heldItem.isEmpty()) { + return InteractionResult.PASS; + } + + ResourceLocation dimensionId = this.resolveDimensionId(); + if (dimensionId == null) { + serverPlayer.displayClientMessage(Component.translatable("message.antarchy.rainbow_ant_infinity_missing"), true); + return InteractionResult.CONSUME; + } + + if (!this.teleportToInfinity(serverPlayer, dimensionId)) { + return InteractionResult.CONSUME; + } + + serverPlayer.playSound(SoundEvents.ENDERMAN_TELEPORT, 1.0F, 1.0F); + return InteractionResult.CONSUME; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putString(DIMENSION_ID_TAG, this.infinityDimensionId); + tag.putBoolean(ACTIVATED_TAG, this.infinityActivated); + tag.putBoolean(INHERITED_TAG, this.infinityInherited); + tag.putBoolean(REROLL_ON_NEXT_REAGENT_TAG, this.infinityRerollOnNextReagent); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.infinityDimensionId = tag.getString(DIMENSION_ID_TAG); + this.infinityActivated = tag.getBoolean(ACTIVATED_TAG); + this.infinityInherited = tag.getBoolean(INHERITED_TAG); + this.infinityRerollOnNextReagent = tag.getBoolean(REROLL_ON_NEXT_REAGENT_TAG); + } + + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + RainbowAntEntity child = this.getType().create(level) instanceof RainbowAntEntity rainbowAnt ? rainbowAnt : null; + if (child == null) { + return null; + } + + child.setNestPos(this.blockPosition()); + if (!(otherParent instanceof RainbowAntEntity otherRainbowAnt)) { + child.assignDimensionId(this.getStoredDimensionId(), false, true); + return child; + } + + double roll = level.random.nextDouble(); + if (roll < 0.45D) { + child.assignDimensionId(this.getStoredDimensionId(), false, true); + } else if (roll < 0.90D) { + child.assignDimensionId(otherRainbowAnt.getStoredDimensionId(), false, true); + } else { + child.assignDimensionId(child.createRandomDimensionId(), false, false); + } + return child; + } + + @Override + protected ResourceKey destinationDimension() { + return AntarchySettings.rainbowAntNonInfinityFallbackDimension(); + } + + @Override + protected TagKey activationItemsTag() { + return AntarchyTags.Items.RAINBOW_ANT_ACTIVATION_ITEMS; + } + + @Override + protected TagKey breedingFoodsTag() { + return AntarchyTags.Items.RAINBOW_ANT_BREEDING_FOODS; + } + + @Override + protected String activationMessageKey() { + return "message.antarchy.rainbow_ant_activated"; + } + + @Override + protected String needsReagentMessageKey() { + return "message.antarchy.rainbow_ant_needs_reagent"; + } + + @Override + protected double configuredMaxHealth() { + return AntarchySettings.rainbowAntHealth(); + } + + private InteractionResult activateInfinityDestination(ServerPlayer player, ItemStack stack) { + if (this.infinityRerollOnNextReagent) { + this.rerollDimensionIdForNextActivation(); + } + + ResourceLocation dimensionId = this.resolveDimensionId(); + if (dimensionId == null) { + player.displayClientMessage(Component.translatable("message.antarchy.rainbow_ant_infinity_missing"), true); + return InteractionResult.CONSUME; + } + + boolean existedBefore = this.infinityDimensionExists(player.server, dimensionId); + this.infinityActivated = true; + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + + if (this.infinityInherited && existedBefore) { + player.displayClientMessage(Component.translatable("message.antarchy.rainbow_ant_activated_inherited_existing"), true); + } else if (this.infinityInherited) { + player.displayClientMessage(Component.translatable("message.antarchy.rainbow_ant_activated_inherited"), true); + } else { + player.displayClientMessage(Component.translatable("message.antarchy.rainbow_ant_activated"), true); + } + this.playSound(SoundEvents.END_PORTAL_SPAWN, 0.8F, 1.1F); + return InteractionResult.CONSUME; + } + + private void ensureInfinityIdentity() { + if (this.infinityDimensionId.isEmpty()) { + this.infinityDimensionId = this.createRandomDimensionId(); + this.infinityInherited = false; + this.infinityRerollOnNextReagent = false; + } + } + + private boolean hasActiveInfinityDestination() { + return this.infinityActivated && !this.infinityDimensionId.isEmpty(); + } + + private ResourceLocation resolveDimensionId() { + this.ensureInfinityIdentity(); + return this.parseDimensionId(this.infinityDimensionId); + } + + private String getStoredDimensionId() { + this.ensureInfinityIdentity(); + return this.infinityDimensionId; + } + + private void assignDimensionId(String dimensionId, boolean activated, boolean inherited) { + this.infinityDimensionId = dimensionId; + this.infinityActivated = activated; + this.infinityInherited = inherited; + this.infinityRerollOnNextReagent = false; + } + + private void markForRerollOnNextReagent() { + this.infinityActivated = false; + this.infinityRerollOnNextReagent = true; + } + + private void rerollDimensionIdForNextActivation() { + this.assignDimensionId(this.createRandomDimensionId(), false, false); + } + + private boolean infinityDimensionExists(MinecraftServer server, ResourceLocation dimensionId) { + ResourceKey key = ResourceKey.create(Registries.DIMENSION, dimensionId); + return server.getLevel(key) != null || server.levelKeys().contains(key); + } + + private String createRandomDimensionId() { + ResourceLocation dimensionId = InfinityCompat.get().getRandomDimensionId(this.random); + if (dimensionId == null) { + return ""; + } + return dimensionId.toString(); + } + + private boolean isInInfinityDimension(ServerLevel level) { + return INFINITY_NAMESPACE.equals(level.dimension().location().getNamespace()); + } + + private ResourceLocation parseDimensionId(String storedDimensionId) { + try { + return ResourceLocation.parse(storedDimensionId); + } catch (Throwable throwable) { + return null; + } + } + + private boolean teleportToInfinity(ServerPlayer player, ResourceLocation dimensionId) { + if (!InfinityCompat.get().requestWarp(player, dimensionId)) { + this.deleteGeneratedArtifacts(player.server, dimensionId); + this.markForRerollOnNextReagent(); + player.displayClientMessage(Component.translatable("message.antarchy.rainbow_ant_failed_dimension_create"), true); + return false; + } + return true; + } + + private void deleteGeneratedArtifacts(MinecraftServer server, ResourceLocation dimensionId) { + if (!INFINITY_NAMESPACE.equals(dimensionId.getNamespace())) { + return; + } + + Path datapackPath = server.getWorldPath(LevelResource.DATAPACK_DIR).resolve(dimensionId.getPath()); + Path dimensionPath = server.getWorldPath(LevelResource.ROOT) + .resolve("dimensions") + .resolve(dimensionId.getNamespace()) + .resolve(dimensionId.getPath()); + + this.deletePathRecursively(datapackPath); + if (dimensionPath != null) { + this.deletePathRecursively(dimensionPath); + } + } + + private void deletePathRecursively(Path path) { + if (!Files.exists(path)) { + return; + } + try (var paths = Files.walk(path)) { + paths.sorted(Comparator.reverseOrder()).forEach(currentPath -> { + try { + Files.deleteIfExists(currentPath); + } catch (IOException exception) { + throw new RuntimeException(exception); + } + }); + } catch (IOException | RuntimeException ignored) { + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/RedAntEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/RedAntEntity.java new file mode 100644 index 00000000..1745df7f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/RedAntEntity.java @@ -0,0 +1,92 @@ +package com.craisinlord.antarchy.content.entity.ant; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.resources.ResourceKey; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import software.bernie.geckolib.animatable.GeoEntity; + +public class RedAntEntity extends BaseAntEntity implements GeoEntity { + public RedAntEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.2D, false)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + protected ResourceKey destinationDimension() { + return AntarchySettings.redAntDestinationDimension(); + } + + @Override + protected TagKey activationItemsTag() { + return AntarchyTags.Items.RED_ANT_ACTIVATION_ITEMS; + } + + @Override + protected TagKey breedingFoodsTag() { + return AntarchyTags.Items.RED_ANT_BREEDING_FOODS; + } + + @Override + protected boolean requiresActivationReagent() { + return AntarchySettings.redAntRequiresReagent(); + } + + @Override + protected String activationMessageKey() { + return "message.antarchy.red_ant_activated"; + } + + @Override + protected String needsReagentMessageKey() { + return "message.antarchy.red_ant_needs_reagent"; + } + + @Override + protected double configuredMaxHealth() { + return AntarchySettings.redAntHealth(); + } + + @Override + protected double configuredAttackDamage() { + return AntarchySettings.redAntAttackDamage(); + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return !this.isLeashed() && !this.hasCustomName(); + } + + @Override + public boolean fireImmune() { + return true; + } + + @Override + public void lavaHurt() { + } + + @Override + public boolean canStandOnFluid(FluidState fluidState) { + return fluidState.is(Fluids.LAVA) || super.canStandOnFluid(fluidState); + } + + @Override + protected boolean canTraverseFluidFloor(FluidState fluidState) { + return fluidState.is(Fluids.LAVA); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/TermiteEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/TermiteEntity.java new file mode 100644 index 00000000..8bab5980 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/TermiteEntity.java @@ -0,0 +1,223 @@ +package com.craisinlord.antarchy.content.entity.ant; + +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceKey; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; + +public class TermiteEntity extends BaseAntEntity implements GeoEntity { + private static final int WOOD_SEARCH_INTERVAL_TICKS = 10; + private static final int WOOD_REPATH_INTERVAL_TICKS = 6; + private static final int WOOD_SEARCH_RADIUS_HORIZONTAL = 12; + private static final int WOOD_SEARCH_RADIUS_VERTICAL = 4; + @Nullable + private BlockPos targetWoodPos; + private int nextWoodSearchTick; + private int nextWoodRepathTick; + + public TermiteEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + public void tick() { + super.tick(); + if (!this.level().isClientSide && this.targetWoodPos != null && !this.isValidWoodTarget(this.targetWoodPos)) { + this.targetWoodPos = null; + } + } + + @Override + protected ResourceKey destinationDimension() { + return AntarchySettings.termiteDestinationDimension(); + } + + @Override + protected TagKey activationItemsTag() { + return AntarchyTags.Items.TERMITE_ACTIVATION_ITEMS; + } + + @Override + protected TagKey breedingFoodsTag() { + return AntarchyTags.Items.TERMITE_BREEDING_FOODS; + } + + @Override + protected boolean requiresActivationReagent() { + return AntarchySettings.termiteRequiresReagent(); + } + + @Override + protected String activationMessageKey() { + return "message.antarchy.termite_activated"; + } + + @Override + protected String needsReagentMessageKey() { + return "message.antarchy.termite_needs_reagent"; + } + + @Override + protected double configuredMaxHealth() { + return AntarchySettings.termiteHealth(); + } + + @Override + protected boolean canForageGroundFood() { + return false; + } + + @Override + protected boolean canGroupWithNestmates() { + return false; + } + + @Override + protected boolean canMarch() { + return false; + } + + @Override + protected boolean handlePriorityForaging() { + if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + this.targetWoodPos = null; + return false; + } + + if (this.tryEatNearbyWood()) { + this.targetWoodPos = null; + return true; + } + + BlockPos targetPos = this.getCurrentWoodTarget(); + if (targetPos == null) { + return false; + } + + Vec3 moveTarget = this.getWoodApproachTarget(targetPos); + if (moveTarget == null) { + this.targetWoodPos = null; + return false; + } + + if (this.getNavigation().isDone() || this.tickCount >= this.nextWoodRepathTick) { + this.getNavigation().moveTo(moveTarget.x, moveTarget.y, moveTarget.z, 1.22D); + this.nextWoodRepathTick = this.tickCount + WOOD_REPATH_INTERVAL_TICKS; + } + return true; + } + + private boolean tryEatNearbyWood() { + for (BlockPos targetPos : this.getImmediateWoodChecks()) { + BlockState targetState = this.level().getBlockState(targetPos); + if (!targetState.is(AntarchyTags.Blocks.TERMITE_FOODS)) { + continue; + } + + SoundType soundType = targetState.getSoundType(); + this.level().destroyBlock(targetPos, false, this); + this.level().playSound(null, targetPos, soundType.getBreakSound(), this.getSoundSource(), 0.7F, 1.1F); + return true; + } + + return false; + } + + private BlockPos[] getImmediateWoodChecks() { + BlockPos basePos = this.blockPosition(); + BlockPos abovePos = basePos.above(); + return new BlockPos[] { + basePos.above(), + basePos.north(), + basePos.south(), + basePos.east(), + basePos.west(), + abovePos.north(), + abovePos.south(), + abovePos.east(), + abovePos.west() + }; + } + + @Nullable + private BlockPos getCurrentWoodTarget() { + if (this.targetWoodPos != null && this.isValidWoodTarget(this.targetWoodPos)) { + return this.targetWoodPos; + } + + if (this.tickCount < this.nextWoodSearchTick) { + return null; + } + + this.nextWoodSearchTick = this.tickCount + WOOD_SEARCH_INTERVAL_TICKS; + this.targetWoodPos = this.findClosestWoodTarget(); + return this.targetWoodPos; + } + + @Nullable + private BlockPos findClosestWoodTarget() { + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + double bestDistance = Double.MAX_VALUE; + + for (BlockPos pos : BlockPos.betweenClosed( + origin.offset(-WOOD_SEARCH_RADIUS_HORIZONTAL, -WOOD_SEARCH_RADIUS_VERTICAL, -WOOD_SEARCH_RADIUS_HORIZONTAL), + origin.offset(WOOD_SEARCH_RADIUS_HORIZONTAL, WOOD_SEARCH_RADIUS_VERTICAL + 2, WOOD_SEARCH_RADIUS_HORIZONTAL))) { + if (!this.isValidWoodTarget(pos)) { + continue; + } + + double distance = pos.distSqr(origin); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = pos.immutable(); + } + } + + return bestPos; + } + + private boolean isValidWoodTarget(BlockPos targetPos) { + return this.level().getBlockState(targetPos).is(AntarchyTags.Blocks.TERMITE_FOODS); + } + + @Nullable + private Vec3 getWoodApproachTarget(BlockPos targetPos) { + BlockPos belowTarget = targetPos.below(); + if (this.isWalkableStandPos(belowTarget)) { + return Vec3.atBottomCenterOf(belowTarget); + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos sidePos = targetPos.relative(direction); + if (this.isWalkableStandPos(sidePos)) { + return Vec3.atBottomCenterOf(sidePos); + } + + BlockPos belowSidePos = sidePos.below(); + if (this.isWalkableStandPos(belowSidePos)) { + return Vec3.atBottomCenterOf(belowSidePos); + } + } + + return null; + } + + private boolean isWalkableStandPos(BlockPos pos) { + BlockState floorState = this.level().getBlockState(pos.below()); + return this.level().getBlockState(pos).isAir() + && this.level().getBlockState(pos.above()).isAir() + && floorState.isFaceSturdy(this.level(), pos.below(), Direction.UP); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/basilisk/BasiliskEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/basilisk/BasiliskEntity.java new file mode 100644 index 00000000..9c2c0eae --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/basilisk/BasiliskEntity.java @@ -0,0 +1,446 @@ +package com.craisinlord.antarchy.content.entity.basilisk; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; + +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.animation.keyframe.event.builtin.AutoPlayingSoundKeyframeHandler; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.UUID; +import java.util.function.Predicate; + +public class BasiliskEntity extends Monster implements GeoEntity { + private static final byte ATTACK_ENTITY_EVENT = 4; + private static final int ATTACK_ANIM_TICKS = 18; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + + private static final int HISS_COOLDOWN_TICKS = 600; + private static final double GAZE_RANGE = 12.0D; + private static final double GAZE_RANGE_SQR = GAZE_RANGE * GAZE_RANGE; + private static final double GAZE_DOT_THRESHOLD = 0.64D; + private static final double BASILISK_GAZE_FACING_THRESHOLD = 0.45D; + private static final int HISS_CHARGE_TICKS = 30; + + private static final int PREY_PETRIFY_COOLDOWN_TICKS = 500; + private static final double PREY_PETRIFY_RANGE = 8.0D; + private static final int PREY_PETRIFY_DURATION_TICKS = 200; + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + private int attackAnimTicks = 0; + + private int hissCooldown = 100; + private int hissChargeTimer = 0; + @Nullable private UUID pendingTargetId; + + private int preyPetrifyCooldown = 200; + + public BasiliskEntity(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 50; + } + + public static AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 150.0D) + .add(Attributes.MOVEMENT_SPEED, 0.35D) + .add(Attributes.ATTACK_DAMAGE, 18.0D) + .add(Attributes.ARMOR, 6.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.5D) + .add(Attributes.FOLLOW_RANGE, 28.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, + MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG + || spawnReason == MobSpawnType.SPAWNER + || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return level.getDifficulty() != Difficulty.PEACEFUL + && pos.getY() >= 60 && pos.getY() <= 90 + && level.getMaxLocalRawBrightness(pos) <= AntarchySettings.basiliskSpawnMaxLightLevel() + && level.getEntitiesOfClass(BasiliskEntity.class, new AABB(pos).inflate(40.0D), Entity::isAlive).isEmpty() + && Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new BasiliskMeleeAttackGoal()); + this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.8D)); + this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 12.0F)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new PersistentNearestAttackableTargetGoal<>(Player.class, 5, + entity -> entity instanceof Player player && this.canTargetPlayer(player))); + this.targetSelector.addGoal(3, new PersistentNearestAttackableTargetGoal<>(LivingEntity.class, 5, + entity -> entity != this && entity.getType().is(AntarchyTags.Entities.BASILISK_PREY))); + } + + @Override + public boolean doHurtTarget(Entity target) { + boolean hurt; + if (this.level() instanceof ServerLevel serverLevel) { + hurt = target.hurt( + AntarchyDamageSources.basiliskBite(serverLevel, this), + (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE) + ); + } else { + hurt = super.doHurtTarget(target); + } + + if (hurt) { + this.level().broadcastEntityEvent(this, ATTACK_ENTITY_EVENT); + this.playSound(AntarchySoundEvents.BASILISK_BITE.get(), 1.1F, 0.95F + this.random.nextFloat() * 0.08F); + } + + return hurt; + } + + @Override + public void tick() { + super.tick(); + + if (this.attackAnimTicks > 0) { + this.attackAnimTicks--; + } + + if (this.level().isClientSide) { + return; + } + + this.tickPlayerPetrification(); + this.tickPreyPetrification(); + } + + private void tickPlayerPetrification() { + if (this.hissChargeTimer > 0) { + Player target = this.getPendingPlayerTarget(); + if (!this.canMaintainGazeOn(target)) { + this.pendingTargetId = null; + this.hissChargeTimer = 0; + return; + } + + this.getNavigation().stop(); + this.getLookControl().setLookAt(target, 30.0F, 30.0F); + this.hissChargeTimer--; + if (this.hissChargeTimer == 0) { + this.pendingTargetId = null; + target.addEffect(new MobEffectInstance( + AntarchyObjects.PARALYZED_EFFECT.get(), + AntarchySettings.basiliskPlayerParalyzeTicks(), + 0, + false, + true, + true + )); + } + return; + } + + if (this.hissCooldown > 0) { + this.hissCooldown--; + return; + } + + if (!AntarchySettings.basiliskPetrifyingGazeEnabled()) { + this.hissCooldown = HISS_COOLDOWN_TICKS; + return; + } + + Player target = this.findGazingPlayer(); + if (target == null) { + this.hissCooldown = 20; + return; + } + + this.level().playSound(null, this.getX(), this.getY(), this.getZ(), + AntarchySoundEvents.BASILISK_HISS.get(), this.getSoundSource(), 1.4F, 0.92F); + this.pendingTargetId = target.getUUID(); + this.hissChargeTimer = HISS_CHARGE_TICKS; + this.hissCooldown = HISS_COOLDOWN_TICKS; + this.getNavigation().stop(); + this.getLookControl().setLookAt(target, 30.0F, 30.0F); + } + + private void tickPreyPetrification() { + if (this.preyPetrifyCooldown > 0) { + this.preyPetrifyCooldown--; + return; + } + + if (this.getTarget() != null || this.hissChargeTimer > 0) { + return; + } + + this.preyPetrifyCooldown = PREY_PETRIFY_COOLDOWN_TICKS; + LivingEntity prey = this.findNearestPrey(); + if (prey == null) { + return; + } + + this.level().playSound(null, this.getX(), this.getY(), this.getZ(), + AntarchySoundEvents.BASILISK_HISS.get(), this.getSoundSource(), 1.35F, 0.95F); + this.getLookControl().setLookAt(prey, 30.0F, 30.0F); + prey.addEffect(new MobEffectInstance( + AntarchyObjects.PARALYZED_EFFECT.get(), + PREY_PETRIFY_DURATION_TICKS, + 0, + false, + true, + true + )); + } + + @Nullable + private Player getPendingPlayerTarget() { + if (!(this.level() instanceof ServerLevel serverLevel) || this.pendingTargetId == null) { + return null; + } + + return serverLevel.getPlayerByUUID(this.pendingTargetId); + } + + @Nullable + private Player findGazingPlayer() { + LivingEntity currentTarget = this.getTarget(); + if (currentTarget instanceof Player player && this.canMaintainGazeOn(player)) { + return player; + } + + Player nearest = null; + double nearestDistance = Double.MAX_VALUE; + for (Player player : this.level().getEntitiesOfClass(Player.class, this.getBoundingBox().inflate(GAZE_RANGE))) { + if (!this.canMaintainGazeOn(player)) { + continue; + } + + double distance = player.distanceToSqr(this); + if (distance < nearestDistance) { + nearestDistance = distance; + nearest = player; + } + } + + return nearest; + } + + private boolean canMaintainGazeOn(@Nullable Player player) { + if (!this.canTargetPlayer(player)) { + return false; + } + if (player.getItemBySlot(EquipmentSlot.HEAD).is(Items.CARVED_PUMPKIN)) { + return false; + } + if (player.distanceToSqr(this) > GAZE_RANGE_SQR) { + return false; + } + if (!this.hasLineOfSight(player)) { + return false; + } + + return this.isPlayerGazingAtMe(player) && this.isFacingPlayerForGaze(player); + } + + private boolean isPlayerGazingAtMe(Player player) { + Vec3 eye = player.getEyePosition(); + Vec3 toMe = this.getEyePosition().subtract(eye).normalize(); + return player.getLookAngle().dot(toMe) >= GAZE_DOT_THRESHOLD; + } + + private boolean isFacingPlayerForGaze(Player player) { + Vec3 toPlayer = player.getEyePosition().subtract(this.getEyePosition()); + if (toPlayer.lengthSqr() < 1.0E-6D) { + return true; + } + + return this.getViewVector(1.0F).normalize().dot(toPlayer.normalize()) >= BASILISK_GAZE_FACING_THRESHOLD; + } + + private boolean canTargetPlayer(@Nullable Player player) { + return player != null + && player.isAlive() + && !player.isDeadOrDying() + && !player.isSpectator() + && !player.isCreative(); + } + + @Nullable + private LivingEntity findNearestPrey() { + LivingEntity nearest = null; + double nearestDistance = Double.MAX_VALUE; + for (LivingEntity entity : this.level().getEntitiesOfClass(LivingEntity.class, + this.getBoundingBox().inflate(PREY_PETRIFY_RANGE))) { + if (entity == this || entity instanceof Player || entity.isDeadOrDying()) { + continue; + } + if (!entity.getType().is(AntarchyTags.Entities.BASILISK_PREY)) { + continue; + } + if (entity.getType().is(AntarchyTags.Entities.PARALYSIS_IMMUNE)) { + continue; + } + if (!this.hasLineOfSight(entity)) { + continue; + } + + double distance = entity.distanceToSqr(this); + if (distance < nearestDistance) { + nearestDistance = distance; + nearest = entity; + } + } + + return nearest; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main", 3, this::mainController) + .setSoundKeyframeHandler(new AutoPlayingSoundKeyframeHandler<>())); + } + + private PlayState mainController(AnimationState state) { + if (this.attackAnimTicks > 0) { + return state.setAndContinue(ATTACK_ANIM); + } + if (this.getTarget() != null || this.hissChargeTimer > 0 || this.pendingTargetId != null) { + return state.setAndContinue(WALK_ANIM); + } + if (state.isMoving()) { + return state.setAndContinue(WALK_ANIM); + } + return state.setAndContinue(IDLE_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void handleEntityEvent(byte id) { + if (id == ATTACK_ENTITY_EVENT) { + this.attackAnimTicks = ATTACK_ANIM_TICKS; + return; + } + super.handleEntityEvent(id); + } + + @Override + public boolean canAttack(LivingEntity target) { + if (target instanceof Player player) { + return this.canTargetPlayer(player) && super.canAttack(target); + } + return super.canAttack(target); + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + @Nullable + protected SoundEvent getAmbientSound() { + return null; + } + + @Override + protected SoundEvent getHurtSound(DamageSource source) { + return AntarchySoundEvents.BASILISK_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.BASILISK_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 0.7F; + } + + private final class PersistentNearestAttackableTargetGoal extends NearestAttackableTargetGoal { + PersistentNearestAttackableTargetGoal(Class targetType, int randomInterval, Predicate predicate) { + super(BasiliskEntity.this, targetType, randomInterval, true, false, predicate); + this.unseenMemoryTicks = 200; + } + } + + private final class BasiliskMeleeAttackGoal extends MeleeAttackGoal { + private BasiliskMeleeAttackGoal() { + super(BasiliskEntity.this, 1.1D, true); + } + + @Override + public void tick() { + if (BasiliskEntity.this.hissChargeTimer > 0) { + BasiliskEntity.this.getNavigation().stop(); + return; + } + super.tick(); + } + + @Override + public boolean canContinueToUse() { + return BasiliskEntity.this.attackAnimTicks > 0 || super.canContinueToUse(); + } + + @Override + protected void checkAndPerformAttack(LivingEntity enemy) { + if (BasiliskEntity.this.attackAnimTicks > 0) { + return; + } + if (this.canPerformAttack(enemy) && this.isTimeToAttack()) { + this.resetAttackCooldown(); + BasiliskEntity.this.doHurtTarget(enemy); + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/basilisk/BasiliskMultipartLayout.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/basilisk/BasiliskMultipartLayout.java new file mode 100644 index 00000000..92895960 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/basilisk/BasiliskMultipartLayout.java @@ -0,0 +1,156 @@ +package com.craisinlord.antarchy.content.entity.basilisk; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartLayout; +import com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; + +public final class BasiliskMultipartLayout implements MultipartLayout { + public static final BasiliskMultipartLayout INSTANCE = new BasiliskMultipartLayout(); + + public static final MultipartPartDefinition HEAD = new MultipartPartDefinition( + "head", + 1.58F, + 1.50F, + 1.0F, + 3.15D, + 1.62D, + 0.00D, + false + ); + + public static final MultipartPartDefinition NECK = new MultipartPartDefinition( + "neck", + 1.43F, + 1.35F, + 1.15F, + 2.15D, + 1.25D, + 0.06D, + false + ); + + public static final MultipartPartDefinition BODY_1 = new MultipartPartDefinition( + "body_1", + 1.43F, + 1.20F, + 1.0F, + 0.95D, + 0.82D, + -0.03D, + false + ); + + public static final MultipartPartDefinition BODY_2 = new MultipartPartDefinition( + "body_2", + 1.35F, + 1.13F, + 1.0F, + -0.10D, + 0.70D, + 0.06D, + false + ); + + public static final MultipartPartDefinition BODY_3 = new MultipartPartDefinition( + "body_3", + 1.28F, + 1.09F, + 1.0F, + -1.35D, + 0.56D, + -0.05D, + false + ); + + public static final MultipartPartDefinition BODY_4 = new MultipartPartDefinition( + "body_4", + 1.20F, + 1.01F, + 1.0F, + -2.55D, + 0.44D, + 0.04D, + false + ); + + public static final MultipartPartDefinition TAIL = new MultipartPartDefinition( + "tail", + 1.05F, + 0.86F, + 1.0F, + -4.15D, + 0.34D, + 0.00D, + false + ); + + private static final MultipartPartDefinition[] PARTS = { + HEAD, + NECK, + BODY_1, + BODY_2, + BODY_3, + BODY_4, + TAIL + }; + + private static final double[] IDLE_ARC_ANGLE_DEG = { 20.0D, 50.0D, 90.0D, 130.0D, 170.0D, 220.0D, 260.0D }; + private static final double[] IDLE_ARC_RADIUS = { 2.6D, 2.2D, 1.8D, 1.5D, 1.3D, 1.2D, 1.1D }; + private static final double[] IDLE_Y_OFFSET = { 1.40D, 1.10D, 0.70D, 0.50D, 0.40D, 0.30D, 0.20D }; + + private BasiliskMultipartLayout() { + } + + @Override + public MultipartPartDefinition[] parts() { + return PARTS; + } + + @Override + public Vec3 getPartPosition(Entity parent, MultipartPartDefinition spec) { + boolean idle = parent.getDeltaMovement().horizontalDistanceSqr() < 0.0025D; + if (!idle) { + return MultipartLayout.super.getPartPosition(parent, spec); + } + + int index = partIndex(spec.name()); + if (index < 0) { + return MultipartLayout.super.getPartPosition(parent, spec); + } + + double yawRad = Math.toRadians(parent.getYRot()); + double arcAngleRad = Math.toRadians(IDLE_ARC_ANGLE_DEG[index]); + + double fwdX = -Math.sin(yawRad); + double fwdZ = Math.cos(yawRad); + double rightX = fwdZ; + double rightZ = -fwdX; + + double cosA = Math.cos(arcAngleRad); + double sinA = Math.sin(arcAngleRad); + double r = IDLE_ARC_RADIUS[index]; + + double offsetX = (fwdX * cosA + rightX * sinA) * r; + double offsetZ = (fwdZ * cosA + rightZ * sinA) * r; + + return new Vec3( + parent.getX() + offsetX, + parent.getY() + IDLE_Y_OFFSET[index], + parent.getZ() + offsetZ + ); + } + + private static int partIndex(String name) { + return switch (name) { + case "head" -> 0; + case "neck" -> 1; + case "body_1" -> 2; + case "body_2" -> 3; + case "body_3" -> 4; + case "body_4" -> 5; + case "tail" -> 6; + default -> -1; + }; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java new file mode 100644 index 00000000..ceab548f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java @@ -0,0 +1,817 @@ +package com.craisinlord.antarchy.content.entity.brutalfly; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import java.util.EnumSet; +import java.util.Objects; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.Entity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerBossEvent; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.BossEvent; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class BrutalflyEntity extends Monster implements GeoEntity { + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly"); + private static final RawAnimation SPIT_ANIM = RawAnimation.begin().thenPlay("spit"); + private static final RawAnimation SWIPE_ANIM = RawAnimation.begin().thenPlay("swipe"); + private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlay("death"); + private static final RawAnimation COOCON_ANIM = RawAnimation.begin().thenPlay("Coocon"); + private static final RawAnimation COOCON_HIT_ANIM = RawAnimation.begin().thenPlay("Coocon_hit"); + private static final RawAnimation COOCON_IDLE_ANIM = RawAnimation.begin().thenLoop("Coocon_idle"); + private static final RawAnimation COOCON_HATCH_ANIM = RawAnimation.begin().thenPlay("Coocon_hatch"); + + private static final EntityDataAccessor ANIMATION_STATE = + SynchedEntityData.defineId(BrutalflyEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor IS_COCOONED = + SynchedEntityData.defineId(BrutalflyEntity.class, EntityDataSerializers.BOOLEAN); + + private static final int ANIM_IDLE = 0; + private static final int ANIM_FLY = 1; + private static final int ANIM_SPIT = 2; + private static final int ANIM_SWIPE = 3; + private static final int ANIM_DEATH = 4; + private static final int ANIM_COCOON = 5; + private static final int ANIM_COCOON_HIT = 6; + private static final int ANIM_COCOON_IDLE = 7; + private static final int ANIM_COCOON_HATCH = 8; + + private static final int DEATH_ANIM_TICKS = 60; + private static final int SPIT_WINDUP_TICKS = 16; + private static final int SWIPE_TICKS = 18; + private static final float SWIPE_KNOCKBACK = 2.8F; + private static final int COCOON_HIT_THRESHOLD = 3; + private static final int COCOON_HIT_ANIM_TICKS = 30; + private static final int COCOON_HATCH_ANIM_TICKS = 40; + private static final int COCOON_IDLE_ANIM_TICKS = 70; + private static final int POST_COCOON_INVULNERABLE_TICKS = 100; + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private final ServerBossEvent bossEvent = + new ServerBossEvent(this.getDisplayName(), BossEvent.BossBarColor.YELLOW, BossEvent.BossBarOverlay.PROGRESS); + + @Nullable + private Vec3 patrolTarget; + private int animationTicks; + private int spitWindupTicks; + private int spitCooldown = 50; + private int meleeCooldown = 35; + private int deathAnimationTicks; + private int currentStrafeDuration = 24; + private int strafeTicks = this.currentStrafeDuration; + private float orbitDirection = 1.0F; + private double currentStrafeRadius = 7.5D; + private double currentFlightHeight = 4.0D; + private double currentStrafeAngleOffset = this.random.nextDouble() * (Math.PI * 2.0D); + private boolean spawnedDeathButterflies; + + // Cocoon state (server-side) + @Nullable + BlockPos anchorPos; + private int cocoonHits; + private boolean isHatching; + private int cocoonAnimTicks; + private boolean pendingHatchAnim; + private int postCocoonInvulnerableTicks; + + public BrutalflyEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 20, true); + this.xpReward = 80; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, AntarchySettings.brutalflyHealth()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.brutalflySwipeDamage()) + .add(Attributes.ARMOR, 10.0D) + .add(Attributes.ARMOR_TOUGHNESS, 4.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.7D) + .add(Attributes.MOVEMENT_SPEED, 0.34D) + .add(Attributes.FLYING_SPEED, 0.55D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData spawnData) { + double maxHealth = AntarchySettings.brutalflyHealth(); + double swipeDamage = AntarchySettings.brutalflySwipeDamage(); + Objects.requireNonNull(this.getAttribute(Attributes.MAX_HEALTH)).setBaseValue(maxHealth); + this.setHealth((float) maxHealth); + Objects.requireNonNull(this.getAttribute(Attributes.ATTACK_DAMAGE)).setBaseValue(swipeDamage); + this.setPersistenceRequired(); + return super.finalizeSpawn(level, difficulty, spawnReason, spawnData); + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIMATION_STATE, ANIM_IDLE); + builder.define(IS_COCOONED, false); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(1, new BrutalflyHoverGoal(this)); + + HurtByTargetGoal hurtByTargetGoal = new HurtByTargetGoal(this); + hurtByTargetGoal.setAlertOthers(BrutalflyEntity.class); + this.targetSelector.addGoal(1, hurtByTargetGoal); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation navigation = new FlyingPathNavigation(this, level); + navigation.setCanFloat(true); + navigation.setCanPassDoors(true); + navigation.setCanOpenDoors(false); + return navigation; + } + + @Override + protected void customServerAiStep() { + if (this.isCocooned()) return; + super.customServerAiStep(); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, state -> switch (this.getAnimationState()) { + case ANIM_SPIT -> state.setAndContinue(SPIT_ANIM); + case ANIM_SWIPE -> state.setAndContinue(SWIPE_ANIM); + case ANIM_DEATH -> state.setAndContinue(DEATH_ANIM); + case ANIM_FLY -> state.setAndContinue(FLY_ANIM); + case ANIM_COCOON -> state.setAndContinue(COOCON_ANIM); + case ANIM_COCOON_HIT -> state.setAndContinue(COOCON_HIT_ANIM); + case ANIM_COCOON_IDLE -> state.setAndContinue(COOCON_IDLE_ANIM); + case ANIM_COCOON_HATCH -> state.setAndContinue(COOCON_HATCH_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + })); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + this.setNoGravity(true); + + if (this.level().isClientSide) { + this.updateFlightRotation(); + return; + } + + this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); + + if (this.isDeadOrDying()) { + this.setAnimationState(ANIM_DEATH); + return; + } + + if (this.isCocooned()) { + this.tickCocoon(); + return; + } + + if (this.animationTicks > 0) { + this.animationTicks--; + } + if (this.spitCooldown > 0) { + this.spitCooldown--; + } + if (this.meleeCooldown > 0) { + this.meleeCooldown--; + } + if (this.postCocoonInvulnerableTicks > 0) { + this.postCocoonInvulnerableTicks--; + } + if (this.spitWindupTicks > 0 && --this.spitWindupTicks == 0) { + this.fireCurrentSpitPattern(); + } + + LivingEntity target = this.getTarget(); + if ((target == null || !target.isAlive()) && this.tickCount % 10 == 0) { + Player nearbyPlayer = this.level().getNearestPlayer(this, 40.0D); + if (nearbyPlayer != null && this.canAttack(nearbyPlayer) + && !nearbyPlayer.isCreative() && !nearbyPlayer.isSpectator()) { + this.setTarget(nearbyPlayer); + target = nearbyPlayer; + } + } + + if (target != null && target.isAlive()) { + this.tickCombat(target); + } else { + this.tickPatrol(); + } + + this.updateBaseAnimationState(); + this.updateFlightRotation(); + } + + private void tickCocoon() { + // Pin position to hang from anchor + if (this.anchorPos != null) { + this.setPos(this.anchorPos.getX() + 0.5, this.anchorPos.getY() - 1.5, this.anchorPos.getZ() + 0.5); + this.setDeltaMovement(Vec3.ZERO); + + // Hatch immediately if anchor log was broken + if (!this.isHatching && !this.level().getBlockState(this.anchorPos).is(BlockTags.LOGS)) { + this.startHatching(); + return; + } + } + + if (this.isHatching) { + if (this.cocoonAnimTicks > 0) { + this.cocoonAnimTicks--; + } + if (this.pendingHatchAnim && this.cocoonAnimTicks <= 0) { + this.pendingHatchAnim = false; + this.setAnimationState(ANIM_COCOON_HATCH); + this.cocoonAnimTicks = COCOON_HATCH_ANIM_TICKS; + } else if (!this.pendingHatchAnim && this.cocoonAnimTicks <= 0) { + this.finishHatch(); + } + return; + } + + // Count down hit animation + if (this.cocoonAnimTicks > 0) { + this.cocoonAnimTicks--; + if (this.cocoonAnimTicks <= 0) { + this.setAnimationState(ANIM_COCOON); + } + return; + } + + // Occasionally play idle animation + if (this.getAnimationState() == ANIM_COCOON_IDLE) { + // Will be reset to COCOON after idle ticks counted down + } else if (this.tickCount % 200 == 17 && this.random.nextFloat() < 0.4F) { + this.setAnimationState(ANIM_COCOON_IDLE); + this.cocoonAnimTicks = COCOON_IDLE_ANIM_TICKS; + } else if (this.getAnimationState() != ANIM_COCOON) { + this.setAnimationState(ANIM_COCOON); + } + } + + private void startHatching() { + this.isHatching = true; + this.pendingHatchAnim = true; + this.postCocoonInvulnerableTicks = POST_COCOON_INVULNERABLE_TICKS; + this.setAnimationState(ANIM_COCOON_HIT); + this.cocoonAnimTicks = COCOON_HIT_ANIM_TICKS; + } + + private void finishHatch() { + this.entityData.set(IS_COCOONED, false); + this.isHatching = false; + this.anchorPos = null; + this.refreshDimensions(); + this.setAnimationState(ANIM_FLY); + Player nearbyPlayer = this.level().getNearestPlayer(this, 48.0D); + if (nearbyPlayer != null && !nearbyPlayer.isCreative() && !nearbyPlayer.isSpectator()) { + this.setTarget(nearbyPlayer); + } + } + + public boolean isCocooned() { + return this.entityData.get(IS_COCOONED); + } + + @Override + public net.minecraft.world.entity.EntityDimensions getDefaultDimensions(net.minecraft.world.entity.Pose pose) { + if (isCocooned()) { + return net.minecraft.world.entity.EntityDimensions.scalable(2.0F, 5.0F); + } + return super.getDefaultDimensions(pose); + } + + public void setCocooned(boolean cocooned, @Nullable BlockPos anchor) { + this.entityData.set(IS_COCOONED, cocooned); + this.anchorPos = anchor; + this.refreshDimensions(); + if (cocooned) { + this.setAnimationState(ANIM_COCOON); + } + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.postCocoonInvulnerableTicks > 0) { + return false; + } + + if (this.isCocooned() && !this.isHatching) { + if (this.level().isClientSide || this.hurtTime > 0) return false; + this.hurtTime = this.hurtDuration; + this.cocoonHits++; + if (this.cocoonHits >= COCOON_HIT_THRESHOLD) { + this.startHatching(); + } else { + this.setAnimationState(ANIM_COCOON_HIT); + this.cocoonAnimTicks = COCOON_HIT_ANIM_TICKS; + } + SoundEvent hurtSound = this.getHurtSound(source); + if (hurtSound != null) { + this.playSound(hurtSound, this.getSoundVolume(), 1.0F); + } + return true; + } + return super.hurt(source, amount); + } + + @Override + public boolean isInvulnerableTo(DamageSource source) { + return this.postCocoonInvulnerableTicks > 0 || super.isInvulnerableTo(source); + } + + private void tickCombat(LivingEntity target) { + FightPhase phase = this.getFightPhase(); + + if (this.getAnimationState() == ANIM_SWIPE && this.animationTicks > 0) { + this.tickSwipe(target); + return; + } + + if (this.getAnimationState() == ANIM_SPIT && this.animationTicks > 0) { + this.tickStrafeMovement(target, phase, 0.72D); + return; + } + + this.tickStrafeMovement(target, phase, phase.moveSpeed); + + if (this.shouldSwipe(target, phase) && this.meleeCooldown <= 0) { + this.startSwipe(); + return; + } + + if (this.canStartSpit(target)) { + this.startSpit(); + } + } + + private void tickPatrol() { + if (this.patrolTarget == null || this.distanceToSqr(this.patrolTarget) < 4.0D || this.tickCount % 40 == 0) { + double targetX = this.getX() + this.random.nextDouble() * 14.0D - 7.0D; + double targetZ = this.getZ() + this.random.nextDouble() * 14.0D - 7.0D; + double targetY = this.getTerrainFollowY(targetX, targetZ, 3.5D, 5.0D); + this.patrolTarget = new Vec3(targetX, targetY, targetZ); + } + + this.getMoveControl().setWantedPosition(this.patrolTarget.x, this.patrolTarget.y, this.patrolTarget.z, 0.8D); + } + + private void tickStrafeMovement(LivingEntity target, FightPhase phase, double speed) { + if (this.strafeTicks <= 0) { + this.startNewStrafeCycle(phase); + } + + this.strafeTicks--; + Vec3 strafePoint = this.getStrafePoint(target); + this.getMoveControl().setWantedPosition(strafePoint.x, strafePoint.y, strafePoint.z, speed); + + if (this.random.nextFloat() < 0.02F) { + this.orbitDirection *= -1.0F; + } + } + + private Vec3 getStrafePoint(LivingEntity target) { + double angle = this.tickCount * 0.13D * this.orbitDirection + this.currentStrafeAngleOffset; + double x = target.getX() + Math.cos(angle) * this.currentStrafeRadius; + double z = target.getZ() + Math.sin(angle) * this.currentStrafeRadius; + double y = this.getTerrainFollowY( + x, + z, + this.currentFlightHeight + Mth.sin((float) (angle * 1.5D)) * 0.7D, + this.currentFlightHeight + 1.1D + ); + return new Vec3(x, y, z); + } + + private double getTerrainFollowY(double x, double z, double minOffset, double maxOffset) { + int groundY = this.level().getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Mth.floor(x), Mth.floor(z)); + double clampedMinOffset = Math.max(2.75D, minOffset); + double clampedMaxOffset = Math.max(clampedMinOffset + 0.8D, maxOffset); + double desiredY = groundY + clampedMinOffset + this.random.nextDouble() * (clampedMaxOffset - clampedMinOffset); + return Math.min(desiredY, groundY + 7.0D); + } + + private void startNewStrafeCycle(FightPhase phase) { + this.currentStrafeDuration = phase.minStrafeTicks + this.random.nextInt(phase.maxStrafeTicks - phase.minStrafeTicks + 1); + this.strafeTicks = this.currentStrafeDuration; + this.currentStrafeRadius = phase.minRadius + this.random.nextDouble() * (phase.maxRadius - phase.minRadius); + this.currentFlightHeight = phase.minHeight + this.random.nextDouble() * (phase.maxHeight - phase.minHeight); + this.currentStrafeAngleOffset = this.random.nextDouble() * (Math.PI * 2.0D); + } + + private boolean canStartSpit(LivingEntity target) { + return this.spitCooldown <= 0 + && this.hasLineOfSight(target) + && this.distanceToSqr(target) >= 16.0D + && this.distanceToSqr(target) <= 400.0D; + } + + private void startSpit() { + this.setAnimationState(ANIM_SPIT); + this.animationTicks = 20; + this.spitWindupTicks = SPIT_WINDUP_TICKS; + this.spitCooldown = this.getFightPhase().nextSpitCooldown(this.random); + this.gameEvent(GameEvent.PROJECTILE_SHOOT); + } + + private void fireCurrentSpitPattern() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + LivingEntity target = this.getTarget(); + if (target == null || !target.isAlive()) { + return; + } + + Vec3 origin = this.getSpitOrigin(); + switch (this.getFightPhase()) { + case PHASE_THREE -> { + this.launchOrb(serverLevel, origin, target, BrutalflyOrbEntity.OrbVariant.POISON, -8.0F); + this.launchOrb(serverLevel, origin, target, BrutalflyOrbEntity.OrbVariant.STICKY, 8.0F); + } + default -> { + BrutalflyOrbEntity.OrbVariant variant = this.random.nextBoolean() + ? BrutalflyOrbEntity.OrbVariant.POISON + : BrutalflyOrbEntity.OrbVariant.STICKY; + this.launchOrb(serverLevel, origin, target, variant, 0.0F); + } + } + } + + private void launchOrb(ServerLevel serverLevel, Vec3 origin, LivingEntity target, BrutalflyOrbEntity.OrbVariant variant, float yawOffsetDegrees) { + BrutalflyOrbEntity orb = AntarchyObjects.BRUTALFLY_ORB.get().create(serverLevel); + if (orb == null) { + return; + } + + orb.setOwner(this); + orb.setOrbVariant(variant); + orb.moveTo(origin.x, origin.y, origin.z, this.getYRot(), this.getXRot()); + + Vec3 shot = this.createShotVector(origin, target, yawOffsetDegrees); + orb.shoot(shot.x, shot.y, shot.z, 0.95F, 0.0F); + serverLevel.addFreshEntity(orb); + } + + private Vec3 createShotVector(Vec3 origin, LivingEntity target, float yawOffsetDegrees) { + Vec3 leadTarget = target.position().add(target.getDeltaMovement().scale(6.0D)); + Vec3 direction = leadTarget.subtract(origin).normalize(); + if (yawOffsetDegrees == 0.0F) { + return direction; + } + + double radians = Math.toRadians(yawOffsetDegrees); + double cos = Math.cos(radians); + double sin = Math.sin(radians); + return new Vec3( + direction.x * cos - direction.z * sin, + direction.y, + direction.x * sin + direction.z * cos + ).normalize(); + } + + private Vec3 getSpitOrigin() { + return this.position().add(0.0D, this.getBbHeight() * 0.58D, 0.0D).add(this.getViewVector(0.0F).scale(2.3D)); + } + + private boolean shouldSwipe(LivingEntity target, FightPhase phase) { + double horizontalDistanceSqr = new Vec3(target.getX() - this.getX(), 0.0D, target.getZ() - this.getZ()).lengthSqr(); + boolean beneathBoss = horizontalDistanceSqr <= 16.0D && target.getY() <= this.getY() + 2.0D; + return beneathBoss || this.distanceToSqr(target) <= phase.swipeRangeSqr; + } + + private void startSwipe() { + this.setAnimationState(ANIM_SWIPE); + this.animationTicks = SWIPE_TICKS; + this.meleeCooldown = this.getFightPhase().nextMeleeCooldown(this.random); + } + + private void tickSwipe(LivingEntity target) { + Vec3 divePoint = target.position().add(0.0D, 1.0D, 0.0D); + this.getMoveControl().setWantedPosition(divePoint.x, divePoint.y, divePoint.z, 1.45D); + + if (this.animationTicks == 8) { + this.performSwipeHit(); + } + } + + private void performSwipeHit() { + float swipeDamage = (float) AntarchySettings.brutalflySwipeDamage(); + AABB attackBox = this.getBoundingBox().inflate(4.8D, 2.4D, 4.8D).expandTowards(0.0D, -2.5D, 0.0D); + for (LivingEntity target : this.level().getEntitiesOfClass( + LivingEntity.class, + attackBox, + entity -> entity.isAlive() && entity != this + )) { + if (!this.hasLineOfSight(target)) { + continue; + } + + target.hurt(this.damageSources().mobAttack(this), swipeDamage); + + double dx = target.getX() - this.getX(); + double dz = target.getZ() - this.getZ(); + if (dx * dx + dz * dz < 1.0E-4D) { + dx = this.random.nextDouble() - 0.5D; + dz = this.random.nextDouble() - 0.5D; + } + target.knockback(SWIPE_KNOCKBACK, -dx, -dz); + target.setDeltaMovement(target.getDeltaMovement().add(0.0D, 0.3D, 0.0D)); + } + } + + private FightPhase getFightPhase() { + float healthRatio = this.getHealth() / this.getMaxHealth(); + if (healthRatio > 0.70F) { + return FightPhase.PHASE_ONE; + } + if (healthRatio > 0.35F) { + return FightPhase.PHASE_TWO; + } + return FightPhase.PHASE_THREE; + } + + private int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setAnimationState(int animationState) { + this.entityData.set(ANIMATION_STATE, animationState); + } + + private void updateBaseAnimationState() { + if (this.isDeadOrDying()) { + this.setAnimationState(ANIM_DEATH); + return; + } + + if (this.animationTicks > 0 && (this.getAnimationState() == ANIM_SPIT || this.getAnimationState() == ANIM_SWIPE)) { + return; + } + + if (this.onGround()) { + this.setAnimationState(ANIM_IDLE); + } else { + this.setAnimationState(ANIM_FLY); + } + } + + private void updateFlightRotation() { + Vec3 movement = this.getDeltaMovement(); + if (movement.lengthSqr() < 1.0E-5D) { + return; + } + + double horizontal = Math.sqrt(movement.x * movement.x + movement.z * movement.z); + this.setYRot((float) (Mth.atan2(movement.z, movement.x) * (180.0F / Math.PI)) - 90.0F); + this.setXRot((float) (-(Mth.atan2(movement.y, horizontal) * (180.0F / Math.PI)))); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + + @Override + protected void tickDeath() { + this.deathAnimationTicks++; + this.setAnimationState(ANIM_DEATH); + this.setDeltaMovement(Vec3.ZERO); + + if (!this.spawnedDeathButterflies && this.deathAnimationTicks >= DEATH_ANIM_TICKS - 10) { + this.spawnDeathButterflies(); + this.spawnedDeathButterflies = true; + } + + if (this.deathAnimationTicks >= DEATH_ANIM_TICKS) { + this.remove(Entity.RemovalReason.KILLED); + this.gameEvent(GameEvent.ENTITY_DIE); + } + } + + private void spawnDeathButterflies() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + int count = 5 + this.random.nextInt(6); + for (int i = 0; i < count; i++) { + var butterfly = AntarchyObjects.BUTTERFLY.get().create(serverLevel); + if (butterfly == null) { + continue; + } + + butterfly.moveTo( + this.getX() + (this.random.nextDouble() - 0.5D) * 2.5D, + this.getY() + 1.0D + this.random.nextDouble() * 1.5D, + this.getZ() + (this.random.nextDouble() - 0.5D) * 2.5D, + this.random.nextFloat() * 360.0F, + 0.0F + ); + butterfly.setDeltaMovement( + (this.random.nextDouble() - 0.5D) * 0.35D, + 0.12D + this.random.nextDouble() * 0.15D, + (this.random.nextDouble() - 0.5D) * 0.35D + ); + serverLevel.addFreshEntity(butterfly); + } + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public boolean isNoGravity() { + return true; + } + + @Override + public void setCustomName(@Nullable Component name) { + super.setCustomName(name); + this.bossEvent.setName(this.getDisplayName()); + } + + @Override + public void startSeenByPlayer(ServerPlayer serverPlayer) { + super.startSeenByPlayer(serverPlayer); + this.bossEvent.addPlayer(serverPlayer); + } + + @Override + public void stopSeenByPlayer(ServerPlayer serverPlayer) { + super.stopSeenByPlayer(serverPlayer); + this.bossEvent.removePlayer(serverPlayer); + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putBoolean("IsCocooned", this.isCocooned()); + tag.putInt("CocoonHits", this.cocoonHits); + if (this.anchorPos != null) { + tag.putInt("AnchorX", this.anchorPos.getX()); + tag.putInt("AnchorY", this.anchorPos.getY()); + tag.putInt("AnchorZ", this.anchorPos.getZ()); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + if (tag.getBoolean("IsCocooned")) { + BlockPos anchor = null; + if (tag.contains("AnchorX")) { + anchor = new BlockPos(tag.getInt("AnchorX"), tag.getInt("AnchorY"), tag.getInt("AnchorZ")); + } + this.setCocooned(true, anchor); + this.cocoonHits = tag.getInt("CocoonHits"); + } + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.BRUTALFLY_IDLE.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return SoundEvents.PHANTOM_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.BRUTALFLY_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 1.4F; + } + + private enum FightPhase { + PHASE_ONE(0.95D, 24, 34, 7.0D, 9.0D, 3.5D, 4.6D, 22.0D), + PHASE_TWO(1.12D, 18, 28, 5.3D, 7.0D, 2.4D, 3.2D, 19.0D), + PHASE_THREE(1.28D, 14, 22, 3.8D, 5.4D, 1.3D, 2.1D, 26.0D); + + final double moveSpeed; + final int minStrafeTicks; + final int maxStrafeTicks; + final double minRadius; + final double maxRadius; + final double minHeight; + final double maxHeight; + final double swipeRangeSqr; + + FightPhase(double moveSpeed, int minStrafeTicks, int maxStrafeTicks, double minRadius, double maxRadius, double minHeight, double maxHeight, double swipeRange) { + this.moveSpeed = moveSpeed; + this.minStrafeTicks = minStrafeTicks; + this.maxStrafeTicks = maxStrafeTicks; + this.minRadius = minRadius; + this.maxRadius = maxRadius; + this.minHeight = minHeight; + this.maxHeight = maxHeight; + this.swipeRangeSqr = swipeRange; + } + + int nextSpitCooldown(RandomSource random) { + return switch (this) { + case PHASE_ONE -> 70 + random.nextInt(26); + case PHASE_TWO -> 42 + random.nextInt(19); + case PHASE_THREE -> 26 + random.nextInt(15); + }; + } + + int nextMeleeCooldown(RandomSource random) { + return switch (this) { + case PHASE_ONE -> 42 + random.nextInt(10); + case PHASE_TWO -> 30 + random.nextInt(8); + case PHASE_THREE -> 20 + random.nextInt(7); + }; + } + } + + private static final class BrutalflyHoverGoal extends Goal { + private final BrutalflyEntity brutalfly; + + private BrutalflyHoverGoal(BrutalflyEntity brutalfly) { + this.brutalfly = brutalfly; + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + @Override + public boolean canUse() { + return true; + } + + @Override + public boolean canContinueToUse() { + return true; + } + + @Override + public void tick() { + LivingEntity target = this.brutalfly.getTarget(); + if (target != null) { + this.brutalfly.getLookControl().setLookAt(target, 30.0F, 30.0F); + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyOrbEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyOrbEntity.java new file mode 100644 index 00000000..81a47441 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyOrbEntity.java @@ -0,0 +1,242 @@ +package com.craisinlord.antarchy.content.entity.brutalfly; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; + +public class BrutalflyOrbEntity extends ThrowableItemProjectile { + private static final EntityDataAccessor ORB_VARIANT = + SynchedEntityData.defineId(BrutalflyOrbEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor LINGERING = + SynchedEntityData.defineId(BrutalflyOrbEntity.class, EntityDataSerializers.BOOLEAN); + + private static final String ORB_VARIANT_KEY = "OrbVariant"; + private static final String LINGERING_KEY = "Lingering"; + private static final String LINGER_TICKS_KEY = "LingerTicks"; + + private static final int MAX_FLIGHT_TICKS = 200; + private static final int MAX_LIFETIME_TICKS = 100; + private static final float AREA_RADIUS = 2.75F; + + private int lingeringTicks; + + public BrutalflyOrbEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + public BrutalflyOrbEntity(EntityType entityType, LivingEntity owner, Level level) { + super(entityType, owner, level); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ORB_VARIANT, OrbVariant.POISON.ordinal()); + builder.define(LINGERING, false); + } + + public void setOrbVariant(OrbVariant variant) { + this.entityData.set(ORB_VARIANT, variant.ordinal()); + } + + public OrbVariant getOrbVariant() { + int index = Mth.clamp(this.entityData.get(ORB_VARIANT), 0, OrbVariant.values().length - 1); + return OrbVariant.values()[index]; + } + + public boolean isLingeringOrb() { + return this.entityData.get(LINGERING); + } + + public float getOrbRadius(float partialTick) { + if (!this.isLingeringOrb()) { + return 0.55F; + } + float age = Math.min(1.0F, (this.lingeringTicks + partialTick) / 12.0F); + return 0.7F + AREA_RADIUS * age; + } + + @Override + protected double getDefaultGravity() { + return 0.0D; + } + + @Override + protected Item getDefaultItem() { + return Items.SLIME_BALL; + } + + @Override + public boolean canBeCollidedWith() { + return false; + } + + @Override + public boolean isAttackable() { + return false; + } + + @Override + public void tick() { + if (this.isLingeringOrb()) { + this.tickLingeringOrb(); + return; + } + + super.tick(); + + if (this.tickCount > MAX_FLIGHT_TICKS) { + this.discard(); + return; + } + + if (this.level().isClientSide) { + this.spawnTravelParticles(); + } + } + + private void tickLingeringOrb() { + this.lingeringTicks++; + + if (this.level().isClientSide) { + this.spawnLingeringParticles(); + return; + } + + if (this.lingeringTicks % 5 == 0) { + this.applyAreaEffects(); + } + + if (this.lingeringTicks >= MAX_LIFETIME_TICKS) { + this.discard(); + } + } + + private void applyAreaEffects() { + for (LivingEntity target : this.level().getEntitiesOfClass( + LivingEntity.class, + this.getBoundingBox().inflate(AREA_RADIUS, 1.75D, AREA_RADIUS), + entity -> entity.isAlive() && entity != this.getOwner() + )) { + switch (this.getOrbVariant()) { + case POISON -> target.addEffect(new MobEffectInstance(MobEffects.POISON, 60, 0, false, true)); + case STICKY -> { + target.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 50, 3, false, true)); + target.makeStuckInBlock(Blocks.HONEY_BLOCK.defaultBlockState(), new Vec3(0.35D, 0.2D, 0.35D)); + } + } + } + + if (this.level() instanceof ServerLevel serverLevel) { + double radius = this.getOrbRadius(0.0F) * 0.3D; + if (this.getOrbVariant() == OrbVariant.POISON) { + serverLevel.sendParticles(ParticleTypes.WITCH, this.getX(), this.getY() + 0.15D, this.getZ(), 3, radius, 0.1D, radius, 0.02D); + serverLevel.sendParticles(ParticleTypes.ITEM_SLIME, this.getX(), this.getY() + 0.25D, this.getZ(), 2, radius, 0.15D, radius, 0.0D); + } else { + serverLevel.sendParticles(ParticleTypes.FALLING_HONEY, this.getX(), this.getY() + 0.2D, this.getZ(), 4, radius, 0.15D, radius, 0.0D); + serverLevel.sendParticles(ParticleTypes.DRIPPING_HONEY, this.getX(), this.getY() + 0.1D, this.getZ(), 2, radius, 0.1D, radius, 0.0D); + } + } + } + + @Override + protected void onHitEntity(EntityHitResult result) { + if (!this.level().isClientSide && result.getEntity() instanceof LivingEntity livingTarget) { + float directHitDamage = (float) AntarchySettings.brutalflySpitDamage(); + Entity owner = this.getOwner(); + if (owner instanceof LivingEntity livingOwner) { + livingTarget.hurt(this.damageSources().mobProjectile(this, livingOwner), directHitDamage); + } else { + livingTarget.hurt(this.damageSources().magic(), directHitDamage); + } + + if (this.getOrbVariant() == OrbVariant.POISON) { + livingTarget.addEffect(new MobEffectInstance(MobEffects.POISON, 100, 0, false, true)); + } else { + livingTarget.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 80, 4, false, true)); + livingTarget.makeStuckInBlock(Blocks.HONEY_BLOCK.defaultBlockState(), new Vec3(0.3D, 0.2D, 0.3D)); + } + } + + this.beginLingering(result.getLocation()); + } + + @Override + protected void onHitBlock(BlockHitResult result) { + this.beginLingering(result.getLocation()); + } + + private void beginLingering(Vec3 location) { + if (this.isLingeringOrb()) { + return; + } + + this.setPos(location.x, location.y + 0.1D, location.z); + this.entityData.set(LINGERING, true); + this.noPhysics = true; + this.lingeringTicks = 0; + this.setDeltaMovement(Vec3.ZERO); + } + + private void spawnTravelParticles() { + if (this.getOrbVariant() == OrbVariant.POISON) { + this.level().addParticle(ParticleTypes.WITCH, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + this.level().addParticle(ParticleTypes.ITEM_SLIME, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + } else { + this.level().addParticle(ParticleTypes.FALLING_HONEY, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + } + } + + private void spawnLingeringParticles() { + double radius = this.getOrbRadius(0.0F) * 0.28D; + if (this.getOrbVariant() == OrbVariant.POISON) { + this.level().addParticle(ParticleTypes.WITCH, this.getX() + (this.random.nextDouble() - 0.5D) * radius, this.getY() + 0.15D, this.getZ() + (this.random.nextDouble() - 0.5D) * radius, 0.0D, 0.0D, 0.0D); + this.level().addParticle(ParticleTypes.ITEM_SLIME, this.getX() + (this.random.nextDouble() - 0.5D) * radius, this.getY() + 0.2D, this.getZ() + (this.random.nextDouble() - 0.5D) * radius, 0.0D, 0.0D, 0.0D); + } else { + this.level().addParticle(ParticleTypes.FALLING_HONEY, this.getX() + (this.random.nextDouble() - 0.5D) * radius, this.getY() + 0.1D, this.getZ() + (this.random.nextDouble() - 0.5D) * radius, 0.0D, 0.0D, 0.0D); + } + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(ORB_VARIANT_KEY, this.getOrbVariant().ordinal()); + tag.putBoolean(LINGERING_KEY, this.isLingeringOrb()); + tag.putInt(LINGER_TICKS_KEY, this.lingeringTicks); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.setOrbVariant(OrbVariant.values()[Mth.clamp(tag.getInt(ORB_VARIANT_KEY), 0, OrbVariant.values().length - 1)]); + this.entityData.set(LINGERING, tag.getBoolean(LINGERING_KEY)); + this.lingeringTicks = Math.max(0, tag.getInt(LINGER_TICKS_KEY)); + this.noPhysics = this.isLingeringOrb(); + if (this.isLingeringOrb()) { + this.setDeltaMovement(Vec3.ZERO); + } + } + + public enum OrbVariant { + POISON, + STICKY + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/CloudSharkEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/CloudSharkEntity.java new file mode 100644 index 00000000..7e82de57 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/CloudSharkEntity.java @@ -0,0 +1,647 @@ +package com.craisinlord.antarchy.content.entity.cloud_shark; + +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.EnumSet; +import java.util.UUID; + +public class CloudSharkEntity extends Monster implements GeoEntity { + private static final double PATROL_SPEED = 0.95D; + private static final double STRAFE_SPEED = 1.2D; + private static final double DIVE_SPEED = 1.9D; + private static final double RECOVERY_SPEED = 1.15D; + private static final double ORBIT_SPEED = 1.1D; + private static final double REJOIN_SPEED = 1.25D; + private static final int STRAFE_MIN_TICKS = 14; + private static final int STRAFE_MAX_TICKS = 28; + private static final int DIVE_RECOVERY_TICKS = 12; + private static final int DIVE_TOTAL_TICKS = 26; + private static final int PATROL_MIN_TICKS = 20; + private static final int PATROL_MAX_TICKS = 40; + private static final int FLY_SOUND_INTERVAL_TICKS = 80; + + private static final int SHARKNADO_REFRESH_INTERVAL = 20; + + private static final double REJOIN_SNAP_DIST_SQR = 9.0D; + private static final int ANIM_IDLE = 0; + private static final int ANIM_SWIM = 1; + private static final int ANIM_ATTACK = 2; + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation SWIM_ANIM = RawAnimation.begin().thenLoop("swim"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + + private static final net.minecraft.network.syncher.EntityDataAccessor ANIMATION_STATE = + net.minecraft.network.syncher.SynchedEntityData.defineId( + CloudSharkEntity.class, net.minecraft.network.syncher.EntityDataSerializers.INT); + @Nullable private Vec3 patrolTarget; + @Nullable private Vec3 recoveryTarget; + @Nullable private Vec3 strafeTarget; + @Nullable private Vec3 diveStrikeTarget; + private int patrolRetargetTicks; + private int currentStrafeDuration = this.nextStrafeDuration(); + private int strafeTicks = this.currentStrafeDuration; + private int attackTicks; + private int diveCooldown = 20; + private float orbitDirection = 1.0F; + private boolean dealtDamageThisDive; + private double currentStrafeRadius = 4.75D; + private double currentStrafeHeightOffset = 2.6D; + private double currentStrafeAngleOffset; + private int flySoundCooldown; + + @Nullable private UUID sharknadoId; + private int sharknadoTier = -1; + private int sharknadoSlotIndex = -1; + private SharknadoMobState sharknadoMobState = SharknadoMobState.SOLO; + + private int nextSharknadoRefreshTick = 0; + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public CloudSharkEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 20, true); + this.xpReward = 8; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 40.0D) + .add(Attributes.ATTACK_DAMAGE, 5.0D) + .add(Attributes.MOVEMENT_SPEED, 0.34D) + .add(Attributes.FLYING_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 40.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.2D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, + MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + return level.getDifficulty() != Difficulty.PEACEFUL + && level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()) + && level.getFluidState(pos).isEmpty(); + } + + @Override + protected void defineSynchedData(net.minecraft.network.syncher.SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIMATION_STATE, ANIM_IDLE); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(1, new SharknadoOrbitGoal(this)); + + HurtByTargetGoal hurtByTargetGoal = new HurtByTargetGoal(this); + hurtByTargetGoal.setAlertOthers(CloudSharkEntity.class); + this.targetSelector.addGoal(1, hurtByTargetGoal); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation navigation = new FlyingPathNavigation(this, level); + navigation.setCanOpenDoors(false); + navigation.setCanFloat(true); + navigation.setCanPassDoors(true); + return navigation; + } + + @Override + public void tick() { + super.tick(); + this.setNoGravity(true); + + if (this.level().isClientSide) { + this.tickClientParticles(); + this.updateFlightRotation(); + return; + } + + if (this.diveCooldown > 0) this.diveCooldown--; + if (this.tickCount >= this.nextSharknadoRefreshTick) { + this.nextSharknadoRefreshTick = this.tickCount + SHARKNADO_REFRESH_INTERVAL; + if (this.sharknadoMobState == SharknadoMobState.SOLO) { + this.refreshSharknado(); + } else { + this.validateSharknadoMembership(); + } + } + if (this.tickCount % 200 == 0 && this.level() instanceof ServerLevel serverLevel) { + SharknadoManager.get(serverLevel).cleanup(serverLevel); + } + switch (this.sharknadoMobState) { + case ORBITING -> { + if (this.sharknadoId != null && this.level() instanceof ServerLevel serverLevel) { + SharknadoManager.get(serverLevel).tickSharknado(this.sharknadoId, serverLevel); + } + this.updateFlightRotation(); + this.updateAnimationState(); + return; + } + case REJOINING -> { + this.tickRejoin(); + this.updateFlightRotation(); + this.updateAnimationState(); + return; + } + default -> { + } + } + LivingEntity target = this.getTarget(); + if ((target == null || !target.isAlive()) && this.tickCount % 10 == 0) { + Player nearbyPlayer = this.level().getNearestPlayer(this, 32.0D); + if (nearbyPlayer != null && this.canAttack(nearbyPlayer)) { + this.setTarget(nearbyPlayer); + target = nearbyPlayer; + } + } + + if (target != null && target.isAlive()) { + this.tickCombatMovement(target); + } else { + this.tickPatrolMovement(); + } + + this.tickFlySound(); + + this.updateFlightRotation(); + this.updateAnimationState(); + } + + + private void refreshSharknado() { + if (!(this.level() instanceof ServerLevel serverLevel)) return; + if (this.getTarget() != null && this.getTarget().isAlive()) return; + SharknadoManager.get(serverLevel).tryFormOrJoin(this, serverLevel); + } + + + private void validateSharknadoMembership() { + if (this.sharknadoId == null) { + this.forceResetToSolo(); + return; + } + if (!(this.level() instanceof ServerLevel serverLevel)) return; + if (!SharknadoManager.get(serverLevel).isInSharknado(this.getUUID())) { + this.forceResetToSolo(); + } + } + + + void onJoinSharknado(UUID id, int tier, int slot) { + this.sharknadoId = id; + this.sharknadoTier = tier; + this.sharknadoSlotIndex = slot; + this.sharknadoMobState = SharknadoMobState.ORBITING; + this.patrolTarget = null; + this.strafeTarget = null; + this.diveStrikeTarget = null; + this.setTarget(null); + } + + + void onLeaveSharknado() { + this.forceResetToSolo(); + } + + + void launchFromSharknado(Player target) { + this.sharknadoMobState = SharknadoMobState.LAUNCHED; + this.setTarget(target); + this.attackTicks = 0; + this.diveCooldown = 0; + this.dealtDamageThisDive = false; + this.recoveryTarget = null; + this.diveStrikeTarget = null; + this.startNewStrafeCycle(); + } + + + boolean isOrbiting() { + return this.sharknadoMobState == SharknadoMobState.ORBITING; + } + + private void forceResetToSolo() { + this.sharknadoId = null; + this.sharknadoTier = -1; + this.sharknadoSlotIndex = -1; + this.sharknadoMobState = SharknadoMobState.SOLO; + this.recoveryTarget = null; + this.strafeTarget = null; + this.diveStrikeTarget = null; + this.nextSharknadoRefreshTick = this.tickCount + SHARKNADO_REFRESH_INTERVAL; + } + + + private void tickRejoin() { + if (this.sharknadoId == null || !(this.level() instanceof ServerLevel serverLevel)) { + this.forceResetToSolo(); + return; + } + Vec3 orbitTarget = SharknadoManager.get(serverLevel) + .getOrbitTarget(this.sharknadoId, this.sharknadoTier, this.sharknadoSlotIndex); + if (orbitTarget == null) { + this.forceResetToSolo(); + return; + } + this.getMoveControl().setWantedPosition(orbitTarget.x, orbitTarget.y, orbitTarget.z, REJOIN_SPEED); + if (this.distanceToSqr(orbitTarget) < REJOIN_SNAP_DIST_SQR) { + this.sharknadoMobState = SharknadoMobState.ORBITING; + this.setTarget(null); + } + } + + @Override + public boolean doHurtTarget(Entity target) { + boolean hurt = super.doHurtTarget(target); + if (hurt && target instanceof LivingEntity livingTarget) { + Vec3 push = livingTarget.position().subtract(this.position()); + Vec3 horizontal = new Vec3(push.x, 0.0D, push.z); + if (horizontal.lengthSqr() < 1.0E-4D) horizontal = this.getForward().multiply(1.0D, 0.0D, 1.0D); + if (horizontal.lengthSqr() < 1.0E-4D) horizontal = new Vec3(1.0D, 0.0D, 0.0D); + horizontal = horizontal.normalize(); + Vec3 sideways = new Vec3(-horizontal.z, 0.0D, horizontal.x); + if (this.random.nextBoolean()) sideways = sideways.scale(-1.0D); + Vec3 knockback = horizontal.scale(0.7D).add(sideways.scale(0.45D)); + livingTarget.push(knockback.x, 0.28D, knockback.z); + this.playSound(AntarchySoundEvents.CLOUD_SHARK_BITE.get(), 1.0F, 0.85F + this.random.nextFloat() * 0.2F); + } + return hurt; + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + protected void checkFallDamage(double y, boolean onGround, + net.minecraft.world.level.block.state.BlockState state, BlockPos pos) {} + + @Override + protected SoundEvent getAmbientSound() { return null; } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { return AntarchySoundEvents.CLOUD_SHARK_HURT.get(); } + + @Override + protected SoundEvent getDeathSound() { return AntarchySoundEvents.CLOUD_SHARK_DEATH.get(); } + + @Override + protected float getSoundVolume() { return 0.9F; } + + @Override + protected boolean shouldDespawnInPeaceful() { return true; } + + @Override + public void remove(Entity.RemovalReason reason) { + if (!this.level().isClientSide + && this.sharknadoId != null + && this.level() instanceof ServerLevel serverLevel) { + SharknadoManager.get(serverLevel).unregisterShark(this); + } + super.remove(reason); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { return this.geoCache; } + + private void tickFlySound() { + if (this.flySoundCooldown > 0) { + this.flySoundCooldown--; + } + + boolean isFlyingAnim = this.getAnimationState() == ANIM_SWIM; + boolean isMoving = this.getDeltaMovement().horizontalDistanceSqr() > 0.0125D; + if (!isFlyingAnim || !isMoving) { + this.flySoundCooldown = 0; + return; + } + + if (this.flySoundCooldown > 0) { + return; + } + + this.playSound(AntarchySoundEvents.CLOUD_SHARK_FLY.get(), 0.7F, 1.0F); + this.flySoundCooldown = FLY_SOUND_INTERVAL_TICKS; + } + + private void tickPatrolMovement() { + this.resetCombatFlightState(); + + if (this.patrolRetargetTicks-- <= 0 + || this.patrolTarget == null + || this.position().distanceToSqr(this.patrolTarget) < 5.0D) { + this.patrolRetargetTicks = PATROL_MIN_TICKS + + this.random.nextInt(PATROL_MAX_TICKS - PATROL_MIN_TICKS + 1); + this.patrolTarget = this.findPatrolTarget(); + } + if (this.patrolTarget != null) { + this.getMoveControl().setWantedPosition( + this.patrolTarget.x, this.patrolTarget.y, this.patrolTarget.z, PATROL_SPEED); + } + } + + private void tickCombatMovement(LivingEntity target) { + this.patrolTarget = null; + if (this.strafeTarget == null || this.strafeTicks <= 0) { + this.startNewStrafeCycle(); + } + + if (this.attackTicks > 0) { + this.tickDive(target); + return; + } + + this.strafeTarget = this.getStrafePoint(target); + this.getMoveControl().setWantedPosition( + this.strafeTarget.x, this.strafeTarget.y, this.strafeTarget.z, STRAFE_SPEED); + + if (--this.strafeTicks <= 0) { + if (this.random.nextFloat() < 0.6F) this.orbitDirection *= -1.0F; + this.startNewStrafeCycle(); + } + + if (this.canStartDive(target)) this.startDive(target); + } + + private void tickDive(LivingEntity target) { + boolean recovering = this.attackTicks <= DIVE_RECOVERY_TICKS; + if (!recovering) { + Vec3 strikeTarget = this.diveStrikeTarget != null + ? this.diveStrikeTarget + : this.createDiveStrikeTarget(target); + this.getMoveControl().setWantedPosition( + strikeTarget.x, strikeTarget.y - 0.15D, strikeTarget.z, DIVE_SPEED); + if (!this.dealtDamageThisDive && this.canConnectDive(target)) { + this.doHurtTarget(target); + this.dealtDamageThisDive = true; + this.recoveryTarget = this.createRecoveryTarget(strikeTarget); + this.attackTicks = DIVE_RECOVERY_TICKS; + } + } else { + Vec3 retreat = this.recoveryTarget != null + ? this.recoveryTarget : this.createRecoveryTarget( + this.diveStrikeTarget != null ? this.diveStrikeTarget : target.position()); + this.getMoveControl().setWantedPosition(retreat.x, retreat.y, retreat.z, RECOVERY_SPEED); + } + + if (--this.attackTicks <= 0) { + this.resetCombatFlightState(); + this.diveCooldown = 18 + this.random.nextInt(16); + if (this.sharknadoMobState == SharknadoMobState.LAUNCHED) { + this.sharknadoMobState = SharknadoMobState.REJOINING; + this.setTarget(null); + } + } + } + + private void startDive(LivingEntity target) { + this.attackTicks = DIVE_TOTAL_TICKS; + this.dealtDamageThisDive = false; + this.recoveryTarget = null; + this.diveStrikeTarget = this.createDiveStrikeTarget(target); + this.setAnimationState(ANIM_ATTACK); + } + + private boolean canStartDive(LivingEntity target) { + if (this.diveCooldown > 0 || !this.hasLineOfSight(target)) return false; + if (this.strafeTicks > Math.max(6, this.currentStrafeDuration / 2)) return false; + double distanceToTarget = this.distanceToSqr(target); + return distanceToTarget >= 9.0D + && distanceToTarget <= 144.0D + && this.getY() > target.getY() + 0.5D; + } + + private boolean canConnectDive(LivingEntity target) { + return this.hasLineOfSight(target) + && this.distanceToSqr(target) <= this.getDiveReachSqr(target); + } + + private double getDiveReachSqr(LivingEntity target) { + double reach = this.getBbWidth() * 1.8D + target.getBbWidth(); + return reach * reach + 1.0D; + } + + private Vec3 getStrafePoint(LivingEntity target) { + double angle = this.tickCount * 0.18D * this.orbitDirection + this.currentStrafeAngleOffset; + double x = target.getX() + Math.cos(angle) * this.currentStrafeRadius; + double z = target.getZ() + Math.sin(angle) * this.currentStrafeRadius; + double y = target.getY() + this.currentStrafeHeightOffset + + Math.sin((this.tickCount + this.getId()) * 0.14D) * 0.5D; + return new Vec3(x, y, z); + } + + private Vec3 createRecoveryTarget(Vec3 strikeTarget) { + double radius = this.currentStrafeRadius + 1.5D + this.random.nextDouble() * 1.2D; + double angle = this.currentStrafeAngleOffset + (Math.PI / 2.0D) * this.orbitDirection; + double x = strikeTarget.x + Math.cos(angle) * radius; + double z = strikeTarget.z + Math.sin(angle) * radius; + double y = strikeTarget.y + 2.0D + this.random.nextDouble() * 1.2D; + return new Vec3(x, y, z); + } + + private Vec3 createDiveStrikeTarget(LivingEntity target) { + Vec3 predictedOffset = target.getDeltaMovement().scale(5.0D); + return target.position() + .add(predictedOffset) + .add(0.0D, target.getBbHeight() * 0.45D, 0.0D); + } + + private Vec3 findPatrolTarget() { + BlockPos origin = this.blockPosition(); + for (int attempt = 0; attempt < 18; attempt++) { + BlockPos candidate = origin.offset( + this.random.nextInt(25) - 12, + this.random.nextInt(11) - 4, + this.random.nextInt(25) - 12); + if (!this.level().isEmptyBlock(candidate) || !this.level().isEmptyBlock(candidate.above())) continue; + BlockPos terrainPos = this.level().getHeightmapPos( + Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, + new BlockPos(candidate.getX(), origin.getY(), candidate.getZ())); + double terrainBandY = terrainPos.getY() + 6.0D + this.random.nextDouble() * 5.0D; + double y = Math.max(candidate.getY() + 0.5D, terrainBandY); + return new Vec3(candidate.getX() + 0.5D, y, candidate.getZ() + 0.5D); + } + return this.position().add( + (this.random.nextDouble() - 0.5D) * 10.0D, + this.random.nextDouble() * 4.0D - 1.0D, + (this.random.nextDouble() - 0.5D) * 10.0D); + } + + private void tickClientParticles() { + boolean emitParticles = this.getAnimationState() == ANIM_ATTACK + || this.getTarget() != null + || this.sharknadoMobState == SharknadoMobState.ORBITING; + + if (emitParticles && this.tickCount % 3 == 0) { + this.level().addParticle( + ParticleTypes.CLOUD, + this.getX() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + this.getY() + 0.35D + this.random.nextDouble() * 0.5D, + this.getZ() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + 0.0D, 0.02D, 0.0D); + } + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getAnimationState()) { + case ANIM_ATTACK -> state.setAndContinue(ATTACK_ANIM); + case ANIM_SWIM -> state.setAndContinue(SWIM_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + }; + } + + private int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setAnimationState(int animationState) { + this.entityData.set(ANIMATION_STATE, animationState); + } + + private void updateAnimationState() { + if (this.attackTicks > 0) { + this.setAnimationState(ANIM_ATTACK); + return; + } + Vec3 velocity = this.getDeltaMovement(); + if (this.getTarget() != null + || this.sharknadoMobState != SharknadoMobState.SOLO + || velocity.lengthSqr() > 1.0E-4D) { + this.setAnimationState(ANIM_SWIM); + return; + } + this.setAnimationState(ANIM_IDLE); + } + + private void updateFlightRotation() { + Vec3 velocity = this.getDeltaMovement(); + if (velocity.horizontalDistanceSqr() > 1.0E-4D) { + float targetYaw = (float) (Mth.atan2(velocity.z, velocity.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(Mth.approachDegrees(this.getYRot(), targetYaw, 8.0F)); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + if (velocity.lengthSqr() > 1.0E-4D) { + float targetPitch = (float) (-(Mth.atan2(velocity.y, velocity.horizontalDistance()) + * (180.0D / Math.PI))); + this.setXRot(Mth.approachDegrees(this.getXRot(), targetPitch, 6.0F)); + } + } + + private int nextStrafeDuration() { + return STRAFE_MIN_TICKS + this.random.nextInt(STRAFE_MAX_TICKS - STRAFE_MIN_TICKS + 1); + } + + private void startNewStrafeCycle() { + this.currentStrafeDuration = this.nextStrafeDuration(); + this.strafeTicks = this.currentStrafeDuration; + this.currentStrafeRadius = 4.25D + this.random.nextDouble() * 1.25D; + this.currentStrafeHeightOffset = 2.2D + this.random.nextDouble() * 0.9D; + this.currentStrafeAngleOffset = this.random.nextDouble() * (Math.PI * 2.0D); + this.strafeTarget = null; + } + + private void resetCombatFlightState() { + this.attackTicks = 0; + this.dealtDamageThisDive = false; + this.recoveryTarget = null; + this.diveStrikeTarget = null; + this.startNewStrafeCycle(); + } + + + enum SharknadoMobState { + + SOLO, + + ORBITING, + + LAUNCHED, + + REJOINING + } + + + private static final class SharknadoOrbitGoal extends Goal { + + private final CloudSharkEntity shark; + + SharknadoOrbitGoal(CloudSharkEntity shark) { + this.shark = shark; + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + public boolean canUse() { + return shark.sharknadoMobState == SharknadoMobState.ORBITING; + } + + @Override + public boolean canContinueToUse() { + return shark.sharknadoMobState == SharknadoMobState.ORBITING; + } + + @Override + public void tick() { + if (shark.sharknadoId == null) return; + if (!(shark.level() instanceof ServerLevel serverLevel)) return; + + SharknadoManager manager = SharknadoManager.get(serverLevel); + Vec3 orbitTarget = manager.getOrbitTarget( + shark.sharknadoId, + shark.sharknadoTier, + shark.sharknadoSlotIndex); + + if (orbitTarget == null) { + return; + } + + shark.getMoveControl().setWantedPosition( + orbitTarget.x, orbitTarget.y, orbitTarget.z, ORBIT_SPEED); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/SharknadoManager.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/SharknadoManager.java new file mode 100644 index 00000000..5960e1e1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/SharknadoManager.java @@ -0,0 +1,399 @@ +package com.craisinlord.antarchy.content.entity.cloud_shark; + +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.WeakHashMap; + +public final class SharknadoManager { + public static final double[] TIER_RADII = { 2.5D, 5.0D, 8.0D }; + public static final double[] TIER_HEIGHT_OFFSETS = { 8.0D, 5.0D, 1.5D }; + public static final int[] TIER_MAX_SLOTS = { 2, 4, 6 }; + + public static final double[] TIER_ROTATION_SPEEDS= { 0.06D, 0.045D, 0.03D }; + private static final int MIN_SHARKS_TO_FORM = 3; + private static final double FORM_SEARCH_RADIUS = 20.0D; + private static final double FORM_SEARCH_RADIUS_SQR = FORM_SEARCH_RADIUS * FORM_SEARCH_RADIUS; + private static final int MIN_SHARKS_TO_PERSIST = 2; + private static final int ATTACK_COOLDOWN_MIN = 80; + private static final int ATTACK_COOLDOWN_MAX = 160; + private static final float VOLLEY_CHANCE = 0.15F; + + private static final double DRIFT_SPEED = 0.06D; + + private static final double MAX_DRIFT_DIST = 10.0D; + private static final WeakHashMap INSTANCES = new WeakHashMap<>(); + + + private final Map tornadoes = new HashMap<>(); + + private final Map sharkToTornado = new HashMap<>(); + private long lastCleanupGameTime = Long.MIN_VALUE; + + private SharknadoManager() {} + + public static SharknadoManager get(ServerLevel level) { + return INSTANCES.computeIfAbsent(level, l -> new SharknadoManager()); + } + + + public boolean tryFormOrJoin(CloudSharkEntity shark, ServerLevel level) { + if (tryJoinExisting(shark)) return true; + + List soloNearby = getSoloSharksNear(shark, level); + if (soloNearby.size() + 1 < MIN_SHARKS_TO_FORM) return false; + UUID myUuid = shark.getUUID(); + for (CloudSharkEntity other : soloNearby) { + if (other.getUUID().compareTo(myUuid) < 0) return false; + } + + List all = new ArrayList<>(); + all.add(shark); + all.addAll(soloNearby); + formTornado(all, level); + return true; + } + + private void formTornado(List sharks, ServerLevel level) { + UUID id = UUID.randomUUID(); + SharknadoEntry entry = new SharknadoEntry(id); + int idx = 0; + outer: + for (int tier = 2; tier >= 0; tier--) { + for (int slot = 0; slot < TIER_MAX_SLOTS[tier]; slot++) { + if (idx >= sharks.size()) break outer; + CloudSharkEntity s = sharks.get(idx++); + entry.add(s, tier, slot); + sharkToTornado.put(s.getUUID(), id); + s.onJoinSharknado(id, tier, slot); + } + } + + entry.updateCentroid(); + entry.initializeFormation(level); + entry.state = TornadoState.ACTIVE; + entry.attackCooldown = ATTACK_COOLDOWN_MIN + + level.getRandom().nextInt(ATTACK_COOLDOWN_MAX - ATTACK_COOLDOWN_MIN); + tornadoes.put(id, entry); + } + + private boolean tryJoinExisting(CloudSharkEntity shark) { + UUID bestId = null; + double bestDistSqr = FORM_SEARCH_RADIUS_SQR; + + for (Map.Entry e : tornadoes.entrySet()) { + SharknadoEntry entry = e.getValue(); + if (entry.state == TornadoState.DISPERSING) continue; + if (!entry.hasOpenSlot()) continue; + Vec3 c = entry.centroid; + if (c == null) continue; + double dx = shark.getX() - c.x; + double dz = shark.getZ() - c.z; + double dSqr = dx * dx + dz * dz; + if (dSqr < bestDistSqr) { + bestDistSqr = dSqr; + bestId = e.getKey(); + } + } + + if (bestId == null) return false; + SharknadoEntry entry = tornadoes.get(bestId); + int[] openSlot = entry.getNextOpenSlot(); + if (openSlot == null) return false; + + entry.add(shark, openSlot[0], openSlot[1]); + sharkToTornado.put(shark.getUUID(), bestId); + shark.onJoinSharknado(bestId, openSlot[0], openSlot[1]); + entry.updateCentroid(); + entry.syncOrbitCenter(); + return true; + } + + + public void tickSharknado(UUID sharknadoId, ServerLevel level) { + SharknadoEntry entry = tornadoes.get(sharknadoId); + if (entry == null) return; + long now = level.getGameTime(); + if (entry.lastTickedGameTime == now) return; + entry.lastTickedGameTime = now; + this.cleanup(level); + + entry.updateCentroid(); + if (entry.centroid == null) return; + entry.updateOrbitCenter(); + entry.advanceRotation(); + Player nearestPlayer = level.getNearestPlayer( + entry.getOrbitCenter().x, entry.getOrbitCenter().y, entry.getOrbitCenter().z, 48.0D, false); + entry.driftOffset = entry.driftOffset.scale(0.92D); + if (nearestPlayer != null) { + Vec3 toPlayer = nearestPlayer.position().subtract(entry.getOrbitCenter()); + double len = toPlayer.length(); + if (len > 0.001D) { + entry.driftOffset = entry.driftOffset.add(toPlayer.scale(DRIFT_SPEED / len)); + double driftLen = entry.driftOffset.length(); + if (driftLen > MAX_DRIFT_DIST) { + entry.driftOffset = entry.driftOffset.scale(MAX_DRIFT_DIST / driftLen); + } + } + } + + if (entry.getAliveCount() < MIN_SHARKS_TO_PERSIST) { + disperseTornado(sharknadoId); + return; + } + + if (entry.state != TornadoState.ACTIVE) return; + + if (--entry.attackCooldown <= 0) { + triggerAttack(entry, level); + entry.attackCooldown = ATTACK_COOLDOWN_MIN + + level.getRandom().nextInt(ATTACK_COOLDOWN_MAX - ATTACK_COOLDOWN_MIN); + } + } + + private void triggerAttack(SharknadoEntry entry, ServerLevel level) { + Vec3 orbitCenter = entry.getOrbitCenter(); + if (orbitCenter == null) return; + Player target = level.getNearestPlayer( + orbitCenter.x, orbitCenter.y, orbitCenter.z, 48.0D, false); + if (target == null) return; + + boolean volley = level.getRandom().nextFloat() < VOLLEY_CHANCE; + if (volley) { + int launched = 0; + for (SharkSlot s : entry.slots) { + if (s.tier == 2 && s.shark.isAlive() && s.shark.isOrbiting()) { + s.shark.launchFromSharknado(target); + if (++launched >= 2) break; + } + } + } else { + SharkSlot best = null; + double bestDist = Double.MAX_VALUE; + for (SharkSlot s : entry.slots) { + if (s.tier == 2 && s.shark.isAlive() && s.shark.isOrbiting()) { + double d = s.shark.distanceToSqr(target); + if (d < bestDist) { bestDist = d; best = s; } + } + } + if (best == null) { + for (SharkSlot s : entry.slots) { + if (s.shark.isAlive() && s.shark.isOrbiting()) { + double d = s.shark.distanceToSqr(target); + if (d < bestDist) { bestDist = d; best = s; } + } + } + } + if (best != null) best.shark.launchFromSharknado(target); + } + } + + + public void disperseTornado(UUID sharknadoId) { + SharknadoEntry entry = tornadoes.remove(sharknadoId); + if (entry == null) return; + entry.state = TornadoState.DISPERSING; + for (SharkSlot s : entry.slots) { + sharkToTornado.remove(s.shark.getUUID()); + if (s.shark.isAlive()) s.shark.onLeaveSharknado(); + } + } + + + public void unregisterShark(CloudSharkEntity shark) { + UUID tornadoId = sharkToTornado.remove(shark.getUUID()); + if (tornadoId == null) return; + SharknadoEntry entry = tornadoes.get(tornadoId); + if (entry == null) return; + entry.removeShark(shark); + if (entry.getAliveCount() < MIN_SHARKS_TO_PERSIST) { + disperseTornado(tornadoId); + } + } + + + public void cleanup(ServerLevel level) { + long now = level.getGameTime(); + if (this.lastCleanupGameTime == now || now % 200L != 0L) return; + this.lastCleanupGameTime = now; + Iterator> iter = tornadoes.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry e = iter.next(); + SharknadoEntry entry = e.getValue(); + Iterator slotIter = entry.slots.iterator(); + while (slotIter.hasNext()) { + SharkSlot s = slotIter.next(); + if (!s.shark.isAlive()) { + sharkToTornado.remove(s.shark.getUUID()); + slotIter.remove(); + } + } + if (entry.getAliveCount() < MIN_SHARKS_TO_PERSIST) { + for (SharkSlot s : entry.slots) { + sharkToTornado.remove(s.shark.getUUID()); + if (s.shark.isAlive()) s.shark.onLeaveSharknado(); + } + iter.remove(); + } + } + } + + + @Nullable + public Vec3 getOrbitTarget(UUID sharknadoId, int tier, int slot) { + SharknadoEntry entry = tornadoes.get(sharknadoId); + if (entry == null || entry.getOrbitCenter() == null) return null; + + Vec3 center = entry.getOrbitCenter().add(entry.driftOffset); + double baseAngle = (2.0 * Math.PI * slot) / TIER_MAX_SLOTS[tier]; + double currentAngle = baseAngle + entry.rotationPhases[tier]; + + double x = center.x + Math.cos(currentAngle) * TIER_RADII[tier]; + double z = center.z + Math.sin(currentAngle) * TIER_RADII[tier]; + double y = center.y + TIER_HEIGHT_OFFSETS[tier]; + return new Vec3(x, y, z); + } + + @Nullable + public Vec3 getCentroid(UUID sharknadoId) { + SharknadoEntry entry = tornadoes.get(sharknadoId); + return entry == null ? null : entry.getOrbitCenter(); + } + + public boolean isInSharknado(UUID sharkUuid) { + return sharkToTornado.containsKey(sharkUuid); + } + + + private List getSoloSharksNear(CloudSharkEntity seeker, ServerLevel level) { + List result = new ArrayList<>(); + for (CloudSharkEntity other : level.getEntitiesOfClass( + CloudSharkEntity.class, seeker.getBoundingBox().inflate(FORM_SEARCH_RADIUS))) { + if (other == seeker) continue; + if (sharkToTornado.containsKey(other.getUUID())) continue; + double dx = other.getX() - seeker.getX(); + double dz = other.getZ() - seeker.getZ(); + if (dx * dx + dz * dz <= FORM_SEARCH_RADIUS_SQR) result.add(other); + } + return result; + } + + public enum TornadoState { FORMING, ACTIVE, DISPERSING } + + private static final class SharknadoEntry { + final UUID id; + final List slots = new ArrayList<>(); + @Nullable Vec3 centroid; + @Nullable Vec3 orbitCenter; + Vec3 driftOffset = Vec3.ZERO; + final double[] rotationPhases = new double[TIER_ROTATION_SPEEDS.length]; + TornadoState state = TornadoState.FORMING; + int attackCooldown; + long lastTickedGameTime = -1L; + + SharknadoEntry(UUID id) { this.id = id; } + + void add(CloudSharkEntity shark, int tier, int slot) { + slots.add(new SharkSlot(shark, tier, slot)); + } + + void removeShark(CloudSharkEntity shark) { + slots.removeIf(s -> s.shark == shark); + } + + void updateCentroid() { + double x = 0, y = 0, z = 0; + int count = 0; + for (SharkSlot s : slots) { + if (s.shark.isAlive()) { + x += s.shark.getX(); + y += s.shark.getY(); + z += s.shark.getZ(); + count++; + } + } + centroid = count > 0 ? new Vec3(x / count, y / count, z / count) : null; + } + + void initializeFormation(ServerLevel level) { + this.syncOrbitCenter(); + for (int tier = 0; tier < this.rotationPhases.length; tier++) { + this.rotationPhases[tier] = level.getRandom().nextDouble() * (Math.PI * 2.0D); + } + } + + void syncOrbitCenter() { + this.orbitCenter = this.centroid; + } + + void updateOrbitCenter() { + if (this.centroid == null) { + this.orbitCenter = null; + return; + } + if (this.orbitCenter == null) { + this.orbitCenter = this.centroid; + return; + } + this.orbitCenter = this.orbitCenter.lerp(this.centroid, 0.2D); + } + + void advanceRotation() { + for (int tier = 0; tier < this.rotationPhases.length; tier++) { + this.rotationPhases[tier] += TIER_ROTATION_SPEEDS[tier]; + } + } + + @Nullable Vec3 getOrbitCenter() { + return this.orbitCenter != null ? this.orbitCenter : this.centroid; + } + + int getAliveCount() { + int c = 0; + for (SharkSlot s : slots) if (s.shark.isAlive()) c++; + return c; + } + + boolean hasOpenSlot() { + for (int tier = 2; tier >= 0; tier--) { + int used = 0; + for (SharkSlot s : slots) if (s.tier == tier) used++; + if (used < TIER_MAX_SLOTS[tier]) return true; + } + return false; + } + + @Nullable int[] getNextOpenSlot() { + for (int tier = 2; tier >= 0; tier--) { + Set usedSlots = new HashSet<>(); + for (SharkSlot s : slots) if (s.tier == tier) usedSlots.add(s.slot); + for (int slot = 0; slot < TIER_MAX_SLOTS[tier]; slot++) { + if (!usedSlots.contains(slot)) return new int[]{tier, slot}; + } + } + return null; + } + } + + private static final class SharkSlot { + final CloudSharkEntity shark; + final int tier; + final int slot; + + SharkSlot(CloudSharkEntity shark, int tier, int slot) { + this.shark = shark; + this.tier = tier; + this.slot = slot; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java new file mode 100644 index 00000000..d944f823 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java @@ -0,0 +1,2338 @@ +package com.craisinlord.antarchy.content.entity.flying_squirrel; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.block.OuranwoodAcornBlock; +import com.craisinlord.antarchy.content.block.OuranwoodLeavesBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ItemParticleOption; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.TamableAnimal; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.*; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.EnumSet; +import java.util.UUID; + +public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity { + private static final ResourceKey ELYTHIA_DIMENSION = ResourceKey.create( + Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "elythia") + ); + + private static final EntityDataAccessor GLIDING = + SynchedEntityData.defineId(FlyingSquirrelEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor CLIMBING = + SynchedEntityData.defineId(FlyingSquirrelEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor PICKING_UP_NUT = + SynchedEntityData.defineId(FlyingSquirrelEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor TEXTURE_VARIANT = + SynchedEntityData.defineId(FlyingSquirrelEntity.class, EntityDataSerializers.INT); + + private static final String PICKUP_ANIM_TICKS_KEY = "PickupAnimTicks"; + private static final String TEXTURE_VARIANT_KEY = "TextureVariant"; + private static final String GLIDE_DIR_X_KEY = "GlideDirX"; + private static final String GLIDE_DIR_Y_KEY = "GlideDirY"; + private static final String GLIDE_DIR_Z_KEY = "GlideDirZ"; + private static final int MAX_GLIDE_TICKS = 160; + private static final int PICKUP_ANIM_TICKS = 60; + private static final double MIN_GLIDE_DISTANCE = 10.0D; + private static final double MAX_GLIDE_DISTANCE = 64.0D; + private static final int MIN_CLIMB_HEIGHT = 5; + private static final int MAX_CLIMB_HEIGHT = 18; + private static final int GROUND_ESCAPE_MIN_CLIMB_HEIGHT = 12; + private static final double NUT_SEARCH_RANGE = 16.0D; + private static final float FALL_GLIDE_TRIGGER_DISTANCE = 0.75F; + private static final double FALL_GLIDE_TRIGGER_SPEED = -0.08D; + private static final int EMERGENCY_GLIDE_REPEAT_COOLDOWN = 60; + private static final int RECENT_GLIDE_REPEAT_COOLDOWN = 80; + private static final double CLIMB_START_DISTANCE_SQR = 4.0D; + private static final int CLIMB_APPROACH_TIMEOUT_TICKS = 120; + private static final int CLIMB_NO_PROGRESS_LIMIT = 25; + private static final int FAILED_CLIMB_TARGET_COOLDOWN = 80; + private static final int GROUND_STALL_FORCE_WANDER_TICKS = 100; + private static final int SHOULDER_CLIMB_TICKS = 20; + private static final int SHOULDER_SNEAK_GRACE_TICKS = 10; + private static final int SHOULDER_INTERACT_COOLDOWN_TICKS = 8; + private static final int TEXTURE_VARIANT_REGULAR = 0; + private static final int TEXTURE_VARIANT_BROWN = 1; + private static final int TEXTURE_VARIANT_ALBINO = 2; + private static final String[] TEXTURE_VARIANT_NAMES = { + "regular", + "brown", + "albino" + }; + private static final double SHOULDER_X_OFFSET = 0.0D; + private static final double SHOULDER_FORWARD_OFFSET = 0.0475D; + private static final double SHOULDER_HEAD_Y_OFFSET = 0.26D; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walking"); + private static final RawAnimation CLIMB_ANIM = RawAnimation.begin().thenLoop("climbing"); + private static final RawAnimation GLIDE_ANIM = RawAnimation.begin().thenLoop("gliding"); + private static final RawAnimation PICKUP_ANIM = RawAnimation.begin().thenPlay("item_pickup"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + private TemptGoal temptGoal; + private int wanderCooldown; + private int glideTicks; + private int pickupAnimTicks; + private int glideRecoveryTicks; + private int glideLoopSoundCooldown; + @Nullable + private BlockPos glideTarget; + @Nullable + private Vec3 glideDirection; + @Nullable + private BlockPos recentEmergencyGlideTarget; + @Nullable + private BlockPos currentGlideLaunch; + @Nullable + private BlockPos recentGlideLaunch; + @Nullable + private BlockPos recentGlideTarget; + @Nullable + private String currentGlideReason; + private int recentEmergencyGlideCooldown; + private int recentGlideCooldown; + private int idleStallTicks; + @Nullable + private BlockPos recentFailedClimbTarget; + private int recentFailedClimbCooldown; + @Nullable + private UUID shoulderPlayerId; + @Nullable + private Vec3 shoulderClimbStartPos; + private int climbingToShoulderTicks; + private int shoulderSneakGraceTicks; + private int shoulderInteractCooldownTicks; + private int nextFallGlideScanTick; + @Nullable + private BlockPos cachedFallGlideTarget; + private int nextBestGlideScanTick; + @Nullable + private BlockPos cachedBestGlideTarget; + private int nextNutScanTick; + @Nullable + private ItemEntity cachedNutItem; + @Nullable + private BlockPos cachedHarvestableAcorn; + + public FlyingSquirrelEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setPathfindingMalus(PathType.LEAVES, -2.0F); + } + + @Override + protected PathNavigation createNavigation(Level level) { + return new FlyingSquirrelNavigation(this, level); + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 10.0D) + .add(Attributes.MOVEMENT_SPEED, 0.35D) + .add(Attributes.FOLLOW_RANGE, 16.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + return true; + } + + return level.getLevel().dimension().equals(ELYTHIA_DIMENSION) + && pos.getY() >= 80 + && !level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()) + && hasNearbyCanopy(level, pos); + } + + @Override + protected void registerGoals() { + this.temptGoal = new TemptGoal(this, 1.05D, Ingredient.of(AntarchyTags.Items.FLYING_SQUIRREL_NUTS), false); + + this.goalSelector.addGoal(0, new ShoulderMountGoal()); + this.goalSelector.addGoal(1, this.temptGoal); + this.goalSelector.addGoal(2, new FloatGoal(this)); + this.goalSelector.addGoal(3, new TamableAnimal.TamableAnimalPanicGoal(1.5D)); + this.goalSelector.addGoal(4, new SitWhenOrderedToGoal(this)); + this.goalSelector.addGoal(5, new FollowOwnerGoal(this, 1.0D, 10.0F, 5.0F)); + this.goalSelector.addGoal(6, new BreedGoal(this, 0.8D)); + this.goalSelector.addGoal(7, new FindNutGoal()); + this.goalSelector.addGoal(8, new ClimbGoal()); + this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Player.class, 5.0F, 1.0D, 1.2D) { + @Override + public boolean canUse() { + return !FlyingSquirrelEntity.this.isTame() && super.canUse(); + } + + @Override + public boolean canContinueToUse() { + return !FlyingSquirrelEntity.this.isTame() && super.canContinueToUse(); + } + }); + this.goalSelector.addGoal(10, new ArborealRandomStrollGoal()); + this.goalSelector.addGoal(11, new LookAtPlayerGoal(this, Player.class, 10.0F)); + this.goalSelector.addGoal(12, new RandomLookAroundGoal(this)); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(GLIDING, false); + builder.define(CLIMBING, false); + builder.define(PICKING_UP_NUT, false); + builder.define(TEXTURE_VARIANT, TEXTURE_VARIANT_REGULAR); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 5, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + if (this.isPickingUpNut()) { + return state.setAndContinue(PICKUP_ANIM); + } + + if (this.isOnShoulder()) { + return state.setAndContinue(PICKUP_ANIM); + } + + if (this.isGliding()) { + state.getController().setAnimationSpeed(1.1D); + return state.setAndContinue(GLIDE_ANIM); + } + + if (this.isClimbingToShoulder() || this.isClimbingTrunk()) { + return state.setAndContinue(CLIMB_ANIM); + } + + Vec3 motion = this.getDeltaMovement(); + double horizontalSpeed = motion.horizontalDistanceSqr(); + if (!this.isGliding() && !this.isClimbingTrunk() && motion.horizontalDistanceSqr() > 1.0E-4D) { + float moveYaw = (float)(Mth.atan2(motion.z, motion.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(Mth.approachDegrees(this.getYRot(), moveYaw, 10.0F)); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + if (horizontalSpeed > 0.001D && this.onGround() && !this.isClimbingTrunk()) { + state.getController().setAnimationSpeed(1.35D); + return state.setAndContinue(WALK_ANIM); + } + state.getController().setAnimationSpeed(1.0D); + return state.setAndContinue(IDLE_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(PICKUP_ANIM_TICKS_KEY, this.pickupAnimTicks); + tag.putInt(TEXTURE_VARIANT_KEY, this.getTextureVariant()); + if (this.glideDirection != null) { + tag.putDouble(GLIDE_DIR_X_KEY, this.glideDirection.x); + tag.putDouble(GLIDE_DIR_Y_KEY, this.glideDirection.y); + tag.putDouble(GLIDE_DIR_Z_KEY, this.glideDirection.z); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.pickupAnimTicks = Math.max(0, tag.getInt(PICKUP_ANIM_TICKS_KEY)); + this.setPickingUpNut(this.pickupAnimTicks > 0); + if (tag.contains(TEXTURE_VARIANT_KEY)) { + this.setTextureVariant(tag.getInt(TEXTURE_VARIANT_KEY)); + } else { + this.assignRandomTextureVariant(); + } + this.stopGliding("loaded_from_nbt"); + if (tag.contains(GLIDE_DIR_X_KEY) && tag.contains(GLIDE_DIR_Y_KEY) && tag.contains(GLIDE_DIR_Z_KEY)) { + this.glideDirection = new Vec3( + tag.getDouble(GLIDE_DIR_X_KEY), + tag.getDouble(GLIDE_DIR_Y_KEY), + tag.getDouble(GLIDE_DIR_Z_KEY) + ); + } else { + this.glideDirection = null; + } + this.shoulderPlayerId = null; + this.shoulderClimbStartPos = null; + this.climbingToShoulderTicks = 0; + this.shoulderSneakGraceTicks = 0; + this.shoulderInteractCooldownTicks = 0; + } + + @Override + public void tick() { + super.tick(); + if (this.temptGoal != null && this.temptGoal.isRunning() && !this.isTame() && this.tickCount % 100 == 0) { + this.playSound(AntarchySoundEvents.FLYING_SQUIRREL_BEG.get(), 1.0F, 1.0F); + } + if (this.wanderCooldown > 0) { + this.wanderCooldown--; + } + if (this.glideRecoveryTicks > 0) { + this.glideRecoveryTicks--; + } + if (this.recentEmergencyGlideCooldown > 0) { + this.recentEmergencyGlideCooldown--; + if (this.recentEmergencyGlideCooldown == 0) { + this.recentEmergencyGlideTarget = null; + } + } + if (this.recentGlideCooldown > 0) { + this.recentGlideCooldown--; + if (this.recentGlideCooldown == 0) { + this.recentGlideLaunch = null; + this.recentGlideTarget = null; + } + } + if (this.recentFailedClimbCooldown > 0) { + this.recentFailedClimbCooldown--; + if (this.recentFailedClimbCooldown == 0) { + this.recentFailedClimbTarget = null; + } + } + if (this.shoulderSneakGraceTicks > 0) { + this.shoulderSneakGraceTicks--; + } + if (this.shoulderInteractCooldownTicks > 0) { + this.shoulderInteractCooldownTicks--; + } + Vec3 motion = this.getDeltaMovement(); + double horizontalSpeed = motion.horizontalDistanceSqr(); + + if (!this.isGliding() && !this.isClimbingTrunk() && !this.isClimbingToShoulder() && horizontalSpeed > 1.0E-4D) { + float moveYaw = (float)(Mth.atan2(motion.z, motion.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(Mth.approachDegrees(this.getYRot(), moveYaw, 10.0F)); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + + if (!this.level().isClientSide) { + this.tickPickupAnimation(); + + if (this.isClimbingToShoulder()) { + Player shoulderPlayer = this.shoulderPlayerId != null + ? this.level().getPlayerByUUID(this.shoulderPlayerId) + : null; + if (shoulderPlayer == null || !shoulderPlayer.isAlive()) { + this.dismountShoulder(); + } else { + this.tickClimbingToShoulder(shoulderPlayer); + } + this.setNoGravity(true); + return; + } + + if (this.isOnShoulder()) { + if (!(this.getVehicle() instanceof Player shoulderPlayer) + || !shoulderPlayer.isAlive()) { + this.dismountShoulder(); + } else if (this.shoulderSneakGraceTicks <= 0 && shoulderPlayer.isShiftKeyDown()) { + this.glideOffShoulder(); + } else { + this.setDeltaMovement(Vec3.ZERO); + this.fallDistance = 0.0F; + } + this.setNoGravity(true); + return; + } + + if (!this.isGliding() + && !this.onGround() + && !this.isInWaterOrBubble() + && !this.isClimbingTrunk() + && this.glideRecoveryTicks <= 0 + && this.fallDistance > FALL_GLIDE_TRIGGER_DISTANCE + && this.getDeltaMovement().y < FALL_GLIDE_TRIGGER_SPEED) { + if (this.tickCount >= this.nextFallGlideScanTick) { + this.nextFallGlideScanTick = this.tickCount + 10; + this.cachedFallGlideTarget = this.findFallGlideTarget(); + } + BlockPos rescueTarget = this.cachedFallGlideTarget; + if (rescueTarget == null) { + if (this.tickCount >= this.nextBestGlideScanTick) { + this.nextBestGlideScanTick = this.tickCount + 10; + this.cachedBestGlideTarget = this.findBestGlideTarget(); + } + rescueTarget = this.cachedBestGlideTarget; + } + if (rescueTarget == null) { + rescueTarget = this.findForcedFallLanding(); + } + if (rescueTarget != null && this.isRecentEmergencyGlideTarget(rescueTarget)) { + rescueTarget = null; + } + if (rescueTarget != null) { + this.cachedFallGlideTarget = null; + this.cachedBestGlideTarget = null; + this.startGliding(rescueTarget, "emergency_fall_glide"); + } + } + + if (this.isGliding()) { + this.tickGliding(); + this.fallDistance = 0.0F; + } else { + this.glideTicks = 0; + this.glideTarget = null; + if (this.isClimbingTrunk()) { + this.fallDistance = 0.0F; + } + } + + this.tickIdleStallLogging(horizontalSpeed); + } + this.setNoGravity(this.isGliding() || this.isClimbingTrunk() || this.isClimbingToShoulder() || this.isOnShoulder()); + } + + @Override + public void rideTick() { + super.rideTick(); + if (this.getVehicle() instanceof Player player) { + Vec3 shoulderPos = this.getShoulderRidePos(player); + this.setPos(shoulderPos.x, shoulderPos.y, shoulderPos.z); + this.setDeltaMovement(Vec3.ZERO); + this.setYRot(player.getYHeadRot()); + this.setXRot(player.getXRot()); + this.yBodyRot = player.getYHeadRot(); + this.yHeadRot = player.getYHeadRot(); + this.fallDistance = 0.0F; + } + } + + @Override + public boolean onClimbable() { + return this.isClimbingTrunk(); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (this.isClimbingTrunk() && source.is(DamageTypes.IN_WALL)) { + return false; + } + + if ((this.isOnShoulder() || this.isClimbingToShoulder()) && !this.level().isClientSide) { + this.dismountShoulder(); + } + + return super.hurt(source, amount); + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (this.isTame() && this.isOwnedBy(player) && stack.isEmpty()) { + if (!this.level().isClientSide) { + if (player.isShiftKeyDown()) { + this.handleOwnerShoulderInteract(player); + } else { + this.toggleFollowState(player); + } + } + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + if (!this.isFood(stack)) { + return InteractionResult.PASS; + } + + if (this.level().isClientSide) { + boolean canUseFood = !this.isTame() || this.isBaby() || this.canFallInLove() || this.getHealth() < this.getMaxHealth(); + return canUseFood ? InteractionResult.SUCCESS : InteractionResult.CONSUME; + } + + if (!this.isTame()) { + this.usePlayerItem(player, hand, stack); + if (this.random.nextInt(3) == 0) { + this.tame(player); + this.wanderCooldown = 0; + this.setOrderedToSit(false); + this.cancelTravel(); + this.setTarget(null); + this.level().broadcastEntityEvent(this, (byte) 7); + } else { + this.level().broadcastEntityEvent(this, (byte) 6); + } + return InteractionResult.CONSUME; + } + + if (this.isBaby()) { + this.usePlayerItem(player, hand, stack); + this.ageUp((int) ((float) (-this.getAge() / 20) * 0.1F), true); + this.playSound(AntarchySoundEvents.FLYING_SQUIRREL_NUT.get(), 0.35F, 1.0F + this.random.nextFloat() * 0.2F); + return InteractionResult.CONSUME; + } + + if (this.canFallInLove()) { + this.usePlayerItem(player, hand, stack); + this.setInLove(player); + this.playSound(AntarchySoundEvents.FLYING_SQUIRREL_NUT.get(), 0.35F, 1.0F + this.random.nextFloat() * 0.2F); + return InteractionResult.CONSUME; + } + + if (this.getHealth() < this.getMaxHealth()) { + this.usePlayerItem(player, hand, stack); + this.heal(2.0F); + this.playSound(AntarchySoundEvents.FLYING_SQUIRREL_NUT.get(), 0.35F, 1.0F + this.random.nextFloat() * 0.2F); + return InteractionResult.CONSUME; + } + + return InteractionResult.PASS; + } + + public boolean handleOwnerShoulderInteract(Player player) { + if (!this.isTame() || !this.isOwnedBy(player)) { + return false; + } + + if (this.isOnShoulder()) { + if (!this.level().isClientSide) { + this.glideOffShoulder(); + } + player.displayClientMessage(Component.literal("Flying squirrel glided off your shoulder."), true); + return true; + } + + if (this.isClimbingToShoulder()) { + this.dismountShoulder(); + player.displayClientMessage(Component.literal("Flying squirrel left your shoulder."), true); + return true; + } + + if (this.shoulderInteractCooldownTicks > 0) { + return true; + } + + this.startShoulderMountSequence(player); + player.displayClientMessage(Component.literal("Flying squirrel is climbing onto your shoulder."), true); + return true; + } + + private void toggleFollowState(Player player) { + boolean shouldSit = !this.isOrderedToSit(); + this.setOrderedToSit(shouldSit); + this.setTarget(null); + this.cancelTravel(); + if (shouldSit) { + this.setDeltaMovement(Vec3.ZERO); + } else { + this.wanderCooldown = 0; + } + player.displayClientMessage(Component.literal(shouldSit ? "Flying squirrel set to sit." : "Flying squirrel set to follow."), true); + } + + @Override + public boolean isFood(ItemStack stack) { + return stack.is(AntarchyTags.Items.FLYING_SQUIRREL_NUTS); + } + + @Override + public boolean canMate(Animal otherAnimal) { + return otherAnimal instanceof FlyingSquirrelEntity + && otherAnimal != this + && this.isTame() + && ((FlyingSquirrelEntity) otherAnimal).isTame() + && this.isInLove() + && otherAnimal.isInLove(); + } + + @Override + @Nullable + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + if (!(this.getType().create(level) instanceof FlyingSquirrelEntity flyingSquirrel)) { + return null; + } + flyingSquirrel.setTextureVariant(this.getTextureVariant()); + return flyingSquirrel; + } + + @Override + @Nullable + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData spawnGroupData) { + SpawnGroupData finalized = super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); + this.assignRandomTextureVariant(); + this.stopGliding("spawn_initialized"); + this.wanderCooldown = 40 + this.random.nextInt(60); + this.glideRecoveryTicks = 0; + this.setClimbingTrunk(false); + this.setPickingUpNut(false); + this.pickupAnimTicks = 0; + return finalized; + } + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.FLYING_SQUIRREL_IDLE.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.FLYING_SQUIRREL_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.FLYING_SQUIRREL_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 0.35F; + } + + @Override + protected void playStepSound(BlockPos pos, BlockState state) { + SoundType soundType = state.getSoundType(); + this.playSound(soundType.getStepSound(), 0.12F, 1.15F); + } + + public boolean isGliding() { + return this.entityData.get(GLIDING); + } + + public boolean isClimbingTrunk() { + return this.entityData.get(CLIMBING); + } + + public boolean isPickingUpNut() { + return this.entityData.get(PICKING_UP_NUT); + } + + public String getTextureVariantName() { + int variant = this.getTextureVariant(); + return TEXTURE_VARIANT_NAMES[Mth.clamp(variant, 0, TEXTURE_VARIANT_NAMES.length - 1)]; + } + + public boolean shouldMirrorIdleAnimation() { + return false; + } + + public int getWanderCooldown() { + return this.wanderCooldown; + } + + public void setWanderCooldown(int wanderCooldown) { + this.wanderCooldown = wanderCooldown; + } + + public void setGliding(boolean gliding) { + this.entityData.set(GLIDING, gliding); + } + + public void setClimbingTrunk(boolean climbing) { + this.entityData.set(CLIMBING, climbing); + } + + public void setPickingUpNut(boolean pickingUpNut) { + this.entityData.set(PICKING_UP_NUT, pickingUpNut); + } + + private void assignRandomTextureVariant() { + double roll = this.random.nextDouble(); + if (roll < 0.005D) { + this.setTextureVariant(TEXTURE_VARIANT_ALBINO); + } else if (roll < 0.205D) { + this.setTextureVariant(TEXTURE_VARIANT_BROWN); + } else { + this.setTextureVariant(TEXTURE_VARIANT_REGULAR); + } + } + + private int getTextureVariant() { + return this.entityData.get(TEXTURE_VARIANT); + } + + private void setTextureVariant(int variant) { + this.entityData.set(TEXTURE_VARIANT, Mth.clamp(variant, 0, TEXTURE_VARIANT_NAMES.length - 1)); + } + + public boolean isOnShoulder() { + return this.getVehicle() instanceof Player; + } + + public boolean isClimbingToShoulder() { + return this.climbingToShoulderTicks > 0 && this.shoulderPlayerId != null; + } + + private void startShoulderMountSequence(Player player) { + this.shoulderPlayerId = player.getUUID(); + this.shoulderClimbStartPos = this.position(); + this.climbingToShoulderTicks = SHOULDER_CLIMB_TICKS; + this.shoulderSneakGraceTicks = SHOULDER_SNEAK_GRACE_TICKS; + this.setOrderedToSit(false); + this.setClimbingTrunk(false); + this.stopGliding("start_shoulder_mount"); + this.setNoGravity(true); + this.cancelTravel(); + this.setTarget(null); + this.stopRiding(); + } + + private void dismountShoulder() { + Entity vehicle = this.getVehicle(); + if (vehicle != null) { + this.stopRiding(); + Vec3 dismountPos = vehicle.position().add(0.0D, 0.1D, 0.0D); + this.setPos(dismountPos.x, dismountPos.y, dismountPos.z); + } + this.clearShoulderMountState(); + this.setNoGravity(false); + this.wanderCooldown = 20 + this.random.nextInt(30); + } + + private void clearShoulderMountState() { + this.shoulderPlayerId = null; + this.shoulderClimbStartPos = null; + this.climbingToShoulderTicks = 0; + this.shoulderSneakGraceTicks = 0; + this.shoulderInteractCooldownTicks = SHOULDER_INTERACT_COOLDOWN_TICKS; + this.setClimbingTrunk(false); + } + + private void glideOffShoulder() { + Entity vehicle = this.getVehicle(); + if (!(vehicle instanceof Player player)) { + this.dismountShoulder(); + return; + } + + Vec3 launchPos = this.getShoulderRidePos(player); + this.stopRiding(); + this.setPos(launchPos.x, launchPos.y, launchPos.z); + this.clearShoulderMountState(); + this.fallDistance = 0.0F; + + BlockPos glideTarget = this.findFallGlideTarget(); + if (glideTarget == null) { + glideTarget = this.findBestGlideTarget(); + } + if (glideTarget == null) { + glideTarget = this.findForcedFallLanding(); + } + + if (glideTarget != null) { + this.startGliding(glideTarget, "shoulder_dismount_glide"); + return; + } + + this.setNoGravity(false); + this.wanderCooldown = 20 + this.random.nextInt(30); + } + + private void tickClimbingToShoulder(Player player) { + if (this.shoulderClimbStartPos == null) { + this.shoulderClimbStartPos = this.position(); + } + + this.cancelTravel(); + this.setTarget(null); + this.setClimbingTrunk(true); + this.setDeltaMovement(Vec3.ZERO); + this.fallDistance = 0.0F; + + int ticksRemaining = this.climbingToShoulderTicks - 1; + double progress = 1.0D - (double)Math.max(ticksRemaining, 0) / (double)SHOULDER_CLIMB_TICKS; + Vec3 midClimbPos = this.getShoulderClimbMidpoint(player); + Vec3 targetPos = this.getShoulderRidePos(player); + Vec3 nextPos; + if (progress < 0.65D) { + nextPos = this.shoulderClimbStartPos.lerp(midClimbPos, progress / 0.65D); + } else { + nextPos = midClimbPos.lerp(targetPos, (progress - 0.65D) / 0.35D); + } + this.setPos(nextPos.x, nextPos.y, nextPos.z); + float climbYaw = player.getYHeadRot() + 180.0F; + this.setYRot(climbYaw); + this.setXRot(player.getXRot()); + this.yBodyRot = climbYaw; + this.yHeadRot = climbYaw; + this.climbingToShoulderTicks = ticksRemaining; + + if (this.climbingToShoulderTicks <= 0) { + this.finishShoulderMount(player); + } + } + + private void finishShoulderMount(Player player) { + this.climbingToShoulderTicks = 0; + this.shoulderClimbStartPos = null; + this.shoulderPlayerId = null; + this.shoulderSneakGraceTicks = SHOULDER_SNEAK_GRACE_TICKS; + this.setClimbingTrunk(false); + this.startRiding(player, true); + this.setDeltaMovement(Vec3.ZERO); + this.fallDistance = 0.0F; + } + + private Vec3 getShoulderRidePos(Player player) { + float headYaw = player.getYHeadRot(); + Vec3 horizontalForward = Vec3.directionFromRotation(0.0F, headYaw).normalize(); + Vec3 headForward = Vec3.directionFromRotation(player.getXRot(), headYaw).normalize(); + Vec3 shoulderSide = new Vec3(-horizontalForward.z, 0.0D, horizontalForward.x).normalize(); + Vec3 headUp = shoulderSide.cross(headForward).normalize(); + Vec3 headBase = player.position().add(0.0D, player.getEyeHeight(), 0.0D); + + return headBase + .add(shoulderSide.scale(SHOULDER_X_OFFSET)) + .add(headForward.scale(SHOULDER_FORWARD_OFFSET)) + .add(headUp.scale(SHOULDER_HEAD_Y_OFFSET)); + } + + private Vec3 getShoulderClimbMidpoint(Player player) { + float headYaw = player.getYHeadRot(); + Vec3 forward = Vec3.directionFromRotation(0.0F, headYaw).normalize(); + Vec3 side = new Vec3(-forward.z, 0.0D, forward.x).normalize(); + Vec3 front = forward.scale(0.08D); + Vec3 lateral = side.scale(SHOULDER_X_OFFSET); + return player.position() + .add(front) + .add(lateral) + .add(0.0D, player.getBbHeight() * 0.32D, 0.0D); + } + + private void startPickupAnimation() { + this.setPickingUpNut(true); + this.pickupAnimTicks = PICKUP_ANIM_TICKS; + this.cancelTravel(); + this.setDeltaMovement(Vec3.ZERO); + } + + private void tickPickupAnimation() { + if (this.pickupAnimTicks <= 0) { + return; + } + + this.pickupAnimTicks--; + this.cancelTravel(); + this.setDeltaMovement(Vec3.ZERO); + + if (this.pickupAnimTicks <= 0) { + this.pickupAnimTicks = 0; + this.setPickingUpNut(false); + } + } + + private void tickGlideLoopSound() { + if (this.level().isClientSide || !this.isGliding()) { + return; + } + + if (this.glideLoopSoundCooldown > 0) { + this.glideLoopSoundCooldown--; + return; + } + + this.playSound(AntarchySoundEvents.FLYING_SQUIRREL_GLIDE_LOOP.get(), 0.2F, 0.92F + this.random.nextFloat() * 0.10F); + this.glideLoopSoundCooldown = 8 + this.random.nextInt(6); + } + + void startGliding(BlockPos targetStandPos, String reason) { + this.currentGlideLaunch = this.blockPosition().immutable(); + this.glideTarget = targetStandPos.immutable(); + this.currentGlideReason = reason; + this.glideTicks = 0; + this.glideLoopSoundCooldown = 0; + this.setGliding(true); + this.setClimbingTrunk(false); + this.cancelTravel(); + this.setNoGravity(true); + + Vec3 launch = Vec3.atBottomCenterOf(targetStandPos).subtract(this.position()); + Vec3 horizontal = new Vec3(launch.x, 0.0D, launch.z); + + if (horizontal.lengthSqr() > 1.0E-4D) { + this.glideDirection = horizontal.normalize(); + } else { + float yawRad = this.getYRot() * ((float)Math.PI / 180.0F); + this.glideDirection = new Vec3(-Mth.sin(yawRad), 0.0D, Mth.cos(yawRad)).normalize(); + } + + this.setDeltaMovement( + this.glideDirection.x * 0.38D, + -0.06D, + this.glideDirection.z * 0.38D + ); + + float targetYaw = (float)(Mth.atan2(this.glideDirection.z, this.glideDirection.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(targetYaw); + this.yBodyRot = targetYaw; + this.yHeadRot = targetYaw; + + this.hasImpulse = true; + } + + void stopGliding(String reason) { + if (this.isGliding()) { + if (this.currentGlideLaunch != null && this.glideTarget != null) { + this.recentGlideLaunch = this.currentGlideLaunch.immutable(); + this.recentGlideTarget = this.glideTarget.immutable(); + this.recentGlideCooldown = RECENT_GLIDE_REPEAT_COOLDOWN; + } + if ("emergency_fall_glide".equals(this.currentGlideReason) && this.glideTarget != null) { + this.recentEmergencyGlideTarget = this.glideTarget.immutable(); + this.recentEmergencyGlideCooldown = EMERGENCY_GLIDE_REPEAT_COOLDOWN; + } + } + this.setGliding(false); + this.glideTarget = null; + this.glideTicks = 0; + this.glideDirection = null; + this.currentGlideLaunch = null; + this.currentGlideReason = null; + this.glideLoopSoundCooldown = 0; + this.glideRecoveryTicks = 16; + } + + private void tickGliding() { + this.tickGlideLoopSound(); + + if (this.glideTarget == null || this.isInWaterOrBubble()) { + this.stopGliding( + "hit_ground_or_collision" + + ", onGround=" + this.onGround() + + ", inWater=" + this.isInWaterOrBubble() + ); + return; + } + + if (this.onGround() && this.glideTicks > 1) { + this.stopGliding("hit_ground_or_collision, onGround=true, inWater=false"); + return; + } + + if (this.glideDirection == null) { + this.stopGliding("missing_glide_direction"); + return; + } + + if (++this.glideTicks > MAX_GLIDE_TICKS) { + this.stopGliding("glide_timeout"); + return; + } + + Vec3 targetCenter = Vec3.atBottomCenterOf(this.glideTarget).add(0.0D, 0.08D, 0.0D); + Vec3 toTarget = targetCenter.subtract(this.position()); + + double horizontalDistance = Math.sqrt(toTarget.x * toTarget.x + toTarget.z * toTarget.z); + if (horizontalDistance < 0.85D && Math.abs(toTarget.y) <= 1.0D) { + this.stopGliding("reached_glide_target"); + return; + } + + Vec3 targetDirection = new Vec3(toTarget.x, 0.0D, toTarget.z); + if (targetDirection.lengthSqr() > 1.0E-4D) { + targetDirection = targetDirection.normalize(); + this.glideDirection = this.glideDirection.scale(0.92D) + .add(targetDirection.scale(0.08D)) + .normalize(); + } + + Vec3 motion = this.getDeltaMovement(); + + double horizontalSpeed = Mth.clamp(horizontalDistance * 0.05D, 0.30D, 0.48D); + double verticalSpeed = Mth.clamp(toTarget.y * 0.04D, -0.20D, -0.02D); + + this.setDeltaMovement( + this.glideDirection.x * horizontalSpeed, + verticalSpeed, + this.glideDirection.z * horizontalSpeed + ); + + this.hasImpulse = true; + + float targetYaw = (float)(Mth.atan2(this.glideDirection.z, this.glideDirection.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(Mth.approachDegrees(this.getYRot(), targetYaw, 4.0F)); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + + boolean requestTravelTo(BlockPos targetPos, double speed, String purpose) { + if (this.getNavigation() instanceof FlyingSquirrelNavigation squirrelNavigation) { + return squirrelNavigation.requestTravelTo(targetPos, speed, purpose); + } + + double x = targetPos.getX() + 0.5D; + double y = targetPos.getY(); + double z = targetPos.getZ() + 0.5D; + boolean moved = this.getNavigation().moveTo(x, y, z, speed); + this.getNavigation().setSpeedModifier(speed); + return moved; + } + + private void cancelTravel() { + if (this.getNavigation() instanceof FlyingSquirrelNavigation squirrelNavigation) { + squirrelNavigation.cancelTraversal(); + return; + } + + this.getNavigation().stop(); + } + + private boolean isRecentEmergencyGlideTarget(BlockPos targetStandPos) { + return this.recentEmergencyGlideTarget != null + && this.recentEmergencyGlideCooldown > 0 + && this.recentEmergencyGlideTarget.closerThan(targetStandPos, 4.0D); + } + + boolean isRecentGlidePath(Vec3 launchFrom, BlockPos targetStandPos) { + if (this.recentGlideCooldown <= 0 || this.recentGlideLaunch == null || this.recentGlideTarget == null) { + return false; + } + + BlockPos launchPos = BlockPos.containing(launchFrom); + return this.recentGlideLaunch.closerThan(launchPos, 4.0D) + && this.recentGlideTarget.closerThan(targetStandPos, 4.0D); + } + + boolean isAtStandPos(BlockPos standPos) { + return Vec3.atBottomCenterOf(standPos).distanceToSqr(this.position()) <= 1.45D; + } + + @Nullable BlockPos findClosestHarvestableAcorn() { + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + double bestDistance = Double.MAX_VALUE; + + for (BlockPos pos : BlockPos.betweenClosed(origin.offset(-16, -6, -16), origin.offset(16, 8, 16))) { + BlockState state = this.level().getBlockState(pos); + if (!isHarvestableAcorn(state)) { + continue; + } + + double distance = origin.distSqr(pos); + if (distance < bestDistance) { + bestDistance = distance; + bestPos = pos.immutable(); + } + } + + return bestPos; + } + + @Nullable ItemEntity findClosestNutItem() { + ItemEntity bestMatch = null; + double bestDistance = Double.MAX_VALUE; + for (ItemEntity itemEntity : this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(NUT_SEARCH_RANGE))) { + if (!itemEntity.isAlive() || !itemEntity.getItem().is(AntarchyTags.Items.FLYING_SQUIRREL_NUTS)) { + continue; + } + + double distance = this.distanceToSqr(itemEntity); + if (distance > NUT_SEARCH_RANGE * NUT_SEARCH_RANGE || distance >= bestDistance) { + continue; + } + + bestDistance = distance; + bestMatch = itemEntity; + } + + return bestMatch; + } + + @Nullable BlockPos findAcornHarvestStandPos(BlockPos acornPos) { + BlockPos bestPos = null; + double bestScore = Double.MAX_VALUE; + + for (int dx = -3; dx <= 3; dx++) { + for (int dz = -3; dz <= 3; dz++) { + for (int dy = -3; dy <= 3; dy++) { + BlockPos standPos = acornPos.offset(dx, dy, dz); + if (!isOpenStandPos(this.level(), standPos)) { + continue; + } + + double distanceToAcorn = Vec3.atBottomCenterOf(standPos).distanceToSqr(Vec3.atCenterOf(acornPos)); + if (distanceToAcorn > 9.0D) { + continue; + } + + double score = distanceToAcorn; + if (isAdjacentToLog(this.level(), standPos)) { + score -= 1.0D; + } + if (score < bestScore) { + bestScore = score; + bestPos = standPos.immutable(); + } + } + } + } + + return bestPos; + } + + public void collectNut(ItemEntity itemEntity) { + this.startPickupAnimation(); + + ItemStack particleStack = itemEntity.getItem().copy(); + particleStack.setCount(1); + ItemStack itemStack = itemEntity.getItem(); + itemStack.shrink(1); + if (itemStack.isEmpty()) { + itemEntity.discard(); + } + this.wanderCooldown = 30 + this.random.nextInt(80); + this.playSound(AntarchySoundEvents.FLYING_SQUIRREL_NUT.get(), 0.35F, 0.95F + this.random.nextFloat() * 0.2F); + + if (this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles( + new ItemParticleOption(ParticleTypes.ITEM, particleStack), + this.getX(), + this.getEyeY() - 0.15D, + this.getZ(), + 6, + 0.18D, + 0.08D, + 0.18D, + 0.01D + ); + } + } + + boolean harvestAcorn(BlockPos acornPos) { + if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + return false; + } + + BlockState state = this.level().getBlockState(acornPos); + if (!isHarvestableAcorn(state)) { + return false; + } + + SoundType soundType = state.getSoundType(); + boolean destroyed = this.level().destroyBlock(acornPos, true, this); + if (destroyed) { + this.wanderCooldown = 10 + this.random.nextInt(15); + this.playSound(soundType.getBreakSound(), 0.25F, 1.1F); + } + return destroyed; + } + + @Nullable + private BlockPos findFallGlideTarget() { + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + double bestScore = Double.NEGATIVE_INFINITY; + Vec3 motion = this.getDeltaMovement(); + Vec3 preferredDirection = new Vec3(motion.x, 0.0D, motion.z); + if (preferredDirection.lengthSqr() <= 1.0E-4D) { + float yawRad = this.getYRot() * ((float)Math.PI / 180.0F); + preferredDirection = new Vec3(-Mth.sin(yawRad), 0.0D, Mth.cos(yawRad)); + } + if (preferredDirection.lengthSqr() > 1.0E-4D) { + preferredDirection = preferredDirection.normalize(); + } + + for (int dx = -20; dx <= 20; dx++) { + for (int dz = -20; dz <= 20; dz++) { + for (int dy = -28; dy <= -2; dy++) { + BlockPos supportPos = origin.offset(dx, dy, dz); + BlockState supportState = this.level().getBlockState(supportPos); + if (!isStandableSurface(supportState)) { + continue; + } + + BlockPos standPos = supportPos.above(); + if (!isEmergencyLandingPos(this.level(), standPos)) { + continue; + } + if (this.isRecentGlidePath(this.position(), standPos)) { + continue; + } + + Vec3 standCenter = Vec3.atBottomCenterOf(standPos); + double horizontalDistance = Math.sqrt((standCenter.x - this.getX()) * (standCenter.x - this.getX()) + + (standCenter.z - this.getZ()) * (standCenter.z - this.getZ())); + if (horizontalDistance < 3.0D || horizontalDistance > 28.0D) { + continue; + } + + double verticalDrop = origin.getY() - standPos.getY(); + double score = horizontalDistance * 1.6D; + score += Math.min(verticalDrop, 18.0D) * 0.8D; + if (preferredDirection.lengthSqr() > 1.0E-4D) { + Vec3 toTarget = new Vec3(standCenter.x - this.getX(), 0.0D, standCenter.z - this.getZ()); + if (toTarget.lengthSqr() > 1.0E-4D) { + double alignment = preferredDirection.dot(toTarget.normalize()); + score += alignment * 10.0D; + } + } + if (isAdjacentToLog(this.level(), standPos)) { + score += 4.0D; + } + if (supportState.getBlock() instanceof OuranwoodLeavesBlock) { + score += 6.0D; + } else if (supportState.blocksMotion()) { + score += 2.0D; + } + + if (score > bestScore) { + bestScore = score; + bestPos = standPos.immutable(); + } + } + } + } + + if (bestPos == null) { + bestPos = this.findFallbackFallLanding(preferredDirection); + } + + return bestPos; + } + + @Nullable + BlockPos findBestGlideTarget() { + BlockPos origin = this.blockPosition(); + BlockPos bestPos = null; + double bestScore = Double.NEGATIVE_INFINITY; + + for (int dx = -24; dx <= 24; dx++) { + for (int dz = -24; dz <= 24; dz++) { + for (int dy = -32; dy <= -1; dy++) { + BlockPos supportPos = origin.offset(dx, dy, dz); + if (!isStandableSurface(this.level().getBlockState(supportPos))) { + continue; + } + + BlockPos standPos = supportPos.above(); + if (!isOpenStandPos(this.level(), standPos)) { + continue; + } + if (this.isRecentGlidePath(this.position(), standPos)) { + continue; + } + + double score = this.scoreGlideTarget(standPos); + if (score > bestScore) { + bestScore = score; + bestPos = standPos.immutable(); + } + } + } + } + + return bestPos; + } + + @Nullable + private BlockPos findFallbackFallLanding(Vec3 preferredDirection) { + if (preferredDirection.lengthSqr() <= 1.0E-4D) { + return null; + } + + BlockPos origin = this.blockPosition(); + int minY = Math.max(this.level().getMinBuildHeight() + 1, origin.getY() - 40); + + for (int step = 4; step <= 18; step += 2) { + int x = Mth.floor(this.getX() + preferredDirection.x * step); + int z = Mth.floor(this.getZ() + preferredDirection.z * step); + + for (int y = origin.getY() - 2; y >= minY; y--) { + BlockPos supportPos = new BlockPos(x, y, z); + if (!isStandableSurface(this.level().getBlockState(supportPos))) { + continue; + } + + BlockPos standPos = supportPos.above(); + if (isEmergencyLandingPos(this.level(), standPos)) { + return standPos; + } + } + } + + return null; + } + + @Nullable + private BlockPos findForcedFallLanding() { + Vec3 preferredDirection = this.getPreferredGlideDirection(); + BlockPos origin = this.blockPosition(); + int minY = Math.max(this.level().getMinBuildHeight() + 1, origin.getY() - 96); + + for (int forward = 4; forward <= 20; forward += 2) { + double sampleX = this.getX() + preferredDirection.x * forward; + double sampleZ = this.getZ() + preferredDirection.z * forward; + + BlockPos landing = this.findLandingInColumn(Mth.floor(sampleX), Mth.floor(sampleZ), origin.getY() - 1, minY); + if (landing != null && !this.isRecentGlidePath(this.position(), landing)) { + return landing; + } + + Vec3 side = new Vec3(-preferredDirection.z, 0.0D, preferredDirection.x); + for (int lateral = 2; lateral <= 4; lateral += 2) { + BlockPos leftLanding = this.findLandingInColumn( + Mth.floor(sampleX + side.x * lateral), + Mth.floor(sampleZ + side.z * lateral), + origin.getY() - 1, + minY + ); + if (leftLanding != null && !this.isRecentGlidePath(this.position(), leftLanding)) { + return leftLanding; + } + + BlockPos rightLanding = this.findLandingInColumn( + Mth.floor(sampleX - side.x * lateral), + Mth.floor(sampleZ - side.z * lateral), + origin.getY() - 1, + minY + ); + if (rightLanding != null && !this.isRecentGlidePath(this.position(), rightLanding)) { + return rightLanding; + } + } + } + + BlockPos directLanding = this.findLandingInColumn(origin.getX(), origin.getZ(), origin.getY() - 1, minY); + return directLanding != null && !this.isRecentGlidePath(this.position(), directLanding) ? directLanding : null; + } + + @Nullable + private BlockPos findLandingInColumn(int x, int z, int startY, int minY) { + for (int y = startY; y >= minY; y--) { + BlockPos supportPos = new BlockPos(x, y, z); + if (!isStandableSurface(this.level().getBlockState(supportPos))) { + continue; + } + + BlockPos standPos = supportPos.above(); + if (isEmergencyLandingPos(this.level(), standPos)) { + return standPos.immutable(); + } + } + + return null; + } + + static boolean hasNearbyCanopy(BlockGetter level, BlockPos pos) { + for (int dx = -2; dx <= 2; dx++) { + for (int dz = -2; dz <= 2; dz++) { + for (int dy = -2; dy <= 2; dy++) { + if (isCanopySupport(level.getBlockState(pos.offset(dx, dy, dz)))) { + return true; + } + } + } + } + return false; + } + + private static boolean isCanopySupport(BlockState state) { + return state.getBlock() instanceof OuranwoodLeavesBlock || state.is(net.minecraft.tags.BlockTags.LOGS); + } + + private static boolean isClimbableTrunk(BlockState state) { + return state.is(net.minecraft.tags.BlockTags.LOGS); + } + + static boolean isStandableSurface(BlockState state) { + return state.blocksMotion() || isCanopySupport(state); + } + + static boolean isClimbSurface(BlockState state) { + return state.blocksMotion() || state.is(BlockTags.LEAVES); + } + + static boolean isClimbPassable(BlockState state) { + return state.isAir() || state.is(net.minecraft.tags.BlockTags.LEAVES); + } + + static boolean isOpenStandPos(BlockGetter level, BlockPos pos) { + return level.getBlockState(pos).isAir() + && level.getBlockState(pos.above()).isAir() + && isStandableSurface(level.getBlockState(pos.below())); + } + + private static boolean isEmergencyLandingPos(BlockGetter level, BlockPos pos) { + return level.getBlockState(pos).isAir() + && isStandableSurface(level.getBlockState(pos.below())); + } + + static boolean isOpenAir(BlockGetter level, BlockPos pos) { + return level.getBlockState(pos).isAir() + && level.getBlockState(pos.above()).isAir(); + } + + static boolean isOpenClimbPos(BlockGetter level, BlockPos pos) { + return isClimbPassable(level.getBlockState(pos)) + && isClimbPassable(level.getBlockState(pos.above())); + } + + static boolean isAdjacentToLog(BlockGetter level, BlockPos pos) { + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (level.getBlockState(pos.relative(direction)).is(net.minecraft.tags.BlockTags.LOGS) + || level.getBlockState(pos.above().relative(direction)).is(net.minecraft.tags.BlockTags.LOGS)) { + return true; + } + } + return false; + } + + static boolean isHarvestableAcorn(BlockState state) { + return state.getBlock() instanceof OuranwoodAcornBlock + && state.hasProperty(OuranwoodAcornBlock.HANGING) + && state.getValue(OuranwoodAcornBlock.HANGING); + } + + static boolean isGroundEscapeSurface(BlockState state) { + return state.is(net.minecraft.tags.BlockTags.DIRT) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.MOSS_CARPET); + } + + private Vec3 getPreferredGlideDirection() { + Vec3 motion = this.getDeltaMovement(); + Vec3 preferredDirection = new Vec3(motion.x, 0.0D, motion.z); + if (preferredDirection.lengthSqr() > 1.0E-4D) { + return preferredDirection.normalize(); + } + + float yawRad = this.getYRot() * ((float)Math.PI / 180.0F); + return new Vec3(-Mth.sin(yawRad), 0.0D, Mth.cos(yawRad)).normalize(); + } + + private double getClimbFaceOffset() { + return Mth.clamp(0.5D - this.getBbWidth() * 0.5D + 0.04D, 0.16D, 0.30D); + } + + private void tickIdleStallLogging(double horizontalSpeed) { + if (this.isOrderedToSit() || this.isGliding() || this.isClimbingTrunk() || this.isClimbingToShoulder() || this.isPickingUpNut() || this.isOnShoulder()) { + this.idleStallTicks = 0; + return; + } + + boolean mostlyStill = horizontalSpeed < 1.0E-4D && Math.abs(this.getDeltaMovement().y) < 0.02D; + if (!this.onGround() || !mostlyStill || !this.getNavigation().isDone()) { + this.idleStallTicks = 0; + return; + } + + this.idleStallTicks++; + + if (this.idleStallTicks == GROUND_STALL_FORCE_WANDER_TICKS) { + this.forceGroundStallWander(); + } + } + + private void forceGroundStallWander() { + BlockPos origin = this.blockPosition(); + for (int attempt = 0; attempt < 16; attempt++) { + int dx = this.random.nextIntBetweenInclusive(-8, 8); + int dz = this.random.nextIntBetweenInclusive(-8, 8); + for (int dy = 2; dy >= -2; dy--) { + BlockPos candidate = origin.offset(dx, dy, dz); + if (isOpenStandPos(this.level(), candidate)) { + this.wanderCooldown = 0; + this.requestTravelTo(candidate, 1.0D, "stall_recovery"); + this.idleStallTicks = 0; + return; + } + } + } + BlockPos glideTarget = this.findBestGlideTarget(); + if (glideTarget == null) { + glideTarget = this.findFallGlideTarget(); + } + if (glideTarget != null && !this.isRecentEmergencyGlideTarget(glideTarget)) { + this.startGliding(glideTarget, "stall_recovery_glide"); + this.idleStallTicks = 0; + return; + } + BlockPos edge = this.findNearestEdge(); + if (edge != null) { + this.setDeltaMovement( + (edge.getX() + 0.5D - this.getX()) * 0.15D, + 0.12D, + (edge.getZ() + 0.5D - this.getZ()) * 0.15D + ); + this.hasImpulse = true; + this.idleStallTicks = 0; + return; + } + this.idleStallTicks = GROUND_STALL_FORCE_WANDER_TICKS - 40; + } + + @Nullable + private BlockPos findNearestEdge() { + BlockPos origin = this.blockPosition(); + for (int r = 1; r <= 5; r++) { + for (Direction dir : Direction.Plane.HORIZONTAL) { + BlockPos candidate = origin.relative(dir, r); + if (this.level().getBlockState(candidate).isAir() + && this.level().getBlockState(candidate.below()).isAir()) { + return candidate.immutable(); + } + } + } + return null; + } + + private void refreshNutCache() { + if (this.tickCount < this.nextNutScanTick) { + return; + } + this.nextNutScanTick = this.tickCount + 30; + this.cachedNutItem = this.findClosestNutItem(); + this.cachedHarvestableAcorn = this.cachedNutItem == null ? this.findClosestHarvestableAcorn() : null; + } + + double scoreGlideTarget(BlockPos standPos) { + return this.scoreGlideTargetFrom(this.position(), standPos); + } + + double scoreGlideTargetFrom(Vec3 from, BlockPos standPos) { + Vec3 to = Vec3.atBottomCenterOf(standPos); + + double dx = to.x - from.x; + double dz = to.z - from.z; + double horizontalDistance = Math.sqrt(dx * dx + dz * dz); + double verticalDrop = from.y - to.y; + + if (horizontalDistance < MIN_GLIDE_DISTANCE || horizontalDistance > MAX_GLIDE_DISTANCE) { + return Double.NEGATIVE_INFINITY; + } + + if (verticalDrop <= MIN_GLIDE_DISTANCE || verticalDrop > 32.0D) { + return Double.NEGATIVE_INFINITY; + } + + return horizontalDistance * 1.5D + verticalDrop * 2.0D; + } + + private class FindNutGoal extends Goal { + @Nullable + private ItemEntity targetNut; + @Nullable + private BlockPos targetAcorn; + @Nullable + private BlockPos acornStandPos; + private int repathDelay; + private int searchCooldown; + + private FindNutGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + @Override + public boolean canUse() { + if (this.searchCooldown > 0) { + this.searchCooldown--; + return false; + } + + if (FlyingSquirrelEntity.this.isGliding() + || FlyingSquirrelEntity.this.isClimbingTrunk() + || FlyingSquirrelEntity.this.isPickingUpNut() + || FlyingSquirrelEntity.this.isOrderedToSit()) { + this.searchCooldown = 10; + return false; + } + + FlyingSquirrelEntity.this.refreshNutCache(); + this.targetNut = FlyingSquirrelEntity.this.cachedNutItem; + this.targetAcorn = null; + this.acornStandPos = null; + + if (this.targetNut != null) { + return true; + } + + if (!FlyingSquirrelEntity.this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + this.searchCooldown = 20; + return false; + } + + this.targetAcorn = FlyingSquirrelEntity.this.cachedHarvestableAcorn; + this.acornStandPos = this.targetAcorn == null ? null : FlyingSquirrelEntity.this.findAcornHarvestStandPos(this.targetAcorn); + + if (this.targetAcorn != null && this.acornStandPos != null) { + return true; + } + + this.searchCooldown = 20; + return false; + } + + @Override + public boolean canContinueToUse() { + if (FlyingSquirrelEntity.this.isGliding() + || FlyingSquirrelEntity.this.isClimbingTrunk() + || FlyingSquirrelEntity.this.isOrderedToSit()) { + return false; + } + + if (this.targetNut != null) { + return this.targetNut.isAlive(); + } + + return this.targetAcorn != null + && this.acornStandPos != null + && FlyingSquirrelEntity.isHarvestableAcorn(FlyingSquirrelEntity.this.level().getBlockState(this.targetAcorn)); + } + + @Override + public void start() { + this.repathDelay = 0; + this.searchCooldown = 0; + } + + @Override + public void stop() { + this.targetNut = null; + this.targetAcorn = null; + this.acornStandPos = null; + this.repathDelay = 0; + this.searchCooldown = 10; + if (!FlyingSquirrelEntity.this.isGliding()) { + FlyingSquirrelEntity.this.cancelTravel(); + } + } + + @Override + public void tick() { + if (this.targetNut != null) { + FlyingSquirrelEntity.this.getLookControl().setLookAt(this.targetNut, 30.0F, 30.0F); + + if (--this.repathDelay <= 0 && !FlyingSquirrelEntity.this.isGliding()) { + boolean moved = FlyingSquirrelEntity.this.requestTravelTo(this.targetNut.blockPosition(), 1.15D, "forage_item"); + this.repathDelay = moved ? 10 : 0; + } + + if (FlyingSquirrelEntity.this.distanceToSqr(this.targetNut) <= 2.1D) { + FlyingSquirrelEntity.this.collectNut(this.targetNut); + this.targetNut = null; + } + return; + } + + if (this.targetAcorn == null || this.acornStandPos == null) { + return; + } + + FlyingSquirrelEntity.this.getLookControl().setLookAt( + this.targetAcorn.getX() + 0.5D, + this.targetAcorn.getY() + 0.5D, + this.targetAcorn.getZ() + 0.5D + ); + + if (FlyingSquirrelEntity.this.position().distanceTo(Vec3.atCenterOf(this.targetAcorn)) <= 2.2D) { + if (FlyingSquirrelEntity.this.harvestAcorn(this.targetAcorn)) { + this.targetAcorn = null; + this.acornStandPos = null; + } + return; + } + + if (--this.repathDelay <= 0 && !FlyingSquirrelEntity.this.isGliding()) { + boolean moved = FlyingSquirrelEntity.this.requestTravelTo(this.acornStandPos, 1.1D, "forage_acorn"); + this.repathDelay = moved ? 10 : 0; + } + } + } + + private class ShoulderMountGoal extends Goal { + private ShoulderMountGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK, Flag.JUMP)); + } + + @Override + public boolean canUse() { + return FlyingSquirrelEntity.this.isClimbingToShoulder(); + } + + @Override + public boolean canContinueToUse() { + return FlyingSquirrelEntity.this.isClimbingToShoulder(); + } + + @Override + public void start() { + FlyingSquirrelEntity.this.cancelTravel(); + FlyingSquirrelEntity.this.setTarget(null); + } + + @Override + public void stop() { + if (FlyingSquirrelEntity.this.isClimbingToShoulder()) { + FlyingSquirrelEntity.this.dismountShoulder(); + } + } + + @Override + public void tick() { + FlyingSquirrelEntity.this.cancelTravel(); + FlyingSquirrelEntity.this.setTarget(null); + } + } + + private double getClimbBias() { + if (!this.onGround()) { + return 0.0D; + } + + BlockState groundState = this.level().getBlockState(this.blockPosition().below()); + if (!isGroundEscapeSurface(groundState)) { + return 0.0D; + } + + if (this.getY() >= 200.0D) { + return 0.0D; + } + + double yBias = Mth.clampedMap(this.getY(), 80.0D, 180.0D, 1.0D, 0.0D); + return Math.min(1.0D, yBias + 0.20D); + } + + private boolean shouldFavorClimbingFromGround() { + return this.getClimbBias() > 0.08D; + } + + private void rememberFailedClimbTarget(BlockPos topStandPos) { + this.recentFailedClimbTarget = topStandPos.immutable(); + this.recentFailedClimbCooldown = FAILED_CLIMB_TARGET_COOLDOWN; + } + + @Nullable + private ClimbTarget findBestClimbTarget() { + BlockPos origin = this.blockPosition(); + boolean favorClimbing = this.shouldFavorClimbingFromGround(); + int horizontalRange = favorClimbing ? 24 : 10; + ClimbTarget bestTarget = null; + double bestScore = Double.NEGATIVE_INFINITY; + int currentY = Mth.floor(this.getY()); + int minimumTargetY = currentY + (favorClimbing ? Math.max(MIN_CLIMB_HEIGHT, GROUND_ESCAPE_MIN_CLIMB_HEIGHT) : MIN_CLIMB_HEIGHT); + int maximumTargetY = currentY + MAX_CLIMB_HEIGHT; + + for (BlockPos baseStandPos : BlockPos.betweenClosed(origin.offset(-horizontalRange, -1, -horizontalRange), origin.offset(horizontalRange, 1, horizontalRange))) { + if (!isOpenStandPos(this.level(), baseStandPos)) { + continue; + } + + Direction attachDirection = this.findClimbAttachmentDirection(baseStandPos, null); + if (attachDirection == null || !this.isValidClimbColumnPos(baseStandPos, attachDirection)) { + continue; + } + + int reachableTopY = this.findHighestReachableClimbY(baseStandPos, maximumTargetY, attachDirection); + if (reachableTopY < minimumTargetY) { + continue; + } + + BlockPos topStandPos = this.findBestClimbPerch(baseStandPos, minimumTargetY, reachableTopY + 2, attachDirection); + if (topStandPos == null) { + continue; + } + + if (this.recentFailedClimbTarget != null + && this.recentFailedClimbCooldown > 0 + && this.recentFailedClimbTarget.closerThan(topStandPos, 4.0D)) { + continue; + } + + int climbHeight = topStandPos.getY() - currentY; + if (climbHeight < MIN_CLIMB_HEIGHT || climbHeight > MAX_CLIMB_HEIGHT) { + continue; + } + + double walkDistance = Vec3.atBottomCenterOf(baseStandPos).distanceTo(this.position()); + double perchOffset = Vec3.atBottomCenterOf(topStandPos).distanceTo(Vec3.atBottomCenterOf(baseStandPos)); + double score = climbHeight * (favorClimbing ? 10.0D : 4.5D) - walkDistance - perchOffset * 0.6D; + if (favorClimbing) { + score += 20.0D; + } + if (score > bestScore) { + bestScore = score; + bestTarget = new ClimbTarget( + baseStandPos.immutable(), + topStandPos.immutable(), + attachDirection + ); + } + } + + return bestTarget; + } + + private int findHighestReachableClimbY(BlockPos baseStandPos, int maxTargetY, Direction preferredDirection) { + int highestOpenY = baseStandPos.getY(); + for (int y = baseStandPos.getY(); y <= maxTargetY; y++) { + BlockPos columnPos = new BlockPos(baseStandPos.getX(), y, baseStandPos.getZ()); + if (!this.isValidClimbColumnPos(columnPos, preferredDirection)) { + break; + } + highestOpenY = y; + } + + return highestOpenY; + } + + private boolean hasSideClimbSupportAt(BlockPos pos) { + return this.findClimbAttachmentDirection(pos, null) != null; + } + + private boolean hasClimbSupportAt(BlockPos pos) { + return this.hasSideClimbSupportAt(pos) || isStandableSurface(this.level().getBlockState(pos.above())); + } + + private boolean isValidClimbColumnPos(BlockPos pos, @Nullable Direction preferredDirection) { + return isOpenClimbPos(this.level(), pos) && this.findClimbAttachmentDirection(pos, preferredDirection) != null; + } + + private Vec3 getClimbAttachPoint(BlockPos climbColumnPos, @Nullable Direction preferredDirection) { + Direction attachDirection = this.findClimbAttachmentDirection(climbColumnPos, preferredDirection); + double x = climbColumnPos.getX() + 0.5D; + double y = climbColumnPos.getY(); + double z = climbColumnPos.getZ() + 0.5D; + if (attachDirection == null) { + return new Vec3(x, y, z); + } + double faceOffset = this.getClimbFaceOffset(); + switch (attachDirection) { + case NORTH -> z -= faceOffset; + case SOUTH -> z += faceOffset; + case WEST -> x -= faceOffset; + case EAST -> x += faceOffset; + } + return new Vec3(x, y, z); + } + + @Nullable + private Direction findClimbAttachmentDirection(BlockPos pos, @Nullable Direction preferredDirection) { + if (preferredDirection != null + && preferredDirection.getAxis().isHorizontal() + && this.isValidClimbSupport(pos.relative(preferredDirection))) { + return preferredDirection; + } + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockState supportState = this.level().getBlockState(pos.relative(direction)); + if (supportState.is(BlockTags.LOGS)) { + return direction; + } + } + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockState supportState = this.level().getBlockState(pos.relative(direction)); + if (supportState.blocksMotion()) { + return direction; + } + } + return null; + } + + private boolean isValidClimbSupport(BlockPos pos) { + BlockState state = this.level().getBlockState(pos); + return state.is(BlockTags.LOGS) + || (state.blocksMotion() && !state.is(BlockTags.LEAVES)) + || state.is(BlockTags.LEAVES); + } + + @Nullable + private BlockPos findBestClimbPerch(BlockPos baseStandPos, int minimumY, int maximumY, Direction preferredDirection) { + BlockPos bestStandPos = null; + double bestScore = Double.NEGATIVE_INFINITY; + for (int y = maximumY; y >= minimumY; y--) { + for (int dx = -2; dx <= 2; dx++) { + for (int dz = -2; dz <= 2; dz++) { + if (Math.abs(dx) + Math.abs(dz) > 3) { + continue; + } + + BlockPos standPos = new BlockPos(baseStandPos.getX() + dx, y, baseStandPos.getZ() + dz); + if (!isOpenStandPos(this.level(), standPos)) { + continue; + } + + BlockPos climbColumnPos = new BlockPos(baseStandPos.getX(), y, baseStandPos.getZ()); + if (!this.isValidClimbColumnPos(climbColumnPos, preferredDirection)) { + continue; + } + + if (!this.hasSideClimbSupportAt(standPos) && !isStandableSurface(this.level().getBlockState(standPos.above()))) { + continue; + } + + double horizontalOffset = Math.sqrt(dx * dx + dz * dz); + double score = y * 4.0D - horizontalOffset * 1.5D; + if (isAdjacentToLog(this.level(), standPos)) { + score += 2.0D; + } + if (score > bestScore) { + bestScore = score; + bestStandPos = standPos.immutable(); + } + } + } + } + + return bestStandPos; + } + + private class ArborealRandomStrollGoal extends WaterAvoidingRandomStrollGoal { + private static final int INTERVAL = 80; + + private ArborealRandomStrollGoal() { + super(FlyingSquirrelEntity.this, 1.0D, INTERVAL); + } + + @Override + public boolean canUse() { + if (FlyingSquirrelEntity.this.isOrderedToSit()) { + return false; + } + + if (!FlyingSquirrelEntity.this.onGround() + && !FlyingSquirrelEntity.this.isClimbingTrunk() + && !FlyingSquirrelEntity.this.isAtStandPos(FlyingSquirrelEntity.this.blockPosition()) + && !FlyingSquirrelEntity.hasNearbyCanopy( + FlyingSquirrelEntity.this.level(), + FlyingSquirrelEntity.this.blockPosition())) { + return false; + } + if (FlyingSquirrelEntity.this.isGliding()) { + return false; + } + + if (FlyingSquirrelEntity.this.isClimbingTrunk()) { + return false; + } + + if (FlyingSquirrelEntity.this.isPickingUpNut()) { + return false; + } + + if (FlyingSquirrelEntity.this.getWanderCooldown() > 0) { + return false; + } + + return super.canUse(); + } + + @Override + @Nullable + protected Vec3 getPosition() { + BlockPos target = this.findBestArborealDestination(); + if (target == null) { + return null; + } + return Vec3.atBottomCenterOf(target); + } + + @Override + public void start() { + BlockPos target = BlockPos.containing(this.wantedX, this.wantedY, this.wantedZ); + FlyingSquirrelEntity.this.requestTravelTo(target, this.speedModifier, "arboreal_wander"); + } + + @Override + public void stop() { + super.stop(); + + if (!FlyingSquirrelEntity.this.isGliding()) { + FlyingSquirrelEntity.this.setWanderCooldown( + 25 + FlyingSquirrelEntity.this.getRandom().nextInt(35) + ); + } + } + + @Nullable + private BlockPos findBestArborealDestination() { + BlockPos origin = FlyingSquirrelEntity.this.blockPosition(); + double heightBias = this.getHeightBias(origin); + + int horizontalRange = Mth.floor(Mth.lerp(heightBias, 24.0D, 30.0D)); + int verticalDown = Mth.floor(Mth.lerp(heightBias, 8.0D, 4.0D)); + int verticalUp = Mth.floor(Mth.lerp(heightBias, 30.0D, 40.0D)); + + BlockPos bestPos = null; + double bestScore = Double.NEGATIVE_INFINITY; + + for (BlockPos candidate : BlockPos.betweenClosed( + origin.offset(-horizontalRange, -verticalDown, -horizontalRange), + origin.offset(horizontalRange, verticalUp, horizontalRange))) { + + if (!FlyingSquirrelEntity.isOpenStandPos(FlyingSquirrelEntity.this.level(), candidate)) { + continue; + } + + if (FlyingSquirrelEntity.this.isAtStandPos(candidate)) { + continue; + } + + boolean nearCanopy = FlyingSquirrelEntity.hasNearbyCanopy( + FlyingSquirrelEntity.this.level(), candidate + ); + boolean nearLog = FlyingSquirrelEntity.isAdjacentToLog( + FlyingSquirrelEntity.this.level(), candidate + ); + + if (!nearCanopy && !nearLog) { + continue; + } + + double dx = candidate.getX() + 0.5D - FlyingSquirrelEntity.this.getX(); + double dy = candidate.getY() - FlyingSquirrelEntity.this.getY(); + double dz = candidate.getZ() + 0.5D - FlyingSquirrelEntity.this.getZ(); + double horizontalDistance = Math.sqrt(dx * dx + dz * dz); + + if (horizontalDistance < 6.0D) { + continue; + } + + double minPreferredRise = Mth.lerp(heightBias, 0.0D, 8.0D); + if (heightBias > 0.15D && dy < minPreferredRise) { + continue; + } + + double score = 0.0D; + + if (nearCanopy) score += 10.0D; + if (nearLog) score += 8.0D; + + score += Math.max(dy, 0.0D) * Mth.lerp(heightBias, 3.0D, 5.5D); + score += Math.min(horizontalDistance, 24.0D) * Mth.lerp(heightBias, 1.1D, 0.9D); + + if (dy <= -4.0D && horizontalDistance >= 10.0D) { + score += 18.0D * (1.0D - heightBias); + } + + if (dy >= 12.0D) { + score += Mth.lerp(heightBias, 10.0D, 18.0D); + } + if (horizontalDistance >= 12.0D) { + score += 12.0D; + } + if (horizontalDistance >= 18.0D) { + score += 10.0D; + } + + if (dy < -2.0D) { + score += dy * Mth.lerp(heightBias, 0.75D, 0.15D); + } + + if (score > bestScore) { + bestScore = score; + bestPos = candidate.immutable(); + } + } + + return bestPos; + } + + private double getHeightBias(BlockPos origin) { + double yBias = Mth.clampedMap(origin.getY(), 80.0D, 170.0D, 1.0D, 0.0D); + if (origin.getY() >= 190) { + yBias = 0.0D; + } + + if (FlyingSquirrelEntity.isGroundEscapeSurface( + FlyingSquirrelEntity.this.level().getBlockState(origin.below()))) { + yBias = Math.min(1.0D, yBias + 0.15D); + } + + return yBias; + } + } + + private static final class ClimbTarget { + private final BlockPos baseStandPos; + private final BlockPos topStandPos; + @Nullable + private final Direction preferredAttachDirection; + + private ClimbTarget(BlockPos baseStandPos, BlockPos topStandPos, @Nullable Direction preferredAttachDirection) { + this.baseStandPos = baseStandPos; + this.topStandPos = topStandPos; + this.preferredAttachDirection = preferredAttachDirection; + } + } + + private class ClimbGoal extends Goal { + @Nullable + private ClimbTarget target; + @Nullable + private Direction activeAttachDirection; + private int repathDelay; + private int climbTicks; + private int approachTicks; + private int searchCooldown; + private int noProgressTicks; + private double lastDistanceToBase; + private boolean climbing; + private int attachDirectionRefreshTick; + + private ClimbGoal() { + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + @Override + public boolean canUse() { + boolean favorClimbing = FlyingSquirrelEntity.this.shouldFavorClimbingFromGround(); + + if (this.searchCooldown > 0) { + this.searchCooldown--; + return false; + } + + if (FlyingSquirrelEntity.this.isOrderedToSit() + || FlyingSquirrelEntity.this.isGliding() + || FlyingSquirrelEntity.this.isPickingUpNut() + || !FlyingSquirrelEntity.this.onGround() + || (!favorClimbing && FlyingSquirrelEntity.this.getWanderCooldown() > 30)) { + return false; + } + + this.target = FlyingSquirrelEntity.this.findBestClimbTarget(); + if (this.target != null) { + return true; + } + + this.searchCooldown = favorClimbing ? 10 : 20; + return false; + } + + @Override + public boolean canContinueToUse() { + if (this.target == null + || FlyingSquirrelEntity.this.isGliding() + || FlyingSquirrelEntity.this.isOrderedToSit()) { + return false; + } + + if (this.climbing) { + return this.climbTicks < 200; + } + + return !FlyingSquirrelEntity.this.isAtStandPos(this.target.topStandPos); + } + + @Override + public void start() { + this.repathDelay = 0; + this.climbTicks = 0; + this.approachTicks = 0; + this.searchCooldown = 0; + this.noProgressTicks = 0; + this.lastDistanceToBase = Double.MAX_VALUE; + this.climbing = false; + this.activeAttachDirection = null; + } + + @Override + public void stop() { + if (this.climbing) { + FlyingSquirrelEntity.this.setClimbingTrunk(false); + FlyingSquirrelEntity.this.setNoGravity(false); + } + + this.target = null; + this.repathDelay = 0; + this.climbTicks = 0; + this.approachTicks = 0; + this.noProgressTicks = 0; + this.lastDistanceToBase = Double.MAX_VALUE; + this.climbing = false; + this.activeAttachDirection = null; + this.searchCooldown = 10; + + if (!FlyingSquirrelEntity.this.isGliding()) { + FlyingSquirrelEntity.this.getNavigation().stop(); + } + } + + @Override + public void tick() { + if (this.target == null) { + return; + } + + if (!this.climbing) { + FlyingSquirrelEntity.this.getLookControl().setLookAt( + this.target.topStandPos.getX() + 0.5D, + this.target.topStandPos.getY(), + this.target.topStandPos.getZ() + 0.5D, + 20.0F, + 20.0F + ); + + this.approachTicks++; + + double distanceToBase = Vec3.atBottomCenterOf(this.target.baseStandPos) + .distanceTo(FlyingSquirrelEntity.this.position()); + + boolean closeEnoughToStart = FlyingSquirrelEntity.this.isAtStandPos(this.target.baseStandPos) + || FlyingSquirrelEntity.this.position().distanceToSqr(Vec3.atBottomCenterOf(this.target.baseStandPos)) <= CLIMB_START_DISTANCE_SQR; + + if (closeEnoughToStart) { + this.climbing = true; + this.climbTicks = 0; + this.activeAttachDirection = this.target.preferredAttachDirection; + FlyingSquirrelEntity.this.setClimbingTrunk(true); + return; + } + + if (distanceToBase + 0.15D < this.lastDistanceToBase) { + this.noProgressTicks = 0; + this.lastDistanceToBase = distanceToBase; + } else if (++this.noProgressTicks > CLIMB_NO_PROGRESS_LIMIT + || this.approachTicks > CLIMB_APPROACH_TIMEOUT_TICKS) { + FlyingSquirrelEntity.this.rememberFailedClimbTarget(this.target.topStandPos); + this.target = null; + return; + } + + if (--this.repathDelay <= 0) { + this.repathDelay = 10; + FlyingSquirrelEntity.this.requestTravelTo( + this.target.baseStandPos, + 1.0D, + "climb_approach" + ); + } + + return; + } + + if (++this.climbTicks > 200) { + FlyingSquirrelEntity.this.rememberFailedClimbTarget(this.target.topStandPos); + FlyingSquirrelEntity.this.setClimbingTrunk(false); + FlyingSquirrelEntity.this.setNoGravity(false); + this.target = null; + this.climbing = false; + return; + } + + FlyingSquirrelEntity.this.setClimbingTrunk(true); + FlyingSquirrelEntity.this.setNoGravity(true); + FlyingSquirrelEntity.this.fallDistance = 0.0F; + + double nextY = Math.min( + FlyingSquirrelEntity.this.getY() + 0.24D, + this.target.topStandPos.getY() + ); + + BlockPos climbColumnPos = new BlockPos( + this.target.baseStandPos.getX(), + Mth.floor(nextY), + this.target.baseStandPos.getZ() + ); + + if (!FlyingSquirrelEntity.this.isValidClimbColumnPos( + climbColumnPos, + this.target.preferredAttachDirection + )) { + FlyingSquirrelEntity.this.rememberFailedClimbTarget(this.target.topStandPos); + FlyingSquirrelEntity.this.setClimbingTrunk(false); + FlyingSquirrelEntity.this.setNoGravity(false); + this.target = null; + this.climbing = false; + return; + } + + Vec3 attachPoint = FlyingSquirrelEntity.this.getClimbAttachPoint( + climbColumnPos, + this.activeAttachDirection + ); + + double nextX = Mth.lerp(0.45D, FlyingSquirrelEntity.this.getX(), attachPoint.x); + double nextZ = Mth.lerp(0.45D, FlyingSquirrelEntity.this.getZ(), attachPoint.z); + + FlyingSquirrelEntity.this.setPos(nextX, nextY, nextZ); + FlyingSquirrelEntity.this.setDeltaMovement(Vec3.ZERO); + FlyingSquirrelEntity.this.hasImpulse = true; + + if (this.climbTicks >= this.attachDirectionRefreshTick) { + this.attachDirectionRefreshTick = this.climbTicks + 5; + Direction newDir = FlyingSquirrelEntity.this.findClimbAttachmentDirection( + climbColumnPos, + this.activeAttachDirection + ); + if (newDir != null) { + this.activeAttachDirection = newDir; + } + } + Direction attachDirection = this.activeAttachDirection; + if (attachDirection != null) { + float targetYaw = attachDirection.toYRot(); + FlyingSquirrelEntity.this.setYRot(targetYaw); + FlyingSquirrelEntity.this.yRotO = targetYaw; + FlyingSquirrelEntity.this.yBodyRot = targetYaw; + FlyingSquirrelEntity.this.yBodyRotO = targetYaw; + FlyingSquirrelEntity.this.yHeadRot = targetYaw; + FlyingSquirrelEntity.this.yHeadRotO = targetYaw; + } + + if (FlyingSquirrelEntity.this.getY() >= this.target.topStandPos.getY() - 0.15D) { + FlyingSquirrelEntity.this.setPos( + this.target.topStandPos.getX() + 0.5D, + this.target.topStandPos.getY(), + this.target.topStandPos.getZ() + 0.5D + ); + FlyingSquirrelEntity.this.setDeltaMovement(Vec3.ZERO); + FlyingSquirrelEntity.this.setClimbingTrunk(false); + FlyingSquirrelEntity.this.setNoGravity(false); + + this.target = null; + this.climbing = false; + FlyingSquirrelEntity.this.setWanderCooldown( + 20 + FlyingSquirrelEntity.this.getRandom().nextInt(25) + ); + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelNavigation.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelNavigation.java new file mode 100644 index 00000000..db682ba0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelNavigation.java @@ -0,0 +1,427 @@ +package com.craisinlord.antarchy.content.entity.flying_squirrel; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.pathfinder.Path; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public class FlyingSquirrelNavigation extends GroundPathNavigation { + private static final double MIN_GLIDE_DISTANCE = 10.0D; + private static final double MAX_GLIDE_DISTANCE = 64.0D; + private static final double MIN_GLIDE_HEIGHT = 3.0D; + private static final int LAUNCH_EDGE_SEARCH_RADIUS = 7; + private static final int REPATH_INTERVAL = 10; + + private final FlyingSquirrelEntity squirrel; + @Nullable + private BlockPos requestedTarget; + @Nullable + private BlockPos adjustedTarget; + @Nullable + private String requestedPurpose; + @Nullable + private GlideLaunchPlan glideLaunchPlan; + @Nullable + private BlockPos pathToPosition; + + private double requestedSpeed; + private boolean glidingToLaunch; + private boolean glideStarted; + private int repathDelay; + private int repathFailStreak; + + public FlyingSquirrelNavigation(FlyingSquirrelEntity squirrel, Level level) { + super(squirrel, level); + this.squirrel = squirrel; + this.setCanFloat(true); + } + + boolean requestTravelTo(BlockPos target, double speed, String purpose) { + this.requestedTarget = target.immutable(); + this.requestedPurpose = purpose; + this.requestedSpeed = speed; + this.repathDelay = 0; + + this.adjustedTarget = this.adjustNavigationTarget(this.requestedTarget); + this.glideLaunchPlan = null; + this.glidingToLaunch = false; + this.glideStarted = false; + if (!this.squirrel.isGliding() + && this.squirrel.onGround()) { + + GlideLaunchPlan plan = this.findLaunchPlan(this.adjustedTarget); + if (plan != null + && !this.squirrel.isRecentGlidePath( + Vec3.atBottomCenterOf(plan.launchStandPos), + this.adjustedTarget + ) + && this.shouldGlideBetween( + Vec3.atBottomCenterOf(plan.launchStandPos), + this.adjustedTarget + ) + && this.hasLaunchEdgeToward(plan.launchStandPos, this.adjustedTarget)) { + this.glideLaunchPlan = plan; + this.glidingToLaunch = true; + } + } + + return this.beginGroundOrLaunchMove("request"); + } + + @Override + public boolean moveTo(double x, double y, double z, double speed) { + return this.requestTravelTo(BlockPos.containing(x, y, z), speed, "generic"); + } + + @Override + public boolean moveTo(Entity entity, double speed) { + Path path = this.createPath(entity, 0); + if (path != null) { + return this.moveTo(path, speed); + } else { + this.pathToPosition = entity.blockPosition().immutable(); + this.requestedTarget = this.pathToPosition; + this.adjustedTarget = this.adjustNavigationTarget(this.pathToPosition); + this.requestedPurpose = "generic"; + this.requestedSpeed = speed; + this.glideLaunchPlan = null; + this.glidingToLaunch = false; + this.glideStarted = false; + return true; + } + } + + @Override + @Nullable + public Path createPath(BlockPos pos, int accuracy) { + this.pathToPosition = pos.immutable(); + return super.createPath(this.adjustNavigationTarget(pos), accuracy); + } + + @Override + @Nullable + public Path createPath(Entity entity, int accuracy) { + this.pathToPosition = entity.blockPosition().immutable(); + return super.createPath(entity, accuracy); + } + + @Override + public boolean isStableDestination(BlockPos pos) { + return this.isNavigationStandPos(pos) + || this.isNavigationTransitionPos(pos) + || super.isStableDestination(pos); + } + + @Override + protected boolean canUpdatePath() { + return !this.squirrel.isGliding(); + } + + @Override + public void stop() { + super.stop(); + this.clearTraversal(); + } + + void cancelTraversal() { + super.stop(); + this.clearTraversal(); + } + + @Override + public void tick() { + if (this.requestedTarget == null) { + super.tick(); + return; + } + + if (this.squirrel.isGliding()) { + this.glideStarted = true; + return; + } + if (this.glideStarted) { + this.glideStarted = false; + this.glidingToLaunch = false; + this.glideLaunchPlan = null; + + if (this.adjustedTarget != null && !this.squirrel.isAtStandPos(this.adjustedTarget)) { + this.beginGroundOrLaunchMove("post_glide"); + } else { + this.clearTraversal(); + } + return; + } + if (this.glidingToLaunch && this.glideLaunchPlan != null && this.adjustedTarget != null) { + this.tickGlideApproach(); + return; + } + this.tickGroundNav(); + + if (this.adjustedTarget != null && this.squirrel.isAtStandPos(this.adjustedTarget)) { + this.clearTraversal(); + return; + } + + if (this.repathDelay > 0) { + this.repathDelay--; + } + + if (this.repathDelay <= 0 && (this.isDone() || this.getPath() == null)) { + this.beginGroundOrLaunchMove("repath"); + } + } + + private void tickGlideApproach() { + if (this.glideLaunchPlan == null || this.adjustedTarget == null) { + this.glidingToLaunch = false; + this.beginGroundOrLaunchMove("glide_missing_plan"); + return; + } + + BlockPos launch = this.glideLaunchPlan.launchStandPos; + + if (this.squirrel.isAtStandPos(launch)) { + if (this.hasLaunchEdgeToward(launch, this.adjustedTarget) + && this.shouldGlideBetween(Vec3.atBottomCenterOf(launch), this.adjustedTarget)) { + String reason = this.requestedPurpose == null + ? "direct_navigation" + : "direct_" + this.requestedPurpose; + this.squirrel.startGliding(this.adjustedTarget, reason); + this.glideStarted = true; + return; + } + this.glidingToLaunch = false; + this.glideLaunchPlan = null; + this.beginGroundOrLaunchMove("glide_launch_rejected"); + return; + } + + this.tickGroundNav(); + + if (this.repathDelay > 0) { + this.repathDelay--; + } + + if (this.repathDelay <= 0 && (this.isDone() || this.getPath() == null)) { + this.tryStartMoveToward(launch, this.requestedSpeed, "glide_launch_approach"); + } + } + + private boolean beginGroundOrLaunchMove(String reason) { + BlockPos target = this.glidingToLaunch && this.glideLaunchPlan != null + ? this.glideLaunchPlan.launchStandPos + : this.adjustedTarget; + + if (target == null) { + return false; + } + + return this.tryStartMoveToward(target, this.requestedSpeed, reason); + } + + private void tickGroundNav() { + super.tick(); + this.tickPathToPositionFallback(); + } + + private boolean tryStartMoveToward(BlockPos target, double speed, String reason) { + this.pathToPosition = target.immutable(); + + Path path = super.createPath(target, 0); + if (path != null) { + boolean started = super.moveTo(path, speed); + if (started) { + this.repathFailStreak = 0; + this.repathDelay = REPATH_INTERVAL; + return true; + } + } + this.repathFailStreak++; + this.repathDelay = REPATH_INTERVAL * Math.min(this.repathFailStreak, 4); + this.speedModifier = speed; + return true; + } + + private void tickPathToPositionFallback() { + if (!this.isDone()) { + return; + } + + if (this.pathToPosition == null) { + return; + } + + double threshold = Math.max(this.mob.getBbWidth(), 1.0F); + + if (this.pathToPosition.closerToCenterThan(this.mob.position(), threshold) + || (this.mob.getY() > this.pathToPosition.getY() + && BlockPos.containing(this.pathToPosition.getX(), this.mob.getY(), this.pathToPosition.getZ()) + .closerToCenterThan(this.mob.position(), threshold))) { + this.pathToPosition = null; + return; + } + + this.mob.getMoveControl().setWantedPosition( + this.pathToPosition.getX() + 0.5D, + this.pathToPosition.getY(), + this.pathToPosition.getZ() + 0.5D, + this.speedModifier + ); + } + + private BlockPos adjustNavigationTarget(BlockPos desiredTarget) { + if (this.isNavigationStandPos(desiredTarget) || this.isNavigationTransitionPos(desiredTarget)) { + return desiredTarget.immutable(); + } + + BlockPos adjusted = this.findNearbyNavigationStandPos(desiredTarget, 4, 4); + return adjusted != null ? adjusted : desiredTarget.immutable(); + } + + private boolean isNavigationStandPos(BlockPos pos) { + return FlyingSquirrelEntity.isOpenStandPos(this.level, pos); + } + + private boolean isNavigationTransitionPos(BlockPos pos) { + return FlyingSquirrelEntity.isStandableSurface(this.level.getBlockState(pos.below())) + && FlyingSquirrelEntity.hasNearbyCanopy(this.level, pos); + } + + @Nullable + private BlockPos findNearbyNavigationStandPos(BlockPos targetPos, int horizontalRadius, int verticalRadius) { + BlockPos bestPos = null; + double bestScore = Double.NEGATIVE_INFINITY; + + for (BlockPos candidate : BlockPos.betweenClosed( + targetPos.offset(-horizontalRadius, -verticalRadius, -horizontalRadius), + targetPos.offset(horizontalRadius, verticalRadius, horizontalRadius))) { + + if (!this.isNavigationStandPos(candidate)) { + continue; + } + + double score = -Vec3.atBottomCenterOf(candidate).distanceToSqr(Vec3.atBottomCenterOf(targetPos)); + if (FlyingSquirrelEntity.isAdjacentToLog(this.level, candidate)) { + score += 6.0D; + } + if (FlyingSquirrelEntity.hasNearbyCanopy(this.level, candidate)) { + score += 4.0D; + } + if (candidate.getY() > targetPos.getY()) { + score += (candidate.getY() - targetPos.getY()) * 0.35D; + } + + if (score > bestScore) { + bestScore = score; + bestPos = candidate.immutable(); + } + } + + return bestPos; + } + + private boolean shouldGlideBetween(Vec3 fromPos, BlockPos standPos) { + if (this.squirrel.isGliding()) { + return false; + } + + double dx = standPos.getX() + 0.5D - fromPos.x; + double dz = standPos.getZ() + 0.5D - fromPos.z; + double horizontalDistance = Math.sqrt(dx * dx + dz * dz); + double verticalDrop = fromPos.y - (standPos.getY() + 0.5D); + + return horizontalDistance >= MIN_GLIDE_DISTANCE + && horizontalDistance <= MAX_GLIDE_DISTANCE + && verticalDrop >= MIN_GLIDE_HEIGHT; + } + + @Nullable + private GlideLaunchPlan findLaunchPlan(BlockPos targetStandPos) { + BlockPos origin = this.squirrel.blockPosition(); + GlideLaunchPlan bestPlan = null; + double bestScore = Double.NEGATIVE_INFINITY; + + for (BlockPos candidate : BlockPos.betweenClosed( + origin.offset(-LAUNCH_EDGE_SEARCH_RADIUS, -2, -LAUNCH_EDGE_SEARCH_RADIUS), + origin.offset(LAUNCH_EDGE_SEARCH_RADIUS, 2, LAUNCH_EDGE_SEARCH_RADIUS))) { + + if (!FlyingSquirrelEntity.isOpenStandPos(this.level, candidate)) { + continue; + } + + if (!this.hasLaunchEdgeToward(candidate, targetStandPos)) { + continue; + } + if (!this.squirrel.isAtStandPos(candidate) + && Vec3.atBottomCenterOf(candidate).distanceToSqr(this.squirrel.position()) > 36.0D) { + continue; + } + + if (this.squirrel.isRecentGlidePath(Vec3.atBottomCenterOf(candidate), targetStandPos)) { + continue; + } + + Vec3 launchPos = Vec3.atBottomCenterOf(candidate); + double glideScore = this.squirrel.scoreGlideTargetFrom(launchPos, targetStandPos); + if (glideScore == Double.NEGATIVE_INFINITY) { + continue; + } + + double walkDistance = launchPos.distanceTo(this.squirrel.position()); + double score = glideScore - walkDistance * 1.75D; + if (this.squirrel.isAtStandPos(candidate)) { + score += 3.0D; + } + + if (score > bestScore) { + bestScore = score; + bestPlan = new GlideLaunchPlan(candidate.immutable()); + } + } + + return bestPlan; + } + + private boolean hasLaunchEdgeToward(BlockPos launchStandPos, BlockPos targetStandPos) { + Direction launchDirection = this.getLaunchDirectionToward(launchStandPos, targetStandPos); + BlockPos edgePos = launchStandPos.relative(launchDirection); + return FlyingSquirrelEntity.isOpenAir(this.level, edgePos) + && !FlyingSquirrelEntity.isStandableSurface(this.level.getBlockState(edgePos.below())); + } + + private Direction getLaunchDirectionToward(BlockPos launchStandPos, BlockPos targetStandPos) { + double dx = (targetStandPos.getX() + 0.5D) - (launchStandPos.getX() + 0.5D); + double dz = (targetStandPos.getZ() + 0.5D) - (launchStandPos.getZ() + 0.5D); + + if (Math.abs(dx) >= Math.abs(dz)) { + return dx >= 0.0D ? Direction.EAST : Direction.WEST; + } + + return dz >= 0.0D ? Direction.SOUTH : Direction.NORTH; + } + + private void clearTraversal() { + this.requestedTarget = null; + this.adjustedTarget = null; + this.requestedPurpose = null; + this.requestedSpeed = 0.0D; + this.glideLaunchPlan = null; + this.glidingToLaunch = false; + this.glideStarted = false; + this.repathDelay = 0; + this.repathFailStreak = 0; + this.pathToPosition = null; + } + + static final class GlideLaunchPlan { + final BlockPos launchStandPos; + + GlideLaunchPlan(BlockPos launchStandPos) { + this.launchStandPos = launchStandPos; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java new file mode 100644 index 00000000..b46c6853 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java @@ -0,0 +1,1120 @@ +package com.craisinlord.antarchy.content.entity.kraken; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; + +import com.craisinlord.antarchy.content.damage.AntarchyDamageTypes; +import java.util.List; +import java.util.Objects; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerBossEvent; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.DamageTypeTags; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.BossEvent; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.animation.keyframe.event.builtin.AutoPlayingSoundKeyframeHandler; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class KrakenEntity extends Monster implements GeoEntity { + private static final EntityDataAccessor ATTACK_STATE = SynchedEntityData.defineId(KrakenEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor ROARING = SynchedEntityData.defineId(KrakenEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor PHASE_TWO = SynchedEntityData.defineId(KrakenEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor ANIMATION_STATE = SynchedEntityData.defineId(KrakenEntity.class, EntityDataSerializers.INT); + + private static final String ATTACK_COOLDOWN_KEY = "AttackCooldown"; + private static final String ACTION_TICKS_KEY = "ActionTicks"; + private static final String PHASE_TRANSITION_TICKS_KEY = "PhaseTransitionTicks"; + private static final String NEXT_ATTACK_INDEX_KEY = "NextAttackIndex"; + private static final String SLAM_COOLDOWN_KEY = "SlamCooldown"; + private static final String PHASE_SUMMON_COOLDOWN_KEY = "PhaseSummonCooldown"; + private static final String LAST_ATTACK_STATE_KEY = "LastAttackState"; + private static final String AGGRO_TRIGGERED_KEY = "AggroTriggered"; + private static final String GRAB_TARGET_KEY = "GrabTarget"; + private static final double BOSS_BAR_RANGE = 40.0D; + private static final int ATTACK_NONE = 0; + private static final int ATTACK_GRAB = 1; + private static final int ATTACK_SWIPE = 2; + private static final int ATTACK_SLAM = 3; + private static final int ANIM_IDLE = 0; + private static final int ANIM_IDLE_TWO = 1; + private static final int ANIM_SWIM = 2; + private static final int ANIM_SWIPE = 3; + private static final int ANIM_GRAB = 4; + private static final int ANIM_DEATH = 5; + private static final int DEATH_ANIM_TICKS = 60; + private static final ResourceLocation PHASE_TWO_SPEED_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "kraken_phase_two_speed"); + private static final ResourceLocation PHASE_TWO_FLYING_SPEED_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "kraken_phase_two_flying_speed"); + private static final ResourceLocation PHASE_TWO_DAMAGE_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "kraken_phase_two_damage"); + private static final double PHASE_TWO_SPEED_BONUS = 0.15D; + private static final double PHASE_TWO_DAMAGE_BONUS = 4.0D; + private static final AttributeModifier PHASE_TWO_SPEED = new AttributeModifier(PHASE_TWO_SPEED_ID, PHASE_TWO_SPEED_BONUS, AttributeModifier.Operation.ADD_MULTIPLIED_BASE); + private static final AttributeModifier PHASE_TWO_FLYING_SPEED = new AttributeModifier(PHASE_TWO_FLYING_SPEED_ID, PHASE_TWO_SPEED_BONUS, AttributeModifier.Operation.ADD_MULTIPLIED_BASE); + private static final AttributeModifier PHASE_TWO_DAMAGE = new AttributeModifier(PHASE_TWO_DAMAGE_ID, PHASE_TWO_DAMAGE_BONUS, AttributeModifier.Operation.ADD_VALUE); + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation SWIM_ANIM = RawAnimation.begin().thenLoop("swim"); + private static final RawAnimation SWIPE_ANIM = RawAnimation.begin().thenPlay("Swipe"); + private static final RawAnimation GRAB_ANIM = RawAnimation.begin().thenPlay("Grab"); + private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlay("Death"); + + private final ServerBossEvent bossEvent = new ServerBossEvent(Component.literal("The Kraken"), BossEvent.BossBarColor.BLUE, BossEvent.BossBarOverlay.PROGRESS); + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + @Nullable + private Vec3 patrolTarget; + private int patrolRetargetTicks; + private int attackCooldown; + private int actionTicks; + private int phaseTransitionTicks; + private int nextAttackIndex; + private int slamCooldown; + private int phaseSummonCooldown; + private int lastAttackState; + private boolean aggroTriggered; + private int grabbedTargetId = -1; + private boolean spawnedPhaseMinions; + private int lightningStrikeCooldown; + private int lightningAmbientCooldown; + private int strafeRetargetTicks; + private float orbitDirection = 1.0F; + private boolean stormActive; + public KrakenEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 20, true); + this.xpReward = 60; + this.bossEvent.setDarkenScreen(false); + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 750.0D) + .add(Attributes.ATTACK_DAMAGE, 45.0D) + .add(Attributes.MOVEMENT_SPEED, 0.24D) + .add(Attributes.FLYING_SPEED, 0.24D) + .add(Attributes.FOLLOW_RANGE, 64.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.8D) + .add(Attributes.ARMOR, 8.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + return level.getFluidState(pos).is(FluidTags.WATER) && level.getFluidState(pos.above()).is(FluidTags.WATER); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ATTACK_STATE, ATTACK_NONE); + builder.define(ROARING, false); + builder.define(PHASE_TWO, false); + builder.define(ANIMATION_STATE, ANIM_IDLE); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 20.0F)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + + HurtByTargetGoal hurtByTargetGoal = new HurtByTargetGoal(this); + hurtByTargetGoal.setAlertOthers(MissileSquidEntity.class); + this.targetSelector.addGoal(1, hurtByTargetGoal); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController) + .setSoundKeyframeHandler(new AutoPlayingSoundKeyframeHandler<>())); + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getAnimationState()) { + case ANIM_GRAB -> state.setAndContinue(GRAB_ANIM); + case ANIM_SWIPE -> state.setAndContinue(SWIPE_ANIM); + case ANIM_SWIM -> state.setAndContinue(SWIM_ANIM); + case ANIM_DEATH -> state.setAndContinue(DEATH_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation navigation = new FlyingPathNavigation(this, level); + navigation.setCanOpenDoors(false); + navigation.setCanFloat(true); + navigation.setCanPassDoors(true); + return navigation; + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData spawnData) { + Objects.requireNonNull(this.getAttribute(Attributes.MAX_HEALTH)).setBaseValue(com.craisinlord.antarchy.config.AntarchySettings.krakenHealth()); + this.setHealth((float) com.craisinlord.antarchy.config.AntarchySettings.krakenHealth()); + Objects.requireNonNull(this.getAttribute(Attributes.ATTACK_DAMAGE)).setBaseValue(com.craisinlord.antarchy.config.AntarchySettings.krakenAttackDamage()); + this.playSound(AntarchySoundEvents.KRAKEN_SUMMON.get(), 2.2F, 0.9F + this.random.nextFloat() * 0.08F); + return super.finalizeSpawn(level, difficulty, spawnReason, spawnData); + } + + @Override + public void tick() { + super.tick(); + this.setAirSupply(this.getMaxAirSupply()); + this.setNoGravity(true); + + if (this.level().isClientSide) { + this.tickClientParticles(); + this.updateSwimRotation(); + return; + } + + this.updateBossBarPlayers(); + this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); + this.tickLightning(); + + if (this.attackCooldown > 0) { + this.attackCooldown--; + } + if (this.slamCooldown > 0) { + this.slamCooldown--; + } + if (this.phaseSummonCooldown > 0) { + this.phaseSummonCooldown--; + } + + LivingEntity target = this.getTarget(); + if ((target == null || !target.isAlive()) && this.tickCount % 10 == 0) { + Player nearbyPlayer = this.level().getNearestPlayer(this, BOSS_BAR_RANGE); + if (nearbyPlayer != null && this.canAttack(nearbyPlayer)) { + this.setTarget(nearbyPlayer); + target = nearbyPlayer; + } + } + + if (target == null || !target.isAlive()) { + this.resetCombatState(); + this.tickPatrolMovement(); + this.updateSwimRotation(); + this.updateAnimationState(); + return; + } + + this.getLookControl().setLookAt(target, 25.0F, 20.0F); + + if (!this.aggroTriggered) { + this.startAggroRoar(); + } + + if (!this.isPhaseTwo() && this.phaseTransitionTicks <= 0 && this.getHealth() <= this.getMaxHealth() * 0.5F) { + this.startPhaseTransition(); + } + + if (this.isRoaring()) { + this.tickRoarState(target); + this.updateSwimRotation(); + this.updateAnimationState(); + return; + } + + if (this.phaseTransitionTicks > 0) { + this.tickPhaseTransition(target); + this.updateSwimRotation(); + this.updateAnimationState(); + return; + } + + if (this.getAttackState() != ATTACK_NONE) { + this.tickCurrentAttack(target); + this.updateSwimRotation(); + this.updateAnimationState(); + return; + } + + this.tickPhaseTwoPressure(target); + this.tickPursuitMovement(target); + + if (this.attackCooldown <= 0) { + int nextAttack = this.chooseNextAttack(target); + if (nextAttack != ATTACK_NONE) { + this.startAttack(nextAttack); + } + } + + this.updateSwimRotation(); + this.updateAnimationState(); + } + + @Override + public void travel(Vec3 travelVector) { + if (this.isEffectiveAi()) { + this.moveRelative(this.getSpeed(), travelVector); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(this.isInWater() ? 0.92D : 0.91D)); + return; + } + + super.travel(travelVector); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.is(DamageTypeTags.IS_FIRE) + || source.is(DamageTypes.LIGHTNING_BOLT) + || source.is(AntarchyDamageTypes.KRAKEN_LIGHTNING) + || source.getEntity() instanceof MissileSquidEntity) { + return false; + } + + return super.hurt(source, amount); + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + + @Override + @Nullable + protected SoundEvent getAmbientSound() { + return null; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.KRAKEN_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.KRAKEN_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 1.5F; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(ATTACK_COOLDOWN_KEY, this.attackCooldown); + tag.putInt(ACTION_TICKS_KEY, this.actionTicks); + tag.putInt(PHASE_TRANSITION_TICKS_KEY, this.phaseTransitionTicks); + tag.putInt(NEXT_ATTACK_INDEX_KEY, this.nextAttackIndex); + tag.putInt(SLAM_COOLDOWN_KEY, this.slamCooldown); + tag.putInt(PHASE_SUMMON_COOLDOWN_KEY, this.phaseSummonCooldown); + tag.putInt(LAST_ATTACK_STATE_KEY, this.lastAttackState); + tag.putBoolean(AGGRO_TRIGGERED_KEY, this.aggroTriggered); + if (this.grabbedTargetId >= 0) { + tag.putInt(GRAB_TARGET_KEY, this.grabbedTargetId); + } + tag.putBoolean("PhaseTwo", this.isPhaseTwo()); + tag.putBoolean("Roaring", this.isRoaring()); + tag.putInt("AttackState", this.getAttackState()); + tag.putInt("AnimationState", this.getAnimationState()); + tag.putBoolean("SpawnedPhaseMinions", this.spawnedPhaseMinions); + tag.putInt("LightningStrikeCooldown", this.lightningStrikeCooldown); + tag.putInt("LightningAmbientCooldown", this.lightningAmbientCooldown); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.attackCooldown = tag.getInt(ATTACK_COOLDOWN_KEY); + this.actionTicks = tag.getInt(ACTION_TICKS_KEY); + this.phaseTransitionTicks = tag.getInt(PHASE_TRANSITION_TICKS_KEY); + this.nextAttackIndex = tag.getInt(NEXT_ATTACK_INDEX_KEY); + this.slamCooldown = tag.getInt(SLAM_COOLDOWN_KEY); + this.phaseSummonCooldown = tag.getInt(PHASE_SUMMON_COOLDOWN_KEY); + this.lastAttackState = tag.contains(LAST_ATTACK_STATE_KEY) ? tag.getInt(LAST_ATTACK_STATE_KEY) : ATTACK_NONE; + this.aggroTriggered = tag.getBoolean(AGGRO_TRIGGERED_KEY); + this.grabbedTargetId = tag.contains(GRAB_TARGET_KEY) ? tag.getInt(GRAB_TARGET_KEY) : -1; + this.spawnedPhaseMinions = tag.getBoolean("SpawnedPhaseMinions"); + this.entityData.set(ROARING, tag.getBoolean("Roaring")); + this.entityData.set(ATTACK_STATE, tag.getInt("AttackState")); + this.entityData.set(PHASE_TWO, tag.getBoolean("PhaseTwo")); + this.entityData.set(ANIMATION_STATE, tag.contains("AnimationState") ? tag.getInt("AnimationState") : ANIM_IDLE); + this.lightningStrikeCooldown = tag.getInt("LightningStrikeCooldown"); + this.lightningAmbientCooldown = tag.getInt("LightningAmbientCooldown"); + this.stormActive = false; + if (this.isPhaseTwo()) { + this.applyPhaseTwoBuffs(); + } + this.updateAnimationState(); + } + + @Override + public void remove(Entity.RemovalReason reason) { + this.clearKrakenStorm(); + super.remove(reason); + this.bossEvent.removeAllPlayers(); + } + + public boolean isRoaring() { + return this.entityData.get(ROARING); + } + + public boolean isPhaseTwo() { + return this.entityData.get(PHASE_TWO); + } + + public int getAttackState() { + return this.entityData.get(ATTACK_STATE); + } + + public int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setRoaring(boolean roaring) { + this.entityData.set(ROARING, roaring); + } + + private void setPhaseTwo(boolean phaseTwo) { + this.entityData.set(PHASE_TWO, phaseTwo); + } + + private void setAttackState(int attackState) { + this.entityData.set(ATTACK_STATE, attackState); + } + + private void setAnimationState(int animationState) { + this.entityData.set(ANIMATION_STATE, animationState); + } + + private void startAggroRoar() { + this.aggroTriggered = true; + this.actionTicks = 30; + this.setRoaring(true); + this.playSound(AntarchySoundEvents.KRAKEN_ROAR.get(), 1.8F, 0.78F); + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.2D)); + this.updateAnimationState(); + } + + private void tickRoarState(LivingEntity target) { + this.getNavigation().stop(); + this.getMoveControl().setWantedPosition(this.getX(), this.getY(), this.getZ(), 0.0D); + this.setDeltaMovement(this.getDeltaMovement().scale(0.6D)); + this.getLookControl().setLookAt(target, 25.0F, 20.0F); + + if (--this.actionTicks <= 0) { + this.actionTicks = 0; + this.setRoaring(false); + this.attackCooldown = 18; + } + } + + private void startPhaseTransition() { + this.phaseTransitionTicks = 50; + this.actionTicks = 0; + this.setAttackState(ATTACK_NONE); + this.setRoaring(false); + this.grabbedTargetId = -1; + this.spawnedPhaseMinions = false; + this.phaseSummonCooldown = 0; + this.playSound(AntarchySoundEvents.KRAKEN_ROAR.get(), 2.0F, 0.82F); + this.getNavigation().stop(); + this.updateAnimationState(); + } + + private void tickPhaseTransition(LivingEntity target) { + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.45D)); + this.getLookControl().setLookAt(target, 25.0F, 20.0F); + + if (!this.spawnedPhaseMinions && this.phaseTransitionTicks <= 40) { + this.spawnPhaseMinions(1 + this.random.nextInt(2), true, target); + this.spawnedPhaseMinions = true; + } + + if (this.phaseTransitionTicks % 8 == 0 && this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(ParticleTypes.SQUID_INK, this.getX(), this.getY() + 1.0D, this.getZ(), 12, 1.0D, 0.7D, 1.0D, 0.02D); + } + + if (--this.phaseTransitionTicks <= 0) { + this.phaseTransitionTicks = 0; + this.setPhaseTwo(true); + this.applyPhaseTwoBuffs(); + this.attackCooldown = 25; + this.playSound(AntarchySoundEvents.KRAKEN_ROAR.get(), 2.0F, 0.72F); + } + } + + private void tickCurrentAttack(LivingEntity target) { + this.getNavigation().stop(); + this.getLookControl().setLookAt(target, 30.0F, 25.0F); + this.setDeltaMovement(this.getDeltaMovement().scale(0.8D)); + + switch (this.getAttackState()) { + case ATTACK_GRAB -> this.tickGrabAttack(target); + case ATTACK_SWIPE -> this.tickSwipeAttack(); + case ATTACK_SLAM -> this.tickSlamAttack(); + default -> this.finishAttack(); + } + } + + private void startAttack(int attackState) { + this.setAttackState(attackState); + this.grabbedTargetId = -1; + + if (attackState == ATTACK_GRAB) { + this.actionTicks = 55; + this.playSound(AntarchySoundEvents.KRAKEN_ATTACK.get(), 1.45F, 0.9F); + } else if (attackState == ATTACK_SWIPE) { + this.actionTicks = 40; + this.playSound(AntarchySoundEvents.KRAKEN_SPIN.get(), 1.3F, 0.95F); + } else if (attackState == ATTACK_SLAM) { + this.actionTicks = 34; + this.playSound(AntarchySoundEvents.KRAKEN_ATTACK.get(), 1.5F, 0.82F); + } + } + + private void tickGrabAttack(LivingEntity target) { + if (this.actionTicks == 48 && this.distanceToSqr(target) <= 42.25D) { + this.grabbedTargetId = target.getId(); + } + + LivingEntity grabbedTarget = this.getGrabbedTarget(); + if (grabbedTarget != null && grabbedTarget.isAlive()) { + this.holdGrabbedTarget(grabbedTarget); + if (this.actionTicks <= 45 && this.actionTicks > 10 && this.actionTicks % 10 == 0) { + if (this.level() instanceof ServerLevel serverLevel) { + grabbedTarget.hurt(AntarchyDamageSources.krakenMauling(serverLevel, this), 4.0F); + } + } + } + + if (--this.actionTicks <= 0) { + if (grabbedTarget != null && grabbedTarget.isAlive()) { + this.knockAway(grabbedTarget, 2.8D, 4.2D); + } + this.grabbedTargetId = -1; + this.finishAttack(); + } + } + + private void tickSwipeAttack() { + if (this.actionTicks == 10) { + this.performSwipe(); + } + + if (--this.actionTicks <= 0) { + this.finishAttack(); + } + } + + private void tickSlamAttack() { + if (this.actionTicks == 8) { + this.performTentacleSlam(); + } + + if (--this.actionTicks <= 0) { + this.finishAttack(); + } + } + + private void finishAttack() { + int finishedAttack = this.getAttackState(); + this.setAttackState(ATTACK_NONE); + this.actionTicks = 0; + this.attackCooldown = this.isPhaseTwo() ? 12 : 18; + this.grabbedTargetId = -1; + this.lastAttackState = finishedAttack; + if (finishedAttack == ATTACK_SLAM) { + this.slamCooldown = this.isPhaseTwo() ? 110 : 150; + } + this.updateAnimationState(); + } + + private void tickPursuitMovement(LivingEntity target) { + this.patrolTarget = null; + if (this.strafeRetargetTicks-- <= 0) { + this.strafeRetargetTicks = 10 + this.random.nextInt(12); + if (this.random.nextFloat() < 0.4F) { + this.orbitDirection *= -1.0F; + } + } + + Vec3 attackPoint = this.createCombatFlightTarget(target); + this.getMoveControl().setWantedPosition(attackPoint.x, attackPoint.y, attackPoint.z, this.isPhaseTwo() ? 1.2D : 1.1D); + } + + private void tickPatrolMovement() { + if (this.patrolRetargetTicks-- <= 0 || this.patrolTarget == null || this.position().distanceToSqr(this.patrolTarget) < 6.0D) { + this.patrolRetargetTicks = 28 + this.random.nextInt(24); + this.patrolTarget = this.findPatrolTarget(); + } + + if (this.patrolTarget != null) { + this.getMoveControl().setWantedPosition(this.patrolTarget.x, this.patrolTarget.y, this.patrolTarget.z, 0.45D); + } + } + + private void resetCombatState() { + this.setAttackState(ATTACK_NONE); + this.setRoaring(false); + this.actionTicks = 0; + this.phaseTransitionTicks = 0; + this.grabbedTargetId = -1; + this.aggroTriggered = false; + this.spawnedPhaseMinions = this.isPhaseTwo(); + this.updateAnimationState(); + } + + private int chooseNextAttack(LivingEntity target) { + int[] attackRotation = new int[] {ATTACK_GRAB, ATTACK_SWIPE, ATTACK_SLAM}; + int[] weightedAttacks = new int[attackRotation.length]; + int[] weights = new int[attackRotation.length]; + int eligibleCount = 0; + int totalWeight = 0; + + for (int attack : attackRotation) { + if (!this.canUseAttack(attack, target)) { + continue; + } + + int weight = this.getAttackWeight(attack); + if (attack == this.lastAttackState) { + weight = Math.max(1, weight / 3); + } + if (weight <= 0) { + continue; + } + + weightedAttacks[eligibleCount] = attack; + weights[eligibleCount] = weight; + totalWeight += weight; + eligibleCount++; + } + + if (eligibleCount == 0) { + return ATTACK_NONE; + } + + int roll = this.random.nextInt(totalWeight); + for (int i = 0; i < eligibleCount; i++) { + roll -= weights[i]; + if (roll < 0) { + return weightedAttacks[i]; + } + } + + return weightedAttacks[eligibleCount - 1]; + } + + private int getAttackWeight(int attackState) { + return switch (attackState) { + case ATTACK_GRAB -> 4; + case ATTACK_SWIPE -> 5; + case ATTACK_SLAM -> this.isPhaseTwo() ? 1 : 0; + default -> 0; + }; + } + + private void tickPhaseTwoPressure(LivingEntity target) { + if (!this.isPhaseTwo() || this.phaseSummonCooldown > 0) { + return; + } + if (this.countNearbyMissileSquids() >= 12) { + this.phaseSummonCooldown = 40; + return; + } + this.spawnPhaseMinions(1 + this.random.nextInt(2), true, target); + this.phaseSummonCooldown = 90 + this.random.nextInt(50); + } + + private int countNearbyMissileSquids() { + return this.level().getEntitiesOfClass( + MissileSquidEntity.class, + this.getBoundingBox().inflate(28.0D), + squid -> squid.isAlive() + ).size(); + } + + private boolean canUseAttack(int attackState, LivingEntity target) { + double distanceToTarget = this.distanceToSqr(target); + return switch (attackState) { + case ATTACK_GRAB -> distanceToTarget <= 64.0D; + case ATTACK_SWIPE -> distanceToTarget <= 81.0D && this.isTargetInFront(target, 0.1D); + case ATTACK_SLAM -> this.slamCooldown <= 0 && distanceToTarget <= 144.0D; + default -> false; + }; + } + + private boolean isTargetInFront(LivingEntity target, double minimumDot) { + Vec3 forward = this.getViewVector(1.0F); + Vec3 toTarget = target.position().subtract(this.position()).normalize(); + return forward.dot(toTarget) >= minimumDot; + } + + private void performSwipe() { + AABB hitBox = this.getBoundingBox().inflate(7.0D, 3.0D, 7.0D); + List players = this.level().getEntitiesOfClass(Player.class, hitBox, player -> player.isAlive() && this.isTargetInFront(player, -0.15D)); + for (Player player : players) { + this.hurtAndKnockback(player, (float)this.getAttributeValue(Attributes.ATTACK_DAMAGE), 1.75D, 0.45D); + } + + if (this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(ParticleTypes.SPLASH, this.getX(), this.getY() + 0.8D, this.getZ(), 24, 1.2D, 0.4D, 1.2D, 0.08D); + } + } + + private void performTentacleSlam() { + AABB hitBox = this.getBoundingBox().inflate(8.5D, 2.5D, 8.5D); + List players = this.level().getEntitiesOfClass(Player.class, hitBox, LivingEntity::isAlive); + float damage = (float)this.getAttributeValue(Attributes.ATTACK_DAMAGE) * 0.75F; + for (Player player : players) { + this.hurtAndKnockback(player, damage, 1.35D, 0.62D); + } + + if (this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(ParticleTypes.SPLASH, this.getX(), this.getY() + 0.5D, this.getZ(), 36, 1.8D, 0.5D, 1.8D, 0.12D); + } + } + + private void holdGrabbedTarget(LivingEntity target) { + Vec3 anchor = this.position() + .add(this.getViewVector(1.0F).normalize().scale(this.getBbWidth() * 0.65D)) + .add(0.0D, this.getBbHeight() * 0.28D, 0.0D); + target.setDeltaMovement(anchor.subtract(target.position()).scale(0.35D)); + target.resetFallDistance(); + if (target instanceof ServerPlayer serverPlayer) { + serverPlayer.connection.teleport(anchor.x, anchor.y, anchor.z, target.getYRot(), target.getXRot()); + } else { + target.moveTo(anchor.x, anchor.y, anchor.z, target.getYRot(), target.getXRot()); + } + target.hurtMarked = true; + } + + private void hurtAndKnockback(LivingEntity target, float damage, double horizontalStrength, double verticalStrength) { + if (!(this.level() instanceof ServerLevel serverLevel) || !target.hurt(AntarchyDamageSources.krakenMauling(serverLevel, this), damage)) { + return; + } + + this.knockAway(target, horizontalStrength, verticalStrength); + } + + private void knockAway(LivingEntity target, double horizontalStrength, double verticalStrength) { + Vec3 direction = target.position().subtract(this.position()); + Vec3 horizontal = new Vec3(direction.x, 0.0D, direction.z); + if (horizontal.lengthSqr() < 1.0E-4D) { + horizontal = this.getViewVector(1.0F).multiply(1.0D, 0.0D, 1.0D); + } + if (horizontal.lengthSqr() < 1.0E-4D) { + horizontal = new Vec3(1.0D, 0.0D, 0.0D); + } + + horizontal = horizontal.normalize().scale(horizontalStrength); + target.push(horizontal.x, verticalStrength, horizontal.z); + target.hurtMarked = true; + } + + @Nullable + private LivingEntity getGrabbedTarget() { + if (this.grabbedTargetId < 0) { + return null; + } + + Entity entity = this.level().getEntity(this.grabbedTargetId); + return entity instanceof LivingEntity livingEntity ? livingEntity : null; + } + + private void spawnPhaseMinions(int desiredCount, boolean launched, @Nullable LivingEntity currentTarget) { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + int spawned = 0; + + for (int attempt = 0; attempt < desiredCount * 4 && spawned < desiredCount; attempt++) { + Vec3 spawnPos = this.findPhaseMinionSpawnPos(currentTarget); + MissileSquidEntity missileSquid = AntarchyObjects.MISSILE_SQUID.get().create(serverLevel); + if (missileSquid == null) { + continue; + } + + missileSquid.setCanFly(true); + missileSquid.moveTo(spawnPos.x, spawnPos.y, spawnPos.z, this.getYRot(), 0.0F); + serverLevel.addFreshEntity(missileSquid); + if (launched) { + missileSquid.launchAsProjectile(this, this.createPhaseMinionLaunchVelocity(spawnPos, currentTarget)); + } else if (currentTarget != null) { + missileSquid.setTarget(currentTarget); + } + serverLevel.sendParticles(ParticleTypes.BUBBLE, missileSquid.getX(), missileSquid.getY() + 0.4D, missileSquid.getZ(), 14, 0.3D, 0.25D, 0.3D, 0.03D); + spawned++; + } + + if (spawned > 0) { + this.playSound(AntarchySoundEvents.KRAKEN_ROAR.get(), 1.8F, this.isPhaseTwo() ? 0.74F : 0.82F); + } + } + + private Vec3 findPhaseMinionSpawnPos(@Nullable LivingEntity currentTarget) { + Vec3 anchor = currentTarget != null ? currentTarget.position() : this.position(); + for (int attempt = 0; attempt < 18; attempt++) { + double angle = this.random.nextDouble() * Mth.TWO_PI; + double radius = 7.0D + this.random.nextDouble() * 8.0D; + double height = 4.0D + this.random.nextDouble() * (this.isPhaseTwo() ? 6.0D : 4.0D); + BlockPos candidate = BlockPos.containing( + anchor.x + Math.cos(angle) * radius, + anchor.y + height, + anchor.z + Math.sin(angle) * radius + ); + if (this.isOpenFlightSpace(candidate)) { + return Vec3.atCenterOf(candidate); + } + } + + return this.position().add(0.0D, this.getBbHeight() * 0.6D, 0.0D); + } + + private Vec3 createPhaseMinionLaunchVelocity(Vec3 spawnPos, @Nullable LivingEntity currentTarget) { + Vec3 aimPoint = currentTarget != null + ? currentTarget.getEyePosition() + : this.position().add(this.getViewVector(1.0F).scale(10.0D)); + Vec3 direction = aimPoint.subtract(spawnPos); + if (direction.lengthSqr() < 1.0E-4D) { + direction = this.getViewVector(1.0F); + } + + Vec3 spread = new Vec3( + (this.random.nextDouble() - 0.5D) * 0.18D, + (this.random.nextDouble() - 0.5D) * 0.12D, + (this.random.nextDouble() - 0.5D) * 0.18D + ); + return direction.normalize().scale(this.isPhaseTwo() ? 1.45D : 1.2D).add(spread); + } + + private boolean isOpenFlightSpace(BlockPos candidate) { + return (this.level().isEmptyBlock(candidate) || this.level().getFluidState(candidate).is(FluidTags.WATER)) + && (this.level().isEmptyBlock(candidate.above()) || this.level().getFluidState(candidate.above()).is(FluidTags.WATER)); + } + + private Vec3 findPatrolTarget() { + BlockPos origin = this.blockPosition(); + for (int attempt = 0; attempt < 20; attempt++) { + BlockPos candidate = origin.offset( + this.random.nextInt(29) - 14, + this.random.nextInt(9) - 4, + this.random.nextInt(29) - 14 + ); + if (!this.level().isEmptyBlock(candidate) && !this.level().getFluidState(candidate).is(FluidTags.WATER)) { + continue; + } + if (!this.level().isEmptyBlock(candidate.above()) && !this.level().getFluidState(candidate.above()).is(FluidTags.WATER)) { + continue; + } + + double clampedY = Mth.clamp(candidate.getY() + 0.5D, this.getY() - 5.0D, this.getY() + 5.0D); + return new Vec3(candidate.getX() + 0.5D, clampedY, candidate.getZ() + 0.5D); + } + + return this.position().add(0.0D, 1.5D, 0.0D); + } + + private Vec3 createCombatFlightTarget(LivingEntity target) { + double radius = this.isPhaseTwo() ? 7.0D : 9.0D; + double angle = this.tickCount * 0.16D * this.orbitDirection + this.getId() * 0.11D; + double x = target.getX() + Math.cos(angle) * radius; + double z = target.getZ() + Math.sin(angle) * radius; + double y = Mth.clamp( + target.getY() + 2.0D + Math.sin((this.tickCount + this.getId()) * 0.18D) * 1.0D, + target.getY() - 2.0D, + target.getY() + 5.0D + ); + return this.findNearestFlightTarget(new Vec3(x, y, z)); + } + + private Vec3 findNearestFlightTarget(Vec3 desired) { + BlockPos desiredPos = BlockPos.containing(desired); + for (int attempt = 0; attempt < 16; attempt++) { + BlockPos candidate = desiredPos.offset( + this.random.nextInt(7) - 3, + this.random.nextInt(5) - 2, + this.random.nextInt(7) - 3 + ); + if (!this.level().isEmptyBlock(candidate) && !this.level().getFluidState(candidate).is(FluidTags.WATER)) { + continue; + } + if (!this.level().isEmptyBlock(candidate.above()) && !this.level().getFluidState(candidate.above()).is(FluidTags.WATER)) { + continue; + } + return Vec3.atCenterOf(candidate); + } + + boolean desiredOpen = this.level().isEmptyBlock(desiredPos) || this.level().getFluidState(desiredPos).is(FluidTags.WATER); + boolean desiredOpenAbove = this.level().isEmptyBlock(desiredPos.above()) || this.level().getFluidState(desiredPos.above()).is(FluidTags.WATER); + return desiredOpen && desiredOpenAbove ? desired : this.position().add(0.0D, 1.5D, 0.0D); + } + + private void tickLightning() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + if (this.stormActive && --this.lightningAmbientCooldown <= 0) { + this.lightningAmbientCooldown = this.isPhaseTwo() ? 35 + this.random.nextInt(35) : 80 + this.random.nextInt(80); + int ambientBolts = this.isPhaseTwo() ? 4 : 2; + for (int i = 0; i < ambientBolts; i++) { + this.spawnVisualLightning(serverLevel, this.getRandomStormStrikePos(serverLevel)); + } + } + + LivingEntity target = this.getTarget(); + if (target != null && target.isAlive()) { + if (--this.lightningStrikeCooldown <= 0) { + this.lightningStrikeCooldown = this.isPhaseTwo() ? 26 + this.random.nextInt(20) : 60 + this.random.nextInt(80); + int strikeBolts = this.isPhaseTwo() ? 2 : 1; + for (int i = 0; i < strikeBolts; i++) { + this.spawnVisualLightning(serverLevel, this.getTargetStormStrikePos(target)); + } + target.hurt(AntarchyDamageSources.krakenLightning(serverLevel, this), this.isPhaseTwo() ? 12.0F : 8.0F); + } + } else { + this.lightningStrikeCooldown = this.isPhaseTwo() ? 30 : 60; + } + } + + private void setKrakenStormActive(boolean active) { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + if (active) { + this.stormActive = true; + serverLevel.setWeatherParameters(0, 200, true, true); + return; + } + + if (this.stormActive) { + this.stormActive = false; + serverLevel.setWeatherParameters(6000, 0, false, false); + } + } + + private void clearKrakenStorm() { + this.setKrakenStormActive(false); + } + + private void updateBossBarPlayers() { + if (this.tickCount % 20 != 0) { + return; + } + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + AABB bossBarArea = this.getBoundingBox().inflate(BOSS_BAR_RANGE, 16.0D, BOSS_BAR_RANGE); + List nearbyPlayers = serverLevel.getEntitiesOfClass( + ServerPlayer.class, + bossBarArea, + player -> player.isAlive() && this.distanceToSqr(player) <= BOSS_BAR_RANGE * BOSS_BAR_RANGE + ); + + for (ServerPlayer player : List.copyOf(this.bossEvent.getPlayers())) { + if (!nearbyPlayers.contains(player)) { + this.bossEvent.removePlayer(player); + } + } + + for (ServerPlayer player : nearbyPlayers) { + if (!this.bossEvent.getPlayers().contains(player)) { + this.bossEvent.addPlayer(player); + } + } + + this.setKrakenStormActive(!nearbyPlayers.isEmpty()); + } + + private void applyPhaseTwoBuffs() { + AttributeInstance movementSpeed = this.getAttribute(Attributes.MOVEMENT_SPEED); + if (movementSpeed != null && !movementSpeed.hasModifier(PHASE_TWO_SPEED_ID)) { + movementSpeed.addPermanentModifier(PHASE_TWO_SPEED); + } + + AttributeInstance flyingSpeed = this.getAttribute(Attributes.FLYING_SPEED); + if (flyingSpeed != null && !flyingSpeed.hasModifier(PHASE_TWO_FLYING_SPEED_ID)) { + flyingSpeed.addPermanentModifier(PHASE_TWO_FLYING_SPEED); + } + + AttributeInstance attackDamage = this.getAttribute(Attributes.ATTACK_DAMAGE); + if (attackDamage != null && !attackDamage.hasModifier(PHASE_TWO_DAMAGE_ID)) { + attackDamage.addPermanentModifier(PHASE_TWO_DAMAGE); + } + } + + private Vec3 getRandomStormStrikePos(ServerLevel serverLevel) { + double lx = this.getX() + (this.random.nextDouble() - 0.5D) * 56.0D; + double lz = this.getZ() + (this.random.nextDouble() - 0.5D) * 56.0D; + int ly = serverLevel.getHeight(Heightmap.Types.MOTION_BLOCKING, Mth.floor(lx), Mth.floor(lz)); + return new Vec3(lx, ly, lz); + } + + private Vec3 getTargetStormStrikePos(LivingEntity target) { + double spread = this.isPhaseTwo() ? 4.0D : 1.5D; + return new Vec3( + target.getX() + (this.random.nextDouble() - 0.5D) * spread, + target.getY(), + target.getZ() + (this.random.nextDouble() - 0.5D) * spread + ); + } + + private void spawnVisualLightning(ServerLevel serverLevel, Vec3 strikePos) { + LightningBolt bolt = EntityType.LIGHTNING_BOLT.create(serverLevel); + if (bolt == null) { + return; + } + + bolt.moveTo(strikePos.x, strikePos.y, strikePos.z); + bolt.setVisualOnly(true); + serverLevel.addFreshEntity(bolt); + } + + private void tickClientParticles() { + if (this.isRoaring() || this.phaseTransitionTicks > 0 || this.getAttackState() != ATTACK_NONE) { + if (this.tickCount % 3 == 0) { + this.level().addParticle( + ParticleTypes.BUBBLE, + this.getX() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + this.getY() + 0.8D + this.random.nextDouble() * 0.6D, + this.getZ() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + 0.0D, + 0.02D, + 0.0D + ); + } + } + } + + private void updateSwimRotation() { + Vec3 velocity = this.getDeltaMovement(); + if (velocity.horizontalDistanceSqr() > 1.0E-4D) { + float targetYaw = (float)(Mth.atan2(velocity.z, velocity.x) * (180.0D / Math.PI)) - 90.0F; + this.setYRot(Mth.approachDegrees(this.getYRot(), targetYaw, 6.0F)); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + } + + if (velocity.lengthSqr() > 1.0E-4D) { + float targetPitch = (float)(-(Mth.atan2(velocity.y, velocity.horizontalDistance()) * (180.0D / Math.PI))); + this.setXRot(Mth.approachDegrees(this.getXRot(), targetPitch, 4.0F)); + } + } + + @Override + public void die(DamageSource damageSource) { + if (!this.level().isClientSide) { + this.setAnimationState(ANIM_DEATH); + this.actionTicks = 0; + this.attackCooldown = 0; + this.phaseTransitionTicks = 0; + this.setAttackState(ATTACK_NONE); + this.setRoaring(false); + this.setDeltaMovement(Vec3.ZERO); + this.getNavigation().stop(); + } + super.die(damageSource); + } + + @Override + protected void tickDeath() { + this.deathTime++; + + if (this.deathTime == 1) { + this.setAnimationState(ANIM_DEATH); + } + + if (this.deathTime >= DEATH_ANIM_TICKS) { + this.remove(RemovalReason.KILLED); + this.dropExperience(this); + } + } + + private void updateAnimationState() { + if (this.isDeadOrDying()) { + this.setAnimationState(ANIM_DEATH); + return; + } + + if (this.phaseTransitionTicks > 0 || this.isRoaring()) { + this.setAnimationState(ANIM_IDLE); + return; + } + + switch (this.getAttackState()) { + case ATTACK_GRAB -> { + this.setAnimationState(ANIM_GRAB); + return; + } + case ATTACK_SWIPE, ATTACK_SLAM -> { + this.setAnimationState(ANIM_SWIPE); + return; + } + default -> { + } + } + + Vec3 velocity = this.getDeltaMovement(); + double horizontalSpeedSqr = velocity.horizontalDistanceSqr(); + double verticalSpeedSqr = velocity.y * velocity.y; + if (horizontalSpeedSqr > 0.03D && horizontalSpeedSqr > verticalSpeedSqr * 2.5D) { + this.setAnimationState(ANIM_SWIM); + return; + } + + this.setAnimationState(this.isPhaseTwo() ? ANIM_IDLE_TWO : ANIM_IDLE); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenMultipartLayout.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenMultipartLayout.java new file mode 100644 index 00000000..4ed41801 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenMultipartLayout.java @@ -0,0 +1,55 @@ +package com.craisinlord.antarchy.content.entity.kraken; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartLayout; +import com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition; + +public final class KrakenMultipartLayout implements MultipartLayout { + public static final KrakenMultipartLayout INSTANCE = new KrakenMultipartLayout(); + + public static final MultipartPartDefinition HEAD = new MultipartPartDefinition( + "head", + 3.0F, + 2.8F, + 1.00F, + 2.15D, + 5.35D, + 0.00D, + true + ); + + public static final MultipartPartDefinition BACK_HEAD = new MultipartPartDefinition( + "back_head", + 4.8F, + 4.4F, + 1.10F, + 0.70D, + 6.55D, + 0.00D, + true + ); + + public static final MultipartPartDefinition TENTACLE_MASS = new MultipartPartDefinition( + "tentacle_mass", + 8.5F, + 3.4F, + 0.90F, + -0.35D, + 1.70D, + 0.00D, + true + ); + + private static final MultipartPartDefinition[] PARTS = { + HEAD, + BACK_HEAD, + TENTACLE_MASS + }; + + private KrakenMultipartLayout() { + } + + @Override + public MultipartPartDefinition[] parts() { + return PARTS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidBoltEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidBoltEntity.java new file mode 100644 index 00000000..ad4dc39f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidBoltEntity.java @@ -0,0 +1,98 @@ +package com.craisinlord.antarchy.content.entity.lucid; + +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.core.Holder; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; + +import java.util.function.Supplier; + +public class LucidBoltEntity extends AbstractArrow { + private static final int MAX_LIFETIME_TICKS = 40; + private static final int INVERTED_EFFECT_DURATION = 100; + private static final double BASE_DAMAGE = 3.0D; + + public static Supplier> invertedEffectSupplier; + + public LucidBoltEntity(EntityType entityType, Level level) { + super(entityType, level); + this.configureBolt(); + } + + public LucidBoltEntity(EntityType entityType, LivingEntity shooter, Level level) { + super(entityType, shooter, level, new ItemStack(Items.BOW), new ItemStack(Items.BOW)); + this.configureBolt(); + } + + private void configureBolt() { + this.pickup = Pickup.DISALLOWED; + this.setNoGravity(true); + this.setBaseDamage(BASE_DAMAGE); + } + + @Override + protected ItemStack getDefaultPickupItem() { + return ItemStack.EMPTY; + } + + @Override + protected double getDefaultGravity() { + return 0.0D; + } + + @Override + protected net.minecraft.sounds.SoundEvent getDefaultHitGroundSoundEvent() { + return AntarchySoundEvents.LUCID_BOLT_SOUND.get(); + } + + @Override + public void tick() { + if (!this.level().isClientSide() && this.tickCount > MAX_LIFETIME_TICKS) { + this.discard(); + return; + } + super.tick(); + } + + @Override + protected void onHitEntity(EntityHitResult result) { + if (!this.level().isClientSide() && result.getEntity() instanceof LivingEntity target + && target.getType().is(AntarchyTags.Entities.LUCID_BOLT_IMMUNE)) { + this.discard(); + return; + } + + super.onHitEntity(result); + + if (!this.level().isClientSide() && result.getEntity() instanceof LivingEntity target) { + Entity owner = this.getOwner(); + if (owner instanceof LivingEntity shooter) { + target.hurt(this.damageSources().mobAttack(shooter), (float) this.getBaseDamage()); + } else { + target.hurt(this.damageSources().magic(), (float) this.getBaseDamage()); + } + + if (invertedEffectSupplier != null) { + target.addEffect(new MobEffectInstance(invertedEffectSupplier.get(), INVERTED_EFFECT_DURATION, 0, false, true)); + } + } + + this.discard(); + } + + @Override + protected void onHitBlock(BlockHitResult result) { + super.onHitBlock(result); + this.discard(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEntity.java new file mode 100644 index 00000000..4862a37b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEntity.java @@ -0,0 +1,555 @@ +package com.craisinlord.antarchy.content.entity.lucid; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.util.HoverRandomPos; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.EnumSet; +import java.util.function.Supplier; + +public class LucidEntity extends Monster implements GeoEntity { + private static final EntityDataAccessor ANIMATION_STATE = + SynchedEntityData.defineId(LucidEntity.class, EntityDataSerializers.INT); + + private static final String ATTACK_COOLDOWN_KEY = "AttackCooldown"; + private static final String ATTACK_ANIMATION_TICKS_KEY = "AttackAnimationTicks"; + private static final String BURST_SHOTS_REMAINING_KEY = "BurstShotsRemaining"; + private static final String BURST_SHOT_DELAY_KEY = "BurstShotDelay"; + + private static final int ANIM_IDLE = 0; + private static final int ANIM_FLY = 1; + private static final int ANIM_ATTACK = 2; + private static final int ANIM_DEATH = 3; + + public static Supplier> invertedEffectSupplier; + public static Supplier> boltEntityTypeSupplier; + + private static final int ATTACK_WINDUP_TICKS = 16; + private static final int ATTACK_RECOVERY_TICKS = 8; + private static final int ATTACK_BURST_SHOTS = 3; + private static final int ATTACK_BURST_INTERVAL_TICKS = 6; + private static final int ATTACK_COOLDOWN_TICKS = 52; + private static final int DEATH_TICKS = 15; + + private static final double MIN_EFFECTIVE_ATTACK_RANGE = 10.0D; + private static final double MIN_HOVER_RANGE = 6.5D; + private static final double CLOSE_RANGE = 4.5D; + private static final double DEFAULT_HOVER_HEIGHT = 2.75D; + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlay("death"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + private int attackCooldown; + private int attackAnimationTicks; + private int burstShotsRemaining; + private int burstShotDelayTicks; + + public LucidEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 2, true); + this.xpReward = 10; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, AntarchySettings.lucidHealth()) + .add(Attributes.ATTACK_DAMAGE, 4.0D) + .add(Attributes.MOVEMENT_SPEED, 0.22D) + .add(Attributes.FLYING_SPEED, 0.35D) + .add(Attributes.FOLLOW_RANGE, 40.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.5D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, + MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + return level.getDifficulty() != Difficulty.PEACEFUL + && pos.getY() <= 250 + && level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()) + && level.isEmptyBlock(pos.above(2)); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIMATION_STATE, ANIM_IDLE); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(1, new LucidPatrolGoal()); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers()); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 20, true, false, this::canTargetEntity)); + } + + @Override + public int getMaxHeadYRot() { + return 360; + } + + @Override + public int getMaxHeadXRot() { + return 45; + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation nav = new FlyingPathNavigation(this, level); + nav.setCanOpenDoors(false); + nav.setCanFloat(true); + nav.setCanPassDoors(true); + return nav; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + return switch (this.getAnimationState()) { + case ANIM_FLY -> state.setAndContinue(FLY_ANIM); + case ANIM_ATTACK -> state.setAndContinue(ATTACK_ANIM); + case ANIM_DEATH -> state.setAndContinue(DEATH_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void tick() { + super.tick(); + this.setNoGravity(true); + + if (this.level().isClientSide) { + return; + } + + if (this.isDeadOrDying()) { + this.updateAnimationState(); + return; + } + + if (this.attackCooldown > 0) { + this.attackCooldown--; + } + + LivingEntity target = this.getTarget(); + if (this.attackAnimationTicks > 0) { + this.tickAttack(target); + this.updateAnimationState(); + return; + } + + if (target != null && this.canTargetEntity(target)) { + this.tickCombatMovement(target); + } + + this.updateAnimationState(); + } + + @Override + public void travel(Vec3 travelVector) { + if (this.isEffectiveAi() || this.isNoGravity()) { + this.moveRelative(this.getSpeed(), travelVector); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.91D)); + return; + } + super.travel(travelVector); + } + + private void tickCombatMovement(LivingEntity target) { + double distanceSqr = this.distanceToSqr(target); + + this.faceTowards(target.getEyePosition(), 12.0F, 8.0F); + this.getMoveControl().setWantedPosition(target.getX(), target.getY() + 2.0D, target.getZ(), 0.42D); + + if (this.attackCooldown <= 0 + && distanceSqr <= this.getAttackRange() * this.getAttackRange() * 1.1D + && this.hasLineOfSight(target)) { + this.startAttack(); + } + } + + private void startAttack() { + this.attackAnimationTicks = ATTACK_WINDUP_TICKS + ATTACK_RECOVERY_TICKS + (ATTACK_BURST_SHOTS - 1) * ATTACK_BURST_INTERVAL_TICKS; + this.burstShotsRemaining = ATTACK_BURST_SHOTS; + this.burstShotDelayTicks = ATTACK_WINDUP_TICKS; + this.attackCooldown = ATTACK_COOLDOWN_TICKS; + this.getNavigation().stop(); + } + + private void tickAttack(@Nullable LivingEntity target) { + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.84D)); + + if (target == null || !this.canTargetEntity(target)) { + this.attackAnimationTicks = 0; + this.burstShotsRemaining = 0; + this.burstShotDelayTicks = 0; + return; + } + + this.faceTowards(target.getEyePosition(), 16.0F, 10.0F); + + double riseTargetY = Math.max(this.getY() + 1.25D, target.getY() + 3.0D); + this.getMoveControl().setWantedPosition(this.getX(), riseTargetY, this.getZ(), 0.42D); + + if (this.burstShotDelayTicks > 0) { + this.burstShotDelayTicks--; + } + if (this.burstShotsRemaining > 0 && this.burstShotDelayTicks <= 0) { + this.fireBoltAt(target); + this.burstShotsRemaining--; + this.burstShotDelayTicks = this.burstShotsRemaining > 0 ? ATTACK_BURST_INTERVAL_TICKS : ATTACK_RECOVERY_TICKS; + } + + if (--this.attackAnimationTicks <= 0) { + this.attackAnimationTicks = 0; + } + } + + private void fireBoltAt(LivingEntity target) { + if (!(this.level() instanceof ServerLevel serverLevel) || boltEntityTypeSupplier == null) { + return; + } + + LucidBoltEntity bolt = new LucidBoltEntity(boltEntityTypeSupplier.get(), this, serverLevel); + Vec3 origin = this.getEyePosition(); + Vec3 lead = target.getDeltaMovement().scale(0.35D); + Vec3 aimPoint = target.getEyePosition().add(lead); + Vec3 toTarget = aimPoint.subtract(origin); + if (toTarget.lengthSqr() < 1.0E-6D) { + return; + } + + Vec3 direction = toTarget.normalize(); + Vec3 launchPos = origin.add(direction.scale(0.75D)); + double horizontal = Math.sqrt(direction.x * direction.x + direction.z * direction.z); + float yaw = (float) (Mth.atan2(direction.z, direction.x) * (180.0D / Math.PI)) - 90.0F; + float pitch = (float) (-(Mth.atan2(direction.y, horizontal) * (180.0D / Math.PI))); + + bolt.setPos(launchPos.x, launchPos.y, launchPos.z); + bolt.setYRot(yaw); + bolt.setXRot(pitch); + bolt.shoot( + direction.x + (this.random.nextDouble() - 0.5D) * 0.18D, + direction.y + (this.random.nextDouble() - 0.5D) * 0.12D, + direction.z + (this.random.nextDouble() - 0.5D) * 0.18D, + 0.71F, + 0.0F + ); + serverLevel.addFreshEntity(bolt); + } + + + private double getAttackRange() { + return Math.max(MIN_EFFECTIVE_ATTACK_RANGE, AntarchySettings.lucidAttackRange()); + } + + private void faceTowards(Vec3 targetPos, float maxYawStep, float maxPitchStep) { + Vec3 delta = targetPos.subtract(this.getEyePosition()); + double horizontal = Math.sqrt(delta.x * delta.x + delta.z * delta.z); + if (horizontal < 1.0E-6D && Math.abs(delta.y) < 1.0E-6D) { + return; + } + + float targetYaw = (float) (Mth.atan2(delta.z, delta.x) * (180.0D / Math.PI)) - 90.0F; + float targetPitch = (float) (-(Mth.atan2(delta.y, horizontal) * (180.0D / Math.PI))); + float nextYaw = Mth.approachDegrees(this.getYRot(), targetYaw, maxYawStep); + float nextPitch = Mth.approachDegrees(this.getXRot(), targetPitch, maxPitchStep); + + this.setYRot(nextYaw); + this.setYHeadRot(nextYaw); + this.yBodyRot = nextYaw; + this.setXRot(nextPitch); + } + + @Override + public void die(DamageSource damageSource) { + if (!this.level().isClientSide) { + this.setAnimationState(ANIM_DEATH); + this.attackAnimationTicks = 0; + this.attackCooldown = 0; + this.burstShotsRemaining = 0; + this.burstShotDelayTicks = 0; + this.setDeltaMovement(Vec3.ZERO); + this.getNavigation().stop(); + } + super.die(damageSource); + } + + @Override + protected void tickDeath() { + this.deathTime++; + + if (this.deathTime == 1) { + this.setAnimationState(ANIM_DEATH); + } + + if (this.deathTime >= DEATH_TICKS) { + this.remove(RemovalReason.KILLED); + this.dropExperience(this); + } + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public boolean fireImmune() { + return true; + } + + @Override + public void lavaHurt() { + } + + @Override + protected void checkFallDamage(double y, boolean onGround, + net.minecraft.world.level.block.state.BlockState state, BlockPos pos) { + } + + @Override + public boolean canAttack(LivingEntity target) { + return this.canTargetEntity(target) && super.canAttack(target); + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return super.removeWhenFarAway(distanceToClosestPlayer); + } + + @Override + protected SoundEvent getAmbientSound() { + return null; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return AntarchySoundEvents.LUCID_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.LUCID_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 0.9F; + } + + @Override + public float getVoicePitch() { + return 1.4F + this.random.nextFloat() * 0.2F; + } + + public boolean shouldPlayAmbientLoop() { + return !this.isDeadOrDying() && this.getAnimationState() != ANIM_DEATH; + } + + public boolean shouldPlayFlyingLoop() { + return this.shouldPlayAmbientLoop() && this.getAnimationState() != ANIM_IDLE; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(ATTACK_COOLDOWN_KEY, this.attackCooldown); + tag.putInt(ATTACK_ANIMATION_TICKS_KEY, this.attackAnimationTicks); + tag.putInt(BURST_SHOTS_REMAINING_KEY, this.burstShotsRemaining); + tag.putInt(BURST_SHOT_DELAY_KEY, this.burstShotDelayTicks); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.attackCooldown = tag.getInt(ATTACK_COOLDOWN_KEY); + this.attackAnimationTicks = tag.getInt(ATTACK_ANIMATION_TICKS_KEY); + this.burstShotsRemaining = tag.getInt(BURST_SHOTS_REMAINING_KEY); + this.burstShotDelayTicks = tag.getInt(BURST_SHOT_DELAY_KEY); + } + + public int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setAnimationState(int state) { + this.entityData.set(ANIMATION_STATE, state); + } + + private void updateAnimationState() { + if (this.isDeadOrDying()) { + this.setAnimationState(ANIM_DEATH); + return; + } + if (this.attackAnimationTicks > 0) { + this.setAnimationState(ANIM_ATTACK); + return; + } + LivingEntity target = this.getTarget(); + if (target != null && this.canTargetEntity(target)) { + this.setAnimationState(ANIM_FLY); + return; + } + this.setAnimationState(ANIM_IDLE); + } + + private boolean canTargetEntity(@Nullable LivingEntity entity) { + if (entity == null || !entity.isAlive() || entity == this || entity.getType() == this.getType()) { + return false; + } + if (entity instanceof Player player) { + return !player.isCreative() && !player.isSpectator() + && this.level().getDifficulty() != Difficulty.PEACEFUL; + } + return entity.isAttackable(); + } + + private final class LucidPatrolGoal extends Goal { + private static final int RETARGET_DELAY_MIN = 40; + private static final int RETARGET_DELAY_MAX = 80; + private static final double PATROL_SPEED = 0.18D; + + private int retargetDelay; + + private LucidPatrolGoal() { + this.setFlags(EnumSet.of(Flag.MOVE)); + } + + @Override + public boolean canUse() { + return LucidEntity.this.getTarget() == null + && LucidEntity.this.attackAnimationTicks <= 0 + && LucidEntity.this.getNavigation().isDone(); + } + + @Override + public boolean canContinueToUse() { + return LucidEntity.this.getTarget() == null + && LucidEntity.this.attackAnimationTicks <= 0 + && LucidEntity.this.getNavigation().isInProgress(); + } + + @Override + public void start() { + this.retargetDelay = Mth.nextInt(LucidEntity.this.random, RETARGET_DELAY_MIN, RETARGET_DELAY_MAX); + this.moveToNewTarget(); + } + + @Override + public void stop() { + LucidEntity.this.getNavigation().stop(); + LucidEntity.this.setDeltaMovement(Vec3.ZERO); + this.retargetDelay = 0; + } + + @Override + public void tick() { + if (LucidEntity.this.getTarget() != null || LucidEntity.this.attackAnimationTicks > 0) { + this.stop(); + return; + } + + if (LucidEntity.this.getNavigation().isDone()) { + if (this.retargetDelay-- <= 0) { + this.retargetDelay = Mth.nextInt(LucidEntity.this.random, RETARGET_DELAY_MIN, RETARGET_DELAY_MAX); + this.moveToNewTarget(); + } + } + } + + private void moveToNewTarget() { + Vec3 target = this.findPatrolTarget(); + if (target == null) { + return; + } + + LucidEntity.this.getNavigation().moveTo(target.x, target.y, target.z, PATROL_SPEED); + } + + @Nullable + private Vec3 findPatrolTarget() { + Vec3 bias = LucidEntity.this.getDeltaMovement(); + if (bias.lengthSqr() < 1.0E-4D) { + bias = LucidEntity.this.getViewVector(0.0F); + } + Vec3 hover = HoverRandomPos.getPos( + LucidEntity.this, + 10, + 5, + bias.x, + bias.z, + (float) Math.PI / 2.0F, + 3, + 1 + ); + if (hover != null) { + return hover; + } return new Vec3( + LucidEntity.this.getX() + (LucidEntity.this.random.nextDouble() - 0.5D) * 10.0D, + LucidEntity.this.getY() + (LucidEntity.this.random.nextDouble() - 0.5D) * 4.0D, + LucidEntity.this.getZ() + (LucidEntity.this.random.nextDouble() - 0.5D) * 10.0D + ); + } + } + +} + + + + + + diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEyeProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEyeProjectileEntity.java new file mode 100644 index 00000000..6625ddf5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEyeProjectileEntity.java @@ -0,0 +1,75 @@ +package com.craisinlord.antarchy.content.entity.lucid; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.Holder; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +import java.util.function.Supplier; + +public class LucidEyeProjectileEntity extends ThrowableItemProjectile { + public static Supplier defaultItemSupplier; + + + public static Supplier> invertedEffectSupplier; + + public LucidEyeProjectileEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + public LucidEyeProjectileEntity(EntityType entityType, + LivingEntity thrower, Level level) { + super(entityType, thrower, level); + } + + + @Override + protected double getDefaultGravity() { + return -0.03; + } + + @Override + protected Item getDefaultItem() { + return defaultItemSupplier != null ? defaultItemSupplier.get() : net.minecraft.world.item.Items.ENDER_PEARL; + } + + @Override + protected void onHit(HitResult hitResult) { + super.onHit(hitResult); + + if (this.level() instanceof ServerLevel serverLevel) { + LivingEntity owner = this.getOwner() instanceof LivingEntity le ? le : null; + if (owner != null) { + Vec3 destination = hitResult.getLocation(); + owner.resetFallDistance(); + owner.teleportTo(destination.x, destination.y, destination.z); + owner.hurt(owner.damageSources().fall(), 5.0F); + } + + if (owner != null && invertedEffectSupplier != null) { + int effectDurationTicks = (int) Math.round(AntarchySettings.lucidPearlInvertedDurationSeconds() * 20.0D); + owner.addEffect(new MobEffectInstance( + invertedEffectSupplier.get(), effectDurationTicks, 0, false, true)); + serverLevel.playSound(null, owner.getX(), owner.getY(), owner.getZ(), + SoundEvents.AMETHYST_BLOCK_CHIME, SoundSource.PLAYERS, + 1.0F, 0.8F + this.random.nextFloat() * 0.4F); + } + } + + if (!this.level().isClientSide) { + this.level().broadcastEntityEvent(this, (byte) 3); + this.discard(); + } + } + +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartEntityOwner.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartEntityOwner.java new file mode 100644 index 00000000..9e5c1a9d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartEntityOwner.java @@ -0,0 +1,40 @@ +package com.craisinlord.antarchy.content.entity.multipart; + +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; + +public interface MultipartEntityOwner { + MultipartLayout antarchy$getMultipartLayout(); + + Entity[] antarchy$getMultipartParts(); + + void antarchy$setMultipartParts(Entity[] parts); + + default Entity[] antarchy$createMultipartParts() { + return MultipartFramework.createMultipartParts(this); + } + + default void antarchy$spawnMultipartParts() { + MultipartFramework.spawnMultipartParts(this); + } + + default void antarchy$discardMultipartParts() { + MultipartFramework.discardMultipartParts(this); + } + + default void antarchy$syncMultipartParts() { + MultipartFramework.syncMultipartParts(this); + } + + default boolean antarchy$hurtMultipartPart(Entity part, DamageSource source, float amount) { + return ((Entity) this).hurt(source, amount); + } + + default InteractionResult antarchy$interactMultipartPart(Entity part, Player player, Vec3 hitPosition, InteractionHand hand) { + return ((Entity) this).interactAt(player, hitPosition, hand); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartFramework.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartFramework.java new file mode 100644 index 00000000..9bc6c5da --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartFramework.java @@ -0,0 +1,108 @@ +package com.craisinlord.antarchy.content.entity.multipart; + +import java.util.Objects; +import java.util.UUID; +import org.jetbrains.annotations.Nullable; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; + +public final class MultipartFramework { + public interface PartFactory { + Entity create(MultipartEntityOwner owner, int partIndex, MultipartPartDefinition spec); + } + + public interface NetworkBridge { + void sendAttack(UUID parentId, int partIndex, float damage); + + void sendInteract(UUID parentId, int partIndex, int handId); + } + + private static final NetworkBridge NOOP_BRIDGE = new NetworkBridge() { + @Override + public void sendAttack(UUID parentId, int partIndex, float damage) { + } + + @Override + public void sendInteract(UUID parentId, int partIndex, int handId) { + } + }; + + @Nullable + private static PartFactory partFactory; + private static NetworkBridge networkBridge = NOOP_BRIDGE; + + private MultipartFramework() { + } + + public static void bootstrap( + PartFactory partFactory, + NetworkBridge networkBridge + ) { + MultipartFramework.partFactory = Objects.requireNonNull(partFactory, "partFactory"); + MultipartFramework.networkBridge = Objects.requireNonNull(networkBridge, "networkBridge"); + } + + public static Entity[] createMultipartParts(MultipartEntityOwner owner) { + MultipartLayout layout = owner.antarchy$getMultipartLayout(); + MultipartPartDefinition[] parts = layout.parts(); + Entity[] created = new Entity[parts.length]; + for (int i = 0; i < parts.length; i++) { + created[i] = createMultipartPart(owner, i, parts[i]); + } + return created; + } + + public static Entity createMultipartPart(MultipartEntityOwner owner, int index, MultipartPartDefinition spec) { + PartFactory factory = partFactory; + if (factory == null) { + throw new IllegalStateException("Multipart part factory has not been bootstrapped"); + } + + return factory.create(owner, index, spec); + } + + public static void spawnMultipartParts(MultipartEntityOwner owner) { + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + parts = owner.antarchy$createMultipartParts(); + owner.antarchy$setMultipartParts(parts); + } + syncMultipartParts(owner); + } + + public static void discardMultipartParts(MultipartEntityOwner owner) { + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + return; + } + + for (Entity part : parts) { + if (part != null) { + part.discard(); + } + } + + owner.antarchy$setMultipartParts(null); + } + + public static void syncMultipartParts(MultipartEntityOwner owner) { + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + return; + } + + for (Entity part : parts) { + if (part instanceof MultipartPartAccess access) { + access.antarchy$syncFromParent(); + } + } + } + + public static void sendMultipartAttack(UUID parentId, int partIndex, float damage) { + networkBridge.sendAttack(parentId, partIndex, damage); + } + + public static void sendMultipartInteract(UUID parentId, int partIndex, int handId) { + networkBridge.sendInteract(parentId, partIndex, handId); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartLayout.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartLayout.java new file mode 100644 index 00000000..81bf5b01 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartLayout.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.entity.multipart; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; + +public interface MultipartLayout { + MultipartPartDefinition[] parts(); + + default MultipartPartDefinition part(int index) { + return this.parts()[index]; + } + + default Vec3 getPartPosition(Entity parent, MultipartPartDefinition spec) { + double yawRadians = Math.toRadians(parent.getYRot()); + Vec3 forward = new Vec3(-Math.sin(yawRadians), 0.0D, Math.cos(yawRadians)); + Vec3 right = new Vec3(forward.z, 0.0D, -forward.x); + + return new Vec3( + parent.getX() + forward.x * spec.forwardOffset() + right.x * spec.lateralOffset(), + parent.getY() + spec.yOffset(), + parent.getZ() + forward.z * spec.forwardOffset() + right.z * spec.lateralOffset() + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartPartAccess.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartPartAccess.java new file mode 100644 index 00000000..d2b36603 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartPartAccess.java @@ -0,0 +1,5 @@ +package com.craisinlord.antarchy.content.entity.multipart; + +public interface MultipartPartAccess { + void antarchy$syncFromParent(); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartPartDefinition.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartPartDefinition.java new file mode 100644 index 00000000..194758e5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/MultipartPartDefinition.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.entity.multipart; + +public record MultipartPartDefinition( + String name, + float width, + float height, + float damageMultiplier, + double forwardOffset, + double yOffset, + double lateralOffset, + boolean collisionEnabled +) { +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/network/MultipartAttackPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/network/MultipartAttackPayload.java new file mode 100644 index 00000000..dfb7f0f1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/network/MultipartAttackPayload.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.entity.multipart.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import java.util.UUID; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record MultipartAttackPayload(UUID parentId, int partIndex, float damage) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "multipart_attack")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.STRING_UTF8.map(UUID::fromString, UUID::toString), + MultipartAttackPayload::parentId, + ByteBufCodecs.VAR_INT, + MultipartAttackPayload::partIndex, + ByteBufCodecs.FLOAT, + MultipartAttackPayload::damage, + MultipartAttackPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/network/MultipartInteractPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/network/MultipartInteractPayload.java new file mode 100644 index 00000000..7bf3e9f1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/multipart/network/MultipartInteractPayload.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.entity.multipart.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import java.util.UUID; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record MultipartInteractPayload(UUID parentId, int partIndex, int handId) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "multipart_interact")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.STRING_UTF8.map(UUID::fromString, UUID::toString), + MultipartInteractPayload::parentId, + ByteBufCodecs.VAR_INT, + MultipartInteractPayload::partIndex, + ByteBufCodecs.VAR_INT, + MultipartInteractPayload::handId, + MultipartInteractPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java new file mode 100644 index 00000000..84146269 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java @@ -0,0 +1,1225 @@ +package com.craisinlord.antarchy.content.entity.nightmare; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.EnumSet; +import java.util.Comparator; +import java.util.List; + +public class NightmareEntity extends Monster implements GeoEntity { + private static final EntityDataAccessor ANIMATION_STATE = SynchedEntityData.defineId(NightmareEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor ROARING = SynchedEntityData.defineId(NightmareEntity.class, EntityDataSerializers.BOOLEAN); + + private static final String ATTACK_COOLDOWN_KEY = "AttackCooldown"; + private static final String ATTACK_ANIMATION_TICKS_KEY = "AttackAnimationTicks"; + private static final String ATTACK_HIT_APPLIED_KEY = "AttackHitApplied"; + private static final String ROAR_TICKS_KEY = "RoarTicks"; + private static final String ROAR_COOLDOWN_KEY = "RoarCooldown"; + private static final String INTRO_ROAR_USED_KEY = "IntroRoarUsed"; + private static final String TARGETLESS_TICKS_KEY = "TargetlessTicks"; + private static final String ANIMATION_STATE_KEY = "AnimationState"; + private static final int ANIM_IDLE = 0; + private static final int ANIM_WALK = 1; + private static final int ANIM_FLY = 2; + private static final int ANIM_ATTACK = 3; + private static final int ANIM_FLY_ATTACK = 4; + private static final int ANIM_ROAR = 5; + private static final int ANIM_DEATH = 6; + private static final int ANIM_TAKEOFF = 7; + private static final int ANIM_FLY_DAMAGED = 8; + private static final int ATTACK_TOTAL_TICKS = 18; + private static final int ATTACK_DAMAGE_TICK = 9; + private static final int INTRO_ROAR_TICKS = 32; + private static final int COMBAT_ROAR_TICKS = 24; + private static final int DEATH_TICKS = 36; + private static final int TARGET_RESET_TICKS = 60; + private static final int DREAD_TICKS = 160; + private static final int WEAKNESS_TICKS = 100; + private static final double PATROL_SPEED = 0.34D; + private static final double COMBAT_FLIGHT_SPEED = 0.58D; + private static final double GROUND_APPROACH_SPEED = 0.82D; + private static final int FLIGHT_MODE_COMMIT_TICKS = 80; + private static final double ATTACK_START_RANGE_SQR = 42.25D; + private static final double GROUND_APPROACH_RANGE_SQR = 16.0D * 16.0D; + private static final double ATTACK_REACH_RADIUS = 2.65D; + private static final double ATTACK_COMMIT_HORIZONTAL_RANGE = 4.2D; + private static final double ATTACK_COMMIT_VERTICAL_RANGE = 2.8D; + private static final double FLIGHT_REENGAGE_RANGE_SQR = 10.0D * 10.0D; + private static final double FLIGHT_RETURN_RANGE_SQR = 20.0D * 20.0D; + private static final double CLOSE_APPROACH_RANGE_SQR = 6.0D * 6.0D; + private static final int FLIGHT_CEILING_CLEARANCE_BLOCKS = 4; + private static final int BLOCK_BREAK_TICKS = 10; + private static final double PATROL_AIR_MIN_HEIGHT = 1.15D; + private static final double PATROL_AIR_HEIGHT_SPAN = 0.85D; + private static final double COMBAT_FLIGHT_BASE_HEIGHT = 0.75D; + private static final double COMBAT_FLIGHT_HEIGHT_SPAN = 0.70D; + private static final double ROAR_RETRY_DISTANCE_SQR = 20.0D * 20.0D; + private static final float AIR_PATROL_CHANCE = 0.2F; + private static final long SPAWN_DEBUG_LOG_INTERVAL = 200L; + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("Idle"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation TAKEOFF_ANIM = RawAnimation.begin().thenPlay("animation"); + private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly"); + private static final RawAnimation FLY_DAMAGED_ANIM = RawAnimation.begin().thenLoop("fly_damaged"); + private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); + private static final RawAnimation FLY_ATTACK_ANIM = RawAnimation.begin().thenPlay("fly_attack"); + private static final RawAnimation ROAR_ANIM = RawAnimation.begin().thenPlay("roar"); + private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlay("death"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + @Nullable + private Vec3 patrolTarget; + private int patrolRetargetTicks; + private int strafeRetargetTicks; + private int attackCooldown; + private int attackAnimationTicks; + private int roarTicks; + private int roarCooldown; + private int targetlessTicks; + private boolean attackHitApplied; + private boolean introRoarUsed; + private boolean groundCombatMode; + private float orbitDirection = 1.0F; + private double currentOrbitAngle = 0.0D; + private int airborneWithTargetTicks = 0; + private int airborneTicks = 0; + private int ceilingAvoidanceTicks = 0; + private int flightModeCommitTicks = 0; + private int flightTargetRetargetTicks = 0; + private int wingFlapCooldown = 0; + private int blockBreakCooldown = 0; + @Nullable + private Vec3 cachedFlightTarget; + @Nullable + private Vec3 cachedFlightTargetAnchor; + private static long lastSpawnDebugLogTick = Long.MIN_VALUE; + + public NightmareEntity(EntityType entityType, Level level) { + super(entityType, level); + this.moveControl = new FlyingMoveControl(this, 12, true); + this.xpReward = 25; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 180.0D) + .add(Attributes.ATTACK_DAMAGE, 14.0D) + .add(Attributes.MOVEMENT_SPEED, 0.28D) + .add(Attributes.FLYING_SPEED, 0.3D) + .add(Attributes.FOLLOW_RANGE, 48.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.75D) + .add(Attributes.ARMOR, 8.0D); + } + + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + boolean sturdy = level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + boolean posEmpty = level.isEmptyBlock(pos); + boolean aboveEmpty = level.isEmptyBlock(pos.above()); + boolean allowed = level.getDifficulty() != Difficulty.PEACEFUL && sturdy && posEmpty && aboveEmpty; + return allowed; + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIMATION_STATE, ANIM_IDLE); + builder.define(ROARING, false); + } + + @Override + protected void registerGoals() { +this.goalSelector.addGoal(4, new NightmareCombatMovementGoal()); + this.goalSelector.addGoal(5, new NightmareAirPatrolGoal()); +this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 16.0F)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers()); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::canTargetEntity)); + this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, this::canTargetEntity)); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + } + + private PlayState mainAnimController(AnimationState state) { + state.getController().setAnimationSpeed(this.getAnimationState() == ANIM_FLY ? 0.45D : 1.0D); + + return switch (this.getAnimationState()) { + case ANIM_WALK -> state.setAndContinue(WALK_ANIM); + case ANIM_TAKEOFF -> state.setAndContinue(TAKEOFF_ANIM); + case ANIM_FLY -> state.setAndContinue(FLY_ANIM); + case ANIM_FLY_DAMAGED -> state.setAndContinue(FLY_DAMAGED_ANIM); + case ANIM_ATTACK -> state.setAndContinue(ATTACK_ANIM); + case ANIM_FLY_ATTACK -> state.setAndContinue(FLY_ATTACK_ANIM); + case ANIM_ROAR -> state.setAndContinue(ROAR_ANIM); + case ANIM_DEATH -> state.setAndContinue(DEATH_ANIM); + default -> state.setAndContinue(IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + protected PathNavigation createNavigation(Level level) { + FlyingPathNavigation navigation = new FlyingPathNavigation(this, level); + navigation.setCanOpenDoors(false); + navigation.setCanFloat(true); + navigation.setCanPassDoors(true); + return navigation; + } + + @Override + public void tick() { + super.tick(); + this.setNoGravity(this.shouldUseFlight() && !this.isTooCloseToCeiling()); + + if (this.level().isClientSide) { + this.tickClientParticles(); + this.updateFlightRotation(); + return; + } + + this.airborneTicks = this.onGround() ? 0 : this.airborneTicks + 1; + + if (this.attackCooldown > 0) { + this.attackCooldown--; + } + if (this.roarCooldown > 0) { + this.roarCooldown--; + } + if (this.blockBreakCooldown > 0) { + this.blockBreakCooldown--; + } + + LivingEntity target = this.getTarget(); + if (!this.canTargetEntity(target)) { + this.setTarget(null); + target = null; + } + if (this.tickCount % 10 == 0) { + LivingEntity bestTarget = this.findBestAttackTarget(target); + if (bestTarget != target) { + this.setTarget(bestTarget); + target = bestTarget; + } + } + + if (this.isDeadOrDying()) { + this.setAnimationState(ANIM_DEATH); + this.updateFlightRotation(); + return; + } + + if (target == null) { + this.tickTargetless(); + this.updateAnimationState(); + this.updateFlightRotation(); + return; + } + + this.targetlessTicks = 0; + this.getLookControl().setLookAt(target, 35.0F, 20.0F); + + if (this.isRoaring()) { + this.tickRoar(target); + this.updateAnimationState(); + this.updateFlightRotation(); + return; + } + + if (this.attackAnimationTicks > 0) { + this.tickAttack(target); + this.updateAnimationState(); + this.updateFlightRotation(); + return; + } + + if (target instanceof Player && this.shouldStartRoar(target)) { + this.startRoar(); + this.updateAnimationState(); + this.updateFlightRotation(); + return; + } + + this.updateAnimationState(); + this.updateFlightRotation(); + } + + @Override + public void travel(Vec3 travelVector) { + if (this.isEffectiveAi() && (this.isNoGravity() || !this.onGround())) { + this.moveRelative(this.getSpeed(), travelVector); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(this.onGround() ? 0.88D : 0.91D)); + return; + } + + super.travel(travelVector); + } + + @Override + public boolean doHurtTarget(Entity target) { + if (!(target instanceof LivingEntity livingTarget)) { + return false; + } + + boolean hurt = this.level() instanceof ServerLevel serverLevel + ? livingTarget.hurt(AntarchyDamageSources.nightmareMauling(serverLevel, this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)) + : super.doHurtTarget(target); + if (hurt) { + this.playNightmareBiteSound(); + this.applyNightmareStrikeEffects(livingTarget); + } + return hurt; + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public boolean fireImmune() { + return true; + } + + @Override + public void lavaHurt() { + } + + @Override + protected void checkFallDamage(double y, boolean onGround, net.minecraft.world.level.block.state.BlockState state, BlockPos pos) { + } + + @Override + public boolean canAttack(LivingEntity target) { + return this.canTargetEntity(target) && super.canAttack(target); + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + protected SoundEvent getAmbientSound() { + return AntarchySoundEvents.NIGHTMARE_IDLE.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return AntarchySoundEvents.NIGHTMARE_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return 1.25F; + } + + @Override + public float getVoicePitch() { + return 0.75F + this.random.nextFloat() * 0.1F; + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putInt(ATTACK_COOLDOWN_KEY, this.attackCooldown); + tag.putInt(ATTACK_ANIMATION_TICKS_KEY, this.attackAnimationTicks); + tag.putBoolean(ATTACK_HIT_APPLIED_KEY, this.attackHitApplied); + tag.putInt(ROAR_TICKS_KEY, this.roarTicks); + tag.putInt(ROAR_COOLDOWN_KEY, this.roarCooldown); + tag.putBoolean(INTRO_ROAR_USED_KEY, this.introRoarUsed); + tag.putInt(TARGETLESS_TICKS_KEY, this.targetlessTicks); + tag.putInt("AirborneTicks", this.airborneTicks); + tag.putBoolean("Roaring", this.isRoaring()); + tag.putInt(ANIMATION_STATE_KEY, this.getAnimationState()); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.attackCooldown = tag.getInt(ATTACK_COOLDOWN_KEY); + this.attackAnimationTicks = tag.getInt(ATTACK_ANIMATION_TICKS_KEY); + this.attackHitApplied = tag.getBoolean(ATTACK_HIT_APPLIED_KEY); + this.roarTicks = tag.getInt(ROAR_TICKS_KEY); + this.roarCooldown = tag.getInt(ROAR_COOLDOWN_KEY); + this.introRoarUsed = tag.getBoolean(INTRO_ROAR_USED_KEY); + this.targetlessTicks = tag.getInt(TARGETLESS_TICKS_KEY); + this.airborneTicks = tag.getInt("AirborneTicks"); + this.entityData.set(ROARING, tag.getBoolean("Roaring")); + this.entityData.set(ANIMATION_STATE, tag.contains(ANIMATION_STATE_KEY) ? tag.getInt(ANIMATION_STATE_KEY) : ANIM_IDLE); + } + + @Override + public void die(DamageSource damageSource) { + if (!this.level().isClientSide) { + this.setAnimationState(ANIM_DEATH); + this.attackAnimationTicks = 0; + this.attackCooldown = 0; + this.roarTicks = 0; + this.setRoaring(false); + this.setDeltaMovement(Vec3.ZERO); + this.getNavigation().stop(); + } + super.die(damageSource); + } + + @Override + protected void tickDeath() { + this.deathTime++; + + if (this.deathTime == 1) { + this.setAnimationState(ANIM_DEATH); + } + + if (this.deathTime >= DEATH_TICKS) { + this.remove(RemovalReason.KILLED); + this.dropExperience(this); + } + } + + public boolean isRoaring() { + return this.entityData.get(ROARING); + } + + public int getAnimationState() { + return this.entityData.get(ANIMATION_STATE); + } + + private void setRoaring(boolean roaring) { + this.entityData.set(ROARING, roaring); + } + + private void setAnimationState(int animationState) { + this.entityData.set(ANIMATION_STATE, animationState); + } + + private void tickTargetless() { + this.targetlessTicks++; + if (this.targetlessTicks >= TARGET_RESET_TICKS) { + this.introRoarUsed = false; + this.currentOrbitAngle = this.random.nextDouble() * Math.PI * 2.0D; + } + + if (this.attackAnimationTicks > 0) { + this.attackAnimationTicks = 0; + this.attackHitApplied = false; + } + if (this.isRoaring()) { + this.roarTicks = 0; + this.setRoaring(false); + } + + this.groundCombatMode = false; + this.ceilingAvoidanceTicks = 0; + this.flightModeCommitTicks = 0; + this.flightTargetRetargetTicks = 0; + this.cachedFlightTarget = null; + this.cachedFlightTargetAnchor = null; + } + + private void tickPatrolMovement() { + this.strafeRetargetTicks = 0; + if (this.patrolRetargetTicks-- <= 0 || this.patrolTarget == null || this.position().distanceToSqr(this.patrolTarget) < 4.0D) { + this.patrolRetargetTicks = 30 + this.random.nextInt(30); + this.patrolTarget = this.findPatrolTarget(); + } + + if (this.patrolTarget != null) { + this.getMoveControl().setWantedPosition(this.patrolTarget.x, this.patrolTarget.y, this.patrolTarget.z, PATROL_SPEED); + } + } + + private void tickCombatMovement(LivingEntity target) { + this.patrolTarget = null; + if (this.ceilingAvoidanceTicks > 0) { + this.ceilingAvoidanceTicks--; + } + + boolean shouldFly = this.resolveCombatFlightMode(target); + double distanceSqr = this.distanceToSqr(target); + double horizontalDistanceSqr = this.horizontalDistanceToSqr(target); + double verticalDistance = Math.abs(target.getY() - this.getY()); + this.airborneWithTargetTicks = this.onGround() ? 0 : this.airborneWithTargetTicks + 1; + + if (this.attackCooldown <= 0 + && this.canStartAttackOn(target)) { + this.startAttack(target); + return; + } + + this.faceTowardTarget(target, shouldFly ? 12.0F : 18.0F); + + if (shouldFly && this.isTooCloseToCeiling()) { + shouldFly = false; + this.groundCombatMode = true; + this.flightModeCommitTicks = FLIGHT_MODE_COMMIT_TICKS; + this.ceilingAvoidanceTicks = 20; + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -0.15D, 0.0D)); + } + + if (!shouldFly) { + this.groundCombatMode = true; + this.flightTargetRetargetTicks = 0; + this.cachedFlightTarget = null; + this.cachedFlightTargetAnchor = null; + if (this.isHoveringAboveTarget(target) && this.tryBreakBlocksToTarget(target)) { + return; + } + Vec3 combatTarget = this.createGroundApproachTarget(target); + this.getMoveControl().setWantedPosition( + combatTarget.x, + combatTarget.y, + combatTarget.z, + GROUND_APPROACH_SPEED + ); + return; + } + + this.groundCombatMode = false; + this.flightModeCommitTicks = FLIGHT_MODE_COMMIT_TICKS; + + if (distanceSqr <= CLOSE_APPROACH_RANGE_SQR + || horizontalDistanceSqr > ATTACK_COMMIT_HORIZONTAL_RANGE * ATTACK_COMMIT_HORIZONTAL_RANGE + || verticalDistance > ATTACK_COMMIT_VERTICAL_RANGE) { + Vec3 combatTarget = this.createStrikeFlightTarget(target); + this.getMoveControl().setWantedPosition( + combatTarget.x, + combatTarget.y, + combatTarget.z, + COMBAT_FLIGHT_SPEED + ); + return; + } + + if (this.strafeRetargetTicks-- <= 0) { + this.strafeRetargetTicks = 40 + this.random.nextInt(40); + } + + Vec3 combatTarget = this.createCombatFlightTarget(target); + this.getMoveControl().setWantedPosition( + combatTarget.x, + combatTarget.y, + combatTarget.z, + COMBAT_FLIGHT_SPEED + ); + } + + private boolean shouldStartRoar(LivingEntity target) { + if (!this.onGround() || this.roarCooldown > 0 || !this.hasLineOfSight(target)) { + return false; + } + + double distanceSqr = this.distanceToSqr(target); + if (distanceSqr > ROAR_RETRY_DISTANCE_SQR || !this.isInFront(target.position(), -0.1D)) { + return false; + } + + boolean pressureWindow = distanceSqr > ATTACK_START_RANGE_SQR && distanceSqr <= GROUND_APPROACH_RANGE_SQR; + boolean wounded = this.getHealth() <= this.getMaxHealth() * 0.5F; + return pressureWindow || wounded; + } + + private void startRoar() { + this.roarTicks = this.introRoarUsed ? COMBAT_ROAR_TICKS : INTRO_ROAR_TICKS; + this.introRoarUsed = true; + this.roarCooldown = 240 + this.random.nextInt(140); + this.attackAnimationTicks = 0; + this.attackHitApplied = false; + this.setRoaring(true); + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.18D)); + this.playSound(AntarchySoundEvents.NIGHTMARE_ROAR.get(), 2.2F, 0.7F + this.random.nextFloat() * 0.06F); + if (this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(ParticleTypes.SOUL_FIRE_FLAME, this.getX(), this.getY() + 2.0D, this.getZ(), 20, 1.1D, 0.8D, 1.1D, 0.02D); + serverLevel.sendParticles(ParticleTypes.SMOKE, this.getX(), this.getY() + 2.0D, this.getZ(), 12, 0.9D, 0.6D, 0.9D, 0.02D); + } + } + + private void tickRoar(@Nullable LivingEntity target) { + this.getNavigation().stop(); + this.getMoveControl().setWantedPosition(this.getX(), this.getY(), this.getZ(), 0.0D); + this.setDeltaMovement(this.getDeltaMovement().scale(0.6D)); + + if (target != null) { + this.getLookControl().setLookAt(target, 35.0F, 20.0F); + this.faceTowardTarget(target, 14.0F); + } + + if (--this.roarTicks <= 0) { + this.roarTicks = 0; + this.setRoaring(false); + this.attackCooldown = Math.max(this.attackCooldown, 18); + } + } + + private void startAttack(LivingEntity target) { + this.attackAnimationTicks = ATTACK_TOTAL_TICKS; + this.attackHitApplied = false; + this.attackCooldown = ATTACK_TOTAL_TICKS + 12; + this.getNavigation().stop(); + + Vec3 lunge = target.getEyePosition().subtract(this.getEyePosition()); + if (lunge.lengthSqr() > 1.0E-4D) { + Vec3 normalized = lunge.normalize(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.3D).add(normalized.x * 0.85D, normalized.y * 0.18D, normalized.z * 0.85D)); + this.hasImpulse = true; + } + } + + private void tickAttack(@Nullable LivingEntity target) { + this.getNavigation().stop(); + this.setDeltaMovement(this.getDeltaMovement().scale(0.93D)); + + if (target != null) { + this.getLookControl().setLookAt(target, 35.0F, 20.0F); + this.faceTowardTarget(target, 20.0F); + } + + int elapsed = ATTACK_TOTAL_TICKS - this.attackAnimationTicks; + if (!this.attackHitApplied && elapsed >= ATTACK_DAMAGE_TICK) { + this.attackHitApplied = true; + this.playNightmareBiteSound(); + this.performAttackHit(); + } + + if (--this.attackAnimationTicks <= 0) { + this.attackAnimationTicks = 0; + } + } + + private void performAttackHit() { + AABB hitBox = this.getBoundingBox() + .inflate(ATTACK_REACH_RADIUS, 1.5D, ATTACK_REACH_RADIUS) + .expandTowards(this.getViewVector(1.0F).scale(1.9D)); + + List victims = this.level().getEntitiesOfClass( + LivingEntity.class, + hitBox, + this::canTargetEntity + ); + + float damage = (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE); + for (LivingEntity victim : victims) { + if (!this.isInFront(victim.position(), -0.25D)) { + continue; + } + + if (victim.hurt(this.nightmareDamageSource(), damage)) { + this.applyNightmareStrikeEffects(victim); + this.knockAway(victim, 1.15D, 0.3D); + } + } + + if (this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(ParticleTypes.SOUL_FIRE_FLAME, this.getX(), this.getY() + 1.6D, this.getZ(), 12, 0.9D, 0.35D, 0.9D, 0.02D); + serverLevel.sendParticles(ParticleTypes.SMOKE, this.getX(), this.getY() + 1.6D, this.getZ(), 8, 0.7D, 0.25D, 0.7D, 0.03D); + } + } + + private void playNightmareBiteSound() { + this.playSound(AntarchySoundEvents.NIGHTMARE_BITE.get(), 1.3F, 0.72F + this.random.nextFloat() * 0.08F); + } + + private void applyNightmareStrikeEffects(LivingEntity target) { + if (target instanceof Player) { + target.addEffect(new MobEffectInstance(AntarchyObjects.DREAD.get(), DREAD_TICKS, 0)); + } + target.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, WEAKNESS_TICKS, 0)); + if (this.level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(ParticleTypes.SOUL_FIRE_FLAME, target.getX(), target.getY(0.8D), target.getZ(), 10, 0.28D, 0.22D, 0.28D, 0.01D); + serverLevel.sendParticles(ParticleTypes.SMOKE, target.getX(), target.getY(0.8D), target.getZ(), 6, 0.22D, 0.16D, 0.22D, 0.02D); + } + } + + private void knockAway(LivingEntity target, double horizontalStrength, double verticalStrength) { + Vec3 direction = target.position().subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (direction.lengthSqr() < 1.0E-4D) { + direction = this.getViewVector(1.0F).multiply(1.0D, 0.0D, 1.0D); + } + if (direction.lengthSqr() < 1.0E-4D) { + direction = new Vec3(1.0D, 0.0D, 0.0D); + } + + Vec3 push = direction.normalize().scale(horizontalStrength); + target.push(push.x, verticalStrength, push.z); + target.hurtMarked = true; + } + + private DamageSource nightmareDamageSource() { + return this.level() instanceof ServerLevel serverLevel + ? AntarchyDamageSources.nightmareMauling(serverLevel, this) + : this.damageSources().mobAttack(this); + } + + private boolean tryBreakBlocksToTarget(LivingEntity target) { + int startY = Mth.floor(this.getY()); + int endY = Math.max(Mth.floor(target.getY()), startY - 16); + int x = Mth.floor(this.getX()); + int z = Mth.floor(this.getZ()); + + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int y = startY; y >= endY; y--) { + cursor.set(x, y, z); + if (this.level().getBlockState(cursor).is(AntarchyTags.Blocks.NIGHTMARE_BREAKABLE)) { + if (this.blockBreakCooldown <= 0) { + this.level().destroyBlock(cursor.immutable(), true, this); + this.blockBreakCooldown = BLOCK_BREAK_TICKS; + } + this.getMoveControl().setWantedPosition(this.getX(), this.getY(), this.getZ(), 0.0D); + return true; + } + } + + return false; + } + + @Nullable + private LivingEntity findBestAttackTarget(@Nullable LivingEntity currentTarget) { + double followRange = this.getAttributeValue(Attributes.FOLLOW_RANGE); + return this.level().getEntitiesOfClass( + LivingEntity.class, + this.getBoundingBox().inflate(followRange, followRange * 0.5D, followRange), + this::canTargetEntity + ).stream() + .min(Comparator.comparingDouble(entity -> this.scoreAttackTarget(entity, currentTarget))) + .orElse(null); + } + + private boolean canTargetEntity(@Nullable LivingEntity entity) { + if (entity == null || !entity.isAlive() || entity == this || entity.getType() == this.getType()) { + return false; + } + + if (entity.getType().is(AntarchyTags.Entities.NIGHTMARE_NO_ATTACK)) { + return false; + } + + if (entity instanceof Player player) { + return !player.isCreative() && !player.isSpectator() && this.level().getDifficulty() != Difficulty.PEACEFUL; + } + + return entity instanceof Mob && entity.isAttackable(); + } + + private double scoreAttackTarget(LivingEntity candidate, @Nullable LivingEntity currentTarget) { + double score = this.distanceToSqr(candidate); + if (candidate instanceof Player) { + score -= 10000.0D; + } + if (candidate == currentTarget) { + score -= 18.0D; + } + if (this.hasLineOfSight(candidate)) { + score -= 12.0D; + } else { + score += 16.0D; + } + if (this.isInFront(candidate.position(), -0.15D)) { + score -= 4.0D; + } + return score; + } + + private boolean shouldUseFlight() { + LivingEntity target = this.getTarget(); + return (target != null && this.canTargetEntity(target) && this.shouldUseFlightForTarget(target)) + || (this.patrolTarget != null && this.patrolTarget.y > this.getY() + 1.5D); + } + + private boolean shouldUseFlightForTarget(LivingEntity target) { + if (this.ceilingAvoidanceTicks > 0) { + return false; + } + + if (!target.onGround() || target.getY() > this.getY() + 2.5D) { + this.groundCombatMode = false; + return true; + } + + double distanceSqr = this.distanceToSqr(target); + + if (this.isHoveringAboveTarget(target)) { + this.groundCombatMode = true; + return false; + } + + if (this.groundCombatMode) { + if (distanceSqr <= FLIGHT_RETURN_RANGE_SQR) { + return false; + } + + this.groundCombatMode = false; + return true; + } + + if (this.onGround() && distanceSqr <= GROUND_APPROACH_RANGE_SQR) { + this.groundCombatMode = true; + return false; + } + + if (distanceSqr > FLIGHT_REENGAGE_RANGE_SQR) { + return true; + } + + return !this.onGround() && distanceSqr > CLOSE_APPROACH_RANGE_SQR; + } + + private boolean resolveCombatFlightMode(LivingEntity target) { + boolean desiredFly = this.shouldUseFlightForTarget(target); + boolean currentFly = !this.groundCombatMode; + + if (desiredFly == currentFly) { + this.flightModeCommitTicks = FLIGHT_MODE_COMMIT_TICKS; + return desiredFly; + } + + if (this.flightModeCommitTicks > 0) { + this.flightModeCommitTicks--; + return currentFly; + } + + this.groundCombatMode = !desiredFly; + this.flightModeCommitTicks = FLIGHT_MODE_COMMIT_TICKS; + return desiredFly; + } + + private boolean isInFront(Vec3 position, double minimumDot) { + Vec3 forward = this.getViewVector(1.0F).multiply(1.0D, 0.0D, 1.0D); + Vec3 toTarget = position.subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (forward.lengthSqr() < 1.0E-4D || toTarget.lengthSqr() < 1.0E-4D) { + return true; + } + return forward.normalize().dot(toTarget.normalize()) >= minimumDot; + } + + private boolean canStartAttackOn(LivingEntity target) { + if (!this.hasLineOfSight(target) || this.distanceToSqr(target) > ATTACK_START_RANGE_SQR) { + return false; + } + + double horizontalDistanceSqr = this.horizontalDistanceToSqr(target); + double verticalDistance = Math.abs(target.getEyeY() - this.getEyeY()); + return horizontalDistanceSqr <= ATTACK_COMMIT_HORIZONTAL_RANGE * ATTACK_COMMIT_HORIZONTAL_RANGE + && verticalDistance <= 4.0D; + } + + private double horizontalDistanceToSqr(LivingEntity target) { + double dx = target.getX() - this.getX(); + double dz = target.getZ() - this.getZ(); + return dx * dx + dz * dz; + } + + private void faceTowardTarget(LivingEntity target, float maxTurnDegrees) { + Vec3 toTarget = target.getEyePosition().subtract(this.getEyePosition()); + double horizontal = Math.sqrt(toTarget.x * toTarget.x + toTarget.z * toTarget.z); + if (horizontal > 1.0E-4D) { + float targetYaw = (float) (Mth.atan2(toTarget.z, toTarget.x) * (180.0D / Math.PI)) - 90.0F; + float nextYaw = Mth.approachDegrees(this.getYRot(), targetYaw, maxTurnDegrees); + this.setYRot(nextYaw); + this.yBodyRot = nextYaw; + this.yHeadRot = nextYaw; + } + if (toTarget.lengthSqr() > 1.0E-4D) { + float targetPitch = (float) (-(Mth.atan2(toTarget.y, horizontal) * (180.0D / Math.PI))); + this.setXRot(Mth.approachDegrees(this.getXRot(), targetPitch, maxTurnDegrees * 0.7F)); + } + } + + private Vec3 createCombatFlightTarget(LivingEntity target) { + double distanceToTarget = this.distanceTo(target); + if (distanceToTarget > 10.0D) { + Vec3 direct = target.getEyePosition().add(0.0D, 0.5D, 0.0D); + return this.getStableFlightTarget(direct, 8); + } + + this.currentOrbitAngle += 0.022D * this.orbitDirection; + double radius = 4.1D; + double angle = this.currentOrbitAngle + this.getId() * 0.09D; + double x = target.getX() + Math.cos(angle) * radius; + double z = target.getZ() + Math.sin(angle) * radius; + double y = Mth.clamp( + target.getY() + COMBAT_FLIGHT_BASE_HEIGHT + Math.sin((this.tickCount + this.getId()) * 0.16D) * COMBAT_FLIGHT_HEIGHT_SPAN, + target.getY() + 0.55D, + target.getY() + 1.45D + ); + return this.getStableFlightTarget(new Vec3(x, y, z), 8); + } + + private Vec3 createStrikeFlightTarget(LivingEntity target) { + Vec3 offset = this.position().subtract(target.position()).multiply(1.0D, 0.0D, 1.0D); + if (offset.lengthSqr() < 1.0E-4D) { + offset = this.getViewVector(1.0F).multiply(-1.0D, 0.0D, -1.0D); + } + if (offset.lengthSqr() < 1.0E-4D) { + offset = new Vec3(1.0D, 0.0D, 0.0D); + } + + Vec3 desired = target.getEyePosition() + .add(offset.normalize().scale(2.1D)) + .add(0.0D, 0.05D, 0.0D); + return this.getStableFlightTarget(desired, 4); + } + + private Vec3 createGroundApproachTarget(LivingEntity target) { + return new Vec3(target.getX(), target.getY() + 0.85D, target.getZ()); + } + + private Vec3 findPatrolTarget() { + BlockPos origin = this.blockPosition(); + for (int attempt = 0; attempt < 18; attempt++) { + int x = origin.getX() + this.random.nextInt(29) - 14; + int z = origin.getZ() + this.random.nextInt(29) - 14; + BlockPos terrainPos = this.level().getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, new BlockPos(x, origin.getY(), z)); + boolean airPatrol = this.random.nextFloat() < AIR_PATROL_CHANCE; + double y = airPatrol + ? terrainPos.getY() + PATROL_AIR_MIN_HEIGHT + this.random.nextDouble() * PATROL_AIR_HEIGHT_SPAN + : terrainPos.getY() + 1.0D; + Vec3 desired = new Vec3(x + 0.5D, y, z + 0.5D); + Vec3 openTarget = this.findNearestFlightTarget(desired); + if (openTarget.distanceToSqr(desired) <= 16.0D) { + return openTarget; + } + } + + BlockPos fallbackTerrain = this.level().getHeightmapPos( + Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, + origin.offset(this.random.nextInt(25) - 12, 0, this.random.nextInt(25) - 12) + ); + return new Vec3(fallbackTerrain.getX() + 0.5D, fallbackTerrain.getY() + 1.0D, fallbackTerrain.getZ() + 0.5D); + } + + private Vec3 findNearestFlightTarget(Vec3 desired) { + BlockPos desiredPos = BlockPos.containing(desired); + Vec3 best = null; + double bestScore = Double.MAX_VALUE; + for (int attempt = 0; attempt < 14; attempt++) { + BlockPos candidate = desiredPos.offset( + this.random.nextInt(7) - 3, + this.random.nextInt(5) - 2, + this.random.nextInt(7) - 3 + ); + if (!this.isOpenFlightSpace(candidate) || !this.isCeilingBuffered(candidate)) { + continue; + } + Vec3 candidateCenter = Vec3.atCenterOf(candidate); + double score = candidateCenter.distanceToSqr(desired) + Math.max(0.0D, candidateCenter.y - desired.y) * 6.0D; + if (score < bestScore) { + best = candidateCenter; + bestScore = score; + } + } + if (best != null) { + return best; + } + + for (int down = 0; down <= 12; down++) { + BlockPos lowered = desiredPos.below(down); + if (this.isOpenFlightSpace(lowered) && this.isCeilingBuffered(lowered)) { + return Vec3.atCenterOf(lowered); + } + } + + return desired; + } + + private Vec3 getStableFlightTarget(Vec3 desired, int retargetTicks) { + if (this.flightTargetRetargetTicks > 0 + && this.cachedFlightTarget != null + && this.cachedFlightTargetAnchor != null + && this.cachedFlightTargetAnchor.distanceToSqr(desired) <= 6.25D) { + this.flightTargetRetargetTicks--; + return this.cachedFlightTarget; + } + + this.cachedFlightTarget = this.findNearestFlightTarget(desired); + this.cachedFlightTargetAnchor = desired; + this.flightTargetRetargetTicks = retargetTicks; + return this.cachedFlightTarget; + } + + private boolean isOpenFlightSpace(BlockPos pos) { + return this.level().isEmptyBlock(pos) + && this.level().isEmptyBlock(pos.above()) + && this.level().isEmptyBlock(pos.above(2)); + } + + private boolean isCeilingBuffered(BlockPos pos) { + for (int i = 3; i <= FLIGHT_CEILING_CLEARANCE_BLOCKS; i++) { + if (!this.level().isEmptyBlock(pos.above(i))) { + return false; + } + } + return true; + } + + private boolean isTooCloseToCeiling() { + BlockPos current = BlockPos.containing(this.getX(), this.getY(), this.getZ()); + for (int i = 1; i <= FLIGHT_CEILING_CLEARANCE_BLOCKS; i++) { + if (!this.level().isEmptyBlock(current.above(i))) { + return true; + } + } + return false; + } + + private boolean isHoveringAboveTarget(LivingEntity target) { + if (!target.onGround()) { + return false; + } + + double horizontalDistanceSqr = this.horizontalDistanceToSqr(target); + double verticalDelta = this.getY() - target.getY(); + return horizontalDistanceSqr <= 25.0D && verticalDelta > 1.6D; + } + + private void tickClientParticles() { + if ((this.isRoaring() || this.attackAnimationTicks > 0) && this.tickCount % 3 == 0) { + this.level().addParticle( + ParticleTypes.SOUL_FIRE_FLAME, + this.getX() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + this.getY() + 1.2D + this.random.nextDouble() * 1.1D, + this.getZ() + (this.random.nextDouble() - 0.5D) * this.getBbWidth(), + 0.0D, + 0.03D, + 0.0D + ); + } + } + + private void updateFlightRotation() { + Vec3 velocity = this.getDeltaMovement(); + if (velocity.horizontalDistanceSqr() > 1.0E-4D) { + float targetYaw = (float) (Mth.atan2(velocity.z, velocity.x) * (180.0D / Math.PI)) - 90.0F; + float nextYaw = Mth.approachDegrees(this.getYRot(), targetYaw, 4.0F); + this.setYRot(nextYaw); + this.yBodyRot = Mth.approachDegrees(this.yBodyRot, nextYaw, 2.5F); + this.yHeadRot = Mth.approachDegrees(this.yHeadRot, nextYaw, 3.5F); + } + + if (!this.onGround() && velocity.lengthSqr() > 1.0E-4D) { + float targetPitch = (float) (-(Mth.atan2(velocity.y, velocity.horizontalDistance()) * (180.0D / Math.PI))); + this.setXRot(Mth.approachDegrees(this.getXRot(), targetPitch, 3.0F)); + } else { + this.setXRot(Mth.approachDegrees(this.getXRot(), 0.0F, 2.0F)); + } + } + + private final class NightmareCombatMovementGoal extends Goal { + private NightmareCombatMovementGoal() { + this.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); + } + + @Override + public boolean canUse() { + return NightmareEntity.this.getTarget() != null + && !NightmareEntity.this.isDeadOrDying() + && !NightmareEntity.this.isRoaring() + && NightmareEntity.this.attackAnimationTicks <= 0; + } + + @Override + public boolean canContinueToUse() { + return this.canUse(); + } + + @Override + public void start() { + NightmareEntity.this.groundCombatMode = false; + } + + @Override + public void stop() { + NightmareEntity.this.getNavigation().stop(); + } + + @Override + public void tick() { + LivingEntity target = NightmareEntity.this.getTarget(); + if (target == null) { + return; + } + + if (NightmareEntity.this.attackCooldown <= 0 && NightmareEntity.this.canStartAttackOn(target)) { + NightmareEntity.this.startAttack(target); + return; + } + + NightmareEntity.this.tickCombatMovement(target); + } + } + + private final class NightmareAirPatrolGoal extends Goal { + private NightmareAirPatrolGoal() { + this.setFlags(EnumSet.of(Goal.Flag.MOVE)); + } + + @Override + public boolean canUse() { + return NightmareEntity.this.getTarget() == null + && !NightmareEntity.this.isDeadOrDying() + && !NightmareEntity.this.isRoaring() + && NightmareEntity.this.attackAnimationTicks <= 0; + } + + @Override + public boolean canContinueToUse() { + return this.canUse(); + } + + @Override + public void start() { + NightmareEntity.this.patrolTarget = null; + NightmareEntity.this.patrolRetargetTicks = 0; + NightmareEntity.this.tickPatrolMovement(); + } + + @Override + public void stop() { + NightmareEntity.this.getNavigation().stop(); + } + + @Override + public void tick() { + if (NightmareEntity.this.getTarget() != null + || NightmareEntity.this.isRoaring() + || NightmareEntity.this.attackAnimationTicks > 0) { + return; + } + + NightmareEntity.this.tickPatrolMovement(); + } + } + + private void updateAnimationState() { + if (this.isDeadOrDying()) { + this.setAnimationState(ANIM_DEATH); + this.wingFlapCooldown = 0; + return; + } + + if (this.isRoaring()) { + this.setAnimationState(ANIM_ROAR); + this.wingFlapCooldown = 0; + return; + } + + if (this.attackAnimationTicks > 0) { + this.setAnimationState(this.onGround() ? ANIM_ATTACK : ANIM_FLY_ATTACK); + this.tickWingFlapSound(); + return; + } + + if (!this.onGround() && this.airborneTicks > 0 && this.airborneTicks <= 10 && this.shouldUseFlight()) { + this.setAnimationState(ANIM_TAKEOFF); + this.wingFlapCooldown = 0; + return; + } + + if (!this.onGround() && this.hurtTime > 0) { + this.setAnimationState(ANIM_FLY_DAMAGED); + this.tickWingFlapSound(); + return; + } + + if (!this.onGround()) { + this.setAnimationState(ANIM_FLY); + this.tickWingFlapSound(); + return; + } + + Vec3 velocity = this.getDeltaMovement(); + if (this.onGround() && velocity.horizontalDistanceSqr() > 0.008D) { + this.setAnimationState(ANIM_WALK); + this.wingFlapCooldown = 0; + return; + } + + this.setAnimationState(ANIM_IDLE); + this.wingFlapCooldown = 0; + } + + private void tickWingFlapSound() { + if (!(this.level() instanceof ServerLevel)) { + return; + } + + if (this.onGround() || this.isRoaring() || this.isDeadOrDying()) { + this.wingFlapCooldown = 0; + return; + } + + Vec3 movement = this.getDeltaMovement(); + if (movement.lengthSqr() < 0.01D) { + return; + } + + if (this.wingFlapCooldown > 0) { + this.wingFlapCooldown--; + return; + } + + this.playSound(AntarchySoundEvents.NIGHTMARE_FLAP.get(), 1.25F, 0.85F + this.random.nextFloat() * 0.08F); + this.wingFlapCooldown = 5 + this.random.nextInt(4); + } + +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareMultipartLayout.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareMultipartLayout.java new file mode 100644 index 00000000..79f7f90c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareMultipartLayout.java @@ -0,0 +1,67 @@ +package com.craisinlord.antarchy.content.entity.nightmare; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartLayout; +import com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition; + +public final class NightmareMultipartLayout implements MultipartLayout { + public static final NightmareMultipartLayout INSTANCE = new NightmareMultipartLayout(); + + public static final MultipartPartDefinition LEFT_WING = new MultipartPartDefinition( + "left_wing", + 2.0F, + 1.0F, + 1.00F, + 0.10D, + 3.05D, + -1.90D, + false + ); + + public static final MultipartPartDefinition LEFT_WING_OUTER = new MultipartPartDefinition( + "left_wing_outer", + 1.55F, + 0.95F, + 0.90F, + -0.25D, + 3.20D, + -3.70D, + false + ); + + public static final MultipartPartDefinition RIGHT_WING = new MultipartPartDefinition( + "right_wing", + 2.0F, + 1.0F, + 1.00F, + 0.10D, + 3.05D, + 1.90D, + false + ); + + public static final MultipartPartDefinition RIGHT_WING_OUTER = new MultipartPartDefinition( + "right_wing_outer", + 1.55F, + 0.95F, + 0.90F, + -0.25D, + 3.20D, + 3.70D, + false + ); + + private static final MultipartPartDefinition[] PARTS = { + LEFT_WING, + LEFT_WING_OUTER, + RIGHT_WING, + RIGHT_WING_OUTER + }; + + private NightmareMultipartLayout() { + } + + @Override + public MultipartPartDefinition[] parts() { + return PARTS; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/trades/DrTrayaurusTradeManager.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/trades/DrTrayaurusTradeManager.java new file mode 100644 index 00000000..f35dd67c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/trades/DrTrayaurusTradeManager.java @@ -0,0 +1,132 @@ +package com.craisinlord.antarchy.content.entity.trades; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.mojang.serialization.Codec; +import com.mojang.serialization.JsonOps; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.trading.ItemCost; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public final class DrTrayaurusTradeManager extends SimpleJsonResourceReloadListener { + private static final Gson GSON = new Gson(); + private static final String DIRECTORY = "trayaurus_trades"; + private static final Codec TRADE_FILE_CODEC = RecordCodecBuilder.create(instance -> instance.group( + TradeEntry.CODEC.listOf().fieldOf("trades").forGetter(TradeFile::trades) + ).apply(instance, TradeFile::new)); + private static volatile List loadedTrades = defaultTrades(); + + public DrTrayaurusTradeManager() { + super(GSON, DIRECTORY); + } + + @Override + protected void apply(java.util.Map object, ResourceManager resourceManager, ProfilerFiller profiler) { + List parsedTrades = new ArrayList<>(); + for (java.util.Map.Entry entry : object.entrySet()) { + TRADE_FILE_CODEC.parse(JsonOps.INSTANCE, entry.getValue()) + .resultOrPartial(message -> { + throw new JsonParseException("Failed to parse " + entry.getKey() + ": " + message); + }) + .ifPresent(file -> parsedTrades.addAll(file.trades())); + } + + loadedTrades = parsedTrades.isEmpty() ? defaultTrades() : List.copyOf(parsedTrades); + } + + public static MerchantOffers createOffers() { + MerchantOffers offers = new MerchantOffers(); + for (TradeEntry trade : loadedTrades) { + trade.toOffer().ifPresent(offers::add); + } + return offers; + } + + private static List defaultTrades() { + return List.of( + new TradeEntry(new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "uranium_ingot"), 4), Optional.empty(), new StackEntry(ResourceLocation.withDefaultNamespace("spyglass"), 1), 16, 1, 0.05F), + new TradeEntry(new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "titanium_ingot"), 6), Optional.empty(), new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "duct_tape"), 2), 12, 5, 0.05F), + new TradeEntry(new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "uranium_ingot"), 8), Optional.of(new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "kraken_tooth"), 1)), new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "duplicator_sapling"), 1), 6, 10, 0.1F), + new TradeEntry(new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "titanium_ingot"), 10), Optional.empty(), new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "easter_bunny_spawn_egg"), 1), 3, 5, 0.05F), + new TradeEntry(new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "uranium_ingot"), 16), Optional.of(new StackEntry(ResourceLocation.fromNamespaceAndPath("antarchy", "titanium_ingot"), 8)), new StackEntry(ResourceLocation.withDefaultNamespace("enchanted_golden_apple"), 1), 2, 20, 0.2F) + ); + } + + private record TradeFile(List trades) { + } + + private record TradeEntry(StackEntry buy, Optional secondBuy, StackEntry sell, int maxUses, int villagerXp, float priceMultiplier) { + private static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + StackEntry.CODEC.fieldOf("buy").forGetter(TradeEntry::buy), + StackEntry.CODEC.optionalFieldOf("second_buy").forGetter(TradeEntry::secondBuy), + StackEntry.CODEC.fieldOf("sell").forGetter(TradeEntry::sell), + Codec.INT.optionalFieldOf("max_uses", 12).forGetter(TradeEntry::maxUses), + Codec.INT.optionalFieldOf("villager_xp", 1).forGetter(TradeEntry::villagerXp), + Codec.FLOAT.optionalFieldOf("price_multiplier", 0.05F).forGetter(TradeEntry::priceMultiplier) + ).apply(instance, TradeEntry::new)); + + private Optional toOffer() { + if (this.maxUses < 1 || this.villagerXp < 1 || this.villagerXp > 99) { + return Optional.empty(); + } + + Optional buyCost = this.buy.toCost(); + if (buyCost.isEmpty()) { + return Optional.empty(); + } + + Optional secondBuyCost = this.secondBuy.flatMap(StackEntry::toCost); + ItemStack sellStack = this.sell.toStack(); + if (sellStack.isEmpty()) { + return Optional.empty(); + } + + return Optional.of(new MerchantOffer( + buyCost.get(), + secondBuyCost, + sellStack, + this.maxUses, + this.villagerXp, + this.priceMultiplier + )); + } + } + + private record StackEntry(ResourceLocation itemId, int count) { + private static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + ResourceLocation.CODEC.fieldOf("item").forGetter(StackEntry::itemId), + Codec.INT.optionalFieldOf("count", 1).forGetter(StackEntry::count) + ).apply(instance, StackEntry::new)); + + private Optional item() { + return BuiltInRegistries.ITEM.getOptional(this.itemId) + .filter(item -> item != net.minecraft.world.item.Items.AIR); + } + + private ItemStack toStack() { + return this.item() + .filter(item -> this.count > 0) + .map(item -> new ItemStack(item, this.count)) + .orElse(ItemStack.EMPTY); + } + + private Optional toCost() { + return this.item() + .filter(item -> this.count > 0) + .map(item -> new ItemCost(item, this.count)); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/fire/AntarchyFireVisualAccess.java b/common/src/main/java/com/craisinlord/antarchy/content/fire/AntarchyFireVisualAccess.java new file mode 100644 index 00000000..0697a60a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/fire/AntarchyFireVisualAccess.java @@ -0,0 +1,7 @@ +package com.craisinlord.antarchy.content.fire; + +public interface AntarchyFireVisualAccess { + AntarchyFireVisualType antarchy$getFireVisualType(); + + void antarchy$setFireVisualType(AntarchyFireVisualType type); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/fire/AntarchyFireVisualType.java b/common/src/main/java/com/craisinlord/antarchy/content/fire/AntarchyFireVisualType.java new file mode 100644 index 00000000..ba968066 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/fire/AntarchyFireVisualType.java @@ -0,0 +1,7 @@ +package com.craisinlord.antarchy.content.fire; + +public enum AntarchyFireVisualType { + NORMAL, + SOUL, + DREAM +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/fluid/AntiwaterLiquidBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/fluid/AntiwaterLiquidBlock.java new file mode 100644 index 00000000..04901c2a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/fluid/AntiwaterLiquidBlock.java @@ -0,0 +1,61 @@ +package com.craisinlord.antarchy.content.fluid; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FlowingFluid; + +public class AntiwaterLiquidBlock extends LiquidBlock { + public AntiwaterLiquidBlock(FlowingFluid fluid, BlockBehaviour.Properties properties) { + super(fluid, properties); + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { + super.onPlace(state, level, pos, oldState, movedByPiston); + scheduleCurrentAntiwaterTick(level, pos); + } + + @Override + protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, BlockPos neighborPos, boolean movedByPiston) { + super.neighborChanged(state, level, pos, neighborBlock, neighborPos, movedByPiston); + scheduleCurrentAntiwaterTick(level, pos); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + scheduleCurrentAntiwaterTick(level, pos); + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (!state.is(newState.getBlock())) { + scheduleDependentAntiwaterTicks(level, pos); + } + super.onRemove(state, level, pos, newState, movedByPiston); + } + + private void scheduleCurrentAntiwaterTick(LevelAccessor level, BlockPos pos) { + level.scheduleTick(pos, this.fluid, this.fluid.getTickDelay(level)); + } + + private void scheduleDependentAntiwaterTicks(LevelAccessor level, BlockPos pos) { + level.scheduleTick(pos.above(), this.fluid, this.fluid.getTickDelay(level)); + for (Direction direction : Direction.Plane.HORIZONTAL) { + level.scheduleTick(pos.relative(direction), this.fluid, this.fluid.getTickDelay(level)); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityAccess.java b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityAccess.java new file mode 100644 index 00000000..4fd8661e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityAccess.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.gravity; + +public interface AntarchyGravityAccess { + AntarchyGravityDirection antarchy$getGravityDirection(); + + AntarchyGravityDirection antarchy$getPrevGravityDirection(); + + boolean antarchy$isGravityForced(); + + int antarchy$getGravityTransitionDuration(); + + int antarchy$getGravityTransitionRemaining(); + + void antarchy$setGravityState(AntarchyGravityDirection direction, boolean forced, AntarchyGravityTransition transition); + + void antarchy$applySyncedGravityState( + AntarchyGravityDirection direction, + AntarchyGravityDirection previousDirection, + boolean forced, + int transitionDuration, + int transitionRemaining + ); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java new file mode 100644 index 00000000..6301b5bf --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java @@ -0,0 +1,109 @@ +package com.craisinlord.antarchy.content.gravity; + +import net.minecraft.world.entity.Entity; + +public final class AntarchyGravityApi { + public interface GravitySyncDispatcher { + void onGravityStateChanged(Entity entity); + } + + private static GravitySyncDispatcher syncDispatcher = entity -> { + }; + + private AntarchyGravityApi() { + } + + public static AntarchyGravityDirection getGravityDirection(Entity entity) { + return access(entity).antarchy$getGravityDirection(); + } + + public static AntarchyGravityDirection getPrevGravityDirection(Entity entity) { + return access(entity).antarchy$getPrevGravityDirection(); + } + + public static boolean isGravityForced(Entity entity) { + return access(entity).antarchy$isGravityForced(); + } + + public static boolean isGravityInverted(Entity entity) { + return getGravityDirection(entity).isInverted(); + } + + public static int getTransitionDuration(Entity entity) { + return access(entity).antarchy$getGravityTransitionDuration(); + } + + public static int getTransitionRemaining(Entity entity) { + return access(entity).antarchy$getGravityTransitionRemaining(); + } + + public static float getGravityFlipProgress(Entity entity, float partialTick) { + AntarchyGravityAccess access = access(entity); + AntarchyGravityDirection current = access.antarchy$getGravityDirection(); + AntarchyGravityDirection previous = access.antarchy$getPrevGravityDirection(); + int duration = access.antarchy$getGravityTransitionDuration(); + int remaining = access.antarchy$getGravityTransitionRemaining(); + if (duration <= 0 || current == previous) { + return current.isInverted() ? 1.0F : 0.0F; + } + + float elapsed = duration - remaining + partialTick; + float fraction = Math.max(0.0F, Math.min(1.0F, elapsed / duration)); + return previous.isInverted() ? 1.0F - fraction : fraction; + } + + public static void setGravityDirection(Entity entity, AntarchyGravityDirection direction) { + setGravityDirection(entity, direction, false, AntarchyGravityTransition.INSTANT); + } + + public static void setGravityDirection(Entity entity, AntarchyGravityDirection direction, AntarchyGravityTransition transition) { + setGravityDirection(entity, direction, false, transition); + } + + public static void setGravityDirection(Entity entity, AntarchyGravityDirection direction, boolean forced) { + setGravityDirection(entity, direction, forced, AntarchyGravityTransition.INSTANT); + } + + public static void setGravityDirection(Entity entity, AntarchyGravityDirection direction, boolean forced, AntarchyGravityTransition transition) { + access(entity).antarchy$setGravityState(direction, forced, transition); + } + + public static void setForcedGravityDirection(Entity entity, AntarchyGravityDirection direction) { + setForcedGravityDirection(entity, direction, AntarchyGravityTransition.INSTANT); + } + + public static void setForcedGravityDirection(Entity entity, AntarchyGravityDirection direction, AntarchyGravityTransition transition) { + access(entity).antarchy$setGravityState(direction, true, transition); + } + + public static void clearForcedGravity(Entity entity) { + access(entity).antarchy$setGravityState(AntarchyGravityDirection.DOWN, false, AntarchyGravityTransition.INSTANT); + } + + public static void applySyncedState( + Entity entity, + AntarchyGravityDirection direction, + AntarchyGravityDirection previousDirection, + boolean forced, + int transitionDuration, + int transitionRemaining + ) { + access(entity).antarchy$applySyncedGravityState(direction, previousDirection, forced, transitionDuration, transitionRemaining); + } + + public static void setSyncDispatcher(GravitySyncDispatcher dispatcher) { + syncDispatcher = dispatcher; + } + + public static void notifyGravityStateChanged(Entity entity) { + syncDispatcher.onGravityStateChanged(entity); + } + + private static AntarchyGravityAccess access(Entity entity) { + if (entity instanceof AntarchyGravityAccess access) { + return access; + } + + throw new IllegalStateException("Entity " + entity + " is missing Antarchy gravity state"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityDirection.java b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityDirection.java new file mode 100644 index 00000000..183d1489 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityDirection.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.content.gravity; + +import java.util.Optional; + +public enum AntarchyGravityDirection { + DOWN(0, "down", false), + UP(1, "up", true); + + private final int id; + private final String serializedName; + private final boolean inverted; + + AntarchyGravityDirection(int id, String serializedName, boolean inverted) { + this.id = id; + this.serializedName = serializedName; + this.inverted = inverted; + } + + public int getId() { + return this.id; + } + + public String getSerializedName() { + return this.serializedName; + } + + public boolean isInverted() { + return this.inverted; + } + + public static AntarchyGravityDirection byId(int id) { + return id == UP.id ? UP : DOWN; + } + + public static Optional parse(String value) { + for (AntarchyGravityDirection direction : values()) { + if (direction.serializedName.equalsIgnoreCase(value)) { + return Optional.of(direction); + } + } + + return Optional.empty(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityRotationUtil.java b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityRotationUtil.java new file mode 100644 index 00000000..1f6c6c3b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityRotationUtil.java @@ -0,0 +1,140 @@ +package com.craisinlord.antarchy.content.gravity; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +public final class AntarchyGravityRotationUtil { + private AntarchyGravityRotationUtil() { + } + + public static Vec3 vecWorldToPlayer(Vec3 vector, AntarchyGravityDirection direction) { + if (!direction.isInverted()) { + return vector; + } + + return new Vec3(-vector.x, -vector.y, vector.z); + } + + public static Vec3 vecWorldToPlayer(double x, double y, double z, AntarchyGravityDirection direction) { + return vecWorldToPlayer(new Vec3(x, y, z), direction); + } + + public static Vec3 vecPlayerToWorld(Vec3 vector, AntarchyGravityDirection direction) { + if (!direction.isInverted()) { + return vector; + } + + return new Vec3(-vector.x, -vector.y, vector.z); + } + + public static Vec3 vecPlayerToWorld(double x, double y, double z, AntarchyGravityDirection direction) { + return vecPlayerToWorld(new Vec3(x, y, z), direction); + } + + public static Vec3 maskPlayerToWorld(Vec3 vector, AntarchyGravityDirection direction) { + return vector; + } + + public static Vec3 getEyeOffset(Entity entity, double eyeHeight) { + return vecPlayerToWorld(new Vec3(0.0D, eyeHeight, 0.0D), AntarchyGravityApi.getGravityDirection(entity)); + } + + public static Vec3 getEyeOffset(Entity entity, double eyeHeight, float partialTick) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted() && AntarchyGravityApi.getGravityFlipProgress(entity, partialTick) <= 0.0F) { + return new Vec3(0.0D, eyeHeight, 0.0D); + } + + Vector3f offset = new Vector3f(0.0F, (float) eyeHeight, 0.0F); + offset.rotate(getWorldRotationQuaternion(entity, partialTick)); + return new Vec3(offset.x(), offset.y(), offset.z()); + } + + public static AABB boxPlayerToWorld(AABB box, AntarchyGravityDirection direction) { + if (!direction.isInverted()) { + return box; + } + + return new AABB( + vecPlayerToWorld(new Vec3(box.minX, box.minY, box.minZ), direction), + vecPlayerToWorld(new Vec3(box.maxX, box.maxY, box.maxZ), direction) + ); + } + + public static AABB boxWorldToPlayer(AABB box, AntarchyGravityDirection direction) { + if (!direction.isInverted()) { + return box; + } + + return new AABB( + vecWorldToPlayer(new Vec3(box.minX, box.minY, box.minZ), direction), + vecWorldToPlayer(new Vec3(box.maxX, box.maxY, box.maxZ), direction) + ); + } + + public static Quaternionf getWorldRotationQuaternion(Entity entity, float partialTick) { + return rotationAroundNegativeZ(180.0F * AntarchyGravityApi.getGravityFlipProgress(entity, partialTick)); + } + + public static Quaternionf getCameraRotationQuaternion(Entity entity, float partialTick) { + return rotationAroundNegativeZ(-180.0F * AntarchyGravityApi.getGravityFlipProgress(entity, partialTick)); + } + + public static Vec2 rotWorldToPlayer(float yaw, float pitch, AntarchyGravityDirection direction) { + Vec3 vector = vecWorldToPlayer(rotToVec(yaw, pitch), direction); + return vecToRot(vector); + } + + public static Vec2 rotPlayerToWorld(float yaw, float pitch, AntarchyGravityDirection direction) { + Vec3 vector = vecPlayerToWorld(rotToVec(yaw, pitch), direction); + return vecToRot(vector); + } + + public static Direction getGravityDownDirection(Entity entity) { + return AntarchyGravityApi.isGravityInverted(entity) ? Direction.UP : Direction.DOWN; + } + + public static BlockPos getSupportingBlockPos(Entity entity, double offset) { + Direction direction = getGravityDownDirection(entity); + Vec3 pos = entity.position().add( + direction.getStepX() * offset, + direction.getStepY() * offset, + direction.getStepZ() * offset + ); + return BlockPos.containing(pos); + } + + private static Quaternionf rotationAroundNegativeZ(float degrees) { + return new Quaternionf().fromAxisAngleDeg(0.0F, 0.0F, -1.0F, degrees); + } + + private static Vec3 rotToVec(float yaw, float pitch) { + double radPitch = pitch * 0.017453292F; + double radNegYaw = -yaw * 0.017453292F; + double cosNegYaw = Math.cos(radNegYaw); + double sinNegYaw = Math.sin(radNegYaw); + double cosPitch = Math.cos(radPitch); + double sinPitch = Math.sin(radPitch); + return new Vec3(sinNegYaw * cosPitch, -sinPitch, cosNegYaw * cosPitch); + } + + private static Vec2 vecToRot(Vec3 vector) { + double sinPitch = -vector.y; + double radPitch = Math.asin(sinPitch); + double cosPitch = Math.cos(radPitch); + double sinNegYaw = vector.x / cosPitch; + double cosNegYaw = Math.max(-1.0D, Math.min(1.0D, vector.z / cosPitch)); + double radNegYaw = Math.acos(cosNegYaw); + if (sinNegYaw < 0.0D) { + radNegYaw = Math.PI * 2.0D - radNegYaw; + } + + return new Vec2((float) (-radNegYaw / 0.017453292F), (float) (radPitch / 0.017453292F)); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityTransition.java b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityTransition.java new file mode 100644 index 00000000..b58f2bf7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityTransition.java @@ -0,0 +1,9 @@ +package com.craisinlord.antarchy.content.gravity; + +public record AntarchyGravityTransition(int durationTicks) { + public static final AntarchyGravityTransition INSTANT = new AntarchyGravityTransition(0); + + public AntarchyGravityTransition { + durationTicks = Math.max(0, durationTicks); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/gravity/GravityWalkNodeEvaluator.java b/common/src/main/java/com/craisinlord/antarchy/content/gravity/GravityWalkNodeEvaluator.java new file mode 100644 index 00000000..66f88121 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/gravity/GravityWalkNodeEvaluator.java @@ -0,0 +1,184 @@ +package com.craisinlord.antarchy.content.gravity; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.level.PathNavigationRegion; +import net.minecraft.world.level.pathfinder.Node; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.level.pathfinder.PathfindingContext; +import net.minecraft.world.level.pathfinder.WalkNodeEvaluator; + +public class GravityWalkNodeEvaluator extends WalkNodeEvaluator { + private static final Logger LOGGER = LoggerFactory.getLogger("Antarchy/Pathfinding"); + private static final int[][] INVERTED_NEIGHBOR_OFFSETS = { + {1, 0, 0}, + {-1, 0, 0}, + {0, 0, 1}, + {0, 0, -1}, + {1, 0, 1}, + {1, 0, -1}, + {-1, 0, 1}, + {-1, 0, -1}, + {0, 1, 0}, + {0, -1, 0} + }; + + private int antarchy$loggedPrepare; + private int antarchy$loggedGetStart; + private int antarchy$loggedPathType; + private int antarchy$loggedNeighbors; + + @Override + public void prepare(PathNavigationRegion sourceIn, Mob mob) { + super.prepare(sourceIn, mob); + this.antarchy$loggedPrepare = 0; + this.antarchy$loggedGetStart = 0; + this.antarchy$loggedPathType = 0; + this.antarchy$loggedNeighbors = 0; + + if (AntarchyGravityApi.isGravityInverted(mob)) { + LOGGER.debug( + "[Path] prepare inverted mob={} pos=({}, {}, {}) size=({}, {})", + mob.getClass().getSimpleName(), + Mth.floor(mob.getX()), + Mth.floor(mob.getY()), + Mth.floor(mob.getZ()), + mob.getBbWidth(), + mob.getBbHeight() + ); + } + } + + @Override + public void done() { + if (this.mob != null && AntarchyGravityApi.isGravityInverted(this.mob)) { + LOGGER.debug("[Path] done inverted mob={}", this.mob.getClass().getSimpleName()); + } + super.done(); + } + + @Override + public Node getStart() { + if (!AntarchyGravityApi.isGravityInverted(this.mob)) { + return super.getStart(); + } + + int x = Mth.floor(this.mob.getX()); + int z = Mth.floor(this.mob.getZ()); + int y = Mth.floor(this.mob.getY() + this.mob.getBbHeight()) - 1; + + Node node = this.getNode(x, y, z); + node.type = PathType.WALKABLE; + node.costMalus = this.mob.getPathfindingMalus(PathType.WALKABLE); + + if (this.antarchy$loggedGetStart < 8) { + LOGGER.debug( + "[Path] getStart inverted mob={} node=({}, {}, {}) type={} malus={}", + this.mob.getClass().getSimpleName(), + x, + y, + z, + node.type, + node.costMalus + ); + this.antarchy$loggedGetStart++; + } + + return node; + } + + @Override + public PathType getPathTypeOfMob(PathfindingContext context, int x, int y, int z, Mob mob) { + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return super.getPathTypeOfMob(context, x, y, z, mob); + } + + PathType ceilingType = this.getPathType(context, x, y + 1, z); + if (mob.getPathfindingMalus(ceilingType) >= 0.0F) { + return PathType.OPEN; + } + + PathType result = PathType.WALKABLE; + for (int dw = 0; dw < this.entityWidth; dw++) { + for (int dd = 0; dd < this.entityDepth; dd++) { + for (int dh = 0; dh < this.entityHeight; dh++) { + PathType type = this.getPathType(context, x + dw, y - dh, z + dd); + float malus = mob.getPathfindingMalus(type); + if (malus < 0.0F) { + return type; + } + if (malus >= mob.getPathfindingMalus(result)) { + result = type; + } + } + } + } + + if (this.antarchy$loggedPathType < 16) { + LOGGER.debug( + "[Path] type inverted mob={} pos=({}, {}, {}) ceiling={} result={}", + mob.getClass().getSimpleName(), + x, + y, + z, + ceilingType, + result + ); + this.antarchy$loggedPathType++; + } + + return result; + } + + @Override + public int getNeighbors(Node[] neighbors, Node current) { + if (!AntarchyGravityApi.isGravityInverted(this.mob)) { + return super.getNeighbors(neighbors, current); + } + + int count = 0; + for (int[] offset : INVERTED_NEIGHBOR_OFFSETS) { + count += this.antarchy$addNeighbor(neighbors, count, current.x + offset[0], current.y + offset[1], current.z + offset[2]); + } + + if (this.antarchy$loggedNeighbors < 16) { + LOGGER.debug( + "[Path] neighbors inverted mob={} node=({}, {}, {}) count={}", + this.mob.getClass().getSimpleName(), + current.x, + current.y, + current.z, + count + ); + this.antarchy$loggedNeighbors++; + } + + return count; + } + + private int antarchy$addNeighbor(Node[] neighbors, int index, int x, int y, int z) { + PathType type = this.getPathTypeOfMob(this.currentContext, x, y, z, this.mob); + if (this.mob.getPathfindingMalus(type) < 0.0F) { + if (this.antarchy$loggedNeighbors < 16) { + LOGGER.debug( + "[Path] reject mob={} pos=({}, {}, {}) type={} malus={}", + this.mob.getClass().getSimpleName(), + x, + y, + z, + type, + this.mob.getPathfindingMalus(type) + ); + } + return 0; + } + + Node node = this.getNode(x, y, z); + node.type = type; + node.costMalus = this.mob.getPathfindingMalus(type); + neighbors[index] = node; + return 1; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/AntimetalBlockItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/AntimetalBlockItem.java new file mode 100644 index 00000000..fc49d56a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/AntimetalBlockItem.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; + +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.block.Block; + +public class AntimetalBlockItem extends BlockItem { + public AntimetalBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.antimetal_inversion").withStyle(ChatFormatting.DARK_RED)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/AntimetalScaffoldingItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/AntimetalScaffoldingItem.java new file mode 100644 index 00000000..42c9cbd1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/AntimetalScaffoldingItem.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.item; + +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.block.Block; + +public class AntimetalScaffoldingItem extends BlockItem { + public AntimetalScaffoldingItem(Block block, Properties properties) { + super(block, properties); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BasiliskDaggerItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BasiliskDaggerItem.java new file mode 100644 index 00000000..98897336 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BasiliskDaggerItem.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public class BasiliskDaggerItem extends SwordItem { + private final Tier tier; + private final int attackDamage; + private final float attackSpeed; + + public BasiliskDaggerItem(Tier tier, Item.Properties properties, int attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes( + this.tier, + (int) Math.round(AntarchySettings.basiliskDaggerAttackDamage()), + (float) AntarchySettings.basiliskDaggerAttackSpeed() + ); + } + + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + boolean didHurt = super.hurtEnemy(stack, target, attacker); + if (didHurt && !target.level().isClientSide()) { + target.addEffect(new MobEffectInstance( + MobEffects.POISON, + AntarchySettings.basiliskDaggerPoisonDurationTicks(), + AntarchySettings.basiliskDaggerPoisonAmplifier() + )); + } + return didHurt; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BattleAxeItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BattleAxeItem.java new file mode 100644 index 00000000..9bea8321 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BattleAxeItem.java @@ -0,0 +1,72 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import java.util.function.Consumer; +import java.util.function.DoubleSupplier; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import software.bernie.geckolib.renderer.GeoItemRenderer; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class BattleAxeItem extends AxeItem implements GeoItem { + private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/battle_axe.geo.json"); + private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/item/battle_axe/battle_axe.png"); + private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/static_item.animation.json"); + private final Tier tier; + private final DoubleSupplier attackDamage; + private final float attackSpeed; + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public BattleAxeItem(Tier tier, Item.Properties properties, DoubleSupplier attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + GeoItem.registerSyncedAnimatable(this); + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return createAttributes(this.tier, (float) this.attackDamage.getAsDouble(), (float) AntarchySettings.battleAxeAttackSpeed()); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void createGeoRenderer(Consumer consumer) { + consumer.accept(new GeoRenderProvider() { + private AnimatedHeldItemRenderer renderer; + + @Override + public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { + if (this.renderer == null) { + this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(MODEL_LOCATION, TEXTURE_LOCATION, ANIMATION_LOCATION)); + } + + return this.renderer; + } + }); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java new file mode 100644 index 00000000..ce7d56a4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java @@ -0,0 +1,539 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import java.util.function.Consumer; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.entity.projectile.ProjectileUtil; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.LightningBolt; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import software.bernie.geckolib.renderer.GeoItemRenderer; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class BigBerthaItem extends SwordItem implements GeoItem { + private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/big_bertha.geo.json"); + private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/item/big_bertha/big_bertha.png"); + private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/static_item.animation.json"); + private static final String MODE_TAG = "antarchy.big_bertha_mode"; + private static final String SPIN_TICKS_TAG = "antarchy.big_bertha_spin_ticks"; + private static final String SPIN_DIRECTION_X_TAG = "antarchy.big_bertha_spin_direction_x"; + private static final String SPIN_DIRECTION_Z_TAG = "antarchy.big_bertha_spin_direction_z"; + private static final ResourceLocation ATTACK_RANGE_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "big_bertha_attack_range"); + private final Tier tier; + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public BigBerthaItem(Tier tier, Item.Properties properties) { + super(tier, properties); + this.tier = tier; + GeoItem.registerSyncedAnimatable(this); + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes( + this.tier, + (int) Math.round(AntarchySettings.bigBerthaAttackDamage()), + (float) AntarchySettings.bigBerthaAttackSpeed() + ).withModifierAdded( + Attributes.ENTITY_INTERACTION_RANGE, + new AttributeModifier(ATTACK_RANGE_MODIFIER_ID, AntarchySettings.bigBerthaReachBonus(), AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND + ); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + BossMode mode = getMode(stack); + tooltipComponents.add(Component.translatable("tooltip.antarchy.big_bertha.mode", Component.translatable(mode.translationKey)).withStyle(ChatFormatting.GOLD)); + tooltipComponents.add(Component.translatable(mode.tooltipKey).withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.big_bertha.toggle_mode").withStyle(ChatFormatting.DARK_GRAY)); + } + + public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) { + return slotChanged || !ItemStack.isSameItem(oldStack, newStack); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (player.isShiftKeyDown()) { + cycleMode(level, player, stack); + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + } + + BossMode mode = getMode(stack); + + if (mode == BossMode.BASILISK) { + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(stack); + } + applyBasiliskRightClick(level, player, stack); + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + } + + if (mode != BossMode.MOLEVORE) { + return InteractionResultHolder.pass(stack); + } + + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(stack); + } + + startMolevoreSpin(level, player, stack); + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + } + + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + boolean didHurt = super.hurtEnemy(stack, target, attacker); + if (!didHurt || attacker.level().isClientSide || !(attacker instanceof Player player) || player.getMainHandItem() != stack) { + return didHurt; + } + + if (!(attacker.level() instanceof ServerLevel serverLevel)) { + return didHurt; + } + + switch (getMode(stack)) { + case BASILISK -> applyBasiliskHit(target, serverLevel); + case LUCID -> applyLucidHit(target, player, serverLevel); + case NIGHTMARE -> applyNightmareHit(target, serverLevel); + case KRAKEN -> applyKrakenHit(player, target, serverLevel); + case MOLEVORE -> { + } + } + + return didHurt; + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + if (!(entity instanceof Player player)) { + return; + } + + int spinTicks = getSpinTicks(stack); + if (spinTicks <= 0) { + return; + } + + if (player.getMainHandItem() != stack) { + if (!level.isClientSide) { + clearSpinState(stack); + } + return; + } + + alignPlayerToSpinDirection(player, getStoredSpinDirection(stack)); + if (!level.isClientSide && player instanceof ServerPlayer serverPlayer) { + tickMolevoreSpin((ServerLevel) level, serverPlayer, stack, spinTicks); + } + } + + private void applyBasiliskRightClick(Level level, Player player, ItemStack stack) { + if (!level.isClientSide) { + double range = player.getAttributeValue(Attributes.ENTITY_INTERACTION_RANGE) + 1.0; + Vec3 eyePos = player.getEyePosition(); + Vec3 lookDir = player.getLookAngle(); + Vec3 endPos = eyePos.add(lookDir.scale(range)); + AABB searchBox = player.getBoundingBox().expandTowards(lookDir.scale(range)).inflate(1.0); + EntityHitResult hit = ProjectileUtil.getEntityHitResult( + player, eyePos, endPos, searchBox, + e -> e != player && !e.isSpectator() && e instanceof LivingEntity, + range * range); + if (hit != null && hit.getEntity() instanceof LivingEntity target) { + if (!target.getType().is(AntarchyTags.Entities.PARALYSIS_IMMUNE)) { + level.playSound(null, target.getX(), target.getY(), target.getZ(), + SoundEvents.SPIDER_AMBIENT, SoundSource.HOSTILE, 1.2F, 0.6F); + target.addEffect(new MobEffectInstance( + AntarchyObjects.PARALYZED_EFFECT.get(), + AntarchySettings.bigBerthaBasiliskParalyzeDurationTicks(), + 0, + false, + true, + true)); + } + } + } + int cooldownTicks = Math.round((float) (AntarchySettings.bigBerthaBasiliskCooldownSeconds() * 20)); + player.getCooldowns().addCooldown(this, cooldownTicks); + player.awardStat(Stats.ITEM_USED.get(this)); + } + + private void applyBasiliskHit(LivingEntity target, ServerLevel level) { + target.addEffect(new MobEffectInstance( + MobEffects.POISON, + AntarchySettings.basiliskDaggerPoisonDurationTicks(), + AntarchySettings.basiliskDaggerPoisonAmplifier() + )); + target.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 60, 0)); + level.sendParticles(ParticleTypes.SNEEZE, target.getX(), target.getY(0.7D), target.getZ(), 10, 0.25D, 0.2D, 0.25D, 0.02D); + } + + private void applyLucidHit(LivingEntity target, Player player, ServerLevel level) { + int effectDurationTicks = (int) Math.round(AntarchySettings.bigBerthaLucidInvertedDurationSeconds() * 20.0D); + if (effectDurationTicks > 0 + && LucidBoltEntity.invertedEffectSupplier != null + && !target.getType().is(AntarchyTags.Entities.INVERTED_IMMUNE)) { + target.addEffect(new MobEffectInstance( + LucidBoltEntity.invertedEffectSupplier.get(), + effectDurationTicks, + 0, + false, + true, + true)); + } + + level.sendParticles(ParticleTypes.PORTAL, target.getX(), target.getY(0.8D), target.getZ(), 12, 0.25D, 0.25D, 0.25D, 0.08D); + if (!AntarchyGravityApi.isGravityInverted(player)) { + return; + } + + double bonusPercent = AntarchySettings.bigBerthaLucidInvertedDamageBonusPercent(); + if (bonusPercent <= 0.0D) { + return; + } + + float bonusDamage = (float) (player.getAttributeValue(Attributes.ATTACK_DAMAGE) * (bonusPercent / 100.0D)); + if (bonusDamage <= 0.0F) { + return; + } + + target.hurt(player.damageSources().playerAttack(player), bonusDamage); + target.setDeltaMovement(target.getDeltaMovement().add(0.0D, 0.08D, 0.0D)); + target.hurtMarked = true; + } + + private void applyNightmareHit(LivingEntity target, ServerLevel level) { + if (target instanceof Player) { + target.addEffect(new MobEffectInstance(AntarchyObjects.DREAD.get(), AntarchySettings.nightmareDreadTicks(), 0)); + } + target.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, AntarchySettings.nightmareWeaknessTicks(), 0)); + level.sendParticles(ParticleTypes.SOUL_FIRE_FLAME, target.getX(), target.getY(0.8D), target.getZ(), 12, 0.3D, 0.3D, 0.3D, 0.01D); + level.sendParticles(ParticleTypes.SMOKE, target.getX(), target.getY(0.8D), target.getZ(), 6, 0.2D, 0.2D, 0.2D, 0.02D); + } + + private void applyKrakenHit(Player attacker, LivingEntity target, ServerLevel level) { + Vec3 push = target.position().subtract(attacker.position()).multiply(1.0D, 0.0D, 1.0D); + if (push.lengthSqr() < 1.0E-4D) { + push = attacker.getLookAngle().multiply(1.0D, 0.0D, 1.0D); + } + if (push.lengthSqr() >= 1.0E-4D) { + Vec3 normalized = push.normalize(); + target.setDeltaMovement(target.getDeltaMovement().add(normalized.x * 1.5D, 0.35D, normalized.z * 1.5D)); + target.hurtMarked = true; + } + + LightningBolt lightningBolt = new LightningBolt(net.minecraft.world.entity.EntityType.LIGHTNING_BOLT, level); + lightningBolt.moveTo(target.getX(), target.getY(), target.getZ()); + lightningBolt.setVisualOnly(true); + level.addFreshEntity(lightningBolt); + + target.hurt(attacker.damageSources().lightningBolt(), (float) AntarchySettings.krakenLightningDamagePhaseOne()); + target.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, AntarchySettings.bigBerthaKrakenSlowTicks(), 1)); + level.sendParticles(ParticleTypes.SPLASH, target.getX(), target.getY(0.7D), target.getZ(), 16, 0.35D, 0.3D, 0.35D, 0.08D); + level.sendParticles(ParticleTypes.ELECTRIC_SPARK, target.getX(), target.getY(0.7D), target.getZ(), 10, 0.25D, 0.25D, 0.25D, 0.02D); + } + + private void cycleMode(Level level, Player player, ItemStack stack) { + BossMode nextMode = getMode(stack).next(); + setMode(stack, nextMode); + clearSpinState(stack); + if (!level.isClientSide) { + player.displayClientMessage( + Component.translatable("message.antarchy.big_bertha.mode", Component.translatable(nextMode.translationKey)), + true + ); + } + } + + private void startMolevoreSpin(Level level, Player player, ItemStack stack) { + Vec3 direction = player.getLookAngle().multiply(1.0D, 0.0D, 1.0D); + if (direction.lengthSqr() < 1.0E-4D) { + direction = Vec3.directionFromRotation(0.0F, player.getYRot()).multiply(1.0D, 0.0D, 1.0D); + } + if (direction.lengthSqr() < 1.0E-4D) { + direction = new Vec3(0.0D, 0.0D, 1.0D); + } + + Vec3 normalized = direction.normalize(); + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { + tag.putInt(SPIN_TICKS_TAG, AntarchySettings.molevoreSpinTicks()); + tag.putDouble(SPIN_DIRECTION_X_TAG, normalized.x); + tag.putDouble(SPIN_DIRECTION_Z_TAG, normalized.z); + }); + + player.getCooldowns().addCooldown(this, AntarchySettings.molevoreCooldownTicks()); + player.awardStat(Stats.ITEM_USED.get(this)); + level.playSound(null, player.blockPosition(), AntarchySoundEvents.MOLEVORE_ATTACK.get(), SoundSource.PLAYERS, 1.0F, 0.9F); + if (!level.isClientSide) { + stack.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); + } + } + + private void tickMolevoreSpin(ServerLevel level, ServerPlayer player, ItemStack stack, int spinTicks) { + Vec3 direction = getStoredSpinDirection(stack); + double verticalBoost = player.onGround() ? 0.08D : Math.max(-0.08D, player.getDeltaMovement().y); + Vec3 motion = direction.scale(AntarchySettings.molevoreChargeSpeed()).add(0.0D, verticalBoost, 0.0D); + player.setDeltaMovement(motion); + player.hasImpulse = true; + player.hurtMarked = true; + player.fallDistance = 0.0F; + alignPlayerToSpinDirection(player, direction); + + if ((spinTicks & 1) == 0) { + dealSpinDamage(level, player, direction); + } + boolean brokeBlocks = breakDrillBlocks(level, player, direction); + if (player.horizontalCollision && !brokeBlocks) { + clearSpinState(stack); + return; + } + level.sendParticles(ParticleTypes.CLOUD, player.getX(), player.getY(0.35D), player.getZ(), 6, 0.35D, 0.1D, 0.35D, 0.01D); + level.sendParticles(ParticleTypes.CRIT, player.getX(), player.getY(0.7D), player.getZ(), 4, 0.25D, 0.2D, 0.25D, 0.02D); + + if (spinTicks <= 1) { + clearSpinState(stack); + return; + } + + setSpinTicks(stack, spinTicks - 1); + } + + private void dealSpinDamage(ServerLevel level, ServerPlayer player, Vec3 direction) { + AABB hitBox = player.getBoundingBox().inflate(0.7D).expandTowards(direction.scale(0.9D)); + float spinDamage = (float) (player.getAttributeValue(Attributes.ATTACK_DAMAGE) * 1.35D); + for (LivingEntity target : level.getEntitiesOfClass( + LivingEntity.class, + hitBox, + entity -> entity.isAlive() && entity != player && !entity.isSpectator() + )) { + if (!target.hurt(player.damageSources().playerAttack(player), spinDamage)) { + continue; + } + + target.push(direction.x * 1.1D, 0.3D, direction.z * 1.1D); + target.hurtMarked = true; + } + } + + private boolean breakDrillBlocks(ServerLevel level, ServerPlayer player, Vec3 direction) { + Vec3 forward = direction.normalize(); + Vec3 center = player.position() + .add(forward.scale(AntarchySettings.molevoreBreakRange() * 0.5D)) + .add(0.0D, player.getBbHeight() * 0.4D, 0.0D); + BlockPos min = BlockPos.containing( + center.x - AntarchySettings.molevoreBreakHalfWidth(), + center.y - AntarchySettings.molevoreBreakVerticalRange() * 0.5D, + center.z - AntarchySettings.molevoreBreakHalfWidth() + ); + BlockPos max = BlockPos.containing( + center.x + AntarchySettings.molevoreBreakHalfWidth(), + center.y + AntarchySettings.molevoreBreakVerticalRange() * 0.5D, + center.z + AntarchySettings.molevoreBreakHalfWidth() + ); + ItemStack stack = player.getMainHandItem(); + Vec3 horizontalForward = forward.multiply(1.0D, 0.0D, 1.0D); + boolean broke = false; + + for (BlockPos pos : BlockPos.betweenClosed(min, max)) { + BlockState state = level.getBlockState(pos); + if (!canDrillBlock(level, player, stack, pos, state)) { + continue; + } + + if (horizontalForward.lengthSqr() > 1.0E-4D) { + Vec3 toBlock = Vec3.atCenterOf(pos).subtract(player.position()).multiply(1.0D, 0.0D, 1.0D); + if (toBlock.lengthSqr() > 1.0E-4D && horizontalForward.normalize().dot(toBlock.normalize()) < -0.15D) { + continue; + } + } + + if (player.gameMode.destroyBlock(pos)) { + broke = true; + } + } + + return broke; + } + + private boolean canDrillBlock(ServerLevel level, ServerPlayer player, ItemStack stack, BlockPos pos, BlockState state) { + if (!level.isLoaded(pos) + || state.isAir() + || state.hasBlockEntity() + || state.getDestroySpeed(level, pos) < 0.0F + || !state.is(AntarchyTags.Blocks.MOLEVORE_BREAKABLE_BLOCKS) + || !player.mayUseItemAt(pos, Direction.UP, stack) + || player.blockActionRestricted(level, pos, player.gameMode.getGameModeForPlayer())) { + return false; + } + + return true; + } + + private void alignPlayerToSpinDirection(Player player, Vec3 direction) { + float yaw = (float)(Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90.0D); + player.setYRot(yaw); + player.setYHeadRot(yaw); + player.setYBodyRot(yaw); + } + + private static BossMode getMode(ItemStack stack) { + return BossMode.fromId(readInt(stack, MODE_TAG)); + } + + private static void setMode(ItemStack stack, BossMode mode) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { + if (mode == BossMode.BASILISK) { + tag.remove(MODE_TAG); + } else { + tag.putInt(MODE_TAG, mode.id); + } + }); + } + + private static int getSpinTicks(ItemStack stack) { + return Math.max(0, readInt(stack, SPIN_TICKS_TAG)); + } + + private static void setSpinTicks(ItemStack stack, int ticks) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { + if (ticks <= 0) { + tag.remove(SPIN_TICKS_TAG); + } else { + tag.putInt(SPIN_TICKS_TAG, ticks); + } + }); + } + + private static Vec3 getStoredSpinDirection(ItemStack stack) { + double x = readDouble(stack, SPIN_DIRECTION_X_TAG); + double z = readDouble(stack, SPIN_DIRECTION_Z_TAG); + Vec3 direction = new Vec3(x, 0.0D, z); + return direction.lengthSqr() < 1.0E-4D ? new Vec3(0.0D, 0.0D, 1.0D) : direction.normalize(); + } + + private static void clearSpinState(ItemStack stack) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { + tag.remove(SPIN_TICKS_TAG); + tag.remove(SPIN_DIRECTION_X_TAG); + tag.remove(SPIN_DIRECTION_Z_TAG); + }); + } + + private static int readInt(ItemStack stack, String tagName) { + return stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag().getInt(tagName); + } + + private static double readDouble(ItemStack stack, String tagName) { + return stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag().getDouble(tagName); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void createGeoRenderer(Consumer consumer) { + consumer.accept(new GeoRenderProvider() { + private AnimatedHeldItemRenderer renderer; + + @Override + public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { + if (this.renderer == null) { + this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(MODEL_LOCATION, TEXTURE_LOCATION, ANIMATION_LOCATION)); + } + + return this.renderer; + } + }); + } + + private enum BossMode { + BASILISK(0, "tooltip.antarchy.big_bertha.mode.basilisk", "message.antarchy.big_bertha.mode.basilisk"), + NIGHTMARE(1, "tooltip.antarchy.big_bertha.mode.nightmare", "message.antarchy.big_bertha.mode.nightmare"), + KRAKEN(2, "tooltip.antarchy.big_bertha.mode.kraken", "message.antarchy.big_bertha.mode.kraken"), + MOLEVORE(3, "tooltip.antarchy.big_bertha.mode.molevore", "message.antarchy.big_bertha.mode.molevore"), + LUCID(4, "tooltip.antarchy.big_bertha.mode.lucid", "message.antarchy.big_bertha.mode.lucid"); + + private final int id; + private final String tooltipKey; + private final String translationKey; + + BossMode(int id, String tooltipKey, String translationKey) { + this.id = id; + this.tooltipKey = tooltipKey; + this.translationKey = translationKey; + } + + private BossMode next() { + return switch (this) { + case BASILISK -> LUCID; + case LUCID -> NIGHTMARE; + case NIGHTMARE -> KRAKEN; + case KRAKEN -> MOLEVORE; + case MOLEVORE -> BASILISK; + }; + } + + private static BossMode fromId(int id) { + for (BossMode mode : values()) { + if (mode.id == id) { + return mode; + } + } + return BASILISK; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalAppleItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalAppleItem.java new file mode 100644 index 00000000..7ef42b72 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalAppleItem.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; + +public class BloodCrystalAppleItem extends Item { + public BloodCrystalAppleItem(Properties properties) { + super(properties); + } + + @Override + public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity entity) { + ItemStack result = super.finishUsingItem(stack, level, entity); + if (!level.isClientSide() && entity instanceof Player player) { + int amplifier = AntarchySettings.bloodCrystalAppleShieldCount() - 1; + int duration = AntarchySettings.bloodCrystalAppleDurationTicks(); + player.addEffect(new MobEffectInstance(AntarchyObjects.BLOODGLASS_WARD.get(), duration, amplifier, false, true, true)); + } + return result; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("item.antarchy.blood_crystal_apple.tooltip").withStyle(ChatFormatting.RED)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalArmorItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalArmorItem.java new file mode 100644 index 00000000..811ee14d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalArmorItem.java @@ -0,0 +1,94 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.Holder; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public class BloodCrystalArmorItem extends ArmorItem { + private final Type armorType; + + public BloodCrystalArmorItem(Holder material, Type type, Properties properties) { + super(material, type, properties.stacksTo(1).durability(resolveDurability(type))); + this.armorType = type; + } + + @Override + public int getDefense() { + return switch (this.armorType) { + case HELMET -> AntarchySettings.bloodCrystalHelmetDefense(); + case CHESTPLATE, BODY -> AntarchySettings.bloodCrystalChestplateDefense(); + case LEGGINGS -> AntarchySettings.bloodCrystalLeggingsDefense(); + case BOOTS -> AntarchySettings.bloodCrystalBootsDefense(); + }; + } + + @Override + public float getToughness() { + return (float) AntarchySettings.bloodCrystalArmorToughness(); + } + + private static int resolveDurability(Type type) { + return switch (type) { + case HELMET -> AntarchySettings.bloodCrystalHelmetDurability(); + case CHESTPLATE, BODY -> AntarchySettings.bloodCrystalChestplateDurability(); + case LEGGINGS -> AntarchySettings.bloodCrystalLeggingsDurability(); + case BOOTS -> AntarchySettings.bloodCrystalBootsDurability(); + }; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + String prefix = "blood_crystal_" + this.armorType.getName(); + ItemAttributeModifiers.Builder builder = ItemAttributeModifiers.builder() + .add( + Attributes.ARMOR, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(prefix + "_armor"), + getDefense(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ) + .add( + Attributes.ARMOR_TOUGHNESS, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(prefix + "_armor_toughness"), + getToughness(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ) + .add( + AntarchyObjects.BLOODGLASS_MAX_HEARTS.get(), + new AttributeModifier( + ResourceLocation.fromNamespaceAndPath("antarchy", prefix + "_bloodglass_max"), + 1.0, + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ); + return builder.build(); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("item.antarchy.blood_crystal_armor.tooltip").withStyle(ChatFormatting.RED)); + if (this.armorType == Type.BOOTS) { + tooltipComponents.add(Component.translatable("item.antarchy.blood_crystal_boots.tooltip2").withStyle(ChatFormatting.DARK_RED)); + } + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalKatanaItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalKatanaItem.java new file mode 100644 index 00000000..fd144d6b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalKatanaItem.java @@ -0,0 +1,73 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.phys.Vec3; +import com.craisinlord.antarchy.config.AntarchySettings; + +public class BloodCrystalKatanaItem extends SwordItem { + @FunctionalInterface + public interface TrailCallback { + void trigger(ServerPlayer player, int durationTicks); + } + + private static TrailCallback trailCallback = (player, durationTicks) -> {}; + + private final Tier tier; + private final int attackDamage; + private final float attackSpeed; + + public BloodCrystalKatanaItem(Tier tier, Item.Properties properties, int attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes(this.tier, this.attackDamage, this.attackSpeed); + } + + public static void setTrailCallback(TrailCallback callback) { + trailCallback = callback == null ? (player, durationTicks) -> {} : callback; + } + + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + boolean result = super.hurtEnemy(stack, target, attacker); + if (!(attacker instanceof ServerPlayer player)) { + return result; + } + + Vec3 look = player.getLookAngle(); + Vec3 horizontal = new Vec3(look.x, 0.0D, look.z); + if (horizontal.lengthSqr() < 1.0E-6D) { + horizontal = Vec3.directionFromRotation(0.0F, player.getYRot()); + } + + Vec3 launch = horizontal.normalize().scale(AntarchySettings.bloodCrystalKatanaLaunchStrength()) + .add(0.0D, 0.12D, 0.0D); + player.setDeltaMovement(player.getDeltaMovement().add(launch)); + player.hasImpulse = true; + player.hurtMarked = true; + trailCallback.trigger(player, AntarchySettings.bloodCrystalKatanaTrailDurationTicks()); + return result; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.blood_crystal_katana.launch").withStyle(ChatFormatting.RED)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.blood_crystal_katana.trail").withStyle(ChatFormatting.DARK_RED)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalShardItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalShardItem.java new file mode 100644 index 00000000..8ede5110 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BloodCrystalShardItem.java @@ -0,0 +1,63 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.bloodglass.BloodglassAccess; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import java.util.function.Consumer; + +public class BloodCrystalShardItem extends Item { + public static Consumer SYNC_BLOODGLASS = p -> {}; + + private static final int COOLDOWN_TICKS = 60; + + public BloodCrystalShardItem(Properties properties) { + super(properties); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + + if (level.isClientSide()) { + return InteractionResultHolder.success(stack); + } + + BloodglassAccess access = (BloodglassAccess) player; + int armorLost = access.antarchy$getArmorShieldLostCount(); + int appleLost = access.antarchy$getAppleShieldLostCount(); + + if (armorLost <= 0 && appleLost <= 0) { + return InteractionResultHolder.fail(stack); + } + + // Restore armor shields first, then apple shields + if (armorLost > 0) { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() + 1); + access.antarchy$setArmorShieldLostCount(armorLost - 1); + if (armorLost - 1 == 0) { + access.antarchy$setArmorRechargeTimer(0); + } + } else { + access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() + 1); + access.antarchy$setAppleShieldLostCount(appleLost - 1); + if (appleLost - 1 == 0) { + access.antarchy$setAppleRechargeTimer(0); + } + } + + player.getCooldowns().addCooldown(this, COOLDOWN_TICKS); + SYNC_BLOODGLASS.accept((ServerPlayer) player); + + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + + return InteractionResultHolder.success(stack); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BrutalflyElytraFlightHelper.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BrutalflyElytraFlightHelper.java new file mode 100644 index 00000000..6ec87e59 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BrutalflyElytraFlightHelper.java @@ -0,0 +1,76 @@ +package com.craisinlord.antarchy.content.item; + +import net.minecraft.util.Mth; + +public final class BrutalflyElytraFlightHelper { + public static final int FLAP_CHARGE_TICKS_MAX = 20; + public static final int IDEAL_RELEASE_TICK = 18; + public static final int PERFECT_WINDOW_TICKS = 2; + public static final int GOOD_WINDOW_TICKS = 5; + public static final int FLAP_COOLDOWN_TICKS = 12; + public static final float WEAK_LIFT = 0.12F; + public static final float BASE_LIFT = 0.25F; + public static final float GOOD_LIFT = 0.45F; + public static final float PERFECT_LIFT = 0.70F; + public static final float FORWARD_BOOST = 0.15F; + public static final float GOOD_FORWARD_BOOST = 0.25F; + public static final float PERFECT_FORWARD_BOOST = 0.35F; + public static final int ANIMATION_TICKS = 10; + + private BrutalflyElytraFlightHelper() { + } + + public static int clampChargeTicks(int chargeTicks) { + return Mth.clamp(chargeTicks, 0, FLAP_CHARGE_TICKS_MAX); + } + + public static FlapTier resolveFlapTier(int chargeTicks) { + if (chargeTicks <= 0) { + return FlapTier.FAIL; + } + + int clampedCharge = clampChargeTicks(chargeTicks); + int distance = Math.abs(clampedCharge - IDEAL_RELEASE_TICK); + if (distance <= PERFECT_WINDOW_TICKS) { + return FlapTier.PERFECT; + } + if (distance <= GOOD_WINDOW_TICKS) { + return FlapTier.GOOD; + } + return FlapTier.WEAK; + } + + public static float liftFor(FlapTier tier) { + return switch (tier) { + case PERFECT -> PERFECT_LIFT; + case GOOD -> GOOD_LIFT; + case WEAK -> BASE_LIFT; + case FAIL -> 0.0F; + }; + } + + public static float forwardBoostFor(FlapTier tier) { + return switch (tier) { + case PERFECT -> PERFECT_FORWARD_BOOST; + case GOOD -> GOOD_FORWARD_BOOST; + case WEAK -> FORWARD_BOOST; + case FAIL -> 0.0F; + }; + } + + public static int animationTicksFor(FlapTier tier) { + return switch (tier) { + case PERFECT -> ANIMATION_TICKS; + case GOOD -> 9; + case WEAK -> 7; + case FAIL -> 0; + }; + } + + public enum FlapTier { + FAIL, + WEAK, + GOOD, + PERFECT + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BrutalflyElytraItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BrutalflyElytraItem.java new file mode 100644 index 00000000..3ba3dcce --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BrutalflyElytraItem.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.Optional; +import java.util.List; +import java.util.function.Supplier; +import net.minecraft.ChatFormatting; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ElytraItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; + +public final class BrutalflyElytraItem extends ElytraItem { + private static final ResourceLocation REPAIR_MATERIAL_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "brutalfly_wing"); + + // Set by NeoForge client setup to return the actual bound key name + public static Supplier FLAP_KEY_NAME = () -> Component.literal("Shift"); + + public BrutalflyElytraItem(Properties properties) { + super(properties); + } + + public static boolean isWearingBrutalflyElytra(LivingEntity entity) { + return entity != null && entity.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof BrutalflyElytraItem; + } + + @Override + public boolean isValidRepairItem(ItemStack toRepair, ItemStack repair) { + Optional repairMaterial = BuiltInRegistries.ITEM.getOptional(REPAIR_MATERIAL_ID); + return repairMaterial.isPresent() && repair.is(repairMaterial.get()); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return 1; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, net.minecraft.world.item.TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.brutalfly_elytra.flap", FLAP_KEY_NAME.get()).withStyle(ChatFormatting.GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/CloudBucketItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/CloudBucketItem.java new file mode 100644 index 00000000..1f650c26 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/CloudBucketItem.java @@ -0,0 +1,86 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.Util; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +public final class CloudBucketItem extends BlockItem { + public CloudBucketItem(Block block, Properties properties) { + super(block, properties.stacksTo(1)); + } + + @Override + public String getDescriptionId() { + return Util.makeDescriptionId("item", BuiltInRegistries.ITEM.getKey(this)); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + Vec3 target = player.getEyePosition().add(player.getLookAngle().scale(2.0D)); + BlockPos placePos = BlockPos.containing(target); + + if (!level.getBlockState(placePos).canBeReplaced() || !player.mayUseItemAt(placePos, player.getDirection(), stack)) { + return InteractionResultHolder.pass(stack); + } + + BlockState placeState = getBlock().defaultBlockState(); + if (!level.isClientSide()) { + level.setBlock(placePos, placeState, 11); + level.playSound(null, placePos, placeState.getSoundType().getPlaceSound(), SoundSource.BLOCKS, 1.0F, 1.0F); + if (!player.getAbilities().instabuild) { + player.setItemInHand(hand, new ItemStack(Items.BUCKET)); + } + } + + return InteractionResultHolder.sidedSuccess(player.getItemInHand(hand), level.isClientSide()); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + Level level = context.getLevel(); + BlockPos clickedPos = context.getClickedPos(); + BlockPos placePos = level.getBlockState(clickedPos).canBeReplaced() ? clickedPos : clickedPos.relative(context.getClickedFace()); + Player player = context.getPlayer(); + + if (!level.getBlockState(placePos).canBeReplaced() || (player != null && !player.mayUseItemAt(placePos, context.getClickedFace(), context.getItemInHand()))) { + return InteractionResult.FAIL; + } + + BlockState placeState = getBlock().defaultBlockState(); + if (!level.isClientSide()) { + level.setBlock(placePos, placeState, 11); + level.playSound(null, placePos, placeState.getSoundType().getPlaceSound(), SoundSource.BLOCKS, 1.0F, 1.0F); + } + + if (player != null && !player.getAbilities().instabuild && !level.isClientSide()) { + player.setItemInHand(context.getHand(), new ItemStack(Items.BUCKET)); + } + + return InteractionResult.sidedSuccess(level.isClientSide()); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.cloud_bucket.midair").withStyle(ChatFormatting.GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/CloudSharkFinSoupItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/CloudSharkFinSoupItem.java new file mode 100644 index 00000000..8dc861a0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/CloudSharkFinSoupItem.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.item; + +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item.TooltipContext; +import net.minecraft.world.item.TooltipFlag; + +import java.util.List; + +public class CloudSharkFinSoupItem extends Item { + public CloudSharkFinSoupItem(Properties properties) { + super(properties); + } + + @Override + public void appendHoverText(ItemStack stack, TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.cloud_shark_fin_soup").withStyle(ChatFormatting.GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/CorneaEarItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/CorneaEarItem.java new file mode 100644 index 00000000..2f799797 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/CorneaEarItem.java @@ -0,0 +1,87 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.block.CorneaStalkBlock; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; + +public final class CorneaEarItem extends Item { + public CorneaEarItem(Properties properties) { + super(properties); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + Level level = context.getLevel(); + Direction clickedFace = context.getClickedFace(); + if (clickedFace != Direction.UP && clickedFace != Direction.DOWN) { + return InteractionResult.PASS; + } + + BlockPos supportPos = context.getClickedPos(); + BlockPos plantPos = supportPos.relative(clickedFace); + boolean hanging = clickedFace == Direction.DOWN; + BlockState supportState = level.getBlockState(supportPos); + if (!supportState.is(AntarchyTags.Blocks.CORNEA_STALK_PLANTABLE)) { + return InteractionResult.PASS; + } + + BlockState stalkState = BuiltInRegistries.BLOCK.getOptional(ResourceLocation.fromNamespaceAndPath("antarchy", "cornea_stalk")) + .map(block -> block.defaultBlockState().setValue(CorneaStalkBlock.HANGING, hanging)) + .orElse(Blocks.AIR.defaultBlockState()); + if (stalkState.isAir() || !level.getBlockState(plantPos).isAir() || !stalkState.canSurvive(level, plantPos)) { + return InteractionResult.FAIL; + } + + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + + level.setBlock(plantPos, stalkState, Block.UPDATE_ALL); + ItemStack stack = context.getItemInHand(); + Player player = context.getPlayer(); + if (player == null || !player.getAbilities().instabuild) { + stack.shrink(1); + } + if (player != null) { + player.awardStat(Stats.ITEM_USED.get(this)); + } + return InteractionResult.CONSUME; + } + + @Override + public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity livingEntity) { + ItemStack result = super.finishUsingItem(stack, level, livingEntity); + int durationTicks = Math.max(0, AntarchySettings.corneaEarNightVisionSeconds()) * 20; + if (!level.isClientSide && durationTicks > 0) { + livingEntity.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION, durationTicks, 0)); + } + return result; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.cornea_ear.vision", AntarchySettings.corneaEarNightVisionSeconds()).withStyle(ChatFormatting.DARK_GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/DiamondMinecartItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/DiamondMinecartItem.java new file mode 100644 index 00000000..a1b75f69 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/DiamondMinecartItem.java @@ -0,0 +1,82 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import java.util.function.Supplier; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseRailBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.RailBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.RailShape; +import net.minecraft.world.level.gameevent.GameEvent; + +public class DiamondMinecartItem extends Item { + private final Supplier> entityTypeSupplier; + + public DiamondMinecartItem(Supplier> entityTypeSupplier, Properties properties) { + super(properties); + this.entityTypeSupplier = entityTypeSupplier; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + Level level = context.getLevel(); + BlockPos clickedPos = context.getClickedPos(); + BlockState clickedState = level.getBlockState(clickedPos); + if (!BaseRailBlock.isRail(clickedState)) { + return InteractionResult.FAIL; + } + BlockPos cartPos = clickedPos; + + if (!(level instanceof ServerLevel serverLevel)) { + return InteractionResult.SUCCESS; + } + + ItemStack stack = context.getItemInHand(); + Player player = context.getPlayer(); + + BlockState railState = serverLevel.getBlockState(cartPos); + RailShape railShape = railState.getBlock() instanceof BaseRailBlock railBlock + ? railState.getValue(railBlock.getShapeProperty()) + : RailShape.NORTH_SOUTH; + double yOffset = railShape.isAscending() ? 0.5625D : 0.0625D; + + DiamondMinecartEntity minecart = new DiamondMinecartEntity( + this.entityTypeSupplier.get(), + serverLevel, + cartPos.getX() + 0.5D, + cartPos.getY() + yOffset, + cartPos.getZ() + 0.5D, + this + ); + if (stack.has(DataComponents.CUSTOM_NAME)) { + minecart.setCustomName(stack.getHoverName()); + } + + serverLevel.addFreshEntity(minecart); + level.gameEvent(GameEvent.ENTITY_PLACE, cartPos, GameEvent.Context.of(player, railState)); + if (player == null || !player.getAbilities().instabuild) { + stack.shrink(1); + } + return InteractionResult.CONSUME; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/DuctTapeBlockItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/DuctTapeBlockItem.java new file mode 100644 index 00000000..7be842c5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/DuctTapeBlockItem.java @@ -0,0 +1,84 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public class DuctTapeBlockItem extends BlockItem { + public DuctTapeBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("item.antarchy.duct_tape.tooltip")); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + @Override + public BlockPlaceContext updatePlacementContext(BlockPlaceContext context) { + BlockPlaceContext updatedContext = super.updatePlacementContext(context); + if (updatedContext == null) { + return null; + } + + Level level = updatedContext.getLevel(); + BlockPos clickedPos = updatedContext.getClickedPos(); + BlockState clickedState = level.getBlockState(clickedPos); + if (!clickedState.is(this.getBlock())) { + return updatedContext; + } + + for (Direction direction : getSpreadDirections(updatedContext)) { + BlockPos targetPos = clickedPos.relative(direction); + BlockState targetState = level.getBlockState(targetPos); + if (canSpreadTo(targetState)) { + return BlockPlaceContext.at(updatedContext, targetPos, updatedContext.getClickedFace()); + } + } + + return null; + } + + private boolean canSpreadTo(BlockState state) { + return !state.is(this.getBlock()) && (state.isAir() || state.canBeReplaced()); + } + + private Direction[] getSpreadDirections(BlockPlaceContext context) { + Direction preferredDirection = getPreferredDirection(context); + List directions = new ArrayList<>(4); + directions.add(preferredDirection); + directions.add(preferredDirection.getClockWise()); + directions.add(preferredDirection.getCounterClockWise()); + directions.add(preferredDirection.getOpposite()); + return directions.toArray(Direction[]::new); + } + + private Direction getPreferredDirection(BlockPlaceContext context) { + if (context.getClickedFace().getAxis().isHorizontal()) { + return context.getClickedFace(); + } + + Vec3 hitLocation = context.getClickLocation(); + BlockPos clickedPos = context.getClickedPos(); + double offsetX = hitLocation.x - (clickedPos.getX() + 0.5D); + double offsetZ = hitLocation.z - (clickedPos.getZ() + 0.5D); + if (Math.abs(offsetX) > Math.abs(offsetZ)) { + return offsetX >= 0.0D ? Direction.EAST : Direction.WEST; + } + + return offsetZ >= 0.0D ? Direction.SOUTH : Direction.NORTH; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/FallenKingCrownItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/FallenKingCrownItem.java new file mode 100644 index 00000000..0f23b5d0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/FallenKingCrownItem.java @@ -0,0 +1,64 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import net.minecraft.core.Holder; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public final class FallenKingCrownItem extends ArmorItem { + + public FallenKingCrownItem(Holder material, Properties properties) { + super(material, Type.HELMET, properties.stacksTo(1).durability(Type.HELMET.getDurability(7))); + } + + @Override + public int getDefense() { + return AntarchySettings.fallenKingCrownArmorValue(); + } + + @Override + public float getToughness() { + return (float) AntarchySettings.fallenKingCrownArmorToughness(); + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return ItemAttributeModifiers.builder() + .add( + Attributes.ARMOR, + new AttributeModifier( + ResourceLocation.withDefaultNamespace("fallen_king_crown_armor"), + getDefense(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(Type.HELMET.getSlot()) + ) + .add( + Attributes.ARMOR_TOUGHNESS, + new AttributeModifier( + ResourceLocation.withDefaultNamespace("fallen_king_crown_armor_toughness"), + getToughness(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(Type.HELMET.getSlot()) + ) + .build(); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.fallen_king_crown.hero").withStyle(ChatFormatting.GOLD)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/GravityGunItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/GravityGunItem.java new file mode 100644 index 00000000..ecdcd5aa --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/GravityGunItem.java @@ -0,0 +1,741 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import it.unimi.dsi.fastutil.longs.Long2BooleanMap; +import it.unimi.dsi.fastutil.longs.Long2BooleanOpenHashMap; +import it.unimi.dsi.fastutil.longs.Long2IntMap; +import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap; +import java.util.List; +import java.util.UUID; +import java.util.function.Consumer; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.ProjectileUtil; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DoublePlantBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.constant.DataTickets; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import software.bernie.geckolib.renderer.GeoItemRenderer; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class GravityGunItem extends Item implements GeoItem { + public static final String GRAVITY_GUN_CARRIED_BLOCK_TAG = "antarchy.gravity_gun_carried_block"; + private static final String LOOP_CONTROLLER = "loop_controller"; + private static final String TRANSITION_CONTROLLER = "transition_controller"; + private static final int TRANSITION_TICKS = 8; + private static final String OFF_ANIMATION = "off"; + private static final String ON_ANIMATION = "on"; + private static final String TOGGLE_ON_ANIMATION = "toggle_on"; + private static final String TOGGLE_OFF_ANIMATION = "toggle_off"; + private static final String HELD_TARGET_UUID_TAG = "antarchy.gravity_gun_held_target_uuid"; + private static final String HELD_DISTANCE_TAG = "antarchy.gravity_gun_held_distance"; + private static final double DEFAULT_HOLD_DISTANCE = 3.0D; + private static final double MIN_HOLD_DISTANCE = 1.5D; + private static final int HOLD_LOOP_INTERVAL_TICKS = 26; + private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/gravity_gun.geo.json"); + private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/models/item/gravity_gun.png"); + private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/gravity_gun.animation.json"); + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private final Long2BooleanMap animationActiveStates = new Long2BooleanOpenHashMap(); + private final Long2BooleanMap animationTransitionTargets = new Long2BooleanOpenHashMap(); + private final Long2IntMap animationTransitionTicks = new Long2IntOpenHashMap(); + private final Long2IntMap animationObservedLoopStates = new Long2IntOpenHashMap(); + private int holdLoopCooldown = 0; + + public GravityGunItem(Properties properties) { + super(properties); + GeoItem.registerSyncedAnimatable(this); + this.animationObservedLoopStates.defaultReturnValue(Integer.MIN_VALUE); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + ItemStack stack = player.getItemInHand(usedHand); + if (!AntarchySettings.gravityGunEnabled()) { + return InteractionResultHolder.fail(stack); + } + + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(stack); + } + + if (level.isClientSide) { + return InteractionResultHolder.consume(stack); + } + + ServerLevel serverLevel = (ServerLevel) level; + if (hasHeldTarget(stack)) { + if (releaseHeldTarget(serverLevel, player, stack, false)) { + finishAction(serverLevel, player, stack, usedHand); + return InteractionResultHolder.consume(stack); + } + } + + if (!tryCaptureEntity(serverLevel, player, stack)) { + return InteractionResultHolder.pass(stack); + } + + finishAction(serverLevel, player, stack, usedHand); + return InteractionResultHolder.consume(stack); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + Level level = context.getLevel(); + Player player = context.getPlayer(); + ItemStack stack = context.getItemInHand(); + if (!AntarchySettings.gravityGunEnabled()) { + return InteractionResult.FAIL; + } + + if (player == null) { + return InteractionResult.PASS; + } + + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResult.FAIL; + } + + if (!level.isClientSide) { + if (!tryCaptureBlock((ServerLevel) level, player, stack, context.getClickedPos())) { + return InteractionResult.PASS; + } + + finishAction((ServerLevel) level, player, stack, context.getHand()); + } + + return InteractionResult.CONSUME; + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + if (!(entity instanceof Player player)) { + return; + } + + long animatableId = level instanceof ServerLevel serverLevelForId + ? GeoItem.getOrAssignId(stack, serverLevelForId) + : GeoItem.getId(stack); + this.tickAnimationState(level, player, stack, animatableId); + + if (!(level instanceof ServerLevel serverLevel)) { + return; + } + + this.clearLegacyAnimationData(stack); + + UUID heldTargetId = getHeldTargetId(stack); + if (heldTargetId == null) { + return; + } + + if (!isStackInPlayerHands(player, stack)) { + releaseHeldTarget(serverLevel, player, stack, false); + return; + } + + Entity heldTarget = serverLevel.getEntity(heldTargetId); + if (heldTarget == null || !heldTarget.isAlive()) { + clearHeldTarget(stack); + this.holdLoopCooldown = 0; + return; + } + + maintainHeldTarget(serverLevel, player, stack, heldTarget); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(net.minecraft.network.chat.Component.translatable("tooltip.antarchy.gravity_gun.primary").withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(net.minecraft.network.chat.Component.translatable("tooltip.antarchy.gravity_gun.secondary").withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(net.minecraft.network.chat.Component.translatable("tooltip.antarchy.gravity_gun.scroll").withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(net.minecraft.network.chat.Component.translatable("tooltip.antarchy.gravity_gun.blacklist").withStyle(ChatFormatting.DARK_GRAY)); + } + + @Override + public UseAnim getUseAnimation(ItemStack stack) { + return UseAnim.NONE; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, LOOP_CONTROLLER, state -> { + ItemStack stack = state.getData(DataTickets.ITEMSTACK); + long animatableId = stack == null ? Long.MAX_VALUE : GeoItem.getId(stack); + if (animatableId != Long.MAX_VALUE && this.isAnimationTransitioning(animatableId)) { + this.observeLoopControllerState(animatableId, "transition_stop", stack); + return PlayState.STOP; + } + + boolean active = animatableId != Long.MAX_VALUE && this.isAnimationActive(animatableId); + this.observeLoopControllerState(animatableId, active ? ON_ANIMATION : OFF_ANIMATION, stack); + return state.setAndContinue(RawAnimation.begin().thenLoop(active ? ON_ANIMATION : OFF_ANIMATION)); + })); + controllers.add(new AnimationController<>(this, TRANSITION_CONTROLLER, state -> PlayState.STOP) + .triggerableAnim(TOGGLE_ON_ANIMATION, RawAnimation.begin().thenPlay(TOGGLE_ON_ANIMATION)) + .triggerableAnim(TOGGLE_OFF_ANIMATION, RawAnimation.begin().thenPlay(TOGGLE_OFF_ANIMATION))); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void createGeoRenderer(Consumer consumer) { + consumer.accept(new GeoRenderProvider() { + private AnimatedHeldItemRenderer renderer; + + @Override + public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { + if (this.renderer == null) { + this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(MODEL_LOCATION, TEXTURE_LOCATION, ANIMATION_LOCATION)); + } + + return this.renderer; + } + }); + } + + private boolean tryCaptureEntity(ServerLevel level, Player player, ItemStack stack) { + if (!AntarchySettings.gravityGunEntitiesEnabled() || hasHeldTarget(stack)) { + return false; + } + + EntityHitResult hitResult = findEntityTarget(level, player); + if (hitResult == null) { + return false; + } + + Entity target = hitResult.getEntity(); + if (!canCaptureEntity(target)) { + return false; + } + + setHeldTarget(stack, target.getUUID()); + setHeldDistance(stack, DEFAULT_HOLD_DISTANCE); + target.setDeltaMovement(Vec3.ZERO); + target.setNoGravity(true); + target.hurtMarked = true; + this.beginAnimationTransition(level, player, stack, GeoItem.getOrAssignId(stack, level), true); + playGravityGunSound(level, player, AntarchySoundEvents.GRAVITY_GUN_PICKUP.get(), 0.20F, 1.0F); + return true; + } + + private boolean tryCaptureBlock(ServerLevel level, Player player, ItemStack stack, BlockPos clickedPos) { + if (!AntarchySettings.gravityGunBlocksEnabled() || hasHeldTarget(stack)) { + return false; + } + + if (!level.isLoaded(clickedPos)) { + return false; + } + + CarriedBlockCapture capture = this.resolveCarriedBlockCapture(level, clickedPos); + if (capture == null || !canCaptureBlock(level, capture.basePos(), capture.baseState())) { + return false; + } + + BlockEntity blockEntity = level.getBlockEntity(capture.basePos()); + CompoundTag blockEntityData = null; + if (blockEntity != null) { + blockEntityData = blockEntity.saveWithId(level.registryAccess()); + level.removeBlockEntity(capture.basePos()); + } + + if (capture.upperPos() != null) { + level.removeBlock(capture.upperPos(), false); + } + + FallingBlockEntity fallingBlock = FallingBlockEntity.fall(level, capture.basePos(), capture.baseState()); + if (fallingBlock == null) { + return false; + } + + if (blockEntityData != null) { + fallingBlock.blockData = blockEntityData; + } + fallingBlock.addTag(GRAVITY_GUN_CARRIED_BLOCK_TAG); + + setHeldTarget(stack, fallingBlock.getUUID()); + setHeldDistance(stack, DEFAULT_HOLD_DISTANCE); + fallingBlock.setDeltaMovement(Vec3.ZERO); + fallingBlock.setNoGravity(true); + fallingBlock.setHurtsEntities(1.0F, 40); + fallingBlock.hurtMarked = true; + this.beginAnimationTransition(level, player, stack, GeoItem.getOrAssignId(stack, level), true); + playGravityGunSound(level, player, AntarchySoundEvents.GRAVITY_GUN_PICKUP.get(), 0.20F, 1.0F); + return true; + } + + private boolean throwHeldTarget(ServerLevel level, Player player, ItemStack stack) { + UUID heldTargetId = getHeldTargetId(stack); + if (heldTargetId == null) { + return false; + } + + Entity heldTarget = level.getEntity(heldTargetId); + if (heldTarget == null || !heldTarget.isAlive()) { + clearHeldTarget(stack); + return false; + } + + Vec3 launch = getLaunchVector(player).scale(AntarchySettings.gravityGunThrowStrength()); + heldTarget.setNoGravity(false); + heldTarget.setDeltaMovement(launch); + heldTarget.hurtMarked = true; + clearHeldTarget(stack); + this.beginAnimationTransition(level, player, stack, GeoItem.getOrAssignId(stack, level), false); + this.holdLoopCooldown = 0; + playGravityGunSound(level, player, AntarchySoundEvents.GRAVITY_GUN_LAUNCH.get(), 0.14F, 0.9F); + return true; + } + + public boolean firePrimary(ServerLevel level, Player player, ItemStack stack) { + if (!AntarchySettings.gravityGunEnabled() || player.getCooldowns().isOnCooldown(this) || player.getMainHandItem() != stack) { + return false; + } + + if (!throwHeldTarget(level, player, stack)) { + blastEntities(level, player, stack); + playGravityGunSound(level, player, AntarchySoundEvents.GRAVITY_GUN_DRYFIRE.get(), 0.16F, 1.0F); + } + + finishAction(level, player, stack, InteractionHand.MAIN_HAND); + return true; + } + + private void blastEntities(ServerLevel level, Player player, ItemStack stack) { + Vec3 look = getLaunchVector(player); + double range = AntarchySettings.gravityGunRange(); + AABB searchBox = player.getBoundingBox().inflate(range).expandTowards(look.scale(range)); + for (Entity target : level.getEntities(player, searchBox, entity -> canBlastEntity(player, stack, entity))) { + Vec3 away = target.position().subtract(player.position()).multiply(1.0D, 0.0D, 1.0D); + if (away.lengthSqr() < 1.0E-4D) { + away = look; + } + + double alignment = away.normalize().dot(look); + if (alignment < 0.15D) { + continue; + } + + double distance = Math.max(0.75D, target.distanceTo(player)); + Vec3 push = away.normalize().scale(AntarchySettings.gravityGunBlastStrength() / distance) + .add(0.0D, 0.22D, 0.0D); + target.setDeltaMovement(target.getDeltaMovement().add(push)); + target.hurtMarked = true; + } + } + + private void maintainHeldTarget(ServerLevel level, Player player, ItemStack stack, Entity heldTarget) { + Vec3 currentPosition = heldTarget.position(); + Vec3 holdPosition = player.getEyePosition().add(getHoldVector(player).scale(getHeldDistance(stack))); + Vec3 movement = holdPosition.subtract(currentPosition); + Vec2 holdRotation = getHoldRotation(player); + heldTarget.setNoGravity(true); + + // Snap back only when the held entity has drifted badly; otherwise drive it with + // velocity so the client can interpolate the motion smoothly between server updates. + if (movement.lengthSqr() > 16.0D) { + heldTarget.moveTo(holdPosition.x, holdPosition.y, holdPosition.z, holdRotation.x, holdRotation.y); + heldTarget.setDeltaMovement(Vec3.ZERO); + } else { + Vec3 holdVelocity = movement.scale(0.45D); + double maxSpeed = 1.35D; + if (holdVelocity.lengthSqr() > maxSpeed * maxSpeed) { + holdVelocity = holdVelocity.normalize().scale(maxSpeed); + } + heldTarget.setDeltaMovement(holdVelocity); + } + heldTarget.setYRot(holdRotation.x); + heldTarget.setXRot(holdRotation.y); + heldTarget.hurtMarked = true; + tickHoldLoopSound(level, player); + } + + private boolean releaseHeldTarget(ServerLevel level, Player player, ItemStack stack, boolean throwIt) { + UUID heldTargetId = getHeldTargetId(stack); + if (heldTargetId == null) { + return false; + } + + Entity heldTarget = level.getEntity(heldTargetId); + if (heldTarget != null) { + heldTarget.setNoGravity(false); + if (throwIt) { + heldTarget.setDeltaMovement(getLaunchVector(player).scale(AntarchySettings.gravityGunThrowStrength())); + heldTarget.hurtMarked = true; + } + } + + clearHeldTarget(stack); + this.beginAnimationTransition(level, player, stack, GeoItem.getOrAssignId(stack, level), false); + this.holdLoopCooldown = 0; + if (!throwIt) { + playGravityGunSound(level, player, AntarchySoundEvents.GRAVITY_GUN_DROP.get(), 0.18F, 1.0F); + } + return true; + } + + public static boolean adjustHeldDistance(ItemStack stack, double delta) { + if (!hasHeldTarget(stack)) { + return false; + } + + double currentDistance = getHeldDistance(stack); + double maxDistance = AntarchySettings.gravityGunMaxHoldDistance(); + double newDistance = Mth.clamp(currentDistance + delta, MIN_HOLD_DISTANCE, maxDistance); + if (Math.abs(newDistance - currentDistance) < 1.0E-4D) { + return false; + } + + setHeldDistance(stack, newDistance); + return true; + } + + private boolean canCaptureEntity(Entity entity) { + if (entity instanceof Player) { + return false; + } + + return !entity.getType().is(AntarchyTags.Entities.GRAVITY_GUN_BLACKLIST); + } + + private boolean canCaptureBlock(Level level, BlockPos pos, BlockState state) { + if (state.isAir() || state.is(AntarchyTags.Blocks.GRAVITY_GUN_BLACKLIST)) { + return false; + } + + if (state.getBlock() instanceof DoublePlantBlock) { + if (!state.hasProperty(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) + || state.getValue(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) != DoubleBlockHalf.LOWER) { + return false; + } + + BlockPos upperPos = pos.above(); + BlockState upperState = level.getBlockState(upperPos); + if (!upperState.is(state.getBlock()) + || !upperState.hasProperty(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) + || upperState.getValue(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) != DoubleBlockHalf.UPPER) { + return false; + } + } + + return state.getDestroySpeed(level, pos) >= 0.0F; + } + + private CarriedBlockCapture resolveCarriedBlockCapture(Level level, BlockPos clickedPos) { + BlockState clickedState = level.getBlockState(clickedPos); + if (!(clickedState.getBlock() instanceof DoublePlantBlock) + || !clickedState.hasProperty(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF)) { + return new CarriedBlockCapture(clickedPos, clickedState, null); + } + + DoubleBlockHalf half = clickedState.getValue(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF); + BlockPos basePos = half == DoubleBlockHalf.UPPER ? clickedPos.below() : clickedPos; + BlockPos upperPos = basePos.above(); + BlockState baseState = level.getBlockState(basePos); + BlockState upperState = level.getBlockState(upperPos); + if (!(baseState.getBlock() instanceof DoublePlantBlock) + || !baseState.is(clickedState.getBlock()) + || !baseState.hasProperty(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) + || baseState.getValue(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) != DoubleBlockHalf.LOWER + || !upperState.is(clickedState.getBlock()) + || !upperState.hasProperty(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) + || upperState.getValue(net.minecraft.world.level.block.state.properties.BlockStateProperties.DOUBLE_BLOCK_HALF) != DoubleBlockHalf.UPPER) { + return null; + } + + return new CarriedBlockCapture(basePos, baseState, upperPos); + } + + private boolean canBlastEntity(Player player, ItemStack stack, Entity entity) { + return entity.isAlive() + && entity != player + && entity != player.getVehicle() + && !entity.getUUID().equals(getHeldTargetId(stack)) + && !entity.getType().is(AntarchyTags.Entities.GRAVITY_GUN_BLACKLIST); + } + + private EntityHitResult findEntityTarget(ServerLevel level, Player player) { + Vec3 eyePosition = player.getEyePosition(); + Vec3 viewVector = player.getViewVector(1.0F); + double reach = AntarchySettings.gravityGunRange(); + Vec3 end = eyePosition.add(viewVector.scale(reach)); + AABB searchBox = player.getBoundingBox().expandTowards(viewVector.scale(reach)).inflate(1.0D); + return ProjectileUtil.getEntityHitResult( + level, + player, + eyePosition, + end, + searchBox, + entity -> entity.isPickable() && canCaptureEntity(entity) + ); + } + + private static boolean isStackInPlayerHands(Player player, ItemStack stack) { + return player.getMainHandItem() == stack || player.getOffhandItem() == stack; + } + + private static Vec3 getLaunchVector(Player player) { + Vec3 look = player.getViewVector(1.0F); + if (look.lengthSqr() < 1.0E-4D) { + look = getRawLookVector(player); + } + return look.lengthSqr() < 1.0E-4D ? getRawLookVector(player) : look.normalize(); + } + + private static Vec3 getHoldVector(Player player) { + Vec3 look = getRawLookVector(player); + if (!AntarchyGravityApi.isGravityInverted(player)) { + return look; + } + + return AntarchyGravityRotationUtil.vecWorldToPlayer(look, AntarchyGravityApi.getGravityDirection(player)); + } + + private static Vec3 getRawLookVector(Player player) { + Vec3 look = player.getLookAngle(); + return look.lengthSqr() < 1.0E-4D ? Vec3.directionFromRotation(player.getXRot(), player.getYRot()) : look.normalize(); + } + + private static Vec2 getHoldRotation(Player player) { + if (!AntarchyGravityApi.isGravityInverted(player)) { + return new Vec2(player.getYRot(), player.getXRot()); + } + + return AntarchyGravityRotationUtil.rotWorldToPlayer( + player.getYRot(), + player.getXRot(), + AntarchyGravityApi.getGravityDirection(player) + ); + } + + private static UUID getHeldTargetId(ItemStack stack) { + CompoundTag tag = stack.getOrDefault(DataComponents.CUSTOM_DATA, net.minecraft.world.item.component.CustomData.EMPTY).copyTag(); + return tag.hasUUID(HELD_TARGET_UUID_TAG) ? tag.getUUID(HELD_TARGET_UUID_TAG) : null; + } + + public static boolean hasHeldTarget(ItemStack stack) { + return getHeldTargetId(stack) != null; + } + + public static double getHeldDistance(ItemStack stack) { + CompoundTag tag = stack.getOrDefault(DataComponents.CUSTOM_DATA, net.minecraft.world.item.component.CustomData.EMPTY).copyTag(); + double maxDistance = Math.max(MIN_HOLD_DISTANCE, AntarchySettings.gravityGunMaxHoldDistance()); + if (!tag.contains(HELD_DISTANCE_TAG)) { + return Mth.clamp(DEFAULT_HOLD_DISTANCE, MIN_HOLD_DISTANCE, maxDistance); + } + + return Mth.clamp(tag.getDouble(HELD_DISTANCE_TAG), MIN_HOLD_DISTANCE, maxDistance); + } + + private static void setHeldTarget(ItemStack stack, UUID targetId) { + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putUUID(HELD_TARGET_UUID_TAG, targetId)); + } + + private static void setHeldDistance(ItemStack stack, double distance) { + double maxDistance = Math.max(MIN_HOLD_DISTANCE, AntarchySettings.gravityGunMaxHoldDistance()); + double clampedDistance = Mth.clamp(distance, MIN_HOLD_DISTANCE, maxDistance); + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putDouble(HELD_DISTANCE_TAG, clampedDistance)); + } + + private static void clearHeldTarget(ItemStack stack) { + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { + tag.remove(HELD_TARGET_UUID_TAG); + tag.remove(HELD_DISTANCE_TAG); + }); + } + + private boolean isAnimationActive(long animatableId) { + return this.animationActiveStates.get(animatableId); + } + + private void setAnimationActive(long animatableId, boolean active) { + if (active) { + this.animationActiveStates.put(animatableId, true); + } else { + this.animationActiveStates.remove(animatableId); + } + } + + private boolean isAnimationTransitioning(long animatableId) { + return this.getAnimationTransitionTicks(animatableId) > 0; + } + + private boolean getAnimationTransitionTarget(long animatableId) { + return this.animationTransitionTargets.get(animatableId); + } + + private void setAnimationTransitionTarget(long animatableId, boolean targetActive) { + this.animationTransitionTargets.put(animatableId, targetActive); + } + + private void clearAnimationTransitionTarget(long animatableId) { + this.animationTransitionTargets.remove(animatableId); + } + + private int getAnimationTransitionTicks(long animatableId) { + return Math.max(0, this.animationTransitionTicks.get(animatableId)); + } + + private void setAnimationTransitionTicks(long animatableId, int ticks) { + if (ticks > 0) { + this.animationTransitionTicks.put(animatableId, ticks); + } else { + this.animationTransitionTicks.remove(animatableId); + } + } + + private void finishAction(ServerLevel level, Player player, ItemStack stack, InteractionHand hand) { + stack.hurtAndBreak(1, player, hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); + player.awardStat(Stats.ITEM_USED.get(this)); + double cooldownSeconds = AntarchySettings.gravityGunCooldownSeconds(); + if (cooldownSeconds > 0.0D) { + player.getCooldowns().addCooldown(this, (int) (cooldownSeconds * 20.0D)); + } + } + + private void tickAnimationState(Level level, Player player, ItemStack stack, long animatableId) { + if (animatableId == Long.MAX_VALUE) { + return; + } + + int transitionTicks = this.getAnimationTransitionTicks(animatableId); + if (transitionTicks > 0) { + transitionTicks--; + this.setAnimationTransitionTicks(animatableId, transitionTicks); + if (transitionTicks == 0) { + this.setAnimationActive(animatableId, this.getAnimationTransitionTarget(animatableId)); + this.clearAnimationTransitionTarget(animatableId); + } + return; + } + + boolean hasHeldTarget = hasHeldTarget(stack); + boolean active = this.isAnimationActive(animatableId); + if (hasHeldTarget && !active) { + this.beginAnimationTransition(level, player, stack, animatableId, true); + } else if (!hasHeldTarget && active) { + this.beginAnimationTransition(level, player, stack, animatableId, false); + } else if (!hasHeldTarget) { + this.clearAnimationRuntimeState(animatableId); + } + } + + private void beginAnimationTransition(Level level, Player player, ItemStack stack, long animatableId, boolean targetActive) { + if (animatableId == Long.MAX_VALUE || this.getAnimationTransitionTicks(animatableId) > 0 || this.isAnimationActive(animatableId) == targetActive) { + return; + } + + this.setAnimationTransitionTarget(animatableId, targetActive); + this.setAnimationTransitionTicks(animatableId, TRANSITION_TICKS); + if (level instanceof ServerLevel) { + triggerAnim(player, animatableId, TRANSITION_CONTROLLER, targetActive ? TOGGLE_ON_ANIMATION : TOGGLE_OFF_ANIMATION); + } + } + + private void clearAnimationRuntimeState(long animatableId) { + this.animationActiveStates.remove(animatableId); + this.animationTransitionTargets.remove(animatableId); + this.animationTransitionTicks.remove(animatableId); + this.animationObservedLoopStates.remove(animatableId); + } + + private void clearLegacyAnimationData(ItemStack stack) { + CompoundTag tag = stack.getOrDefault(DataComponents.CUSTOM_DATA, net.minecraft.world.item.component.CustomData.EMPTY).copyTag(); + if (!tag.contains("antarchy.gravity_gun_anim_active") + && !tag.contains("antarchy.gravity_gun_anim_target_active") + && !tag.contains("antarchy.gravity_gun_anim_transition_ticks")) { + return; + } + + net.minecraft.world.item.component.CustomData.update(DataComponents.CUSTOM_DATA, stack, customData -> { + customData.remove("antarchy.gravity_gun_anim_active"); + customData.remove("antarchy.gravity_gun_anim_target_active"); + customData.remove("antarchy.gravity_gun_anim_transition_ticks"); + }); + } + + private void tickHoldLoopSound(ServerLevel level, Player player) { + if (this.holdLoopCooldown > 0) { + this.holdLoopCooldown--; + return; + } + + playGravityGunSound(level, player, AntarchySoundEvents.GRAVITY_GUN_HOLD_LOOP.get(), 0.06F, 0.95F + level.getRandom().nextFloat() * 0.1F); + this.holdLoopCooldown = HOLD_LOOP_INTERVAL_TICKS; + } + + private static void playGravityGunSound(Level level, Player player, SoundEvent sound, float volume, float pitch) { + level.playSound(null, player.getX(), player.getY(), player.getZ(), sound, SoundSource.PLAYERS, volume, pitch); + } + + private void observeLoopControllerState(long animatableId, String stateName, ItemStack stack) { + if (animatableId == Long.MAX_VALUE) { + return; + } + + int encodedState = this.encodeObservedLoopState(stateName); + if (this.animationObservedLoopStates.get(animatableId) == encodedState) { + return; + } + + this.animationObservedLoopStates.put(animatableId, encodedState); + } + + private int encodeObservedLoopState(String stateName) { + return switch (stateName) { + case OFF_ANIMATION -> 0; + case ON_ANIMATION -> 1; + case "transition_stop" -> 2; + default -> 3; + }; + } + + private record CarriedBlockCapture(BlockPos basePos, BlockState baseState, BlockPos upperPos) { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/LucidEyeItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/LucidEyeItem.java new file mode 100644 index 00000000..90e47855 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/LucidEyeItem.java @@ -0,0 +1,10 @@ +package com.craisinlord.antarchy.content.item; + +import net.minecraft.world.item.Item; + +public class LucidEyeItem extends Item { + + public LucidEyeItem(Properties properties) { + super(properties); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/LucidPearlItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/LucidPearlItem.java new file mode 100644 index 00000000..4bf6d7cc --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/LucidPearlItem.java @@ -0,0 +1,66 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; + +import java.util.List; +import java.util.function.Supplier; + +public class LucidPearlItem extends Item { + + private final Supplier> projectileType; + + public LucidPearlItem(Properties properties, + Supplier> projectileType) { + super(properties); + this.projectileType = projectileType; + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + ItemStack itemStack = player.getItemInHand(usedHand); + + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(itemStack); + } + + level.playSound(null, player.getX(), player.getY(), player.getZ(), + SoundEvents.ENDER_PEARL_THROW, SoundSource.NEUTRAL, + 0.5F, 0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F)); + + if (!level.isClientSide) { + LucidEyeProjectileEntity projectile = new LucidEyeProjectileEntity( + projectileType.get(), player, level); + projectile.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, 1.5F, 1.0F); + level.addFreshEntity(projectile); + + if (!player.getAbilities().instabuild) { + itemStack.shrink(1); + } + } + + player.awardStat(Stats.ITEM_USED.get(this)); + player.getCooldowns().addCooldown(this, 20); + + return InteractionResultHolder.consume(itemStack); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.lucid_pearl").withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.lucid_pearl.detail").withStyle(ChatFormatting.DARK_GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/MobComingSoonTooltipItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/MobComingSoonTooltipItem.java new file mode 100644 index 00000000..8f06036d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/MobComingSoonTooltipItem.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; + +public class MobComingSoonTooltipItem extends Item { + public MobComingSoonTooltipItem(Properties properties) { + super(properties); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.mob_coming_soon").withStyle(ChatFormatting.RED)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesCaveDetector.java b/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesCaveDetector.java new file mode 100644 index 00000000..4ac281e9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesCaveDetector.java @@ -0,0 +1,115 @@ +package com.craisinlord.antarchy.content.item; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; + +import java.util.ArrayDeque; +import java.util.HashSet; +import java.util.Queue; +import java.util.Set; + +/** + * Client-side cave finder for Moggles. + * + *

Every {@link #SCAN_INTERVAL} ticks, BFS-maps the player's current connected + * air space, then scans outward to find the nearest underground air pocket that + * is NOT part of that space. The result is stored in {@link #caveTarget} and + * read each tick by the particle renderer. + */ +public final class MogglesCaveDetector { + + private static final int SCAN_INTERVAL = 40; + /** How far to flood-fill the player's own air pocket before stopping. */ + private static final int PLAYER_SPACE_LIMIT = 8; + /** Search radius for the external cave scan. */ + private static final int SCAN_RADIUS = 20; + /** Minimum number of air neighbors a candidate block must have (filters tiny cracks). */ + private static final int MIN_AIR_NEIGHBORS = 2; + + private static volatile BlockPos caveTarget = null; + private static int cooldown = 0; + + private MogglesCaveDetector() {} + + public static BlockPos getCaveTarget() { + return caveTarget; + } + + /** Call once per client tick while Moggles are equipped. */ + public static void tick(Player player, Level level) { + if (--cooldown > 0) return; + cooldown = SCAN_INTERVAL; + caveTarget = scan(player, level); + } + + public static void clear() { + caveTarget = null; + cooldown = 0; + } + + private static BlockPos scan(Player player, Level level) { + BlockPos origin = player.blockPosition(); + + // BFS through air from the player's feet to map their current open space. + Set playerSpace = new HashSet<>(); + Queue queue = new ArrayDeque<>(); + + BlockPos eyePos = origin.above(); // also include the eye block + for (BlockPos seed : new BlockPos[]{origin, eyePos}) { + if (level.isLoaded(seed) && level.getBlockState(seed).isAir()) { + long key = seed.asLong(); + if (playerSpace.add(key)) queue.add(seed); + } + } + + while (!queue.isEmpty()) { + BlockPos pos = queue.poll(); + for (Direction dir : Direction.values()) { + BlockPos next = pos.relative(dir); + if (origin.distManhattan(next) > PLAYER_SPACE_LIMIT) continue; + long key = next.asLong(); + if (playerSpace.contains(key)) continue; + if (!level.isLoaded(next)) continue; + if (!level.getBlockState(next).isAir()) continue; + playerSpace.add(key); + queue.add(next); + } + } + + // Scan the wider radius for underground air NOT in the player's space. + BlockPos nearest = null; + double nearestDistSq = Double.MAX_VALUE; + int r = SCAN_RADIUS; + + for (int dx = -r; dx <= r; dx++) { + for (int dy = -r; dy <= r; dy++) { + for (int dz = -r; dz <= r; dz++) { + if (dx * dx + dy * dy + dz * dz > r * r) continue; + BlockPos pos = origin.offset(dx, dy, dz); + long key = pos.asLong(); + if (playerSpace.contains(key)) continue; + if (!level.isLoaded(pos)) continue; + if (!level.getBlockState(pos).isAir()) continue; + if (level.canSeeSky(pos)) continue; // ignore surface air + + int airNeighbors = 0; + for (Direction dir : Direction.values()) { + BlockPos n = pos.relative(dir); + if (level.isLoaded(n) && level.getBlockState(n).isAir()) airNeighbors++; + } + if (airNeighbors < MIN_AIR_NEIGHBORS) continue; + + double distSq = origin.distSqr(pos); + if (distSq < nearestDistSq) { + nearestDistSq = distSq; + nearest = pos.immutable(); + } + } + } + } + + return nearest; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesItem.java new file mode 100644 index 00000000..497e4f4d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesItem.java @@ -0,0 +1,56 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.Holder; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.network.chat.Component; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ArmorMaterials; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; + +public final class MogglesItem extends ArmorItem { + public MogglesItem(Properties properties) { + this(ArmorMaterials.GOLD, properties); + } + + public MogglesItem(Holder material, Properties properties) { + super(material, Type.HELMET, properties); + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + if (level.isClientSide || !(entity instanceof Player player)) { + return; + } + + if (player.getItemBySlot(EquipmentSlot.HEAD) != stack) { + return; + } + + if (level.canSeeSky(player.blockPosition())) { + return; + } + + MobEffectInstance existing = player.getEffect(MobEffects.NIGHT_VISION); + if (existing == null || existing.getDuration() <= 220) { + player.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION, 240, 0, true, false, true)); + } + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.moggles.reveal").withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.moggles.underground").withStyle(ChatFormatting.DARK_GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesLogic.java b/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesLogic.java new file mode 100644 index 00000000..966b1f3c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/MogglesLogic.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.player.Player; + +public final class MogglesLogic { + private MogglesLogic() {} + + public static boolean isWearingMoggles(Player player) { + return player.getItemBySlot(EquipmentSlot.HEAD).is(AntarchyObjects.MOGGLES.get()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/NightmareArmorItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/NightmareArmorItem.java new file mode 100644 index 00000000..e3c07ef3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/NightmareArmorItem.java @@ -0,0 +1,122 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import java.util.List; +import net.minecraft.core.Holder; +import net.minecraft.ChatFormatting; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public class NightmareArmorItem extends ArmorItem { + private final Type armorType; + + public NightmareArmorItem(Holder material, Type type, Properties properties) { + super(material, type, properties); + this.armorType = type; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + String prefix = "nightmare_" + this.armorType.getName(); + ItemAttributeModifiers.Builder builder = ItemAttributeModifiers.builder() + .add( + Attributes.ARMOR, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(prefix + "_armor"), + getDefense(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ) + .add( + Attributes.ARMOR_TOUGHNESS, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(prefix + "_armor_toughness"), + getToughness(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ); + + float knockbackResistance = (float) AntarchySettings.nightmareArmorKnockbackResistance(); + if (knockbackResistance > 0.0F) { + builder.add( + Attributes.KNOCKBACK_RESISTANCE, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(prefix + "_knockback_resistance"), + knockbackResistance, + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ); + } + + double doubleDamageChance = getDoubleDamageChance(); + if (doubleDamageChance > 0.0) { + builder.add( + AntarchyObjects.DOUBLE_DAMAGE_CHANCE.get(), + new AttributeModifier( + ResourceLocation.fromNamespaceAndPath("antarchy", prefix + "_double_damage_chance"), + doubleDamageChance, + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ); + } + + return builder.build(); + } + + private double getDoubleDamageChance() { + return switch (this.armorType) { + case HELMET -> AntarchySettings.nightmareHelmetDoubleDamageChance(); + case CHESTPLATE, BODY -> AntarchySettings.nightmareChestplateDoubleDamageChance(); + case LEGGINGS -> AntarchySettings.nightmareLeggingsDoubleDamageChance(); + case BOOTS -> AntarchySettings.nightmareBootsDoubleDamageChance(); + }; + } + + @Override + public int getDefense() { + return switch (this.armorType) { + case HELMET -> AntarchySettings.nightmareHelmetArmorValue(); + case CHESTPLATE, BODY -> AntarchySettings.nightmareChestplateArmorValue(); + case LEGGINGS -> AntarchySettings.nightmareLeggingsArmorValue(); + case BOOTS -> AntarchySettings.nightmareBootsArmorValue(); + }; + } + + @Override + public float getToughness() { + return (float) switch (this.armorType) { + case HELMET -> AntarchySettings.nightmareHelmetArmorToughness(); + case CHESTPLATE, BODY -> AntarchySettings.nightmareChestplateArmorToughness(); + case LEGGINGS -> AntarchySettings.nightmareLeggingsArmorToughness(); + case BOOTS -> AntarchySettings.nightmareBootsArmorToughness(); + }; + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + int pct = (int) Math.round(getDoubleDamageChance() * 100); + tooltipComponents.add(Component.translatable("tooltip.antarchy.nightmare_armor_double_damage", pct).withStyle(ChatFormatting.DARK_PURPLE)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.nightmare_armor_set_bonus").withStyle(ChatFormatting.DARK_RED)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/NightmareSwordItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/NightmareSwordItem.java new file mode 100644 index 00000000..48e09ec4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/NightmareSwordItem.java @@ -0,0 +1,43 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.TooltipFlag; + +public class NightmareSwordItem extends SwordItem { + private final Tier tier; + private final float attackSpeed; + + public NightmareSwordItem(Tier tier, Item.Properties properties, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes( + this.tier, + (int) Math.round(AntarchySettings.nightmareSwordBaseDamage()), + (float) AntarchySettings.nightmareSwordAttackSpeed() + ); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.nightmare_sword").withStyle(ChatFormatting.DARK_RED)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodBoatItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodBoatItem.java new file mode 100644 index 00000000..3f2830b3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodBoatItem.java @@ -0,0 +1,73 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.function.Predicate; + +import net.minecraft.server.level.ServerLevel; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySelector; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public abstract class OuranwoodBoatItem extends Item { + private static final Predicate ENTITY_PREDICATE = EntitySelector.NO_SPECTATORS.and(Entity::isPickable); + + protected OuranwoodBoatItem(Properties properties) { + super(properties); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + BlockHitResult hitResult = getPlayerPOVHitResult(level, player, ClipContext.Fluid.ANY); + if (hitResult.getType() == HitResult.Type.MISS) { + return InteractionResultHolder.pass(stack); + } + + Vec3 viewVector = player.getViewVector(1.0F); + for (Entity entity : level.getEntities(player, player.getBoundingBox().expandTowards(viewVector.scale(5.0D)).inflate(1.0D), ENTITY_PREDICATE)) { + if (entity.getBoundingBox().inflate(entity.getPickRadius()).contains(player.getEyePosition())) { + return InteractionResultHolder.pass(stack); + } + } + + if (hitResult.getType() != HitResult.Type.BLOCK) { + return InteractionResultHolder.pass(stack); + } + + Boat boat = this.createBoat(level, hitResult, stack, player); + boat.setYRot(player.getYRot()); + if (!level.noCollision(boat, boat.getBoundingBox())) { + return InteractionResultHolder.fail(stack); + } + + if (!level.isClientSide) { + level.addFreshEntity(boat); + level.gameEvent(player, GameEvent.ENTITY_PLACE, hitResult.getLocation()); + stack.consume(1, player); + } + + player.awardStat(Stats.ITEM_USED.get(this)); + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide()); + } + + protected abstract Boat createBoat(Level level, HitResult hitResult, ItemStack stack, Player player); + + protected void applyDefaultStackConfig(Level level, ItemStack stack, Player player, Boat boat) { + if (level instanceof ServerLevel serverLevel) { + EntityType.createDefaultStackConfig(serverLevel, stack, player).accept(boat); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodBoatOnlyItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodBoatOnlyItem.java new file mode 100644 index 00000000..6a16af7a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodBoatOnlyItem.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public class OuranwoodBoatOnlyItem extends OuranwoodBoatItem { + private final EntityType entityType; + + public OuranwoodBoatOnlyItem(EntityType entityType, Properties properties) { + super(properties); + this.entityType = entityType; + } + + @Override + protected Boat createBoat(Level level, HitResult hitResult, ItemStack stack, Player player) { + Vec3 pos = hitResult.getLocation(); + OuranwoodBoatEntity boat = new OuranwoodBoatEntity(this.entityType, level); + boat.setPos(pos.x, pos.y, pos.z); + boat.xo = pos.x; + boat.yo = pos.y; + boat.zo = pos.z; + this.applyDefaultStackConfig(level, stack, player, boat); + return boat; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodChestBoatItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodChestBoatItem.java new file mode 100644 index 00000000..822acbb9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/OuranwoodChestBoatItem.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +public class OuranwoodChestBoatItem extends OuranwoodBoatItem { + private final EntityType entityType; + + public OuranwoodChestBoatItem(EntityType entityType, Properties properties) { + super(properties); + this.entityType = entityType; + } + + @Override + protected Boat createBoat(Level level, HitResult hitResult, ItemStack stack, Player player) { + Vec3 pos = hitResult.getLocation(); + OuranwoodChestBoatEntity boat = new OuranwoodChestBoatEntity(this.entityType, level); + boat.setPos(pos.x, pos.y, pos.z); + boat.xo = pos.x; + boat.yo = pos.y; + boat.zo = pos.z; + this.applyDefaultStackConfig(level, stack, player, boat); + return boat; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/RainbowSugarItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/RainbowSugarItem.java new file mode 100644 index 00000000..8ebc470a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/RainbowSugarItem.java @@ -0,0 +1,52 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.entity.ant.AntTeleportHelper; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; + +public class RainbowSugarItem extends Item { + private static final String INFINITY_NAMESPACE = "infinity"; + private static final int NAUSEA_DURATION_TICKS = 100; + private static final int POISON_DURATION_TICKS = 80; + + public RainbowSugarItem(Properties properties) { + super(properties); + } + + @Override + public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity livingEntity) { + ItemStack result = super.finishUsingItem(stack, level, livingEntity); + + livingEntity.addEffect(new MobEffectInstance(MobEffects.CONFUSION, NAUSEA_DURATION_TICKS, 0)); + livingEntity.addEffect(new MobEffectInstance(MobEffects.POISON, POISON_DURATION_TICKS, 0)); + + if (!level.isClientSide && livingEntity instanceof ServerPlayer serverPlayer && isInInfinityDimension(serverPlayer.serverLevel())) { + ServerLevel returnLevel = AntTeleportHelper.resolveReturnDestinationLevel(serverPlayer); + var returnPos = AntTeleportHelper.getDestinationPosition(serverPlayer, returnLevel); + serverPlayer.teleportTo(returnLevel, returnPos.x, returnPos.y, returnPos.z, serverPlayer.getYRot(), serverPlayer.getXRot()); + serverPlayer.playSound(SoundEvents.ENDERMAN_TELEPORT, 1.0F, 1.0F); + } + + return result; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.rainbow_sugar").withStyle(ChatFormatting.LIGHT_PURPLE)); + } + + private static boolean isInInfinityDimension(ServerLevel level) { + return INFINITY_NAMESPACE.equals(level.dimension().location().getNamespace()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ReverieBottleItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ReverieBottleItem.java new file mode 100644 index 00000000..7daeca49 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ReverieBottleItem.java @@ -0,0 +1,186 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; + +public class ReverieBottleItem extends Item { + private static final String STORED_REVERIE_TAG = "StoredReverie"; + + public ReverieBottleItem(Properties properties) { + super(properties); + } + + @Override + public ItemStack getDefaultInstance() { + ItemStack stack = super.getDefaultInstance(); + this.writeDefaultReverieData(stack); + return stack; + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + this.ensureStoredReverie(stack); + + if (level.isClientSide) { + return InteractionResultHolder.success(stack); + } + + if (!(level instanceof ServerLevel serverLevel)) { + return InteractionResultHolder.pass(stack); + } + + if (!this.releaseReverie(serverLevel, player, stack, hand)) { + return InteractionResultHolder.fail(stack); + } + + return InteractionResultHolder.consume(player.getItemInHand(hand)); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + ItemStack stack = context.getItemInHand(); + Player player = context.getPlayer(); + if (player == null) { + return InteractionResult.PASS; + } + + this.ensureStoredReverie(stack); + + if (context.getLevel().isClientSide) { + return InteractionResult.SUCCESS; + } + + if (!(context.getLevel() instanceof ServerLevel serverLevel)) { + return InteractionResult.PASS; + } + + return this.releaseReverie(serverLevel, player, stack, context.getHand()) + ? InteractionResult.CONSUME + : InteractionResult.FAIL; + } + + @Override + public InteractionResult interactLivingEntity(ItemStack stack, Player player, LivingEntity target, InteractionHand hand) { + this.ensureStoredReverie(stack); + + if (player.level().isClientSide) { + return InteractionResult.SUCCESS; + } + + if (!(player.level() instanceof ServerLevel serverLevel)) { + return InteractionResult.PASS; + } + + return this.releaseReverie(serverLevel, player, stack, hand) + ? InteractionResult.CONSUME + : InteractionResult.FAIL; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.reverie_bottle.capture").withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.reverie_bottle.release").withStyle(ChatFormatting.DARK_GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + private boolean releaseReverie(ServerLevel serverLevel, Player player, ItemStack stack, InteractionHand hand) { + CompoundTag entityTag = this.getStoredReverieTag(stack); + if (entityTag == null) { + return false; + } + + ReverieEntity reverie = AntarchyObjects.REVERIE.get().create(serverLevel); + if (reverie == null) { + return false; + } + + reverie.readAdditionalSaveData(entityTag); + Vec3 spawnPos = player.position().add(player.getLookAngle().scale(1.25D)).add(0.0D, 0.15D, 0.0D); + reverie.moveTo(spawnPos.x, spawnPos.y, spawnPos.z, player.getYRot(), player.getXRot()); + reverie.setDeltaMovement(player.getDeltaMovement().scale(0.25D)); + if (stack.has(DataComponents.CUSTOM_NAME)) { + reverie.setCustomName(stack.getHoverName()); + } + + serverLevel.addFreshEntity(reverie); + serverLevel.playSound(null, player.blockPosition(), SoundEvents.BOTTLE_EMPTY, SoundSource.PLAYERS, 1.0F, 1.0F); + player.awardStat(net.minecraft.stats.Stats.ITEM_USED.get(this)); + this.clearStoredReverie(stack); + this.returnGlassBottle(player, stack, hand); + return true; + } + + private void returnGlassBottle(Player player, ItemStack stack, InteractionHand hand) { + if (player.getAbilities().instabuild) { + player.setItemInHand(hand, new ItemStack(Items.GLASS_BOTTLE)); + return; + } + + ItemStack glassBottle = new ItemStack(Items.GLASS_BOTTLE); + if (stack.getCount() <= 1) { + player.setItemInHand(hand, glassBottle); + return; + } + + stack.shrink(1); + if (!player.getInventory().add(glassBottle)) { + player.drop(glassBottle, false); + } + } + + private boolean hasStoredReverie(ItemStack stack) { + return this.getStoredReverieTag(stack) != null; + } + + private CompoundTag getStoredReverieTag(ItemStack stack) { + CustomData customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY); + CompoundTag tag = customData.copyTag(); + if (!tag.contains(STORED_REVERIE_TAG, Tag.TAG_COMPOUND)) { + return null; + } + return tag.getCompound(STORED_REVERIE_TAG).copy(); + } + + private void ensureStoredReverie(ItemStack stack) { + if (this.hasStoredReverie(stack)) { + return; + } + + this.writeDefaultReverieData(stack); + } + + private void clearStoredReverie(ItemStack stack) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.remove(STORED_REVERIE_TAG)); + } + + private void writeDefaultReverieData(ItemStack stack) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { + if (!tag.contains(STORED_REVERIE_TAG, Tag.TAG_COMPOUND)) { + tag.put(STORED_REVERIE_TAG, new CompoundTag()); + } + }); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipItem.java new file mode 100644 index 00000000..8acebf5d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipItem.java @@ -0,0 +1,85 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.level.Level; +import net.minecraft.core.particles.ParticleTypes; + +public final class ScorpionWhipItem extends SwordItem { + private static final ResourceLocation ATTACK_RANGE_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "scorpion_whip_attack_range"); + private final Tier tier; + + public ScorpionWhipItem(Tier tier, Item.Properties properties) { + super(tier, properties); + this.tier = tier; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes( + this.tier, + (int) Math.round(AntarchySettings.scorpionWhipBaseDamage()), + -2.6F + ).withModifierAdded( + Attributes.ENTITY_INTERACTION_RANGE, + new AttributeModifier(ATTACK_RANGE_MODIFIER_ID, AntarchySettings.scorpionWhipReachBonus(), AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND + ); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (!(player instanceof ServerPlayer serverPlayer)) { + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide()); + } + + boolean pulled = ScorpionWhipTetherManager.pullAndDetach(serverPlayer); + return pulled ? InteractionResultHolder.sidedSuccess(stack, false) : InteractionResultHolder.pass(stack); + } + + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + boolean didHurt = super.hurtEnemy(stack, target, attacker); + if (!didHurt || target.level().isClientSide() || !(attacker instanceof ServerPlayer serverPlayer)) { + return didHurt; + } + + target.addEffect(new MobEffectInstance(MobEffects.POISON, AntarchySettings.scorpionWhipPoisonDurationTicks(), 0)); + if (!ScorpionWhipTetherManager.hasTether(serverPlayer) && ScorpionWhipTetherManager.canTether(target)) { + ScorpionWhipTetherManager.attach(serverPlayer, target); + ServerLevel level = serverPlayer.serverLevel(); + level.sendParticles(ParticleTypes.CRIT, target.getX(), target.getY(0.5D), target.getZ(), 6, 0.2D, 0.2D, 0.2D, 0.0D); + level.playSound(null, target.blockPosition(), net.minecraft.sounds.SoundEvents.FISHING_BOBBER_THROW, SoundSource.PLAYERS, 0.8F, 0.65F); + } + return true; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.scorpion_whip.lash").withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.scorpion_whip.reel").withStyle(ChatFormatting.DARK_GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipTetherManager.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipTetherManager.java new file mode 100644 index 00000000..a38382be --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipTetherManager.java @@ -0,0 +1,191 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.phys.Vec3; + +public final class ScorpionWhipTetherManager { + private static final int DEFAULT_TETHER_DURATION_TICKS = 200; + private static final double BREAK_RANGE_MULTIPLIER = 3.0D; + private static final Map TETHERS = new ConcurrentHashMap<>(); + + private ScorpionWhipTetherManager() { + } + + public static boolean hasTether(Player player) { + return TETHERS.containsKey(player.getUUID()); + } + + public static boolean isTetheredTo(Player player, Entity entity) { + TetherState state = TETHERS.get(player.getUUID()); + return state != null && entity.getUUID().equals(state.targetUuid); + } + + public static Entity getTarget(ServerPlayer player) { + TetherState state = TETHERS.get(player.getUUID()); + return state == null ? null : player.serverLevel().getEntity(state.targetUuid); + } + + public static boolean canTether(LivingEntity target) { + return !(target instanceof Player) + && !target.getType().is(AntarchyTags.Entities.SCORPION_WHIP_BLACKLIST) + && !target.getType().is(AntarchyTags.Entities.SCORPION_WHIP_IMMUNE); + } + + public static void attach(ServerPlayer player, LivingEntity target) { + clear(player); + TetherState state = new TetherState(target.getUUID()); + state.marked = target.hasEffect(MobEffects.POISON); + TETHERS.put(player.getUUID(), state); + ScorpionWhipTetherSync.send(player, target.getId()); + } + + public static void clear(ServerPlayer player) { + TetherState removed = TETHERS.remove(player.getUUID()); + if (removed == null) { + return; + } + ScorpionWhipTetherSync.send(player, -1); + } + + public static boolean pullAndDetach(ServerPlayer player) { + TetherState state = TETHERS.get(player.getUUID()); + if (state == null) { + return false; + } + + Entity targetEntity = player.serverLevel().getEntity(state.targetUuid); + if (!(targetEntity instanceof LivingEntity target) || !isValid(player, target, state)) { + clear(player); + return false; + } + + Vec3 toPlayer = player.position().subtract(target.position()); + double distance = toPlayer.length(); + if (distance < 0.001D) { + return false; + } + + Vec3 direction = toPlayer.scale(1.0D / distance); + boolean heavy = isHeavy(target); + double pullStrength = heavy ? AntarchySettings.scorpionWhipHeavyPullMultiplier() : AntarchySettings.scorpionWhipPullStrength(); + Vec3 targetVelocity = target.getDeltaMovement().add(direction.scale(pullStrength)); + targetVelocity = new Vec3(targetVelocity.x, Mth.clamp(targetVelocity.y + 0.08D, -0.35D, 0.35D), targetVelocity.z); + target.setDeltaMovement(targetVelocity); + target.hurtMarked = true; + + if (heavy) { + Vec3 playerVelocity = player.getDeltaMovement().add(direction.scale(-AntarchySettings.scorpionWhipSelfPullMultiplier())); + player.setDeltaMovement(playerVelocity.x, Mth.clamp(playerVelocity.y + 0.04D, -0.35D, 0.35D), playerVelocity.z); + player.hurtMarked = true; + } + + double damage = AntarchySettings.scorpionWhipSnapBonusDamage(); + if (state.marked) { + damage += Math.max(2.0D, AntarchySettings.scorpionWhipSnapBonusDamage() * 0.25D); + } + target.hurt(player.damageSources().playerAttack(player), (float) damage); + + Vec3 ripBack = direction.scale(-0.4D); + target.setDeltaMovement(target.getDeltaMovement().add(ripBack.x, 0.12D, ripBack.z)); + target.hurtMarked = true; + + player.level().playSound(null, player.blockPosition(), SoundEvents.FISHING_BOBBER_RETRIEVE, SoundSource.PLAYERS, 0.85F, 0.7F); + clear(player); + return true; + } + + public static void tick(ServerPlayer player) { + TetherState state = TETHERS.get(player.getUUID()); + if (state == null) { + return; + } + + state.remainingTicks--; + + Entity targetEntity = player.serverLevel().getEntity(state.targetUuid); + if (!(targetEntity instanceof LivingEntity target) || !isValid(player, target, state)) { + clear(player); + return; + } + + applyTautTether(player, target); + + if (state.remainingTicks % 20 == 0) { + ScorpionWhipTetherSync.send(player, targetEntity.getId()); + } + } + + private static boolean isValid(ServerPlayer player, LivingEntity target, TetherState state) { + double maxRange = AntarchySettings.scorpionWhipTetherMaxRange(); + double breakRange = maxRange * BREAK_RANGE_MULTIPLIER; + return player.isAlive() + && target.isAlive() + && !target.isRemoved() + && player.level() == target.level() + && state.remainingTicks > 0 + && isHoldingWhip(player) + && player.distanceToSqr(target) <= breakRange * breakRange + && !target.getType().is(AntarchyTags.Entities.SCORPION_WHIP_IMMUNE) + && !target.getType().is(AntarchyTags.Entities.SCORPION_WHIP_BLACKLIST); + } + + private static void applyTautTether(ServerPlayer player, LivingEntity target) { + double maxRange = AntarchySettings.scorpionWhipTetherMaxRange(); + Vec3 toPlayer = player.position().subtract(target.position()); + double distance = toPlayer.length(); + if (distance <= maxRange || distance < 0.001D) { + return; + } + + Vec3 direction = toPlayer.scale(1.0D / distance); + double overshoot = distance - maxRange; + boolean heavy = isHeavy(target); + double pullStrength = heavy + ? AntarchySettings.scorpionWhipHeavyPullMultiplier() + : AntarchySettings.scorpionWhipPullStrength(); + double leashPull = Mth.clamp(overshoot * 0.18D, 0.08D, pullStrength); + + Vec3 targetVelocity = target.getDeltaMovement().add(direction.scale(leashPull)); + targetVelocity = new Vec3(targetVelocity.x, Mth.clamp(targetVelocity.y + 0.04D, -0.3D, 0.3D), targetVelocity.z); + target.setDeltaMovement(targetVelocity); + target.hurtMarked = true; + + if (heavy) { + Vec3 playerVelocity = player.getDeltaMovement().add(direction.scale(-AntarchySettings.scorpionWhipSelfPullMultiplier() * 0.5D)); + player.setDeltaMovement(playerVelocity.x, Mth.clamp(playerVelocity.y + 0.02D, -0.3D, 0.3D), playerVelocity.z); + player.hurtMarked = true; + } + } + + private static boolean isHoldingWhip(Player player) { + return player.getMainHandItem().getItem() instanceof ScorpionWhipItem + || player.getOffhandItem().getItem() instanceof ScorpionWhipItem; + } + + private static boolean isHeavy(LivingEntity target) { + return target.getMaxHealth() >= 80.0D || target.getBbWidth() >= 2.0F; + } + + public static final class TetherState { + private final UUID targetUuid; + private int remainingTicks = DEFAULT_TETHER_DURATION_TICKS; + private boolean marked = false; + + private TetherState(UUID targetUuid) { + this.targetUuid = targetUuid; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipTetherSync.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipTetherSync.java new file mode 100644 index 00000000..016c0d41 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ScorpionWhipTetherSync.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.function.BiConsumer; +import net.minecraft.server.level.ServerPlayer; + +public final class ScorpionWhipTetherSync { + private static final BiConsumer NOOP = (player, targetId) -> { + }; + + private static volatile BiConsumer sink = NOOP; + + private ScorpionWhipTetherSync() { + } + + public static void setSink(BiConsumer sink) { + ScorpionWhipTetherSync.sink = sink == null ? NOOP : sink; + } + + public static void send(ServerPlayer player, int targetId) { + sink.accept(player, targetId); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/SignalSavingBulbItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/SignalSavingBulbItem.java new file mode 100644 index 00000000..d226ca0e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/SignalSavingBulbItem.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.block.Block; + +public final class SignalSavingBulbItem extends BlockItem { + public SignalSavingBulbItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.signal_saving_bulb").withStyle(ChatFormatting.GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/SimpleToolTier.java b/common/src/main/java/com/craisinlord/antarchy/content/item/SimpleToolTier.java new file mode 100644 index 00000000..89c86678 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/SimpleToolTier.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.function.Supplier; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.Block; + +public record SimpleToolTier( + int uses, + float speed, + float attackDamageBonus, + TagKey incorrectBlocksForDrops, + int enchantmentValue, + Supplier repairIngredient +) implements Tier { + @Override + public int getUses() { + return uses; + } + + @Override + public float getSpeed() { + return speed; + } + + @Override + public float getAttackDamageBonus() { + return attackDamageBonus; + } + + @Override + public TagKey getIncorrectBlocksForDrops() { + return incorrectBlocksForDrops; + } + + @Override + public int getEnchantmentValue() { + return enchantmentValue; + } + + @Override + public Ingredient getRepairIngredient() { + return repairIngredient.get(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/SizeRayItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/SizeRayItem.java new file mode 100644 index 00000000..2a75c178 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/SizeRayItem.java @@ -0,0 +1,248 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import java.util.List; +import java.util.function.Predicate; +import java.util.function.Supplier; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.level.Level; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.Animation; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import software.bernie.geckolib.renderer.GeoItemRenderer; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.function.Consumer; + +public class SizeRayItem extends ProjectileWeaponItem implements GeoItem { + private static final String FIRE_CONTROLLER = "fire_controller"; + private static final int CHARGE_TICKS_PER_LEVEL = 5; + private static final int CHARGE_SOUND_INTERVAL_TICKS = 12; + private static final int MAX_USE_DURATION = 72000; + private static final Predicate NO_PROJECTILES = stack -> false; + private final Supplier> projectileType; + private final SizeRayProjectileEntity.SizeRayType rayType; + private final ResourceLocation geoModelLocation; + private final ResourceLocation geoTextureLocation; + private final ResourceLocation geoAnimationLocation; + private final String fireAnimationName; + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public SizeRayItem( + Item.Properties properties, + Supplier> projectileType, + SizeRayProjectileEntity.SizeRayType rayType, + ResourceLocation geoModelLocation, + ResourceLocation geoTextureLocation, + ResourceLocation geoAnimationLocation, + String fireAnimationName + ) { + super(properties); + this.projectileType = projectileType; + this.rayType = rayType; + this.geoModelLocation = geoModelLocation; + this.geoTextureLocation = geoTextureLocation; + this.geoAnimationLocation = geoAnimationLocation; + this.fireAnimationName = fireAnimationName; + GeoItem.registerSyncedAnimatable(this); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + ItemStack itemStack = player.getItemInHand(usedHand); + if (!AntarchySettings.sizeChangingRaysEnabled()) { + return InteractionResultHolder.fail(itemStack); + } + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(itemStack); + } + + player.startUsingItem(usedHand); + return InteractionResultHolder.consume(itemStack); + } + + @Override + public void releaseUsing(ItemStack stack, Level level, LivingEntity livingEntity, int timeLeft) { + if (!(livingEntity instanceof Player player)) { + return; + } + + if (!AntarchySettings.sizeChangingRaysEnabled() || player.getCooldowns().isOnCooldown(this)) { + return; + } + + int useTicks = this.getUseDuration(stack, livingEntity) - timeLeft; + int chargeLevel = getChargeLevel(useTicks); + + if (!level.isClientSide()) { + SizeRayProjectileEntity projectile = this.createProjectile(level, player, stack, chargeLevel); + projectile.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, 3.0F, 0.0F); + level.addFreshEntity(projectile); + stack.hurtAndBreak(1, player, player.getUsedItemHand() == InteractionHand.MAIN_HAND + ? EquipmentSlot.MAINHAND + : EquipmentSlot.OFFHAND); + triggerFireAnimation((ServerLevel) level, player, stack); + level.playSound( + null, + player.getX(), + player.getY(), + player.getZ(), + this.getFireSound(), + SoundSource.PLAYERS, + 1.0F, + 0.95F + 0.12F * (chargeLevel - 1) + 1.0F / (level.getRandom().nextFloat() * 0.4F + 1.2F) + ); + player.awardStat(Stats.ITEM_USED.get(this)); + double cooldownSeconds = AntarchySettings.sizeRayCooldownSeconds(); + if (cooldownSeconds > 0) { + player.getCooldowns().addCooldown(this, (int) (cooldownSeconds * 20)); + } + } + } + + @Override + public void onUseTick(Level level, LivingEntity livingEntity, ItemStack stack, int remainingUseDuration) { + super.onUseTick(level, livingEntity, stack, remainingUseDuration); + if (level.isClientSide() || !AntarchySettings.sizeChangingRaysEnabled()) { + return; + } + + int useTicks = this.getUseDuration(stack, livingEntity) - remainingUseDuration; + if (useTicks == 1 || useTicks % CHARGE_SOUND_INTERVAL_TICKS == 0) { + level.playSound( + null, + livingEntity.getX(), + livingEntity.getY(), + livingEntity.getZ(), + AntarchySoundEvents.SIZE_RAY_CHARGE.get(), + SoundSource.PLAYERS, + 0.15F, + 0.95F + level.getRandom().nextFloat() * 0.08F + ); + } + } + + @Override + public UseAnim getUseAnimation(ItemStack stack) { + return UseAnim.NONE; + } + + @Override + public int getUseDuration(ItemStack stack, LivingEntity livingEntity) { + return MAX_USE_DURATION; + } + + @Override + public Predicate getSupportedHeldProjectiles() { + return NO_PROJECTILES; + } + + @Override + public Predicate getAllSupportedProjectiles() { + return NO_PROJECTILES; + } + + @Override + public int getDefaultProjectileRange() { + return 0; + } + + @Override + protected void shootProjectile(LivingEntity livingEntity, Projectile projectile, int i, float velocity, float inaccuracy, float angle, LivingEntity target) { + projectile.shootFromRotation(livingEntity, livingEntity.getXRot(), livingEntity.getYRot(), angle, velocity, inaccuracy); + } + + public SizeRayProjectileEntity createProjectile(Level level, LivingEntity livingEntity, ItemStack weaponStack) { + return this.createProjectile(level, livingEntity, weaponStack, 1); + } + + public SizeRayProjectileEntity createProjectile(Level level, LivingEntity livingEntity, ItemStack weaponStack, int chargeLevel) { + SizeRayProjectileEntity projectile = new SizeRayProjectileEntity(this.projectileType.get(), livingEntity, level, weaponStack.copy(), this.rayType); + projectile.setChargeLevel(chargeLevel); + return projectile; + } + + public SizeRayProjectileEntity createProjectile(Level level, ItemStack weaponStack) { + SizeRayProjectileEntity projectile = new SizeRayProjectileEntity(this.projectileType.get(), level, this.rayType); + projectile.setChargeLevel(1); + return projectile; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + String tooltipKey = this.rayType == SizeRayProjectileEntity.SizeRayType.SHRINK + ? "tooltip.antarchy.shrink_ray" + : "tooltip.antarchy.growth_ray"; + tooltipComponents.add(Component.translatable(tooltipKey).withStyle(ChatFormatting.GRAY)); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, FIRE_CONTROLLER, state -> PlayState.STOP) + .triggerableAnim(this.fireAnimationName, RawAnimation.begin().then(this.fireAnimationName, Animation.LoopType.PLAY_ONCE))); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void createGeoRenderer(Consumer consumer) { + consumer.accept(new GeoRenderProvider() { + private AnimatedHeldItemRenderer renderer; + + @Override + public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { + if (this.renderer == null) { + this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(geoModelLocation, geoTextureLocation, geoAnimationLocation)); + } + + return this.renderer; + } + }); + } + + private void triggerFireAnimation(ServerLevel level, LivingEntity livingEntity, ItemStack stack) { + long animatableId = GeoItem.getOrAssignId(stack, level); + triggerAnim(livingEntity, animatableId, FIRE_CONTROLLER, this.fireAnimationName); + } + + private SoundEvent getFireSound() { + return this.rayType == SizeRayProjectileEntity.SizeRayType.SHRINK + ? AntarchySoundEvents.SHRINK_RAY_SOUND.get() + : AntarchySoundEvents.GROWTH_RAY_SOUND.get(); + } + + private static int getChargeLevel(int useTicks) { + return Math.max(1, 1 + useTicks / CHARGE_TICKS_PER_LEVEL); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/SquidzookaItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/SquidzookaItem.java new file mode 100644 index 00000000..45d1a567 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/SquidzookaItem.java @@ -0,0 +1,161 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import java.util.function.Consumer; +import java.util.function.Predicate; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.level.Level; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import software.bernie.geckolib.renderer.GeoItemRenderer; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class SquidzookaItem extends ProjectileWeaponItem implements GeoItem { + private static final String FIRE_CONTROLLER = "fire_controller"; + private static final String FIRE_ANIMATION = "squidzooka_recoil"; + private static final Predicate NO_PROJECTILES = stack -> false; + private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/squidzooka.geo.json"); + private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/models/item/squidzooka.png"); + private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/squidzooka.animation.json"); + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public SquidzookaItem(Properties properties) { + super(properties); + GeoItem.registerSyncedAnimatable(this); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + ItemStack itemStack = player.getItemInHand(usedHand); + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(itemStack); + } + + if (!level.isClientSide()) { + MissileSquidEntity projectileSquid = AntarchyObjects.MISSILE_SQUID.get().create(level); + if (projectileSquid != null) { + projectileSquid.moveTo( + player.getX(), + player.getEyeY() - 0.2D, + player.getZ(), + player.getYRot(), + player.getXRot() + ); + projectileSquid.launchFromSquidzooka(player, (float) AntarchySettings.squidzookaLaunchVelocity()); + level.addFreshEntity(projectileSquid); + } + spawnFireParticles((ServerLevel) level, player); + itemStack.hurtAndBreak(1, player, usedHand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); + triggerFireAnimation((ServerLevel) level, player, itemStack); + } + + level.playSound( + null, + player.getX(), + player.getY(), + player.getZ(), + AntarchySoundEvents.SQUIDZOOKA_FIRE.get(), + SoundSource.PLAYERS, + 1.15F, + 1.0F / (level.getRandom().nextFloat() * 0.4F + 1.2F) + 0.5F + ); + player.awardStat(Stats.ITEM_USED.get(this)); + double cooldownSeconds = AntarchySettings.squidzookaCooldownSeconds(); + if (cooldownSeconds > 0) { + player.getCooldowns().addCooldown(this, (int) (cooldownSeconds * 20)); + } + return InteractionResultHolder.consume(itemStack); + } + + @Override + public UseAnim getUseAnimation(ItemStack stack) { + return UseAnim.NONE; + } + + @Override + public Predicate getSupportedHeldProjectiles() { + return NO_PROJECTILES; + } + + @Override + public Predicate getAllSupportedProjectiles() { + return NO_PROJECTILES; + } + + @Override + public int getDefaultProjectileRange() { + return 0; + } + + @Override + protected void shootProjectile(LivingEntity livingEntity, Projectile projectile, int i, float velocity, float inaccuracy, float angle, LivingEntity target) { + projectile.shootFromRotation(livingEntity, livingEntity.getXRot(), livingEntity.getYRot(), angle, velocity, inaccuracy); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, FIRE_CONTROLLER, state -> PlayState.STOP) + .triggerableAnim(FIRE_ANIMATION, RawAnimation.begin().thenPlay(FIRE_ANIMATION))); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void createGeoRenderer(Consumer consumer) { + consumer.accept(new GeoRenderProvider() { + private AnimatedHeldItemRenderer renderer; + + @Override + public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { + if (this.renderer == null) { + this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(MODEL_LOCATION, TEXTURE_LOCATION, ANIMATION_LOCATION)); + } + + return this.renderer; + } + }); + } + + private void triggerFireAnimation(ServerLevel level, LivingEntity livingEntity, ItemStack stack) { + long animatableId = GeoItem.getOrAssignId(stack, level); + triggerAnim(livingEntity, animatableId, FIRE_CONTROLLER, FIRE_ANIMATION); + } + + private static void spawnFireParticles(ServerLevel level, Player player) { + double lookX = player.getLookAngle().x; + double lookY = player.getLookAngle().y; + double lookZ = player.getLookAngle().z; + double originX = player.getX() + lookX * 0.65D; + double originY = player.getEyeY() - 0.15D + lookY * 0.15D; + double originZ = player.getZ() + lookZ * 0.65D; + + level.sendParticles(ParticleTypes.SPLASH, originX, originY, originZ, 12, 0.18D, 0.12D, 0.18D, 0.02D); + level.sendParticles(ParticleTypes.BUBBLE, originX, originY - 0.05D, originZ, 8, 0.16D, 0.1D, 0.16D, 0.01D); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/TriffidGooBlockItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/TriffidGooBlockItem.java new file mode 100644 index 00000000..98111265 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/TriffidGooBlockItem.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.block.Block; + +public class TriffidGooBlockItem extends BlockItem { + public TriffidGooBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.triffid_goo_block").withStyle(ChatFormatting.DARK_GREEN)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateArmorItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateArmorItem.java new file mode 100644 index 00000000..4935d5d5 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateArmorItem.java @@ -0,0 +1,104 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.level.Level; + +public class UltimateArmorItem extends ArmorItem { + private final Type armorType; + + public UltimateArmorItem(Holder material, Type type, Properties properties) { + super(material, type, properties); + this.armorType = type; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + ItemAttributeModifiers.Builder builder = ItemAttributeModifiers.builder() + .add( + Attributes.ARMOR, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(this.armorType.getName() + "_armor"), + getDefense(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ) + .add( + Attributes.ARMOR_TOUGHNESS, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(this.armorType.getName() + "_armor_toughness"), + getToughness(), + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ); + + float knockbackResistance = (float) AntarchySettings.ultimateArmorKnockbackResistance(); + if (knockbackResistance > 0.0F) { + builder.add( + Attributes.KNOCKBACK_RESISTANCE, + new AttributeModifier( + ResourceLocation.withDefaultNamespace(this.armorType.getName() + "_armor_knockback_resistance"), + knockbackResistance, + AttributeModifier.Operation.ADD_VALUE + ), + EquipmentSlotGroup.bySlot(this.armorType.getSlot()) + ); + } + + return builder.build(); + } + + @Override + public int getDefense() { + return switch (this.armorType) { + case HELMET -> AntarchySettings.ultimateHelmetArmorValue(); + case CHESTPLATE, BODY -> AntarchySettings.ultimateChestplateArmorValue(); + case LEGGINGS -> AntarchySettings.ultimateLeggingsArmorValue(); + case BOOTS -> AntarchySettings.ultimateBootsArmorValue(); + }; + } + + @Override + public float getToughness() { + return (float) switch (this.armorType) { + case HELMET -> AntarchySettings.ultimateHelmetArmorToughness(); + case CHESTPLATE, BODY -> AntarchySettings.ultimateChestplateArmorToughness(); + case LEGGINGS -> AntarchySettings.ultimateLeggingsArmorToughness(); + case BOOTS -> AntarchySettings.ultimateBootsArmorToughness(); + }; + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateArmorEnchantability(); + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + UltimateGearHelper.ensureUltimateArmorEnchantments(stack, level.registryAccess()); + } + + @Override + public void onCraftedBy(ItemStack stack, Level level, Player player) { + super.onCraftedBy(stack, level, player); + UltimateGearHelper.ensureUltimateArmorEnchantments(stack, level.registryAccess()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateAxeItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateAxeItem.java new file mode 100644 index 00000000..dadea206 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateAxeItem.java @@ -0,0 +1,93 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import java.util.function.DoubleSupplier; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +public class UltimateAxeItem extends AxeItem { + private final Tier tier; + private final DoubleSupplier attackDamage; + private final float attackSpeed; + + public UltimateAxeItem(Tier tier, Item.Properties properties, DoubleSupplier attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return createAttributes(this.tier, (float) this.attackDamage.getAsDouble(), (float) AntarchySettings.ultimateAxeAttackSpeed()); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + UltimateToolHelper.appendThreeByThreeTooltip(tooltipComponents); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return UltimateToolHelper.getDestroySpeed( + UltimateToolHelper.ToolKind.AXE, + this.tier, + stack, + state, + super.getDestroySpeed(stack, state) + ); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + InteractionResultHolder toggleResult = UltimateToolHelper.handleToggleUse(level, player, hand); + return toggleResult.getResult() == InteractionResult.PASS ? super.use(level, player, hand) : toggleResult; + } + + @Override + public InteractionResult useOn(UseOnContext context) { + InteractionResult toggleResult = UltimateToolHelper.handleToggleUseOn(context); + if (toggleResult != InteractionResult.PASS) { + return toggleResult; + } + + InteractionResult result = super.useOn(context); + if (result.consumesAction()) { + UltimateToolHelper.handleAreaUseOn(context, areaContext -> super.useOn(areaContext)); + } + return result; + } + + @Override + public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity miningEntity) { + boolean result = super.mineBlock(stack, level, state, pos, miningEntity); + UltimateToolHelper.handleAreaMining(UltimateToolHelper.ToolKind.AXE, stack, level, state, pos, miningEntity); + return result; + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateToolEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateBowItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateBowItem.java new file mode 100644 index 00000000..3f4d93be --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateBowItem.java @@ -0,0 +1,110 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import net.minecraft.core.HolderLookup; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.BowItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public class UltimateBowItem extends BowItem { + private static final double VANILLA_FULL_DRAW_ARROW_DAMAGE = 6.0D; + + public UltimateBowItem(Item.Properties properties) { + super(properties); + } + + @Override + public void releaseUsing(ItemStack stack, Level level, LivingEntity livingEntity, int timeLeft) { + if (!(livingEntity instanceof Player player)) { + return; + } + + ItemStack projectileStack = player.getProjectile(stack); + if (projectileStack.isEmpty()) { + return; + } + + int useTicks = this.getUseDuration(stack, livingEntity) - timeLeft; + int adjustedUseTicks = Math.max(1, (int) Math.round(useTicks * AntarchySettings.ultimateBowDrawSpeedMultiplier())); + float power = BowItem.getPowerForTime(adjustedUseTicks); + if (power < 0.1F) { + return; + } + + List projectiles = draw(stack, projectileStack, player); + if (level instanceof ServerLevel serverLevel && !projectiles.isEmpty()) { + this.shoot(serverLevel, player, player.getUsedItemHand(), stack, projectiles, power * 3.0F, 1.0F, power == 1.0F, null); + } + + level.playSound( + null, + player.getX(), + player.getY(), + player.getZ(), + SoundEvents.ARROW_SHOOT, + SoundSource.PLAYERS, + 1.0F, + 1.0F / (level.getRandom().nextFloat() * 0.4F + 1.2F) + power * 0.5F + ); + player.awardStat(Stats.ITEM_USED.get(this)); + } + + @Override + protected void shootProjectile( + LivingEntity shooter, + Projectile projectile, + int projectileIndex, + float velocity, + float inaccuracy, + float angle, + LivingEntity target + ) { + super.shootProjectile(shooter, projectile, projectileIndex, velocity, inaccuracy, angle, target); + if (projectile instanceof AbstractArrow arrow) { + scaleArrowDamage(arrow); + UltimateGearHelper.tagUltimateBowArrow(arrow); + } + } + + private static void scaleArrowDamage(AbstractArrow arrow) { + double multiplier = AntarchySettings.ultimateBowAttackDamage() / VANILLA_FULL_DRAW_ARROW_DAMAGE; + arrow.setBaseDamage(arrow.getBaseDamage() * multiplier); + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + ensureConfiguredEnchantments(stack, level.registryAccess()); + } + + @Override + public void onCraftedBy(ItemStack stack, Level level, Player player) { + super.onCraftedBy(stack, level, player); + ensureConfiguredEnchantments(stack, level.registryAccess()); + } + + private static void ensureConfiguredEnchantments(ItemStack stack, HolderLookup.Provider registries) { + UltimateGearHelper.ensureUltimateBowEnchantments(stack, registries); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateBowEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateCrossbowItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateCrossbowItem.java new file mode 100644 index 00000000..7ab52592 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateCrossbowItem.java @@ -0,0 +1,217 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.ChatFormatting; +import net.minecraft.core.component.DataComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ChargedProjectiles; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.level.Level; + +import java.util.ArrayList; +import java.util.List; + +public class UltimateCrossbowItem extends CrossbowItem { + private static final int MAX_ARROWS = 16; + private static final int FIRE_COOLDOWN_TICKS = 5; // 4 shots/sec + private static final float SHOOTING_POWER = 3.15F; + private static final double VANILLA_CROSSBOW_ARROW_DAMAGE = 7.0D; + + public UltimateCrossbowItem(Item.Properties properties) { + super(properties); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + + if (CrossbowItem.isCharged(stack)) { + if (!level.isClientSide) { + fireOneShot(level, player, hand, stack); + } + player.getCooldowns().addCooldown(this, FIRE_COOLDOWN_TICKS); + return InteractionResultHolder.consume(stack); + } + + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(stack); + } + + level.playSound(null, player.getX(), player.getY(), player.getZ(), + SoundEvents.CROSSBOW_LOADING_START.value(), SoundSource.PLAYERS, 1.0F, 1.0F); + player.startUsingItem(hand); + return InteractionResultHolder.consume(stack); + } + + @Override + public void releaseUsing(ItemStack stack, Level level, LivingEntity livingEntity, int timeLeft) { + if (!(livingEntity instanceof Player player)) return; + if (CrossbowItem.isCharged(stack)) return; + + int useTicks = getUseDuration(stack, livingEntity) - timeLeft; + int maxTicks = getAdjustedChargeDuration(stack, livingEntity); + + int arrowsToLoad = Mth.clamp( + (int) Math.floor((double) useTicks / maxTicks * MAX_ARROWS), 0, MAX_ARROWS); + if (arrowsToLoad == 0) return; + + ItemStack ammoType = player.getProjectile(stack); + if (ammoType.isEmpty()) return; + + int available = player.isCreative() ? MAX_ARROWS : countMatchingArrows(player, ammoType); + int toLoad = Math.min(arrowsToLoad, available); + if (toLoad == 0) return; + + if (!player.isCreative()) { + consumeArrows(player, ammoType, toLoad); + } + + List projectiles = new ArrayList<>(toLoad); + for (int i = 0; i < toLoad; i++) { + projectiles.add(ammoType.copyWithCount(1)); + } + stack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(projectiles)); + + level.playSound(null, player.getX(), player.getY(), player.getZ(), + SoundEvents.CROSSBOW_LOADING_END.value(), SoundSource.PLAYERS, 1.0F, 1.0F); + } + + private void fireOneShot(Level level, Player player, InteractionHand hand, ItemStack stack) { + ChargedProjectiles charged = stack.getOrDefault(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY); + List all = new ArrayList<>(charged.getItems().stream().filter(s -> !s.isEmpty()).toList()); + if (all.isEmpty()) return; + + ItemStack arrow = all.remove(0); + List toFire = new ArrayList<>(); + if (hasMultishot(stack)) { + toFire.add(arrow); + toFire.add(arrow.copy()); + toFire.add(arrow.copy()); + } else { + toFire.add(arrow); + } + + // Temporarily set only the arrows for this shot so performShooting fires exactly them + stack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(toFire)); + this.performShooting(level, player, hand, stack, SHOOTING_POWER, 1.0F, null); + + // performShooting clears CHARGED_PROJECTILES; restore remaining valid arrows if any + List remaining = all.stream().filter(s -> !s.isEmpty()).toList(); + if (!remaining.isEmpty()) { + stack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(remaining)); + } + } + + @Override + protected void shootProjectile( + LivingEntity shooter, Projectile projectile, int projectileIndex, + float velocity, float inaccuracy, float angle, LivingEntity target) { + super.shootProjectile(shooter, projectile, projectileIndex, velocity, inaccuracy, angle, target); + if (projectile instanceof AbstractArrow arrow) { + scaleArrowDamage(arrow); + UltimateGearHelper.tagUltimateCrossbowProjectile(arrow); + } + } + + private static void scaleArrowDamage(AbstractArrow arrow) { + double multiplier = AntarchySettings.ultimateCrossbowAttackDamage() / VANILLA_CROSSBOW_ARROW_DAMAGE; + arrow.setBaseDamage(arrow.getBaseDamage() * multiplier); + } + + @Override + public int getUseDuration(ItemStack stack, LivingEntity livingEntity) { + return getAdjustedChargeDuration(stack, livingEntity) + 3; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + ChargedProjectiles charged = stack.getOrDefault(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY); + if (!charged.isEmpty()) { + int count = charged.getItems().size(); + Component arrowName = charged.getItems().get(0).getHoverName(); + tooltipComponents.add(Component.translatable("item.antarchy.ultimate_crossbow.arrows_remaining", count, arrowName) + .withStyle(ChatFormatting.GRAY)); + } + tooltipComponents.add(Component.translatable("item.antarchy.ultimate_crossbow.capacity") + .withStyle(ChatFormatting.GRAY)); + } + + private int getAdjustedChargeDuration(ItemStack stack, LivingEntity livingEntity) { + int vanillaChargeDuration = CrossbowItem.getChargeDuration(stack, livingEntity); + double multiplier = AntarchySettings.ultimateCrossbowChargeSpeedMultiplier(); + return Math.max(1, Mth.floor((float) (vanillaChargeDuration / multiplier))); + } + + private boolean hasMultishot(ItemStack stack) { + return stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY) + .keySet().stream() + .anyMatch(h -> h.is(Enchantments.MULTISHOT)); + } + + private int countMatchingArrows(Player player, ItemStack ammoType) { + int count = 0; + for (ItemStack slot : player.getInventory().offhand) { + if (ItemStack.isSameItemSameComponents(slot, ammoType)) { + count += slot.getCount(); + } + } + for (ItemStack slot : player.getInventory().items) { + if (ItemStack.isSameItemSameComponents(slot, ammoType)) { + count += slot.getCount(); + } + } + return count; + } + + private void consumeArrows(Player player, ItemStack ammoType, int amount) { + int remaining = amount; + for (int i = 0; i < player.getInventory().offhand.size() && remaining > 0; i++) { + ItemStack slot = player.getInventory().offhand.get(i); + if (remaining <= 0) break; + if (ItemStack.isSameItemSameComponents(slot, ammoType)) { + int take = Math.min(remaining, slot.getCount()); + slot.shrink(take); + remaining -= take; + if (slot.isEmpty()) { + player.getInventory().offhand.set(i, ItemStack.EMPTY); + } + } + } + for (int i = 0; i < player.getInventory().items.size() && remaining > 0; i++) { + ItemStack slot = player.getInventory().items.get(i); + if (remaining <= 0) break; + if (ItemStack.isSameItemSameComponents(slot, ammoType)) { + int take = Math.min(remaining, slot.getCount()); + slot.shrink(take); + remaining -= take; + if (slot.isEmpty()) { + player.getInventory().items.set(i, ItemStack.EMPTY); + } + } + } + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateCrossbowEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateGearHelper.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateGearHelper.java new file mode 100644 index 00000000..ab7aab6b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateGearHelper.java @@ -0,0 +1,83 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.item.enchantment.ItemEnchantments; + +public final class UltimateGearHelper { + public static final String ULTIMATE_BOW_ARROW_TAG = Antarchy.MODID + ".ultimate_bow_arrow"; + public static final String ULTIMATE_CROSSBOW_PROJECTILE_TAG = Antarchy.MODID + ".ultimate_crossbow_projectile"; + + private UltimateGearHelper() { + } + + public static ItemStack createUltimateArmorStack(net.minecraft.world.item.Item item, HolderLookup.Provider registries) { + ItemStack stack = new ItemStack(item); + ensureUltimateArmorEnchantments(stack, registries); + return stack; + } + + public static ItemStack createUltimateBowStack(net.minecraft.world.item.Item item, HolderLookup.Provider registries) { + ItemStack stack = new ItemStack(item); + ensureUltimateBowEnchantments(stack, registries); + return stack; + } + + public static void ensureUltimateArmorEnchantments(ItemStack stack, HolderLookup.Provider registries) { + if (!AntarchySettings.ultimateArmorComesEnchanted()) { + return; + } + ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(stack.getEnchantments()); + setEnchantmentLevel(enchantments, registries, Enchantments.PROTECTION, 5); + setEnchantmentLevel(enchantments, registries, Enchantments.FIRE_PROTECTION, 5); + setEnchantmentLevel(enchantments, registries, Enchantments.PROJECTILE_PROTECTION, 5); + setEnchantmentLevel(enchantments, registries, Enchantments.BLAST_PROTECTION, 5); + net.minecraft.world.item.enchantment.EnchantmentHelper.setEnchantments(stack, enchantments.toImmutable().withTooltip(true)); + } + + public static void ensureUltimateBowEnchantments(ItemStack stack, HolderLookup.Provider registries) { + if (!AntarchySettings.ultimateBowComesEnchantedWithFlame()) { + return; + } + + ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(stack.getEnchantments()); + setEnchantmentLevel(enchantments, registries, Enchantments.FLAME, 1); + net.minecraft.world.item.enchantment.EnchantmentHelper.setEnchantments(stack, enchantments.toImmutable().withTooltip(true)); + } + + private static void setEnchantmentLevel( + ItemEnchantments.Mutable enchantments, + HolderLookup.Provider registries, + ResourceKey enchantmentKey, + int level + ) { + var enchantment = registries.lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(enchantmentKey); + if (enchantments.getLevel(enchantment) < level) { + enchantments.set(enchantment, level); + } + } + + public static void tagUltimateBowArrow(AbstractArrow arrow) { + arrow.addTag(ULTIMATE_BOW_ARROW_TAG); + } + + public static boolean isUltimateBowArrow(Entity entity) { + return entity != null && entity.getTags().contains(ULTIMATE_BOW_ARROW_TAG); + } + + public static void tagUltimateCrossbowProjectile(Entity projectile) { + projectile.addTag(ULTIMATE_CROSSBOW_PROJECTILE_TAG); + } + + public static boolean isUltimateCrossbowProjectile(Entity entity) { + return entity != null && entity.getTags().contains(ULTIMATE_CROSSBOW_PROJECTILE_TAG); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateHoeItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateHoeItem.java new file mode 100644 index 00000000..1829f893 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateHoeItem.java @@ -0,0 +1,93 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import java.util.function.DoubleSupplier; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.HoeItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +public class UltimateHoeItem extends HoeItem { + private final Tier tier; + private final DoubleSupplier attackDamage; + private final float attackSpeed; + + public UltimateHoeItem(Tier tier, Item.Properties properties, DoubleSupplier attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return createAttributes(this.tier, (float) this.attackDamage.getAsDouble(), (float) AntarchySettings.ultimateHoeAttackSpeed()); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + UltimateToolHelper.appendThreeByThreeTooltip(tooltipComponents); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return UltimateToolHelper.getDestroySpeed( + UltimateToolHelper.ToolKind.HOE, + this.tier, + stack, + state, + super.getDestroySpeed(stack, state) + ); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + InteractionResultHolder toggleResult = UltimateToolHelper.handleToggleUse(level, player, hand); + return toggleResult.getResult() == InteractionResult.PASS ? super.use(level, player, hand) : toggleResult; + } + + @Override + public InteractionResult useOn(UseOnContext context) { + InteractionResult toggleResult = UltimateToolHelper.handleToggleUseOn(context); + if (toggleResult != InteractionResult.PASS) { + return toggleResult; + } + + InteractionResult result = super.useOn(context); + if (result.consumesAction()) { + UltimateToolHelper.handleAreaUseOn(context, areaContext -> super.useOn(areaContext)); + } + return result; + } + + @Override + public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity miningEntity) { + boolean result = super.mineBlock(stack, level, state, pos, miningEntity); + UltimateToolHelper.handleAreaMining(UltimateToolHelper.ToolKind.HOE, stack, level, state, pos, miningEntity); + return result; + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateToolEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateMaceItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateMaceItem.java new file mode 100644 index 00000000..97296a69 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateMaceItem.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.MaceItem; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public class UltimateMaceItem extends MaceItem { + private static final double BASE_ATTACK_DAMAGE = 5.0D; + + public UltimateMaceItem(Item.Properties properties) { + super(properties); + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + double multiplier = AntarchySettings.ultimateMaceDamageMultiplier(); + return ItemAttributeModifiers.builder() + .add( + Attributes.ATTACK_DAMAGE, + new AttributeModifier(Item.BASE_ATTACK_DAMAGE_ID, BASE_ATTACK_DAMAGE * multiplier, AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND + ) + .add( + Attributes.ATTACK_SPEED, + new AttributeModifier(Item.BASE_ATTACK_SPEED_ID, AntarchySettings.ultimateMaceAttackSpeed(), AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND + ) + .build(); + } + + @Override + public float getAttackDamageBonus(Entity target, float baseAttackDamage, DamageSource damageSource) { + return (float) (super.getAttackDamageBonus(target, baseAttackDamage, damageSource) * AntarchySettings.ultimateMaceDamageMultiplier()); + } + + @Override + public boolean isEnchantable(net.minecraft.world.item.ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateMaceEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimatePickaxeItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimatePickaxeItem.java new file mode 100644 index 00000000..e41a36a9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimatePickaxeItem.java @@ -0,0 +1,85 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import java.util.function.DoubleSupplier; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.PickaxeItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +public class UltimatePickaxeItem extends PickaxeItem { + private final Tier tier; + private final DoubleSupplier attackDamage; + private final float attackSpeed; + + public UltimatePickaxeItem(Tier tier, Item.Properties properties, DoubleSupplier attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return createAttributes(this.tier, (float) this.attackDamage.getAsDouble(), (float) AntarchySettings.ultimatePickaxeAttackSpeed()); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + UltimateToolHelper.appendThreeByThreeTooltip(tooltipComponents); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return UltimateToolHelper.getDestroySpeed( + UltimateToolHelper.ToolKind.PICKAXE, + this.tier, + stack, + state, + super.getDestroySpeed(stack, state) + ); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + InteractionResultHolder toggleResult = UltimateToolHelper.handleToggleUse(level, player, hand); + return toggleResult.getResult() == InteractionResult.PASS ? super.use(level, player, hand) : toggleResult; + } + + @Override + public InteractionResult useOn(UseOnContext context) { + InteractionResult toggleResult = UltimateToolHelper.handleToggleUseOn(context); + return toggleResult == InteractionResult.PASS ? super.useOn(context) : toggleResult; + } + + @Override + public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity miningEntity) { + boolean result = super.mineBlock(stack, level, state, pos, miningEntity); + UltimateToolHelper.handleAreaMining(UltimateToolHelper.ToolKind.PICKAXE, stack, level, state, pos, miningEntity); + return result; + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateToolEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateSwordItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateSwordItem.java new file mode 100644 index 00000000..dc0c411e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateSwordItem.java @@ -0,0 +1,41 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.function.DoubleSupplier; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public class UltimateSwordItem extends SwordItem { + private final Tier tier; + private final DoubleSupplier attackDamage; + private final float attackSpeed; + + public UltimateSwordItem(Tier tier, Item.Properties properties, DoubleSupplier attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes( + this.tier, + (int) Math.round(this.attackDamage.getAsDouble()), + (float) AntarchySettings.ultimateSwordAttackSpeed() + ); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateToolEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateToolHelper.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateToolHelper.java new file mode 100644 index 00000000..cc610937 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UltimateToolHelper.java @@ -0,0 +1,332 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; + +public final class UltimateToolHelper { + private static final String THREE_BY_THREE_TAG = "antarchy.ultimate_three_by_three"; + private static final ThreadLocal BREAKING_EXTRA_BLOCKS = ThreadLocal.withInitial(() -> false); + private static final float GENERAL_MINING_MULTIPLIER = 1.1F; + private static final float ULTIMATE_SHOVEL_MINING_SPEED = 24.0F; + + private UltimateToolHelper() { + } + + public static InteractionResultHolder handleToggleUse(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (!AntarchySettings.ultimateToolsThreeByThreeEnabled() || !player.isShiftKeyDown()) { + return InteractionResultHolder.pass(stack); + } + + toggleThreeByThree(level, player, stack); + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + } + + public static InteractionResult handleToggleUseOn(UseOnContext context) { + Player player = context.getPlayer(); + if (!AntarchySettings.ultimateToolsThreeByThreeEnabled() || player == null || !player.isShiftKeyDown()) { + return InteractionResult.PASS; + } + + toggleThreeByThree(context.getLevel(), player, context.getItemInHand()); + return InteractionResult.sidedSuccess(context.getLevel().isClientSide); + } + + public static boolean isThreeByThreeEnabled(ItemStack stack) { + return stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag().getBoolean(THREE_BY_THREE_TAG); + } + + public static float getDestroySpeed(ToolKind toolKind, Tier tier, ItemStack stack, BlockState state, float defaultSpeed) { + if (matchesToolKind(toolKind, state)) { + float base = Math.max(defaultSpeed, tier.getSpeed()); + if (toolKind == ToolKind.SHOVEL) { + return Math.max(base * GENERAL_MINING_MULTIPLIER, ULTIMATE_SHOVEL_MINING_SPEED); + } + return base * GENERAL_MINING_MULTIPLIER; + } + if (defaultSpeed <= 1.0F) { + return defaultSpeed; + } + return defaultSpeed * GENERAL_MINING_MULTIPLIER; + } + + public static void appendThreeByThreeTooltip(List tooltip) { + if (!AntarchySettings.ultimateToolsThreeByThreeEnabled()) { + return; + } + tooltip.add(Component.translatable("tooltip.antarchy.ultimate_tools_3x3").withStyle(ChatFormatting.GRAY)); + } + + public static void handleAreaMining(ToolKind toolKind, ItemStack stack, Level level, BlockState originState, BlockPos origin, LivingEntity entity) { + if (!AntarchySettings.ultimateToolsThreeByThreeEnabled() + || level.isClientSide + || BREAKING_EXTRA_BLOCKS.get() + || !isThreeByThreeEnabled(stack) + || !(entity instanceof ServerPlayer player)) { + return; + } + + if (!canBreak(toolKind, player, stack, level, origin, originState)) { + return; + } + + Direction face = resolveMiningFace(player, origin); + BREAKING_EXTRA_BLOCKS.set(true); + try { + for (BlockPos targetPos : getMiningPlane(origin, face)) { + if (!canBreak(toolKind, player, stack, level, targetPos, level.getBlockState(targetPos))) { + continue; + } + + player.gameMode.destroyBlock(targetPos); + if (level instanceof ServerLevel serverLevel) { + serverLevel.destroyBlockProgress(syntheticBreakerId(player.getId(), targetPos), targetPos, -1); + } + if (stack.isEmpty()) { + break; + } + } + } finally { + BREAKING_EXTRA_BLOCKS.set(false); + } + } + + + public static void broadcastAreaMiningProgress(ServerPlayer player, ServerLevel level, BlockPos origin, int stage) { + if (!AntarchySettings.ultimateToolsThreeByThreeEnabled()) { + return; + } + + ItemStack stack = player.getMainHandItem(); + if (stack.isEmpty() || !isThreeByThreeEnabled(stack)) { + return; + } + + ToolKind kind = toolKindOf(stack.getItem()); + if (kind == null) { + return; + } + + BlockState originState = level.getBlockState(origin); + if (!matchesToolKind(kind, originState)) { + return; + } + + Direction face = resolveMiningFace(player, origin); + for (BlockPos targetPos : getPlane(origin, face)) { + BlockState state = level.getBlockState(targetPos); + if (state.isAir() || state.hasBlockEntity() || state.getDestroySpeed(level, targetPos) < 0.0F) { + continue; + } + if (!matchesToolKind(kind, state)) { + continue; + } + level.destroyBlockProgress(syntheticBreakerId(player.getId(), targetPos), targetPos, stage); + } + } + + private static int syntheticBreakerId(int playerId, BlockPos pos) { + int hash = pos.hashCode() ^ (playerId * 8191); + return hash | 0x80000000; + } + + private static ToolKind toolKindOf(Item item) { + if (item instanceof UltimatePickaxeItem) return ToolKind.PICKAXE; + if (item instanceof UltimateAxeItem) return ToolKind.AXE; + if (item instanceof UtlimateShovelItem) return ToolKind.SHOVEL; + if (item instanceof UltimateHoeItem) return ToolKind.HOE; + return null; + } + + public static void handleAreaUseOn(UseOnContext context, Function action) { + if (!AntarchySettings.ultimateToolsThreeByThreeEnabled() + || context.getLevel().isClientSide + || !isThreeByThreeEnabled(context.getItemInHand())) { + return; + } + + Player player = context.getPlayer(); + if (player == null) { + return; + } + + for (BlockPos targetPos : getPlane(context.getClickedPos(), context.getClickedFace())) { + if (!canModify(player, context.getLevel(), targetPos, context.getClickedFace(), context.getItemInHand())) { + continue; + } + + UseOnContext areaContext = new UseOnContext( + player, + context.getHand(), + new BlockHitResult(Vec3.atCenterOf(targetPos), context.getClickedFace(), targetPos, context.isInside()) + ); + action.apply(areaContext); + if (context.getItemInHand().isEmpty()) { + break; + } + } + } + + public enum ToolKind { + PICKAXE, + AXE, + SHOVEL, + HOE + } + + private static void toggleThreeByThree(Level level, Player player, ItemStack stack) { + boolean enabled = !isThreeByThreeEnabled(stack); + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { + if (enabled) { + tag.putBoolean(THREE_BY_THREE_TAG, true); + } else { + tag.remove(THREE_BY_THREE_TAG); + } + }); + + if (!level.isClientSide) { + player.displayClientMessage( + Component.translatable( + enabled + ? "message.antarchy.ultimate_tool.mode_3x3" + : "message.antarchy.ultimate_tool.mode_default" + ), + true + ); + } + } + + private static boolean canModify(Player player, Level level, BlockPos pos, Direction face, ItemStack stack) { + if (!level.isLoaded(pos) || !player.mayUseItemAt(pos, face, stack)) { + return false; + } + + if (player instanceof ServerPlayer serverPlayer + && serverPlayer.blockActionRestricted(level, pos, serverPlayer.gameMode.getGameModeForPlayer())) { + return false; + } + + return true; + } + + private static boolean canBreak(ToolKind toolKind, ServerPlayer player, ItemStack stack, Level level, BlockPos pos, BlockState state) { + if (!level.isLoaded(pos) + || state.isAir() + || state.hasBlockEntity() + || state.getDestroySpeed(level, pos) < 0.0F + || !player.mayUseItemAt(pos, Direction.UP, stack) + || player.blockActionRestricted(level, pos, player.gameMode.getGameModeForPlayer())) { + return false; + } + + if (!matchesToolKind(toolKind, state)) { + return false; + } + + if (stack.getDestroySpeed(state) <= 1.0F) { + return false; + } + + return !state.requiresCorrectToolForDrops() || stack.isCorrectToolForDrops(state); + } + + public static boolean matchesToolKind(ToolKind toolKind, BlockState state) { + return switch (toolKind) { + case PICKAXE -> state.is(BlockTags.MINEABLE_WITH_PICKAXE); + case AXE -> state.is(BlockTags.MINEABLE_WITH_AXE); + case SHOVEL -> state.is(BlockTags.MINEABLE_WITH_SHOVEL); + case HOE -> state.is(BlockTags.MINEABLE_WITH_HOE); + }; + } + + + private static Direction resolveMiningFace(ServerPlayer player, BlockPos pos) { + Vec3 eye = player.getEyePosition(1.0F); + Vec3 blockCenter = Vec3.atCenterOf(pos); + Vec3 delta = eye.subtract(blockCenter); + + if (delta.lengthSqr() < 1.0E-4) { + return player.getDirection().getOpposite(); + } + + Direction best = Direction.UP; + double bestDot = -Double.MAX_VALUE; + for (Direction d : Direction.values()) { + double dot = delta.x * d.getStepX() + delta.y * d.getStepY() + delta.z * d.getStepZ(); + if (dot > bestDot) { + bestDot = dot; + best = d; + } + } + return best; + } + + private static List getMiningPlane(BlockPos center, Direction face) { + return getPlane(center, face); + } + + private static List getPlane(BlockPos center, Direction face) { + List positions = new ArrayList<>(8); + switch (face.getAxis()) { + case Y -> { + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + if (x == 0 && z == 0) { + continue; + } + + positions.add(center.offset(x, 0, z)); + } + } + } + case X -> { + for (int y = -1; y <= 1; y++) { + for (int z = -1; z <= 1; z++) { + if (y == 0 && z == 0) { + continue; + } + + positions.add(center.offset(0, y, z)); + } + } + } + case Z -> { + for (int x = -1; x <= 1; x++) { + for (int y = -1; y <= 1; y++) { + if (x == 0 && y == 0) { + continue; + } + + positions.add(center.offset(x, y, 0)); + } + } + } + } + + return positions; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UtlimateShovelItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UtlimateShovelItem.java new file mode 100644 index 00000000..d927fb37 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/ultimate/UtlimateShovelItem.java @@ -0,0 +1,110 @@ +package com.craisinlord.antarchy.content.item.ultimate; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import java.util.function.DoubleSupplier; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +public class UtlimateShovelItem extends ShovelItem { + private final Tier tier; + private final DoubleSupplier attackDamage; + private final float attackSpeed; + + public UtlimateShovelItem(Tier tier, Item.Properties properties, DoubleSupplier attackDamage, float attackSpeed) { + super(tier, properties); + this.tier = tier; + this.attackDamage = attackDamage; + this.attackSpeed = attackSpeed; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return createAttributes(this.tier, (float) this.attackDamage.getAsDouble(), (float) AntarchySettings.ultimateShovelAttackSpeed()); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + UltimateToolHelper.appendThreeByThreeTooltip(tooltipComponents); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + float vanillaSpeed = super.getDestroySpeed(stack, state); + float finalSpeed = UltimateToolHelper.getDestroySpeed( + UltimateToolHelper.ToolKind.SHOVEL, + this.tier, + stack, + state, + vanillaSpeed + ); + + Antarchy.LOGGER.info( + "Ultimate shovel speed block={} vanillaSpeed={} finalSpeed={} tierSpeed={} mineableWithShovel={} hasToolComponent={}", + BuiltInRegistries.BLOCK.getKey(state.getBlock()), + vanillaSpeed, + finalSpeed, + this.tier.getSpeed(), + state.is(BlockTags.MINEABLE_WITH_SHOVEL), + stack.has(DataComponents.TOOL) + ); + + return finalSpeed; + } + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + InteractionResultHolder toggleResult = UltimateToolHelper.handleToggleUse(level, player, hand); + return toggleResult.getResult() == InteractionResult.PASS ? super.use(level, player, hand) : toggleResult; + } + + @Override + public InteractionResult useOn(UseOnContext context) { + InteractionResult toggleResult = UltimateToolHelper.handleToggleUseOn(context); + if (toggleResult != InteractionResult.PASS) { + return toggleResult; + } + + InteractionResult result = super.useOn(context); + if (result.consumesAction()) { + UltimateToolHelper.handleAreaUseOn(context, areaContext -> super.useOn(areaContext)); + } + return result; + } + + + @Override + public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity miningEntity) { + boolean result = super.mineBlock(stack, level, state, pos, miningEntity); + UltimateToolHelper.handleAreaMining(UltimateToolHelper.ToolKind.SHOVEL, stack, level, state, pos, miningEntity); + return result; + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.ultimateToolEnchantability(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/movement/DreamSandLowGravityAccess.java b/common/src/main/java/com/craisinlord/antarchy/content/movement/DreamSandLowGravityAccess.java new file mode 100644 index 00000000..d4bc5187 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/movement/DreamSandLowGravityAccess.java @@ -0,0 +1,21 @@ +package com.craisinlord.antarchy.content.movement; + +public interface DreamSandLowGravityAccess { + boolean antarchy$isDreamSandLowGravityActive(); + + void antarchy$setDreamSandLowGravityActive(boolean active); + + int antarchy$getDreamSandLowGravityTicksRemaining(); + + void antarchy$setDreamSandLowGravityTicksRemaining(int ticks); + + int antarchy$getDreamSandLandingGraceTicks(); + + void antarchy$setDreamSandLandingGraceTicks(int ticks); + + default void antarchy$clearDreamSandLowGravity() { + antarchy$setDreamSandLowGravityActive(false); + antarchy$setDreamSandLowGravityTicksRemaining(0); + antarchy$setDreamSandLandingGraceTicks(0); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/BloodCrystalKatanaTrailPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/BloodCrystalKatanaTrailPayload.java new file mode 100644 index 00000000..b4588cb2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/BloodCrystalKatanaTrailPayload.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record BloodCrystalKatanaTrailPayload(int entityId, int durationTicks) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal_katana_trail")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.VAR_INT, BloodCrystalKatanaTrailPayload::entityId, + ByteBufCodecs.VAR_INT, BloodCrystalKatanaTrailPayload::durationTicks, + BloodCrystalKatanaTrailPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/BloodglassStatePayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/BloodglassStatePayload.java new file mode 100644 index 00000000..252a617d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/BloodglassStatePayload.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record BloodglassStatePayload(int shieldsActive, int shieldsMax) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "bloodglass_state")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.VAR_INT, BloodglassStatePayload::shieldsActive, + ByteBufCodecs.VAR_INT, BloodglassStatePayload::shieldsMax, + BloodglassStatePayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/BrutalflyElytraAnimationPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/BrutalflyElytraAnimationPayload.java new file mode 100644 index 00000000..314e1b36 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/BrutalflyElytraAnimationPayload.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record BrutalflyElytraAnimationPayload(int entityId, int durationTicks, float strength) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "brutalfly_elytra_animation")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.VAR_INT, BrutalflyElytraAnimationPayload::entityId, + ByteBufCodecs.VAR_INT, BrutalflyElytraAnimationPayload::durationTicks, + ByteBufCodecs.FLOAT, BrutalflyElytraAnimationPayload::strength, + BrutalflyElytraAnimationPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/BrutalflyElytraFlapPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/BrutalflyElytraFlapPayload.java new file mode 100644 index 00000000..20934ecf --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/BrutalflyElytraFlapPayload.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record BrutalflyElytraFlapPayload(int chargeTicks) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "brutalfly_elytra_flap")); + public static final StreamCodec STREAM_CODEC = + ByteBufCodecs.VAR_INT.map(BrutalflyElytraFlapPayload::new, BrutalflyElytraFlapPayload::chargeTicks); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/DiamondMinecartInputPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/DiamondMinecartInputPayload.java new file mode 100644 index 00000000..0f62c1ac --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/DiamondMinecartInputPayload.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record DiamondMinecartInputPayload(byte inputFlags) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "diamond_minecart_input")); + + public static final StreamCodec STREAM_CODEC = + ByteBufCodecs.BYTE.map(DiamondMinecartInputPayload::new, DiamondMinecartInputPayload::inputFlags); + + public static final byte FLAG_FORWARD = 0x01; + public static final byte FLAG_BACK = 0x02; + public static final byte FLAG_LEFT = 0x04; + public static final byte FLAG_RIGHT = 0x08; + + public boolean isForward() { return (inputFlags & FLAG_FORWARD) != 0; } + public boolean isBack() { return (inputFlags & FLAG_BACK) != 0; } + public boolean isLeft() { return (inputFlags & FLAG_LEFT) != 0; } + public boolean isRight() { return (inputFlags & FLAG_RIGHT) != 0; } + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/GravityGunPrimaryPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/GravityGunPrimaryPayload.java new file mode 100644 index 00000000..a3845c5a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/GravityGunPrimaryPayload.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record GravityGunPrimaryPayload() implements CustomPacketPayload { + public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "gravity_gun_primary")); + public static final StreamCodec STREAM_CODEC = StreamCodec.unit(new GravityGunPrimaryPayload()); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/GravityGunScrollPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/GravityGunScrollPayload.java new file mode 100644 index 00000000..a7e2850d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/GravityGunScrollPayload.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record GravityGunScrollPayload(double distanceDelta) implements CustomPacketPayload { + public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "gravity_gun_scroll")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.DOUBLE, + GravityGunScrollPayload::distanceDelta, + GravityGunScrollPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/GravityStatePayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/GravityStatePayload.java new file mode 100644 index 00000000..195e8375 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/GravityStatePayload.java @@ -0,0 +1,52 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record GravityStatePayload( + int entityId, + int directionId, + int previousDirectionId, + boolean forced, + int transitionDuration, + int transitionRemaining +) implements CustomPacketPayload { + public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "gravity_state")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.VAR_INT, + GravityStatePayload::entityId, + ByteBufCodecs.VAR_INT, + GravityStatePayload::directionId, + ByteBufCodecs.VAR_INT, + GravityStatePayload::previousDirectionId, + ByteBufCodecs.BOOL, + GravityStatePayload::forced, + ByteBufCodecs.VAR_INT, + GravityStatePayload::transitionDuration, + ByteBufCodecs.VAR_INT, + GravityStatePayload::transitionRemaining, + GravityStatePayload::new + ); + + public GravityStatePayload(int entityId, AntarchyGravityDirection direction, AntarchyGravityDirection previousDirection, boolean forced, int transitionDuration, int transitionRemaining) { + this(entityId, direction.getId(), previousDirection.getId(), forced, transitionDuration, transitionRemaining); + } + + public AntarchyGravityDirection direction() { + return AntarchyGravityDirection.byId(this.directionId); + } + + public AntarchyGravityDirection previousDirection() { + return AntarchyGravityDirection.byId(this.previousDirectionId); + } + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/ScorpionWhipTetherPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/ScorpionWhipTetherPayload.java new file mode 100644 index 00000000..337be03c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/ScorpionWhipTetherPayload.java @@ -0,0 +1,26 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record ScorpionWhipTetherPayload(int playerId, int targetId) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "scorpion_whip_tether")); + + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.VAR_INT, + ScorpionWhipTetherPayload::playerId, + ByteBufCodecs.VAR_INT, + ScorpionWhipTetherPayload::targetId, + ScorpionWhipTetherPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/ThoraxisWeatherPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/ThoraxisWeatherPayload.java new file mode 100644 index 00000000..000e4fe7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/ThoraxisWeatherPayload.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherKind; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record ThoraxisWeatherPayload( + String dimensionId, + String weatherId, + long expiresAt, + int anchorX, + int anchorY, + int anchorZ +) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis_weather")); + + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.STRING_UTF8, + ThoraxisWeatherPayload::dimensionId, + ByteBufCodecs.STRING_UTF8, + ThoraxisWeatherPayload::weatherId, + ByteBufCodecs.VAR_LONG, + ThoraxisWeatherPayload::expiresAt, + ByteBufCodecs.VAR_INT, + ThoraxisWeatherPayload::anchorX, + ByteBufCodecs.VAR_INT, + ThoraxisWeatherPayload::anchorY, + ByteBufCodecs.VAR_INT, + ThoraxisWeatherPayload::anchorZ, + ThoraxisWeatherPayload::new + ); + + public ThoraxisWeatherPayload(ResourceLocation dimensionId, ThoraxisWeatherKind kind, long expiresAt, int anchorX, int anchorY, int anchorZ) { + this(dimensionId.toString(), kind.id(), expiresAt, anchorX, anchorY, anchorZ); + } + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherKind.java b/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherKind.java new file mode 100644 index 00000000..03d25ca1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherKind.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.content.weather; + +import java.util.Optional; + +public enum ThoraxisWeatherKind { + NONE("none"), + INVERSION_STORM("inversion_storm"), + BLOOD_RAIN("blood_rain"), + SHARKNADO("sharknado"), + SANDSTORM("sandstorm"); + + private final String id; + + ThoraxisWeatherKind(String id) { + this.id = id; + } + + public String id() { + return this.id; + } + + public boolean isActive() { + return this != NONE; + } + + public static ThoraxisWeatherKind byId(String value) { + if (value == null) { + return NONE; + } + + for (ThoraxisWeatherKind kind : values()) { + if (kind.id.equalsIgnoreCase(value)) { + return kind; + } + } + + return NONE; + } + + public static Optional parse(String value) { + ThoraxisWeatherKind kind = byId(value); + return kind == NONE ? Optional.empty() : Optional.of(kind); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherManager.java b/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherManager.java new file mode 100644 index 00000000..460dbe06 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherManager.java @@ -0,0 +1,365 @@ +package com.craisinlord.antarchy.content.weather; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.cloud_shark.SharknadoManager; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.BlockParticleOption; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.LightningBolt; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Blocks; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.WeakHashMap; +import java.util.UUID; + +public final class ThoraxisWeatherManager { + private static final ResourceLocation THORAXIS_DIMENSION = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis"); + private static final ResourceKey THORAXIS_WASTES = ResourceKey.create( + net.minecraft.core.registries.Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_wastes") + ); + private static final ResourceKey DREAM_DUNES = ResourceKey.create( + net.minecraft.core.registries.Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_dunes") + ); + private static final ResourceKey LUCID_POOLS = ResourceKey.create( + net.minecraft.core.registries.Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "lucid_pools") + ); + private static final ResourceKey CLOUD_SEA = ResourceKey.create( + net.minecraft.core.registries.Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cloud_sea") + ); + private static final int WEATHER_RECHECK_MIN_TICKS = 400; + private static final int WEATHER_RECHECK_MAX_TICKS = 900; + private static final int STORM_MIN_TICKS = 600; + private static final int STORM_MAX_TICKS = 1800; + private static final int INVERSION_STRIKE_INTERVAL = 600; + private static final int INVERSION_GRAVITY_TICKS = 220; + private static final int INVERSION_EFFECT_TICKS = 200; + private static final int WEATHER_PARTICLE_INTERVAL = 4; + private static final double WEATHER_RADIUS = 48.0D; + + private static final WeakHashMap STATES = new WeakHashMap<>(); + + private ThoraxisWeatherManager() { + } + + public static ThoraxisWeatherSnapshot tick(ServerLevel level) { + if (!isThoraxis(level)) { + return null; + } + + WeatherState state = STATES.computeIfAbsent(level, ignored -> new WeatherState()); + long now = level.getGameTime(); + RandomSource random = level.getRandom(); + + if (state.kind.isActive()) { + runActiveWeather(level, state, now); + if (now >= state.expiresAt) { + state.clear(now + randomCooldown(random)); + return snapshot(level, state); + } + return null; + } + + if (now < state.nextDecisionAt) { + return null; + } + + WeatherKindSelection selection = chooseWeather(level, random); + if (selection.kind == ThoraxisWeatherKind.NONE) { + state.nextDecisionAt = now + randomCooldown(random); + return null; + } + + state.start(selection.kind, selection.anchor, now, now + randomDuration(random)); + runActiveWeather(level, state, now); + return snapshot(level, state); + } + + public static ThoraxisWeatherSnapshot snapshot(ServerLevel level) { + WeatherState state = STATES.get(level); + if (state == null) { + return new ThoraxisWeatherSnapshot(level.dimension().location(), ThoraxisWeatherKind.NONE, 0L, BlockPos.ZERO); + } + + return snapshot(level, state); + } + + public static ThoraxisWeatherSnapshot force(ServerLevel level, ThoraxisWeatherKind kind, BlockPos anchor, long durationTicks) { + if (!isThoraxis(level)) { + return new ThoraxisWeatherSnapshot(level.dimension().location(), ThoraxisWeatherKind.NONE, 0L, BlockPos.ZERO); + } + + WeatherState state = STATES.computeIfAbsent(level, ignored -> new WeatherState()); + long now = level.getGameTime(); + if (kind == null || !kind.isActive()) { + state.clear(now + randomCooldown(level.getRandom())); + return snapshot(level, state); + } + + long expiresAt = durationTicks <= 0L ? now + randomDuration(level.getRandom()) : now + durationTicks; + state.start(kind, anchor == null ? BlockPos.ZERO : anchor, now, expiresAt); + runActiveWeather(level, state, now); + return snapshot(level, state); + } + + public static ThoraxisWeatherSnapshot clear(ServerLevel level) { + if (!isThoraxis(level)) { + return new ThoraxisWeatherSnapshot(level.dimension().location(), ThoraxisWeatherKind.NONE, 0L, BlockPos.ZERO); + } + + WeatherState state = STATES.computeIfAbsent(level, ignored -> new WeatherState()); + state.clear(level.getGameTime() + randomCooldown(level.getRandom())); + return snapshot(level, state); + } + + private static ThoraxisWeatherSnapshot snapshot(ServerLevel level, WeatherState state) { + return new ThoraxisWeatherSnapshot(level.dimension().location(), state.kind, state.expiresAt, state.anchor); + } + + private static void runActiveWeather(ServerLevel level, WeatherState state, long now) { + switch (state.kind) { + case INVERSION_STORM -> tickInversionStorm(level, state, now); + case BLOOD_RAIN -> tickBloodRain(level, state, now); + case SHARKNADO -> tickSharknadoWeather(level, state, now); + case SANDSTORM -> tickSandstorm(level, state, now); + default -> { + } + } + } + + private static void tickInversionStorm(ServerLevel level, WeatherState state, long now) { + cleanupExpiredForcedInversions(level, state, now); + if (now % INVERSION_STRIKE_INTERVAL != 0L) { + return; + } + + List targets = level.getEntitiesOfClass( + LivingEntity.class, + new net.minecraft.world.phys.AABB(state.anchor).inflate(WEATHER_RADIUS), + entity -> entity.isAlive() && !entity.isSpectator() + ); + + if (targets.isEmpty()) { + return; + } + + LivingEntity target = targets.get(level.getRandom().nextInt(targets.size())); + LightningBolt bolt = EntityType.LIGHTNING_BOLT.create(level); + if (bolt != null) { + bolt.moveTo(target.getX(), target.getY() + target.getBbHeight() * 0.5D, target.getZ()); + bolt.setVisualOnly(true); + level.addFreshEntity(bolt); + } + + if (!AntarchyGravityApi.isGravityForced(target)) { + AntarchyGravityApi.setForcedGravityDirection(target, AntarchyGravityDirection.UP, new AntarchyGravityTransition(12)); + state.forcedInversionExpiry.put(target.getUUID(), now + INVERSION_GRAVITY_TICKS); + } + + target.addEffect(new MobEffectInstance(AntarchyObjects.INVERTED_EFFECT.get(), INVERSION_EFFECT_TICKS, 0, false, true, true)); + } + + private static void cleanupExpiredForcedInversions(ServerLevel level, WeatherState state, long now) { + Iterator> iterator = state.forcedInversionExpiry.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + if (entry.getValue() > now) { + continue; + } + + LivingEntity entity = level.getEntity(entry.getKey()) instanceof LivingEntity living ? living : null; + if (entity != null && entity.isAlive() && AntarchyGravityApi.isGravityForced(entity)) { + AntarchyGravityApi.clearForcedGravity(entity); + } + iterator.remove(); + } + } + + private static void tickBloodRain(ServerLevel level, WeatherState state, long now) { + if (now % WEATHER_PARTICLE_INTERVAL != 0L) { + return; + } + + level.sendParticles( + new BlockParticleOption(ParticleTypes.BLOCK, Blocks.RED_SAND.defaultBlockState()), + state.anchor.getX() + 0.5D, + state.anchor.getY() + 28.0D, + state.anchor.getZ() + 0.5D, + 26, + 18.0D, + 12.0D, + 18.0D, + 0.12D + ); + level.playSound(null, state.anchor, SoundEvents.LIGHTNING_BOLT_THUNDER, net.minecraft.sounds.SoundSource.WEATHER, 0.2F, 0.8F); + } + + private static void tickSandstorm(ServerLevel level, WeatherState state, long now) { + if (now % WEATHER_PARTICLE_INTERVAL != 0L) { + return; + } + + level.sendParticles( + new BlockParticleOption(ParticleTypes.BLOCK, Blocks.SAND.defaultBlockState()), + state.anchor.getX() + 0.5D, + state.anchor.getY() + 12.0D, + state.anchor.getZ() + 0.5D, + 40, + 14.0D, + 6.0D, + 14.0D, + 0.10D + ); + } + + private static void tickSharknadoWeather(ServerLevel level, WeatherState state, long now) { + if (now == state.startedAt) { + seedSharknado(level, state.anchor); + } + + if (now % WEATHER_PARTICLE_INTERVAL != 0L) { + return; + } + + level.sendParticles( + ParticleTypes.CLOUD, + state.anchor.getX() + 0.5D, + state.anchor.getY() + 8.0D, + state.anchor.getZ() + 0.5D, + 26, + 10.0D, + 8.0D, + 10.0D, + 0.12D + ); + } + + private static void seedSharknado(ServerLevel level, BlockPos anchor) { + SharknadoManager manager = SharknadoManager.get(level); + for (int i = 0; i < 4; i++) { + CloudSharkEntity shark = createCloudShark(level); + if (shark == null) { + continue; + } + + double x = anchor.getX() + level.getRandom().nextDouble() * 10.0D - 5.0D; + double y = anchor.getY() + 6.0D + level.getRandom().nextDouble() * 6.0D; + double z = anchor.getZ() + level.getRandom().nextDouble() * 10.0D - 5.0D; + shark.moveTo(x, y, z, level.getRandom().nextFloat() * 360.0F, 0.0F); + level.addFreshEntity(shark); + manager.tryFormOrJoin(shark, level); + } + } + + private static CloudSharkEntity createCloudShark(ServerLevel level) { + EntityType entityType = BuiltInRegistries.ENTITY_TYPE.getOptional(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cloud_shark")) + .orElse(null); + if (entityType == null) { + return null; + } + + return entityType.create(level) instanceof CloudSharkEntity cloudShark ? cloudShark : null; + } + + private static WeatherKindSelection chooseWeather(ServerLevel level, RandomSource random) { + var players = level.players(); + if (players.isEmpty()) { + return WeatherKindSelection.none(); + } + + LivingEntity anchorEntity = players.get(random.nextInt(players.size())); + BlockPos anchor = anchorEntity.blockPosition(); + var biome = level.getBiome(anchor); + + if (biome.is(DREAM_DUNES)) { + return new WeatherKindSelection(ThoraxisWeatherKind.SANDSTORM, anchor); + } + + if (biome.is(CLOUD_SEA)) { + return new WeatherKindSelection(ThoraxisWeatherKind.SHARKNADO, anchor); + } + + if (biome.is(LUCID_POOLS)) { + return random.nextFloat() < 0.35F + ? new WeatherKindSelection(ThoraxisWeatherKind.BLOOD_RAIN, anchor) + : WeatherKindSelection.none(); + } + + if (biome.is(THORAXIS_WASTES)) { + float roll = random.nextFloat(); + if (roll < 0.58F) { + return new WeatherKindSelection(ThoraxisWeatherKind.INVERSION_STORM, anchor); + } + if (roll < 0.88F) { + return new WeatherKindSelection(ThoraxisWeatherKind.BLOOD_RAIN, anchor); + } + } + + return WeatherKindSelection.none(); + } + + private static int randomDuration(RandomSource random) { + return STORM_MIN_TICKS + random.nextInt(STORM_MAX_TICKS - STORM_MIN_TICKS + 1); + } + + private static int randomCooldown(RandomSource random) { + return WEATHER_RECHECK_MIN_TICKS + random.nextInt(WEATHER_RECHECK_MAX_TICKS - WEATHER_RECHECK_MIN_TICKS + 1); + } + + private static boolean isThoraxis(ServerLevel level) { + return level.dimension().location().equals(THORAXIS_DIMENSION); + } + + private record WeatherKindSelection(ThoraxisWeatherKind kind, BlockPos anchor) { + private static WeatherKindSelection none() { + return new WeatherKindSelection(ThoraxisWeatherKind.NONE, BlockPos.ZERO); + } + } + + private static final class WeatherState { + private ThoraxisWeatherKind kind = ThoraxisWeatherKind.NONE; + private long expiresAt; + private long nextDecisionAt; + private long startedAt; + private BlockPos anchor = BlockPos.ZERO; + private final Map forcedInversionExpiry = new java.util.HashMap<>(); + + private void start(ThoraxisWeatherKind kind, BlockPos anchor, long startedAt, long expiresAt) { + this.kind = kind; + this.anchor = anchor; + this.startedAt = startedAt; + this.expiresAt = expiresAt; + this.nextDecisionAt = expiresAt; + } + + private void clear(long nextDecisionAt) { + this.kind = ThoraxisWeatherKind.NONE; + this.anchor = BlockPos.ZERO; + this.expiresAt = 0L; + this.startedAt = 0L; + this.nextDecisionAt = nextDecisionAt; + this.forcedInversionExpiry.clear(); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherSnapshot.java b/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherSnapshot.java new file mode 100644 index 00000000..69413172 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/weather/ThoraxisWeatherSnapshot.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.content.weather; + +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; + +public record ThoraxisWeatherSnapshot( + ResourceLocation dimension, + ThoraxisWeatherKind kind, + long expiresAt, + BlockPos anchor +) { + public boolean isActive() { + return this.kind != ThoraxisWeatherKind.NONE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/BaseAntNestFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/BaseAntNestFeature.java new file mode 100644 index 00000000..78d951d0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/BaseAntNestFeature.java @@ -0,0 +1,63 @@ +package com.craisinlord.antarchy.content.worldgen.ants; + +import com.craisinlord.antarchy.content.block.AntNestBlock; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +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.SimpleBlockConfiguration; + +public abstract class BaseAntNestFeature extends Feature { + protected BaseAntNestFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos nestPos = this.resolveNestPos(level, context.origin()); + BlockPos aboveNestPos = nestPos.above(); + BlockPos supportPos = nestPos.below(); + BlockState nestGroundState = level.getBlockState(nestPos); + BlockState supportState = level.getBlockState(supportPos); + + if (!level.getBlockState(aboveNestPos).canBeReplaced()) { + return false; + } + + if (!this.isValidNestGround(nestGroundState) || !nestGroundState.getFluidState().isEmpty()) { + return false; + } + + if (!supportState.isFaceSturdy(level, supportPos, Direction.UP) || !supportState.getFluidState().isEmpty()) { + return false; + } + + BlockState nestState = context.config().toPlace().getState(context.random(), nestPos); + if (nestState.hasProperty(AntNestBlock.FACING)) { + nestState = nestState.setValue(AntNestBlock.FACING, Direction.Plane.HORIZONTAL.getRandomDirection(context.random())); + } + + if (!nestState.canSurvive(level, nestPos)) { + return false; + } + + level.setBlock(nestPos, nestState, 2); + this.decorateAroundNest(level, nestPos, context.random()); + return true; + } + + protected BlockPos resolveNestPos(WorldGenLevel level, BlockPos origin) { + int y = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, origin.getX(), origin.getZ()) - 1; + return new BlockPos(origin.getX(), y, origin.getZ()); + } + + protected abstract boolean isValidNestGround(BlockState nestGroundState); + + protected abstract void decorateAroundNest(WorldGenLevel level, BlockPos center, RandomSource random); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/BrownAntNestFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/BrownAntNestFeature.java new file mode 100644 index 00000000..75861a28 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/BrownAntNestFeature.java @@ -0,0 +1,45 @@ +package com.craisinlord.antarchy.content.worldgen.ants; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +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.feature.configurations.SimpleBlockConfiguration; + +public class BrownAntNestFeature extends SurfaceAntNestFeature { + public BrownAntNestFeature(Codec codec) { + super(codec); + } + + @Override + protected boolean isValidNestGround(BlockState nestGroundState) { + return nestGroundState.is(BlockTags.DIRT) + || nestGroundState.is(Blocks.GRASS_BLOCK) + || nestGroundState.is(Blocks.MOSS_BLOCK) + || nestGroundState.is(Blocks.COARSE_DIRT); + } + + @Override + protected void decorateAroundNest(WorldGenLevel level, BlockPos center, RandomSource random) { + for (int xOffset = -1; xOffset <= 1; xOffset++) { + for (int zOffset = -1; zOffset <= 1; zOffset++) { + if (xOffset == 0 && zOffset == 0) { + continue; + } + + if (Math.abs(xOffset) == 1 && Math.abs(zOffset) == 1 && random.nextBoolean()) { + continue; + } + + BlockPos targetPos = center.offset(xOffset, 0, zOffset); + BlockState targetState = level.getBlockState(targetPos); + if (targetState.is(BlockTags.DIRT) || targetState.is(Blocks.GRASS_BLOCK) || targetState.is(Blocks.MOSS_BLOCK)) { + level.setBlock(targetPos, Blocks.COARSE_DIRT.defaultBlockState(), 2); + } + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/RainbowAntNestFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/RainbowAntNestFeature.java new file mode 100644 index 00000000..82ddf280 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/RainbowAntNestFeature.java @@ -0,0 +1,45 @@ +package com.craisinlord.antarchy.content.worldgen.ants; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +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.feature.configurations.SimpleBlockConfiguration; + +public class RainbowAntNestFeature extends SurfaceAntNestFeature { + public RainbowAntNestFeature(Codec codec) { + super(codec); + } + + @Override + protected boolean isValidNestGround(BlockState nestGroundState) { + return nestGroundState.is(BlockTags.DIRT) + || nestGroundState.is(Blocks.GRASS_BLOCK) + || nestGroundState.is(Blocks.MOSS_BLOCK) + || nestGroundState.is(Blocks.COARSE_DIRT); + } + + @Override + protected void decorateAroundNest(WorldGenLevel level, BlockPos center, RandomSource random) { + for (int xOffset = -1; xOffset <= 1; xOffset++) { + for (int zOffset = -1; zOffset <= 1; zOffset++) { + if (xOffset == 0 && zOffset == 0) { + continue; + } + + if (Math.abs(xOffset) == 1 && Math.abs(zOffset) == 1 && random.nextBoolean()) { + continue; + } + + BlockPos targetPos = center.offset(xOffset, 0, zOffset); + BlockState targetState = level.getBlockState(targetPos); + if (targetState.is(BlockTags.DIRT) || targetState.is(Blocks.GRASS_BLOCK) || targetState.is(Blocks.MOSS_BLOCK)) { + level.setBlock(targetPos, Blocks.COARSE_DIRT.defaultBlockState(), 2); + } + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/RedAntNestFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/RedAntNestFeature.java new file mode 100644 index 00000000..fda5f229 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/RedAntNestFeature.java @@ -0,0 +1,79 @@ +package com.craisinlord.antarchy.content.worldgen.ants; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +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.feature.configurations.SimpleBlockConfiguration; + +public class RedAntNestFeature extends BaseAntNestFeature { + public RedAntNestFeature(Codec codec) { + super(codec); + } + + @Override + protected BlockPos resolveNestPos(WorldGenLevel level, BlockPos origin) { + int startY = level.getHeight(net.minecraft.world.level.levelgen.Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, origin.getX(), origin.getZ()) - 1; + int minY = level.getMinBuildHeight() + 1; + + for (int y = startY; y >= minY; y--) { + BlockPos candidate = new BlockPos(origin.getX(), y, origin.getZ()); + BlockState surfaceState = level.getBlockState(candidate); + BlockState aboveState = level.getBlockState(candidate.above()); + BlockState supportState = level.getBlockState(candidate.below()); + + if (surfaceState.getFluidState().isEmpty() + && this.isValidNestGround(surfaceState) + && aboveState.canBeReplaced() + && aboveState.getFluidState().isEmpty() + && supportState.isFaceSturdy(level, candidate.below(), Direction.UP) + && supportState.getFluidState().isEmpty()) { + return candidate; + } + } + + return new BlockPos(origin.getX(), startY, origin.getZ()); + } + + @Override + protected boolean isValidNestGround(BlockState nestGroundState) { + return nestGroundState.is(BlockTags.BASE_STONE_NETHER) + || nestGroundState.is(Blocks.BLACKSTONE) + || nestGroundState.is(Blocks.SOUL_SAND) + || nestGroundState.is(Blocks.SOUL_SOIL) + || nestGroundState.is(Blocks.GRAVEL) + || nestGroundState.is(Blocks.MAGMA_BLOCK) + || nestGroundState.is(AntarchyObjects.NYXITE.get()); + } + + @Override + protected void decorateAroundNest(WorldGenLevel level, BlockPos center, RandomSource random) { + for (int xOffset = -1; xOffset <= 1; xOffset++) { + for (int zOffset = -1; zOffset <= 1; zOffset++) { + if (xOffset == 0 && zOffset == 0) { + continue; + } + + if (Math.abs(xOffset) == 1 && Math.abs(zOffset) == 1 && random.nextBoolean()) { + continue; + } + + BlockPos targetPos = center.offset(xOffset, 0, zOffset); + BlockState targetState = level.getBlockState(targetPos); + if (targetState.is(BlockTags.BASE_STONE_NETHER) + || targetState.is(Blocks.BLACKSTONE) + || targetState.is(Blocks.SOUL_SAND) + || targetState.is(Blocks.SOUL_SOIL) + || targetState.is(Blocks.GRAVEL) + || targetState.is(AntarchyObjects.NYXITE.get())) { + level.setBlock(targetPos, Blocks.MAGMA_BLOCK.defaultBlockState(), 2); + } + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/SurfaceAntNestFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/SurfaceAntNestFeature.java new file mode 100644 index 00000000..11f55550 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/SurfaceAntNestFeature.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.content.worldgen.ants; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +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.feature.configurations.SimpleBlockConfiguration; + +public abstract class SurfaceAntNestFeature extends BaseAntNestFeature { + protected SurfaceAntNestFeature(Codec codec) { + super(codec); + } + + @Override + protected boolean isValidNestGround(BlockState nestGroundState) { + return nestGroundState.is(BlockTags.DIRT) + || nestGroundState.is(Blocks.GRASS_BLOCK) + || nestGroundState.is(Blocks.MOSS_BLOCK); + } + + @Override + protected void decorateAroundNest(WorldGenLevel level, BlockPos center, RandomSource random) { + for (int xOffset = -1; xOffset <= 1; xOffset++) { + for (int zOffset = -1; zOffset <= 1; zOffset++) { + if (xOffset == 0 && zOffset == 0) { + continue; + } + + if (Math.abs(xOffset) == 1 && Math.abs(zOffset) == 1 && random.nextBoolean()) { + continue; + } + + BlockPos targetPos = center.offset(xOffset, 0, zOffset); + BlockState targetState = level.getBlockState(targetPos); + if (targetState.is(BlockTags.DIRT) || targetState.is(Blocks.GRASS_BLOCK) || targetState.is(Blocks.MOSS_BLOCK)) { + level.setBlock(targetPos, Blocks.ROOTED_DIRT.defaultBlockState(), 2); + } + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/TermiteNestFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/TermiteNestFeature.java new file mode 100644 index 00000000..dc49f044 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ants/TermiteNestFeature.java @@ -0,0 +1,10 @@ +package com.craisinlord.antarchy.content.worldgen.ants; + +import com.mojang.serialization.Codec; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; + +public class TermiteNestFeature extends SurfaceAntNestFeature { + public TermiteNestFeature(Codec codec) { + super(codec); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/BrutalflyCocoonFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/BrutalflyCocoonFeature.java new file mode 100644 index 00000000..e68f0827 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/BrutalflyCocoonFeature.java @@ -0,0 +1,212 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.WorldGenRegion; +import net.minecraft.tags.BlockTags; +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; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BrutalflyCocoonFeature extends Feature { + private static final Logger LOGGER = LoggerFactory.getLogger(BrutalflyCocoonFeature.class); + private static final int MAX_ANCHOR_Y = 160; + private static final int COCOON_CLEAR_RADIUS = 1; + private static final int COCOON_CLEAR_MIN_Y_OFFSET = -16; + private static final int COCOON_CLEAR_MAX_Y_OFFSET = -1; + private static final int MIN_CANOPY_SUPPORTS = 4; + + public BrutalflyCocoonFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + ServerLevel serverLevel; + if (level instanceof WorldGenRegion region) { + serverLevel = region.getLevel(); + } else if (level instanceof ServerLevel sl) { + serverLevel = sl; + } else { + return false; + } + + RandomSource random = context.random(); + BlockPos origin = context.origin(); + int chunkX = origin.getX() & ~15; + int chunkZ = origin.getZ() & ~15; + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + int failNoLog = 0; + int failClearBelow = 0; + + for (int attempt = 0; attempt < 12; attempt++) { + int x = chunkX + 1 + random.nextInt(14); + int z = chunkZ + 1 + random.nextInt(14); + int groundY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z); + if (groundY <= level.getMinBuildHeight() + 12) { + continue; + } + + int searchTopY = Math.min(MAX_ANCHOR_Y, level.getMaxBuildHeight() - 2); + boolean foundLog = false; + for (int y = searchTopY; y > groundY + 12; y--) { + pos.set(x, y, z); + if (!level.getBlockState(pos).is(BlockTags.LOGS)) { + continue; + } + + foundLog = true; + BlockPos anchor = pos.immutable(); + BlockPos blocker = findCocoonBlocker(level, anchor); + if (blocker != null) { + failClearBelow++; + LOGGER.info( + "[BrutalflyCocoon] chamber failed at log ({},{},{}) blocked by {} ({}) at {}", + x, + y, + z, + level.getBlockState(blocker), + level.getBlockState(blocker).getBlock(), + blocker + ); + continue; + } + + if (spawnCocoonedBrutalfly(serverLevel, level, anchor, random)) { + LOGGER.info("[BrutalflyCocoon] SUCCESS at ({},{},{})", x, y, z); + return true; + } + return false; + } + + if (!foundLog) { + failNoLog++; + } + } + + LOGGER.info( + "[BrutalflyCocoon] FAILED for chunk ({},{}): no-log={}, chamber={}", + chunkX >> 4, + chunkZ >> 4, + failNoLog, + failClearBelow + ); + return false; + } + + static int maxAnchorY() { + return MAX_ANCHOR_Y; + } + + static boolean canUseAnchor(WorldGenLevel level, BlockPos anchor) { + return findCocoonBlocker(level, anchor) == null; + } + + static boolean spawnCocoonedBrutalfly(ServerLevel serverLevel, WorldGenLevel level, BlockPos anchor, RandomSource random) { + if (!canUseAnchor(level, anchor)) { + return false; + } + + clearCocoonVolume(level, anchor); + BrutalflyEntity brutalfly = AntarchyObjects.BRUTALFLY.get().create(serverLevel); + if (brutalfly == null) { + return false; + } + + brutalfly.moveTo( + anchor.getX() + 0.5, + anchor.getY() - 15.0, + anchor.getZ() + 0.5, + random.nextFloat() * 360.0F, + 0.0F + ); + brutalfly.setCocooned(true, anchor); + brutalfly.setHealth(brutalfly.getMaxHealth()); + serverLevel.addFreshEntity(brutalfly); + return true; + } + + static @org.jetbrains.annotations.Nullable BlockPos findCocoonBlocker(WorldGenLevel level, BlockPos anchor) { + if (!hasCanopySupport(level, anchor)) { + return anchor; + } + + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + for (int dy = COCOON_CLEAR_MIN_Y_OFFSET; dy <= COCOON_CLEAR_MAX_Y_OFFSET; dy++) { + int worldY = anchor.getY() + dy; + for (int dx = -COCOON_CLEAR_RADIUS; dx <= COCOON_CLEAR_RADIUS; dx++) { + for (int dz = -COCOON_CLEAR_RADIUS; dz <= COCOON_CLEAR_RADIUS; dz++) { + if (dy == 0 && dx == 0 && dz == 0) { + continue; + } + + pos.set(anchor.getX() + dx, worldY, anchor.getZ() + dz); + if (!isClearableForCocoon(level.getBlockState(pos))) { + return pos.immutable(); + } + } + } + } + + return null; + } + + static void clearCocoonVolume(WorldGenLevel level, BlockPos anchor) { + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + for (int dy = COCOON_CLEAR_MIN_Y_OFFSET; dy <= COCOON_CLEAR_MAX_Y_OFFSET; dy++) { + int worldY = anchor.getY() + dy; + for (int dx = -COCOON_CLEAR_RADIUS; dx <= COCOON_CLEAR_RADIUS; dx++) { + for (int dz = -COCOON_CLEAR_RADIUS; dz <= COCOON_CLEAR_RADIUS; dz++) { + if (dy == 0 && dx == 0 && dz == 0) { + continue; + } + + pos.set(anchor.getX() + dx, worldY, anchor.getZ() + dz); + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 3); + } + } + } + } + + private static boolean hasCanopySupport(WorldGenLevel level, BlockPos anchor) { + int supports = 0; + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + if (dx == 0 && dz == 0) { + continue; + } + + BlockState neighbor = level.getBlockState(anchor.offset(dx, 0, dz)); + if (neighbor.is(BlockTags.LOGS) || neighbor.is(BlockTags.LEAVES)) { + supports++; + } + } + } + + BlockState above = level.getBlockState(anchor.above()); + if (above.is(BlockTags.LOGS) || above.is(BlockTags.LEAVES)) { + supports += 2; + } + + return supports >= MIN_CANOPY_SUPPORTS; + } + + private static boolean isClearableForCocoon(BlockState state) { + return state.isAir() + || state.canBeReplaced() + || state.is(BlockTags.LEAVES) + || state.is(BlockTags.LOGS) + || !state.getFluidState().isEmpty(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java new file mode 100644 index 00000000..99958d6a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java @@ -0,0 +1,96 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import java.util.stream.Stream; +import net.minecraft.core.Holder; +import net.minecraft.core.QuartPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSource; + +public class ElythiaBiomeSource extends BiomeSource { + private static final ResourceKey MOLEWORM_CAVES = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "moleworm_caves") + ); + private static final int[] SURFACE_FALLBACK_BLOCK_YS = new int[]{192, 160, 128, 96, 64, 32, 0}; + + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + MultiNoiseBiomeSource.DIRECT_CODEC.forGetter(ElythiaBiomeSource::parameters), + Codec.INT.optionalFieldOf("moleworm_caves_max_y", 72).forGetter(ElythiaBiomeSource::molewormCavesMaxY), + Codec.INT.optionalFieldOf("surface_biome_sample_y", 160).forGetter(ElythiaBiomeSource::surfaceBiomeSampleY) + ).apply(instance, ElythiaBiomeSource::new)); + + private final Climate.ParameterList> parameters; + private final MultiNoiseBiomeSource delegate; + private final int molewormCavesMaxY; + private final int surfaceBiomeSampleY; + private final int molewormCavesMaxQuartY; + private final int surfaceBiomeSampleQuartY; + + public ElythiaBiomeSource(Climate.ParameterList> parameters, int molewormCavesMaxY, int surfaceBiomeSampleY) { + this.parameters = parameters; + this.delegate = MultiNoiseBiomeSource.createFromList(parameters); + this.molewormCavesMaxY = molewormCavesMaxY; + this.surfaceBiomeSampleY = surfaceBiomeSampleY; + this.molewormCavesMaxQuartY = QuartPos.fromBlock(molewormCavesMaxY); + this.surfaceBiomeSampleQuartY = QuartPos.fromBlock(surfaceBiomeSampleY); + } + + private Climate.ParameterList> parameters() { + return this.parameters; + } + + private int molewormCavesMaxY() { + return this.molewormCavesMaxY; + } + + private int surfaceBiomeSampleY() { + return this.surfaceBiomeSampleY; + } + + @Override + protected MapCodec codec() { + return CODEC; + } + + @Override + protected Stream> collectPossibleBiomes() { + return this.delegate.possibleBiomes().stream(); + } + + @Override + public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { + Holder biome = this.delegate.getNoiseBiome(x, y, z, sampler); + if (!biome.is(MOLEWORM_CAVES) || y <= this.molewormCavesMaxQuartY) { + return biome; + } + + Holder fallback = this.delegate.getNoiseBiome(x, this.surfaceBiomeSampleQuartY, z, sampler); + if (!fallback.is(MOLEWORM_CAVES)) { + return fallback; + } + + for (int sampleBlockY : SURFACE_FALLBACK_BLOCK_YS) { + Holder candidate = this.delegate.getNoiseBiome(x, QuartPos.fromBlock(sampleBlockY), z, sampler); + if (!candidate.is(MOLEWORM_CAVES)) { + return candidate; + } + } + + return fallback; + } + + @Override + public void addDebugInfo(java.util.List debug, net.minecraft.core.BlockPos pos, Climate.Sampler sampler) { + this.delegate.addDebugInfo(debug, pos, sampler); + debug.add("Elythia mole cave cap: y<=" + this.molewormCavesMaxY); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java new file mode 100644 index 00000000..a958749d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java @@ -0,0 +1,418 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +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.DoublePlantBlock; +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 class ElythiaFloraFeature extends Feature { + private final Variant variant; + + public ElythiaFloraFeature(Codec codec, Variant variant) { + super(codec); + this.variant = variant; + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + int attempts = switch (this.variant) { + case FOREST -> 32; + case MEADOW -> 80; + case TORCHFLOWER_FIELDS -> 60; + case BUTTERFLY_FIELDS -> 150; + case FLOWER_FOREST_MILKWEED -> 14; + }; + int radius = switch (this.variant) { + case FOREST -> 8; + case MEADOW, TORCHFLOWER_FIELDS -> 14; + case BUTTERFLY_FIELDS -> 18; + case FLOWER_FOREST_MILKWEED -> 8; + }; + boolean placedAny = false; + + int torchflowerPatchRolls = switch (this.variant) { + case TORCHFLOWER_FIELDS -> 3 + random.nextInt(3); + case BUTTERFLY_FIELDS -> 2 + random.nextInt(3); + case FLOWER_FOREST_MILKWEED -> 0; + default -> 1; + }; + for (int i = 0; i < torchflowerPatchRolls; i++) { + float torchflowerChance = switch (this.variant) { + case FOREST -> 0.24F; + case MEADOW -> 0.42F; + case TORCHFLOWER_FIELDS -> 0.95F; + case BUTTERFLY_FIELDS -> 0.24F; + case FLOWER_FOREST_MILKWEED -> 0.0F; + }; + if (random.nextFloat() < torchflowerChance) { + placedAny |= this.placeTorchflowerPatch(level, origin, random); + } + } + + if (random.nextFloat() < switch (this.variant) { + case MEADOW -> 0.1F; + case TORCHFLOWER_FIELDS -> 0.04F; + case BUTTERFLY_FIELDS -> 0.12F; + case FOREST -> 0.05F; + case FLOWER_FOREST_MILKWEED -> 0.0F; + }) { + placedAny |= this.placePitcherPatch(level, origin, random); + } + if (random.nextFloat() < switch (this.variant) { + case MEADOW -> 0.16F; + case TORCHFLOWER_FIELDS -> 0.08F; + case BUTTERFLY_FIELDS -> 0.95F; + case FOREST -> 0.06F; + case FLOWER_FOREST_MILKWEED -> 0.18F; + }) { + placedAny |= this.placeMilkweedPatch(level, origin, random, AntarchyObjects.ORANGE_MILKWEED.get()); + } + if (random.nextFloat() < switch (this.variant) { + case MEADOW -> 0.16F; + case TORCHFLOWER_FIELDS -> 0.08F; + case BUTTERFLY_FIELDS -> 0.95F; + case FOREST -> 0.06F; + case FLOWER_FOREST_MILKWEED -> 0.18F; + }) { + placedAny |= this.placeMilkweedPatch(level, origin, random, AntarchyObjects.PINK_MILKWEED.get()); + } + + for (int i = 0; i < attempts; i++) { + int x = origin.getX() + random.nextInt(radius * 2 + 1) - radius; + int z = origin.getZ() + random.nextInt(radius * 2 + 1) - radius; + int y = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z); + BlockPos plantPos = new BlockPos(x, y, z); + BlockPos groundPos = plantPos.below(); + + if (!isValidPlantSpot(level, plantPos, groundPos)) { + continue; + } + + maybeOvergrowGround(level, groundPos, random, this.variant != Variant.FOREST); + if (placeSelectedPlant(level, plantPos, groundPos, random)) { + placedAny = true; + } + } + + placedAny |= this.placeSeagrass(level, origin, random, radius); + + return placedAny; + } + + private boolean placeSelectedPlant(WorldGenLevel level, BlockPos plantPos, BlockPos groundPos, RandomSource random) { + if (this.variant == Variant.TORCHFLOWER_FIELDS) { + float roll = random.nextFloat(); + if (roll < 0.14F) { + return placeDouble(level, plantPos, AntarchyObjects.TORCHFLOWER_BUSH.get().defaultBlockState()); + } + if (roll < 0.58F) { + return placeSingle(level, plantPos, Blocks.TORCHFLOWER); + } + if (roll < 0.82F) { + return placeSingle(level, plantPos, Blocks.SHORT_GRASS); + } + if (roll < 0.94F) { + return placeSingle(level, plantPos, Blocks.FERN); + } + return placeDouble(level, plantPos, Blocks.LARGE_FERN.defaultBlockState()); + } + + if (this.variant == Variant.BUTTERFLY_FIELDS) { + float roll = random.nextFloat(); + if (roll < 0.18F) { + return placeDouble(level, plantPos, AntarchyObjects.ORANGE_MILKWEED.get().defaultBlockState()); + } + if (roll < 0.36F) { + return placeDouble(level, plantPos, AntarchyObjects.PINK_MILKWEED.get().defaultBlockState()); + } + if (roll < 0.62F) { + return placeSingle(level, plantPos, Blocks.SHORT_GRASS); + } + if (roll < 0.84F) { + return placeSingle(level, plantPos, Blocks.FERN); + } + if (roll < 0.94F) { + return placeDouble(level, plantPos, Blocks.LARGE_FERN.defaultBlockState()); + } + return placeDouble(level, plantPos, Blocks.TALL_GRASS.defaultBlockState()); + } + + if (this.variant == Variant.FLOWER_FOREST_MILKWEED) { + float roll = random.nextFloat(); + if (roll < 0.04F) { + return placeDouble(level, plantPos, AntarchyObjects.ORANGE_MILKWEED.get().defaultBlockState()); + } + if (roll < 0.08F) { + return placeDouble(level, plantPos, AntarchyObjects.PINK_MILKWEED.get().defaultBlockState()); + } + if (roll < 0.62F) { + return placeSingle(level, plantPos, Blocks.SHORT_GRASS); + } + if (roll < 0.84F) { + return placeSingle(level, plantPos, Blocks.FERN); + } + return placeDouble(level, plantPos, Blocks.LARGE_FERN.defaultBlockState()); + } + + float roll = random.nextFloat(); + if (roll < 0.46F) { + return placeSingle(level, plantPos, Blocks.SHORT_GRASS); + } + if (roll < 0.84F) { + return placeSingle(level, plantPos, Blocks.FERN); + } + if (roll < 0.94F) { + return placeDouble(level, plantPos, Blocks.LARGE_FERN.defaultBlockState()); + } + return this.variant != Variant.FOREST && random.nextFloat() < 0.4F && isValidGround(level, groundPos) && placeSingle(level, plantPos, Blocks.SHORT_GRASS); + } + + private static boolean placeSingle(WorldGenLevel level, BlockPos pos, Block block) { + BlockState state = block.defaultBlockState(); + if (!isOpenPlantSpot(level, pos) || !state.canSurvive(level, pos)) { + return false; + } + level.setBlock(pos, state, 2); + return true; + } + + private static boolean placeDouble(WorldGenLevel level, BlockPos pos, BlockState state) { + if (!isOpenPlantSpot(level, pos) || !isOpenPlantSpot(level, pos.above()) || !state.canSurvive(level, pos)) { + return false; + } + DoublePlantBlock.placeAt(level, state, pos, 2); + return true; + } + + private boolean placeTorchflowerPatch(WorldGenLevel level, BlockPos origin, RandomSource random) { + BlockPos patchCenter = sampleSurface(level, origin, random, this.variant == Variant.FOREST ? 8 : 12); + if (patchCenter == null) { + return false; + } + + int radius = this.variant == Variant.TORCHFLOWER_FIELDS ? 4 : this.variant == Variant.MEADOW ? 3 : this.variant == Variant.BUTTERFLY_FIELDS ? 3 : 2; + int plants = this.variant == Variant.TORCHFLOWER_FIELDS + ? 8 + random.nextInt(8) + : this.variant == Variant.BUTTERFLY_FIELDS + ? 4 + random.nextInt(5) + : 3 + random.nextInt(this.variant == Variant.MEADOW ? 4 : 3); + boolean placed = false; + for (int i = 0; i < plants; i++) { + BlockPos plantPos = samplePatchPos(level, patchCenter, radius, random); + if (plantPos == null) { + continue; + } + if (placeSingle(level, plantPos, Blocks.TORCHFLOWER)) { + placed = true; + } + } + return placed; + } + + private boolean placePitcherPatch(WorldGenLevel level, BlockPos origin, RandomSource random) { + BlockPos patchCenter = sampleSurface(level, origin, random, this.variant == Variant.FOREST ? 8 : 13); + if (patchCenter == null) { + return false; + } + + int radius = this.variant == Variant.BUTTERFLY_FIELDS ? 5 : this.variant == Variant.MEADOW ? 4 : this.variant == Variant.FLOWER_FOREST_MILKWEED ? 3 : 3; + int plants = this.variant == Variant.BUTTERFLY_FIELDS ? 10 + random.nextInt(12) : this.variant == Variant.FLOWER_FOREST_MILKWEED ? 2 + random.nextInt(3) : 5 + random.nextInt(11); + boolean placed = false; + for (int i = 0; i < plants; i++) { + BlockPos plantPos = samplePatchPos(level, patchCenter, radius, random); + if (plantPos == null) { + continue; + } + + BlockPos groundPos = plantPos.below(); + if (!isValidPlantSpot(level, plantPos, groundPos)) { + continue; + } + + if (placeDouble(level, plantPos, Blocks.PITCHER_PLANT.defaultBlockState())) { + placed = true; + } + } + return placed; + } + + private boolean placeMilkweedPatch(WorldGenLevel level, BlockPos origin, RandomSource random, Block flower) { + BlockPos patchCenter = sampleSurface(level, origin, random, this.variant == Variant.FOREST ? 8 : 13); + if (patchCenter == null) { + return false; + } + + int radius = this.variant == Variant.BUTTERFLY_FIELDS ? 7 : this.variant == Variant.MEADOW ? 4 : this.variant == Variant.FLOWER_FOREST_MILKWEED ? 3 : 3; + int plants = this.variant == Variant.BUTTERFLY_FIELDS ? 14 + random.nextInt(16) : this.variant == Variant.FLOWER_FOREST_MILKWEED ? 2 + random.nextInt(4) : 4 + random.nextInt(9); + boolean placed = false; + for (int i = 0; i < plants; i++) { + BlockPos plantPos = samplePatchPos(level, patchCenter, radius, random); + if (plantPos == null) { + continue; + } + + BlockPos groundPos = plantPos.below(); + if (!isValidPlantSpot(level, plantPos, groundPos)) { + continue; + } + + if (placeDouble(level, plantPos, flower.defaultBlockState())) { + placed = true; + } + } + return placed; + } + + private boolean placeSeagrass(WorldGenLevel level, BlockPos origin, RandomSource random, int radius) { + int attempts = switch (this.variant) { + case FOREST -> 3; + case MEADOW -> 5; + case TORCHFLOWER_FIELDS -> 2; + case BUTTERFLY_FIELDS -> 3; + case FLOWER_FOREST_MILKWEED -> 2; + }; + boolean placed = false; + + for (int i = 0; i < attempts; i++) { + int x = origin.getX() + random.nextInt(radius * 2 + 1) - radius; + int z = origin.getZ() + random.nextInt(radius * 2 + 1) - radius; + int y = level.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, x, z); + BlockPos seagrassPos = new BlockPos(x, y, z); + BlockPos floorPos = seagrassPos.below(); + + if (!level.getFluidState(seagrassPos).isSourceOfType(net.minecraft.world.level.material.Fluids.WATER)) { + continue; + } + + if (!isUnderwaterGround(level, floorPos) || !Blocks.SEAGRASS.defaultBlockState().canSurvive(level, seagrassPos)) { + continue; + } + + level.setBlock(seagrassPos, Blocks.SEAGRASS.defaultBlockState(), 2); + placed = true; + } + + return placed; + } + + private static BlockPos sampleSurface(WorldGenLevel level, BlockPos origin, RandomSource random, int radius) { + for (int attempt = 0; attempt < 8; attempt++) { + int x = origin.getX() + random.nextInt(radius * 2 + 1) - radius; + int z = origin.getZ() + random.nextInt(radius * 2 + 1) - radius; + int y = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z); + BlockPos plantPos = new BlockPos(x, y, z); + if (isValidPlantSpot(level, plantPos, plantPos.below())) { + return plantPos; + } + } + return null; + } + + private static BlockPos samplePatchPos(WorldGenLevel level, BlockPos center, int radius, RandomSource random) { + int x = center.getX() + random.nextInt(radius * 2 + 1) - radius; + int z = center.getZ() + random.nextInt(radius * 2 + 1) - radius; + int y = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z); + BlockPos plantPos = new BlockPos(x, y, z); + return isOpenPlantSpot(level, plantPos) ? plantPos : null; + } + + private static void maybeOvergrowGround(WorldGenLevel level, BlockPos groundPos, RandomSource random, boolean meadow) { + if (!isValidGround(level, groundPos) || random.nextFloat() > (meadow ? 0.45F : 0.24F)) { + return; + } + + BlockState replacement = random.nextFloat() < 0.35F + ? Blocks.ROOTED_DIRT.defaultBlockState() + : Blocks.MOSS_BLOCK.defaultBlockState(); + level.setBlock(groundPos, replacement, 2); + + for (DirectionHolder direction : DirectionHolder.HORIZONTAL) { + if (random.nextFloat() > (meadow ? 0.22F : 0.1F)) { + continue; + } + BlockPos spreadPos = groundPos.offset(direction.stepX, 0, direction.stepZ); + if (isValidGround(level, spreadPos)) { + level.setBlock(spreadPos, replacement, 2); + } + } + } + + private static boolean isValidGround(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return isIntendedGround(state) && !state.is(BlockTags.LOGS) && !state.is(BlockTags.LEAVES) && !state.is(Blocks.TUFF); + } + + private static boolean isValidPlantSpot(WorldGenLevel level, BlockPos plantPos, BlockPos groundPos) { + if (!isOpenPlantSpot(level, plantPos) || !isValidGround(level, groundPos)) { + return false; + } + + BlockState topState = level.getBlockState(groundPos); + return hasPlantHeadroom(level, plantPos, 3) + && Blocks.SHORT_GRASS.defaultBlockState().canSurvive(level, plantPos) + && !topState.is(BlockTags.LOGS) + && !topState.is(BlockTags.LEAVES) + && !topState.is(Blocks.TUFF) + && !topState.is(Blocks.TUFF_SLAB); + } + + private static boolean isIntendedGround(BlockState state) { + return state.is(BlockTags.DIRT) || state.is(Blocks.GRASS_BLOCK) || state.is(Blocks.MOSS_BLOCK) || state.is(Blocks.ROOTED_DIRT); + } + + private static boolean isUnderwaterGround(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return isValidGround(level, pos) || state.is(Blocks.GRAVEL) || state.is(Blocks.SAND) || state.is(Blocks.CLAY); + } + + private static boolean isOpenPlantSpot(WorldGenLevel level, BlockPos pos) { + return level.isEmptyBlock(pos) && level.getFluidState(pos).isEmpty(); + } + + private static boolean hasPlantHeadroom(WorldGenLevel level, BlockPos pos, int height) { + for (int y = 0; y < height; y++) { + if (!isOpenPlantSpot(level, pos.above(y))) { + return false; + } + } + return true; + } + + private enum DirectionHolder { + NORTH(0, -1), + SOUTH(0, 1), + WEST(-1, 0), + EAST(1, 0); + + private static final DirectionHolder[] HORIZONTAL = values(); + + private final int stepX; + private final int stepZ; + + DirectionHolder(int stepX, int stepZ) { + this.stepX = stepX; + this.stepZ = stepZ; + } + } + + public enum Variant { + FOREST, + MEADOW, + TORCHFLOWER_FIELDS, + BUTTERFLY_FIELDS, + FLOWER_FOREST_MILKWEED + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaLargeTuffBoulderFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaLargeTuffBoulderFeature.java new file mode 100644 index 00000000..544f61f3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaLargeTuffBoulderFeature.java @@ -0,0 +1,116 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SlabBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.SlabType; +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 class ElythiaLargeTuffBoulderFeature extends Feature { + public ElythiaLargeTuffBoulderFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + BlockPos surfacePos = new BlockPos(origin.getX(), level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, origin.getX(), origin.getZ()) - 1, origin.getZ()); + if (!isSoil(level.getBlockState(surfacePos))) { + return false; + } + + BlockPos center = surfacePos.below(random.nextInt(2)); + int blobs = 2 + random.nextInt(3); + boolean placed = false; + for (int i = 0; i < blobs; i++) { + BlockPos blobCenter = center.offset(random.nextInt(7) - 3, random.nextInt(3), random.nextInt(7) - 3); + int radiusX = 2 + random.nextInt(3); + int radiusY = 1 + random.nextInt(2); + int radiusZ = 2 + random.nextInt(3); + placed |= this.placeEllipsoid(level, blobCenter, radiusX, radiusY, radiusZ, random); + if (random.nextFloat() < 0.35F) { + placed |= this.placeEllipsoid(level, blobCenter.above(), Math.max(2, radiusX - 1), 1, Math.max(2, radiusZ - 1), random); + } + } + + if (placed) { + this.softCapWithSlabs(level, center, 7, random); + } + + return placed; + } + + private boolean placeEllipsoid(WorldGenLevel level, BlockPos center, int radiusX, int radiusY, int radiusZ, RandomSource random) { + boolean placed = false; + double rx = radiusX * radiusX; + double ry = radiusY * radiusY; + double rz = radiusZ * radiusZ; + for (int x = -radiusX; x <= radiusX; x++) { + for (int y = -radiusY; y <= radiusY; y++) { + for (int z = -radiusZ; z <= radiusZ; z++) { + double distance = (x * x) / rx + (y * y) / ry + (z * z) / rz; + if (distance > 1.0D + random.nextDouble() * 0.2D) { + continue; + } + + BlockPos targetPos = center.offset(x, y, z); + BlockState targetState = level.getBlockState(targetPos); + if (targetState.isAir() || targetState.canBeReplaced() || isSoil(targetState)) { + level.setBlock(targetPos, Blocks.TUFF.defaultBlockState(), 2); + placed = true; + } + } + } + } + return placed; + } + + private void softCapWithSlabs(WorldGenLevel level, BlockPos center, int radius, RandomSource random) { + BlockState slabState = Blocks.TUFF_SLAB.defaultBlockState().setValue(SlabBlock.TYPE, SlabType.BOTTOM); + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + BlockPos topPos = center.offset(x, 0, z); + while (topPos.getY() < level.getMaxBuildHeight() - 1 && level.getBlockState(topPos.above()).is(Blocks.TUFF)) { + topPos = topPos.above(); + } + + if (!level.getBlockState(topPos).is(Blocks.TUFF)) { + continue; + } + + BlockPos slabPos = topPos.above(); + if (!level.isEmptyBlock(slabPos) || random.nextFloat() > 0.22F) { + continue; + } + + int openSides = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (!level.getBlockState(topPos.relative(direction)).is(Blocks.TUFF)) { + openSides++; + } + } + + if (openSides == 0) { + continue; + } + + level.setBlock(slabPos, slabState, 2); + } + } + } + + private static boolean isSoil(BlockState state) { + return state.is(BlockTags.DIRT) || state.is(Blocks.GRASS_BLOCK) || state.is(Blocks.MOSS_BLOCK) || state.is(Blocks.ROOTED_DIRT); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaPondFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaPondFeature.java new file mode 100644 index 00000000..01958644 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaPondFeature.java @@ -0,0 +1,60 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +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 class ElythiaPondFeature extends Feature { + public ElythiaPondFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + int surfaceY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, origin.getX(), origin.getZ()) - 1; + BlockPos center = new BlockPos(origin.getX(), surfaceY, origin.getZ()); + if (!isSoil(level.getBlockState(center))) { + return false; + } + + int radiusX = 3 + random.nextInt(3); + int radiusZ = 3 + random.nextInt(3); + int depth = 1 + random.nextInt(2); + boolean placed = false; + + for (int x = -radiusX - 1; x <= radiusX + 1; x++) { + for (int z = -radiusZ - 1; z <= radiusZ + 1; z++) { + double distance = (x * x) / (double) (radiusX * radiusX) + (z * z) / (double) (radiusZ * radiusZ); + BlockPos topPos = center.offset(x, 0, z); + if (distance <= 1.0D) { + int floorY = center.getY() - (distance < 0.35D ? depth + 1 : depth); + for (int y = center.getY(); y > floorY; y--) { + BlockPos waterPos = new BlockPos(topPos.getX(), y, topPos.getZ()); + level.setBlock(waterPos, Blocks.WATER.defaultBlockState(), 2); + } + level.setBlock(new BlockPos(topPos.getX(), floorY, topPos.getZ()), Blocks.MOSS_BLOCK.defaultBlockState(), 2); + placed = true; + } else if (distance <= 1.25D && isSoil(level.getBlockState(topPos))) { + level.setBlock(topPos, Blocks.MOSS_BLOCK.defaultBlockState(), 2); + } + } + } + + return placed; + } + + private static boolean isSoil(BlockState state) { + return state.is(BlockTags.DIRT) || state.is(Blocks.GRASS_BLOCK) || state.is(Blocks.MOSS_BLOCK) || state.is(Blocks.ROOTED_DIRT); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaRiverCarveFunction.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaRiverCarveFunction.java new file mode 100644 index 00000000..4c0ccf05 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaRiverCarveFunction.java @@ -0,0 +1,94 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.KeyDispatchDataCodec; +import net.minecraft.world.level.levelgen.DensityFunction; + +/** + * Custom density function that carves narrow river channels in Elythia. + * + * Logic: + * - Outside river-erosion territory (erosion <= EROSION_THRESHOLD): behaves identically + * to the original "-0.06 * erosion" term in elythia_surface.json. + * - Inside river-erosion territory (erosion > EROSION_THRESHOLD): additionally applies + * a strong negative carve when the ridges value is near 0, producing a narrow channel. + * The carve tapers quadratically from full depth at ridges=0 to zero at |ridges|=CHANNEL_HALF_WIDTH. + * + * Tuning: + * - EROSION_THRESHOLD: raise to make rivers rarer, lower to make them appear in more terrain + * - CHANNEL_HALF_WIDTH: controls channel width in blocks (wider noise band = wider river) + * - CHANNEL_DEPTH: controls how far below sea level the river floor sits + */ +public record ElythiaRiverCarveFunction( + DensityFunction erosion, + DensityFunction ridges +) implements DensityFunction { + + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> + instance.group( + DensityFunction.HOLDER_HELPER_CODEC.fieldOf("erosion").forGetter(ElythiaRiverCarveFunction::erosion), + DensityFunction.HOLDER_HELPER_CODEC.fieldOf("ridges").forGetter(ElythiaRiverCarveFunction::ridges) + ).apply(instance, ElythiaRiverCarveFunction::new) + ); + + public static final KeyDispatchDataCodec KEY_CODEC = + KeyDispatchDataCodec.of(CODEC); + + // Erosion must exceed this for river carving to engage + private static final double EROSION_THRESHOLD = 0.70; + // Half-width of the channel in ridges-space. Ridges ranges roughly -1 to 1 across + // the landscape; this controls the physical width of the carved channel. + private static final double CHANNEL_HALF_WIDTH = 0.08; + // Maximum density reduction applied at the center of the channel. + // ~0.35 pushes the terrain floor roughly 25 blocks below its normal level, + // landing below sea level (63) so the channel fills with water naturally. + private static final double CHANNEL_DEPTH = 0.35; + // Matches the original elythia_surface.json erosion multiplier so non-river areas are unchanged + private static final double BASE_EROSION_FACTOR = -0.06; + + @Override + public double compute(FunctionContext context) { + double erosionVal = erosion.compute(context); + double base = BASE_EROSION_FACTOR * erosionVal; + + if (erosionVal > EROSION_THRESHOLD) { + double ridgesVal = ridges.compute(context); + double dist = Math.abs(ridgesVal); + if (dist < CHANNEL_HALF_WIDTH) { + double t = 1.0 - (dist / CHANNEL_HALF_WIDTH); + double channelness = t * t; + return base - channelness * CHANNEL_DEPTH; + } + } + + return base; + } + + @Override + public void fillArray(double[] values, ContextProvider contextProvider) { + for (int i = 0; i < values.length; i++) { + values[i] = this.compute(contextProvider.forIndex(i)); + } + } + + @Override + public double minValue() { + return BASE_EROSION_FACTOR - CHANNEL_DEPTH; + } + + @Override + public double maxValue() { + return -BASE_EROSION_FACTOR; + } + + @Override + public DensityFunction mapAll(Visitor visitor) { + return visitor.apply(new ElythiaRiverCarveFunction(erosion.mapAll(visitor), ridges.mapAll(visitor))); + } + + @Override + public KeyDispatchDataCodec codec() { + return KEY_CODEC; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaSurfaceCoverFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaSurfaceCoverFeature.java new file mode 100644 index 00000000..762c1eae --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaSurfaceCoverFeature.java @@ -0,0 +1,127 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +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 class ElythiaSurfaceCoverFeature extends Feature { + public ElythiaSurfaceCoverFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + int startX = origin.getX() & ~15; + int startZ = origin.getZ() & ~15; + boolean placed = false; + + for (int localX = 0; localX < 16; localX++) { + for (int localZ = 0; localZ < 16; localZ++) { + int worldX = startX + localX; + int worldZ = startZ + localZ; + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, worldX, worldZ) - 1; + if (topY <= level.getMinBuildHeight()) { + continue; + } + + BlockPos topPos = new BlockPos(worldX, topY, worldZ); + BlockPos abovePos = topPos.above(); + BlockState topState = level.getBlockState(topPos); + if (!level.getFluidState(abovePos).isEmpty()) { + continue; + } + + if (!level.canSeeSky(abovePos)) { + continue; + } + + if (!isSurfaceSoil(topState)) { + continue; + } + + level.setBlock(topPos, surfaceState(random), 2); + this.fillSubsurface(level, topPos, random); + placed = true; + } + } + + return placed; + } + + private void fillSubsurface(WorldGenLevel level, BlockPos topPos, RandomSource random) { + int depth = 5 + random.nextInt(2); + int maxDepth = topPos.getY() - level.getMinBuildHeight(); + for (int step = 1; step <= maxDepth; step++) { + BlockPos soilPos = topPos.below(step); + BlockState state = level.getBlockState(soilPos); + if (!isSurfaceSoil(state) && !state.is(Blocks.GRANITE)) { + break; + } + + if (step <= depth) { + level.setBlock(soilPos, subsurfaceState(random), 2); + continue; + } + + if (state.is(Blocks.GRASS_BLOCK)) { + level.setBlock(soilPos, Blocks.DIRT.defaultBlockState(), 2); + } + } + } + + private static BlockState surfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.7F) { + return Blocks.GRASS_BLOCK.defaultBlockState(); + } + if (roll < 0.99F) { + return Blocks.MOSS_BLOCK.defaultBlockState(); + } + return Blocks.ROOTED_DIRT.defaultBlockState(); + } + + private static BlockState subsurfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.12F) { + return Blocks.COARSE_DIRT.defaultBlockState(); + } + if (roll < 0.18F) { + return Blocks.ROOTED_DIRT.defaultBlockState(); + } + return Blocks.DIRT.defaultBlockState(); + } + + private static boolean isExposed(WorldGenLevel level, BlockPos pos) { + if (level.getBlockState(pos.above()).isAir()) { + return true; + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (level.getBlockState(pos.relative(direction)).isAir()) { + return true; + } + } + + return false; + } + + private static boolean isSurfaceSoil(BlockState state) { + return state.is(BlockTags.DIRT) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.ROOTED_DIRT) + || state.is(Blocks.COARSE_DIRT); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaTuffBoulderFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaTuffBoulderFeature.java new file mode 100644 index 00000000..d5a64606 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaTuffBoulderFeature.java @@ -0,0 +1,115 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SlabBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.SlabType; +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 class ElythiaTuffBoulderFeature extends Feature { + public ElythiaTuffBoulderFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + BlockPos surfacePos = new BlockPos(origin.getX(), level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, origin.getX(), origin.getZ()) - 1, origin.getZ()); + if (!isSoil(level.getBlockState(surfacePos))) { + return false; + } + + BlockPos center = surfacePos.below(random.nextInt(2)); + int blobs = 1 + random.nextInt(2); + boolean placed = false; + for (int i = 0; i < blobs; i++) { + BlockPos blobCenter = center.offset(random.nextInt(5) - 2, random.nextInt(2), random.nextInt(5) - 2); + int radiusX = 1 + random.nextInt(2); + int radiusZ = 1 + random.nextInt(2); + placed |= this.placeEllipsoid(level, blobCenter, radiusX, 1, radiusZ, random); + if (random.nextFloat() < 0.18F) { + placed |= this.placeEllipsoid(level, blobCenter.above(), 1, 1, 1 + random.nextInt(2), random); + } + } + + if (placed) { + this.softCapWithSlabs(level, center, 5, random); + } + + return placed; + } + + private boolean placeEllipsoid(WorldGenLevel level, BlockPos center, int radiusX, int radiusY, int radiusZ, RandomSource random) { + boolean placed = false; + double rx = radiusX * radiusX; + double ry = radiusY * radiusY; + double rz = radiusZ * radiusZ; + for (int x = -radiusX; x <= radiusX; x++) { + for (int y = -radiusY; y <= radiusY; y++) { + for (int z = -radiusZ; z <= radiusZ; z++) { + double distance = (x * x) / rx + (y * y) / ry + (z * z) / rz; + if (distance > 1.0D + random.nextDouble() * 0.18D) { + continue; + } + + BlockPos targetPos = center.offset(x, y, z); + BlockState targetState = level.getBlockState(targetPos); + if (targetState.isAir() || targetState.canBeReplaced() || isSoil(targetState)) { + level.setBlock(targetPos, Blocks.TUFF.defaultBlockState(), 2); + placed = true; + } + } + } + } + return placed; + } + + private void softCapWithSlabs(WorldGenLevel level, BlockPos center, int radius, RandomSource random) { + BlockState slabState = Blocks.TUFF_SLAB.defaultBlockState().setValue(SlabBlock.TYPE, SlabType.BOTTOM); + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + BlockPos topPos = center.offset(x, 0, z); + while (topPos.getY() < level.getMaxBuildHeight() - 1 && level.getBlockState(topPos.above()).is(Blocks.TUFF)) { + topPos = topPos.above(); + } + + if (!level.getBlockState(topPos).is(Blocks.TUFF)) { + continue; + } + + BlockPos slabPos = topPos.above(); + if (!level.isEmptyBlock(slabPos) || random.nextFloat() > 0.18F) { + continue; + } + + int openSides = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (!level.getBlockState(topPos.relative(direction)).is(Blocks.TUFF)) { + openSides++; + } + } + + if (openSides == 0) { + continue; + } + + level.setBlock(slabPos, slabState, 2); + } + } + } + + private static boolean isSoil(BlockState state) { + return state.is(BlockTags.DIRT) || state.is(Blocks.GRASS_BLOCK) || state.is(Blocks.MOSS_BLOCK) || state.is(Blocks.ROOTED_DIRT); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaUndergroundFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaUndergroundFeature.java new file mode 100644 index 00000000..99ce1582 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaUndergroundFeature.java @@ -0,0 +1,143 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.PointedDripstoneBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; + +public class ElythiaUndergroundFeature extends Feature { + public ElythiaUndergroundFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos cavity = this.findCavity(level, context.origin(), random); + if (cavity == null) { + return false; + } + + BlockPos floorPos = cavity.below(); + BlockPos ceilingPos = this.findCeiling(level, cavity, 8); + if (ceilingPos == null) { + return false; + } + + return switch (random.nextInt(8)) { + case 0, 1, 2 -> this.placeFloorPatch(level, floorPos, random, Blocks.DIRT.defaultBlockState(), 3 + random.nextInt(4)); + case 3, 4, 5 -> this.placeFloorPatch(level, floorPos, random, Blocks.COARSE_DIRT.defaultBlockState(), 4 + random.nextInt(5)); + case 6 -> this.placeFloorPatch(level, floorPos, random, Blocks.GRANITE.defaultBlockState(), 3 + random.nextInt(4)); + default -> this.placeDripstonePatch(level, floorPos, ceilingPos, random, 2 + random.nextInt(3)); + }; + } + + private BlockPos findCavity(WorldGenLevel level, BlockPos origin, RandomSource random) { + for (int attempt = 0; attempt < 20; attempt++) { + BlockPos candidate = origin.offset(random.nextInt(17) - 8, random.nextInt(25) - 12, random.nextInt(17) - 8); + for (int dy = -6; dy <= 6; dy++) { + BlockPos airPos = candidate.above(dy); + if (this.isUsableCavity(level, airPos)) { + return airPos; + } + } + } + return null; + } + + private boolean isUsableCavity(WorldGenLevel level, BlockPos pos) { + return level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()) + && isSolidCaveBlock(level.getBlockState(pos.below())) + && !level.isEmptyBlock(pos.above(3)); + } + + private BlockPos findCeiling(WorldGenLevel level, BlockPos start, int range) { + for (int step = 1; step <= range; step++) { + BlockPos pos = start.above(step); + if (!level.isEmptyBlock(pos)) { + return pos; + } + } + return null; + } + + private boolean placeFloorPatch(WorldGenLevel level, BlockPos center, RandomSource random, BlockState replacement, int radius) { + boolean placedAny = false; + int radiusSq = radius * radius; + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + if (x * x + z * z > radiusSq + random.nextInt(2)) { + continue; + } + + BlockPos targetPos = center.offset(x, 0, z); + if (!isSolidCaveBlock(level.getBlockState(targetPos)) || !level.isEmptyBlock(targetPos.above())) { + continue; + } + + level.setBlock(targetPos, replacement, 2); + placedAny = true; + } + } + return placedAny; + } + + private boolean placeDripstonePatch(WorldGenLevel level, BlockPos floorCenter, BlockPos ceilingCenter, RandomSource random, int radius) { + boolean placedAny = false; + int radiusSq = radius * radius; + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + if (x * x + z * z > radiusSq + random.nextInt(2)) { + continue; + } + + BlockPos floorPos = floorCenter.offset(x, 0, z); + if (isSolidCaveBlock(level.getBlockState(floorPos)) && level.isEmptyBlock(floorPos.above())) { + level.setBlock(floorPos, Blocks.DRIPSTONE_BLOCK.defaultBlockState(), 2); + if (random.nextFloat() < 0.45F && level.isEmptyBlock(floorPos.above())) { + level.setBlock( + floorPos.above(), + Blocks.POINTED_DRIPSTONE.defaultBlockState().setValue(PointedDripstoneBlock.TIP_DIRECTION, Direction.UP), + 2 + ); + } + placedAny = true; + } + + BlockPos ceilingPos = ceilingCenter.offset(x, 0, z); + if (isSolidCaveBlock(level.getBlockState(ceilingPos)) && level.isEmptyBlock(ceilingPos.below())) { + level.setBlock(ceilingPos, Blocks.DRIPSTONE_BLOCK.defaultBlockState(), 2); + if (random.nextFloat() < 0.55F && level.isEmptyBlock(ceilingPos.below())) { + level.setBlock( + ceilingPos.below(), + Blocks.POINTED_DRIPSTONE.defaultBlockState().setValue(PointedDripstoneBlock.TIP_DIRECTION, Direction.DOWN), + 2 + ); + } + placedAny = true; + } + } + } + return placedAny; + } + + private static boolean isSolidCaveBlock(BlockState state) { + return state.is(Blocks.DIRT) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.COARSE_DIRT) + || state.is(Blocks.PACKED_MUD) + || state.is(Blocks.GRAVEL) + || state.is(Blocks.GRANITE) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.DRIPSTONE_BLOCK); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormCaveEntranceFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormCaveEntranceFeature.java new file mode 100644 index 00000000..23a4052b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormCaveEntranceFeature.java @@ -0,0 +1,540 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.WorldGenRegion; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.MultifaceBlock; +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; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public class MolewormCaveEntranceFeature extends Feature { + public MolewormCaveEntranceFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos surfaceAnchor = this.findSurfaceAnchor(level, context.origin(), random); + if (surfaceAnchor == null) { + return false; + } + + BlockPos cavity = this.findWarrenAnchor(level, surfaceAnchor, random); + if (cavity == null) { + return false; + } + + float entranceRadius = 4.0F + random.nextFloat() * 1.6F; + this.raiseHabitationMound(level, random, surfaceAnchor, entranceRadius, 4 + random.nextInt(3)); + this.carveEntranceMouth(level, random, surfaceAnchor, entranceRadius); + this.carveGuidedTunnel(level, random, surfaceAnchor, cavity); + this.removeFloatingBlocks(level, surfaceAnchor, Mth.ceil(entranceRadius + 2.0F), surfaceAnchor.getY()); + this.carveNestChamber(level, random, cavity); + MolewormWarrensFeature.carveWarrenNetwork(level, random, cavity, false); + return true; + } + + @Nullable + private BlockPos findWarrenAnchor(WorldGenLevel level, BlockPos surfaceAnchor, RandomSource random) { + int minY = level.getMinBuildHeight() + 18; + int maxY = Math.max(minY + 12, surfaceAnchor.getY() - 24); + if (maxY <= minY) { + return null; + } + + for (int attempt = 0; attempt < 36; attempt++) { + int x = surfaceAnchor.getX() + random.nextInt(11) - 5; + int z = surfaceAnchor.getZ() + random.nextInt(11) - 5; + int y = Mth.clamp(surfaceAnchor.getY() - 28 - random.nextInt(34), minY, maxY); + BlockPos candidate = new BlockPos(x, y, z); + if (!canAccess(level, candidate)) { + continue; + } + + for (int dy = -8; dy <= 8; dy++) { + BlockPos airPos = candidate.above(dy); + if (this.isUsableCavity(level, airPos)) { + return airPos; + } + } + + BlockState candidateState = level.getBlockState(candidate); + if (canReplaceShell(candidateState) || candidateState.isAir()) { + return candidate; + } + } + + return null; + } + + @Nullable + private BlockPos findSurfaceAnchor(WorldGenLevel level, BlockPos origin, RandomSource random) { + BlockPos best = null; + double bestScore = Double.MAX_VALUE; + + for (int dx = -7; dx <= 7; dx++) { + for (int dz = -7; dz <= 7; dz++) { + int x = origin.getX() + dx; + int z = origin.getZ() + dz; + if (!canAccessColumn(level, x, z)) { + continue; + } + + int surfaceY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + if (surfaceY < level.getMinBuildHeight() + 8 || surfaceY > level.getMaxBuildHeight() - 8) { + continue; + } + + BlockPos candidate = new BlockPos(x, surfaceY, z); + if (!isValidSurface(level, candidate)) { + continue; + } + + double dxScore = x - origin.getX(); + double dzScore = z - origin.getZ(); + double score = dxScore * dxScore + dzScore * dzScore + Math.abs(dx) * 0.5D + Math.abs(dz) * 0.5D + random.nextDouble() * 0.15D; + if (score < bestScore) { + bestScore = score; + best = candidate; + } + } + } + + return best; + } + + private void raiseHabitationMound(WorldGenLevel level, RandomSource random, BlockPos center, float radius, int height) { + int minX = Mth.floor(center.getX() - radius); + int maxX = Mth.floor(center.getX() + radius); + int minZ = Mth.floor(center.getZ() - radius); + int maxZ = Mth.floor(center.getZ() + radius); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccessColumn(level, x, z)) { + continue; + } + + double dx = (x + 0.5D - (center.getX() + 0.5D)) / radius; + double dz = (z + 0.5D - (center.getZ() + 0.5D)) / radius; + double shape = 1.0D - (dx * dx + dz * dz); + if (shape <= 0.0D) { + continue; + } + + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + pos.set(x, topY, z); + if (!isSoilOrStone(level.getBlockState(pos))) { + continue; + } + + int localHeight = Math.max(1, (int) Math.floor(shape * shape * (height + 1) + random.nextDouble() * 0.6D)); + localHeight = Math.min(localHeight, 2); + level.setBlock(pos, disturbedSurfaceState(random), 2); + for (int depth = 1; depth <= 3; depth++) { + pos.set(x, topY - depth, z); + if (isSoilOrStone(level.getBlockState(pos))) { + level.setBlock(pos, disturbedSubsurfaceState(random), 2); + } + } + + for (int y = 1; y <= localHeight; y++) { + pos.set(x, topY + y, z); + if (!level.isEmptyBlock(pos) || level.isEmptyBlock(pos.below())) { + continue; + } + level.setBlock(pos, disturbedSurfaceState(random), 2); + tryPlaceDeadBush(level, random, pos.above()); + } + } + } + } + + private void removeFloatingBlocks(WorldGenLevel level, BlockPos center, int radius, int surfaceY) { + int minX = center.getX() - radius; + int maxX = center.getX() + radius; + int minZ = center.getZ() - radius; + int maxZ = center.getZ() + radius; + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + BlockPos.MutableBlockPos belowPos = new BlockPos.MutableBlockPos(); + + for (int y = surfaceY + 1; y <= surfaceY + 8; y++) { + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y - 1, z)) { + continue; + } + + pos.set(x, y, z); + BlockState state = level.getBlockState(pos); + if (state.isAir()) { + continue; + } + + belowPos.set(x, y - 1, z); + if (!level.getBlockState(belowPos).isAir()) { + continue; + } + + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + } + } + } + } + + private void carveEntranceMouth(WorldGenLevel level, RandomSource random, BlockPos surfaceAnchor, float radius) { + Vec3 mouthCenter = Vec3.atCenterOf(surfaceAnchor).add(0.0D, 2.2D, 0.0D); + this.carvePocket(level, random, mouthCenter, radius, 3.0F, radius, true); + this.carvePocket(level, random, mouthCenter.add(0.0D, -2.0D, 0.0D), radius - 0.9F, 2.1F, radius - 0.9F, false); + } + + private void carveGuidedTunnel(WorldGenLevel level, RandomSource random, BlockPos surfaceAnchor, BlockPos cavity) { + Vec3 surface = Vec3.atCenterOf(surfaceAnchor).add(0.0D, 1.2D, 0.0D); + Vec3 chamber = Vec3.atCenterOf(cavity); + Vec3 horizontal = new Vec3(chamber.x - surface.x, 0.0D, chamber.z - surface.z); + if (horizontal.lengthSqr() < 1.0D) { + float angle = random.nextFloat() * Mth.TWO_PI; + horizontal = new Vec3(Mth.cos(angle), 0.0D, Mth.sin(angle)); + } + horizontal = horizontal.normalize(); + + Vec3 cursor = surface; + int slopedSteps = 6 + random.nextInt(3); + for (int step = 0; step < slopedSteps; step++) { + Vec3 next = cursor.add( + horizontal.x * (1.8D + random.nextDouble() * 0.5D), + -(0.95D + random.nextDouble() * 0.25D), + horizontal.z * (1.8D + random.nextDouble() * 0.5D) + ); + this.carveTube(level, random, cursor, next, 2.7F, 2.35F); + cursor = next; + } + + this.carveTube(level, random, cursor, chamber, 2.35F, 2.7F); + } + + private void carveNestChamber(WorldGenLevel level, RandomSource random, BlockPos cavity) { + Vec3 center = Vec3.atCenterOf(cavity); + this.carvePocket(level, random, center, 4.5F + random.nextFloat() * 1.2F, 3.0F, 4.5F + random.nextFloat() * 1.2F, true); + this.decorateFloor(level, random, center, 4.8F, 4.8F); + this.decorateCeiling(level, random, center, 4.8F, 3.2F, 4.8F); + } + + private void carveTube(WorldGenLevel level, RandomSource random, Vec3 start, Vec3 end, float startRadius, float endRadius) { + Vec3 delta = end.subtract(start); + double length = Math.max(delta.length(), 1.0D); + int steps = Math.max(5, Mth.ceil(length * 2.3D)); + + for (int step = 0; step <= steps; step++) { + float progress = step / (float) steps; + Vec3 center = start.add(delta.scale(progress)); + float radius = Mth.lerp(progress, startRadius, endRadius); + this.carvePocket(level, random, center, radius, Math.max(1.85F, radius * 0.82F), radius, step % 4 == 0); + } + } + + private void carvePocket(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ, boolean decorate) { + int minX = Mth.floor(center.x - radiusX - 1.5F); + int maxX = Mth.floor(center.x + radiusX + 1.5F); + int minY = Math.max(level.getMinBuildHeight() + 1, Mth.floor(center.y - radiusY - 2.0F)); + int maxY = Math.min(level.getMaxBuildHeight() - 2, Mth.floor(center.y + radiusY + 2.0F)); + int minZ = Mth.floor(center.z - radiusZ - 1.5F); + int maxZ = Mth.floor(center.z + radiusZ + 1.5F); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + double dx = (x + 0.5D - center.x) / radiusX; + double dx2 = dx * dx; + for (int z = minZ; z <= maxZ; z++) { + double dz = (z + 0.5D - center.z) / radiusZ; + double dz2 = dz * dz; + for (int y = minY; y <= maxY; y++) { + if (!canAccess(level, x, y, z)) { + continue; + } + + double dy = (y + 0.5D - center.y) / radiusY; + double distance = dx2 + dz2 + dy * dy + (hashNoise(x, y, z) - 0.5D) * 0.16D; + pos.set(x, y, z); + BlockState state = level.getBlockState(pos); + + if (distance <= 1.0D) { + if (canCarve(state)) { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + } + continue; + } + + if (distance <= 1.22D && canReplaceShell(state)) { + level.setBlock(pos, selectShellState(random, center.y, y), 2); + } + } + } + } + + if (decorate) { + this.decorateFloor(level, random, center, radiusX, radiusZ); + this.decorateCeiling(level, random, center, radiusX, radiusY, radiusZ); + } + } + + private void decorateFloor(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusZ) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - 6.0D)); + int maxY = Math.min(level.getMaxBuildHeight() - 4, Mth.floor(center.y + 3.0D)); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = maxY; y >= minY; y--) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y + 1, z)) { + continue; + } + + pos.set(x, y, z); + if (!level.isEmptyBlock(pos) || !level.isEmptyBlock(pos.above())) { + continue; + } + + BlockPos floorPos = pos.below(); + if (!canReplaceShell(level.getBlockState(floorPos))) { + continue; + } + + level.setBlock(floorPos, random.nextFloat() < 0.14F ? Blocks.MUD.defaultBlockState() : selectFloorState(random), 2); + break; + } + } + } + } + + private void decorateCeiling(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - radiusY)); + int maxY = Math.min(level.getMaxBuildHeight() - 3, Mth.floor(center.y + radiusY + 1.0F)); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + BlockState hangingRoots = Blocks.HANGING_ROOTS.defaultBlockState(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = maxY; y >= minY; y--) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y - 1, z)) { + continue; + } + + pos.set(x, y, z); + if (level.isEmptyBlock(pos)) { + continue; + } + + BlockPos airPos = pos.below(); + if (!level.isEmptyBlock(airPos) || !canReplaceShell(level.getBlockState(pos))) { + break; + } + + level.setBlock(pos, random.nextFloat() < 0.72F ? rootedDirtVariant(random) : coarseDirtVariant(random), 2); + if (random.nextFloat() < 0.34F && hangingRoots.canSurvive(level, airPos)) { + level.setBlock(airPos, hangingRoots, 2); + } + break; + } + } + } + + decorateWalls(level, random, center, radiusX, radiusY, radiusZ); + } + + private boolean isUsableCavity(WorldGenLevel level, BlockPos pos) { + return canAccess(level, pos) + && level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()) + && isSoilOrStone(level.getBlockState(pos.below())) + && !level.isEmptyBlock(pos.above(3)); + } + + private static boolean isValidSurface(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return level.canSeeSky(pos.above()) + && level.getFluidState(pos.above()).isEmpty() + && isSoilOrStone(state) + && !state.is(Blocks.MUD); + } + + private static BlockState disturbedSurfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.42F) { + return coarseDirtVariant(random); + } + if (roll < 0.86F) { + return rootedDirtVariant(random); + } + return Blocks.PODZOL.defaultBlockState(); + } + + private static BlockState disturbedSubsurfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.58F) { + return rootedDirtVariant(random); + } + if (roll < 0.94F) { + return coarseDirtVariant(random); + } + return Blocks.PODZOL.defaultBlockState(); + } + + private static BlockState selectShellState(RandomSource random, double centerY, int y) { + return y > centerY + 0.25D + ? (random.nextFloat() < 0.7F ? rootedDirtVariant(random) : coarseDirtVariant(random)) + : (random.nextFloat() < 0.56F ? coarseDirtVariant(random) : rootedDirtVariant(random)); + } + + private static BlockState selectFloorState(RandomSource random) { + return random.nextFloat() < 0.54F ? coarseDirtVariant(random) : rootedDirtVariant(random); + } + + private static boolean canCarve(BlockState state) { + return !state.isAir() + && state.getFluidState().isEmpty() + && !state.is(Blocks.BEDROCK) + && !state.is(Blocks.BARRIER) + && !state.is(Blocks.OBSIDIAN) + && !state.is(Blocks.CRYING_OBSIDIAN); + } + + private static boolean canReplaceShell(BlockState state) { + return canCarve(state) + && !state.is(BlockTags.LOGS) + && !state.is(BlockTags.LEAVES) + && !state.is(Blocks.WATER) + && !state.is(Blocks.LAVA); + } + + private static boolean isSoilOrStone(BlockState state) { + return state.is(BlockTags.DIRT) + || state.is(AntarchyObjects.INFESTED_ROOTED_DIRT.get()) + || state.is(AntarchyObjects.INFESTED_COARSE_DIRT.get()) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.PODZOL) + || state.is(Blocks.STONE) + || state.is(Blocks.DEEPSLATE) + || state.is(Blocks.GRAVEL) + || state.is(Blocks.TUFF); + } + + private static double hashNoise(int x, int y, int z) { + long hash = x * 3129871L ^ z * 116129781L ^ y; + hash = hash * hash * 42317861L + hash * 11L; + return ((hash >> 16) & 1023L) / 1023.0D; + } + + private static boolean canAccessColumn(WorldGenLevel level, int x, int z) { + int probeY = Mth.clamp((level.getMinBuildHeight() + level.getMaxBuildHeight()) / 2, level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2); + return canAccess(level, x, probeY, z); + } + + private static boolean canAccess(WorldGenLevel level, int x, int y, int z) { + return canAccess(level, new BlockPos(x, Mth.clamp(y, level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2), z)); + } + + private static boolean canAccess(WorldGenLevel level, BlockPos pos) { + return !(level instanceof WorldGenRegion region) || region.ensureCanWrite(pos); + } + + private static BlockState rootedDirtVariant(RandomSource random) { + return random.nextFloat() < 0.12F + ? AntarchyObjects.INFESTED_ROOTED_DIRT.get().defaultBlockState() + : Blocks.ROOTED_DIRT.defaultBlockState(); + } + + private static BlockState coarseDirtVariant(RandomSource random) { + return random.nextFloat() < 0.08F + ? AntarchyObjects.INFESTED_COARSE_DIRT.get().defaultBlockState() + : Blocks.COARSE_DIRT.defaultBlockState(); + } + + private static void decorateWalls(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - radiusY)); + int maxY = Math.min(level.getMaxBuildHeight() - 3, Mth.floor(center.y + radiusY)); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = minY; y <= maxY; y++) { + if (random.nextFloat() >= 0.028F || !canAccess(level, x, y, z)) { + continue; + } + + pos.set(x, y, z); + if (!level.isEmptyBlock(pos)) { + continue; + } + + tryPlaceGlowLichen(level, random, pos); + } + } + } + } + + private static void tryPlaceDeadBush(WorldGenLevel level, RandomSource random, BlockPos pos) { + if (random.nextFloat() >= 0.06F) { + return; + } + + BlockState bush = Blocks.DEAD_BUSH.defaultBlockState(); + if (level.isEmptyBlock(pos) && bush.canSurvive(level, pos)) { + level.setBlock(pos, bush, 2); + } + } + + private static void tryPlaceGlowLichen(WorldGenLevel level, RandomSource random, BlockPos pos) { + Direction[] directions = Direction.values(); + for (int i = 0; i < directions.length; i++) { + Direction direction = directions[(i + random.nextInt(directions.length)) % directions.length]; + if (direction == Direction.DOWN) { + continue; + } + + BlockPos attachmentPos = pos.relative(direction); + if (!canAccess(level, attachmentPos)) { + continue; + } + + BlockState attachmentState = level.getBlockState(attachmentPos); + if (attachmentState.isAir() || !attachmentState.isFaceSturdy(level, attachmentPos, direction.getOpposite())) { + continue; + } + + BlockState lichen = Blocks.GLOW_LICHEN.defaultBlockState().setValue(MultifaceBlock.getFaceProperty(direction), true); + if (lichen.canSurvive(level, pos)) { + level.setBlock(pos, lichen, 2); + return; + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormSurfaceMoundsFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormSurfaceMoundsFeature.java new file mode 100644 index 00000000..841d9e5a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormSurfaceMoundsFeature.java @@ -0,0 +1,320 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.server.level.WorldGenRegion; +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; +import net.minecraft.world.phys.Vec3; + +public class MolewormSurfaceMoundsFeature extends Feature { + public MolewormSurfaceMoundsFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + int chunkStartX = origin.getX() & ~15; + int chunkStartZ = origin.getZ() & ~15; + boolean placedAny = false; + int tooLow = 0; + int validCenters = 0; + int invalidSurface = 0; + int ventsCarved = 0; + int aboveSurfaceBlocks = 0; + + int moundCount = 5 + random.nextInt(3); + for (int i = 0; i < moundCount; i++) { + int x = chunkStartX + random.nextInt(16); + int z = chunkStartZ + random.nextInt(16); + if (!canAccessColumn(level, x, z)) { + continue; + } + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + if (topY <= level.getMinBuildHeight() + 2) { + tooLow++; + continue; + } + + BlockPos center = new BlockPos(x, topY, z); + if (!isValidSurface(level, center)) { + invalidSurface++; + continue; + } + + validCenters++; + float radiusX = 2.2F + random.nextFloat() * 2.8F; + float radiusZ = 2.2F + random.nextFloat() * 2.8F; + int height = 3 + random.nextInt(4); + aboveSurfaceBlocks += this.raiseMound(level, random, center, radiusX, radiusZ, height); + placedAny = true; + + if (random.nextFloat() < 0.9F) { + if (this.carveVent(level, random, center, 1.5F + random.nextFloat() * 1.35F, 3 + random.nextInt(4))) { + ventsCarved++; + } + } + if (random.nextFloat() < 0.16F) { + this.placeSurfaceDripstone(level, random, center, 1.6F + random.nextFloat() * 1.2F); + } + } + return placedAny; + } + + private int raiseMound(WorldGenLevel level, RandomSource random, BlockPos center, float radiusX, float radiusZ, int height) { + int minX = Mth.floor(center.getX() - radiusX); + int maxX = Mth.floor(center.getX() + radiusX); + int minZ = Mth.floor(center.getZ() - radiusZ); + int maxZ = Mth.floor(center.getZ() + radiusZ); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + int aboveSurfaceBlocks = 0; + + for (int x = minX; x <= maxX; x++) { + double dx = (x + 0.5D - (center.getX() + 0.5D)) / radiusX; + double dx2 = dx * dx; + for (int z = minZ; z <= maxZ; z++) { + if (!canAccessColumn(level, x, z)) { + continue; + } + double dz = (z + 0.5D - (center.getZ() + 0.5D)) / radiusZ; + double shape = 1.0D - (dx2 + dz * dz); + if (shape <= 0.0D) { + continue; + } + + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + pos.set(x, topY, z); + if (!isSoilOrStone(level.getBlockState(pos))) { + continue; + } + + int localHeight = Math.max(1, (int) Math.floor(shape * shape * (height + 1) + random.nextDouble() * 1.1D)); + level.setBlock(pos, disturbedSurfaceState(random), 2); + for (int depth = 1; depth <= 2 + random.nextInt(2); depth++) { + pos.set(x, topY - depth, z); + if (isSoilOrStone(level.getBlockState(pos))) { + level.setBlock(pos, disturbedSubsurfaceState(random), 2); + } + } + + if (localHeight <= 1 && shape < 0.42D) { + continue; + } + + for (int y = 1; y <= localHeight; y++) { + pos.set(x, topY + y, z); + if (!level.isEmptyBlock(pos) || level.isEmptyBlock(pos.below())) { + continue; + } + level.setBlock(pos, disturbedSurfaceState(random), 2); + aboveSurfaceBlocks++; + } + } + } + + return aboveSurfaceBlocks; + } + + private boolean carveVent(WorldGenLevel level, RandomSource random, BlockPos center, float radius, int depth) { + Vec3 cursor = Vec3.atCenterOf(center).add(0.0D, 2.1D, 0.0D); + boolean carved = this.carvePocket(level, random, cursor, radius + 0.6F, 2.0F, radius + 0.6F); + + for (int step = 0; step < depth; step++) { + cursor = cursor.add( + random.nextDouble() * 0.5D - 0.25D, + -(0.9D + random.nextDouble() * 0.9D), + random.nextDouble() * 0.5D - 0.25D + ); + carved |= this.carvePocket(level, random, cursor, Math.max(0.95F, radius - step * 0.08F), 1.45F, Math.max(0.95F, radius - step * 0.08F)); + } + + return carved; + } + + private boolean carvePocket(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ) { + int minX = Mth.floor(center.x - radiusX - 1.0F); + int maxX = Mth.floor(center.x + radiusX + 1.0F); + int minY = Math.max(level.getMinBuildHeight() + 1, Mth.floor(center.y - radiusY - 1.0F)); + int maxY = Math.min(level.getMaxBuildHeight() - 2, Mth.floor(center.y + radiusY + 1.0F)); + int minZ = Mth.floor(center.z - radiusZ - 1.0F); + int maxZ = Mth.floor(center.z + radiusZ + 1.0F); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + boolean carvedAny = false; + + for (int x = minX; x <= maxX; x++) { + double dx = (x + 0.5D - center.x) / radiusX; + double dx2 = dx * dx; + for (int z = minZ; z <= maxZ; z++) { + double dz = (z + 0.5D - center.z) / radiusZ; + double dz2 = dz * dz; + for (int y = minY; y <= maxY; y++) { + if (!canAccess(level, x, y, z)) { + continue; + } + double dy = (y + 0.5D - center.y) / radiusY; + pos.set(x, y, z); + BlockState state = level.getBlockState(pos); + double distance = dx2 + dz2 + dy * dy + (hashNoise(x, y, z) - 0.5D) * 0.16D; + + if (distance <= 1.0D) { + if (canCarve(state)) { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + carvedAny = true; + } + continue; + } + + if (distance <= 1.22D && canReplaceShell(state)) { + level.setBlock(pos, random.nextFloat() < 0.58F ? rootedDirtVariant(random) : coarseDirtVariant(random), 2); + } + } + } + } + + return carvedAny; + } + + private void placeSurfaceDripstone(WorldGenLevel level, RandomSource random, BlockPos center, float radius) { + int minX = Mth.floor(center.getX() - radius); + int maxX = Mth.floor(center.getX() + radius); + int minZ = Mth.floor(center.getZ() - radius); + int maxZ = Mth.floor(center.getZ() + radius); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + BlockState pointedDripstone = Blocks.POINTED_DRIPSTONE.defaultBlockState(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccessColumn(level, x, z)) { + continue; + } + + double dx = x + 0.5D - (center.getX() + 0.5D); + double dz = z + 0.5D - (center.getZ() + 0.5D); + if (dx * dx + dz * dz > radius * radius || random.nextFloat() < 0.35F) { + continue; + } + + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + pos.set(x, topY, z); + if (!isSoilOrStone(level.getBlockState(pos))) { + continue; + } + + level.setBlock(pos, Blocks.DRIPSTONE_BLOCK.defaultBlockState(), 2); + int spikeHeight = 1 + random.nextInt(3); + for (int y = 1; y <= spikeHeight; y++) { + pos.set(x, topY + y, z); + if (!level.isEmptyBlock(pos)) { + break; + } + if (!pointedDripstone.canSurvive(level, pos)) { + break; + } + level.setBlock(pos, pointedDripstone, 2); + } + } + } + } + + private static BlockState disturbedSurfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.46F) { + return coarseDirtVariant(random); + } + if (roll < 0.82F) { + return rootedDirtVariant(random); + } + return Blocks.PODZOL.defaultBlockState(); + } + + private static BlockState disturbedSubsurfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.52F) { + return rootedDirtVariant(random); + } + if (roll < 0.9F) { + return coarseDirtVariant(random); + } + return Blocks.PODZOL.defaultBlockState(); + } + + private static boolean isValidSurface(WorldGenLevel level, BlockPos pos) { + BlockPos abovePos = pos.above(); + BlockState state = level.getBlockState(pos); + return level.getFluidState(abovePos).isEmpty() + && isSoilOrStone(state) + && !state.is(Blocks.MUD); + } + + private static boolean isSoilOrStone(BlockState state) { + return state.is(BlockTags.DIRT) + || state.is(AntarchyObjects.INFESTED_ROOTED_DIRT.get()) + || state.is(AntarchyObjects.INFESTED_COARSE_DIRT.get()) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.PODZOL) + || state.is(Blocks.STONE) + || state.is(Blocks.DEEPSLATE) + || state.is(Blocks.GRAVEL); + } + + private static boolean canCarve(BlockState state) { + return !state.isAir() + && state.getFluidState().isEmpty() + && !state.is(Blocks.BEDROCK) + && !state.is(Blocks.BARRIER) + && !state.is(Blocks.OBSIDIAN) + && !state.is(Blocks.CRYING_OBSIDIAN); + } + + private static boolean canReplaceShell(BlockState state) { + return canCarve(state) + && !state.is(BlockTags.LOGS) + && !state.is(BlockTags.LEAVES) + && !state.is(Blocks.WATER) + && !state.is(Blocks.LAVA); + } + + private static double hashNoise(int x, int y, int z) { + long hash = x * 3129871L ^ z * 116129781L ^ y; + hash = hash * hash * 42317861L + hash * 11L; + return ((hash >> 16) & 1023L) / 1023.0D; + } + + private static boolean canAccessColumn(WorldGenLevel level, int x, int z) { + int probeY = Mth.clamp((level.getMinBuildHeight() + level.getMaxBuildHeight()) / 2, level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2); + return canAccess(level, x, probeY, z); + } + + private static boolean canAccess(WorldGenLevel level, int x, int y, int z) { + return canAccess(level, new BlockPos(x, Mth.clamp(y, level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2), z)); + } + + private static boolean canAccess(WorldGenLevel level, BlockPos pos) { + return !(level instanceof WorldGenRegion region) || region.ensureCanWrite(pos); + } + + private static BlockState rootedDirtVariant(RandomSource random) { + return random.nextFloat() < 0.12F + ? AntarchyObjects.INFESTED_ROOTED_DIRT.get().defaultBlockState() + : Blocks.ROOTED_DIRT.defaultBlockState(); + } + + private static BlockState coarseDirtVariant(RandomSource random) { + return random.nextFloat() < 0.08F + ? AntarchyObjects.INFESTED_COARSE_DIRT.get().defaultBlockState() + : Blocks.COARSE_DIRT.defaultBlockState(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormTunnelsFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormTunnelsFeature.java new file mode 100644 index 00000000..e24e5412 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormTunnelsFeature.java @@ -0,0 +1,784 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.server.level.WorldGenRegion; +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; +import net.minecraft.world.phys.Vec3; + +public class MolewormTunnelsFeature extends Feature { + public MolewormTunnelsFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + int chunkStartX = origin.getX() & ~15; + int chunkStartZ = origin.getZ() & ~15; + boolean placedAny = false; + int tooLowOrHigh = 0; + int invalidSurface = 0; + int successfulEntrances = 0; + int extraMainBranches = 0; + int extraSideBranches = 0; + + this.disturbSurface(level, random, chunkStartX, chunkStartZ); + this.raiseSurfaceBurrowField(level, random, chunkStartX, chunkStartZ); + + int entrances = 3 + random.nextInt(3); + for (int i = 0; i < entrances; i++) { + int x = chunkStartX + 1 + random.nextInt(14); + int z = chunkStartZ + 1 + random.nextInt(14); + if (!canAccessColumn(level, x, z)) { + continue; + } + int surfaceY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + if (surfaceY <= level.getMinBuildHeight() + 20 || surfaceY >= level.getMaxBuildHeight() - 20) { + tooLowOrHigh++; + continue; + } + + BlockPos surfacePos = new BlockPos(x, surfaceY, z); + if (!isValidSurface(level, surfacePos)) { + invalidSurface++; + continue; + } + + TunnelStart start = random.nextFloat() < 0.68F + ? this.carveSlopedEntrance(level, random, surfacePos) + : this.carveCollapsedShaft(level, random, surfacePos); + if (start == null) { + continue; + } + if (random.nextFloat() < 0.18F) { + this.placeSurfaceDripstone(level, random, surfacePos, 1.5F + random.nextFloat()); + } + + this.carveMainTunnel(level, random, start.position, start.direction, surfaceY, 0); + successfulEntrances++; + if (random.nextFloat() < 0.50F) { + this.carveMainTunnel(level, random, start.position.add(random.nextDouble() - 0.5D, -0.6D, random.nextDouble() - 0.5D), + rotateHorizontal(start.direction, random.nextBoolean() ? 0.6F : -0.6F), surfaceY, 0); + extraMainBranches++; + } + if (random.nextFloat() < 0.35F) { + this.carveMainTunnel(level, random, start.position.add(random.nextDouble() - 0.5D, -1.0D, random.nextDouble() - 0.5D), + rotateHorizontal(start.direction, random.nextBoolean() ? 1.05F : -1.05F), surfaceY, 1); + extraSideBranches++; + } + placedAny = true; + } + return placedAny; + } + + private void disturbSurface(WorldGenLevel level, RandomSource random, int chunkStartX, int chunkStartZ) { + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + for (int localX = 0; localX < 16; localX++) { + for (int localZ = 0; localZ < 16; localZ++) { + int x = chunkStartX + localX; + int z = chunkStartZ + localZ; + if (!canAccessColumn(level, x, z)) { + continue; + } + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + if (topY <= level.getMinBuildHeight() + 2) { + continue; + } + + pos.set(x, topY, z); + if (!isValidSurface(level, pos)) { + continue; + } + + level.setBlock(pos, disturbedSurfaceState(random), 2); + for (int depth = 1; depth <= 3 + random.nextInt(2); depth++) { + pos.set(x, topY - depth, z); + BlockState state = level.getBlockState(pos); + if (!isSoilOrStone(state)) { + break; + } + level.setBlock(pos, disturbedSubsurfaceState(random), 2); + } + } + } + } + + private void raiseSurfaceBurrowField(WorldGenLevel level, RandomSource random, int chunkStartX, int chunkStartZ) { + int moundCount = 4 + random.nextInt(5); + for (int i = 0; i < moundCount; i++) { + int x = chunkStartX + random.nextInt(16); + int z = chunkStartZ + random.nextInt(16); + if (!canAccessColumn(level, x, z)) { + continue; + } + int y = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + if (y <= level.getMinBuildHeight() + 2) { + continue; + } + + BlockPos center = new BlockPos(x, y, z); + if (!isValidSurface(level, center)) { + continue; + } + + this.raiseBroadMound(level, random, center, 2.1F + random.nextFloat() * 2.2F, 1 + random.nextInt(3)); + } + } + + private TunnelStart carveSlopedEntrance(WorldGenLevel level, RandomSource random, BlockPos surfacePos) { + Vec3 direction = horizontalDirection(random); + Vec3 cursor = Vec3.atCenterOf(surfacePos); + float startRadius = 3.5F + random.nextFloat() * 1.9F; + int steps = 7 + random.nextInt(4); + + this.raiseSpoilMound(level, random, surfacePos, startRadius + 1.5F, 2 + random.nextInt(3), direction); + this.carvePocket(level, random, cursor.add(0.0D, 3.0D, 0.0D), startRadius + 1.8F, 3.6F, startRadius + 1.8F, 0, true, true); + this.carvePocket(level, random, cursor.add(direction.x * 1.8D, 2.4D, direction.z * 1.8D), startRadius + 0.6F, 2.8F, startRadius + 0.6F, 0, false, false); + + for (int step = 0; step < steps; step++) { + float progress = (step + 1) / (float) steps; + float radius = Mth.lerp(progress, startRadius, 2.2F + random.nextFloat() * 0.9F); + cursor = cursor.add( + direction.x * (2.2D + random.nextDouble() * 1.0D), + -(1.0D + random.nextDouble() * 0.7D), + direction.z * (2.2D + random.nextDouble() * 1.0D) + ); + this.carvePocket(level, random, cursor, radius, 1.8F, radius, 4 + step * 2, false, step >= steps - 2); + } + + this.removeFloatingBlocks(level, surfacePos, Mth.ceil(startRadius + 3.0F), surfacePos.getY()); + + Vec3 tunnelDir = new Vec3( + direction.x + random.nextDouble() * 0.3D - 0.15D, + -0.45D - random.nextDouble() * 0.2D, + direction.z + random.nextDouble() * 0.3D - 0.15D + ).normalize(); + return new TunnelStart(cursor.add(0.0D, -0.5D, 0.0D), tunnelDir); + } + + private TunnelStart carveCollapsedShaft(WorldGenLevel level, RandomSource random, BlockPos surfacePos) { + Vec3 center = Vec3.atCenterOf(surfacePos).add(0.0D, 0.5D, 0.0D); + float rimRadius = 4.2F + random.nextFloat() * 2.0F; + this.raiseSpoilRing(level, random, surfacePos, rimRadius + 1.0F, 2 + random.nextInt(2)); + this.carvePocket(level, random, center.add(0.0D, 3.0D, 0.0D), rimRadius + 1.3F, 3.8F, rimRadius + 1.3F, 0, true, true); + + int shaftDepth = 8 + random.nextInt(7); + for (int step = 0; step < shaftDepth; step++) { + float radius = step < 3 ? 2.2F : 1.7F + random.nextFloat() * 0.5F; + Vec3 shaftCenter = center.add( + random.nextDouble() * 0.5D - 0.25D, + -step * 1.45D, + random.nextDouble() * 0.5D - 0.25D + ); + this.carvePocket(level, random, shaftCenter, radius, 1.5F, radius, 5 + step * 2, false, step >= shaftDepth - 3); + } + + this.removeFloatingBlocks(level, surfacePos, Mth.ceil(rimRadius + 3.0F), surfacePos.getY()); + + Vec3 branchDir = horizontalDirection(random).add(0.0D, -0.55D, 0.0D).normalize(); + return new TunnelStart(center.add(0.0D, -shaftDepth * 1.45D, 0.0D), branchDir); + } + + private boolean carveMainTunnel(WorldGenLevel level, RandomSource random, Vec3 start, Vec3 direction, int surfaceY, int branchDepth) { + Vec3 cursor = start; + Vec3 travel = normalizeTunnelDirection(direction); + boolean carved = false; + int minY = level.getMinBuildHeight() + 10; + int targetDepth = 30 + random.nextInt(27) + branchDepth * 8; + int segments = 8 + random.nextInt(5) - branchDepth; + segments = Math.max(segments, 3); + + for (int segment = 0; segment < segments; segment++) { + int currentDepth = surfaceY - Mth.floor(cursor.y); + if (currentDepth >= targetDepth || cursor.y <= minY) { + break; + } + + float segmentProgress = segment / (float) Math.max(1, segments - 1); + float startRadius = branchDepth == 0 + ? 2.0F + segmentProgress * 1.15F + random.nextFloat() * 0.35F + : 1.55F + segmentProgress * 0.7F + random.nextFloat() * 0.25F; + float endRadius = startRadius + (random.nextFloat() - 0.5F) * 0.35F; + double segmentLength = 4.75D + random.nextDouble() * 3.15D; + + Vec3 wobble = new Vec3( + random.nextDouble() * 0.55D - 0.275D, + -0.08D - random.nextDouble() * 0.14D, + random.nextDouble() * 0.55D - 0.275D + ); + travel = normalizeTunnelDirection(travel.add(wobble)); + + Vec3 next = cursor.add(travel.scale(segmentLength)); + if (next.y > cursor.y - 1.5D) { + next = new Vec3(next.x, cursor.y - 1.5D - random.nextDouble() * 2.0D, next.z); + } + if (!canAccess(level, BlockPos.containing(next.x, next.y, next.z))) { + break; + } + + boolean chamber = currentDepth > 14 && (segment == 2 || segment == 4 || random.nextFloat() < 0.22F); + this.carveTube(level, random, cursor, next, startRadius, endRadius, surfaceY, chamber); + carved = true; + + if (branchDepth < 2 && currentDepth > 6 && random.nextFloat() < (branchDepth == 0 ? 0.40F : 0.20F)) { + Vec3 branchDirection = rotateHorizontal(travel, random.nextBoolean() ? 0.95F : -0.95F).add(0.0D, -0.08D - random.nextDouble() * 0.18D, 0.0D); + this.carveMainTunnel(level, random, next, branchDirection, surfaceY, branchDepth + 1); + } + + if (branchDepth == 0 && currentDepth > 18 && currentDepth < targetDepth - 8 && random.nextFloat() < 0.12F) { + next = this.carveDropShaft(level, random, next, surfaceY); + travel = normalizeTunnelDirection(new Vec3(travel.x, -0.65D - random.nextDouble() * 0.12D, travel.z)); + } + + cursor = next; + } + + if (branchDepth == 0 && carved) { + this.carvePocket( + level, + random, + cursor, + 3.5F + random.nextFloat() * 1.8F, + 2.6F + random.nextFloat() * 0.8F, + 3.5F + random.nextFloat() * 1.8F, + surfaceY - Mth.floor(cursor.y), + true, + true + ); + } + + return carved; + } + + private Vec3 carveDropShaft(WorldGenLevel level, RandomSource random, Vec3 start, int surfaceY) { + Vec3 cursor = start; + int steps = 4 + random.nextInt(4); + for (int i = 0; i < steps; i++) { + cursor = cursor.add( + random.nextDouble() * 0.4D - 0.2D, + -(1.9D + random.nextDouble() * 1.4D), + random.nextDouble() * 0.4D - 0.2D + ); + this.carvePocket(level, random, cursor, 1.8F + random.nextFloat() * 0.5F, 1.7F, 1.8F + random.nextFloat() * 0.5F, surfaceY - Mth.floor(cursor.y), false, true); + } + this.carvePocket(level, random, cursor, 3.2F + random.nextFloat(), 2.5F, 3.2F + random.nextFloat(), surfaceY - Mth.floor(cursor.y), true, true); + return cursor; + } + + private void raiseBroadMound(WorldGenLevel level, RandomSource random, BlockPos surfacePos, float radius, int height) { + int minX = Mth.floor(surfacePos.getX() - radius); + int maxX = Mth.floor(surfacePos.getX() + radius); + int minZ = Mth.floor(surfacePos.getZ() - radius); + int maxZ = Mth.floor(surfacePos.getZ() + radius); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccessColumn(level, x, z)) { + continue; + } + double dx = x + 0.5D - (surfacePos.getX() + 0.5D); + double dz = z + 0.5D - (surfacePos.getZ() + 0.5D); + double distance = Math.sqrt(dx * dx + dz * dz); + if (distance > radius) { + continue; + } + + double shape = 1.0D - distance / radius; + int localHeight = (int) Math.floor(shape * shape * (height + 1) + random.nextDouble() * 1.1D); + localHeight = Math.min(localHeight, 2); + if (localHeight <= 0) { + continue; + } + + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + pos.set(x, topY, z); + if (!isSoilOrStone(level.getBlockState(pos))) { + continue; + } + + level.setBlock(pos, disturbedSurfaceState(random), 2); + for (int depth = 1; depth <= 2; depth++) { + pos.set(x, topY - depth, z); + if (isSoilOrStone(level.getBlockState(pos))) { + level.setBlock(pos, disturbedSubsurfaceState(random), 2); + } + } + + if (localHeight <= 1 && shape < 0.45D) { + continue; + } + + for (int y = 1; y <= localHeight; y++) { + pos.set(x, topY + y, z); + if (!level.isEmptyBlock(pos) || level.isEmptyBlock(pos.below())) { + continue; + } + level.setBlock(pos, disturbedSurfaceState(random), 2); + } + } + } + } + + private void placeSurfaceDripstone(WorldGenLevel level, RandomSource random, BlockPos center, float radius) { + int minX = Mth.floor(center.getX() - radius); + int maxX = Mth.floor(center.getX() + radius); + int minZ = Mth.floor(center.getZ() - radius); + int maxZ = Mth.floor(center.getZ() + radius); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + BlockState pointedDripstone = Blocks.POINTED_DRIPSTONE.defaultBlockState(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccessColumn(level, x, z)) { + continue; + } + + double dx = x + 0.5D - (center.getX() + 0.5D); + double dz = z + 0.5D - (center.getZ() + 0.5D); + if (dx * dx + dz * dz > radius * radius || random.nextFloat() < 0.42F) { + continue; + } + + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + pos.set(x, topY, z); + if (!isSoilOrStone(level.getBlockState(pos))) { + continue; + } + + level.setBlock(pos, Blocks.DRIPSTONE_BLOCK.defaultBlockState(), 2); + int spikeHeight = 1 + random.nextInt(3); + for (int y = 1; y <= spikeHeight; y++) { + pos.set(x, topY + y, z); + if (!level.isEmptyBlock(pos) || !pointedDripstone.canSurvive(level, pos)) { + break; + } + level.setBlock(pos, pointedDripstone, 2); + } + } + } + } + + private void raiseSpoilMound(WorldGenLevel level, RandomSource random, BlockPos surfacePos, float radius, int height, Vec3 favoredDirection) { + int minX = Mth.floor(surfacePos.getX() - radius); + int maxX = Mth.floor(surfacePos.getX() + radius); + int minZ = Mth.floor(surfacePos.getZ() - radius); + int maxZ = Mth.floor(surfacePos.getZ() + radius); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccessColumn(level, x, z)) { + continue; + } + double dx = x + 0.5D - (surfacePos.getX() + 0.5D); + double dz = z + 0.5D - (surfacePos.getZ() + 0.5D); + double distance = Math.sqrt(dx * dx + dz * dz); + if (distance > radius) { + continue; + } + + double directionalBias = favoredDirection.x * dx + favoredDirection.z * dz; + int localHeight = (int) Math.floor((1.0D - distance / radius) * height + directionalBias * 0.18D + random.nextDouble() * 0.75D); + localHeight = Math.min(localHeight, 2); + if (localHeight <= 0) { + continue; + } + + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + pos.set(x, topY, z); + if (!isSoilOrStone(level.getBlockState(pos))) { + continue; + } + + level.setBlock(pos, disturbedSurfaceState(random), 2); + for (int y = 1; y <= localHeight; y++) { + pos.set(x, topY + y, z); + if (!level.isEmptyBlock(pos)) { + continue; + } + level.setBlock(pos, disturbedSurfaceState(random), 2); + } + } + } + } + + private void raiseSpoilRing(WorldGenLevel level, RandomSource random, BlockPos surfacePos, float radius, int height) { + int minX = Mth.floor(surfacePos.getX() - radius); + int maxX = Mth.floor(surfacePos.getX() + radius); + int minZ = Mth.floor(surfacePos.getZ() - radius); + int maxZ = Mth.floor(surfacePos.getZ() + radius); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccessColumn(level, x, z)) { + continue; + } + double dx = x + 0.5D - (surfacePos.getX() + 0.5D); + double dz = z + 0.5D - (surfacePos.getZ() + 0.5D); + double distance = Math.sqrt(dx * dx + dz * dz); + if (distance > radius || distance < radius * 0.42D) { + continue; + } + + double rimStrength = 1.0D - Math.abs(distance - radius * 0.72D) / (radius * 0.32D); + int localHeight = (int) Math.floor(rimStrength * height + random.nextDouble() * 0.85D); + localHeight = Math.min(localHeight, 2); + if (localHeight <= 0) { + continue; + } + + int topY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z) - 1; + pos.set(x, topY, z); + if (!isSoilOrStone(level.getBlockState(pos))) { + continue; + } + + level.setBlock(pos, disturbedSurfaceState(random), 2); + for (int y = 1; y <= localHeight; y++) { + pos.set(x, topY + y, z); + if (!level.isEmptyBlock(pos)) { + continue; + } + level.setBlock(pos, disturbedSurfaceState(random), 2); + } + } + } + } + + private void carveTube(WorldGenLevel level, RandomSource random, Vec3 start, Vec3 end, float startRadius, float endRadius, int surfaceY, boolean chamber) { + Vec3 delta = end.subtract(start); + double length = Math.max(delta.length(), 1.0D); + int steps = Math.max(4, Mth.ceil(length * 2.2D)); + + for (int step = 0; step <= steps; step++) { + float progress = step / (float) steps; + Vec3 center = start.add(delta.scale(progress)); + float radius = Mth.lerp(progress, startRadius, endRadius); + float radiusX = radius + (random.nextFloat() - 0.5F) * 0.25F; + float radiusY = Math.max(1.45F, radius * (chamber ? 0.95F : 0.82F) + (random.nextFloat() - 0.5F) * 0.2F); + float radiusZ = radius + (random.nextFloat() - 0.5F) * 0.25F; + this.carvePocket(level, random, center, radiusX, radiusY, radiusZ, surfaceY - Mth.floor(center.y), chamber && step % 3 == 0, true); + } + + if (chamber) { + Vec3 chamberCenter = start.add(end).scale(0.5D); + this.carvePocket( + level, + random, + chamberCenter, + endRadius + 1.2F + random.nextFloat(), + endRadius * 0.85F + 1.1F, + endRadius + 1.2F + random.nextFloat(), + surfaceY - Mth.floor(chamberCenter.y), + true, + true + ); + } + } + + private void carvePocket(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ, int depthFromSurface, boolean chamber, boolean decorateCeiling) { + int minX = Mth.floor(center.x - radiusX - 1.5F); + int maxX = Mth.floor(center.x + radiusX + 1.5F); + int minY = Math.max(level.getMinBuildHeight() + 1, Mth.floor(center.y - radiusY - 2.0F)); + int maxY = Math.min(level.getMaxBuildHeight() - 2, Mth.floor(center.y + radiusY + 2.0F)); + int minZ = Mth.floor(center.z - radiusZ - 1.5F); + int maxZ = Mth.floor(center.z + radiusZ + 1.5F); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + double dx = (x + 0.5D - center.x) / radiusX; + double dx2 = dx * dx; + for (int z = minZ; z <= maxZ; z++) { + double dz = (z + 0.5D - center.z) / radiusZ; + double dz2 = dz * dz; + for (int y = minY; y <= maxY; y++) { + if (!canAccess(level, x, y, z)) { + continue; + } + double dy = (y + 0.5D - center.y) / radiusY; + double noise = (hashNoise(x, y, z) - 0.5D) * 0.18D; + double distance = dx2 + dz2 + dy * dy + noise; + pos.set(x, y, z); + BlockState state = level.getBlockState(pos); + + if (distance <= 1.0D) { + if (canCarve(state)) { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + } + continue; + } + + if (distance > 1.24D || !canReplaceShell(state)) { + continue; + } + + level.setBlock(pos, selectShellState(random, depthFromSurface, center.y, y, chamber), 2); + } + } + } + + this.decorateFloor(level, random, center, radiusX, radiusZ, depthFromSurface, chamber); + if (decorateCeiling) { + this.decorateCeiling(level, random, center, radiusX, radiusY, radiusZ, depthFromSurface, chamber); + } + } + + private void decorateFloor(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusZ, int depthFromSurface, boolean chamber) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - 6.0D)); + int maxY = Math.min(level.getMaxBuildHeight() - 4, Mth.floor(center.y + 3.0D)); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = maxY; y >= minY; y--) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y + 1, z)) { + continue; + } + pos.set(x, y, z); + if (!level.isEmptyBlock(pos) || !level.isEmptyBlock(pos.above())) { + continue; + } + + BlockPos floorPos = pos.below(); + BlockState floorState = level.getBlockState(floorPos); + if (!canReplaceShell(floorState)) { + continue; + } + + level.setBlock(floorPos, selectFloorState(random, depthFromSurface, chamber), 2); + break; + } + } + } + } + + private void decorateCeiling(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ, int depthFromSurface, boolean chamber) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - radiusY)); + int maxY = Math.min(level.getMaxBuildHeight() - 3, Mth.floor(center.y + radiusY + 1.0F)); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + BlockState hangingRoots = Blocks.HANGING_ROOTS.defaultBlockState(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = maxY; y >= minY; y--) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y - 1, z)) { + continue; + } + pos.set(x, y, z); + if (level.isEmptyBlock(pos)) { + continue; + } + + BlockPos airPos = pos.below(); + if (!level.isEmptyBlock(airPos)) { + continue; + } + + if (!canReplaceShell(level.getBlockState(pos))) { + break; + } + + level.setBlock(pos, random.nextFloat() < 0.76F ? rootedDirtVariant(random) : coarseDirtVariant(random), 2); + if (random.nextFloat() < hangingRootChance(depthFromSurface, chamber) && hangingRoots.canSurvive(level, airPos)) { + level.setBlock(airPos, hangingRoots, 2); + } + break; + } + } + } + } + + private static BlockState selectShellState(RandomSource random, int depthFromSurface, double centerY, int y, boolean chamber) { + boolean ceiling = y > centerY + 0.25D; + if (ceiling) { + return random.nextFloat() < 0.72F ? rootedDirtVariant(random) : coarseDirtVariant(random); + } + return random.nextFloat() < 0.58F ? coarseDirtVariant(random) : rootedDirtVariant(random); + } + + private static BlockState selectFloorState(RandomSource random, int depthFromSurface, boolean chamber) { + return random.nextFloat() < 0.56F ? coarseDirtVariant(random) : rootedDirtVariant(random); + } + + private static BlockState disturbedSurfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.44F) { + return coarseDirtVariant(random); + } + if (roll < 0.79F) { + return rootedDirtVariant(random); + } + return Blocks.PODZOL.defaultBlockState(); + } + + private static BlockState disturbedSubsurfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.48F) { + return rootedDirtVariant(random); + } + if (roll < 0.84F) { + return coarseDirtVariant(random); + } + return Blocks.PODZOL.defaultBlockState(); + } + + private static float hangingRootChance(int depthFromSurface, boolean chamber) { + float chance = depthFromSurface > 18 ? 0.34F : 0.18F; + return chamber ? chance + 0.14F : chance; + } + + private static Vec3 horizontalDirection(RandomSource random) { + float angle = random.nextFloat() * Mth.TWO_PI; + return new Vec3(Mth.cos(angle), 0.0D, Mth.sin(angle)); + } + + private static Vec3 rotateHorizontal(Vec3 vector, float radians) { + double cos = Mth.cos(radians); + double sin = Mth.sin(radians); + return new Vec3(vector.x * cos - vector.z * sin, vector.y, vector.x * sin + vector.z * cos); + } + + private static Vec3 normalizeTunnelDirection(Vec3 direction) { + Vec3 horizontal = new Vec3(direction.x, 0.0D, direction.z); + if (horizontal.lengthSqr() < 1.0E-4D) { + horizontal = new Vec3(1.0D, 0.0D, 0.0D); + } + horizontal = horizontal.normalize(); + double y = Mth.clamp(direction.y, -0.88D, -0.08D); + return new Vec3(horizontal.x, y, horizontal.z).normalize(); + } + + private static boolean isValidSurface(WorldGenLevel level, BlockPos pos) { + BlockPos abovePos = pos.above(); + BlockState state = level.getBlockState(pos); + return level.canSeeSky(abovePos) + && level.getFluidState(abovePos).isEmpty() + && isSoilOrStone(state) + && !state.is(Blocks.MUD); + } + + private static boolean canCarve(BlockState state) { + return !state.isAir() + && state.getFluidState().isEmpty() + && !state.is(Blocks.BEDROCK) + && !state.is(Blocks.BARRIER) + && !state.is(Blocks.OBSIDIAN) + && !state.is(Blocks.CRYING_OBSIDIAN); + } + + private static boolean canReplaceShell(BlockState state) { + return canCarve(state) + && !state.is(BlockTags.LOGS) + && !state.is(BlockTags.LEAVES) + && !state.is(Blocks.WATER) + && !state.is(Blocks.LAVA); + } + + private static boolean isSoilOrStone(BlockState state) { + return state.is(BlockTags.DIRT) + || state.is(AntarchyObjects.INFESTED_ROOTED_DIRT.get()) + || state.is(AntarchyObjects.INFESTED_COARSE_DIRT.get()) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.PODZOL) + || state.is(Blocks.STONE) + || state.is(Blocks.DEEPSLATE) + || state.is(Blocks.GRAVEL); + } + + private static double hashNoise(int x, int y, int z) { + long hash = x * 3129871L ^ z * 116129781L ^ y; + hash = hash * hash * 42317861L + hash * 11L; + return ((hash >> 16) & 1023L) / 1023.0D; + } + + private static boolean canAccessColumn(WorldGenLevel level, int x, int z) { + int probeY = Mth.clamp((level.getMinBuildHeight() + level.getMaxBuildHeight()) / 2, level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2); + return canAccess(level, x, probeY, z); + } + + private static boolean canAccess(WorldGenLevel level, int x, int y, int z) { + return canAccess(level, new BlockPos(x, Mth.clamp(y, level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2), z)); + } + + private static boolean canAccess(WorldGenLevel level, BlockPos pos) { + return !(level instanceof WorldGenRegion region) || region.ensureCanWrite(pos); + } + + private void removeFloatingBlocks(WorldGenLevel level, BlockPos center, int radius, int surfaceY) { + int minX = center.getX() - radius; + int maxX = center.getX() + radius; + int minZ = center.getZ() - radius; + int maxZ = center.getZ() + radius; + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + BlockPos.MutableBlockPos belowPos = new BlockPos.MutableBlockPos(); + + for (int y = surfaceY + 1; y <= surfaceY + 8; y++) { + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y - 1, z)) { + continue; + } + + pos.set(x, y, z); + BlockState state = level.getBlockState(pos); + if (state.isAir()) { + continue; + } + + belowPos.set(x, y - 1, z); + if (!level.getBlockState(belowPos).isAir()) { + continue; + } + + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + } + } + } + } + + private static BlockState rootedDirtVariant(RandomSource random) { + return random.nextFloat() < 0.12F + ? AntarchyObjects.INFESTED_ROOTED_DIRT.get().defaultBlockState() + : Blocks.ROOTED_DIRT.defaultBlockState(); + } + + private static BlockState coarseDirtVariant(RandomSource random) { + return random.nextFloat() < 0.08F + ? AntarchyObjects.INFESTED_COARSE_DIRT.get().defaultBlockState() + : Blocks.COARSE_DIRT.defaultBlockState(); + } + + private static class TunnelStart { + private final Vec3 position; + private final Vec3 direction; + + private TunnelStart(Vec3 position, Vec3 direction) { + this.position = position; + this.direction = direction; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormWarrensFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormWarrensFeature.java new file mode 100644 index 00000000..26fe9ab7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/MolewormWarrensFeature.java @@ -0,0 +1,437 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.WorldGenRegion; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.MultifaceBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; + +public class MolewormWarrensFeature extends Feature { + public MolewormWarrensFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = findDeepCavity(level, context.origin(), random); + if (origin == null) { + return false; + } + + carveWarrenNetwork(level, random, origin, true); + return true; + } + + public static void carveWarrenNetwork(WorldGenLevel level, RandomSource random, BlockPos origin, boolean carveOriginChamber) { + Vec3 center = Vec3.atCenterOf(origin); + if (carveOriginChamber) { + carvePocket(level, random, center, 5.8F + random.nextFloat() * 1.8F, 3.6F, 5.8F + random.nextFloat() * 1.8F, true, true); + } + + int majorBranches = 7 + random.nextInt(4); + for (int i = 0; i < majorBranches; i++) { + float angle = (Mth.TWO_PI * i / majorBranches) + random.nextFloat() * 0.8F; + Vec3 direction = new Vec3(Mth.cos(angle), -0.12D - random.nextDouble() * 0.28D, Mth.sin(angle)).normalize(); + carveMainTunnel(level, random, center, direction, 0); + } + } + + @Nullable + private static BlockPos findDeepCavity(WorldGenLevel level, BlockPos origin, RandomSource random) { + for (int attempt = 0; attempt < 36; attempt++) { + BlockPos candidate = origin.offset(random.nextInt(29) - 14, random.nextInt(49) - 24, random.nextInt(29) - 14); + if (candidate.getY() > 52 || candidate.getY() < level.getMinBuildHeight() + 16) { + continue; + } + + for (int dy = -10; dy <= 10; dy++) { + BlockPos airPos = candidate.above(dy); + if (isUsableCavity(level, airPos)) { + return airPos; + } + } + } + return null; + } + + private static boolean carveMainTunnel(WorldGenLevel level, RandomSource random, Vec3 start, Vec3 direction, int branchDepth) { + Vec3 cursor = start; + Vec3 travel = normalizeDirection(direction); + boolean carved = false; + int minY = level.getMinBuildHeight() + 10; + int segments = Math.max(5, 12 + random.nextInt(6) - branchDepth * 2); + + for (int segment = 0; segment < segments; segment++) { + if (cursor.y <= minY) { + break; + } + + float progress = segment / (float) Math.max(1, segments - 1); + float startRadius = branchDepth == 0 + ? 2.6F + progress * 1.1F + random.nextFloat() * 0.45F + : 1.9F + progress * 0.7F + random.nextFloat() * 0.35F; + float endRadius = startRadius + (random.nextFloat() - 0.5F) * 0.45F; + double segmentLength = 6.5D + random.nextDouble() * 5.5D; + + Vec3 wobble = new Vec3( + random.nextDouble() * 0.7D - 0.35D, + -0.06D - random.nextDouble() * 0.22D, + random.nextDouble() * 0.7D - 0.35D + ); + travel = normalizeDirection(travel.add(wobble)); + + Vec3 next = cursor.add(travel.scale(segmentLength)); + if (next.y > cursor.y - 0.8D) { + next = new Vec3(next.x, cursor.y - 0.8D - random.nextDouble() * 2.4D, next.z); + } + if (!canAccess(level, BlockPos.containing(next.x, next.y, next.z))) { + break; + } + + boolean chamber = segment == 0 || segment == segments - 1 || random.nextFloat() < (branchDepth == 0 ? 0.34F : 0.22F); + carveTube(level, random, cursor, next, startRadius, endRadius, chamber); + carved = true; + + if (branchDepth < 2 && random.nextFloat() < (branchDepth == 0 ? 0.45F : 0.28F)) { + Vec3 branchDirection = rotateHorizontal(travel, random.nextBoolean() ? 0.95F : -0.95F) + .add(0.0D, -0.04D - random.nextDouble() * 0.18D, 0.0D); + carveMainTunnel(level, random, next, branchDirection, branchDepth + 1); + } + + if (branchDepth == 0 && random.nextFloat() < 0.28F) { + next = carveDropShaft(level, random, next); + travel = normalizeDirection(new Vec3(travel.x, -0.65D - random.nextDouble() * 0.16D, travel.z)); + } + + cursor = next; + } + + return carved; + } + + private static Vec3 carveDropShaft(WorldGenLevel level, RandomSource random, Vec3 start) { + Vec3 cursor = start; + int steps = 4 + random.nextInt(5); + for (int i = 0; i < steps; i++) { + cursor = cursor.add( + random.nextDouble() * 0.45D - 0.225D, + -(1.8D + random.nextDouble() * 1.8D), + random.nextDouble() * 0.45D - 0.225D + ); + carvePocket(level, random, cursor, 2.1F + random.nextFloat() * 0.5F, 1.9F, 2.1F + random.nextFloat() * 0.5F, false, true); + } + carvePocket(level, random, cursor, 4.0F + random.nextFloat() * 1.2F, 2.8F, 4.0F + random.nextFloat() * 1.2F, true, true); + return cursor; + } + + private static void carveTube(WorldGenLevel level, RandomSource random, Vec3 start, Vec3 end, float startRadius, float endRadius, boolean chamber) { + Vec3 delta = end.subtract(start); + double length = Math.max(delta.length(), 1.0D); + int steps = Math.max(5, Mth.ceil(length * 2.25D)); + + for (int step = 0; step <= steps; step++) { + float progress = step / (float) steps; + Vec3 center = start.add(delta.scale(progress)); + float radius = Mth.lerp(progress, startRadius, endRadius); + float radiusX = radius + (random.nextFloat() - 0.5F) * 0.3F; + float radiusY = Math.max(1.85F, radius * (chamber ? 0.95F : 0.8F) + (random.nextFloat() - 0.5F) * 0.25F); + float radiusZ = radius + (random.nextFloat() - 0.5F) * 0.3F; + carvePocket(level, random, center, radiusX, radiusY, radiusZ, chamber && step % 3 == 0, true); + } + + if (chamber) { + Vec3 chamberCenter = start.add(end).scale(0.5D); + carvePocket(level, random, chamberCenter, endRadius + 1.6F, endRadius * 0.9F + 1.2F, endRadius + 1.6F, true, true); + } + } + + private static void carvePocket(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ, boolean mudHeavy, boolean decorate) { + int minX = Mth.floor(center.x - radiusX - 1.5F); + int maxX = Mth.floor(center.x + radiusX + 1.5F); + int minY = Math.max(level.getMinBuildHeight() + 1, Mth.floor(center.y - radiusY - 2.0F)); + int maxY = Math.min(level.getMaxBuildHeight() - 2, Mth.floor(center.y + radiusY + 2.0F)); + int minZ = Mth.floor(center.z - radiusZ - 1.5F); + int maxZ = Mth.floor(center.z + radiusZ + 1.5F); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + double dx = (x + 0.5D - center.x) / radiusX; + double dx2 = dx * dx; + for (int z = minZ; z <= maxZ; z++) { + double dz = (z + 0.5D - center.z) / radiusZ; + double dz2 = dz * dz; + for (int y = minY; y <= maxY; y++) { + if (!canAccess(level, x, y, z)) { + continue; + } + + double dy = (y + 0.5D - center.y) / radiusY; + double noise = (hashNoise(x, y, z) - 0.5D) * 0.18D; + double distance = dx2 + dz2 + dy * dy + noise; + pos.set(x, y, z); + BlockState state = level.getBlockState(pos); + + if (distance <= 1.0D) { + if (canCarve(state)) { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + } + continue; + } + + if (distance <= 1.24D && canReplaceShell(state)) { + level.setBlock(pos, selectShellState(random, center.y, y), 2); + } + } + } + } + + if (decorate) { + decorateFloor(level, random, center, radiusX, radiusZ, mudHeavy); + decorateCeiling(level, random, center, radiusX, radiusY, radiusZ); + } + } + + private static void decorateFloor(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusZ, boolean mudHeavy) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - 6.0D)); + int maxY = Math.min(level.getMaxBuildHeight() - 4, Mth.floor(center.y + 3.0D)); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = maxY; y >= minY; y--) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y + 1, z)) { + continue; + } + + pos.set(x, y, z); + if (!level.isEmptyBlock(pos) || !level.isEmptyBlock(pos.above())) { + continue; + } + + BlockPos floorPos = pos.below(); + BlockState floorState = level.getBlockState(floorPos); + if (!canReplaceShell(floorState)) { + continue; + } + + float mudChance = mudHeavy ? 0.22F : 0.08F; + level.setBlock(floorPos, random.nextFloat() < mudChance ? Blocks.MUD.defaultBlockState() : selectFloorState(random), 2); + tryPlaceDeadBush(level, random, pos); + break; + } + } + } + } + + private static void decorateCeiling(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - radiusY)); + int maxY = Math.min(level.getMaxBuildHeight() - 3, Mth.floor(center.y + radiusY + 1.0F)); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + BlockState hangingRoots = Blocks.HANGING_ROOTS.defaultBlockState(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = maxY; y >= minY; y--) { + if (!canAccess(level, x, y, z) || !canAccess(level, x, y - 1, z)) { + continue; + } + + pos.set(x, y, z); + if (level.isEmptyBlock(pos)) { + continue; + } + + BlockPos airPos = pos.below(); + if (!level.isEmptyBlock(airPos) || !canReplaceShell(level.getBlockState(pos))) { + break; + } + + level.setBlock(pos, random.nextFloat() < 0.74F ? rootedDirtVariant(random) : coarseDirtVariant(random), 2); + if (random.nextFloat() < 0.38F && hangingRoots.canSurvive(level, airPos)) { + level.setBlock(airPos, hangingRoots, 2); + } + break; + } + } + } + + decorateWalls(level, random, center, radiusX, radiusY, radiusZ); + } + + private static void decorateWalls(WorldGenLevel level, RandomSource random, Vec3 center, float radiusX, float radiusY, float radiusZ) { + int minX = Mth.floor(center.x - radiusX); + int maxX = Mth.floor(center.x + radiusX); + int minY = Math.max(level.getMinBuildHeight() + 2, Mth.floor(center.y - radiusY)); + int maxY = Math.min(level.getMaxBuildHeight() - 3, Mth.floor(center.y + radiusY)); + int minZ = Mth.floor(center.z - radiusZ); + int maxZ = Mth.floor(center.z + radiusZ); + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = minY; y <= maxY; y++) { + if (random.nextFloat() >= 0.035F || !canAccess(level, x, y, z)) { + continue; + } + + pos.set(x, y, z); + if (!level.isEmptyBlock(pos)) { + continue; + } + + tryPlaceGlowLichen(level, random, pos); + } + } + } + } + + private static boolean isUsableCavity(WorldGenLevel level, BlockPos pos) { + return canAccess(level, pos) + && level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()) + && isSoilOrStone(level.getBlockState(pos.below())) + && !level.isEmptyBlock(pos.above(3)); + } + + private static Vec3 normalizeDirection(Vec3 direction) { + Vec3 horizontal = new Vec3(direction.x, 0.0D, direction.z); + if (horizontal.lengthSqr() < 1.0E-4D) { + horizontal = new Vec3(1.0D, 0.0D, 0.0D); + } + horizontal = horizontal.normalize(); + double y = Mth.clamp(direction.y, -0.92D, -0.05D); + return new Vec3(horizontal.x, y, horizontal.z).normalize(); + } + + private static Vec3 rotateHorizontal(Vec3 vector, float radians) { + double cos = Mth.cos(radians); + double sin = Mth.sin(radians); + return new Vec3(vector.x * cos - vector.z * sin, vector.y, vector.x * sin + vector.z * cos); + } + + private static BlockState selectShellState(RandomSource random, double centerY, int y) { + return y > centerY + 0.25D + ? (random.nextFloat() < 0.72F ? rootedDirtVariant(random) : coarseDirtVariant(random)) + : (random.nextFloat() < 0.58F ? coarseDirtVariant(random) : rootedDirtVariant(random)); + } + + private static BlockState selectFloorState(RandomSource random) { + return random.nextFloat() < 0.54F ? coarseDirtVariant(random) : rootedDirtVariant(random); + } + + private static boolean canCarve(BlockState state) { + return !state.isAir() + && state.getFluidState().isEmpty() + && !state.is(Blocks.BEDROCK) + && !state.is(Blocks.BARRIER) + && !state.is(Blocks.OBSIDIAN) + && !state.is(Blocks.CRYING_OBSIDIAN); + } + + private static boolean canReplaceShell(BlockState state) { + return canCarve(state) + && !state.is(BlockTags.LOGS) + && !state.is(BlockTags.LEAVES) + && !state.is(Blocks.WATER) + && !state.is(Blocks.LAVA); + } + + private static boolean isSoilOrStone(BlockState state) { + return state.is(BlockTags.DIRT) + || state.is(AntarchyObjects.INFESTED_ROOTED_DIRT.get()) + || state.is(AntarchyObjects.INFESTED_COARSE_DIRT.get()) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.PODZOL) + || state.is(Blocks.STONE) + || state.is(Blocks.DEEPSLATE) + || state.is(Blocks.GRAVEL) + || state.is(Blocks.TUFF) + || state.is(Blocks.MUD); + } + + private static double hashNoise(int x, int y, int z) { + long hash = x * 3129871L ^ z * 116129781L ^ y; + hash = hash * hash * 42317861L + hash * 11L; + return ((hash >> 16) & 1023L) / 1023.0D; + } + + private static boolean canAccess(WorldGenLevel level, int x, int y, int z) { + return canAccess(level, new BlockPos(x, Mth.clamp(y, level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2), z)); + } + + private static boolean canAccess(WorldGenLevel level, BlockPos pos) { + return !(level instanceof WorldGenRegion region) || region.ensureCanWrite(pos); + } + + private static BlockState rootedDirtVariant(RandomSource random) { + return random.nextFloat() < 0.12F + ? AntarchyObjects.INFESTED_ROOTED_DIRT.get().defaultBlockState() + : Blocks.ROOTED_DIRT.defaultBlockState(); + } + + private static BlockState coarseDirtVariant(RandomSource random) { + return random.nextFloat() < 0.08F + ? AntarchyObjects.INFESTED_COARSE_DIRT.get().defaultBlockState() + : Blocks.COARSE_DIRT.defaultBlockState(); + } + + private static void tryPlaceDeadBush(WorldGenLevel level, RandomSource random, BlockPos pos) { + if (random.nextFloat() >= 0.045F) { + return; + } + + BlockState bush = Blocks.DEAD_BUSH.defaultBlockState(); + if (level.isEmptyBlock(pos) && bush.canSurvive(level, pos)) { + level.setBlock(pos, bush, 2); + } + } + + private static void tryPlaceGlowLichen(WorldGenLevel level, RandomSource random, BlockPos pos) { + Direction[] directions = Direction.values(); + for (int i = 0; i < directions.length; i++) { + Direction direction = directions[(i + random.nextInt(directions.length)) % directions.length]; + if (direction == Direction.DOWN) { + continue; + } + + BlockPos attachmentPos = pos.relative(direction); + if (!canAccess(level, attachmentPos)) { + continue; + } + + BlockState attachmentState = level.getBlockState(attachmentPos); + if (attachmentState.isAir() || !attachmentState.isFaceSturdy(level, attachmentPos, direction.getOpposite())) { + continue; + } + + BlockState lichen = Blocks.GLOW_LICHEN.defaultBlockState().setValue(MultifaceBlock.getFaceProperty(direction), true); + if (lichen.canSurvive(level, pos)) { + level.setBlock(pos, lichen, 2); + return; + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodCocoonTreeFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodCocoonTreeFeature.java new file mode 100644 index 00000000..fe086d50 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodCocoonTreeFeature.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public class OuranwoodCocoonTreeFeature extends OuranwoodTreeFeature { + + public OuranwoodCocoonTreeFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + if (!super.place(context)) return false; + spawnGuaranteedCocoon(context.level(), context.origin(), context.config(), context.random()); + return true; + } + + private void spawnGuaranteedCocoon(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random) { + if (!(level.getLevel() instanceof ServerLevel serverLevel)) return; + + // Pick a branch direction and a Y somewhere in the lower-mid trunk + Direction dir = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int branchY = 10 + random.nextInt(8); + int branchLength = 4 + random.nextInt(3); // 4–6 logs out from the trunk + + // Place the branch logs, then re-assert the anchor tip so it's always a log + for (int i = 1; i <= branchLength; i++) { + BlockPos p = origin.above(branchY).relative(dir, i); + setBlock(level, p, config.trunkProvider().getState(random, p)); + } + BlockPos anchor = origin.above(branchY).relative(dir, branchLength); + + // Clear everything below the anchor and spawn the cocooned brutalfly + BrutalflyCocoonFeature.clearCocoonVolume(level, anchor); + BrutalflyEntity brutalfly = AntarchyObjects.BRUTALFLY.get().create(serverLevel); + if (brutalfly == null) return; + brutalfly.moveTo(anchor.getX() + 0.5, anchor.getY() - 15.0, anchor.getZ() + 0.5, + random.nextFloat() * 360.0F, 0.0F); + brutalfly.setCocooned(true, anchor); + brutalfly.setHealth(brutalfly.getMaxHealth()); + serverLevel.addFreshEntity(brutalfly); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeConfiguration.java new file mode 100644 index 00000000..2162cdc7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeConfiguration.java @@ -0,0 +1,39 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; + +public record OuranwoodTreeConfiguration( + BlockStateProvider trunkProvider, + BlockStateProvider foliageProvider, + IntProvider height, + IntProvider trunkRadius, + IntProvider canopyRadius, + IntProvider canopyDepth, + IntProvider buttressHeight, + IntProvider trunkVineLength, + boolean juvenile, + float flyingSquirrelNestChance, + float flyingSquirrelHollowChance, + float waspNestChance, + float caterpillarChrysalisChance +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockStateProvider.CODEC.fieldOf("trunk_provider").forGetter(OuranwoodTreeConfiguration::trunkProvider), + BlockStateProvider.CODEC.fieldOf("foliage_provider").forGetter(OuranwoodTreeConfiguration::foliageProvider), + IntProvider.codec(8, 255).fieldOf("height").forGetter(OuranwoodTreeConfiguration::height), + IntProvider.codec(1, 6).fieldOf("trunk_radius").forGetter(OuranwoodTreeConfiguration::trunkRadius), + IntProvider.codec(2, 32).fieldOf("canopy_radius").forGetter(OuranwoodTreeConfiguration::canopyRadius), + IntProvider.codec(3, 64).fieldOf("canopy_depth").forGetter(OuranwoodTreeConfiguration::canopyDepth), + IntProvider.codec(0, 32).fieldOf("buttress_height").forGetter(OuranwoodTreeConfiguration::buttressHeight), + IntProvider.codec(1, 16).fieldOf("trunk_vine_length").forGetter(OuranwoodTreeConfiguration::trunkVineLength), + Codec.BOOL.optionalFieldOf("juvenile", false).forGetter(OuranwoodTreeConfiguration::juvenile), + Codec.floatRange(0.0F, 1.0F).optionalFieldOf("flying_squirrel_nest_chance", 0.0F).forGetter(OuranwoodTreeConfiguration::flyingSquirrelNestChance), + Codec.floatRange(0.0F, 1.0F).optionalFieldOf("flying_squirrel_hollow_chance", 1.0F).forGetter(OuranwoodTreeConfiguration::flyingSquirrelHollowChance), + Codec.floatRange(0.0F, 1.0F).optionalFieldOf("wasp_nest_chance", 0.0F).forGetter(OuranwoodTreeConfiguration::waspNestChance), + Codec.floatRange(0.0F, 1.0F).optionalFieldOf("caterpillar_chrysalis_chance", 0.0F).forGetter(OuranwoodTreeConfiguration::caterpillarChrysalisChance) + ).apply(instance, OuranwoodTreeConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeFeature.java new file mode 100644 index 00000000..98e24455 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeFeature.java @@ -0,0 +1,1528 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.WaspNestBlock; +import com.craisinlord.antarchy.content.block.OuranwoodLeavesBlock; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.mojang.serialization.Codec; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.CaveVines; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.VineBlock; +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.block.state.properties.IntegerProperty; +import org.jetbrains.annotations.Nullable; + +public class OuranwoodTreeFeature extends Feature { + public OuranwoodTreeFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + OuranwoodTreeConfiguration config = context.config(); + RandomSource random = context.random(); + + if (!canGrowOn(level, origin.below())) { + return false; + } + + int height = config.height().sample(random); + int trunkRadius = config.trunkRadius().sample(random); + int canopyRadius = config.canopyRadius().sample(random); + int canopyDepth = Math.min(config.canopyDepth().sample(random), height / 2); + int buttressHeight = config.buttressHeight().sample(random); + + if (origin.getY() + height + canopyDepth + 4 >= level.getMaxBuildHeight()) { + return false; + } + + if (!config.juvenile()) { + this.placeButtresses(level, origin, config, random, trunkRadius, buttressHeight); + this.stabilizeBase(level, origin, config, random, trunkRadius + 1); + } + + this.placeTrunk(level, origin, config, random, trunkRadius, height); + this.placeWaspNest(level, origin, config, random, trunkRadius, height); + this.placeBaseTrunkVines(level, origin, config, random, trunkRadius, height); + if (!config.juvenile()) { + this.adaptAndRefreshTerrain(level, origin, random, trunkRadius); + } + BlockPos canopyCenter = this.resolveCanopyCenter(origin, height, canopyDepth); + BlockPos crownCenter = canopyCenter.above(canopyDepth / 3); + int branchThickness = !config.juvenile() && trunkRadius >= 3 ? 2 : 1; + this.placeUpperBranches(level, origin, canopyCenter, config, random, height, canopyRadius, branchThickness); + this.placeCanopyScaffolding(level, canopyCenter, config, random, canopyRadius, branchThickness); + this.placeCanopy(level, canopyCenter, config, random, canopyRadius, canopyDepth); + this.placeMidCanopy(level, origin, config, random, canopyRadius, height, trunkRadius, branchThickness); + this.placeTopCrown(level, crownCenter, config, random, canopyRadius, random.nextInt(4)); + this.placeHiddenCanopySupports(level, canopyCenter, crownCenter, config, random, canopyRadius, canopyDepth); + this.coverExposedBranchSides(level, origin, canopyCenter, config, random, trunkRadius, canopyRadius, canopyDepth, height); + this.pruneExposedTopLogs(level, origin, canopyCenter, config, random, trunkRadius, canopyRadius, canopyDepth, height); + this.updateLeafDistances(level, origin, height, canopyRadius, canopyDepth); + this.placeHangingAcorns(level, canopyCenter, config, random, canopyRadius, canopyDepth); + this.placeTrunkVines(level, origin, config, random, trunkRadius, height); + this.placeVinesAndGlowBerries(level, canopyCenter, config, random, canopyRadius, canopyDepth, height); + this.placeFlyingSquirrelNest(level, origin, config, random, trunkRadius, height); + this.placeCaterpillarChrysalis(level, origin, config, random, canopyCenter, canopyRadius, canopyDepth); + return true; + } + + protected BlockPos resolveCanopyCenter(BlockPos origin, int height, int canopyDepth) { + int canopyBaseY = height - Math.max(2, canopyDepth / 4); + return origin.above(canopyBaseY); + } + + protected void placeTrunk(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int height) { + for (int y = 0; y < height; y++) { + int taper = 0; + if (config.juvenile()) { + taper = Math.max(0, y - (height - 10)) / 6; + } else { + int distanceFromTop = height - y; + if (distanceFromTop <= 5) { + taper = trunkRadius >= 4 ? 2 : 1; + } else if (distanceFromTop <= 14) { + taper = 1; + } + } + int currentRadius = config.juvenile() + ? Math.max(1, trunkRadius - Math.max(0, y - (height - 10)) / 6) + : Math.max(1, trunkRadius - taper); + this.fillIrregularTrunkCircle(level, origin.above(y), currentRadius, config, random, origin.getY(), height); + } + } + + protected void placeButtresses(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int buttressHeight) { + int buttressRadius = trunkRadius + 2; + int buttressRadiusSq = buttressRadius * buttressRadius; + int trunkRadiusSq = trunkRadius * trunkRadius; + int profile = random.nextInt(4); + int targetHeight = Math.max(2, Math.min(5, buttressHeight + random.nextInt(2) - 1)); + for (int x = -buttressRadius; x <= buttressRadius; x++) { + for (int z = -buttressRadius; z <= buttressRadius; z++) { + int distanceSq = x * x + z * z; + if (distanceSq > buttressRadiusSq) { + continue; + } + + int columnHeight = this.computeButtressColumnHeight(profile, x, z, distanceSq, trunkRadiusSq, targetHeight); + for (int y = 0; y < columnHeight; y++) { + BlockPos pos = origin.offset(x, y, z); + if (canReplace(level, pos)) { + setBlock(level, pos, this.selectTrunkState(config, random, pos, pos.getY() - origin.getY(), 32)); + } + } + } + } + } + + protected int computeButtressColumnHeight(int profile, int x, int z, int distanceSq, int trunkRadiusSq, int targetHeight) { + int columnHeight; + double radialDistance = Math.sqrt(distanceSq); + switch (profile) { + case 0 -> { + int falloff = (int) Math.floor(radialDistance / 2.35D); + columnHeight = targetHeight - falloff; + if (distanceSq <= trunkRadiusSq) { + columnHeight = Math.min(5, columnHeight + 1); + } + } + case 1 -> { + int falloff = (int) Math.floor(radialDistance / 2.2D); + columnHeight = targetHeight - falloff; + if (Math.abs(x) > Math.abs(z) && distanceSq > trunkRadiusSq) { + columnHeight -= 1; + } + } + case 2 -> { + int falloff = (int) Math.floor(radialDistance / 2.2D); + columnHeight = targetHeight - falloff; + if (Math.abs(z) > Math.abs(x) && distanceSq > trunkRadiusSq) { + columnHeight -= 1; + } + } + default -> { + int falloff = (int) Math.floor(radialDistance / 2.5D); + columnHeight = targetHeight - falloff; + if (distanceSq > trunkRadiusSq && Math.abs(Math.abs(x) - Math.abs(z)) == 0) { + columnHeight -= 1; + } + } + } + + return Math.max(1, Math.min(5, columnHeight)); + } + + protected void placeCanopy(WorldGenLevel level, BlockPos center, OuranwoodTreeConfiguration config, RandomSource random, int canopyRadius, int canopyDepth) { + int minRadius = config.juvenile() ? 2 : 4; + int lowerDepth = Math.max(2, canopyDepth * 3 / 4); + int upperDepth = Math.max(2, canopyDepth / 2); + for (int y = -lowerDepth; y <= upperDepth; y++) { + float normalized = y < 0 + ? Math.abs(y) / (float) (lowerDepth + 1) + : y / (float) (upperDepth + 1); + float layerScale = y < 0 + ? 1.08F - normalized * 0.72F + : 1.02F - normalized * 0.9F; + int layerRadius = Math.max(minRadius, Math.round(canopyRadius * layerScale)); + BlockPos layerCenter = center.above(y); + boolean dense = y <= -lowerDepth + 2 || y >= upperDepth - 1; + this.fillLeafCircle(level, layerCenter, config, random, layerRadius, dense); + + if (layerRadius > minRadius + 1) { + int roundedRadius = Math.max(2, layerRadius - (y < 0 ? 2 : 1)); + BlockPos roundedCenter = y < 0 ? layerCenter.above() : layerCenter.above(random.nextFloat() < 0.55F ? 1 : 0); + this.fillLeafCircle(level, roundedCenter, config, random, roundedRadius, true); + } + } + + int hangerAttempts = config.juvenile() ? 3 + random.nextInt(3) : 8 + random.nextInt(5); + for (int i = 0; i < hangerAttempts; i++) { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int distance = Math.max(2, canopyRadius - 1 + random.nextInt(3)); + BlockPos leafPos = center.relative(direction, distance).below(1 + random.nextInt(2)); + this.tryPlaceGlowVineUnderLeaf(level, leafPos, random, config.juvenile() ? 2 + random.nextInt(3) : 4 + random.nextInt(5)); + } + } + + protected void placeMidCanopy(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int canopyRadius, int height, int trunkRadius, int branchThickness) { + int layers = config.juvenile() ? 2 + random.nextInt(2) : 5 + random.nextInt(3); + int verticalSpacing = config.juvenile() ? Math.max(4, height / 5) : Math.max(8, height / 9); + int horizontalSpread = config.juvenile() ? 1 : Math.max(2, trunkRadius + canopyRadius / 6); + for (int i = 0; i < layers; i++) { + int y = height / 4 + i * verticalSpacing + random.nextInt(config.juvenile() ? 3 : 6); + BlockPos layerCenter = origin.offset( + random.nextInt(horizontalSpread * 2 + 1) - horizontalSpread, + y, + random.nextInt(horizontalSpread * 2 + 1) - horizontalSpread + ); + int radius = config.juvenile() + ? Math.max(2, canopyRadius - 2 - i - random.nextInt(2)) + : Math.max(4, canopyRadius - 3 - i - random.nextInt(2)); + this.placeBranchHub(level, layerCenter, config, random, radius, branchThickness); + this.fillLeafCircle(level, layerCenter, config, random, radius, false); + if (radius > 3) { + this.fillLeafCircle(level, layerCenter.above(), config, random, radius - 2, true); + } + } + } + + protected void placeUpperBranches(WorldGenLevel level, BlockPos origin, BlockPos canopyCenter, OuranwoodTreeConfiguration config, RandomSource random, int height, int canopyRadius, int branchThickness) { + int branches = config.juvenile() ? 4 + random.nextInt(3) : 7 + random.nextInt(4); + for (int i = 0; i < branches; i++) { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int startY = config.juvenile() + ? Math.max(3, height - canopyRadius - 6 - random.nextInt(6)) + : height - 32 - random.nextInt(28); + int branchLength = config.juvenile() + ? Math.max(4, canopyRadius / 2 + 1 + random.nextInt(3)) + : Math.max(7, canopyRadius / 2 + 2 + random.nextInt(Math.max(3, canopyRadius / 2))); + for (int step = 1; step <= branchLength; step++) { + BlockPos branchPos = origin.above(startY + step / (config.juvenile() ? 3 : 4)).relative(direction, step); + this.placeBranchSegment(level, branchPos, config, random, direction, branchThickness); + this.placeBranchLeafCover(level, branchPos, config, random, direction); + if (step >= branchLength / 3 && random.nextFloat() < 0.72F) { + this.fillBranchLeafCluster(level, branchPos, config, random, 2 + random.nextInt(config.juvenile() ? 2 : 3), false); + } + } + + BlockPos branchTip = canopyCenter.relative(direction, Math.max(2, branchLength - 2)).above(random.nextInt(3) - 1); + this.fillBranchLeafCluster(level, branchTip, config, random, config.juvenile() ? 3 + random.nextInt(2) : 4 + random.nextInt(3), true); + if (random.nextFloat() < 0.65F) { + Direction sideDirection = random.nextBoolean() ? direction.getClockWise() : direction.getCounterClockWise(); + int sideLength = 2 + random.nextInt(3); + for (int sideStep = 1; sideStep <= sideLength; sideStep++) { + BlockPos sideBranchPos = branchTip.relative(sideDirection, sideStep).below(sideStep / 2); + this.placeBranchSegment(level, sideBranchPos, config, random, sideDirection, branchThickness); + this.placeBranchLeafCover(level, sideBranchPos, config, random, sideDirection); + } + this.fillBranchLeafCluster(level, branchTip.relative(sideDirection, sideLength), config, random, 3 + random.nextInt(2), false); + } + } + } + + protected void placeTopCrown(WorldGenLevel level, BlockPos crownCenter, OuranwoodTreeConfiguration config, RandomSource random, int canopyRadius, int variant) { + int crownRadius = config.juvenile() ? Math.max(3, canopyRadius / 2) : Math.max(5, canopyRadius / 2); + if (config.juvenile()) { + this.placeRoundedJuvenileCrown(level, crownCenter, config, random, crownRadius); + return; + } + + switch (variant) { + case 0 -> this.placeTieredCrown(level, crownCenter, config, random, crownRadius); + case 1 -> this.placeSplitCrown(level, crownCenter, config, random, crownRadius); + case 2 -> this.placeWindsweptCrown(level, crownCenter, config, random, crownRadius); + default -> this.placeClusteredCrown(level, crownCenter, config, random, crownRadius); + } + } + + protected void placeRoundedJuvenileCrown(WorldGenLevel level, BlockPos crownCenter, OuranwoodTreeConfiguration config, RandomSource random, int crownRadius) { + int lowerRadius = Math.max(2, crownRadius); + int middleRadius = Math.max(2, crownRadius - 1); + int upperRadius = Math.max(1, crownRadius - 2); + this.fillLeafCircle(level, crownCenter.below(), config, random, lowerRadius, false); + this.fillLeafCircle(level, crownCenter, config, random, middleRadius, true); + this.fillLeafCircle(level, crownCenter.above(), config, random, upperRadius, true); + if (upperRadius > 1 && random.nextFloat() < 0.45F) { + this.fillLeafCircle(level, crownCenter.above(2), config, random, upperRadius - 1, true); + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (random.nextFloat() < 0.75F) { + BlockPos lobeCenter = crownCenter.relative(direction, Math.max(1, crownRadius - 1)); + this.fillLeafCircle(level, lobeCenter, config, random, Math.max(2, crownRadius - 2), true); + } + } + } + + protected void placeCanopyScaffolding(WorldGenLevel level, BlockPos canopyCenter, OuranwoodTreeConfiguration config, RandomSource random, int canopyRadius, int branchThickness) { + int spokeLength = config.juvenile() ? Math.max(2, canopyRadius / 3) : Math.max(4, canopyRadius / 2); + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos cursor = canopyCenter; + for (int step = 1; step <= spokeLength; step++) { + cursor = cursor.relative(direction).above(step % (config.juvenile() ? 4 : 3) == 0 ? 1 : 0); + this.placeBranchSegment(level, cursor, config, random, direction, branchThickness); + this.placeBranchLeafCover(level, cursor, config, random, direction); + if (step >= 2 && random.nextFloat() < 0.55F) { + this.fillBranchLeafCluster(level, cursor, config, random, 2 + random.nextInt(2), false); + } + } + } + } + + protected void placeHiddenCanopySupports(WorldGenLevel level, BlockPos canopyCenter, BlockPos crownCenter, OuranwoodTreeConfiguration config, RandomSource random, int canopyRadius, int canopyDepth) { + int spokeLength = config.juvenile() ? Math.max(2, canopyRadius / 3) : Math.max(3, canopyRadius / 2); + int verticalSpread = Math.max(2, canopyDepth / 3); + + for (Direction direction : Direction.Plane.HORIZONTAL) { + int branches = config.juvenile() ? 1 : 2; + for (int branch = 0; branch < branches; branch++) { + BlockPos start = (branch == 0 ? canopyCenter : crownCenter).above(random.nextInt(verticalSpread + 1) - verticalSpread / 2); + for (int step = 1; step <= spokeLength; step++) { + BlockPos pos = start.relative(direction, step).above(step > 2 && random.nextFloat() < 0.35F ? 1 : 0); + this.tryPlaceHiddenSupportLog(level, pos, config, random); + } + } + } + } + + protected void placeBranchHub(WorldGenLevel level, BlockPos center, OuranwoodTreeConfiguration config, RandomSource random, int radius, int branchThickness) { + this.placeBranchSegment(level, center, config, random, null, branchThickness); + this.placeBranchLeafCover(level, center, config, random, null); + for (Direction direction : Direction.Plane.HORIZONTAL) { + int length = Math.max(2, radius / 2 + random.nextInt(2)); + for (int step = 1; step <= length; step++) { + BlockPos branchPos = center.relative(direction, step).above(step / 3); + this.placeBranchSegment(level, branchPos, config, random, direction, branchThickness); + this.placeBranchLeafCover(level, branchPos, config, random, direction); + } + } + this.fillBranchLeafCluster(level, center, config, random, Math.max(2, radius - 1), false); + } + + protected void placeBranchSegment(WorldGenLevel level, BlockPos pos, OuranwoodTreeConfiguration config, RandomSource random, Direction axisDirection, int thickness) { + this.placeLog(level, pos, config, random); + if (thickness <= 1) { + return; + } + + if (axisDirection == null) { + for (Direction direction : Direction.Plane.HORIZONTAL) { + this.placeLog(level, pos.relative(direction), config, random); + } + return; + } + + if (axisDirection.getAxis() == Direction.Axis.X) { + this.placeLog(level, pos.north(), config, random); + this.placeLog(level, pos.south(), config, random); + } else { + this.placeLog(level, pos.east(), config, random); + this.placeLog(level, pos.west(), config, random); + } + + if (random.nextFloat() < 0.35F) { + this.placeLog(level, pos.below(), config, random); + } + } + + protected void placeLog(WorldGenLevel level, BlockPos pos, OuranwoodTreeConfiguration config, RandomSource random) { + if (canReplace(level, pos)) { + setBlock(level, pos, config.trunkProvider().getState(random, pos)); + } + } + + protected void placeBranchLeafCover(WorldGenLevel level, BlockPos pos, OuranwoodTreeConfiguration config, RandomSource random, Direction axisDirection) { + this.placeBranchTopLeafPad(level, pos.above(), config, random, axisDirection); + this.tryPlaceLeaf(level, pos.below(), config, random); + + if (axisDirection == null) { + for (Direction direction : Direction.Plane.HORIZONTAL) { + this.tryPlaceLeaf(level, pos.relative(direction), config, random); + } + this.placeBranchSideLeafWrap(level, pos, config, random, null); + return; + } + + if (axisDirection.getAxis() == Direction.Axis.X) { + this.tryPlaceLeaf(level, pos.north(), config, random); + this.tryPlaceLeaf(level, pos.south(), config, random); + } else { + this.tryPlaceLeaf(level, pos.east(), config, random); + this.tryPlaceLeaf(level, pos.west(), config, random); + } + + this.placeBranchSideLeafWrap(level, pos, config, random, axisDirection); + } + + protected void placeBranchTopLeafPad(WorldGenLevel level, BlockPos center, OuranwoodTreeConfiguration config, RandomSource random, Direction axisDirection) { + this.tryPlaceLeaf(level, center, config, random); + + if (axisDirection == null || random.nextFloat() < 0.9F) { + this.fillLeafCircle(level, center, config, random, 1, true); + return; + } + + if (axisDirection.getAxis() == Direction.Axis.X) { + this.tryPlaceLeaf(level, center.north(), config, random); + this.tryPlaceLeaf(level, center.south(), config, random); + if (random.nextFloat() < 0.45F) { + this.tryPlaceLeaf(level, center.east(), config, random); + } + if (random.nextFloat() < 0.45F) { + this.tryPlaceLeaf(level, center.west(), config, random); + } + return; + } + + this.tryPlaceLeaf(level, center.east(), config, random); + this.tryPlaceLeaf(level, center.west(), config, random); + if (random.nextFloat() < 0.45F) { + this.tryPlaceLeaf(level, center.north(), config, random); + } + if (random.nextFloat() < 0.45F) { + this.tryPlaceLeaf(level, center.south(), config, random); + } + } + + protected void placeBranchSideLeafWrap(WorldGenLevel level, BlockPos pos, OuranwoodTreeConfiguration config, RandomSource random, Direction axisDirection) { + if (axisDirection == null) { + for (Direction direction : Direction.Plane.HORIZONTAL) { + this.tryPlaceLeaf(level, pos.relative(direction).above(), config, random); + } + return; + } + + if (axisDirection.getAxis() == Direction.Axis.X) { + this.tryPlaceLeaf(level, pos.north(2), config, random); + this.tryPlaceLeaf(level, pos.south(2), config, random); + this.tryPlaceLeaf(level, pos.north().above(), config, random); + this.tryPlaceLeaf(level, pos.south().above(), config, random); + if (random.nextFloat() < 0.6F) { + this.tryPlaceLeaf(level, pos.north().below(), config, random); + } + if (random.nextFloat() < 0.6F) { + this.tryPlaceLeaf(level, pos.south().below(), config, random); + } + return; + } + + this.tryPlaceLeaf(level, pos.east(2), config, random); + this.tryPlaceLeaf(level, pos.west(2), config, random); + this.tryPlaceLeaf(level, pos.east().above(), config, random); + this.tryPlaceLeaf(level, pos.west().above(), config, random); + if (random.nextFloat() < 0.6F) { + this.tryPlaceLeaf(level, pos.east().below(), config, random); + } + if (random.nextFloat() < 0.6F) { + this.tryPlaceLeaf(level, pos.west().below(), config, random); + } + } + + protected void placeTrunkVines(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int height) { + int attempts = config.juvenile() ? 4 + random.nextInt(4) : 10 + random.nextInt(8); + int minY = config.juvenile() ? Math.max(2, height / 5) : Math.max(6, height / 6); + int maxY = Math.max(minY, height - Math.max(5, height / 4)); + for (int i = 0; i < attempts; i++) { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int y = minY + random.nextInt(maxY - minY + 1); + int lateralOffset = random.nextInt(trunkRadius * 2 + 1) - trunkRadius; + BlockPos supportPos = switch (direction) { + case NORTH -> origin.offset(lateralOffset, y, -trunkRadius); + case SOUTH -> origin.offset(lateralOffset, y, trunkRadius); + case EAST -> origin.offset(trunkRadius, y, lateralOffset); + case WEST -> origin.offset(-trunkRadius, y, lateralOffset); + default -> origin.above(y); + }; + this.tryPlaceAttachedVine(level, supportPos, direction, config.trunkVineLength().sample(random)); + } + } + + protected void placeBaseTrunkVines(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int height) { + int topBand = Math.min(10, Math.max(4, height / 5)); + int attempts = config.juvenile() ? 2 + random.nextInt(3) : 6 + random.nextInt(6); + for (int i = 0; i < attempts; i++) { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int y = random.nextInt(topBand + 1); + int lateralOffset = random.nextInt(trunkRadius * 2 + 1) - trunkRadius; + BlockPos supportPos = switch (direction) { + case NORTH -> origin.offset(lateralOffset, y, -trunkRadius); + case SOUTH -> origin.offset(lateralOffset, y, trunkRadius); + case EAST -> origin.offset(trunkRadius, y, lateralOffset); + case WEST -> origin.offset(-trunkRadius, y, lateralOffset); + default -> origin.above(y); + }; + if (!this.isBaseTrunkBlock(level.getBlockState(supportPos))) { + continue; + } + + this.tryPlaceAttachedVine(level, supportPos, direction, 2 + random.nextInt(4)); + } + } + + protected void placeVinesAndGlowBerries(WorldGenLevel level, BlockPos canopyCenter, OuranwoodTreeConfiguration config, RandomSource random, int canopyRadius, int canopyDepth, int height) { + int vineAttempts = config.juvenile() ? 8 + random.nextInt(6) : 20 + random.nextInt(12); + for (int i = 0; i < vineAttempts; i++) { + BlockPos anchor = canopyCenter.offset( + random.nextInt(canopyRadius * 2 + 1) - canopyRadius, + random.nextInt(canopyDepth + height / 6) - canopyDepth / 2, + random.nextInt(canopyRadius * 2 + 1) - canopyRadius + ); + this.tryPlaceVine(level, anchor, random); + } + + int berryAttempts = config.juvenile() ? 3 + random.nextInt(3) : 8 + random.nextInt(6); + for (int i = 0; i < berryAttempts; i++) { + BlockPos leafPos = canopyCenter.offset( + random.nextInt(canopyRadius * 2 + 1) - canopyRadius, + random.nextInt(canopyDepth + height / 7) - canopyDepth / 2, + random.nextInt(canopyRadius * 2 + 1) - canopyRadius + ); + this.tryPlaceGlowVineUnderLeaf(level, leafPos, random, 2 + random.nextInt(5)); + } + } + + protected void placeFlyingSquirrelNest(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int height) { + if (config.juvenile() || trunkRadius < 2 || random.nextFloat() >= config.flyingSquirrelNestChance()) { + return; + } + + Direction opening = Direction.Plane.HORIZONTAL.getRandomDirection(random); + Direction sideways = opening.getClockWise(); + boolean expandedHollow = random.nextFloat() < config.flyingSquirrelHollowChance(); + int chamberDepth = expandedHollow ? Math.min(trunkRadius, 3) : 1; + int halfWidth = expandedHollow ? 1 : 0; + int chamberHeight = expandedHollow ? 3 : 2; + int minFloorY = Math.max(3, height / 7); + int maxFloorY = Math.max(minFloorY, Math.min(height - chamberHeight - 4, height / 2)); + int floorY = minFloorY + random.nextInt(maxFloorY - minFloorY + 1); + List floorBlocks = new ArrayList<>(); + + for (int lateral = -halfWidth; lateral <= halfWidth; lateral++) { + for (int depth = 0; depth <= chamberDepth; depth++) { + int radialDistance = trunkRadius - depth; + if (radialDistance * radialDistance + lateral * lateral > trunkRadius * trunkRadius) { + continue; + } + BlockPos floorPos = origin.above(floorY - 1).relative(opening, trunkRadius - depth).relative(sideways, lateral); + floorBlocks.add(floorPos.immutable()); + for (int y = 0; y < chamberHeight; y++) { + setBlock(level, floorPos.above(y + 1), Blocks.AIR.defaultBlockState()); + } + } + } + + if (floorBlocks.isEmpty()) { + return; + } + + // Place the marker block at the first floor position; it will spawn squirrels and + // convert itself to COARSE_DIRT shortly after the chunk loads. + // The tick is scheduled here on the WorldGenLevel because onPlace() is never + // called during world generation, so the block cannot self-schedule. + int squirrelCount = 1 + random.nextInt(3); + BlockPos markerPos = floorBlocks.get(0); + setBlock(level, markerPos, AntarchyObjects.SQUIRREL_NEST_BLOCK.get().defaultBlockState() + .setValue(com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock.SQUIRREL_COUNT, squirrelCount)); + level.scheduleTick(markerPos, AntarchyObjects.SQUIRREL_NEST_BLOCK.get(), 20); + for (int i = 1; i < floorBlocks.size(); i++) { + setBlock(level, floorBlocks.get(i), Blocks.COARSE_DIRT.defaultBlockState()); + } + + this.placeNestAcorns(level, floorBlocks, random); + } + + protected void placeWaspNest(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int height) { + if (config.juvenile() || trunkRadius < 2 || random.nextFloat() >= config.waspNestChance()) { + return; + } + + Direction opening = Direction.Plane.HORIZONTAL.getRandomDirection(random); + Direction span = opening.getClockWise(); + int nestY = 3 + random.nextInt(Math.max(1, Math.min(7, height / 8))); + BlockPos nestPos = origin.above(nestY).relative(opening, trunkRadius - 1); + BlockPos nestPos2 = nestPos.relative(span); + BlockPos nestPos3 = nestPos.above(); + BlockPos nestPos4 = nestPos3.relative(span); + if (!this.canFitWaspNest(level, nestPos, nestPos2, nestPos3, nestPos4)) { + return; + } + + this.clearWaspNestCavity(level, nestPos, opening, span); + + BlockState nestState = AntarchyObjects.WASP_NEST.get().defaultBlockState().setValue(WaspNestBlock.FACING, opening); + setBlock(level, nestPos, nestState); + setBlock(level, nestPos2, nestState); + setBlock(level, nestPos3, nestState); + setBlock(level, nestPos4, nestState); + } + + protected boolean canFitWaspNest(WorldGenLevel level, BlockPos nestPos, BlockPos nestPos2, BlockPos nestPos3, BlockPos nestPos4) { + return this.canFitWaspNestBlock(level, nestPos) + && this.canFitWaspNestBlock(level, nestPos2) + && this.canFitWaspNestBlock(level, nestPos3) + && this.canFitWaspNestBlock(level, nestPos4); + } + + protected boolean canFitWaspNestBlock(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.is(BlockTags.LOGS) || canReplace(level, pos); + } + + protected void clearWaspNestCavity(WorldGenLevel level, BlockPos nestPos, Direction opening, Direction span) { + BlockPos anchor = nestPos.relative(opening); + for (int forward = 0; forward <= 3; forward++) { + BlockPos front = anchor.relative(opening, forward); + for (int up = -1; up <= 3; up++) { + for (int side = -1; side <= 2; side++) { + BlockPos clearPos = front.above(up).relative(span, side); + if (!level.getBlockState(clearPos).isAir()) { + setBlock(level, clearPos, Blocks.AIR.defaultBlockState()); + } + } + } + } + } + + protected void placeNestAcorns(WorldGenLevel level, List floorBlocks, RandomSource random) { + List plantablePositions = new ArrayList<>(); + BlockState acornState = AntarchyObjects.OURANWOOD_ACORN_BLOCK.get().defaultBlockState(); + for (BlockPos floorPos : floorBlocks) { + BlockPos acornPos = floorPos.above(); + if (!level.isEmptyBlock(acornPos) || !acornState.canSurvive(level, acornPos)) { + continue; + } + plantablePositions.add(acornPos.immutable()); + } + + int acornsToPlace = Math.min(plantablePositions.size(), 1 + random.nextInt(3)); + for (int i = 0; i < acornsToPlace; i++) { + int index = random.nextInt(plantablePositions.size()); + BlockPos acornPos = plantablePositions.remove(index); + setBlock(level, acornPos, acornState); + } + } + + protected void spawnFlyingSquirrels(WorldGenLevel level, List interiorSpaces, RandomSource random) { + if (interiorSpaces.isEmpty() || !(level.getLevel() instanceof ServerLevel serverLevel)) { + return; + } + + int squirrelCount = 1 + random.nextInt(3); + for (int i = 0; i < squirrelCount; i++) { + FlyingSquirrelEntity squirrel = AntarchyObjects.FLYING_SQUIRREL.get().create(serverLevel); + if (squirrel == null) { + continue; + } + + BlockPos targetPos = interiorSpaces.get(random.nextInt(interiorSpaces.size())); + if (!this.canSpawnSquirrelInHollow(level, targetPos)) { + squirrel.discard(); + continue; + } + squirrel.moveTo( + targetPos.getX() + 0.2D + random.nextDouble() * 0.6D, + targetPos.getY() + 0.05D, + targetPos.getZ() + 0.2D + random.nextDouble() * 0.6D, + random.nextFloat() * 360.0F, + 0.0F + ); + serverLevel.addFreshEntity(squirrel); + } + } + + protected void placeCaterpillarChrysalis(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, BlockPos canopyCenter, int canopyRadius, int canopyDepth) { + // Tree-grown chrysalis placement is intentionally disabled for now. + } + + /** + * Finds a log or leaf block in the canopy that has sufficient clear space beneath it. + * {@code clearBelow} is the vertical depth to check; {@code clearRadius} is the XZ half-width (0 = 1x1, 1 = 3x3). + */ + protected @Nullable BlockPos findCanopyAnchor(WorldGenLevel level, RandomSource random, BlockPos canopyCenter, int canopyRadius, int canopyDepth, int clearBelow, int clearRadius, int attempts) { + BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + int r = Math.max(1, canopyRadius - 1); + for (int i = 0; i < attempts; i++) { + int dx = random.nextInt(r * 2 + 1) - r; + int dz = random.nextInt(r * 2 + 1) - r; + + int cx = canopyCenter.getX() + dx; + int cz = canopyCenter.getZ() + dz; + + for (int dy = canopyDepth / 4; dy >= -canopyDepth / 2; dy--) { + pos.set(cx, canopyCenter.getY() + dy, cz); + BlockState anchorState = level.getBlockState(pos); + if (!anchorState.is(BlockTags.LOGS) && !anchorState.is(BlockTags.LEAVES)) continue; + + boolean clear = true; + outer: + for (int drop = 1; drop <= clearBelow; drop++) { + for (int bx = -clearRadius; bx <= clearRadius; bx++) { + for (int bz = -clearRadius; bz <= clearRadius; bz++) { + pos.set(cx + bx, canopyCenter.getY() + dy - drop, cz + bz); + BlockState below = level.getBlockState(pos); + if (below.isSolid() && !below.is(BlockTags.LEAVES)) { clear = false; break outer; } + } + } + } + if (clear) return new BlockPos(cx, canopyCenter.getY() + dy, cz); + } + } + return null; + } + + protected boolean canSpawnSquirrelInHollow(WorldGenLevel level, BlockPos targetPos) { + return level.isEmptyBlock(targetPos) + && level.isEmptyBlock(targetPos.above()) + && !level.getBlockState(targetPos.below()).canBeReplaced(); + } + + protected void adaptTerrain(WorldGenLevel level, BlockPos origin, RandomSource random, int trunkRadius) { + int moundRadius = trunkRadius + 4; + int moundRadiusSq = moundRadius * moundRadius; + int baseY = origin.getY() - 1; + for (int x = -moundRadius; x <= moundRadius; x++) { + for (int z = -moundRadius; z <= moundRadius; z++) { + int distanceSq = x * x + z * z; + if (distanceSq > moundRadiusSq) { + continue; + } + + int worldX = origin.getX() + x; + int worldZ = origin.getZ() + z; + int currentTopY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, worldX, worldZ) - 1; + int falloff = (int) Math.floor(Math.sqrt(distanceSq) / 2.1D); + int desiredTopY = baseY - falloff + (distanceSq <= trunkRadius * trunkRadius ? 0 : random.nextInt(2)); + if (currentTopY > desiredTopY) { + continue; + } + + for (int y = currentTopY + 1; y <= desiredTopY; y++) { + BlockPos targetPos = new BlockPos(worldX, y, worldZ); + if (canReplaceTerrain(level, targetPos)) { + setBlock(level, targetPos, soilState(random)); + } + } + } + } + + } + + protected void refreshTerrainSurface(WorldGenLevel level, BlockPos origin, RandomSource random, int radius) { + int radiusSq = radius * radius; + int minY = Math.max(level.getMinBuildHeight(), origin.getY() - 6); + int maxY = Math.min(level.getMaxBuildHeight() - 1, origin.getY() + 4); + + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + if (x * x + z * z > radiusSq) { + continue; + } + + int worldX = origin.getX() + x; + int worldZ = origin.getZ() + z; + BlockPos topSoilPos = null; + + for (int y = maxY; y >= minY; y--) { + BlockPos pos = new BlockPos(worldX, y, worldZ); + BlockState state = level.getBlockState(pos); + if (!isTreeSurfaceSoil(state)) { + continue; + } + + BlockPos abovePos = pos.above(); + if (!level.getBlockState(abovePos).isAir()) { + if (state.is(Blocks.MOSS_BLOCK) && isBaseTrunkBlock(level.getBlockState(abovePos))) { + topSoilPos = pos; + break; + } + if (isSurfaceCoverState(state)) { + setBlock(level, pos, soilState(random)); + } + continue; + } + + topSoilPos = pos; + break; + } + + if (topSoilPos == null) { + continue; + } + + BlockState topState = level.getBlockState(topSoilPos); + if (!isSurfaceCoverState(topState)) { + setBlock(level, topSoilPos, surfaceState(random)); + } + } + } + } + + protected void adaptAndRefreshTerrain(WorldGenLevel level, BlockPos origin, RandomSource random, int trunkRadius) { + int radius = trunkRadius + 4; + int radiusSq = radius * radius; + int trunkRadiusSq = trunkRadius * trunkRadius; + int baseY = origin.getY() - 1; + int minY = Math.max(level.getMinBuildHeight(), origin.getY() - 6); + int maxY = Math.min(level.getMaxBuildHeight() - 1, origin.getY() + 4); + + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + int distanceSq = x * x + z * z; + if (distanceSq > radiusSq) { + continue; + } + + int worldX = origin.getX() + x; + int worldZ = origin.getZ() + z; + + // Raise soil to form a mound around the base (from adaptTerrain) + int currentTopY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, worldX, worldZ) - 1; + int falloff = (int) Math.floor(Math.sqrt(distanceSq) / 2.1D); + int desiredTopY = baseY - falloff + (distanceSq <= trunkRadiusSq ? 0 : random.nextInt(2)); + for (int y = currentTopY + 1; y <= desiredTopY; y++) { + BlockPos targetPos = new BlockPos(worldX, y, worldZ); + if (canReplaceTerrain(level, targetPos)) { + setBlock(level, targetPos, soilState(random)); + } + } + + // Set correct surface type on top soil block (from refreshTerrainSurface) + BlockPos topSoilPos = null; + for (int y = maxY; y >= minY; y--) { + BlockPos pos = new BlockPos(worldX, y, worldZ); + BlockState state = level.getBlockState(pos); + if (!isTreeSurfaceSoil(state)) { + continue; + } + BlockPos abovePos = pos.above(); + if (!level.getBlockState(abovePos).isAir()) { + if (state.is(Blocks.MOSS_BLOCK) && isBaseTrunkBlock(level.getBlockState(abovePos))) { + topSoilPos = pos; + break; + } + if (isSurfaceCoverState(state)) { + setBlock(level, pos, soilState(random)); + } + continue; + } + topSoilPos = pos; + break; + } + if (topSoilPos != null) { + BlockState topState = level.getBlockState(topSoilPos); + if (!isSurfaceCoverState(topState)) { + setBlock(level, topSoilPos, surfaceState(random)); + } + } + } + } + } + + protected void stabilizeBase(WorldGenLevel level, BlockPos origin, OuranwoodTreeConfiguration config, RandomSource random, int radius) { + int radiusSq = radius * radius; + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + if (x * x + z * z > radiusSq) { + continue; + } + + BlockPos topPos = origin.offset(x, 0, z); + for (int y = topPos.getY() - 1; y > level.getMinBuildHeight(); y--) { + BlockPos belowPos = new BlockPos(topPos.getX(), y, topPos.getZ()); + BlockState belowState = level.getBlockState(belowPos); + if (belowState.isFaceSturdy(level, belowPos, Direction.UP) && !canReplaceTerrain(level, belowPos)) { + break; + } + + if (canReplaceTerrain(level, belowPos)) { + setBlock(level, belowPos, this.selectTrunkState(config, random, belowPos, belowPos.getY() - origin.getY(), 32)); + } else { + break; + } + } + } + } + } + + protected void fillCircle(WorldGenLevel level, BlockPos center, int radius, StateFactory stateFactory) { + int radiusSq = radius * radius; + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + if (x * x + z * z > radiusSq) { + continue; + } + + BlockPos targetPos = center.offset(x, 0, z); + BlockState state = stateFactory.create(targetPos); + if (canReplace(level, targetPos)) { + setBlock(level, targetPos, state); + } + } + } + } + + protected void fillIrregularTrunkCircle(WorldGenLevel level, BlockPos center, int radius, OuranwoodTreeConfiguration config, RandomSource random, int baseY, int height) { + int radiusSq = radius * radius; + for (int x = -radius - 1; x <= radius + 1; x++) { + for (int z = -radius - 1; z <= radius + 1; z++) { + int distanceSq = x * x + z * z; + if (distanceSq > radiusSq + 1) { + continue; + } + + if (distanceSq == radiusSq + 1 && random.nextFloat() < 0.86F) { + continue; + } + + if (distanceSq >= Math.max(1, radiusSq - radius) && random.nextFloat() < 0.04F) { + continue; + } + + BlockPos targetPos = center.offset(x, 0, z); + if (canReplace(level, targetPos)) { + setBlock(level, targetPos, this.selectTrunkState(config, random, targetPos, targetPos.getY() - baseY, height)); + } + } + } + } + + protected BlockState selectTrunkState(OuranwoodTreeConfiguration config, RandomSource random, BlockPos pos, int localY, int height) { + BlockState baseState = config.trunkProvider().getState(random, pos); + if (localY <= 1) { + return Blocks.MOSS_BLOCK.defaultBlockState(); + } + + if (localY <= 4) { + float mossChance = Mth.lerp((localY - 2) / 2.0F, 0.8F, 0.2F); + if (random.nextFloat() < mossChance) { + return Blocks.MOSS_BLOCK.defaultBlockState(); + } + return this.getMossyTrunkState(baseState); + } + + if (localY <= 10) { + float mossyChance = Mth.lerp((localY - 5) / 5.0F, 0.95F, 0.2F); + if (random.nextFloat() < mossyChance) { + return this.getMossyTrunkState(baseState); + } + return baseState; + } + + float mossChance = this.getMossChance(localY, height); + if (mossChance <= 0.0F || random.nextFloat() > mossChance) { + return baseState; + } + + return this.getMossyTrunkState(baseState); + } + + protected BlockState getMossyTrunkState(BlockState baseState) { + return switch (baseState.getValue(RotatedPillarBlock.AXIS)) { + case X, Y, Z -> AntarchyObjects.MOSSY_OURANWOOD_WOOD.get().defaultBlockState() + .setValue(RotatedPillarBlock.AXIS, baseState.getValue(RotatedPillarBlock.AXIS)); + }; + } + + protected float getMossChance(int localY, int height) { + int fullyMossyBand = Mth.clamp(height / 20, 2, 4); + int gradientTop = Mth.clamp(height / 12, 5, 10); + if (localY <= fullyMossyBand) { + return 0.9F; + } + + if (localY <= gradientTop) { + float t = (localY - fullyMossyBand) / (float) Math.max(1, gradientTop - fullyMossyBand); + return Mth.lerp(t, 0.75F, 0.08F); + } + + return 0.03F; + } + + protected void fillLeafCircle(WorldGenLevel level, BlockPos center, OuranwoodTreeConfiguration config, RandomSource random, int radius, boolean dense) { + int radiusSq = radius * radius; + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + int distanceSq = x * x + z * z; + if (distanceSq > radiusSq) { + continue; + } + + if (!dense && distanceSq > radiusSq - radius && random.nextFloat() < 0.18F) { + continue; + } + + BlockPos targetPos = center.offset(x, 0, z); + if (!canReplace(level, targetPos)) { + continue; + } + + this.setLeaf(level, targetPos, config, random); + } + } + } + + protected void fillBranchLeafCluster(WorldGenLevel level, BlockPos center, OuranwoodTreeConfiguration config, RandomSource random, int radius, boolean dense) { + this.fillLeafCircle(level, center, config, random, radius, dense); + if (radius > 2) { + this.fillLeafCircle(level, center.above(), config, random, radius - 1, true); + this.fillLeafCircle(level, center.below(), config, random, radius - 1, true); + } + if (radius >= 6) { + this.tryPlaceHiddenSupportLog(level, center, config, random); + } + } + + protected void setLeaf(WorldGenLevel level, BlockPos pos, OuranwoodTreeConfiguration config, RandomSource random) { + setBlock(level, pos, config.foliageProvider().getState(random, pos)); + } + + protected void tryPlaceLeaf(WorldGenLevel level, BlockPos pos, OuranwoodTreeConfiguration config, RandomSource random) { + if (canReplace(level, pos)) { + this.setLeaf(level, pos, config, random); + } + } + + protected void tryPlaceHiddenSupportLog(WorldGenLevel level, BlockPos pos, OuranwoodTreeConfiguration config, RandomSource random) { + BlockState state = level.getBlockState(pos); + if (!(state.getBlock() instanceof LeavesBlock)) { + return; + } + + int leafNeighbors = 0; + for (Direction direction : Direction.values()) { + BlockState neighbor = level.getBlockState(pos.relative(direction)); + if (neighbor.getBlock() instanceof LeavesBlock) { + leafNeighbors++; + } + } + + if (leafNeighbors < 5) { + return; + } + + setBlock(level, pos, config.trunkProvider().getState(random, pos)); + } + + protected void pruneExposedTopLogs(WorldGenLevel level, BlockPos origin, BlockPos canopyCenter, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int canopyRadius, int canopyDepth, int height) { + int horizontalRadius = canopyRadius + 6; + int minY = canopyCenter.getY() - Math.max(4, canopyDepth / 2 + 1); + int maxY = origin.getY() + height + canopyDepth + 6; + for (int x = origin.getX() - horizontalRadius; x <= origin.getX() + horizontalRadius; x++) { + for (int z = origin.getZ() - horizontalRadius; z <= origin.getZ() + horizontalRadius; z++) { + for (int y = minY; y <= maxY; y++) { + BlockPos pos = new BlockPos(x, y, z); + BlockState state = level.getBlockState(pos); + if (!state.is(BlockTags.LOGS)) { + continue; + } + + if (this.isWithinTrunkCore(origin, pos, trunkRadius, canopyCenter.getY())) { + continue; + } + + int leafNeighbors = this.countLeafNeighbors(level, pos); + int openFaces = this.countOpenFaces(level, pos); + boolean topExposed = level.getBlockState(pos.above()).isAir(); + boolean lowerCanopyStray = y <= canopyCenter.getY() + && leafNeighbors >= 3 + && openFaces >= 2; + if (!(topExposed && leafNeighbors >= 1) && !lowerCanopyStray) { + continue; + } + + this.setLeaf(level, pos, config, random); + } + } + } + } + + protected void coverExposedBranchSides(WorldGenLevel level, BlockPos origin, BlockPos canopyCenter, OuranwoodTreeConfiguration config, RandomSource random, int trunkRadius, int canopyRadius, int canopyDepth, int height) { + int horizontalRadius = canopyRadius + 6; + int minY = Math.max(origin.getY() + Math.max(4, height / 4), canopyCenter.getY() - canopyDepth - 3); + int maxY = origin.getY() + height + canopyDepth + 4; + + for (int x = origin.getX() - horizontalRadius; x <= origin.getX() + horizontalRadius; x++) { + for (int z = origin.getZ() - horizontalRadius; z <= origin.getZ() + horizontalRadius; z++) { + for (int y = minY; y <= maxY; y++) { + BlockPos pos = new BlockPos(x, y, z); + BlockState state = level.getBlockState(pos); + if (!state.is(BlockTags.LOGS) || this.isWithinTrunkCore(origin, pos, trunkRadius, canopyCenter.getY())) { + continue; + } + + if (this.countLeafNeighbors(level, pos) < 1) { + continue; + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos sidePos = pos.relative(direction); + if (!level.getBlockState(sidePos).isAir()) { + continue; + } + + if (!this.canWrapBranchSide(level, pos, direction)) { + continue; + } + + this.tryPlaceLeaf(level, sidePos, config, random); + } + } + } + } + } + + protected void updateLeafDistances(WorldGenLevel level, BlockPos origin, int height, int canopyRadius, int canopyDepth) { + int horizontalRadius = canopyRadius + 2; + int minY = Math.max(level.getMinBuildHeight(), origin.getY() - 2); + int maxY = Math.min(level.getMaxBuildHeight() - 1, origin.getY() + height + canopyDepth + 8); + List leafPositions = new ArrayList<>(); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + + for (int x = origin.getX() - horizontalRadius; x <= origin.getX() + horizontalRadius; x++) { + for (int z = origin.getZ() - horizontalRadius; z <= origin.getZ() + horizontalRadius; z++) { + for (int y = minY; y <= maxY; y++) { + cursor.set(x, y, z); + if (level.getBlockState(cursor).getBlock() instanceof LeavesBlock) { + leafPositions.add(cursor.immutable()); + } + } + } + } + + for (int pass = 1; pass <= 16; pass++) { + boolean anyChanged = false; + for (BlockPos pos : leafPositions) { + BlockState state = level.getBlockState(pos); + IntegerProperty distanceProperty = this.getLeafDistanceProperty(state); + if (!(state.getBlock() instanceof LeavesBlock) || distanceProperty == null) { + continue; + } + + int computedDistance = this.computeLeafDistance(level, pos, state); + if (computedDistance == state.getValue(distanceProperty)) { + continue; + } + + BlockState updatedState; + if (state.getBlock() instanceof OuranwoodLeavesBlock) { + updatedState = OuranwoodLeavesBlock.setOuranwoodDistanceForWorldgen(state, computedDistance); + } else { + updatedState = state.setValue(distanceProperty, computedDistance); + } + setBlock(level, pos, updatedState); + anyChanged = true; + } + if (!anyChanged) break; + } + } + + protected void placeHangingAcorns(WorldGenLevel level, BlockPos canopyCenter, OuranwoodTreeConfiguration config, RandomSource random, int canopyRadius, int canopyDepth) { + int maxAcorns = config.juvenile() ? 12 + random.nextInt(6) : 40 + random.nextInt(20); + int attempts = maxAcorns * 12; + int horizontalRadius = canopyRadius + (config.juvenile() ? 2 : 6); + int minYOffset = -Math.max(3, canopyDepth); + int maxYOffset = Math.max(2, canopyDepth / 2); + int placed = 0; + + for (int i = 0; i < attempts && placed < maxAcorns; i++) { + int offsetX = random.nextInt(horizontalRadius * 2 + 1) - horizontalRadius; + int offsetZ = random.nextInt(horizontalRadius * 2 + 1) - horizontalRadius; + int offsetY = minYOffset + random.nextInt(maxYOffset - minYOffset + 1); + if (random.nextFloat() < 0.72F) { + int branchBandMin = -Math.max(3, canopyDepth * 3 / 4); + int branchBandMax = Math.max(-1, canopyDepth / 5); + offsetY = branchBandMin + random.nextInt(branchBandMax - branchBandMin + 1); + } + + BlockPos leafPos = canopyCenter.offset(offsetX, offsetY, offsetZ); + BlockState leafState = level.getBlockState(leafPos); + if (!(leafState.getBlock() instanceof LeavesBlock)) { + continue; + } + + BlockPos acornPos = leafPos.below(); + if (!level.isEmptyBlock(acornPos)) { + continue; + } + + if (!this.canHangAcornFromLeaf(level, leafPos)) { + continue; + } + + int openSides = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (level.getBlockState(acornPos.relative(direction)).isAir()) { + openSides++; + } + } + + if (openSides < 1) { + continue; + } + + setBlock(level, acornPos, OuranwoodLeavesBlock.createHangingAcornState(random.nextInt(3))); + placed++; + } + } + + protected boolean canHangAcornFromLeaf(WorldGenLevel level, BlockPos leafPos) { + if (level.getBlockState(leafPos.above()).is(BlockTags.LOGS) || level.getBlockState(leafPos.above(2)).is(BlockTags.LOGS)) { + return true; + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (level.getBlockState(leafPos.relative(direction)).is(BlockTags.LOGS) + || level.getBlockState(leafPos.relative(direction).above()).is(BlockTags.LOGS)) { + return true; + } + } + + int nearbyLeaves = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (level.getBlockState(leafPos.relative(direction)).getBlock() instanceof LeavesBlock) { + nearbyLeaves++; + } + if (level.getBlockState(leafPos.relative(direction).above()).getBlock() instanceof LeavesBlock) { + nearbyLeaves++; + } + } + return nearbyLeaves >= 2; + } + + protected int countLeafNeighbors(WorldGenLevel level, BlockPos pos) { + int leafNeighbors = 0; + for (Direction direction : Direction.values()) { + if (level.getBlockState(pos.relative(direction)).getBlock() instanceof LeavesBlock) { + leafNeighbors++; + } + } + return leafNeighbors; + } + + protected int countOpenFaces(WorldGenLevel level, BlockPos pos) { + int openFaces = 0; + for (Direction direction : Direction.values()) { + BlockState neighbor = level.getBlockState(pos.relative(direction)); + if (neighbor.isAir()) { + openFaces++; + } + } + return openFaces; + } + + protected boolean canWrapBranchSide(WorldGenLevel level, BlockPos logPos, Direction direction) { + BlockPos sidePos = logPos.relative(direction); + return this.isLeafOrLog(level, sidePos.above()) + || this.isLeafOrLog(level, sidePos.below()) + || this.isLeafOrLog(level, logPos.relative(direction.getClockWise())) + || this.isLeafOrLog(level, logPos.relative(direction.getCounterClockWise())) + || this.isLeafOrLog(level, logPos.above()) + || this.isLeafOrLog(level, logPos.below()); + } + + protected boolean isWithinTrunkCore(BlockPos origin, BlockPos pos, int trunkRadius, int canopyCenterY) { + if (pos.getY() > canopyCenterY) { + return false; + } + + int dx = pos.getX() - origin.getX(); + int dz = pos.getZ() - origin.getZ(); + int protectedRadius = Math.max(1, trunkRadius - 1); + return dx * dx + dz * dz <= protectedRadius * protectedRadius; + } + + protected boolean isLeafOrLog(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.getBlock() instanceof LeavesBlock || state.is(BlockTags.LOGS); + } + + protected IntegerProperty getLeafDistanceProperty(BlockState state) { + if (state.getBlock() instanceof OuranwoodLeavesBlock && state.hasProperty(OuranwoodLeavesBlock.OURANWOOD_DISTANCE)) { + return OuranwoodLeavesBlock.OURANWOOD_DISTANCE; + } + + if (state.hasProperty(LeavesBlock.DISTANCE)) { + return LeavesBlock.DISTANCE; + } + + return null; + } + + protected int getLeafDistanceLimit(BlockState state) { + if (state.getBlock() instanceof OuranwoodLeavesBlock) { + return OuranwoodLeavesBlock.OURANWOOD_MAX_DISTANCE + 1; + } + + return 7; + } + + protected int computeLeafDistance(WorldGenLevel level, BlockPos pos, BlockState state) { + int bestDistance = this.getLeafDistanceLimit(state); + for (Direction direction : Direction.values()) { + BlockState neighbor = level.getBlockState(pos.relative(direction)); + if (neighbor.is(BlockTags.LOGS)) { + return 1; + } + + IntegerProperty neighborProperty = this.getLeafDistanceProperty(neighbor); + if (neighbor.getBlock() instanceof LeavesBlock && neighborProperty != null) { + bestDistance = Math.min(bestDistance, neighbor.getValue(neighborProperty) + 1); + } + } + + return Math.min(this.getLeafDistanceLimit(state), bestDistance); + } + + protected boolean hasLeafNeighbor(WorldGenLevel level, BlockPos pos) { + for (Direction direction : Direction.values()) { + if (level.getBlockState(pos.relative(direction)).getBlock() instanceof LeavesBlock) { + return true; + } + } + return false; + } + + protected void tryPlaceVine(WorldGenLevel level, BlockPos anchor, RandomSource random) { + if (!this.canSupportVine(level, anchor)) { + return; + } + + Direction side = Direction.Plane.HORIZONTAL.getRandomDirection(random); + this.tryPlaceAttachedVine(level, anchor, side, 2 + random.nextInt(5)); + } + + protected void tryPlaceAttachedVine(WorldGenLevel level, BlockPos supportPos, Direction outwardDirection, int length) { + if (!this.canSupportVine(level, supportPos)) { + return; + } + + BlockPos vinePos = supportPos.relative(outwardDirection); + if (!level.isEmptyBlock(vinePos)) { + return; + } + + this.placeVineColumn(level, vinePos, outwardDirection.getOpposite(), length); + } + + protected void placeVineColumn(WorldGenLevel level, BlockPos startPos, Direction attachedFace, int length) { + BlockState vineState = vineStateForAttachment(attachedFace); + if (vineState == null) { + return; + } + + for (int step = 0; step < length; step++) { + BlockPos targetPos = startPos.below(step); + if (!level.isEmptyBlock(targetPos)) { + break; + } + setBlock(level, targetPos, vineState); + } + } + + protected void tryPlaceGlowVineUnderLeaf(WorldGenLevel level, BlockPos leafPos, RandomSource random, int length) { + if (!AntarchySettings.glowVinesUnderLeaves()) { + return; + } + + BlockPos anchorPos = this.findLeafAnchor(level, leafPos); + if (anchorPos == null || !level.isEmptyBlock(anchorPos.below())) { + return; + } + + for (int step = 1; step <= length; step++) { + BlockPos targetPos = anchorPos.below(step); + if (!level.isEmptyBlock(targetPos)) { + break; + } + + BlockState vineState = step == length + ? Blocks.CAVE_VINES.defaultBlockState().setValue(CaveVines.BERRIES, Boolean.TRUE) + : Blocks.CAVE_VINES_PLANT.defaultBlockState().setValue(CaveVines.BERRIES, random.nextFloat() < 0.2F); + setBlock(level, targetPos, vineState); + } + } + + protected boolean canSupportVine(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.is(BlockTags.LEAVES) || state.is(BlockTags.LOGS) || state.is(Blocks.MOSS_BLOCK); + } + + protected boolean canSupportGlowVine(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.is(BlockTags.LEAVES); + } + + @Nullable + protected BlockPos findLeafAnchor(WorldGenLevel level, BlockPos pos) { + for (int offset = 0; offset <= 2; offset++) { + BlockPos candidate = pos.above(offset); + if (this.canSupportGlowVine(level, candidate)) { + return candidate; + } + } + + return null; + } + + protected void placeTieredCrown(WorldGenLevel level, BlockPos crownCenter, OuranwoodTreeConfiguration config, RandomSource random, int crownRadius) { + int crownHeight = config.juvenile() ? 3 : 5; + for (int y = 0; y <= crownHeight; y++) { + int layerRadius = Math.max(2, crownRadius - y + random.nextInt(3) - 1); + BlockPos layerCenter = crownCenter.offset(random.nextInt(3) - 1, y, random.nextInt(3) - 1); + this.fillLeafCircle(level, layerCenter, config, random, layerRadius, y >= crownHeight - 1); + if (layerRadius > 3 && random.nextFloat() < 0.75F) { + this.fillLeafCircle(level, layerCenter.above(), config, random, layerRadius - 2, true); + } + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + if (random.nextFloat() < 0.8F) { + BlockPos lobeCenter = crownCenter.relative(direction, Math.max(2, crownRadius - 1)).above(random.nextInt(3)); + this.fillLeafCircle(level, lobeCenter, config, random, Math.max(2, crownRadius - 2 + random.nextInt(2)), true); + } + } + } + + protected void placeSplitCrown(WorldGenLevel level, BlockPos crownCenter, OuranwoodTreeConfiguration config, RandomSource random, int crownRadius) { + int lobes = 3 + random.nextInt(3); + this.fillLeafCircle(level, crownCenter, config, random, Math.max(3, crownRadius - 2), false); + for (int i = 0; i < lobes; i++) { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int distance = Math.max(2, crownRadius - 2 + random.nextInt(2)); + BlockPos lobeCenter = crownCenter.relative(direction, distance).above(random.nextInt(3)); + int lobeRadius = Math.max(2, crownRadius - 2 + random.nextInt(3) - 1); + this.fillLeafCircle(level, lobeCenter, config, random, lobeRadius, true); + this.fillLeafCircle(level, lobeCenter.above(), config, random, Math.max(2, lobeRadius - 1), true); + } + } + + protected void placeWindsweptCrown(WorldGenLevel level, BlockPos crownCenter, OuranwoodTreeConfiguration config, RandomSource random, int crownRadius) { + Direction sweep = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int crownHeight = config.juvenile() ? 3 : 5; + for (int y = 0; y <= crownHeight; y++) { + int offset = Math.min(2, y / 2); + BlockPos layerCenter = crownCenter.relative(sweep, offset).offset(random.nextInt(3) - 1, y, random.nextInt(3) - 1); + int layerRadius = Math.max(2, crownRadius - y + (y < 2 ? 1 : 0)); + this.fillLeafCircle(level, layerCenter, config, random, layerRadius, y >= crownHeight - 1); + } + + BlockPos tailCenter = crownCenter.relative(sweep.getOpposite(), Math.max(2, crownRadius - 2)); + this.fillLeafCircle(level, tailCenter, config, random, Math.max(2, crownRadius - 3), false); + } + + protected void placeClusteredCrown(WorldGenLevel level, BlockPos crownCenter, OuranwoodTreeConfiguration config, RandomSource random, int crownRadius) { + this.fillLeafCircle(level, crownCenter, config, random, Math.max(3, crownRadius - 1), false); + int clusters = 4 + random.nextInt(3); + for (int i = 0; i < clusters; i++) { + BlockPos clusterCenter = crownCenter.offset( + random.nextInt(crownRadius + 1) - random.nextInt(crownRadius + 1), + random.nextInt(4), + random.nextInt(crownRadius + 1) - random.nextInt(crownRadius + 1) + ); + int clusterRadius = Math.max(2, crownRadius - 3 + random.nextInt(3)); + this.fillLeafCircle(level, clusterCenter, config, random, clusterRadius, true); + if (random.nextFloat() < 0.65F) { + this.fillLeafCircle(level, clusterCenter.above(), config, random, Math.max(2, clusterRadius - 1), true); + } + } + } + + protected static BlockState vineStateForAttachment(Direction attachedFace) { + BlockState state = Blocks.VINE.defaultBlockState(); + return switch (attachedFace) { + case NORTH -> state.setValue(VineBlock.NORTH, Boolean.TRUE); + case SOUTH -> state.setValue(VineBlock.SOUTH, Boolean.TRUE); + case EAST -> state.setValue(VineBlock.EAST, Boolean.TRUE); + case WEST -> state.setValue(VineBlock.WEST, Boolean.TRUE); + default -> null; + }; + } + + protected static boolean canGrowOn(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.isFaceSturdy(level, pos, Direction.UP); + } + + protected static boolean canReplace(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.isAir() || state.canBeReplaced() || state.getBlock() instanceof LeavesBlock; + } + + protected static boolean canReplaceTerrain(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.isAir() || state.canBeReplaced() || state.getBlock() instanceof LeavesBlock || !state.getFluidState().isEmpty(); + } + + protected static BlockState soilState(RandomSource random) { + return random.nextFloat() < 0.35F ? Blocks.ROOTED_DIRT.defaultBlockState() : Blocks.DIRT.defaultBlockState(); + } + + protected static BlockState surfaceState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.45F) { + return Blocks.MOSS_BLOCK.defaultBlockState(); + } + if (roll < 0.8F) { + return Blocks.GRASS_BLOCK.defaultBlockState(); + } + return Blocks.ROOTED_DIRT.defaultBlockState(); + } + + protected static boolean isSurfaceCoverState(BlockState state) { + return state.is(Blocks.GRASS_BLOCK) || state.is(Blocks.MOSS_BLOCK); + } + + protected static boolean isBaseTrunkBlock(BlockState state) { + return state.is(Blocks.MOSS_BLOCK) || state.is(BlockTags.LOGS); + } + + protected static boolean isTreeSurfaceSoil(BlockState state) { + return state.is(Blocks.DIRT) || state.is(Blocks.ROOTED_DIRT) || isSurfaceCoverState(state); + } + + @FunctionalInterface + protected interface StateFactory { + BlockState create(BlockPos pos); + } + + protected record NestPlacement(List interiorSpaces) { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeGrowers.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeGrowers.java new file mode 100644 index 00000000..4d00b7ba --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/OuranwoodTreeGrowers.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.Antarchy; +import java.util.Optional; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.grower.TreeGrower; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +public final class OuranwoodTreeGrowers { + public static final ResourceKey> OURANWOOD_YOUNG_TREE = featureKey("ouranwood_young_tree"); + public static final ResourceKey> OURANWOOD_MEDIUM_TREE = featureKey("ouranwood_medium_tree"); + public static final ResourceKey> OURANWOOD_LARGE_TREE = featureKey("ouranwood_large_tree"); + public static final TreeGrower OURANWOOD = new TreeGrower( + "ouranwood", + Optional.empty(), + Optional.of(OURANWOOD_YOUNG_TREE), + Optional.empty() + ); + + private OuranwoodTreeGrowers() { + } + + private static ResourceKey> featureKey(String path) { + return ResourceKey.create( + Registries.CONFIGURED_FEATURE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path) + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/TriffidPatchFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/TriffidPatchFeature.java new file mode 100644 index 00000000..85033c86 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/TriffidPatchFeature.java @@ -0,0 +1,171 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.level.ServerLevelAccessor; +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 TriffidPatchFeature extends Feature { + private static final int PATCH_RADIUS = 5; + private static final double PATCH_RADIUS_SQR = 30.25D; + + public TriffidPatchFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + int surfaceY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, origin.getX(), origin.getZ()) - 1; + if (surfaceY <= level.getMinBuildHeight()) { + return false; + } + + BlockPos center = new BlockPos(origin.getX(), surfaceY, origin.getZ()); + if (!canUseSurface(level, center)) { + return false; + } + + if (!(level instanceof ServerLevelAccessor serverLevel)) { + return false; + } + + TriffidEntity triffid = AntarchyObjects.TRIFFID.get().create(serverLevel.getLevel()); + if (triffid == null) { + return false; + } + + DifficultyInstance difficulty = serverLevel.getCurrentDifficultyAt(center); + triffid.moveTo(center.getX() + 0.5D, center.getY() + 1.0D, center.getZ() + 0.5D, random.nextFloat() * 360.0F, 0.0F); + triffid.finalizeSpawn(serverLevel, difficulty, MobSpawnType.CHUNK_GENERATION, null); + triffid.setPersistenceRequired(); + + layPatch(level, center, random); + serverLevel.addFreshEntity(triffid); + return true; + } + + private static boolean canUseSurface(WorldGenLevel level, BlockPos center) { + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + BlockPos surfacePos = center.offset(dx, 0, dz); + BlockState surfaceState = level.getBlockState(surfacePos); + BlockPos belowPos = surfacePos.below(); + BlockState belowState = level.getBlockState(belowPos); + + if (!isSurfaceCandidate(surfaceState)) { + return false; + } + + if (!belowState.isFaceSturdy(level, belowPos, Direction.UP)) { + return false; + } + + for (int y = 1; y <= 7; y++) { + BlockState aboveState = level.getBlockState(surfacePos.above(y)); + if (!aboveState.isAir() && !aboveState.canBeReplaced()) { + return false; + } + } + } + } + + return true; + } + + private static void layPatch(WorldGenLevel level, BlockPos center, RandomSource random) { + for (int dx = -PATCH_RADIUS; dx <= PATCH_RADIUS; dx++) { + for (int dz = -PATCH_RADIUS; dz <= PATCH_RADIUS; dz++) { + double distanceSqr = dx * dx + dz * dz; + if (distanceSqr > PATCH_RADIUS_SQR) { + continue; + } + + BlockPos surfacePos = center.offset(dx, 0, dz); + BlockState surfaceState = level.getBlockState(surfacePos); + if (!isPatchSurfaceCandidate(surfaceState)) { + continue; + } + + clearReplaceableColumn(level, surfacePos, 8); + + BlockState patchState = patchState(random, dx, dz, distanceSqr); + if (patchState != null) { + level.setBlock(surfacePos, patchState, 2); + } + } + } + } + + private static void clearReplaceableColumn(WorldGenLevel level, BlockPos surfacePos, int maxHeight) { + for (int y = 1; y <= maxHeight; y++) { + BlockPos abovePos = surfacePos.above(y); + BlockState aboveState = level.getBlockState(abovePos); + if (aboveState.canBeReplaced()) { + level.setBlock(abovePos, Blocks.AIR.defaultBlockState(), 2); + } + } + } + + private static BlockState patchState(RandomSource random, int dx, int dz, double distanceSqr) { + if (dx == 0 && dz == 0) { + return Blocks.MOSS_BLOCK.defaultBlockState(); + } + + double normalizedDistance = Math.sqrt(distanceSqr) / PATCH_RADIUS; + double mudChance = 1.0D - normalizedDistance * 0.82D; + if (mudChance <= 0.0D || random.nextDouble() > mudChance) { + return null; + } + + BlockState goo = AntarchyObjects.TRIFFID_GOO_BLOCK.get().defaultBlockState(); + BlockState mud = Blocks.MUD.defaultBlockState(); + + if (normalizedDistance < 0.32D) { + float roll = random.nextFloat(); + if (roll < 0.45F) { + return Blocks.MOSS_BLOCK.defaultBlockState(); + } + return roll < 0.72F ? goo : mud; + } + + if (normalizedDistance < 0.58D) { + float roll = random.nextFloat(); + if (roll < 0.18F) { + return Blocks.MOSS_BLOCK.defaultBlockState(); + } + return roll < 0.44F ? goo : mud; + } + + return random.nextFloat() < 0.18F ? goo : mud; + } + + private static boolean isSurfaceCandidate(BlockState state) { + return state.is(BlockTags.DIRT) + || state.is(Blocks.GRASS_BLOCK) + || state.is(Blocks.MOSS_BLOCK) + || state.is(Blocks.ROOTED_DIRT) + || state.is(Blocks.COARSE_DIRT) + || state.canBeReplaced(); + } + + private static boolean isPatchSurfaceCandidate(BlockState state) { + return isSurfaceCandidate(state) + || state.is(Blocks.MUD); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/AntiwaterSpringsConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/AntiwaterSpringsConfiguration.java new file mode 100644 index 00000000..f759744f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/AntiwaterSpringsConfiguration.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; + +public record AntiwaterSpringsConfiguration( + BlockStateProvider state, + int horizontalSearchRadius, + int floorSearchBelow, + int floorSearchAbove, + int ventOffsetRadius, + int baseClusters, + int extraClusterChance, + int minSmallVentCount, + int maxSmallVentCount, + int minLargeVentCount, + int maxLargeVentCount, + int largeVentClusterChance, + int minDepth, + int maxDepth, + int largeClusterMinDepth, + int largeClusterMaxDepth +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockStateProvider.CODEC.fieldOf("state").forGetter(AntiwaterSpringsConfiguration::state), + Codec.intRange(0, 64).fieldOf("horizontal_search_radius").forGetter(AntiwaterSpringsConfiguration::horizontalSearchRadius), + Codec.intRange(1, 64).fieldOf("floor_search_below").forGetter(AntiwaterSpringsConfiguration::floorSearchBelow), + Codec.intRange(1, 64).fieldOf("floor_search_above").forGetter(AntiwaterSpringsConfiguration::floorSearchAbove), + Codec.intRange(0, 32).fieldOf("vent_offset_radius").forGetter(AntiwaterSpringsConfiguration::ventOffsetRadius), + Codec.intRange(1, 16).fieldOf("base_clusters").forGetter(AntiwaterSpringsConfiguration::baseClusters), + Codec.intRange(1, 64).fieldOf("extra_cluster_chance").forGetter(AntiwaterSpringsConfiguration::extraClusterChance), + Codec.intRange(1, 16).fieldOf("min_small_vent_count").forGetter(AntiwaterSpringsConfiguration::minSmallVentCount), + Codec.intRange(1, 16).fieldOf("max_small_vent_count").forGetter(AntiwaterSpringsConfiguration::maxSmallVentCount), + Codec.intRange(1, 16).fieldOf("min_large_vent_count").forGetter(AntiwaterSpringsConfiguration::minLargeVentCount), + Codec.intRange(1, 16).fieldOf("max_large_vent_count").forGetter(AntiwaterSpringsConfiguration::maxLargeVentCount), + Codec.intRange(1, 64).fieldOf("large_vent_cluster_chance").forGetter(AntiwaterSpringsConfiguration::largeVentClusterChance), + Codec.intRange(1, 32).fieldOf("min_depth").forGetter(AntiwaterSpringsConfiguration::minDepth), + Codec.intRange(1, 32).fieldOf("max_depth").forGetter(AntiwaterSpringsConfiguration::maxDepth), + Codec.intRange(1, 32).fieldOf("large_cluster_min_depth").forGetter(AntiwaterSpringsConfiguration::largeClusterMinDepth), + Codec.intRange(1, 32).fieldOf("large_cluster_max_depth").forGetter(AntiwaterSpringsConfiguration::largeClusterMaxDepth) + ).apply(instance, AntiwaterSpringsConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/AntiwaterSpringsFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/AntiwaterSpringsFeature.java new file mode 100644 index 00000000..7c78bc4e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/AntiwaterSpringsFeature.java @@ -0,0 +1,318 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.NyxiteSpikeBlock; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +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.block.state.properties.DripstoneThickness; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.material.FluidState; + +public final class AntiwaterSpringsFeature extends Feature { + private static final ResourceLocation DREAM_DUNES_BIOME_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_dunes"); + + public AntiwaterSpringsFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + AntiwaterSpringsConfiguration config = context.config(); + + BlockState antiwaterSourceState = config.state().getState(random, origin); + if (antiwaterSourceState.isAir() || isDreamDunes(level, origin)) { + return false; + } + + boolean placedAny = false; + int clusterCount = config.baseClusters(); + if (config.extraClusterChance() > 1 && random.nextInt(config.extraClusterChance()) == 0) { + clusterCount++; + } + + for (int cluster = 0; cluster < clusterCount; cluster++) { + BlockPos searchOrigin = origin.offset( + random.nextInt(config.horizontalSearchRadius() * 2 + 1) - config.horizontalSearchRadius(), + 0, + random.nextInt(config.horizontalSearchRadius() * 2 + 1) - config.horizontalSearchRadius() + ); + BlockPos anchor = findVentAnchor(level, searchOrigin, config.floorSearchBelow(), config.floorSearchAbove()); + if (anchor == null) { + continue; + } + + boolean largeCluster = config.largeVentClusterChance() > 1 && random.nextInt(config.largeVentClusterChance()) == 0; + int ventCount = largeCluster + ? randomBetween(random, config.minLargeVentCount(), config.maxLargeVentCount()) + : randomBetween(random, config.minSmallVentCount(), config.maxSmallVentCount()); + + for (int i = 0; i < ventCount; i++) { + BlockPos ventPos = anchor.offset( + random.nextInt(config.ventOffsetRadius() * 2 + 1) - config.ventOffsetRadius(), + 0, + random.nextInt(config.ventOffsetRadius() * 2 + 1) - config.ventOffsetRadius() + ); + BlockPos surfacePos = findVentAnchor(level, ventPos, config.floorSearchBelow(), config.floorSearchAbove()); + if (surfacePos == null) { + continue; + } + + int depth = largeCluster + ? randomBetween(random, config.largeClusterMinDepth(), config.largeClusterMaxDepth()) + : randomBetween(random, config.minDepth(), config.maxDepth()); + placedAny |= placeSpring(level, surfacePos, depth, antiwaterSourceState, random); + } + } + + return placedAny; + } + + private static boolean placeSpring(WorldGenLevel level, BlockPos ventPos, int depth, BlockState antiwaterSourceState, RandomSource random) { + if (!isOpen(level, ventPos.above())) { + return false; + } + if (!hasTerrainSupport(level, ventPos, depth)) { + return false; + } + + BlockState smoothNyxiteState = AntarchyObjects.PALE_NYXITE.get().defaultBlockState(); + BlockState potentState = AntarchyObjects.POTENT_NYXITE.get() + .defaultBlockState() + .setValue(PotentNyxiteBlock.STATE, PotentNyxiteState.DORMANT); + + for (int i = 1; i <= depth; i++) { + BlockPos antiwaterPos = ventPos.below(i); + if (level.getBlockState(antiwaterPos).is(Blocks.BEDROCK)) { + return false; + } + } + + BlockPos terminatorPos = ventPos.below(depth + 1); + if (level.getBlockState(terminatorPos).is(Blocks.BEDROCK)) { + return false; + } + + sealSurface(level, ventPos, smoothNyxiteState); + level.setBlock(ventPos, potentState, 2); + + for (int i = 1; i <= depth; i++) { + BlockPos antiwaterPos = ventPos.below(i); + level.setBlock(antiwaterPos, antiwaterSourceState, 2); + scheduleFluidTick(level, antiwaterPos, antiwaterSourceState); + sealRing(level, antiwaterPos, smoothNyxiteState); + } + + level.setBlock(terminatorPos, Blocks.MAGMA_BLOCK.defaultBlockState(), 2); + sealRing(level, terminatorPos, smoothNyxiteState); + if (isReplaceable(level, terminatorPos.below())) { + level.setBlock(terminatorPos.below(), smoothNyxiteState, 2); + } + decorateSurface(level, ventPos, smoothNyxiteState, random); + + return true; + } + + private static BlockPos findVentAnchor(WorldGenLevel level, BlockPos center, int searchBelow, int searchAbove) { + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + int minY = Math.max(level.getMinBuildHeight() + 3, center.getY() - searchBelow); + int maxY = Math.min(level.getMaxBuildHeight() - 3, center.getY() + searchAbove); + + for (int y = maxY; y >= minY; y--) { + cursor.set(center.getX(), y, center.getZ()); + if (!isOpen(level, cursor.above())) { + continue; + } + + BlockState floorState = level.getBlockState(cursor); + if (floorState.is(AntarchyObjects.NYXITE.get()) || floorState.is(AntarchyObjects.PALE_NYXITE.get())) { + return cursor.immutable(); + } + + if (floorState.blocksMotion() && !floorState.is(Blocks.BEDROCK)) { + return cursor.immutable(); + } + } + + return null; + } + + private static void sealSurface(WorldGenLevel level, BlockPos center, BlockState nyxiteState) { + if (!level.getBlockState(center).is(AntarchyObjects.POTENT_NYXITE.get())) { + level.setBlock(center, nyxiteState, 2); + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos ringPos = center.relative(direction); + if (isReplaceable(level, ringPos) || level.getBlockState(ringPos).blocksMotion()) { + level.setBlock(ringPos, nyxiteState, 2); + } + } + } + + private static void sealRing(WorldGenLevel level, BlockPos center, BlockState nyxiteState) { + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos ringPos = center.relative(direction); + if (isReplaceable(level, ringPos) || !level.getBlockState(ringPos).blocksMotion()) { + level.setBlock(ringPos, nyxiteState, 2); + } + } + } + + private static void decorateSurface(WorldGenLevel level, BlockPos ventPos, BlockState smoothNyxiteState, RandomSource random) { + int patchRadius = 3 + random.nextInt(2); + for (int dx = -patchRadius; dx <= patchRadius; dx++) { + for (int dz = -patchRadius; dz <= patchRadius; dz++) { + if (dx == 0 && dz == 0) { + continue; + } + + BlockPos target = ventPos.offset(dx, 0, dz); + if (Math.abs(dx) + Math.abs(dz) > patchRadius + random.nextInt(2)) { + continue; + } + + BlockState targetState = level.getBlockState(target); + if (targetState.blocksMotion() && !targetState.is(Blocks.BEDROCK)) { + level.setBlock(target, smoothNyxiteState, 2); + } + } + } + + int pillarCount = 3 + random.nextInt(4); + for (int i = 0; i < pillarCount; i++) { + BlockPos pillarBase = ventPos.offset(random.nextInt(7) - 3, 0, random.nextInt(7) - 3); + if (pillarBase.equals(ventPos) || !level.getBlockState(pillarBase).is(AntarchyObjects.PALE_NYXITE.get())) { + continue; + } + + int pillarHeight = 1 + random.nextInt(4); + if (!canPlacePillar(level, pillarBase, pillarHeight)) { + continue; + } + + for (int y = 1; y <= pillarHeight; y++) { + level.setBlock(pillarBase.above(y), smoothNyxiteState, 2); + } + + placeSpikeColumn(level, pillarBase.above(pillarHeight + 1), 1 + random.nextInt(2)); + } + + int surfaceSpikeCount = 4 + random.nextInt(5); + for (int i = 0; i < surfaceSpikeCount; i++) { + BlockPos spikeBase = ventPos.offset(random.nextInt(9) - 4, 0, random.nextInt(9) - 4); + if (!level.getBlockState(spikeBase).is(AntarchyObjects.PALE_NYXITE.get())) { + continue; + } + placeSpikeColumn(level, spikeBase.above(), 1 + random.nextInt(2)); + } + } + + private static boolean canPlacePillar(WorldGenLevel level, BlockPos basePos, int height) { + for (int y = 1; y <= height + 1; y++) { + if (!isOpen(level, basePos.above(y))) { + return false; + } + } + + return true; + } + + private static boolean hasTerrainSupport(WorldGenLevel level, BlockPos ventPos, int depth) { + for (int i = 0; i <= depth + 2; i++) { + BlockPos layerPos = ventPos.below(i); + if (!isSolidOrSelf(level, layerPos)) { + return false; + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos ringPos = layerPos.relative(direction); + if (!isSolidOrSelf(level, ringPos)) { + return false; + } + } + } + + return true; + } + + private static boolean isSolidOrSelf(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.blocksMotion() + || state.is(AntarchyObjects.NYXITE.get()) + || state.is(AntarchyObjects.PALE_NYXITE.get()) + || state.is(AntarchyObjects.POTENT_NYXITE.get()); + } + + private static void placeSpikeColumn(WorldGenLevel level, BlockPos startPos, int height) { + for (int i = 0; i < height; i++) { + BlockPos spikePos = startPos.above(i); + if (!isOpen(level, spikePos)) { + return; + } + } + + for (int i = 0; i < height; i++) { + BlockPos spikePos = startPos.above(i); + DripstoneThickness thickness; + if (height == 1) { + thickness = DripstoneThickness.TIP; + } else if (i == 0) { + thickness = DripstoneThickness.BASE; + } else if (i == height - 1) { + thickness = DripstoneThickness.TIP; + } else { + thickness = DripstoneThickness.MIDDLE; + } + + BlockState spikeState = AntarchyObjects.NYXITE_SPIKE.get() + .defaultBlockState() + .setValue(NyxiteSpikeBlock.TIP_DIRECTION, Direction.UP) + .setValue(NyxiteSpikeBlock.THICKNESS, thickness) + .setValue(NyxiteSpikeBlock.WATERLOGGED, false); + level.setBlock(spikePos, spikeState, 2); + } + } + + private static boolean isOpen(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + FluidState fluidState = state.getFluidState(); + return state.isAir() || (state.getCollisionShape(level, pos).isEmpty() && fluidState.isEmpty()); + } + + private static boolean isReplaceable(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + FluidState fluidState = state.getFluidState(); + return !state.is(Blocks.BEDROCK) && (state.isAir() || state.getCollisionShape(level, pos).isEmpty() || !fluidState.isEmpty()); + } + + private static void scheduleFluidTick(WorldGenLevel level, BlockPos pos, BlockState state) { + FluidState fluidState = state.getFluidState(); + if (!fluidState.isEmpty()) { + level.scheduleTick(pos, fluidState.getType(), fluidState.getType().getTickDelay(level)); + } + } + + private static int randomBetween(RandomSource random, int min, int max) { + return min >= max ? min : random.nextInt(max - min + 1) + min; + } + + private static boolean isDreamDunes(WorldGenLevel level, BlockPos pos) { + return level.getBiome(pos) + .unwrapKey() + .map(key -> key.location().equals(DREAM_DUNES_BIOME_ID)) + .orElse(false); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/BedBugNestFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/BedBugNestFeature.java new file mode 100644 index 00000000..fe231f4a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/BedBugNestFeature.java @@ -0,0 +1,210 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.BedBugEggBlock; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.mojang.serialization.Codec; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.level.ServerLevelAccessor; +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.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; + +public final class BedBugNestFeature extends Feature { + public BedBugNestFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos center = findNestCenter(level, context.origin(), random); + if (center == null) { + return false; + } + + Direction wallDirection = findWallDirection(level, center); + if (wallDirection == null) { + return false; + } + + boolean carved = carvePocket(level, center, wallDirection); + if (!carved) { + return false; + } + + List eggSpots = placeEggClusters(level, center, wallDirection, random); + if (eggSpots.isEmpty()) { + return false; + } + + spawnBedBugs(level, center, eggSpots, random); + return true; + } + + private static BlockPos findNestCenter(WorldGenLevel level, BlockPos origin, RandomSource random) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int attempt = 0; attempt < 20; attempt++) { + int x = origin.getX() + random.nextInt(15) - 7; + int y = origin.getY() + random.nextInt(13) - 6; + int z = origin.getZ() + random.nextInt(15) - 7; + mutable.set(x, y, z); + + BlockState state = level.getBlockState(mutable); + BlockState belowState = level.getBlockState(mutable.below()); + if (!isOpen(state) || !isNestFloor(belowState)) { + continue; + } + + if (findWallDirection(level, mutable) != null) { + return mutable.immutable(); + } + } + + return null; + } + + private static Direction findWallDirection(WorldGenLevel level, BlockPos center) { + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos wallPos = center.relative(direction); + BlockPos pocketPos = center.relative(direction, 2); + if (isCarvable(level.getBlockState(wallPos)) && isCarvable(level.getBlockState(pocketPos))) { + return direction; + } + } + return null; + } + + private static boolean carvePocket(WorldGenLevel level, BlockPos center, Direction direction) { + boolean carved = false; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + + for (int depth = 1; depth <= 2; depth++) { + for (int side = -1; side <= 1; side++) { + for (int height = 0; height <= 1; height++) { + BlockPos target = center.relative(direction, depth) + .relative(direction.getClockWise(), side) + .above(height); + mutable.set(target); + BlockState state = level.getBlockState(mutable); + if (!isCarvable(state)) { + continue; + } + + level.setBlock(mutable, Blocks.AIR.defaultBlockState(), Block.UPDATE_ALL); + carved = true; + } + } + } + + return carved; + } + + private static List placeEggClusters(WorldGenLevel level, BlockPos center, Direction direction, RandomSource random) { + List eggSpots = new ArrayList<>(3); + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + + for (int attempt = 0; attempt < 3; attempt++) { + int depth = 1 + random.nextInt(2); + int side = random.nextInt(3) - 1; + mutable.set(center.relative(direction, depth).relative(direction.getClockWise(), side)); + if (!level.getBlockState(mutable).isAir()) { + continue; + } + if (!level.getBlockState(mutable.below()).isFaceSturdy(level, mutable.below(), Direction.UP)) { + continue; + } + + int eggs = 1 + random.nextInt(4); + level.setBlock(mutable, AntarchyObjects.BED_BUG_EGG.get().defaultBlockState().setValue(BedBugEggBlock.EGGS, eggs), Block.UPDATE_ALL); + eggSpots.add(mutable.immutable()); + } + + if (eggSpots.isEmpty()) { + BlockPos fallback = center.relative(direction, 2); + if (level.getBlockState(fallback).isAir() && level.getBlockState(fallback.below()).isFaceSturdy(level, fallback.below(), Direction.UP)) { + int eggs = 1 + random.nextInt(4); + level.setBlock(fallback, AntarchyObjects.BED_BUG_EGG.get().defaultBlockState().setValue(BedBugEggBlock.EGGS, eggs), Block.UPDATE_ALL); + eggSpots.add(fallback.immutable()); + } + } + + return eggSpots; + } + + private static void spawnBedBugs(WorldGenLevel level, BlockPos center, List eggSpots, RandomSource random) { + if (!(level instanceof ServerLevelAccessor serverLevel)) { + return; + } + + DifficultyInstance difficulty = serverLevel.getCurrentDifficultyAt(center); + int count = 1 + random.nextInt(4); + for (int i = 0; i < count; i++) { + BlockPos eggAnchor = eggSpots.get(random.nextInt(eggSpots.size())); + BlockPos spawnPos = findOpenSpawnPos(level, eggAnchor, center, random); + if (spawnPos == null) { + continue; + } + + BedBugEntity bedBug = AntarchyObjects.BED_BUG.get().create(serverLevel.getLevel()); + if (bedBug == null) { + continue; + } + + double spawnX = spawnPos.getX() + 0.5D + (random.nextDouble() - 0.5D) * 0.35D; + double spawnY = spawnPos.getY() + 0.02D; + double spawnZ = spawnPos.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.35D; + bedBug.moveTo(spawnX, spawnY, spawnZ, random.nextFloat() * 360.0F, 0.0F); + bedBug.setHomeEggPos(eggAnchor); + bedBug.finalizeSpawn(serverLevel, difficulty, MobSpawnType.CHUNK_GENERATION, null); + serverLevel.addFreshEntity(bedBug); + } + } + + private static BlockPos findOpenSpawnPos(WorldGenLevel level, BlockPos eggAnchor, BlockPos center, RandomSource random) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int attempt = 0; attempt < 16; attempt++) { + BlockPos base = attempt < 10 ? eggAnchor : center; + int x = base.getX() + random.nextInt(5) - 2; + int y = base.getY() + random.nextInt(3) - 1; + int z = base.getZ() + random.nextInt(5) - 2; + mutable.set(x, y, z); + + BlockState feetState = level.getBlockState(mutable); + BlockState headState = level.getBlockState(mutable.above()); + BlockState floorState = level.getBlockState(mutable.below()); + if (feetState.canBeReplaced() + && headState.canBeReplaced() + && floorState.blocksMotion() + && floorState.isFaceSturdy(level, mutable.below(), Direction.UP) + && floorState.getFluidState().isEmpty()) { + return mutable.immutable(); + } + } + + return null; + } + + private static boolean isNestFloor(BlockState state) { + return !state.isAir() && state.blocksMotion() && state.getFluidState().isEmpty(); + } + + private static boolean isCarvable(BlockState state) { + return !state.isAir() && state.blocksMotion() && state.getFluidState().isEmpty() && !state.is(Blocks.BEDROCK); + } + + private static boolean isOpen(BlockState state) { + return state.isAir() || state.canBeReplaced() || !state.blocksMotion(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/BedBugSurfaceClusterFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/BedBugSurfaceClusterFeature.java new file mode 100644 index 00000000..c8590bd4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/BedBugSurfaceClusterFeature.java @@ -0,0 +1,190 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.BedBugEggBlock; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.mojang.serialization.Codec; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; + +public final class BedBugSurfaceClusterFeature extends Feature { + private static final int SURFACE_SAMPLE_RADIUS = 8; + private static final int SURFACE_SAMPLE_ATTEMPTS = 24; + private static final int FLOOR_SCAN_RANGE = 12; + private static final int MIN_BUGS_PER_FEATURE = 1; + private static final int MAX_BUGS_PER_FEATURE = 4; + + public BedBugSurfaceClusterFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + boolean placedAny = false; + + BlockPos surfacePos = findSurfacePos(level, origin, random); + if (surfacePos == null) { + return false; + } + + List eggSpots = placeEggPatch(level, surfacePos, random); + if (eggSpots.isEmpty()) { + return false; + } + + placedAny = true; + if (spawnBedBugsAroundEggs(level, surfacePos, eggSpots, random)) { + placedAny = true; + } + + return placedAny; + } + + private static BlockPos findSurfacePos(WorldGenLevel level, BlockPos origin, RandomSource random) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int attempt = 0; attempt < SURFACE_SAMPLE_ATTEMPTS; attempt++) { + int x = origin.getX() + random.nextInt(SURFACE_SAMPLE_RADIUS * 2 + 1) - SURFACE_SAMPLE_RADIUS; + int z = origin.getZ() + random.nextInt(SURFACE_SAMPLE_RADIUS * 2 + 1) - SURFACE_SAMPLE_RADIUS; + int startY = origin.getY() + random.nextInt(FLOOR_SCAN_RANGE * 2 + 1) - FLOOR_SCAN_RANGE; + startY = Math.max(level.getMinBuildHeight() + 2, Math.min(level.getMaxBuildHeight() - 3, startY)); + + for (int y = startY; y >= Math.max(level.getMinBuildHeight() + 1, startY - FLOOR_SCAN_RANGE); y--) { + mutable.set(x, y, z); + BlockState floorState = level.getBlockState(mutable); + BlockState airState = level.getBlockState(mutable.above()); + BlockState aboveAirState = level.getBlockState(mutable.above(2)); + if (floorState.getFluidState().isEmpty() + && floorState.blocksMotion() + && floorState.isFaceSturdy(level, mutable, Direction.UP) + && airState.canBeReplaced() + && aboveAirState.canBeReplaced()) { + return mutable.immutable(); + } + } + } + + return null; + } + + private static List placeEggPatch(WorldGenLevel level, BlockPos originEggPos, RandomSource random) { + List eggSpots = new ArrayList<>(3); + int spotCount = 2 + random.nextInt(2); + + for (int i = 0; i < spotCount; i++) { + BlockPos eggPos = originEggPos.offset(random.nextInt(3) - 1, 0, random.nextInt(3) - 1); + if (!level.getBlockState(eggPos).canBeReplaced()) { + continue; + } + + BlockPos supportPos = eggPos.below(); + BlockState supportState = level.getBlockState(supportPos); + if (!supportState.isFaceSturdy(level, supportPos, Direction.UP) || !supportState.getFluidState().isEmpty()) { + continue; + } + + int eggs = 1 + random.nextInt(4); + level.setBlock( + eggPos, + AntarchyObjects.BED_BUG_EGG.get().defaultBlockState().setValue(BedBugEggBlock.EGGS, eggs), + Block.UPDATE_ALL + ); + eggSpots.add(eggPos.immutable()); + } + + return eggSpots; + } + + private static boolean spawnBedBugsAroundEggs(WorldGenLevel level, BlockPos surfacePos, List eggSpots, RandomSource random) { + if (!(level instanceof ServerLevelAccessor serverLevel)) { + return false; + } + + DifficultyInstance difficulty = serverLevel.getCurrentDifficultyAt(surfacePos); + int count = MIN_BUGS_PER_FEATURE + random.nextInt(MAX_BUGS_PER_FEATURE - MIN_BUGS_PER_FEATURE + 1); + boolean spawnedAny = false; + + for (int i = 0; i < count; i++) { + BlockPos eggAnchor = eggSpots.get(random.nextInt(eggSpots.size())); + BlockPos spawnPos = findOpenSpawnPos(level, eggAnchor, random); + if (spawnPos == null) { + spawnPos = findOpenSpawnPos(level, surfacePos.above(), random); + } + if (spawnPos == null) { + continue; + } + + BedBugEntity bedBug = AntarchyObjects.BED_BUG.get().create(serverLevel.getLevel()); + if (bedBug == null) { + continue; + } + + bedBug.moveTo( + spawnPos.getX() + 1.0D + (random.nextDouble() - 0.5D) * 0.25D, + spawnPos.getY() + 0.02D, + spawnPos.getZ() + 1.0D + (random.nextDouble() - 0.5D) * 0.25D, + random.nextFloat() * 360.0F, + 0.0F + ); + bedBug.setHomeEggPos(eggAnchor); + bedBug.finalizeSpawn(serverLevel, difficulty, MobSpawnType.CHUNK_GENERATION, null); + serverLevel.addFreshEntity(bedBug); + spawnedAny = true; + } + + return spawnedAny; + } + + private static BlockPos findOpenSpawnPos(WorldGenLevel level, BlockPos center, RandomSource random) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int attempt = 0; attempt < 12; attempt++) { + int x = center.getX() + random.nextInt(5) - 2; + int y = center.getY() + random.nextInt(3) - 1; + int z = center.getZ() + random.nextInt(5) - 2; + mutable.set(x, y, z); + + if (canFitBedBugIn2x2(level, mutable)) { + return mutable.immutable(); + } + } + + return null; + } + + private static boolean canFitBedBugIn2x2(WorldGenLevel level, BlockPos basePos) { + for (int dx = 0; dx <= 1; dx++) { + for (int dz = 0; dz <= 1; dz++) { + BlockPos feetPos = basePos.offset(dx, 0, dz); + BlockPos headPos = feetPos.above(); + BlockPos floorPos = feetPos.below(); + + BlockState feetState = level.getBlockState(feetPos); + BlockState headState = level.getBlockState(headPos); + BlockState floorState = level.getBlockState(floorPos); + if (!feetState.canBeReplaced() + || !headState.canBeReplaced() + || !floorState.blocksMotion() + || !floorState.isFaceSturdy(level, floorPos, Direction.UP) + || !floorState.getFluidState().isEmpty()) { + return false; + } + } + } + + return true; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/CloudSeaCalciteFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/CloudSeaCalciteFeature.java new file mode 100644 index 00000000..15d07be3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/CloudSeaCalciteFeature.java @@ -0,0 +1,87 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +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.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; + +public final class CloudSeaCalciteFeature extends Feature { + public CloudSeaCalciteFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + + int banks = 2 + random.nextInt(3); + boolean placedAny = false; + for (int i = 0; i < banks; i++) { + BlockPos center = origin.offset(random.nextInt(25) - 12, random.nextInt(17) - 8, random.nextInt(25) - 12); + int radiusX = 3 + random.nextInt(4); + int radiusY = 1 + random.nextInt(3); + int radiusZ = 3 + random.nextInt(4); + placedAny |= placeBank(level, center, radiusX, radiusY, radiusZ, random); + } + + return placedAny; + } + + private boolean placeBank(WorldGenLevel level, BlockPos center, int radiusX, int radiusY, int radiusZ, RandomSource random) { + boolean placedAny = false; + int xRange = Math.max(1, radiusX); + int yRange = Math.max(1, radiusY); + int zRange = Math.max(1, radiusZ); + BlockState cloud = AntarchyObjects.CLOUD_BLOCK.get().defaultBlockState(); + + for (int x = -xRange; x <= xRange; x++) { + for (int y = -yRange; y <= yRange; y++) { + for (int z = -zRange; z <= zRange; z++) { + double normalized = (x * x) / (double) (xRange * xRange) + + (y * y) / (double) (yRange * yRange) + + (z * z) / (double) (zRange * zRange); + if (normalized > 1.0D + random.nextDouble() * 0.18D) { + continue; + } + + boolean hollowCore = normalized < 0.58D; + if (hollowCore && random.nextFloat() < 0.72F) { + BlockPos target = center.offset(x, y, z); + BlockState current = level.getBlockState(target); + if (current.is(Blocks.BEDROCK)) { + continue; + } + if (current.isAir() || current.canBeReplaced() || !current.getFluidState().isEmpty()) { + level.setBlock(target, Blocks.AIR.defaultBlockState(), 2); + placedAny = true; + } + continue; + } + + if (Math.abs(y) == yRange && random.nextFloat() < 0.55F) { + continue; + } + + BlockPos target = center.offset(x, y, z); + BlockState current = level.getBlockState(target); + if (current.is(Blocks.BEDROCK) || (!current.isAir() && !current.canBeReplaced() && current.getFluidState().isEmpty())) { + continue; + } + + level.setBlock(target, cloud, 2); + placedAny = true; + } + } + } + + return placedAny; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/LucidAntiwaterPoolFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/LucidAntiwaterPoolFeature.java new file mode 100644 index 00000000..2812fbd1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/LucidAntiwaterPoolFeature.java @@ -0,0 +1,432 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public final class LucidAntiwaterPoolFeature extends Feature { + private static final int MIN_CAVITY_HEIGHT = 10; + private static final int MAX_CAVITY_HEIGHT = 44; + private static final int MAX_LOBES = 2; + private static final int[] BOTTOM_VARIATION = {0, 1, 1}; + + public LucidAntiwaterPoolFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + ThoraxisAntiwaterPoolConfiguration config = context.config(); + + int radius = randomBetween(random, Math.max(4, config.minRadius() / 2), Math.max(6, config.maxRadius() / 2)); + int depth = randomBetween(random, config.minDepth(), config.maxDepth()); + int sourceCount = Math.max(2, randomBetween(random, 2, 4)); + BlockState antiwaterSourceState = config.state().getState(random, origin); + BlockState basaltState = AntarchyObjects.ANTIMETAL.get().defaultBlockState(); + + int floorY = findFloorY(level, origin.getX(), origin.getZ()); + if (floorY <= level.getMinBuildHeight()) { + return false; + } + + int ceilingY = findCeilingY(level, origin.getX(), origin.getZ(), floorY); + if (ceilingY <= floorY + MIN_CAVITY_HEIGHT || ceilingY - floorY > MAX_CAVITY_HEIGHT) { + return false; + } + + boolean placedAny = false; + int lobeCount = randomBetween(random, 1, Math.min(MAX_LOBES, 1 + radius / 6)); + + for (int lobe = 0; lobe < lobeCount; lobe++) { + int lobeRadius = Math.max(3, radius - random.nextInt(Math.max(1, radius / 3 + 1))); + int offsetX = origin.getX() + random.nextInt(Math.max(2, radius)) - Math.max(1, radius / 2); + int offsetZ = origin.getZ() + random.nextInt(Math.max(2, radius)) - Math.max(1, radius / 2); + int ventBudget = sourceCount + random.nextInt(2); + BasinProfile profile = BasinProfile.create(random); + + placedAny |= placeCeilingBasin(level, random, offsetX, floorY, offsetZ, lobeRadius, ceilingY, profile, basaltState, antiwaterSourceState); + placedAny |= placeAntiwaterSources(level, random, offsetX, floorY, offsetZ, Math.max(2, lobeRadius - 1), ventBudget, antiwaterSourceState); +// placedAny |= maybePlacePotentNyxite(level, random, offsetX, floorY, offsetZ, Math.max(2, lobeRadius - 1)); + } + + return placedAny; + } + + private static boolean placeCeilingBasin( + WorldGenLevel level, + RandomSource random, + int centerX, + int floorY, + int centerZ, + int radius, + int maxCeilingY, + BasinProfile profile, + BlockState basaltState, + BlockState antiwaterSourceState + ) { + boolean placedAny = false; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + BlockState filledAntiwater = flowingAntiwaterState(antiwaterSourceState, 7); + + for (int dx = -radius - 2; dx <= radius + 2; dx++) { + for (int dz = -radius - 2; dz <= radius + 2; dz++) { + double shapeDistance = profile.distance(dx, dz); + if (shapeDistance > radius + 1.35D) { + continue; + } + + int worldX = centerX + dx; + int worldZ = centerZ + dz; + int localCeilingY = findCeilingY(level, worldX, worldZ, floorY); + if (localCeilingY <= floorY + MIN_CAVITY_HEIGHT || localCeilingY > maxCeilingY + 3) { + continue; + } + + int basinTopY = localCeilingY - 1; + int baseBottomY = Math.max(floorY + 6, basinTopY - 2); + int variation = BOTTOM_VARIATION[Math.floorMod((dx * 31) + (dz * 17) + profile.seed(), BOTTOM_VARIATION.length)]; + int interiorBottomY = Math.max(floorY + 5, baseBottomY - variation); + int edgeBottomY = Math.max(interiorBottomY, basinTopY - 3); + + boolean edge = shapeDistance >= radius - (1.3D + profile.edgeWidth()); + boolean shoulder = !edge && shapeDistance >= radius - (2.2D + profile.shoulderWidth()) && random.nextFloat() < 0.55F; + int columnBottomY = edge ? edgeBottomY : interiorBottomY; + + if (edge || shoulder) { + for (int y = columnBottomY; y <= basinTopY; y++) { + mutable.set(worldX, y, worldZ); + if (!isReplaceable(level.getBlockState(mutable))) { + continue; + } + + level.setBlock(mutable, basaltState, 2); + placedAny = true; + } + + placedAny |= placeOuterLip(level, random, worldX, worldZ, floorY, basinTopY, profile, dx, dz, radius, basaltState); + continue; + } + + for (int y = columnBottomY; y <= basinTopY; y++) { + mutable.set(worldX, y, worldZ); + if (!isReplaceable(level.getBlockState(mutable))) { + continue; + } + + BlockState antiwaterState = y == basinTopY ? antiwaterSourceState : filledAntiwater; + level.setBlock(mutable, antiwaterState, 2); + scheduleFluidTick(level, mutable, antiwaterState); + placedAny = true; + } + } + } + + return placedAny; + } + + private static boolean placeOuterLip( + WorldGenLevel level, + RandomSource random, + int centerX, + int centerZ, + int floorY, + int basinTopY, + BasinProfile profile, + int dx, + int dz, + int radius, + BlockState basaltState + ) { + boolean placedAny = false; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + + for (int stepX = -1; stepX <= 1; stepX++) { + for (int stepZ = -1; stepZ <= 1; stepZ++) { + if (stepX == 0 && stepZ == 0) { + continue; + } + + double outerDistance = profile.distance(dx + stepX, dz + stepZ); + if (outerDistance <= radius || outerDistance > radius + 1.2D) { + continue; + } + if (random.nextFloat() > 0.72F) { + continue; + } + + int x = centerX + stepX; + int z = centerZ + stepZ; + int localCeilingY = findCeilingY(level, x, z, floorY); + if (localCeilingY <= floorY + MIN_CAVITY_HEIGHT) { + continue; + } + + int topY = localCeilingY - 1; + int lipDepth = 2 + random.nextInt(2); + for (int y = Math.max(topY - lipDepth, basinTopY - 3); y <= topY; y++) { + mutable.set(x, y, z); + if (!isReplaceable(level.getBlockState(mutable))) { + continue; + } + + level.setBlock(mutable, basaltState, 2); + placedAny = true; + } + } + } + + return placedAny; + } + + private static boolean placeAntiwaterSources( + WorldGenLevel level, + RandomSource random, + int centerX, + int floorY, + int centerZ, + int radius, + int sourceCount, + BlockState antiwaterSourceState + ) { + boolean placedAny = false; + int attempts = 0; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + + while (sourceCount > 0 && attempts++ < sourceCount * 6) { + int dx = random.nextInt(radius * 2 + 1) - radius; + int dz = random.nextInt(radius * 2 + 1) - radius; + double distance = Math.sqrt(dx * dx + dz * dz); + if (distance > radius * 0.45D + random.nextDouble() * 0.35D) { + continue; + } + + BlockPos sourcePos = findSupportedSourcePos(level, centerX + dx, floorY, centerZ + dz); + if (sourcePos == null) { + continue; + } + + mutable.set(sourcePos); + level.setBlock(mutable, antiwaterSourceState, 2); + scheduleFluidTick(level, mutable, antiwaterSourceState); + placedAny = true; + sourceCount--; + } + + return placedAny; + } + + private static boolean maybePlacePotentNyxite( + WorldGenLevel level, + RandomSource random, + int centerX, + int floorY, + int centerZ, + int radius + ) { + if (random.nextInt(8) != 0) { + return false; + } + + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + BlockState magmaState = Blocks.MAGMA_BLOCK.defaultBlockState(); + BlockState potentState = AntarchyObjects.POTENT_NYXITE.get() + .defaultBlockState() + .setValue(PotentNyxiteBlock.STATE, PotentNyxiteState.DORMANT); + + for (int attempt = 0; attempt < 12; attempt++) { + int dx = random.nextInt(radius * 2 + 1) - radius; + int dz = random.nextInt(radius * 2 + 1) - radius; + if (dx * dx + dz * dz > radius * radius) { + continue; + } + + int worldX = centerX + dx; + int worldZ = centerZ + dz; + int localCeilingY = findCeilingY(level, worldX, worldZ, floorY); + if (localCeilingY <= floorY + MIN_CAVITY_HEIGHT) { + continue; + } + + BlockPos magmaPos = new BlockPos(worldX, localCeilingY, worldZ); + BlockPos potentPos = magmaPos.below(); + if (!isSolidSurface(level.getBlockState(magmaPos)) || !isOpenBlock(level.getBlockState(potentPos))) { + continue; + } + + mutable.set(magmaPos); + level.setBlock(mutable, magmaState, 2); + mutable.set(potentPos); + level.setBlock(mutable, potentState, 2); + return true; + } + + return false; + } + + private static BlockPos findSupportedSourcePos(WorldGenLevel level, int x, int floorY, int z) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int y = floorY + 2; y >= floorY - 3; y--) { + mutable.set(x, y, z); + BlockState state = level.getBlockState(mutable); + if (!isOpenBlock(state)) { + continue; + } + + BlockPos belowPos = mutable.below(); + BlockState belowState = level.getBlockState(belowPos); + if (!isSolidSurface(belowState)) { + continue; + } + + return belowPos.immutable(); + } + + return null; + } + + private static BlockState flowingAntiwaterState(BlockState sourceState, int level) { + if (!sourceState.hasProperty(LiquidBlock.LEVEL)) { + return sourceState; + } + + int clamped = Mth.clamp(level, 1, 7); + return sourceState.setValue(LiquidBlock.LEVEL, clamped); + } + + private static void scheduleFluidTick(WorldGenLevel level, BlockPos pos, BlockState state) { + FluidState fluidState = state.getFluidState(); + if (!fluidState.isEmpty()) { + level.scheduleTick(pos, fluidState.getType(), fluidState.getType().getTickDelay(level)); + } + } + + private static int findFloorY(WorldGenLevel level, int x, int z) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + int floorY = Integer.MIN_VALUE; + + for (int y = level.getMinBuildHeight() + 1; y < level.getMaxBuildHeight() - 1; y++) { + mutable.set(x, y, z); + BlockState state = level.getBlockState(mutable); + if (!isSolidSurface(state)) { + continue; + } + + mutable.set(x, y + 1, z); + if (isOpenBlock(level.getBlockState(mutable))) { + floorY = y; + } + } + + return floorY; + } + + private static int findCeilingY(WorldGenLevel level, int x, int z, int floorY) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int y = floorY + 2; y < level.getMaxBuildHeight() - 1; y++) { + mutable.set(x, y, z); + BlockState state = level.getBlockState(mutable); + if (!isSolidSurface(state)) { + continue; + } + + mutable.set(x, y - 1, z); + if (isOpenBlock(level.getBlockState(mutable))) { + return y; + } + } + + return Integer.MIN_VALUE; + } + + private static boolean isSolidSurface(BlockState state) { + return !state.isAir() && state.blocksMotion() && state.getFluidState().isEmpty(); + } + + private static boolean isOpenBlock(BlockState state) { + return state.isAir() || state.canBeReplaced() || !state.blocksMotion(); + } + + private static boolean isReplaceable(BlockState state) { + return state.isAir() || state.canBeReplaced() || !state.blocksMotion(); + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } + + private record BasinProfile( + int seed, + double scaleX, + double scaleZ, + double waveX, + double waveZ, + double phaseX, + double phaseZ, + double edgeWidth, + double shoulderWidth + ) { + private static BasinProfile create(RandomSource random) { + int seed = random.nextInt(); + int variant = random.nextInt(3); + return switch (variant) { + case 0 -> new BasinProfile( + seed, + 1.0D + random.nextDouble() * 0.12D, + 1.0D + random.nextDouble() * 0.12D, + 0.18D, + 0.15D, + random.nextDouble() * Math.PI * 2.0D, + random.nextDouble() * Math.PI * 2.0D, + 0.18D, + 0.12D + ); + case 1 -> new BasinProfile( + seed, + 1.2D + random.nextDouble() * 0.2D, + 0.82D + random.nextDouble() * 0.12D, + 0.22D, + 0.18D, + random.nextDouble() * Math.PI * 2.0D, + random.nextDouble() * Math.PI * 2.0D, + 0.26D, + 0.16D + ); + default -> new BasinProfile( + seed, + 1.05D + random.nextDouble() * 0.18D, + 0.95D + random.nextDouble() * 0.18D, + 0.3D, + 0.28D, + random.nextDouble() * Math.PI * 2.0D, + random.nextDouble() * Math.PI * 2.0D, + 0.34D, + 0.24D + ); + }; + } + + private double distance(int dx, int dz) { + double warpedX = (dx / scaleX) + Math.sin((dz * 0.55D) + phaseX) * waveX; + double warpedZ = (dz / scaleZ) + Math.cos((dx * 0.65D) + phaseZ) * waveZ; + double ellipse = Math.sqrt((warpedX * warpedX) + (warpedZ * warpedZ)); + double jag = (Math.sin((dx * 0.8D) + phaseX) + Math.cos((dz * 0.9D) + phaseZ)) * 0.22D; + return ellipse + jag; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/NyxiteSpikeConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/NyxiteSpikeConfiguration.java new file mode 100644 index 00000000..0ccc5832 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/NyxiteSpikeConfiguration.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; + +public record NyxiteSpikeConfiguration( + int floorToCeilingSearchRange, + int radius, + int maxColumnHeight, + int heightDeviation, + float chanceOfColumnAtMaxDistanceFromCenter, + int maxDistanceFromCenterAffectingChanceOfColumn, + int maxDistanceFromCenterAffectingHeightBias, + int maxHeightDifference +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.intRange(1, 128).fieldOf("floor_to_ceiling_search_range").forGetter(NyxiteSpikeConfiguration::floorToCeilingSearchRange), + Codec.intRange(1, 32).fieldOf("radius").forGetter(NyxiteSpikeConfiguration::radius), + Codec.intRange(1, 32).fieldOf("max_column_height").forGetter(NyxiteSpikeConfiguration::maxColumnHeight), + Codec.intRange(1, 16).fieldOf("height_deviation").forGetter(NyxiteSpikeConfiguration::heightDeviation), + Codec.floatRange(0.0F, 1.0F).fieldOf("chance_of_column_at_max_distance_from_center").forGetter(NyxiteSpikeConfiguration::chanceOfColumnAtMaxDistanceFromCenter), + Codec.intRange(1, 64).fieldOf("max_distance_from_center_affecting_chance_of_column").forGetter(NyxiteSpikeConfiguration::maxDistanceFromCenterAffectingChanceOfColumn), + Codec.intRange(1, 64).fieldOf("max_distance_from_center_affecting_height_bias").forGetter(NyxiteSpikeConfiguration::maxDistanceFromCenterAffectingHeightBias), + Codec.intRange(0, 32).fieldOf("max_height_difference").forGetter(NyxiteSpikeConfiguration::maxHeightDifference) + ).apply(instance, NyxiteSpikeConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/NyxiteSpikeFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/NyxiteSpikeFeature.java new file mode 100644 index 00000000..76261e3c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/NyxiteSpikeFeature.java @@ -0,0 +1,192 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import java.util.Optional; +import java.util.OptionalInt; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.PointedDripstoneBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.DripstoneThickness; +import net.minecraft.world.level.levelgen.Column; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public class NyxiteSpikeFeature extends Feature { + public NyxiteSpikeFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + NyxiteSpikeConfiguration config = context.config(); + RandomSource random = context.random(); + if (!level.getBlockState(origin).isAir()) { + return false; + } + + boolean placedAny = false; + int radius = config.radius(); + for (int dx = -radius; dx <= radius; dx++) { + for (int dz = -radius; dz <= radius; dz++) { + double chance = this.getChanceOfColumn(radius, dx, dz, config); + if (chance <= 0.0D) { + continue; + } + + if (this.placeColumn(level, random, origin.offset(dx, 0, dz), dx, dz, chance, config)) { + placedAny = true; + } + } + } + + return placedAny; + } + + private boolean placeColumn( + WorldGenLevel level, + RandomSource random, + BlockPos pos, + int dx, + int dz, + double chance, + NyxiteSpikeConfiguration config + ) { + Optional optional = Column.scan(level, pos, config.floorToCeilingSearchRange(), state -> state.isAir(), state -> !state.isAir()); + if (optional.isEmpty()) { + return false; + } + + Column column = optional.get(); + OptionalInt ceiling = column.getCeiling(); + OptionalInt floor = column.getFloor(); + boolean canGrowDown = ceiling.isPresent() && level.getBlockState(pos.atY(ceiling.getAsInt())).is(AntarchyObjects.NYXITE.get()); + boolean canGrowUp = floor.isPresent() && level.getBlockState(pos.atY(floor.getAsInt())).is(AntarchyObjects.NYXITE.get()); + if (!canGrowDown && !canGrowUp) { + return false; + } + + int downLength = 0; + int upLength = 0; + if (canGrowDown) { + int maxLength = this.getMaxLength(config, ceiling, floor); + downLength = this.getSpikeHeight(random, dx, dz, chance, maxLength, config); + } + if (canGrowUp) { + int maxLength = this.getMaxLength(config, ceiling, floor); + if (downLength > 0) { + upLength = Mth.clamp( + downLength + Mth.randomBetweenInclusive(random, -config.maxHeightDifference(), config.maxHeightDifference()), + 0, + maxLength + ); + } else { + upLength = this.getSpikeHeight(random, dx, dz, chance, maxLength, config); + } + } + + if (ceiling.isPresent() && floor.isPresent() && downLength > 0 && upLength > 0 && ceiling.getAsInt() - downLength <= floor.getAsInt() + upLength) { + int floorY = floor.getAsInt(); + int ceilingY = ceiling.getAsInt(); + int minSplit = Math.max(ceilingY - downLength, floorY + 1); + int maxSplit = Math.min(floorY + upLength, ceilingY - 1); + int split = Mth.randomBetweenInclusive(random, minSplit, maxSplit + 1); + int tipBelowCeiling = split - 1; + downLength = ceilingY - split; + upLength = tipBelowCeiling - floorY; + } + + boolean placedAny = false; + if (downLength > 0 && ceiling.isPresent()) { + placedAny |= this.growPointedNyxite(level, pos.atY(ceiling.getAsInt() - 1), Direction.DOWN, downLength); + } + if (upLength > 0 && floor.isPresent()) { + placedAny |= this.growPointedNyxite(level, pos.atY(floor.getAsInt() + 1), Direction.UP, upLength); + } + return placedAny; + } + + private int getMaxLength(NyxiteSpikeConfiguration config, OptionalInt ceiling, OptionalInt floor) { + if (ceiling.isPresent() && floor.isPresent()) { + return Math.min(config.maxColumnHeight(), ceiling.getAsInt() - floor.getAsInt() - 1); + } + return config.maxColumnHeight(); + } + + private boolean growPointedNyxite(WorldGenLevel level, BlockPos rootStart, Direction direction, int length) { + boolean placedAny = false; + for (int offset = 0; offset < length; offset++) { + BlockPos spikePos = rootStart.relative(direction, offset); + if (spikePos.getY() < level.getMinBuildHeight() || spikePos.getY() >= level.getMaxBuildHeight()) { + break; + } + if (!level.getBlockState(spikePos).isAir()) { + break; + } + + BlockState spikeState = AntarchyObjects.NYXITE_SPIKE.get().defaultBlockState() + .setValue(PointedDripstoneBlock.TIP_DIRECTION, direction) + .setValue(PointedDripstoneBlock.THICKNESS, getThicknessForRootOffset(offset, length)) + .setValue(PointedDripstoneBlock.WATERLOGGED, false); + if (!spikeState.canSurvive(level, spikePos)) { + break; + } + + level.setBlock(spikePos, spikeState, 3); + placedAny = true; + } + return placedAny; + } + + private static DripstoneThickness getThicknessForRootOffset(int offsetFromRoot, int length) { + if (length <= 1) { + return DripstoneThickness.TIP; + } + if (offsetFromRoot == length - 1) { + return DripstoneThickness.TIP; + } + if (offsetFromRoot == length - 2) { + return DripstoneThickness.FRUSTUM; + } + if (offsetFromRoot == 0) { + return DripstoneThickness.BASE; + } + return DripstoneThickness.MIDDLE; + } + + private int getSpikeHeight(RandomSource random, int dx, int dz, double chance, int maxHeight, NyxiteSpikeConfiguration config) { + if (maxHeight <= 0 || random.nextDouble() > chance) { + return 0; + } + + int distance = Math.abs(dx) + Math.abs(dz); + float mean = (float) Mth.clampedMap( + (double) distance, + 0.0D, + (double) config.maxDistanceFromCenterAffectingHeightBias(), + (double) maxHeight, + 1.0D + ); + int sampled = Math.round((float) (mean + random.nextGaussian() * config.heightDeviation())); + return Mth.clamp(sampled, 1, maxHeight); + } + + private double getChanceOfColumn(int radius, int dx, int dz, NyxiteSpikeConfiguration config) { + int remainingX = radius - Math.abs(dx); + int remainingZ = radius - Math.abs(dz); + int edgeDistance = Math.min(remainingX, remainingZ); + return Mth.clampedMap( + (double) edgeDistance, + 0.0D, + (double) config.maxDistanceFromCenterAffectingChanceOfColumn(), + (double) config.chanceOfColumnAtMaxDistanceFromCenter(), + 1.0D + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/PotentNyxiteFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/PotentNyxiteFeature.java new file mode 100644 index 00000000..685fda4f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/PotentNyxiteFeature.java @@ -0,0 +1,56 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; + +public class PotentNyxiteFeature extends Feature { + public PotentNyxiteFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + var random = context.random(); + boolean placedAny = false; + + for (int dx = -7; dx <= 7; dx++) { + for (int dz = -7; dz <= 7; dz++) { + for (int dy = -5; dy <= 5; dy++) { + BlockPos candidatePos = origin.offset(dx, dy, dz); + if (!level.getBlockState(candidatePos).is(AntarchyObjects.NYXITE.get())) { + continue; + } + + if (random.nextFloat() >= 0.12F) { + continue; + } + + BlockState potentNyxite = AntarchyObjects.POTENT_NYXITE.get() + .defaultBlockState() + .setValue(PotentNyxiteBlock.STATE, PotentNyxiteState.DRY); + + level.setBlock(candidatePos, potentNyxite, 2); + BlockPos abovePos = candidatePos.above(); + if (level.getBlockState(abovePos).isAir()) { + level.setBlock(abovePos, Blocks.MAGMA_BLOCK.defaultBlockState(), 2); + } + placedAny = true; + } + } + } + + return placedAny; + } + +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisAntiwaterPoolConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisAntiwaterPoolConfiguration.java new file mode 100644 index 00000000..d1802146 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisAntiwaterPoolConfiguration.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; + +public record ThoraxisAntiwaterPoolConfiguration( + BlockStateProvider state, + int minRadius, + int maxRadius, + int minDepth, + int maxDepth, + float irregularity +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockStateProvider.CODEC.fieldOf("state").forGetter(ThoraxisAntiwaterPoolConfiguration::state), + Codec.intRange(1, 64).fieldOf("min_radius").forGetter(ThoraxisAntiwaterPoolConfiguration::minRadius), + Codec.intRange(1, 64).fieldOf("max_radius").forGetter(ThoraxisAntiwaterPoolConfiguration::maxRadius), + Codec.intRange(1, 32).fieldOf("min_depth").forGetter(ThoraxisAntiwaterPoolConfiguration::minDepth), + Codec.intRange(1, 32).fieldOf("max_depth").forGetter(ThoraxisAntiwaterPoolConfiguration::maxDepth), + Codec.floatRange(0.0F, 1.0F).fieldOf("irregularity").forGetter(ThoraxisAntiwaterPoolConfiguration::irregularity) + ).apply(instance, ThoraxisAntiwaterPoolConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisAntiwaterPoolFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisAntiwaterPoolFeature.java new file mode 100644 index 00000000..84d06dda --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisAntiwaterPoolFeature.java @@ -0,0 +1,268 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.material.FluidState; + +public final class ThoraxisAntiwaterPoolFeature extends Feature { + private static final int MIN_CAVITY_HEIGHT = 8; + private static final int MAX_CAVITY_HEIGHT = 40; + + public ThoraxisAntiwaterPoolFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + ThoraxisAntiwaterPoolConfiguration config = context.config(); + + int radius = randomBetween(random, config.minRadius(), config.maxRadius()); + int depth = randomBetween(random, config.minDepth(), config.maxDepth()); + BlockState antiwaterSourceState = config.state().getState(random, origin); + BlockState nyxiteState = AntarchyObjects.NYXITE.get().defaultBlockState(); + + int pools = randomBetween(random, 1, Math.max(1, 1 + depth / 8)); + boolean placedAny = false; + + for (int i = 0; i < pools; i++) { + int offsetX = random.nextInt(radius * 2 + 1) - radius; + int offsetZ = random.nextInt(radius * 2 + 1) - radius; + int centerX = origin.getX() + offsetX; + int centerZ = origin.getZ() + offsetZ; + + int floorY = findFloorY(level, centerX, centerZ); + if (floorY <= level.getMinBuildHeight()) { + continue; + } + + int ceilingY = findCeilingY(level, centerX, centerZ, floorY); + if (ceilingY <= floorY + MIN_CAVITY_HEIGHT || ceilingY - floorY > MAX_CAVITY_HEIGHT) { + continue; + } + + int poolRadius = randomBetween(random, Math.max(2, radius / 6), Math.max(3, radius / 4 + 1)); + int ventCount = randomBetween(random, 0, Math.max(1, depth / 4)); + placedAny |= placeSparsePool(level, random, centerX, centerZ, floorY, ceilingY, poolRadius, ventCount, antiwaterSourceState, nyxiteState); + } + + return placedAny; + } + + private boolean placeSparsePool( + WorldGenLevel level, + RandomSource random, + int centerX, + int centerZ, + int floorY, + int ceilingY, + int poolRadius, + int ventCount, + BlockState antiwaterSourceState, + BlockState nyxiteState + ) { + boolean placedAny = false; + int ceilingBandY = ceilingY - 1; + int sourceY = floorY + 1; + + placedAny |= placeNyxiteBase(level, random, centerX, floorY, centerZ, poolRadius, nyxiteState); + placedAny |= seedAntiwaterVent(level, sourceY, centerX, centerZ, antiwaterSourceState); + + for (int i = 0; i < ventCount; i++) { + int ventX = centerX + random.nextInt(poolRadius * 2 + 1) - poolRadius; + int ventZ = centerZ + random.nextInt(poolRadius * 2 + 1) - poolRadius; + int distance = Math.abs(ventX - centerX) + Math.abs(ventZ - centerZ); + if (distance > poolRadius + random.nextInt(2)) { + continue; + } + + placedAny |= placeNyxiteBase(level, random, ventX, floorY, ventZ, Math.max(1, poolRadius - 1), nyxiteState); + placedAny |= seedAntiwaterVent(level, sourceY, ventX, ventZ, antiwaterSourceState); + placedAny |= seedCeilingPocket(level, random, ventX, ventZ, ceilingBandY, Math.max(1, poolRadius - 1), antiwaterSourceState); + placedAny |= seedStem(level, ventX, ventZ, floorY, ceilingBandY, antiwaterSourceState); + } + + return placedAny; + } + + private static boolean placeNyxiteBase(WorldGenLevel level, RandomSource random, int centerX, int floorY, int centerZ, int radius, BlockState nyxiteState) { + boolean placedAny = false; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + + for (int dx = -radius; dx <= radius; dx++) { + for (int dz = -radius; dz <= radius; dz++) { + double distance = Math.sqrt(dx * dx + dz * dz); + if (distance > radius + random.nextDouble()) { + continue; + } + + double density = 1.0D - (distance / Math.max(1.0D, radius)); + double chance = Mth.clamp(0.18D + density * 0.45D, 0.0D, 0.78D); + if (random.nextDouble() > chance) { + continue; + } + + mutable.set(centerX + dx, floorY, centerZ + dz); + BlockState existing = level.getBlockState(mutable); + if (existing.is(Blocks.BEDROCK) || existing.blocksMotion()) { + continue; + } + + level.setBlock(mutable, nyxiteState, 2); + placedAny = true; + } + } + + return placedAny; + } + + private static boolean seedAntiwaterVent(WorldGenLevel level, int y, int x, int z, BlockState antiwaterSourceState) { + BlockPos pos = new BlockPos(x, y, z); + BlockState state = level.getBlockState(pos); + FluidState fluidState = state.getFluidState(); + if (state.is(Blocks.BEDROCK) || state.blocksMotion() || !fluidState.isEmpty()) { + return false; + } + + level.setBlock(pos, antiwaterSourceState, 2); + scheduleFluidTick(level, pos, antiwaterSourceState); + return true; + } + + private static boolean seedCeilingPocket(WorldGenLevel level, RandomSource random, int centerX, int centerZ, int ceilingBandY, int radius, BlockState antiwaterSourceState) { + boolean placedAny = false; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + BlockState flowingAntiwater = flowingAntiwaterState(antiwaterSourceState, Math.max(1, Math.min(7, 6 + random.nextInt(2)))); + + for (int dx = -radius; dx <= radius; dx++) { + for (int dz = -radius; dz <= radius; dz++) { + double distance = Math.sqrt(dx * dx + dz * dz); + if (distance > radius + random.nextDouble() * 0.5D) { + continue; + } + + double density = 1.0D - (distance / Math.max(1.0D, radius)); + double chance = Mth.clamp(0.22D + density * 0.52D, 0.0D, 0.84D); + if (random.nextDouble() > chance) { + continue; + } + + mutable.set(centerX + dx, ceilingBandY, centerZ + dz); + BlockState existing = level.getBlockState(mutable); + FluidState fluidState = existing.getFluidState(); + if (existing.is(Blocks.BEDROCK) || existing.blocksMotion() || !fluidState.isEmpty()) { + continue; + } + + level.setBlock(mutable, flowingAntiwater, 2); + scheduleFluidTick(level, mutable, flowingAntiwater); + placedAny = true; + } + } + + return placedAny; + } + + private static boolean seedStem(WorldGenLevel level, int x, int z, int floorY, int ceilingBandY, BlockState antiwaterSourceState) { + boolean placedAny = false; + int stemHeight = Math.max(2, Math.min(ceilingBandY - floorY - 1, 5)); + for (int i = 1; i <= stemHeight; i++) { + int y = floorY + i; + if (y >= ceilingBandY) { + break; + } + + BlockPos pos = new BlockPos(x, y, z); + BlockState state = level.getBlockState(pos); + if (state.is(Blocks.BEDROCK) || state.blocksMotion()) { + break; + } + + BlockState stemState = i == 1 ? antiwaterSourceState : flowingAntiwaterState(antiwaterSourceState, Math.max(1, 8 - i)); + level.setBlock(pos, stemState, 2); + scheduleFluidTick(level, pos, stemState); + placedAny = true; + } + + return placedAny; + } + + private static BlockState flowingAntiwaterState(BlockState sourceState, int level) { + if (!sourceState.hasProperty(LiquidBlock.LEVEL)) { + return sourceState; + } + + int clamped = Mth.clamp(level, 1, 7); + return sourceState.setValue(LiquidBlock.LEVEL, clamped); + } + + private static void scheduleFluidTick(WorldGenLevel level, BlockPos pos, BlockState state) { + FluidState fluidState = state.getFluidState(); + if (!fluidState.isEmpty()) { + level.scheduleTick(pos, fluidState.getType(), fluidState.getType().getTickDelay(level)); + } + } + + private static int findFloorY(WorldGenLevel level, int x, int z) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + int floorY = Integer.MIN_VALUE; + + for (int y = level.getMinBuildHeight() + 1; y < level.getMaxBuildHeight() - 1; y++) { + mutable.set(x, y, z); + BlockState state = level.getBlockState(mutable); + if (!isSolidSurface(state)) { + continue; + } + + mutable.set(x, y + 1, z); + if (isOpenBlock(level.getBlockState(mutable))) { + floorY = y; + } + } + + return floorY; + } + + private static int findCeilingY(WorldGenLevel level, int x, int z, int floorY) { + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int y = floorY + 2; y < level.getMaxBuildHeight() - 1; y++) { + mutable.set(x, y, z); + BlockState state = level.getBlockState(mutable); + if (!isSolidSurface(state)) { + continue; + } + + mutable.set(x, y - 1, z); + if (isOpenBlock(level.getBlockState(mutable))) { + return y; + } + } + + return Integer.MIN_VALUE; + } + + private static boolean isSolidSurface(BlockState state) { + return !state.isAir() && state.blocksMotion() && state.getFluidState().isEmpty(); + } + + private static boolean isOpenBlock(BlockState state) { + return state.isAir(); + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBiomeSource.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBiomeSource.java new file mode 100644 index 00000000..f97fb11e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBiomeSource.java @@ -0,0 +1,252 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.longs.Long2DoubleOpenHashMap; +import java.util.stream.Stream; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.QuartPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSource; + +public final class ThoraxisBiomeSource extends BiomeSource { + private static final int REGION_NOISE_SCALE = 96; + private static final int REGION_DETAIL_SCALE = 41; + private static final int VERTICAL_NOISE_SCALE = 8; + private static final double DUNES_SELECTOR_CUTOFF = 0.38D; + private static final double HILLS_SELECTOR_CUTOFF = 0.24D; + private static final ResourceKey NIGHTMARE_WASTES = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_wastes") + ); + private static final ResourceKey DREAM_DUNES = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_dunes") + ); + private static final ResourceKey UMBRAL_HILLS = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "umbral_hills") + ); + private static final ResourceKey LUCID_POOLS = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "lucid_pools") + ); + private static final ResourceKey CLOUD_SEA = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cloud_sea") + ); + + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + MultiNoiseBiomeSource.DIRECT_CODEC.forGetter(ThoraxisBiomeSource::parameters), + Codec.INT.optionalFieldOf("dream_dunes_max_y", 96).forGetter(ThoraxisBiomeSource::dreamDunesMaxY), + Codec.INT.optionalFieldOf("umbral_hills_max_y", 100).forGetter(ThoraxisBiomeSource::umbralHillsMaxY), + Codec.INT.optionalFieldOf("lucid_pools_min_y", 116).forGetter(ThoraxisBiomeSource::lucidPoolsMinY) + ).apply(instance, ThoraxisBiomeSource::new)); + + private final Climate.ParameterList> parameters; + private final MultiNoiseBiomeSource delegate; + private final int dreamDunesMaxY; + private final int umbralHillsMaxY; + private final int lucidPoolsMinY; + private final int dreamDunesMaxQuartY; + private final int umbralHillsMaxQuartY; + private final int lucidPoolsMinQuartY; + private final Holder nightmareWastesBiome; + private final Holder dreamDunesBiome; + private final Holder umbralHillsBiome; + private final Holder lucidPoolsBiome; + private final Holder cloudSeaBiome; + + private static final ThreadLocal CLOUD_SEA_CACHE = + ThreadLocal.withInitial(() -> new Long2DoubleOpenHashMap(512)); + private static final ThreadLocal REGION_CACHE = + ThreadLocal.withInitial(() -> new Long2DoubleOpenHashMap(512)); + private static final ThreadLocal VERTICAL_CACHE = + ThreadLocal.withInitial(() -> new Long2DoubleOpenHashMap(64)); + + public ThoraxisBiomeSource(Climate.ParameterList> parameters, int dreamDunesMaxY, int umbralHillsMaxY, int lucidPoolsMinY) { + this.parameters = parameters; + this.delegate = MultiNoiseBiomeSource.createFromList(parameters); + this.dreamDunesMaxY = dreamDunesMaxY; + this.umbralHillsMaxY = umbralHillsMaxY; + this.lucidPoolsMinY = lucidPoolsMinY; + this.dreamDunesMaxQuartY = QuartPos.fromBlock(dreamDunesMaxY); + this.umbralHillsMaxQuartY = QuartPos.fromBlock(umbralHillsMaxY); + this.lucidPoolsMinQuartY = QuartPos.fromBlock(lucidPoolsMinY); + this.nightmareWastesBiome = this.findBiome(NIGHTMARE_WASTES); + this.dreamDunesBiome = this.findBiome(DREAM_DUNES); + this.umbralHillsBiome = this.findBiome(UMBRAL_HILLS); + this.lucidPoolsBiome = this.findBiome(LUCID_POOLS); + this.cloudSeaBiome = this.findBiome(CLOUD_SEA); + } + + private Climate.ParameterList> parameters() { + return this.parameters; + } + + private int lucidPoolsMinY() { + return this.lucidPoolsMinY; + } + + private int dreamDunesMaxY() { + return this.dreamDunesMaxY; + } + + private int umbralHillsMaxY() { + return this.umbralHillsMaxY; + } + + @Override + protected MapCodec codec() { + return CODEC; + } + + @Override + protected Stream> collectPossibleBiomes() { + return this.delegate.possibleBiomes().stream(); + } + + @Override + public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { + if (this.cloudSeaBiome != null && cachedIsCloudSeaZone(x, z)) { + return this.cloudSeaBiome; + } + + if (y >= this.lucidPoolsMinQuartY && this.lucidPoolsBiome != null) { + return this.lucidPoolsBiome; + } + + double region = cachedRegionNoise(x, z); + double vertical = cachedVerticalNoise(y); + double dreamDunesSelector = region * 0.65D + (1.0D - vertical) * 0.35D; + double umbralHillsSelector = region * 0.55D + vertical * 0.45D; + + if (this.dreamDunesBiome != null && y <= this.dreamDunesMaxQuartY && dreamDunesSelector <= DUNES_SELECTOR_CUTOFF) { + return this.dreamDunesBiome; + } + + if (this.umbralHillsBiome != null && y <= this.umbralHillsMaxQuartY && umbralHillsSelector <= HILLS_SELECTOR_CUTOFF) { + return this.umbralHillsBiome; + } + + Holder delegateBiome = this.delegate.getNoiseBiome(x, y, z, sampler); + return this.nightmareWastesBiome != null ? this.nightmareWastesBiome : delegateBiome; + } + + @Override + public void addDebugInfo(java.util.List debug, BlockPos pos, Climate.Sampler sampler) { + this.delegate.addDebugInfo(debug, pos, sampler); + debug.add("Thoraxis selector: mixed vertical/region noise"); + debug.add("Thoraxis Lucid Pools: y>=" + this.lucidPoolsMinY); + debug.add("Thoraxis Cloud Sea: widened noise-selected"); + } + + private Holder findBiome(ResourceKey key) { + return this.delegate.possibleBiomes().stream() + .filter(holder -> holder.is(key)) + .findFirst() + .orElse(null); + } + + private boolean cachedIsCloudSeaZone(int quartX, int quartZ) { + long key = net.minecraft.world.level.ChunkPos.asLong(quartX, quartZ); + Long2DoubleOpenHashMap cache = CLOUD_SEA_CACHE.get(); + if (cache.containsKey(key)) { + return cache.get(key) > 0.0D; + } + boolean result = isCloudSeaZone(quartX, quartZ); + if (cache.size() >= 512) cache.clear(); + cache.put(key, result ? 1.0D : -1.0D); + return result; + } + + private double cachedRegionNoise(int quartX, int quartZ) { + long key = net.minecraft.world.level.ChunkPos.asLong(quartX, quartZ); + Long2DoubleOpenHashMap cache = REGION_CACHE.get(); + if (cache.containsKey(key)) { + return cache.get(key); + } + double result = sampleRegionNoise(quartX, quartZ); + if (cache.size() >= 512) cache.clear(); + cache.put(key, result); + return result; + } + + private double cachedVerticalNoise(int quartY) { + long key = (long) quartY; + Long2DoubleOpenHashMap cache = VERTICAL_CACHE.get(); + if (cache.containsKey(key)) { + return cache.get(key); + } + double result = sampleVerticalNoise(quartY); + if (cache.size() >= 64) cache.clear(); + cache.put(key, result); + return result; + } + + private static boolean isCloudSeaZone(int quartX, int quartZ) { + double primary = sampleNoise(quartX, quartZ, 56); + double secondary = sampleNoise(quartX + 137, quartZ - 211, 24); + double combined = primary * 0.72D + secondary * 0.28D; + return (combined >= 0.892D && combined <= 0.952D) || (combined >= 0.962D && combined <= 0.992D); + } + + private static double sampleRegionNoise(int quartX, int quartZ) { + double broad = sampleNoise(quartX, quartZ, REGION_NOISE_SCALE); + double detail = sampleNoise(quartX + 311, quartZ - 197, REGION_DETAIL_SCALE); + return broad * 0.82D + detail * 0.18D; + } + + private double sampleVerticalNoise(int quartY) { + double scaled = positiveMod((double) quartY / (double) VERTICAL_NOISE_SCALE, 1.0D); + double detail = sampleNoise(quartY + 73, quartY - 29, 5); + return scaled * 0.6D + detail * 0.4D; + } + + private static double sampleNoise(int x, int z, int scale) { + int cellX = Math.floorDiv(x, scale); + int cellZ = Math.floorDiv(z, scale); + double fracX = positiveMod((double) x / (double) scale, 1.0D); + double fracZ = positiveMod((double) z / (double) scale, 1.0D); + + double n00 = valueNoise(cellX, cellZ); + double n10 = valueNoise(cellX + 1, cellZ); + double n01 = valueNoise(cellX, cellZ + 1); + double n11 = valueNoise(cellX + 1, cellZ + 1); + + double ix0 = lerp(smoothstep(fracX), n00, n10); + double ix1 = lerp(smoothstep(fracX), n01, n11); + return lerp(smoothstep(fracZ), ix0, ix1); + } + + private static double valueNoise(int x, int z) { + long seed = x * 341873128712L + z * 132897987541L; + seed ^= seed >>> 33; + seed *= 0xff51afd7ed558ccdL; + seed ^= seed >>> 33; + seed *= 0xc4ceb9fe1a85ec53L; + seed ^= seed >>> 33; + return (double) (seed & 0xFFFFFFFFL) / (double) 0xFFFFFFFFL; + } + + private static double smoothstep(double value) { + return value * value * (3.0D - 2.0D * value); + } + + private static double lerp(double delta, double start, double end) { + return start + (end - start) * delta; + } + + private static double positiveMod(double value, double mod) { + double result = value % mod; + return result < 0.0D ? result + mod : result; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBloodCrystalConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBloodCrystalConfiguration.java new file mode 100644 index 00000000..3d568874 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBloodCrystalConfiguration.java @@ -0,0 +1,33 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; + +public record ThoraxisBloodCrystalConfiguration( + BlockStateProvider baseState, + BlockStateProvider crystalState, + int minHeight, + int maxHeight, + int minBaseRadius, + int maxBaseRadius, + int tipRadius, + int sway, + float sideCrystalChance, + float branchChance +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockStateProvider.CODEC.fieldOf("base_state").forGetter(ThoraxisBloodCrystalConfiguration::baseState), + BlockStateProvider.CODEC.fieldOf("crystal_state").forGetter(ThoraxisBloodCrystalConfiguration::crystalState), + Codec.intRange(1, 256).fieldOf("min_height").forGetter(ThoraxisBloodCrystalConfiguration::minHeight), + Codec.intRange(1, 256).fieldOf("max_height").forGetter(ThoraxisBloodCrystalConfiguration::maxHeight), + Codec.intRange(1, 24).fieldOf("min_base_radius").forGetter(ThoraxisBloodCrystalConfiguration::minBaseRadius), + Codec.intRange(1, 24).fieldOf("max_base_radius").forGetter(ThoraxisBloodCrystalConfiguration::maxBaseRadius), + Codec.intRange(1, 24).fieldOf("tip_radius").forGetter(ThoraxisBloodCrystalConfiguration::tipRadius), + Codec.intRange(0, 32).fieldOf("sway").forGetter(ThoraxisBloodCrystalConfiguration::sway), + Codec.floatRange(0.0F, 1.0F).fieldOf("side_crystal_chance").forGetter(ThoraxisBloodCrystalConfiguration::sideCrystalChance), + Codec.floatRange(0.0F, 1.0F).fieldOf("branch_chance").forGetter(ThoraxisBloodCrystalConfiguration::branchChance) + ).apply(instance, ThoraxisBloodCrystalConfiguration::new)); +} + diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBloodCrystalFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBloodCrystalFeature.java new file mode 100644 index 00000000..c90352b6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBloodCrystalFeature.java @@ -0,0 +1,243 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +import java.util.ArrayList; +import java.util.List; + +public final class ThoraxisBloodCrystalFeature extends Feature { + public ThoraxisBloodCrystalFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + ThoraxisBloodCrystalConfiguration config = context.config(); + + boolean hanging = random.nextBoolean(); + int anchorY = hanging ? findCeilingY(level, origin) : findFloorY(level, origin); + if (anchorY < level.getMinBuildHeight()) { + hanging = !hanging; + anchorY = hanging ? findCeilingY(level, origin) : findFloorY(level, origin); + } + if (anchorY < level.getMinBuildHeight()) { + return false; + } + + int length = randomBetween(random, config.minHeight(), config.maxHeight()); + int baseRadius = randomBetween(random, config.minBaseRadius(), config.maxBaseRadius()); + int tipRadius = Math.max(1, config.tipRadius()); + int sway = Math.max(0, config.sway()); + BlockState baseState = config.baseState().getState(random, origin); + BlockState buddingState = AntarchyObjects.BUDDING_BLOOD_CRYSTAL.get().defaultBlockState(); + BlockState smallCrystalState = config.crystalState().getState(random, origin); + + boolean placedAny = false; + int startY = hanging ? anchorY - 1 : anchorY + 1; + for (int step = 0; step < length; step++) { + int y = hanging ? startY - step : startY + step; + if (y <= level.getMinBuildHeight() || y >= level.getMaxBuildHeight() - 1) { + break; + } + + double progress = length <= 1 ? 0.0D : step / (double) (length - 1); + int radius = Math.max(tipRadius, (int) Math.round(Mth.lerp(progress, baseRadius, tipRadius))); + int swayX = (int) Math.round(Math.sin(progress * Math.PI * 1.4D) * sway * 0.5D); + int swayZ = (int) Math.round(Math.cos(progress * Math.PI * 1.2D) * sway * 0.5D); + BlockPos center = new BlockPos(origin.getX() + swayX, y, origin.getZ() + swayZ); + + placedAny |= placeLayer(level, center, radius, baseState, buddingState, smallCrystalState, config.sideCrystalChance(), random); + + if (step > 2 && step < length - 2 && random.nextFloat() < config.branchChance()) { + BlockPos branchCenter = center.offset(random.nextInt(5) - 2, random.nextInt(3) - 1, random.nextInt(5) - 2); + placedAny |= placeLayer(level, branchCenter, Math.max(1, radius - 1), baseState, buddingState, smallCrystalState, config.sideCrystalChance() * 0.9F, random); + } + } + + return placedAny; + } + + private boolean placeLayer( + WorldGenLevel level, + BlockPos center, + int radius, + BlockState baseState, + BlockState buddingState, + BlockState smallCrystalState, + float crystalChance, + RandomSource random + ) { + boolean placedAny = false; + int actualRadius = Math.max(1, radius); + + for (int x = -actualRadius; x <= actualRadius; x++) { + for (int z = -actualRadius; z <= actualRadius; z++) { + double distance = x * x + z * z; + if (distance > actualRadius * actualRadius + random.nextInt(3)) { + continue; + } + + BlockPos target = center.offset(x, 0, z); + BlockState current = level.getBlockState(target); + if (current.is(Blocks.BEDROCK)) { + continue; + } + + level.setBlock(target, baseState, 2); + placedAny = true; + boolean supportsCrystalGrowth = false; + List exposedDirections = collectExposedDirections(level, target, random); + if (!exposedDirections.isEmpty() && random.nextFloat() < Math.min(0.95F, crystalChance * 1.35F)) { + int placements = 1 + random.nextInt(Math.min(3, exposedDirections.size())); + if (exposedDirections.size() >= 4 && random.nextFloat() < crystalChance) { + placements = Math.min(exposedDirections.size(), placements + 1); + } + + for (int i = 0; i < placements; i++) { + Direction direction = exposedDirections.get(i); + supportsCrystalGrowth |= tryPlaceCrystal(level, target, direction, smallCrystalState, random); + } + } + + if (supportsCrystalGrowth) { + level.setBlock(target, buddingState, 2); + } + } + } + + return placedAny; + } + + private boolean tryPlaceCrystal(WorldGenLevel level, BlockPos supportPos, Direction direction, BlockState smallCrystalState, RandomSource random) { + BlockPos crystalPos = supportPos.relative(direction); + BlockState existingState = level.getBlockState(crystalPos); + if (existingState.is(Blocks.BEDROCK) || (!existingState.isAir() && !existingState.canBeReplaced() && existingState.getFluidState().isEmpty())) { + return false; + } + + BlockState fullCrystalState = orientGrowthState(smallCrystalState, direction); + BlockState budState = orientGrowthState(chooseBudState(random), direction); + + if (random.nextFloat() < 0.75F && fullCrystalState.canSurvive(level, crystalPos)) { + level.setBlock(crystalPos, fullCrystalState, 2); + return true; + } + if (budState.canSurvive(level, crystalPos)) { + level.setBlock(crystalPos, budState, 2); + return true; + } + if (fullCrystalState.canSurvive(level, crystalPos)) { + level.setBlock(crystalPos, fullCrystalState, 2); + return true; + } + + return false; + } + + private List collectExposedDirections(WorldGenLevel level, BlockPos target, RandomSource random) { + List directions = new ArrayList<>(); + for (Direction direction : Direction.values()) { + BlockPos sidePos = target.relative(direction); + BlockState sideState = level.getBlockState(sidePos); + if (sideState.is(Blocks.BEDROCK)) { + continue; + } + if (sideState.isAir() || sideState.canBeReplaced() || !sideState.getFluidState().isEmpty()) { + directions.add(direction); + } + } + + for (int i = directions.size() - 1; i > 0; i--) { + int swapIndex = random.nextInt(i + 1); + Direction current = directions.get(i); + directions.set(i, directions.get(swapIndex)); + directions.set(swapIndex, current); + } + + return directions; + } + + private BlockState orientGrowthState(BlockState state, Direction direction) { + BlockState placedState = state; + if (placedState.hasProperty(AmethystClusterBlock.FACING)) { + placedState = placedState.setValue(AmethystClusterBlock.FACING, direction); + } + if (placedState.hasProperty(BlockStateProperties.WATERLOGGED)) { + placedState = placedState.setValue(BlockStateProperties.WATERLOGGED, false); + } + return placedState; + } + + private BlockState chooseBudState(RandomSource random) { + float roll = random.nextFloat(); + if (roll < 0.55F) { + return AntarchyObjects.SMALL_BLOOD_CRYSTAL_BUD.get().defaultBlockState(); + } + if (roll < 0.83F) { + return AntarchyObjects.MEDIUM_BLOOD_CRYSTAL_BUD.get().defaultBlockState(); + } + return AntarchyObjects.LARGE_BLOOD_CRYSTAL_BUD.get().defaultBlockState(); + } + + private int findFloorY(WorldGenLevel level, BlockPos origin) { + int x = origin.getX(); + int z = origin.getZ(); + int startY = Mth.clamp(origin.getY(), level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2); + + for (int y = startY; y > level.getMinBuildHeight(); y--) { + BlockPos pos = new BlockPos(x, y, z); + BlockState state = level.getBlockState(pos); + if (state.isAir() || state.canBeReplaced() || !state.getFluidState().isEmpty()) { + continue; + } + if (state.is(Blocks.BEDROCK)) { + return -1; + } + return y; + } + + return -1; + } + + private int findCeilingY(WorldGenLevel level, BlockPos origin) { + int x = origin.getX(); + int z = origin.getZ(); + int startY = Mth.clamp(origin.getY(), level.getMinBuildHeight() + 1, level.getMaxBuildHeight() - 2); + + for (int y = startY; y < level.getMaxBuildHeight() - 1; y++) { + BlockPos pos = new BlockPos(x, y, z); + BlockState state = level.getBlockState(pos); + if (state.isAir() || state.canBeReplaced() || !state.getFluidState().isEmpty()) { + continue; + } + if (state.is(Blocks.BEDROCK)) { + return -1; + } + return y; + } + + return -1; + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } +} + diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisDuneConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisDuneConfiguration.java new file mode 100644 index 00000000..b7bf48dc --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisDuneConfiguration.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; + +public record ThoraxisDuneConfiguration( + BlockStateProvider topState, + BlockStateProvider underState, + int minRadius, + int maxRadius, + int minHeight, + int maxHeight, + int underDepth, + float irregularity +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockStateProvider.CODEC.fieldOf("top_state").forGetter(ThoraxisDuneConfiguration::topState), + BlockStateProvider.CODEC.fieldOf("under_state").forGetter(ThoraxisDuneConfiguration::underState), + Codec.intRange(1, 64).fieldOf("min_radius").forGetter(ThoraxisDuneConfiguration::minRadius), + Codec.intRange(1, 64).fieldOf("max_radius").forGetter(ThoraxisDuneConfiguration::maxRadius), + Codec.intRange(1, 64).fieldOf("min_height").forGetter(ThoraxisDuneConfiguration::minHeight), + Codec.intRange(1, 64).fieldOf("max_height").forGetter(ThoraxisDuneConfiguration::maxHeight), + Codec.intRange(1, 16).fieldOf("under_depth").forGetter(ThoraxisDuneConfiguration::underDepth), + Codec.floatRange(0.0F, 1.0F).fieldOf("irregularity").forGetter(ThoraxisDuneConfiguration::irregularity) + ).apply(instance, ThoraxisDuneConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisDuneFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisDuneFeature.java new file mode 100644 index 00000000..422e2849 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisDuneFeature.java @@ -0,0 +1,130 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public final class ThoraxisDuneFeature extends Feature { + public ThoraxisDuneFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + ThoraxisDuneConfiguration config = context.config(); + + int radius = randomBetween(random, config.minRadius(), config.maxRadius()); + int height = randomBetween(random, config.minHeight(), config.maxHeight()); + BlockState topState = config.topState().getState(random, origin); + BlockState underState = config.underState().getState(random, origin); + boolean placedAny = false; + + for (int dx = -radius; dx <= radius; dx++) { + for (int dz = -radius; dz <= radius; dz++) { + double distance = Math.sqrt(dx * dx + dz * dz); + double normalized = distance / Math.max(1.0D, radius); + if (normalized > 1.0D) { + continue; + } + + double shape = 1.0D - normalized; + double roughness = 0.70D + (random.nextDouble() * 0.30D); + double mound = height * shape * roughness; + if (random.nextFloat() < config.irregularity()) { + mound *= 0.65D + random.nextDouble() * 0.45D; + } + + int columnHeight = Math.max(1, (int) Math.round(mound)); + int x = origin.getX() + dx; + int z = origin.getZ() + dz; + int surfaceY = level.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, x, z) - 1; + if (surfaceY <= level.getMinBuildHeight()) { + continue; + } + if (level.getBlockState(new BlockPos(x, surfaceY, z)).is(Blocks.BEDROCK)) { + continue; + } + + int baseY = surfaceY + 1; + for (int layer = 0; layer < columnHeight; layer++) { + int y = baseY + layer; + if (y >= level.getMaxBuildHeight() - 1) { + break; + } + + boolean exposedBand = layer < columnHeight - 1 + && layer > 0 + && (layer % 3 == 0 || layer % 4 == 1) + && random.nextFloat() < 0.42D + (config.irregularity() * 0.35D); + BlockState state = layer == columnHeight - 1 || exposedBand ? topState : underState; + level.setBlock(new BlockPos(x, y, z), state, 2); + placedAny = true; + } + + if (columnHeight < config.underDepth()) { + for (int layer = 0; layer < config.underDepth() - columnHeight; layer++) { + int y = surfaceY - layer; + if (y <= level.getMinBuildHeight() || level.getBlockState(new BlockPos(x, y, z)).is(Blocks.BEDROCK)) { + break; + } + if (layer > 1 && layer < config.underDepth() - 2 && random.nextFloat() < 0.22D + (config.irregularity() * 0.20D)) { + level.setBlock(new BlockPos(x, y, z), Blocks.AIR.defaultBlockState(), 2); + placedAny = true; + continue; + } + level.setBlock(new BlockPos(x, y, z), underState, 2); + placedAny = true; + } + } + + if (columnHeight > 2 && random.nextFloat() < 0.34D + config.irregularity() * 0.22D) { + int cavityRadius = 1 + random.nextInt(2); + int cavityY = baseY + Math.max(1, columnHeight / 2) - random.nextInt(Math.max(1, columnHeight / 3 + 1)); + carveBuriedCavity(level, x, cavityY, z, cavityRadius, random); + placedAny = true; + } + } + } + + return placedAny; + } + + private void carveBuriedCavity(WorldGenLevel level, int centerX, int centerY, int centerZ, int radius, RandomSource random) { + int actualRadius = Math.max(1, radius); + for (int x = -actualRadius; x <= actualRadius; x++) { + for (int y = -actualRadius; y <= actualRadius; y++) { + for (int z = -actualRadius; z <= actualRadius; z++) { + double distance = x * x + (y * y * 1.5D) + z * z; + if (distance > actualRadius * actualRadius + random.nextInt(2)) { + continue; + } + + BlockPos target = new BlockPos(centerX + x, centerY + y, centerZ + z); + BlockState state = level.getBlockState(target); + if (state.is(Blocks.BEDROCK)) { + continue; + } + if (!state.isAir() && !state.canBeReplaced() && state.getFluidState().isEmpty()) { + level.setBlock(target, Blocks.AIR.defaultBlockState(), 2); + } + } + } + } + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisFissureConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisFissureConfiguration.java new file mode 100644 index 00000000..f329dcb6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisFissureConfiguration.java @@ -0,0 +1,16 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; + +public record ThoraxisFissureConfiguration(int minSpan, int maxSpan, int minRadius, int maxRadius, int maxBend, float branchChance) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.intRange(1, 256).fieldOf("min_span").forGetter(ThoraxisFissureConfiguration::minSpan), + Codec.intRange(1, 256).fieldOf("max_span").forGetter(ThoraxisFissureConfiguration::maxSpan), + Codec.intRange(1, 8).fieldOf("min_radius").forGetter(ThoraxisFissureConfiguration::minRadius), + Codec.intRange(1, 8).fieldOf("max_radius").forGetter(ThoraxisFissureConfiguration::maxRadius), + Codec.intRange(0, 32).fieldOf("max_bend").forGetter(ThoraxisFissureConfiguration::maxBend), + Codec.floatRange(0.0F, 1.0F).fieldOf("branch_chance").forGetter(ThoraxisFissureConfiguration::branchChance) + ).apply(instance, ThoraxisFissureConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisFissureFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisFissureFeature.java new file mode 100644 index 00000000..09b8f92c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisFissureFeature.java @@ -0,0 +1,93 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +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.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public final class ThoraxisFissureFeature extends Feature { + public ThoraxisFissureFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + ThoraxisFissureConfiguration config = context.config(); + + int span = randomBetween(random, config.minSpan(), config.maxSpan()); + int halfWidth = randomBetween(random, config.minRadius(), config.maxRadius()); + int bendLimit = Math.max(0, config.maxBend()); + int bendX = bendLimit == 0 ? 0 : random.nextInt(bendLimit * 2 + 1) - bendLimit; + int bendZ = bendLimit == 0 ? 0 : random.nextInt(bendLimit * 2 + 1) - bendLimit; + + if (origin.getY() <= 4 || origin.getY() >= level.getMaxBuildHeight() - 5) { + return false; + } + + for (int step = -span; step <= span; step++) { + double t = Math.abs(step) / (double) span; + int y = origin.getY() + step; + if (y <= level.getMinBuildHeight() || y >= level.getMaxBuildHeight()) { + continue; + } + + int centerX = origin.getX() + (int) Math.round(bendX * (t * t - t)); + int centerZ = origin.getZ() + (int) Math.round(bendZ * (t * t - t)); + int width = halfWidth + + (step % 4 == 0 ? 1 : 0) + + (Math.abs(step) <= span / 4 ? 1 : 0) + + (random.nextFloat() < 0.18F ? 1 : 0); + + for (int xOffset = -width; xOffset <= width; xOffset++) { + for (int zOffset = -width; zOffset <= width; zOffset++) { + if (xOffset * xOffset + zOffset * zOffset > width * width + 1) { + continue; + } + + BlockPos targetPos = new BlockPos(centerX + xOffset, y, centerZ + zOffset); + carveNode(level, targetPos, random, width); + if (random.nextFloat() < config.branchChance() && y + 1 < level.getMaxBuildHeight()) { + carveNode(level, targetPos.offset(random.nextInt(3) - 1, random.nextInt(2), random.nextInt(3) - 1), random, Math.max(1, width - 1)); + } + if (random.nextFloat() < 0.1F && y - 1 > level.getMinBuildHeight()) { + carveNode(level, targetPos.below(), random, Math.max(1, width - 1)); + } + } + } + } + + return true; + } + + private void carveNode(WorldGenLevel level, BlockPos pos, RandomSource random, int radius) { + int actualRadius = Math.max(1, radius); + for (int x = -actualRadius; x <= actualRadius; x++) { + for (int y = -2; y <= 2; y++) { + for (int z = -actualRadius; z <= actualRadius; z++) { + if (x * x + z * z + (y * y * 2) > actualRadius * actualRadius + random.nextInt(3)) { + continue; + } + + BlockPos target = pos.offset(x, y, z); + BlockState state = level.getBlockState(target); + if (!state.isAir()) { + level.setBlock(target, Blocks.AIR.defaultBlockState(), 2); + } + } + } + } + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisRibColumnsConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisRibColumnsConfiguration.java new file mode 100644 index 00000000..8f663044 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisRibColumnsConfiguration.java @@ -0,0 +1,18 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; + +public record ThoraxisRibColumnsConfiguration(int minRibs, int maxRibs, int minLength, int maxLength, int minThickness, int maxThickness, int curveStrength, float clawGapChance) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.intRange(1, 24).fieldOf("min_ribs").forGetter(ThoraxisRibColumnsConfiguration::minRibs), + Codec.intRange(1, 24).fieldOf("max_ribs").forGetter(ThoraxisRibColumnsConfiguration::maxRibs), + Codec.intRange(1, 64).fieldOf("min_length").forGetter(ThoraxisRibColumnsConfiguration::minLength), + Codec.intRange(1, 64).fieldOf("max_length").forGetter(ThoraxisRibColumnsConfiguration::maxLength), + Codec.intRange(1, 8).fieldOf("min_thickness").forGetter(ThoraxisRibColumnsConfiguration::minThickness), + Codec.intRange(1, 8).fieldOf("max_thickness").forGetter(ThoraxisRibColumnsConfiguration::maxThickness), + Codec.intRange(0, 16).fieldOf("curve_strength").forGetter(ThoraxisRibColumnsConfiguration::curveStrength), + Codec.floatRange(0.0F, 1.0F).fieldOf("claw_gap_chance").forGetter(ThoraxisRibColumnsConfiguration::clawGapChance) + ).apply(instance, ThoraxisRibColumnsConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisRibColumnsFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisRibColumnsFeature.java new file mode 100644 index 00000000..4996f5bf --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisRibColumnsFeature.java @@ -0,0 +1,81 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +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.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public final class ThoraxisRibColumnsFeature extends Feature { + public ThoraxisRibColumnsFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + ThoraxisRibColumnsConfiguration config = context.config(); + + int ribs = randomBetween(random, config.minRibs(), config.maxRibs()); + boolean upward = origin.getY() < level.getHeight() / 2; + int direction = upward ? 1 : -1; + int spread = 2 + random.nextInt(4); + + for (int rib = 0; rib < ribs; rib++) { + double phase = (rib - (ribs - 1) / 2.0D) / Math.max(1.0D, ribs - 1.0D); + int xShift = (int) Math.round(phase * spread * 2.0D); + int zShift = random.nextInt(3) - 1; + int length = randomBetween(random, config.minLength(), config.maxLength()); + + for (int step = 0; step < length; step++) { + double progress = step / (double) Math.max(1, length - 1); + double curve = Math.sin(progress * Math.PI * 0.85D); + int bend = randomBetween(random, 0, Math.max(0, config.curveStrength())); + int x = origin.getX() + xShift + (int) Math.round(curve * phase * spread) + (direction * bend / 4); + int z = origin.getZ() + zShift + (int) Math.round(curve * (random.nextBoolean() ? 1 : -1)) - (direction * bend / 6); + int y = origin.getY() + (step * direction) + (int) Math.round(progress * progress * direction * 2.5D); + BlockPos pos = new BlockPos(x, y, z); + + int thickness = randomBetween(random, config.minThickness(), config.maxThickness()) + + (step > length / 2 ? 1 : 0) + + (random.nextFloat() < config.clawGapChance() ? 1 : 0); + placeClaw(level, pos, thickness, random); + } + } + + return true; + } + + private void placeClaw(WorldGenLevel level, BlockPos center, int radius, RandomSource random) { + int actualRadius = Math.max(1, radius); + for (int x = -actualRadius; x <= actualRadius; x++) { + for (int y = -actualRadius; y <= actualRadius; y++) { + for (int z = -actualRadius; z <= actualRadius; z++) { + if (x * x + y * y + z * z > actualRadius * actualRadius + random.nextInt(2)) { + continue; + } + + if (Math.abs(y) > actualRadius - 1 && random.nextFloat() < 0.4F) { + continue; + } + + BlockPos target = center.offset(x, y, z); + BlockState state = level.getBlockState(target); + if (state.isAir() || state.canBeReplaced() || !state.getFluidState().isEmpty()) { + level.setBlock(target, com.craisinlord.antarchy.content.AntarchyObjects.NYXITE.get().defaultBlockState(), 2); + } + } + } + } + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisSpikeConfiguration.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisSpikeConfiguration.java new file mode 100644 index 00000000..7843d6d2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisSpikeConfiguration.java @@ -0,0 +1,40 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; + +public record ThoraxisSpikeConfiguration( + Orientation orientation, + int minLength, + int maxLength, + int baseRadius, + int tipRadius, + int sway, + float branchChance +) implements FeatureConfiguration { + public enum Orientation { + UP, + DOWN; + + public static Orientation fromName(String name) { + for (Orientation value : values()) { + if (value.name().equalsIgnoreCase(name)) { + return value; + } + } + throw new IllegalArgumentException("Unknown Thoraxis spike orientation: " + name); + } + } + + public static final Codec ORIENTATION_CODEC = Codec.STRING.xmap(Orientation::fromName, Orientation::name); + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + ORIENTATION_CODEC.fieldOf("orientation").forGetter(ThoraxisSpikeConfiguration::orientation), + Codec.intRange(1, 256).fieldOf("min_length").forGetter(ThoraxisSpikeConfiguration::minLength), + Codec.intRange(1, 256).fieldOf("max_length").forGetter(ThoraxisSpikeConfiguration::maxLength), + Codec.intRange(1, 24).fieldOf("base_radius").forGetter(ThoraxisSpikeConfiguration::baseRadius), + Codec.intRange(1, 24).fieldOf("tip_radius").forGetter(ThoraxisSpikeConfiguration::tipRadius), + Codec.intRange(0, 32).fieldOf("sway").forGetter(ThoraxisSpikeConfiguration::sway), + Codec.floatRange(0.0F, 1.0F).fieldOf("branch_chance").forGetter(ThoraxisSpikeConfiguration::branchChance) + ).apply(instance, ThoraxisSpikeConfiguration::new)); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisSpikeFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisSpikeFeature.java new file mode 100644 index 00000000..ed8bd010 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisSpikeFeature.java @@ -0,0 +1,91 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.craisinlord.antarchy.content.AntarchyObjects; +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.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public final class ThoraxisSpikeFeature extends Feature { + public ThoraxisSpikeFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + ThoraxisSpikeConfiguration config = context.config(); + + int length = randomBetween(random, config.minLength(), config.maxLength()); + int direction = config.orientation() == ThoraxisSpikeConfiguration.Orientation.UP ? 1 : -1; + int baseRadius = Math.max(1, config.baseRadius()); + int tipRadius = Math.max(1, config.tipRadius()); + int sway = Math.max(0, config.sway()); + boolean placedAny = false; + + for (int step = 0; step < length; step++) { + double progress = length <= 1 ? 0.0D : step / (double) (length - 1); + int y = origin.getY() + step * direction; + if (y <= level.getMinBuildHeight() || y >= level.getMaxBuildHeight()) { + break; + } + + double wave = Math.sin(progress * Math.PI * 1.5D); + int x = origin.getX() + (int) Math.round(wave * sway * 0.35D) + random.nextInt(3) - 1; + int z = origin.getZ() + (int) Math.round(Math.cos(progress * Math.PI * 1.25D) * sway * 0.35D) + random.nextInt(3) - 1; + BlockPos center = new BlockPos(x, y, z); + int radius = Math.max(tipRadius, (int) Math.round(lerp(progress, baseRadius, tipRadius))); + placedAny |= placeSphere(level, center, radius, random); + + if (step > 0 && step < length - 1 && random.nextFloat() < config.branchChance()) { + BlockPos branchCenter = center.offset(random.nextInt(5) - 2, random.nextInt(3) - 1, random.nextInt(5) - 2); + placedAny |= placeSphere(level, branchCenter, Math.max(1, radius - 1), random); + } + } + + return placedAny; + } + + private boolean placeSphere(WorldGenLevel level, BlockPos center, int radius, RandomSource random) { + boolean placedAny = false; + int actualRadius = Math.max(1, radius); + for (int x = -actualRadius; x <= actualRadius; x++) { + for (int y = -actualRadius; y <= actualRadius; y++) { + for (int z = -actualRadius; z <= actualRadius; z++) { + double distance = x * x + y * y + z * z; + if (distance > actualRadius * actualRadius + random.nextInt(3)) { + continue; + } + + BlockPos target = center.offset(x, y, z); + BlockState state = level.getBlockState(target); + if (state.is(Blocks.BEDROCK)) { + continue; + } + + if (!state.isAir() || !state.canBeReplaced() || !state.getFluidState().isEmpty() || random.nextFloat() < 0.65F) { + level.setBlock(target, AntarchyObjects.NYXITE.get().defaultBlockState(), 2); + placedAny = true; + } + } + } + } + return placedAny; + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } + + private static double lerp(double t, double a, double b) { + return a + (b - a) * t; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/AntarchyMixinErrorHandler.java b/common/src/main/java/com/craisinlord/antarchy/mixins/AntarchyMixinErrorHandler.java new file mode 100644 index 00000000..5fb18e7f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/AntarchyMixinErrorHandler.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.mixins; + +import org.spongepowered.asm.mixin.extensibility.IMixinConfig; +import org.spongepowered.asm.mixin.extensibility.IMixinErrorHandler; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +/* + * Keeps bad mixins from hard-crashing startup. + */ +public final class AntarchyMixinErrorHandler implements IMixinErrorHandler { + private static final String BROKEN_MARVEL_STELLARIS_MIXIN = + "net.tintankgames.marvel.mixin.integration.stellaris.DimensionOxygenManagerMixin"; + + @Override + public ErrorAction onPrepareError(IMixinConfig config, Throwable throwable, IMixinInfo mixin, ErrorAction action) { + return shouldIgnore(mixin) ? ErrorAction.NONE : action; + } + + @Override + public ErrorAction onApplyError(String targetClassName, Throwable throwable, IMixinInfo mixin, ErrorAction action) { + return shouldIgnore(mixin) ? ErrorAction.NONE : action; + } + + private static boolean shouldIgnore(IMixinInfo mixin) { + return mixin != null && BROKEN_MARVEL_STELLARIS_MIXIN.equals(mixin.getClassName()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/AntarchyMixinPlugin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/AntarchyMixinPlugin.java new file mode 100644 index 00000000..810ecae1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/AntarchyMixinPlugin.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.mixins; + +import java.util.List; +import java.util.Set; +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.Mixins; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +/* + * Mixin plugin for compat-gated mixins and optional deps. + */ +public final class AntarchyMixinPlugin implements IMixinConfigPlugin { + @Override + public void onLoad(String mixinPackage) { + Mixins.registerErrorHandlerClass(AntarchyMixinErrorHandler.class.getName()); + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + String resourcePath = targetClassName.replace('.', '/') + ".class"; + return this.getClass().getClassLoader().getResource(resourcePath) != null; + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) { + } + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + } + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/BloodglassMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/BloodglassMixin.java new file mode 100644 index 00000000..46b1a037 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/BloodglassMixin.java @@ -0,0 +1,48 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.bloodglass.BloodglassAccess; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Player.class) +public abstract class BloodglassMixin implements BloodglassAccess { + @Unique private int antarchy$armorShieldsActive; + @Unique private int antarchy$armorShieldLostCount; + @Unique private int antarchy$armorRechargeTimer; + @Unique private int antarchy$appleShieldsActive; + @Unique private int antarchy$appleShieldLostCount; + @Unique private int antarchy$appleRechargeTimer; + + @Override public int antarchy$getArmorShieldsActive() { return antarchy$armorShieldsActive; } + @Override public void antarchy$setArmorShieldsActive(int v) { antarchy$armorShieldsActive = Math.max(0, v); } + @Override public int antarchy$getArmorShieldLostCount() { return antarchy$armorShieldLostCount; } + @Override public void antarchy$setArmorShieldLostCount(int v) { antarchy$armorShieldLostCount = Math.max(0, v); } + @Override public int antarchy$getArmorRechargeTimer() { return antarchy$armorRechargeTimer; } + @Override public void antarchy$setArmorRechargeTimer(int v) { antarchy$armorRechargeTimer = Math.max(0, v); } + + @Override public int antarchy$getAppleShieldsActive() { return antarchy$appleShieldsActive; } + @Override public void antarchy$setAppleShieldsActive(int v) { antarchy$appleShieldsActive = Math.max(0, v); } + @Override public int antarchy$getAppleShieldLostCount() { return antarchy$appleShieldLostCount; } + @Override public void antarchy$setAppleShieldLostCount(int v) { antarchy$appleShieldLostCount = Math.max(0, v); } + @Override public int antarchy$getAppleRechargeTimer() { return antarchy$appleRechargeTimer; } + @Override public void antarchy$setAppleRechargeTimer(int v) { antarchy$appleRechargeTimer = Math.max(0, v); } + + @Inject(method = "addAdditionalSaveData", at = @At("TAIL")) + private void antarchy$saveBloodglass(CompoundTag tag, CallbackInfo ci) { + tag.putInt("antarchy.ArmorShieldsActive", antarchy$armorShieldsActive); + tag.putInt("antarchy.ArmorShieldLostCount", antarchy$armorShieldLostCount); + tag.putInt("antarchy.ArmorRechargeTimer", antarchy$armorRechargeTimer); + } + + @Inject(method = "readAdditionalSaveData", at = @At("TAIL")) + private void antarchy$loadBloodglass(CompoundTag tag, CallbackInfo ci) { + antarchy$armorShieldsActive = Math.max(0, tag.getInt("antarchy.ArmorShieldsActive")); + antarchy$armorShieldLostCount = Math.max(0, tag.getInt("antarchy.ArmorShieldLostCount")); + antarchy$armorRechargeTimer = Math.max(0, tag.getInt("antarchy.ArmorRechargeTimer")); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/DreamFireBlockMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/DreamFireBlockMixin.java new file mode 100644 index 00000000..9908e8c1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/DreamFireBlockMixin.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.BaseFireBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BaseFireBlock.class) +/* + * Lets dream fire pick the floor or ceiling variant from the same support tag. + */ +public abstract class DreamFireBlockMixin { + private static final ResourceLocation DREAM_FIRE_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_fire"); + private static final ResourceLocation DREAM_CEILING_FIRE_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_fire_ceiling"); + private static final ResourceLocation THORAXIS_DIMENSION_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis"); + + @Inject(method = "getState", at = @At("HEAD"), cancellable = true) + private static void antarchy$useDreamFire(BlockGetter level, BlockPos pos, CallbackInfoReturnable cir) { + boolean thoraxis = level instanceof Level concreteLevel && concreteLevel.dimension().location().equals(THORAXIS_DIMENSION_ID); + + if (thoraxis) { + if (level.getBlockState(pos.above()).is(AntarchyTags.Blocks.DREAM_FIRE_BASE_BLOCKS)) { + BuiltInRegistries.BLOCK.getOptional(DREAM_CEILING_FIRE_ID).ifPresent(block -> cir.setReturnValue(block.defaultBlockState())); + return; + } + + if (level.getBlockState(pos.below()).is(AntarchyTags.Blocks.DREAM_FIRE_BASE_BLOCKS)) { + BuiltInRegistries.BLOCK.getOptional(DREAM_FIRE_ID).ifPresent(block -> cir.setReturnValue(block.defaultBlockState())); + } + return; + } + + if (level.getBlockState(pos.below()).is(AntarchyTags.Blocks.DREAM_FIRE_BASE_BLOCKS)) { + BuiltInRegistries.BLOCK.getOptional(DREAM_FIRE_ID).ifPresent(block -> cir.setReturnValue(block.defaultBlockState())); + return; + } + + if (level.getBlockState(pos.above()).is(AntarchyTags.Blocks.DREAM_FIRE_BASE_BLOCKS)) { + BuiltInRegistries.BLOCK.getOptional(DREAM_CEILING_FIRE_ID).ifPresent(block -> cir.setReturnValue(block.defaultBlockState())); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/DreamSandLowGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/DreamSandLowGravityMixin.java new file mode 100644 index 00000000..f1523d5c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/DreamSandLowGravityMixin.java @@ -0,0 +1,49 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(LivingEntity.class) +/* + * Stores per-entity dream sand low-grav state. + */ +public abstract class DreamSandLowGravityMixin implements DreamSandLowGravityAccess { + @Unique + private boolean antarchy$dreamSandLowGravityActive; + @Unique + private int antarchy$dreamSandLowGravityTicksRemaining; + @Unique + private int antarchy$dreamSandLandingGraceTicks; + + @Override + public boolean antarchy$isDreamSandLowGravityActive() { + return this.antarchy$dreamSandLowGravityActive; + } + + @Override + public void antarchy$setDreamSandLowGravityActive(boolean active) { + this.antarchy$dreamSandLowGravityActive = active; + } + + @Override + public int antarchy$getDreamSandLowGravityTicksRemaining() { + return this.antarchy$dreamSandLowGravityTicksRemaining; + } + + @Override + public void antarchy$setDreamSandLowGravityTicksRemaining(int ticks) { + this.antarchy$dreamSandLowGravityTicksRemaining = Math.max(0, ticks); + } + + @Override + public int antarchy$getDreamSandLandingGraceTicks() { + return this.antarchy$dreamSandLandingGraceTicks; + } + + @Override + public void antarchy$setDreamSandLandingGraceTicks(int ticks) { + this.antarchy$dreamSandLandingGraceTicks = Math.max(0, ticks); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/FireVisualBaseFireBlockMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/FireVisualBaseFireBlockMixin.java new file mode 100644 index 00000000..e5968ec0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/FireVisualBaseFireBlockMixin.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.block.DreamCeilingFireBlock; +import com.craisinlord.antarchy.content.block.DreamFireBlock; +import com.craisinlord.antarchy.content.fire.AntarchyFireVisualAccess; +import com.craisinlord.antarchy.content.fire.AntarchyFireVisualType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.BaseFireBlock; +import net.minecraft.world.level.block.SoulFireBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(BaseFireBlock.class) +public abstract class FireVisualBaseFireBlockMixin { + @Inject(method = "entityInside", at = @At("HEAD")) + private void antarchy$trackFireVisual(BlockState state, Level level, BlockPos pos, Entity entity, CallbackInfo ci) { + if (entity.fireImmune() || !(entity instanceof AntarchyFireVisualAccess access)) { + return; + } + + if (state.getBlock() instanceof DreamFireBlock || state.getBlock() instanceof DreamCeilingFireBlock) { + access.antarchy$setFireVisualType(AntarchyFireVisualType.DREAM); + return; + } + + if (state.getBlock() instanceof SoulFireBlock) { + access.antarchy$setFireVisualType(AntarchyFireVisualType.SOUL); + return; + } + + access.antarchy$setFireVisualType(AntarchyFireVisualType.NORMAL); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/FireVisualEntityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/FireVisualEntityMixin.java new file mode 100644 index 00000000..e54e4662 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/FireVisualEntityMixin.java @@ -0,0 +1,33 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.fire.AntarchyFireVisualAccess; +import com.craisinlord.antarchy.content.fire.AntarchyFireVisualType; +import net.minecraft.world.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +public abstract class FireVisualEntityMixin implements AntarchyFireVisualAccess { + @Unique + private AntarchyFireVisualType antarchy$fireVisualType = AntarchyFireVisualType.NORMAL; + + @Override + public AntarchyFireVisualType antarchy$getFireVisualType() { + return this.antarchy$fireVisualType; + } + + @Override + public void antarchy$setFireVisualType(AntarchyFireVisualType type) { + this.antarchy$fireVisualType = type == null ? AntarchyFireVisualType.NORMAL : type; + } + + @Inject(method = "setRemainingFireTicks", at = @At("TAIL")) + private void antarchy$resetFireVisualWhenExtinguished(int ticks, CallbackInfo ci) { + if (ticks <= 0) { + this.antarchy$fireVisualType = AntarchyFireVisualType.NORMAL; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/GlowVinesUnderLeavesMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/GlowVinesUnderLeavesMixin.java new file mode 100644 index 00000000..e2543eb4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/GlowVinesUnderLeavesMixin.java @@ -0,0 +1,30 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.GrowingPlantBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(GrowingPlantBlock.class) +public abstract class GlowVinesUnderLeavesMixin { + @Inject(method = "canSurvive", at = @At("HEAD"), cancellable = true) + private void antarchy$allowGlowVinesUnderLeaves(BlockState state, LevelReader level, BlockPos pos, CallbackInfoReturnable cir) { + if (!AntarchySettings.glowVinesUnderLeaves()) { + return; + } + if (!state.is(Blocks.CAVE_VINES) && !state.is(Blocks.CAVE_VINES_PLANT)) { + return; + } + + if (level.getBlockState(pos.above()).is(BlockTags.LEAVES)) { + cir.setReturnValue(true); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/ServerPlayerGameModeMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/ServerPlayerGameModeMixin.java new file mode 100644 index 00000000..1ae1efb7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/ServerPlayerGameModeMixin.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.item.ultimate.UltimateToolHelper; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerPlayerGameMode; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ServerPlayerGameMode.class) +/* + * Keeps custom sapling stage updates synced like vanilla. + */ +public abstract class ServerPlayerGameModeMixin { + @Shadow protected ServerLevel level; + @Shadow @Final protected ServerPlayer player; + @Shadow private int gameTicks; + @Shadow private int lastSentState; + + @Inject(method = "incrementDestroyProgress", at = @At("HEAD")) + private void antarchy$mirror3x3DestroyProgress(BlockState state, BlockPos pos, int lastDestroyProgressTicks, CallbackInfoReturnable cir) { + int elapsed = this.gameTicks - lastDestroyProgressTicks; + float progress = state.getDestroyProgress(this.player, this.player.level(), pos) * (elapsed + 1); + int stage = (int) (progress * 10.0F); + if (stage != this.lastSentState && stage >= 0 && stage < 10) { + UltimateToolHelper.broadcastAreaMiningProgress(this.player, this.level, pos, stage); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/TorchflowerBlockStateMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/TorchflowerBlockStateMixin.java new file mode 100644 index 00000000..290dca10 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/TorchflowerBlockStateMixin.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +@Mixin(BlockBehaviour.BlockStateBase.class) +/* + * Makes torchflowers glow when the config is on. + */ +public abstract class TorchflowerBlockStateMixin { + @Inject(method = "getLightEmission", at = @At("HEAD"), cancellable = true) + private void antarchy$makeTorchflowerGlow(CallbackInfoReturnable cir) { + BlockState state = (BlockState) (Object) this; + if (AntarchySettings.glowingTorchflowers() && state.is(Blocks.TORCHFLOWER)) { + cir.setReturnValue(10); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/ElythiaSkyMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ElythiaSkyMixin.java new file mode 100644 index 00000000..e60df934 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ElythiaSkyMixin.java @@ -0,0 +1,62 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.renderer.ElythiaSkyRenderer; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexBuffer; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.LevelRenderer; +import org.joml.Matrix4f; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LevelRenderer.class) +public abstract class ElythiaSkyMixin { + @Shadow + @Final + private Minecraft minecraft; + + @Shadow + private ClientLevel level; + + @Shadow + @Final + private VertexBuffer starBuffer; + + @Shadow + @Final + private VertexBuffer skyBuffer; + + @Shadow + @Final + private VertexBuffer darkBuffer; + + @Inject(method = "renderSky", at = @At("HEAD"), cancellable = true) + private void antarchy$renderElythiaSky(Matrix4f modelViewMatrix, Matrix4f projectionMatrix, float partialTick, Camera camera, boolean isFoggy, Runnable setupFog, CallbackInfo ci) { + if (this.level == null || !ElythiaSkyRenderer.shouldRender(this.level)) { + return; + } + + PoseStack poseStack = new PoseStack(); + poseStack.mulPose(modelViewMatrix); + ElythiaSkyRenderer.render( + this.minecraft, + this.level, + poseStack, + projectionMatrix, + partialTick, + camera, + isFoggy, + setupFog, + this.skyBuffer, + this.darkBuffer, + this.starBuffer + ); + ci.cancel(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/ElytraModelAccessor.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ElytraModelAccessor.java new file mode 100644 index 00000000..9e512000 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ElytraModelAccessor.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.mixins.client; + +import net.minecraft.client.model.ElytraModel; +import net.minecraft.client.model.geom.ModelPart; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ElytraModel.class) +public interface ElytraModelAccessor { + @Accessor("leftWing") + ModelPart antarchy$getLeftWing(); + + @Accessor("rightWing") + ModelPart antarchy$getRightWing(); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/LightningBoltRendererMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/LightningBoltRendererMixin.java new file mode 100644 index 00000000..d754dc23 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/LightningBoltRendererMixin.java @@ -0,0 +1,47 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.ThoraxisWeatherClientState; +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherKind; +import net.minecraft.client.renderer.entity.LightningBoltRenderer; +import net.minecraft.world.entity.LightningBolt; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArgs; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.invoke.arg.Args; + +@Mixin(LightningBoltRenderer.class) +public abstract class LightningBoltRendererMixin { + @Unique + private static final ThreadLocal antarchy$redLightning = ThreadLocal.withInitial(() -> false); + + @Inject(method = "render", at = @At("HEAD")) + private void antarchy$markRedLightning(LightningBolt bolt, float entityYaw, float partialTick, com.mojang.blaze3d.vertex.PoseStack poseStack, net.minecraft.client.renderer.MultiBufferSource buffer, int packedLight, CallbackInfo ci) { + ThoraxisWeatherClientState.ThoraxisWeatherState weather = ThoraxisWeatherClientState.current(bolt.level()); + antarchy$redLightning.set(weather != null + && weather.kind() == ThoraxisWeatherKind.INVERSION_STORM + && weather.anchor().closerToCenterThan(bolt.position(), 64.0D)); + } + + @Inject(method = "render", at = @At("RETURN")) + private void antarchy$clearRedLightning(LightningBolt bolt, float entityYaw, float partialTick, com.mojang.blaze3d.vertex.PoseStack poseStack, net.minecraft.client.renderer.MultiBufferSource buffer, int packedLight, CallbackInfo ci) { + antarchy$redLightning.remove(); + } + + @ModifyArgs( + method = "quad", + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/VertexConsumer;setColor(FFFF)Lcom/mojang/blaze3d/vertex/VertexConsumer;") + ) + private static void antarchy$tintLightning(Args args) { + if (!Boolean.TRUE.equals(antarchy$redLightning.get())) { + return; + } + + args.set(0, 0.95F); + args.set(1, 0.12F); + args.set(2, 0.12F); + args.set(3, 0.35F); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/ParalyzedMouseTurnMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ParalyzedMouseTurnMixin.java new file mode 100644 index 00000000..669bd258 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ParalyzedMouseTurnMixin.java @@ -0,0 +1,25 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import net.minecraft.client.Minecraft; +import net.minecraft.client.MouseHandler; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MouseHandler.class) +public abstract class ParalyzedMouseTurnMixin { + @Shadow + @Final + private Minecraft minecraft; + + @Inject(method = "turnPlayer", at = @At("HEAD"), cancellable = true) + private void antarchy$cancelMouseLookWhileParalyzed(double deltaX, CallbackInfo ci) { + if (this.minecraft.player != null && this.minecraft.player.hasEffect(AntarchyObjects.PARALYZED_EFFECT.get())) { + ci.cancel(); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/ScreenEffectRendererFireVisualMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ScreenEffectRendererFireVisualMixin.java new file mode 100644 index 00000000..cca566f4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ScreenEffectRendererFireVisualMixin.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.fire.AntarchyFireVisualAccess; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ScreenEffectRenderer; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.resources.ResourceLocation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(ScreenEffectRenderer.class) +public abstract class ScreenEffectRendererFireVisualMixin { + private static final ResourceLocation SOUL_FIRE_1 = ResourceLocation.withDefaultNamespace("block/soul_fire_1"); + private static final ResourceLocation DREAM_FIRE_1 = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/dream_fire_1"); + + @ModifyVariable(method = "renderFire", at = @At("STORE"), ordinal = 0) + private static TextureAtlasSprite antarchy$swapPlayerFireOverlay( + TextureAtlasSprite original, + Minecraft minecraft, + PoseStack poseStack + ) { + if (!AntarchySettings.entitySpecificFireOverlayEnabled() + || minecraft.player == null + || !(minecraft.player instanceof AntarchyFireVisualAccess access)) { + return original; + } + + return switch (access.antarchy$getFireVisualType()) { + case SOUL -> antarchy$getBlockAtlasSprite(SOUL_FIRE_1); + case DREAM -> antarchy$getBlockAtlasSprite(DREAM_FIRE_1); + case NORMAL -> original; + }; + } + + private static TextureAtlasSprite antarchy$getBlockAtlasSprite(ResourceLocation texture) { + return Minecraft.getInstance() + .getModelManager() + .getAtlas(TextureAtlas.LOCATION_BLOCKS) + .getSprite(texture); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/SplashManagerMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/SplashManagerMixin.java new file mode 100644 index 00000000..a7e70b2f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/SplashManagerMixin.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.mixins.client; + +import net.minecraft.client.resources.SplashManager; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.util.profiling.ProfilerFiller; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +@Mixin(SplashManager.class) +/* + * Adds Antarchy splash text without replacing vanilla handling. + */ +public abstract class SplashManagerMixin { + @Shadow + @Final + private List splashes; + + @Inject(method = "apply(Ljava/util/List;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", at = @At("TAIL")) + private void antarchy$addCustomSplashes(List splashes, ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfo ci) { + this.splashes.add("Virtual Antsanity!"); + this.splashes.add("Ants! Ants! Ants!"); + this.splashes.add("What is this a center for ants??"); + this.splashes.add("F-ANT-tastic!"); + this.splashes.add("If you squint hard enough, everything looks the same!"); + this.splashes.add("You are very import-ant!"); + this.splashes.add("There are ants in your pants!"); + this.splashes.add("Don't let the bed bugs bite!"); + this.splashes.add("Ants Ants Revolution!"); + this.splashes.add("Rainbow sugar yummy"); + this.splashes.add("Now with inverted gravity!"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/ThoraxisFogMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ThoraxisFogMixin.java new file mode 100644 index 00000000..b3124e89 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/ThoraxisFogMixin.java @@ -0,0 +1,66 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.mojang.blaze3d.shaders.FogShape; +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.material.FogType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FogRenderer.class) +public abstract class ThoraxisFogMixin { + @Shadow private static float fogRed; + @Shadow private static float fogGreen; + @Shadow private static float fogBlue; + + private static final ResourceLocation THORAXIS_DIMENSION = + ResourceLocation.fromNamespaceAndPath("antarchy", "thoraxis"); + private static final float FOG_RED = 0.18F; + private static final float FOG_GREEN = 0.02F; + private static final float FOG_BLUE = 0.02F; + + @Inject(method = "setupColor", at = @At("TAIL")) + private static void modifyThoraxisFogColor( + net.minecraft.client.Camera camera, + float partialTick, + net.minecraft.client.multiplayer.ClientLevel level, + int renderDistance, + float darkenWorldAmount, + CallbackInfo ci) { + if (!isThoraxis() || camera.getFluidInCamera() != FogType.NONE) { + return; + } + + fogRed = FOG_RED; + fogGreen = FOG_GREEN; + fogBlue = FOG_BLUE; + RenderSystem.clearColor(fogRed, fogGreen, fogBlue, 0.0F); + } + + @Inject(method = "setupFog", at = @At("TAIL")) + private static void modifyThoraxisFog( + net.minecraft.client.Camera camera, + FogRenderer.FogMode fogMode, + float renderDistance, + boolean isFoggy, + float partialTick, + CallbackInfo ci) { + if (!isThoraxis() || camera.getFluidInCamera() != FogType.NONE) { + return; + } + + RenderSystem.setShaderFogStart(0.5F); + RenderSystem.setShaderFogEnd(Math.max(renderDistance, 1024.0F)); + RenderSystem.setShaderFogShape(FogShape.SPHERE); + } + + private static boolean isThoraxis() { + Minecraft mc = Minecraft.getInstance(); + return mc.level != null && mc.level.dimension().location().equals(THORAXIS_DIMENSION); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/WolfRendererGrimMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/WolfRendererGrimMixin.java new file mode 100644 index 00000000..d0d4f361 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/WolfRendererGrimMixin.java @@ -0,0 +1,45 @@ +package com.craisinlord.antarchy.mixins.client; + +import net.minecraft.client.renderer.entity.WolfRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.animal.Wolf; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(WolfRenderer.class) +public abstract class WolfRendererGrimMixin { + @Unique + private static final ResourceLocation ANTARCHY$GRIM_WILD_TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/grim/grim_spotted.png"); + + @Unique + private static final ResourceLocation ANTARCHY$GRIM_TAME_TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/grim/grim_spotted_tame.png"); + + @Unique + private static final ResourceLocation ANTARCHY$GRIM_ANGRY_TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/grim/grim_spotted_angry.png"); + + @Inject( + method = "getTextureLocation(Lnet/minecraft/world/entity/animal/Wolf;)Lnet/minecraft/resources/ResourceLocation;", + at = @At("HEAD"), + cancellable = true + ) + private void antarchy$useGrimTexture(Wolf wolf, CallbackInfoReturnable cir) { + if (!antarchy$isGrim(wolf)) { + return; + } + + if (wolf.isAngry()) { + cir.setReturnValue(ANTARCHY$GRIM_ANGRY_TEXTURE); + return; + } + + cir.setReturnValue(wolf.isTame() ? ANTARCHY$GRIM_TAME_TEXTURE : ANTARCHY$GRIM_WILD_TEXTURE); + } + + @Unique + private static boolean antarchy$isGrim(Wolf wolf) { + return wolf.hasCustomName() && "grim".equalsIgnoreCase(wolf.getName().getString().trim()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/AbstractArrowGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/AbstractArrowGravityMixin.java new file mode 100644 index 00000000..a5402726 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/AbstractArrowGravityMixin.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(AbstractArrow.class) +/* + * Flips arrow gravity for inverted shooters. + */ +public abstract class AbstractArrowGravityMixin { + + @ModifyVariable(method = "tick", at = @At(value = "STORE"), ordinal = 0) + private Vec3 antarchy$fixArrowGravityDroop(Vec3 velocity) { + AbstractArrow self = (AbstractArrow) (Object) this; + if (!AntarchySettings.invertProjectilesFromInvertedPlayers()) return velocity; + Entity owner = self.getOwner(); + if (!(owner instanceof Player player)) return velocity; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(player); + if (!direction.isInverted()) return velocity; + velocity = new Vec3(velocity.x, velocity.y + 0.05D, velocity.z); + velocity = AntarchyGravityRotationUtil.vecWorldToPlayer(velocity, direction); + velocity = new Vec3(velocity.x, velocity.y - 0.05D, velocity.z); + velocity = AntarchyGravityRotationUtil.vecPlayerToWorld(velocity, direction); + return velocity; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/BucketItemGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/BucketItemGravityMixin.java new file mode 100644 index 00000000..9c552da2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/BucketItemGravityMixin.java @@ -0,0 +1,88 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUtils; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.LiquidBlockContainer; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.advancements.CriteriaTriggers; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BucketItem.class) +public abstract class BucketItemGravityMixin { + @Shadow + @Final + private Fluid content; + + @Shadow + public abstract boolean emptyContents(Player player, Level level, BlockPos pos, BlockHitResult hitResult); + + @Shadow + public abstract void checkExtraContent(Player player, Level level, ItemStack stack, BlockPos pos); + + @Inject(method = "use", at = @At("RETURN"), cancellable = true) + private void antarchy$allowInvertedFluidPlacement(Level level, Player player, InteractionHand hand, CallbackInfoReturnable> cir) { + InteractionResultHolder result = cir.getReturnValue(); + if (result.getResult().consumesAction() || this.content == Fluids.EMPTY || !AntarchyGravityApi.isGravityInverted(player)) { + return; + } + + ItemStack stack = player.getItemInHand(hand); + HitResult hitResult = player.pick(player.blockInteractionRange(), 1.0F, false); + if (!(hitResult instanceof BlockHitResult blockHitResult) || hitResult.getType() != HitResult.Type.BLOCK) { + return; + } + + Direction face = blockHitResult.getDirection(); + if (face.getAxis() != Direction.Axis.Y) { + return; + } + + BlockPos clickedPos = blockHitResult.getBlockPos(); + BlockState clickedState = level.getBlockState(clickedPos); + Block clickedBlock = clickedState.getBlock(); + BlockPos normalTargetPos = clickedBlock instanceof LiquidBlockContainer && this.content == Fluids.WATER + ? clickedPos + : clickedPos.relative(face); + BlockPos invertedTargetPos = clickedPos.relative(face.getOpposite()); + if (invertedTargetPos.equals(normalTargetPos)) { + return; + } + + if (!level.mayInteract(player, clickedPos) || !player.mayUseItemAt(invertedTargetPos, face.getOpposite(), stack)) { + return; + } + + if (!this.emptyContents(player, level, invertedTargetPos, null)) { + return; + } + + this.checkExtraContent(player, level, stack, invertedTargetPos); + if (player instanceof ServerPlayer serverPlayer) { + CriteriaTriggers.PLACED_BLOCK.trigger(serverPlayer, invertedTargetPos, stack); + } + player.awardStat(Stats.ITEM_USED.get((BucketItem) (Object) this)); + ItemStack successStack = ItemUtils.createFilledResult(stack, player, BucketItem.getEmptySuccessItem(stack, player)); + cir.setReturnValue(InteractionResultHolder.sidedSuccess(successStack, level.isClientSide())); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ChunkMapAccessor.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ChunkMapAccessor.java new file mode 100644 index 00000000..1f4d60c9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ChunkMapAccessor.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.server.level.ChunkMap; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ChunkMap.class) +/* + * Accessor for chunk map tracking internals used by gravity sync. + */ +public interface ChunkMapAccessor { + @Accessor("entityMap") + Int2ObjectMap antarchy$getEntityMap(); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/CrossbowItemGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/CrossbowItemGravityMixin.java new file mode 100644 index 00000000..2381dc47 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/CrossbowItemGravityMixin.java @@ -0,0 +1,56 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(CrossbowItem.class) +/* + * Spawns crossbow shots with gravity-aware aim. + */ +public abstract class CrossbowItemGravityMixin { + + private static final double BOLT_OFFSET = 0.15000000596046448D; + + @WrapOperation(method = "createProjectile", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/LivingEntity;getX()D", ordinal = 0)) + private static double antarchy$fixCrossbowSpawnX(LivingEntity shooter, Operation original) { + if (!AntarchySettings.invertProjectilesFromInvertedPlayers() || !(shooter instanceof Player)) return original.call(shooter); + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(shooter); + if (!direction.isInverted()) return original.call(shooter); + Vec3 offset = AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, BOLT_OFFSET, 0.0D, direction); + return shooter.getEyePosition().subtract(offset).x; + } + + @WrapOperation(method = "createProjectile", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/LivingEntity;getEyeY()D", ordinal = 0)) + private static double antarchy$fixCrossbowSpawnY(LivingEntity shooter, Operation original) { + if (!AntarchySettings.invertProjectilesFromInvertedPlayers() || !(shooter instanceof Player)) return original.call(shooter); + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(shooter); + if (!direction.isInverted()) return original.call(shooter); + Vec3 offset = AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, BOLT_OFFSET, 0.0D, direction); + return shooter.getEyePosition().subtract(offset).y + BOLT_OFFSET; + } + + @WrapOperation(method = "createProjectile", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/LivingEntity;getZ()D", ordinal = 0)) + private static double antarchy$fixCrossbowSpawnZ(LivingEntity shooter, Operation original) { + if (!AntarchySettings.invertProjectilesFromInvertedPlayers() || !(shooter instanceof Player)) return original.call(shooter); + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(shooter); + if (!direction.isInverted()) return original.call(shooter); + Vec3 offset = AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, BOLT_OFFSET, 0.0D, direction); + return shooter.getEyePosition().subtract(offset).z; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/DirectionFacingMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/DirectionFacingMixin.java new file mode 100644 index 00000000..f29d121a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/DirectionFacingMixin.java @@ -0,0 +1,36 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import net.minecraft.core.Direction; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Arrays; +import java.util.Comparator; + +@Mixin(Direction.class) +/* + * Fixes facing math that assumes gravity is always down. + */ +public abstract class DirectionFacingMixin { + + + @Inject(method = "orderedByNearest", at = @At("HEAD"), cancellable = true) + private static void antarchy$fixEntityFacingOrder(Entity entity, CallbackInfoReturnable cir) { + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + Vec3 look = entity.getViewVector(1.0F); + + Direction[] sorted = Direction.values(); + Arrays.sort(sorted, Comparator.comparingDouble( + (Direction d) -> d.getStepX() * look.x + d.getStepY() * look.y + d.getStepZ() * look.z + ).reversed()); + + cir.setReturnValue(sorted); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityCollisionContextMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityCollisionContextMixin.java new file mode 100644 index 00000000..0ac4a24f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityCollisionContextMixin.java @@ -0,0 +1,65 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.shapes.EntityCollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(EntityCollisionContext.class) +/* + * Uses gravity-aware entity bounds for block collision checks. + */ +public abstract class EntityCollisionContextMixin { + + @Shadow @Final private double entityBottom; + @Shadow @Final @Nullable private Entity entity; + + @Redirect( + method = "(Lnet/minecraft/world/entity/Entity;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getY()D") + ) + private static double antarchy$fixCollisionContextBottom(Entity entity) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return entity.getY(); + } + + return AntarchyGravityRotationUtil.boxWorldToPlayer(entity.getBoundingBox(), direction).minY; + } + + @Inject(method = "isAbove", at = @At("HEAD"), cancellable = true) + private void antarchy$fixIsAbove(VoxelShape shape, BlockPos pos, boolean canAscend, CallbackInfoReturnable cir) { + if (this.entity == null) { + return; + } + + if (shape.isEmpty()) { + cir.setReturnValue(false); + return; + } + + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this.entity); + if (!direction.isInverted()) { + return; + } + + double baseMinY = AntarchyGravityRotationUtil.boxWorldToPlayer(new AABB(pos), direction).minY; + double shapeMaxY = AntarchyGravityRotationUtil.boxWorldToPlayer( + shape.bounds().inflate(-1.0E-5D), + direction + ).maxY; + cir.setReturnValue(this.entityBottom > baseMinY + shapeMaxY); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityFrameMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityFrameMixin.java new file mode 100644 index 00000000..63efe599 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityFrameMixin.java @@ -0,0 +1,258 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.BlockParticleOption; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Entity.class) +/* + * Rotates entity frame math into local gravity space. + */ +public abstract class EntityGravityFrameMixin { + + @Shadow protected abstract void onBelowWorld(); + + @Inject(method = "makeBoundingBox", at = @At("RETURN"), cancellable = true) + private void antarchy$rotateBoundingBox(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return; + } + Vec3 origin = entity.position(); + AABB localBox = cir.getReturnValue().move(origin.scale(-1.0D)); + localBox = localBox.move(0.0D, -1.0E-6D, 0.0D); + cir.setReturnValue(AntarchyGravityRotationUtil.boxPlayerToWorld(localBox, direction).move(origin)); + } + + @Inject(method = "getEyeY", at = @At("HEAD"), cancellable = true) + private void antarchy$fixEyeY(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + cir.setReturnValue(entity.position().add(AntarchyGravityRotationUtil.getEyeOffset(entity, entity.getEyeHeight())).y); + } + + @Inject(method = "getEyePosition()Lnet/minecraft/world/phys/Vec3;", at = @At("HEAD"), cancellable = true) + private void antarchy$fixEyePosition(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + cir.setReturnValue(entity.position().add(AntarchyGravityRotationUtil.getEyeOffset(entity, entity.getEyeHeight()))); + } + + @Inject(method = "getEyePosition(F)Lnet/minecraft/world/phys/Vec3;", at = @At("HEAD"), cancellable = true) + private void antarchy$fixEyePositionInterpolated(float partialTick, CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + float flipProgress = AntarchyGravityApi.getGravityFlipProgress(entity, partialTick); + if (flipProgress <= 0.0F) { + return; + } + cir.setReturnValue(entity.getPosition(partialTick).add( + AntarchyGravityRotationUtil.getEyeOffset(entity, entity.getEyeHeight(), partialTick) + )); + } + + @Inject(method = "getViewVector", at = @At("RETURN"), cancellable = true) + private void antarchy$rotateViewVector(float partialTick, CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return; + } + cir.setReturnValue(AntarchyGravityRotationUtil.vecPlayerToWorld(cir.getReturnValue(), direction)); + } + + @Inject(method = "getUpVector", at = @At("RETURN"), cancellable = true) + private void antarchy$rotateUpVector(float partialTick, CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return; + } + cir.setReturnValue(AntarchyGravityRotationUtil.vecPlayerToWorld(cir.getReturnValue(), direction)); + } + + @Inject(method = "getForward", at = @At("RETURN"), cancellable = true) + private void antarchy$rotateForwardVector(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return; + } + cir.setReturnValue(AntarchyGravityRotationUtil.vecPlayerToWorld(cir.getReturnValue(), direction)); + } + + @Inject(method = "getOnPos(F)Lnet/minecraft/core/BlockPos;", at = @At("HEAD"), cancellable = true) + private void antarchy$fixSupportingBlockPos(float offset, CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + cir.setReturnValue(AntarchyGravityRotationUtil.getSupportingBlockPos(entity, offset)); + } + + @Inject(method = "getBlockPosBelowThatAffectsMyMovement", + at = @At("HEAD"), cancellable = true) + private void antarchy$fixVelocityAffectingPos(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + cir.setReturnValue(BlockPos.containing(entity.position().add(0.0D, 0.5000001D, 0.0D))); + } + + @Inject(method = "getOnPosLegacy", at = @At("HEAD"), cancellable = true) + private void antarchy$fixLandingPos(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + cir.setReturnValue(BlockPos.containing(entity.position().add(0.0D, 0.20000000298023224D, 0.0D))); + } + + @WrapOperation(method = "isInWall", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/phys/AABB;ofSize(Lnet/minecraft/world/phys/Vec3;DDD)Lnet/minecraft/world/phys/AABB;", + ordinal = 0)) + private AABB antarchy$fixIsInWallAABB(Vec3 center, double x, double y, double z, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) { + return original.call(center, x, y, z); + } + Vec3 rotated = AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(x, y, z), direction); + return original.call(center, rotated.x, rotated.y, rotated.z); + } + + @WrapOperation(method = "isFree(DDD)Z", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/phys/AABB;move(DDD)Lnet/minecraft/world/phys/AABB;", + ordinal = 0)) + private AABB antarchy$fixIsFreeMoveAABB(AABB instance, double x, double y, double z, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) { + return original.call(instance, x, y, z); + } + Vec3 worldOffset = AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(x, y, z), direction); + return original.call(instance, worldOffset.x, worldOffset.y, worldOffset.z); + } + + @ModifyVariable(method = "updateFluidOnEyes", at = @At(value = "STORE"), ordinal = 0) + private double antarchy$fixFluidEyeY(double eyeY) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return eyeY; + } + return entity.getEyePosition().y(); + } + + @ModifyVariable(method = "updateFluidOnEyes", at = @At(value = "STORE"), ordinal = 0) + private BlockPos antarchy$fixFluidEyeBlockPos(BlockPos pos) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return pos; + } + return BlockPos.containing(entity.getEyePosition()); + } + + @Inject(method = "spawnSprintParticle", at = @At("HEAD"), cancellable = true) + private void antarchy$fixSprintParticle(CallbackInfo ci) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return; + } + ci.cancel(); + Vec3 ceilPos = entity.position().add(0.0D, 0.20000000298023224D, 0.0D); + BlockPos blockPos = BlockPos.containing(ceilPos); + var blockState = entity.level().getBlockState(blockPos); + if (blockState.getRenderShape() != RenderShape.INVISIBLE) { + double w = entity.getBbWidth(); + Vec3 particlePos = entity.position().add( + (entity.getRandom().nextDouble() - 0.5D) * w, + 0.1D, + (entity.getRandom().nextDouble() - 0.5D) * w + ); + Vec3 dm = entity.getDeltaMovement(); + Vec3 particleVel = AntarchyGravityRotationUtil.vecPlayerToWorld( + new Vec3(dm.x * -4.0D, -1.5D, dm.z * -4.0D), + direction + ); + entity.level().addParticle( + new BlockParticleOption(ParticleTypes.BLOCK, blockState), + particlePos.x, particlePos.y, particlePos.z, + particleVel.x, particleVel.y, particleVel.z + ); + } + } + + @Inject(method = "checkBelowWorld", at = @At("HEAD"), cancellable = true) + private void antarchy$checkAboveWorldForInverted(CallbackInfo ci) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + if (entity.getY() > entity.level().getMaxBuildHeight() + 256) { + this.onBelowWorld(); + ci.cancel(); + } + } + + @Inject(method = "push(Lnet/minecraft/world/entity/Entity;)V", + at = @At("HEAD"), cancellable = true) + private void antarchy$fixEntityPush(Entity other, CallbackInfo ci) { + Entity self = (Entity) (Object) this; + boolean selfInverted = AntarchyGravityApi.isGravityInverted(self); + boolean otherInverted = AntarchyGravityApi.isGravityInverted(other); + if (selfInverted == otherInverted) { + return; + } + ci.cancel(); + if (self.isPassengerOfSameVehicle(other)) { + return; + } + if (other.noPhysics || self.noPhysics) { + return; + } + Vec3 worldOffset = other.getBoundingBox().getCenter().subtract(self.getBoundingBox().getCenter()); + AntarchyGravityDirection selfDir = AntarchyGravityApi.getGravityDirection(self); + Vec3 localOffset = AntarchyGravityRotationUtil.vecWorldToPlayer(worldOffset, selfDir); + double dx = localOffset.x; + double dz = localOffset.z; + double dist = Mth.absMax(dx, dz); + if (dist >= 0.009999999776482582D) { + dist = Math.sqrt(dist); + dx /= dist; + dz /= dist; + double scale = Math.min(1.0D / dist, 1.0D) * 0.05D; + dx *= scale; + dz *= scale; + if (!self.isVehicle()) { + self.push(AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(-dx, 0.0D, -dz), selfDir)); + } + if (!other.isVehicle()) { + AntarchyGravityDirection otherDir = AntarchyGravityApi.getGravityDirection(other); + other.push(AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(dx, 0.0D, dz), otherDir)); + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java new file mode 100644 index 00000000..68116a82 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java @@ -0,0 +1,260 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityAccess; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Entity.class) +/* + * Adds the base gravity state and sync hooks to entities. + */ +public abstract class EntityGravityMixin implements AntarchyGravityAccess { + @Unique + private static final Logger LOGGER = LoggerFactory.getLogger("Antarchy/FallDamage"); + @Unique + private static final String ANTARCHY_GRAVITY_DIRECTION_TAG = "AntarchyGravityDirection"; + @Unique + private static final String ANTARCHY_PREV_GRAVITY_DIRECTION_TAG = "AntarchyPrevGravityDirection"; + @Unique + private static final String ANTARCHY_GRAVITY_FORCED_TAG = "AntarchyGravityForced"; + @Unique + private static final String ANTARCHY_GRAVITY_TRANSITION_DURATION_TAG = "AntarchyGravityTransitionDuration"; + @Unique + private static final String ANTARCHY_GRAVITY_TRANSITION_REMAINING_TAG = "AntarchyGravityTransitionRemaining"; + + @Unique + private AntarchyGravityDirection antarchy$gravityDirection = AntarchyGravityDirection.DOWN; + @Unique + private AntarchyGravityDirection antarchy$prevGravityDirection = AntarchyGravityDirection.DOWN; + @Unique + private boolean antarchy$gravityForced; + @Unique + private int antarchy$gravityTransitionDuration; + @Unique + private int antarchy$gravityTransitionRemaining; + + @Shadow + protected abstract AABB makeBoundingBox(); + + @Shadow + public abstract void setBoundingBox(AABB boundingBox); + + @Inject(method = "saveWithoutId", at = @At("TAIL")) + private void antarchy$saveGravityState(CompoundTag tag, CallbackInfoReturnable cir) { + tag.putString(ANTARCHY_GRAVITY_DIRECTION_TAG, this.antarchy$gravityDirection.getSerializedName()); + tag.putString(ANTARCHY_PREV_GRAVITY_DIRECTION_TAG, this.antarchy$prevGravityDirection.getSerializedName()); + tag.putBoolean(ANTARCHY_GRAVITY_FORCED_TAG, this.antarchy$gravityForced); + tag.putInt(ANTARCHY_GRAVITY_TRANSITION_DURATION_TAG, this.antarchy$gravityTransitionDuration); + tag.putInt(ANTARCHY_GRAVITY_TRANSITION_REMAINING_TAG, this.antarchy$gravityTransitionRemaining); + } + + @Inject(method = "load", at = @At("TAIL")) + private void antarchy$readGravityState(CompoundTag tag, CallbackInfo ci) { + this.antarchy$gravityDirection = AntarchyGravityDirection.parse(tag.getString(ANTARCHY_GRAVITY_DIRECTION_TAG)) + .orElse(AntarchyGravityDirection.DOWN); + this.antarchy$prevGravityDirection = AntarchyGravityDirection.parse(tag.getString(ANTARCHY_PREV_GRAVITY_DIRECTION_TAG)) + .orElse(this.antarchy$gravityDirection); + this.antarchy$gravityForced = tag.getBoolean(ANTARCHY_GRAVITY_FORCED_TAG); + this.antarchy$gravityTransitionDuration = Math.max(0, tag.getInt(ANTARCHY_GRAVITY_TRANSITION_DURATION_TAG)); + this.antarchy$gravityTransitionRemaining = Math.max(0, tag.getInt(ANTARCHY_GRAVITY_TRANSITION_REMAINING_TAG)); + } + + @Inject(method = "baseTick", at = @At("TAIL")) + private void antarchy$tickGravityTransition(CallbackInfo ci) { + if (this.antarchy$gravityTransitionRemaining > 0) { + this.antarchy$gravityTransitionRemaining--; + } + } + + @Inject(method = "updateInWaterStateAndDoFluidPushing", at = @At("TAIL")) + private void antarchy$resetFallDistanceInAntiwater(CallbackInfoReturnable cir) { + Entity entity = this.antarchy$entity(); + AntarchyGravityDirection direction = this.antarchy$gravityDirection; + if (!direction.isInverted()) { + return; + } + + if (!antarchy$isTouchingAntiwater(entity)) { + return; + } + + Vec3 localMotion = AntarchyGravityRotationUtil.vecWorldToPlayer(entity.getDeltaMovement(), direction); + float previousFallDistance = entity.fallDistance; + entity.resetFallDistance(); + + if (!entity.level().isClientSide && LOGGER.isDebugEnabled()) { + LOGGER.debug( + "[FallDamage] Antiwater contact reset during fluid update: entity={} pos={} localMotion={} previousFallDistance={} onGround={} inWaterStateReturned={}", + entity.getClass().getSimpleName(), + entity.position(), + localMotion, + previousFallDistance, + entity.onGround(), + cir.getReturnValue() + ); + } + } + + @Override + public AntarchyGravityDirection antarchy$getGravityDirection() { + return this.antarchy$gravityDirection; + } + + @Override + public AntarchyGravityDirection antarchy$getPrevGravityDirection() { + return this.antarchy$prevGravityDirection; + } + + @Override + public boolean antarchy$isGravityForced() { + return this.antarchy$gravityForced; + } + + @Override + public int antarchy$getGravityTransitionDuration() { + return this.antarchy$gravityTransitionDuration; + } + + @Override + public int antarchy$getGravityTransitionRemaining() { + return this.antarchy$gravityTransitionRemaining; + } + + @Override + public void antarchy$setGravityState(AntarchyGravityDirection direction, boolean forced, AntarchyGravityTransition transition) { + AntarchyGravityDirection previousDirection = this.antarchy$gravityDirection; + boolean changed = this.antarchy$gravityDirection != direction || this.antarchy$gravityForced != forced; + if (this.antarchy$gravityDirection != direction) { + this.antarchy$adjustPositionForGravityChange(this.antarchy$gravityDirection, direction); + this.antarchy$prevGravityDirection = this.antarchy$gravityDirection; + this.antarchy$gravityDirection = direction; + this.antarchy$gravityTransitionDuration = transition.durationTicks(); + this.antarchy$gravityTransitionRemaining = transition.durationTicks(); + this.antarchy$refreshGravityBounds(); + } + + this.antarchy$gravityForced = forced; + if (changed && !this.antarchy$entity().level().isClientSide) { + AntarchyGravityApi.notifyGravityStateChanged(this.antarchy$entity()); + } + } + + @Override + public void antarchy$applySyncedGravityState( + AntarchyGravityDirection direction, + AntarchyGravityDirection previousDirection, + boolean forced, + int transitionDuration, + int transitionRemaining + ) { + AntarchyGravityDirection oldDirection = this.antarchy$gravityDirection; + this.antarchy$gravityDirection = direction; + this.antarchy$prevGravityDirection = previousDirection; + this.antarchy$gravityForced = forced; + this.antarchy$gravityTransitionDuration = Math.max(0, transitionDuration); + this.antarchy$gravityTransitionRemaining = Math.max(0, transitionRemaining); + if (oldDirection != direction) { + // Do NOT adjust position here — the server entity's position is already + // correct (adjusted when gravity first changed on the server). Adjusting + // again on the client causes a double-shift on relog, which creates + // a position desync and stuttering as the server repeatedly corrects us. + this.antarchy$refreshGravityBounds(); + } + } + + @Unique + private Entity antarchy$entity() { + return (Entity) (Object) this; + } + + @Unique + private void antarchy$refreshGravityBounds() { + this.setBoundingBox(this.makeBoundingBox()); + } + + @Unique + private void antarchy$adjustPositionForGravityChange(AntarchyGravityDirection oldDirection, AntarchyGravityDirection newDirection) { + if (oldDirection == newDirection) { + return; + } + + Entity entity = this.antarchy$entity(); + double yOffset = newDirection.isInverted() ? entity.getBbHeight() : -entity.getBbHeight(); + entity.setPos(entity.getX(), entity.getY() + yOffset, entity.getZ()); + entity.setOnGround(false); + entity.resetFallDistance(); + } + + @ModifyVariable(method = "checkFallDamage", at = @At("HEAD"), ordinal = 0, argsOnly = true) + private double antarchy$invertFallDamageY(double worldY) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity) || entity instanceof Player) { + return worldY; + } + + double invertedY = -worldY; + LOGGER.debug( + "[FallDamage] Entity {} inverted checkFallDamage fallback: worldY={} invertedY={} fallDistance={} onGround={} deltaMovement={}", + entity.getClass().getSimpleName(), + worldY, + invertedY, + entity.fallDistance, + entity.onGround(), + entity.getDeltaMovement() + ); + return invertedY; + } + + @Unique + private boolean antarchy$isTouchingAntiwater(Entity entity) { + return antarchy$intersectsAntiwater(entity, entity.getBoundingBox().inflate(0.05D)); + } + + @Unique + private boolean antarchy$intersectsAntiwater(Entity entity, AABB box) { + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (com.craisinlord.antarchy.content.block.PotentNyxiteBlock.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } + + @ModifyVariable(method = "isSupportedBy", at = @At("HEAD"), ordinal = 0, argsOnly = true) + private BlockPos antarchy$mirrorSupportBlock(BlockPos pos) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return pos; + } + + return pos.above(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java new file mode 100644 index 00000000..d756591e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java @@ -0,0 +1,171 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +/* + * Fixes move/landing logic that assumes down is always down. + */ +public abstract class EntityMoveMixin { + @Unique + private static final Logger ANTARCHY_FALL_LOGGER = LoggerFactory.getLogger("Antarchy/FallDamage"); + + @Unique + private double antarchy$lastWorldMoveY = 0.0; + @Unique + private double antarchy$lastPlayerMoveY = 0.0; + @Unique + private AABB antarchy$moveStartBox; + + @Inject(method = "move", at = @At("HEAD")) + private void antarchy$captureMoveStart(MoverType type, Vec3 movement, CallbackInfo ci) { + Entity entity = (Entity) (Object) this; + this.antarchy$moveStartBox = entity.getBoundingBox(); + this.antarchy$lastPlayerMoveY = movement.y; + } + + @ModifyVariable(method = "move", at = @At("HEAD"), ordinal = 0, argsOnly = true) + private Vec3 antarchy$movePlayerToWorld(Vec3 movement) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return movement; + } + + Vec3 world = AntarchyGravityRotationUtil.vecPlayerToWorld(movement, direction); + this.antarchy$lastWorldMoveY = world.y; + return world; + } + + @ModifyArg( + method = "move", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/phys/Vec3;multiply(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;", + ordinal = 0 + ), + index = 0 + ) + private Vec3 antarchy$moveMaskPlayerToWorld(Vec3 multiplier) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return multiplier; + } + + return AntarchyGravityRotationUtil.maskPlayerToWorld(multiplier, direction); + } + + @ModifyVariable( + method = "move", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/util/profiling/ProfilerFiller;pop()V", + ordinal = 0 + ), + ordinal = 0 + ) + private Vec3 antarchy$moveWorldToPlayerAttempted(Vec3 movement) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return movement; + } + + return AntarchyGravityRotationUtil.vecWorldToPlayer(movement, direction); + } + + @ModifyVariable( + method = "move", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/util/profiling/ProfilerFiller;pop()V", + ordinal = 0 + ), + ordinal = 1 + ) + private Vec3 antarchy$moveWorldToPlayerResolved(Vec3 movement) { + Entity entity = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + return movement; + } + + return AntarchyGravityRotationUtil.vecWorldToPlayer(movement, direction); + } + + + @Inject(method = "move", at = @At("TAIL")) + private void antarchy$fixVerticalCollisionBelow(MoverType type, Vec3 movement, CallbackInfo ci) { + Entity entity = (Entity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return; + } + + if (this.antarchy$lastPlayerMoveY < 0.0D && this.antarchy$moveStartBox != null) { + AABB endBox = entity.getBoundingBox(); + Vec3 delta = endBox.getCenter().subtract(this.antarchy$moveStartBox.getCenter()); + AABB sweptBox = this.antarchy$moveStartBox.expandTowards(delta).minmax(endBox).inflate(0.05D); + if (antarchy$intersectsAntiwater(entity, sweptBox)) { + float previousFallDistance = entity.fallDistance; + entity.resetFallDistance(); + if (!entity.level().isClientSide && ANTARCHY_FALL_LOGGER.isDebugEnabled()) { + ANTARCHY_FALL_LOGGER.debug( + "[FallDamage] Antiwater contact reset during move: entity={} startBox={} endBox={} sweptBox={} playerMoveY={} worldMoveY={} previousFallDistance={}", + entity.getClass().getSimpleName(), + this.antarchy$moveStartBox, + endBox, + sweptBox, + this.antarchy$lastPlayerMoveY, + this.antarchy$lastWorldMoveY, + previousFallDistance + ); + } + } + } + + if (!entity.verticalCollision) return; + boolean landedOnCeiling = this.antarchy$lastWorldMoveY > 0.0; + entity.verticalCollisionBelow = landedOnCeiling; + if (landedOnCeiling) { + entity.setOnGround(true); + } + } + + @Unique + private boolean antarchy$intersectsAntiwater(Entity entity, AABB box) { + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (PotentNyxiteBlock.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ExplosionGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ExplosionGravityMixin.java new file mode 100644 index 00000000..e2dcb868 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ExplosionGravityMixin.java @@ -0,0 +1,42 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Explosion.class) +/* + * Fixes explosion knockback for inverted gravity. + */ +public abstract class ExplosionGravityMixin { + + @WrapOperation(method = "explode", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/Entity;getDeltaMovement()Lnet/minecraft/world/phys/Vec3;", + ordinal = 0)) + private Vec3 antarchy$fixExplosionGetVelocity(Entity entity, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) return original.call(entity); + return AntarchyGravityRotationUtil.vecPlayerToWorld(original.call(entity), direction); + } + + @WrapOperation(method = "explode", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/Entity;setDeltaMovement(Lnet/minecraft/world/phys/Vec3;)V", + ordinal = 0)) + private void antarchy$fixExplosionSetVelocity(Entity entity, Vec3 velocity, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) { + original.call(entity, velocity); + return; + } + original.call(entity, AntarchyGravityRotationUtil.vecWorldToPlayer(velocity, direction)); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/FallingBlockEntityBlockDataMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/FallingBlockEntityBlockDataMixin.java new file mode 100644 index 00000000..3ca7dfa4 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/FallingBlockEntityBlockDataMixin.java @@ -0,0 +1,197 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.context.DirectionalPlaceContext; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DoublePlantBlock; +import net.minecraft.world.level.block.FallingBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.level.material.Fluids; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(FallingBlockEntity.class) +/* + * Preserves full block data on carried falling blocks. + */ +public abstract class FallingBlockEntityBlockDataMixin { + @Shadow public CompoundTag blockData; + @Shadow public abstract BlockState getBlockState(); + + @WrapOperation( + method = "tick", + at = @org.spongepowered.asm.mixin.injection.At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z" + ) + ) + private boolean antarchy$placeDoublePlantCarriedBlock(Level level, BlockPos pos, BlockState state, int flags, Operation original) { + FallingBlockEntity entity = (FallingBlockEntity) (Object) this; + if (!entity.getTags().contains(GravityGunItem.GRAVITY_GUN_CARRIED_BLOCK_TAG) || !this.antarchy$isCarriedDoublePlant(state)) { + return original.call(level, pos, state, flags); + } + + return this.antarchy$tryPlaceExact(level, pos, state); + } + + @WrapOperation( + method = "tick", + at = @org.spongepowered.asm.mixin.injection.At( + value = "INVOKE", + target = "Lnet/minecraft/world/entity/item/FallingBlockEntity;spawnAtLocation(Lnet/minecraft/world/level/ItemLike;)Lnet/minecraft/world/entity/item/ItemEntity;" + ) + ) + private ItemEntity antarchy$preserveBlockEntityDataOnDrop(FallingBlockEntity entity, ItemLike itemLike, Operation original) { + if (entity.getTags().contains(GravityGunItem.GRAVITY_GUN_CARRIED_BLOCK_TAG) && this.antarchy$tryPlaceNearby(entity)) { + return null; + } + + if (this.blockData == null || this.blockData.isEmpty()) { + return original.call(entity, itemLike); + } + + Entity self = (Entity) (Object) this; + ItemStack stack = new ItemStack(itemLike); + if (!(stack.getItem() instanceof BlockItem)) { + return original.call(entity, itemLike); + } + + String blockEntityId = this.blockData.getString("id"); + ResourceLocation blockEntityKey = ResourceLocation.tryParse(blockEntityId); + if (blockEntityKey == null) { + return original.call(entity, itemLike); + } + + BlockEntityType blockEntityType = BuiltInRegistries.BLOCK_ENTITY_TYPE.get(blockEntityKey); + if (blockEntityType == null) { + return original.call(entity, itemLike); + } + + BlockItem.setBlockEntityData(stack, blockEntityType, this.blockData.copy()); + return self.spawnAtLocation(stack); + } + + private boolean antarchy$tryPlaceNearby(FallingBlockEntity entity) { + Entity self = (Entity) (Object) this; + Level level = self.level(); + BlockState fallingState = this.getBlockState(); + if (fallingState.isAir()) { + return false; + } + + List candidates = new ArrayList<>(); + BlockPos basePos = self.blockPosition(); + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + candidates.add(basePos.offset(dx, 0, dz)); + candidates.add(basePos.offset(dx, -1, dz)); + } + } + candidates.sort(Comparator.comparingDouble(pos -> pos.distToCenterSqr(self.position()))); + + for (BlockPos pos : candidates) { + if (!this.antarchy$canPlaceAt(level, pos, fallingState)) { + continue; + } + + BlockState placeState = fallingState; + if (this.antarchy$isCarriedDoublePlant(placeState)) { + if (this.antarchy$tryPlaceExact(level, pos, placeState)) { + self.discard(); + return true; + } + continue; + } + + if (placeState.hasProperty(BlockStateProperties.WATERLOGGED) && level.getFluidState(pos).getType() == Fluids.WATER) { + placeState = placeState.setValue(BlockStateProperties.WATERLOGGED, true); + } + + if (!level.setBlock(pos, placeState, 3)) { + continue; + } + + this.antarchy$restoreBlockEntityData(level, pos, placeState); + self.discard(); + return true; + } + + return false; + } + + private boolean antarchy$canPlaceAt(Level level, BlockPos pos, BlockState fallingState) { + if (this.antarchy$isCarriedDoublePlant(fallingState)) { + BlockState existingLower = level.getBlockState(pos); + BlockState existingUpper = level.getBlockState(pos.above()); + boolean canReplaceLower = existingLower.canBeReplaced( + new DirectionalPlaceContext(level, pos, Direction.DOWN, ItemStack.EMPTY, Direction.UP) + ); + boolean canReplaceUpper = existingUpper.canBeReplaced( + new DirectionalPlaceContext(level, pos.above(), Direction.DOWN, ItemStack.EMPTY, Direction.UP) + ); + boolean hasSupport = !FallingBlock.isFree(level.getBlockState(pos.below())); + return canReplaceLower && canReplaceUpper && hasSupport && fallingState.canSurvive(level, pos); + } + + BlockState existingState = level.getBlockState(pos); + boolean canReplace = existingState.canBeReplaced( + new DirectionalPlaceContext(level, pos, Direction.DOWN, ItemStack.EMPTY, Direction.UP) + ); + boolean hasSupport = !FallingBlock.isFree(level.getBlockState(pos.below())); + return canReplace && hasSupport && fallingState.canSurvive(level, pos); + } + + private boolean antarchy$tryPlaceExact(Level level, BlockPos pos, BlockState fallingState) { + if (!this.antarchy$canPlaceAt(level, pos, fallingState)) { + return false; + } + + DoublePlantBlock.placeAt(level, fallingState.setValue(BlockStateProperties.DOUBLE_BLOCK_HALF, DoubleBlockHalf.LOWER), pos, 3); + return true; + } + + private boolean antarchy$isCarriedDoublePlant(BlockState state) { + return state.getBlock() instanceof DoublePlantBlock + && state.hasProperty(BlockStateProperties.DOUBLE_BLOCK_HALF) + && state.getValue(BlockStateProperties.DOUBLE_BLOCK_HALF) == DoubleBlockHalf.LOWER; + } + + private void antarchy$restoreBlockEntityData(Level level, BlockPos pos, BlockState placedState) { + if (this.blockData == null || this.blockData.isEmpty() || !placedState.hasBlockEntity()) { + return; + } + + BlockEntity blockEntity = level.getBlockEntity(pos); + if (blockEntity == null) { + return; + } + + CompoundTag mergedTag = blockEntity.saveWithoutMetadata(level.registryAccess()); + for (String key : this.blockData.getAllKeys()) { + mergedTag.put(key, this.blockData.get(key).copy()); + } + + blockEntity.loadWithComponents(mergedTag, level.registryAccess()); + blockEntity.setChanged(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/FireworkRocketGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/FireworkRocketGravityMixin.java new file mode 100644 index 00000000..29d2f0d7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/FireworkRocketGravityMixin.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.FireworkRocketEntity; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(FireworkRocketEntity.class) +/* + * Fixes firework boost dir for inverted elytra flight. + */ +public abstract class FireworkRocketGravityMixin { + + @Shadow + @Nullable + private LivingEntity attachedToEntity; + + @ModifyVariable(method = "tick", at = @At(value = "STORE"), ordinal = 0) + private Vec3 antarchy$fixFireworkThrustDirection(Vec3 velocity) { + if (!(this.attachedToEntity instanceof Player player)) return velocity; + if (!AntarchyGravityApi.isGravityInverted(player)) return velocity; + return AntarchyGravityRotationUtil.vecWorldToPlayer( + velocity, + AntarchyGravityApi.getGravityDirection(player) + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/GroundPathNavigationMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/GroundPathNavigationMixin.java new file mode 100644 index 00000000..c643f810 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/GroundPathNavigationMixin.java @@ -0,0 +1,36 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.GravityWalkNodeEvaluator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.level.pathfinder.PathFinder; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(GroundPathNavigation.class) +/* + * Makes ground pathing read gravity-aware floor checks. + */ +public abstract class GroundPathNavigationMixin { + private static final Logger LOGGER = LoggerFactory.getLogger("Antarchy/Pathfinding"); + + @Inject(method = "createPathFinder", at = @At("HEAD"), cancellable = true) + private void antarchy$useGravityEvaluator(int maxVisitedNodes, CallbackInfoReturnable cir) { + var mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return; + } + + LOGGER.debug( + "[Path] swap evaluator mob={} maxVisitedNodes={}", + mob.getClass().getSimpleName(), + maxVisitedNodes + ); + + cir.setReturnValue(new PathFinder(new GravityWalkNodeEvaluator(), maxVisitedNodes)); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java new file mode 100644 index 00000000..220d86e9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java @@ -0,0 +1,296 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(LivingEntity.class) +/* + * Fixes living entity movement/combat bits for inverted gravity. + */ +public abstract class LivingEntityMixin { + + @WrapOperation(method = "travel", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getY()D")) + private double antarchy$fixTravelGetY(LivingEntity entity, Operation original) { + if (!AntarchyGravityApi.isGravityInverted(entity)) return original.call(entity); + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + return AntarchyGravityRotationUtil.vecWorldToPlayer(entity.position(), direction).y; + } + + @ModifyVariable(method = "travel", + at = @At(value = "INVOKE_ASSIGN", + target = "Lnet/minecraft/world/entity/LivingEntity;getLookAngle()Lnet/minecraft/world/phys/Vec3;", + ordinal = 0), + ordinal = 2) + private Vec3 antarchy$fixTravelLookAngle(Vec3 vec3) { + LivingEntity entity = (LivingEntity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) return vec3; + Vec3 localLook = AntarchyGravityRotationUtil.vecWorldToPlayer(vec3, direction); + if (!entity.isFallFlying()) { + return localLook; + } + + // Elytra flight mirror fix on east/west axis + return new Vec3(-localLook.x, localLook.y, localLook.z); + } + + @ModifyVariable(method = "checkFallDamage", at = @At("HEAD"), ordinal = 0, argsOnly = true) + private double antarchy$invertLivingFallDamageY(double worldY) { + LivingEntity entity = (LivingEntity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return worldY; + } + if (antarchy$isTouchingAntiwater(entity)) { + entity.fallDistance = 0.0F; + return 0.0D; + } + return -worldY; + } + + @org.spongepowered.asm.mixin.injection.Inject(method = "calculateEntityAnimation", at = @At("HEAD"), cancellable = true) + private void antarchy$fixEntityAnimation(boolean flutter, CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) return; + ci.cancel(); + + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + Vec3 playerPosDelta = AntarchyGravityRotationUtil.vecWorldToPlayer( + new Vec3(entity.getX() - entity.xo, entity.getY() - entity.yo, entity.getZ() - entity.zo), + direction + ); + double d = playerPosDelta.x; + double e = flutter ? playerPosDelta.y : 0.0D; + double f = playerPosDelta.z; + float g = (float) Math.sqrt(d * d + e * e + f * f) * 4.0F; + if (g > 1.0F) g = 1.0F; + entity.walkAnimation.update(g, 0.4F); + } + + @org.spongepowered.asm.mixin.injection.Inject(method = "wouldNotSuffocateAtTargetPose", at = @At("HEAD"), cancellable = true) + private void antarchy$fixPoseCheck(Pose pose, CallbackInfoReturnable cir) { + LivingEntity entity = (LivingEntity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(entity)) return; + EntityDimensions dims = entity.getDimensions(pose); + Vec3 pos = entity.position(); + float halfWidth = dims.width() / 2.0F; + float height = dims.height(); + AABB invertedBox = new AABB( + pos.x - halfWidth, pos.y - height, pos.z - halfWidth, + pos.x + halfWidth, pos.y, pos.z + halfWidth + ); + cir.setReturnValue(entity.level().noCollision(entity, invertedBox)); + } + + @Unique + private boolean antarchy$isTouchingAntiwater(LivingEntity entity) { + AABB box = entity.getBoundingBox().inflate(0.05D); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (PotentNyxiteBlock.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } + + @org.spongepowered.asm.mixin.injection.Inject(method = "getLocalBoundsForPose", at = @At("RETURN"), cancellable = true) + private void antarchy$fixLocalBoundsForPose(Pose pose, CallbackInfoReturnable cir) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) return; + AABB box = cir.getReturnValue(); + box = box.move(0.0D, -1.0E-6D, 0.0D); + cir.setReturnValue(AntarchyGravityRotationUtil.boxPlayerToWorld(box, direction)); + } + + @WrapOperation(method = "hasLineOfSight", + at = @At(value = "NEW", target = "(DDD)Lnet/minecraft/world/phys/Vec3;", ordinal = 0)) + private Vec3 antarchy$fixHasLineOfSightSelf(double x, double y, double z, Operation original) { + LivingEntity self = (LivingEntity) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(self)) return original.call(x, y, z); + return self.getEyePosition(); + } + + @WrapOperation(method = "hasLineOfSight", + at = @At(value = "NEW", target = "(DDD)Lnet/minecraft/world/phys/Vec3;", ordinal = 1)) + private Vec3 antarchy$fixHasLineOfSightTarget(double x, double y, double z, Operation original, + @Local(argsOnly = true) Entity other) { + if (!AntarchyGravityApi.isGravityInverted(other)) return original.call(x, y, z); + return other.getEyePosition(); + } + + @WrapOperation(method = "tick", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getX()D", ordinal = 0)) + private double antarchy$fixTickBodyRotGetX(LivingEntity entity, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) return original.call(entity); + return AntarchyGravityRotationUtil.vecWorldToPlayer( + original.call(entity) - entity.xo, + entity.getY() - entity.yo, + entity.getZ() - entity.zo, + direction + ).x + entity.xo; + } + + @WrapOperation(method = "tick", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getZ()D", ordinal = 0)) + private double antarchy$fixTickBodyRotGetZ(LivingEntity entity, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); + if (!direction.isInverted()) return original.call(entity); + return AntarchyGravityRotationUtil.vecWorldToPlayer( + entity.getX() - entity.xo, + entity.getY() - entity.yo, + original.call(entity) - entity.zo, + direction + ).z + entity.zo; + } + + @WrapOperation(method = "blockedByShield", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getX()D", ordinal = 0)) + private double antarchy$fixShieldAttackerX(LivingEntity attacker, Operation original) { + AntarchyGravityDirection defDir = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!defDir.isInverted()) { + if (AntarchyGravityApi.isGravityInverted(attacker)) return attacker.getEyePosition().x; + return original.call(attacker); + } + return AntarchyGravityRotationUtil.vecWorldToPlayer(attacker.getEyePosition(), defDir).x; + } + + @WrapOperation(method = "blockedByShield", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getZ()D", ordinal = 0)) + private double antarchy$fixShieldAttackerZ(LivingEntity attacker, Operation original) { + AntarchyGravityDirection defDir = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!defDir.isInverted()) return original.call(attacker); + return AntarchyGravityRotationUtil.vecWorldToPlayer(attacker.getEyePosition(), defDir).z; + } + + @WrapOperation(method = "blockedByShield", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getX()D", ordinal = 1)) + private double antarchy$fixShieldDefenderX(LivingEntity shieldUser, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) return original.call(shieldUser); + return AntarchyGravityRotationUtil.vecWorldToPlayer(shieldUser.position(), direction).x; + } + + @WrapOperation(method = "blockedByShield", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getZ()D", ordinal = 1)) + private double antarchy$fixShieldDefenderZ(LivingEntity shieldUser, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) return original.call(shieldUser); + return AntarchyGravityRotationUtil.vecWorldToPlayer(shieldUser.position(), direction).z; + } + + @ModifyVariable(method = "isDamageSourceBlocked", + at = @At(value = "INVOKE_ASSIGN", + target = "Lnet/minecraft/world/entity/LivingEntity;calculateViewVector(FF)Lnet/minecraft/world/phys/Vec3;", + ordinal = 0), + ordinal = 1) + private Vec3 antarchy$fixShieldArcViewVector(Vec3 vec3) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) return vec3; + return AntarchyGravityRotationUtil.vecWorldToPlayer(vec3, direction); + } + + @ModifyArg(method = "playBlockFallSound", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;"), + index = 0) + private BlockPos antarchy$fixBlockFallSoundPos(BlockPos pos) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) return pos; + Entity selfEntity = (Entity) (Object) this; + return BlockPos.containing(selfEntity.position().add( + AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(0.0D, -0.20000000298023224D, 0.0D), direction) + )); + } + + @WrapOperation(method = "spawnItemParticles", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;", + ordinal = 0)) + private Vec3 antarchy$fixItemParticlesAdd(Vec3 base, double x, double y, double z, Operation original) { + Entity self = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(self); + if (!direction.isInverted()) return original.call(base, x, y, z); + Vec3 rotated = AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(x, y, z), direction); + return original.call(self.getEyePosition(), rotated.x, rotated.y, rotated.z); + } + + @ModifyVariable(method = "spawnItemParticles", + at = @At(value = "INVOKE_ASSIGN", + target = "Lnet/minecraft/world/phys/Vec3;yRot(F)Lnet/minecraft/world/phys/Vec3;", + ordinal = 0), + ordinal = 0) + private Vec3 antarchy$fixItemParticlesYRotVec(Vec3 vec3) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) return vec3; + return AntarchyGravityRotationUtil.vecPlayerToWorld(vec3, direction); + } + + @WrapOperation(method = "tickEffects", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V")) + private void antarchy$fixEffectParticles(Level level, ParticleOptions particle, + double x, double y, double z, double dx, double dy, double dz, + Operation original) { + Entity self = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(self); + if (!direction.isInverted()) { + original.call(level, particle, x, y, z, dx, dy, dz); + return; + } + Vec3 pos = self.position().subtract( + AntarchyGravityRotationUtil.vecPlayerToWorld(self.position().subtract(x, y, z), direction) + ); + original.call(level, particle, pos.x, pos.y, pos.z, dx, dy, dz); + } + + @WrapOperation(method = "makePoofParticles", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V", + ordinal = 0)) + private void antarchy$fixPoofParticles(Level level, ParticleOptions particle, + double x, double y, double z, double dx, double dy, double dz, + Operation original) { + Entity self = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(self); + if (!direction.isInverted()) { + original.call(level, particle, x, y, z, dx, dy, dz); + return; + } + Vec3 pos = self.position().subtract( + AntarchyGravityRotationUtil.vecPlayerToWorld(self.position().subtract(x, y, z), direction) + ); + original.call(level, particle, pos.x, pos.y, pos.z, dx, dy, dz); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/MobHurtMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/MobHurtMixin.java new file mode 100644 index 00000000..5649f57d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/MobHurtMixin.java @@ -0,0 +1,26 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.Mob; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Mob.class) +/* + * Fixes hurt push logic that assumes normal gravity. + */ +public abstract class MobHurtMixin { + @WrapOperation(method = "doHurtTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Mob;getYRot()F")) + private float wrapOperation_tryAttack_getYaw_0(Mob attacker, Operation original, Entity target) { + AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(target); + if (!gravityDirection.isInverted()) { + return original.call(attacker); + } + return AntarchyGravityRotationUtil.rotWorldToPlayer(original.call(attacker), attacker.getXRot(), gravityDirection).x; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationAccessor.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationAccessor.java new file mode 100644 index 00000000..1a512fef --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationAccessor.java @@ -0,0 +1,19 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.level.pathfinder.Path; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(PathNavigation.class) +/* + * Accessor for path nav internals used by gravity fixes. + */ +public interface PathNavigationAccessor { + @Accessor("mob") + Mob antarchy$getMob(); + + @Accessor("path") + Path antarchy$getPath(); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationDebugMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationDebugMixin.java new file mode 100644 index 00000000..e7b1def9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationDebugMixin.java @@ -0,0 +1,133 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.level.pathfinder.Path; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(PathNavigation.class) +/* + * Keeps path debug shapes lined up with gravity-aware nav. + */ +public abstract class PathNavigationDebugMixin { + private static final Logger LOGGER = LoggerFactory.getLogger("Antarchy/Pathfinding"); + + @Unique + private int antarchy$debugTickCooldown; + + @Inject(method = "moveTo(DDDD)Z", at = @At("HEAD")) + private void antarchy$logMoveToPosition(double x, double y, double z, double speed, CallbackInfoReturnable cir) { + var mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return; + } + + LOGGER.debug( + "[Path] moveTo(pos) inverted mob={} target=({}, {}, {}) speed={}", + mob.getClass().getSimpleName(), + x, + y, + z, + speed + ); + } + + @Inject(method = "moveTo(Lnet/minecraft/world/level/pathfinder/Path;D)Z", at = @At("HEAD")) + private void antarchy$logMoveToPath(Path path, double speed, CallbackInfoReturnable cir) { + var mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return; + } + + LOGGER.debug( + "[Path] moveTo(path) inverted mob={} nodes={} nextIndex={} speed={}", + mob.getClass().getSimpleName(), + path == null ? -1 : path.getNodeCount(), + path == null ? -1 : path.getNextNodeIndex(), + speed + ); + } + + @Inject(method = "createPath(DDDI)Lnet/minecraft/world/level/pathfinder/Path;", at = @At("RETURN")) + private void antarchy$logCreatePath(double x, double y, double z, int accuracy, CallbackInfoReturnable cir) { + var mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return; + } + + Path path = cir.getReturnValue(); + LOGGER.debug( + "[Path] createPath(pos) inverted mob={} target=({}, {}, {}) accuracy={} result={}", + mob.getClass().getSimpleName(), + x, + y, + z, + accuracy, + path == null ? "null" : ("nodes=" + path.getNodeCount() + " nextIndex=" + path.getNextNodeIndex()) + ); + } + + @Inject(method = "createPath(Lnet/minecraft/world/entity/Entity;I)Lnet/minecraft/world/level/pathfinder/Path;", at = @At("RETURN")) + private void antarchy$logCreatePath(Entity target, int accuracy, CallbackInfoReturnable cir) { + var mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return; + } + + Path path = cir.getReturnValue(); + LOGGER.debug( + "[Path] createPath(entity) inverted mob={} target={} accuracy={} result={}", + mob.getClass().getSimpleName(), + target == null ? "null" : target.getClass().getSimpleName(), + accuracy, + path == null ? "null" : ("nodes=" + path.getNodeCount() + " nextIndex=" + path.getNextNodeIndex()) + ); + } + + @Inject(method = "createPath(Lnet/minecraft/core/BlockPos;I)Lnet/minecraft/world/level/pathfinder/Path;", at = @At("RETURN")) + private void antarchy$logCreatePath(BlockPos target, int accuracy, CallbackInfoReturnable cir) { + var mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return; + } + + Path path = cir.getReturnValue(); + LOGGER.debug( + "[Path] createPath(blockpos) inverted mob={} target={} accuracy={} result={}", + mob.getClass().getSimpleName(), + target, + accuracy, + path == null ? "null" : ("nodes=" + path.getNodeCount() + " nextIndex=" + path.getNextNodeIndex()) + ); + } + + @Inject(method = "tick", at = @At("HEAD")) + private void antarchy$logTick(CallbackInfo ci) { + var mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); + if (!AntarchyGravityApi.isGravityInverted(mob)) { + return; + } + + if (this.antarchy$debugTickCooldown-- > 0) { + return; + } + + this.antarchy$debugTickCooldown = 20; + Path path = ((PathNavigationAccessor) (Object) this).antarchy$getPath(); + LOGGER.debug( + "[Path] tick inverted mob={} pathPresent={} pathDone={}", + mob.getClass().getSimpleName(), + path != null, + path != null && path.isDone() + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerAttackMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerAttackMixin.java new file mode 100644 index 00000000..ff6d76d9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerAttackMixin.java @@ -0,0 +1,30 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Player.class) +/* + * Fixes player attack checks under inverted gravity. + */ +public abstract class PlayerAttackMixin { + @Inject(method = "attack", at = @At("HEAD"), cancellable = true) + private void antarchy$blockGravityGunMelee(Entity target, CallbackInfo ci) { + if (!AntarchySettings.gravityGunEnabled()) { + return; + } + + Player player = (Player) (Object) this; + ItemStack mainHand = player.getMainHandItem(); + if (mainHand.getItem() instanceof GravityGunItem) { + ci.cancel(); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerGravityMixin.java new file mode 100644 index 00000000..dd2d76f3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerGravityMixin.java @@ -0,0 +1,91 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(Player.class) +/* + * Handles player-only gravity sync and movement fixes. + */ +public abstract class PlayerGravityMixin { + @Redirect( + method = "travel", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;getLookAngle()Lnet/minecraft/world/phys/Vec3;")) + private Vec3 antarchy$rotateTravelLookAngle(Player player) { + Vec3 lookAngle = player.getLookAngle(); + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(player); + if (!direction.isInverted() || player.isFallFlying()) return lookAngle; + return AntarchyGravityRotationUtil.vecWorldToPlayer(lookAngle, direction); + } + + @WrapOperation(method = "travel", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/core/BlockPos;containing(DDD)Lnet/minecraft/core/BlockPos;")) + private BlockPos antarchy$fixTravelBlockPos(double x, double y, double z, + Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection((Entity) (Object) this); + if (!direction.isInverted()) return original.call(x, y, z); + Vec3 rotate = AntarchyGravityRotationUtil.vecPlayerToWorld( + new Vec3(0.0D, 0.9D, 0.0D), direction); + return original.call(x - rotate.x, y - rotate.y + 0.9D, z - rotate.z); + } + + @WrapOperation(method = "attack", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;getYRot()F", ordinal = 0)) + private float antarchy$fixAttackYaw0(Player attacker, Operation original, + @Local(argsOnly = true) Entity target) { + AntarchyGravityDirection targetDir = AntarchyGravityApi.getGravityDirection(target); + AntarchyGravityDirection attackerDir = AntarchyGravityApi.getGravityDirection(attacker); + if (targetDir == attackerDir) return original.call(attacker); + Vec2 worldRot = AntarchyGravityRotationUtil.rotPlayerToWorld( + original.call(attacker), attacker.getXRot(), attackerDir); + return AntarchyGravityRotationUtil.rotWorldToPlayer(worldRot.x, worldRot.y, targetDir).x; + } + + @WrapOperation(method = "attack", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;getYRot()F", ordinal = 1)) + private float antarchy$fixAttackYaw1(Player attacker, Operation original, + @Local(argsOnly = true) Entity target) { + AntarchyGravityDirection targetDir = AntarchyGravityApi.getGravityDirection(target); + AntarchyGravityDirection attackerDir = AntarchyGravityApi.getGravityDirection(attacker); + if (targetDir == attackerDir) return original.call(attacker); + Vec2 worldRot = AntarchyGravityRotationUtil.rotPlayerToWorld( + original.call(attacker), attacker.getXRot(), attackerDir); + return AntarchyGravityRotationUtil.rotWorldToPlayer(worldRot.x, worldRot.y, targetDir).x; + } + + @WrapOperation(method = "attack", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;getYRot()F", ordinal = 2)) + private float antarchy$fixAttackYaw2(Player attacker, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(attacker); + if (!direction.isInverted()) return original.call(attacker); + return AntarchyGravityRotationUtil.rotPlayerToWorld( + original.call(attacker), attacker.getXRot(), direction).x; + } + + @WrapOperation(method = "attack", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;getYRot()F", ordinal = 3)) + private float antarchy$fixAttackYaw3(Player attacker, Operation original) { + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(attacker); + if (!direction.isInverted()) return original.call(attacker); + return AntarchyGravityRotationUtil.rotPlayerToWorld( + original.call(attacker), attacker.getXRot(), direction).x; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerPoseFitMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerPoseFitMixin.java new file mode 100644 index 00000000..64040e22 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerPoseFitMixin.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Player.class) +/* + * Fixes pose checks for ceiling-walking players. + */ +public abstract class PlayerPoseFitMixin { + + @Inject(method = "canPlayerFitWithinBlocksAndEntitiesWhen", at = @At("HEAD"), cancellable = true) + private void antarchy$canFitPoseWhenInverted(Pose pose, CallbackInfoReturnable cir) { + Player player = (Player) (Object) this; + if (!AntarchyGravityApi.isGravityInverted(player)) { + return; + } + + EntityDimensions dimensions = player.getDimensions(pose); + Vec3 position = player.position(); + float halfWidth = dimensions.width() / 2.0F; + float height = dimensions.height(); + AABB invertedBox = new AABB( + position.x - halfWidth, position.y - height, position.z - halfWidth, + position.x + halfWidth, position.y, position.z + halfWidth + ); + cir.setReturnValue(player.level().noCollision(player, invertedBox)); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerSneakMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerSneakMixin.java new file mode 100644 index 00000000..d959395c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerSneakMixin.java @@ -0,0 +1,109 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.player.Abilities; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Player.class) +/* + * Makes sneaking and edge checks work upside down. + */ +public abstract class PlayerSneakMixin { + + private static final Logger LOGGER = LoggerFactory.getLogger("Antarchy/Sneak"); + + @Shadow @Final private Abilities abilities; + @Shadow protected abstract boolean isStayingOnGroundSurface(); + + @Inject(method = "maybeBackOffFromEdge", at = @At("HEAD"), cancellable = true) + private void antarchy$fixSneakEdge(Vec3 movement, MoverType type, CallbackInfoReturnable cir) { + Entity this_ = (Entity) (Object) this; + AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this_); + if (!direction.isInverted()) { + return; + } + float step = this_.maxUpStep(); + boolean isNearCeiling; + if (this_.onGround()) { + isNearCeiling = true; + } else { + float remaining = step - this_.fallDistance; + if (remaining > 0.0F) { + AABB bb = this_.getBoundingBox(); + isNearCeiling = !this_.level().noCollision(this_, + new AABB(bb.minX, bb.maxY, bb.minZ, + bb.maxX, bb.maxY + remaining + 1.0E-5, bb.maxZ)); + } else { + isNearCeiling = false; + } + } + + LOGGER.debug("[Sneak] inverted player maybeBackOffFromEdge: isNearCeiling={} flying={} stayOnGround={} type={}", + isNearCeiling, this.abilities.flying, this.isStayingOnGroundSurface(), type); + + if (!this.abilities.flying + && (type == MoverType.SELF || type == MoverType.PLAYER) + && this.isStayingOnGroundSurface() + && isNearCeiling) { + Vec3 playerMovement = AntarchyGravityRotationUtil.vecWorldToPlayer(movement, direction); + double d = playerMovement.x; + double e = playerMovement.z; + + LOGGER.debug("[Sneak] Edge check active: step={} d={} e={}", step, d, e); + while (d != 0.0D && canFallAtLeastInverted(this_, d, 0.0D, step, direction)) { + if (Math.abs(d) <= 0.05D) d = 0.0D; + else if (d > 0.0D) d -= 0.05D; + else d += 0.05D; + } + while (e != 0.0D && canFallAtLeastInverted(this_, 0.0D, e, step, direction)) { + if (Math.abs(e) <= 0.05D) e = 0.0D; + else if (e > 0.0D) e -= 0.05D; + else e += 0.05D; + } + while (d != 0.0D && e != 0.0D && canFallAtLeastInverted(this_, d, e, step, direction)) { + if (Math.abs(d) <= 0.05D) d = 0.0D; + else if (d > 0.0D) d -= 0.05D; + else d += 0.05D; + + if (Math.abs(e) <= 0.05D) e = 0.0D; + else if (e > 0.0D) e -= 0.05D; + else e += 0.05D; + } + + LOGGER.debug("[Sneak] Adjusted: x {} -> {} z {} -> {}", playerMovement.x, d, playerMovement.z, e); + cir.setReturnValue(AntarchyGravityRotationUtil.vecPlayerToWorld( + new Vec3(d, playerMovement.y, e), direction)); + + } else { + cir.setReturnValue(movement); + } + } + + + private static boolean canFallAtLeastInverted(Entity entity, + double dx, double dz, + float step, + AntarchyGravityDirection direction) { + Vec3 worldOffset = AntarchyGravityRotationUtil.vecPlayerToWorld( + new Vec3(dx, -step, dz), direction); + + AABB bb = entity.getBoundingBox(); + AABB probe = bb.move(worldOffset); + + return entity.level().noCollision(entity, probe); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ProjectileGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ProjectileGravityMixin.java new file mode 100644 index 00000000..f28eb9de --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ProjectileGravityMixin.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.phys.Vec2; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(Projectile.class) +/* + * Flips generic projectile gravity for inverted shooters. + */ +public abstract class ProjectileGravityMixin { +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerChunkCacheAccessor.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerChunkCacheAccessor.java new file mode 100644 index 00000000..f70ce183 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerChunkCacheAccessor.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import net.minecraft.server.level.ChunkMap; +import net.minecraft.server.level.ServerChunkCache; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ServerChunkCache.class) +/* + * Accessor for server chunk source internals used by gravity sync. + */ +public interface ServerChunkCacheAccessor { + @Accessor("chunkMap") + ChunkMap antarchy$getChunkMap(); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerEntityAccessor.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerEntityAccessor.java new file mode 100644 index 00000000..0b4f0515 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerEntityAccessor.java @@ -0,0 +1,14 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import net.minecraft.server.level.ServerEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ServerEntity.class) +/* + * Accessor for server entity tracking internals. + */ +public interface ServerEntityAccessor { + @Accessor("updateInterval") + void antarchy$setUpdateInterval(int updateInterval); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerGamePacketListenerMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerGamePacketListenerMixin.java new file mode 100644 index 00000000..80622200 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerGamePacketListenerMixin.java @@ -0,0 +1,82 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +@Mixin(ServerGamePacketListenerImpl.class) +/* + * Fixes move packet checks for inverted players. + */ +public abstract class ServerGamePacketListenerMixin { + + @Shadow + public ServerPlayer player; + + @Shadow + private double lastGoodX; + @Shadow + private double lastGoodY; + @Shadow + private double lastGoodZ; + + @ModifyVariable(method = "handleMovePlayer", + at = @At(value = "STORE", ordinal = 0), + ordinal = 0) + private boolean antarchy$fixHandleMovePlayerFlag(boolean originalFlag, + ServerboundMovePlayerPacket packet) { + AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this.player); + if (!gravity.isInverted()) { + return originalFlag; + } + double dx = packet.getX(this.player.getX()) - this.lastGoodX; + double dy = packet.getY(this.player.getY()) - this.lastGoodY; + double dz = packet.getZ(this.player.getZ()) - this.lastGoodZ; + Vec3 localVec = AntarchyGravityRotationUtil.vecWorldToPlayer(new Vec3(dx, dy, dz), gravity); + return localVec.y > 0.0; + } + + @ModifyArg(method = "handleMovePlayer", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/server/level/ServerPlayer;move(Lnet/minecraft/world/entity/MoverType;Lnet/minecraft/world/phys/Vec3;)V")) + private Vec3 antarchy$fixHandleMovePlayerVector(Vec3 worldDelta) { + AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this.player); + if (!gravity.isInverted()) { + return worldDelta; + } + return AntarchyGravityRotationUtil.vecWorldToPlayer(worldDelta, gravity); + } + + @ModifyArg(method = "handleMovePlayer", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/server/level/ServerPlayer;setOnGroundWithMovement(ZLnet/minecraft/world/phys/Vec3;)V"), + index = 0) + private boolean antarchy$fixHandleMovePlayerOnGround(boolean originalOnGround) { + AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this.player); + if (!gravity.isInverted()) { + return originalOnGround; + } + return originalOnGround || this.player.verticalCollisionBelow || this.player.verticalCollision; + } + + @ModifyArg(method = "handleMovePlayer", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/server/level/ServerPlayer;doCheckFallDamage(DDDZ)V"), + index = 3) + private boolean antarchy$fixHandleMovePlayerFallDamageOnGround(boolean originalOnGround) { + AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this.player); + if (!gravity.isInverted()) { + return originalOnGround; + } + return originalOnGround || this.player.verticalCollisionBelow || this.player.verticalCollision; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java new file mode 100644 index 00000000..28f44868 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java @@ -0,0 +1,116 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ServerPlayer.class) +/* + * Fixes server-side fall damage for inverted players. + */ +public abstract class ServerPlayerGravityMixin { + @Unique + private float antarchy$invertedFallDistance = 0.0F; + + @Inject(method = "doCheckFallDamage", at = @At("HEAD"), cancellable = true) + private void antarchy$cancelFallDamageInAntiwater(double x, double y, double z, boolean onGround, CallbackInfo ci) { + ServerPlayer self = (ServerPlayer) (Object) this; + AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(self); + if (!gravity.isInverted()) { + return; + } + if (!antarchy$isTouchingAntiwater(self)) { + return; + } + + self.fallDistance = 0.0F; + this.antarchy$invertedFallDistance = 0.0F; + ci.cancel(); + } + + @WrapOperation(method = "doCheckFallDamage", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;checkFallDamage(DZLnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;)V")) + private void antarchy$fixFallDamage(ServerPlayer instance, + double worldY, boolean onGround, + BlockState state, BlockPos pos, + Operation original, + @Local(ordinal = 0) double dx, + @Local(ordinal = 1) double dy, + @Local(ordinal = 2) double dz) { + ServerPlayer self = (ServerPlayer) (Object) this; + AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(self); + if (!gravity.isInverted()) { + this.antarchy$invertedFallDistance = 0.0F; + original.call(instance, worldY, onGround, state, pos); + return; + } + if (antarchy$isTouchingAntiwater(self) || antarchy$passedThroughAntiwater(self, dx, dy, dz)) { + self.fallDistance = 0.0F; + this.antarchy$invertedFallDistance = 0.0F; + original.call(instance, 0.0D, onGround, state, pos); + return; + } + Vec3 localVec = AntarchyGravityRotationUtil.vecWorldToPlayer(new Vec3(dx, dy, dz), gravity); + if (!onGround) { + if (localVec.y < 0.0) { + this.antarchy$invertedFallDistance += (float)(-localVec.y); + } else { + this.antarchy$invertedFallDistance = 0.0F; + } + } else if (this.antarchy$invertedFallDistance > self.fallDistance) { + // Vanilla damage uses fallDistance on landing; keep our own inverted accumulator + // in sync because the server pipeline is clearing the field before that point. + self.fallDistance = this.antarchy$invertedFallDistance; + } + original.call(instance, localVec.y, onGround, state, pos); + if (onGround) { + this.antarchy$invertedFallDistance = 0.0F; + } + } + + @Unique + private boolean antarchy$isTouchingAntiwater(ServerPlayer player) { + return antarchy$intersectsAntiwater(player, player.getBoundingBox().inflate(0.05D)); + } + + @Unique + private boolean antarchy$passedThroughAntiwater(ServerPlayer player, double dx, double dy, double dz) { + AABB sweptBox = player.getBoundingBox().expandTowards(-dx, -dy, -dz).inflate(0.05D); + return antarchy$intersectsAntiwater(player, sweptBox); + } + + @Unique + private boolean antarchy$intersectsAntiwater(ServerPlayer player, AABB box) { + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = player.level().getFluidState(cursor); + if (PotentNyxiteBlock.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ThrowableProjectileGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ThrowableProjectileGravityMixin.java new file mode 100644 index 00000000..2f637248 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ThrowableProjectileGravityMixin.java @@ -0,0 +1,19 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.ThrowableProjectile; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ThrowableProjectile.class) +/* + * Flips thrown projectile gravity for inverted shooters. + */ +public abstract class ThrowableProjectileGravityMixin { +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/TrackedEntityAccessor.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/TrackedEntityAccessor.java new file mode 100644 index 00000000..b5c258e9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/TrackedEntityAccessor.java @@ -0,0 +1,14 @@ +package com.craisinlord.antarchy.mixins.gravity; + +import net.minecraft.server.level.ServerEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(targets = "net.minecraft.server.level.ChunkMap$TrackedEntity") +/* + * Accessor for tracked entity internals used by gravity sync. + */ +public interface TrackedEntityAccessor { + @Accessor("serverEntity") + ServerEntity antarchy$getServerEntity(); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java new file mode 100644 index 00000000..be9f4f46 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java @@ -0,0 +1,136 @@ +package com.craisinlord.antarchy.mixins.gravity.client; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import net.minecraft.client.Camera; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; +import org.joml.Vector3f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Camera.class) +/* + * Fixes camera pos/rot for inverted gravity and the flip anim. + * Rotation is applied before move() so third-person pull-back uses the + * correct gravity-adjusted forward direction. First-person falls through + * to the TAIL inject since setup never calls move() in that case. + */ +public abstract class CameraGravityMixin { + @Shadow + private Entity entity; + + @Shadow + private Quaternionf rotation; + + @Shadow + private float eyeHeight; + + @Shadow + private float eyeHeightOld; + + private float antarchy$storedTickDelta; + private boolean antarchy$gravityApplied; + + @Shadow + protected abstract void setPosition(double x, double y, double z); + + @Shadow + protected abstract void move(float forward, float up, float left); + + @Inject(method = "setup", at = @At("HEAD")) + private void antarchy$storeTickDelta(BlockGetter level, Entity entity, boolean detached, boolean mirrored, float partialTick, CallbackInfo ci) { + this.antarchy$storedTickDelta = partialTick; + this.antarchy$gravityApplied = false; + } + + @Redirect( + method = "setup", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;setPosition(DDD)V") + ) + private void antarchy$moveGravityCameraAnchor( + Camera camera, + double x, + double y, + double z, + BlockGetter level, + Entity entity, + boolean detached, + boolean mirrored, + float partialTick + ) { + if (entity == null) { + this.setPosition(x, y, z); + return; + } + + float flipProgress = AntarchyGravityApi.getGravityFlipProgress(entity, partialTick); + if (!AntarchyGravityApi.isGravityInverted(entity) && flipProgress <= 0.0F) { + this.setPosition(x, y, z); + return; + } + + Vec3 interpolatedPos = entity.getPosition(partialTick); + float normalEyeHeight = this.eyeHeightOld + (this.eyeHeight - this.eyeHeightOld) * partialTick; + Vector3f eyeOffset = new Vector3f(0.0F, normalEyeHeight, 0.0F); + eyeOffset.rotate(AntarchyGravityRotationUtil.getWorldRotationQuaternion(entity, partialTick)); + this.setPosition( + interpolatedPos.x + eyeOffset.x(), + interpolatedPos.y + eyeOffset.y(), + interpolatedPos.z + eyeOffset.z() + ); + } + + /* + * Intercept the move() call inside setup so the pull-back direction + * already has gravity rotation applied. This covers detached (third-person) + * and sleeping cameras. Sets a flag so the TAIL inject doesn't double-apply. + */ + @Redirect( + method = "setup", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;move(FFF)V") + ) + private void antarchy$moveWithGravity( + Camera camera, + float forward, + float up, + float left, + BlockGetter level, + Entity entity, + boolean detached, + boolean mirrored, + float partialTick + ) { + antarchy$applyGravityRotationOnce(); + this.move(forward, up, left); + } + + /* + * First-person fallthrough: setup never calls move(), so gravity rotation + * hasn't been applied yet when we reach the end of the method. + */ + @Inject(method = "setup", at = @At("TAIL")) + private void antarchy$applyGravityAtTail(BlockGetter level, Entity entity, boolean detached, boolean mirrored, float partialTick, CallbackInfo ci) { + antarchy$applyGravityRotationOnce(); + } + + private void antarchy$applyGravityRotationOnce() { + if (this.antarchy$gravityApplied) { + return; + } + if (this.entity == null) { + return; + } + if (!AntarchyGravityApi.isGravityInverted(this.entity) && AntarchyGravityApi.getGravityFlipProgress(this.entity, this.antarchy$storedTickDelta) <= 0.0F) { + return; + } + this.rotation.premul(AntarchyGravityRotationUtil.getCameraRotationQuaternion(this.entity, this.antarchy$storedTickDelta)); + this.antarchy$gravityApplied = true; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/ClientPacketListenerGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/ClientPacketListenerGravityMixin.java new file mode 100644 index 00000000..9afe4f83 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/ClientPacketListenerGravityMixin.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.mixins.gravity.client; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(ClientPacketListener.class) +/* + * Keeps client gravity state in sync from entity updates. + */ +public abstract class ClientPacketListenerGravityMixin { + + @WrapOperation(method = "handleExplosion", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;", + ordinal = 0)) + private Vec3 antarchy$fixExplosionKnockback(Vec3 current, + double x, double y, double z, + Operation original) { + if (Minecraft.getInstance().player == null) { + return original.call(current, x, y, z); + } + AntarchyGravityDirection gravity = + AntarchyGravityApi.getGravityDirection(Minecraft.getInstance().player); + if (!gravity.isInverted()) { + return original.call(current, x, y, z); + } + Vec3 local = AntarchyGravityRotationUtil.vecWorldToPlayer(new Vec3(x, y, z), gravity); + return original.call(current, local.x, local.y, local.z); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/EntityRenderDispatcherGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/EntityRenderDispatcherGravityMixin.java new file mode 100644 index 00000000..aedd87d7 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/EntityRenderDispatcherGravityMixin.java @@ -0,0 +1,90 @@ +package com.craisinlord.antarchy.mixins.gravity.client; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(EntityRenderDispatcher.class) +/* + * Rotates entity rendering for inverted gravity. + */ +public abstract class EntityRenderDispatcherGravityMixin { + + @Inject( + method = "render", + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;translate(DDD)V", ordinal = 0, shift = At.Shift.AFTER) + ) + private void antarchy$rotateEntityRenderPose( + E entity, + double x, + double y, + double z, + float entityYaw, + float partialTick, + PoseStack poseStack, + MultiBufferSource bufferSource, + int packedLight, + CallbackInfo ci + ) { + float flipProgress = AntarchyGravityApi.getGravityFlipProgress(entity, partialTick); + if (!AntarchyGravityApi.isGravityInverted(entity) && flipProgress <= 0.0F) { + return; + } + + poseStack.mulPose(AntarchyGravityRotationUtil.getCameraRotationQuaternion(entity, partialTick)); + } + + @ModifyVariable( + method = "renderHitbox", + at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/world/phys/AABB;move(DDD)Lnet/minecraft/world/phys/AABB;", ordinal = 0), + ordinal = 0 + ) + private static AABB antarchy$rotateRenderedHitbox( + AABB box, + PoseStack poseStack, + VertexConsumer vertexConsumer, + Entity entity, + float red, + float green, + float blue, + float partialTick + ) { + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return box; + } + + return AntarchyGravityRotationUtil.boxWorldToPlayer( + box, + AntarchyGravityApi.getGravityDirection(entity) + ); + } + + @WrapOperation( + method = "renderHitbox", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getViewVector(F)Lnet/minecraft/world/phys/Vec3;", ordinal = 0) + ) + private static Vec3 antarchy$rotateRenderedHitboxViewVector(Entity entity, float partialTick, Operation original) { + Vec3 viewVector = original.call(entity, partialTick); + if (!AntarchyGravityApi.isGravityInverted(entity)) { + return viewVector; + } + + return AntarchyGravityRotationUtil.vecWorldToPlayer( + viewVector, + AntarchyGravityApi.getGravityDirection(entity) + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/FallingBlockRendererBlockEntityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/FallingBlockRendererBlockEntityMixin.java new file mode 100644 index 00000000..468f665e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/FallingBlockRendererBlockEntityMixin.java @@ -0,0 +1,72 @@ +package com.craisinlord.antarchy.mixins.gravity.client; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.entity.FallingBlockRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FallingBlockRenderer.class) +/* + * Keeps falling block render data lined up with carried state. + */ +public abstract class FallingBlockRendererBlockEntityMixin { + @Inject( + method = "render(Lnet/minecraft/world/entity/item/FallingBlockEntity;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", + at = @At("HEAD"), + cancellable = true + ) + private void antarchy$renderAnimatedBlockEntity( + FallingBlockEntity entity, + float entityYaw, + float partialTick, + PoseStack poseStack, + MultiBufferSource bufferSource, + int packedLight, + CallbackInfo ci + ) { + BlockState state = entity.getBlockState(); + if (state.getRenderShape() != RenderShape.ENTITYBLOCK_ANIMATED || !(state.getBlock() instanceof EntityBlock entityBlock)) { + return; + } + + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + return; + } + + BlockEntity blockEntity = entityBlock.newBlockEntity(BlockPos.ZERO, state); + if (blockEntity == null) { + return; + } + + CompoundTag blockData = entity.blockData; + if (blockData != null && !blockData.isEmpty()) { + CompoundTag renderTag = blockData.copy(); + renderTag.remove("x"); + renderTag.remove("y"); + renderTag.remove("z"); + blockEntity.loadWithComponents(renderTag, minecraft.level.registryAccess()); + } + + blockEntity.setLevel(minecraft.level); + BlockEntityRenderDispatcher dispatcher = minecraft.getBlockEntityRenderDispatcher(); + poseStack.pushPose(); + poseStack.translate(-0.5D, 0.0D, -0.5D); + dispatcher.renderItem(blockEntity, poseStack, bufferSource, packedLight, OverlayTexture.NO_OVERLAY); + poseStack.popPose(); + ci.cancel(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/multipart/EntityMultipartLifecycleMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/multipart/EntityMultipartLifecycleMixin.java new file mode 100644 index 00000000..0b83f10c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/multipart/EntityMultipartLifecycleMixin.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.mixins.multipart; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.entity.EntityInLevelCallback; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +/* + * Ticks and cleans up multipart child entities with their parent. + */ +public abstract class EntityMultipartLifecycleMixin { + @Inject(method = "setLevelCallback", at = @At("TAIL")) + private void antarchy$spawnMultipartParts(EntityInLevelCallback entityInLevelCallback, CallbackInfo ci) { + if ((Object) this instanceof MultipartEntityOwner owner + && entityInLevelCallback != EntityInLevelCallback.NULL + && owner.antarchy$getMultipartParts() == null) { + owner.antarchy$spawnMultipartParts(); + } + } + + @Inject(method = "tick", at = @At("TAIL")) + private void antarchy$syncMultipartParts(CallbackInfo ci) { + if ((Object) this instanceof MultipartEntityOwner owner) { + owner.antarchy$syncMultipartParts(); + } + } + + @Inject(method = "setRemoved", at = @At("TAIL")) + private void antarchy$discardMultipartParts(Entity.RemovalReason removalReason, CallbackInfo ci) { + if ((Object) this instanceof MultipartEntityOwner owner) { + owner.antarchy$discardMultipartParts(); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/stellaris/DimensionOxygenManagerMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/stellaris/DimensionOxygenManagerMixin.java new file mode 100644 index 00000000..42846ba0 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/stellaris/DimensionOxygenManagerMixin.java @@ -0,0 +1,63 @@ +package com.craisinlord.antarchy.mixins.stellaris; + +import com.st0x0ef.stellaris.common.oxygen.DimensionOxygenManager; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(value = DimensionOxygenManager.class, priority = 2000) +/* + * Tweaks Stellaris oxygen checks for Antarchy dimensions. + */ +public abstract class DimensionOxygenManagerMixin { + @Unique + private static final TagKey ANTARCHY_MARK_39_ARMOR = TagKey.create( + Registries.ITEM, + ResourceLocation.fromNamespaceAndPath("marvel", "iron_man_mark_39_armor") + ); + + @Unique + private static final ResourceLocation ANTARCHY_HELMET_OPEN_ID = + ResourceLocation.fromNamespaceAndPath("marvel", "helmet_open"); + + @Inject(method = "breath", at = @At("HEAD"), cancellable = true) + private void antarchy$allowClosedMark39SuitToBreathe( + LivingEntity entity, + CallbackInfoReturnable cir + ) { + if (antarchy$hasArmor(entity)) { + cir.setReturnValue(true); + } + } + + @Unique + private static boolean antarchy$hasArmor(LivingEntity entity) { + ItemStack helmet = entity.getItemBySlot(EquipmentSlot.HEAD); + boolean hasHelmet = helmet.is(ANTARCHY_MARK_39_ARMOR) && !antarchy$isHelmetOpen(helmet); + boolean hasChestplate = entity.getItemBySlot(EquipmentSlot.CHEST).is(ANTARCHY_MARK_39_ARMOR); + boolean hasLeggings = entity.getItemBySlot(EquipmentSlot.LEGS).is(ANTARCHY_MARK_39_ARMOR); + boolean hasBoots = entity.getItemBySlot(EquipmentSlot.FEET).is(ANTARCHY_MARK_39_ARMOR); + return hasHelmet && hasChestplate && hasLeggings && hasBoots; + } + + @Unique + @SuppressWarnings("unchecked") + private static boolean antarchy$isHelmetOpen(ItemStack helmet) { + DataComponentType componentType = BuiltInRegistries.DATA_COMPONENT_TYPE.get(ANTARCHY_HELMET_OPEN_ID); + if (componentType == null) { + return false; + } + return Boolean.TRUE.equals(helmet.get((DataComponentType) componentType)); + } +} diff --git a/common/src/main/resources/antarchy-common.mixins.json b/common/src/main/resources/antarchy-common.mixins.json new file mode 100644 index 00000000..3c4e6fa9 --- /dev/null +++ b/common/src/main/resources/antarchy-common.mixins.json @@ -0,0 +1,64 @@ +{ + "required": true, + "package": "com.craisinlord.antarchy.mixins", + "plugin": "com.craisinlord.antarchy.mixins.AntarchyMixinPlugin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "BloodglassMixin", + "DreamSandLowGravityMixin", + "DreamFireBlockMixin", + "FireVisualBaseFireBlockMixin", + "FireVisualEntityMixin", + "GlowVinesUnderLeavesMixin", + "multipart.EntityMultipartLifecycleMixin", + "ServerPlayerGameModeMixin", + "TorchflowerBlockStateMixin", + "gravity.AbstractArrowGravityMixin", + "gravity.BucketItemGravityMixin", + "gravity.CrossbowItemGravityMixin", + "gravity.DirectionFacingMixin", + "gravity.EntityCollisionContextMixin", + "gravity.EntityGravityFrameMixin", + "gravity.EntityGravityMixin", + "gravity.EntityMoveMixin", + "gravity.ExplosionGravityMixin", + "gravity.FallingBlockEntityBlockDataMixin", + "gravity.FireworkRocketGravityMixin", + "gravity.GroundPathNavigationMixin", + "gravity.LivingEntityMixin", + "gravity.MobHurtMixin", + "gravity.PlayerAttackMixin", + "gravity.PlayerGravityMixin", + "gravity.PlayerPoseFitMixin", + "gravity.PlayerSneakMixin", + "gravity.PathNavigationDebugMixin", + "gravity.PathNavigationAccessor", + "gravity.ProjectileGravityMixin", + "gravity.ServerGamePacketListenerMixin", + "gravity.ServerPlayerGravityMixin", + "gravity.ThrowableProjectileGravityMixin", + "gravity.ChunkMapAccessor", + "gravity.ServerChunkCacheAccessor", + "gravity.ServerEntityAccessor", + "gravity.TrackedEntityAccessor", + "stellaris.DimensionOxygenManagerMixin" + ], + "client": [ + "client.ElytraModelAccessor", + "client.LightningBoltRendererMixin", + "client.ParalyzedMouseTurnMixin", + "client.ScreenEffectRendererFireVisualMixin", + "client.SplashManagerMixin", + "client.WolfRendererGrimMixin", + "client.ElythiaSkyMixin", + "client.ThoraxisFogMixin", + "gravity.client.CameraGravityMixin", + "gravity.client.ClientPacketListenerGravityMixin", + "gravity.client.EntityRenderDispatcherGravityMixin", + "gravity.client.FallingBlockRendererBlockEntityMixin" + ], + "injectors": { + "defaultRequire": 1 + }, + "minVersion": "0.8" +} diff --git a/common/src/main/resources/assets/antarchy/animations/ant.animation.json b/common/src/main/resources/assets/antarchy/animations/ant.animation.json new file mode 100644 index 00000000..a266f40c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/ant.animation.json @@ -0,0 +1,2128 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-15.84766, -19.58991, 40.25298] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-15.84766, -19.58991, 40.25298] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [14.15251, 17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [14.15251, 17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-15.84766, 19.58991, -40.25298] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-15.84766, 19.58991, -40.25298] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [14.15251, -17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [14.15251, -17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.17875, 0.10358, 1.61888] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.17875, -0.10358, -1.61888] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "dance": { + "loop": true, + "animation_length": 1.5, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-13.85813, -24.26239, 5.93679] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-13.85813, -24.26239, 5.93679] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-24.00312, 18.43745, -15.27944] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-24.00312, 18.43745, -15.27944] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "thorax": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -10, 0] + }, + "0.5": { + "vector": [0, -10, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.5": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [9.72631, 0.45349, -2.99327] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [9.72631, 0.45349, -2.99327] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [12.5, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [12.5, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-15.84766, -19.58991, 40.25298] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-15.84766, -19.58991, 40.25298] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-15.84766, -19.58991, 40.25298] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [14.15251, 17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [14.15251, 17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [14.15251, 17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-15.84766, 19.58991, -40.25298] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-15.84766, 19.58991, -40.25298] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-15.84766, 19.58991, -40.25298] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [14.15251, -17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [14.15251, -17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [14.15251, -17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "ant": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_eye": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.25": { + "vector": [1, 0.4, 1] + }, + "0.5": { + "vector": [1, 0.4, 1] + }, + "0.75": { + "vector": [1, 1, 1] + } + } + }, + "l_eye": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.25": { + "vector": [1, 0.4, 1] + }, + "0.5": { + "vector": [1, 0.4, 1] + }, + "0.75": { + "vector": [1, 1, 1] + } + } + }, + "l_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-0.61003, 22.29711, -3.09472] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-0.47532, -19.82169, 2.71994] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.5, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "thorax": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, 0, 0] + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-25.16955, 1.29256, -14.94548] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [31.33144, 34.12398, 47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [31.33144, 34.12398, 47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-14.15251, -17.67415, 62.21128] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [5.74672, 4.98753, 33.20458] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [31.33144, 34.12398, 47.33883] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-33.59794, -35.79744, 48.63781] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.49325, 15.74419, 39.23412] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-33.59794, -35.79744, 48.63781] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [-30.04912, -35.07869, 44.72041] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [29.82269, 35.55522, 45.05671] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-30.04912, -35.07869, 44.72041] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-14.15251, 17.67415, -62.21128] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [5.74672, -4.98753, -33.20458] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [31.33144, -34.12398, -47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [31.33144, -34.12398, -47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-14.15251, 17.67415, -62.21128] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [12.49325, -15.74419, -39.23412] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-33.59794, 35.79744, -48.63781] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.49325, -15.74419, -39.23412] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [29.82269, -35.55522, -45.05671] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-30.04912, 35.07869, -44.72041] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [29.82269, -35.55522, -45.05671] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "ant": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_eye": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.5": { + "vector": [1, 1, 1] + } + } + }, + "l_eye": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.5": { + "vector": [1, 1, 1] + } + } + }, + "l_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-25.16955, -1.29256, 14.94548] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "loop": true, + "animation_length": 1, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "thorax": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [19.92514, 0.26438, -1.96682] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [19.92514, 0.26438, -1.96682] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-14.15251, -17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-14.15251, -17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-15.84766, -19.58991, 40.25298] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-33.59794, -35.79744, 48.63781] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-33.59794, -35.79744, 48.63781] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-15.84766, -19.58991, 40.25298] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [14.15251, 17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [31.33144, 34.12398, 47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [31.33144, 34.12398, 47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [31.33144, 34.12398, 47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [31.33144, 34.12398, 47.33883] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [14.15251, 17.67415, 39.71128] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-14.15251, 17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-14.15251, 17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-15.84766, 19.58991, -40.25298] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-33.59794, 35.79744, -48.63781] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-33.59794, 35.79744, -48.63781] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-15.84766, 19.58991, -40.25298] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg5": { + "rotation": { + "0.0": { + "post": { + "vector": [14.15251, -17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [31.33144, -34.12398, -47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [31.33144, -34.12398, -47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [31.33144, -34.12398, -47.33883] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [31.33144, -34.12398, -47.33883] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [14.15251, -17.67415, -39.71128] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "ant": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_eye": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [1, 0.4, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 0.4, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_eye": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [1, 0.4, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 0.4, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-0.27472, 52.98677, 1.40178] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.27472, 52.98677, 1.40178] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-2.2516, -39.58992, 6.25038] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.2516, -39.58992, 6.25038] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-0.17995, -12.39135, 1.6575] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_mandibule": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-0.27472, -52.98677, -1.40178] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.27472, -52.98677, -1.40178] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-2.2516, 39.58992, -6.25038] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.2516, 39.58992, -6.25038] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-0.06397, 7.43547, -0.98448] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/apple_cow.animation.json b/common/src/main/resources/assets/antarchy/animations/apple_cow.animation.json new file mode 100644 index 00000000..fe45ad3b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/apple_cow.animation.json @@ -0,0 +1,2166 @@ +{ + "format_version": "1.8.0", + "animations": { + "quirk": { + "animation_length": 1.75, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [27.5, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [32.5, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-24.72908, 0, -10.59671] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [2, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-2, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "branch": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "apple": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leaves": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [1.1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1.1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyes": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "sleep": { + "loop": true, + "animation_length": 2.25, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [2.16541, -1.2497, 29.97638] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [2.16541, -1.2497, 29.97638] + }, + "lerp_mode": "catmullrom" + }, + "1.9167": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.9, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.2, 1.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [1.2, 1.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + } + } + }, + "branch": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + } + } + }, + "apple": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyes_sleep": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.75, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [3.35621, -0.74359, 12.47822] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -0.68, 0.35] + }, + "0.4167": { + "vector": [0, 3, -2] + }, + "0.5": { + "vector": [0, 0.08, -1.41] + }, + "0.625": { + "vector": [0, -0.17, -0.82] + }, + "0.75": { + "vector": [0, -0.68, 0.35] + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 3, -2] + }, + "0.125": { + "vector": [0, 0.07111, -2.64932] + }, + "0.25": { + "vector": [0, 0.07, 1.35] + }, + "0.3333": { + "vector": [0, 0.07, 0.35] + }, + "0.4167": { + "vector": [0, -0.68, 0.35] + }, + "0.5": { + "vector": [0, 1.32, 0.35] + }, + "0.75": { + "vector": [0, 3, -2] + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 3, -2] + }, + "0.125": { + "vector": [0, 0.07111, -2.64932] + }, + "0.25": { + "vector": [0, 0.07, 1.35] + }, + "0.3333": { + "vector": [0, 0.07, 0.35] + }, + "0.4167": { + "vector": [0, -0.68, 0.35] + }, + "0.5": { + "vector": [0, 1.32, 0.35] + }, + "0.75": { + "vector": [0, 3, -2] + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -0.68, 0.35] + }, + "0.4167": { + "vector": [0, 3, -2] + }, + "0.5": { + "vector": [0, 0.08, -1.41] + }, + "0.625": { + "vector": [0, -0.17, -0.82] + }, + "0.75": { + "vector": [0, -0.68, 0.35] + } + } + }, + "right_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, -45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "branch": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "apple": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 2, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "branch": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "apple": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "wake up": { + "animation_length": 1.5, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [30.5405, -15.66318, -50.93688] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-17.39481, -16.65815, 52.6836] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_ear": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "branch": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 11.01] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "apple": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 35.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leaves": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "1.0": { + "pre": { + "vector": [1, 1, 1] + }, + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyes": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.75": { + "pre": { + "vector": [0, 0, -1] + }, + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "vector": [0, 0, 0] + } + } + }, + "eyes_sleep": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "start sleep": { + "animation_length": 1.375, + "bones": { + "root": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, -1, 0] + }, + "0.25": { + "vector": [-1, -1, 0] + }, + "0.2917": { + "vector": [0.08, -1, 0] + }, + "0.3333": { + "vector": [-0.93, -1, 0] + }, + "0.375": { + "vector": [0.16, -1, 0] + }, + "0.4167": { + "vector": [-0.86, -1, 0] + }, + "0.4583": { + "vector": [0.25, -1, 0] + }, + "0.5": { + "vector": [-0.79, -1, 0] + }, + "0.5417": { + "vector": [0.34, -1, 0] + }, + "0.5833": { + "vector": [-0.73, -1, 0] + }, + "0.625": { + "vector": [0.45, -1, 0] + }, + "0.6667": { + "vector": [-0.7, -1, 0] + }, + "0.7083": { + "vector": [0.65, -1, 0] + }, + "0.75": { + "vector": [0, -1, 0] + }, + "1.0": { + "pre": { + "vector": [0, -9, 0] + }, + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -8, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.7083": { + "vector": [-72.92, 0, 0] + }, + "0.75": { + "vector": [-37.5, 0, 0] + }, + "1.0": { + "pre": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "pre": { + "vector": [0, -4.99524, 0.2181] + }, + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "1.0": { + "pre": { + "vector": [1, 1, 1] + }, + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [27.5, 0, 0] + }, + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -2, 0] + }, + "1.0417": { + "vector": [0, -1, 0] + }, + "1.0833": { + "vector": [0, -2, 0] + } + }, + "scale": { + "1.0": { + "pre": { + "vector": [1, 1, 1] + }, + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 12.5] + }, + "0.75": { + "vector": [0, 0, 12.5] + }, + "1.0": { + "pre": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0.21644, 0.9763, 0] + }, + "0.75": { + "vector": [0.21644, 0.9763, 0] + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, -12.5] + }, + "0.75": { + "vector": [0, 0, -12.5] + }, + "1.0": { + "pre": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [-0.21644, 0.9763, 0] + }, + "0.75": { + "vector": [-0.21644, 0.9763, 0] + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 30] + }, + "0.75": { + "vector": [0, 0, 30] + }, + "1.0": { + "pre": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [0, 2, 0] + }, + "0.1667": { + "vector": [0, 0, 0] + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, -30] + }, + "0.75": { + "vector": [0, 0, -30] + }, + "1.0": { + "pre": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + } + } + }, + "branch": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, -35] + }, + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + } + } + }, + "apple": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, 32.5] + }, + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leaves": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + } + } + }, + "eyes": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -0.05814, -0.99831] + }, + "0.7083": { + "vector": [0, -0.05814, -0.99831] + }, + "0.75": { + "vector": [0, 0, 0] + } + } + }, + "eyes_sleep": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/baby_apple_cow.animation.json b/common/src/main/resources/assets/antarchy/animations/baby_apple_cow.animation.json new file mode 100644 index 00000000..ef7fdeec --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/baby_apple_cow.animation.json @@ -0,0 +1,1800 @@ +{ + "format_version": "1.8.0", + "animations": { + "quirk": { + "animation_length": 1.75, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [27.5, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [32.5, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-24.72908, 0, -10.59671] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [2, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-2, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leaves": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [1.1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1.1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyes": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "sleep": { + "loop": true, + "animation_length": 2.25, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, -6, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, -6, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [2.16541, -1.2497, 29.97638] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [2.16541, -1.2497, 29.97638] + }, + "lerp_mode": "catmullrom" + }, + "1.9167": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.9, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.2, 1.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [1.2, 1.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyes_sleep": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.75, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [3.35621, -0.74359, 12.47822] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -0.68, 0.35] + }, + "0.4167": { + "vector": [0, 3, -2] + }, + "0.5": { + "vector": [0, 0.08, -1.41] + }, + "0.625": { + "vector": [0, -0.17, -0.82] + }, + "0.75": { + "vector": [0, -0.68, 0.35] + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 3, -2] + }, + "0.125": { + "vector": [0, 0.07111, -2.64932] + }, + "0.25": { + "vector": [0, 0.07, 1.35] + }, + "0.3333": { + "vector": [0, 0.07, 0.35] + }, + "0.4167": { + "vector": [0, -0.68, 0.35] + }, + "0.5": { + "vector": [0, 1.32, 0.35] + }, + "0.75": { + "vector": [0, 3, -2] + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 3, -2] + }, + "0.125": { + "vector": [0, 0.07111, -2.64932] + }, + "0.25": { + "vector": [0, 0.07, 1.35] + }, + "0.3333": { + "vector": [0, 0.07, 0.35] + }, + "0.4167": { + "vector": [0, -0.68, 0.35] + }, + "0.5": { + "vector": [0, 1.32, 0.35] + }, + "0.75": { + "vector": [0, 3, -2] + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -0.68, 0.35] + }, + "0.4167": { + "vector": [0, 3, -2] + }, + "0.5": { + "vector": [0, 0.08, -1.41] + }, + "0.625": { + "vector": [0, -0.17, -0.82] + }, + "0.75": { + "vector": [0, -0.68, 0.35] + } + } + }, + "right_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, -45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 2, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "wake up": { + "animation_length": 1.5, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [30.5405, -15.66318, -50.93688] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-17.39481, -16.65815, 52.6836] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_ear": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leaves": { + "rotation": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "1.0": { + "pre": { + "vector": [1, 1, 1] + }, + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyes": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.75": { + "pre": { + "vector": [0, 0, -1] + }, + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "vector": [0, 0, 0] + } + } + }, + "eyes_sleep": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "start sleep": { + "animation_length": 1.375, + "bones": { + "root": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, -1, 0] + }, + "0.25": { + "vector": [-1, -1, 0] + }, + "0.2917": { + "vector": [0.08, -1, 0] + }, + "0.3333": { + "vector": [-0.93, -1, 0] + }, + "0.375": { + "vector": [0.16, -1, 0] + }, + "0.4167": { + "vector": [-0.86, -1, 0] + }, + "0.4583": { + "vector": [0.25, -1, 0] + }, + "0.5": { + "vector": [-0.79, -1, 0] + }, + "0.5417": { + "vector": [0.34, -1, 0] + }, + "0.5833": { + "vector": [-0.73, -1, 0] + }, + "0.625": { + "vector": [0.45, -1, 0] + }, + "0.6667": { + "vector": [-0.7, -1, 0] + }, + "0.7083": { + "vector": [0.65, -1, 0] + }, + "0.75": { + "vector": [0, -1, 0] + }, + "1.0": { + "pre": { + "vector": [0, -9, 0] + }, + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -8, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.7083": { + "vector": [-72.92, 0, 0] + }, + "0.75": { + "vector": [-37.5, 0, 0] + }, + "1.0": { + "pre": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "post": { + "vector": [1.76833, -1.76749, 44.97272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "pre": { + "vector": [0, -4.99524, 0.2181] + }, + "post": { + "vector": [0, -4.99524, 0.2181] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "1.0": { + "pre": { + "vector": [1, 1, 1] + }, + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [27.5, 0, 0] + }, + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -2, 0] + }, + "1.0417": { + "vector": [0, -1, 0] + }, + "1.0833": { + "vector": [0, -2, 0] + } + }, + "scale": { + "1.0": { + "pre": { + "vector": [1, 1, 1] + }, + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leg_back_r": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 12.5] + }, + "0.75": { + "vector": [0, 0, 12.5] + }, + "1.0": { + "pre": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "post": { + "vector": [42.23278, 6.21687, 85.50272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0.21644, 0.9763, 0] + }, + "0.75": { + "vector": [0.21644, 0.9763, 0] + } + } + }, + "leg_back_l": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, -12.5] + }, + "0.75": { + "vector": [0, 0, -12.5] + }, + "1.0": { + "pre": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "post": { + "vector": [42.23278, -6.21687, -85.50272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [-0.21644, 0.9763, 0] + }, + "0.75": { + "vector": [-0.21644, 0.9763, 0] + } + } + }, + "leg_front_r": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 30] + }, + "0.75": { + "vector": [0, 0, 30] + }, + "1.0": { + "pre": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "post": { + "vector": [-22.32648, -2.86313, 83.06512] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [0, 2, 0] + }, + "0.1667": { + "vector": [0, 0, 0] + } + } + }, + "leg_front_l": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, -30] + }, + "0.75": { + "vector": [0, 0, -30] + }, + "1.0": { + "pre": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "post": { + "vector": [-22.32648, 2.86313, -83.06512] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leaves": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + } + } + }, + "eyes": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -0.05814, -0.99831] + }, + "0.7083": { + "vector": [0, -0.05814, -0.99831] + }, + "0.75": { + "vector": [0, 0, 0] + } + } + }, + "eyes_sleep": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/basilisk.animation.json b/common/src/main/resources/assets/antarchy/animations/basilisk.animation.json new file mode 100644 index 00000000..3471fa60 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/basilisk.animation.json @@ -0,0 +1,2308 @@ +{ + "format_version": "1.8.0", + "animations": { + "walk": { + "loop": true, + "animation_length": 1, + "sound_effects": { + "0.0": { + "effect": "antarchy:basilisk_slither_loop|0.32|1.0" + } + }, + "bones": { + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "group2": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 7.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_5": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue_2": { + "rotation": { + "0.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue_3": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "animation_length": 1, + "bones": { + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_5": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-105, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 6, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 1, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -3, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -1, 0.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 2.5, + "sound_effects": { + "0.0": { + "effect": "antarchy:basilisk_idle_loop|0.24|1.0" + } + }, + "bones": { + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "group2": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 23] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 80, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 90, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 80, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-8, 0, -5] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-8, 0, -5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 52.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, 0, -5] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-3, 0, -5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 65, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 80, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 65, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-4, 0, -6] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-4, 0, -6] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 42.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 65, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 42.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-1, 0, -4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_5": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [53.287, 59.6064, 22.8142] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-20, 45, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-2, 0, -3] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, -4, 2] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, -3, 4] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "death": { + "loop": "hold_on_last_frame", + "animation_length": 3.0952, + "bones": { + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8452": { + "post": { + "vector": [52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.9762": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [10, 7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.9762": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, -65, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [27.5, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.9762": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, -70, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [11.7502, -2.8842, 3.7366] + }, + "lerp_mode": "catmullrom" + }, + "2.9762": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_5": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [0, 52.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, -62.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [25, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.9762": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3571": { + "post": { + "vector": [-70, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [-70.4378, -4.2453, 11.7679] + }, + "lerp_mode": "catmullrom" + }, + "1.0714": { + "post": { + "vector": [-46.7866, -6.3948, -0.6001] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [-89.6887, -11.484, 24.9746] + }, + "lerp_mode": "catmullrom" + }, + "1.5476": { + "post": { + "vector": [-45.2729, 15.4367, -27.9312] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [-52.5, -27.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [-87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3571": { + "post": { + "vector": [-0.34, 2.28808, 4.31877] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [-1.52147, 4.07903, 2.459] + }, + "lerp_mode": "catmullrom" + }, + "1.5476": { + "post": { + "vector": [-2.88663, 0.2555, 2.58686] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [0, 3.08438, 1.86724] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4881": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8452": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4881": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8452": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4881": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8452": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.381": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.119": { + "post": { + "vector": [-42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3571": { + "post": { + "vector": [-42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7143": { + "post": { + "vector": [-29.9131, 1.7814, 29.5004] + }, + "lerp_mode": "catmullrom" + }, + "1.0714": { + "post": { + "vector": [14.79, -1.0809, 14.9173] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [12.8439, 8.3261, -15.0771] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [-27.3482, 4.3792, -0.7278] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [-27.3482, 4.3792, -0.7278] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [10.1518, 4.3792, -0.7278] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [2.6518, 4.3792, -0.7278] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [-42.2219, 46.4728, -16.4664] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0714": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [84.5628, 7.3555, -6.7934] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [55, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [-0.31713, 2.96984, 0.28192] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [0, 5.29431, -3.27661] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0714": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [50.8949, 4.4, 13.2722] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [-0.00001, 2.21183, 2.02677] + }, + "lerp_mode": "catmullrom" + }, + "3.0952": { + "post": { + "vector": [0, 2.21, 0.03] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3571": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4286": { + "post": { + "vector": [-32.2977, 16.4834, 27.8104] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8571": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0357": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} diff --git a/common/src/main/resources/assets/antarchy/animations/bed_bug.animation.json b/common/src/main/resources/assets/antarchy/animations/bed_bug.animation.json new file mode 100644 index 00000000..ac52f88b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/bed_bug.animation.json @@ -0,0 +1,1089 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 2, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_mandible": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.48715, 36.91205, 4.02438] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_mandible": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.48715, -36.91205, -4.02438] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1.54184, -37.80005, 1.94898] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -37.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_mandible2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.16604, -32.15093, -2.3378] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1.54184, 37.80005, -1.94898] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -35, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 37.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.5, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_mandible": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_mandible": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -60, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-5.85463, -13.83447, 23.21088] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -60, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [9.00717, 20.70481, 24.14867] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [9.00717, 20.70481, 24.14867] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -32.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [4.8493, 11.53486, 22.99008] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -32.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_mandible2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10.68709, 24.11827, -24.78948] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 60, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [9.00717, -20.70481, -24.14867] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [8.09013, -21.33556, -21.23405] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [4.8493, -11.53486, -22.99008] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 32.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bed_bug": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "bite": { + "animation_length": 0.875, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "vector": [-32.5, 0, 0] + }, + "0.25": { + "vector": [-32.5, 0, 0] + }, + "0.3333": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_mandible": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [16.56417, 81.89916, 20.62663] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [16.56417, 81.89916, 20.62663] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_mandible": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [16.56417, -81.89916, -20.62663] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [16.56417, -81.89916, -20.62663] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [4.61409, 4.62735, 56.76231] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [4.61409, 4.62735, 14.26231] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-49.77599, -44.23765, 51.40746] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-49.77599, -44.23765, 51.40746] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -37.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [10, 0, 0] + }, + "0.25": { + "vector": [10, 0, 0] + }, + "0.375": { + "vector": [0, 0, 0] + }, + "0.875": { + "vector": [0, 0, 0] + } + } + }, + "R_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [28.18445, 32.40875, 14.48921] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [28.18445, 32.40875, 14.48921] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_mandible2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [16.56417, -81.89916, -20.62663] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [16.56417, -81.89916, -20.62663] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [4.61409, -4.62735, -56.76231] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [4.61409, -4.62735, -14.26231] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-49.77599, 44.23765, -51.40746] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-49.77599, 44.23765, -51.40746] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 37.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg2": { + "rotation": { + "0.125": { + "vector": [10, 0, 0] + }, + "0.25": { + "vector": [10, 0, 0] + } + } + }, + "L_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [28.18445, -32.40875, -14.48921] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [28.18445, -32.40875, -14.48921] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -35, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bed_bug": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [-12.5, 0, 0] + }, + "0.25": { + "vector": [-12.5, 0, 0] + }, + "0.375": { + "vector": [-5, 0, 0] + }, + "0.875": { + "vector": [0, 0, 0] + } + } + }, + "mouth": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 2.1] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1, 2.1] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/bomber.animation.json b/common/src/main/resources/assets/antarchy/animations/bomber.animation.json new file mode 100644 index 00000000..5571a40d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/bomber.animation.json @@ -0,0 +1,316 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 1, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.25, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.5, + "bones": { + "root": { + "rotation": { + "0.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [6.5662, 1.1551, -9.9337] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [6.5662, -1.1551, 9.9337] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-13.13, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [13.75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -0.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 1, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 1, -4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [13.75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-13.13, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 1, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -0.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 1, 3] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "explode": { + "loop": "hold_on_last_frame", + "animation_length": 1.25, + "bones": { + "root": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.9583": { + "vector": [1, 1, 1] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "head": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.25, 1.25, 1.25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1.25, 1.25, 1.25] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/brutalfly.animation.json b/common/src/main/resources/assets/antarchy/animations/brutalfly.animation.json new file mode 100644 index 00000000..51e5813f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/brutalfly.animation.json @@ -0,0 +1,8005 @@ +{ + "format_version": "1.8.0", + "animations": { + "animation": { + "loop": true, + "bones": { + "left_wing": { + "rotation": { + "vector": [0, -42.5, 0] + }, + "position": { + "vector": [-7, 1, 0] + } + }, + "left_wing_back": { + "rotation": { + "vector": [0, 5, 0] + }, + "position": { + "vector": [-7, 0, -1] + } + }, + "right_wing_back": { + "rotation": { + "vector": [0, -5, 0] + }, + "position": { + "vector": [7, 0, -1] + } + }, + "right_wing": { + "rotation": { + "vector": [0, 42.5, 0] + }, + "position": { + "vector": [7, 1, 0] + } + }, + "coocon": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "animation2": { + "loop": true, + "bones": { + "left_mouth": { + "rotation": { + "vector": [46.0484, -19.0376, -6.246] + } + }, + "left_wings": { + "rotation": { + "vector": [-11.4283, -1.652, -15.5795] + } + }, + "left_wing": { + "rotation": { + "vector": [-12.6916, -42.7546, -12.3162] + }, + "position": { + "vector": [-5.35538, -2.57788, -6.64286] + } + }, + "left_wing_2": { + "rotation": { + "vector": [0, 0, -25] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "left_wing_back": { + "rotation": { + "vector": [11.0196, -12.4268, 16.7925] + }, + "position": { + "vector": [-0.84485, -0.52369, -5.16152] + } + }, + "left_wing_back_2": { + "rotation": { + "vector": [0, 0, -25] + } + }, + "bone": { + "rotation": { + "vector": [-17.5, 0, 0] + }, + "position": { + "vector": [0, 16, 0] + } + }, + "left_leg_1": { + "rotation": { + "vector": [-42.89, -43.1971, -4.8833] + }, + "position": { + "vector": [0, 0.95372, -0.30071] + } + }, + "left_knee_1": { + "rotation": { + "vector": [-5, 0, 0] + } + }, + "head": { + "rotation": { + "vector": [35, 0, 0] + }, + "position": { + "vector": [0, -1.25089, 4.85529] + } + }, + "upper_body": { + "rotation": { + "vector": [-17.5, 0, 0] + } + }, + "waist": { + "rotation": { + "vector": [-45, 0, 0] + }, + "position": { + "vector": [0, 0.3473, -1.96962] + } + }, + "tail_2": { + "rotation": { + "vector": [-30, 0, 0] + }, + "position": { + "vector": [0, 0.13397, -2.23205] + } + }, + "tongue": { + "rotation": { + "vector": [-10, 0, 0] + }, + "position": { + "vector": [0, -1.3321, -11.20403] + } + }, + "tongue_2": { + "rotation": { + "vector": [-107.5, 0, 0] + } + }, + "right_mouth": { + "rotation": { + "vector": [46.0484, 19.0376, 6.246] + } + }, + "left_knee_down_1": { + "rotation": { + "vector": [52.5, 0, 0] + } + }, + "left_leg_2": { + "rotation": { + "vector": [-32.4866, -19.5688, -10.0797] + } + }, + "left_knee_2": { + "rotation": { + "vector": [-30, 0, 0] + } + }, + "left_knee_down_2": { + "rotation": { + "vector": [60, 0, 0] + } + }, + "left_leg_3": { + "rotation": { + "vector": [-12.2905, -48.1434, -17.538] + } + }, + "left_knee_3": { + "rotation": { + "vector": [7.5, 0, 0] + } + }, + "left_knee_down_3": { + "rotation": { + "vector": [32.5, 0, 0] + } + }, + "right_leg_3": { + "rotation": { + "vector": [-12.2905, 48.1434, 17.538] + } + }, + "right_knee_3": { + "rotation": { + "vector": [7.5, 0, 0] + } + }, + "right_knee_down_3": { + "rotation": { + "vector": [32.5, 0, 0] + } + }, + "right_leg_2": { + "rotation": { + "vector": [-32.4866, 19.5688, 10.0797] + } + }, + "right_knee_2": { + "rotation": { + "vector": [-30, 0, 0] + } + }, + "right_knee_down_2": { + "rotation": { + "vector": [60, 0, 0] + } + }, + "right_leg_1": { + "rotation": { + "vector": [-42.89, 43.1971, 4.8833] + }, + "position": { + "vector": [0, 0.95372, -0.30071] + } + }, + "right_knee_1": { + "rotation": { + "vector": [-5, 0, 0] + } + }, + "right_knee_down_1": { + "rotation": { + "vector": [52.5, 0, 0] + } + }, + "right_wings": { + "rotation": { + "vector": [-11.4283, 1.652, 15.5795] + } + }, + "right_wing_back": { + "rotation": { + "vector": [11.0196, 12.4268, -16.7925] + }, + "position": { + "vector": [0.84485, -0.52369, -5.16152] + } + }, + "right_wing_back_2": { + "rotation": { + "vector": [0, 0, 25] + } + }, + "right_wing": { + "rotation": { + "vector": [-12.6916, 42.7546, 12.3162] + }, + "position": { + "vector": [5.35538, -2.57788, -6.64286] + } + }, + "right_wing_2": { + "rotation": { + "vector": [0, 0, 25] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "coocon": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 2.5, + "bones": { + "left_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-7.5071, 2.4786, -0.3265] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5513, -4.7895, -1.3991] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [19.4827, -7.2884, 1.8444] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-15.5173, -7.2884, 1.8444] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wings": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -27.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -32.5, 40] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -32.5, 40] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-15.7865, -41.5394, -32.9127] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [-15.7865, -41.5394, -32.9127] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, -27.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [-6, 2, -4] + }, + "1.0833": { + "vector": [-5, 5, -4] + }, + "2.0": { + "vector": [-5.65, -1.94, -4] + }, + "2.5": { + "vector": [-6, 2, -4] + } + } + }, + "left_wing_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -5, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -5, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "left_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -0.7, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [19.4827, 7.2884, -1.8444] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-15.5173, 7.2884, -1.8444] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-7.5071, -2.4786, 0.3265] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5513, 4.7895, 1.3991] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -0.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -0.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -0.7, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wings": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "right_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 5, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 5, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 27.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 32.5, -40] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 32.5, -40] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-15.7865, 41.5394, 32.9127] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [-15.7865, 41.5394, 32.9127] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 27.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [6, 2, -4] + }, + "1.0833": { + "vector": [5, 5, -4] + }, + "2.0": { + "vector": [5.65, -1.94, -4] + }, + "2.5": { + "vector": [6, 2, -4] + } + } + }, + "right_wing_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "coocon": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 0.25, + "bones": { + "left_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5.3769, -1.9541, 1.6043] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -27.5, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -42.5, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -27.5, -72.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-3, 4, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-3, -3, -3] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5.9258, -6.02, 49.7365] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -10, -72.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [2.1, 0, -5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5.3769, 1.9541, -1.6043] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5.9258, 6.02, -49.7365] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 10, 72.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-2.1, 0, -5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 27.5, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 42.5, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 27.5, 72.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [3, 4, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [3, -3, -3] + }, + "lerp_mode": "catmullrom" + } + } + }, + "coocon": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "spit": { + "animation_length": 1, + "bones": { + "left_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [76.1241, -18.7716, -20.0403] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.2, 0.6] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -0.2, -1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [54.3451, -14.1052, -5.4386] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-94.9842, -1.2393, 43.0381] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -27.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [17.486, -20.6549, -92.8151] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-45, 12.5, 30] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -27.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-4, -3, 5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-3, -3, -3] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.2466, -7.7125, -78.1484] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-19.3332, 33.359, 50.1163] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-1.8, 7, -3.9] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-20, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [-32.8328, -32.4744, -1.3446] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "left_knee_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-35, 0, 0] + }, + "0.5833": { + "vector": [35, 0, 0] + }, + "0.7917": { + "vector": [-17.5, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-19.9992, 0.1448, -0.0287] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0.0008, 0.1448, -0.0287] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-34.9858, 0.2492, 0.4504] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [17.5123, -0.2055, 0.4719] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 9, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 11, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 5, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-57.9672, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0.14, -5.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -2, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [1.375, 1.3703, 1.1203] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [1.1493, 1.1392, 1.0396] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [1.375, 1.3703, 1.1203] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1.3, 1.3, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0.7, 0.9, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [54.3451, 14.1052, 5.4386] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-94.9842, 1.2393, -43.0381] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [76.1241, 18.7716, 20.0403] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.2, 0.6] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -0.2, -1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [55, 0, 0] + }, + "0.5833": { + "vector": [-55, 0, 0] + }, + "0.7917": { + "vector": [40, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "left_leg_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-20, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [-32.8328, -32.4744, -1.3446] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "left_knee_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-35, 0, 0] + }, + "0.5833": { + "vector": [35, 0, 0] + }, + "0.7917": { + "vector": [-17.5, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "left_knee_down_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [55, 0, 0] + }, + "0.5833": { + "vector": [7.5, 0, 0] + }, + "0.7917": { + "vector": [40, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "left_leg_3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-20, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [-32.8328, -32.4744, -1.3446] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "left_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [55, 0, 0] + }, + "0.5833": { + "vector": [-40.5825, 1.7402, -12.7753] + }, + "0.7917": { + "vector": [40, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_leg_3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-20, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [-32.8328, 32.4744, 1.3446] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [55, 0, 0] + }, + "0.5833": { + "vector": [-40.5825, -1.7402, 12.7753] + }, + "0.7917": { + "vector": [40, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_leg_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-20, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [-32.8328, 32.4744, 1.3446] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_knee_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-35, 0, 0] + }, + "0.5833": { + "vector": [35, 0, 0] + }, + "0.7917": { + "vector": [-17.5, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_knee_down_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [55, 0, 0] + }, + "0.5833": { + "vector": [7.5, 0, 0] + }, + "0.7917": { + "vector": [40, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_leg_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-20, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [-32.8328, 32.4744, 1.3446] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_knee_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [-35, 0, 0] + }, + "0.5833": { + "vector": [35, 0, 0] + }, + "0.7917": { + "vector": [-17.5, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_knee_down_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [55, 0, 0] + }, + "0.5833": { + "vector": [-55, 0, 0] + }, + "0.7917": { + "vector": [40, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "right_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.2466, 7.7125, 78.1484] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-19.3332, -33.359, -50.1163] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [1.8, 7, -3.9] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 27.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [17.486, 20.6549, 92.8151] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-45, -12.5, -30] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 27.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [4, -3, 5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [3, -3, -3] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "coocon": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "swipe": { + "animation_length": 1.5, + "bones": { + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-22.5, 20, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-22.5, 20, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [11.8886, 25.449, 35.127] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-17.6686, 30.2307, -34.394] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-17.6686, 30.2307, -34.394] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5.81566, 2.4786, -0.25392] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-4.56227, -0.90212, -1.83626] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-4.56227, -0.90212, -1.83626] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-19.7379, -21.6126, -6.6797] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-19.7379, -21.6126, -6.6797] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -47.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -47.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -87.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -55, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [3.35392, 0, -15.58439] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1.35583, 0, -15.49715] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [7.9755, -19.8217, -2.72] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.9755, -19.8217, -2.72] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.68404, -0.24531, -1.86331] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-55, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-26.9436, -23.2938, -1.4557] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10.5564, -23.2938, -1.4557] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.4, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.4, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-30.2891, -12.212, -3.326] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [21.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-26.9436, 23.2938, 1.4557] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10.5564, 23.2938, 1.4557] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.4, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.4, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-30.2891, 12.212, 3.326] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [21.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-55, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-19.7379, 21.6126, 6.6797] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-19.7379, 21.6126, 6.6797] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [11.8886, -25.449, -35.127] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-17.6686, -30.2307, 34.394] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-17.6686, -30.2307, 34.394] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.81566, 2.4786, -0.25392] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [4.56227, -0.90212, -1.83626] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [4.56227, -0.90212, -1.83626] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-22.5, -20, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-22.5, -20, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "coocon": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "death": { + "loop": "hold_on_last_frame", + "animation_length": 2.4583, + "bones": { + "left_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [46.7815, -20.2935, -9.9292] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [49.2815, -20.2935, -9.9292] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [6.7815, -20.2935, -9.9292] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [49.2815, -20.2935, -9.9292] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [49.2815, -20.2935, -9.9292] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [16.7815, -20.2935, -9.9292] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [41.7815, -20.2935, -9.9292] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-27.5552, -13.7314, 22.2484] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [40.9188, -6.4441, 2.6866] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [10.9188, -6.4441, 2.6866] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-54.0812, -6.4441, 2.6866] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-81.5812, -6.4441, 2.6866] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [46.3529, -11.3214, 1.5029] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-9.3517, -52.4964, -61.2045] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-12.6286, -28.1471, 48.974] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-16.5811, -38.656, -13.1445] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-14.7247, -42.2349, -31.3574] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-13.861, -25.1761, 36.3353] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [22.7717, -30.6498, -54.5342] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [30.6653, -21.5627, -74.0252] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [4.116, -27.6856, 12.3063] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-7, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-5.7, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-5.7, -3, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-5.7, 3, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -62.5] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, 0, 35] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [-3.9248, -6.3399, -43.7069] + }, + "lerp_mode": "catmullrom" + }, + "2.3333": { + "post": { + "vector": [-1.0631, -7.1075, -61.4211] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [7.6899, -7.9854, 20.238] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-3, -2, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-2, 1, -2] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [-2, -1.4, -2] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-3, -0.4, -2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 26, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 27, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 23, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, 33, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-5.1283, -34.1848, -26.6955] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-35.1283, -34.1848, -26.6955] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-44.8025, -34.4323, 5.9748] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-37.2297, -24.8593, -3.0084] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-33.6244, -18.2422, -108.3416] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-31.0808, -18.822, -95.5995] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, -8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.9324, 5.9749, 3.3229] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-17.9324, 5.9749, 3.3229] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [62.0676, 5.9749, 3.3229] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 1.77402, 0.9235] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -0.09808, 5.83013] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, -0.22326, 7.23883] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, -0.09808, 5.83013] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, 6.90192, -1.16987] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, -2.13504, 2.90545] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 2.21183, 2.02677] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, 13, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 6.0792, 0.20829] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 2.06558, -3.37949] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 2.06558, -3.37949] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, 13.06558, -3.37949] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, -24.84252, -2.53358] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0.76537, -1.84776] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-27.5552, 13.7314, -22.2484] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [40.9188, 6.4441, -2.6866] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [10.9188, 6.4441, -2.6866] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-54.0812, 6.4441, -2.6866] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-81.5812, 6.4441, -2.6866] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [46.3529, 11.3214, -1.5029] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [46.7815, 20.2935, 9.9292] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [49.2815, 20.2935, 9.9292] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [6.7815, 20.2935, 9.9292] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [49.2815, 20.2935, 9.9292] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [49.2815, 20.2935, 9.9292] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [16.7815, 20.2935, 9.9292] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [41.7815, 20.2935, 9.9292] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-32.5, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-45, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-35.2954, -26.5019, 1.8304] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-26.9163, -30.3768, -77.4984] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-19.9081, -41.4616, -59.3331] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [55, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [89.5813, -14.5739, -29.4716] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-20.5033, -27.0913, -3.2154] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-35.5033, -27.0913, -3.2154] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-25.7395, -30.1601, 3.5736] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-16.3652, -21.8284, -68.1997] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-2.9793, -34.8186, -60.8632] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [70, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [40.4311, -13.9133, -20.6115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-20.5033, 27.0913, 3.2154] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-35.5033, 27.0913, 3.2154] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-25.7395, 30.1601, -3.5736] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-16.3652, 21.8284, 68.1997] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-2.9793, 34.8186, 60.8632] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [70, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [40.4311, 13.9133, 20.6115] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-32.5, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-45, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-35.2954, 26.5019, -1.8304] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-26.9163, 30.3768, 77.4984] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-19.9081, 41.4616, 59.3331] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [55, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [89.5813, 14.5739, 29.4716] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-5.1283, 34.1848, 26.6955] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-35.1283, 34.1848, 26.6955] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-44.8025, 34.4323, -5.9748] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-37.2297, 24.8593, 3.0084] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-33.6244, 18.2422, 108.3416] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-31.0808, 18.822, 95.5995] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, -8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.9324, -5.9749, -3.3229] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-17.9324, -5.9749, -3.3229] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [62.0676, -5.9749, -3.3229] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 62.5] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [-3.9248, 6.3399, 43.7069] + }, + "lerp_mode": "catmullrom" + }, + "2.3333": { + "post": { + "vector": [-1.0631, 7.1075, 61.4211] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [7.6899, 7.9854, -20.238] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [3, -2, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [2, 1, -2] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [2, -1.4, -2] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [3, -0.4, -2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, 35] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-9.3517, 52.4964, 61.2045] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-12.6286, 28.1471, -48.974] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-16.5811, 38.656, 13.1445] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-14.7247, 42.2349, 31.3574] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-13.861, 25.1761, -36.3353] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [22.7717, 30.6498, 54.5342] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [30.6653, 21.5627, 74.0252] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [4.116, 27.6856, -12.3063] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [7, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [5.7, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [5.7, -3, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [5.7, 3, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "coocon": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "Coocon": { + "loop": "hold_on_last_frame", + "bones": { + "left_wings": { + "rotation": { + "vector": [0, 0, 75] + }, + "scale": { + "vector": [0.8, 1, 1] + } + }, + "bone": { + "rotation": { + "vector": [90, 0, 0] + }, + "position": { + "vector": [0, 0, -9.2] + } + }, + "Left_legs": { + "position": { + "vector": [0, 4, 0] + } + }, + "Right_legs": { + "position": { + "vector": [0, 4, 0] + } + }, + "right_wings": { + "rotation": { + "vector": [0, 0, -75] + }, + "scale": { + "vector": [0.8, 1, 1] + } + }, + "coocon": { + "rotation": { + "vector": [90, 0, 0] + } + } + } + }, + "Coocon_hatch": { + "loop": "hold_on_last_frame", + "animation_length": 2, + "bones": { + "left_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [53.8299, -18.0669, -8.7254] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wings": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 75] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [0.8, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, -27.5, 0] + }, + "post": { + "vector": [0, -27.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [-6, 2, -4] + }, + "post": { + "vector": [-6, 2, -4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_2": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, -15, 0] + }, + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, -7] + }, + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing_back_2": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [105, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [70, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [70, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.28814, -10.15738] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-27.9532, -24.7894, -3.4323] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, -0.96738, 2.65785] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [53.8299, 18.0669, 8.7254] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-55, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-18.7639, -28.6721, -9.2895] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-16.375, -13.8461, -19.3652] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Left_legs": { + "position": { + "0.0": { + "post": { + "vector": [0, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Right_legs": { + "position": { + "0.0": { + "post": { + "vector": [0, 4, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-16.375, 13.8461, 19.3652] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-18.7639, 28.6721, 9.2895] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-27.9532, 24.7894, 3.4323] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_knee_down_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-55, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wings": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -75] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 35] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [0.8, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, 15, 0] + }, + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [0, 0, -7] + }, + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_back_2": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, 27.5, 0] + }, + "post": { + "vector": [0, 27.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "2.0": { + "pre": { + "vector": [6, 2, -4] + }, + "post": { + "vector": [6, 2, -4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing_2": { + "rotation": { + "2.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "coocon": { + "rotation": { + "0.0": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [105, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-40, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 6.36396, -6.36396] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1.22, 1.08] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_coocon": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [5.1303, -14.09539, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 0.2, 0.2] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0.2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_coocon": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [-5.1303, -14.09539, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 0.2, 0.2] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0.2] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Coocon_hit": { + "loop": "hold_on_last_frame", + "animation_length": 1.5, + "bones": { + "left_wings": { + "rotation": { + "vector": [0, 0, 75] + }, + "scale": { + "vector": [0.8, 1, 1] + } + }, + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -5.67, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, -14, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -14, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, -14, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -14, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 0.8] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1, 0.8] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [1, 1, 0.8] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 0.8] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [1, 1, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [1, 1, 0.8] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Left_legs": { + "position": { + "vector": [0, 4, 0] + } + }, + "Right_legs": { + "position": { + "vector": [0, 4, 0] + } + }, + "right_wings": { + "rotation": { + "vector": [0, 0, -75] + }, + "scale": { + "vector": [0.8, 1, 1] + } + }, + "coocon": { + "rotation": { + "vector": [90, 0, 0] + } + }, + "left_coocon": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [1, 1, 0.8] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [1, 1, 0.8225] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1, 1.0045] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [1, 1, 1.0045] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1.0045] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_coocon": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [1, 1, 0.8] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [1, 1, 0.8225] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1, 1.0045] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [1, 1, 1.0045] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1.0045] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [1, 1, 0.9045] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Coocon_idle": { + "loop": true, + "animation_length": 3.5, + "bones": { + "left_wings": { + "rotation": { + "vector": [0, 0, 75] + }, + "scale": { + "vector": [0.8, 1, 1] + } + }, + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, 0, -9.2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Left_legs": { + "position": { + "vector": [0, 4, 0] + } + }, + "Right_legs": { + "position": { + "vector": [0, 4, 0] + } + }, + "right_wings": { + "rotation": { + "vector": [0, 0, -75] + }, + "scale": { + "vector": [0.8, 1, 1] + } + }, + "coocon": { + "rotation": { + "0.0": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/butterfly.animation.json b/common/src/main/resources/assets/antarchy/animations/butterfly.animation.json new file mode 100644 index 00000000..d5c6958c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/butterfly.animation.json @@ -0,0 +1,1420 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 2.5, + "bones": { + "cocoon": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 41.48] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, 0, 26.48] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, 0, 31.48] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 0, 26.48] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 31.48] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [0, 0, 26.48] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -41.48] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, 0, -26.48] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, 0, -31.48] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 0, -26.48] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -31.48] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [0, 0, -26.48] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "legs": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0.3, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -0.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_bpdy": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, -0.3, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [2.3815, -1.2162, -0.6207] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, -0.3, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0.1, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 0.25, + "bones": { + "cocoon": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 65] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.4, 0.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0.7, 0.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.4, 0.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 65] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.4, 0.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-0.7, 0.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-0.4, 0.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "position": { + "0.0": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "legs": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "coocon": { + "loop": true, + "animation_length": 2.5, + "bones": { + "cocoon": { + "rotation": { + "0.0": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 19.6, -6] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -0.6] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -0.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "coocon2": { + "loop": "hold_on_last_frame", + "animation_length": 3, + "bones": { + "cocoon": { + "rotation": { + "0.0": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [102.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [33.05, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-73.18, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-54.65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 15.72842, -9.37107] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 16.8409, -7.62824] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 10.02886, -5.12609] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 12.23588, -3.87895] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, 15.55664, -7.34411] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0.6225, 0.5297, 0.6244] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.6, 0.5, 0.7] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.4, 0.2, 0.3] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -71.67] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.5833": { + "post": { + "vector": [0, 0, 29.09] + }, + "lerp_mode": "catmullrom" + }, + "2.6667": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 29.09] + }, + "lerp_mode": "catmullrom" + }, + "2.8333": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.9583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 71.67] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.5833": { + "post": { + "vector": [0, 0, -29.09] + }, + "lerp_mode": "catmullrom" + }, + "2.6667": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -29.09] + }, + "lerp_mode": "catmullrom" + }, + "2.8333": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.9583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [105, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-77.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 8.89341, 3.27516] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 15.88322, -3.25861] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 13.78356, 1.0237] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 14, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 14, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.5833": { + "post": { + "vector": [0, 13, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.6667": { + "post": { + "vector": [0, 14, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 13, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.8333": { + "post": { + "vector": [0, 14, 1] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [9.06, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.34, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "eat": { + "animation_length": 1.7083, + "bones": { + "cocoon": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_bpdy": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "legs": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0.1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0.1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongue": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [64.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [64.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [64.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -1, -0.8] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -1, -0.8] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, -1, -0.8] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.5, 0.5, 0.66] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.5, 0.5, 0.72] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.5, 0.5, 0.66] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.5, 0.5, 0.72] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0.5, 0.5, 0.66] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/caterpillar.animation.json b/common/src/main/resources/assets/antarchy/animations/caterpillar.animation.json new file mode 100644 index 00000000..ba5f650e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/caterpillar.animation.json @@ -0,0 +1,1540 @@ +{ + "format_version": "1.8.0", + "animations": { + "walk": { + "loop": true, + "animation_length": 0.8333, + "sound_effects": { + "0.0": { + "effect": "antarchy:caterpillar_crawl|0.28|1.0" + } + }, + "bones": { + "cocoon": { + "scale": { + "vector": [0, 0, 0] + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0.04] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.6417, 7.151, -2.2671] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [14.7547, -2.5186, -4.8217] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0.3, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.6417, -7.151, 2.2671] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [14.7547, 2.5186, 4.8217] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 2.5, + "bones": { + "cocoon": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [4.9637, 0.3457, -0.2386] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 0.4] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0.2, 0.5] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 0.3] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [7.5284, 4.9571, 0.6542] + }, + "lerp_mode": "catmullrom" + }, + "2.0417": { + "post": { + "vector": [-7.5571, 9.9142, -0.005] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 0.2] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0.2, -0.1] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_antenna": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [7.5284, -4.9571, -0.6542] + }, + "lerp_mode": "catmullrom" + }, + "2.0417": { + "post": { + "vector": [-7.5571, -9.9142, 0.005] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "eat": { + "animation_length": 2.125, + "bones": { + "cocoon": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [4.9158, -0.8407, -0.3971] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [4.9158, -0.8407, -0.3971] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [4.9158, -0.8407, -0.3971] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0.5] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 1, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 1, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Coocon": { + "loop": "hold_on_last_frame", + "animation_length": 2, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 5, 8.1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [9.78, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [59.61, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 3.23, -6.3] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 6.43, -1.7] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 16.08, -2.81] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0.9664, 0.7064, 0.4064] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 5] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 2, 5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "upper_body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 1, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 7, 2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 3, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 9.6, -5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 1, -2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 1, -3] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-105, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [-60.73, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0.7, -1.6] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 1.58, -2.41] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -2.9, -5.5] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 1.13, -7.26] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 1.9, 1.1] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-2, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-12, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [4.09, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 1.5, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "coocon": { + "loop": true, + "animation_length": 2.5, + "bones": { + "bone": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon": { + "rotation": { + "0.0": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 19.6, -6] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 20, -6] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -0.6] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cocoon_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -0.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} diff --git a/common/src/main/resources/assets/antarchy/animations/cloud_shark.animation.json b/common/src/main/resources/assets/antarchy/animations/cloud_shark.animation.json new file mode 100644 index 00000000..a71ef427 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/cloud_shark.animation.json @@ -0,0 +1,1702 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 8, + "sound_effects": { + "0.0": { + "effect": "antarchy:cloud_shark_idle|0.55|1.0" + } + }, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "5.0833": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "5.5833": { + "post": { + "vector": [9.05152, -14.71181, -2.33362] + }, + "lerp_mode": "catmullrom" + }, + "5.9167": { + "post": { + "vector": [8.59652, 23.13213, 3.14923] + }, + "lerp_mode": "catmullrom" + }, + "6.2083": { + "post": { + "vector": [12.67376, -21.70208, -2.75583] + }, + "lerp_mode": "catmullrom" + }, + "6.5": { + "post": { + "vector": [7.93597, -1.62811, -0.02639] + }, + "lerp_mode": "catmullrom" + }, + "7.0": { + "post": { + "vector": [7.00225, -12.68164, -1.3867] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.3333": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_fin": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 7.5, -20] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_fin": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -7.5, 20] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "6.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 21, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "6.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "shark": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 5] + }, + "lerp_mode": "catmullrom" + }, + "5.125": { + "post": { + "vector": [0, 0, 8.34] + }, + "lerp_mode": "catmullrom" + }, + "5.5417": { + "post": { + "vector": [0, 0, -9.4] + }, + "lerp_mode": "catmullrom" + }, + "6.0": { + "post": { + "vector": [0, 0, 7.28] + }, + "lerp_mode": "catmullrom" + }, + "6.4583": { + "post": { + "vector": [0, 0, -20.48] + }, + "lerp_mode": "catmullrom" + }, + "7.125": { + "post": { + "vector": [0, 0, 10.84] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "halo": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "8.0": { + "post": { + "vector": [0, -360, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "swim": { + "loop": true, + "animation_length": 4, + "sound_effects": { + "0.0": { + "effect": "antarchy:cloud_shark_fly|0.7|1.0" + } + }, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-24.99904, 0.15373, -0.04445] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.1667": { + "post": { + "vector": [20.04, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_fin": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 10, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "3.9583": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_fin": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -10, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "3.9583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5417": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "shark": { + "rotation": { + "0.0": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [27.5, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [39.87576, -0.221, 0.70095] + }, + "lerp_mode": "catmullrom" + }, + "3.2083": { + "post": { + "vector": [8.10446, 0, -10.81866] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0, -7, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [0, -3.07, -23] + }, + "lerp_mode": "catmullrom" + }, + "3.0833": { + "post": { + "vector": [0, 1.32, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -82.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 82.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 70] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -70] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "halo": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -360, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "animation_length": 1, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-23.90662, 11.91236, 24.96938] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_fin": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [18.89595, 26.94622, 37.0662] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [18.89595, 26.94622, 37.0662] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_fin": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [18.89595, -26.94622, -37.0662] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [18.89595, -26.94622, -37.0662] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5417": { + "vector": [0.03742, 9.00972, 6.31059] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [27.22644, -22.52101, -11.14843] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [29.87229, -22.01609, -12.15123] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "shark": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "vector": [15.00835, -0.0566, -0.1949] + }, + "0.2917": { + "vector": [15.00835, -0.0566, -0.1949] + }, + "0.5": { + "vector": [35.00835, -0.0566, -0.1949] + }, + "0.5833": { + "vector": [34.06837, -8.59433, 12.1853] + }, + "1.0": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -4, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, -4, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-1, -4, -9] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0.44, -4, -10.06] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-1, -4, -9] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -4, -9] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, -16, -9] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -9, -9] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-28.48347, 25.49671, 55.92684] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-28.48347, 25.49671, 55.92684] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-26.25382, -27.79687, -25.89482] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-26.25382, -27.79687, -25.89482] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.40559, 30.89218, 68.73521] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-22.40559, 30.89218, 68.73521] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-28.48347, -25.49671, -55.92684] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-28.48347, -25.49671, -55.92684] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-26.25382, 27.79687, 25.89482] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-26.25382, 27.79687, 25.89482] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.40559, -30.89218, -68.73521] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-22.40559, -30.89218, -68.73521] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-76.5498, 41.70738, -43.45893] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-76.5498, 41.70738, -43.45893] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-78.99034, -24.59477, -57.12934] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-78.99034, -24.59477, -57.12934] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [72.25889, 53.70751, 113.03177] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [72.25889, 53.70751, 113.03177] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_wing4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-76.5498, -41.70738, 43.45893] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-76.5498, -41.70738, 43.45893] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-78.99034, 24.59477, 57.12934] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-78.99034, 24.59477, 57.12934] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [72.25889, -53.70751, -113.03177] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [72.25889, -53.70751, -113.03177] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_wing4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "halo": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} diff --git a/common/src/main/resources/assets/antarchy/animations/easter_bunny.animation.json b/common/src/main/resources/assets/antarchy/animations/easter_bunny.animation.json new file mode 100644 index 00000000..8f3db664 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/easter_bunny.animation.json @@ -0,0 +1,1195 @@ +{ + "format_version": "1.8.0", + "animations": { + "lay": { + "loop": true, + "animation_length": 2, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [92.53, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [92.53, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [13.31, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [13.31, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [65, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-99.1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-99.1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-32.5, 0, 25.03798] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-32.5, 0, 25.03798] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [13.22026, 23.73452, 145.28169] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [13.22026, 23.73452, 145.28169] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-32.5, 0, -25.03798] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-32.5, 0, -25.03798] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [13.22026, -23.73452, -145.28169] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [13.22026, -23.73452, -145.28169] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_paw": { + "rotation": { + "0.0": { + "post": { + "vector": [130, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [126.723, 17.37215, -21.76766] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [126.723, 17.37215, -21.76766] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [129.50738, -19.73601, 21.52773] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [15.97495, -24.23221, 26.1391] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [129.50738, -19.73601, 21.52773] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [148.81061, 15.09492, -8.95891] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [148.81061, 15.09492, -8.95891] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_paw": { + "rotation": { + "0.0": { + "post": { + "vector": [130, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [126.723, -17.37215, 21.76766] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [126.723, -17.37215, 21.76766] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [129.50738, 19.73601, -21.52773] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [15.97495, 24.23221, -26.1391] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [129.50738, 19.73601, -21.52773] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [148.81061, -15.09492, 8.95891] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [148.81061, -15.09492, 8.95891] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [25, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [55, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-2.5, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "vector": [0, -20, 0] + }, + "1.7083": { + "vector": [0, -20, 0] + }, + "1.8333": { + "pre": { + "vector": [37.5, -20, 0] + }, + "post": { + "vector": [37.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "vector": [0, -20, 0] + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [25, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [55, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-2.5, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "vector": [0, 20, 0] + }, + "1.7083": { + "vector": [0, 20, 0] + }, + "1.8333": { + "pre": { + "vector": [37.5, 20, 0] + }, + "post": { + "vector": [37.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "vector": [0, 20, 0] + } + } + }, + "hat": { + "rotation": { + "0.0": { + "post": { + "vector": [-7.5, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-7.47178, 0.65182, 14.95744] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-7.47178, 0.65182, 14.95744] + }, + "lerp_mode": "catmullrom" + } + } + }, + "egg": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 19] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 1, 19] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 4, 19] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 10, 19] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 6, 19] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "vector": [0, 0, 19] + }, + "1.5833": { + "vector": [0, 0, 19] + }, + "1.625": { + "vector": [1, 0, 19] + }, + "1.6667": { + "vector": [0, 0, 19] + }, + "1.7083": { + "vector": [1, 0, 19] + }, + "1.75": { + "vector": [0, 0, 19] + } + }, + "scale": { + "0.0": { + "post": { + "vector": [0.4, 0.5, 0.3] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [1.2, 1.2, 1.2] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [1, 1, 1] + }, + "1.75": { + "vector": [1, 1, 1] + }, + "2.0": { + "vector": [0, 0, 0] + } + } + }, + "bunny": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, -360, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -360, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [1, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 9, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-0.12, 15.86, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "vector": [0, 9, 0] + }, + "1.75": { + "vector": [0, 9, 0] + }, + "1.9167": { + "vector": [0, 0, 0] + } + } + } + } + }, + "hop": { + "loop": true, + "animation_length": 0.625, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_paw": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_paw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "hat": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 1.98289, 0.26105] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0.04365, 0.00167] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "egg": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bunny": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 4, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 2, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 4, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 2, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [77.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [85, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [77.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0.17365, -0.98481] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0.17365, -0.98481] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-80, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_ear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_paw": { + "rotation": { + "0.0": { + "post": { + "vector": [147.60064, 14.02846, 20.9057] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [175.10064, 14.02846, 20.9057] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [147.60064, 14.02846, 20.9057] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_paw": { + "rotation": { + "0.0": { + "post": { + "vector": [147.60064, -14.02846, -20.9057] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [175.10064, -14.02846, -20.9057] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [147.60064, -14.02846, -20.9057] + }, + "lerp_mode": "catmullrom" + } + } + }, + "hat": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-12.5, 0, 10] + }, + "lerp_mode": "catmullrom" + } + } + }, + "egg": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/emperor_scorpion.animation.json b/common/src/main/resources/assets/antarchy/animations/emperor_scorpion.animation.json new file mode 100644 index 00000000..441992c5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/emperor_scorpion.animation.json @@ -0,0 +1,1183 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0417": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.5, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.04276, 27.49038, 0.45373] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 17.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-0.15033, 44.97993, 0.86308] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.04276, -27.49038, -0.45373] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-0.15033, -44.97993, -0.86308] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [25.03181, -64.37177, -18.5617] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-18.98448, 42.68932, -3.98448] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25.03181, -64.37177, -18.5617] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [-14.51082, 43.07952, -5.75357] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [6.1191, -21.69365, -1.17354] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-14.51082, 43.07952, -5.75357] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [11.3148, -21.1262, 0.14658] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-27.20957, 63.66301, -22.12815] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [11.3148, -21.1262, 0.14658] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-11.3148, -21.1262, -0.14658] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [8.95013, 43.76278, 5.89364] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-11.3148, -21.1262, -0.14658] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [14.51082, 43.07952, 5.75357] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-6.1191, -21.69365, 1.17354] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [14.51082, 43.07952, 5.75357] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-25.03181, -64.37177, 18.5617] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [11.39429, 20.39034, 3.57575] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25.03181, -64.37177, 18.5617] + }, + "lerp_mode": "catmullrom" + } + } + }, + "scorpion_emperor": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -9] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "animation_length": 1.0417, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0.28453, -7.47189, -1.1911] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0.28453, -7.47189, -1.1911] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [3.28812, 82.43115, 5.72119] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [3.28812, 82.43115, 5.72119] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0.72824, 7.55891, -0.3803] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0.72824, 7.55891, -0.3803] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0.28453, 7.47189, 1.1911] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0.28453, 7.47189, 1.1911] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [3.28812, -82.43115, -5.72119] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [3.28812, -82.43115, -5.72119] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0.72824, -7.55891, 0.3803] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0.72824, -7.55891, 0.3803] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [6.1191, -21.69365, -1.17354] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [14.51082, -43.07952, -5.75357] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [14.51082, -43.07952, -5.75357] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [6.1191, -21.69365, -1.17354] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [6.1191, -21.69365, -1.17354] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [6.1191, -21.69365, -1.17354] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.1191, 21.69365, -1.17354] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-14.51082, 43.07952, -5.75357] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-14.51082, 43.07952, -5.75357] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-6.1191, 21.69365, -1.17354] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [6.1191, 21.69365, 1.17354] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [31.99897, 63.17628, 19.99913] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [31.99897, 63.17628, 19.99913] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [6.1191, 21.69365, 1.17354] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.5417": { + "pre": { + "vector": [6.1191, 21.69365, 1.17354] + }, + "post": { + "vector": [6.1191, 21.69365, 1.17354] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [6.1191, 21.69365, 1.17354] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-7.91848, -44.03198, 4.42617] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-7.91848, -44.03198, 4.42617] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [5.68464, -0.69026, -1.16451] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [5.68464, -0.69026, -1.16451] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "scorpion_emperor": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, -8] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/flying_squirrel.animation.json b/common/src/main/resources/assets/antarchy/animations/flying_squirrel.animation.json new file mode 100644 index 00000000..c53b013a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/flying_squirrel.animation.json @@ -0,0 +1,1328 @@ +{ + "format_version": "1.8.0", + "animations": { + "climbing": { + "loop": true, + "animation_length": 1, + "bones": { + "squirrel": { + "rotation": { + "vector": [-90, 0, 0] + }, + "position": { + "vector": [0, 6.75, -5] + } + }, + "left_leg": { + "rotation": { + "0.25": { + "pre": { + "vector": [108.1133, 33.6443, 10.272] + }, + "post": { + "vector": [108.1133, 33.6443, 10.272] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [118.1133, 33.6443, 10.272] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [108.1133, 33.6443, 10.272] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [108.1133, 33.6443, 10.272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.25": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -1, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-110, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-90, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -1.06031, 0.34202] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -2.06, -0.66] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_flying_part": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_arm": { + "rotation": { + "0.25": { + "pre": { + "vector": [-90, 0, 0] + }, + "post": { + "vector": [-90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-110, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-90, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.25": { + "pre": { + "vector": [0, -2, 0] + }, + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -1.06031, 0.34202] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -2.06, -0.66] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_flying_part": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [108.1133, -33.6443, -10.272] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [118.1133, -33.6443, -10.272] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [108.1133, -33.6443, -10.272] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [108.1133, -33.6443, -10.272] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -1, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "walking": { + "loop": true, + "animation_length": 1, + "bones": { + "squirrel": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0.1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -0.3, 0.3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -0.3, -0.3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -0.5, -0.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -0.5, 0.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_flying_part": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -0.5, 0.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -0.5, -0.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_flying_part": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -0.3, -0.3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -0.3, 0.3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "gliding": { + "loop": true, + "animation_length": 1, + "bones": { + "squirrel": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -85] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -82.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 82.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 85] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + }, + "left_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "item_pickup": { + "animation_length": 3, + "bones": { + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [-65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-65, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.25": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-44.8924, 3.2116, 26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [-49.8924, 3.2116, 26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-42.3924, 3.2116, 26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [-44.8924, 3.2116, 26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-49.8924, 3.2116, 26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-42.3924, 3.2116, 26.3342] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-44.8924, 3.2116, 26.3342] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.25": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1.0425, -1.31366] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_flying_part": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.25": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-44.8924, -3.2116, -26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [-49.8924, -3.2116, -26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-42.3924, -3.2116, -26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [-44.8924, -3.2116, -26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-49.8924, -3.2116, -26.3342] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-42.3924, -3.2116, -26.3342] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-44.8924, -3.2116, -26.3342] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.25": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_flying_part": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_cheeks": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_cheeks": { + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 6, + "bones": { + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "6.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.3737, 34.1479, 11.0307] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [-6.3737, 34.1479, 11.0307] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_flying_part": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_flying_part": { + "scale": { + "vector": [0, 0, 0] + } + }, + "left_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + }, + "right_cheeks": { + "scale": { + "vector": [0, 0, 0] + } + }, + "body_2": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [1.03, 1.03, 1.03] + }, + "lerp_mode": "catmullrom" + }, + "6.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/gravity_gun.animation.json b/common/src/main/resources/assets/antarchy/animations/gravity_gun.animation.json new file mode 100644 index 00000000..1db2bc10 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/gravity_gun.animation.json @@ -0,0 +1,445 @@ +{ + "format_version": "1.8.0", + "animations": { + "toggle_on": { + "loop": "hold_on_last_frame", + "animation_length": 0.4583, + "bones": { + "tip": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "barrel": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.4583": { + "vector": [0, 0, -0.5], + "easing": "easeInBounce", + "easingArgs": [0.1] + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "handle": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [-5, 0, 0], + "easing": "easeOutQuart" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0, -0.25, 0.1], + "easing": "easeOutQuart" + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "handle_all": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [5, 0, 0], + "easing": "easeOutQuart" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [0, 0.3, 0], + "easing": "easeOutQuart" + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "gravity_gun": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [-1, 0, 0], + "easing": "easeInOutCubic" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [0, 0, -0.1], + "easing": "easeInOutSine" + } + }, + "scale": { + "vector": [1, 1, 1] + } + } + } + }, + "toggle_off": { + "loop": "hold_on_last_frame", + "animation_length": 0.5, + "bones": { + "tip": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "barrel": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "0.0": { + "vector": [0, 0, -0.5], + "easing": "easeInBounce", + "easingArgs": [0.1] + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "easeOutQuad" + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "handle": { + "rotation": { + "0.0": { + "vector": [-5, 0, 0], + "easing": "easeOutQuart" + }, + "0.4583": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + } + }, + "position": { + "0.0": { + "vector": [0, -0.25, 0.1], + "easing": "easeOutQuart" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "handle_all": { + "rotation": { + "0.0": { + "vector": [5, 0, 0], + "easing": "easeOutQuart" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + } + }, + "position": { + "0.0": { + "vector": [0, 0.3, 0], + "easing": "easeOutQuart" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "gravity_gun": { + "rotation": { + "0.0": { + "vector": [-1, 0, 0], + "easing": "easeInOutCubic" + }, + "0.4583": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + } + }, + "position": { + "0.0": { + "vector": [0, 0, -0.1], + "easing": "easeInOutSine" + }, + "0.4167": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + } + }, + "scale": { + "vector": [1, 1, 1] + } + } + } + }, + "on": { + "loop": true, + "animation_length": 0.6667, + "bones": { + "tip": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.6667": { + "pre": [0, 0, 360], + "post": [0, 0, 0], + "easing": "linear" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.3333": { + "vector": [1.025, 1.025, 1.025], + "easing": "easeInOutSine" + }, + "0.6667": { + "vector": [1, 1, 1] + } + } + }, + "barrel": { + "rotation": { + "0.0": { + "vector": [0, 0, 0], + "easing": "easeInOutQuart" + }, + "0.3333": { + "vector": [1, 0, 0], + "easing": "easeInOutQuart" + }, + "0.6667": { + "vector": [0, 0, 0], + "easing": "easeInOutQuart" + } + }, + "position": { + "0.0": { + "vector": [0, 0, -0.5], + "easing": "easeInOutSine" + }, + "0.3333": { + "vector": [0, 0, -0.2], + "easing": "easeInOutQuart" + }, + "0.6667": { + "vector": [0, 0, -0.5], + "easing": "easeInOutSine" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.3333": { + "vector": [1.025, 1.025, 1.025], + "easing": "easeInOutQuad" + }, + "0.6667": { + "vector": [1, 1, 1] + } + } + }, + "handle": { + "rotation": { + "0.0": { + "vector": [-5, 0, 0], + "easing": "easeOutQuart" + }, + "0.3333": { + "vector": [-8, 0, 0], + "easing": "easeInOutSine" + }, + "0.6667": { + "vector": [-5, 0, 0], + "easing": "easeInOutSine" + } + }, + "position": { + "0.0": { + "vector": [0, -0.25, 0.1], + "easing": "easeOutQuart" + }, + "0.3333": { + "vector": [0, -0.25, -0.075], + "easing": "easeInOutSine" + }, + "0.6667": { + "vector": [0, -0.25, 0.1], + "easing": "easeInOutSine" + } + } + }, + "handle_all": { + "rotation": { + "0.0": { + "vector": [5, 0, 0], + "easing": "easeOutQuart" + }, + "0.6667": { + "vector": [5, 0, 0], + "easing": "easeOutQuart" + } + }, + "position": { + "0.0": { + "vector": [0, 0.3, 0], + "easing": "easeOutQuart" + }, + "0.6667": { + "vector": [0, 0.3, 0], + "easing": "easeOutQuart" + } + } + }, + "gravity_gun": { + "rotation": { + "0.0": { + "vector": [-1, 0, 0], + "easing": "easeInOutCubic" + }, + "0.3333": { + "vector": [-2, 0, 0], + "easing": "easeInOutQuart" + }, + "0.6667": { + "vector": [-1, 0, 0], + "easing": "easeInOutCubic" + } + }, + "position": { + "0.0": { + "vector": [0, 0, -0.1], + "easing": "easeInOutSine" + }, + "0.3333": { + "vector": [0, 0.2, -0.1], + "easing": "easeInOutQuad" + }, + "0.6667": { + "vector": [0, 0, -0.1], + "easing": "easeInOutSine" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.3333": { + "vector": [1.015, 1.015, 1.015] + }, + "0.6667": { + "vector": [1, 1, 1] + } + } + } + } + }, + "off": { + "animation_length": 1, + "bones": { + "tip": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "barrel": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "handle": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "handle_all": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "gravity_gun": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/growth_ray.animation.json b/common/src/main/resources/assets/antarchy/animations/growth_ray.animation.json new file mode 100644 index 00000000..ed15f14e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/growth_ray.animation.json @@ -0,0 +1,88 @@ +{ + "format_version": "1.8.0", + "animations": { + "growth_ray_active": { + "loop": true, + "animation_length": 1, + "bones": { + "blaster_rotating": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, -360], + "easing": "easeInOutSine" + } + } + }, + "growth_ray": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.75": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "blaster": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.75": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "blaster_end": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.75": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/kraken.animation.json b/common/src/main/resources/assets/antarchy/animations/kraken.animation.json new file mode 100644 index 00000000..01241865 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/kraken.animation.json @@ -0,0 +1,11385 @@ +{ + "format_version": "1.8.0", + "animations": { + "pose": { + "loop": true, + "bones": { + "Tentacle_1_Left": { + "rotation": { + "vector": [-30.4985, 19.4505, -51.4092] + }, + "position": { + "vector": [-2, 2, 0] + } + }, + "Tentacle_part_1_left": { + "rotation": { + "vector": [0, 0, -52.5] + }, + "position": { + "vector": [-1, 2, 0] + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "vector": [0, 0, 65] + }, + "position": { + "vector": [0, 4, 0] + } + }, + "Tentacle_1_Left2": { + "rotation": { + "vector": [-5.3981, 11.9127, -58.8139] + }, + "position": { + "vector": [0, 1.6, -3.4] + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "vector": [0, 0, -52.5] + }, + "position": { + "vector": [-1, 2, 0] + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "vector": [0, 0, 52.5] + }, + "position": { + "vector": [0, 4.2, 0] + } + }, + "Tentacle_1_Left3": { + "rotation": { + "vector": [12.2767, -21.7337, -37.5251] + }, + "position": { + "vector": [0, -1, -7] + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "vector": [0, 0, -80] + }, + "position": { + "vector": [-1, 2, 0] + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "vector": [0, 0, 72.5] + }, + "position": { + "vector": [1, 4, 0] + } + }, + "Tentacle_1_Left4": { + "rotation": { + "vector": [38.5673, -39.2521, -57.1302] + }, + "position": { + "vector": [-3, -3, -12] + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "vector": [0, 0, -72.5] + }, + "position": { + "vector": [-2, 2, 0] + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "vector": [0, 0, 75] + }, + "position": { + "vector": [1, 4, 0] + } + }, + "Tentacle_1_Right": { + "rotation": { + "vector": [-30.4985, -19.4505, 51.4092] + }, + "position": { + "vector": [2, 2, 0] + } + }, + "Tentacle_part_1_right": { + "rotation": { + "vector": [0, 0, 52.5] + }, + "position": { + "vector": [1, 2, 0] + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "vector": [0, 0, -65] + }, + "position": { + "vector": [0, 4, 0] + } + }, + "Tentacle_1_Right2": { + "rotation": { + "vector": [-5.3981, -11.9127, 58.8139] + }, + "position": { + "vector": [0, 1.6, -3.4] + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "vector": [0, 0, 52.5] + }, + "position": { + "vector": [1, 2, 0] + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "vector": [0, 0, -52.5] + }, + "position": { + "vector": [0, 4.2, 0] + } + }, + "Tentacle_1_Right3": { + "rotation": { + "vector": [12.2767, 21.7337, 37.5251] + }, + "position": { + "vector": [0, -1, -7] + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "vector": [0, 0, 80] + }, + "position": { + "vector": [1, 2, 0] + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "vector": [0, 0, -72.5] + }, + "position": { + "vector": [-1, 4, 0] + } + }, + "Tentacle_1_Right4": { + "rotation": { + "vector": [38.5673, 39.2521, 57.1302] + }, + "position": { + "vector": [3, -3, -12] + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "vector": [0, 0, 72.5] + }, + "position": { + "vector": [2, 2, 0] + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "vector": [0, 0, -75] + }, + "position": { + "vector": [-1, 4, 0] + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 2.5, + "sound_effects": { + "0.0": { + "effect": "antarchy:kraken_flying_loop|0.45|1.0" + } + }, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 7, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [-35.4398, 4.2669, -74.9229] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-8.972, 35.0689, -6.2022] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-37.4694, 63.0682, -47.9037] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-31.9019, 16.8589, -55.9098] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-35.4398, 4.2669, -74.9229] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -20.16] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.2, 1.9, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -44.3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, 25.1] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.2077, 20.7048, -49.1065] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [1.4426, 29.9685, 2.8862] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-7.1228, 29.2189, -14.3587] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [-19.2127, 22.3844, -42.5154] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-22.2077, 20.7048, -49.1065] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 21.74] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -57.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 32.78] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [20.8765, -13.7242, -65.1997] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [3.0505, -16.4853, -16.207] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.0124, -9.0942, -22.6429] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [20.8765, -13.7242, -65.1997] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0.3538, 0.7361, -18.3913] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.7831, -0.0666, 47.4376] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0.0877, -0.2452, 40.1682] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.86, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, 33.47] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [1, 1.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [1, 2.6, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [51.756, -12.0106, -86.2494] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.6649, -51.6428, -21.5544] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [34.0517, -47.4021, -39.7338] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [51.756, -12.0106, -86.2494] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, 41.81] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0.86, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -37.14] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [-35.4398, -4.2669, 74.9229] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-8.972, -35.0689, 6.2022] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-37.4694, -63.0682, 47.9037] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-31.9019, -16.8589, 55.9098] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-35.4398, -4.2669, 74.9229] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 20.16] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.2, 1.9, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 44.3] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, -25.1] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.2077, -20.7048, 49.1065] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [1.4426, -29.9685, -2.8862] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-7.1228, -29.2189, 14.3587] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [-19.2127, -22.3844, 42.5154] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-22.2077, -20.7048, 49.1065] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, -21.74] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 57.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, -32.78] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [20.8765, 13.7242, 65.1997] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [3.0505, 16.4853, 16.207] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.0124, 9.0942, 22.6429] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [20.8765, 13.7242, 65.1997] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0.3538, -0.7361, 18.3913] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.7831, 0.0666, -47.4376] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0.0877, 0.2452, -40.1682] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.86, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, -33.47] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-1, 1.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-1, 2.6, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [51.756, 12.0106, 86.2494] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.6649, 51.6428, 21.5544] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [34.0517, 47.4021, 39.7338] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [51.756, 12.0106, 86.2494] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 0, -41.81] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-0.86, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 37.14] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Swipe": { + "loop": "hold_on_last_frame", + "animation_length": 1.5, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 3.15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-34.387, 6.9319, -69.6654] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-91.887, 6.9319, -69.6654] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0.4848, -62.5683, 25.0151] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-14.4729, -36.208, 16.5374] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [4.37, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.63, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [8.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [8.33, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [23.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [23.33, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.0104, -17.5, 0.003] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.01, 143.59, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -22.95] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [42.5, 0, -22.95] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-44.6896, 0, -16.9359] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [45, 0, 19.55] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [34.3081, -4.2439, 40.5865] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [22.2694, -1.4146, 49.4325] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -15.22] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [35, 0, -15.22] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-22.3771, 2.3004, -8.4118] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [31.8803, 6.6782, 11.6893] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [24.056, -2.6619, 33.1066] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [19.3379, -1.1346, 26.2811] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-16.717, 4.2814, -82.5286] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-56.717, 4.2814, -82.5286] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [20.0257, -49.8387, -16.1244] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-6.4668, -43.5968, 25.4296] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -17.8] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [65, 0, -17.8] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-31.9581, -7.9792, 5.0872] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [32.5, 0, 2.2] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [22.6478, -10.6998, 38.4965] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [23.8456, -3.5666, 35.4099] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -28.11] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [27.5, 0, -28.11] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-42.3853, 2.1984, -28.1145] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [25.2579, 11.253, -8.0809] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [17.3767, -13.6298, 65.8393] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [22.3568, -4.96, 46.4461] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0.61719, 3.98477, 0.70711] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [18.9012, 0.2882, -86.5243] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-16.0988, 0.2882, -86.5243] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [55.6218, -58.8306, -36.0365] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [54.5769, -73.2357, -21.3745] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.2647, -0.0241, -24.83] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [45.2647, -0.0241, -24.83] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-26.5249, 9.8299, -1.1177] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [29.5168, 12.0389, 10.1054] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [23.6314, -1.333, 42.9303] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [24.3473, -1.0661, 42.2036] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -13.26] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [30, 0, -13.26] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-45.3023, 10.583, -40.596] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [1.2418, 12.9773, -42.7247] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [8.471, 3.6937, 25.096] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [20.2777, 0.7506, 32.2833] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [1.62802, 4.31086, 0.82571] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [52.0766, -6.9543, -86.6052] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [32.0766, -6.9543, -86.6052] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [155.5716, -28.3508, -115.3908] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -19.53] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [42.5, 0, -19.53] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [33.9673, -15.7385, 22.0006] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [37.0773, 6.0681, 2.5067] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [23.1855, 1.2713, 40.7477] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -22.88] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [22.5, 0, -22.88] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-19.5169, 21.1528, 25.6157] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-39.8998, -14.6899, -41.6051] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [11.1091, -2.8063, 28.3183] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-34.387, -6.9319, 69.6654] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-1.887, -6.9319, 69.6654] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-28.8521, 2.4221, 65.9199] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-38.0082, -7.9924, 42.3701] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 22.95] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-27.5, 0, 22.95] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [10.5951, 2.844, -40.0347] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [16.5726, -11.6128, 30.036] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 15.22] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-32.5, 0, 15.22] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [5.8835, 19.3359, -38.2171] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [35.0705, 7.7922, 13.8451] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-16.717, -4.2814, 82.5286] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [8.283, -4.2814, 82.5286] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-27.8923, -5.38, 73.7252] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 17.8] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-27.5, 0, 17.8] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-0.362, -0.7761, -59.8325] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [2.5, 0, -2.2] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 28.11] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-12.5, 0, 28.11] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [15.3135, 23.3225, -18.2818] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [34.7658, 15.6999, 1.9348] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-0.61719, 3.98477, 0.70711] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [18.9012, -0.2882, 86.5243] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [46.4012, -0.2882, 86.5243] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [6.4185, 4.437, 77.6781] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.2647, 0.0241, 24.83] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-22.2353, 0.0241, 24.83] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-4.1109, -26.0011, -59.426] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-27.0398, -7.6047, -1.0063] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 13.26] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-20, 0, 13.26] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [20.8611, 24.5649, -27.6929] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [45.5761, -6.7071, 28.1123] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-1.62802, 4.31086, 0.82571] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [52.0766, 6.9543, 86.6052] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [92.0766, 6.9543, 86.6052] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [28.3776, 14.786, 80.268] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 19.53] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-32.5, 0, 19.53] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-28.3319, -20.0094, -32.3747] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-37.5, 0, -10.47] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 22.88] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-17.5, 0, 22.88] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [1.7517, 22.0828, -41.7185] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [29.279, 14.6055, 4.1947] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacles": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 128.59, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, 135, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Death": { + "loop": "hold_on_last_frame", + "animation_length": 3, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 3.15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 5.15, 9] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 11.15, 9] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 11.15, 9] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, -35.85, 9] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-18.1105, 30.4684, -22.4887] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-13.1217, 24.4444, -8.3184] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-13.1217, 24.4444, -8.3184] + }, + "lerp_mode": "catmullrom" + }, + "2.375": { + "post": { + "vector": [-10.88, -52.86, -65.95] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0.3142, -19.3642, -144.0989] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-15.63, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-15.63, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [6.87, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.17, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-9.17, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [13.33, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-11.67, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-11.67, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [38.33, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-15.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-20.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-20.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [57.49, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-65.65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [49.35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [49.35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -7.95] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -12.95] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -12.95] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [5.379, -3.7668, 37.9263] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -42.95] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 39.78] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -10.22] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -10.22] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 23.11] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -20.22] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-6.3156, 28.8772, -13.0398] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.3156, 28.8772, -13.0398] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-6.3156, 28.8772, -13.0398] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [8.6844, -33.6228, -48.0398] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [11.0451, -16.4772, -144.5351] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -12.8] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -17.8] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -17.8] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 29.7] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -37.8] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 44.39] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -15.61] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -15.61] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 81.89] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -28.11] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [4.5341, -18.3709, -9.8058] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [4.5341, -18.3709, -9.8058] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [4.5341, -18.3709, -9.8058] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [38.5341, -58.3709, -59.8058] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [21.9469, -4.3657, -125.2582] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.2452, -0.1027, -7.33] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.2593, -0.0585, -17.33] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0.2593, -0.0585, -17.33] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0.2593, -0.0585, 27.67] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0.2655, -0.0125, -27.33] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 36.74] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -23.26] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -23.26] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 51.74] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -38.26] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [17.1089, -50.3324, -23.7896] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.1089, -50.3324, -23.7896] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [17.1089, -50.3324, -23.7896] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [17.1089, -62.8324, -23.7896] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [50.2054, -25.7109, -125.5789] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -2.03] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -14.53] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -14.53] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 20.47] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -47.03] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 69.62] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -20.38] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, -20.38] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, 27.12] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, -32.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-18.1105, -30.4684, 22.4887] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-13.1217, -24.4444, 8.3184] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-13.1217, -24.4444, 8.3184] + }, + "lerp_mode": "catmullrom" + }, + "2.375": { + "post": { + "vector": [-10.88, 52.86, 65.95] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0.3142, 19.3642, 144.0989] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 7.95] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 12.95] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 12.95] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [5.379, 3.7668, -37.9263] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 42.95] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -39.78] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 10.22] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 10.22] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -23.11] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 20.22] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-6.3156, -28.8772, 13.0398] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.3156, -28.8772, 13.0398] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-6.3156, -28.8772, 13.0398] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [8.6844, 33.6228, 48.0398] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [11.0451, 16.4772, 144.5351] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 12.8] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 17.8] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 17.8] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -29.7] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 37.8] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -44.39] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 15.61] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 15.61] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -81.89] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 28.11] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [4.5341, 18.3709, 9.8058] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [4.5341, 18.3709, 9.8058] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [4.5341, 18.3709, 9.8058] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [38.5341, 58.3709, 59.8058] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [21.9469, 4.3657, 125.2582] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.2452, 0.1027, 7.33] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.2593, 0.0585, 17.33] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0.2593, 0.0585, 17.33] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0.2593, 0.0585, -27.67] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0.2655, 0.0125, 27.33] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -36.74] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 23.26] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 23.26] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -51.74] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 38.26] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [17.1089, 50.3324, 23.7896] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.1089, 50.3324, 23.7896] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [17.1089, 50.3324, 23.7896] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [17.1089, 62.8324, 23.7896] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [50.2054, 25.7109, 125.5789] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 2.03] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 14.53] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 14.53] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -20.47] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 47.03] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -69.62] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 20.38] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 20.38] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 0, -27.12] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 0, 32.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacles": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Hit": { + "loop": "hold_on_last_frame", + "animation_length": 1.1667, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [7.2195, -1.7113, -1.2114] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [7.2195, -1.7113, -1.2114] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 3.15, 5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 3.15, 5] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-16.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-16.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-39.42, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [4.37, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-3.79, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [13.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-4.17, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [20.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [7.49, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-10.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0.4] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -1.6] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-45.65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [34.35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-24.95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-26.5651, -14.4776, 25.4849] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-26.5651, -14.4776, 25.4849] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [27.5, 0, 52.05] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-20, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-20, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [17.5, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-12.4594, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [10.5473, 4.8627, -69.208] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [10.5473, 4.8627, -69.208] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-29.4527, 4.8627, -69.208] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-35, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-35, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [17.5, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-22.5, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-22.5, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [22.5, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-19.2707, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [43.0772, -23.9366, -75.9745] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [43.0772, -23.9366, -75.9745] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-15.6953, -12.2418, -54.0288] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-24.91, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-24.91, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [50.7096, -12.3788, 12.5062] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-22.5, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-22.5, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [20, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-32.1005, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [62.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [62.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [23.3229, -26.3671, -66.6121] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-25, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-25, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [37.5, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-15, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [12.5, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [1.7798, -0.3946, 54.6138] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-16.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-16.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-39.42, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-26.5651, 14.4776, -25.4849] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-26.5651, 14.4776, -25.4849] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [27.5, 0, -52.05] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-20, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-20, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [17.5, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-12.4594, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [10.5473, -4.8627, 69.208] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [10.5473, -4.8627, 69.208] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-29.4527, -4.8627, 69.208] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-35, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-35, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [17.5, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-22.5, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-22.5, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [22.5, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-19.2707, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [43.0772, 23.9366, 75.9745] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [43.0772, 23.9366, 75.9745] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-15.6953, 12.2418, 54.0288] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-24.91, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-24.91, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [50.7096, 12.3788, -12.5062] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-22.5, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-22.5, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [20, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-32.1005, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [62.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [62.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [23.3229, 26.3671, 66.6121] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-25, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-25, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [37.5, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-15, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [12.5, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [1.7798, 0.3946, -54.6138] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacles": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Attack": { + "loop": "hold_on_last_frame", + "animation_length": 2, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 3.15, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 3.15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5.0928, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-30.0928, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-30.0928, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30.0928, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.49, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.51, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [2.26, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.00052, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0.12879, -0.99167] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 54.55] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-118.1977, -31.2126, 37.3757] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-118.1977, -31.2126, 37.3757] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-118.1977, -31.2126, 37.3757] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-50, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-12.0253, 12.8089, 68.4252] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-12.0253, 12.8089, 68.4252] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.0253, 12.8089, 68.4252] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-6.6145, -42.6621, -111.0226] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [43.8767, -58.8301, -144.2998] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-74.2354, -29.794, -21.0171] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-8.6196, 12.6219, 115.8661] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 72.2] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 54.39] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 104.39] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [34.4068, -7.5254, -60.0311] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [29.4068, -7.5254, -60.0311] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [34.4068, -7.5254, -60.0311] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-29.91, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [23.6128, 11.0302, -21.7116] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [38.6128, 11.0302, -21.7116] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [23.6128, 11.0302, -21.7116] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [19.5337, 2.1109, 6.8235] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-20.4663, 2.1109, 6.8235] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [19.5337, 2.1109, 6.8235] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60.48, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [62.5189, -13.3032, -77.9415] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [57.5189, -13.3032, -77.9415] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [62.5189, -13.3032, -77.9415] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [20, 0, -7.03] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [30, 0, -7.03] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, -7.03] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [17.3594, 2.2493, -10.0365] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.6406, 2.2493, -10.0365] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.3594, 2.2493, -10.0365] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5.0928, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-30.0928, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-30.0928, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30.0928, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, -54.55] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-118.1977, 31.2126, -37.3757] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-118.1977, 31.2126, -37.3757] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-118.1977, 31.2126, -37.3757] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-50, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-12.0253, -12.8089, -68.4252] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-12.0253, -12.8089, -68.4252] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.0253, -12.8089, -68.4252] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-6.6145, 42.6621, 111.0226] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [43.8767, 58.8301, 144.2998] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-86.4636, 33.1995, -2.147] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-8.6196, -12.6219, -115.8661] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -69.7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -54.39] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -121.89] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [34.4068, 7.5254, 60.0311] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [29.4068, 7.5254, 60.0311] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [34.4068, 7.5254, 60.0311] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-29.91, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [23.6128, -11.0302, 21.7116] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [38.6128, -11.0302, 21.7116] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [23.6128, -11.0302, 21.7116] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [19.5337, -2.1109, -6.8235] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-20.4663, -2.1109, -6.8235] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [19.5337, -2.1109, -6.8235] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60.48, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [62.5189, 13.3032, 77.9415] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [57.5189, 13.3032, 77.9415] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [62.5189, 13.3032, 77.9415] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [20, 0, 7.03] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [30, 0, 7.03] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 7.03] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [17.3594, -2.2493, 10.0365] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.6406, -2.2493, 10.0365] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.3594, -2.2493, 10.0365] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacles": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Grab": { + "loop": "hold_on_last_frame", + "animation_length": 2, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 3.15, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 3.15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5.0928, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [24.9072, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [24.0533, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [24.9072, 17.0767, -41.388] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-31.92, 15.17, -56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.63, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5.83, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.49, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.51, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [2.26, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5.01, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.01, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.00052, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0.12879, -0.99167] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5.65, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 54.55] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [9.9627, 0.8672, 49.6256] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [20.9749, -2.1054, 48.508] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [9.9627, 0.8672, 49.6256] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-50, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [22.5, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-26.0219, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 22.28] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-20.47, -75.78, -107.88] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-72.8595, -38.6597, -29.8465] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-20.47, 21.72, -45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -37.8] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 69.7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -43.11] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 74.39] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [34.4068, -7.5254, -60.0311] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [29.4068, -7.5254, -60.0311] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [34.4068, -7.5254, -60.0311] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15.37, -11.14, -50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-29.91, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [23.6128, 11.0302, -21.7116] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [38.6128, 11.0302, -21.7116] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [23.6128, 11.0302, -21.7116] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.09, -0.25, 40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, 31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [19.5337, 2.1109, 6.8235] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-20.4663, 2.1109, 6.8235] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [19.5337, 2.1109, 6.8235] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60.48, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [62.5189, -13.3032, -77.9415] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [57.5189, -13.3032, -77.9415] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [62.5189, -13.3032, -77.9415] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [47.98, -24.3, -71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, 47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [20, 0, -7.03] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [30, 0, -7.03] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, -7.03] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, 42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [17.3594, 2.2493, -10.0365] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.6406, 2.2493, -10.0365] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.3594, 2.2493, -10.0365] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5.0928, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [24.9072, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [24.0533, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [24.9072, -17.0767, 41.388] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-31.92, -15.17, 56.88] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, -54.55] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [9.9627, -0.8672, -49.6256] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [20.9749, 2.1054, -48.508] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [9.9627, -0.8672, -49.6256] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -52.05] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.5, 1.96, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-50, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [22.5, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-26.0219, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, -22.28] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -22.28] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-20.47, 75.78, 107.88] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-72.8595, 38.6597, 29.8465] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-20.47, -21.72, 45.38] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 37.8] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -69.7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -32.2] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.07, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 43.11] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -74.39] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -34.39] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.09, 1.93, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [34.4068, 7.5254, 60.0311] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [29.4068, 7.5254, 60.0311] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [34.4068, 7.5254, 60.0311] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15.37, 11.14, 50.58] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-29.91, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [23.6128, -11.0302, 21.7116] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [38.6128, -11.0302, 21.7116] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [23.6128, -11.0302, 21.7116] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0.09, 0.25, -40.17] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.78, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, -31.74] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [19.5337, -2.1109, -6.8235] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-20.4663, -2.1109, -6.8235] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [19.5337, -2.1109, -6.8235] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -31.74] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-1, 2.33, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60.48, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [62.5189, 13.3032, 77.9415] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [57.5189, 13.3032, 77.9415] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [62.5189, 13.3032, 77.9415] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [47.98, 24.3, 71.65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, -47.97] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [20, 0, 7.03] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [30, 0, 7.03] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 7.03] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -47.97] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-0.83, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-25, 0, -42.12] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [17.3594, -2.2493, 10.0365] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.6406, -2.2493, 10.0365] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.3594, -2.2493, 10.0365] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -42.12] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacles": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle2": { + "loop": true, + "animation_length": 0.0083, + "bones": { + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [-8.972, 35.0689, -6.2022] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-35.4398, 4.2669, -74.9229] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -20.16] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -44.3] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [1.4426, 29.9685, 2.8862] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-22.2077, 20.7048, -49.1065] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -57.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [3.0505, -16.4853, -16.207] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [20.8765, -13.7242, -65.1997] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.3538, 0.7361, -18.3913] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 1.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [1, 2.6, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [12.6649, -51.6428, -21.5544] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [51.756, -12.0106, -86.2494] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -37.14] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [-8.972, -35.0689, 6.2022] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-35.4398, -4.2669, 74.9229] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 20.16] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 44.3] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 2.8, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [1.4426, -29.9685, -2.8862] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-22.2077, -20.7048, 49.1065] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 1.6, -3.4] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 57.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-1.3, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [3.0505, 16.4853, 16.207] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [20.8765, 13.7242, 65.1997] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, -1, -7] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0.3538, -0.7361, 18.3913] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 1.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-1, 2.6, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [12.6649, 51.6428, 21.5544] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [51.756, 12.0106, 86.2494] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [3, -3, -12] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 65] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [2, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 37.14] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0083": { + "post": { + "vector": [-1, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "swim": { + "loop": true, + "animation_length": 1, + "sound_effects": { + "0.0": { + "effect": "antarchy:kraken_flying_sideways_loop|0.45|1.0" + } + }, + "bones": { + "bone": { + "rotation": { + "vector": [42.5, 0, 0] + } + }, + "Tentacle_1_Left": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [26.7391, 11.3252, -6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.4006, 8.1389, -2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [19.1774, 23.3701, -23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.5366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3.06238, 17.96177, -14.99989] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-3.06238, 17.96177, -14.99989] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-3.06238, 17.96177, -14.99989] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5628, -4.768, 1.507] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5628, 4.768, -1.507] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-17.5628, -4.768, 1.507] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 8.60365, -12.28728] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 9.17341, -11.8885] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 8.60365, -12.28728] + }, + "lerp_mode": "catmullrom" + } + } + }, + "mouth": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left2": { + "rotation": { + "0.0": { + "post": { + "vector": [55.0366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [56.7391, 11.3252, -6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [57.4006, 8.1389, -2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [56.6774, 23.3701, -23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [55.0366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3.48755, 15.39547, -10.20994] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [3.48755, 15.39547, -10.20994] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left3": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [34.2391, 11.3252, -6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [34.9006, 8.1389, -2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [26.6774, 23.3701, -23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [1.33386, 10.12204, -22.62896] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.33386, 10.12204, -22.62896] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1.33386, 10.12204, -22.62896] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Left4": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [41.7391, 11.3252, -6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [44.9006, 8.1389, -2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [41.6774, 23.3701, -23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [37.5366, 21.95, -21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [2.15186, 9.72533, -29.12308] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [2.15186, 9.72533, -29.12308] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [2.15186, 9.72533, -29.12308] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [26.7391, -11.3252, 6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.4006, -8.1389, 2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [19.1774, -23.3701, 23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.5366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [3.06238, 17.96177, -14.99989] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [3.06238, 17.96177, -14.99989] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [3.06238, 17.96177, -14.99989] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right2": { + "rotation": { + "0.0": { + "post": { + "vector": [55.0366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [56.7391, -11.3252, 6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [57.4006, -8.1389, 2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [56.6774, -23.3701, 23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [55.0366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-3.48755, 15.39547, -10.20994] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-3.48755, 15.39547, -10.20994] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right3": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [34.2391, -11.3252, 6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [34.9006, -8.1389, 2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [26.6774, -23.3701, 23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-1.33386, 10.12204, -22.62896] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-1.33386, 10.12204, -22.62896] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1.33386, 10.12204, -22.62896] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_1_Right4": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [41.7391, -11.3252, 6.8224] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [44.9006, -8.1389, 2.9124] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [41.6774, -23.3701, 23.595] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [37.5366, -21.95, 21.3652] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-2.15186, 9.72533, -29.12308] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.15186, 9.72533, -29.12308] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-2.15186, 9.72533, -29.12308] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_part_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tentacle_hand_1_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -52.5] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} diff --git a/common/src/main/resources/assets/antarchy/animations/lucid.animation.json b/common/src/main/resources/assets/antarchy/animations/lucid.animation.json new file mode 100644 index 00000000..3f24c5fd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/lucid.animation.json @@ -0,0 +1,759 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "ring": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 135] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 180] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [0, 0, 225] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, 270] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, 0, 315] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "ring2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [135, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "ring3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -135] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, -180] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Iris": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [-3, 1, 0] + }, + "1.0": { + "vector": [-3, 1, 0] + }, + "1.2083": { + "vector": [4, 1, 0] + }, + "1.8333": { + "vector": [4, 1, 0] + }, + "2.125": { + "vector": [0, -1, 0] + } + } + }, + "Lucid": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 8, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyelid": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "2.5": { + "vector": [0, 0, 0] + }, + "2.6667": { + "vector": [0, -2, 0] + }, + "2.7917": { + "vector": [0, -2, 0] + }, + "2.9583": { + "vector": [0, 0, 0] + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "2.5": { + "vector": [1, 1, 1] + }, + "2.6667": { + "vector": [1, 2.8, 1] + }, + "2.7917": { + "vector": [1, 2.8, 1] + }, + "2.9583": { + "vector": [1, 1, 1] + } + } + } + } + }, + "attack": { + "animation_length": 1, + "bones": { + "ring": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5417": { + "vector": [0, 0, 0] + }, + "0.625": { + "vector": [0, 0, 180] + }, + "0.7083": { + "vector": [0, 0, 0] + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [2, 2, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2, 2, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [2, 2, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [2, 2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "ring2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [180, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "ring3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 270] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eye": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [-1, 0, 0] + }, + "0.0833": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [-1, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [-1, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [-1, 0, 0] + }, + "0.375": { + "vector": [0, 0, 0] + }, + "0.4167": { + "vector": [-1, 0, 0] + }, + "0.4583": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [-1, 0, 0] + }, + "0.5417": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Iris": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0.2, 0.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.2, 0.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0.2, 0.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyelid": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [1, 0.7, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1, 0.7, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 1, + "bones": { + "ring": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 360] + } + } + }, + "ring2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [630, 0, 0] + } + } + }, + "ring3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 360] + } + } + }, + "Lucid": { + "rotation": { + "vector": [25, 0, 0] + }, + "position": { + "0.0": { + "post": { + "vector": [0, -6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -6, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "death": { + "animation_length": 0.75, + "bones": { + "ring": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [87.5, 0, 0] + }, + "0.25": { + "vector": [87.5, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, -29, 0] + }, + "0.2083": { + "vector": [0, -27, 0] + }, + "0.25": { + "vector": [0, -29, 0] + } + } + }, + "ring2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 92.5] + }, + "0.25": { + "vector": [0, 0, 92.5] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, -28, 0] + }, + "0.2083": { + "vector": [0, -26, 0] + }, + "0.25": { + "vector": [0, -28, 0] + } + } + }, + "ring3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [92.5, 0, 0] + }, + "0.25": { + "vector": [92.5, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, -28, 0] + }, + "0.2083": { + "vector": [0, -26, 0] + }, + "0.25": { + "vector": [0, -28, 0] + } + } + }, + "eye": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-1, 0, 6] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-1, 0, 6] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.4167": { + "vector": [1, 1, 1] + }, + "0.5": { + "vector": [0, 0, 1] + } + } + }, + "Iris": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0.6, 0.2, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.6, 0.2, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "eyelid": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [0, -1.9981, 0.08724] + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.2917": { + "vector": [1, 1, 1] + }, + "0.4167": { + "vector": [1, 2.9, 1] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/mantis.animation.json b/common/src/main/resources/assets/antarchy/animations/mantis.animation.json new file mode 100644 index 00000000..bb40f4e9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/mantis.animation.json @@ -0,0 +1,6591 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4.5, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, -13, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -13, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, -13, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [42.2957, -6.3504, 13.1764] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [42.2957, -6.3504, 13.1764] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [42.2957, -6.3504, 13.1764] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [32.9987, -60.3233, -31.883] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [32.9987, -60.3233, -31.883] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [32.9987, -60.3233, -31.883] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, 57.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightArm": { + "rotation": { + "0.0": { + "post": { + "vector": [11.5723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [11.5723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [14.0723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [14.0723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [11.5723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-110, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [-110, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [44.0025, 27.6044, 9.1387] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [44.0025, 27.6044, 9.1387] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [44.0025, 27.6044, 9.1387] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [49.5447, -60.6291, -53.1412] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [49.5447, -60.6291, -53.1412] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [49.5447, -60.6291, -53.1412] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 52.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 52.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, 52.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [44.0025, -27.6044, -9.1387] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [44.0025, -27.6044, -9.1387] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [44.0025, -27.6044, -9.1387] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [49.5447, 60.6291, 53.1412] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [49.5447, 60.6291, 53.1412] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [49.5447, 60.6291, 53.1412] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -52.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -52.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, -52.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [42.2957, 6.3504, -13.1764] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [42.2957, 6.3504, -13.1764] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [42.2957, 6.3504, -13.1764] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [32.9987, 60.3233, 31.883] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [32.9987, 60.3233, 31.883] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [32.9987, 60.3233, 31.883] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftArm": { + "rotation": { + "0.0": { + "post": { + "vector": [11.5723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [11.5723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [14.0723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [14.0723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [11.5723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-110, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [-110, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.6405, -59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.6405, -59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-7.7989, -63.9863, 1.3167] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [-7.7989, -63.9863, 1.3167] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [-6.6405, -59.0256, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.6405, 59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.6405, 59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-7.7989, 63.9863, -1.3167] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [-7.7989, 63.9863, -1.3167] + }, + "lerp_mode": "catmullrom" + }, + "4.5": { + "post": { + "vector": [-6.6405, 59.0256, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 1, + "bones": { + "root": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -2.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 2.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -2.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -13, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -13, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightLeg": { + "rotation": { + "0.0": { + "vector": [47.9747, -45.148, 16.2167] + }, + "0.0417": { + "vector": [48.736, -45.048, 14.3356] + }, + "0.25": { + "pre": { + "vector": [52.5026, -17.8309, 14.9255] + }, + "post": { + "vector": [52.5026, -17.8309, 14.9255] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [55.2344, -1.683, 13.2379] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [57.2084, 8.1878, 13.2048] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [56.6692, 8.6611, 12.7291] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [49.0852, 1.9395, 38.9189] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [47.9747, -45.148, 16.2167] + } + } + }, + "rightUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [16.2191, -25.6226, 8.3492] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [6.7657, -23.4256, 8.0985] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [11.842, -27.0652, 7.2266] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [10.3559, -34.2927, 3.7268] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.8333, -54.5501, -6.7123] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.5794, -74.6396, -11.0318] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [9.6203, -76.5605, -7.6452] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25.1419, -84.4683, -22.0117] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [96.0986, -78.0845, -85.2337] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [36.1165, -29.1989, -10.0069] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [11.7564, -25.3726, 12.117] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [16.2191, -25.6226, 8.3492] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 70.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 30.25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 64.47, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 35, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightArm": { + "rotation": { + "0.0": { + "post": { + "vector": [1.5723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [19.0723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1.5723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-122.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [62.5639, 47.1524, 15.2554] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [66.6663, 35.071, 26.8235] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [56.642, 11.6348, 12.021] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [62.5639, 47.1524, 15.2554] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [102.6708, -67.5103, -111.195] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [39.5333, -58.2896, -38.1208] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [3.4633, -63.0017, 4.3297] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [102.6708, -67.5103, -111.195] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 47.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 67.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [56.642, -11.6348, -12.021] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [62.5639, -47.1524, -15.2554] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [68.1644, -20.2626, -30.7248] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [56.642, -11.6348, -12.021] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [3.4633, 63.0017, -4.3297] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [24.946, 65.1543, 19.7878] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [56.6174, 71.1408, 54.4995] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [91.2326, 75.6979, 91.044] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [124.8322, 75.9135, 117.2593] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [10.1596, 53.2153, -0.0205] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [3.4633, 63.0017, -4.3297] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -47.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -65, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -13.75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -47.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [58.6639, -12.979, -10.1555] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [51.9743, -7.3457, -41.6133] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "vector": [49.1247, 46.1409, -14.6085] + }, + "0.5417": { + "vector": [47.4924, 46.8086, -17.2919] + }, + "0.625": { + "pre": { + "vector": [48.498, 32.7332, -19.6633] + }, + "post": { + "vector": [48.498, 32.7332, -19.6633] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [50.3209, 18.4195, -21.0365] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [52.3595, 12.0761, -18.5729] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [54.6865, 0.5484, -17.7725] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [58.6639, -12.979, -10.1555] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftKnee": { + "rotation": { + "0.0": { + "vector": [368.5638, 85.1905, 357.7539] + }, + "0.25": { + "pre": { + "vector": [398.7882, 80.5299, 391.5684] + }, + "post": { + "vector": [398.7882, 80.5299, 391.5684] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [381.0458, 32.5228, 371.1889] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [372.4405, 22.848, 365.7827] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [373.1434, 32.8887, 366.1943] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [377.0789, 68.6154, 369.202] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "vector": [364.786, 79.9017, 354.0811] + }, + "1.0": { + "vector": [368.5638, 85.1905, 357.7539] + } + } + }, + "frontLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -71.25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -63.52, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -36.25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -63.75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -71.25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftArm": { + "rotation": { + "0.0": { + "post": { + "vector": [19.0723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1.5723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [19.0723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-122.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-122.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.6405, -59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-6.6405, -59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.7989, -63.9863, 1.3167] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-7.7989, -63.9863, 1.3167] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.6405, -59.0256, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.6405, 59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-6.6405, 59.0256, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.7989, 63.9863, -1.3167] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-7.7989, 63.9863, -1.3167] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.6405, 59.0256, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "animation_length": 1, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, -13, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [42.2957, -6.3504, 13.1764] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "rightAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [50, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [15, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [32.9987, -60.3233, -31.883] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 57.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightArm": { + "rotation": { + "0.0": { + "post": { + "vector": [11.5723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-55.1487, 14.2759, -19.7773] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15.8623, -3.0275, -54.1446] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-26.4455, -12.0081, -49.703] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [11.5723, 22.8801, -14.3942] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-150, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-116.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [131.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -3.75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [44.0025, 27.6044, 9.1387] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [49.5447, -60.6291, -53.1412] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 52.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [44.0025, -27.6044, -9.1387] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [49.5447, 60.6291, 53.1412] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -52.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [42.2957, 6.3504, -13.1764] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [32.9987, 60.3233, 31.883] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftArm": { + "rotation": { + "0.0": { + "post": { + "vector": [11.5723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-55.1487, -14.2759, 19.7773] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15.8623, 3.0275, 54.1446] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-26.4455, 12.0081, 49.703] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [11.5723, -22.8801, 14.3942] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-150, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-116.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-115, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [131.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -3.75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "leftAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [50, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [15, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.6405, -59.0256, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.6405, 59.0256, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 4, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [29.9734, -1.4059, 2.4362] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [29.9764, 1.2497, -2.1654] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [88.5323, -43.0051, -69.1102] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [90.865, -43.0183, -72.5294] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [88.5323, -43.0051, -69.1102] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.9167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.1667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.375": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.625": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.6667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.875": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.9167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.125": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.1667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.2917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.375": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.4167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.625": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.6667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.75": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.7917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.875": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.9167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [16.7997, -21.1027, -8.655] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [16.54, -18.7077, -7.8923] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [16.7997, -21.1027, -8.655] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightArm": { + "rotation": { + "0.0": { + "post": { + "vector": [41.185, 31.5584, -5.7988] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [51.185, 31.5584, -5.7988] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [41.185, 31.5584, -5.7988] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [35.4513, -24.2065, -71.9369] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [36.1401, -26.2344, -73.5531] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [35.4513, -24.2065, -71.9369] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [23.5194, -20.7397, -16.2801] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [23.1668, -18.4443, -15.2287] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [23.5194, -20.7397, -16.2801] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [35.4513, 24.2065, 71.9369] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [36.1401, 26.2344, 73.5531] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [35.4513, 24.2065, 71.9369] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [23.5194, 20.7397, 16.2801] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [23.1668, 18.4443, 15.2287] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [23.5194, 20.7397, 16.2801] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [88.5323, 43.0051, 69.1102] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [90.865, 43.0183, 72.5294] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [88.5323, 43.0051, 69.1102] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [16.7997, 21.1027, 8.655] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [16.54, 18.7077, 7.8923] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [16.7997, 21.1027, 8.655] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftArm": { + "rotation": { + "0.0": { + "post": { + "vector": [41.185, -31.5584, 5.7988] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [51.185, -31.5584, 5.7988] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [41.185, -31.5584, 5.7988] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.9167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.0417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.1667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.375": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.4167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.5417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.625": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.6667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.875": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.9167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.0417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.125": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.1667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.25": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.2917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.375": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.4167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.5417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.625": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.6667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.75": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.7917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.875": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.9167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.9167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.1667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.375": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.625": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.6667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.875": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.9167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.0417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.125": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.1667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.25": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.2917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.375": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.4167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.5417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.625": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.6667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.75": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.7917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.875": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.9167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.9167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.0417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.125": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.1667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.25": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.375": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.4167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.5": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.5417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.625": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.6667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "2.875": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "2.9167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.0417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.125": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.1667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.25": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.2917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.375": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.4167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.5": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.5417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.625": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.6667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.75": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "3.7917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "3.875": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "3.9167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "flyattack": { + "loop": true, + "animation_length": 1, + "bones": { + "root": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 7, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -4, -5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "waist": { + "rotation": { + "0.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [29.9734, -1.4059, 2.4362] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [29.9764, 1.2497, -2.1654] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "abdomen": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [88.5323, -43.0051, -69.1102] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [90.865, -43.0183, -72.5294] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [88.5323, -43.0051, -69.1102] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, -75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "rightAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [40, -5, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, -5, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [16.7997, -21.1027, -8.655] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [16.54, -18.7077, -7.8923] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [16.7997, -21.1027, -8.655] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightArm": { + "rotation": { + "0.0": { + "post": { + "vector": [41.185, 31.5584, -5.7988] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-55.1487, 14.2759, -19.7773] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15.8623, -3.0275, -54.1446] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-15.8623, -3.0275, -54.1446] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [41.185, 31.5584, -5.7988] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-150, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-116.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [131.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.125": { + "pre": { + "vector": [0, -4, 0] + }, + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -3.75, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [35.4513, -24.2065, -71.9369] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [36.1401, -26.2344, -73.5531] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35.4513, -24.2065, -71.9369] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [23.5194, -20.7397, -16.2801] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [23.1668, -18.4443, -15.2287] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [23.5194, -20.7397, -16.2801] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backRightFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [35.4513, 24.2065, 71.9369] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [36.1401, 26.2344, 73.5531] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35.4513, 24.2065, 71.9369] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [23.5194, 20.7397, 16.2801] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [23.1668, 18.4443, 15.2287] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [23.5194, 20.7397, 16.2801] + }, + "lerp_mode": "catmullrom" + } + } + }, + "backLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftLeg": { + "rotation": { + "0.0": { + "post": { + "vector": [88.5323, 43.0051, 69.1102] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [90.865, 43.0183, 72.5294] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [88.5323, 43.0051, 69.1102] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftKnee": { + "rotation": { + "0.0": { + "post": { + "vector": [16.7997, 21.1027, 8.655] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [16.54, 18.7077, 7.8923] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [16.7997, 21.1027, 8.655] + }, + "lerp_mode": "catmullrom" + } + } + }, + "frontLeftFoot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -25, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftArm": { + "rotation": { + "0.0": { + "post": { + "vector": [41.185, -31.5584, 5.7988] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-55.1487, -14.2759, 19.7773] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15.8623, 3.0275, 54.1446] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-15.8623, 3.0275, 54.1446] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [41.185, -31.5584, 5.7988] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftElbow": { + "rotation": { + "0.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-150, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-116.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftClaw": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [145, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [131.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.125": { + "pre": { + "vector": [0, -4, 0] + }, + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, -3.75, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftJaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "leftAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [40, 5, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 5, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntennaBend": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-3.7398, -24.1499, -4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [-157.4836, -82.8025, 151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-3.6124, -19.1601, -4.5132] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftUpperWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftLowerWing": { + "rotation": { + "0.0": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-3.7398, 24.1499, 4.1684] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [-157.4836, 82.8025, -151.46] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-3.6124, 19.1601, 4.5132] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/missile_squid.animation.json b/common/src/main/resources/assets/antarchy/animations/missile_squid.animation.json new file mode 100644 index 00000000..1fb84b6c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/missile_squid.animation.json @@ -0,0 +1,2565 @@ +{ + "format_version": "1.8.0", + "animations": { + "pose": { + "loop": true, + "bones": { + "tentacle_left": { + "rotation": { + "vector": [-46.0351, -16.2295, -25.9524] + } + }, + "arm_left_1": { + "rotation": { + "vector": [-9.6888, 6.046, -31.6589] + } + }, + "bone": { + "rotation": { + "vector": [-47.5, 0, 0] + } + }, + "elbow_left_1": { + "rotation": { + "vector": [-18.2562, -8.3107, -6.1624] + } + }, + "mouth_left": { + "rotation": { + "vector": [0, 0, -25] + }, + "position": { + "vector": [0.79335, 0.60876, 0] + } + }, + "mouth_right": { + "rotation": { + "vector": [0, 0, 25] + }, + "position": { + "vector": [-0.79335, 0.60876, 0] + } + }, + "tentacle_right": { + "rotation": { + "vector": [-46.0351, 16.2295, 25.9524] + } + }, + "tentacle_left_2": { + "rotation": { + "vector": [-7.5, 0, 42.5] + } + }, + "tentacle_left_3": { + "rotation": { + "vector": [17.5, 0, 32.5] + } + }, + "tentacle_right_2": { + "rotation": { + "vector": [-7.5, 0, -42.5] + } + }, + "tentacle_right_3": { + "rotation": { + "vector": [17.5, 0, -32.5] + } + }, + "arm_right_1": { + "rotation": { + "vector": [-9.6888, -6.046, 31.6589] + } + }, + "arm_left_2": { + "rotation": { + "vector": [0, 0, -50] + } + }, + "elbow_left_2": { + "rotation": { + "vector": [0, 0, 17.5] + } + }, + "arm_left_3": { + "rotation": { + "vector": [18.204, -27.7997, -37.3157] + } + }, + "elbow_left_3": { + "rotation": { + "vector": [0, 0, -15] + } + }, + "arm_left_4": { + "rotation": { + "vector": [28.6453, 12.809, -12.025] + } + }, + "elbow_left_4": { + "rotation": { + "vector": [-32.5, 0, 0] + } + }, + "elbow_right_1": { + "rotation": { + "vector": [-18.2562, 8.3107, 6.1624] + } + }, + "arm_right_2": { + "rotation": { + "vector": [0, 0, 50] + } + }, + "elbow_right_2": { + "rotation": { + "vector": [0, 0, -17.5] + } + }, + "arm_right_3": { + "rotation": { + "vector": [18.204, 27.7997, 37.3157] + } + }, + "elbow_right_3": { + "rotation": { + "vector": [0, 0, 15] + } + }, + "arm_right_4": { + "rotation": { + "vector": [28.6453, -12.809, 12.025] + } + }, + "elbow_right_4": { + "rotation": { + "vector": [-32.5, 0, 0] + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 1.9231, + "bones": { + "tentacle_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-30.742, 48.7483, -30.1391] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [-39.4208, 41.9349, -42.6052] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [-42.547, 39.7149, -46.9482] + }, + "lerp_mode": "catmullrom" + }, + "1.3622": { + "post": { + "vector": [-28.8665, 48.9872, -27.8471] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [-30.742, 48.7483, -30.1391] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, -47.71] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, -9, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, 38.96] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [0, 0, -33.75] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, 21.46] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.3622": { + "post": { + "vector": [0, 0, -13.96] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, 26.88] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.3622": { + "post": { + "vector": [0, 0, -29.37] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-30.742, -48.7483, 30.1391] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [-39.4208, -41.9349, 42.6052] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [-42.547, -39.7149, 46.9482] + }, + "lerp_mode": "catmullrom" + }, + "1.3622": { + "post": { + "vector": [-28.8665, -48.9872, 27.8471] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [-30.742, -48.7483, 30.1391] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [-0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, -21.46] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.3622": { + "post": { + "vector": [0, 0, 13.96] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, -26.88] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.3622": { + "post": { + "vector": [0, 0, 29.37] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [5, -12.5, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [7.9497, -10.6894, -34.9729] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [8.5509, -10.4184, -37.7331] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [5, -12.5, -20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, 34.38] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [0, 0, -23.75] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [8.3511, -32.3819, -14.417] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [16.2172, -29.1618, -29.9214] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [17.1026, -29.0496, -31.4503] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [8.3511, -32.3819, -14.417] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [-0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, 35.42] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_4": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [44.37, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_4": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [-38.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, 47.71] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, -38.96] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [0, 0, 33.75] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 12.5, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [7.9497, 10.6894, 34.9729] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [8.5509, 10.4184, 37.7331] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [5, 12.5, 20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, -34.38] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [0, 0, 23.75] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [8.3511, 32.3819, 14.417] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [16.2172, 29.1618, 29.9214] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [17.1026, 29.0496, 31.4503] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [8.3511, 32.3819, 14.417] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [0, 0, -35.42] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_4": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [44.37, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_4": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4006": { + "post": { + "vector": [-38.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9615": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4423": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.9231": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "loop": "hold_on_last_frame", + "animation_length": 1.0016, + "bones": { + "tentacle_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-30.742, 48.7483, -30.1391] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-5.0139, 57.1314, -21.7342] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [24.9861, 57.1314, -21.7342] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30.742, 48.7483, -30.1391] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-12.5, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [21.4754, -28.565, 1.2447] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [15, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "cranium_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-20, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [12.7342, -7.9939, 24.1067] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-4.352, -0.9207, -6.3899] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-4.0149, 1.9164, 31.0079] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-30.742, -48.7483, 30.1391] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-39.9669, 22.5426, 103.1313] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-39.97, 22.54, 103.13] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-63.3609, -19.3972, 11.8529] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-61.9148, -26.0607, 8.1176] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30.742, -48.7483, 30.1391] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-0.57, 0.33, -0.75] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [5, -12.5, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [16.8953, -9.7456, -29.7987] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [71.9903, -6.8245, -86.7077] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5, -12.5, -20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [14.3351, 4.4639, 10.5616] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [29.3351, 4.4639, 10.5616] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [8.3511, -32.3819, -14.417] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [34.6552, -27.4718, -36.8375] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [87.0175, -17.1777, -81.3365] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [8.3511, -32.3819, -14.417] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [12.5, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [12.0869, 3.2114, -4.6598] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_4": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [17.3908, 3.5333, -3.54] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [71.143, -12.2766, 12.5684] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_4": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [22.5, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-30.4713, 0, -25.4713] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [27.5, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 12.5, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [17.6522, 8.26, 34.6326] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [41.8481, 1.8546, 53.6641] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5, 12.5, 20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-22.5, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [9.5458, -2.9932, -10.2499] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [8.3511, 32.3819, 14.417] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [38.4047, 28.2871, 34.1639] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [48.6747, -4.7699, 69.5982] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [8.3511, 32.3819, 14.417] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-18.586, -7.5206, -38.7677] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [12.5, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_4": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [71.9222, -14.2905, 4.6065] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_4": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "swim": { + "loop": true, + "animation_length": 1, + "bones": { + "tentacle_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-25.4946, 51.1084, -23.2869] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-39.4208, 41.9349, -42.6052] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-52.6084, 21.0557, -66.4374] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-26.265, 50.1446, -24.4298] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-25.4946, 51.1084, -23.2869] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -47.71] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 3.62] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "bone": { + "rotation": { + "0.0": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -9, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -9, 2] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -9, -2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -26.04] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 8.75] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 11.46] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 11.04] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -20.62] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 45.63] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-25.4946, -51.1084, 23.2869] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-39.4208, -41.9349, 42.6052] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-52.6084, -21.0557, 66.4374] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-26.265, -50.1446, 24.4298] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-25.4946, -51.1084, 23.2869] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.57023, 0.33107, -0.75182] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -11.46] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -57.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -11.04] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 20.62] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -45.63] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.4408, -13.3722, 8.2167] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [9.2761, -9.5646, -42.5058] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10.5941, -8.3313, -50.2258] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.1376, -11.6292, 1.1231] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1.4408, -13.3722, 8.2167] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -35.62] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 13.75] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.3807, -33.3023, 3.4247] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [23.333, -24.0512, -45.7136] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20.8525, -26.6062, -39.4709] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.1541, -31.5716, 0.7626] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1.3807, -33.3023, 3.4247] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [-0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -39.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 9.16] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_left_4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [43.6831, 8.7053, -9.0052] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [6.93, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_left_4": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [19.0179, 2.4565, -7.0884] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 47.71] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -3.62] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 26.04] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -8.75] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.4408, 13.3722, -8.2167] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [9.2761, 9.5646, 42.5058] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10.5941, 8.3313, 50.2258] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.1376, 11.6292, -1.1231] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1.4408, 13.3722, -8.2167] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 35.62] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -13.75] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.3807, 33.3023, -3.4247] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [23.333, 24.0512, 45.7136] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20.8525, 26.6062, 39.4709] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.1541, 31.5716, -0.7626] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-1.3807, 33.3023, -3.4247] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.54936, 0.00874, 0.83554] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 39.58] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -9.16] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "arm_right_4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [43.6831, -8.7053, 9.0052] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [6.93, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "elbow_right_4": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [19.0179, -2.4565, 7.0884] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/molevore.animation.json b/common/src/main/resources/assets/antarchy/animations/molevore.animation.json new file mode 100644 index 00000000..1c619fdd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/molevore.animation.json @@ -0,0 +1,3442 @@ +{ + "format_version": "1.8.0", + "animations": { + "digging up": { + "animation_length": 3, + "bones": { + "all": { + "rotation": { + "0.0": { + "post": { + "vector": [-67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-39.82, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-22.32, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [-17.32, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-7.32, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.3333": { + "post": { + "vector": [0.18, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -33, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, -19, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, -3.56, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, -11, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -2.68, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [0, -3.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0, -0.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-0.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [11.56, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.625": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-4.07, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [2.3, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [9.7341, -0.2574, -1.0971] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [17.2341, -0.2574, -1.0971] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-26.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [0.53, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-42.5, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [62.5, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [25, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [45.9148, -29.7644, -6.3649] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [45.9148, -29.7644, -6.3649] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0.1255, -30.2932, 5.1742] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [30, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [72, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-20, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [27.5, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [44.4894, 21.5715, 10.2702] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [44.4894, 21.5715, 10.2702] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [0.8781, 22.6078, -5.8874] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 1.6473, + "bones": { + "all": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6783": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.1628": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.6473": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4845": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0659": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6473": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.969": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6473": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "jaw2": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "left_arm": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "left_leg": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "right_arm": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "right_leg": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + } + } + }, + "claw swiping": { + "loop": true, + "animation_length": 1.5298, + "bones": { + "all": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8669": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9689": { + "post": { + "vector": [13.854, -27.1034, -16.6486] + }, + "lerp_mode": "catmullrom" + }, + "1.0709": { + "post": { + "vector": [13.854, -27.1034, -16.6486] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [13.854, 27.1034, 16.6486] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [0, 2.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9689": { + "post": { + "vector": [0, 1.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0709": { + "post": { + "vector": [0, 1.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 1.2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.102": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.102": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.204": { + "post": { + "vector": [-9.9575, 0.6518, 7.4718] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7139": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0709": { + "post": { + "vector": [-6.3503, 9.9399, -1.1005] + }, + "lerp_mode": "catmullrom" + }, + "1.3259": { + "post": { + "vector": [-3.5679, -5.7717, 0.0348] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.255": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8669": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2239": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.255": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6119": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7139": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.408": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5099": { + "post": { + "vector": [-20.8885, -16.4136, 6.1548] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [-51.2002, -20.8406, -4.8547] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [-65.9681, -29.0322, 12.2348] + }, + "lerp_mode": "catmullrom" + }, + "0.8669": { + "post": { + "vector": [-65.9681, -29.0322, 12.2348] + }, + "lerp_mode": "catmullrom" + }, + "0.9689": { + "post": { + "vector": [-65.9681, -29.0322, 12.2348] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [-80.1332, -29.7801, 26.9544] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [38.3217, 20.0938, 69.0278] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [0, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9689": { + "post": { + "vector": [-31.4426, 29.9684, -2.886] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3259": { + "post": { + "vector": [-12.2919, -29.3508, -12.2922] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.408": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5099": { + "post": { + "vector": [-20.8885, 16.4136, -6.1548] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [-51.2002, 20.8406, 4.8547] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [-80.1332, 29.7801, -26.9544] + }, + "lerp_mode": "catmullrom" + }, + "0.8669": { + "post": { + "vector": [-80.1332, 29.7801, -26.9544] + }, + "lerp_mode": "catmullrom" + }, + "0.9689": { + "post": { + "vector": [38.3217, -20.0938, -69.0278] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [38.3217, -20.0938, -69.0278] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [-65.9681, 29.0322, -12.2348] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [0, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9689": { + "post": { + "vector": [-10, 37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3259": { + "post": { + "vector": [-77.0302, -57.2943, 27.1217] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5298": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "hurt": { + "animation_length": 0.838, + "bones": { + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3724": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5819": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1164": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.5121": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1397": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5819": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3026": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5819": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1397": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "death": { + "animation_length": 2.1881, + "bones": { + "all": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2561": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3957": { + "post": { + "vector": [-0.0189, -0.4352, 4.9811] + }, + "lerp_mode": "catmullrom" + }, + "0.5819": { + "post": { + "vector": [-0.0189, -0.4352, 4.9811] + }, + "lerp_mode": "catmullrom" + }, + "0.7216": { + "post": { + "vector": [11.7582, 1.0115, 4.4183] + }, + "lerp_mode": "catmullrom" + }, + "0.838": { + "post": { + "vector": [9.0992, 7.5463, -30.0843] + }, + "lerp_mode": "catmullrom" + }, + "1.0242": { + "post": { + "vector": [14.6877, 6.3027, -25.2057] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3724": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7216": { + "post": { + "vector": [-12.3964, -1.6189, -7.3241] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1164": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1397": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3026": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0242": { + "post": { + "vector": [22.5971, 1.5929, -3.9291] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1397": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2328": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0242": { + "post": { + "vector": [-14.7822, -2.576, -9.6658] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4655": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [-31.063, -13.6689, -18.7459] + }, + "lerp_mode": "catmullrom" + }, + "0.8845": { + "post": { + "vector": [-12.3343, -13.4533, 0.2399] + }, + "lerp_mode": "catmullrom" + }, + "1.0242": { + "post": { + "vector": [2.2157, -2.6382, 49.9489] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4655": { + "post": { + "vector": [0, 0, 1.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [0, 5.5, 1.61] + }, + "lerp_mode": "catmullrom" + }, + "1.1639": { + "post": { + "vector": [0, 4, 1.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3957": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7449": { + "post": { + "vector": [-13.9219, 28.3807, 6.0075] + }, + "lerp_mode": "catmullrom" + }, + "0.8845": { + "post": { + "vector": [-5.6414, 40.9918, 8.677] + }, + "lerp_mode": "catmullrom" + }, + "1.0242": { + "post": { + "vector": [-59.7184, 44.4936, 9.4182] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4655": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7216": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0242": { + "post": { + "vector": [-17.5018, 12.1365, 15.9764] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4655": { + "post": { + "vector": [0, 0, 2.25] + }, + "lerp_mode": "catmullrom" + }, + "1.0242": { + "post": { + "vector": [0, 10.09, 2.29] + }, + "lerp_mode": "catmullrom" + }, + "1.1639": { + "post": { + "vector": [0, 6, 2.25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3957": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1639": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "digging down": { + "animation_length": 3, + "bones": { + "all": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-21.91, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [54.7684, 6.1379, -4.3184] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [54.5869, -8.1777, 5.775] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [71.2144, 14.26, -10.2511] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [82.3973, -4.0941, 2.8728] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [72.3272, -6.4766, 3.6335] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 5.3, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, -3.7, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -15.7, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [0, -31.7, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2917": { + "post": { + "vector": [0, -50.7, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-0.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [11.56, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-4.07, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [2.3, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [9.7341, -0.2574, -1.0971] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-26.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [0.53, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [-25, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-42.5, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [62.5, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-25, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-42.5, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [62.5, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [-25, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-42.5, -35, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [62.5, -35, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [90, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [30, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [72, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-20, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [30, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [72, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [-20, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [30, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [72, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7917": { + "post": { + "vector": [-20, 30, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [87.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "spinning": { + "loop": true, + "animation_length": 2.4987, + "bones": { + "mole_big": { + "rotation": { + "0.7649": { + "vector": [0, 0, 0] + }, + "1.2239": { + "vector": [0, 0, 358.87] + }, + "1.6318": { + "vector": [0, 0, 718.87] + } + }, + "position": { + "1.2239": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "all": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9179": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [0, 2.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9179": { + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + }, + "0.9689": { + "post": { + "vector": [0, 0, -7] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.102": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.102": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.204": { + "post": { + "vector": [-9.9575, 0.6518, 7.4718] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9179": { + "post": { + "vector": [0.46, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0199": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9179": { + "post": { + "vector": [0, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.255": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5609": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8669": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0199": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.255": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6119": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7139": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0199": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1729": { + "vector": [0, 0, 0] + }, + "1.2749": { + "vector": [0, 0, 0] + }, + "2.0398": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.408": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5099": { + "post": { + "vector": [-20.8885, -16.4136, 6.1548] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [-51.2002, -20.8406, -4.8547] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [-65.9681, -29.0322, 12.2348] + }, + "lerp_mode": "catmullrom" + }, + "0.8669": { + "post": { + "vector": [9.0072, 20.7048, 24.1487] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [0, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8159": { + "post": { + "vector": [0, -45, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2239": { + "post": { + "vector": [0, -45, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.408": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5099": { + "post": { + "vector": [-20.8885, 16.4136, -6.1548] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [-51.2002, 20.8406, 4.8547] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [-80.1332, 29.7801, -26.9544] + }, + "lerp_mode": "catmullrom" + }, + "0.8669": { + "post": { + "vector": [9.0072, -20.7048, -24.1487] + }, + "lerp_mode": "catmullrom" + }, + "1.2749": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.357": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6629": { + "post": { + "vector": [0, 3, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8159": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2239": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.7649": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0398": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 1.3158, + "bones": { + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0.0757, 0.8647, 7.4818] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [2.8425, -2.3463, -2.1753] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [5.0121, -2.6971, 5.3237] + }, + "lerp_mode": "catmullrom" + }, + "1.0965": { + "post": { + "vector": [-7.3587, -1.6645, 0.5636] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0.0757, 0.8647, 7.4818] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0.75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0, 0.75, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [1, 0.8, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6031": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.8772": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0965": { + "post": { + "vector": [1, 0.8125, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6579": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6579": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [0, 6, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [0, 2, -1] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 6, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [0, 2, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0, 6, -2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 6, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [0, 2, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0, 6, 2] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.3289": { + "post": { + "vector": [0, 0, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.7127": { + "post": { + "vector": [0, 6, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.9868": { + "post": { + "vector": [0, 2, -4] + }, + "lerp_mode": "catmullrom" + }, + "1.3158": { + "post": { + "vector": [0, 0, -2] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/moleworm.animation.json b/common/src/main/resources/assets/antarchy/animations/moleworm.animation.json new file mode 100644 index 00000000..1a11a49f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/moleworm.animation.json @@ -0,0 +1,869 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 0.7083, + "bones": { + "mole_little": { + "scale": { + "0.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "Dig": { + "animation_length": 2, + "bones": { + "mole_little": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-4.75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [34.6161, 5.7201, -8.2161] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [39.5686, -6.4087, 7.6926] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [64.025, 9.5767, -11.5994] + }, + "lerp_mode": "catmullrom" + }, + "1.875": { + "post": { + "vector": [90.0451, -3.5217, 0.3068] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -0.4, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -1.4, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [0, -2.65, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -7.65, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-22.299, -10.5497, 22.299] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [135.201, -10.5497, 22.299] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [61.0074, 14.3391, -31.3647] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [166.0074, 14.3391, -31.3647] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [78.5074, 14.3391, -31.3647] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-27.1784, 16.3634, -18.5125] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [120.3216, 16.3634, -18.5125] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [83.0009, 14.3242, 9.9483] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [150.5009, 14.3242, 9.9483] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [-17.5, 0, 0] + }, + "1.25": { + "vector": [10, 0, 0] + }, + "1.5": { + "vector": [-10, 0, 0] + }, + "1.75": { + "vector": [10, 0, 0] + }, + "2.0": { + "vector": [32.5, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, -1] + }, + "1.25": { + "vector": [0, 0.75, -1] + }, + "1.5": { + "vector": [0, 0.25, -1] + }, + "1.75": { + "vector": [0, 0.5, -1] + }, + "2.0": { + "vector": [0, -1, -2.5] + } + } + } + } + }, + "Death": { + "animation_length": 2.2083, + "bones": { + "mole_little": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [3.2935, 0.2479, 0.3764] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-9.7661, 0.5755, 0.8739] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-19.7661, 0.5755, 0.8739] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-19.7661, 0.5755, 0.8739] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [0.2339, 0.5755, 0.8739] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [5.2339, 0.5755, 0.8739] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [2.7339, 0.5755, 0.8739] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.5833": { + "post": { + "vector": [1, 0.7, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-30, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-30, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [-10, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0.3, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-28.9855, 17.6606, -9.54] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-28.9855, 17.6606, -9.54] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [-11.4855, 17.6606, -9.54] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [0, 0.7, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1.4, 0.7, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1.1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.7083": { + "post": { + "vector": [1.1, 0.8, 1.1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 1, + "bones": { + "left_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 2, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, 2] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 2, 2] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 2, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0.0757, 0.8647, 7.4818] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [2.8425, -2.3463, -2.1753] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [5.0121, -2.6971, 5.3237] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.3587, -1.6645, 0.5636] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.0757, 0.8647, 7.4818] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0.75, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0.75, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1, 0.8, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1.1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [1, 0.8125, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "vector": [0, 15, 0] + }, + "0.5": { + "vector": [0, -15, 0] + }, + "1.0": { + "vector": [0, 15, 0] + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "vector": [0, 22.5, 0] + }, + "0.5": { + "vector": [0, -22.5, 0] + }, + "1.0": { + "vector": [0, 22.5, 0] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/nightmare.animation.json b/common/src/main/resources/assets/antarchy/animations/nightmare.animation.json new file mode 100644 index 00000000..83198889 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/nightmare.animation.json @@ -0,0 +1,4830 @@ +{ + "format_version": "1.8.0", + "animations": { + "Idle": { + "loop": true, + "animation_length": 2, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [26.51036, -4.3678, 14.36222] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_foot": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "Tail": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_foot": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.46156, -0.55488, -18.37854] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.74537, -21.98229, 13.2218] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.74537, -21.98229, 13.2218] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-6.0329, -14.68845, 34.05029] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.0329, -14.68845, 34.05029] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-7.11718, -4.30139, 21.55449] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0.46156, 0.55488, 18.37854] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.74537, 21.98229, -13.2218] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-6.0329, 14.68845, -34.05029] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-7.11718, 4.30139, -21.55449] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "position": { + "0.0": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 1.5, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [12.11233, -2.54924, 22.28582] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [2.05239, 2.55868, -19.8423] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, -2.97, 7] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -1.46, 7.2] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [22.73, -1.53, -1.87] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-27.5, -2.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [27.52563, -1.43364, -2.04831] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [22.73, -1.53, -1.87] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 8.96, 0] + }, + "0.2083": { + "vector": [0, 4, 0] + }, + "0.375": { + "vector": [0, 2.46, -7] + }, + "0.75": { + "vector": [0, -1, 0] + }, + "1.125": { + "vector": [0, -2.16, 5] + }, + "1.2917": { + "vector": [0, -2.67, 2] + }, + "1.5": { + "vector": [0, 8.96, 0] + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-8.01, -0.27, 1.37] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.51392, -0.26267, 0.75154] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-7.47683, -0.25415, 1.35195] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-8.01, -0.27, 1.37] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 0] + }, + "0.4167": { + "vector": [0, 0, -3] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.5": { + "vector": [0, 0, 0] + } + } + }, + "L_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [0.72, 0.04, -0.08] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [4.99419, 0.03493, -0.24227] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [29.97207, 0.33518, -1.18002] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [-17.48784, 0.09822, 0.63249] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-24.29925, 0.21401, 0.89555] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0.72, 0.04, -0.08] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 2.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [27.52563, 1.43364, 2.04831] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-27.5, 2.5, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -1, 0] + }, + "0.375": { + "vector": [0, -2.16, 5] + }, + "0.5417": { + "vector": [0, -2.67, 2] + }, + "0.75": { + "vector": [0, 8.96, 0] + }, + "0.9583": { + "vector": [0, 4, 0] + }, + "1.125": { + "vector": [0, 2.46, -7] + }, + "1.5": { + "vector": [0, -1, 0] + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-7.47683, 0.25415, -1.35195] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [7.51392, 0.26267, -0.75154] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.9167": { + "vector": [0, 0, 0] + }, + "1.1667": { + "vector": [0, 0, -3] + }, + "1.5": { + "vector": [0, 0, 0] + } + } + }, + "R_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-17.48784, -0.09822, -0.63249] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-24.29925, -0.21401, -0.89555] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [4.99419, -0.03493, 0.24227] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [29.97207, -0.33518, 1.18002] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.86484, -13.40888, -17.38498] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-8.93842, -7.56235, 18.72187] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.86484, 13.40888, 17.38498] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [-8.93842, 7.56235, -18.72187] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "position": { + "0.0": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 0.5, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [30.91957, -11.60656, -25.46723] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [31.67477, -7.67669, -1.77087] + }, + "0.5": { + "vector": [0, 0, 0] + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [30.22742, -9.21817, 10.86011] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "vector": [12.5, 0, 0] + }, + "0.5": { + "vector": [12.5, 0, 0] + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.14537, 13.83447, -66.78912] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-6.26261, -12.2403, 54.06134] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.14537, 13.83447, -66.78912] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.32406, 3.17814, -14.63362] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-11.14442, -15.99543, 50.01072] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.32406, 3.17814, -14.63362] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.62155, 6.14718, -24.27788] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10.3696, -11.36311, 31.32523] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-0.45513, -4.44338, 16.94234] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1.62155, 6.14718, -24.27788] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.14537, -13.83447, 66.78912] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-6.26261, 12.2403, -54.06134] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.14537, -13.83447, 66.78912] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.32406, -3.17814, 14.63362] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-11.14442, 15.99543, -50.01072] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.32406, -3.17814, 14.63362] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.62155, -6.14718, 24.27788] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10.3696, 11.36311, -31.32523] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-0.45513, 4.44338, -16.94234] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1.62155, -6.14718, 24.27788] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 27, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly_attack": { + "animation_length": 0.75, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [73.33739, -3.83835, -0.88544] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [73.33739, -3.83835, -0.88544] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-2.91489, -1.67928, -0.38738] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-13.32374, -7.77783, 9.16322] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.26308, -7.90227, 9.30983] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [13.25635, -7.84783, 9.24569] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-3.32374, -7.77783, 9.16322] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [36.67626, -7.77783, 9.16322] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-36.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-25.46, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [42.78, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "vector": [12.5, 0, 0] + }, + "0.4167": { + "vector": [-7.5, 0, 0] + }, + "0.625": { + "vector": [12.5, 0, 0] + }, + "0.75": { + "vector": [12.5, 0, 0] + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-22.16, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [43.75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-41.98, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-25.46, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [42.78, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.14537, 13.83447, -66.78912] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-6.26261, -12.2403, 54.06134] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.14537, 13.83447, -66.78912] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.32406, 3.17814, -14.63362] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-11.14442, -15.99543, 50.01072] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.32406, 3.17814, -14.63362] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.62155, 6.14718, -24.27788] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10.3696, -11.36311, 31.32523] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-0.45513, -4.44338, 16.94234] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1.62155, 6.14718, -24.27788] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.14537, -13.83447, 66.78912] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-6.26261, 12.2403, -54.06134] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-9.14537, -13.83447, 66.78912] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-9.14537, -13.83447, 66.78912] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.32406, -3.17814, 14.63362] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-11.14442, 15.99543, -50.01072] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.32406, -3.17814, 14.63362] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.62155, -6.14718, 24.27788] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10.3696, 11.36311, -31.32523] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-0.45513, 4.44338, -16.94234] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1.62155, -6.14718, 24.27788] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 27, 39] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "animation_length": 0.7083, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [45.43287, -10.12741, -3.50843] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [45.43287, -10.12741, -3.50843] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-7.42695, 10.50227, 2.12085] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-7.42695, 10.50227, 2.12085] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "vector": [-49.49054, 12.19908, 22.62113] + }, + "0.2917": { + "vector": [-49.49054, 12.19908, 22.62113] + }, + "0.375": { + "pre": { + "vector": [2.5, 0, 0] + }, + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [52.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [34.53376, 2.8411, 2.79232] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [34.53376, 2.8411, 2.79232] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [34.53376, 2.8411, 2.79232] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-100.23633, 18.08026, 3.01914] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-100.23633, 18.08026, 3.01914] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [0, 0, -15] + }, + "0.5": { + "vector": [0, 0, -15] + }, + "0.5833": { + "vector": [0, 0, -15] + }, + "0.7083": { + "vector": [0, 0, 0] + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [99.0905, -12.17944, -17.7626] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [99.0905, -12.17944, -17.7626] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-13.82228, 44.83543, -44.99542] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-13.82228, 44.83543, -44.99542] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [14.89149, -9.29798, -43.71777] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [14.89149, -9.29798, -43.71777] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-4.13909, -5.53882, 43.52165] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-4.13909, -5.53882, 43.52165] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [14.14884, 8.83506, 43.517] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [14.14884, 8.83506, 43.517] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "position": { + "0.0": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "roar": { + "animation_length": 1, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [0, 0, 0] + }, + "0.4167": { + "vector": [1, 0, 0] + }, + "0.4583": { + "vector": [-1, 0, 0] + }, + "0.5": { + "vector": [3, 0, 0] + }, + "0.5417": { + "vector": [1, 0, 0] + }, + "0.5833": { + "vector": [5, 0, 0] + }, + "0.625": { + "vector": [2, 0, 0] + }, + "0.6667": { + "vector": [5, 0, 0] + }, + "0.7083": { + "vector": [2, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5.17693, 27.57777, -50.51577] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-5.17693, 27.57777, -50.51577] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [6.88003, -16.1299, -15.97603] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [6.88003, -16.1299, -15.97603] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [11.45696, -13.31791, -26.34198] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [11.45696, -13.31791, -26.34198] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-5.17693, -27.57777, 50.51577] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-5.17693, -27.57777, 50.51577] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [6.88003, 16.1299, 15.97603] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [6.88003, 16.1299, 15.97603] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [11.45696, 13.31791, 26.34198] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [11.45696, 13.31791, 26.34198] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "position": { + "0.0": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -0.5, -12] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "death": { + "animation_length": 1, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-55, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [7.15656, 2.24944, -17.35932] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [43.931, 4.14085, 0.75952] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [22.01816, 4.75113, -11.57518] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "vector": [-90, 0, 0] + }, + "0.4167": { + "vector": [-65, 0, 0] + }, + "0.5417": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-27.5, -37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-27.5, -37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [55.06424, 30.58184, -17.91705] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [37.5, 0, -52.5] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [36.39498, -17.72091, -24.60981] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [53.55239, -54.46865, -30.64234] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-80, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-80, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [44.19476, -22.13991, 4.11405] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_foot": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [40, 0, 0] + }, + "0.4167": { + "vector": [40, 0, 0] + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-2.56152, 6.42053, 16.53496] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [16.24074, -6.60796, -60.94387] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [2.14498, 17.78381, 79.71688] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-5.14352, -8.08642, 3.86612] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [16.63598, -5.01987, 94.75926] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-2.83416, 4.94206, -18.16209] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-2.56152, -6.42053, -16.53496] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [16.24074, 6.60796, 60.94387] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [2.14498, -17.78381, -79.71688] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-5.14352, 8.08642, -3.86612] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [16.63598, 5.01987, -94.75926] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-2.83416, -4.94206, 18.16209] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "0.0": { + "post": { + "vector": [0, -0.5, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -0.5, -2] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, -10.5, -21] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, -8.5, -21] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "animation": { + "animation_length": 0.5, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "vector": [0, 0, 0] + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, -7, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-27.5, -20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_foot": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [107.5, 0, 0] + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "vector": [12.5, 0, 0] + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-27.5, 20, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-81.70645, 12.0174, -16.10644] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, -6, 0] + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [74.49779, -14.33405, 13.84936] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_foot": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [107.5, 0, 0] + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, 6.42053, -28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-1.52852, -0.31071, 11.0296] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.14537, 13.83447, -66.78912] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, -17.5, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.32406, 3.17814, -14.63362] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, -16.41371, 35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [14.89149, -9.29798, -43.71777] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1.62155, 6.14718, -24.27788] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.56152, -6.42053, 28.46504] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-1.52852, 0.31071, -11.0296] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.14537, -13.83447, 66.78912] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 17.5, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.32406, -3.17814, 14.63362] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-6.15491, 16.41371, -35.88852] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [14.89149, 9.29798, 43.71777] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-1.62155, -6.14718, 24.27788] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "position": { + "0.0": { + "vector": [0, -0.5, -12] + }, + "0.2083": { + "vector": [0, -0.5, -12] + }, + "0.5": { + "vector": [0, 19, 0] + } + } + } + } + }, + "fly_damaged": { + "loop": true, + "animation_length": 0.25, + "bones": { + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [50.83739, -3.83835, -0.88544] + }, + "0.25": { + "vector": [31.67477, -7.67669, -1.77087] + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [45.61055, -7.34558, 8.65398] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [30.22742, -9.21817, 10.86011] + }, + "lerp_mode": "catmullrom" + } + } + }, + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-43.75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail": { + "rotation": { + "0.0": { + "vector": [12.5, 0, 0] + }, + "0.125": { + "vector": [-20, 0, 0] + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-26.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Tight": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [107.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.14537, 13.83447, -66.78912] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-6.26261, -12.2403, 54.06134] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.32406, 3.17814, -14.63362] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-11.14442, -15.99543, 50.01072] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.62155, 6.14718, -24.27788] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10.3696, -11.36311, 31.32523] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.14537, -13.83447, 66.78912] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-6.26261, 12.2403, -54.06134] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [-0.32406, -3.17814, 14.63362] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-11.14442, 15.99543, -50.01072] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_Wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [-1.62155, -6.14718, 24.27788] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10.3696, 11.36311, -31.32523] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Nightmare": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [-32.5, 0, 0] + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 16.85, 34] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 27, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/reverie.animation.json b/common/src/main/resources/assets/antarchy/animations/reverie.animation.json new file mode 100644 index 00000000..a481e6e6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/reverie.animation.json @@ -0,0 +1,286 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "core": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "trail": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 1, 1.2] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 2, + "bones": { + "core": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1.2, 1.1, 1.2] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1.2, 1.1, 1.2] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1.2] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [1.2, 1.1, 1.2] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [1.2, 1.1, 1.2] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "trail": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 2.7] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Reverie": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, -4.47, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, 8, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1.2, 1, 1.3] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "damaged": { + "animation_length": 0.75, + "bones": { + "core": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1.6, 1.3, 1.9] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.4, 0.5, 0.9] + }, + "lerp_mode": "catmullrom" + } + } + }, + "trail": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1, 1, 1.7] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "core_bone": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/scorpion.animation.json b/common/src/main/resources/assets/antarchy/animations/scorpion.animation.json new file mode 100644 index 00000000..6734e566 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/scorpion.animation.json @@ -0,0 +1,1038 @@ +{ + "format_version": "1.8.0", + "animations": { + "Idle": { + "loop": true, + "animation_length": 4, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.75": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [17.5, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [17.5, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "vector": [0, -22.5, 0] + } + }, + "r_leg3": { + "rotation": { + "vector": [0, 22.5, 0] + } + }, + "l_leg": { + "rotation": { + "vector": [0, 22.5, 0] + } + }, + "l_leg3": { + "rotation": { + "vector": [0, -22.5, 0] + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.5, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [57.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [29.18665, -3.0474, 1.33767] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -60, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 30, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-5.85463, -13.83447, 23.21088] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -60, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [9.00717, 20.70481, 24.14867] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [9.00717, 20.70481, 24.14867] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 45, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -32.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [4.8493, 11.53486, 22.99008] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -32.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10.68709, 24.11827, -24.78948] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 60, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -7.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [9.00717, -20.70481, -24.14867] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -45, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [8.09013, -21.33556, -21.23405] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [4.8493, -11.53486, -22.99008] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 32.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -57.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "scorpion": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "animation_length": 1, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [82.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 82.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 82.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -27.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_claw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -82.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -82.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 27.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -12.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "r_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -17.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "l_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -37.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "scorpion": { + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/shrink_ray.animation.json b/common/src/main/resources/assets/antarchy/animations/shrink_ray.animation.json new file mode 100644 index 00000000..2ea40355 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/shrink_ray.animation.json @@ -0,0 +1,88 @@ +{ + "format_version": "1.8.0", + "animations": { + "shrink_ray_active": { + "loop": true, + "animation_length": 1, + "bones": { + "blaster_rotating": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 360], + "easing": "easeInOutSine" + } + } + }, + "shrink_ray": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.75": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "blaster": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.75": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "blaster_end": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.75": { + "vector": [0, 0, 0.2], + "easing": "easeInBack" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/squidzooka.animation.json b/common/src/main/resources/assets/antarchy/animations/squidzooka.animation.json new file mode 100644 index 00000000..794cdcd3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/squidzooka.animation.json @@ -0,0 +1,143 @@ +{ + "format_version": "1.8.0", + "animations": { + "squidzooka_recoil": { + "animation_length": 0.875, + "bones": { + "squid": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [5, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, -1] + }, + "0.875": { + "vector": [0, 0, 0] + } + } + }, + "bazooka": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 1], + "easing": "easeInElastic" + }, + "0.875": { + "vector": [0, 0, 0] + } + } + }, + "all": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [-12.5, 0, 0], + "easing": "easeInElastic" + }, + "0.4167": { + "vector": [-10, 0, 0], + "easing": "easeInOutSine" + }, + "0.7917": { + "vector": [-0.91, 0, 0] + }, + "0.875": { + "vector": [0, 0, 0], + "easing": "linear" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 2, 4], + "easing": "easeInElastic", + "easingArgs": [2] + }, + "0.4583": { + "vector": [0, 0, 3.56], + "easing": "easeInOutSine" + }, + "0.8333": { + "vector": [0, 0, 0], + "easing": "easeInOutSine" + } + } + }, + "center": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.4583": { + "vector": [-3, 0, 0] + }, + "0.625": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [0, 0.3, 0] + }, + "0.875": { + "vector": [0, 0, 0] + } + } + }, + "squid2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [0, -7.5, 0] + }, + "0.1667": { + "vector": [0, 8.75, 0] + }, + "0.25": { + "vector": [0, -7.28, 0] + }, + "0.3333": { + "vector": [0, 3.69, 0] + }, + "0.4167": { + "vector": [0, -4.38, 0] + }, + "0.5417": { + "vector": [0, -0.69, 0] + }, + "0.875": { + "vector": [0, 0, 0] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/static_item.animation.json b/common/src/main/resources/assets/antarchy/animations/static_item.animation.json new file mode 100644 index 00000000..909c6196 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/static_item.animation.json @@ -0,0 +1,4 @@ +{ + "format_version": "1.8.0", + "animations": {} +} diff --git a/common/src/main/resources/assets/antarchy/animations/toreterror.animation.json b/common/src/main/resources/assets/antarchy/animations/toreterror.animation.json new file mode 100644 index 00000000..0f9ee2ff --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/toreterror.animation.json @@ -0,0 +1,3308 @@ +{ + "format_version": "1.8.0", + "animations": { + "Idle": { + "loop": true, + "animation_length": 4, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-44.65652, 7.06478, 7.09539] + }, + "lerp_mode": "catmullrom" + }, + "2.0417": { + "post": { + "vector": [-42.2624, -5.0266, -5.5102] + }, + "lerp_mode": "catmullrom" + }, + "3.375": { + "post": { + "vector": [-44.65652, 7.06478, 7.09539] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [8.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [10.23631, 1.89869, -47.19329] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-11.88777, -56.71902, 13.74709] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Shell": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Toreterror": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [10.23631, -1.89869, 47.19329] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-11.88777, 56.71902, -13.74709] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L-Leg": { + "rotation": { + "vector": [-37.5, 0, 0] + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 1.5, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-30.31201, 15.22408, 8.73407] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [18.85376, 11.01411, -46.21939] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-12.86367, -21.47099, -43.13036] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [18.85376, 11.01411, -46.21939] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Shell": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Toreterror": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -3.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -1.02, 8] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, -3.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.86367, 21.47099, 43.13036] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [18.85376, -11.01411, 46.21939] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-12.86367, 21.47099, 43.13036] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 6.21722, -1.53172] + }, + "0.125": { + "vector": [0, 7.06505, -5.92341] + }, + "0.25": { + "vector": [0, 4.87287, -6.34511] + }, + "0.5417": { + "vector": [0, 1.53671, -1.34248] + }, + "0.7083": { + "vector": [0, -2.42885, 3.17018] + }, + "0.75": { + "vector": [0, -1.21133, 1.58347] + }, + "1.0": { + "vector": [0, -3.03628, 3.96006] + }, + "1.5": { + "vector": [0, 6.21722, -1.53172] + } + } + }, + "L-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -2.42885, 3.17018] + }, + "0.25": { + "vector": [0, -3.03628, 3.96006] + }, + "0.75": { + "vector": [0, 6.21722, -1.53172] + }, + "0.875": { + "vector": [0, 7.06505, -5.92341] + }, + "1.0": { + "vector": [0, 4.87287, -6.34511] + }, + "1.2917": { + "vector": [0, 1.53671, -1.34248] + }, + "1.4583": { + "vector": [0, -2.42885, 3.17018] + }, + "1.5": { + "vector": [0, -2.42885, 3.17018] + } + } + } + } + }, + "shoot": { + "animation_length": 2.0833, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [30.64912, 0.19987, 0.07838] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-35.33371, 28.2448, 17.38675] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [16.19773, -0.43497, -1.30855] + }, + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": { + "vector": [-54.79931, -0.35608, -0.34522] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.7083": { + "vector": [0, -4.26133, 5.55347] + }, + "2.0833": { + "vector": [0, 0, 0] + } + } + }, + "R_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-32.94364, -35.56578, -33.39378] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.16925, -16.25159, -44.97451] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [11.93845, 3.73171, -47.10967] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.16925, -16.25159, -44.97451] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [34.85117, 2.48364, -58.25524] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [34.85117, 2.48364, -58.25524] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-26.52687, -62.41943, 27.61737] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-26.52687, -62.41943, 27.61737] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-1.30076, -76.78729, -1.99707] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-26.52687, -62.41943, 27.61737] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Shell": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-19.64778, 12.05369, 3.33516] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [-4.34824, -6.81392, -3.90997] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [-5.00251, -1.89261, -1.18754] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.7083": { + "vector": [0, -2.59808, 1.5] + }, + "2.0833": { + "vector": [0, 0, 0] + } + } + }, + "Toreterror": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, -1.25, 26] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -1.25, 14.88] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.625": { + "vector": [1, 1, 1] + }, + "0.7083": { + "vector": [1, 0.9, 1] + }, + "0.7917": { + "vector": [1, 1, 1] + } + } + }, + "L_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-32.94364, 35.56578, 33.39378] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.16925, 16.25159, 44.97451] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [11.93845, -3.73171, 47.10967] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.16925, 16.25159, 44.97451] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-26.52687, 62.41943, -27.61737] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-26.52687, 62.41943, -27.61737] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-1.30076, 76.78729, 1.99707] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-26.52687, 62.41943, -27.61737] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_eye": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.7083": { + "vector": [1, 0.3, 1] + }, + "2.0833": { + "vector": [1, 1, 1] + } + } + }, + "L_eye": { + "scale": { + "vector": [1, 0.3, 1] + } + }, + "R-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, -0.29994, 5.31628] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -3.04381, 3.96677] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -3.04381, 3.96677] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -3.04381, 3.96677] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0833": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "barrel": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.625": { + "vector": [1, 1, 1] + }, + "0.7083": { + "vector": [1, 0.5, 1] + }, + "0.7917": { + "vector": [1, 1, 1] + }, + "2.0833": { + "vector": [1, 1, 1] + } + } + } + } + }, + "jump_attack": { + "animation_length": 2, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-60, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -3.17341, -2.43505] + }, + "0.3333": { + "vector": [0, -4.75671, -3.65752] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + }, + "1.2083": { + "vector": [0, 0, 0] + }, + "1.4167": { + "vector": [0, 0, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + } + }, + "R_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [6.714, 59.38385, -40.87262] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [6.714, 59.38385, -40.87262] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.62196, 19.52026, -45.44585] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [4.14248, 34.48639, -44.30923] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [4.14248, 34.48639, -44.30923] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-11.1254, 33.08591, -71.40954] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [-11.1254, 33.08591, -71.40954] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-11.1254, 33.08591, -71.40954] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -0.25882, -0.96593] + }, + "0.3333": { + "vector": [0, 0.25764, 0.96185] + }, + "0.5": { + "vector": [0, 0.25764, 0.96185] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + }, + "1.2083": { + "vector": [-2.3035, -4.46791, 4.87151] + }, + "1.4167": { + "vector": [0, 0, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + } + }, + "R_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-184.16774, -40.21253, 189.00367] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-184.16774, -40.21253, 189.00367] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-9.52086, -46.89008, 10.74673] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-9.52086, -46.89008, 10.74673] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-9.52086, -46.89008, 10.74673] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-151.86972, -76.12795, 156.33517] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [-151.86972, -76.12795, 156.33517] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-151.86972, -76.12795, 156.33517] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Shell": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Toreterror": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [14.42297, 1.72857, -19.22149] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [14.42297, 1.72857, -19.22149] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [1, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [1, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0.26, -24.14, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [1, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 82.75, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 128.75, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 117.75, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 109.75, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -44.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [0, -15.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -16.62, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [0, -13.77, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [0, -16.62, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [0, -13.77, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, -15.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [6.714, -59.38385, 40.87262] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [6.714, -59.38385, 40.87262] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.62196, -19.52026, 45.44585] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [4.2745, -36.97965, 44.08324] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [4.2745, -36.97965, 44.08324] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [36.9935, -4.13257, -33.3698] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [36.9935, -4.13257, -33.3698] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [36.9935, -4.13257, -33.3698] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -0.25882, -0.96593] + }, + "0.3333": { + "vector": [0, 0.25764, 0.96185] + }, + "0.5": { + "vector": [0, 0.25764, 0.96185] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + }, + "1.2083": { + "vector": [0, 0, 0] + }, + "1.4167": { + "vector": [0, 0, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + } + }, + "L_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-184.16774, 40.21253, -189.00367] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-184.16774, 40.21253, -189.00367] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-9.52086, 46.89008, -10.74673] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-9.52086, 46.89008, -10.74673] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-9.52086, 46.89008, -10.74673] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [14.55071, 45.86745, 22.07379] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [14.55071, 45.86745, 22.07379] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [14.55071, 45.86745, 22.07379] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "vector": [-12.5, 0, 0] + }, + "0.5": { + "vector": [-12.5, 0, 0] + }, + "0.5833": { + "pre": { + "vector": [-142.5, 0, 0] + }, + "post": { + "vector": [-142.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [-117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-117.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [0, -2.80423, 0.36918] + }, + "0.5": { + "vector": [0, 1.95589, 4.02175] + }, + "0.5833": { + "vector": [0, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + }, + "1.2083": { + "vector": [0, 0, 0] + }, + "1.4167": { + "vector": [0, 0, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + } + }, + "L-Leg": { + "rotation": { + "0.0": { + "vector": [-37.5, 0, 0] + }, + "0.5": { + "vector": [-37.5, 0, 0] + }, + "0.5833": { + "pre": { + "vector": [-100, 0, 0] + }, + "post": { + "vector": [-100, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-100, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-100, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.2083": { + "post": { + "vector": [-65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-65, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "vector": [-37.5, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, -5.55347, -4.26133] + }, + "0.5833": { + "vector": [0, 0.00347, 0.00133] + }, + "0.6667": { + "vector": [0, 0.00347, 0.00133] + }, + "0.75": { + "vector": [0, 0.00347, 0.00133] + }, + "1.0": { + "vector": [0, 0.00347, 0.00133] + }, + "1.2083": { + "vector": [0, 0.00347, 0.00133] + }, + "1.4167": { + "vector": [0, 0.00347, 0.00133] + }, + "2.0": { + "vector": [0, 0, 0] + } + } + } + } + }, + "spin_attack": { + "animation_length": 2, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [12.40552, -0.42671, -3.86532] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-40.03828, -6.42252, -14.31771] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-40.03828, -6.42252, -14.31771] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-40.03828, -6.42252, -14.31771] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -8.42649, 7.07066] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -8.42649, 7.07066] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -8.42649, 7.07066] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-7.46814, -29.5764, 7.46814] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-7.46814, -29.5764, 7.46814] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-7.46814, -29.5764, 7.46814] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Shell": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [39.04, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": { + "vector": [29.9, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.625": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -0.64279, -0.76604] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -0.64279, -0.76604] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -0.64279, -0.76604] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Toreterror": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [37.5, 1.20877, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [39.4, -452.04, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, -720, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [38.06, -725.19, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [12.5, -682.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [12.5, -682.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [37.5, -345, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [38.33, -95, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [12.5, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [12.5, -7.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -29.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -29.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "1.0833": { + "post": { + "vector": [0, -29.25, -48] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, -29.25, -48] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, -1.25, -28] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-40.03828, 6.42252, 14.31771] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-40.03828, 6.42252, 14.31771] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-40.03828, 6.42252, 14.31771] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-6.91252, -20.07846, -1.38281] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-6.91252, -20.07846, -1.38281] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-6.91252, -20.07846, -1.38281] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [1, 7.14018, 5.47885] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [6.05456, 12.07085, 4.02709] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-1, 7.14018, 5.47885] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-1, 7.14018, 5.47885] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-1, 7.14018, 5.47885] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [-0.7, 11.60171, 6.24351] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [-0.04547, -4.23409, 3.9696] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Torso_2": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "death": { + "animation_length": 1, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [-50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-80, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-80, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, -0.3473, -1.96962] + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, -5.43394, -46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-41.82446, 61.60178, -20.34006] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-41.82446, 61.60178, -20.34006] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-41.82446, 61.60178, -20.34006] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-17.27382, -2.02172, -19.07743] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, -59.16159, 14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [19.99049, -34.93723, -13.65793] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [19.99049, -34.93723, -13.65793] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [19.99049, -34.93723, -13.65793] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [5.35753, 0.20136, 10.92476] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Shell": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Toreterror": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [15.625, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [147.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -2, 28.44] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -1.25, 15] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -21.25, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [0, -29.25, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, -21.25, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -23.25, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -22.25, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [0, -23.25, 8] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -22.25, 8] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm": { + "rotation": { + "0.0": { + "post": { + "vector": [3.42896, 5.43394, 46.98263] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-41.82446, -61.60178, 20.34006] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-41.82446, -61.60178, 20.34006] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-41.82446, -61.60178, 20.34006] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-17.27382, 2.02172, 19.07743] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L_arm2": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.73916, 59.16159, -14.75144] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [19.99049, 34.93723, 13.65793] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [19.99049, 34.93723, 13.65793] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [19.99049, 34.93723, 13.65793] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [5.35753, -0.20136, -10.92476] + }, + "lerp_mode": "catmullrom" + } + } + }, + "R_eye": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.375": { + "vector": [1, 1, 1] + }, + "0.5": { + "vector": [1, 0.3, 1] + } + } + }, + "L_eye": { + "scale": { + "0.375": { + "vector": [1, 1, 1] + }, + "0.5": { + "vector": [1, 0.3, 1] + } + } + }, + "R-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-14.79774, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, -0.35994, 5.39628] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -5.47885, 7.14018] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -5.47885, 7.14018] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -5.47885, 7.14018] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, -0.41965, 3.9162] + }, + "lerp_mode": "catmullrom" + } + } + }, + "L-Leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-60, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, 0, 0] + }, + "0.5833": { + "vector": [0, -1.68678, 1.0746] + } + } + }, + "cannon": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/triffid.animation.json b/common/src/main/resources/assets/antarchy/animations/triffid.animation.json new file mode 100644 index 00000000..4ce900dd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/triffid.animation.json @@ -0,0 +1,2732 @@ +{ + "format_version": "1.8.0", + "animations": { + "dormant": { + "loop": true, + "animation_length": 4, + "bones": { + "stemLower": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemUpper": { + "rotation": { + "0.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.6667": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueBase": { + "rotation": { + "0.0": { + "post": { + "vector": [-7.5, 0, 15] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-7.5, 0, 15] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [1, 0, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [9.9161, 1.2988, -7.3873] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [9.9161, 1.2988, -7.3873] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [1, 0, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueTip": { + "rotation": { + "0.0": { + "post": { + "vector": [14.7822, 2.576, -9.6658] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [14.7822, 2.576, -9.6658] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0, 1] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [1, 0, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, -92.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, 92.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipFront": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, 77.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafFront": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-90, -35, -90] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafBack": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-90, 50, -90] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipBack": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, -110] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L": { + "scale": { + "vector": [0, 0, 0] + } + }, + "saliva_L2": { + "scale": { + "vector": [0, 0, 0] + } + }, + "saliva_R": { + "scale": { + "vector": [0, 0, 0] + } + }, + "saliva_R2": { + "scale": { + "vector": [0, 0, 0] + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "stemLower": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemUpper": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueBase": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.8333": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.1667": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueTip": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "3.1667": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_L": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, -92.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, 92.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipFront": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, 77.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafFront": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-90, -35, -90] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafBack": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-90, 50, -90] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipBack": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [0, 0, -110] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_R": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 1, 1.8] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L2": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 1, 1.6] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_R": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [1, 1, 1.8] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "grab": { + "loop": true, + "animation_length": 1.125, + "bones": { + "base": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [-17.5, 0, 0] + }, + "0.5": { + "vector": [0, 0, 0] + }, + "0.5833": { + "vector": [-17.5, 0, 0] + }, + "0.625": { + "vector": [0, 0, 0] + }, + "1.125": { + "vector": [0, 0, 0] + } + } + }, + "stemLower": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemUpper": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.8333": { + "vector": [0, 0, 0] + }, + "0.875": { + "vector": [0, 1.0822, 4.88148] + }, + "0.9167": { + "vector": [0, 0, 0] + } + } + }, + "leafRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 62.5] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 62.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueBase": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.375": { + "vector": [1, 1, 1] + }, + "0.5": { + "vector": [1, 1.6, 1] + }, + "0.75": { + "vector": [1, 1.6, 1] + }, + "1.0": { + "pre": { + "vector": [1, 0.6, 1] + }, + "post": { + "vector": [1, 0.6, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.75": { + "pre": { + "vector": [1, 1.1813, 1] + }, + "post": { + "vector": [1, 1.1813, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 0.6, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueTip": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.75": { + "pre": { + "vector": [1, 1.0609, 1] + }, + "post": { + "vector": [1, 1.0609, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 0.7, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_L": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [0, 0, 7.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -62.5] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -62.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipFront": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 65] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafFront": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-90, -67.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-90, -67.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [90, -27.5, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [89.99996, -5, 89.99996] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-89.99999, -17.5, -89.99999] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafBack": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-90.00001, 12.5, -89.99999] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-90.00001, 12.5, -89.99999] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-90, 35, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipBack": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -65] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_R": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [0, 0, -7.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L2": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_R": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "death": { + "loop": true, + "animation_length": 1, + "bones": { + "stemLower": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, -65, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.6667": { + "vector": [1, 0.6, 1] + }, + "0.8333": { + "vector": [0, 0, 0] + } + } + }, + "stemMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemUpper": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [19.02384, 6.61911, -4.99615] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-0.98, 6.62, -5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [-2.94354, -33.87151, 0.23773] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueBase": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueTip": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_L": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.6667": { + "pre": { + "vector": [1, 1, 1] + }, + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipFront": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafFront": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [90, -20, 90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafBack": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [90.00001, 20, -270.00001] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipBack": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_R": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L2": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_R": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "attack": { + "loop": true, + "animation_length": 1, + "bones": { + "base": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7083": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -6] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemLower": { + "rotation": { + "0.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-8.21888, -5.71617, -34.58897] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-8.21888, -5.71617, -34.58897] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [79.10661, -20.70481, -22.20765] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [79.10661, -20.70481, -22.20765] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-23.42053, 4.20854, -24.66569] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-23.42053, 4.20854, -24.66569] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [8.06989, -41.56076, 30.78973] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [8.06989, -41.56076, 30.78973] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stemUpper": { + "rotation": { + "0.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-32.06488, -10.58927, -30.90686] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-32.06488, -10.58927, -30.90686] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [31.65996, -17.26588, 21.741] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [31.65996, -17.26588, 21.741] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [16.59918, -2.86544, 34.89743] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-28.22015, -26.49841, 37.56914] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueBase": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueMiddle": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tongueTip": { + "rotation": { + "0.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 0.9, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_L": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipRight": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [11.57417, 9.54195, -51.44258] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-1.78487, 2.7794, -25.4094] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [15.54307, -27.69337, -33.62515] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipLeft": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-2.03375, -7.33834, 38.44322] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 72.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipFront": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafFront": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-90, -32.5, -90] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-90, -22.5, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafBack": { + "rotation": { + "0.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-90, 15, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-63.78, 53.90614, -124.44928] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-90, 40, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leafTipBack": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -95] + }, + "lerp_mode": "catmullrom" + } + } + }, + "petal_R": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_L2": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + }, + "saliva_R": { + "scale": { + "0.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1, 1, 1] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/wasp.animation.json b/common/src/main/resources/assets/antarchy/animations/wasp.animation.json new file mode 100644 index 00000000..4770c7e9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/wasp.animation.json @@ -0,0 +1,1074 @@ +{ + "format_version": "1.8.0", + "animations": { + "attack": { + "loop": true, + "animation_length": 1, + "bones": { + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 13, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 19, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 19, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 19, -4] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [77.81, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "connector": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -2, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stinger": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -55] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-38.51223, -14.4627, -17.42399] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftjaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -47.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.7083": { + "vector": [0.00166, 0, 0.05754] + }, + "0.75": { + "vector": [1, 0, 0] + }, + "0.7917": { + "vector": [0.00166, 0, 0.05754] + } + } + }, + "rightjaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 47.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.7083": { + "vector": [-0.00166, 0, 0.05754] + }, + "0.75": { + "vector": [-1, 0, 0] + }, + "0.7917": { + "vector": [-0.00166, 0, 0.05754] + } + } + }, + "leftAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-38.51223, 14.4627, 17.42399] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 55] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntenna2": { + "rotation": { + "vector": [112.5, 0, 0] + } + }, + "leftAntenna2": { + "rotation": { + "vector": [112.5, 0, 0] + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-22.5, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-9.00717, -20.70481, 1.64867] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [22.5, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 22.5, -22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-22.5, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-9.00717, 20.70481, -1.64867] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [22.5, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -22.5, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "idle": { + "loop": true, + "animation_length": 0.5, + "bones": { + "root": { + "position": { + "0.0": { + "post": { + "vector": [0, 21, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 18, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 21, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 18, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 21, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "body": { + "rotation": { + "0.0": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [72.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "connector": { + "rotation": { + "0.0": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "stinger": { + "rotation": { + "0.0": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-24.05898, 8.42106, -20.94102] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-46.55898, 8.42106, -20.94102] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-24.05898, 8.42106, -20.94102] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftjaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightjaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntenna": { + "rotation": { + "0.0": { + "post": { + "vector": [-24.05898, -8.42106, 20.94102] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-46.55898, -8.42106, 20.94102] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-24.05898, -8.42106, 20.94102] + }, + "lerp_mode": "catmullrom" + } + } + }, + "rightAntenna2": { + "rotation": { + "0.0": { + "post": { + "vector": [112.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftAntenna2": { + "rotation": { + "0.0": { + "post": { + "vector": [112.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "leftWing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -90] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [46.50931, -11.00072, 10.26078] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [46.50931, 11.00072, -10.26078] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [47.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg2": { + "rotation": { + "0.0": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg3": { + "rotation": { + "0.0": { + "post": { + "vector": [22.16359, 3.54836, 2.45838] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [22.16359, 3.54836, 2.45838] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/antarchy_logo.png b/common/src/main/resources/assets/antarchy/antarchy_logo.png new file mode 100644 index 00000000..8d16480f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/antarchy_logo.png differ diff --git a/common/src/main/resources/assets/antarchy/blockstates/antimetal.json b/common/src/main/resources/assets/antarchy/blockstates/antimetal.json new file mode 100644 index 00000000..1b0e8cd8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/antimetal.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/antimetal_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/antimetal" + }, + "axis=z": { + "model": "antarchy:block/antimetal_horizontal", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/antimetal_scaffolding.json b/common/src/main/resources/assets/antarchy/blockstates/antimetal_scaffolding.json new file mode 100644 index 00000000..e70234b0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/antimetal_scaffolding.json @@ -0,0 +1,6 @@ +{ + "multipart": [ + { "when": { "bottom": "false" }, "apply": { "model": "antarchy:block/antimetal_scaffolding_stable" } }, + { "when": { "bottom": "true" }, "apply": { "model": "antarchy:block/antimetal_scaffolding_unstable" } } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/bed_bug_egg.json b/common/src/main/resources/assets/antarchy/blockstates/bed_bug_egg.json new file mode 100644 index 00000000..ccf93b78 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/bed_bug_egg.json @@ -0,0 +1,76 @@ +{ + "variants": { + "eggs=1,hatch=0": [ + { "model": "antarchy:block/bed_bug_egg_1" }, + { "model": "antarchy:block/bed_bug_egg_1", "y": 90 }, + { "model": "antarchy:block/bed_bug_egg_1", "y": 180 }, + { "model": "antarchy:block/bed_bug_egg_1", "y": 270 } + ], + "eggs=1,hatch=1": [ + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_1" }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_1", "y": 90 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_1", "y": 180 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_1", "y": 270 } + ], + "eggs=1,hatch=2": [ + { "model": "antarchy:block/very_cracked_bed_bug_egg_1" }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_1", "y": 90 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_1", "y": 180 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_1", "y": 270 } + ], + "eggs=2,hatch=0": [ + { "model": "antarchy:block/bed_bug_egg_2" }, + { "model": "antarchy:block/bed_bug_egg_2", "y": 90 }, + { "model": "antarchy:block/bed_bug_egg_2", "y": 180 }, + { "model": "antarchy:block/bed_bug_egg_2", "y": 270 } + ], + "eggs=2,hatch=1": [ + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_2" }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_2", "y": 90 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_2", "y": 180 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_2", "y": 270 } + ], + "eggs=2,hatch=2": [ + { "model": "antarchy:block/very_cracked_bed_bug_egg_2" }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_2", "y": 90 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_2", "y": 180 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_2", "y": 270 } + ], + "eggs=3,hatch=0": [ + { "model": "antarchy:block/bed_bug_egg_3" }, + { "model": "antarchy:block/bed_bug_egg_3", "y": 90 }, + { "model": "antarchy:block/bed_bug_egg_3", "y": 180 }, + { "model": "antarchy:block/bed_bug_egg_3", "y": 270 } + ], + "eggs=3,hatch=1": [ + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_3" }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_3", "y": 90 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_3", "y": 180 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_3", "y": 270 } + ], + "eggs=3,hatch=2": [ + { "model": "antarchy:block/very_cracked_bed_bug_egg_3" }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_3", "y": 90 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_3", "y": 180 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_3", "y": 270 } + ], + "eggs=4,hatch=0": [ + { "model": "antarchy:block/bed_bug_egg_4" }, + { "model": "antarchy:block/bed_bug_egg_4", "y": 90 }, + { "model": "antarchy:block/bed_bug_egg_4", "y": 180 }, + { "model": "antarchy:block/bed_bug_egg_4", "y": 270 } + ], + "eggs=4,hatch=1": [ + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_4" }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_4", "y": 90 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_4", "y": 180 }, + { "model": "antarchy:block/slightly_cracked_bed_bug_egg_4", "y": 270 } + ], + "eggs=4,hatch=2": [ + { "model": "antarchy:block/very_cracked_bed_bug_egg_4" }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_4", "y": 90 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_4", "y": 180 }, + { "model": "antarchy:block/very_cracked_bed_bug_egg_4", "y": 270 } + ] + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/blood_crystal_block.json b/common/src/main/resources/assets/antarchy/blockstates/blood_crystal_block.json new file mode 100644 index 00000000..ed30f83b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/blood_crystal_block.json @@ -0,0 +1,8 @@ +{ + "variants": { + "": { + "model": "antarchy:block/blood_crystal_block" + } + } +} + diff --git a/common/src/main/resources/assets/antarchy/blockstates/blood_crystal_cluster.json b/common/src/main/resources/assets/antarchy/blockstates/blood_crystal_cluster.json new file mode 100644 index 00000000..3b197f1e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/blood_crystal_cluster.json @@ -0,0 +1,11 @@ +{ + "variants": { + "facing=down": { "model": "antarchy:block/blood_crystal_cluster", "x": 180 }, + "facing=east": { "model": "antarchy:block/blood_crystal_cluster", "x": 90, "y": 90 }, + "facing=north": { "model": "antarchy:block/blood_crystal_cluster", "x": 90 }, + "facing=south": { "model": "antarchy:block/blood_crystal_cluster", "x": 90, "y": 180 }, + "facing=up": { "model": "antarchy:block/blood_crystal_cluster" }, + "facing=west": { "model": "antarchy:block/blood_crystal_cluster", "x": 90, "y": 270 } + } +} + diff --git a/common/src/main/resources/assets/antarchy/blockstates/brown_ant_nest.json b/common/src/main/resources/assets/antarchy/blockstates/brown_ant_nest.json new file mode 100644 index 00000000..36f298d0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/brown_ant_nest.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=north": [ + {"model": "antarchy:block/brown_ant_nest"}, + {"model": "antarchy:block/brown_ant_nest", "y": 90}, + {"model": "antarchy:block/brown_ant_nest", "y": 180}, + {"model": "antarchy:block/brown_ant_nest", "y": 270} + ], + "facing=east": [ + {"model": "antarchy:block/brown_ant_nest", "y": 90}, + {"model": "antarchy:block/brown_ant_nest", "y": 180}, + {"model": "antarchy:block/brown_ant_nest", "y": 270}, + {"model": "antarchy:block/brown_ant_nest"} + ], + "facing=south": [ + {"model": "antarchy:block/brown_ant_nest", "y": 180}, + {"model": "antarchy:block/brown_ant_nest", "y": 270}, + {"model": "antarchy:block/brown_ant_nest"}, + {"model": "antarchy:block/brown_ant_nest", "y": 90} + ], + "facing=west": [ + {"model": "antarchy:block/brown_ant_nest", "y": 270}, + {"model": "antarchy:block/brown_ant_nest"}, + {"model": "antarchy:block/brown_ant_nest", "y": 90}, + {"model": "antarchy:block/brown_ant_nest", "y": 180} + ] + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/budding_blood_crystal.json b/common/src/main/resources/assets/antarchy/blockstates/budding_blood_crystal.json new file mode 100644 index 00000000..547c0bd5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/budding_blood_crystal.json @@ -0,0 +1,8 @@ +{ + "variants": { + "": { + "model": "antarchy:block/budding_blood_crystal" + } + } +} + diff --git a/common/src/main/resources/assets/antarchy/blockstates/chiseled_dream_sandstone.json b/common/src/main/resources/assets/antarchy/blockstates/chiseled_dream_sandstone.json new file mode 100644 index 00000000..69bba0cf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/chiseled_dream_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/chiseled_dream_sandstone" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/chiseled_nyxite.json b/common/src/main/resources/assets/antarchy/blockstates/chiseled_nyxite.json new file mode 100644 index 00000000..e97afc92 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/chiseled_nyxite.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/chiseled_nyxite" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/chiseled_titanium.json b/common/src/main/resources/assets/antarchy/blockstates/chiseled_titanium.json new file mode 100644 index 00000000..b9ee9853 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/chiseled_titanium.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "antarchy:block/chiseled_titanium", "y": 180 }, + "facing=east": { "model": "antarchy:block/chiseled_titanium", "y": 270 }, + "facing=south": { "model": "antarchy:block/chiseled_titanium" }, + "facing=west": { "model": "antarchy:block/chiseled_titanium", "y": 90 } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/chiseled_uranium.json b/common/src/main/resources/assets/antarchy/blockstates/chiseled_uranium.json new file mode 100644 index 00000000..9fbfcb09 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/chiseled_uranium.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "antarchy:block/chiseled_uranium", "y": 180 }, + "facing=east": { "model": "antarchy:block/chiseled_uranium", "y": 270 }, + "facing=south": { "model": "antarchy:block/chiseled_uranium" }, + "facing=west": { "model": "antarchy:block/chiseled_uranium", "y": 90 } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cloud_block.json b/common/src/main/resources/assets/antarchy/blockstates/cloud_block.json new file mode 100644 index 00000000..b943df16 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cloud_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/cloud_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cornea_stalk.json b/common/src/main/resources/assets/antarchy/blockstates/cornea_stalk.json new file mode 100644 index 00000000..3da4f117 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cornea_stalk.json @@ -0,0 +1,32 @@ +{ + "variants": { + "age=0,hanging=false": { + "model": "antarchy:block/cornea_stalk_stage0" + }, + "age=0,hanging=true": { + "model": "antarchy:block/cornea_stalk_stage0", + "x": 180 + }, + "age=1,hanging=false": { + "model": "antarchy:block/cornea_stalk_stage1" + }, + "age=1,hanging=true": { + "model": "antarchy:block/cornea_stalk_stage1", + "x": 180 + }, + "age=2,hanging=false": { + "model": "antarchy:block/cornea_stalk_stage2" + }, + "age=2,hanging=true": { + "model": "antarchy:block/cornea_stalk_stage2", + "x": 180 + }, + "age=3,hanging=false": { + "model": "antarchy:block/cornea_stalk_stage2" + }, + "age=3,hanging=true": { + "model": "antarchy:block/cornea_stalk_stage2", + "x": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_dream_sandstone.json b/common/src/main/resources/assets/antarchy/blockstates/cut_dream_sandstone.json new file mode 100644 index 00000000..1c2dcbfb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_dream_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/cut_dream_sandstone" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/blockstates/cut_dream_sandstone_slab.json new file mode 100644 index 00000000..c8ed26bd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_dream_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/cut_dream_sandstone" + }, + "type=bottom": { + "model": "antarchy:block/cut_dream_sandstone_slab" + }, + "type=top": { + "model": "antarchy:block/cut_dream_sandstone_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_titanium.json b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium.json new file mode 100644 index 00000000..26893709 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "antarchy:block/cut_titanium", "y": 180 }, + "facing=east": { "model": "antarchy:block/cut_titanium", "y": 270 }, + "facing=south": { "model": "antarchy:block/cut_titanium" }, + "facing=west": { "model": "antarchy:block/cut_titanium", "y": 90 } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_slab.json b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_slab.json new file mode 100644 index 00000000..c26085f0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/cut_titanium" + }, + "type=bottom": { + "model": "antarchy:block/cut_titanium_slab" + }, + "type=top": { + "model": "antarchy:block/cut_titanium_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_stairs.json new file mode 100644 index 00000000..e92e9c60 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/cut_titanium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/cut_titanium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/cut_titanium_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_wall.json b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_wall.json new file mode 100644 index 00000000..182e05d8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_titanium_wall.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { + "when": { "up": "true" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_post" } + }, + { + "when": { "north": "low" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side", "uvlock": true } + }, + { + "when": { "east": "low" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side", "y": 90, "uvlock": true } + }, + { + "when": { "south": "low" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side", "y": 180, "uvlock": true } + }, + { + "when": { "west": "low" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side", "y": 270, "uvlock": true } + }, + { + "when": { "north": "tall" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side_tall", "uvlock": true } + }, + { + "when": { "east": "tall" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side_tall", "y": 90, "uvlock": true } + }, + { + "when": { "south": "tall" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side_tall", "y": 180, "uvlock": true } + }, + { + "when": { "west": "tall" }, + "apply": { "model": "antarchy:block/cut_titanium_wall_side_tall", "y": 270, "uvlock": true } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_uranium.json b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium.json new file mode 100644 index 00000000..6fdd07c1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "antarchy:block/cut_uranium", "y": 180 }, + "facing=east": { "model": "antarchy:block/cut_uranium", "y": 270 }, + "facing=south": { "model": "antarchy:block/cut_uranium" }, + "facing=west": { "model": "antarchy:block/cut_uranium", "y": 90 } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_slab.json b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_slab.json new file mode 100644 index 00000000..f7be845c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/cut_uranium" + }, + "type=bottom": { + "model": "antarchy:block/cut_uranium_slab" + }, + "type=top": { + "model": "antarchy:block/cut_uranium_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_stairs.json new file mode 100644 index 00000000..0884c46b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/cut_uranium_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/cut_uranium_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/cut_uranium_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_wall.json b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_wall.json new file mode 100644 index 00000000..c1083213 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/cut_uranium_wall.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { + "when": { "up": "true" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_post" } + }, + { + "when": { "north": "low" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side", "uvlock": true } + }, + { + "when": { "east": "low" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side", "y": 90, "uvlock": true } + }, + { + "when": { "south": "low" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side", "y": 180, "uvlock": true } + }, + { + "when": { "west": "low" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side", "y": 270, "uvlock": true } + }, + { + "when": { "north": "tall" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side_tall", "uvlock": true } + }, + { + "when": { "east": "tall" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side_tall", "y": 90, "uvlock": true } + }, + { + "when": { "south": "tall" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side_tall", "y": 180, "uvlock": true } + }, + { + "when": { "west": "tall" }, + "apply": { "model": "antarchy:block/cut_uranium_wall_side_tall", "y": 270, "uvlock": true } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/deepslate_titanium_ore.json b/common/src/main/resources/assets/antarchy/blockstates/deepslate_titanium_ore.json new file mode 100644 index 00000000..ef0e658f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/deepslate_titanium_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/deepslate_titanium_ore" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/deepslate_uranium_ore.json b/common/src/main/resources/assets/antarchy/blockstates/deepslate_uranium_ore.json new file mode 100644 index 00000000..852292b9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/deepslate_uranium_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/deepslate_uranium_ore" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_campfire.json b/common/src/main/resources/assets/antarchy/blockstates/dream_campfire.json new file mode 100644 index 00000000..ad17731b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_campfire.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,lit=false": { + "model": "minecraft:block/campfire_off", + "y": 270 + }, + "facing=east,lit=true": { + "model": "antarchy:block/dream_campfire", + "y": 270 + }, + "facing=north,lit=false": { + "model": "minecraft:block/campfire_off", + "y": 180 + }, + "facing=north,lit=true": { + "model": "antarchy:block/dream_campfire", + "y": 180 + }, + "facing=south,lit=false": { + "model": "minecraft:block/campfire_off" + }, + "facing=south,lit=true": { + "model": "antarchy:block/dream_campfire" + }, + "facing=west,lit=false": { + "model": "minecraft:block/campfire_off", + "y": 90 + }, + "facing=west,lit=true": { + "model": "antarchy:block/dream_campfire", + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_fire.json b/common/src/main/resources/assets/antarchy/blockstates/dream_fire.json new file mode 100644 index 00000000..7caa23c6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_fire.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "apply": [ + { + "model": "antarchy:block/dream_fire_floor0" + }, + { + "model": "antarchy:block/dream_fire_floor1" + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0" + }, + { + "model": "antarchy:block/dream_fire_side1" + }, + { + "model": "antarchy:block/dream_fire_side_alt0" + }, + { + "model": "antarchy:block/dream_fire_side_alt1" + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0", + "y": 90 + }, + { + "model": "antarchy:block/dream_fire_side1", + "y": 90 + }, + { + "model": "antarchy:block/dream_fire_side_alt0", + "y": 90 + }, + { + "model": "antarchy:block/dream_fire_side_alt1", + "y": 90 + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0", + "y": 180 + }, + { + "model": "antarchy:block/dream_fire_side1", + "y": 180 + }, + { + "model": "antarchy:block/dream_fire_side_alt0", + "y": 180 + }, + { + "model": "antarchy:block/dream_fire_side_alt1", + "y": 180 + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0", + "y": 270 + }, + { + "model": "antarchy:block/dream_fire_side1", + "y": 270 + }, + { + "model": "antarchy:block/dream_fire_side_alt0", + "y": 270 + }, + { + "model": "antarchy:block/dream_fire_side_alt1", + "y": 270 + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_fire_ceiling.json b/common/src/main/resources/assets/antarchy/blockstates/dream_fire_ceiling.json new file mode 100644 index 00000000..7d446ad2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_fire_ceiling.json @@ -0,0 +1,108 @@ +{ + "multipart": [ + { + "apply": [ + { + "model": "antarchy:block/dream_fire_floor0", + "x": 180 + }, + { + "model": "antarchy:block/dream_fire_floor1", + "x": 180 + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0", + "x": 180 + }, + { + "model": "antarchy:block/dream_fire_side1", + "x": 180 + }, + { + "model": "antarchy:block/dream_fire_side_alt0", + "x": 180 + }, + { + "model": "antarchy:block/dream_fire_side_alt1", + "x": 180 + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0", + "x": 180, + "y": 90 + }, + { + "model": "antarchy:block/dream_fire_side1", + "x": 180, + "y": 90 + }, + { + "model": "antarchy:block/dream_fire_side_alt0", + "x": 180, + "y": 90 + }, + { + "model": "antarchy:block/dream_fire_side_alt1", + "x": 180, + "y": 90 + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0", + "x": 180, + "y": 180 + }, + { + "model": "antarchy:block/dream_fire_side1", + "x": 180, + "y": 180 + }, + { + "model": "antarchy:block/dream_fire_side_alt0", + "x": 180, + "y": 180 + }, + { + "model": "antarchy:block/dream_fire_side_alt1", + "x": 180, + "y": 180 + } + ] + }, + { + "apply": [ + { + "model": "antarchy:block/dream_fire_side0", + "x": 180, + "y": 270 + }, + { + "model": "antarchy:block/dream_fire_side1", + "x": 180, + "y": 270 + }, + { + "model": "antarchy:block/dream_fire_side_alt0", + "x": 180, + "y": 270 + }, + { + "model": "antarchy:block/dream_fire_side_alt1", + "x": 180, + "y": 270 + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_lantern.json b/common/src/main/resources/assets/antarchy/blockstates/dream_lantern.json new file mode 100644 index 00000000..6312e6f1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_lantern.json @@ -0,0 +1,10 @@ +{ + "variants": { + "hanging=false": { + "model": "antarchy:block/dream_lantern" + }, + "hanging=true": { + "model": "antarchy:block/dream_lantern_hanging" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_sand.json b/common/src/main/resources/assets/antarchy/blockstates/dream_sand.json new file mode 100644 index 00000000..cb5d7e39 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_sand.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/dream_sand" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone.json b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone.json new file mode 100644 index 00000000..84332ed9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/dream_sandstone" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_slab.json new file mode 100644 index 00000000..e5a0ba81 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/dream_sandstone" + }, + "type=bottom": { + "model": "antarchy:block/dream_sandstone_slab" + }, + "type=top": { + "model": "antarchy:block/dream_sandstone_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_stairs.json new file mode 100644 index 00000000..81b7c0b1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/dream_sandstone_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_wall.json b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_wall.json new file mode 100644 index 00000000..750f5f4e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_sandstone_wall.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { + "when": { "up": "true" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_post" } + }, + { + "when": { "north": "low" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side", "uvlock": true } + }, + { + "when": { "east": "low" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side", "y": 90, "uvlock": true } + }, + { + "when": { "south": "low" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side", "y": 180, "uvlock": true } + }, + { + "when": { "west": "low" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side", "y": 270, "uvlock": true } + }, + { + "when": { "north": "tall" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side_tall", "uvlock": true } + }, + { + "when": { "east": "tall" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side_tall", "y": 90, "uvlock": true } + }, + { + "when": { "south": "tall" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side_tall", "y": 180, "uvlock": true } + }, + { + "when": { "west": "tall" }, + "apply": { "model": "antarchy:block/dream_sandstone_wall_side_tall", "y": 270, "uvlock": true } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_torch.json b/common/src/main/resources/assets/antarchy/blockstates/dream_torch.json new file mode 100644 index 00000000..24d5d039 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_torch.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/dream_torch" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_wall_torch.json b/common/src/main/resources/assets/antarchy/blockstates/dream_wall_torch.json new file mode 100644 index 00000000..41005310 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_wall_torch.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "antarchy:block/dream_wall_torch" + }, + "facing=north": { + "model": "antarchy:block/dream_wall_torch", + "y": 270 + }, + "facing=south": { + "model": "antarchy:block/dream_wall_torch", + "y": 90 + }, + "facing=west": { + "model": "antarchy:block/dream_wall_torch", + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/duct_tape.json b/common/src/main/resources/assets/antarchy/blockstates/duct_tape.json new file mode 100644 index 00000000..36188ad4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/duct_tape.json @@ -0,0 +1,156 @@ +{ + "variants": { + "face=floor,facing=north,uses=1": { + "model": "antarchy:block/duct_tape_use1" + }, + "face=floor,facing=east,uses=1": { + "model": "antarchy:block/duct_tape_use1", + "y": 90 + }, + "face=floor,facing=south,uses=1": { + "model": "antarchy:block/duct_tape_use1", + "y": 180 + }, + "face=floor,facing=west,uses=1": { + "model": "antarchy:block/duct_tape_use1", + "y": 270 + }, + "face=wall,facing=north,uses=1": { + "model": "antarchy:block/duct_tape_use1", + "x": 90 + }, + "face=wall,facing=east,uses=1": { + "model": "antarchy:block/duct_tape_use1", + "x": 90, + "y": 90 + }, + "face=wall,facing=south,uses=1": { + "model": "antarchy:block/duct_tape_use1", + "x": 90, + "y": 180 + }, + "face=wall,facing=west,uses=1": { + "model": "antarchy:block/duct_tape_use1", + "x": 90, + "y": 270 + }, + "face=floor,facing=north,uses=2": { + "model": "antarchy:block/duct_tape_use2" + }, + "face=floor,facing=east,uses=2": { + "model": "antarchy:block/duct_tape_use2", + "y": 90 + }, + "face=floor,facing=south,uses=2": { + "model": "antarchy:block/duct_tape_use2", + "y": 180 + }, + "face=floor,facing=west,uses=2": { + "model": "antarchy:block/duct_tape_use2", + "y": 270 + }, + "face=wall,facing=north,uses=2": { + "model": "antarchy:block/duct_tape_use2", + "x": 90 + }, + "face=wall,facing=east,uses=2": { + "model": "antarchy:block/duct_tape_use2", + "x": 90, + "y": 90 + }, + "face=wall,facing=south,uses=2": { + "model": "antarchy:block/duct_tape_use2", + "x": 90, + "y": 180 + }, + "face=wall,facing=west,uses=2": { + "model": "antarchy:block/duct_tape_use2", + "x": 90, + "y": 270 + }, + "face=floor,facing=north,uses=3": { + "model": "antarchy:block/duct_tape_use3" + }, + "face=floor,facing=east,uses=3": { + "model": "antarchy:block/duct_tape_use3", + "y": 90 + }, + "face=floor,facing=south,uses=3": { + "model": "antarchy:block/duct_tape_use3", + "y": 180 + }, + "face=floor,facing=west,uses=3": { + "model": "antarchy:block/duct_tape_use3", + "y": 270 + }, + "face=wall,facing=north,uses=3": { + "model": "antarchy:block/duct_tape_use3", + "x": 90 + }, + "face=wall,facing=east,uses=3": { + "model": "antarchy:block/duct_tape_use3", + "x": 90, + "y": 90 + }, + "face=wall,facing=south,uses=3": { + "model": "antarchy:block/duct_tape_use3", + "x": 90, + "y": 180 + }, + "face=wall,facing=west,uses=3": { + "model": "antarchy:block/duct_tape_use3", + "x": 90, + "y": 270 + }, + "face=floor,facing=north,uses=4": { + "model": "antarchy:block/duct_tape_use4" + }, + "face=floor,facing=east,uses=4": { + "model": "antarchy:block/duct_tape_use4", + "y": 90 + }, + "face=floor,facing=south,uses=4": { + "model": "antarchy:block/duct_tape_use4", + "y": 180 + }, + "face=floor,facing=west,uses=4": { + "model": "antarchy:block/duct_tape_use4", + "y": 270 + }, + "face=wall,facing=north,uses=4": { + "model": "antarchy:block/duct_tape_use4", + "x": 90 + }, + "face=wall,facing=east,uses=4": { + "model": "antarchy:block/duct_tape_use4", + "x": 90, + "y": 90 + }, + "face=wall,facing=south,uses=4": { + "model": "antarchy:block/duct_tape_use4", + "x": 90, + "y": 180 + }, + "face=wall,facing=west,uses=4": { + "model": "antarchy:block/duct_tape_use4", + "x": 90, + "y": 270 + }, + "face=ceiling,facing=north,uses=1": { "model": "antarchy:block/duct_tape_use1", "x": 180 }, + "face=ceiling,facing=east,uses=1": { "model": "antarchy:block/duct_tape_use1", "x": 180, "y": 90 }, + "face=ceiling,facing=south,uses=1": { "model": "antarchy:block/duct_tape_use1", "x": 180, "y": 180 }, + "face=ceiling,facing=west,uses=1": { "model": "antarchy:block/duct_tape_use1", "x": 180, "y": 270 }, + "face=ceiling,facing=north,uses=2": { "model": "antarchy:block/duct_tape_use2", "x": 180 }, + "face=ceiling,facing=east,uses=2": { "model": "antarchy:block/duct_tape_use2", "x": 180, "y": 90 }, + "face=ceiling,facing=south,uses=2": { "model": "antarchy:block/duct_tape_use2", "x": 180, "y": 180 }, + "face=ceiling,facing=west,uses=2": { "model": "antarchy:block/duct_tape_use2", "x": 180, "y": 270 }, + "face=ceiling,facing=north,uses=3": { "model": "antarchy:block/duct_tape_use3", "x": 180 }, + "face=ceiling,facing=east,uses=3": { "model": "antarchy:block/duct_tape_use3", "x": 180, "y": 90 }, + "face=ceiling,facing=south,uses=3": { "model": "antarchy:block/duct_tape_use3", "x": 180, "y": 180 }, + "face=ceiling,facing=west,uses=3": { "model": "antarchy:block/duct_tape_use3", "x": 180, "y": 270 }, + "face=ceiling,facing=north,uses=4": { "model": "antarchy:block/duct_tape_use4", "x": 180 }, + "face=ceiling,facing=east,uses=4": { "model": "antarchy:block/duct_tape_use4", "x": 180, "y": 90 }, + "face=ceiling,facing=south,uses=4": { "model": "antarchy:block/duct_tape_use4", "x": 180, "y": 180 }, + "face=ceiling,facing=west,uses=4": { "model": "antarchy:block/duct_tape_use4", "x": 180, "y": 270 } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/duplicator_log.json b/common/src/main/resources/assets/antarchy/blockstates/duplicator_log.json new file mode 100644 index 00000000..f2617ebb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/duplicator_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/duplicator_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/duplicator_log" + }, + "axis=z": { + "model": "antarchy:block/duplicator_log_horizontal", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/duplicator_sapling.json b/common/src/main/resources/assets/antarchy/blockstates/duplicator_sapling.json new file mode 100644 index 00000000..0ae78412 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/duplicator_sapling.json @@ -0,0 +1,10 @@ +{ + "variants": { + "stage=0": { + "model": "antarchy:block/duplicator_sapling" + }, + "stage=1": { + "model": "antarchy:block/duplicator_sapling" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/hushweed.json b/common/src/main/resources/assets/antarchy/blockstates/hushweed.json new file mode 100644 index 00000000..95e89967 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/hushweed.json @@ -0,0 +1,11 @@ +{ + "variants": { + "vertical_direction=up": { + "model": "antarchy:block/hushweed" + }, + "vertical_direction=down": { + "model": "antarchy:block/hushweed", + "x": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ichor.json b/common/src/main/resources/assets/antarchy/blockstates/ichor.json new file mode 100644 index 00000000..777d6ac3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ichor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "level=0": { "model": "minecraft:block/water" }, + "level=1": { "model": "minecraft:block/water" }, + "level=2": { "model": "minecraft:block/water" }, + "level=3": { "model": "minecraft:block/water" }, + "level=4": { "model": "minecraft:block/water" }, + "level=5": { "model": "minecraft:block/water" }, + "level=6": { "model": "minecraft:block/water" }, + "level=7": { "model": "minecraft:block/water" }, + "level=8": { "model": "minecraft:block/water" }, + "level=9": { "model": "minecraft:block/water" }, + "level=10": { "model": "minecraft:block/water" }, + "level=11": { "model": "minecraft:block/water" }, + "level=12": { "model": "minecraft:block/water" }, + "level=13": { "model": "minecraft:block/water" }, + "level=14": { "model": "minecraft:block/water" }, + "level=15": { "model": "minecraft:block/water" } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/infested_coarse_dirt.json b/common/src/main/resources/assets/antarchy/blockstates/infested_coarse_dirt.json new file mode 100644 index 00000000..7eead7c5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/infested_coarse_dirt.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/infested_coarse_dirt" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/infested_rooted_dirt.json b/common/src/main/resources/assets/antarchy/blockstates/infested_rooted_dirt.json new file mode 100644 index 00000000..265c8c5f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/infested_rooted_dirt.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/infested_rooted_dirt" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/large_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/blockstates/large_blood_crystal_bud.json new file mode 100644 index 00000000..197e4c66 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/large_blood_crystal_bud.json @@ -0,0 +1,11 @@ +{ + "variants": { + "facing=down": { "model": "antarchy:block/large_blood_crystal_bud", "x": 180 }, + "facing=east": { "model": "antarchy:block/large_blood_crystal_bud", "x": 90, "y": 90 }, + "facing=north": { "model": "antarchy:block/large_blood_crystal_bud", "x": 90 }, + "facing=south": { "model": "antarchy:block/large_blood_crystal_bud", "x": 90, "y": 180 }, + "facing=up": { "model": "antarchy:block/large_blood_crystal_bud" }, + "facing=west": { "model": "antarchy:block/large_blood_crystal_bud", "x": 90, "y": 270 } + } +} + diff --git a/common/src/main/resources/assets/antarchy/blockstates/medium_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/blockstates/medium_blood_crystal_bud.json new file mode 100644 index 00000000..98f84ebc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/medium_blood_crystal_bud.json @@ -0,0 +1,11 @@ +{ + "variants": { + "facing=down": { "model": "antarchy:block/medium_blood_crystal_bud", "x": 180 }, + "facing=east": { "model": "antarchy:block/medium_blood_crystal_bud", "x": 90, "y": 90 }, + "facing=north": { "model": "antarchy:block/medium_blood_crystal_bud", "x": 90 }, + "facing=south": { "model": "antarchy:block/medium_blood_crystal_bud", "x": 90, "y": 180 }, + "facing=up": { "model": "antarchy:block/medium_blood_crystal_bud" }, + "facing=west": { "model": "antarchy:block/medium_blood_crystal_bud", "x": 90, "y": 270 } + } +} + diff --git a/common/src/main/resources/assets/antarchy/blockstates/mossy_ouranwood_log.json b/common/src/main/resources/assets/antarchy/blockstates/mossy_ouranwood_log.json new file mode 100644 index 00000000..88132f1f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/mossy_ouranwood_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/mossy_ouranwood_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/mossy_ouranwood_log" + }, + "axis=z": { + "model": "antarchy:block/mossy_ouranwood_log_horizontal", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/mossy_ouranwood_wood.json b/common/src/main/resources/assets/antarchy/blockstates/mossy_ouranwood_wood.json new file mode 100644 index 00000000..b61ed794 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/mossy_ouranwood_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/mossy_ouranwood_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/mossy_ouranwood_wood" + }, + "axis=z": { + "model": "antarchy:block/mossy_ouranwood_wood", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite.json new file mode 100644 index 00000000..31bb0d89 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/nyxite" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_slab.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_slab.json new file mode 100644 index 00000000..dc9a81af --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/nyxite_bricks" + }, + "type=bottom": { + "model": "antarchy:block/nyxite_brick_slab" + }, + "type=top": { + "model": "antarchy:block/nyxite_brick_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_stairs.json new file mode 100644 index 00000000..286654a5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_brick_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_brick_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/nyxite_brick_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_wall.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_wall.json new file mode 100644 index 00000000..4283dd69 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_brick_wall.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { + "when": { "up": "true" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_post" } + }, + { + "when": { "north": "low" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side", "uvlock": true } + }, + { + "when": { "east": "low" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side", "y": 90, "uvlock": true } + }, + { + "when": { "south": "low" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side", "y": 180, "uvlock": true } + }, + { + "when": { "west": "low" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side", "y": 270, "uvlock": true } + }, + { + "when": { "north": "tall" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side_tall", "uvlock": true } + }, + { + "when": { "east": "tall" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side_tall", "y": 90, "uvlock": true } + }, + { + "when": { "south": "tall" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side_tall", "y": 180, "uvlock": true } + }, + { + "when": { "west": "tall" }, + "apply": { "model": "antarchy:block/nyxite_brick_wall_side_tall", "y": 270, "uvlock": true } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_bricks.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_bricks.json new file mode 100644 index 00000000..56a9727c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/nyxite_bricks" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_slab.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_slab.json new file mode 100644 index 00000000..e25f9f13 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/nyxite" + }, + "type=bottom": { + "model": "antarchy:block/nyxite_slab" + }, + "type=top": { + "model": "antarchy:block/nyxite_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_spike.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_spike.json new file mode 100644 index 00000000..02d39ff8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_spike.json @@ -0,0 +1,34 @@ +{ + "variants": { + "thickness=base,vertical_direction=down": { + "model": "antarchy:block/nyxite_spike_down_base" + }, + "thickness=base,vertical_direction=up": { + "model": "antarchy:block/nyxite_spike_up_base" + }, + "thickness=frustum,vertical_direction=down": { + "model": "antarchy:block/nyxite_spike_down_frustum" + }, + "thickness=frustum,vertical_direction=up": { + "model": "antarchy:block/nyxite_spike_up_frustum" + }, + "thickness=middle,vertical_direction=down": { + "model": "antarchy:block/nyxite_spike_down_middle" + }, + "thickness=middle,vertical_direction=up": { + "model": "antarchy:block/nyxite_spike_up_middle" + }, + "thickness=tip,vertical_direction=down": { + "model": "antarchy:block/nyxite_spike_down_tip" + }, + "thickness=tip,vertical_direction=up": { + "model": "antarchy:block/nyxite_spike_up_tip" + }, + "thickness=tip_merge,vertical_direction=down": { + "model": "antarchy:block/nyxite_spike_down_tip_merge" + }, + "thickness=tip_merge,vertical_direction=up": { + "model": "antarchy:block/nyxite_spike_up_tip_merge" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_stairs.json new file mode 100644 index 00000000..d49f23d4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/nyxite_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/nyxite_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/nyxite_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/nyxite_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/nyxite_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/nyxite_wall.json b/common/src/main/resources/assets/antarchy/blockstates/nyxite_wall.json new file mode 100644 index 00000000..12682b5c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/nyxite_wall.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { + "when": { "up": "true" }, + "apply": { "model": "antarchy:block/nyxite_wall_post" } + }, + { + "when": { "north": "low" }, + "apply": { "model": "antarchy:block/nyxite_wall_side", "uvlock": true } + }, + { + "when": { "east": "low" }, + "apply": { "model": "antarchy:block/nyxite_wall_side", "y": 90, "uvlock": true } + }, + { + "when": { "south": "low" }, + "apply": { "model": "antarchy:block/nyxite_wall_side", "y": 180, "uvlock": true } + }, + { + "when": { "west": "low" }, + "apply": { "model": "antarchy:block/nyxite_wall_side", "y": 270, "uvlock": true } + }, + { + "when": { "north": "tall" }, + "apply": { "model": "antarchy:block/nyxite_wall_side_tall", "uvlock": true } + }, + { + "when": { "east": "tall" }, + "apply": { "model": "antarchy:block/nyxite_wall_side_tall", "y": 90, "uvlock": true } + }, + { + "when": { "south": "tall" }, + "apply": { "model": "antarchy:block/nyxite_wall_side_tall", "y": 180, "uvlock": true } + }, + { + "when": { "west": "tall" }, + "apply": { "model": "antarchy:block/nyxite_wall_side_tall", "y": 270, "uvlock": true } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/orange_milkweed.json b/common/src/main/resources/assets/antarchy/blockstates/orange_milkweed.json new file mode 100644 index 00000000..95ae5fe0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/orange_milkweed.json @@ -0,0 +1,10 @@ +{ + "variants": { + "half=lower": { + "model": "antarchy:block/orange_milkweed_bottom" + }, + "half=upper": { + "model": "antarchy:block/orange_milkweed_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_acorn.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_acorn.json new file mode 100644 index 00000000..d3b2cb3d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_acorn.json @@ -0,0 +1,22 @@ +{ + "variants": { + "hanging=false,stage=0": { + "model": "antarchy:block/ouranwood_sapling_0" + }, + "hanging=true,stage=0": { + "model": "antarchy:block/ouranwood_acorn_hanging" + }, + "hanging=false,stage=1": { + "model": "antarchy:block/ouranwood_sapling_1" + }, + "hanging=true,stage=1": { + "model": "antarchy:block/ouranwood_acorn_hanging" + }, + "hanging=false,stage=2": { + "model": "antarchy:block/ouranwood_sapling_2" + }, + "hanging=true,stage=2": { + "model": "antarchy:block/ouranwood_acorn_hanging" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_button.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_button.json new file mode 100644 index 00000000..9b45dcb2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "antarchy:block/ouranwood_button", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "antarchy:block/ouranwood_button", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "antarchy:block/ouranwood_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "antarchy:block/ouranwood_button", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "antarchy:block/ouranwood_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "antarchy:block/ouranwood_button" + }, + "face=floor,facing=north,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "antarchy:block/ouranwood_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "antarchy:block/ouranwood_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "antarchy:block/ouranwood_button", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "antarchy:block/ouranwood_button", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "antarchy:block/ouranwood_button", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "antarchy:block/ouranwood_button", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "antarchy:block/ouranwood_button_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_door.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_door.json new file mode 100644 index 00000000..7a140e6b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "antarchy:block/ouranwood_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "antarchy:block/ouranwood_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "antarchy:block/ouranwood_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "antarchy:block/ouranwood_door_top_right_open", + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_fence.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_fence.json new file mode 100644 index 00000000..0799a6d2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "antarchy:block/ouranwood_fence_post" + } + }, + { + "apply": { + "model": "antarchy:block/ouranwood_fence_side", + "uvlock": true + }, + "when": { + "north": "true" + } + }, + { + "apply": { + "model": "antarchy:block/ouranwood_fence_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "true" + } + }, + { + "apply": { + "model": "antarchy:block/ouranwood_fence_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "true" + } + }, + { + "apply": { + "model": "antarchy:block/ouranwood_fence_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "true" + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_fence_gate.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_fence_gate.json new file mode 100644 index 00000000..73a6e4cb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "model": "antarchy:block/ouranwood_fence_gate", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=false,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_open", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=false": { + "model": "antarchy:block/ouranwood_fence_gate_wall", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_wall_open", + "uvlock": true, + "y": 270 + }, + "facing=north,in_wall=false,open=false": { + "model": "antarchy:block/ouranwood_fence_gate", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=false,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_open", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=false": { + "model": "antarchy:block/ouranwood_fence_gate_wall", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_wall_open", + "uvlock": true, + "y": 180 + }, + "facing=south,in_wall=false,open=false": { + "model": "antarchy:block/ouranwood_fence_gate", + "uvlock": true + }, + "facing=south,in_wall=false,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_open", + "uvlock": true + }, + "facing=south,in_wall=true,open=false": { + "model": "antarchy:block/ouranwood_fence_gate_wall", + "uvlock": true + }, + "facing=south,in_wall=true,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_wall_open", + "uvlock": true + }, + "facing=west,in_wall=false,open=false": { + "model": "antarchy:block/ouranwood_fence_gate", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=false,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_open", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=false": { + "model": "antarchy:block/ouranwood_fence_gate_wall", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=true": { + "model": "antarchy:block/ouranwood_fence_gate_wall_open", + "uvlock": true, + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_hanging_sign.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_hanging_sign.json new file mode 100644 index 00000000..019498fd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/jungle_hanging_sign" + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_leaves.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_leaves.json new file mode 100644 index 00000000..9935d479 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "antarchy:block/ouranwood_leaves" } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_log.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_log.json new file mode 100644 index 00000000..1b6ba3ac --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/ouranwood_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/ouranwood_log" + }, + "axis=z": { + "model": "antarchy:block/ouranwood_log_horizontal", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_planks.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_planks.json new file mode 100644 index 00000000..c895d554 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/ouranwood_planks" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_pressure_plate.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_pressure_plate.json new file mode 100644 index 00000000..09b030c1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "antarchy:block/ouranwood_pressure_plate" + }, + "powered=true": { + "model": "antarchy:block/ouranwood_pressure_plate_down" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_sign.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_sign.json new file mode 100644 index 00000000..883b1859 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/jungle_sign" + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_slab.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_slab.json new file mode 100644 index 00000000..89a777a6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "antarchy:block/ouranwood_slab" + }, + "type=double": { + "model": "antarchy:block/ouranwood_planks" + }, + "type=top": { + "model": "antarchy:block/ouranwood_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_stairs.json new file mode 100644 index 00000000..086b7806 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/ouranwood_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/ouranwood_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/ouranwood_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/ouranwood_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/ouranwood_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/ouranwood_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/ouranwood_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/ouranwood_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/ouranwood_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/ouranwood_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_trapdoor.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_trapdoor.json new file mode 100644 index 00000000..a4ce7c6e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "antarchy:block/ouranwood_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "antarchy:block/ouranwood_trapdoor_open", + "x": 180, + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wall_hanging_sign.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wall_hanging_sign.json new file mode 100644 index 00000000..019498fd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wall_hanging_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/jungle_hanging_sign" + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wall_sign.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wall_sign.json new file mode 100644 index 00000000..883b1859 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/jungle_sign" + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wood.json b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wood.json new file mode 100644 index 00000000..535c9e92 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/ouranwood_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/ouranwood_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/ouranwood_wood" + }, + "axis=z": { + "model": "antarchy:block/ouranwood_wood", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/pale_nyxite.json b/common/src/main/resources/assets/antarchy/blockstates/pale_nyxite.json new file mode 100644 index 00000000..373e3cef --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/pale_nyxite.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/pale_nyxite" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/pink_milkweed.json b/common/src/main/resources/assets/antarchy/blockstates/pink_milkweed.json new file mode 100644 index 00000000..01e494dd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/pink_milkweed.json @@ -0,0 +1,10 @@ +{ + "variants": { + "half=lower": { + "model": "antarchy:block/pink_milkweed_bottom" + }, + "half=upper": { + "model": "antarchy:block/pink_milkweed_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/polished_antimetal.json b/common/src/main/resources/assets/antarchy/blockstates/polished_antimetal.json new file mode 100644 index 00000000..ab4bdb87 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/polished_antimetal.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/polished_antimetal_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/polished_antimetal" + }, + "axis=z": { + "model": "antarchy:block/polished_antimetal_horizontal", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite.json b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite.json new file mode 100644 index 00000000..362d70db --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/polished_nyxite" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_slab.json b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_slab.json new file mode 100644 index 00000000..13dd1e97 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/polished_nyxite" + }, + "type=bottom": { + "model": "antarchy:block/polished_nyxite_slab" + }, + "type=top": { + "model": "antarchy:block/polished_nyxite_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_stairs.json new file mode 100644 index 00000000..6cf3d7a7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/polished_nyxite_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/polished_nyxite_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/polished_nyxite_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_wall.json b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_wall.json new file mode 100644 index 00000000..42ac2c88 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/polished_nyxite_wall.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { + "when": { "up": "true" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_post" } + }, + { + "when": { "north": "low" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side", "uvlock": true } + }, + { + "when": { "east": "low" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side", "y": 90, "uvlock": true } + }, + { + "when": { "south": "low" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side", "y": 180, "uvlock": true } + }, + { + "when": { "west": "low" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side", "y": 270, "uvlock": true } + }, + { + "when": { "north": "tall" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side_tall", "uvlock": true } + }, + { + "when": { "east": "tall" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side_tall", "y": 90, "uvlock": true } + }, + { + "when": { "south": "tall" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side_tall", "y": 180, "uvlock": true } + }, + { + "when": { "west": "tall" }, + "apply": { "model": "antarchy:block/polished_nyxite_wall_side_tall", "y": 270, "uvlock": true } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/potent_nyxite.json b/common/src/main/resources/assets/antarchy/blockstates/potent_nyxite.json new file mode 100644 index 00000000..a0cc884a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/potent_nyxite.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/potent_nyxite" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/rainbow_ant_nest.json b/common/src/main/resources/assets/antarchy/blockstates/rainbow_ant_nest.json new file mode 100644 index 00000000..df73b411 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/rainbow_ant_nest.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=north": [ + {"model": "antarchy:block/rainbow_ant_nest"}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 90}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 180}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 270} + ], + "facing=east": [ + {"model": "antarchy:block/rainbow_ant_nest", "y": 90}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 180}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 270}, + {"model": "antarchy:block/rainbow_ant_nest"} + ], + "facing=south": [ + {"model": "antarchy:block/rainbow_ant_nest", "y": 180}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 270}, + {"model": "antarchy:block/rainbow_ant_nest"}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 90} + ], + "facing=west": [ + {"model": "antarchy:block/rainbow_ant_nest", "y": 270}, + {"model": "antarchy:block/rainbow_ant_nest"}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 90}, + {"model": "antarchy:block/rainbow_ant_nest", "y": 180} + ] + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/raw_titanium_block.json b/common/src/main/resources/assets/antarchy/blockstates/raw_titanium_block.json new file mode 100644 index 00000000..91be61a3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/raw_titanium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/raw_titanium_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/raw_uranium_block.json b/common/src/main/resources/assets/antarchy/blockstates/raw_uranium_block.json new file mode 100644 index 00000000..d7f908af --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/raw_uranium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/raw_uranium_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/red_ant_nest.json b/common/src/main/resources/assets/antarchy/blockstates/red_ant_nest.json new file mode 100644 index 00000000..a8412942 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/red_ant_nest.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/red_ant_nest" + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/blockstates/small_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/blockstates/small_blood_crystal_bud.json new file mode 100644 index 00000000..b5838c73 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/small_blood_crystal_bud.json @@ -0,0 +1,11 @@ +{ + "variants": { + "facing=down": { "model": "antarchy:block/small_blood_crystal_bud", "x": 180 }, + "facing=east": { "model": "antarchy:block/small_blood_crystal_bud", "x": 90, "y": 90 }, + "facing=north": { "model": "antarchy:block/small_blood_crystal_bud", "x": 90 }, + "facing=south": { "model": "antarchy:block/small_blood_crystal_bud", "x": 90, "y": 180 }, + "facing=up": { "model": "antarchy:block/small_blood_crystal_bud" }, + "facing=west": { "model": "antarchy:block/small_blood_crystal_bud", "x": 90, "y": 270 } + } +} + diff --git a/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone.json b/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone.json new file mode 100644 index 00000000..81232d0f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/smooth_dream_sandstone" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone_slab.json new file mode 100644 index 00000000..09eddf3a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=double": { + "model": "antarchy:block/smooth_dream_sandstone" + }, + "type=bottom": { + "model": "antarchy:block/smooth_dream_sandstone_slab" + }, + "type=top": { + "model": "antarchy:block/smooth_dream_sandstone_slab_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone_stairs.json b/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone_stairs.json new file mode 100644 index 00000000..00341c13 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/smooth_dream_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "antarchy:block/smooth_dream_sandstone_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "antarchy:block/smooth_dream_sandstone_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/stripped_ouranwood_log.json b/common/src/main/resources/assets/antarchy/blockstates/stripped_ouranwood_log.json new file mode 100644 index 00000000..bb5c3e78 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/stripped_ouranwood_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/stripped_ouranwood_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/stripped_ouranwood_log" + }, + "axis=z": { + "model": "antarchy:block/stripped_ouranwood_log_horizontal", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/stripped_ouranwood_wood.json b/common/src/main/resources/assets/antarchy/blockstates/stripped_ouranwood_wood.json new file mode 100644 index 00000000..25b9842d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/stripped_ouranwood_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "antarchy:block/stripped_ouranwood_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "antarchy:block/stripped_ouranwood_wood" + }, + "axis=z": { + "model": "antarchy:block/stripped_ouranwood_wood", + "x": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/termite_nest.json b/common/src/main/resources/assets/antarchy/blockstates/termite_nest.json new file mode 100644 index 00000000..70dd28f2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/termite_nest.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": {"model": "antarchy:block/termite_nest"}, + "facing=east": {"model": "antarchy:block/termite_nest", "y": 90}, + "facing=south": {"model": "antarchy:block/termite_nest", "y": 180}, + "facing=west": {"model": "antarchy:block/termite_nest", "y": 270} + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/titanium_bars.json b/common/src/main/resources/assets/antarchy/blockstates/titanium_bars.json new file mode 100644 index 00000000..6fe31165 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/titanium_bars.json @@ -0,0 +1,100 @@ +{ + "multipart": [ + { + "apply": { + "model": "antarchy:block/titanium_bars_post_ends" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_post" + }, + "when": { + "east": "false", + "north": "false", + "south": "false", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_cap" + }, + "when": { + "east": "false", + "north": "true", + "south": "false", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_cap", + "y": 90 + }, + "when": { + "east": "true", + "north": "false", + "south": "false", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_cap_alt" + }, + "when": { + "east": "false", + "north": "false", + "south": "true", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_cap_alt", + "y": 90 + }, + "when": { + "east": "false", + "north": "false", + "south": "false", + "west": "true" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_side" + }, + "when": { + "north": "true" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_side", + "y": 90 + }, + "when": { + "east": "true" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_side_alt" + }, + "when": { + "south": "true" + } + }, + { + "apply": { + "model": "antarchy:block/titanium_bars_side_alt", + "y": 90 + }, + "when": { + "west": "true" + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/titanium_block.json b/common/src/main/resources/assets/antarchy/blockstates/titanium_block.json new file mode 100644 index 00000000..3236b1f1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/titanium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/titanium_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/titanium_bulb.json b/common/src/main/resources/assets/antarchy/blockstates/titanium_bulb.json new file mode 100644 index 00000000..fb8332de --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/titanium_bulb.json @@ -0,0 +1,8 @@ +{ + "multipart": [ + { "when": { "lit": "false", "powered": "false" }, "apply": { "model": "antarchy:block/titanium_bulb" } }, + { "when": { "lit": "true", "powered": "false" }, "apply": { "model": "antarchy:block/titanium_bulb_lit" } }, + { "when": { "lit": "false", "powered": "true" }, "apply": { "model": "antarchy:block/titanium_bulb_powered" } }, + { "when": { "lit": "true", "powered": "true" }, "apply": { "model": "antarchy:block/titanium_bulb_lit_powered" } } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/titanium_door.json b/common/src/main/resources/assets/antarchy/blockstates/titanium_door.json new file mode 100644 index 00000000..cca2ad2a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/titanium_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "antarchy:block/titanium_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "antarchy:block/titanium_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "antarchy:block/titanium_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "antarchy:block/titanium_door_top_right_open", + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/titanium_ore.json b/common/src/main/resources/assets/antarchy/blockstates/titanium_ore.json new file mode 100644 index 00000000..3af55ba1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/titanium_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/titanium_ore" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/titanium_trapdoor.json b/common/src/main/resources/assets/antarchy/blockstates/titanium_trapdoor.json new file mode 100644 index 00000000..2bbbda30 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/titanium_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "antarchy:block/titanium_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "antarchy:block/titanium_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "antarchy:block/titanium_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "antarchy:block/titanium_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "antarchy:block/titanium_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "antarchy:block/titanium_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "antarchy:block/titanium_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "antarchy:block/titanium_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "antarchy:block/titanium_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "antarchy:block/titanium_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "antarchy:block/titanium_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "antarchy:block/titanium_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "antarchy:block/titanium_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "antarchy:block/titanium_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "antarchy:block/titanium_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "antarchy:block/titanium_trapdoor_open", + "x": 180, + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/torchflower_bush.json b/common/src/main/resources/assets/antarchy/blockstates/torchflower_bush.json new file mode 100644 index 00000000..b743846f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/torchflower_bush.json @@ -0,0 +1,10 @@ +{ + "variants": { + "half=lower": { + "model": "antarchy:block/torchflower_bush_bottom" + }, + "half=upper": { + "model": "antarchy:block/torchflower_bush_top" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/triffid_goo_block.json b/common/src/main/resources/assets/antarchy/blockstates/triffid_goo_block.json new file mode 100644 index 00000000..b6d986b6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/triffid_goo_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/triffid_goo_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/umbral_moss_block.json b/common/src/main/resources/assets/antarchy/blockstates/umbral_moss_block.json new file mode 100644 index 00000000..5a814601 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/umbral_moss_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/umbral_moss_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/umbral_moss_carpet.json b/common/src/main/resources/assets/antarchy/blockstates/umbral_moss_carpet.json new file mode 100644 index 00000000..a5d5a303 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/umbral_moss_carpet.json @@ -0,0 +1,154 @@ +{ + "multipart": [ + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet" + }, + "when": { + "bottom": "true" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet" + }, + "when": { + "bottom": "false", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall" + }, + "when": { + "north": "tall" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_small" + }, + "when": { + "north": "low" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall" + }, + "when": { + "bottom": "false", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "tall" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_small", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "low" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "bottom": "false", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "tall" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_small", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "low" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "bottom": "false", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "tall" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_small", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "low" + } + }, + { + "apply": { + "model": "antarchy:block/umbral_moss_carpet_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "bottom": "false", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/uranium_bars.json b/common/src/main/resources/assets/antarchy/blockstates/uranium_bars.json new file mode 100644 index 00000000..342603da --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/uranium_bars.json @@ -0,0 +1,100 @@ +{ + "multipart": [ + { + "apply": { + "model": "antarchy:block/uranium_bars_post_ends" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_post" + }, + "when": { + "east": "false", + "north": "false", + "south": "false", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_cap" + }, + "when": { + "east": "false", + "north": "true", + "south": "false", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_cap", + "y": 90 + }, + "when": { + "east": "true", + "north": "false", + "south": "false", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_cap_alt" + }, + "when": { + "east": "false", + "north": "false", + "south": "true", + "west": "false" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_cap_alt", + "y": 90 + }, + "when": { + "east": "false", + "north": "false", + "south": "false", + "west": "true" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_side" + }, + "when": { + "north": "true" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_side", + "y": 90 + }, + "when": { + "east": "true" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_side_alt" + }, + "when": { + "south": "true" + } + }, + { + "apply": { + "model": "antarchy:block/uranium_bars_side_alt", + "y": 90 + }, + "when": { + "west": "true" + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/uranium_block.json b/common/src/main/resources/assets/antarchy/blockstates/uranium_block.json new file mode 100644 index 00000000..274e2d6d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/uranium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/uranium_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/uranium_bulb.json b/common/src/main/resources/assets/antarchy/blockstates/uranium_bulb.json new file mode 100644 index 00000000..3c463223 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/uranium_bulb.json @@ -0,0 +1,8 @@ +{ + "multipart": [ + { "when": { "lit": "false", "powered": "false" }, "apply": { "model": "antarchy:block/uranium_bulb" } }, + { "when": { "lit": "true", "powered": "false" }, "apply": { "model": "antarchy:block/uranium_bulb_lit" } }, + { "when": { "lit": "false", "powered": "true" }, "apply": { "model": "antarchy:block/uranium_bulb_powered" } }, + { "when": { "lit": "true", "powered": "true" }, "apply": { "model": "antarchy:block/uranium_bulb_lit_powered" } } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/uranium_door.json b/common/src/main/resources/assets/antarchy/blockstates/uranium_door.json new file mode 100644 index 00000000..73e36d21 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/uranium_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "antarchy:block/uranium_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "antarchy:block/uranium_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "antarchy:block/uranium_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "antarchy:block/uranium_door_top_right_open", + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/uranium_ore.json b/common/src/main/resources/assets/antarchy/blockstates/uranium_ore.json new file mode 100644 index 00000000..e1773c5b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/uranium_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/uranium_ore" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/uranium_trapdoor.json b/common/src/main/resources/assets/antarchy/blockstates/uranium_trapdoor.json new file mode 100644 index 00000000..0fd8ea30 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/uranium_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "antarchy:block/uranium_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "antarchy:block/uranium_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "antarchy:block/uranium_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "antarchy:block/uranium_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "antarchy:block/uranium_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "antarchy:block/uranium_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "antarchy:block/uranium_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "antarchy:block/uranium_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "antarchy:block/uranium_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "antarchy:block/uranium_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "antarchy:block/uranium_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "antarchy:block/uranium_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "antarchy:block/uranium_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "antarchy:block/uranium_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "antarchy:block/uranium_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "antarchy:block/uranium_trapdoor_open", + "x": 180, + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/wasp_nest.json b/common/src/main/resources/assets/antarchy/blockstates/wasp_nest.json new file mode 100644 index 00000000..b67e68a2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/wasp_nest.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": {"model": "antarchy:block/wasp_nest"}, + "facing=east": {"model": "antarchy:block/wasp_nest", "y": 90}, + "facing=south": {"model": "antarchy:block/wasp_nest", "y": 180}, + "facing=west": {"model": "antarchy:block/wasp_nest", "y": 270} + } +} diff --git a/common/src/main/resources/assets/antarchy/geo/ant.geo.json b/common/src/main/resources/assets/antarchy/geo/ant.geo.json new file mode 100644 index 00000000..7fd7ede3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/ant.geo.json @@ -0,0 +1,195 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 3, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "ant", + "pivot": [0, 1.21429, -1.91667] + }, + { + "name": "r_leg", + "parent": "ant", + "pivot": [-1.5, 1, -1.5], + "cubes": [ + {"origin": [-7.5, 1, -1.5], "size": [6, 0, 1], "uv": [25, 15]} + ] + }, + { + "name": "r_leg2", + "parent": "r_leg", + "pivot": [-7.5, 1, -1.5], + "cubes": [ + {"origin": [-12.5, 1, -1.5], "size": [5, 0, 1], "uv": [17, 35]} + ] + }, + { + "name": "l_leg", + "parent": "ant", + "pivot": [1.5, 1, -1.5], + "cubes": [ + {"origin": [1.5, 1, -1.5], "size": [6, 0, 1], "uv": [25, 17]} + ] + }, + { + "name": "l_leg2", + "parent": "l_leg", + "pivot": [7.5, 1, -1.5], + "cubes": [ + {"origin": [7.5, 1, -1.5], "size": [5, 0, 1], "uv": [31, 35]} + ] + }, + { + "name": "r_leg5", + "parent": "ant", + "pivot": [-1.5, 1, 0.5], + "cubes": [ + {"origin": [-7.5, 1, 0.5], "size": [6, 0, 1], "uv": [25, 19]} + ] + }, + { + "name": "r_leg6", + "parent": "r_leg5", + "pivot": [-7.5, 1, 0.5], + "cubes": [ + {"origin": [-12.5, 1, 0.5], "size": [5, 0, 1], "uv": [1, 36]} + ] + }, + { + "name": "l_leg5", + "parent": "ant", + "pivot": [1.5, 1, 0.5], + "cubes": [ + {"origin": [1.5, 1, 0.5], "size": [6, 0, 1], "uv": [1, 30]} + ] + }, + { + "name": "l_leg6", + "parent": "l_leg5", + "pivot": [7.5, 1, 0.5], + "cubes": [ + {"origin": [7.5, 1, 0.5], "size": [5, 0, 1], "uv": [15, 37]} + ] + }, + { + "name": "r_leg3", + "parent": "ant", + "pivot": [-1.5, 1, -3.5], + "cubes": [ + {"origin": [-7.5, 1, -3.5], "size": [6, 0, 1], "uv": [1, 32]} + ] + }, + { + "name": "r_leg4", + "parent": "r_leg3", + "pivot": [-7.5, 1, -3.5], + "cubes": [ + {"origin": [-12.5, 1, -3.5], "size": [5, 0, 1], "uv": [29, 37]} + ] + }, + { + "name": "l_leg3", + "parent": "ant", + "pivot": [1.5, 1, -3.5], + "cubes": [ + {"origin": [1.5, 1, -3.5], "size": [6, 0, 1], "uv": [1, 34]} + ] + }, + { + "name": "l_leg4", + "parent": "l_leg3", + "pivot": [7.5, 1, -3.5], + "cubes": [ + {"origin": [7.5, 1, -3.5], "size": [5, 0, 1], "uv": [1, 38]} + ] + }, + { + "name": "thorax", + "parent": "ant", + "pivot": [0, 2.5, -4.41667], + "cubes": [ + {"origin": [-2, 1, -4.5], "size": [4, 3, 6], "uv": [1, 20]} + ] + }, + { + "name": "head", + "parent": "thorax", + "pivot": [-0.27778, 1.83333, -4.27778], + "cubes": [ + {"origin": [-1.5, 1.25, -5.25], "size": [3, 2, 1], "uv": [22, 38]}, + {"origin": [-3, 1, -10], "size": [6, 3, 5], "inflate": 0.01, "uv": [1, 12]} + ] + }, + { + "name": "r_eye", + "parent": "head", + "pivot": [-3, 3, -8], + "cubes": [ + {"origin": [-3, 2, -9], "size": [0, 2, 2], "inflate": 0.02, "uv": [16, 29]} + ] + }, + { + "name": "l_eye", + "parent": "head", + "pivot": [3, 3, -8], + "cubes": [ + {"origin": [3, 2, -9], "size": [0, 2, 2], "inflate": 0.02, "uv": [16, 29], "mirror": true} + ] + }, + { + "name": "r_mandibule", + "parent": "head", + "pivot": [-1.33333, 1.5, -9.74167], + "cubes": [ + {"origin": [-2.5, 1, -12.75], "size": [1, 1, 3], "uv": [14, 38]}, + {"origin": [-1.5, 1.5, -11.25], "size": [1, 0, 1], "uv": [24, 13]}, + {"origin": [-1.5, 1.5, -12.75], "size": [1, 0, 1], "uv": [24, 12]} + ] + }, + { + "name": "l_mandibule", + "parent": "head", + "pivot": [1.33333, 1.5, -9.74167], + "cubes": [ + {"origin": [1.5, 1, -12.75], "size": [1, 1, 3], "uv": [14, 38], "mirror": true}, + {"origin": [0.5, 1.5, -11.25], "size": [1, 0, 1], "uv": [24, 13], "mirror": true}, + {"origin": [0.5, 1.5, -12.75], "size": [1, 0, 1], "uv": [24, 12], "mirror": true} + ] + }, + { + "name": "r_antenna", + "parent": "head", + "pivot": [-2.5, 3, -8], + "cubes": [ + {"origin": [-2.5, 3, -14], "size": [0, 6, 7], "inflate": 0.01, "uv": [23, 21]} + ] + }, + { + "name": "l_antenna", + "parent": "head", + "pivot": [2.5, 3, -8], + "cubes": [ + {"origin": [2.5, 3, -14], "size": [0, 6, 7], "inflate": 0.01, "uv": [23, 21], "mirror": true} + ] + }, + { + "name": "abdomen", + "parent": "thorax", + "pivot": [0, 2.5, 1.625], + "cubes": [ + {"origin": [-2.5, 1, 2.5], "size": [5, 4, 8], "uv": [1, 0]}, + {"origin": [-1.5, 1.25, 1.5], "size": [3, 2, 1], "uv": [38, 24]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/apple_cow.geo.json b/common/src/main/resources/assets/antarchy/geo/apple_cow.geo.json new file mode 100644 index 00000000..91af3017 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/apple_cow.geo.json @@ -0,0 +1,153 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 128, + "visible_bounds_width": 3, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, -1] + }, + { + "name": "body", + "parent": "root", + "pivot": [0, 19, 1], + "cubes": [ + {"origin": [-6, 29, 14], "size": [12, 18, 10], "pivot": [0, 18, 20], "rotation": [90, 0, 0], "uv": [18, 4]}, + {"origin": [0.75, 4.75, 6.5], "size": [9, 11, 0], "pivot": [4, 15, 6.5], "rotation": [0, 0, -22.5], "uv": [28, 32], "mirror": true}, + {"origin": [1.75, 10.75, -7.5], "size": [9, 11, 0], "pivot": [5, 21, -7.5], "rotation": [0, 0, -22.5], "uv": [28, 32], "mirror": true}, + {"origin": [-9.75, 10.75, -7.5], "size": [9, 11, 0], "pivot": [-4, 21, -7.5], "rotation": [0, 0, 22.5], "uv": [28, 32]}, + {"origin": [-9.75, 4.75, 6.5], "size": [9, 11, 0], "pivot": [-4, 15, 6.5], "rotation": [0, 0, 22.5], "uv": [28, 32]}, + {"origin": [-2, 29, 13], "size": [4, 6, 1], "pivot": [0, 18, 20], "rotation": [90, 0, 0], "uv": [52, 0]} + ] + }, + { + "name": "head", + "parent": "body", + "pivot": [0, 20, -9], + "cubes": [ + {"origin": [-4, 16, -15], "size": [8, 8, 6], "uv": [0, 0]}, + {"origin": [-4, 16, -15], "size": [8, 8, 6], "inflate": 0.2, "uv": [0, 37]}, + {"origin": [-2, 24, -14.5], "size": [4, 4, 4], "uv": [48, 32]}, + {"origin": [0.5, 27, -12.75], "size": [2, 4, 0], "inflate": 0.05, "pivot": [0, 29, -12.75], "rotation": [0, 0, 22.5], "uv": [48, 43]}, + {"origin": [3, 22.7, -14.75], "size": [2, 4, 0], "inflate": 0.05, "pivot": [2.5, 24.7, -14.75], "rotation": [0, 0, 22.5], "uv": [48, 43]}, + {"origin": [-1.75, 27.5, -12.75], "size": [3, 3, 0], "uv": [48, 40]}, + {"origin": [-5, 22, -14], "size": [1, 3, 1], "uv": [22, 0]}, + {"origin": [4, 22, -14], "size": [1, 3, 1], "uv": [22, 0]} + ] + }, + { + "name": "eyes", + "parent": "head", + "pivot": [0, 20, -14.025], + "cubes": [ + {"origin": [-4, 19, -14.025], "size": [8, 2, 0], "uv": [37, 50]} + ] + }, + { + "name": "eyes_sleep", + "parent": "head", + "pivot": [0, 20, -14.025], + "cubes": [ + {"origin": [-4, 19, -14.025], "size": [8, 2, 0], "uv": [37, 52]} + ] + }, + { + "name": "right_ear", + "parent": "head", + "pivot": [-3.75, 22, -13], + "cubes": [ + {"origin": [-7.75, 20, -13], "size": [4, 4, 0], "uv": [29, 45], "mirror": true} + ] + }, + { + "name": "left_ear", + "parent": "head", + "pivot": [3.75, 22, -13], + "cubes": [ + {"origin": [3.75, 20, -13], "size": [4, 4, 0], "uv": [29, 45]} + ] + }, + { + "name": "snout", + "parent": "head", + "pivot": [0, 17.5, -14.95], + "cubes": [ + {"origin": [-3, 16, -15.95], "size": [6, 3, 1], "uv": [1, 33]} + ] + }, + { + "name": "leaves", + "parent": "body", + "pivot": [0, 16, 0], + "cubes": [ + {"origin": [-6, 29, 12], "size": [12, 18, 12], "inflate": 0.1, "pivot": [0, 18, 20], "rotation": [90, 0, 0], "uv": [7, 59]} + ] + }, + { + "name": "branch", + "parent": "body", + "pivot": [-3.06985, 19.57255, -0.51484], + "cubes": [ + {"origin": [-12.4726, 17.58993, -0.5], "size": [9, 11, 0], "pivot": [-7.9726, 23.08993, -0.5], "rotation": [0, 0, 90], "uv": [28, 32]} + ] + }, + { + "name": "apple", + "parent": "branch", + "pivot": [-12.85227, 26.48342, -0.85312], + "cubes": [ + {"origin": [-14.5, 20, -2.55], "size": [4, 4, 4], "uv": [48, 32]}, + {"origin": [-14.25, 23.5, -0.8], "size": [3, 3, 0], "uv": [48, 40]}, + {"origin": [-12.5308, 22.66849, -0.8], "size": [2, 4, 0], "inflate": 0.05, "pivot": [-11.93209, 23.5, -0.675], "rotation": [20.94102, 0, 30.36119], "uv": [48, 43]} + ] + }, + { + "name": "leg_back_r", + "parent": "root", + "pivot": [-4, 12, 6], + "cubes": [ + {"origin": [-6, 0, 4], "size": [4, 12, 4], "uv": [0, 16]}, + {"origin": [-6, 7, 4], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]} + ] + }, + { + "name": "leg_back_l", + "parent": "root", + "pivot": [4, 12, 6], + "mirror": true, + "cubes": [ + {"origin": [2, 7, 4], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]}, + {"origin": [2, 0, 4], "size": [4, 12, 4], "uv": [0, 16]} + ] + }, + { + "name": "leg_front_r", + "parent": "root", + "pivot": [-4, 12, -7], + "cubes": [ + {"origin": [-6, 7, -8], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]}, + {"origin": [-6, 0, -8], "size": [4, 12, 4], "uv": [0, 16]} + ] + }, + { + "name": "leg_front_l", + "parent": "root", + "pivot": [4, 12, -7], + "mirror": true, + "cubes": [ + {"origin": [2, 7, -8], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]}, + {"origin": [2, 0, -8], "size": [4, 12, 4], "uv": [0, 16]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/baby_apple_cow.geo.json b/common/src/main/resources/assets/antarchy/geo/baby_apple_cow.geo.json new file mode 100644 index 00000000..71f1e7f1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/baby_apple_cow.geo.json @@ -0,0 +1,132 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 128, + "visible_bounds_width": 3, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, -4, 1] + }, + { + "name": "body", + "parent": "root", + "pivot": [0, 15, 3], + "cubes": [ + {"origin": [-5, 29, 16], "size": [10, 14, 8], "pivot": [1, 14, 22], "rotation": [90, 0, 0], "uv": [20, 6]}, + {"origin": [1.75, 6.75, -5.5], "size": [9, 11, 0], "pivot": [5, 17, -5.5], "rotation": [0, 0, -22.5], "uv": [28, 32], "mirror": true}, + {"origin": [11.75, 11.2, -5.475], "size": [2, 4, 0], "inflate": 0.05, "pivot": [11.25, 13.2, -5.475], "rotation": [0, 0, 22.5], "uv": [48, 43]}, + {"origin": [-10.75, 6.75, -5.5], "size": [9, 11, 0], "pivot": [-5, 17, -5.5], "rotation": [0, 0, 22.5], "uv": [28, 32]}, + {"origin": [-13.75, 11.2, -5.475], "size": [2, 4, 0], "inflate": 0.05, "pivot": [-11.25, 13.2, -5.475], "rotation": [0, 0, -22.5], "uv": [48, 43], "mirror": true} + ] + }, + { + "name": "head", + "parent": "body", + "pivot": [0, 16, -7], + "cubes": [ + {"origin": [-4, 12, -13], "size": [8, 7, 6], "uv": [0, 0]}, + {"origin": [-4, 11, -13], "size": [8, 8, 6], "inflate": 0.2, "uv": [0, 37]}, + {"origin": [-2, 19, -12.5], "size": [4, 4, 4], "uv": [48, 32]}, + {"origin": [0.5, 22, -10.75], "size": [2, 4, 0], "inflate": 0.05, "pivot": [0, 24, -10.75], "rotation": [0, 0, 22.5], "uv": [48, 43]}, + {"origin": [3, 18.7, -12.75], "size": [2, 4, 0], "inflate": 0.05, "pivot": [2.5, 20.7, -12.75], "rotation": [0, 0, 22.5], "uv": [48, 43]}, + {"origin": [-1.75, 22.5, -10.75], "size": [3, 3, 0], "uv": [48, 40]} + ] + }, + { + "name": "eyes", + "parent": "head", + "pivot": [0, 16, -12.025], + "cubes": [ + {"origin": [-4, 15, -12.025], "size": [8, 2, 0], "uv": [37, 50]} + ] + }, + { + "name": "eyes_sleep", + "parent": "head", + "pivot": [0, 16, -12.025], + "cubes": [ + {"origin": [-4, 15, -12.025], "size": [8, 2, 0], "uv": [37, 52]} + ] + }, + { + "name": "right_ear", + "parent": "head", + "pivot": [-3.75, 17, -11], + "cubes": [ + {"origin": [-7.75, 15, -11], "size": [4, 4, 0], "uv": [29, 45], "mirror": true} + ] + }, + { + "name": "left_ear", + "parent": "head", + "pivot": [3.75, 17, -11], + "cubes": [ + {"origin": [3.75, 15, -11], "size": [4, 4, 0], "uv": [29, 45]} + ] + }, + { + "name": "snout", + "parent": "head", + "pivot": [0, 13.5, -12.95], + "cubes": [ + {"origin": [-3, 12, -13.95], "size": [6, 3, 1], "uv": [1, 33]} + ] + }, + { + "name": "leaves", + "parent": "body", + "pivot": [0, 12, 2], + "cubes": [ + {"origin": [-5, 29, 14], "size": [10, 14, 10], "inflate": 0.1, "pivot": [1, 14, 22], "rotation": [90, 0, 0], "uv": [6, 51]} + ] + }, + { + "name": "leg_back_r", + "parent": "root", + "pivot": [-3, 8, 5], + "cubes": [ + {"origin": [-5, 0, 3], "size": [4, 8, 4], "uv": [0, 16]}, + {"origin": [-5, 3, 3], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]} + ] + }, + { + "name": "leg_back_l", + "parent": "root", + "pivot": [3, 8, 5], + "mirror": true, + "cubes": [ + {"origin": [1, 3, 3], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]}, + {"origin": [1, 0, 3], "size": [4, 8, 4], "uv": [0, 16]} + ] + }, + { + "name": "leg_front_r", + "parent": "root", + "pivot": [-3, 8, -5], + "cubes": [ + {"origin": [-5, 3, -6], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]}, + {"origin": [-5, 0, -6], "size": [4, 8, 4], "uv": [0, 16]} + ] + }, + { + "name": "leg_front_l", + "parent": "root", + "pivot": [3, 8, -5], + "mirror": true, + "cubes": [ + {"origin": [1, 3, -6], "size": [4, 5, 4], "inflate": 0.2, "uv": [0, 51]}, + {"origin": [1, 0, -6], "size": [4, 8, 4], "uv": [0, 16]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/basilisk.geo.json b/common/src/main/resources/assets/antarchy/geo/basilisk.geo.json new file mode 100644 index 00000000..4ee5b382 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/basilisk.geo.json @@ -0,0 +1,165 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 256, + "texture_height": 256, + "visible_bounds_width": 16, + "visible_bounds_height": 5.5, + "visible_bounds_offset": [0, 2.25, 0] + }, + "bones": [ + { + "name": "group2", + "pivot": [0, 41.02853, -41.86327] + }, + { + "name": "upper_body", + "parent": "group2", + "pivot": [0, 5.22232, -10.59536], + "cubes": [ + {"origin": [0, 13.92239, -30.29457], "size": [0, 6, 20], "uv": [170, 187]}, + {"origin": [-7.5, -0.07761, -30.29457], "size": [15, 14, 20], "inflate": 0.01, "uv": [98, 0]} + ] + }, + { + "name": "neck", + "parent": "upper_body", + "pivot": [0, 6.18002, -29.0602], + "cubes": [ + {"origin": [-7.5, 5.42239, -44.99457], "size": [15, 12, 19], "pivot": [0, 10.02239, -37.49457], "rotation": [-32.5, 0, 0], "uv": [64, 129]} + ] + }, + { + "name": "neck_1", + "parent": "neck", + "pivot": [0, 11.44289, -38.81135], + "cubes": [ + {"origin": [-7.5, 10.22239, -46.39457], "size": [15, 15, 12], "inflate": 0.01, "uv": [166, 34]} + ] + }, + { + "name": "neck_2", + "parent": "neck_1", + "pivot": [0, 24.0164, -40.28362], + "cubes": [ + {"origin": [-7.5, 24.52239, -41.99457], "size": [15, 11, 15], "pivot": [0, 26.42239, -34.79457], "rotation": [57.5, 0, 0], "uv": [60, 160]} + ] + }, + { + "name": "neck_3", + "parent": "neck_2", + "pivot": [0, 31.71975, -33.59063], + "cubes": [ + {"origin": [-7.5, 32.83206, -46.75054], "size": [15, 13, 13], "inflate": 0.02, "pivot": [0, 41.23246, -37.34339], "rotation": [92.5, 0, 0], "uv": [0, 162]} + ] + }, + { + "name": "head", + "parent": "neck_3", + "pivot": [0, 41.02853, -41.86327], + "cubes": [ + {"origin": [-7.5, 36.52383, -48.06757], "size": [15, 12, 15], "pivot": [0, 41.23246, -37.34339], "rotation": [-32.5, 0, 0], "uv": [0, 135]}, + {"origin": [-6.5, 41.52853, -63.61327], "size": [13, 10, 11], "inflate": 0.01, "uv": [170, 166]}, + {"origin": [-6.5, 39.52853, -60.61327], "size": [13, 2, 8], "inflate": 0.01, "uv": [194, 121]}, + {"origin": [-7.5, 43.52853, -52.61327], "size": [15, 8, 11], "inflate": 0.01, "uv": [168, 0]}, + {"origin": [4.5, 50.52853, -52.71327], "size": [4, 2, 9], "inflate": 0.01, "uv": [140, 34]}, + {"origin": [-8.5, 50.52853, -52.71327], "size": [4, 2, 9], "inflate": 0.01, "uv": [140, 34], "mirror": true}, + {"origin": [4.5, 34.92853, -62.61327], "size": [2, 7, 2], "inflate": -0.1, "uv": [80, 110]}, + {"origin": [-6.5, 34.92853, -62.61327], "size": [2, 7, 2], "inflate": -0.1, "uv": [80, 110], "mirror": true}, + {"origin": [0, 51.52853, -63.61327], "size": [0, 10, 32], "uv": [0, 93]}, + {"origin": [-7.5, 43.52853, -44.11327], "size": [0, 10, 16], "pivot": [-7.5, 46.52853, -42.11327], "rotation": [0, -25, 0], "uv": [0, 188], "mirror": true}, + {"origin": [-7.2, 43.52853, -42.11327], "size": [0, 10, 16], "pivot": [-7.5, 46.52853, -42.11327], "rotation": [57.5, -25, 0], "uv": [0, 188], "mirror": true}, + {"origin": [-7.5, 38.52853, -42.11327], "size": [0, 6, 11], "pivot": [-7.5, 41.52853, -42.11327], "rotation": [0, -32.5, 0], "uv": [64, 93], "mirror": true}, + {"origin": [-7.4, 38.52853, -42.11327], "size": [0, 6, 11], "pivot": [-7.5, 41.52853, -42.11327], "rotation": [-47, -32.5, 0], "uv": [64, 93], "mirror": true}, + {"origin": [7.2, 43.52853, -42.11327], "size": [0, 10, 16], "pivot": [7.5, 46.52853, -42.11327], "rotation": [57.5, 25, 0], "uv": [0, 188]}, + {"origin": [7.5, 43.52853, -44.11327], "size": [0, 10, 16], "pivot": [7.5, 46.52853, -42.11327], "rotation": [0, 25, 0], "uv": [0, 188]}, + {"origin": [7.5, 38.52853, -42.11327], "size": [0, 6, 11], "pivot": [7.5, 41.52853, -42.11327], "rotation": [0, 32.5, 0], "uv": [64, 93]}, + {"origin": [7.4, 38.52853, -42.11327], "size": [0, 6, 11], "pivot": [7.5, 41.52853, -42.11327], "rotation": [-47, 32.5, 0], "uv": [64, 93]} + ] + }, + { + "name": "jaw", + "parent": "head", + "pivot": [0, 41.02853, -41.86327], + "cubes": [ + {"origin": [-7.5, 38.52853, -52.61327], "size": [15, 5, 11], "inflate": 0.01, "uv": [56, 186]}, + {"origin": [-5.5, 38.52853, -62.61327], "size": [11, 5, 10], "inflate": 0.01, "uv": [98, 34]}, + {"origin": [-5.5, 43.52853, -62.61327], "size": [11, 2, 10], "inflate": 0.01, "uv": [168, 19]} + ] + }, + { + "name": "tongue", + "parent": "jaw", + "pivot": [0, 45.52853, -44.73827], + "cubes": [ + {"origin": [-3.5, 44.52853, -52.61327], "size": [7, 2, 11], "uv": [194, 131]} + ] + }, + { + "name": "tongue_2", + "parent": "tongue", + "pivot": [0, 45.52853, -52.11327], + "cubes": [ + {"origin": [-3, 45.02853, -60.61327], "size": [6, 1, 8], "uv": [140, 192]} + ] + }, + { + "name": "tongue_3", + "parent": "tongue_2", + "pivot": [0, 45.52853, -60.61327], + "cubes": [ + {"origin": [1, 45.02853, -66.61327], "size": [2, 1, 6], "uv": [64, 110]}, + {"origin": [-3, 45.02853, -66.61327], "size": [2, 1, 6], "uv": [64, 110], "mirror": true} + ] + }, + { + "name": "tail", + "parent": "group2", + "pivot": [0.05556, 10.92239, -11.85013], + "cubes": [ + {"origin": [-7, -0.07761, -10.29457], "size": [14, 14, 35], "uv": [0, 0]}, + {"origin": [0, 13.92239, -10.29457], "size": [0, 6, 35], "uv": [88, 88]} + ] + }, + { + "name": "tail_2", + "parent": "tail", + "pivot": [0.07143, 10.63668, 23.70543], + "cubes": [ + {"origin": [-6.5, 0.42239, 24.70543], "size": [13, 13, 31], "uv": [0, 49]}, + {"origin": [0, 12.92239, 24.70543], "size": [0, 6, 31], "uv": [132, 129]} + ] + }, + { + "name": "tail_3", + "parent": "tail_2", + "pivot": [0.1, 10.32239, 55.70543], + "cubes": [ + {"origin": [-6, 0.92239, 55.70543], "size": [12, 12, 27], "uv": [88, 49]}, + {"origin": [0, 12.92239, 55.70543], "size": [0, 6, 27], "uv": [158, 88]} + ] + }, + { + "name": "tail_4", + "parent": "tail_3", + "pivot": [0.16667, 9.58906, 82.70543], + "cubes": [ + {"origin": [-5.5, 1.92239, 82.70543], "size": [11, 10, 16], "uv": [166, 61]}, + {"origin": [0, 11.92239, 82.70543], "size": [0, 6, 16], "uv": [108, 192]} + ] + }, + { + "name": "tail_5", + "parent": "tail_4", + "pivot": [0.5, 6.92239, 98.70543], + "cubes": [ + {"origin": [-2, 3.92239, 98.70543], "size": [5, 6, 20], "uv": [120, 166]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/battle_axe.geo.json b/common/src/main/resources/assets/antarchy/geo/battle_axe.geo.json new file mode 100644 index 00000000..f9ee011c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/battle_axe.geo.json @@ -0,0 +1,78 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.battle_axe_1 - Converted", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 3, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 1, 0] + }, + "bones": [ + { + "name": "battle_axe", + "pivot": [8, -4, -8] + }, + { + "name": "handle", + "parent": "battle_axe", + "pivot": [8, -4, -8], + "cubes": [ + {"origin": [-1, -2, -1], "size": [2, 32, 2], "uv": [0, 0]}, + {"origin": [-2, 30, -2], "size": [4, 2, 4], "uv": [24, 28]}, + {"origin": [-1.6, -16, -1.6], "size": [3.2, 14, 3.2], "uv": [8, 0]} + ] + }, + { + "name": "axe_head", + "parent": "battle_axe", + "pivot": [7.07331, 19, 0], + "cubes": [ + {"origin": [-2.5, 16, -2], "size": [5, 6, 4], "uv": [1, 54]}, + {"origin": [2, 17, -0.5], "size": [2, 4, 1], "uv": [0, 45]}, + {"origin": [-4, 17, -0.5], "size": [2, 4, 1], "uv": [6, 45]} + ] + }, + { + "name": "right", + "parent": "axe_head", + "pivot": [7.07331, 19, 0], + "cubes": [ + {"origin": [4, 15, -0.5], "size": [8, 8, 1], "uv": [20, 0]}, + {"origin": [7, 14.675, 0], "size": [6, 8.65, 0], "uv": [24, 34]}, + {"origin": [5.75, 25.025, -0.5], "size": [7.075, 1, 1], "inflate": 0.005, "pivot": [8.75, 25.525, 0], "rotation": [0, 0, 45], "uv": [0, 51]}, + {"origin": [6.1, 25.925, 0], "size": [8, 1.095, 0], "inflate": 0.005, "pivot": [9.1, 26.525, -0.5], "rotation": [0, 0, 45], "uv": [40, 28], "mirror": true}, + {"origin": [6.1, 27.03, 0], "size": [8, -0.005, 0], "inflate": 0.005, "pivot": [9.1, 26.525, -0.5], "rotation": [0, 0, 45], "uv": [0, 0]}, + {"origin": [6.1, 10.975, 0], "size": [8, 1, 0], "inflate": 0.005, "pivot": [9.1, 11.475, -0.5], "rotation": [0, 0, -45], "uv": [38, 8]}, + {"origin": [3, 9, 0], "size": [4.325, 20, 0], "uv": [8, 17]}, + {"origin": [6.525, 12.75, -0.5], "size": [7.075, 1, 1], "inflate": 0.005, "pivot": [9.525, 13.25, 0], "rotation": [0, 0, 135], "uv": [38, 0]}, + {"origin": [3, 23, -0.5], "size": [4, 5, 1], "uv": [42, 9]}, + {"origin": [7, 23, -0.5], "size": [5, 5, 1], "uv": [38, 2]}, + {"origin": [7, 10, -0.5], "size": [5, 5, 1], "uv": [0, 39]}, + {"origin": [3, 10, -0.5], "size": [4, 5, 1], "uv": [24, 42]} + ] + }, + { + "name": "left", + "parent": "axe_head", + "pivot": [7.07331, 19, 0], + "cubes": [ + {"origin": [4, 15, -0.5], "size": [8, 8, 1], "pivot": [0, 0, 0], "rotation": [-180, 0, 180], "uv": [24, 9]}, + {"origin": [-11.75, 25.025, -0.5], "size": [7.075, 1, 1], "inflate": 0.005, "pivot": [-8.75, 25.525, 0], "rotation": [-180, 0, 135], "uv": [40, 18]}, + {"origin": [-12.525, 12.75, -0.5], "size": [7.075, 1, 1], "inflate": 0.005, "pivot": [-9.525, 13.25, 0], "rotation": [-180, 0, 45], "uv": [40, 20]}, + {"origin": [3, 23, -0.5], "size": [4, 5, 1], "pivot": [0, 0, 0], "rotation": [-180, 0, 180], "uv": [34, 42]}, + {"origin": [-1, 23, -0.5], "size": [5, 5, 1], "pivot": [-4, 0, 0], "rotation": [-180, 0, 180], "uv": [12, 39]}, + {"origin": [3, 9, 0], "size": [4.325, 20, 0], "pivot": [0, 0, 0], "rotation": [-180, 0, 180], "uv": [16, 17]}, + {"origin": [-1, 10, -0.5], "size": [5, 5, 1], "pivot": [-4, -13, 0], "rotation": [-180, 0, 180], "uv": [40, 22]}, + {"origin": [7, 14.675, 0], "size": [6, 8.65, 0], "pivot": [0, 0, 0], "rotation": [-180, 0, 180], "uv": [36, 34]}, + {"origin": [3, 10, -0.5], "size": [4, 5, 1], "pivot": [0, 0, 0], "rotation": [-180, 0, 180], "uv": [44, 42]}, + {"origin": [-13.525, 24.6, 0], "size": [8, 1, 0], "inflate": 0.005, "pivot": [-10.525, 25.1, -0.5], "rotation": [0, 0, -45], "uv": [40, 28]}, + {"origin": [-13.525, 12.4, 0], "size": [8, 1, 0], "inflate": 0.005, "pivot": [-10.525, 12.9, -0.5], "rotation": [0, 0, 45], "uv": [40, 29]} + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/geo/bed_bug.geo.json b/common/src/main/resources/assets/antarchy/geo/bed_bug.geo.json new file mode 100644 index 00000000..a33580c6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/bed_bug.geo.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 4, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "bed_bug", + "pivot": [0, 4.125, 1.0625], + "cubes": [ + {"origin": [-8, 1, -8], "size": [16, 8, 19], "uv": [0, 0]} + ] + }, + { + "name": "neck", + "parent": "bed_bug", + "pivot": [0, 5.5, -5], + "cubes": [ + {"origin": [-6, 2, -13], "size": [12, 7, 10], "pivot": [0, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [0, 27]} + ] + }, + { + "name": "head", + "parent": "neck", + "pivot": [0, 4.5, -12], + "cubes": [ + {"origin": [-3.5, 4.25, -16], "size": [7, 4, 4], "pivot": [-0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [0, 49]}, + {"origin": [-2.5, 4.25, -17], "size": [5, 2, 2], "pivot": [-0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [44, 37]} + ] + }, + { + "name": "mouth", + "parent": "head", + "pivot": [0, 0.82488, -18.21924], + "cubes": [ + {"origin": [-1.5, 4.25, -21], "size": [3, 0, 4], "inflate": 0.01, "pivot": [-0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [42, 49]} + ] + }, + { + "name": "R_antenna", + "parent": "head", + "pivot": [-1.5, 6.45691, -15.14015], + "cubes": [ + {"origin": [-10.5, 8.275, -16], "size": [9, 0, 5], "pivot": [-0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [30, 28]} + ] + }, + { + "name": "L_antenna", + "parent": "head", + "pivot": [1.5, 6.45691, -15.14015], + "cubes": [ + {"origin": [1.5, 8.275, -16], "size": [9, 0, 5], "pivot": [0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [30, 28], "mirror": true} + ] + }, + { + "name": "R_mandible", + "parent": "head", + "pivot": [-3, 3, -12], + "cubes": [ + {"origin": [-4.5, 3.25, -19], "size": [3, 1, 7], "pivot": [-0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [22, 49]}, + {"origin": [-1.5, 3.25, -19], "size": [2, 1, 1], "pivot": [-0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [44, 41]} + ] + }, + { + "name": "R_mandible2", + "parent": "head", + "pivot": [3, 3, -12], + "cubes": [ + {"origin": [1.5, 3.25, -19], "size": [3, 1, 7], "pivot": [0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [22, 49], "mirror": true}, + {"origin": [-0.5, 3.25, -19], "size": [2, 1, 1], "pivot": [0.5, 4.5, -10], "rotation": [22.5, 0, 0], "uv": [44, 41], "mirror": true} + ] + }, + { + "name": "L_mandible", + "parent": "head", + "pivot": [3, 3, -12] + }, + { + "name": "L_leg3", + "parent": "bed_bug", + "pivot": [7.25, 3.75, 9.75], + "cubes": [ + {"origin": [6, 3, 7.75], "size": [11, 2, 3], "pivot": [6, 2.5, 9.75], "rotation": [0, 0, 17.5], "uv": [0, 44], "mirror": true} + ] + }, + { + "name": "R_leg3", + "parent": "bed_bug", + "pivot": [-7.25, 3.75, 9.75], + "cubes": [ + {"origin": [-17, 3, 7.75], "size": [11, 2, 3], "pivot": [-6, 2.5, 9.75], "rotation": [0, 0, -17.5], "uv": [0, 44]} + ] + }, + { + "name": "L_leg2", + "parent": "bed_bug", + "pivot": [7.25, 3.75, 0], + "cubes": [ + {"origin": [6, 3, -2], "size": [11, 2, 3], "pivot": [6, 2.5, 0], "rotation": [0, 0, 17.5], "uv": [0, 44], "mirror": true} + ] + }, + { + "name": "R_leg2", + "parent": "bed_bug", + "pivot": [-7.25, 3.75, 0], + "cubes": [ + {"origin": [-17, 3, -2], "size": [11, 2, 3], "pivot": [-6, 2.5, 0], "rotation": [0, 0, -17.5], "uv": [0, 44]} + ] + }, + { + "name": "L_leg", + "parent": "bed_bug", + "pivot": [7.25, 3.75, -5], + "cubes": [ + {"origin": [6, 3, -7], "size": [11, 2, 3], "pivot": [6, 2.5, -5], "rotation": [0, 0, 17.5], "uv": [0, 44], "mirror": true} + ] + }, + { + "name": "R_leg", + "parent": "bed_bug", + "pivot": [-7.25, 3.75, -5], + "cubes": [ + {"origin": [-17, 3, -7], "size": [11, 2, 3], "pivot": [-6, 2.5, -5], "rotation": [0, 0, -17.5], "uv": [0, 44]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/big_bertha.geo.json b/common/src/main/resources/assets/antarchy/geo/big_bertha.geo.json new file mode 100644 index 00000000..0da1f2b8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/big_bertha.geo.json @@ -0,0 +1,67 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.big_bertha - Converted", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 1, 0] + }, + "bones": [ + { + "name": "big_bertha", + "pivot": [0.35, -7.75, 0] + }, + { + "name": "guard", + "parent": "big_bertha", + "pivot": [0.35, -7.75, 0], + "cubes": [ + { + "origin": [-1.5, -8.6, -1], + "size": [3.85, 3.85, 2], + "pivot": [0.35, -7.25, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [33, 3.5], "uv_size": [4, 4]}, + "east": {"uv": [30, 3.5], "uv_size": [2, 4]}, + "south": {"uv": [40, 3.5], "uv_size": [4, 4]}, + "west": {"uv": [37, 3.5], "uv_size": [3, 4]}, + "up": {"uv": [32, 0.5], "uv_size": [4, 2]}, + "down": {"uv": [37, 9.5], "uv_size": [4, -2]} + } + }, + {"origin": [-1.5, -8.6, -1], "size": [3.85, 3.85, 2], "inflate": -0.2, "pivot": [0.35, -7.25, 0], "rotation": [0, 0, -45], "uv": [14, 10]}, + {"origin": [2.35, -6.2, -1], "size": [2, 5, 2], "inflate": -0.005, "pivot": [2.5, -4.85, 0.5], "rotation": [0, 0, 65], "uv": [14, 15]}, + {"origin": [-4.35, -6.2, -1], "size": [2, 5, 2], "inflate": -0.005, "pivot": [-2.5, -4.85, 0.5], "rotation": [0, 0, -65], "uv": [14, 23]} + ] + }, + { + "name": "handle", + "parent": "big_bertha", + "pivot": [3, -15, -3], + "cubes": [ + {"origin": [-0.5, -14, -0.5], "size": [1, 7, 1], "uv": [22, 15]}, + {"origin": [-0.5, -14, -0.5], "size": [1, 7, 1], "inflate": 0.2, "uv": [22, 23]}, + {"origin": [-1.5, -16, -1.5], "size": [3, 2, 3], "uv": [14, 0]} + ] + }, + { + "name": "blade", + "parent": "big_bertha", + "pivot": [6, -5, -3], + "cubes": [ + {"origin": [1.5, -6, 0], "size": [1, 34, 0], "uv": [10, 0]}, + {"origin": [-2, -6, -0.5], "size": [4, 33.625, 1], "uv": [0, 0]}, + {"origin": [-2.1, 26.525, -0.5], "size": [2.8, 2.8, 1], "inflate": 0.005, "pivot": [0, 28.625, 0], "rotation": [0, 0, -45], "uv": [24, 5]}, + {"origin": [-1.9, 26.3, 0], "size": [3.525, 3.525, 0], "inflate": 0.005, "pivot": [0, 28.2, 0], "rotation": [0, 0, -45], "uv": [24, 8]}, + {"origin": [-2.5, -6, 0], "size": [1, 34, 0], "uv": [12, 0]} + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/geo/bomber.geo.json b/common/src/main/resources/assets/antarchy/geo/bomber.geo.json new file mode 100644 index 00000000..5a9bfd08 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/bomber.geo.json @@ -0,0 +1,48 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.bomber", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0.5, 3, -0.5] + }, + { + "name": "head", + "parent": "root", + "pivot": [0, 5, 0], + "cubes": [ + {"origin": [0, 13, -1.5], "size": [0, 2, 3], "uv": [26, 26]}, + {"origin": [-1.5, 13, 0], "size": [4, 4, 0], "uv": [18, 26]}, + {"origin": [-3.5, 12, -3.5], "size": [7, 1, 7], "uv": [0, 18]}, + {"origin": [-4.5, 3, -4.5], "size": [9, 9, 9], "uv": [0, 0]} + ] + }, + { + "name": "rightFoot", + "parent": "root", + "pivot": [-2, 3, 0], + "cubes": [ + {"origin": [-3.5, 0, -3.5], "size": [3, 3, 6], "uv": [0, 26]} + ] + }, + { + "name": "leftFoot", + "parent": "root", + "pivot": [2, 3, 0], + "cubes": [ + {"origin": [0.5, 0, -3.5], "size": [3, 3, 6], "uv": [0, 26], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/brutalfly.geo.json b/common/src/main/resources/assets/antarchy/geo/brutalfly.geo.json new file mode 100644 index 00000000..665ceb60 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/brutalfly.geo.json @@ -0,0 +1,587 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 512, + "texture_height": 512, + "visible_bounds_width": 9, + "visible_bounds_height": 10, + "visible_bounds_offset": [0, 2, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [5.52857, 33.57143, -11.1528] + }, + { + "name": "upper_body", + "parent": "bone", + "pivot": [0, 33, 4], + "cubes": [ + {"origin": [-7, 26, -13], "size": [14, 14, 7], "inflate": 0.1, "uv": [218, 81]}, + {"origin": [-6, 27, -6], "size": [12, 12, 10], "uv": [174, 81]}, + {"origin": [0, 39, -6], "size": [0, 5, 10], "uv": [228, 246]}, + {"origin": [0, 39, -12], "size": [0, 3, 6], "uv": [244, 45]} + ] + }, + { + "name": "head", + "parent": "upper_body", + "pivot": [0, 28, -19], + "cubes": [ + {"origin": [-4, 28, -18], "size": [8, 3, 5], "uv": [174, 103]}, + {"origin": [2.1, 32, -23.1], "size": [3, 3, 3], "uv": [96, 247]}, + {"origin": [-5.1, 32, -23.1], "size": [3, 3, 3], "uv": [96, 247], "mirror": true}, + {"origin": [-5, 31, -23], "size": [10, 5, 10], "uv": [234, 197]}, + {"origin": [-4, 36, -22], "size": [8, 2, 9], "uv": [236, 182]} + ] + }, + { + "name": "left_antenna", + "parent": "head", + "pivot": [3, 37.88568, -21.77535], + "rotation": [-33.40659, -12.60837, 8.19252], + "cubes": [ + {"origin": [2, 36.66299, -31.86505], "size": [2, 2, 11], "uv": [244, 0]}, + {"origin": [2, 32.66299, -32.86505], "size": [2, 4, 4], "uv": [62, 247]} + ] + }, + { + "name": "right_antenna", + "parent": "head", + "pivot": [-3, 37.88568, -21.77535], + "rotation": [-33.40659, 12.60837, -8.19252], + "cubes": [ + {"origin": [-4, 36.66299, -31.86505], "size": [2, 2, 11], "uv": [244, 0], "mirror": true}, + {"origin": [-4, 32.66299, -32.86505], "size": [2, 4, 4], "uv": [62, 247], "mirror": true} + ] + }, + { + "name": "left_mouth", + "parent": "head", + "pivot": [0, 31, -18], + "cubes": [ + {"origin": [0, 28, -23], "size": [5, 3, 5], "uv": [200, 103]} + ] + }, + { + "name": "right_mouth", + "parent": "head", + "pivot": [0, 31, -18], + "cubes": [ + {"origin": [-5, 28, -23], "size": [5, 3, 5], "uv": [200, 103], "mirror": true} + ] + }, + { + "name": "tongue", + "parent": "head", + "pivot": [0, 31.6, -7.9], + "cubes": [ + {"origin": [0, 30, -21], "size": [0, 2, 15], "uv": [234, 229]} + ] + }, + { + "name": "tongue_2", + "parent": "tongue", + "pivot": [0, 31, -20], + "cubes": [ + {"origin": [0, 30, -21], "size": [0, 2, 15], "uv": [236, 165]} + ] + }, + { + "name": "tongue_3", + "parent": "tongue_2", + "pivot": [0, 31.66667, -6.5], + "cubes": [ + {"origin": [0, 32, -7], "size": [0, 2, 1], "uv": [184, 230]}, + {"origin": [0, 34, -9], "size": [0, 1, 3], "uv": [236, 193]} + ] + }, + { + "name": "tongue_4", + "parent": "tongue_3", + "pivot": [0, 34, -8.5], + "cubes": [ + {"origin": [0, 33, -9], "size": [0, 1, 1], "uv": [184, 233]} + ] + }, + { + "name": "left_wings", + "parent": "upper_body", + "pivot": [6.5, 39, -3.5] + }, + { + "name": "left_wing_back", + "parent": "left_wings", + "pivot": [6.5, 39, -3.5], + "rotation": [0, -2.5, 0], + "cubes": [ + {"origin": [6, 39, -4], "size": [27, 0, 32], "uv": [118, 165]} + ] + }, + { + "name": "left_wing_back_2", + "parent": "left_wing_back", + "pivot": [33.5, 39, 9.5], + "cubes": [ + {"origin": [33, 39, -4], "size": [15, 0, 27], "uv": [174, 54]} + ] + }, + { + "name": "left_wing", + "parent": "left_wings", + "pivot": [7.5, 39, -4.5], + "rotation": [0, 2.5, 0], + "cubes": [ + {"origin": [6, 39, -57], "size": [25, 0, 53], "uv": [158, 112]} + ] + }, + { + "name": "left_wing_2", + "parent": "left_wing", + "pivot": [31, 39, -17.5], + "cubes": [ + {"origin": [31, 39, -57], "size": [26, 0, 53], "uv": [0, 112]} + ] + }, + { + "name": "right_wings", + "parent": "upper_body", + "pivot": [-6.5, 39, -3.5] + }, + { + "name": "right_wing_back", + "parent": "right_wings", + "pivot": [-6.5, 39, -3.5], + "rotation": [0, 2.5, 0], + "cubes": [ + {"origin": [-33, 39, -4], "size": [27, 0, 32], "uv": [118, 165], "mirror": true} + ] + }, + { + "name": "right_wing_back_2", + "parent": "right_wing_back", + "pivot": [-33.5, 39, 9.5], + "cubes": [ + {"origin": [-48, 39, -4], "size": [15, 0, 27], "uv": [174, 54], "mirror": true} + ] + }, + { + "name": "right_wing", + "parent": "right_wings", + "pivot": [-7.5, 39, -4.5], + "rotation": [0, -2.5, 0], + "cubes": [ + {"origin": [-31, 39, -57], "size": [25, 0, 53], "uv": [158, 112], "mirror": true} + ] + }, + { + "name": "right_wing_2", + "parent": "right_wing", + "pivot": [-31, 39, -17.5], + "cubes": [ + {"origin": [-57, 39, -57], "size": [26, 0, 53], "uv": [0, 112], "mirror": true} + ] + }, + { + "name": "Left_legs", + "parent": "upper_body", + "pivot": [2.52857, 33.57143, 4.8472] + }, + { + "name": "left_leg_3", + "parent": "Left_legs", + "pivot": [2.52857, 33.57143, 4.8472], + "rotation": [35, 30, 0], + "cubes": [ + {"origin": [4, 28, 6.9], "size": [0, 7, 3], "uv": [108, 247]}, + {"origin": [3, 28, 3.9], "size": [3, 3, 3], "inflate": 0.2, "uv": [84, 247]}, + {"origin": [3, 19, 3.9], "size": [3, 9, 3], "inflate": 0.01, "uv": [50, 247]}, + {"origin": [2.5, 31, 3.5], "size": [4, 5, 4], "uv": [220, 102]} + ] + }, + { + "name": "left_knee_3", + "parent": "left_leg_3", + "pivot": [4.35556, 19.05366, 3.68533], + "rotation": [-117.5, 0, 0], + "cubes": [ + {"origin": [3, 10.05366, 1.1264], "size": [3, 11, 3], "uv": [24, 247]} + ] + }, + { + "name": "left_knee_down_3", + "parent": "left_knee_3", + "pivot": [4.5, 10.99638, 2.9669], + "cubes": [ + {"origin": [3, 9.66208, 2.10073], "size": [3, 3, 17], "inflate": 0.01, "uv": [118, 230]}, + {"origin": [2.9, 8.13998, 17.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [4.5, 10.63998, 14.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247]}, + {"origin": [5.1, 8.13998, 17.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [4.5, 10.63998, 14.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247]} + ] + }, + { + "name": "left_leg_2", + "parent": "Left_legs", + "pivot": [4.52857, 33.57143, -3.1528], + "rotation": [35, 30, 0], + "cubes": [ + {"origin": [6, 28, -1.1], "size": [0, 7, 3], "uv": [108, 247]}, + {"origin": [5, 28, -4.1], "size": [3, 3, 3], "inflate": 0.2, "uv": [84, 247]}, + {"origin": [5, 19, -4.1], "size": [3, 9, 3], "inflate": 0.01, "uv": [50, 247]}, + {"origin": [4.5, 31, -4.5], "size": [4, 5, 4], "uv": [220, 102]} + ] + }, + { + "name": "left_knee_2", + "parent": "left_leg_2", + "pivot": [6.35556, 19.05366, -4.31467], + "rotation": [-117.5, 0, 0], + "cubes": [ + {"origin": [5, 10.05366, -6.8736], "size": [3, 11, 3], "uv": [24, 247]} + ] + }, + { + "name": "left_knee_down_2", + "parent": "left_knee_2", + "pivot": [6.5, 10.99638, -5.0331], + "cubes": [ + {"origin": [5, 9.66208, -5.89927], "size": [3, 3, 17], "inflate": 0.01, "uv": [118, 230]}, + {"origin": [4.9, 8.13998, 9.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [6.5, 10.63998, 6.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247]}, + {"origin": [7.1, 8.13998, 9.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [6.5, 10.63998, 6.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247]} + ] + }, + { + "name": "left_leg_1", + "parent": "Left_legs", + "pivot": [5.52857, 33.57143, -11.1528], + "rotation": [35, 30, 0], + "cubes": [ + {"origin": [7, 28, -9.1], "size": [0, 7, 3], "uv": [108, 247]}, + {"origin": [6, 28, -12.1], "size": [3, 3, 3], "inflate": 0.2, "uv": [84, 247]}, + {"origin": [6, 19, -12.1], "size": [3, 9, 3], "inflate": 0.01, "uv": [50, 247]}, + {"origin": [5.5, 31, -12.5], "size": [4, 5, 4], "uv": [220, 102]} + ] + }, + { + "name": "left_knee_1", + "parent": "left_leg_1", + "pivot": [7.35556, 19.05366, -12.31467], + "rotation": [-117.5, 0, 0], + "cubes": [ + {"origin": [6, 10.05366, -14.8736], "size": [3, 11, 3], "uv": [24, 247]} + ] + }, + { + "name": "left_knee_down_1", + "parent": "left_knee_1", + "pivot": [7.5, 10.99638, -13.0331], + "cubes": [ + {"origin": [6, 9.66208, -13.89927], "size": [3, 3, 17], "inflate": 0.01, "uv": [118, 230]}, + {"origin": [5.9, 8.13998, 1.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [7.5, 10.63998, -1.43349], "rotation": [-7.5, 0, 0], "uv": [36, 247]}, + {"origin": [8.1, 8.13998, 1.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [7.5, 10.63998, -1.43349], "rotation": [-7.5, 0, 0], "uv": [36, 247]} + ] + }, + { + "name": "Right_legs", + "parent": "upper_body", + "pivot": [-2.52857, 33.57143, 4.8472] + }, + { + "name": "right_leg_3", + "parent": "Right_legs", + "pivot": [-2.52857, 33.57143, 4.8472], + "rotation": [35, -30, 0], + "cubes": [ + {"origin": [-4, 28, 6.9], "size": [0, 7, 3], "uv": [108, 247], "mirror": true}, + {"origin": [-6, 28, 3.9], "size": [3, 3, 3], "inflate": 0.2, "uv": [84, 247], "mirror": true}, + {"origin": [-6, 19, 3.9], "size": [3, 9, 3], "inflate": 0.01, "uv": [50, 247], "mirror": true}, + {"origin": [-6.5, 31, 3.5], "size": [4, 5, 4], "uv": [220, 102], "mirror": true} + ] + }, + { + "name": "right_knee_3", + "parent": "right_leg_3", + "pivot": [-4.35556, 19.05366, 3.68533], + "rotation": [-117.5, 0, 0], + "cubes": [ + {"origin": [-6, 10.05366, 1.1264], "size": [3, 11, 3], "uv": [24, 247], "mirror": true} + ] + }, + { + "name": "right_knee_down_3", + "parent": "right_knee_3", + "pivot": [-4.5, 10.99638, 2.9669], + "cubes": [ + {"origin": [-6, 9.66208, 2.10073], "size": [3, 3, 17], "inflate": 0.01, "uv": [118, 230], "mirror": true}, + {"origin": [-3.9, 8.13998, 17.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [-4.5, 10.63998, 14.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247], "mirror": true}, + {"origin": [-6.1, 8.13998, 17.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [-4.5, 10.63998, 14.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247], "mirror": true} + ] + }, + { + "name": "right_leg_2", + "parent": "Right_legs", + "pivot": [-4.52857, 33.57143, -3.1528], + "rotation": [35, -30, 0], + "cubes": [ + {"origin": [-6, 28, -1.1], "size": [0, 7, 3], "uv": [108, 247], "mirror": true}, + {"origin": [-8, 28, -4.1], "size": [3, 3, 3], "inflate": 0.2, "uv": [84, 247], "mirror": true}, + {"origin": [-8, 19, -4.1], "size": [3, 9, 3], "inflate": 0.01, "uv": [50, 247], "mirror": true}, + {"origin": [-8.5, 31, -4.5], "size": [4, 5, 4], "uv": [220, 102], "mirror": true} + ] + }, + { + "name": "right_knee_2", + "parent": "right_leg_2", + "pivot": [-6.35556, 19.05366, -4.31467], + "rotation": [-117.5, 0, 0], + "cubes": [ + {"origin": [-8, 10.05366, -6.8736], "size": [3, 11, 3], "uv": [24, 247], "mirror": true} + ] + }, + { + "name": "right_knee_down_2", + "parent": "right_knee_2", + "pivot": [-6.5, 10.99638, -5.0331], + "cubes": [ + {"origin": [-8, 9.66208, -5.89927], "size": [3, 3, 17], "inflate": 0.01, "uv": [118, 230], "mirror": true}, + {"origin": [-5.9, 8.13998, 9.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [-6.5, 10.63998, 6.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247], "mirror": true}, + {"origin": [-8.1, 8.13998, 9.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [-6.5, 10.63998, 6.56651], "rotation": [-7.5, 0, 0], "uv": [36, 247], "mirror": true} + ] + }, + { + "name": "right_leg_1", + "parent": "Right_legs", + "pivot": [-5.52857, 33.57143, -11.1528], + "rotation": [35, -30, 0], + "cubes": [ + {"origin": [-7, 28, -9.1], "size": [0, 7, 3], "uv": [108, 247], "mirror": true}, + {"origin": [-9, 28, -12.1], "size": [3, 3, 3], "inflate": 0.2, "uv": [84, 247], "mirror": true}, + {"origin": [-9, 19, -12.1], "size": [3, 9, 3], "inflate": 0.01, "uv": [50, 247], "mirror": true}, + {"origin": [-9.5, 31, -12.5], "size": [4, 5, 4], "uv": [220, 102], "mirror": true} + ] + }, + { + "name": "right_knee_1", + "parent": "right_leg_1", + "pivot": [-7.35556, 19.05366, -12.31467], + "rotation": [-117.5, 0, 0], + "cubes": [ + {"origin": [-9, 10.05366, -14.8736], "size": [3, 11, 3], "uv": [24, 247], "mirror": true} + ] + }, + { + "name": "right_knee_down_1", + "parent": "right_knee_1", + "pivot": [-7.5, 10.99638, -13.0331], + "cubes": [ + {"origin": [-9, 9.66208, -13.89927], "size": [3, 3, 17], "inflate": 0.01, "uv": [118, 230], "mirror": true}, + {"origin": [-6.9, 8.13998, 1.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [-7.5, 10.63998, -1.43349], "rotation": [-7.5, 0, 0], "uv": [36, 247], "mirror": true}, + {"origin": [-9.1, 8.13998, 1.06651], "size": [1, 5, 6], "inflate": 0.01, "pivot": [-7.5, 10.63998, -1.43349], "rotation": [-7.5, 0, 0], "uv": [36, 247], "mirror": true} + ] + }, + { + "name": "waist", + "parent": "bone", + "pivot": [0, 32.5, 4.75], + "cubes": [ + {"origin": [0, 37, 4], "size": [0, 5, 5], "uv": [74, 247]}, + {"origin": [0, 36, 9], "size": [0, 2, 7], "uv": [236, 102]}, + {"origin": [-4, 29, 9], "size": [8, 7, 4], "uv": [244, 34]}, + {"origin": [-5, 28, 4], "size": [10, 9, 5], "uv": [158, 242]} + ] + }, + { + "name": "tail", + "parent": "waist", + "pivot": [0, 32.5, 13.5], + "cubes": [ + {"origin": [-5, 28, 13], "size": [10, 9, 3], "uv": [158, 230]} + ] + }, + { + "name": "tail_2", + "parent": "tail", + "pivot": [0, 32.5, 17], + "cubes": [ + {"origin": [7, 26, 16], "size": [0, 13, 5], "pivot": [7, 32.5, 16], "rotation": [0, 20, 0], "uv": [14, 247]}, + {"origin": [7, 26, 22], "size": [0, 13, 8], "pivot": [7, 32.5, 22], "rotation": [0, 20, 0], "uv": [244, 13]}, + {"origin": [7, 26, 26], "size": [0, 13, 10], "pivot": [7, 32.5, 26], "rotation": [0, 20, 0], "uv": [188, 242]}, + {"origin": [7, 26, 31], "size": [0, 13, 10], "pivot": [7, 32.5, 31], "rotation": [0, 20, 0], "uv": [208, 242]}, + {"origin": [7, 26, 18], "size": [0, 13, 7], "pivot": [7, 32.5, 18], "rotation": [0, 20, 0], "uv": [0, 247]}, + {"origin": [-7, 26, 31], "size": [0, 13, 10], "pivot": [-7, 32.5, 31], "rotation": [0, -20, 0], "uv": [208, 242], "mirror": true}, + {"origin": [-7, 26, 26], "size": [0, 13, 10], "pivot": [-7, 32.5, 26], "rotation": [0, -20, 0], "uv": [188, 242], "mirror": true}, + {"origin": [-7, 26, 18], "size": [0, 13, 7], "pivot": [-7, 32.5, 18], "rotation": [0, -20, 0], "uv": [0, 247], "mirror": true}, + {"origin": [-7, 26, 22], "size": [0, 13, 8], "pivot": [-7, 32.5, 22], "rotation": [0, -20, 0], "uv": [244, 13], "mirror": true}, + {"origin": [-7, 26, 16], "size": [0, 13, 5], "pivot": [-7, 32.5, 16], "rotation": [0, -20, 0], "uv": [14, 247], "mirror": true}, + {"origin": [-7, 26, 16], "size": [14, 13, 20], "uv": [118, 197]}, + {"origin": [-5, 27, 36], "size": [10, 11, 6], "uv": [234, 212]} + ] + }, + { + "name": "coocon", + "pivot": [0, 26.25, -12.375] + }, + { + "name": "left_coocon", + "parent": "coocon", + "pivot": [0.75, 46.25, -15.375], + "cubes": [ + {"origin": [0, 6, -80], "size": [17, 38, 7], "uv": [186, 197]}, + {"origin": [0, 0, -73], "size": [23, 48, 64], "uv": [0, 0]}, + {"origin": [0, 4, -9], "size": [17, 40, 42], "uv": [0, 165]}, + {"origin": [0, 8, 33], "size": [13, 32, 22], "uv": [174, 0]}, + {"origin": [0.25, 46.85, -73.375], "size": [2, 2, 3], "pivot": [1.25, 47.1, -71.875], "rotation": [45, 0, 0], "uv": [0, 0]}, + {"origin": [1.25, 48.85, -73.375], "size": [0, 3, 3], "pivot": [1.25, 47.1, -71.875], "rotation": [45, 0, 0], "uv": [12, -3]}, + {"origin": [22.25, 48.85, -73.375], "size": [0, 3, 3], "pivot": [22.25, 47.1, -71.875], "rotation": [40.144, -22.32924, 24.25045], "uv": [12, -3]}, + {"origin": [21.25, 46.85, -73.375], "size": [2, 2, 3], "pivot": [22.25, 47.1, -71.875], "rotation": [40.144, -22.32924, 24.25045], "uv": [0, 0]}, + {"origin": [1.25, 50.05, -57.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [0.25, 48.05, -57.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [0.25, 48.05, -43.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [1.25, 50.05, -43.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [9.25, 48.05, -32.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [10.25, 50.05, -32.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [10.25, 50.05, -52.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [9.25, 48.05, -52.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [24.25, 42.05, -54.375], "size": [2, 2, 3], "pivot": [25.25, 44.3, -52.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [25.25, 44.05, -54.375], "size": [0, 3, 3], "pivot": [25.25, 44.3, -52.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [25.25, 22.05, -67.375], "size": [0, 3, 3], "pivot": [25.25, 22.3, -65.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [24.25, 20.05, -67.375], "size": [2, 2, 3], "pivot": [25.25, 22.3, -65.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [24.25, 0.05, -62.375], "size": [2, 2, 3], "pivot": [25.25, 2.3, -60.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [25.25, 2.05, -62.375], "size": [0, 3, 3], "pivot": [25.25, 2.3, -60.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [25.25, 2.05, -33.375], "size": [0, 3, 3], "pivot": [25.25, 2.3, -31.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [24.25, 0.05, -33.375], "size": [2, 2, 3], "pivot": [25.25, 2.3, -31.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [24.25, 25.05, -49.375], "size": [2, 2, 3], "pivot": [25.25, 27.3, -47.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [25.25, 27.05, -49.375], "size": [0, 3, 3], "pivot": [25.25, 27.3, -47.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [25.25, 8.05, -30.375], "size": [0, 3, 3], "pivot": [25.25, 8.3, -28.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [24.25, 6.05, -30.375], "size": [2, 2, 3], "pivot": [25.25, 8.3, -28.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [24.25, 32.05, -30.375], "size": [2, 2, 3], "pivot": [25.25, 34.3, -28.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [25.25, 34.05, -30.375], "size": [0, 3, 3], "pivot": [25.25, 34.3, -28.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [25.25, 42.05, -18.375], "size": [0, 3, 3], "pivot": [25.25, 42.3, -16.875], "rotation": [0, 0, 90], "uv": [12, -3]}, + {"origin": [24.25, 40.05, -18.375], "size": [2, 2, 3], "pivot": [25.25, 42.3, -16.875], "rotation": [0, 0, 90], "uv": [0, 0]}, + {"origin": [23.25, 48.55, -43.375], "size": [0, 3, 3], "pivot": [23.25, 48.8, -41.875], "rotation": [0, 0, 40], "uv": [12, -3]}, + {"origin": [22.25, 46.55, -43.375], "size": [2, 2, 3], "pivot": [23.25, 48.8, -41.875], "rotation": [0, 0, 40], "uv": [0, 0]}, + {"origin": [1.25, 50.05, -26.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [0.25, 48.05, -26.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [8.25, 44.05, 15.625], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [9.25, 46.05, 15.625], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [4.25, 46.05, 0.625], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [3.25, 44.05, 0.625], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [0.25, 47.05, -11.575], "size": [2, 2, 3], "pivot": [1.25, 47.3, -10.075], "rotation": [-40, 0, 0], "uv": [0, 0]}, + {"origin": [1.25, 49.05, -11.575], "size": [0, 3, 3], "pivot": [1.25, 47.3, -10.075], "rotation": [-40, 0, 0], "uv": [12, -3]}, + {"origin": [22.25, 49.05, -11.575], "size": [0, 3, 3], "pivot": [22.25, 47.3, -10.075], "rotation": [-29.5635, -3.61928, 49.65666], "uv": [12, -3]}, + {"origin": [21.25, 47.05, -11.575], "size": [2, 2, 3], "pivot": [22.25, 47.3, -10.075], "rotation": [-29.5635, -3.61928, 49.65666], "uv": [0, 0]}, + {"origin": [1.25, -4.05, -11.575], "size": [0, 3, 3], "pivot": [1.25, 0.7, -10.075], "rotation": [40, 0, 0], "uv": [12, -3]}, + {"origin": [0.25, -1.05, -11.575], "size": [2, 2, 3], "pivot": [1.25, 0.7, -10.075], "rotation": [40, 0, 0], "uv": [0, 0]}, + {"origin": [0.25, -2.05, -26.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [1.25, -5.05, -26.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [0.25, -2.05, -43.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [1.25, -5.05, -43.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [0.25, -2.05, -57.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [1.25, -5.05, -57.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [0.25, -0.85, -73.375], "size": [2, 2, 3], "pivot": [1.25, 0.9, -71.875], "rotation": [-45, 0, 0], "uv": [0, 0]}, + {"origin": [1.25, -3.85, -73.375], "size": [0, 3, 3], "pivot": [1.25, 0.9, -71.875], "rotation": [-45, 0, 0], "uv": [12, -3]}, + {"origin": [9.25, -2.05, -52.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [10.25, -5.05, -52.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [9.25, -2.05, -32.375], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [10.25, -5.05, -32.375], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [22.25, -4.05, -11.575], "size": [0, 3, 3], "pivot": [22.25, 0.7, -10.075], "rotation": [29.5635, -3.61928, -49.65666], "uv": [12, -3]}, + {"origin": [21.25, -1.05, -11.575], "size": [2, 2, 3], "pivot": [22.25, 0.7, -10.075], "rotation": [29.5635, -3.61928, -49.65666], "uv": [0, 0]}, + {"origin": [21.25, -0.85, -73.375], "size": [2, 2, 3], "pivot": [22.25, 0.9, -71.875], "rotation": [-40.144, -22.32924, -24.25045], "uv": [0, 0]}, + {"origin": [22.25, -3.85, -73.375], "size": [0, 3, 3], "pivot": [22.25, 0.9, -71.875], "rotation": [-40.144, -22.32924, -24.25045], "uv": [12, -3]}, + {"origin": [23.25, -3.55, -43.375], "size": [0, 3, 3], "pivot": [23.25, -0.8, -41.875], "rotation": [0, 0, -40], "uv": [12, -3]}, + {"origin": [22.25, -0.55, -43.375], "size": [2, 2, 3], "pivot": [23.25, -0.8, -41.875], "rotation": [0, 0, -40], "uv": [0, 0]}, + {"origin": [15.25, 43.05, 30.425], "size": [2, 2, 3], "pivot": [16.25, 43.3, 31.925], "rotation": [-29.5635, -3.61928, 49.65666], "uv": [0, 0]}, + {"origin": [16.25, 45.05, 30.425], "size": [0, 3, 3], "pivot": [16.25, 43.3, 31.925], "rotation": [-29.5635, -3.61928, 49.65666], "uv": [12, -3]}, + {"origin": [15.25, 2.95, 30.425], "size": [2, 2, 3], "pivot": [16.25, 4.7, 31.925], "rotation": [29.5635, -3.61928, -49.65666], "uv": [0, 0]}, + {"origin": [16.25, -0.05, 30.425], "size": [0, 3, 3], "pivot": [16.25, 4.7, 31.925], "rotation": [29.5635, -3.61928, -49.65666], "uv": [12, -3]}, + {"origin": [8.25, 1.95, 15.625], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [9.25, -1.05, 15.625], "size": [0, 3, 3], "uv": [12, -3]}, + {"origin": [3.25, 1.95, 0.625], "size": [2, 2, 3], "uv": [0, 0]}, + {"origin": [4.25, -1.05, 0.625], "size": [0, 3, 3], "uv": [12, -3]} + ] + }, + { + "name": "right_coocon", + "parent": "coocon", + "pivot": [-0.75, 46.25, -15.375], + "cubes": [ + {"origin": [-17, 6, -80], "size": [17, 38, 7], "uv": [186, 197], "mirror": true}, + {"origin": [-23, 0, -73], "size": [23, 48, 64], "uv": [0, 0], "mirror": true}, + {"origin": [-17, 4, -9], "size": [17, 40, 42], "uv": [0, 165], "mirror": true}, + {"origin": [-13, 8, 33], "size": [13, 32, 22], "uv": [174, 0], "mirror": true}, + {"origin": [-2.25, 46.85, -73.375], "size": [2, 2, 3], "pivot": [-1.25, 47.1, -71.875], "rotation": [45, 0, 0], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, 48.85, -73.375], "size": [0, 3, 3], "pivot": [-1.25, 47.1, -71.875], "rotation": [45, 0, 0], "uv": [12, -3], "mirror": true}, + {"origin": [-22.25, 48.85, -73.375], "size": [0, 3, 3], "pivot": [-22.25, 47.1, -71.875], "rotation": [40.144, 22.32924, -24.25045], "uv": [12, -3], "mirror": true}, + {"origin": [-23.25, 46.85, -73.375], "size": [2, 2, 3], "pivot": [-22.25, 47.1, -71.875], "rotation": [40.144, 22.32924, -24.25045], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, 50.05, -57.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-2.25, 48.05, -57.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-2.25, 48.05, -43.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, 50.05, -43.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-11.25, 48.05, -32.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-10.25, 50.05, -32.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-10.25, 50.05, -52.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-11.25, 48.05, -52.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-26.25, 42.05, -54.375], "size": [2, 2, 3], "pivot": [-25.25, 44.3, -52.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-25.25, 44.05, -54.375], "size": [0, 3, 3], "pivot": [-25.25, 44.3, -52.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-25.25, 22.05, -67.375], "size": [0, 3, 3], "pivot": [-25.25, 22.3, -65.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-26.25, 20.05, -67.375], "size": [2, 2, 3], "pivot": [-25.25, 22.3, -65.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-26.25, 0.05, -62.375], "size": [2, 2, 3], "pivot": [-25.25, 2.3, -60.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-25.25, 2.05, -62.375], "size": [0, 3, 3], "pivot": [-25.25, 2.3, -60.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-25.25, 2.05, -33.375], "size": [0, 3, 3], "pivot": [-25.25, 2.3, -31.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-26.25, 0.05, -33.375], "size": [2, 2, 3], "pivot": [-25.25, 2.3, -31.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-26.25, 25.05, -49.375], "size": [2, 2, 3], "pivot": [-25.25, 27.3, -47.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-25.25, 27.05, -49.375], "size": [0, 3, 3], "pivot": [-25.25, 27.3, -47.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-25.25, 8.05, -30.375], "size": [0, 3, 3], "pivot": [-25.25, 8.3, -28.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-26.25, 6.05, -30.375], "size": [2, 2, 3], "pivot": [-25.25, 8.3, -28.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-26.25, 32.05, -30.375], "size": [2, 2, 3], "pivot": [-25.25, 34.3, -28.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-25.25, 34.05, -30.375], "size": [0, 3, 3], "pivot": [-25.25, 34.3, -28.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-25.25, 42.05, -18.375], "size": [0, 3, 3], "pivot": [-25.25, 42.3, -16.875], "rotation": [0, 0, -90], "uv": [12, -3], "mirror": true}, + {"origin": [-26.25, 40.05, -18.375], "size": [2, 2, 3], "pivot": [-25.25, 42.3, -16.875], "rotation": [0, 0, -90], "uv": [0, 0], "mirror": true}, + {"origin": [-23.25, 48.55, -43.375], "size": [0, 3, 3], "pivot": [-23.25, 48.8, -41.875], "rotation": [0, 0, -40], "uv": [12, -3], "mirror": true}, + {"origin": [-24.25, 46.55, -43.375], "size": [2, 2, 3], "pivot": [-23.25, 48.8, -41.875], "rotation": [0, 0, -40], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, 50.05, -26.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-2.25, 48.05, -26.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-10.25, 44.05, 15.625], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-9.25, 46.05, 15.625], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-4.25, 46.05, 0.625], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-5.25, 44.05, 0.625], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-2.25, 47.05, -11.575], "size": [2, 2, 3], "pivot": [-1.25, 47.3, -10.075], "rotation": [-40, 0, 0], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, 49.05, -11.575], "size": [0, 3, 3], "pivot": [-1.25, 47.3, -10.075], "rotation": [-40, 0, 0], "uv": [12, -3], "mirror": true}, + {"origin": [-22.25, 49.05, -11.575], "size": [0, 3, 3], "pivot": [-22.25, 47.3, -10.075], "rotation": [-29.5635, 3.61928, -49.65666], "uv": [12, -3], "mirror": true}, + {"origin": [-23.25, 47.05, -11.575], "size": [2, 2, 3], "pivot": [-22.25, 47.3, -10.075], "rotation": [-29.5635, 3.61928, -49.65666], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, -4.05, -11.575], "size": [0, 3, 3], "pivot": [-1.25, 0.7, -10.075], "rotation": [40, 0, 0], "uv": [12, -3], "mirror": true}, + {"origin": [-2.25, -1.05, -11.575], "size": [2, 2, 3], "pivot": [-1.25, 0.7, -10.075], "rotation": [40, 0, 0], "uv": [0, 0], "mirror": true}, + {"origin": [-2.25, -2.05, -26.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, -5.05, -26.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-2.25, -2.05, -43.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, -5.05, -43.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-2.25, -2.05, -57.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, -5.05, -57.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-2.25, -0.85, -73.375], "size": [2, 2, 3], "pivot": [-1.25, 0.9, -71.875], "rotation": [-45, 0, 0], "uv": [0, 0], "mirror": true}, + {"origin": [-1.25, -3.85, -73.375], "size": [0, 3, 3], "pivot": [-1.25, 0.9, -71.875], "rotation": [-45, 0, 0], "uv": [12, -3], "mirror": true}, + {"origin": [-11.25, -2.05, -52.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-10.25, -5.05, -52.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-11.25, -2.05, -32.375], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-10.25, -5.05, -32.375], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-22.25, -4.05, -11.575], "size": [0, 3, 3], "pivot": [-22.25, 0.7, -10.075], "rotation": [29.5635, 3.61928, 49.65666], "uv": [12, -3], "mirror": true}, + {"origin": [-23.25, -1.05, -11.575], "size": [2, 2, 3], "pivot": [-22.25, 0.7, -10.075], "rotation": [29.5635, 3.61928, 49.65666], "uv": [0, 0], "mirror": true}, + {"origin": [-23.25, -0.85, -73.375], "size": [2, 2, 3], "pivot": [-22.25, 0.9, -71.875], "rotation": [-40.144, 22.32924, 24.25045], "uv": [0, 0], "mirror": true}, + {"origin": [-22.25, -3.85, -73.375], "size": [0, 3, 3], "pivot": [-22.25, 0.9, -71.875], "rotation": [-40.144, 22.32924, 24.25045], "uv": [12, -3], "mirror": true}, + {"origin": [-23.25, -3.55, -43.375], "size": [0, 3, 3], "pivot": [-23.25, -0.8, -41.875], "rotation": [0, 0, 40], "uv": [12, -3], "mirror": true}, + {"origin": [-24.25, -0.55, -43.375], "size": [2, 2, 3], "pivot": [-23.25, -0.8, -41.875], "rotation": [0, 0, 40], "uv": [0, 0], "mirror": true}, + {"origin": [-17.25, 43.05, 30.425], "size": [2, 2, 3], "pivot": [-16.25, 43.3, 31.925], "rotation": [-29.5635, 3.61928, -49.65666], "uv": [0, 0], "mirror": true}, + {"origin": [-16.25, 45.05, 30.425], "size": [0, 3, 3], "pivot": [-16.25, 43.3, 31.925], "rotation": [-29.5635, 3.61928, -49.65666], "uv": [12, -3], "mirror": true}, + {"origin": [-17.25, 2.95, 30.425], "size": [2, 2, 3], "pivot": [-16.25, 4.7, 31.925], "rotation": [29.5635, 3.61928, 49.65666], "uv": [0, 0], "mirror": true}, + {"origin": [-16.25, -0.05, 30.425], "size": [0, 3, 3], "pivot": [-16.25, 4.7, 31.925], "rotation": [29.5635, 3.61928, 49.65666], "uv": [12, -3], "mirror": true}, + {"origin": [-10.25, 1.95, 15.625], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-9.25, -1.05, 15.625], "size": [0, 3, 3], "uv": [12, -3], "mirror": true}, + {"origin": [-5.25, 1.95, 0.625], "size": [2, 2, 3], "uv": [0, 0], "mirror": true}, + {"origin": [-4.25, -1.05, 0.625], "size": [0, 3, 3], "uv": [12, -3], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/butterfly.geo.json b/common/src/main/resources/assets/antarchy/geo/butterfly.geo.json new file mode 100644 index 00000000..eb758d80 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/butterfly.geo.json @@ -0,0 +1,192 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 5, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "bone2", + "pivot": [0, 4.16667, 7.5] + }, + { + "name": "bone", + "parent": "bone2", + "pivot": [0, 4.5, -1] + }, + { + "name": "left_wing", + "parent": "bone", + "pivot": [-2, 6.125, -7], + "rotation": [0, 0, -90], + "cubes": [ + {"origin": [-2, 6, -15], "size": [0, 10, 16], "uv": [0, 58], "mirror": true} + ] + }, + { + "name": "right_wing_", + "parent": "left_wing", + "pivot": [3, 6, 2], + "rotation": [-7.5, 0, 0], + "cubes": [ + {"origin": [-2, 6, 1], "size": [0, 10, 12], "uv": [64, 0], "mirror": true} + ] + }, + { + "name": "left_wing_3", + "parent": "right_wing_", + "pivot": [-2, 16, 7], + "cubes": [ + {"origin": [-2, 16, 1], "size": [0, 6, 12], "uv": [68, 58], "mirror": true} + ] + }, + { + "name": "left_wing_4", + "parent": "left_wing", + "pivot": [-2, 16, -7], + "cubes": [ + {"origin": [-2, 16, -15], "size": [0, 11, 16], "uv": [54, 31], "mirror": true} + ] + }, + { + "name": "right_wing", + "parent": "bone", + "pivot": [2, 6.125, -7], + "rotation": [0, 0, 90], + "cubes": [ + {"origin": [2, 6, -15], "size": [0, 10, 16], "uv": [0, 58]} + ] + }, + { + "name": "left_wing_", + "parent": "right_wing", + "pivot": [-3, 6, 2], + "rotation": [-7.5, 0, 0], + "cubes": [ + {"origin": [2, 6, 1], "size": [0, 10, 12], "uv": [64, 0]} + ] + }, + { + "name": "right_wing_3", + "parent": "left_wing_", + "pivot": [2, 16, 7], + "cubes": [ + {"origin": [2, 16, 1], "size": [0, 6, 12], "uv": [68, 58]} + ] + }, + { + "name": "right_wing_4", + "parent": "right_wing", + "pivot": [2, 16, -7], + "cubes": [ + {"origin": [2, 16, -15], "size": [0, 11, 16], "uv": [54, 31]} + ] + }, + { + "name": "upper_bpdy", + "parent": "bone", + "pivot": [0, 4.81206, -3.04286], + "cubes": [ + {"origin": [-2, 2.5, -4], "size": [4, 4, 5], "inflate": 0.1, "uv": [64, 22]} + ] + }, + { + "name": "head", + "parent": "upper_bpdy", + "pivot": [0, 4.26667, -3.73333], + "cubes": [ + {"origin": [1.2, 3.5, -12], "size": [0, 4, 6], "uv": [50, 74], "mirror": true}, + {"origin": [-1.2, 3.5, -12], "size": [0, 4, 6], "uv": [50, 74]}, + { + "origin": [1, 3.9, -7], + "size": [0.5, 0.5, 0.5], + "inflate": 0.1, + "uv": { + "north": {"uv": [62, 74], "uv_size": [1, 1]}, + "east": {"uv": [62, 74], "uv_size": [1, 1]}, + "south": {"uv": [62, 74], "uv_size": [1, 1]}, + "west": {"uv": [62, 74], "uv_size": [1, 1]}, + "up": {"uv": [62, 74], "uv_size": [1, 1]}, + "down": {"uv": [62, 75], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.5, 3.9, -7], + "size": [0.5, 0.5, 0.5], + "inflate": 0.1, + "uv": { + "north": {"uv": [62, 74], "uv_size": [1, 1]}, + "east": {"uv": [62, 74], "uv_size": [1, 1]}, + "south": {"uv": [62, 74], "uv_size": [1, 1]}, + "west": {"uv": [62, 74], "uv_size": [1, 1]}, + "up": {"uv": [62, 74], "uv_size": [1, 1]}, + "down": {"uv": [62, 75], "uv_size": [1, -1]} + } + }, + {"origin": [-1.5, 3, -7], "size": [3, 3, 3], "uv": [82, 22]} + ] + }, + { + "name": "tongue", + "parent": "head", + "pivot": [0, 3.69778, -6.87646], + "cubes": [ + {"origin": [0, -0.30222, -9.87646], "size": [0, 4, 6], "uv": [62, 76]} + ] + }, + { + "name": "legs", + "parent": "upper_bpdy", + "pivot": [0, 3.94741, -0.96667], + "cubes": [ + {"origin": [-2.2, -0.1, 0], "size": [1, 4, 1], "pivot": [-1.7, 3.9, 0.5], "rotation": [0, 0, 12.5], "uv": [32, 83]}, + {"origin": [-2.2, -0.1, -1.4], "size": [1, 4, 1], "pivot": [-1.7, 3.9, -0.9], "rotation": [0, 0, 12.5], "uv": [32, 83]}, + {"origin": [-2.2, -0.1, -3], "size": [1, 4, 1], "pivot": [-1.7, 3.9, -2.5], "rotation": [0, 0, 12.5], "uv": [32, 83]}, + {"origin": [1.2, -0.1, 0], "size": [1, 4, 1], "pivot": [1.7, 3.9, 0.5], "rotation": [0, 0, -12.5], "uv": [32, 83], "mirror": true}, + {"origin": [1.2, -0.1, -1.4], "size": [1, 4, 1], "pivot": [1.7, 3.9, -0.9], "rotation": [0, 0, -12.5], "uv": [32, 83], "mirror": true}, + {"origin": [1.2, -0.1, -3], "size": [1, 4, 1], "pivot": [1.7, 3.9, -2.5], "rotation": [0, 0, -12.5], "uv": [32, 83], "mirror": true} + ] + }, + { + "name": "tail", + "parent": "bone", + "pivot": [0, 4.5, 1.25], + "cubes": [ + {"origin": [-2, 2.5, 5], "size": [4, 4, 5], "uv": [32, 74]}, + {"origin": [-1.5, 3, 1], "size": [3, 3, 4], "uv": [74, 76]} + ] + }, + { + "name": "cocoon", + "parent": "bone2", + "pivot": [0, 4.16667, 7.5], + "cubes": [ + {"origin": [-7, -2, -17], "size": [14, 13, 18], "uv": [0, 0]} + ] + }, + { + "name": "cocoon_2", + "parent": "cocoon", + "pivot": [0, 4, -0.25], + "cubes": [ + {"origin": [-5.5, -1, 1], "size": [11, 11, 16], "uv": [0, 31]} + ] + }, + { + "name": "cocoon_3", + "parent": "cocoon_2", + "pivot": [0, 3.5, 16.5], + "cubes": [ + {"origin": [-4.5, 0, 17], "size": [9, 7, 9], "uv": [32, 58]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/caterpillar.geo.json b/common/src/main/resources/assets/antarchy/geo/caterpillar.geo.json new file mode 100644 index 00000000..c4d09851 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/caterpillar.geo.json @@ -0,0 +1,111 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 5, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "bone2", + "pivot": [0, 4.16667, 7.5] + }, + { + "name": "cocoon", + "parent": "bone2", + "pivot": [0, 4.16667, 7.5], + "cubes": [ + {"origin": [-7, -2, -17], "size": [14, 13, 18], "uv": [0, 0]} + ] + }, + { + "name": "cocoon_2", + "parent": "cocoon", + "pivot": [-0.75, 2.25, -0.5], + "cubes": [ + {"origin": [-5.5, -1, 1], "size": [11, 11, 16], "uv": [0, 31]} + ] + }, + { + "name": "cocoon_3", + "parent": "cocoon_2", + "pivot": [0, 3.5, 16.5], + "cubes": [ + {"origin": [-4.5, 0, 17], "size": [9, 7, 9], "uv": [54, 52]} + ] + }, + { + "name": "bone", + "parent": "bone2", + "pivot": [0, 2.5, -1.09445] + }, + { + "name": "upper_body", + "parent": "bone", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-5, 0, -6], "size": [10, 9, 12], "uv": [54, 31]} + ] + }, + { + "name": "head", + "parent": "bone", + "pivot": [0, 4, -8.61667], + "cubes": [ + {"origin": [-2, 0.5, -13], "size": [4, 3, 1], "uv": [42, 58]}, + {"origin": [-2, -0.5, -13], "size": [1, 1, 1], "uv": [50, 62]}, + {"origin": [1, -0.5, -13], "size": [1, 1, 1], "uv": [50, 62], "mirror": true}, + {"origin": [-4.5, 0, -12], "size": [9, 8, 6], "uv": [0, 58]}, + {"origin": [2.6, 2, -12.1], "size": [2, 2, 2], "uv": [42, 62]}, + {"origin": [-4.6, 2, -12.1], "size": [2, 2, 2], "uv": [42, 62], "mirror": true} + ] + }, + { + "name": "right_antenna", + "parent": "head", + "pivot": [-2.5, 6.5, -12], + "cubes": [ + {"origin": [-3.5, 5, -16], "size": [2, 3, 4], "uv": [30, 58]} + ] + }, + { + "name": "left_antenna", + "parent": "head", + "pivot": [2.5, 6.5, -12], + "cubes": [ + {"origin": [1.5, 5, -16], "size": [2, 3, 4], "uv": [30, 58], "mirror": true} + ] + }, + { + "name": "tail", + "parent": "bone", + "pivot": [0, 3.5, 5.33333], + "cubes": [ + {"origin": [-4.5, 0, 6], "size": [9, 8, 4], "uv": [64, 13]} + ] + }, + { + "name": "tail_2", + "parent": "tail", + "pivot": [0, 3.25, 9], + "cubes": [ + {"origin": [-4, 0, 10], "size": [8, 7, 6], "uv": [64, 0]} + ] + }, + { + "name": "tail_3", + "parent": "tail_2", + "pivot": [0, 3, 16], + "cubes": [ + {"origin": [-3.5, 0, 16], "size": [7, 6, 6], "uv": [30, 68]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/cloud_shark.geo.json b/common/src/main/resources/assets/antarchy/geo/cloud_shark.geo.json new file mode 100644 index 00000000..0cf8dbed --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/cloud_shark.geo.json @@ -0,0 +1,169 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 6, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "shark", + "pivot": [0, 9.5, -9.5] + }, + { + "name": "torso", + "parent": "shark", + "pivot": [0, 9.5, -9.5], + "cubes": [ + {"origin": [-6.5, 3, -22], "size": [13, 13, 25], "inflate": 0.01, "uv": [0, 0]}, + {"origin": [-1, 16, -12], "size": [2, 5, 9], "inflate": 0.01, "uv": [0, 0]}, + {"origin": [-1, 24, -9], "size": [2, 3, 16], "inflate": 0.1, "uv": [0, 99]}, + {"origin": [-1, 21, -9], "size": [2, 7, 6], "inflate": 0.01, "uv": [51, 0]} + ] + }, + { + "name": "tail", + "parent": "torso", + "pivot": [0, 8.90533, 0.125], + "cubes": [ + {"origin": [-5, 3, 0], "size": [10, 12, 14], "uv": [0, 39]} + ] + }, + { + "name": "tail2", + "parent": "tail", + "pivot": [0, 8.87377, 10.83333], + "cubes": [ + {"origin": [-3, 4, 11], "size": [6, 9, 17], "uv": [44, 59]}, + {"origin": [-1.5, 9.5, 23], "size": [3, 7, 13], "pivot": [0.5, 13, 28], "rotation": [45, 0, 0], "uv": [0, 78]}, + {"origin": [-1.5, -0.5, 22], "size": [3, 7, 13], "inflate": 0.01, "pivot": [0.5, 3, 30], "rotation": [-45, 0, 0], "uv": [31, 85]} + ] + }, + { + "name": "head", + "parent": "torso", + "pivot": [0, 8.92857, -22], + "cubes": [ + {"origin": [-7, 7, -33], "size": [14, 9, 11], "uv": [48, 39]}, + {"origin": [-5.5, 7, -41], "size": [11, 9, 8], "uv": [76, 0]}, + {"origin": [-4.5, 5.75, -40], "size": [9, 2, 0], "uv": [87, 38]}, + {"origin": [-4.5, 5.75, -40], "size": [0, 2, 10], "uv": [76, 26]}, + {"origin": [4.5, 5, -40], "size": [0, 2, 10], "uv": [87, 30], "mirror": true}, + {"origin": [-4.5, 10, -49], "size": [9, 6, 8], "uv": [63, 85]} + ] + }, + { + "name": "right_wing", + "parent": "head", + "pivot": [-8, 16, -27.5], + "cubes": [ + {"origin": [-22, 16, -33], "size": [14, 0, 11], "uv": [40, 105]} + ] + }, + { + "name": "right_wing2", + "parent": "right_wing", + "pivot": [-22, 16, -27.5], + "cubes": [ + {"origin": [-36, 16, -33], "size": [14, 0, 11], "uv": [89, 51]} + ] + }, + { + "name": "left_wing", + "parent": "head", + "pivot": [8, 16, -27.5], + "cubes": [ + {"origin": [8, 16, -33], "size": [14, 0, 11], "uv": [40, 105], "mirror": true} + ] + }, + { + "name": "left_wing2", + "parent": "left_wing", + "pivot": [22, 16, -27.5], + "cubes": [ + {"origin": [22, 16, -33], "size": [14, 0, 11], "uv": [89, 51], "mirror": true} + ] + }, + { + "name": "halo", + "parent": "head", + "pivot": [0, 17.5, -37], + "cubes": [ + {"origin": [-4, 17, -41], "size": [8, 1, 8], "uv": [96, 108]} + ] + }, + { + "name": "jaw", + "parent": "head", + "pivot": [0, 7, -22], + "cubes": [ + {"origin": [-5, 7.5, -29], "size": [0, 3, 7], "uv": [70, -7]}, + {"origin": [-5, 7.5, -29], "size": [2, 3, 0], "uv": [80, 21]}, + {"origin": [-3, 7.5, -37], "size": [0, 3, 8], "uv": [76, 22]}, + {"origin": [5, 7.5, -29], "size": [0, 3, 7], "uv": [70, -7], "mirror": true}, + {"origin": [3, 7.5, -29], "size": [2, 3, 0], "uv": [80, 21], "mirror": true}, + {"origin": [-3, 7.5, -37], "size": [6, 3, 0], "uv": [76, 33], "mirror": true}, + {"origin": [3, 7.5, -37], "size": [0, 3, 8], "uv": [76, 22], "mirror": true}, + {"origin": [-6, 4, -30], "size": [12, 4, 8], "uv": [76, 17]}, + {"origin": [-4, 4, -38], "size": [8, 4, 8], "uv": [73, 59]} + ] + }, + { + "name": "right_fin", + "parent": "torso", + "pivot": [-4.25, 5.5, -11.25], + "cubes": [ + {"origin": [-16.5, 4, -17], "size": [12, 3, 10], "inflate": 0.01, "uv": [0, 65]}, + {"origin": [-23.5, 4, -14], "size": [7, 3, 7], "inflate": 0.01, "uv": [90, 73]} + ] + }, + { + "name": "left_fin", + "parent": "torso", + "pivot": [4.25, 5.5, -11.25], + "cubes": [ + {"origin": [4.5, 4, -17], "size": [12, 3, 10], "inflate": 0.01, "uv": [0, 65], "mirror": true}, + {"origin": [16.5, 4, -14], "size": [7, 3, 7], "inflate": 0.01, "uv": [90, 73], "mirror": true} + ] + }, + { + "name": "right_wing3", + "parent": "torso", + "pivot": [-9, 16, 1.5], + "cubes": [ + {"origin": [-23, 16, -4], "size": [14, 0, 11], "uv": [40, 105]} + ] + }, + { + "name": "right_wing4", + "parent": "right_wing3", + "pivot": [-23, 16, 1.5], + "cubes": [ + {"origin": [-37, 16, -4], "size": [14, 0, 11], "uv": [89, 51]} + ] + }, + { + "name": "left_wing3", + "parent": "torso", + "pivot": [9, 16, 1.5], + "cubes": [ + {"origin": [9, 16, -4], "size": [14, 0, 11], "uv": [40, 105], "mirror": true} + ] + }, + { + "name": "left_wing4", + "parent": "left_wing3", + "pivot": [23, 16, 1.5], + "cubes": [ + {"origin": [23, 16, -4], "size": [14, 0, 11], "uv": [89, 51], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/easter_bunny.geo.json b/common/src/main/resources/assets/antarchy/geo/easter_bunny.geo.json new file mode 100644 index 00000000..f04a07ad --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/easter_bunny.geo.json @@ -0,0 +1,107 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "egg", + "pivot": [0, 4.5, -16], + "cubes": [ + {"origin": [-3, 0, -19], "size": [6, 9, 6], "uv": [35, 33]} + ] + }, + { + "name": "bunny", + "pivot": [0, 2.66667, 3.33333] + }, + { + "name": "torso", + "parent": "bunny", + "pivot": [0, 3, 3], + "cubes": [ + {"origin": [-3, 0, -4], "size": [6, 7, 8], "inflate": -0.01, "uv": [0, 0]}, + {"origin": [-3, 0, -4], "size": [6, 7, 8], "uv": [0, 46]}, + {"origin": [-2, 3, 3], "size": [4, 4, 3], "pivot": [0, 5, 4.5], "rotation": [20, 0, 0], "uv": [44, 1]} + ] + }, + { + "name": "left_paw", + "parent": "torso", + "pivot": [4, 0.75, -3.5], + "cubes": [ + {"origin": [3, 0, -8], "size": [2, 1, 5], "uv": [38, 20]} + ] + }, + { + "name": "right_paw", + "parent": "torso", + "pivot": [-4, 0.75, -3.5], + "cubes": [ + {"origin": [-5, 0, -8], "size": [2, 1, 5], "uv": [38, 26]} + ] + }, + { + "name": "head", + "parent": "torso", + "pivot": [0, 5, -4], + "cubes": [ + {"origin": [-0.5, 1, -11], "size": [1, 4, 0], "inflate": 0.01, "uv": [5, 26]}, + {"origin": [-2, 3, -11], "size": [4, 5, 7], "uv": [0, 23]}, + {"origin": [-1, 1, -11], "size": [2, 2, 0], "uv": [28, 9]} + ] + }, + { + "name": "hat", + "parent": "head", + "pivot": [0, 8.5, -6], + "cubes": [ + {"origin": [-4, 8.1, -10], "size": [8, 1, 8], "inflate": 0.01, "uv": [31, 54]}, + {"origin": [-2, 9.1, -8], "size": [4, 4, 4], "inflate": 0.01, "uv": [22, 23]} + ] + }, + { + "name": "right_ear", + "parent": "head", + "pivot": [-2, 7.5, -6], + "cubes": [ + {"origin": [-3, 1, -8], "size": [1, 7, 4], "uv": [32, 9]} + ] + }, + { + "name": "left_ear", + "parent": "head", + "pivot": [2, 7.5, -6], + "cubes": [ + {"origin": [2, 1, -8], "size": [1, 7, 4], "uv": [0, 35]} + ] + }, + { + "name": "right_leg", + "parent": "bunny", + "pivot": [-4.5, 2.5, 3.5], + "cubes": [ + {"origin": [-6, 0, 1], "size": [3, 5, 4], "uv": [28, 0]}, + {"origin": [-6, 0, -1], "size": [3, 1, 2], "uv": [32, 20]} + ] + }, + { + "name": "left_leg", + "parent": "bunny", + "pivot": [4.5, 2.5, 3.5], + "cubes": [ + {"origin": [3, 0, 1], "size": [3, 5, 4], "uv": [22, 31]}, + {"origin": [3, 0, -1], "size": [3, 1, 2], "uv": [10, 35]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/emperor_scorpion.geo.json b/common/src/main/resources/assets/antarchy/geo/emperor_scorpion.geo.json new file mode 100644 index 00000000..ae4455fb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/emperor_scorpion.geo.json @@ -0,0 +1,170 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 12, + "visible_bounds_height": 4.5, + "visible_bounds_offset": [0, 1.75, 0] + }, + "bones": [ + { + "name": "scorpion_emperor", + "pivot": [0, 6.85714, 5.25] + }, + { + "name": "l_leg3", + "parent": "scorpion_emperor", + "pivot": [10, 6.5, 14.5], + "rotation": [0, 0, 15], + "cubes": [ + {"origin": [9.5, 5, 12], "size": [21, 3, 5], "uv": [0, 113], "mirror": true} + ] + }, + { + "name": "r_leg3", + "parent": "scorpion_emperor", + "pivot": [-10, 6.5, 14.5], + "rotation": [0, 0, -15], + "cubes": [ + {"origin": [-30.5, 5, 12], "size": [21, 3, 5], "uv": [0, 113]} + ] + }, + { + "name": "l_leg2", + "parent": "scorpion_emperor", + "pivot": [10, 6.5, 4.5], + "rotation": [0, 0, 15], + "cubes": [ + {"origin": [9.5, 5, 2], "size": [21, 3, 5], "uv": [0, 113], "mirror": true} + ] + }, + { + "name": "r_leg2", + "parent": "scorpion_emperor", + "pivot": [-10, 6.5, 4.5], + "rotation": [0, 0, -15], + "cubes": [ + {"origin": [-30.5, 5, 2], "size": [21, 3, 5], "uv": [0, 113]} + ] + }, + { + "name": "l_leg", + "parent": "scorpion_emperor", + "pivot": [10, 6.5, -4.5], + "rotation": [0, 0, 15], + "cubes": [ + {"origin": [9.5, 5, -7], "size": [21, 3, 5], "uv": [0, 113], "mirror": true} + ] + }, + { + "name": "r_leg", + "parent": "scorpion_emperor", + "pivot": [-10, 6.5, -4.5], + "rotation": [0, 0, -15], + "cubes": [ + {"origin": [-30.5, 5, -7], "size": [21, 3, 5], "uv": [0, 113]} + ] + }, + { + "name": "torso", + "parent": "scorpion_emperor", + "pivot": [0, 9, 7.75], + "cubes": [ + {"origin": [-10.5, 5, -10], "size": [21, 8, 27], "uv": [0, 0]}, + {"origin": [-8, 5, 17], "size": [16, 8, 11], "uv": [73, 109]}, + {"origin": [-9.5, 12.5, 13], "size": [4, 5, 0], "uv": [0, 21]}, + {"origin": [-4.5, 12.5, 13], "size": [4, 5, 0], "uv": [0, 21]}, + {"origin": [0.5, 12.5, 13], "size": [4, 5, 0], "uv": [0, 21], "mirror": true}, + {"origin": [5.5, 12.5, 13], "size": [4, 5, 0], "uv": [0, 21], "mirror": true}, + {"origin": [5.5, 12.5, 3], "size": [4, 5, 0], "uv": [0, 21], "mirror": true}, + {"origin": [0.5, 12.5, 3], "size": [4, 5, 0], "uv": [0, 21], "mirror": true}, + {"origin": [-4.5, 12.5, 3], "size": [4, 5, 0], "uv": [0, 21]}, + {"origin": [-9.5, 12.5, 3], "size": [4, 5, 0], "uv": [0, 21]}, + {"origin": [-9.5, 12.5, -4], "size": [4, 5, 0], "uv": [0, 21]}, + {"origin": [5.5, 12.5, -4], "size": [4, 5, 0], "uv": [0, 21], "mirror": true}, + {"origin": [6.5, 12.5, 8], "size": [4, 5, 0], "uv": [0, 21], "mirror": true}, + {"origin": [1.5, 12.5, 8], "size": [4, 5, 0], "uv": [0, 21], "mirror": true}, + {"origin": [-4.5, 12.5, 8], "size": [4, 5, 0], "uv": [0, 21]}, + {"origin": [-10.5, 12.5, 8], "size": [4, 5, 0], "uv": [0, 21]} + ] + }, + { + "name": "tail", + "parent": "torso", + "pivot": [0, 7.00833, 27.99167], + "cubes": [ + {"origin": [-4, 7, 28], "size": [8, 6, 13], "inflate": 0.1, "uv": [0, 92]} + ] + }, + { + "name": "tail2", + "parent": "tail", + "pivot": [0, 7, 41], + "cubes": [ + {"origin": [-4, 7, 41], "size": [8, 6, 13], "uv": [42, 92]} + ] + }, + { + "name": "tail3", + "parent": "tail2", + "pivot": [0, 7, 54], + "cubes": [ + {"origin": [-6.5, 7, 54], "size": [13, 11, 11], "uv": [62, 62]}, + {"origin": [-2.5, 18, 56], "size": [5, 17, 7], "uv": [84, 84]}, + {"origin": [0, 35, 56], "size": [0, 17, 7], "uv": [52, 104]}, + {"origin": [0, 4, 70], "size": [0, 17, 7], "pivot": [0, 12.5, 73.5], "rotation": [-90, 0, 0], "uv": [52, 104]}, + {"origin": [0, 24, 49], "size": [0, 17, 7], "pivot": [0, 32.5, 52.5], "rotation": [45, 0, 0], "uv": [52, 104]} + ] + }, + { + "name": "head", + "parent": "torso", + "pivot": [0, 9, -8], + "cubes": [ + {"origin": [-13.5, 4, -25], "size": [27, 10, 17], "uv": [0, 35]}, + {"origin": [-5, 1, -27], "size": [2, 8, 3], "uv": [0, 62]}, + {"origin": [3, 1, -27], "size": [2, 8, 3], "uv": [0, 62], "mirror": true} + ] + }, + { + "name": "r_claw", + "parent": "head", + "pivot": [-12.5, 8, -16], + "cubes": [ + {"origin": [-18.5, 3, -28], "size": [6, 10, 17], "uv": [69, 0]} + ] + }, + { + "name": "r_claw2", + "parent": "r_claw", + "pivot": [-15.25, 8, -11], + "cubes": [ + {"origin": [-26.5, 3, -31], "size": [11, 10, 20], "inflate": 0.1, "uv": [0, 62]}, + {"origin": [-35.5, 8, -31], "size": [9, 0, 19], "uv": [25, 63]} + ] + }, + { + "name": "l_claw", + "parent": "head", + "pivot": [12.5, 8, -16], + "cubes": [ + {"origin": [12.5, 3, -28], "size": [6, 10, 17], "uv": [69, 0], "mirror": true} + ] + }, + { + "name": "l_claw2", + "parent": "l_claw", + "pivot": [15.25, 8, -11], + "cubes": [ + {"origin": [26.5, 8, -31], "size": [9, 0, 19], "uv": [25, 63], "mirror": true}, + {"origin": [15.5, 3, -31], "size": [11, 10, 20], "inflate": 0.1, "uv": [0, 62], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/fallen_king_crown.geo.json b/common/src/main/resources/assets/antarchy/geo/fallen_king_crown.geo.json new file mode 100644 index 00000000..c8f22646 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/fallen_king_crown.geo.json @@ -0,0 +1,83 @@ +{ + "format_version": "1.21.110", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.fallen_king_crown - Converted", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [8, 0, -8], + "cubes": [ + { + "origin": [-4.5, 0, 4.5], + "size": [9, 9, 0], + "uv": { + "north": {"uv": [18, 0], "uv_size": [-9, 9]}, + "east": {"uv": [9, 0], "uv_size": [9, 9]}, + "south": {"uv": [9, 0], "uv_size": [9, 9]}, + "west": {"uv": [9, 0], "uv_size": [9, 9]}, + "up": {"uv": [18, 9], "uv_size": [-9, -9]}, + "down": {"uv": [18, 9], "uv_size": [-9, -9]} + } + }, + { + "origin": [4.5, 0, -4.5], + "size": [0, 9, 9], + "uv": { + "north": {"uv": [9, 9], "uv_size": [9, 9]}, + "east": {"uv": [18, 9], "uv_size": [-9, 9]}, + "south": {"uv": [9, 9], "uv_size": [9, 9]}, + "west": {"uv": [9, 9], "uv_size": [9, 9]}, + "up": {"uv": [18, 18], "uv_size": [-9, -9]}, + "down": {"uv": [18, 18], "uv_size": [-9, -9]} + } + }, + { + "origin": [-4.5, 0, -4.5], + "size": [0, 9, 9], + "uv": { + "north": {"uv": [0, 9], "uv_size": [9, 9]}, + "east": {"uv": [0, 9], "uv_size": [9, 9]}, + "south": {"uv": [0, 9], "uv_size": [9, 9]}, + "west": {"uv": [9, 9], "uv_size": [-9, 9]}, + "up": {"uv": [9, 18], "uv_size": [-9, -9]}, + "down": {"uv": [9, 18], "uv_size": [-9, -9]} + } + }, + { + "origin": [-4.5, 0, -4.5], + "size": [9, 9, 0], + "uv": { + "north": {"uv": [0, 0], "uv_size": [9, 9]}, + "east": {"uv": [0, 0], "uv_size": [9, 9]}, + "south": {"uv": [9, 0], "uv_size": [-9, 9]}, + "west": {"uv": [0, 0], "uv_size": [9, 9]}, + "up": {"uv": [9, 9], "uv_size": [-9, -9]}, + "down": {"uv": [9, 9], "uv_size": [-9, -9]} + } + }, + { + "origin": [-1, 5.5, -4.6], + "size": [2, 3, 0], + "uv": { + "north": {"uv": [30, 29], "uv_size": [2, 3]}, + "east": {"uv": [0, 14], "uv_size": [2, 3]}, + "south": {"uv": [2, 14], "uv_size": [-2, 3]}, + "west": {"uv": [0, 14], "uv_size": [2, 3]}, + "up": {"uv": [2, 17], "uv_size": [-2, -3]}, + "down": {"uv": [2, 17], "uv_size": [-2, -3]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/flying_squirrel.geo.json b/common/src/main/resources/assets/antarchy/geo/flying_squirrel.geo.json new file mode 100644 index 00000000..eb31a76b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/flying_squirrel.geo.json @@ -0,0 +1,137 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 3, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "squirrel", + "pivot": [0, 1, 0] + }, + { + "name": "left_leg", + "parent": "squirrel", + "pivot": [3, 5, 3.25], + "cubes": [ + {"origin": [2, 0, 1.25], "size": [2, 5, 4], "uv": [0, 30]}, + {"origin": [2, 0, -0.75], "size": [2, 1, 2], "uv": [35, 8]} + ] + }, + { + "name": "right_leg", + "parent": "squirrel", + "pivot": [-3, 5, 3.25], + "cubes": [ + {"origin": [-4, 0, 1.25], "size": [2, 5, 4], "uv": [0, 30], "mirror": true}, + {"origin": [-4, 0, -0.75], "size": [2, 1, 2], "uv": [35, 8], "mirror": true} + ] + }, + { + "name": "body", + "parent": "squirrel", + "pivot": [0, 4, 2], + "cubes": [ + {"origin": [0, 8.5, -6], "size": [0, 3, 11], "uv": [42, 50]} + ] + }, + { + "name": "body_2", + "parent": "body", + "pivot": [0, 6, -0.5], + "cubes": [ + {"origin": [-3, 3.5, -6], "size": [6, 5, 11], "uv": [0, 0]} + ] + }, + { + "name": "head", + "parent": "body", + "pivot": [0, 7.33333, -5.91667], + "cubes": [ + {"origin": [-2, 5.5, -11], "size": [4, 4, 5], "uv": [17, 17]} + ] + }, + { + "name": "left_cheeks", + "parent": "head", + "pivot": [2.5, 6, -8.5], + "cubes": [ + {"origin": [2, 5.5, -10], "size": [1, 1, 3], "uv": [19, 19], "mirror": true} + ] + }, + { + "name": "right_cheeks", + "parent": "head", + "pivot": [-2.5, 6, -8.5], + "cubes": [ + {"origin": [-3, 5.5, -10], "size": [1, 1, 3], "uv": [19, 19]} + ] + }, + { + "name": "left_ear", + "parent": "head", + "pivot": [1, 9.5, -6.5], + "cubes": [ + {"origin": [1, 9.5, -7], "size": [2, 2, 1], "uv": [35, 12]} + ] + }, + { + "name": "right_ear", + "parent": "head", + "pivot": [-1, 9.5, -6.5], + "cubes": [ + {"origin": [-3, 9.5, -7], "size": [2, 2, 1], "uv": [35, 12], "mirror": true} + ] + }, + { + "name": "tail", + "parent": "body", + "pivot": [0, 6, 5], + "cubes": [ + {"origin": [-1.5, 5, 5], "size": [3, 11, 3], "uv": [17, 27]}, + {"origin": [-1.5, 9, 8], "size": [3, 7, 5], "uv": [0, 17]}, + {"origin": [0, 9, 13], "size": [0, 7, 2], "uv": [60, 18]} + ] + }, + { + "name": "left_arm", + "parent": "body", + "pivot": [3, 5, -4.5], + "cubes": [ + {"origin": [2, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0]} + ] + }, + { + "name": "left_flying_part", + "parent": "left_arm", + "pivot": [3, 5, -1], + "cubes": [ + {"origin": [3, 0, -3.5], "size": [0, 5, 5], "uv": [30, 27]} + ] + }, + { + "name": "right_arm", + "parent": "body", + "pivot": [-3, 5, -4.5], + "cubes": [ + {"origin": [-4, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0], "mirror": true} + ] + }, + { + "name": "right_flying_part", + "parent": "right_arm", + "pivot": [-3, 5, -1], + "cubes": [ + {"origin": [-3, 0, -3.5], "size": [0, 5, 5], "uv": [30, 27], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/gravity_gun.geo.json b/common/src/main/resources/assets/antarchy/geo/gravity_gun.geo.json new file mode 100644 index 00000000..c1aee484 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/gravity_gun.geo.json @@ -0,0 +1,66 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 3, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "gravity_gun", + "pivot": [0, 6.65493, 7.77323], + "rotation": [1, 0, 0], + "cubes": [ + {"origin": [-2.5, 3.7, 0.05], "size": [5, 5, 5], "uv": [0, 22]} + ] + }, + { + "name": "handle_all", + "parent": "gravity_gun", + "pivot": [0, 4.56478, 4.56136], + "cubes": [ + {"origin": [-2, 3.65, 6], "size": [4, 4, 4], "pivot": [0, -0.35, 8], "rotation": [35, 0, 0], "uv": [22, 0]} + ] + }, + { + "name": "handle", + "parent": "handle_all", + "pivot": [0, 4.56464, 4.56418], + "rotation": [90, 0, 0], + "cubes": [ + {"origin": [-4, 4.65, 7], "size": [8, 2, 2], "pivot": [0, -0.35, 8], "rotation": [35, 0, 0], "uv": [22, 8]}, + {"origin": [3, 0.65, 7], "size": [1, 4, 2], "pivot": [-0.5, -0.35, 8], "rotation": [35, 0, 0], "uv": [30, 21]}, + {"origin": [-3, 0.65, 7], "size": [6, 1, 2], "pivot": [-7, -0.35, 8], "rotation": [35, 0, 0], "uv": [22, 18]}, + {"origin": [-4, 0.65, 7], "size": [1, 4, 2], "pivot": [-7.5, -0.35, 8], "rotation": [35, 0, 0], "uv": [0, 32]} + ] + }, + { + "name": "barrel", + "parent": "gravity_gun", + "pivot": [0, 6.2, 0], + "cubes": [ + {"origin": [-2, 4.2, -6.45], "size": [4, 4, 7], "inflate": -0.2, "uv": [0, 11]}, + {"origin": [-2, 4.2, -6.45], "size": [4, 4, 7], "uv": [0, 0]} + ] + }, + { + "name": "tip", + "parent": "barrel", + "pivot": [0, 6.2, -6.475], + "cubes": [ + {"origin": [-2.5, 8.7, -9.47], "size": [5, 0, 3], "uv": [27, 12]}, + {"origin": [2.5, 3.7, -9.47], "size": [0, 5, 3], "uv": [26, 27]}, + {"origin": [-2.5, 3.7, -9.47], "size": [5, 0, 3], "uv": [22, 15]}, + {"origin": [-2.5, 3.7, -9.47], "size": [0, 5, 3], "uv": [20, 27]}, + {"origin": [-2.5, 3.7, -6.47], "size": [5, 5, 0], "uv": [20, 22]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/growth_ray.geo.json b/common/src/main/resources/assets/antarchy/geo/growth_ray.geo.json new file mode 100644 index 00000000..46056769 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/growth_ray.geo.json @@ -0,0 +1,65 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 3, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "growth_ray", + "pivot": [0, 6, 7] + }, + { + "name": "handle", + "parent": "growth_ray", + "pivot": [0, 6, 7], + "cubes": [ + {"origin": [-1, 0, 6], "size": [2, 6, 2], "pivot": [0, 6, 7], "rotation": [10, 0, 0], "uv": [0, 23]}, + {"origin": [-1, 2.48798, 2.98412], "size": [2, 1, 4], "inflate": -0.005, "pivot": [0, 2.98798, 5.98412], "rotation": [-21, 0, 0], "uv": [22, 6]}, + {"origin": [-1, 3.61298, 3.00912], "size": [2, 1.5, 1], "uv": [12, 23]} + ] + }, + { + "name": "ray_body", + "parent": "growth_ray", + "pivot": [0, 11, 1], + "cubes": [ + {"origin": [-2, 5, 3], "size": [4, 4, 6], "uv": [20, 11]}, + {"origin": [0, 5, 9], "size": [0, 2, 2], "uv": [8, 23]} + ] + }, + { + "name": "blaster", + "parent": "ray_body", + "pivot": [0, 7, 0], + "cubes": [ + {"origin": [-1.5, 5.5, 0], "size": [3, 3, 3], "uv": [22, 0]}, + {"origin": [0, 8, 2], "size": [0, 2, 10], "uv": [0, 11]} + ] + }, + { + "name": "blaster_end", + "parent": "blaster", + "pivot": [0, 7, 1.5], + "cubes": [ + {"origin": [-3, 4, -9], "size": [6, 6, 5], "uv": [0, 0]} + ] + }, + { + "name": "blaster_rotating", + "parent": "blaster", + "pivot": [0, 7, -2], + "cubes": [ + {"origin": [-1, 6, -4], "size": [2, 2, 4], "uv": [20, 21]} + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/geo/kraken.geo.json b/common/src/main/resources/assets/antarchy/geo/kraken.geo.json new file mode 100644 index 00000000..5d60c348 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/kraken.geo.json @@ -0,0 +1,318 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 256, + "texture_height": 256, + "visible_bounds_width": 8, + "visible_bounds_height": 7, + "visible_bounds_offset": [0, 1.5, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [0, 46.50635, 20.87778] + }, + { + "name": "head", + "parent": "bone", + "pivot": [0, 48.23333, 11.63333], + "cubes": [ + {"origin": [-9, 48, -3], "size": [5, 5, 6], "uv": [20, 103]}, + {"origin": [-7, 39, -5], "size": [14, 8, 17], "uv": [54, 49]}, + {"origin": [-8, 47, -2], "size": [16, 8, 14], "uv": [96, 0]}, + {"origin": [-7, 55, -1], "size": [14, 2, 11], "uv": [0, 90]}, + {"origin": [-9, 47, -3], "size": [5, 2, 6], "inflate": 0.1, "uv": [112, 93]}, + {"origin": [-9, 52, -3], "size": [5, 2, 6], "inflate": 0.1, "uv": [116, 49]}, + {"origin": [4, 47, -3], "size": [5, 2, 6], "inflate": 0.1, "uv": [112, 93], "mirror": true}, + {"origin": [4, 48, -3], "size": [5, 5, 6], "uv": [20, 103], "mirror": true}, + {"origin": [4, 52, -3], "size": [5, 2, 6], "inflate": 0.1, "uv": [116, 49], "mirror": true}, + {"origin": [-5.5, 35, -8], "size": [11, 5, 6], "uv": [96, 38]}, + {"origin": [-4.5, 40, -7], "size": [9, 9, 2], "uv": [112, 74]}, + {"origin": [-4.5, 47, -5], "size": [9, 5, 3], "uv": [112, 85]} + ] + }, + { + "name": "mouth", + "parent": "head", + "pivot": [0, 35.1, -6], + "cubes": [ + {"origin": [-5, 30, -8], "size": [0, 5, 4], "uv": [42, 103]}, + {"origin": [-3, 30, -8], "size": [0, 5, 4], "uv": [42, 103]}, + {"origin": [3, 30, -8], "size": [0, 5, 4], "uv": [42, 103]}, + {"origin": [-1, 30, -8], "size": [0, 5, 4], "uv": [42, 103]}, + {"origin": [1, 30, -8], "size": [0, 5, 4], "uv": [42, 103]}, + {"origin": [5, 30, -8], "size": [0, 5, 4], "uv": [42, 103]} + ] + }, + { + "name": "cranium", + "parent": "head", + "pivot": [0, 47.5, 12], + "cubes": [ + {"origin": [-10, 38, 8], "size": [20, 21, 28], "pivot": [0, 47.5, 12], "rotation": [15, 0, 0], "uv": [0, 0]}, + {"origin": [-12, 40, 10], "size": [2, 16, 25], "pivot": [-2, 47.5, 12], "rotation": [15, 0, 0], "uv": [0, 49]}, + {"origin": [10, 40, 10], "size": [2, 16, 25], "pivot": [2, 47.5, 12], "rotation": [15, 0, 0], "uv": [0, 49], "mirror": true} + ] + }, + { + "name": "cranium_2", + "parent": "cranium", + "pivot": [0, 53.55, 32.5], + "cubes": [ + {"origin": [-9, 46, 32], "size": [18, 16, 11], "uv": [54, 74]} + ] + }, + { + "name": "cranium_3", + "parent": "cranium_2", + "pivot": [0, 49.1, 41.5], + "cubes": [ + {"origin": [-5, 44.6, 40], "size": [10, 9, 7], "pivot": [0, 49.1, 43.5], "rotation": [-22.5, 0, 0], "uv": [96, 22]} + ] + }, + { + "name": "Tentacles", + "parent": "bone", + "pivot": [0, 45.64286, 8.5] + }, + { + "name": "Tentacles_Left", + "parent": "Tentacles", + "pivot": [6.78571, 45.64286, 25.5] + }, + { + "name": "Tentacle_1_Left", + "parent": "Tentacles_Left", + "pivot": [6.78571, 38.64286, 1.5], + "cubes": [ + {"origin": [4, 16, -2], "size": [5, 23, 7], "uv": [74, 101]}, + {"origin": [4.5, 11, -1.5], "size": [4, 5, 6], "uv": [98, 114]} + ] + }, + { + "name": "Tentacle_part_1_left", + "parent": "Tentacle_1_Left", + "pivot": [6.9, 11, 1.5], + "cubes": [ + {"origin": [4, -14, -2], "size": [5, 25, 7], "uv": [50, 101]}, + {"origin": [4.5, -19, -1.5], "size": [4, 5, 6], "uv": [20, 114]} + ] + }, + { + "name": "Tentacle_hand_1_left", + "parent": "Tentacle_part_1_left", + "pivot": [5, -21, -1], + "cubes": [ + {"origin": [4, -25, -2], "size": [5, 6, 7], "uv": [98, 101]}, + {"origin": [6, -33, -2], "size": [3, 8, 7], "uv": [0, 103]}, + {"origin": [6, -34, -1], "size": [3, 1, 5], "uv": [116, 57]} + ] + }, + { + "name": "Tentacle_1_Left2", + "parent": "Tentacles_Left", + "pivot": [6.78571, 39.64286, 9.5], + "cubes": [ + {"origin": [4, 17, 6], "size": [5, 23, 7], "uv": [74, 101]}, + {"origin": [4.5, 12, 6.5], "size": [4, 5, 6], "uv": [98, 114]} + ] + }, + { + "name": "Tentacle_part_1_left2", + "parent": "Tentacle_1_Left2", + "pivot": [6.9, 12, 9.5], + "cubes": [ + {"origin": [4, -13, 6], "size": [5, 25, 7], "uv": [50, 101]}, + {"origin": [4.5, -18, 6.5], "size": [4, 5, 6], "uv": [20, 114]} + ] + }, + { + "name": "Tentacle_hand_1_left2", + "parent": "Tentacle_part_1_left2", + "pivot": [5, -20, 7], + "cubes": [ + {"origin": [4, -24, 6], "size": [5, 6, 7], "uv": [98, 101]}, + {"origin": [6, -32, 6], "size": [3, 8, 7], "uv": [0, 103]}, + {"origin": [6, -33, 7], "size": [3, 1, 5], "uv": [116, 57]} + ] + }, + { + "name": "Tentacle_1_Left3", + "parent": "Tentacles_Left", + "pivot": [6.78571, 41.64286, 17.5], + "cubes": [ + {"origin": [4, 19, 14], "size": [5, 23, 7], "uv": [74, 101]}, + {"origin": [4.5, 14, 14.5], "size": [4, 5, 6], "uv": [98, 114]} + ] + }, + { + "name": "Tentacle_part_1_left3", + "parent": "Tentacle_1_Left3", + "pivot": [6.9, 14, 17.5], + "cubes": [ + {"origin": [4, -11, 14], "size": [5, 25, 7], "uv": [50, 101]}, + {"origin": [4.5, -16, 14.5], "size": [4, 5, 6], "uv": [20, 114]} + ] + }, + { + "name": "Tentacle_hand_1_left3", + "parent": "Tentacle_part_1_left3", + "pivot": [5, -18, 15], + "cubes": [ + {"origin": [4, -22, 14], "size": [5, 6, 7], "uv": [98, 101]}, + {"origin": [6, -30, 14], "size": [3, 8, 7], "uv": [0, 103]}, + {"origin": [6, -31, 15], "size": [3, 1, 5], "uv": [116, 57]} + ] + }, + { + "name": "Tentacle_1_Left4", + "parent": "Tentacles_Left", + "pivot": [6.78571, 43.64286, 25.5], + "cubes": [ + {"origin": [4, 21, 22], "size": [5, 23, 7], "uv": [74, 101]}, + {"origin": [4.5, 16, 22.5], "size": [4, 5, 6], "uv": [98, 114]} + ] + }, + { + "name": "Tentacle_part_1_left4", + "parent": "Tentacle_1_Left4", + "pivot": [6.9, 16, 25.5], + "cubes": [ + {"origin": [4, -9, 22], "size": [5, 25, 7], "uv": [50, 101]}, + {"origin": [4.5, -14, 22.5], "size": [4, 5, 6], "uv": [20, 114]} + ] + }, + { + "name": "Tentacle_hand_1_left4", + "parent": "Tentacle_part_1_left4", + "pivot": [5, -16, 23], + "cubes": [ + {"origin": [4, -20, 22], "size": [5, 6, 7], "uv": [98, 101]}, + {"origin": [6, -28, 22], "size": [3, 8, 7], "uv": [0, 103]}, + {"origin": [6, -29, 23], "size": [3, 1, 5], "uv": [116, 57]} + ] + }, + { + "name": "Tentacles_Right", + "parent": "Tentacles", + "pivot": [-6.78571, 45.64286, 25.5] + }, + { + "name": "Tentacle_1_Right", + "parent": "Tentacles_Right", + "pivot": [-6.78571, 38.64286, 1.5], + "cubes": [ + {"origin": [-9, 16, -2], "size": [5, 23, 7], "uv": [74, 101], "mirror": true}, + {"origin": [-8.5, 11, -1.5], "size": [4, 5, 6], "uv": [98, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_part_1_right", + "parent": "Tentacle_1_Right", + "pivot": [-6.9, 11, 1.5], + "cubes": [ + {"origin": [-9, -14, -2], "size": [5, 25, 7], "uv": [50, 101], "mirror": true}, + {"origin": [-8.5, -19, -1.5], "size": [4, 5, 6], "uv": [20, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_hand_1_right", + "parent": "Tentacle_part_1_right", + "pivot": [-5, -21, -1], + "cubes": [ + {"origin": [-9, -25, -2], "size": [5, 6, 7], "uv": [98, 101], "mirror": true}, + {"origin": [-9, -33, -2], "size": [3, 8, 7], "uv": [0, 103], "mirror": true}, + {"origin": [-9, -34, -1], "size": [3, 1, 5], "uv": [116, 57], "mirror": true} + ] + }, + { + "name": "Tentacle_1_Right2", + "parent": "Tentacles_Right", + "pivot": [-6.78571, 39.64286, 9.5], + "cubes": [ + {"origin": [-9, 17, 6], "size": [5, 23, 7], "uv": [74, 101], "mirror": true}, + {"origin": [-8.5, 12, 6.5], "size": [4, 5, 6], "uv": [98, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_part_1_right2", + "parent": "Tentacle_1_Right2", + "pivot": [-6.9, 12, 9.5], + "cubes": [ + {"origin": [-9, -13, 6], "size": [5, 25, 7], "uv": [50, 101], "mirror": true}, + {"origin": [-8.5, -18, 6.5], "size": [4, 5, 6], "uv": [20, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_hand_1_right2", + "parent": "Tentacle_part_1_right2", + "pivot": [-5, -20, 7], + "cubes": [ + {"origin": [-9, -24, 6], "size": [5, 6, 7], "uv": [98, 101], "mirror": true}, + {"origin": [-9, -32, 6], "size": [3, 8, 7], "uv": [0, 103], "mirror": true}, + {"origin": [-9, -33, 7], "size": [3, 1, 5], "uv": [116, 57], "mirror": true} + ] + }, + { + "name": "Tentacle_1_Right3", + "parent": "Tentacles_Right", + "pivot": [-6.78571, 41.64286, 17.5], + "cubes": [ + {"origin": [-9, 19, 14], "size": [5, 23, 7], "uv": [74, 101], "mirror": true}, + {"origin": [-8.5, 14, 14.5], "size": [4, 5, 6], "uv": [98, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_part_1_right3", + "parent": "Tentacle_1_Right3", + "pivot": [-6.9, 14, 17.5], + "cubes": [ + {"origin": [-9, -11, 14], "size": [5, 25, 7], "uv": [50, 101], "mirror": true}, + {"origin": [-8.5, -16, 14.5], "size": [4, 5, 6], "uv": [20, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_hand_1_right3", + "parent": "Tentacle_part_1_right3", + "pivot": [-5, -18, 15], + "cubes": [ + {"origin": [-9, -22, 14], "size": [5, 6, 7], "uv": [98, 101], "mirror": true}, + {"origin": [-9, -30, 14], "size": [3, 8, 7], "uv": [0, 103], "mirror": true}, + {"origin": [-9, -31, 15], "size": [3, 1, 5], "uv": [116, 57], "mirror": true} + ] + }, + { + "name": "Tentacle_1_Right4", + "parent": "Tentacles_Right", + "pivot": [-6.78571, 43.64286, 25.5], + "cubes": [ + {"origin": [-9, 21, 22], "size": [5, 23, 7], "uv": [74, 101], "mirror": true}, + {"origin": [-8.5, 16, 22.5], "size": [4, 5, 6], "uv": [98, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_part_1_right4", + "parent": "Tentacle_1_Right4", + "pivot": [-6.9, 16, 25.5], + "cubes": [ + {"origin": [-9, -9, 22], "size": [5, 25, 7], "uv": [50, 101], "mirror": true}, + {"origin": [-8.5, -14, 22.5], "size": [4, 5, 6], "uv": [20, 114], "mirror": true} + ] + }, + { + "name": "Tentacle_hand_1_right4", + "parent": "Tentacle_part_1_right4", + "pivot": [-5, -16, 23], + "cubes": [ + {"origin": [-9, -20, 22], "size": [5, 6, 7], "uv": [98, 101], "mirror": true}, + {"origin": [-9, -28, 22], "size": [3, 8, 7], "uv": [0, 103], "mirror": true}, + {"origin": [-9, -29, 23], "size": [3, 1, 5], "uv": [116, 57], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/lucid.geo.json b/common/src/main/resources/assets/antarchy/geo/lucid.geo.json new file mode 100644 index 00000000..49fddd4b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/lucid.geo.json @@ -0,0 +1,78 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 5, + "visible_bounds_height": 5.5, + "visible_bounds_offset": [0, 2.25, 0] + }, + "bones": [ + { + "name": "Lucid", + "pivot": [0, 30.57828, -1.48989] + }, + { + "name": "eye", + "parent": "Lucid", + "pivot": [0, 29.66667, -0.66667], + "cubes": [ + {"origin": [-6, 25, -2], "size": [12, 8, 4], "uv": [64, 40]} + ] + }, + { + "name": "Iris", + "parent": "eye", + "pivot": [0, 28.5, -2], + "cubes": [ + {"origin": [-2, 26.5, -2], "size": [4, 4, 0], "inflate": 0.01, "uv": [78, 16]} + ] + }, + { + "name": "eyelid", + "parent": "eye", + "pivot": [0, 31.5, 0], + "cubes": [ + {"origin": [-6, 30, -2], "size": [12, 3, 4], "inflate": 0.1, "uv": [56, 24]} + ] + }, + { + "name": "ring3", + "parent": "Lucid", + "pivot": [0, 30.64645, -1.64645], + "cubes": [ + {"origin": [-10.35355, 20, -4.64645], "size": [21, 2, 6], "inflate": 0.01, "pivot": [-0.35355, 31, 0.35355], "rotation": [0, 0, 45], "uv": [32, 32]}, + {"origin": [-11.35355, 20, -4.64645], "size": [22, 2, 6], "pivot": [-0.35355, 31, 0.35355], "rotation": [0, 0, -45], "uv": [0, 24]}, + {"origin": [-9.64645, 19.70711, -4.64645], "size": [2, 22, 6], "pivot": [0.35355, 31.70711, 0.35355], "rotation": [0, 0, 45], "uv": [64, 52]}, + {"origin": [7.93934, 19.70711, -4.64645], "size": [2, 21, 6], "inflate": 0.01, "pivot": [-1.06066, 31.70711, 0.35355], "rotation": [0, 0, -45], "uv": [80, 52]} + ] + }, + { + "name": "ring2", + "parent": "Lucid", + "pivot": [0, 30.64645, -1.64645], + "cubes": [ + {"origin": [-18, 14, -7], "size": [33, 2, 6], "inflate": 0.01, "pivot": [-2, 31, -2], "rotation": [-90, -45, 90], "uv": [0, 16]}, + {"origin": [-19, 14, -7], "size": [34, 2, 6], "pivot": [-2, 31, -2], "rotation": [90, -45, -90], "uv": [0, 8]}, + {"origin": [13, 13.70711, -7.70711], "size": [2, 33, 6], "inflate": 0.01, "pivot": [-2, 31.70711, -2.70711], "rotation": [90, -45, -90], "uv": [48, 40]}, + {"origin": [-18, 13.70711, -6.29289], "size": [2, 34, 6], "pivot": [-2, 31.70711, -1.29289], "rotation": [-90, -45, 90], "uv": [32, 40]} + ] + }, + { + "name": "ring", + "parent": "Lucid", + "pivot": [0, 31.35355, -2], + "cubes": [ + {"origin": [-21.29289, 10.70711, -5], "size": [2, 42, 6], "pivot": [0.70711, 31.70711, 0], "rotation": [0, 0, 45], "uv": [16, 32]}, + {"origin": [-22, 9, -5], "size": [44, 2, 6], "pivot": [0, 31, 0], "rotation": [0, 0, 45], "uv": [0, 0]}, + {"origin": [19.29289, 10.70711, -5], "size": [2, 42, 6], "inflate": 0.01, "pivot": [-0.70711, 31.70711, 0], "rotation": [0, 0, -45], "uv": [16, 32], "mirror": true}, + {"origin": [-22, 9, -5], "size": [44, 2, 6], "inflate": 0.02, "pivot": [0, 31, 0], "rotation": [0, 0, -45], "uv": [0, 0], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/mantis.geo.json b/common/src/main/resources/assets/antarchy/geo/mantis.geo.json new file mode 100644 index 00000000..11c36789 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/mantis.geo.json @@ -0,0 +1,285 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.mantis", + "texture_width": 256, + "texture_height": 256, + "visible_bounds_width": 7, + "visible_bounds_height": 5.5, + "visible_bounds_offset": [0, 2.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, + { + "name": "waist", + "parent": "root", + "pivot": [0, 28, 0], + "cubes": [ + {"origin": [-6, 24, -2], "size": [12, 8, 4], "uv": [80, 47]} + ] + }, + { + "name": "body", + "parent": "waist", + "pivot": [0, 32, 0], + "cubes": [ + {"origin": [-5, 32, -4], "size": [10, 16, 8], "uv": [80, 0]} + ] + }, + { + "name": "neck", + "parent": "body", + "pivot": [0, 48, 0], + "cubes": [ + {"origin": [-4, 48, -2], "size": [8, 8, 4], "uv": [26, 104]} + ] + }, + { + "name": "head", + "parent": "neck", + "pivot": [-2, 56, 0], + "cubes": [ + {"origin": [-4, 56, -5], "size": [8, 4, 8], "uv": [84, 92]} + ] + }, + { + "name": "rightJaw", + "parent": "head", + "pivot": [-0.025, 58, -5], + "cubes": [ + {"origin": [-4.025, 56, -9], "size": [4, 4, 4], "inflate": 0.025, "uv": [102, 104]} + ] + }, + { + "name": "leftJaw", + "parent": "head", + "pivot": [0.025, 58, -5], + "cubes": [ + {"origin": [0.025, 56, -9], "size": [4, 4, 4], "inflate": 0.025, "uv": [102, 104], "mirror": true} + ] + }, + { + "name": "rightAntenna", + "parent": "head", + "pivot": [-2.5, 58.25, 3], + "cubes": [ + {"origin": [-3, 58, 3], "size": [1, 1, 8], "uv": [84, 104]} + ] + }, + { + "name": "rightAntennaBend", + "parent": "rightAntenna", + "pivot": [-2, 58.5, 11], + "cubes": [ + {"origin": [-3, 58.5, 11], "size": [1, 0, 12], "uv": [0, 104]} + ] + }, + { + "name": "leftAntenna", + "parent": "head", + "pivot": [2.5, 58.25, 3], + "cubes": [ + {"origin": [2, 58, 3], "size": [1, 1, 8], "uv": [84, 104], "mirror": true} + ] + }, + { + "name": "leftAntennaBend", + "parent": "leftAntenna", + "pivot": [2, 58.5, 11], + "cubes": [ + {"origin": [2, 58.5, 11], "size": [1, 0, 12], "uv": [0, 104], "mirror": true} + ] + }, + { + "name": "rightUpperWing", + "parent": "body", + "pivot": [-3, 48, 4], + "cubes": [ + {"origin": [-3, 24, 4], "size": [0, 24, 40], "uv": [0, 0]} + ] + }, + { + "name": "leftUpperWing", + "parent": "body", + "pivot": [3, 48, 4], + "cubes": [ + {"origin": [3, 24, 4], "size": [0, 24, 40], "uv": [0, 0], "mirror": true} + ] + }, + { + "name": "rightLowerWing", + "parent": "body", + "pivot": [-4, 40, 4], + "cubes": [ + {"origin": [-4, 16, 4], "size": [0, 24, 40], "uv": [0, 0]} + ] + }, + { + "name": "leftLowerWing", + "parent": "body", + "pivot": [4, 40, 4], + "cubes": [ + {"origin": [4, 16, 4], "size": [0, 24, 40], "uv": [0, 0], "mirror": true} + ] + }, + { + "name": "rightArm", + "parent": "body", + "pivot": [-5, 46, 0], + "cubes": [ + {"origin": [-9, 44, -14], "size": [4, 4, 16], "uv": [80, 24]} + ] + }, + { + "name": "rightElbow", + "parent": "rightArm", + "pivot": [-7, 46, -14], + "cubes": [ + {"origin": [-8, 44, -38], "size": [2, 4, 24], "uv": [64, 64]} + ] + }, + { + "name": "rightClaw", + "parent": "rightElbow", + "pivot": [-7, 48, -38], + "cubes": [ + {"origin": [-7, 41, -70], "size": [0, 8, 32], "uv": [0, 64]} + ] + }, + { + "name": "leftArm", + "parent": "body", + "pivot": [5, 46, 0], + "cubes": [ + {"origin": [5, 44, -14], "size": [4, 4, 16], "uv": [80, 24], "mirror": true} + ] + }, + { + "name": "leftElbow", + "parent": "leftArm", + "pivot": [7, 46, -14], + "cubes": [ + {"origin": [6, 44, -38], "size": [2, 4, 24], "uv": [64, 64], "mirror": true} + ] + }, + { + "name": "leftClaw", + "parent": "leftElbow", + "pivot": [7, 48, -38], + "cubes": [ + {"origin": [7, 41, -70], "size": [0, 8, 32], "uv": [0, 64], "mirror": true} + ] + }, + { + "name": "abdomen", + "parent": "waist", + "pivot": [0, 24, 0], + "cubes": [ + {"origin": [-4, 0, -1], "size": [8, 24, 2], "uv": [64, 92]} + ] + }, + { + "name": "frontRightLeg", + "parent": "waist", + "pivot": [-6, 31, -1], + "cubes": [ + {"origin": [-22, 30, -1], "size": [16, 2, 2], "uv": [80, 59]} + ] + }, + { + "name": "frontRightKnee", + "parent": "frontRightLeg", + "pivot": [-22, 31, 1], + "cubes": [ + {"origin": [-46, 30.5, -1], "size": [24, 1, 2], "uv": [80, 44]} + ] + }, + { + "name": "frontRightFoot", + "parent": "frontRightKnee", + "pivot": [-46, 31, -1], + "cubes": [ + {"origin": [-54, 30.5, -1], "size": [8, 1, 0], "uv": [80, 63]} + ] + }, + { + "name": "frontLeftLeg", + "parent": "waist", + "pivot": [6, 31, -1], + "cubes": [ + {"origin": [6, 30, -1], "size": [16, 2, 2], "uv": [80, 59], "mirror": true} + ] + }, + { + "name": "frontLeftKnee", + "parent": "frontLeftLeg", + "pivot": [22, 31, 1], + "cubes": [ + {"origin": [22, 30.5, -1], "size": [24, 1, 2], "uv": [80, 44], "mirror": true} + ] + }, + { + "name": "frontLeftFoot", + "parent": "frontLeftKnee", + "pivot": [46, 31, -1], + "cubes": [ + {"origin": [46, 30.5, -1], "size": [8, 1, 0], "uv": [80, 63], "mirror": true} + ] + }, + { + "name": "backRightLeg", + "parent": "waist", + "pivot": [-6, 26, -1], + "cubes": [ + {"origin": [-22, 25, -1], "size": [16, 2, 2], "uv": [80, 59]} + ] + }, + { + "name": "backRightKnee", + "parent": "backRightLeg", + "pivot": [-22, 26, 1], + "cubes": [ + {"origin": [-46, 25.5, -1], "size": [24, 1, 2], "uv": [80, 44]} + ] + }, + { + "name": "backRightFoot", + "parent": "backRightKnee", + "pivot": [-46, 26, -1], + "cubes": [ + {"origin": [-54, 25.5, -1], "size": [8, 1, 0], "uv": [80, 63]} + ] + }, + { + "name": "backLeftLeg", + "parent": "waist", + "pivot": [6, 26, -1], + "cubes": [ + {"origin": [6, 25, -1], "size": [16, 2, 2], "uv": [80, 59], "mirror": true} + ] + }, + { + "name": "backLeftKnee", + "parent": "backLeftLeg", + "pivot": [22, 26, 1], + "cubes": [ + {"origin": [22, 25.5, -1], "size": [24, 1, 2], "uv": [80, 44], "mirror": true} + ] + }, + { + "name": "backLeftFoot", + "parent": "backLeftKnee", + "pivot": [46, 26, -1], + "cubes": [ + {"origin": [46, 25.5, -1], "size": [8, 1, 0], "uv": [80, 63], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/missile_squid.geo.json b/common/src/main/resources/assets/antarchy/geo/missile_squid.geo.json new file mode 100644 index 00000000..9c247ed6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/missile_squid.geo.json @@ -0,0 +1,289 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 3, + "visible_bounds_height": 7.5, + "visible_bounds_offset": [0, 3.25, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [0, 58.36, 0.224], + "cubes": [ + {"origin": [-6, 64, -6.5], "size": [12, 4, 12], "uv": [38, 64]}, + {"origin": [-5.5, 52, -6], "size": [11, 12, 11], "uv": [44, 0]}, + {"origin": [-7.5, 55, -4], "size": [2, 6, 7], "uv": [52, 80]}, + {"origin": [-7.5, 54, -4], "size": [2, 1, 7], "inflate": 0.1, "uv": [0, 81]}, + {"origin": [-7.5, 60, -4], "size": [2, 1, 7], "inflate": 0.1, "uv": [18, 81]}, + {"origin": [5.5, 60, -4], "size": [2, 1, 7], "inflate": 0.1, "uv": [18, 81], "mirror": true}, + {"origin": [5.5, 55, -4], "size": [2, 6, 7], "uv": [52, 80], "mirror": true}, + {"origin": [5.5, 54, -4], "size": [2, 1, 7], "inflate": 0.1, "uv": [0, 81], "mirror": true}, + {"origin": [-4.5, 51, -1], "size": [9, 1, 5], "uv": [44, 23]}, + {"origin": [-4.5, 50, -7], "size": [9, 10, 6], "uv": [76, 23]} + ] + }, + { + "name": "cranium", + "parent": "bone", + "pivot": [0, 66.625, -0.5], + "cubes": [ + {"origin": [-5.5, 68, -6], "size": [11, 21, 11], "uv": [0, 0]}, + {"origin": [0, 73, -10], "size": [0, 16, 19], "uv": [0, 32]} + ] + }, + { + "name": "cranium_2", + "parent": "cranium", + "pivot": [0, 87.5, -0.5], + "cubes": [ + {"origin": [0, 89, -10], "size": [0, 13, 19], "uv": [38, 32]}, + {"origin": [-4.5, 89, -5], "size": [9, 5, 9], "uv": [0, 67]} + ] + }, + { + "name": "mouth_left", + "parent": "bone", + "pivot": [1.75, 51.5, -1.5], + "cubes": [ + {"origin": [0, 47, -4], "size": [3, 4, 5], "uv": [82, 80]}, + {"origin": [0, 45, -3], "size": [2, 2, 3], "uv": [88, 17]} + ] + }, + { + "name": "mouth_right", + "parent": "bone", + "pivot": [-1.75, 51.5, -1.5], + "cubes": [ + {"origin": [-3, 47, -4], "size": [3, 4, 5], "uv": [82, 80], "mirror": true}, + {"origin": [-2, 45, -3], "size": [2, 2, 3], "uv": [88, 17], "mirror": true} + ] + }, + { + "name": "arm_left_1", + "parent": "bone", + "pivot": [5.5, 52, -3], + "cubes": [ + {"origin": [4.5, 42, -4], "size": [2, 7, 2], "uv": [88, 0]}, + {"origin": [4.5, 39.2, -4], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89]}, + {"origin": [4.5, 49, -4], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89]} + ] + }, + { + "name": "elbow_left_1", + "parent": "arm_left_1", + "pivot": [5.5, 39, -3], + "cubes": [ + {"origin": [4.5, 29, -4], "size": [2, 5, 2], "uv": [86, 73]}, + {"origin": [4.5, 34, -4], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89]}, + {"origin": [5.5, 20, -6], "size": [0, 9, 6], "uv": [70, 80]}, + {"origin": [4.5, 23, -4], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9]} + ] + }, + { + "name": "arm_right_1", + "parent": "bone", + "pivot": [-5.5, 52, -3], + "cubes": [ + {"origin": [-6.5, 42, -4], "size": [2, 7, 2], "uv": [88, 0], "mirror": true}, + {"origin": [-6.5, 39.2, -4], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89], "mirror": true}, + {"origin": [-6.5, 49, -4], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89], "mirror": true} + ] + }, + { + "name": "elbow_right_1", + "parent": "arm_right_1", + "pivot": [-5.5, 39, -3], + "cubes": [ + {"origin": [-6.5, 29, -4], "size": [2, 5, 2], "uv": [86, 73], "mirror": true}, + {"origin": [-6.5, 34, -4], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89], "mirror": true}, + {"origin": [-5.5, 20, -6], "size": [0, 9, 6], "uv": [70, 80], "mirror": true}, + {"origin": [-6.5, 23, -4], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9], "mirror": true} + ] + }, + { + "name": "arm_left_2", + "parent": "bone", + "pivot": [5.5, 52, 0.5], + "cubes": [ + {"origin": [4.5, 42, -0.5], "size": [2, 7, 2], "uv": [88, 0]}, + {"origin": [4.5, 39.2, -0.5], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89]}, + {"origin": [4.5, 49, -0.5], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89]} + ] + }, + { + "name": "elbow_left_2", + "parent": "arm_left_2", + "pivot": [5.5, 39, 0.5], + "cubes": [ + {"origin": [4.5, 29, -0.5], "size": [2, 5, 2], "uv": [86, 73]}, + {"origin": [4.5, 34, -0.5], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89]}, + {"origin": [5.5, 20, -2.5], "size": [0, 9, 6], "uv": [70, 80]}, + {"origin": [4.5, 23, -0.5], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9]} + ] + }, + { + "name": "arm_right_2", + "parent": "bone", + "pivot": [-5.5, 52, 0.5], + "cubes": [ + {"origin": [-6.5, 42, -0.5], "size": [2, 7, 2], "uv": [88, 0], "mirror": true}, + {"origin": [-6.5, 39.2, -0.5], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89], "mirror": true}, + {"origin": [-6.5, 49, -0.5], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89], "mirror": true} + ] + }, + { + "name": "elbow_right_2", + "parent": "arm_right_2", + "pivot": [-5.5, 39, 0.5], + "cubes": [ + {"origin": [-6.5, 29, -0.5], "size": [2, 5, 2], "uv": [86, 73], "mirror": true}, + {"origin": [-6.5, 34, -0.5], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89], "mirror": true}, + {"origin": [-5.5, 20, -2.5], "size": [0, 9, 6], "uv": [70, 80], "mirror": true}, + {"origin": [-6.5, 23, -0.5], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9], "mirror": true} + ] + }, + { + "name": "arm_left_3", + "parent": "bone", + "pivot": [5.5, 52, 3.4], + "cubes": [ + {"origin": [4.5, 42, 2.4], "size": [2, 7, 2], "uv": [88, 0]}, + {"origin": [4.5, 39.2, 2.4], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89]}, + {"origin": [4.5, 49, 2.4], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89]} + ] + }, + { + "name": "elbow_left_3", + "parent": "arm_left_3", + "pivot": [5.5, 39, 3.4], + "cubes": [ + {"origin": [4.5, 29, 2.4], "size": [2, 5, 2], "uv": [86, 73]}, + {"origin": [4.5, 34, 2.4], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89]}, + {"origin": [5.5, 20, 0.4], "size": [0, 9, 6], "uv": [70, 80]}, + {"origin": [4.5, 23, 2.4], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9]} + ] + }, + { + "name": "arm_right_3", + "parent": "bone", + "pivot": [-5.5, 52, 3.4], + "cubes": [ + {"origin": [-6.5, 42, 2.4], "size": [2, 7, 2], "uv": [88, 0], "mirror": true}, + {"origin": [-6.5, 39.2, 2.4], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89], "mirror": true}, + {"origin": [-6.5, 49, 2.4], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89], "mirror": true} + ] + }, + { + "name": "elbow_right_3", + "parent": "arm_right_3", + "pivot": [-5.5, 39, 3.4], + "cubes": [ + {"origin": [-6.5, 29, 2.4], "size": [2, 5, 2], "uv": [86, 73], "mirror": true}, + {"origin": [-6.5, 34, 2.4], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89], "mirror": true}, + {"origin": [-5.5, 20, 0.4], "size": [0, 9, 6], "uv": [70, 80], "mirror": true}, + {"origin": [-6.5, 23, 2.4], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9], "mirror": true} + ] + }, + { + "name": "arm_left_4", + "parent": "bone", + "pivot": [2.4, 52, 5.1], + "cubes": [ + {"origin": [1.4, 42, 4.1], "size": [2, 7, 2], "uv": [88, 0]}, + {"origin": [1.4, 39.2, 4.1], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89]}, + {"origin": [1.4, 49, 4.1], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89]} + ] + }, + { + "name": "elbow_left_4", + "parent": "arm_left_4", + "pivot": [2.4, 39, 5.1], + "cubes": [ + {"origin": [1.4, 29, 4.1], "size": [2, 5, 2], "uv": [86, 73]}, + {"origin": [1.4, 34, 4.1], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89]}, + {"origin": [2.4, 20, 2.1], "size": [0, 9, 6], "uv": [70, 80]}, + {"origin": [1.4, 23, 4.1], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9]} + ] + }, + { + "name": "arm_right_4", + "parent": "bone", + "pivot": [-2.4, 52, 5.1], + "cubes": [ + {"origin": [-3.4, 42, 4.1], "size": [2, 7, 2], "uv": [88, 0], "mirror": true}, + {"origin": [-3.4, 39.2, 4.1], "size": [2, 3, 2], "inflate": 0.1, "uv": [16, 89], "mirror": true}, + {"origin": [-3.4, 49, 4.1], "size": [2, 4, 2], "inflate": 0.1, "uv": [8, 89], "mirror": true} + ] + }, + { + "name": "elbow_right_4", + "parent": "arm_right_4", + "pivot": [-2.4, 39, 5.1], + "cubes": [ + {"origin": [-3.4, 29, 4.1], "size": [2, 5, 2], "uv": [86, 73], "mirror": true}, + {"origin": [-3.4, 34, 4.1], "size": [2, 5, 2], "inflate": 0.1, "uv": [0, 89], "mirror": true}, + {"origin": [-2.4, 20, 2.1], "size": [0, 9, 6], "uv": [70, 80], "mirror": true}, + {"origin": [-3.4, 23, 4.1], "size": [2, 6, 2], "inflate": 0.1, "uv": [88, 9], "mirror": true} + ] + }, + { + "name": "tentacle_left", + "parent": "bone", + "pivot": [4.28, 52.5, -3], + "cubes": [ + {"origin": [2.3, 37, -4.4], "size": [3, 2, 3], "uv": [86, 68]}, + {"origin": [1.9, 39, -5], "size": [4, 15, 4], "uv": [76, 39]} + ] + }, + { + "name": "tentacle_left_2", + "parent": "tentacle_left", + "pivot": [4.56667, 37, -3.03333], + "cubes": [ + {"origin": [1.9, 22, -5], "size": [4, 15, 4], "uv": [36, 80]} + ] + }, + { + "name": "tentacle_left_3", + "parent": "tentacle_left_2", + "pivot": [4.9, 22.15, -3.05], + "cubes": [ + {"origin": [3.9, 16, -5], "size": [2, 6, 4], "uv": [86, 58]}, + {"origin": [3.9, 13, -4.6], "size": [2, 3, 3], "uv": [76, 58]} + ] + }, + { + "name": "tentacle_right", + "parent": "bone", + "pivot": [-4.28, 52.5, -3], + "cubes": [ + {"origin": [-5.3, 37, -4.4], "size": [3, 2, 3], "uv": [86, 68], "mirror": true}, + {"origin": [-5.9, 39, -5], "size": [4, 15, 4], "uv": [76, 39], "mirror": true} + ] + }, + { + "name": "tentacle_right_2", + "parent": "tentacle_right", + "pivot": [-4.56667, 37, -3.03333], + "cubes": [ + {"origin": [-5.9, 22, -5], "size": [4, 15, 4], "uv": [36, 80], "mirror": true} + ] + }, + { + "name": "tentacle_right_3", + "parent": "tentacle_right_2", + "pivot": [-4.9, 22.15, -3.05], + "cubes": [ + {"origin": [-5.9, 16, -5], "size": [2, 6, 4], "uv": [86, 58], "mirror": true}, + {"origin": [-5.9, 13, -4.6], "size": [2, 3, 3], "uv": [76, 58], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/molevore.geo.json b/common/src/main/resources/assets/antarchy/geo/molevore.geo.json new file mode 100644 index 00000000..aa91b277 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/molevore.geo.json @@ -0,0 +1,112 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 256, + "texture_height": 128, + "visible_bounds_width": 6, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "mole_big", + "pivot": [0, 10.2, 0] + }, + { + "name": "all", + "parent": "mole_big", + "pivot": [0, -0.8, 0] + }, + { + "name": "body", + "parent": "all", + "pivot": [0, -0.8, 0], + "cubes": [ + {"origin": [-11, 0, -16], "size": [22, 18, 32], "uv": [0, 0]}, + {"origin": [-12, 0, -17], "size": [24, 19, 34], "uv": [14, 51]}, + {"origin": [-6, 18, -16], "size": [0, 9, 32], "uv": [97, 32]}, + {"origin": [6, 18, -16], "size": [0, 9, 32], "uv": [97, 21]}, + {"origin": [0, 18, -16], "size": [0, 9, 32], "uv": [97, 43]} + ] + }, + { + "name": "head", + "parent": "body", + "pivot": [0, 6.15625, -15.625] + }, + { + "name": "jaw", + "parent": "head", + "pivot": [0, 4.3125, -15.8125], + "cubes": [ + {"origin": [-5, 2, -28], "size": [10, 2, 12], "uv": [77, 0]}, + {"origin": [-4, 4, -27], "size": [1, 1, 3], "uv": [16, 23]}, + {"origin": [-4, 4, -23], "size": [1, 1, 2], "uv": [9, 9]}, + {"origin": [-4, 4, -20], "size": [1, 1, 3], "uv": [16, 23]}, + {"origin": [3, 4, -23], "size": [1, 1, 2], "uv": [9, 9]}, + {"origin": [3, 4, -27], "size": [1, 1, 3], "uv": [16, 23]}, + {"origin": [3, 4, -20], "size": [1, 1, 3], "uv": [16, 23]}, + {"origin": [-2, 4, -27], "size": [4, 1, 1], "uv": [14, 16]} + ] + }, + { + "name": "jaw2", + "parent": "head", + "pivot": [0, 4.95455, -15.90909], + "cubes": [ + {"origin": [-5, 4, -30], "size": [10, 7, 14], "uv": [0, 50]}, + {"origin": [0, 10, -28], "size": [0, 9, 11], "uv": [63, 96]}, + {"origin": [-2, 3, -27], "size": [4, 1, 1], "uv": [14, 16]}, + {"origin": [3, 3, -20], "size": [1, 1, 3], "uv": [16, 23]}, + {"origin": [3, 3, -27], "size": [1, 1, 3], "uv": [16, 23]}, + {"origin": [3, 3, -23], "size": [1, 1, 2], "uv": [9, 9]}, + {"origin": [-4, 3, -20], "size": [1, 1, 3], "uv": [16, 23]}, + {"origin": [-4, 3, -23], "size": [1, 1, 2], "uv": [9, 9]}, + {"origin": [-5, -3, -30], "size": [10, 7, 0], "uv": [42, 107]}, + {"origin": [-10, -1, -29], "size": [20, 17, 0], "uv": [0, 105]}, + {"origin": [-4, 3, -27], "size": [1, 1, 3], "uv": [16, 23]} + ] + }, + { + "name": "left_arm", + "parent": "all", + "pivot": [10, 1, -16.5], + "cubes": [ + {"origin": [8, 0, -24], "size": [10, 4, 10], "inflate": 0.1, "uv": [76, 14]}, + {"origin": [4, 0.1, -31], "size": [18, 0, 18], "uv": [105, 0]} + ] + }, + { + "name": "left_leg", + "parent": "all", + "pivot": [10, 1, 16.5], + "cubes": [ + {"origin": [8, 0, 14], "size": [10, 4, 10], "inflate": 0.1, "uv": [0, 71]}, + {"origin": [4, 0.1, 15], "size": [18, 0, 18], "uv": [105, 19]} + ] + }, + { + "name": "right_arm", + "parent": "all", + "pivot": [-10, 1, -16.5], + "cubes": [ + {"origin": [-18, 0, -24], "size": [10, 4, 10], "inflate": 0.1, "uv": [76, 14], "mirror": true}, + {"origin": [-22, 0.1, -31], "size": [18, 0, 18], "uv": [105, 0], "mirror": true} + ] + }, + { + "name": "right_leg", + "parent": "all", + "pivot": [-10, 1, 16.5], + "cubes": [ + {"origin": [-18, 0, 14], "size": [10, 4, 10], "inflate": 0.1, "uv": [0, 71], "mirror": true}, + {"origin": [-22, 0.1, 15], "size": [18, 0, 18], "uv": [105, 19], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/moleworm.geo.json b/common/src/main/resources/assets/antarchy/geo/moleworm.geo.json new file mode 100644 index 00000000..ad7e3971 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/moleworm.geo.json @@ -0,0 +1,73 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 3, + "visible_bounds_height": 1.5, + "visible_bounds_offset": [0, 0.25, 0] + }, + "bones": [ + { + "name": "mole_little", + "pivot": [-0.41667, -0.16667, 1.41667] + }, + { + "name": "body", + "parent": "mole_little", + "pivot": [0, -0.38889, -1.75], + "cubes": [ + {"origin": [-3.5, 0, -4], "size": [7, 6, 8], "uv": [1, 1]} + ] + }, + { + "name": "tail", + "parent": "body", + "pivot": [0, 2.5, 4], + "cubes": [ + {"origin": [-1.5, 1, 4], "size": [3, 3, 4], "uv": [25, 0]} + ] + }, + { + "name": "tail2", + "parent": "tail", + "pivot": [0, 1.5, 8], + "cubes": [ + {"origin": [-1, 1.5, 8], "size": [2, 2, 4], "uv": [39, 0]} + ] + }, + { + "name": "head", + "parent": "body", + "pivot": [0, 2.22222, -4], + "cubes": [ + {"origin": [-1.5, 1, -8], "size": [3, 3, 4], "uv": [0, 15]}, + {"origin": [-3.5, 0, -7], "size": [7, 6, 0], "uv": [0, 22]}, + {"origin": [-0.5, 0, -8], "size": [1, 1, 0], "uv": [16, 30]} + ] + }, + { + "name": "left_arm", + "parent": "mole_little", + "pivot": [3, 0.25, -3], + "cubes": [ + {"origin": [2.5, 0, -6], "size": [3, 1, 3], "uv": [14, 15]}, + {"origin": [1.5, 0.1, -7], "size": [5, 0, 3], "uv": [19, 29]} + ] + }, + { + "name": "right_arm", + "parent": "mole_little", + "pivot": [-3, 0.25, -3], + "cubes": [ + {"origin": [-5.5, 0, -6], "size": [3, 1, 3], "uv": [14, 15], "mirror": true}, + {"origin": [-6.5, 0.1, -7], "size": [5, 0, 3], "uv": [19, 29], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/nightmare.geo.json b/common/src/main/resources/assets/antarchy/geo/nightmare.geo.json new file mode 100644 index 00000000..b2b50762 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/nightmare.geo.json @@ -0,0 +1,211 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 512, + "visible_bounds_width": 15, + "visible_bounds_height": 4.5, + "visible_bounds_offset": [0, 1.75, 0] + }, + "bones": [ + { + "name": "Nightmare", + "pivot": [0, 19.5, 15] + }, + { + "name": "R_Tight", + "parent": "Nightmare", + "pivot": [-11, 21.25, 18.25], + "cubes": [ + {"origin": [-15, 9, 10], "size": [8, 20, 13], "uv": [0, 179], "mirror": true} + ] + }, + { + "name": "R_leg", + "parent": "R_Tight", + "pivot": [-11, 12, 19.5], + "cubes": [ + {"origin": [-14, 2, 16.5], "size": [6, 10, 6], "uv": [58, 135], "mirror": true} + ] + }, + { + "name": "R_foot", + "parent": "R_leg", + "pivot": [-11, 1, 19.5], + "cubes": [ + {"origin": [-15, 0, 12.5], "size": [8, 2, 10], "uv": [52, 97], "mirror": true}, + {"origin": [-8.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80], "mirror": true}, + {"origin": [-13.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80], "mirror": true} + ] + }, + { + "name": "L_Tight", + "parent": "Nightmare", + "pivot": [11, 21.25, 18.25], + "cubes": [ + {"origin": [7, 9, 10], "size": [8, 20, 13], "uv": [0, 179]} + ] + }, + { + "name": "L_leg", + "parent": "L_Tight", + "pivot": [11, 12, 19.5], + "cubes": [ + {"origin": [8, 2, 16.5], "size": [6, 10, 6], "uv": [58, 135]} + ] + }, + { + "name": "L_foot", + "parent": "L_leg", + "pivot": [11, 1, 19.5], + "cubes": [ + {"origin": [7, 0, 12.5], "size": [8, 2, 10], "uv": [52, 97]}, + {"origin": [8.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80]}, + {"origin": [13.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80]} + ] + }, + { + "name": "torso", + "parent": "Nightmare", + "pivot": [0, 19.5, 15], + "cubes": [ + {"origin": [-7, 6, -9], "size": [14, 27, 24], "uv": [5, 128]} + ] + }, + { + "name": "Tail", + "parent": "torso", + "pivot": [0, 32, 13.08333], + "cubes": [ + {"origin": [-5, 24, 13], "size": [10, 13, 22], "uv": [42, 179]} + ] + }, + { + "name": "Tail2", + "parent": "Tail", + "pivot": [0, 32.75, 35], + "cubes": [ + {"origin": [-4, 27, 35], "size": [8, 10, 21], "uv": [70, 93]} + ] + }, + { + "name": "Tail3", + "parent": "Tail2", + "pivot": [0, 33.5, 56], + "cubes": [ + {"origin": [0, 30, 66], "size": [0, 14, 20], "uv": [82, 199]}, + {"origin": [-3, 30, 56], "size": [6, 7, 21], "uv": [70, 19]} + ] + }, + { + "name": "neck", + "parent": "torso", + "pivot": [0, 22.5, -8], + "cubes": [ + {"origin": [-9, 13, -24], "size": [18, 19, 16], "uv": [0, 93]} + ] + }, + { + "name": "head", + "parent": "neck", + "pivot": [0, 21.3125, -20.875], + "cubes": [ + {"origin": [-8, 17, -37], "size": [16, 9, 16], "uv": [0, 0]}, + {"origin": [-6.75, 14.75, -31], "size": [0, 3, 2], "uv": [11, 10]}, + {"origin": [-6.75, 14.75, -34], "size": [0, 3, 2], "uv": [11, 10]}, + {"origin": [-6.75, 14.75, -37], "size": [0, 3, 2], "uv": [11, 10]}, + {"origin": [-4.75, 14.75, -38.5], "size": [0, 3, 2], "uv": [11, 10]}, + {"origin": [-3.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10]}, + {"origin": [-1.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10]}, + {"origin": [1.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10], "mirror": true}, + {"origin": [3.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10], "mirror": true}, + {"origin": [6.75, 14.75, -31], "size": [0, 3, 2], "uv": [11, 10], "mirror": true}, + {"origin": [6.75, 14.75, -34], "size": [0, 3, 2], "uv": [11, 10], "mirror": true}, + {"origin": [6.75, 14.75, -37], "size": [0, 3, 2], "uv": [11, 10], "mirror": true}, + {"origin": [4.75, 14.75, -38.5], "size": [0, 3, 2], "uv": [11, 10], "mirror": true}, + {"origin": [8, 21, -34], "size": [9, 4, 13], "uv": [64, 0]}, + {"origin": [15, 21, -37], "size": [5, 5, 16], "uv": [42, 41]}, + {"origin": [-17, 21, -34], "size": [9, 4, 13], "uv": [64, 0], "mirror": true}, + {"origin": [-20, 21, -37], "size": [5, 5, 16], "uv": [42, 41], "mirror": true}, + {"origin": [0, 26, -37], "size": [0, 15, 12], "uv": [4, 66]}, + {"origin": [-5, 17, -41], "size": [10, 9, 4], "uv": [76, 62]}, + {"origin": [-1.5, 15, -45], "size": [3, 11, 4], "uv": [76, 75]} + ] + }, + { + "name": "jaw", + "parent": "head", + "pivot": [0, 17, -21], + "cubes": [ + {"origin": [-6, 13, -33], "size": [12, 4, 12], "uv": [0, 25]}, + {"origin": [-5, 17, -33], "size": [0, 2, 12], "uv": [26, 30]}, + {"origin": [-3.5, 17, -39], "size": [0, 2, 6], "uv": [32, 36]}, + {"origin": [-3.5, 17, -38.5], "size": [7, 2, 0], "uv": [26, 44], "mirror": true}, + {"origin": [3.5, 17, -39], "size": [0, 2, 6], "uv": [32, 36], "mirror": true}, + {"origin": [5, 17, -33], "size": [0, 2, 12], "uv": [26, 30], "mirror": true}, + {"origin": [-9, 13, -27], "size": [3, 7, 6], "inflate": 0.1, "uv": [48, 0]}, + {"origin": [6, 13, -27], "size": [3, 7, 6], "inflate": 0.1, "uv": [48, 0], "mirror": true}, + {"origin": [-5, 13, -39], "size": [10, 4, 6], "uv": [48, 25]} + ] + }, + { + "name": "L_Wing", + "parent": "torso", + "pivot": [5.83333, 28, -1.66667], + "cubes": [ + {"origin": [5, 23, -5], "size": [11, 9, 9], "uv": [82, 133]}, + {"origin": [2, 28, 4], "size": [14, 0, 23], "uv": [77, 158]} + ] + }, + { + "name": "L_Wing2", + "parent": "L_Wing", + "pivot": [16, 28.25, -2.25], + "cubes": [ + {"origin": [16, 26, -5], "size": [43, 4, 7], "uv": [0, 238]}, + {"origin": [16, 28, 2], "size": [43, 0, 25], "uv": [-25, 265]} + ] + }, + { + "name": "L_Wing3", + "parent": "L_Wing2", + "pivot": [59, 28.5, -3], + "cubes": [ + {"origin": [59, 27, -5], "size": [43, 3, 4], "uv": [0, 255]}, + {"origin": [59, 28, -1], "size": [49, 0, 28], "uv": [-28, 292]} + ] + }, + { + "name": "R_Wing", + "parent": "torso", + "pivot": [-5.83333, 28, -1.66667], + "cubes": [ + {"origin": [-16, 23, -5], "size": [11, 9, 9], "uv": [82, 133], "mirror": true}, + {"origin": [-16, 28, 4], "size": [14, 0, 23], "uv": [77, 158], "mirror": true} + ] + }, + { + "name": "R_Wing2", + "parent": "R_Wing", + "pivot": [-16, 28.25, -2.25], + "cubes": [ + {"origin": [-59, 26, -5], "size": [43, 4, 7], "uv": [0, 238], "mirror": true}, + {"origin": [-59, 28, 2], "size": [43, 0, 25], "uv": [-25, 265], "mirror": true} + ] + }, + { + "name": "R_Wing3", + "parent": "R_Wing2", + "pivot": [-59, 28.5, -3], + "cubes": [ + {"origin": [-102, 27, -5], "size": [43, 3, 4], "uv": [0, 255], "mirror": true}, + {"origin": [-108, 28, -1], "size": [49, 0, 28], "uv": [-28, 292], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/reverie.geo.json b/common/src/main/resources/assets/antarchy/geo/reverie.geo.json new file mode 100644 index 00000000..6a452d15 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/reverie.geo.json @@ -0,0 +1,45 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "Reverie", + "pivot": [0, 9, 2] + }, + { + "name": "trail", + "parent": "Reverie", + "pivot": [0, 7, 4.5] + }, + { + "name": "core", + "parent": "Reverie", + "pivot": [0, 11, -0.5], + "cubes": [ + {"origin": [-4, 7, -0.5], "size": [8, 8, 0], "pivot": [0, 11, -0.5], "rotation": [0, 45, 0], "uv": [0, 20]}, + {"origin": [-4, 7, -0.5], "size": [8, 8, 0], "pivot": [0, 11, -0.5], "rotation": [0, -45, 0], "uv": [0, 20], "mirror": true}, + {"origin": [0, 6, -5.5], "size": [0, 10, 10], "pivot": [0, 11, -0.5], "rotation": [0, -90, 0], "uv": [0, 0]}, + {"origin": [0, 6, -5.5], "size": [0, 10, 10], "uv": [0, 0]} + ] + }, + { + "name": "core_bone", + "parent": "core", + "pivot": [0, 11, -0.5], + "cubes": [ + {"origin": [-1, 10, -1.5], "size": [2, 2, 2], "uv": [0, 28]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/scorpion.geo.json b/common/src/main/resources/assets/antarchy/geo/scorpion.geo.json new file mode 100644 index 00000000..f6a2ec75 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/scorpion.geo.json @@ -0,0 +1,132 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 64, + "visible_bounds_width": 6, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "scorpion", + "pivot": [0.5, 0.54167, 7.75] + }, + { + "name": "r_leg", + "parent": "scorpion", + "pivot": [-6, 2.025, -0.5], + "rotation": [0, 0, -5], + "cubes": [ + {"origin": [-20, 1.025, -2], "size": [14, 2, 3], "uv": [48, 26]} + ] + }, + { + "name": "l_leg", + "parent": "scorpion", + "pivot": [6, 2.025, -0.5], + "rotation": [0, 0, 5], + "cubes": [ + {"origin": [6, 1.025, -2], "size": [14, 2, 3], "uv": [48, 26], "mirror": true} + ] + }, + { + "name": "r_leg2", + "parent": "scorpion", + "pivot": [-6, 2.025, 4.5], + "rotation": [0, 0, -5], + "cubes": [ + {"origin": [-20, 1.025, 3], "size": [14, 2, 3], "uv": [48, 26]} + ] + }, + { + "name": "l_leg2", + "parent": "scorpion", + "pivot": [6, 2.025, 4.5], + "rotation": [0, 0, 5], + "cubes": [ + {"origin": [6, 1.025, 3], "size": [14, 2, 3], "uv": [48, 26], "mirror": true} + ] + }, + { + "name": "r_leg3", + "parent": "scorpion", + "pivot": [-6, 2.025, 9.5], + "rotation": [0, 0, -5], + "cubes": [ + {"origin": [-20, 1.025, 8], "size": [14, 2, 3], "uv": [48, 26]} + ] + }, + { + "name": "l_leg3", + "parent": "scorpion", + "pivot": [6, 2.025, 9.5], + "rotation": [0, 0, 5], + "cubes": [ + {"origin": [6, 1.025, 8], "size": [14, 2, 3], "uv": [48, 26], "mirror": true} + ] + }, + { + "name": "torso", + "parent": "scorpion", + "pivot": [0, 0, 4.5], + "cubes": [ + {"origin": [-7, 0, -2], "size": [14, 6, 13], "uv": [0, 0]} + ] + }, + { + "name": "tail", + "parent": "torso", + "pivot": [1, 1.08333, 11], + "cubes": [ + {"origin": [-3, 1, 11], "size": [6, 5, 7], "inflate": 0.01, "uv": [0, 35]} + ] + }, + { + "name": "tail2", + "parent": "tail", + "pivot": [1, 1, 18], + "cubes": [ + {"origin": [-3, 1, 18], "size": [6, 5, 8], "uv": [0, 47]} + ] + }, + { + "name": "tail3", + "parent": "tail2", + "pivot": [1, 1, 24], + "cubes": [ + {"origin": [-5, 1, 24], "size": [10, 7, 8], "inflate": 0.01, "uv": [28, 35]}, + {"origin": [-0.5, 8, 28], "size": [1, 5, 3], "inflate": 0.01, "uv": [28, 35]} + ] + }, + { + "name": "head", + "parent": "torso", + "pivot": [0, 3, -1], + "cubes": [ + {"origin": [-7, 0, -11], "size": [14, 6, 10], "inflate": 0.1, "uv": [0, 19]} + ] + }, + { + "name": "r_claw", + "parent": "head", + "pivot": [-7, 5, -4.75], + "cubes": [ + {"origin": [-16, 3, -20], "size": [9, 4, 17], "inflate": 0.1, "uv": [54, 0]} + ] + }, + { + "name": "l_claw", + "parent": "head", + "pivot": [7, 5, -4.75], + "cubes": [ + {"origin": [7, 3, -20], "size": [9, 4, 17], "inflate": 0.1, "uv": [54, 0], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/shrink_ray.geo.json b/common/src/main/resources/assets/antarchy/geo/shrink_ray.geo.json new file mode 100644 index 00000000..7a625872 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/shrink_ray.geo.json @@ -0,0 +1,64 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 3, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "shrink_ray", + "pivot": [0, 6, 7] + }, + { + "name": "handle", + "parent": "shrink_ray", + "pivot": [0, 6, 7], + "cubes": [ + {"origin": [-1, 0, 6], "size": [2, 6, 2], "pivot": [0, 6, 7], "rotation": [10, 0, 0], "uv": [0, 24]}, + {"origin": [-1, 2.53798, 1.88412], "size": [2, 1, 5], "inflate": -0.005, "pivot": [0, 3.03798, 5.88412], "rotation": [-21, 0, 0], "uv": [22, 10]} + ] + }, + { + "name": "ray_body", + "parent": "shrink_ray", + "pivot": [0, 11, 1], + "cubes": [ + {"origin": [-2, 5, 3], "size": [4, 4, 6], "uv": [22, 0]}, + {"origin": [0, 5, 9], "size": [0, 2, 2], "uv": [8, 24]} + ] + }, + { + "name": "blaster", + "parent": "ray_body", + "pivot": [0, 7, 0], + "cubes": [ + {"origin": [-3, 4, -2], "size": [6, 6, 5], "uv": [0, 13]}, + {"origin": [0, 9, 1], "size": [0, 2, 11], "uv": [0, 0]} + ] + }, + { + "name": "blaster_end", + "parent": "blaster", + "pivot": [0, 7, -7.5], + "cubes": [ + {"origin": [-1.5, 5.5, -9], "size": [3, 3, 3], "uv": [22, 22]} + ] + }, + { + "name": "blaster_rotating", + "parent": "blaster", + "pivot": [0, 7, -2], + "cubes": [ + {"origin": [-1, 6, -6], "size": [2, 2, 4], "uv": [22, 16]} + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/geo/squidzooka.geo.json b/common/src/main/resources/assets/antarchy/geo/squidzooka.geo.json new file mode 100644 index 00000000..1d543e88 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/squidzooka.geo.json @@ -0,0 +1,68 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 5, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "squidzooka", + "pivot": [0, 0, 0] + }, + { + "name": "all", + "parent": "squidzooka", + "pivot": [0, 9, 0] + }, + { + "name": "bazooka", + "parent": "all", + "pivot": [0, 9, 0], + "cubes": [ + {"origin": [-2.5, 6.5, -20], "size": [5, 5, 20], "uv": [0, 0]}, + {"origin": [-2.5, 6.5, 0], "size": [5, 5, 14], "uv": [0, 25]}, + {"origin": [-3.5, 5.5, -24], "size": [7, 7, 4], "uv": [50, 0]}, + {"origin": [-3.5, 5.5, 13], "size": [7, 7, 4], "uv": [63, 44]} + ] + }, + { + "name": "squid", + "parent": "bazooka", + "pivot": [0, 9, 17] + }, + { + "name": "squid2", + "parent": "squid", + "pivot": [0, 9, 17], + "cubes": [ + {"origin": [-2.5, 6, 16], "size": [5, 6, 7], "uv": [28, 45]}, + {"origin": [0, 5, 17], "size": [0, 8, 12], "uv": [38, 25]}, + {"origin": [-1.5, 7, 21], "size": [3, 4, 5], "uv": [52, 55]} + ] + }, + { + "name": "center", + "parent": "all", + "pivot": [0, 9, 0] + }, + { + "name": "handle", + "parent": "center", + "pivot": [0, 4, 0.5], + "cubes": [ + {"origin": [-1, 0, -1], "size": [2, 6, 3], "uv": [12, 58]}, + {"origin": [0, 3, -7], "size": [0, 4, 6], "uv": [0, 58]}, + {"origin": [-3, 6, -2], "size": [6, 6, 4], "uv": [50, 11]}, + {"origin": [-1, 12, -9], "size": [2, 2, 12], "uv": [0, 44]} + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/geo/toreterror.geo.json b/common/src/main/resources/assets/antarchy/geo/toreterror.geo.json new file mode 100644 index 00000000..dedf02c6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/toreterror.geo.json @@ -0,0 +1,151 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 256, + "texture_height": 256, + "visible_bounds_width": 6, + "visible_bounds_height": 5.5, + "visible_bounds_offset": [0, 2.25, 0] + }, + "bones": [ + { + "name": "Toreterror", + "pivot": [0.0625, 21.6731, -10.63321] + }, + { + "name": "R-Leg", + "parent": "Toreterror", + "pivot": [-9, 18, -13], + "cubes": [ + {"origin": [-13, 2, -19], "size": [8, 18, 12], "inflate": 0.01, "uv": [72, 75]} + ] + }, + { + "name": "L-Leg", + "parent": "Toreterror", + "pivot": [9, 18, -13], + "cubes": [ + {"origin": [5, 2, -19], "size": [8, 18, 12], "inflate": 0.01, "uv": [72, 75], "mirror": true} + ] + }, + { + "name": "Torso", + "parent": "Toreterror", + "pivot": [0.25, 18, -9.5] + }, + { + "name": "R_arm", + "parent": "Torso", + "pivot": [-12.75, 43.25, -12], + "cubes": [ + {"origin": [-26, 37, -16], "size": [16, 8, 9], "uv": [84, 58]} + ] + }, + { + "name": "R_arm2", + "parent": "R_arm", + "pivot": [-25.5, 41, -12.5], + "cubes": [ + {"origin": [-52, 35, -18], "size": [27, 11, 14], "uv": [138, 0]} + ] + }, + { + "name": "L_arm", + "parent": "Torso", + "pivot": [12.75, 43.25, -12], + "cubes": [ + {"origin": [10, 37, -16], "size": [16, 8, 9], "uv": [84, 58], "mirror": true} + ] + }, + { + "name": "L_arm2", + "parent": "L_arm", + "pivot": [25.5, 41, -12.5], + "cubes": [ + {"origin": [25, 35, -18], "size": [27, 11, 14], "uv": [138, 0], "mirror": true} + ] + }, + { + "name": "Shell", + "parent": "Torso", + "pivot": [-1.75, 32.65328, -0.7294], + "cubes": [ + {"origin": [-17, 17, -6], "size": [34, 32, 12], "pivot": [4, 32, -1], "rotation": [22.5, 0, 0], "uv": [0, 0]} + ] + }, + { + "name": "cannon", + "parent": "Shell", + "pivot": [-3.5, 32, -1], + "cubes": [ + {"origin": [-8, 35, 6], "size": [16, 12, 7], "pivot": [-5, 32, -1], "rotation": [22.5, 0, 0], "uv": [92, 0]} + ] + }, + { + "name": "barrel", + "parent": "cannon", + "pivot": [-1.16667, 49.50153, 3.17891], + "cubes": [ + {"origin": [-3.5, 64, 6], "size": [7, 17, 7], "pivot": [-3.5, 32, -1], "rotation": [22.5, 0, 0], "uv": [48, 105]}, + {"origin": [-2.5, 47, 7], "size": [5, 17, 5], "pivot": [-3.5, 32, -1], "rotation": [22.5, 0, 0], "uv": [76, 105]}, + {"origin": [-3.5, 75, -7], "size": [0, 4, 16], "pivot": [-3.5, 32, -1], "rotation": [22.5, 0, 0], "uv": [16, 102]} + ] + }, + { + "name": "Torso_2", + "parent": "Torso", + "pivot": [-0.4, 37.8, -11.5], + "cubes": [ + {"origin": [-10.5, 18, -16], "size": [21, 12, 15], "uv": [0, 75]}, + {"origin": [-13, 28, -17], "size": [26, 15, 16], "uv": [0, 44]} + ] + }, + { + "name": "Head", + "parent": "Torso_2", + "pivot": [-2, 43, -16], + "cubes": [ + {"origin": [-6, 45, -23], "size": [12, 7, 11], "uv": [92, 19]}, + {"origin": [-5, 45, -28], "size": [10, 3, 5], "uv": [96, 105]}, + {"origin": [-3, 43, -28], "size": [6, 2, 1], "uv": [48, 102]} + ] + }, + { + "name": "Jaw", + "parent": "Head", + "pivot": [-2, 46.08333, -12.08333], + "cubes": [ + {"origin": [-5, 41, -27], "size": [10, 3, 4], "uv": [92, 37]}, + {"origin": [-5, 37.5, -26.5], "size": [10, 4, 0], "uv": [116, 37]}, + {"origin": [-6.5, 41, -23], "size": [13, 3, 11], "uv": [0, 102]}, + {"origin": [-6.5, 44, -22], "size": [0, 4, 2], "uv": [0, 114]}, + {"origin": [6.5, 44, -22], "size": [0, 4, 2], "uv": [0, 114], "mirror": true}, + {"origin": [-6.5, 39, -23], "size": [0, 2, 4], "uv": [7, 112]}, + {"origin": [6.5, 39, -23], "size": [0, 2, 4], "uv": [7, 112], "mirror": true}, + {"origin": [-7, 41, -20], "size": [1, 5, 8], "uv": [112, 75]}, + {"origin": [6, 41, -20], "size": [1, 5, 8], "uv": [112, 75], "mirror": true} + ] + }, + { + "name": "R_eye", + "parent": "Head", + "pivot": [-4.5, 48.5, -23], + "cubes": [ + {"origin": [-5, 48, -23], "size": [1, 1, 0], "inflate": 0.1, "uv": [101, 29]} + ] + }, + { + "name": "L_eye", + "parent": "Head", + "pivot": [4.5, 48.5, -23], + "cubes": [ + {"origin": [4, 48, -23], "size": [1, 1, 0], "inflate": 0.1, "uv": [101, 29], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/triffid.geo.json b/common/src/main/resources/assets/antarchy/geo/triffid.geo.json new file mode 100644 index 00000000..696e0a31 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/triffid.geo.json @@ -0,0 +1,210 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.triffid", + "texture_width": 256, + "texture_height": 256, + "visible_bounds_width": 8, + "visible_bounds_height": 7.5, + "visible_bounds_offset": [0, 3.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-16, 0, -16], "size": [32, 0, 32], "inflate": 0.01, "uv": [26, 2]} + ] + }, + { + "name": "base", + "parent": "root", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-8, 0, -8], "size": [16, 8, 16], "uv": [32, 61]} + ] + }, + { + "name": "stemLower", + "parent": "base", + "pivot": [0, 6, 0], + "cubes": [ + {"origin": [-4, 6, -4], "size": [8, 17, 8], "inflate": 0.05, "uv": [1, 18]} + ] + }, + { + "name": "stemMiddle", + "parent": "stemLower", + "pivot": [0, 23, 0], + "cubes": [ + {"origin": [-4, 23, -4], "size": [8, 17, 8], "inflate": 0.025, "uv": [0, 43]} + ] + }, + { + "name": "stemUpper", + "parent": "stemMiddle", + "pivot": [0, 40, 0], + "cubes": [ + {"origin": [-4, 40, -4], "size": [8, 17, 8], "uv": [0, 68]} + ] + }, + { + "name": "head", + "parent": "stemUpper", + "pivot": [0, 57, 0], + "cubes": [ + {"origin": [-8, 57, -8], "size": [16, 5, 16], "uv": [0, 93]}, + {"origin": [-8, 57, -8], "size": [16, 5, 16], "inflate": 0.5, "uv": [0, 114]} + ] + }, + { + "name": "petal_L", + "parent": "head", + "pivot": [0, 61, 0], + "cubes": [ + {"origin": [0, 61, -14], "size": [12, 24, 28], "uv": [64, 85], "mirror": true}, + {"origin": [-8, 61, -14], "size": [8, 24, 0], "pivot": [0, 73, -14], "rotation": [0, -22.5, 0], "uv": [32, 53], "mirror": true}, + {"origin": [-8, 61, 14], "size": [8, 24, 0], "pivot": [0, 73, 14], "rotation": [0, 22.5, 0], "uv": [32, 53], "mirror": true}, + {"origin": [-11, 85, -14], "size": [11, 0, 28], "pivot": [0, 85, 0], "rotation": [0, 0, 45], "uv": [5, 24], "mirror": true} + ] + }, + { + "name": "saliva_L", + "parent": "petal_L", + "pivot": [0, 75.5, -13], + "cubes": [ + {"origin": [0, 75, -20], "size": [0, 1, 7], "inflate": 0.01, "uv": [35, 13], "mirror": true} + ] + }, + { + "name": "saliva_L2", + "parent": "petal_L", + "pivot": [0, 80.5, -13], + "cubes": [ + {"origin": [0, 80, -24], "size": [0, 1, 11], "inflate": 0.01, "uv": [31, 10], "mirror": true} + ] + }, + { + "name": "petal_R", + "parent": "head", + "pivot": [0, 61, 0], + "cubes": [ + {"origin": [-12, 61, -14], "size": [12, 24, 28], "uv": [64, 85]}, + {"origin": [0, 61, -14], "size": [8, 24, 0], "pivot": [0, 73, -14], "rotation": [0, 22.5, 0], "uv": [32, 53]}, + {"origin": [0, 61, 14], "size": [8, 24, 0], "pivot": [0, 73, 14], "rotation": [0, -22.5, 0], "uv": [32, 53]}, + {"origin": [0, 85, -14], "size": [11, 0, 28], "pivot": [0, 85, 0], "rotation": [0, 0, -45], "uv": [5, 24]} + ] + }, + { + "name": "saliva_R", + "parent": "petal_R", + "pivot": [0, 75.5, -13], + "cubes": [ + {"origin": [0, 75, -20], "size": [0, 1, 7], "inflate": 0.01, "uv": [35, 13]} + ] + }, + { + "name": "saliva_R2", + "parent": "petal_R", + "pivot": [0, 80.5, -13], + "cubes": [ + {"origin": [0, 80, -24], "size": [0, 1, 11], "inflate": 0.01, "uv": [31, 10]} + ] + }, + { + "name": "tongueBase", + "parent": "head", + "pivot": [0, 61, 0], + "cubes": [ + {"origin": [-2, 61, -2], "size": [4, 8, 4], "uv": [12, 0]} + ] + }, + { + "name": "tongueMiddle", + "parent": "tongueBase", + "pivot": [0, 69, 0], + "cubes": [ + {"origin": [-1, 69, -1], "size": [2, 16, 2], "uv": [0, 0]} + ] + }, + { + "name": "tongueTip", + "parent": "tongueMiddle", + "pivot": [0, 85, 0], + "cubes": [ + {"origin": [0, 85, -1], "size": [0, 16, 2], "uv": [8, 0]}, + {"origin": [-1, 101, -1], "size": [2, 2, 2], "uv": [32, 6]} + ] + }, + { + "name": "leafRight", + "parent": "base", + "pivot": [-8, 8, 0], + "cubes": [ + {"origin": [-28, 8, -12], "size": [20, 0, 24], "uv": [72, 61]} + ] + }, + { + "name": "leafTipRight", + "parent": "leafRight", + "pivot": [-28, 8, 0], + "cubes": [ + {"origin": [-56, 8, -12], "size": [28, 0, 24], "uv": [31, 37]} + ] + }, + { + "name": "leafLeft", + "parent": "base", + "pivot": [8, 8, 0], + "cubes": [ + {"origin": [8, 8, -12], "size": [20, 0, 24], "uv": [72, 61], "mirror": true} + ] + }, + { + "name": "leafTipLeft", + "parent": "leafLeft", + "pivot": [28, 8, 0], + "cubes": [ + {"origin": [28, 8, -12], "size": [28, 0, 24], "uv": [31, 37], "mirror": true} + ] + }, + { + "name": "leafFront", + "parent": "base", + "pivot": [0, 8, -8], + "rotation": [0, 90, 0], + "cubes": [ + {"origin": [0, 8, -20], "size": [20, 0, 24], "uv": [72, 61], "mirror": true} + ] + }, + { + "name": "leafTipFront", + "parent": "leafFront", + "pivot": [20, 8, -8], + "cubes": [ + {"origin": [20, 8, -20], "size": [28, 0, 24], "uv": [31, 37], "mirror": true} + ] + }, + { + "name": "leafBack", + "parent": "base", + "pivot": [0, 8, 8], + "rotation": [0, -90, 0], + "cubes": [ + {"origin": [0, 8, -4], "size": [20, 0, 24], "uv": [72, 61], "mirror": true} + ] + }, + { + "name": "leafTipBack", + "parent": "leafBack", + "pivot": [20, 8, 8], + "cubes": [ + {"origin": [20, 8, -4], "size": [28, 0, 24], "uv": [31, 37], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/wasp.geo.json b/common/src/main/resources/assets/antarchy/geo/wasp.geo.json new file mode 100644 index 00000000..0a170da1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/wasp.geo.json @@ -0,0 +1,182 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.wasp", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 5, + "visible_bounds_height": 3, + "visible_bounds_offset": [0, 0.5, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, + { + "name": "body", + "parent": "root", + "pivot": [0, 5, 1], + "cubes": [ + {"origin": [-5, 0, -6], "size": [10, 10, 14], "uv": [0, 0]}, + {"origin": [-5, 0, -6], "size": [10, 10, 14], "inflate": 0.3, "uv": [64, 0]} + ] + }, + { + "name": "right_leg", + "parent": "body", + "pivot": [-4.95577, 1.35871, -3], + "cubes": [ + {"origin": [-6, -3, -4], "size": [2, 5, 2], "uv": [34, 0]}, + {"origin": [-5, -5.25, -3.5], "size": [2, 3, 1], "pivot": [-4, -4.75, -3], "rotation": [0, 0, -22.5], "uv": [34, 7]}, + {"origin": [-5, -8.25, -3], "size": [2, 3, 0], "pivot": [-4, -4.75, -3], "rotation": [0, 0, -22.5], "uv": [42, 0]} + ] + }, + { + "name": "left_leg", + "parent": "body", + "pivot": [4.95577, 1.35871, -3], + "cubes": [ + {"origin": [4, -3, -4], "size": [2, 5, 2], "uv": [34, 0], "mirror": true}, + {"origin": [3, -5.25, -3.5], "size": [2, 3, 1], "pivot": [4, -4.75, -3], "rotation": [0, 0, 22.5], "uv": [34, 7], "mirror": true}, + {"origin": [3, -8.25, -3], "size": [2, 3, 0], "pivot": [4, -4.75, -3], "rotation": [0, 0, 22.5], "uv": [42, 0], "mirror": true} + ] + }, + { + "name": "right_leg2", + "parent": "body", + "pivot": [-4.95577, 1.35871, 1], + "cubes": [ + {"origin": [-6, -3, 0], "size": [2, 5, 2], "uv": [34, 0]}, + {"origin": [-5, -5.25, 0.5], "size": [2, 3, 1], "pivot": [-4, -4.75, 1], "rotation": [0, 0, -22.5], "uv": [34, 7]}, + {"origin": [-5, -8.25, 1], "size": [2, 3, 0], "pivot": [-4, -4.75, 1], "rotation": [0, 0, -22.5], "uv": [42, 0]} + ] + }, + { + "name": "left_leg2", + "parent": "body", + "pivot": [4.95577, 1.35871, 1], + "cubes": [ + {"origin": [4, -3, 0], "size": [2, 5, 2], "uv": [34, 0], "mirror": true}, + {"origin": [3, -5.25, 0.5], "size": [2, 3, 1], "pivot": [4, -4.75, 1], "rotation": [0, 0, 22.5], "uv": [34, 7], "mirror": true}, + {"origin": [3, -8.25, 1], "size": [2, 3, 0], "pivot": [4, -4.75, 1], "rotation": [0, 0, 22.5], "uv": [42, 0], "mirror": true} + ] + }, + { + "name": "right_leg3", + "parent": "body", + "pivot": [-4.95577, 1.35871, 5], + "cubes": [ + {"origin": [-6, -3, 4], "size": [2, 5, 2], "uv": [34, 0]}, + {"origin": [-5, -5.25, 4.5], "size": [2, 3, 1], "pivot": [-4, -4.75, 5], "rotation": [0, 0, -22.5], "uv": [34, 7]}, + {"origin": [-5, -8.25, 5], "size": [2, 3, 0], "pivot": [-4, -4.75, 5], "rotation": [0, 0, -22.5], "uv": [42, 0]} + ] + }, + { + "name": "left_leg3", + "parent": "body", + "pivot": [4.95577, 1.35871, 5], + "cubes": [ + {"origin": [4, -3, 4], "size": [2, 5, 2], "uv": [34, 0], "mirror": true}, + {"origin": [3, -5.25, 4.5], "size": [2, 3, 1], "pivot": [4, -4.75, 5], "rotation": [0, 0, 22.5], "uv": [34, 7], "mirror": true}, + {"origin": [3, -8.25, 5], "size": [2, 3, 0], "pivot": [4, -4.75, 5], "rotation": [0, 0, 22.5], "uv": [42, 0], "mirror": true} + ] + }, + { + "name": "connector", + "parent": "body", + "pivot": [0, 5, 8], + "cubes": [ + {"origin": [-2, 3, 6], "size": [4, 4, 8], "uv": [0, 44]} + ] + }, + { + "name": "stinger", + "parent": "connector", + "pivot": [0, 5, 12], + "cubes": [ + {"origin": [-4, 1, 12], "size": [8, 8, 12], "uv": [0, 24]}, + {"origin": [0, 5, 26], "size": [0, 1, 6], "uv": [25, 47]}, + {"origin": [-1, 4, 24], "size": [2, 3, 2], "uv": [29, 25]} + ] + }, + { + "name": "head", + "parent": "body", + "pivot": [0, 5, -8], + "cubes": [ + {"origin": [-4, 1, -16], "size": [8, 5, 8], "uv": [40, 31]} + ] + }, + { + "name": "leftjaw", + "parent": "head", + "pivot": [0, 2.5, -16], + "cubes": [ + {"origin": [0, 2, -20], "size": [4, 1, 4], "uv": [48, 19], "mirror": true} + ] + }, + { + "name": "rightjaw", + "parent": "head", + "pivot": [0, 2.5, -16], + "cubes": [ + {"origin": [-4, 2, -20], "size": [4, 1, 4], "uv": [48, 19]} + ] + }, + { + "name": "rightAntenna", + "parent": "head", + "pivot": [-1.5, 4.91667, -15.5], + "cubes": [ + {"origin": [-1.5, 5, -16], "size": [0, 11, 1], "uv": [61, 0]} + ] + }, + { + "name": "rightAntenna2", + "parent": "rightAntenna", + "pivot": [-1.5, 15, -15.5], + "cubes": [ + {"origin": [-2, 15, -16], "size": [1, 4, 1], "uv": [56, 0]}, + {"origin": [-2, 15, -16], "size": [1, 4, 1], "inflate": 0.1, "uv": [56, 5]} + ] + }, + { + "name": "leftAntenna", + "parent": "head", + "pivot": [1.5, 4.91667, -15.5], + "cubes": [ + {"origin": [1.5, 5, -16], "size": [0, 11, 1], "uv": [61, 0], "mirror": true} + ] + }, + { + "name": "leftAntenna2", + "parent": "leftAntenna", + "pivot": [1.5, 15, -15.5], + "cubes": [ + {"origin": [1, 15, -16], "size": [1, 4, 1], "uv": [56, 0], "mirror": true}, + {"origin": [1, 15, -16], "size": [1, 4, 1], "inflate": 0.1, "uv": [56, 5], "mirror": true} + ] + }, + { + "name": "rightWing", + "parent": "body", + "pivot": [-3, 10, -1.5], + "cubes": [ + {"origin": [-29, 10.3, -6], "size": [26, 0, 8], "uv": [8, 44]} + ] + }, + { + "name": "leftWing", + "parent": "body", + "pivot": [3, 10, -1.5], + "cubes": [ + {"origin": [3, 10.3, -6], "size": [26, 0, 8], "uv": [8, 44], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/lang/en_us.json b/common/src/main/resources/assets/antarchy/lang/en_us.json new file mode 100644 index 00000000..b76b8891 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -0,0 +1,658 @@ +{ + "block.antarchy.duplicator_log": "Duplicator Log", + "block.antarchy.ouranwood_log": "Ouranwood Log", + "block.antarchy.ouranwood_wood": "Ouranwood Wood", + "block.antarchy.mossy_ouranwood_log": "Mossy Ouranwood Log", + "block.antarchy.mossy_ouranwood_wood": "Mossy Ouranwood Wood", + "block.antarchy.stripped_ouranwood_log": "Stripped Ouranwood Log", + "block.antarchy.stripped_ouranwood_wood": "Stripped Ouranwood Wood", + "block.antarchy.ouranwood_planks": "Ouranwood Planks", + "block.antarchy.ouranwood_stairs": "Ouranwood Stairs", + "block.antarchy.ouranwood_slab": "Ouranwood Slab", + "block.antarchy.ouranwood_fence": "Ouranwood Fence", + "block.antarchy.ouranwood_fence_gate": "Ouranwood Fence Gate", + "block.antarchy.ouranwood_door": "Ouranwood Door", + "block.antarchy.ouranwood_trapdoor": "Ouranwood Trapdoor", + "block.antarchy.ouranwood_pressure_plate": "Ouranwood Pressure Plate", + "block.antarchy.ouranwood_button": "Ouranwood Button", + "block.antarchy.ouranwood_leaves": "Ouranwood Leaves", + "block.antarchy.ouranwood_acorn": "Ouranwood Acorn", + "block.antarchy.ouranwood_sign": "Ouranwood Sign", + "block.antarchy.ouranwood_hanging_sign": "Ouranwood Hanging Sign", + "block.antarchy.orange_milkweed": "Orange Milkweed", + "block.antarchy.pink_milkweed": "Pink Milkweed", + "block.antarchy.hushweed": "Hushweed", + "block.antarchy.umbral_moss_block": "Umbral Moss Block", + "block.antarchy.umbral_moss_carpet": "Umbral Moss Carpet", + "block.antarchy.duplicator_sapling": "Duplicator Sapling", + "block.antarchy.duct_tape": "Duct Tape", + "block.antarchy.infested_rooted_dirt": "Infested Rooted Dirt", + "block.antarchy.infested_coarse_dirt": "Infested Coarse Dirt", + "block.antarchy.nyxite": "Nyxite", + "block.antarchy.polished_nyxite": "Polished Nyxite", + "block.antarchy.chiseled_nyxite": "Chiseled Nyxite", + "block.antarchy.nyxite_bricks": "Nyxite Bricks", + "block.antarchy.nyxite_stairs": "Nyxite Stairs", + "block.antarchy.nyxite_slab": "Nyxite Slab", + "block.antarchy.nyxite_wall": "Nyxite Wall", + "block.antarchy.polished_nyxite_stairs": "Polished Nyxite Stairs", + "block.antarchy.polished_nyxite_slab": "Polished Nyxite Slab", + "block.antarchy.polished_nyxite_wall": "Polished Nyxite Wall", + "block.antarchy.nyxite_brick_stairs": "Nyxite Brick Stairs", + "block.antarchy.nyxite_brick_slab": "Nyxite Brick Slab", + "block.antarchy.nyxite_brick_wall": "Nyxite Brick Wall", + "block.antarchy.pale_nyxite": "Pale Nyxite", + "block.antarchy.nyxite_spike": "Nyxite Spike", + "block.antarchy.potent_nyxite": "Potent Nyxite", + "block.antarchy.triffid_goo_block": "Triffid Goo Block", + "block.antarchy.cloud_block": "Cloud Block", + "block.antarchy.antimetal": "Antimetal", + "block.antarchy.polished_antimetal": "Polished Antimetal", + "block.antarchy.antimetal_scaffolding": "Antimetal Scaffolding", + "block.antarchy.cornea_stalk": "Cornea Stalk", + "block.antarchy.dream_torch": "Dream Torch", + "block.antarchy.dream_wall_torch": "Dream Wall Torch", + "block.antarchy.dream_lantern": "Dream Lantern", + "block.antarchy.dream_campfire": "Dream Campfire", + "block.antarchy.dream_fire": "Dream Fire", + "block.antarchy.dream_fire_ceiling": "Dream Fire", + "block.antarchy.budding_blood_crystal": "Budding Blood Crystal", + "block.antarchy.blood_crystal_block": "Blood Crystal Block", + "block.antarchy.small_blood_crystal_bud": "Small Blood Crystal Bud", + "block.antarchy.medium_blood_crystal_bud": "Medium Blood Crystal Bud", + "block.antarchy.large_blood_crystal_bud": "Large Blood Crystal Bud", + "block.antarchy.blood_crystal_cluster": "Blood Crystal Cluster", + "block.antarchy.dream_sand": "Dream Sand", + "block.antarchy.dream_sandstone": "Dream Sandstone", + "block.antarchy.chiseled_dream_sandstone": "Chiseled Dream Sandstone", + "block.antarchy.cut_dream_sandstone": "Cut Dream Sandstone", + "block.antarchy.smooth_dream_sandstone": "Smooth Dream Sandstone", + "block.antarchy.dream_sandstone_stairs": "Dream Sandstone Stairs", + "block.antarchy.dream_sandstone_slab": "Dream Sandstone Slab", + "block.antarchy.dream_sandstone_wall": "Dream Sandstone Wall", + "block.antarchy.smooth_dream_sandstone_stairs": "Smooth Dream Sandstone Stairs", + "block.antarchy.smooth_dream_sandstone_slab": "Smooth Dream Sandstone Slab", + "block.antarchy.cut_dream_sandstone_slab": "Cut Dream Sandstone Slab", + "block.antarchy.bed_bug_egg": "Bed Bug Egg", + "block.antarchy.wasp_nest": "Wasp Nest", + "block.antarchy.red_ant_nest": "Red Ant Nest", + "block.antarchy.brown_ant_nest": "Brown Ant Nest", + "block.antarchy.rainbow_ant_nest": "Rainbow Ant Nest", + "block.antarchy.termite_nest": "Termite Nest", + "block.antarchy.uranium_ore": "Uranium Ore", + "block.antarchy.deepslate_uranium_ore": "Deepslate Uranium Ore", + "block.antarchy.titanium_ore": "Titanium Ore", + "block.antarchy.deepslate_titanium_ore": "Deepslate Titanium Ore", + "block.antarchy.uranium_block": "Block of Uranium", + "block.antarchy.titanium_block": "Block of Titanium", + "block.antarchy.raw_uranium_block": "Block of Raw Uranium", + "block.antarchy.raw_titanium_block": "Block of Raw Titanium", + "block.antarchy.cut_uranium": "Cut Uranium", + "block.antarchy.cut_titanium": "Cut Titanium", + "block.antarchy.cut_uranium_slab": "Cut Uranium Slab", + "block.antarchy.cut_titanium_slab": "Cut Titanium Slab", + "block.antarchy.cut_uranium_stairs": "Cut Uranium Stairs", + "block.antarchy.cut_titanium_stairs": "Cut Titanium Stairs", + "block.antarchy.chiseled_uranium": "Chiseled Uranium", + "block.antarchy.chiseled_titanium": "Chiseled Titanium", + "block.antarchy.uranium_bulb": "Uranium Bulb", + "block.antarchy.titanium_bulb": "Titanium Bulb", + "block.antarchy.uranium_door": "Uranium Door", + "block.antarchy.titanium_door": "Titanium Door", + "block.antarchy.uranium_trapdoor": "Uranium Trapdoor", + "block.antarchy.titanium_trapdoor": "Titanium Trapdoor", + "block.antarchy.uranium_bars": "Uranium Bars", + "block.antarchy.titanium_bars": "Titanium Bars", + "tooltip.antarchy.signal_saving_bulb": "Toggles on/off. Has light level equal to the signal strength stored on it.", + "block.antarchy.ichor": "Ichor", + "block.antarchy.antiwater": "Antiwater", + "entity.antarchy.apple_cow": "Apple Cow", + "entity.antarchy.golden_apple_cow": "Golden Apple Cow", + "entity.antarchy.enchanted_golden_apple_cow": "Enchanted Golden Apple Cow", + "entity.antarchy.honeyed_apple_cow": "Honeyed Apple Cow", + "entity.antarchy.easter_bunny": "Easter Bunny", + "entity.antarchy.flying_squirrel": "Flying Squirrel", + "entity.antarchy.caterpillar": "Caterpillar", + "entity.antarchy.butterfly": "Butterfly", + "entity.antarchy.brutalfly": "Brutalfly", + "entity.antarchy.red_ant": "Red Ant", + "entity.antarchy.brown_ant": "Brown Ant", + "entity.antarchy.rainbow_ant": "Rainbow Ant", + "entity.antarchy.termite": "Termite", + "entity.antarchy.diamond_minecart": "The Diamond Minecart", + "entity.antarchy.dr_trayaurus": "Dr. Trayaurus", + "entity.antarchy.cloud_shark": "Cloud Shark", + "entity.antarchy.kraken": "The Kraken", + "entity.antarchy.missile_squid": "Missile Squid", + "entity.antarchy.nightmare": "Nightmare", + "entity.antarchy.bed_bug": "Bed Bug", + "entity.antarchy.wasp": "Wasp", + "entity.antarchy.bomber": "Bomber", + "entity.antarchy.moleworm": "Moleworm", + "entity.antarchy.molevore": "Molevore", + "entity.antarchy.mantis": "Mantis", + "entity.antarchy.triffid": "Triffid", + "subtitles.antarchy.mantis_ambient": "Mantis clicks", + "subtitles.antarchy.mantis_hurt": "Mantis screeches", + "subtitles.antarchy.mantis_attack": "Mantis snaps", + "subtitles.antarchy.mantis_fly_loop": "Mantis wings buzz", + "item.antarchy.big_bertha": "Big Bertha", + "item.antarchy.wasp_nest": "Wasp Nest", + "item.antarchy.wasp_spawn_egg": "Wasp Spawn Egg", + "item.antarchy.bomber_spawn_egg": "Bomber Spawn Egg", + "item.antarchy.big_bertha_blade": "Big Bertha Blade", + "item.antarchy.big_bertha_handle": "Big Bertha Handle", + "item.antarchy.big_bertha_hilt": "Big Bertha Hilt", + "item.antarchy.battle_axe": "Battle Axe", + "item.antarchy.cloud_shark_fin": "Cloud Shark Fin", + "item.antarchy.cloud_shark_fin_soup": "Cloud Shark Fin Soup", + "tooltip.antarchy.cloud_shark_fin_soup": "Grants Strength and Slow Falling.", + "item.antarchy.kraken_tooth": "Kraken Tooth", + "item.antarchy.basilisk_fang": "Basilisk Fang", + "item.antarchy.basilisk_dagger": "Basilisk Dagger", + "item.antarchy.blood_crystal_block": "Blood Crystal Block", + "item.antarchy.small_blood_crystal_bud": "Small Blood Crystal Bud", + "item.antarchy.medium_blood_crystal_bud": "Medium Blood Crystal Bud", + "item.antarchy.large_blood_crystal_bud": "Large Blood Crystal Bud", + "item.antarchy.blood_crystal_cluster": "Blood Crystal Cluster", + "item.antarchy.dream_sand": "Dream Sand", + "item.antarchy.dream_sandstone": "Dream Sandstone", + "item.antarchy.chiseled_dream_sandstone": "Chiseled Dream Sandstone", + "item.antarchy.cut_dream_sandstone": "Cut Dream Sandstone", + "item.antarchy.smooth_dream_sandstone": "Smooth Dream Sandstone", + "item.antarchy.dream_sandstone_stairs": "Dream Sandstone Stairs", + "item.antarchy.dream_sandstone_slab": "Dream Sandstone Slab", + "item.antarchy.dream_sandstone_wall": "Dream Sandstone Wall", + "item.antarchy.smooth_dream_sandstone_stairs": "Smooth Dream Sandstone Stairs", + "item.antarchy.smooth_dream_sandstone_slab": "Smooth Dream Sandstone Slab", + "item.antarchy.cut_dream_sandstone_slab": "Cut Dream Sandstone Slab", + "item.antarchy.dream_torch": "Dream Torch", + "item.antarchy.dream_lantern": "Dream Lantern", + "item.antarchy.dream_campfire": "Dream Campfire", + "item.antarchy.nightmare_scale": "Nightmare Scale", + "item.antarchy.nightmare_helmet": "Nightmare Helmet", + "item.antarchy.nightmare_chestplate": "Nightmare Chestplate", + "item.antarchy.nightmare_leggings": "Nightmare Leggings", + "item.antarchy.nightmare_boots": "Nightmare Boots", + "item.antarchy.nightmare_sword": "Nightmare Sword", + "tooltip.antarchy.nightmare_armor_double_damage": "%s%% chance to deal double damage", + "tooltip.antarchy.nightmare_armor_set_bonus": "Full Set: Wither & Dread immunity", + "tooltip.antarchy.nightmare_sword": "Deals more damage as your health drops.", + "attribute.antarchy.double_damage_chance": "Double Damage Chance", + "attribute.antarchy.bloodglass_max_hearts": "Max Bloodglass Hearts", + "item.antarchy.molevore_nose": "Molevore Nose", + "item.antarchy.moleworm": "Moleworm", + "item.antarchy.triffid_spawn_egg": "Triffid Spawn Egg", + "item.antarchy.infested_rooted_dirt": "Infested Rooted Dirt", + "item.antarchy.infested_coarse_dirt": "Infested Coarse Dirt", + "item.antarchy.pale_nyxite": "Pale Nyxite", + "item.antarchy.polished_nyxite": "Polished Nyxite", + "item.antarchy.chiseled_nyxite": "Chiseled Nyxite", + "item.antarchy.nyxite_bricks": "Nyxite Bricks", + "item.antarchy.nyxite_stairs": "Nyxite Stairs", + "item.antarchy.nyxite_slab": "Nyxite Slab", + "item.antarchy.nyxite_wall": "Nyxite Wall", + "item.antarchy.polished_nyxite_stairs": "Polished Nyxite Stairs", + "item.antarchy.polished_nyxite_slab": "Polished Nyxite Slab", + "item.antarchy.polished_nyxite_wall": "Polished Nyxite Wall", + "item.antarchy.nyxite_brick_stairs": "Nyxite Brick Stairs", + "item.antarchy.nyxite_brick_slab": "Nyxite Brick Slab", + "item.antarchy.nyxite_brick_wall": "Nyxite Brick Wall", + "item.antarchy.potent_nyxite": "Potent Nyxite", + "item.antarchy.antimetal": "Antimetal", + "item.antarchy.polished_antimetal": "Polished Antimetal", + "item.antarchy.antimetal_scaffolding": "Antimetal Scaffolding", + "item.antarchy.ouranwood_acorn": "Ouranwood Acorn", + "item.antarchy.ouranwood_boat": "Ouranwood Boat", + "item.antarchy.ouranwood_chest_boat": "Ouranwood Chest Boat", + "item.antarchy.orange_milkweed": "Orange Milkweed", + "item.antarchy.pink_milkweed": "Pink Milkweed", + "item.antarchy.hushweed": "Hushweed", + "item.antarchy.umbral_moss_block": "Umbral Moss Block", + "item.antarchy.umbral_moss_carpet": "Umbral Moss Carpet", + "item.antarchy.torchflower_bush": "Torchflower Bush", + "block.antarchy.torchflower_bush": "Torchflower Bush", + "item.antarchy.mud_pie": "Mud Pie", + "item.antarchy.duct_tape": "Duct Tape", + "item.antarchy.duct_tape.tooltip": "Place down and right-click to repair tools", + "item.antarchy.rainbow_sugar": "Rainbow Sugar", + "item.antarchy.uranium_nugget": "Uranium Nugget", + "item.antarchy.titanium_nugget": "Titanium Nugget", + "item.antarchy.raw_uranium_scrap": "Raw Uranium Scrap", + "item.antarchy.raw_titanium_scrap": "Raw Titanium Scrap", + "item.antarchy.raw_uranium": "Raw Uranium", + "item.antarchy.raw_titanium": "Raw Titanium", + "item.antarchy.uranium_ingot": "Uranium Ingot", + "item.antarchy.titanium_ingot": "Titanium Ingot", + "item.antarchy.blood_crystal_shard": "Blood Crystal Shard", + "item.antarchy.blood_crystal_apple": "Blood Crystal Apple", + "item.antarchy.blood_crystal_katana": "Blood Crystal Katana", + "item.antarchy.blood_crystal_helmet": "Blood Crystal Helmet", + "item.antarchy.blood_crystal_chestplate": "Blood Crystal Chestplate", + "item.antarchy.blood_crystal_leggings": "Blood Crystal Leggings", + "item.antarchy.blood_crystal_boots": "Blood Crystal Boots", + "item.antarchy.blood_crystal_armor.tooltip": "Grants a Bloodglass Heart that blocks one incoming hit, shatters, then recharges.", + "item.antarchy.blood_crystal_boots.tooltip2": "Cancels fall damage when falling upward while gravity is inverted.", + "item.antarchy.blood_crystal_apple.tooltip": "Grants Bloodglass Ward, providing temporary Bloodglass Hearts that recharge while the effect lasts.", + "tooltip.antarchy.blood_crystal_katana.launch": "Launches you forward on hit.", + "tooltip.antarchy.blood_crystal_katana.trail": "Leaves a crimson trail behind you.", + "item.antarchy.mantis_claw": "Mantis Claw", + "item.antarchy.jumpy_bug_leg": "Jumpy Bug Leg", + "item.antarchy.brutalfly_wing": "Brutalfly Wing", + "item.antarchy.brutalfly_elytra": "Brutalfly Elytra", + "tooltip.antarchy.brutalfly_elytra.flap": "While flying, hold %s to flap your wings", + "item.antarchy.cornea_ear": "Ear of Cornea", + "item.antarchy.primordial_scute": "Primordial Scute", + "item.antarchy.triffid_goo": "Triffid Goo", + "item.antarchy.triffid_goo_block": "Triffid Goo Block", + "tooltip.antarchy.triffid_goo_block": "At high velocity bounce up, otherwise sink through.", + "item.antarchy.cloud_bucket": "Cloud Bucket", + "tooltip.antarchy.cloud_bucket.midair": "Can be placed midair", + "item.antarchy.scorpion_whip": "Emperor Scorpion Whip", + "tooltip.antarchy.scorpion_whip.lash": "Lashes prey from afar and embeds a venomous tether.", + "tooltip.antarchy.scorpion_whip.reel": "Right-click to reel tethered prey.", + "tooltip.antarchy.scorpion_whip.snap": "Left-click tethered prey again to snap the stinger free.", + "item.antarchy.fallen_king_crown": "Fallen King's Crown", + "tooltip.antarchy.fallen_king_crown.hero": "Grants Hero of the Village when you slay hostile mobs", + "item.antarchy.vortex_eye": "Vortex Eye", + "item.antarchy.ultimate_helmet": "Ultimate Helmet", + "item.antarchy.ultimate_chestplate": "Ultimate Chestplate", + "item.antarchy.ultimate_leggings": "Ultimate Leggings", + "item.antarchy.ultimate_boots": "Ultimate Boots", + "item.antarchy.ultimate_sword": "Ultimate Sword", + "item.antarchy.ultimate_pickaxe": "Ultimate Pickaxe", + "item.antarchy.ultimate_axe": "Ultimate Axe", + "item.antarchy.ultimate_shovel": "Ultimate Shovel", + "item.antarchy.ultimate_hoe": "Ultimate Hoe", + "item.antarchy.ultimate_bow": "Ultimate Bow", + "item.antarchy.ultimate_crossbow": "Ultimate Crossbow", + "item.antarchy.ultimate_crossbow.capacity": "Loads up to 16 arrows at once", + "item.antarchy.ultimate_crossbow.arrows_remaining": "%1$s %2$s loaded", + "item.antarchy.ultimate_mace": "Ultimate Mace", + "item.antarchy.moggles": "Moggles", + "itemGroup.antarchy.antarchy": "Antarchy", + "item.antarchy.ichor_bucket": "Ichor Bucket", + "item.antarchy.antiwater_bucket": "Antiwater Bucket", + "item.antarchy.reverie_bottle": "Bottle of Reverie", + "item.antarchy.squidzooka": "Squidzooka", + "item.antarchy.shrink_ray": "Shrink Ray", + "item.antarchy.growth_ray": "Growth Ray", + "tooltip.antarchy.shrink_ray": "Permanently shrinks targets. Hold down to charge.", + "tooltip.antarchy.growth_ray": "Permanently Grows Targets. Hold down to charge.", + "tooltip.antarchy.reverie_bottle.capture": "Right click a Reverie with a glass bottle to store it.", + "tooltip.antarchy.reverie_bottle.release": "Right click to release the Reverie.", + "item.antarchy.gravity_gun": "Gravity Gun", + "item.antarchy.diamond_minecart": "The Diamond Minecart", + "item.antarchy.cogwheel_pet": "Cogwheel Pet", + "item.antarchy.fire_dragon_pet": "Fire Dragon Pet", + "item.antarchy.ice_dragon_pet": "Ice Dragon Pet", + "item.antarchy.lightning_dragon_pet": "Lightning Dragon Pet", + "item.antarchy.gorgon_pet": "Gorgon Pet", + "item.antarchy.apple_cow_spawn_egg": "Apple Cow Spawn Egg", + "item.antarchy.red_ant_spawn_egg": "Red Ant Spawn Egg", + "item.antarchy.brown_ant_spawn_egg": "Brown Ant Spawn Egg", + "item.antarchy.rainbow_ant_spawn_egg": "Rainbow Ant Spawn Egg", + "item.antarchy.termite_spawn_egg": "Termite Spawn Egg", + "item.antarchy.golden_apple_cow_spawn_egg": "Golden Apple Cow Spawn Egg", + "item.antarchy.enchanted_golden_apple_cow_spawn_egg": "Enchanted Golden Apple Cow Spawn Egg", + "item.antarchy.honeyed_apple_cow_spawn_egg": "Honeyed Apple Cow Spawn Egg", + "item.antarchy.dr_trayaurus_spawn_egg": "Dr. Trayaurus Spawn Egg", + "item.antarchy.easter_bunny_spawn_egg": "Easter Bunny Spawn Egg", + "item.antarchy.flying_squirrel_spawn_egg": "Flying Squirrel Spawn Egg", + "item.antarchy.caterpillar_spawn_egg": "Caterpillar Spawn Egg", + "item.antarchy.butterfly_spawn_egg": "Butterfly Spawn Egg", + "item.antarchy.brutalfly_spawn_egg": "Brutalfly Spawn Egg", + "item.antarchy.cloud_shark_spawn_egg": "Cloud Shark Spawn Egg", + "item.antarchy.kraken_spawn_egg": "Uh, no. Don't.", + "item.antarchy.missile_squid_spawn_egg": "Missile Squid Spawn Egg", + "item.antarchy.nightmare_spawn_egg": "Nightmare Spawn Egg", + "item.antarchy.bed_bug_spawn_egg": "Bed Bug Spawn Egg", + "item.antarchy.moleworm_spawn_egg": "Moleworm Spawn Egg", + "item.antarchy.molevore_spawn_egg": "Molevore Spawn Egg", + "item.antarchy.reverie_spawn_egg": "Reverie Spawn Egg", + "item.antarchy.mantis_spawn_egg": "Mantis Spawn Egg", + "biome.antarchy.moleworm_caves": "Moleworm Caves", + "biome.antarchy.butterfly_fields": "Butterfly Fields", + "biome.antarchy.torchflower_fields": "Torchflower Fields", + "biome.antarchy.ouranwood_forest": "Ouranwood Forest", + "message.antarchy.brown_ant_activated": "The brown ant is ready to open its destination.", + "message.antarchy.brown_ant_needs_reagent": "This brown ant needs a reagent before it can open its destination.", + "message.antarchy.rainbow_ant_activated": "The rainbow ant hums with a new Infinity destination.", + "message.antarchy.rainbow_ant_activated_inherited": "The rainbow ant hums with an inherited Infinity destination.", + "message.antarchy.rainbow_ant_activated_inherited_existing": "The rainbow ant reconnects to an inherited Infinity destination.", + "message.antarchy.rainbow_ant_failed_dimension_create": "Failed to create dimension. This likely means something is wrong in your infinity config. Restart/Relog and try again.", + "message.antarchy.rainbow_ant_infinity_missing": "Infinity must be installed for rainbow ant dimensions to work.", + "message.antarchy.rainbow_ant_needs_reagent": "This rainbow ant needs a reagent before it can open a dimension.", + "message.antarchy.red_ant_activated": "The red ant is ready to open its destination.", + "message.antarchy.red_ant_needs_reagent": "This red ant needs a reagent before it can open its destination.", + "message.antarchy.termite_activated": "The termite is ready to open its destination.", + "message.antarchy.termite_needs_reagent": "This termite needs a reagent before it can open its destination.", + "message.antarchy.big_bertha.mode": "Big Bertha Mode: %s", + "message.antarchy.big_bertha.mode.basilisk": "Basilisk", + "message.antarchy.big_bertha.mode.lucid": "Lucid", + "message.antarchy.big_bertha.mode.nightmare": "Nightmare", + "message.antarchy.big_bertha.mode.kraken": "Kraken", + "message.antarchy.big_bertha.mode.molevore": "Molevore", + "message.antarchy.ultimate_tool.mode_3x3": "Switched to 3x3 Mining", + "message.antarchy.ultimate_tool.mode_default": "Switched to Default Mining", + "advancements.antarchy.hey_listen.title": "Hey Listen", + "advancements.antarchy.hey_listen.description": "A Reverie has joined you.", + "advancements.antarchy.very_hungry_caterpillar.title": "Very Hungry Caterpillar", + "advancements.antarchy.very_hungry_caterpillar.description": "Help a caterpillar grow.", + "effect.antarchy.dread": "Dread", + "effect.antarchy.paralyzed": "Paralyzed", + "effect.antarchy.inverted": "Inverted", + "effect.antarchy.shrinking": "Shrinking", + "effect.antarchy.growth": "Growth", + "effect.antarchy.bloodglass_ward": "Bloodglass Ward", + "death.attack.triffid_mauling": "%1$s was mauled to death by a plant", + "death.attack.triffid_mauling.player": "%1$s was mauled to death by a plant", + "death.attack.triffid_swallow": "%1$s was swallowed by a triffid", + "death.attack.triffid_swallow.player": "%1$s was swallowed by a triffid", + "potion.antarchy.haste": "Haste Potion", + "potion.antarchy.strong_haste": "Strong Haste Potion", + "tooltip.antarchy.big_bertha.mode": "Mode: %s", + "tooltip.antarchy.big_bertha.toggle_mode": "Shift-right-click to cycle boss modes.", + "tooltip.antarchy.big_bertha.mode.basilisk": "Right-click paralyzes a target. Hits inflict poison and slow.", + "tooltip.antarchy.big_bertha.mode.lucid": "Hits invert targets for a few seconds. Hits deal more damage while you are inverted.", + "tooltip.antarchy.big_bertha.mode.nightmare": "Players suffer Dread; hits inflict weakness.", + "tooltip.antarchy.big_bertha.mode.kraken": "Hits slam targets back and call lightning.", + "tooltip.antarchy.big_bertha.mode.molevore": "Right-click to spin forward and drill through Molevore blocks.", + "tooltip.antarchy.ultimate_tools_3x3": "Shift-right-click to toggle 3x3 Mining.", + "tooltip.antarchy.moggles.reveal": "Gives night vision and points to nearby caves.", + "tooltip.antarchy.moggles.underground": "Works only while you have no sky access.", + "tooltip.antarchy.cornea_ear.vision": "Grants Night Vision for %s seconds.", + "tooltip.antarchy.mob_coming_soon": "Mob Coming Soon!", + "tooltip.antarchy.gravity_gun.primary": "Left-click: blast nearby entities or throw the held target.", + "tooltip.antarchy.gravity_gun.secondary": "Right-click: pull in an entity or a valid block.", + "tooltip.antarchy.gravity_gun.scroll": "Hold Ctrl and scroll to move the held target closer or farther away.", + "tooltip.antarchy.gravity_gun.blacklist": "Does not affect blacklisted blocks or entities.", + "tooltip.antarchy.antimetal_inversion": "Inverts entites directly below it", + "tooltip.antarchy.diamond_minecart.forward": "Will be implemented later.", + "tooltip.antarchy.diamond_minecart.rails": " ", + "tooltip.antarchy.rainbow_sugar": "Activates Rainbow Ant Dimensions. Eat while in one to return home.", + "advancements.antarchy.visit_elythia.title": "InterdimANTsional", + "advancements.antarchy.visit_elythia.description": "Use a brown ant to reach Elythia.", + "advancements.antarchy.visit_thoraxis.title": "Ant-ger Management", + "advancements.antarchy.visit_thoraxis.description": "Use a red ant to reach Thoraxis.", + "advancements.antarchy.fallen_kingdom_castle.title": "I Used to Rule the World...", + "advancements.antarchy.fallen_kingdom_castle.description": "Discover the Fallen Kingdom Castle.", + "advancements.antarchy.fallen_king_crown.title": "Chunks would load when I gave the word...", + "advancements.antarchy.fallen_king_crown.description": "Obtain the Fallen King's Crown.", + "advancements.antarchy.visit_cavaryn.title": "You will be Termite-ated", + "advancements.antarchy.visit_cavaryn.description": "Use a termite to reach Cavaryn.", + "advancements.antarchy.the_lab.title": "Hello Everyone, Dan Here!", + "advancements.antarchy.the_lab.description": "Discover Dr. Trayaurus' lab.", + "advancements.antarchy.sweater_dreams.title": "Sweater Dreams", + "advancements.antarchy.sweater_dreams.description": "Defeat the Nightmare.", + "advancements.antarchy.stone_cold.title": "Stone Cold", + "advancements.antarchy.stone_cold.description": "Defeat a Basilisk.", + "advancements.antarchy.moley_poley.title": "Moley Poley", + "advancements.antarchy.moley_poley.description": "Defeat a Molevore.", + "advancements.antarchy.lucid_dreams.title": "Lucid Dreams", + "advancements.antarchy.lucid_dreams.description": "Defeat a Lucid.", + "advancements.antarchy.davy_jones_locker.title": "Davy Jones' Locker", + "advancements.antarchy.davy_jones_locker.description": "Defeat the Kraken.", + "advancements.antarchy.shark_weak.title": "When Sharks Fly", + "advancements.antarchy.shark_weak.description": "Defeat a Cloud Shark.", + "advancements.antarchy.dont_let_the_bed_bugs_bite.title": "Don't Let the Bed Bugs Bite", + "advancements.antarchy.dont_let_the_bed_bugs_bite.description": "Defeat a Bed Bug.", + "advancements.antarchy.soups_up.title": "Soups Up", + "advancements.antarchy.soups_up.description": "Eat Cloud Shark Fin Soup.", + "advancements.antarchy.in_the_upside_down.title": "In the Upside Down", + "advancements.antarchy.in_the_upside_down.description": "Become inverted for the first time.", + "advancements.antarchy.ultimate_armor.title": "Ultimate Protection", + "advancements.antarchy.ultimate_armor.description": "Collect the full set of Ultimate Armor.", + "advancements.antarchy.ultimate_bow.title": "Bowhemian Rhapsody", + "advancements.antarchy.ultimate_bow.description": "Obtain an Ultimate Bow.", + "advancements.antarchy.brutalfly.title": "Float Like a Brutalfly, Sting Like a Bee", + "advancements.antarchy.brutalfly.description": "Obtain a Brutalfly Elytra.", + "advancements.antarchy.now_watch_me_whip.title": "Now Watch Me Whip", + "advancements.antarchy.now_watch_me_whip.description": "Now watch me nae nae", + "advancements.antarchy.kill_molevore.title": "Moley Poley", + "advancements.antarchy.kill_molevore.description": "Kill a Molevore.", + "death.attack.bed_bug_bite": "%1$s got bit by the bed bugs", + "death.attack.bed_bug_bite.player": "%1$s got bit by the bed bugs while fighting %2$s", + "message.antarchy.dread_too_scared_to_sleep": "You are too scared to sleep.", + "death.attack.kraken_mauling": "%1$s was dragged under by the Kraken", + "death.attack.kraken_mauling.player": "%1$s was dragged under by the Kraken while fighting %2$s", + "death.attack.kraken_lightning": "%1$s was struck down by the Kraken's storm", + "death.attack.kraken_lightning.player": "%1$s was struck down by the Kraken's storm while fighting %2$s", + "death.attack.nightmare_mauling": "%1$s was devoured by the Nightmare", + "death.attack.nightmare_mauling.player": "%1$s was devoured by the Nightmare while fighting %2$s", + "death.attack.basilisk_bite": "%1$s was swallowed by a Basilisk", + "death.attack.basilisk_bite.player": "%1$s was swallowed by a Basilisk while fighting %2$s", + "death.attack.emperor_scorpion_sting": "%1$s was stung by the Emperor Scorpion", + "death.attack.emperor_scorpion_sting.player": "%1$s was stung by the Emperor Scorpion while fighting %2$s", + "death.attack.cornea_stalk_prick": "%1$s was pricked to death by a Cornea Stalk", + "entity.antarchy.lucid": "Lucid", + "item.antarchy.lucid_spawn_egg": "Lucid Spawn Egg", + "item.antarchy.lucid_eye": "Lucid Eye", + "entity.antarchy.scorpion": "Scorpion", + "item.antarchy.scorpion_spawn_egg": "Scorpion Spawn Egg", + "entity.antarchy.basilisk": "Basilisk", + "item.antarchy.basilisk_spawn_egg": "Basilisk Spawn Egg", + "entity.antarchy.emperor_scorpion": "Emperor Scorpion", + "item.antarchy.emperor_scorpion_spawn_egg": "Emperor Scorpion Spawn Egg", + "item.antarchy.emperor_scorpion_stinger": "Emperor Scorpion Stinger", + "item.antarchy.lucid_pearl": "Lucid Pearl", + "tooltip.antarchy.lucid_pearl": "Throws an inverted-gravity projectile.", + "tooltip.antarchy.lucid_pearl.detail": "Teleports you to where it lands and applies Inverted.", + "subtitles.antarchy.squidzooka_fire": "Squidzooka fires", + "subtitles.antarchy.shrink_ray": "Shrink Ray fires", + "subtitles.antarchy.growth_ray": "Growth Ray fires", + "subtitles.antarchy.size_ray_charge": "Size Ray charges", + "subtitles.antarchy.ant_ambient": "Ants chirp", + "subtitles.antarchy.ant_idle": "Ants idle", + "subtitles.antarchy.ant_hurt": "Ants hurt", + "subtitles.antarchy.ant_bite": "Ants bite", + "subtitles.antarchy.ant_gather": "Ants gather", + "subtitles.antarchy.ant_nest": "Ant nest rustles", + "subtitles.antarchy.cloud_shark_bite": "Cloud Shark bites", + "subtitles.antarchy.cloud_shark_idle": "Cloud Shark idles", + "subtitles.antarchy.cloud_shark_hurt": "Cloud Shark hurts", + "subtitles.antarchy.cloud_shark_death": "Cloud Shark dies", + "subtitles.antarchy.cloud_shark_fly": "Cloud Shark flies", + "subtitles.antarchy.caterpillar_idle": "Caterpillar idles", + "subtitles.antarchy.caterpillar_hurt": "Caterpillar hurts", + "subtitles.antarchy.caterpillar_crawl": "Caterpillar crawls", + "subtitles.antarchy.butterfly_hurt": "Butterfly hurts", + "subtitles.antarchy.brutalfly_idle": "Brutalfly idles", + "subtitles.antarchy.brutalfly_death": "Brutalfly dies", + "subtitles.antarchy.thoraxis_nightmare_wastes_ambient": "Nightmare Wastes hums", + "subtitles.antarchy.thoraxis_nightmare_wastes_additions": "Nightmare Wastes stirs", + "subtitles.antarchy.thoraxis_nightmare_wastes_mood": "Nightmare Wastes murmurs", + "subtitles.antarchy.thoraxis_dream_dunes_ambient": "Dream Dunes whisper", + "subtitles.antarchy.thoraxis_dream_dunes_additions": "Dream Dunes rustle", + "subtitles.antarchy.thoraxis_dream_dunes_mood": "Dream Dunes sigh", + "subtitles.antarchy.thoraxis_lucid_pools_ambient": "Lucid Pools hum", + "subtitles.antarchy.thoraxis_lucid_pools_additions": "Lucid Pools curse", + "subtitles.antarchy.thoraxis_lucid_pools_mood": "Lucid Pools murmur", + "subtitles.antarchy.lucid_ambient": "Lucid hums", + "subtitles.antarchy.lucid_flying": "Lucid flutters", + "subtitles.antarchy.lucid_attack": "Lucid attacks", + "subtitles.antarchy.lucid_bolt": "Lucid bolt fires", + "subtitles.antarchy.lucid_hurt": "Lucid hurts", + "subtitles.antarchy.lucid_death": "Lucid dies", + "subtitles.antarchy.reverie_idle": "Reverie drifts", + "subtitles.antarchy.reverie_hurt": "Reverie hurts", + "subtitles.antarchy.reverie_worry": "Reverie worries", + "subtitles.antarchy.reverie_save": "Reverie saves you", + "subtitles.antarchy.reverie_join_player": "Reverie joins you", + "subtitles.antarchy.reverie_alert": "Reverie alerts you", + "subtitles.antarchy.flying_squirrel_idle": "Flying squirrel chirps", + "subtitles.antarchy.flying_squirrel_beg": "Flying squirrel begs for food", + "subtitles.antarchy.flying_squirrel_nut": "Flying squirrel eats", + "subtitles.antarchy.flying_squirrel_glide_loop": "Flying squirrel glides", + "subtitles.antarchy.flying_squirrel_hurt": "Flying squirrel hurts", + "subtitles.antarchy.flying_squirrel_death": "Flying squirrel dies", + "subtitles.antarchy.nightmare_idle": "Nightmare snarls", + "subtitles.antarchy.nightmare_hurt": "Nightmare hurts", + "subtitles.antarchy.nightmare_roar": "Nightmare roars", + "subtitles.antarchy.nightmare_death": "Nightmare dies", + "subtitles.antarchy.nightmare_bite": "Nightmare bites", + "subtitles.antarchy.nightmare_flap": "Nightmare flaps", + "subtitles.antarchy.triffid_attack": "Triffid attacks", + "subtitles.antarchy.triffid_grab": "Triffid grabs", + "subtitles.antarchy.triffid_hurt": "Triffid hurts", + "subtitles.antarchy.triffid_death": "Triffid dies", + "subtitles.antarchy.triffid_hiss": "Triffid hisses", + "subtitles.antarchy.triffid_growl": "Triffid growls", + "subtitles.antarchy.gravity_gun_pickup": "Gravity Gun picks up", + "subtitles.antarchy.gravity_gun_drop": "Gravity Gun drops", + "subtitles.antarchy.gravity_gun_hold_loop": "Gravity Gun hums", + "subtitles.antarchy.gravity_gun_launch": "Gravity Gun launches", + "subtitles.antarchy.gravity_gun_dryfire": "Gravity Gun dry fires", + "subtitles.antarchy.bed_bug_ambient": "Bed Bug chirps", + "subtitles.antarchy.bed_bug_hurt": "Bed Bug hurts", + "subtitles.antarchy.bed_bug_attack": "Bed Bug bites", + "subtitles.antarchy.wasp_idle": "Wasp buzzes", + "subtitles.antarchy.wasp_hurt": "Wasp hurts", + "subtitles.antarchy.wasp_attack": "Wasp stings", + "subtitles.antarchy.wasp_death": "Wasp dies", + "subtitles.antarchy.scorpion_ambient": "Scorpion rattles", + "subtitles.antarchy.scorpion_hurt": "Scorpion hurts", + "subtitles.antarchy.scorpion_attack": "Scorpion attacks", + "subtitles.antarchy.emperor_scorpion_ambient": "Emperor Scorpion rattles", + "subtitles.antarchy.emperor_scorpion_hurt": "Emperor Scorpion hurts", + "subtitles.antarchy.emperor_scorpion_attack": "Emperor Scorpion attacks", + "subtitles.antarchy.emperor_scorpion_roar": "Emperor Scorpion roars", + "subtitles.antarchy.moleworm_ambient": "Moleworm rustles", + "subtitles.antarchy.moleworm_hurt": "Moleworm hurts", + "subtitles.antarchy.moleworm_attack": "Moleworm attacks", + "subtitles.antarchy.moleworm_dig": "Moleworm digs", + "subtitles.antarchy.molevore_ambient": "Molevore rumbles", + "subtitles.antarchy.molevore_hurt": "Molevore hurts", + "subtitles.antarchy.molevore_attack": "Molevore attacks", + "subtitles.antarchy.molevore_dig": "Molevore digs", + "subtitles.antarchy.duct_tape_use": "Duct Tape tears", + "subtitles.antarchy.potent_nyxite_hypnotic_gas": "Potent Nyxite hisses", + "subtitles.antarchy.potent_nyxite_geyser_eruption": "Potent Nyxite erupts", + "subtitles.antarchy.potent_nyxite_geyser_continuous": "Potent Nyxite geyser roars", + "subtitles.antarchy.missile_squid_ambient": "Missile Squid hums", + "subtitles.antarchy.missile_squid_hurt": "Missile Squid hurts", + "subtitles.antarchy.missile_squid_death": "Missile Squid dies", + "subtitles.antarchy.missile_squid_attack": "Missile Squid attacks", + "subtitles.antarchy.kraken_flying_loop": "Kraken glides", + "subtitles.antarchy.kraken_flying_sideways_loop": "Kraken circles", + "subtitles.antarchy.kraken_attack": "Kraken strikes", + "subtitles.antarchy.kraken_spin": "Kraken spins", + "subtitles.antarchy.kraken_roar": "Kraken roars", + "subtitles.antarchy.kraken_summon": "Kraken emerges", + "subtitles.antarchy.kraken_hurt": "Kraken hurts", + "subtitles.antarchy.kraken_death": "Kraken dies", + "subtitles.antarchy.basilisk_idle_loop": "Basilisk idles", + "subtitles.antarchy.basilisk_slither_loop": "Basilisk slithers", + "subtitles.antarchy.basilisk_bite": "Basilisk bites", + "subtitles.antarchy.basilisk_hiss": "Basilisk hisses", + "subtitles.antarchy.basilisk_hurt": "Basilisk hurts", + "subtitles.antarchy.basilisk_death": "Basilisk dies", + "item.minecraft.potion.effect.inversion": "Potion of Inversion", + "item.minecraft.potion.effect.long_inversion": "Potion of Inversion", + "item.minecraft.splash_potion.effect.inversion": "Splash Potion of Inversion", + "item.minecraft.splash_potion.effect.long_inversion": "Splash Potion of Inversion", + "item.minecraft.lingering_potion.effect.inversion": "Lingering Potion of Inversion", + "item.minecraft.lingering_potion.effect.long_inversion": "Lingering Potion of Inversion", + "item.minecraft.tipped_arrow.effect.inversion": "Arrow of Inversion", + "item.minecraft.tipped_arrow.effect.long_inversion": "Arrow of Inversion", + "item.minecraft.potion.effect.paralysis": "Potion of Paralysis", + "item.minecraft.potion.effect.long_paralysis": "Potion of Paralysis", + "item.minecraft.splash_potion.effect.paralysis": "Splash Potion of Paralysis", + "item.minecraft.splash_potion.effect.long_paralysis": "Splash Potion of Paralysis", + "item.minecraft.lingering_potion.effect.paralysis": "Lingering Potion of Paralysis", + "item.minecraft.lingering_potion.effect.long_paralysis": "Lingering Potion of Paralysis", + "item.minecraft.tipped_arrow.effect.paralysis": "Arrow of Paralysis", + "item.minecraft.tipped_arrow.effect.long_paralysis": "Arrow of Paralysis", + "item.minecraft.potion.effect.shrinking": "Potion of Shrinking", + "item.minecraft.potion.effect.strong_shrinking": "Potion of Shrinking II", + "item.minecraft.potion.effect.extreme_shrinking": "Potion of Shrinking III", + "item.minecraft.splash_potion.effect.shrinking": "Splash Potion of Shrinking", + "item.minecraft.splash_potion.effect.strong_shrinking": "Splash Potion of Shrinking II", + "item.minecraft.splash_potion.effect.extreme_shrinking": "Splash Potion of Shrinking III", + "item.minecraft.lingering_potion.effect.shrinking": "Lingering Potion of Shrinking", + "item.minecraft.lingering_potion.effect.strong_shrinking": "Lingering Potion of Shrinking II", + "item.minecraft.lingering_potion.effect.extreme_shrinking": "Lingering Potion of Shrinking III", + "item.minecraft.tipped_arrow.effect.shrinking": "Arrow of Shrinking", + "item.minecraft.tipped_arrow.effect.strong_shrinking": "Arrow of Shrinking II", + "item.minecraft.tipped_arrow.effect.extreme_shrinking": "Arrow of Shrinking III", + "item.minecraft.potion.effect.growing": "Potion of Growth", + "item.minecraft.potion.effect.strong_growing": "Potion of Growth II", + "item.minecraft.potion.effect.extreme_growing": "Potion of Growth III", + "item.minecraft.splash_potion.effect.growing": "Splash Potion of Growth", + "item.minecraft.splash_potion.effect.strong_growing": "Splash Potion of Growth II", + "item.minecraft.splash_potion.effect.extreme_growing": "Splash Potion of Growth III", + "item.minecraft.lingering_potion.effect.growing": "Lingering Potion of Growth", + "item.minecraft.lingering_potion.effect.strong_growing": "Lingering Potion of Growth II", + "item.minecraft.lingering_potion.effect.extreme_growing": "Lingering Potion of Growth III", + "item.minecraft.tipped_arrow.effect.growing": "Arrow of Growth", + "item.minecraft.tipped_arrow.effect.strong_growing": "Arrow of Growth II", + "item.minecraft.tipped_arrow.effect.extreme_growing": "Arrow of Growth III", + "item.minecraft.potion.effect.dread": "Potion of Dread", + "item.minecraft.potion.effect.long_dread": "Potion of Dread", + "item.minecraft.splash_potion.effect.dread": "Splash Potion of Dread", + "item.minecraft.splash_potion.effect.long_dread": "Splash Potion of Dread", + "item.minecraft.lingering_potion.effect.dread": "Lingering Potion of Dread", + "item.minecraft.lingering_potion.effect.long_dread": "Lingering Potion of Dread", + "item.minecraft.tipped_arrow.effect.dread": "Arrow of Dread", + "item.minecraft.tipped_arrow.effect.long_dread": "Arrow of Dread", + "item.minecraft.potion.effect.haste": "Potion of Haste", + "item.minecraft.potion.effect.strong_haste": "Potion of Haste II", + "item.minecraft.splash_potion.effect.haste": "Splash Potion of Haste", + "item.minecraft.splash_potion.effect.strong_haste": "Splash Potion of Haste II", + "item.minecraft.lingering_potion.effect.haste": "Lingering Potion of Haste", + "item.minecraft.lingering_potion.effect.strong_haste": "Lingering Potion of Haste II", + "item.minecraft.tipped_arrow.effect.haste": "Arrow of Haste", + "item.minecraft.tipped_arrow.effect.strong_haste": "Arrow of Haste II", + "subtitles.antarchy.squidzooka_fire": "Squidzooka fires", + "advancements.antarchy.visit_elythia.title": "InterdimANTsional", + "advancements.antarchy.visit_elythia.description": "Use a brown ant to reach Elythia.", + "advancements.antarchy.visit_thoraxis.title": "Ant-ger Management", + "advancements.antarchy.visit_thoraxis.description": "Use a red ant to reach Thoraxis.", + "advancements.antarchy.visit_cavaryn.title": "You will be Termite-ated", + "advancements.antarchy.visit_cavaryn.description": "Use a termite to reach Cavaryn.", + "advancements.antarchy.ultimate_armor.title": "Ultimate Protection", + "advancements.antarchy.ultimate_armor.description": "Collect the full set of Ultimate Armor.", + "advancements.antarchy.ultimate_bow.title": "Bowhemian Rhapsody", + "advancements.antarchy.ultimate_bow.description": "Obtain an Ultimate Bow.", + "advancements.antarchy.kill_molevore.title": "Moley Poley", + "advancements.antarchy.kill_molevore.description": "Kill a Molevore.", + "advancements.antarchy.cancel_out.title": "1 - 1 = ?", + "advancements.antarchy.cancel_out.description": "Have Growth and Shrinking active at the same time.", + "death.attack.bed_bug_bite": "%1$s got bit by the bed bugs", + "death.attack.bed_bug_bite.player": "%1$s got bit by the bed bugs while fighting %2$s", + "death.attack.kraken_mauling": "%1$s was dragged under by the Kraken", + "death.attack.kraken_mauling.player": "%1$s was dragged under by the Kraken while fighting %2$s", + "death.attack.kraken_lightning": "%1$s was struck down by the Kraken's storm", + "death.attack.kraken_lightning.player": "%1$s was struck down by the Kraken's storm while fighting %2$s", + "death.attack.nightmare_mauling": "%1$s was devoured by the Nightmare", + "death.attack.nightmare_mauling.player": "%1$s was devoured by the Nightmare while fighting %2$s", + "death.attack.basilisk_bite": "%1$s was swallowed by a Basilisk", + "death.attack.basilisk_bite.player": "%1$s was swallowed by a Basilisk while fighting %2$s", + "death.attack.emperor_scorpion_sting": "%1$s was stung by the Emperor Scorpion", + "death.attack.emperor_scorpion_sting.player": "%1$s was stung by the Emperor Scorpion while fighting %2$s", + "death.attack.cornea_stalk_prick": "%1$s was pricked to death by a Cornea Stalk", + "entity.antarchy.reverie": "Reverie", + "biome.antarchy.thoraxis": "Thoraxis", + "biome.antarchy.nightmare_wastes": "Nightmare Wastes", + "biome.antarchy.umbral_hills": "Umbral Hills", + "biome.antarchy.lucid_pools": "Lucid Pools", + "biome.antarchy.dream_dunes": "Dream Dunes", + "biome.antarchy.cloud_sea": "Cloud Sea", + + "trim_material.antarchy.blood_crystal": "Blood Crystal", + "trim_material.antarchy.nightmare_scale": "Nightmare Scale", + "trim_material.antarchy.uranium": "Uranium", + "trim_material.antarchy.titanium": "Titanium", + "advancements.antarchy.duct_tape.title": "I sawed this boat in half!", + "advancements.antarchy.duct_tape.description": "and fixed it with the power of duct tape!", + "key.categories.antarchy": "Antarchy", + "key.antarchy.brutalfly_flap": "Brutalfly Elytra: Flap", + "advancements.antarchy.shrink_ray_craft.title": "Honey, I Shrunk the Mobs", + "advancements.antarchy.shrink_ray_craft.description": "Craft a Shrink Ray.", + "advancements.antarchy.growth_ray_craft.title": "Go Big or Go Home", + "advancements.antarchy.growth_ray_craft.description": "Craft a Growth Ray.", + "advancements.antarchy.squidzooka_craft.title": "Ink and Destroy", + "advancements.antarchy.squidzooka_craft.description": "Craft a Squidzooka.", + "advancements.antarchy.gravity_gun_craft.title": "Pick Up Artist", + "advancements.antarchy.gravity_gun_craft.description": "Craft a Gravity Gun." +} diff --git a/common/src/main/resources/assets/antarchy/models/armor/fallen_king_crown.json b/common/src/main/resources/assets/antarchy/models/armor/fallen_king_crown.json new file mode 100644 index 00000000..ff5aa500 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/armor/fallen_king_crown.json @@ -0,0 +1,91 @@ +{ + "credit": "Made with Blockbench", + "parent": "builtin/entity", + "texture_size": [ + 32, + 32 + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + 45, + 0 + ], + "translation": [ + 0, + 2, + 0 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 0, + -135, + 0 + ], + "translation": [ + 0, + 2, + 0 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] + }, + "head": { + "translation": [ + 0, + 9.5, + 0 + ], + "scale": [ + 1.7, + 1.7, + 1.7 + ] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/block/antimetal.json b/common/src/main/resources/assets/antarchy/models/block/antimetal.json new file mode 100644 index 00000000..355c1b80 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/antimetal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "antarchy:block/antimetal/antimetal_block_top", + "side": "antarchy:block/antimetal/antimetal_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/antimetal_horizontal.json b/common/src/main/resources/assets/antarchy/models/block/antimetal_horizontal.json new file mode 100644 index 00000000..fe353731 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/antimetal_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "antarchy:block/antimetal/antimetal_block_top", + "side": "antarchy:block/antimetal/antimetal_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/antimetal_scaffolding_stable.json b/common/src/main/resources/assets/antarchy/models/block/antimetal_scaffolding_stable.json new file mode 100644 index 00000000..081c2dab --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/antimetal_scaffolding_stable.json @@ -0,0 +1,171 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "particle": "antarchy:block/antimetal/antimetal_scaffolding_side", + "3": "antarchy:block/antimetal/antimetal_scaffolding_bottom", + "4": "antarchy:block/antimetal/antimetal_scaffolding_side", + "5": "antarchy:block/antimetal/antimetal_scaffolding_top" + }, + "elements": [ + { + "from": [0, 15.99, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#5", "cullface": "up"}, + "down": {"uv": [0, 16, 16, 0], "texture": "#5"} + } + }, + { + "from": [0, 0, 0], + "to": [2, 16, 2], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "north"}, + "east": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "west"}, + "down": {"uv": [0, 14, 2, 16], "texture": "#3", "cullface": "down"} + } + }, + { + "from": [0, 0, 14], + "to": [2, 16, 16], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "south"}, + "west": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "west"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#3", "cullface": "down"} + } + }, + { + "from": [14, 0, 14], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "east"}, + "south": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "south"}, + "west": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "down": {"uv": [14, 0, 16, 2], "texture": "#3", "cullface": "down"} + } + }, + { + "from": [14, 0, 0], + "to": [16, 16, 2], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "north"}, + "east": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "east"}, + "south": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "down": {"uv": [14, 14, 16, 16], "texture": "#3", "cullface": "down"} + } + }, + { + "from": [2, 14, 0], + "to": [14, 16, 2], + "faces": { + "north": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "north"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "down": {"uv": [2, 14, 14, 16], "texture": "#3"} + } + }, + { + "from": [2, 0, 0], + "to": [14, 14, 0], + "faces": { + "north": {"uv": [2, 2, 14, 16], "texture": "#4", "cullface": "north"}, + "south": {"uv": [2, 2, 14, 16], "texture": "#4"}, + "down": {"uv": [2, 16, 14, 16], "texture": "#3"} + } + }, + { + "from": [2, 14, 14], + "to": [14, 16, 16], + "faces": { + "north": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"}, + "down": {"uv": [2, 0, 14, 2], "texture": "#3"} + } + }, + { + "from": [2, 0, 16], + "to": [14, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -2, 0]}, + "faces": { + "north": {"uv": [2, 2, 14, 16], "texture": "#4"}, + "south": {"uv": [2, 2, 14, 16], "texture": "#4", "cullface": "south"}, + "down": {"uv": [2, 0, 14, 0], "texture": "#3"} + } + }, + { + "from": [14, 14, 2], + "to": [16, 16, 14], + "faces": { + "east": {"uv": [14, 0, 2, 2], "texture": "#4", "cullface": "east"}, + "west": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "down": {"uv": [14, 2, 16, 14], "texture": "#3"} + } + }, + { + "from": [16, 0, 2], + "to": [16, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -2, 0]}, + "faces": { + "east": {"uv": [2, 2, 14, 16], "texture": "#4", "cullface": "east"}, + "west": {"uv": [2, 2, 14, 16], "texture": "#4"}, + "down": {"uv": [16, 2, 16, 14], "texture": "#3"} + } + }, + { + "from": [0, 14, 2], + "to": [2, 16, 14], + "faces": { + "east": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "west": {"uv": [14, 0, 2, 2], "texture": "#4", "cullface": "west"}, + "down": {"uv": [0, 2, 2, 14], "texture": "#3"} + } + }, + { + "from": [0, 0, 2], + "to": [0, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -2, 0]}, + "faces": { + "east": {"uv": [2, 2, 14, 16], "texture": "#4"}, + "west": {"uv": [2, 2, 14, 16], "texture": "#4", "cullface": "west"}, + "down": {"uv": [0, 2, 0, 14], "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -135, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, -135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/antimetal_scaffolding_unstable.json b/common/src/main/resources/assets/antarchy/models/block/antimetal_scaffolding_unstable.json new file mode 100644 index 00000000..a6a9fa4a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/antimetal_scaffolding_unstable.json @@ -0,0 +1,223 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "particle": "antarchy:block/antimetal/antimetal_scaffolding_side", + "3": "antarchy:block/antimetal/antimetal_scaffolding_bottom", + "4": "antarchy:block/antimetal/antimetal_scaffolding_side", + "5": "antarchy:block/antimetal/antimetal_scaffolding_top" + }, + "elements": [ + { + "from": [0, 15.99, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#5", "cullface": "up"}, + "down": {"uv": [0, 16, 16, 0], "texture": "#5"} + } + }, + { + "from": [0, 0, 0], + "to": [2, 16, 2], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "north"}, + "east": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "west"}, + "down": {"uv": [0, 2, 2, 0], "rotation": 90, "texture": "#3", "cullface": "down"} + } + }, + { + "from": [0, 0, 14], + "to": [2, 16, 16], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "south"}, + "west": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "west"}, + "down": {"uv": [0, 14, 2, 16], "texture": "#3", "cullface": "down"} + } + }, + { + "from": [14, 0, 14], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "east"}, + "south": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "south"}, + "west": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "down": {"uv": [14, 0, 16, 2], "texture": "#3", "cullface": "down"} + } + }, + { + "from": [14, 0, 0], + "to": [16, 16, 2], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#4", "cullface": "north"}, + "east": {"uv": [14, 0, 16, 16], "texture": "#4", "cullface": "east"}, + "south": {"uv": [14, 0, 16, 16], "texture": "#4"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#4"}, + "down": {"uv": [14, 14, 16, 16], "texture": "#3", "cullface": "down"} + } + }, + { + "from": [2, 14, 0], + "to": [14, 16, 2], + "faces": { + "north": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "north"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "down": {"uv": [2, 14, 14, 16], "texture": "#3"} + } + }, + { + "from": [2, 2, 0], + "to": [14, 14, 0], + "faces": { + "north": {"uv": [2, 2, 14, 14], "texture": "#3", "cullface": "north"}, + "south": {"uv": [2, 2, 14, 14], "texture": "#4"}, + "down": {"uv": [2, 16, 14, 16], "texture": "#3"} + } + }, + { + "from": [2, 14, 14], + "to": [14, 16, 16], + "faces": { + "north": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"}, + "down": {"uv": [2, 0, 14, 2], "texture": "#3"} + } + }, + { + "from": [2, 2, 16], + "to": [14, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -2, 0]}, + "faces": { + "north": {"uv": [2, 2, 14, 14], "texture": "#4"}, + "south": {"uv": [2, 2, 14, 14], "texture": "#3", "cullface": "south"}, + "down": {"uv": [2, 0, 14, 0], "texture": "#3"} + } + }, + { + "from": [14, 14, 2], + "to": [16, 16, 14], + "faces": { + "east": {"uv": [14, 0, 2, 2], "texture": "#4", "cullface": "east"}, + "west": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "down": {"uv": [14, 2, 16, 14], "texture": "#3"} + } + }, + { + "from": [16, 2, 2], + "to": [16, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -2, 0]}, + "faces": { + "east": {"uv": [2, 2, 14, 14], "texture": "#3", "cullface": "east"}, + "west": {"uv": [2, 2, 14, 14], "texture": "#4"}, + "down": {"uv": [16, 2, 16, 14], "texture": "#3"} + } + }, + { + "from": [0, 14, 2], + "to": [2, 16, 14], + "faces": { + "east": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "west": {"uv": [14, 0, 2, 2], "texture": "#4", "cullface": "west"}, + "down": {"uv": [0, 2, 2, 14], "texture": "#3"} + } + }, + { + "from": [2, 0, 14], + "to": [14, 2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -14, 0]}, + "faces": { + "north": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"}, + "east": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"}, + "west": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"}, + "up": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"}, + "down": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "south"} + } + }, + { + "from": [0, 0, 2], + "to": [2, 2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -14, 0]}, + "faces": { + "north": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "west"}, + "east": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "west"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "west"}, + "west": {"uv": [2, 0, 14, 2], "texture": "#4", "cullface": "west"}, + "up": {"uv": [2, 0, 14, 2], "rotation": 90, "texture": "#4", "cullface": "west"}, + "down": {"uv": [14, 2, 2, 0], "rotation": 90, "texture": "#4", "cullface": "west"} + } + }, + { + "from": [2, 0, 0], + "to": [14, 2, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -14, 0]}, + "faces": { + "north": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "east": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "west": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "up": {"uv": [2, 0, 14, 2], "texture": "#4"}, + "down": {"uv": [2, 2, 14, 0], "texture": "#4"} + } + }, + { + "from": [14, 0, 2], + "to": [16, 2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -14, 0]}, + "faces": { + "north": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "east": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "south": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "west": {"uv": [14, 0, 2, 2], "texture": "#4"}, + "up": {"uv": [2, 2, 14, 0], "rotation": 90, "texture": "#4"}, + "down": {"uv": [2, 2, 14, 0], "rotation": 90, "texture": "#4"} + } + }, + { + "from": [0, 2, 2], + "to": [0, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -2, 0]}, + "faces": { + "east": {"uv": [2, 2, 14, 14], "texture": "#4"}, + "west": {"uv": [2, 2, 14, 14], "texture": "#3", "cullface": "west"}, + "down": {"uv": [0, 2, 0, 14], "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -135, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, -135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_1.json b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_1.json new file mode 100644 index 00000000..b7f5e295 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_turtle_egg", + "textures": { + "all": "antarchy:block/bed_bug_egg" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_2.json b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_2.json new file mode 100644 index 00000000..c9d57e6e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_two_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_3.json b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_3.json new file mode 100644 index 00000000..749c15c0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_3.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_three_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_4.json b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_4.json new file mode 100644 index 00000000..1e474d54 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bed_bug_egg_4.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_four_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg", + "particle": "antarchy:block/bed_bug_egg" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/blood_crystal_block.json b/common/src/main/resources/assets/antarchy/models/block/blood_crystal_block.json new file mode 100644 index 00000000..682d2341 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/blood_crystal_block.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/blood_crystal_block" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/block/blood_crystal_cluster.json b/common/src/main/resources/assets/antarchy/models/block/blood_crystal_cluster.json new file mode 100644 index 00000000..5f771af4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/blood_crystal_cluster.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/blood_crystal_cluster" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/block/brown_ant_nest.json b/common/src/main/resources/assets/antarchy/models/block/brown_ant_nest.json new file mode 100644 index 00000000..1bc0e245 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/brown_ant_nest.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "particle": "antarchy:block/brown_ant_nest/brown_ant_nest", + "down": "minecraft:block/coarse_dirt", + "up": "antarchy:block/brown_ant_nest/brown_ant_nest_top", + "north": "antarchy:block/brown_ant_nest/brown_ant_nest", + "south": "antarchy:block/brown_ant_nest/brown_ant_nest", + "west": "antarchy:block/brown_ant_nest/brown_ant_nest", + "east": "antarchy:block/brown_ant_nest/brown_ant_nest" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/budding_blood_crystal.json b/common/src/main/resources/assets/antarchy/models/block/budding_blood_crystal.json new file mode 100644 index 00000000..4365150a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/budding_blood_crystal.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/budding_blood_crystal_block" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/block/chiseled_dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/block/chiseled_dream_sandstone.json new file mode 100644 index 00000000..797e23b9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/chiseled_dream_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/chiseled_dream_sandstone" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/chiseled_nyxite.json b/common/src/main/resources/assets/antarchy/models/block/chiseled_nyxite.json new file mode 100644 index 00000000..47dbd261 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/chiseled_nyxite.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/chiseled_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/chiseled_titanium.json b/common/src/main/resources/assets/antarchy/models/block/chiseled_titanium.json new file mode 100644 index 00000000..669c8ce5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/chiseled_titanium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/chiseled_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/chiseled_uranium.json b/common/src/main/resources/assets/antarchy/models/block/chiseled_uranium.json new file mode 100644 index 00000000..387ef3bc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/chiseled_uranium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/chiseled_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cloud_block.json b/common/src/main/resources/assets/antarchy/models/block/cloud_block.json new file mode 100644 index 00000000..90efc85b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cloud_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/cloud_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage0.json b/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage0.json new file mode 100644 index 00000000..3ce33897 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/cornea/cornea_stalk_stage0" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage1.json b/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage1.json new file mode 100644 index 00000000..49f2c01e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/cornea/cornea_stalk_stage1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage2.json b/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage2.json new file mode 100644 index 00000000..36a88f27 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cornea_stalk_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/cornea/cornea_stalk_stage2" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone.json new file mode 100644 index 00000000..2cfad790 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/cut_dream_sandstone" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone_slab.json new file mode 100644 index 00000000..2da75ea7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/cut_dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone_slab_top.json new file mode 100644 index 00000000..676e578c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_dream_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/cut_dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium.json new file mode 100644 index 00000000..9f6e2581 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/cut_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_slab.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_slab.json new file mode 100644 index 00000000..4907a95d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/titanium/cut_titanium", + "side": "antarchy:block/titanium/cut_titanium", + "top": "antarchy:block/titanium/cut_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_slab_top.json new file mode 100644 index 00000000..028479ff --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/titanium/cut_titanium", + "side": "antarchy:block/titanium/cut_titanium", + "top": "antarchy:block/titanium/cut_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs.json new file mode 100644 index 00000000..0c69e8e3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "antarchy:block/titanium/cut_titanium", + "side": "antarchy:block/titanium/cut_titanium", + "top": "antarchy:block/titanium/cut_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs_inner.json new file mode 100644 index 00000000..749df7d7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "antarchy:block/titanium/cut_titanium", + "side": "antarchy:block/titanium/cut_titanium", + "top": "antarchy:block/titanium/cut_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs_outer.json new file mode 100644 index 00000000..3f416660 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "antarchy:block/titanium/cut_titanium", + "side": "antarchy:block/titanium/cut_titanium", + "top": "antarchy:block/titanium/cut_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_inventory.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_inventory.json new file mode 100644 index 00000000..91807bc1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "antarchy:block/titanium/titanium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_post.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_post.json new file mode 100644 index 00000000..fefb11fe --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_post", + "textures": { + "wall": "antarchy:block/titanium/titanium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_side.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_side.json new file mode 100644 index 00000000..6c784c47 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_side", + "textures": { + "wall": "antarchy:block/titanium/titanium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_side_tall.json b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_side_tall.json new file mode 100644 index 00000000..bcddc58e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_titanium_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_side_tall", + "textures": { + "wall": "antarchy:block/titanium/titanium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium.json new file mode 100644 index 00000000..cdb6a599 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/cut_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_slab.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_slab.json new file mode 100644 index 00000000..8318cc4f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/uranium/cut_uranium", + "side": "antarchy:block/uranium/cut_uranium", + "top": "antarchy:block/uranium/cut_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_slab_top.json new file mode 100644 index 00000000..73a06755 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/uranium/cut_uranium", + "side": "antarchy:block/uranium/cut_uranium", + "top": "antarchy:block/uranium/cut_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs.json new file mode 100644 index 00000000..b89eab68 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "antarchy:block/uranium/cut_uranium", + "side": "antarchy:block/uranium/cut_uranium", + "top": "antarchy:block/uranium/cut_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs_inner.json new file mode 100644 index 00000000..4aad8f40 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "antarchy:block/uranium/cut_uranium", + "side": "antarchy:block/uranium/cut_uranium", + "top": "antarchy:block/uranium/cut_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs_outer.json new file mode 100644 index 00000000..5f546d2c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "antarchy:block/uranium/cut_uranium", + "side": "antarchy:block/uranium/cut_uranium", + "top": "antarchy:block/uranium/cut_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_inventory.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_inventory.json new file mode 100644 index 00000000..68cb60c7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "antarchy:block/uranium/uranium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_post.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_post.json new file mode 100644 index 00000000..8ac993de --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_post", + "textures": { + "wall": "antarchy:block/uranium/uranium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_side.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_side.json new file mode 100644 index 00000000..e95dcf78 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_side", + "textures": { + "wall": "antarchy:block/uranium/uranium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_side_tall.json b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_side_tall.json new file mode 100644 index 00000000..363da0fb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/cut_uranium_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_side_tall", + "textures": { + "wall": "antarchy:block/uranium/uranium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/deepslate_titanium_ore.json b/common/src/main/resources/assets/antarchy/models/block/deepslate_titanium_ore.json new file mode 100644 index 00000000..e45400ba --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/deepslate_titanium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/titanium_deepslate_ore" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/deepslate_uranium_ore.json b/common/src/main/resources/assets/antarchy/models/block/deepslate_uranium_ore.json new file mode 100644 index 00000000..fddd03d9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/deepslate_uranium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/uranium_deepslate_ore" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_campfire.json b/common/src/main/resources/assets/antarchy/models/block/dream_campfire.json new file mode 100644 index 00000000..0cfd25f4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_campfire.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_campfire", + "textures": { + "fire": "antarchy:block/dream_campfire_fire", + "lit_log": "antarchy:block/dream_campfire_log_lit" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_fire_floor0.json b/common/src/main/resources/assets/antarchy/models/block/dream_fire_floor0.json new file mode 100644 index 00000000..0816afb4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_fire_floor0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_floor", + "textures": { + "fire": "antarchy:block/dream_fire_0" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_fire_floor1.json b/common/src/main/resources/assets/antarchy/models/block/dream_fire_floor1.json new file mode 100644 index 00000000..085ab8bf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_fire_floor1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_floor", + "textures": { + "fire": "antarchy:block/dream_fire_1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_fire_side0.json b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side0.json new file mode 100644 index 00000000..f979fcfe --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side", + "textures": { + "fire": "antarchy:block/dream_fire_0" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_fire_side1.json b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side1.json new file mode 100644 index 00000000..cd49fde6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side", + "textures": { + "fire": "antarchy:block/dream_fire_1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_fire_side_alt0.json b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side_alt0.json new file mode 100644 index 00000000..77f610d8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side_alt0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side_alt", + "textures": { + "fire": "antarchy:block/dream_fire_0" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_fire_side_alt1.json b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side_alt1.json new file mode 100644 index 00000000..e15612bb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_fire_side_alt1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side_alt", + "textures": { + "fire": "antarchy:block/dream_fire_1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_lantern.json b/common/src/main/resources/assets/antarchy/models/block/dream_lantern.json new file mode 100644 index 00000000..f43321db --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_lantern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_lantern", + "textures": { + "lantern": "antarchy:block/dream_lantern" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_lantern_hanging.json b/common/src/main/resources/assets/antarchy/models/block/dream_lantern_hanging.json new file mode 100644 index 00000000..1f856d38 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_lantern_hanging.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_hanging_lantern", + "textures": { + "lantern": "antarchy:block/dream_lantern" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sand.json b/common/src/main/resources/assets/antarchy/models/block/dream_sand.json new file mode 100644 index 00000000..7f74edce --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/dream_sand" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone.json new file mode 100644 index 00000000..612cbb84 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "bottom": "antarchy:block/dream_sandstone_bottom", + "side": "antarchy:block/dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_slab.json new file mode 100644 index 00000000..02ffaba3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/dream_sandstone_bottom", + "side": "antarchy:block/dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_slab_top.json new file mode 100644 index 00000000..460f507a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/dream_sandstone_bottom", + "side": "antarchy:block/dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs.json new file mode 100644 index 00000000..baed2929 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "antarchy:block/dream_sandstone_bottom", + "side": "antarchy:block/dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs_inner.json new file mode 100644 index 00000000..e9b15e7d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "antarchy:block/dream_sandstone_bottom", + "side": "antarchy:block/dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs_outer.json new file mode 100644 index 00000000..322c34dd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "antarchy:block/dream_sandstone_bottom", + "side": "antarchy:block/dream_sandstone", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_inventory.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_inventory.json new file mode 100644 index 00000000..5437d917 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "antarchy:block/dream_sandstone" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_post.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_post.json new file mode 100644 index 00000000..dc5a31a6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "antarchy:block/dream_sandstone" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_side.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_side.json new file mode 100644 index 00000000..0957d5ab --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "antarchy:block/dream_sandstone" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_side_tall.json b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_side_tall.json new file mode 100644 index 00000000..2b9672c4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "antarchy:block/dream_sandstone" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_torch.json b/common/src/main/resources/assets/antarchy/models/block/dream_torch.json new file mode 100644 index 00000000..bff313b9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_torch.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_torch", + "textures": { + "torch": "antarchy:block/dream_torch" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dream_wall_torch.json b/common/src/main/resources/assets/antarchy/models/block/dream_wall_torch.json new file mode 100644 index 00000000..ffee7b9e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dream_wall_torch.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_torch_wall", + "textures": { + "torch": "antarchy:block/dream_torch" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer1.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer1.json new file mode 100644 index 00000000..51d58498 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer1.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/duct_tape/duct_tape_top", + "top": "antarchy:block/duct_tape/duct_tape_top", + "side": "antarchy:block/duct_tape/duct_tape_side_2", + "side_2": "antarchy:block/duct_tape/duct_tape_side", + "side_3": "antarchy:block/duct_tape/duct_tape_side_3" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "down": {"texture": "#side"}, + "up": {"texture": "#top", "rotation": 90, "uv": [0, 0, 16, 16]}, + "north": {"texture": "#side"}, + "south": {"texture": "#side"}, + "west": {"texture": "#side_2"}, + "east": {"texture": "#side_3"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer2.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer2.json new file mode 100644 index 00000000..284c1425 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer2.json @@ -0,0 +1,17 @@ +{ + "parent": "antarchy:block/duct_tape_layer1", + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 4, 16], + "faces": { + "down": {"texture": "#texture"}, + "up": {"texture": "#texture"}, + "north": {"texture": "#texture"}, + "south": {"texture": "#texture"}, + "west": {"texture": "#texture"}, + "east": {"texture": "#texture"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer3.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer3.json new file mode 100644 index 00000000..f1a296bb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer3.json @@ -0,0 +1,17 @@ +{ + "parent": "antarchy:block/duct_tape_layer1", + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 6, 16], + "faces": { + "down": {"texture": "#texture"}, + "up": {"texture": "#texture"}, + "north": {"texture": "#texture"}, + "south": {"texture": "#texture"}, + "west": {"texture": "#texture"}, + "east": {"texture": "#texture"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer4.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer4.json new file mode 100644 index 00000000..4ac5675c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer4.json @@ -0,0 +1,17 @@ +{ + "parent": "antarchy:block/duct_tape_layer1", + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 8, 16], + "faces": { + "down": {"texture": "#texture"}, + "up": {"texture": "#texture"}, + "north": {"texture": "#texture"}, + "south": {"texture": "#texture"}, + "west": {"texture": "#texture"}, + "east": {"texture": "#texture"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer5.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer5.json new file mode 100644 index 00000000..0dc90186 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer5.json @@ -0,0 +1,17 @@ +{ + "parent": "antarchy:block/duct_tape_layer1", + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 10, 16], + "faces": { + "down": {"texture": "#texture"}, + "up": {"texture": "#texture"}, + "north": {"texture": "#texture"}, + "south": {"texture": "#texture"}, + "west": {"texture": "#texture"}, + "east": {"texture": "#texture"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer6.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer6.json new file mode 100644 index 00000000..a6aa085d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer6.json @@ -0,0 +1,17 @@ +{ + "parent": "antarchy:block/duct_tape_layer1", + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 12, 16], + "faces": { + "down": {"texture": "#texture"}, + "up": {"texture": "#texture"}, + "north": {"texture": "#texture"}, + "south": {"texture": "#texture"}, + "west": {"texture": "#texture"}, + "east": {"texture": "#texture"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer7.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer7.json new file mode 100644 index 00000000..42480efc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer7.json @@ -0,0 +1,17 @@ +{ + "parent": "antarchy:block/duct_tape_layer1", + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 14, 16], + "faces": { + "down": {"texture": "#texture"}, + "up": {"texture": "#texture"}, + "north": {"texture": "#texture"}, + "south": {"texture": "#texture"}, + "west": {"texture": "#texture"}, + "east": {"texture": "#texture"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer8.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer8.json new file mode 100644 index 00000000..81f46c0a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_layer8.json @@ -0,0 +1,17 @@ +{ + "parent": "antarchy:block/duct_tape_layer1", + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "down": {"texture": "#texture"}, + "up": {"texture": "#texture"}, + "north": {"texture": "#texture"}, + "south": {"texture": "#texture"}, + "west": {"texture": "#texture"}, + "east": {"texture": "#texture"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_use1.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use1.json new file mode 100644 index 00000000..0dd9dcb9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use1.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/duct_tape/duct_tape_top", + "top": "antarchy:block/duct_tape/duct_tape_top", + "side": "antarchy:block/duct_tape/duct_tape_side_2", + "side_2": "antarchy:block/duct_tape/duct_tape_side", + "side_3": "antarchy:block/duct_tape/duct_tape_side_3" + }, + "elements": [ + { + "from": [0, 0, 12], + "to": [16, 2, 16], + "faces": { + "down": {"texture": "#side"}, + "up": {"texture": "#top", "rotation": 90, "uv": [12, 0, 16, 16]}, + "north": {"texture": "#side"}, + "south": {"texture": "#side"}, + "west": {"texture": "#side_2"}, + "east": {"texture": "#side_3"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_use2.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use2.json new file mode 100644 index 00000000..7227bb05 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use2.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/duct_tape/duct_tape_top", + "top": "antarchy:block/duct_tape/duct_tape_top", + "side": "antarchy:block/duct_tape/duct_tape_side_2", + "side_2": "antarchy:block/duct_tape/duct_tape_side", + "side_3": "antarchy:block/duct_tape/duct_tape_side_3" + }, + "elements": [ + { + "from": [0, 0, 8], + "to": [16, 2, 16], + "faces": { + "down": {"texture": "#side"}, + "up": {"texture": "#top", "rotation": 90, "uv": [8, 0, 16, 16]}, + "north": {"texture": "#side"}, + "south": {"texture": "#side"}, + "west": {"texture": "#side_2"}, + "east": {"texture": "#side_3"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_use3.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use3.json new file mode 100644 index 00000000..63a51346 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use3.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/duct_tape/duct_tape_top", + "top": "antarchy:block/duct_tape/duct_tape_top", + "side": "antarchy:block/duct_tape/duct_tape_side_2", + "side_2": "antarchy:block/duct_tape/duct_tape_side", + "side_3": "antarchy:block/duct_tape/duct_tape_side_3" + }, + "elements": [ + { + "from": [0, 0, 4], + "to": [16, 2, 16], + "faces": { + "down": {"texture": "#side"}, + "up": {"texture": "#top", "rotation": 90, "uv": [4, 0, 16, 16]}, + "north": {"texture": "#side"}, + "south": {"texture": "#side"}, + "west": {"texture": "#side_2"}, + "east": {"texture": "#side_3"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duct_tape_use4.json b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use4.json new file mode 100644 index 00000000..51d58498 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duct_tape_use4.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/duct_tape/duct_tape_top", + "top": "antarchy:block/duct_tape/duct_tape_top", + "side": "antarchy:block/duct_tape/duct_tape_side_2", + "side_2": "antarchy:block/duct_tape/duct_tape_side", + "side_3": "antarchy:block/duct_tape/duct_tape_side_3" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "down": {"texture": "#side"}, + "up": {"texture": "#top", "rotation": 90, "uv": [0, 0, 16, 16]}, + "north": {"texture": "#side"}, + "south": {"texture": "#side"}, + "west": {"texture": "#side_2"}, + "east": {"texture": "#side_3"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duplicator_log.json b/common/src/main/resources/assets/antarchy/models/block/duplicator_log.json new file mode 100644 index 00000000..00c2b61e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duplicator_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "minecraft:block/oak_log_top", + "side": "minecraft:block/oak_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duplicator_log_horizontal.json b/common/src/main/resources/assets/antarchy/models/block/duplicator_log_horizontal.json new file mode 100644 index 00000000..fa7c034f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duplicator_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "minecraft:block/oak_log_top", + "side": "minecraft:block/oak_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/duplicator_sapling.json b/common/src/main/resources/assets/antarchy/models/block/duplicator_sapling.json new file mode 100644 index 00000000..3e69e42f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/duplicator_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "minecraft:block/oak_sapling" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/hushweed.json b/common/src/main/resources/assets/antarchy/models/block/hushweed.json new file mode 100644 index 00000000..ecda061c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/hushweed.json @@ -0,0 +1,195 @@ +{ + "format_version": "1.21.1", + "credit": "Made with Blockbench", + "parent": "block/block", + "texture_size": [64, 64], + "textures": { + "1": "antarchy:block/hushweed", + "particle": "antarchy:block/hushweed_particle" + }, + "elements": [ + { + "from": [4, 18, 4], + "to": [12, 22, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 6, 0]}, + "faces": { + "north": {"uv": [6, 7.25, 8, 8.25], "texture": "#1", "cullface": "up"}, + "east": {"uv": [6, 7.25, 8, 8.25], "texture": "#1", "cullface": "up"}, + "south": {"uv": [6, 7.25, 8, 8.25], "texture": "#1", "cullface": "up"}, + "west": {"uv": [6, 7.25, 8, 8.25], "texture": "#1", "cullface": "up"}, + "up": {"uv": [6, 9.25, 4, 7.25], "texture": "#1", "cullface": "up"} + } + }, + { + "from": [4, 18, 4], + "to": [4, 26, 12], + "rotation": {"angle": 22.5, "axis": "z", "origin": [4, 18, 8]}, + "faces": { + "north": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "east": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "south": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "west": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "up": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "down": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"} + } + }, + { + "from": [12, 18, 4], + "to": [12, 26, 12], + "rotation": {"angle": -22.5, "axis": "z", "origin": [12, 18, 8]}, + "faces": { + "north": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "east": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "south": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "west": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "up": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "down": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"} + } + }, + { + "from": [8, 18, 0], + "to": [8, 26, 8], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 18, 4]}, + "faces": { + "north": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "east": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "south": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "west": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "up": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "down": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"} + } + }, + { + "from": [8, 18, 8], + "to": [8, 26, 16], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 18, 12]}, + "faces": { + "north": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "east": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "south": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "west": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "up": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"}, + "down": {"uv": [0, 7.75, 2, 9.75], "texture": "#1", "cullface": "up"} + } + }, + { + "from": [15.99, 5, 0], + "to": [16, 18, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 0]}, + "faces": { + "east": {"uv": [4, 4, 8, 7.25], "texture": "#1", "cullface": "east"}, + "west": {"uv": [0, 4.5, 4, 7.75], "texture": "#1"} + } + }, + { + "from": [0, 5, 0], + "to": [16, 18, 0.01], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 0]}, + "faces": { + "north": {"uv": [4, 4, 8, 7.25], "texture": "#1", "cullface": "north"}, + "south": {"uv": [0, 4.5, 4, 7.75], "texture": "#1"} + } + }, + { + "from": [0.1, 0, 8], + "to": [15.9, 17.9, 8], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 10, 8], "rescale": true}, + "faces": { + "north": {"uv": [0, 0, 4, 4.5], "texture": "#1"}, + "south": {"uv": [0, 0, 4, 4.5], "texture": "#1"} + } + }, + { + "from": [8, 0, 0.1], + "to": [8, 17.9, 15.9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 10, 8], "rescale": true}, + "faces": { + "east": {"uv": [0, 0, 4, 4.5], "texture": "#1"}, + "west": {"uv": [0, 0, 4, 4.5], "texture": "#1"} + } + }, + { + "from": [0, 5, 15.99], + "to": [16, 18, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 0]}, + "faces": { + "north": {"uv": [0, 4.5, 4, 7.75], "texture": "#1"}, + "south": {"uv": [4, 4, 8, 7.25], "texture": "#1", "cullface": "south"} + } + }, + { + "from": [0, 5, 0], + "to": [0.01, 18, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 0]}, + "faces": { + "east": {"uv": [0, 4.5, 4, 7.75], "texture": "#1"}, + "west": {"uv": [4, 4, 8, 7.25], "texture": "#1", "cullface": "west"} + } + }, + { + "from": [0, 18, 0], + "to": [16, 18, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 0]}, + "faces": { + "up": {"uv": [8, 4, 4, 0], "texture": "#1", "cullface": "up"}, + "down": {"uv": [4, 0, 8, 4], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -135, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, -135, 0], + "translation": [0, -2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "hushweed", + "origin": [0, 6, 0], + "scope": 0, + "color": 0, + "children": [ + { + "name": "top_part", + "origin": [0, 6, 0], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "base_tree", + "origin": [0, 2, 0], + "scope": 0, + "color": 0, + "children": [5, 6, 7, 8, 9, 10, 11] + } + ] + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/infested_coarse_dirt.json b/common/src/main/resources/assets/antarchy/models/block/infested_coarse_dirt.json new file mode 100644 index 00000000..3a6f548f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/infested_coarse_dirt.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "minecraft:block/coarse_dirt" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/infested_rooted_dirt.json b/common/src/main/resources/assets/antarchy/models/block/infested_rooted_dirt.json new file mode 100644 index 00000000..6b194564 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/infested_rooted_dirt.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "minecraft:block/rooted_dirt" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/large_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/models/block/large_blood_crystal_bud.json new file mode 100644 index 00000000..51644653 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/large_blood_crystal_bud.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/blood_crystal_bud_stage2" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/block/medium_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/models/block/medium_blood_crystal_bud.json new file mode 100644 index 00000000..890834ec --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/medium_blood_crystal_bud.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/blood_crystal_bud_stage1" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_log.json b/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_log.json new file mode 100644 index 00000000..11beeab7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_log", + "textures": { + "end": "antarchy:block/ouranwood/mossy_ouranwood_log_top", + "side": "antarchy:block/ouranwood/mossy_ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_log_horizontal.json b/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_log_horizontal.json new file mode 100644 index 00000000..8e83345f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_log_horizontal", + "textures": { + "end": "antarchy:block/ouranwood/mossy_ouranwood_log_top", + "side": "antarchy:block/ouranwood/mossy_ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_wood.json b/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_wood.json new file mode 100644 index 00000000..a776ef3b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/mossy_ouranwood_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_wood", + "textures": { + "end": "antarchy:block/ouranwood/mossy_ouranwood_log", + "side": "antarchy:block/ouranwood/mossy_ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite.json b/common/src/main/resources/assets/antarchy/models/block/nyxite.json new file mode 100644 index 00000000..6637759f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_slab.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_slab.json new file mode 100644 index 00000000..42360568 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/nyxite_bricks", + "side": "antarchy:block/nyxite_bricks", + "top": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_slab_top.json new file mode 100644 index 00000000..47f6963a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/nyxite_bricks", + "side": "antarchy:block/nyxite_bricks", + "top": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs.json new file mode 100644 index 00000000..5f73e857 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "antarchy:block/nyxite_bricks", + "side": "antarchy:block/nyxite_bricks", + "top": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs_inner.json new file mode 100644 index 00000000..911e0f29 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "antarchy:block/nyxite_bricks", + "side": "antarchy:block/nyxite_bricks", + "top": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs_outer.json new file mode 100644 index 00000000..6e82034c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "antarchy:block/nyxite_bricks", + "side": "antarchy:block/nyxite_bricks", + "top": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_inventory.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_inventory.json new file mode 100644 index 00000000..4d8717e8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_post.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_post.json new file mode 100644 index 00000000..91848a19 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_side.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_side.json new file mode 100644 index 00000000..4e199f7a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_side_tall.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_side_tall.json new file mode 100644 index 00000000..f4558564 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_bricks.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_bricks.json new file mode 100644 index 00000000..dc538400 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/nyxite_bricks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_slab.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_slab.json new file mode 100644 index 00000000..cc734146 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/nyxite", + "side": "antarchy:block/nyxite", + "top": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_slab_top.json new file mode 100644 index 00000000..b23490da --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/nyxite", + "side": "antarchy:block/nyxite", + "top": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_base.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_base.json new file mode 100644 index 00000000..324ad02a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_base.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_down_base" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_frustum.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_frustum.json new file mode 100644 index 00000000..33f7e49b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_frustum.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_down_frustum" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_middle.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_middle.json new file mode 100644 index 00000000..f680cf37 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_middle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_down_middle" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_tip.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_tip.json new file mode 100644 index 00000000..c52426e5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_tip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_down_tip" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_tip_merge.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_tip_merge.json new file mode 100644 index 00000000..3b870c2d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_down_tip_merge.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_down_tip_merge" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_base.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_base.json new file mode 100644 index 00000000..f1622055 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_base.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_up_base" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_frustum.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_frustum.json new file mode 100644 index 00000000..bf5055d4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_frustum.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_up_frustum" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_middle.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_middle.json new file mode 100644 index 00000000..93478e1a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_middle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_up_middle" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_tip.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_tip.json new file mode 100644 index 00000000..6ba2456d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_tip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_up_tip" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_tip_merge.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_tip_merge.json new file mode 100644 index 00000000..79ff8e5e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_spike_up_tip_merge.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pointed_dripstone", + "textures": { + "cross": "antarchy:block/nyxite_spike/nyxite_spike_up_tip_merge" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs.json new file mode 100644 index 00000000..1ebc7b46 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "antarchy:block/nyxite", + "side": "antarchy:block/nyxite", + "top": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs_inner.json new file mode 100644 index 00000000..7aff7e8c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "antarchy:block/nyxite", + "side": "antarchy:block/nyxite", + "top": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs_outer.json new file mode 100644 index 00000000..9154c234 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "antarchy:block/nyxite", + "side": "antarchy:block/nyxite", + "top": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_inventory.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_inventory.json new file mode 100644 index 00000000..54cf0e66 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_post.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_post.json new file mode 100644 index 00000000..30d68af6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_side.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_side.json new file mode 100644 index 00000000..4b34ab08 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_side_tall.json b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_side_tall.json new file mode 100644 index 00000000..925b97c9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/nyxite_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "antarchy:block/nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/orange_milkweed_bottom.json b/common/src/main/resources/assets/antarchy/models/block/orange_milkweed_bottom.json new file mode 100644 index 00000000..3cbf3ff0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/orange_milkweed_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/milkweed/orange_milkweed_bottom" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/orange_milkweed_top.json b/common/src/main/resources/assets/antarchy/models/block/orange_milkweed_top.json new file mode 100644 index 00000000..0f8fda20 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/orange_milkweed_top.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/milkweed/orange_milkweed_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_acorn_hanging.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_acorn_hanging.json new file mode 100644 index 00000000..296460b7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_acorn_hanging.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/ouranwood/ouranwood_acorn_hanging" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_button.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_button.json new file mode 100644 index 00000000..97df113b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_button.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_button", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_button_inventory.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_button_inventory.json new file mode 100644 index 00000000..a8de4c3c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_button_inventory", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_button_pressed.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_button_pressed.json new file mode 100644 index 00000000..4f6ef9fe --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_button_pressed", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_left.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_left.json new file mode 100644 index 00000000..d941bca9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_left.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_left_open.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_left_open.json new file mode 100644 index 00000000..f8cd5200 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_left_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left_open", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_right.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_right.json new file mode 100644 index 00000000..79b6d0b3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_right.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_right_open.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_right_open.json new file mode 100644 index 00000000..043a2ede --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_bottom_right_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right_open", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_left.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_left.json new file mode 100644 index 00000000..b4f3f38b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_left.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_left", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_left_open.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_left_open.json new file mode 100644 index 00000000..858bf9ae --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_left_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_left_open", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_right.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_right.json new file mode 100644 index 00000000..151d8b62 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_right.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_right", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_right_open.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_right_open.json new file mode 100644 index 00000000..c188f406 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_door_top_right_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_right_open", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_door_bottom", + "top": "antarchy:block/ouranwood/ouranwood_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate.json new file mode 100644 index 00000000..95ed974c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_fence_gate", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_open.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_open.json new file mode 100644 index 00000000..d1b0f1a6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_open", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_wall.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_wall.json new file mode 100644 index 00000000..e5694ff1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_wall", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_wall_open.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_wall_open.json new file mode 100644 index 00000000..4f3aa7e6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_fence_gate_wall_open", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_inventory.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_inventory.json new file mode 100644 index 00000000..753fb466 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_fence_inventory", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_post.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_post.json new file mode 100644 index 00000000..c2790576 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_fence_post", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_side.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_side.json new file mode 100644 index 00000000..6c422b2e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_fence_side", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_leaves.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_leaves.json new file mode 100644 index 00000000..0533c89f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/leaves", + "textures": { + "all": "antarchy:block/ouranwood/ouranwood_leaves" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_log.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_log.json new file mode 100644 index 00000000..a0f32736 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_log", + "textures": { + "end": "antarchy:block/ouranwood/ouranwood_log_top", + "side": "antarchy:block/ouranwood/ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_log_horizontal.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_log_horizontal.json new file mode 100644 index 00000000..a4508f80 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_log_horizontal", + "textures": { + "end": "antarchy:block/ouranwood/ouranwood_log_top", + "side": "antarchy:block/ouranwood/ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_planks.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_planks.json new file mode 100644 index 00000000..fc7df4df --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_pressure_plate.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_pressure_plate.json new file mode 100644 index 00000000..3a7daf8c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_pressure_plate", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_pressure_plate_down.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_pressure_plate_down.json new file mode 100644 index 00000000..0e12de94 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_pressure_plate_down", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_0.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_0.json new file mode 100644 index 00000000..e02c3613 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/ouranwood/ouranwood_sapling_0" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_1.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_1.json new file mode 100644 index 00000000..133cfeab --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/ouranwood/ouranwood_sapling_1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_2.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_2.json new file mode 100644 index 00000000..772f5ff3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_sapling_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/ouranwood/ouranwood_sapling_2" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_slab.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_slab.json new file mode 100644 index 00000000..5ddb1ba4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_slab", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_planks", + "side": "antarchy:block/ouranwood/ouranwood_planks", + "top": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_slab_top.json new file mode 100644 index 00000000..26f29b0b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_slab_top", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_planks", + "side": "antarchy:block/ouranwood/ouranwood_planks", + "top": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs.json new file mode 100644 index 00000000..265f393e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_stairs", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_planks", + "side": "antarchy:block/ouranwood/ouranwood_planks", + "top": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs_inner.json new file mode 100644 index 00000000..cf1003fc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_stairs_inner", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_planks", + "side": "antarchy:block/ouranwood/ouranwood_planks", + "top": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs_outer.json new file mode 100644 index 00000000..dce6dad8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/jungle_stairs_outer", + "textures": { + "bottom": "antarchy:block/ouranwood/ouranwood_planks", + "side": "antarchy:block/ouranwood/ouranwood_planks", + "top": "antarchy:block/ouranwood/ouranwood_planks" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_bottom.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_bottom.json new file mode 100644 index 00000000..42987311 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_bottom", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_open.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_open.json new file mode 100644 index 00000000..1f8066d3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_open", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_top.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_top.json new file mode 100644 index 00000000..47f4c80a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_top", + "textures": { + "texture": "antarchy:block/ouranwood/ouranwood_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/ouranwood_wood.json b/common/src/main/resources/assets/antarchy/models/block/ouranwood_wood.json new file mode 100644 index 00000000..67ddab40 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/ouranwood_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_wood", + "textures": { + "end": "antarchy:block/ouranwood/ouranwood_log", + "side": "antarchy:block/ouranwood/ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/pale_nyxite.json b/common/src/main/resources/assets/antarchy/models/block/pale_nyxite.json new file mode 100644 index 00000000..f9e5ce6d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/pale_nyxite.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/smooth_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/pink_milkweed_bottom.json b/common/src/main/resources/assets/antarchy/models/block/pink_milkweed_bottom.json new file mode 100644 index 00000000..dabb59ce --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/pink_milkweed_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/milkweed/pink_milkweed_bottom" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/pink_milkweed_top.json b/common/src/main/resources/assets/antarchy/models/block/pink_milkweed_top.json new file mode 100644 index 00000000..a1e120b5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/pink_milkweed_top.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/milkweed/pink_milkweed_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_antimetal.json b/common/src/main/resources/assets/antarchy/models/block/polished_antimetal.json new file mode 100644 index 00000000..3a85176d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_antimetal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "antarchy:block/antimetal/polished_antimetal_block_top", + "side": "antarchy:block/antimetal/polished_antimetal_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_antimetal_horizontal.json b/common/src/main/resources/assets/antarchy/models/block/polished_antimetal_horizontal.json new file mode 100644 index 00000000..13832266 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_antimetal_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "antarchy:block/antimetal/polished_antimetal_block_top", + "side": "antarchy:block/antimetal/polished_antimetal_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite.json new file mode 100644 index 00000000..9ec66591 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_slab.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_slab.json new file mode 100644 index 00000000..b75c949b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/polished_nyxite", + "side": "antarchy:block/polished_nyxite", + "top": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_slab_top.json new file mode 100644 index 00000000..056a5f57 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/polished_nyxite", + "side": "antarchy:block/polished_nyxite", + "top": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs.json new file mode 100644 index 00000000..73de052b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "antarchy:block/polished_nyxite", + "side": "antarchy:block/polished_nyxite", + "top": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs_inner.json new file mode 100644 index 00000000..81450c7a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "antarchy:block/polished_nyxite", + "side": "antarchy:block/polished_nyxite", + "top": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs_outer.json new file mode 100644 index 00000000..adf0226f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "antarchy:block/polished_nyxite", + "side": "antarchy:block/polished_nyxite", + "top": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_inventory.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_inventory.json new file mode 100644 index 00000000..03a24649 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_post.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_post.json new file mode 100644 index 00000000..9c58115f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_side.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_side.json new file mode 100644 index 00000000..87ddc5fd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_side_tall.json b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_side_tall.json new file mode 100644 index 00000000..c2370e25 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/polished_nyxite_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "antarchy:block/polished_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/potent_nyxite.json b/common/src/main/resources/assets/antarchy/models/block/potent_nyxite.json new file mode 100644 index 00000000..0498f802 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/potent_nyxite.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/potent_nyxite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/rainbow_ant_nest.json b/common/src/main/resources/assets/antarchy/models/block/rainbow_ant_nest.json new file mode 100644 index 00000000..a48c94b0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/rainbow_ant_nest.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "particle": "antarchy:block/rainbow_ant_nest/rainbow_ant_nest", + "down": "minecraft:block/coarse_dirt", + "up": "antarchy:block/rainbow_ant_nest/rainbow_ant_nest_top", + "north": "antarchy:block/rainbow_ant_nest/rainbow_ant_nest", + "south": "antarchy:block/rainbow_ant_nest/rainbow_ant_nest", + "west": "antarchy:block/rainbow_ant_nest/rainbow_ant_nest", + "east": "antarchy:block/rainbow_ant_nest/rainbow_ant_nest" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/raw_titanium_block.json b/common/src/main/resources/assets/antarchy/models/block/raw_titanium_block.json new file mode 100644 index 00000000..0e9386f5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/raw_titanium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/raw_titanium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/raw_uranium_block.json b/common/src/main/resources/assets/antarchy/models/block/raw_uranium_block.json new file mode 100644 index 00000000..741fa759 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/raw_uranium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/raw_uranium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/red_ant_nest.json b/common/src/main/resources/assets/antarchy/models/block/red_ant_nest.json new file mode 100644 index 00000000..b8200917 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/red_ant_nest.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "particle": "minecraft:block/magma", + "down": "minecraft:block/magma", + "up": "antarchy:block/red_ant_nest_top", + "north": "minecraft:block/magma", + "south": "minecraft:block/magma", + "west": "minecraft:block/magma", + "east": "minecraft:block/magma" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_1.json b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_1.json new file mode 100644 index 00000000..106515c2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_turtle_egg", + "textures": { + "all": "antarchy:block/bed_bug_egg_slightly_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_2.json b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_2.json new file mode 100644 index 00000000..18be8a68 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_two_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg_slightly_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_3.json b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_3.json new file mode 100644 index 00000000..94b5cf0a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_3.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_three_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg_slightly_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_4.json b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_4.json new file mode 100644 index 00000000..22bf085e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/slightly_cracked_bed_bug_egg_4.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_four_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg_slightly_cracked", + "particle": "antarchy:block/bed_bug_egg_slightly_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/small_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/models/block/small_blood_crystal_bud.json new file mode 100644 index 00000000..d09e7079 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/small_blood_crystal_bud.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/blood_crystal_bud_stage0" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone.json new file mode 100644 index 00000000..6db80a35 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_slab.json new file mode 100644 index 00000000..45ebaa10 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/dream_sandstone_top", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_slab_top.json b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_slab_top.json new file mode 100644 index 00000000..118ff1c9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/dream_sandstone_top", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs.json b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs.json new file mode 100644 index 00000000..1a4221fe --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/dream_sandstone_top", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs_inner.json b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs_inner.json new file mode 100644 index 00000000..5fd1d91c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/dream_sandstone_top", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs_outer.json b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs_outer.json new file mode 100644 index 00000000..515dc0d5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/smooth_dream_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "antarchy:block/dream_sandstone_top", + "side": "antarchy:block/dream_sandstone_top", + "top": "antarchy:block/dream_sandstone_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_log.json b/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_log.json new file mode 100644 index 00000000..af9e1090 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/stripped_jungle_log", + "textures": { + "end": "antarchy:block/ouranwood/stripped_ouranwood_log_top", + "side": "antarchy:block/ouranwood/stripped_ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_log_horizontal.json b/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_log_horizontal.json new file mode 100644 index 00000000..8ad71fdb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/stripped_jungle_log_horizontal", + "textures": { + "end": "antarchy:block/ouranwood/stripped_ouranwood_log_top", + "side": "antarchy:block/ouranwood/stripped_ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_wood.json b/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_wood.json new file mode 100644 index 00000000..7449b423 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/stripped_ouranwood_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/stripped_jungle_wood", + "textures": { + "end": "antarchy:block/ouranwood/stripped_ouranwood_log", + "side": "antarchy:block/ouranwood/stripped_ouranwood_log" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/termite_nest.json b/common/src/main/resources/assets/antarchy/models/block/termite_nest.json new file mode 100644 index 00000000..9b9976b0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/termite_nest.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "front": "antarchy:block/termite_nest_front", + "side": "antarchy:block/termite_nest_side", + "top": "antarchy:block/termite_nest_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bars_cap.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_cap.json new file mode 100644 index 00000000..159b628f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_cap.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_cap", + "textures": { + "bars": "antarchy:block/titanium/titanium_bars", + "edge": "antarchy:block/titanium/titanium_bars", + "particle": "antarchy:block/titanium/titanium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bars_cap_alt.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_cap_alt.json new file mode 100644 index 00000000..8aaad36e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_cap_alt.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_cap_alt", + "textures": { + "bars": "antarchy:block/titanium/titanium_bars", + "edge": "antarchy:block/titanium/titanium_bars", + "particle": "antarchy:block/titanium/titanium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bars_post.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_post.json new file mode 100644 index 00000000..209e0b8f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_post.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_post", + "textures": { + "bars": "antarchy:block/titanium/titanium_bars", + "edge": "antarchy:block/titanium/titanium_bars", + "particle": "antarchy:block/titanium/titanium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bars_post_ends.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_post_ends.json new file mode 100644 index 00000000..73f906e8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_post_ends.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_post_ends", + "textures": { + "bars": "antarchy:block/titanium/titanium_bars", + "edge": "antarchy:block/titanium/titanium_bars", + "particle": "antarchy:block/titanium/titanium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bars_side.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_side.json new file mode 100644 index 00000000..6dd94768 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_side.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_side", + "textures": { + "bars": "antarchy:block/titanium/titanium_bars", + "edge": "antarchy:block/titanium/titanium_bars", + "particle": "antarchy:block/titanium/titanium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bars_side_alt.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_side_alt.json new file mode 100644 index 00000000..effab662 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bars_side_alt.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_side_alt", + "textures": { + "bars": "antarchy:block/titanium/titanium_bars", + "edge": "antarchy:block/titanium/titanium_bars", + "particle": "antarchy:block/titanium/titanium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_block.json b/common/src/main/resources/assets/antarchy/models/block/titanium_block.json new file mode 100644 index 00000000..dbf9df5e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/titanium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bulb.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb.json new file mode 100644 index 00000000..f5cc892c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/titanium_bulb" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_lit.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_lit.json new file mode 100644 index 00000000..62b627b5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_lit.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/titanium_bulb_lit" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_lit_powered.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_lit_powered.json new file mode 100644 index 00000000..3080c7e1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_lit_powered.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/titanium_bulb_lit_powered" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_powered.json b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_powered.json new file mode 100644 index 00000000..53d6e70d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_bulb_powered.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/titanium_bulb_powered" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_left.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_left.json new file mode 100644 index 00000000..34c89261 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_left.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_left_open.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_left_open.json new file mode 100644 index 00000000..2a6489a0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_left_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left_open", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_right.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_right.json new file mode 100644 index 00000000..e1e441ba --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_right.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_right_open.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_right_open.json new file mode 100644 index 00000000..f82ace17 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_bottom_right_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right_open", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_left.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_left.json new file mode 100644 index 00000000..2ff36a4a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_left.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_left", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_left_open.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_left_open.json new file mode 100644 index 00000000..1c110f59 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_left_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_left_open", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_right.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_right.json new file mode 100644 index 00000000..977f13ff --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_right.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_right", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_right_open.json b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_right_open.json new file mode 100644 index 00000000..9afdcc0d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_door_top_right_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_right_open", + "textures": { + "bottom": "antarchy:block/titanium/titanium_door_bottom", + "top": "antarchy:block/titanium/titanium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_ore.json b/common/src/main/resources/assets/antarchy/models/block/titanium_ore.json new file mode 100644 index 00000000..32e65a27 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/titanium/titanium_ore" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_bottom.json b/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_bottom.json new file mode 100644 index 00000000..9f4ad0dc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_bottom", + "textures": { + "texture": "antarchy:block/titanium/titanium_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_open.json b/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_open.json new file mode 100644 index 00000000..3b405ba6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_open", + "textures": { + "texture": "antarchy:block/titanium/titanium_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_top.json b/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_top.json new file mode 100644 index 00000000..a4173dbe --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/titanium_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_top", + "textures": { + "texture": "antarchy:block/titanium/titanium_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/torchflower_bush_bottom.json b/common/src/main/resources/assets/antarchy/models/block/torchflower_bush_bottom.json new file mode 100644 index 00000000..b39440d2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/torchflower_bush_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/torchflower_bush_bottom" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/torchflower_bush_top.json b/common/src/main/resources/assets/antarchy/models/block/torchflower_bush_top.json new file mode 100644 index 00000000..f50f0a28 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/torchflower_bush_top.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/torchflower_bush_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/triffid_goo_block.json b/common/src/main/resources/assets/antarchy/models/block/triffid_goo_block.json new file mode 100644 index 00000000..514540a6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/triffid_goo_block.json @@ -0,0 +1,71 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/triffid_goo_block", + "outer": "antarchy:block/triffid_goo_block", + "inner": "antarchy:block/triffid_goo_block" + }, + "display": { + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 0, 0], + "scale": [0.625, 0.625, 0.625] + }, + "ground": { + "rotation": [0, 0, 0], + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "fixed": { + "rotation": [0, 0, 0], + "translation": [0, 0, 0], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "translation": [0, 0, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "translation": [0, 0, 0], + "scale": [0.4, 0.4, 0.4] + } + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "down": { "texture": "#outer" }, + "up": { "texture": "#outer" }, + "north": { "texture": "#outer" }, + "south": { "texture": "#outer" }, + "west": { "texture": "#outer" }, + "east": { "texture": "#outer" } + } + }, + { + "from": [2, 2, 2], + "to": [14, 14, 14], + "faces": { + "down": { "texture": "#inner" }, + "up": { "texture": "#inner" }, + "north": { "texture": "#inner" }, + "south": { "texture": "#inner" }, + "west": { "texture": "#inner" }, + "east": { "texture": "#inner" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/umbral_moss_block.json b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_block.json new file mode 100644 index 00000000..cb1afbe3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/umbral_moss/umbral_moss_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet.json b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet.json new file mode 100644 index 00000000..81706524 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/carpet", + "textures": { + "wool": "antarchy:block/umbral_moss/umbral_moss_carpet" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet_side_small.json b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet_side_small.json new file mode 100644 index 00000000..e943626d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet_side_small.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/mossy_carpet_side", + "textures": { + "side": "antarchy:block/umbral_moss/umbral_moss_carpet_side_small" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet_side_tall.json b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet_side_tall.json new file mode 100644 index 00000000..89b71d29 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/umbral_moss_carpet_side_tall.json @@ -0,0 +1,18 @@ +{ + "ambientocclusion": true, + "textures": { + "particle": "#side", + "side": "antarchy:block/umbral_moss/umbral_moss_carpet_side_tall" + }, + "elements": [ + { + "from": [0, 0, 0.1], + "to": [16, 16, 0.1], + "shade": true, + "faces": { + "north": {"uv": [16, 0, 0, 16], "texture": "#side"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#side"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bars_cap.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_cap.json new file mode 100644 index 00000000..496e78fd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_cap.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_cap", + "textures": { + "bars": "antarchy:block/uranium/uranium_bars", + "edge": "antarchy:block/uranium/uranium_bars", + "particle": "antarchy:block/uranium/uranium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bars_cap_alt.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_cap_alt.json new file mode 100644 index 00000000..2f7715c7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_cap_alt.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_cap_alt", + "textures": { + "bars": "antarchy:block/uranium/uranium_bars", + "edge": "antarchy:block/uranium/uranium_bars", + "particle": "antarchy:block/uranium/uranium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bars_post.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_post.json new file mode 100644 index 00000000..76d81070 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_post.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_post", + "textures": { + "bars": "antarchy:block/uranium/uranium_bars", + "edge": "antarchy:block/uranium/uranium_bars", + "particle": "antarchy:block/uranium/uranium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bars_post_ends.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_post_ends.json new file mode 100644 index 00000000..61474e07 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_post_ends.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_post_ends", + "textures": { + "bars": "antarchy:block/uranium/uranium_bars", + "edge": "antarchy:block/uranium/uranium_bars", + "particle": "antarchy:block/uranium/uranium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bars_side.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_side.json new file mode 100644 index 00000000..3f9eb6ae --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_side.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_side", + "textures": { + "bars": "antarchy:block/uranium/uranium_bars", + "edge": "antarchy:block/uranium/uranium_bars", + "particle": "antarchy:block/uranium/uranium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bars_side_alt.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_side_alt.json new file mode 100644 index 00000000..5483fd01 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bars_side_alt.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/iron_bars_side_alt", + "textures": { + "bars": "antarchy:block/uranium/uranium_bars", + "edge": "antarchy:block/uranium/uranium_bars", + "particle": "antarchy:block/uranium/uranium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_block.json b/common/src/main/resources/assets/antarchy/models/block/uranium_block.json new file mode 100644 index 00000000..c291e485 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/uranium_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bulb.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb.json new file mode 100644 index 00000000..2d589a1d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/uranium_bulb" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_lit.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_lit.json new file mode 100644 index 00000000..7bf3f014 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_lit.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/uranium_bulb_lit" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_lit_powered.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_lit_powered.json new file mode 100644 index 00000000..d3c453cb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_lit_powered.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/uranium_bulb_lit_powered" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_powered.json b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_powered.json new file mode 100644 index 00000000..33ffb62b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_bulb_powered.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/uranium_bulb_powered" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_left.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_left.json new file mode 100644 index 00000000..14ea5d43 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_left.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_left_open.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_left_open.json new file mode 100644 index 00000000..ff86e3b2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_left_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_left_open", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_right.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_right.json new file mode 100644 index 00000000..bddf23a4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_right.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_right_open.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_right_open.json new file mode 100644 index 00000000..8602489c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_bottom_right_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_bottom_right_open", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_left.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_left.json new file mode 100644 index 00000000..4049f25b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_left.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_left", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_left_open.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_left_open.json new file mode 100644 index 00000000..7a1c43e4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_left_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_left_open", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_right.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_right.json new file mode 100644 index 00000000..e78f84f1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_right.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_right", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_right_open.json b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_right_open.json new file mode 100644 index 00000000..ef6dad63 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_door_top_right_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/jungle_door_top_right_open", + "textures": { + "bottom": "antarchy:block/uranium/uranium_door_bottom", + "top": "antarchy:block/uranium/uranium_door_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_ore.json b/common/src/main/resources/assets/antarchy/models/block/uranium_ore.json new file mode 100644 index 00000000..f5442c95 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/uranium/uranium_ore" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_bottom.json b/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_bottom.json new file mode 100644 index 00000000..d88e0a20 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_bottom", + "textures": { + "texture": "antarchy:block/uranium/uranium_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_open.json b/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_open.json new file mode 100644 index 00000000..431670f8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_open", + "textures": { + "texture": "antarchy:block/uranium/uranium_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_top.json b/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_top.json new file mode 100644 index 00000000..ca9f0562 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/uranium_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/jungle_trapdoor_top", + "textures": { + "texture": "antarchy:block/uranium/uranium_trapdoor" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_1.json b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_1.json new file mode 100644 index 00000000..63a7cc48 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_turtle_egg", + "textures": { + "all": "antarchy:block/bed_bug_egg_very_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_2.json b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_2.json new file mode 100644 index 00000000..932db7c2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_two_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg_very_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_3.json b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_3.json new file mode 100644 index 00000000..bd9248a9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_3.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_three_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg_very_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_4.json b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_4.json new file mode 100644 index 00000000..4a9db1e1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/very_cracked_bed_bug_egg_4.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_four_turtle_eggs", + "textures": { + "all": "antarchy:block/bed_bug_egg_very_cracked", + "particle": "antarchy:block/bed_bug_egg_very_cracked" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/wasp_nest.json b/common/src/main/resources/assets/antarchy/models/block/wasp_nest.json new file mode 100644 index 00000000..0fd16cdd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/wasp_nest.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "particle": "antarchy:block/wasp_nest/wasp_nest_side", + "front": "antarchy:block/wasp_nest/wasp_nest_front", + "side": "antarchy:block/wasp_nest/wasp_nest_side", + "top": "antarchy:block/wasp_nest/wasp_nest_top_bottom" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/antimetal.json b/common/src/main/resources/assets/antarchy/models/item/antimetal.json new file mode 100644 index 00000000..a0ddfbbd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/antimetal.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/antimetal" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/antimetal_scaffolding.json b/common/src/main/resources/assets/antarchy/models/item/antimetal_scaffolding.json new file mode 100644 index 00000000..0e265e9c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/antimetal_scaffolding.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/antimetal_scaffolding_stable" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/apple_cow_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/apple_cow_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/apple_cow_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/basilisk_dagger.json b/common/src/main/resources/assets/antarchy/models/item/basilisk_dagger.json new file mode 100644 index 00000000..de8d1590 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/basilisk_dagger.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/basilisk_dagger" + }, + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + 90, + 0 + ], + "translation": [ + 0, + 4.0, + 0.5 + ], + "scale": [ + 0.85, + 0.85, + 0.85 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 0, + 4.0, + 0.5 + ], + "scale": [ + 0.85, + 0.85, + 0.85 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + 90, + 25 + ], + "translation": [ + 1.13, + 3.2, + 1.13 + ], + "scale": [ + 0.68, + 0.68, + 0.68 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 0, + -90, + -25 + ], + "translation": [ + 1.13, + 3.2, + 1.13 + ], + "scale": [ + 0.68, + 0.68, + 0.68 + ] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/basilisk_fang.json b/common/src/main/resources/assets/antarchy/models/item/basilisk_fang.json new file mode 100644 index 00000000..830e441b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/basilisk_fang.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/basilisk_fang" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/basilisk_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/basilisk_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/basilisk_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/battle_axe_gui.json b/common/src/main/resources/assets/antarchy/models/item/battle_axe_gui.json new file mode 100644 index 00000000..01714e10 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/battle_axe_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/battle_axe/battle_axe_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/battle_axe_held.json b/common/src/main/resources/assets/antarchy/models/item/battle_axe_held.json new file mode 100644 index 00000000..1c467d5f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/battle_axe_held.json @@ -0,0 +1,131 @@ +{ + "parent": "builtin/entity", + "texture_size": [ + 64, + 64 + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + 90, + 0 + ], + "translation": [ + 0, + 9, + 1.5 + ], + "scale": [ + 0.7, + 0.7, + 0.7 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + 90, + 0 + ], + "translation": [ + 0, + 9, + 1.5 + ], + "scale": [ + 0.7, + 0.7, + 0.7 + ] + }, + "firstperson_righthand": { + "rotation": [ + -5, + -90, + 0 + ], + "translation": [ + 3.13, + 1.13, + -2.13 + ], + "scale": [ + 0.68, + 0.68, + 0.68 + ] + }, + "firstperson_lefthand": { + "rotation": [ + -5, + -90, + 0 + ], + "translation": [ + 3.13, + 1.13, + -2.13 + ], + "scale": [ + 0.68, + 0.68, + 0.68 + ] + }, + "ground": { + "rotation": [ + 90, + 0, + 0 + ], + "scale": [ + 0.2, + 0.2, + 0.2 + ] + }, + "gui": { + "rotation": [ + 0, + 0, + -45 + ], + "translation": [ + -0.25, + -0.25, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "fixed": { + "rotation": [ + 0, + 0, + 45 + ], + "translation": [ + 0.75, + -0.25, + 0 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] + }, + "on_shelf": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/item/bed_bug_egg.json b/common/src/main/resources/assets/antarchy/models/item/bed_bug_egg.json new file mode 100644 index 00000000..ac981006 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bed_bug_egg.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/bed_bug_egg_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/bed_bug_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/bed_bug_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bed_bug_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/big_bertha_blade.json b/common/src/main/resources/assets/antarchy/models/item/big_bertha_blade.json new file mode 100644 index 00000000..5beec95a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/big_bertha_blade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/big_bertha/big_bertha_blade" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/big_bertha_gui.json b/common/src/main/resources/assets/antarchy/models/item/big_bertha_gui.json new file mode 100644 index 00000000..05aa85a1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/big_bertha_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/big_bertha/big_bertha_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/big_bertha_handle.json b/common/src/main/resources/assets/antarchy/models/item/big_bertha_handle.json new file mode 100644 index 00000000..34232b7d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/big_bertha_handle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/big_bertha/big_bertha_handle" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/big_bertha_held.json b/common/src/main/resources/assets/antarchy/models/item/big_bertha_held.json new file mode 100644 index 00000000..57840f2e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/big_bertha_held.json @@ -0,0 +1,128 @@ +{ + "parent": "builtin/entity", + "texture_size": [ + 64, + 64 + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + 90, + 0 + ], + "translation": [ + 0, + 21.5, + 1.5 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 0, + 21.5, + 1.5 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + -90, + 5 + ], + "translation": [ + 1.25, + 6.25, + 1.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 0, + 90, + -5 + ], + "translation": [ + 1.25, + 6.25, + 1.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "rotation": [ + -90, + 0, + 0 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "gui": { + "rotation": [ + 0, + 0, + -45 + ] + }, + "head": { + "translation": [ + 0, + 45.25, + 0 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "fixed": { + "rotation": [ + 0, + 0, + 45 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "on_shelf": { + "scale": [ + 2, + 2, + 2 + ] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/big_bertha_hilt.json b/common/src/main/resources/assets/antarchy/models/item/big_bertha_hilt.json new file mode 100644 index 00000000..49f95b03 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/big_bertha_hilt.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/big_bertha/big_bertha_guard" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_apple.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_apple.json new file mode 100644 index 00000000..b922eb72 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_apple.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/blood_crystal_apple" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_block.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_block.json new file mode 100644 index 00000000..654c18ae --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_block.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/blood_crystal_block" +} + diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_boots.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_boots.json new file mode 100644 index 00000000..e5cd0407 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/blood_crystal/blood_crystal_boots" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_chestplate.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_chestplate.json new file mode 100644 index 00000000..953c5b96 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/blood_crystal/blood_crystal_chestplate" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_cluster.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_cluster.json new file mode 100644 index 00000000..7f30ee87 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_cluster.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/blood_crystal_cluster" + }, + "display": { + "head": { + "translation": [0, 14, -5] + } + } +} + diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_helmet.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_helmet.json new file mode 100644 index 00000000..a7cf7c1d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/blood_crystal/blood_crystal_helmet" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_katana.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_katana.json new file mode 100644 index 00000000..bc43f307 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_katana.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/blood_crystal_katana" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_leggings.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_leggings.json new file mode 100644 index 00000000..428b3697 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/blood_crystal/blood_crystal_leggings" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/blood_crystal_shard.json b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_shard.json new file mode 100644 index 00000000..a364ff9a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/blood_crystal_shard.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/blood_crystal_shard" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/item/bomber_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/bomber_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bomber_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/brown_ant_nest.json b/common/src/main/resources/assets/antarchy/models/item/brown_ant_nest.json new file mode 100644 index 00000000..b77e47f5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/brown_ant_nest.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/brown_ant_nest" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/brown_ant_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/brown_ant_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/brown_ant_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/brutalfly_elytra.json b/common/src/main/resources/assets/antarchy/models/item/brutalfly_elytra.json new file mode 100644 index 00000000..68051c43 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/brutalfly_elytra.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/brutalfly_wings_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/brutalfly_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/brutalfly_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/brutalfly_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/brutalfly_wing.json b/common/src/main/resources/assets/antarchy/models/item/brutalfly_wing.json new file mode 100644 index 00000000..a5a7d507 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/brutalfly_wing.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/brutalfly_wing" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/budding_blood_crystal.json b/common/src/main/resources/assets/antarchy/models/item/budding_blood_crystal.json new file mode 100644 index 00000000..715f42eb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/budding_blood_crystal.json @@ -0,0 +1,4 @@ +{ + "parent": "antarchy:block/budding_blood_crystal" +} + diff --git a/common/src/main/resources/assets/antarchy/models/item/butterfly_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/butterfly_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/butterfly_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/caterpillar_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/caterpillar_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/caterpillar_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/chiseled_dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/item/chiseled_dream_sandstone.json new file mode 100644 index 00000000..7f89ae92 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/chiseled_dream_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/chiseled_dream_sandstone" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/chiseled_nyxite.json b/common/src/main/resources/assets/antarchy/models/item/chiseled_nyxite.json new file mode 100644 index 00000000..06c286c8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/chiseled_nyxite.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/chiseled_nyxite" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/chiseled_titanium.json b/common/src/main/resources/assets/antarchy/models/item/chiseled_titanium.json new file mode 100644 index 00000000..a8f9d04d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/chiseled_titanium.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/chiseled_titanium" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/chiseled_uranium.json b/common/src/main/resources/assets/antarchy/models/item/chiseled_uranium.json new file mode 100644 index 00000000..d2a62995 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/chiseled_uranium.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/chiseled_uranium" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cloud_block.json b/common/src/main/resources/assets/antarchy/models/item/cloud_block.json new file mode 100644 index 00000000..18406638 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cloud_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cloud_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cloud_bucket.json b/common/src/main/resources/assets/antarchy/models/item/cloud_bucket.json new file mode 100644 index 00000000..f048ab2a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cloud_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/cloud_bucket" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cloud_shark_fin.json b/common/src/main/resources/assets/antarchy/models/item/cloud_shark_fin.json new file mode 100644 index 00000000..69ceebda --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cloud_shark_fin.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/cloud_shark_fin" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cloud_shark_fin_soup.json b/common/src/main/resources/assets/antarchy/models/item/cloud_shark_fin_soup.json new file mode 100644 index 00000000..bec6b015 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cloud_shark_fin_soup.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/cloud_shark_fin_soup" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cloud_shark_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/cloud_shark_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cloud_shark_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cornea_ear.json b/common/src/main/resources/assets/antarchy/models/item/cornea_ear.json new file mode 100644 index 00000000..4b0d548e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cornea_ear.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/cornea" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/item/cut_dream_sandstone.json new file mode 100644 index 00000000..003bad09 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_dream_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_dream_sandstone" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/models/item/cut_dream_sandstone_slab.json new file mode 100644 index 00000000..acb07d70 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_dream_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_dream_sandstone_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_titanium.json b/common/src/main/resources/assets/antarchy/models/item/cut_titanium.json new file mode 100644 index 00000000..967d1e1a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_titanium.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_titanium" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_titanium_slab.json b/common/src/main/resources/assets/antarchy/models/item/cut_titanium_slab.json new file mode 100644 index 00000000..8cf6c566 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_titanium_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_titanium_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_titanium_stairs.json b/common/src/main/resources/assets/antarchy/models/item/cut_titanium_stairs.json new file mode 100644 index 00000000..a00aa87a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_titanium_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_titanium_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_titanium_wall.json b/common/src/main/resources/assets/antarchy/models/item/cut_titanium_wall.json new file mode 100644 index 00000000..c3db6023 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_titanium_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_titanium_wall_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_uranium.json b/common/src/main/resources/assets/antarchy/models/item/cut_uranium.json new file mode 100644 index 00000000..cb652a83 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_uranium.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_uranium" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_uranium_slab.json b/common/src/main/resources/assets/antarchy/models/item/cut_uranium_slab.json new file mode 100644 index 00000000..06df4236 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_uranium_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_uranium_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_uranium_stairs.json b/common/src/main/resources/assets/antarchy/models/item/cut_uranium_stairs.json new file mode 100644 index 00000000..e34545a5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_uranium_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_uranium_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/cut_uranium_wall.json b/common/src/main/resources/assets/antarchy/models/item/cut_uranium_wall.json new file mode 100644 index 00000000..3bdb1efd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/cut_uranium_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/cut_uranium_wall_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/deepslate_titanium_ore.json b/common/src/main/resources/assets/antarchy/models/item/deepslate_titanium_ore.json new file mode 100644 index 00000000..29c1d14f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/deepslate_titanium_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/deepslate_titanium_ore" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/deepslate_uranium_ore.json b/common/src/main/resources/assets/antarchy/models/item/deepslate_uranium_ore.json new file mode 100644 index 00000000..1f26f6b5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/deepslate_uranium_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/deepslate_uranium_ore" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/diamond_minecart.json b/common/src/main/resources/assets/antarchy/models/item/diamond_minecart.json new file mode 100644 index 00000000..214aaab1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/diamond_minecart.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/diamond_minecart" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dr_trayaurus_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/dr_trayaurus_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dr_trayaurus_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_campfire.json b/common/src/main/resources/assets/antarchy/models/item/dream_campfire.json new file mode 100644 index 00000000..10a0b548 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_campfire.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/dream_campfire" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_lantern.json b/common/src/main/resources/assets/antarchy/models/item/dream_lantern.json new file mode 100644 index 00000000..2ddd07f4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_lantern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/dream_lantern" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_sand.json b/common/src/main/resources/assets/antarchy/models/item/dream_sand.json new file mode 100644 index 00000000..1604fa70 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/dream_sand" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone.json new file mode 100644 index 00000000..2eeab9a1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/dream_sandstone" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_slab.json new file mode 100644 index 00000000..9cbf5e62 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/dream_sandstone_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_stairs.json b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_stairs.json new file mode 100644 index 00000000..a79fbc41 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/dream_sandstone_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_wall.json b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_wall.json new file mode 100644 index 00000000..1b4b6572 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/dream_sandstone_wall_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dream_torch.json b/common/src/main/resources/assets/antarchy/models/item/dream_torch.json new file mode 100644 index 00000000..398b9e94 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dream_torch.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/dream_torch" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/duct_tape.json b/common/src/main/resources/assets/antarchy/models/item/duct_tape.json new file mode 100644 index 00000000..40518ca7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/duct_tape.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/duct_tape" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/duplicator_log.json b/common/src/main/resources/assets/antarchy/models/item/duplicator_log.json new file mode 100644 index 00000000..a8a297dd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/duplicator_log.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/duplicator_log" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/duplicator_sapling.json b/common/src/main/resources/assets/antarchy/models/item/duplicator_sapling.json new file mode 100644 index 00000000..e5da41a1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/duplicator_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:block/oak_sapling" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/easter_bunny_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/easter_bunny_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/easter_bunny_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/emperor_scorpion_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/emperor_scorpion_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/emperor_scorpion_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/emperor_scorpion_stinger.json b/common/src/main/resources/assets/antarchy/models/item/emperor_scorpion_stinger.json new file mode 100644 index 00000000..b116689a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/emperor_scorpion_stinger.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/emperor_scorpion_stinger" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/enchanted_golden_apple_cow_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/enchanted_golden_apple_cow_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/enchanted_golden_apple_cow_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown.json b/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown.json new file mode 100644 index 00000000..79ead02c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/fallen_king_crown_item" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown_item.json b/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown_item.json new file mode 100644 index 00000000..d7fcc5ca --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown_item.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/fallen_king_crown_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown_worn.json b/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown_worn.json new file mode 100644 index 00000000..60cd37f9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/fallen_king_crown_worn.json @@ -0,0 +1,83 @@ +{ + "credit": "Made with Blockbench", + "parent": "builtin/entity", + "texture_size": [32, 32], + "textures": { + "0": "antarchy:item/fallen_king_crown_item", + "particle": "antarchy:item/fallen_king_crown_item" + }, + "elements": [ + { + "from": [3.5, 0.0, 12.5], + "to": [12.5, 9.0, 12.5], + "rotation": { "angle": 0, "axis": "y", "origin": [3.5, 0.0, 3.5] }, + "faces": { + "north": { "uv": [9.0, 0.0, 4.5, 4.5], "texture": "#0" }, + "east": { "uv": [4.5, 0.0, 9.0, 4.5], "texture": "#0" }, + "south": { "uv": [4.5, 0.0, 9.0, 4.5], "texture": "#0" }, + "west": { "uv": [4.5, 0.0, 9.0, 4.5], "texture": "#0" }, + "up": { "uv": [4.5, 0.0, 9.0, 4.5], "texture": "#0" }, + "down": { "uv": [4.5, 0.0, 9.0, 4.5], "texture": "#0" } + } + }, + { + "from": [3.5, 0.0, 3.5], + "to": [3.5, 9.0, 12.5], + "rotation": { "angle": 0, "axis": "y", "origin": [3.5, 0.0, 3.5] }, + "faces": { + "north": { "uv": [4.5, 4.5, 9.0, 9.0], "texture": "#0" }, + "east": { "uv": [9.0, 4.5, 4.5, 9.0], "texture": "#0" }, + "south": { "uv": [4.5, 4.5, 9.0, 9.0], "texture": "#0" }, + "west": { "uv": [4.5, 4.5, 9.0, 9.0], "texture": "#0" }, + "up": { "uv": [4.5, 4.5, 9.0, 9.0], "texture": "#0" }, + "down": { "uv": [4.5, 4.5, 9.0, 9.0], "texture": "#0" } + } + }, + { + "from": [12.5, 0.0, 3.5], + "to": [12.5, 9.0, 12.5], + "rotation": { "angle": 0, "axis": "y", "origin": [3.5, 0.0, 3.5] }, + "faces": { + "north": { "uv": [0.0, 4.5, 4.5, 9.0], "texture": "#0" }, + "east": { "uv": [0.0, 4.5, 4.5, 9.0], "texture": "#0" }, + "south": { "uv": [0.0, 4.5, 4.5, 9.0], "texture": "#0" }, + "west": { "uv": [4.5, 4.5, 0.0, 9.0], "texture": "#0" }, + "up": { "uv": [0.0, 4.5, 4.5, 9.0], "texture": "#0" }, + "down": { "uv": [0.0, 4.5, 4.5, 9.0], "texture": "#0" } + } + }, + { + "from": [3.5, 0.0, 3.5], + "to": [12.5, 9.0, 3.5], + "rotation": { "angle": 0, "axis": "y", "origin": [3.5, 0.0, 3.5] }, + "faces": { + "north": { "uv": [0.0, 0.0, 4.5, 4.5], "texture": "#0" }, + "east": { "uv": [0.0, 0.0, 4.5, 4.5], "texture": "#0" }, + "south": { "uv": [4.5, 0.0, 0.0, 4.5], "texture": "#0" }, + "west": { "uv": [0.0, 0.0, 4.5, 4.5], "texture": "#0" }, + "up": { "uv": [0.0, 0.0, 4.5, 4.5], "texture": "#0" }, + "down": { "uv": [0.0, 0.0, 4.5, 4.5], "texture": "#0" } + } + }, + { + "from": [7.0, 5.5, 3.4], + "to": [9.0, 8.5, 3.4], + "rotation": { "angle": 0, "axis": "y", "origin": [7.0, 1.5, 3.4] }, + "faces": { + "north": { "uv": [15.0, 14.5, 16.0, 16.0], "texture": "#0" }, + "east": { "uv": [0.0, 7.0, 1.0, 8.5], "texture": "#0" }, + "south": { "uv": [1.0, 7.0, 0.0, 8.5], "texture": "#0" }, + "west": { "uv": [0.0, 7.0, 1.0, 8.5], "texture": "#0" }, + "up": { "uv": [0.0, 7.0, 1.0, 8.5], "texture": "#0" }, + "down": { "uv": [0.0, 7.0, 1.0, 8.5], "texture": "#0" } + } + } + ], + "gui_light": "front", + "display": { + "head": { + "translation": [0.0, 9.5, 0.0], + "scale": [1.7, 1.7, 1.7] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/fire_dragon_pet.json b/common/src/main/resources/assets/antarchy/models/item/fire_dragon_pet.json new file mode 100644 index 00000000..5e5b3c7f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/fire_dragon_pet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "iceandfire:item/fire_dragon_heart" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/flying_squirrel_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/flying_squirrel_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/flying_squirrel_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/golden_apple_cow_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/golden_apple_cow_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/golden_apple_cow_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/gravity_gun_gui.json b/common/src/main/resources/assets/antarchy/models/item/gravity_gun_gui.json new file mode 100644 index 00000000..490e4726 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/gravity_gun_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/gravity_gun_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/gravity_gun_held_geo.json b/common/src/main/resources/assets/antarchy/models/item/gravity_gun_held_geo.json new file mode 100644 index 00000000..5774eca1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/gravity_gun_held_geo.json @@ -0,0 +1,138 @@ +{ + "parent": "builtin/entity", + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + 0, + -90 + ], + "translation": [ + -5.25, + -1.85, + -5 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + 0, + -90 + ], + "translation": [ + -5.25, + -1.85, + -5 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "firstperson_righthand": { + "rotation": [ + 10, + 0, + 0 + ], + "translation": [ + -1, + 0, + 0.5 + ], + "scale": [ + 0.6, + 0.6, + 0.6 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 10, + 0, + 0 + ], + "translation": [ + -1, + 0, + 0.5 + ], + "scale": [ + 0.6, + 0.6, + 0.6 + ] + }, + "ground": { + "translation": [ + 0, + 2, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "gui": { + "rotation": [ + 30, + -135, + 0 + ], + "translation": [ + 0.25, + -4.75, + 0 + ], + "scale": [ + 0.85, + 0.85, + 0.85 + ] + }, + "head": { + "translation": [ + 0, + 0, + -8.25 + ] + }, + "fixed": { + "rotation": [ + 90, + 45, + 90 + ], + "translation": [ + 5.25, + 3.75, + 0 + ] + }, + "on_shelf": { + "rotation": [ + 90, + 0, + 90 + ], + "translation": [ + 8.25, + 0, + 0 + ], + "scale": [ + 1.3, + 1.3, + 1.3 + ] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/item/grow_ray_gui.json b/common/src/main/resources/assets/antarchy/models/item/grow_ray_gui.json new file mode 100644 index 00000000..62d18ca9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/grow_ray_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/growth_ray_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/grow_ray_held_geo.json b/common/src/main/resources/assets/antarchy/models/item/grow_ray_held_geo.json new file mode 100644 index 00000000..1e504bed --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/grow_ray_held_geo.json @@ -0,0 +1,37 @@ +{ + "parent": "builtin/entity", + "display": { + "thirdperson_righthand": { + "translation": [0, -2, -4], + "scale": [0.8, 0.8, 0.8] + }, + "thirdperson_lefthand": { + "translation": [0, -2, -4], + "scale": [0.8, 0.8, 0.8] + }, + "firstperson_righthand": { + "translation": [0, 1, -0.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "translation": [0, 1, -0.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, -135, 0], + "translation": [-0.25, -4.75, 0], + "scale": [0.8, 0.8, 0.8] + }, + "fixed": { + "rotation": [90, -45, 90], + "translation": [6, -3.5, 0] + }, + "on_shelf": { + "rotation": [90, 0, 90], + "translation": [7, 0, 0] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/growing_potion.json b/common/src/main/resources/assets/antarchy/models/item/growing_potion.json new file mode 100644 index 00000000..e22b7730 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/growing_potion.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/potion_overlay", + "layer1": "minecraft:item/potion" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/growth_ray_display.json b/common/src/main/resources/assets/antarchy/models/item/growth_ray_display.json new file mode 100644 index 00000000..60990bf9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/growth_ray_display.json @@ -0,0 +1,106 @@ +{ + "credit": "Made with Blockbench", + "parent": "builtin/entity", + "texture_size": [ + 64, + 64 + ], + "display": { + "thirdperson_righthand": { + "translation": [ + 0, + -2, + -4 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "thirdperson_lefthand": { + "translation": [ + 0, + -2, + -4 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "firstperson_righthand": { + "translation": [ + 0, + 1, + -0.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "translation": [ + 0, + 1, + -0.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "gui": { + "rotation": [ + 30, + -135, + 0 + ], + "translation": [ + -0.25, + -4.75, + 0 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "fixed": { + "rotation": [ + 90, + -45, + 90 + ], + "translation": [ + 6, + -3.5, + 0 + ] + }, + "on_shelf": { + "rotation": [ + 90, + 0, + 90 + ], + "translation": [ + 7, + 0, + 0 + ] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/item/honeyed_apple_cow_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/honeyed_apple_cow_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/honeyed_apple_cow_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/hushweed.json b/common/src/main/resources/assets/antarchy/models/item/hushweed.json new file mode 100644 index 00000000..ec31120b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/hushweed.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/hushweed" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ice_dragon_pet.json b/common/src/main/resources/assets/antarchy/models/item/ice_dragon_pet.json new file mode 100644 index 00000000..386807c9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ice_dragon_pet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "iceandfire:item/ice_dragon_heart" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/infested_coarse_dirt.json b/common/src/main/resources/assets/antarchy/models/item/infested_coarse_dirt.json new file mode 100644 index 00000000..a0b08b1e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/infested_coarse_dirt.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/infested_coarse_dirt" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/infested_rooted_dirt.json b/common/src/main/resources/assets/antarchy/models/item/infested_rooted_dirt.json new file mode 100644 index 00000000..6b31de82 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/infested_rooted_dirt.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/infested_rooted_dirt" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/inversion_potion.json b/common/src/main/resources/assets/antarchy/models/item/inversion_potion.json new file mode 100644 index 00000000..e22b7730 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/inversion_potion.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/potion_overlay", + "layer1": "minecraft:item/potion" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/jumpy_bug_leg.json b/common/src/main/resources/assets/antarchy/models/item/jumpy_bug_leg.json new file mode 100644 index 00000000..df0ed22b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/jumpy_bug_leg.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/jumpy_bug_leg" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/kraken_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/kraken_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/kraken_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/kraken_tooth.json b/common/src/main/resources/assets/antarchy/models/item/kraken_tooth.json new file mode 100644 index 00000000..aa4b4599 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/kraken_tooth.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/kraken_tooth" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/krakling_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/krakling_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/krakling_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/large_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/models/item/large_blood_crystal_bud.json new file mode 100644 index 00000000..4b47777e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/large_blood_crystal_bud.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/blood_crystal_bud_stage2" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/item/lightning_dragon_pet.json b/common/src/main/resources/assets/antarchy/models/item/lightning_dragon_pet.json new file mode 100644 index 00000000..52d52266 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/lightning_dragon_pet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "iceandfire:item/lightning_dragon_heart" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/lucid_eye.json b/common/src/main/resources/assets/antarchy/models/item/lucid_eye.json new file mode 100644 index 00000000..cbe7049c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/lucid_eye.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/lucid_eye" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/lucid_pearl.json b/common/src/main/resources/assets/antarchy/models/item/lucid_pearl.json new file mode 100644 index 00000000..0302efdb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/lucid_pearl.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/lucid_pearl" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/lucid_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/lucid_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/lucid_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/mantis_claw.json b/common/src/main/resources/assets/antarchy/models/item/mantis_claw.json new file mode 100644 index 00000000..52dba52f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/mantis_claw.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/mantis_claw" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/mantis_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/mantis_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/mantis_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/medium_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/models/item/medium_blood_crystal_bud.json new file mode 100644 index 00000000..08c14eec --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/medium_blood_crystal_bud.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/blood_crystal_bud_stage1" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/item/missile_squid_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/missile_squid_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/missile_squid_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/moggles.json b/common/src/main/resources/assets/antarchy/models/item/moggles.json new file mode 100644 index 00000000..d87dc332 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/moggles.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/moggles_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/molevore_nose.json b/common/src/main/resources/assets/antarchy/models/item/molevore_nose.json new file mode 100644 index 00000000..27e1dc6f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/molevore_nose.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/molevore_nose" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/molevore_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/molevore_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/molevore_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/moleworm.json b/common/src/main/resources/assets/antarchy/models/item/moleworm.json new file mode 100644 index 00000000..482371a2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/moleworm.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/moleworm" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/moleworm_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/moleworm_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/moleworm_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/mossy_ouranwood_log.json b/common/src/main/resources/assets/antarchy/models/item/mossy_ouranwood_log.json new file mode 100644 index 00000000..c18f3cac --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/mossy_ouranwood_log.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/mossy_ouranwood_log" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/mossy_ouranwood_wood.json b/common/src/main/resources/assets/antarchy/models/item/mossy_ouranwood_wood.json new file mode 100644 index 00000000..34bc7938 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/mossy_ouranwood_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/mossy_ouranwood_wood" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/mud_pie.json b/common/src/main/resources/assets/antarchy/models/item/mud_pie.json new file mode 100644 index 00000000..494f37cd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/mud_pie.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/mud_pie" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nightmare_boots.json b/common/src/main/resources/assets/antarchy/models/item/nightmare_boots.json new file mode 100644 index 00000000..f34d2af4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nightmare_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/nightmare/nightmare_boots" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nightmare_chestplate.json b/common/src/main/resources/assets/antarchy/models/item/nightmare_chestplate.json new file mode 100644 index 00000000..88e57020 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nightmare_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/nightmare/nightmare_chestplate" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nightmare_helmet.json b/common/src/main/resources/assets/antarchy/models/item/nightmare_helmet.json new file mode 100644 index 00000000..9f42a497 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nightmare_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/nightmare/nightmare_helmet" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nightmare_leggings.json b/common/src/main/resources/assets/antarchy/models/item/nightmare_leggings.json new file mode 100644 index 00000000..d5fed862 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nightmare_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/nightmare/nightmare_leggings" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nightmare_scale.json b/common/src/main/resources/assets/antarchy/models/item/nightmare_scale.json new file mode 100644 index 00000000..d76c15be --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nightmare_scale.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/nightmare/nightmare_scale" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nightmare_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/nightmare_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nightmare_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nightmare_sword.json b/common/src/main/resources/assets/antarchy/models/item/nightmare_sword.json new file mode 100644 index 00000000..be9bcde4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nightmare_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/nightmare/nightmare_sword" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite.json b/common/src/main/resources/assets/antarchy/models/item/nyxite.json new file mode 100644 index 00000000..143f41fe --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_slab.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_slab.json new file mode 100644 index 00000000..3a2eee64 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite_brick_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_stairs.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_stairs.json new file mode 100644 index 00000000..4b95bf08 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite_brick_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_wall.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_wall.json new file mode 100644 index 00000000..a8b060b1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite_brick_wall_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_bricks.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_bricks.json new file mode 100644 index 00000000..edaf5b9c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite_bricks" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_slab.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_slab.json new file mode 100644 index 00000000..02063f17 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_spike.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_spike.json new file mode 100644 index 00000000..b21e8895 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_spike.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/nyxite_spike" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_stairs.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_stairs.json new file mode 100644 index 00000000..c6ef36bf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/nyxite_wall.json b/common/src/main/resources/assets/antarchy/models/item/nyxite_wall.json new file mode 100644 index 00000000..b2373575 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/nyxite_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/nyxite_wall_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/orange_milkweed.json b/common/src/main/resources/assets/antarchy/models/item/orange_milkweed.json new file mode 100644 index 00000000..a8a862f5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/orange_milkweed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/milkweed/orange_milkweed_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_acorn.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_acorn.json new file mode 100644 index 00000000..7466a16d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_acorn.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ouranwood_acorn" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_boat.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_boat.json new file mode 100644 index 00000000..8461b879 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ouranwood_boat" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_button.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_button.json new file mode 100644 index 00000000..46875e86 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_button.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_button_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_chest_boat.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_chest_boat.json new file mode 100644 index 00000000..df53d85d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_chest_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ouranwood_chest_boat" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_door.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_door.json new file mode 100644 index 00000000..357826b8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ouranwood_door_icon" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_fence.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_fence.json new file mode 100644 index 00000000..fa5a875c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_fence_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_fence_gate.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_fence_gate.json new file mode 100644 index 00000000..d6018c89 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_fence_gate" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_hanging_sign.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_hanging_sign.json new file mode 100644 index 00000000..46e39e62 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ouranwood_hanging_sign" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_leaves.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_leaves.json new file mode 100644 index 00000000..592028d9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_leaves" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_log.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_log.json new file mode 100644 index 00000000..ab44955a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_log.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_log" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_planks.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_planks.json new file mode 100644 index 00000000..de54bdcb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_planks" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_pressure_plate.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_pressure_plate.json new file mode 100644 index 00000000..ccaf6d42 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_pressure_plate" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_sign.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_sign.json new file mode 100644 index 00000000..6501299d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ouranwood_sign" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_slab.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_slab.json new file mode 100644 index 00000000..3173397e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_stairs.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_stairs.json new file mode 100644 index 00000000..347994d2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_trapdoor.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_trapdoor.json new file mode 100644 index 00000000..4b6d352b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_trapdoor_bottom" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ouranwood_wood.json b/common/src/main/resources/assets/antarchy/models/item/ouranwood_wood.json new file mode 100644 index 00000000..18127c36 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ouranwood_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/ouranwood_wood" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/pale_nyxite.json b/common/src/main/resources/assets/antarchy/models/item/pale_nyxite.json new file mode 100644 index 00000000..aad650fe --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/pale_nyxite.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/pale_nyxite" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/pink_milkweed.json b/common/src/main/resources/assets/antarchy/models/item/pink_milkweed.json new file mode 100644 index 00000000..dbb92f79 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/pink_milkweed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/milkweed/pink_milkweed_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/polished_antimetal.json b/common/src/main/resources/assets/antarchy/models/item/polished_antimetal.json new file mode 100644 index 00000000..31ae901e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/polished_antimetal.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/polished_antimetal" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/polished_nyxite.json b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite.json new file mode 100644 index 00000000..6eb892c2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/polished_nyxite" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_slab.json b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_slab.json new file mode 100644 index 00000000..e9ac5cde --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/polished_nyxite_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_stairs.json b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_stairs.json new file mode 100644 index 00000000..2d866ab6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/polished_nyxite_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_wall.json b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_wall.json new file mode 100644 index 00000000..bef1b1c1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/polished_nyxite_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/polished_nyxite_wall_inventory" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/potent_nyxite.json b/common/src/main/resources/assets/antarchy/models/item/potent_nyxite.json new file mode 100644 index 00000000..2cb4c1e5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/potent_nyxite.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/potent_nyxite" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/primordial_scute.json b/common/src/main/resources/assets/antarchy/models/item/primordial_scute.json new file mode 100644 index 00000000..44529169 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/primordial_scute.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/primordial_scute" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/rainbow_ant_nest.json b/common/src/main/resources/assets/antarchy/models/item/rainbow_ant_nest.json new file mode 100644 index 00000000..3889a452 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/rainbow_ant_nest.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/rainbow_ant_nest" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/rainbow_ant_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/rainbow_ant_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/rainbow_ant_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/rainbow_sugar.json b/common/src/main/resources/assets/antarchy/models/item/rainbow_sugar.json new file mode 100644 index 00000000..0d13bcff --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/rainbow_sugar.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/rainbow_sugar" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/raw_titanium.json b/common/src/main/resources/assets/antarchy/models/item/raw_titanium.json new file mode 100644 index 00000000..06d3d1a2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/raw_titanium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/titanium/raw_titanium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/raw_titanium_block.json b/common/src/main/resources/assets/antarchy/models/item/raw_titanium_block.json new file mode 100644 index 00000000..90cc500b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/raw_titanium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/raw_titanium_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/raw_titanium_scrap.json b/common/src/main/resources/assets/antarchy/models/item/raw_titanium_scrap.json new file mode 100644 index 00000000..d10dfe76 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/raw_titanium_scrap.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/titanium/raw_titanium_scrap" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/raw_uranium.json b/common/src/main/resources/assets/antarchy/models/item/raw_uranium.json new file mode 100644 index 00000000..5e8d0b54 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/raw_uranium.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/uranium/raw_uranium" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/raw_uranium_block.json b/common/src/main/resources/assets/antarchy/models/item/raw_uranium_block.json new file mode 100644 index 00000000..872cb976 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/raw_uranium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/raw_uranium_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/raw_uranium_scrap.json b/common/src/main/resources/assets/antarchy/models/item/raw_uranium_scrap.json new file mode 100644 index 00000000..96d12a71 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/raw_uranium_scrap.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/uranium/raw_uranium_scrap" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/red_ant_nest.json b/common/src/main/resources/assets/antarchy/models/item/red_ant_nest.json new file mode 100644 index 00000000..530d6c7a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/red_ant_nest.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/red_ant_nest" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/red_ant_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/red_ant_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/red_ant_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/reverie_bottle.json b/common/src/main/resources/assets/antarchy/models/item/reverie_bottle.json new file mode 100644 index 00000000..e65d83e5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/reverie_bottle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/reverie_bottle" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/reverie_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/reverie_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/reverie_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/scorpion_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/scorpion_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/scorpion_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/scorpion_whip.json b/common/src/main/resources/assets/antarchy/models/item/scorpion_whip.json new file mode 100644 index 00000000..2bfc9027 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/scorpion_whip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/scorpion_whip" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/shrink_ray_display.json b/common/src/main/resources/assets/antarchy/models/item/shrink_ray_display.json new file mode 100644 index 00000000..65b5da85 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/shrink_ray_display.json @@ -0,0 +1,106 @@ +{ + "credit": "Made with Blockbench", + "parent": "builtin/entity", + "texture_size": [ + 64, + 64 + ], + "display": { + "thirdperson_righthand": { + "translation": [ + 0, + -2, + -4 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "thirdperson_lefthand": { + "translation": [ + 0, + -2, + -4 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "firstperson_righthand": { + "translation": [ + 0, + 1, + -0.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "translation": [ + 0, + 1, + -0.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "gui": { + "rotation": [ + 30, + -135, + 0 + ], + "translation": [ + 0.5, + -5.25, + 0 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "fixed": { + "rotation": [ + 90, + -45, + 90 + ], + "translation": [ + 6.25, + -3, + 0 + ] + }, + "on_shelf": { + "rotation": [ + 90, + 0, + 90 + ], + "translation": [ + 7, + 0, + 0 + ] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/item/shrink_ray_gui.json b/common/src/main/resources/assets/antarchy/models/item/shrink_ray_gui.json new file mode 100644 index 00000000..39a330b7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/shrink_ray_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/shrink_ray_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/shrink_ray_held_geo.json b/common/src/main/resources/assets/antarchy/models/item/shrink_ray_held_geo.json new file mode 100644 index 00000000..9bd96f63 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/shrink_ray_held_geo.json @@ -0,0 +1,37 @@ +{ + "parent": "builtin/entity", + "display": { + "thirdperson_righthand": { + "translation": [0, -2, -4], + "scale": [0.8, 0.8, 0.8] + }, + "thirdperson_lefthand": { + "translation": [0, -2, -4], + "scale": [0.8, 0.8, 0.8] + }, + "firstperson_righthand": { + "translation": [0, 1, -0.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "translation": [0, 1, -0.5], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, -135, 0], + "translation": [0.5, -5.25, 0], + "scale": [0.8, 0.8, 0.8] + }, + "fixed": { + "rotation": [90, -45, 90], + "translation": [6.25, -3, 0] + }, + "on_shelf": { + "rotation": [90, 0, 90], + "translation": [7, 0, 0] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/shrinking_potion.json b/common/src/main/resources/assets/antarchy/models/item/shrinking_potion.json new file mode 100644 index 00000000..e22b7730 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/shrinking_potion.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/potion_overlay", + "layer1": "minecraft:item/potion" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/small_blood_crystal_bud.json b/common/src/main/resources/assets/antarchy/models/item/small_blood_crystal_bud.json new file mode 100644 index 00000000..9a1ba6a6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/small_blood_crystal_bud.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/blood_crystal_bud_stage0" + } +} + + diff --git a/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone.json b/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone.json new file mode 100644 index 00000000..7e418a11 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/smooth_dream_sandstone" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone_slab.json b/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone_slab.json new file mode 100644 index 00000000..b53f4f81 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/smooth_dream_sandstone_slab" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone_stairs.json b/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone_stairs.json new file mode 100644 index 00000000..ddd8fc2c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/smooth_dream_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/smooth_dream_sandstone_stairs" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/squidzooka_gui.json b/common/src/main/resources/assets/antarchy/models/item/squidzooka_gui.json new file mode 100644 index 00000000..3adda5ae --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/squidzooka_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/squidzooka_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/squidzooka_held_geo.json b/common/src/main/resources/assets/antarchy/models/item/squidzooka_held_geo.json new file mode 100644 index 00000000..c3e68d42 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/squidzooka_held_geo.json @@ -0,0 +1,39 @@ +{ + "parent": "builtin/entity", + "display": { + "thirdperson_righthand": { + "translation": [0.5, -5.25, 1.5] + }, + "thirdperson_lefthand": { + "translation": [0.5, -5.25, 1.5] + }, + "firstperson_righthand": { + "rotation": [5, 0, 0], + "translation": [0, -1, 0], + "scale": [0.6, 0.6, 0.6] + }, + "firstperson_lefthand": { + "rotation": [5, 0, 0], + "translation": [0, -1, 0], + "scale": [0.6, 0.6, 0.6] + }, + "ground": { + "scale": [0.4, 0.4, 0.4] + }, + "gui": { + "rotation": [30, -135, 0], + "translation": [0.25, -3.5, 0], + "scale": [0.37, 0.37, 0.37] + }, + "fixed": { + "rotation": [90, 45, -90], + "translation": [-3, -1.5, 0], + "scale": [0.4, 0.4, 0.4] + }, + "on_shelf": { + "rotation": [90, 0, 0], + "translation": [0, 2.75, -4.5], + "scale": [0.6, 0.6, 0.6] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/stripped_ouranwood_log.json b/common/src/main/resources/assets/antarchy/models/item/stripped_ouranwood_log.json new file mode 100644 index 00000000..eb3bce7e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/stripped_ouranwood_log.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/stripped_ouranwood_log" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/stripped_ouranwood_wood.json b/common/src/main/resources/assets/antarchy/models/item/stripped_ouranwood_wood.json new file mode 100644 index 00000000..7e5466ea --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/stripped_ouranwood_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/stripped_ouranwood_wood" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/termite_nest.json b/common/src/main/resources/assets/antarchy/models/item/termite_nest.json new file mode 100644 index 00000000..0f2c65eb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/termite_nest.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/termite_nest" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/termite_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/termite_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/termite_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_bars.json b/common/src/main/resources/assets/antarchy/models/item/titanium_bars.json new file mode 100644 index 00000000..4dedfb42 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_bars.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/titanium/titanium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_block.json b/common/src/main/resources/assets/antarchy/models/item/titanium_block.json new file mode 100644 index 00000000..30c83766 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/titanium_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_bulb.json b/common/src/main/resources/assets/antarchy/models/item/titanium_bulb.json new file mode 100644 index 00000000..039263ca --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_bulb.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/titanium_bulb" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_door.json b/common/src/main/resources/assets/antarchy/models/item/titanium_door.json new file mode 100644 index 00000000..6c35f3c1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/titanium/titanium_door" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_ingot.json b/common/src/main/resources/assets/antarchy/models/item/titanium_ingot.json new file mode 100644 index 00000000..ca9c9979 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/titanium/titanium_ingot" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_nugget.json b/common/src/main/resources/assets/antarchy/models/item/titanium_nugget.json new file mode 100644 index 00000000..02f4def2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/titanium/titanium_nugget" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_ore.json b/common/src/main/resources/assets/antarchy/models/item/titanium_ore.json new file mode 100644 index 00000000..d5913296 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/titanium_ore" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/titanium_trapdoor.json b/common/src/main/resources/assets/antarchy/models/item/titanium_trapdoor.json new file mode 100644 index 00000000..a1729414 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/titanium_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/titanium_trapdoor_bottom" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/torchflower_bush.json b/common/src/main/resources/assets/antarchy/models/item/torchflower_bush.json new file mode 100644 index 00000000..ed844f3a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/torchflower_bush.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/torchflower_bush_top" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/triffid_goo.json b/common/src/main/resources/assets/antarchy/models/item/triffid_goo.json new file mode 100644 index 00000000..fd896a63 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/triffid_goo.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/triffid_goo" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/triffid_goo_block.json b/common/src/main/resources/assets/antarchy/models/item/triffid_goo_block.json new file mode 100644 index 00000000..2651ef66 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/triffid_goo_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/triffid_goo_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/triffid_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/triffid_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/triffid_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull0.json b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull0.json new file mode 100644 index 00000000..bcd0b0ab --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull0.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:item/ultimate_bow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_bow_pull0" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull1.json b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull1.json new file mode 100644 index 00000000..4c815ca7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull1.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:item/ultimate_bow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_bow_pull1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull2.json b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull2.json new file mode 100644 index 00000000..aeef5a18 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_bow_pull2.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:item/ultimate_bow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_bow_pull2" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_arrow.json b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_arrow.json new file mode 100644 index 00000000..afc81f8f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_arrow.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:item/ultimate_crossbow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_crossbow_arrow" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull1.json b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull1.json new file mode 100644 index 00000000..488e4c4c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull1.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:item/ultimate_crossbow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_crossbow_pull1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull2.json b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull2.json new file mode 100644 index 00000000..cf2676f5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull2.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:item/ultimate_crossbow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_crossbow_pull2" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull3.json b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull3.json new file mode 100644 index 00000000..66d94796 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate/ultimate_crossbow_pull3.json @@ -0,0 +1,6 @@ +{ + "parent": "antarchy:item/ultimate_crossbow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_crossbow_pull3" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_axe.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_axe.json new file mode 100644 index 00000000..ca1c2c5f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_axe.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_axe" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_boots.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_boots.json new file mode 100644 index 00000000..fc36406b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_boots" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_bow.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow.json new file mode 100644 index 00000000..a4c7700c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow.json @@ -0,0 +1,50 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_bow" + }, + "display": { + "thirdperson_righthand": { + "rotation": [ -80, 260, -40 ], + "translation": [ -1, -2, 2.5 ], + "scale": [ 0.9, 0.9, 0.9 ] + }, + "thirdperson_lefthand": { + "rotation": [ -80, -280, 40 ], + "translation": [ -1, -2, 2.5 ], + "scale": [ 0.9, 0.9, 0.9 ] + }, + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 1.13, 3.2, 1.13 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 90, -25 ], + "translation": [ 1.13, 3.2, 1.13 ], + "scale": [ 0.68, 0.68, 0.68 ] + } + }, + "overrides": [ + { + "predicate": { + "pulling": 1 + }, + "model": "antarchy:item/ultimate/ultimate_bow_pull0" + }, + { + "predicate": { + "pulling": 1, + "pull": 0.65 + }, + "model": "antarchy:item/ultimate/ultimate_bow_pull1" + }, + { + "predicate": { + "pulling": 1, + "pull": 0.9 + }, + "model": "antarchy:item/ultimate/ultimate_bow_pull2" + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull0.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull0.json new file mode 100644 index 00000000..2b5c4593 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/bow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_bow_pull0" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull1.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull1.json new file mode 100644 index 00000000..a6ad07eb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/bow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_bow_pull1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull2.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull2.json new file mode 100644 index 00000000..c7b99057 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_bow_pull2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/bow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_bow_pull2" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_chestplate.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_chestplate.json new file mode 100644 index 00000000..831d79b6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_chestplate" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_crossbow.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_crossbow.json new file mode 100644 index 00000000..c2ff93b0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_crossbow.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:item/crossbow", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_crossbow_standby" + }, + "overrides": [ + { + "predicate": { + "pulling": 1, + "pull": 0.0 + }, + "model": "antarchy:item/ultimate/ultimate_crossbow_pull1" + }, + { + "predicate": { + "pulling": 1, + "pull": 0.58 + }, + "model": "antarchy:item/ultimate/ultimate_crossbow_pull2" + }, + { + "predicate": { + "pulling": 1, + "pull": 1.0 + }, + "model": "antarchy:item/ultimate/ultimate_crossbow_pull3" + }, + { + "predicate": { + "charged": 1, + "firework": 0 + }, + "model": "antarchy:item/ultimate/ultimate_crossbow_arrow" + }, + { + "predicate": { + "charged": 1, + "firework": 1 + }, + "model": "antarchy:item/ultimate/ultimate_crossbow_arrow" + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_helmet.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_helmet.json new file mode 100644 index 00000000..0f874191 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_helmet" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_hoe.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_hoe.json new file mode 100644 index 00000000..154fd293 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_hoe.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_hoe" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_leggings.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_leggings.json new file mode 100644 index 00000000..039b2efa --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_leggings" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_mace.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_mace.json new file mode 100644 index 00000000..3e49cdce --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_mace.json @@ -0,0 +1,223 @@ +{ + "textures": { + "1": "antarchy:block/ultimate_core", + "layer0": "antarchy:item/ultimate/ultimate_mace_handle", + "particle": "antarchy:block/ultimate_core" + }, + "elements": [ + { + "from": [7, 7, 4], + "to": [15, 15, 12], + "rotation": {"angle": -45, "axis": "z", "origin": [11, 11, 8]}, + "faces": { + "north": {"uv": [8, 8, 0, 16], "texture": "#1"}, + "east": {"uv": [0, 8, 8, 16], "texture": "#1"}, + "south": {"uv": [0, 8, 8, 16], "texture": "#1"}, + "west": {"uv": [0, 8, 8, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 8, 8], "rotation": 270, "texture": "#1"}, + "down": {"uv": [8, 0, 16, 8], "texture": "#1"} + } + }, + { + "from": [0, 0, 7.5], + "to": [3, 3, 8.5], + "faces": { + "north": {"uv": [3, 13, 0, 16], "texture": "#layer0"}, + "east": {"uv": [2, 13, 3, 16], "texture": "#layer0"}, + "south": {"uv": [0, 13, 3, 16], "texture": "#layer0"}, + "west": {"uv": [0, 13, 1, 16], "texture": "#layer0"}, + "up": {"uv": [0, 13, 3, 14], "texture": "#layer0"}, + "down": {"uv": [0, 15, 3, 16], "texture": "#layer0"} + } + }, + { + "from": [2, 2, 7.5], + "to": [4, 4, 8.5], + "faces": { + "north": {"uv": [4, 12, 2, 14], "texture": "#layer0"}, + "east": {"uv": [3, 12, 4, 14], "texture": "#layer0"}, + "south": {"uv": [2, 12, 4, 14], "texture": "#layer0"}, + "west": {"uv": [2, 12, 3, 14], "texture": "#layer0"}, + "up": {"uv": [2, 12, 4, 13], "texture": "#layer0"}, + "down": {"uv": [2, 13, 4, 14], "texture": "#layer0"} + } + }, + { + "from": [3, 3, 7.5], + "to": [5, 5, 8.5], + "faces": { + "north": {"uv": [5, 11, 3, 13], "texture": "#layer0"}, + "east": {"uv": [4, 11, 5, 13], "texture": "#layer0"}, + "south": {"uv": [3, 11, 5, 13], "texture": "#layer0"}, + "west": {"uv": [3, 11, 4, 13], "texture": "#layer0"}, + "up": {"uv": [3, 11, 5, 12], "texture": "#layer0"}, + "down": {"uv": [3, 12, 5, 13], "texture": "#layer0"} + } + }, + { + "from": [4, 4, 7.5], + "to": [6, 6, 8.5], + "faces": { + "north": {"uv": [6, 10, 4, 12], "texture": "#layer0"}, + "east": {"uv": [5, 10, 6, 12], "texture": "#layer0"}, + "south": {"uv": [4, 10, 6, 12], "texture": "#layer0"}, + "west": {"uv": [4, 10, 5, 12], "texture": "#layer0"}, + "up": {"uv": [4, 10, 6, 11], "texture": "#layer0"}, + "down": {"uv": [4, 11, 6, 12], "texture": "#layer0"} + } + }, + { + "from": [5, 5, 7.5], + "to": [7, 7, 8.5], + "faces": { + "north": {"uv": [7, 9, 5, 11], "texture": "#layer0"}, + "east": {"uv": [6, 9, 7, 11], "texture": "#layer0"}, + "south": {"uv": [5, 9, 7, 11], "texture": "#layer0"}, + "west": {"uv": [5, 9, 6, 11], "texture": "#layer0"}, + "up": {"uv": [5, 9, 7, 10], "texture": "#layer0"}, + "down": {"uv": [5, 10, 7, 11], "texture": "#layer0"} + } + }, + { + "from": [8, 8, 7.5], + "to": [10, 10, 8.5], + "faces": { + "north": {"uv": [10, 6, 8, 8], "texture": "#layer0"}, + "east": {"uv": [9, 6, 10, 8], "texture": "#layer0"}, + "south": {"uv": [8, 6, 10, 8], "texture": "#layer0"}, + "west": {"uv": [8, 6, 9, 8], "texture": "#layer0"}, + "up": {"uv": [8, 6, 10, 7], "texture": "#layer0"}, + "down": {"uv": [8, 7, 10, 8], "texture": "#layer0"} + } + }, + { + "from": [9, 9, 7.5], + "to": [11, 11, 8.5], + "faces": { + "north": {"uv": [11, 5, 9, 7], "texture": "#layer0"}, + "east": {"uv": [10, 5, 11, 7], "texture": "#layer0"}, + "south": {"uv": [9, 5, 11, 7], "texture": "#layer0"}, + "west": {"uv": [9, 5, 10, 7], "texture": "#layer0"}, + "up": {"uv": [9, 5, 11, 6], "texture": "#layer0"}, + "down": {"uv": [9, 6, 11, 7], "texture": "#layer0"} + } + }, + { + "from": [6, 6, 7.5], + "to": [8, 8, 8.5], + "faces": { + "north": {"uv": [8, 8, 6, 10], "texture": "#layer0"}, + "east": {"uv": [7, 8, 8, 10], "texture": "#layer0"}, + "south": {"uv": [6, 8, 8, 10], "texture": "#layer0"}, + "west": {"uv": [6, 8, 7, 10], "texture": "#layer0"}, + "up": {"uv": [6, 8, 8, 9], "texture": "#layer0"}, + "down": {"uv": [6, 9, 8, 10], "texture": "#layer0"} + } + }, + { + "from": [7, 7, 7.5], + "to": [9, 9, 8.5], + "faces": { + "north": {"uv": [9, 7, 7, 9], "texture": "#layer0"}, + "east": {"uv": [8, 7, 9, 9], "texture": "#layer0"}, + "south": {"uv": [7, 7, 9, 9], "texture": "#layer0"}, + "west": {"uv": [7, 7, 8, 9], "texture": "#layer0"}, + "up": {"uv": [7, 7, 9, 8], "texture": "#layer0"}, + "down": {"uv": [7, 8, 9, 9], "texture": "#layer0"} + } + }, + { + "from": [12, 12, 7.5], + "to": [14, 14, 8.5], + "faces": { + "north": {"uv": [14, 2, 12, 4], "texture": "#layer0"}, + "east": {"uv": [13, 2, 14, 4], "texture": "#layer0"}, + "south": {"uv": [12, 2, 14, 4], "texture": "#layer0"}, + "west": {"uv": [12, 2, 13, 4], "texture": "#layer0"}, + "up": {"uv": [12, 2, 14, 3], "texture": "#layer0"}, + "down": {"uv": [12, 3, 14, 4], "texture": "#layer0"} + } + }, + { + "from": [13, 13, 7.5], + "to": [15, 15, 8.5], + "faces": { + "north": {"uv": [15, 1, 13, 3], "texture": "#layer0"}, + "east": {"uv": [14, 1, 15, 3], "texture": "#layer0"}, + "south": {"uv": [13, 1, 15, 3], "texture": "#layer0"}, + "west": {"uv": [13, 1, 14, 3], "texture": "#layer0"}, + "up": {"uv": [13, 1, 15, 2], "texture": "#layer0"}, + "down": {"uv": [13, 2, 15, 3], "texture": "#layer0"} + } + }, + { + "from": [14, 14, 7.5], + "to": [16, 16, 8.5], + "faces": { + "north": {"uv": [16, 0, 14, 2], "texture": "#layer0"}, + "east": {"uv": [15, 0, 16, 2], "texture": "#layer0"}, + "south": {"uv": [14, 0, 16, 2], "texture": "#layer0"}, + "west": {"uv": [14, 0, 15, 2], "texture": "#layer0"}, + "up": {"uv": [14, 0, 16, 1], "texture": "#layer0"}, + "down": {"uv": [14, 1, 16, 2], "texture": "#layer0"} + } + }, + { + "from": [10, 10, 7.5], + "to": [12, 12, 8.5], + "faces": { + "north": {"uv": [12, 4, 10, 6], "texture": "#layer0"}, + "east": {"uv": [11, 4, 12, 6], "texture": "#layer0"}, + "south": {"uv": [10, 4, 12, 6], "texture": "#layer0"}, + "west": {"uv": [10, 4, 11, 6], "texture": "#layer0"}, + "up": {"uv": [10, 4, 12, 5], "texture": "#layer0"}, + "down": {"uv": [10, 5, 12, 6], "texture": "#layer0"} + } + }, + { + "from": [11, 11, 7.5], + "to": [13, 13, 8.5], + "faces": { + "north": {"uv": [13, 3, 11, 5], "texture": "#layer0"}, + "east": {"uv": [12, 3, 13, 5], "texture": "#layer0"}, + "south": {"uv": [11, 3, 13, 5], "texture": "#layer0"}, + "west": {"uv": [11, 3, 12, 5], "texture": "#layer0"}, + "up": {"uv": [11, 3, 13, 4], "texture": "#layer0"}, + "down": {"uv": [11, 4, 13, 5], "texture": "#layer0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, -90, 55], + "translation": [0, 4, 0.5], + "scale": [0.85, 0.85, 0.85] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, -55], + "translation": [0, 4, 0.5], + "scale": [0.85, 0.85, 0.85] + }, + "firstperson_righthand": { + "rotation": [0, -90, 25], + "translation": [1.13, 3.2, 1.13], + "scale": [0.68, 0.68, 0.68] + }, + "firstperson_lefthand": { + "rotation": [0, 90, -25], + "translation": [1.13, 3.2, 1.13], + "scale": [0.68, 0.68, 0.68] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [0, 180, 0] + } + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_pickaxe.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_pickaxe.json new file mode 100644 index 00000000..7e0545bb --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_pickaxe.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_pickaxe" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_shovel.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_shovel.json new file mode 100644 index 00000000..159ed99c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_shovel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_shovel" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/ultimate_sword.json b/common/src/main/resources/assets/antarchy/models/item/ultimate_sword.json new file mode 100644 index 00000000..edd38f82 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/ultimate_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "antarchy:item/ultimate/ultimate_sword" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/umbral_moss_block.json b/common/src/main/resources/assets/antarchy/models/item/umbral_moss_block.json new file mode 100644 index 00000000..52c1dd23 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/umbral_moss_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/umbral_moss_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/umbral_moss_carpet.json b/common/src/main/resources/assets/antarchy/models/item/umbral_moss_carpet.json new file mode 100644 index 00000000..04dd4270 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/umbral_moss_carpet.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/umbral_moss_carpet" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_bars.json b/common/src/main/resources/assets/antarchy/models/item/uranium_bars.json new file mode 100644 index 00000000..073ce4a9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_bars.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/uranium/uranium_bars" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_block.json b/common/src/main/resources/assets/antarchy/models/item/uranium_block.json new file mode 100644 index 00000000..c5b33413 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/uranium_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_bulb.json b/common/src/main/resources/assets/antarchy/models/item/uranium_bulb.json new file mode 100644 index 00000000..6c392282 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_bulb.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/uranium_bulb" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_door.json b/common/src/main/resources/assets/antarchy/models/item/uranium_door.json new file mode 100644 index 00000000..c9b6da17 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/uranium/uranium_door" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_ingot.json b/common/src/main/resources/assets/antarchy/models/item/uranium_ingot.json new file mode 100644 index 00000000..8e7908b8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/uranium/uranium_ingot" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_nugget.json b/common/src/main/resources/assets/antarchy/models/item/uranium_nugget.json new file mode 100644 index 00000000..dc91c3b7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/uranium/uranium_nugget" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_ore.json b/common/src/main/resources/assets/antarchy/models/item/uranium_ore.json new file mode 100644 index 00000000..6bd58a5b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/uranium_ore" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/uranium_trapdoor.json b/common/src/main/resources/assets/antarchy/models/item/uranium_trapdoor.json new file mode 100644 index 00000000..7e5df134 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/uranium_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/uranium_trapdoor_bottom" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/vortex_eye.json b/common/src/main/resources/assets/antarchy/models/item/vortex_eye.json new file mode 100644 index 00000000..c27e160e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/vortex_eye.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/vortex_eye" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/wasp_nest.json b/common/src/main/resources/assets/antarchy/models/item/wasp_nest.json new file mode 100644 index 00000000..e425fc70 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/wasp_nest.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/wasp_nest" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/wasp_spawn_egg.json b/common/src/main/resources/assets/antarchy/models/item/wasp_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/wasp_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/antarchy/particles/dream_fire_flame.json b/common/src/main/resources/assets/antarchy/particles/dream_fire_flame.json new file mode 100644 index 00000000..1418b317 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/dream_fire_flame.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "antarchy:dream_fire_flame" + ] +} diff --git a/common/src/main/resources/assets/antarchy/particles/firefly.json b/common/src/main/resources/assets/antarchy/particles/firefly.json new file mode 100644 index 00000000..e3d38dbf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/firefly.json @@ -0,0 +1,3 @@ +{ + "textures": ["antarchy:firefly"] +} diff --git a/common/src/main/resources/assets/antarchy/particles/hypnotic_gas.json b/common/src/main/resources/assets/antarchy/particles/hypnotic_gas.json new file mode 100644 index 00000000..b5d27db5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/hypnotic_gas.json @@ -0,0 +1,12 @@ +{ + "textures": [ + "antarchy:hypnotic_gas/hypnotic_gas_01", + "antarchy:hypnotic_gas/hypnotic_gas_02", + "antarchy:hypnotic_gas/hypnotic_gas_03", + "antarchy:hypnotic_gas/hypnotic_gas_04", + "antarchy:hypnotic_gas/hypnotic_gas_05", + "antarchy:hypnotic_gas/hypnotic_gas_06", + "antarchy:hypnotic_gas/hypnotic_gas_07", + "antarchy:hypnotic_gas/hypnotic_gas_08" + ] +} diff --git a/common/src/main/resources/assets/antarchy/particles/hypnotic_gas_cloud_down.json b/common/src/main/resources/assets/antarchy/particles/hypnotic_gas_cloud_down.json new file mode 100644 index 00000000..b5d27db5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/hypnotic_gas_cloud_down.json @@ -0,0 +1,12 @@ +{ + "textures": [ + "antarchy:hypnotic_gas/hypnotic_gas_01", + "antarchy:hypnotic_gas/hypnotic_gas_02", + "antarchy:hypnotic_gas/hypnotic_gas_03", + "antarchy:hypnotic_gas/hypnotic_gas_04", + "antarchy:hypnotic_gas/hypnotic_gas_05", + "antarchy:hypnotic_gas/hypnotic_gas_06", + "antarchy:hypnotic_gas/hypnotic_gas_07", + "antarchy:hypnotic_gas/hypnotic_gas_08" + ] +} diff --git a/common/src/main/resources/assets/antarchy/particles/hypnotic_gas_down.json b/common/src/main/resources/assets/antarchy/particles/hypnotic_gas_down.json new file mode 100644 index 00000000..b5d27db5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/hypnotic_gas_down.json @@ -0,0 +1,12 @@ +{ + "textures": [ + "antarchy:hypnotic_gas/hypnotic_gas_01", + "antarchy:hypnotic_gas/hypnotic_gas_02", + "antarchy:hypnotic_gas/hypnotic_gas_03", + "antarchy:hypnotic_gas/hypnotic_gas_04", + "antarchy:hypnotic_gas/hypnotic_gas_05", + "antarchy:hypnotic_gas/hypnotic_gas_06", + "antarchy:hypnotic_gas/hypnotic_gas_07", + "antarchy:hypnotic_gas/hypnotic_gas_08" + ] +} diff --git a/common/src/main/resources/assets/antarchy/particles/inverted_geyser_base.json b/common/src/main/resources/assets/antarchy/particles/inverted_geyser_base.json new file mode 100644 index 00000000..0ce3af96 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/inverted_geyser_base.json @@ -0,0 +1,12 @@ +{ + "textures": [ + "antarchy:inverted_geyser/inverted_geyser_base_01", + "antarchy:inverted_geyser/inverted_geyser_base_02", + "antarchy:inverted_geyser/inverted_geyser_base_03", + "antarchy:inverted_geyser/inverted_geyser_base_04", + "antarchy:inverted_geyser/inverted_geyser_base_05", + "antarchy:inverted_geyser/inverted_geyser_base_06", + "antarchy:inverted_geyser/inverted_geyser_base_07", + "antarchy:inverted_geyser/inverted_geyser_base_08" + ] +} diff --git a/common/src/main/resources/assets/antarchy/particles/inverted_geyser_plume.json b/common/src/main/resources/assets/antarchy/particles/inverted_geyser_plume.json new file mode 100644 index 00000000..2c050d4c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/inverted_geyser_plume.json @@ -0,0 +1,12 @@ +{ + "textures": [ + "antarchy:inverted_geyser/inverted_geyser_plume_01", + "antarchy:inverted_geyser/inverted_geyser_plume_02", + "antarchy:inverted_geyser/inverted_geyser_plume_03", + "antarchy:inverted_geyser/inverted_geyser_plume_04", + "antarchy:inverted_geyser/inverted_geyser_plume_05", + "antarchy:inverted_geyser/inverted_geyser_plume_06", + "antarchy:inverted_geyser/inverted_geyser_plume_07", + "antarchy:inverted_geyser/inverted_geyser_plume_08" + ] +} diff --git a/common/src/main/resources/assets/antarchy/particles/inverted_geyser_poof.json b/common/src/main/resources/assets/antarchy/particles/inverted_geyser_poof.json new file mode 100644 index 00000000..a2dbf068 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/inverted_geyser_poof.json @@ -0,0 +1,12 @@ +{ + "textures": [ + "antarchy:inverted_geyser/inverted_geyser_poof_01", + "antarchy:inverted_geyser/inverted_geyser_poof_02", + "antarchy:inverted_geyser/inverted_geyser_poof_03", + "antarchy:inverted_geyser/inverted_geyser_poof_04", + "antarchy:inverted_geyser/inverted_geyser_poof_05", + "antarchy:inverted_geyser/inverted_geyser_poof_06", + "antarchy:inverted_geyser/inverted_geyser_poof_07", + "antarchy:inverted_geyser/inverted_geyser_poof_08" + ] +} diff --git a/common/src/main/resources/assets/antarchy/sounds.json b/common/src/main/resources/assets/antarchy/sounds.json new file mode 100644 index 00000000..2881e343 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/sounds.json @@ -0,0 +1,1620 @@ +{ + "squidzooka_fire": { + "subtitle": "subtitles.antarchy.squidzooka_fire", + "sounds": [ + { + "name": "antarchy:squidzooka/squizooka1" + }, + { + "name": "antarchy:squidzooka/squizooka2" + }, + { + "name": "antarchy:squidzooka/squizooka3" + }, + { + "name": "antarchy:squidzooka/squizooka4" + } + ] + }, + "shrink_ray": { + "subtitle": "subtitles.antarchy.shrink_ray", + "sounds": [ + { + "name": "antarchy:size_ray/shrink_ray" + } + ] + }, + "growth_ray": { + "subtitle": "subtitles.antarchy.growth_ray", + "sounds": [ + { + "name": "antarchy:size_ray/growth_ray" + } + ] + }, + "size_ray_charge": { + "subtitle": "subtitles.antarchy.size_ray_charge", + "sounds": [ + { + "name": "antarchy:size_ray/size_ray_charge" + } + ] + }, + "ant_ambient": { + "subtitle": "subtitles.antarchy.ant_ambient", + "sounds": [ + { + "name": "antarchy:mob/ant/ant_ambient" + } + ] + }, + "ant_idle": { + "subtitle": "subtitles.antarchy.ant_idle", + "sounds": [ + { + "name": "antarchy:mob/ant/ant_idle1" + }, + { + "name": "antarchy:mob/ant/ant_idle2" + }, + { + "name": "antarchy:mob/ant/ant_idle3" + }, + { + "name": "antarchy:mob/ant/ant_idle4" + }, + { + "name": "antarchy:mob/ant/ant_idle5" + }, + { + "name": "antarchy:mob/ant/ant_idle6" + } + ] + }, + "ant_hurt": { + "subtitle": "subtitles.antarchy.ant_hurt", + "sounds": [ + { + "name": "antarchy:mob/ant/ant_hurt" + } + ] + }, + "ant_bite": { + "subtitle": "subtitles.antarchy.ant_bite", + "sounds": [ + { + "name": "antarchy:mob/ant/ant_bite" + } + ] + }, + "ant_gather": { + "subtitle": "subtitles.antarchy.ant_gather", + "sounds": [ + { + "name": "antarchy:mob/ant/ant_gather1" + }, + { + "name": "antarchy:mob/ant/ant_gather2" + } + ] + }, + "ant_nest": { + "subtitle": "subtitles.antarchy.ant_nest", + "sounds": [ + { + "name": "antarchy:block/ant_nest_exit" + } + ] + }, + "cloud_shark_bite": { + "subtitle": "subtitles.antarchy.cloud_shark_bite", + "sounds": [ + { + "name": "antarchy:mob/cloud_shark/cloud_shark_bite" + } + ] + }, + "cloud_shark_idle": { + "subtitle": "subtitles.antarchy.cloud_shark_idle", + "sounds": [ + { + "name": "antarchy:mob/cloud_shark/cloud_shark_idle1" + }, + { + "name": "antarchy:mob/cloud_shark/cloud_shark_idle2" + }, + { + "name": "antarchy:mob/cloud_shark/cloud_shark_idle3" + }, + { + "name": "antarchy:mob/cloud_shark/cloud_shark_idle4" + } + ] + }, + "cloud_shark_hurt": { + "subtitle": "subtitles.antarchy.cloud_shark_hurt", + "sounds": [ + { + "name": "antarchy:mob/cloud_shark/cloud_shark_hurt" + } + ] + }, + "cloud_shark_death": { + "subtitle": "subtitles.antarchy.cloud_shark_death", + "sounds": [ + { + "name": "antarchy:mob/cloud_shark/cloud_shark_death" + } + ] + }, + "cloud_shark_fly": { + "subtitle": "subtitles.antarchy.cloud_shark_fly", + "sounds": [ + { + "name": "antarchy:mob/cloud_shark/cloud_shark_fly1" + } + ] + }, + "caterpillar_idle": { + "subtitle": "subtitles.antarchy.caterpillar_idle", + "sounds": [ + { + "name": "antarchy:mob/caterpillar/caterpillar_idle1" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_idle2" + } + ] + }, + "caterpillar_hurt": { + "subtitle": "subtitles.antarchy.caterpillar_hurt", + "sounds": [ + { + "name": "antarchy:mob/caterpillar/caterpillar_hurt1" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_hurt2" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_hurt3" + } + ] + }, + "caterpillar_crawl": { + "subtitle": "subtitles.antarchy.caterpillar_crawl", + "sounds": [ + { + "name": "antarchy:mob/caterpillar/caterpillar_crawl1" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_crawl2" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_crawl3" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_crawl4" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_crawl5" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_crawl6" + } + ] + }, + "butterfly_hurt": { + "subtitle": "subtitles.antarchy.butterfly_hurt", + "sounds": [ + { + "name": "antarchy:mob/caterpillar/caterpillar_hurt1" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_hurt2" + }, + { + "name": "antarchy:mob/caterpillar/caterpillar_hurt3" + } + ] + }, + "brutalfly_idle": { + "subtitle": "subtitles.antarchy.brutalfly_idle", + "sounds": [ + { + "name": "antarchy:mob/brutalfly/brutalfly_idle1" + }, + { + "name": "antarchy:mob/brutalfly/brutalfly_idle2" + }, + { + "name": "antarchy:mob/brutalfly/brutalfly_idle3" + } + ] + }, + "brutalfly_death": { + "subtitle": "subtitles.antarchy.brutalfly_death", + "sounds": [ + { + "name": "antarchy:mob/brutalfly/brutalfly_death1" + } + ] + }, + "missile_squid_ambient": { + "subtitle": "subtitles.antarchy.missile_squid_ambient", + "sounds": [ + { + "name": "entity.squid.ambient", + "type": "event" + } + ] + }, + "missile_squid_hurt": { + "subtitle": "subtitles.antarchy.missile_squid_hurt", + "sounds": [ + { + "name": "entity.squid.hurt", + "type": "event" + } + ] + }, + "missile_squid_death": { + "subtitle": "subtitles.antarchy.missile_squid_death", + "sounds": [ + { + "name": "entity.squid.death", + "type": "event" + } + ] + }, + "missile_squid_attack": { + "subtitle": "subtitles.antarchy.missile_squid_attack", + "sounds": [ + { + "name": "antarchy:mob/missile_squid/missile_squid_attack1" + }, + { + "name": "antarchy:mob/missile_squid/missile_squid_attack2" + }, + { + "name": "antarchy:mob/missile_squid/missile_squid_attack3" + } + ] + }, + "kraken_flying_loop": { + "subtitle": "subtitles.antarchy.kraken_flying_loop", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_flying_loop1", + "stream": true + }, + { + "name": "antarchy:mob/kraken/kraken_flying_loop2", + "stream": true + } + ] + }, + "kraken_flying_sideways_loop": { + "subtitle": "subtitles.antarchy.kraken_flying_sideways_loop", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_flying_sideways_loop1", + "stream": true + }, + { + "name": "antarchy:mob/kraken/kraken_flying_sideways_loop2", + "stream": true + } + ] + }, + "kraken_attack": { + "subtitle": "subtitles.antarchy.kraken_attack", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_attack1" + } + ] + }, + "kraken_spin": { + "subtitle": "subtitles.antarchy.kraken_spin", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_spin" + } + ] + }, + "kraken_roar": { + "subtitle": "subtitles.antarchy.kraken_roar", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_roar" + } + ] + }, + "kraken_summon": { + "subtitle": "subtitles.antarchy.kraken_summon", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_spawn" + } + ] + }, + "kraken_hurt": { + "subtitle": "subtitles.antarchy.kraken_hurt", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_hurt1" + }, + { + "name": "antarchy:mob/kraken/kraken_hurt2" + } + ] + }, + "kraken_death": { + "subtitle": "subtitles.antarchy.kraken_death", + "sounds": [ + { + "name": "antarchy:mob/kraken/kraken_death" + } + ] + }, + "basilisk_idle_loop": { + "subtitle": "subtitles.antarchy.basilisk_idle_loop", + "sounds": [ + { + "name": "antarchy:mob/basilisk/basilisk_idle_loop1", + "stream": true + }, + { + "name": "antarchy:mob/basilisk/basilisk_idle_loop2", + "stream": true + } + ] + }, + "basilisk_slither_loop": { + "subtitle": "subtitles.antarchy.basilisk_slither_loop", + "sounds": [ + { + "name": "antarchy:mob/basilisk/basilisk_slither_loop1", + "stream": true + }, + { + "name": "antarchy:mob/basilisk/basilisk_slither_loop2", + "stream": true + } + ] + }, + "basilisk_bite": { + "subtitle": "subtitles.antarchy.basilisk_bite", + "sounds": [ + { + "name": "antarchy:mob/basilisk/basilisk_bite" + } + ] + }, + "basilisk_hiss": { + "subtitle": "subtitles.antarchy.basilisk_hiss", + "sounds": [ + { + "name": "antarchy:mob/basilisk/basilisk_hiss" + } + ] + }, + "basilisk_hurt": { + "subtitle": "subtitles.antarchy.basilisk_hurt", + "sounds": [ + { + "name": "antarchy:mob/basilisk/basilisk_hurt1" + }, + { + "name": "antarchy:mob/basilisk/basilisk_hurt2" + } + ] + }, + "basilisk_death": { + "subtitle": "subtitles.antarchy.basilisk_death", + "sounds": [ + { + "name": "antarchy:mob/basilisk/basilisk_death" + } + ] + }, + "thoraxis_nightmare_wastes_ambient": { + "subtitle": "subtitles.antarchy.thoraxis_nightmare_wastes_ambient", + "sounds": [ + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/ambience_reversed", + "volume": 0.28, + "weight": 4 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/dark1_reversed", + "volume": 0.24, + "weight": 2 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/dark2_reversed", + "volume": 0.24, + "weight": 2 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/ground1_reversed", + "volume": 0.2, + "weight": 1 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/ground2_reversed", + "volume": 0.2, + "weight": 1 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/ground3_reversed", + "volume": 0.2, + "weight": 1 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/ground4_reversed", + "volume": 0.2, + "weight": 1 + } + ] + }, + "thoraxis_nightmare_wastes_additions": { + "subtitle": "subtitles.antarchy.thoraxis_nightmare_wastes_additions", + "sounds": [ + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition1_reversed", + "volume": 0.6 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition2_reversed", + "volume": 0.6 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition3_reversed", + "volume": 0.6 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition4_reversed", + "volume": 0.6 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition5_reversed", + "volume": 0.6 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition6_reversed", + "volume": 0.6 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition7_reversed", + "volume": 0.6 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/addition8_reversed", + "volume": 0.6 + } + ] + }, + "thoraxis_nightmare_wastes_mood": { + "subtitle": "subtitles.antarchy.thoraxis_nightmare_wastes_mood", + "sounds": [ + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/mood1_reversed", + "volume": 0.5 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/mood2_reversed", + "volume": 0.5 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/mood3_reversed", + "volume": 0.5 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/mood4_reversed", + "volume": 0.5 + }, + { + "name": "antarchy:ambient/thoraxis/nightmare_wastes/mood5_reversed", + "volume": 0.5 + } + ] + }, + "thoraxis_dream_dunes_ambient": { + "subtitle": "subtitles.antarchy.thoraxis_dream_dunes_ambient", + "sounds": [ + { + "name": "antarchy:ambient/thoraxis/dream_dunes/wind1_reversed", + "volume": 0.3, + "weight": 3 + }, + { + "name": "antarchy:ambient/thoraxis/dream_dunes/wind2_reversed", + "volume": 0.3, + "weight": 3 + }, + { + "name": "antarchy:ambient/thoraxis/dream_dunes/wind3_reversed", + "volume": 0.3, + "weight": 3 + }, + { + "name": "antarchy:ambient/thoraxis/dream_dunes/wind4_reversed", + "volume": 0.3, + "weight": 3 + }, + { + "name": "antarchy:ambient/thoraxis/dream_dunes/with1_reversed", + "volume": 0.24, + "weight": 2 + } + ] + }, + "thoraxis_dream_dunes_additions": { + "subtitle": "subtitles.antarchy.thoraxis_dream_dunes_additions", + "sounds": [ + { + "name": "ambient/nether/soulsand_valley/sand1", + "volume": 0.65, + "weight": 3 + }, + { + "name": "ambient/nether/soulsand_valley/sand2", + "volume": 0.65, + "weight": 3 + }, + { + "name": "ambient/nether/soulsand_valley/sand3", + "volume": 0.65, + "weight": 3 + }, + { + "name": "ambient/nether/soulsand_valley/ambience", + "volume": 0.5, + "weight": 2 + }, + { + "name": "ambient/nether/soulsand_valley/mood1", + "volume": 0.45, + "weight": 1 + }, + { + "name": "ambient/nether/soulsand_valley/mood2", + "volume": 0.45, + "weight": 1 + } + ] + }, + "thoraxis_dream_dunes_mood": { + "subtitle": "subtitles.antarchy.thoraxis_dream_dunes_mood", + "sounds": [ + { + "name": "ambient/nether/soulsand_valley/mood1", + "volume": 0.45, + "weight": 2 + }, + { + "name": "ambient/nether/soulsand_valley/mood2", + "volume": 0.45, + "weight": 2 + } + ] + }, + "thoraxis_lucid_pools_ambient": { + "subtitle": "subtitles.antarchy.thoraxis_lucid_pools_ambient", + "sounds": [ + { + "name": "antarchy:ambient/thoraxis/lucid_pools/ambient", + "volume": 0.26, + "weight": 4 + } + ] + }, + "thoraxis_lucid_pools_additions": { + "subtitle": "subtitles.antarchy.thoraxis_lucid_pools_additions", + "sounds": [ + { + "name": "antarchy:ambient/thoraxis/lucid_pools/curse1", + "volume": 0.48 + }, + { + "name": "antarchy:ambient/thoraxis/lucid_pools/curse2", + "volume": 0.48 + }, + { + "name": "antarchy:ambient/thoraxis/lucid_pools/curse3", + "volume": 0.48 + }, + { + "name": "antarchy:ambient/thoraxis/lucid_pools/curse4", + "volume": 0.48 + } + ] + }, + "thoraxis_lucid_pools_mood": { + "subtitle": "subtitles.antarchy.thoraxis_lucid_pools_mood", + "sounds": [ + { + "name": "ambient/nether/soulsand_valley/mood1", + "volume": 0.45, + "weight": 2 + }, + { + "name": "ambient/nether/soulsand_valley/mood2", + "volume": 0.45, + "weight": 2 + } + ] + }, + "lucid_ambient": { + "subtitle": "subtitles.antarchy.lucid_ambient", + "sounds": [ + { + "name": "antarchy:mob/lucid/lucid_ambience", + "stream": true + } + ] + }, + "lucid_flying": { + "subtitle": "subtitles.antarchy.lucid_flying", + "sounds": [ + { + "name": "antarchy:mob/lucid/lucid_flying", + "stream": true + } + ] + }, + "lucid_attack": { + "subtitle": "subtitles.antarchy.lucid_attack", + "sounds": [ + { + "name": "antarchy:mob/lucid/lucid_attack" + } + ] + }, + "lucid_bolt": { + "subtitle": "subtitles.antarchy.lucid_bolt", + "sounds": [ + { + "name": "antarchy:mob/lucid/lucid_bolt" + } + ] + }, + "lucid_hurt": { + "subtitle": "subtitles.antarchy.lucid_hurt", + "sounds": [ + { + "name": "antarchy:mob/lucid/lucid_hurt1" + }, + { + "name": "antarchy:mob/lucid/lucid_hurt2" + } + ] + }, + "lucid_death": { + "subtitle": "subtitles.antarchy.lucid_death", + "sounds": [ + { + "name": "antarchy:mob/lucid/lucid_death" + } + ] + }, + "reverie_idle": { + "subtitle": "subtitles.antarchy.reverie_idle", + "sounds": [ + { + "name": "antarchy:mob/reverie/reverie_idle1", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_idle2", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_idle3", + "volume": 0.5 + } + ] + }, + "reverie_hurt": { + "subtitle": "subtitles.antarchy.reverie_hurt", + "sounds": [ + { + "name": "antarchy:mob/reverie/reverie_hurt1", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_hurt2", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_hurt3", + "volume": 0.5 + } + ] + }, + "reverie_worry": { + "subtitle": "subtitles.antarchy.reverie_worry", + "sounds": [ + { + "name": "antarchy:mob/reverie/reverie_worry1", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_worry2", + "volume": 0.5 + } + ] + }, + "reverie_save": { + "subtitle": "subtitles.antarchy.reverie_save", + "sounds": [ + { + "name": "antarchy:mob/reverie/reverie_save1", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_save2", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_save3", + "volume": 0.5 + } + ] + }, + "reverie_join_player": { + "subtitle": "subtitles.antarchy.reverie_join_player", + "sounds": [ + { + "name": "antarchy:mob/reverie/reverie_joinplayer1", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_joinplayer2", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_joinplayer3", + "volume": 0.5 + } + ] + }, + "reverie_alert": { + "subtitle": "subtitles.antarchy.reverie_alert", + "sounds": [ + { + "name": "antarchy:mob/reverie/reverie_alert1", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_alert2", + "volume": 0.5 + }, + { + "name": "antarchy:mob/reverie/reverie_alert3", + "volume": 0.5 + } + ] + }, + "flying_squirrel_idle": { + "subtitle": "subtitles.antarchy.flying_squirrel_idle", + "sounds": [ + { + "name": "antarchy:mob/flying_squirrel/flying_squirrel_idle1" + }, + { + "name": "minecraft:mob/fox/sniff1" + }, + { + "name": "minecraft:mob/fox/sniff2" + }, + { + "name": "minecraft:mob/fox/sniff4" + } + ] + }, + "flying_squirrel_beg": { + "subtitle": "subtitles.antarchy.flying_squirrel_beg", + "sounds": [ + { + "name": "entity.cat.beg_for_food", + "type": "event" + } + ] + }, + "flying_squirrel_nut": { + "subtitle": "subtitles.antarchy.flying_squirrel_nut", + "sounds": [ + { + "name": "minecraft:mob/fox/eat1" + }, + { + "name": "minecraft:mob/fox/eat2" + }, + { + "name": "minecraft:mob/fox/eat3" + } + ] + }, + "flying_squirrel_glide_loop": { + "subtitle": "subtitles.antarchy.flying_squirrel_glide_loop", + "sounds": [ + { + "name": "antarchy:mob/flying_squirrel/flying_squirrel_glide_loop" + } + ] + }, + "flying_squirrel_hurt": { + "subtitle": "subtitles.antarchy.flying_squirrel_hurt", + "sounds": [ + { + "name": "minecraft:mob/fox/hurt1" + }, + { + "name": "minecraft:mob/fox/hurt2" + }, + { + "name": "minecraft:mob/fox/hurt3" + }, + { + "name": "minecraft:mob/fox/hurt4" + } + ] + }, + "flying_squirrel_death": { + "subtitle": "subtitles.antarchy.flying_squirrel_death", + "sounds": [ + { + "name": "minecraft:mob/fox/death1" + }, + { + "name": "minecraft:mob/fox/death2" + } + ] + }, + "nightmare_idle": { + "subtitle": "subtitles.antarchy.nightmare_idle", + "sounds": [ + { + "name": "antarchy:mob/nightmare/nightmare_idle1" + }, + { + "name": "antarchy:mob/nightmare/nightmare_idle2" + }, + { + "name": "antarchy:mob/nightmare/nightmare_idle3" + }, + { + "name": "antarchy:mob/nightmare/nightmare_idle4" + } + ] + }, + "nightmare_hurt": { + "subtitle": "subtitles.antarchy.nightmare_hurt", + "sounds": [ + { + "name": "antarchy:mob/nightmare/nightmare_hurt1" + } + ] + }, + "nightmare_roar": { + "subtitle": "subtitles.antarchy.nightmare_roar", + "sounds": [ + { + "name": "antarchy:mob/nightmare/nightmare_roar1" + }, + { + "name": "antarchy:mob/nightmare/nightmare_roar2" + } + ] + }, + "nightmare_death": { + "subtitle": "subtitles.antarchy.nightmare_death", + "sounds": [ + { + "name": "antarchy:mob/nightmare/nightmare_death" + } + ] + }, + "nightmare_bite": { + "subtitle": "subtitles.antarchy.nightmare_bite", + "sounds": [ + { + "name": "minecraft:mob/phantom/bite1" + }, + { + "name": "minecraft:mob/phantom/bite2" + } + ] + }, + "nightmare_flap": { + "subtitle": "subtitles.antarchy.nightmare_flap", + "sounds": [ + { + "name": "minecraft:mob/enderdragon/wings1" + }, + { + "name": "minecraft:mob/enderdragon/wings2" + }, + { + "name": "minecraft:mob/enderdragon/wings3" + }, + { + "name": "minecraft:mob/enderdragon/wings4" + }, + { + "name": "minecraft:mob/enderdragon/wings5" + }, + { + "name": "minecraft:mob/enderdragon/wings6" + } + ] + }, + "mantis_ambient": { + "subtitle": "subtitles.antarchy.mantis_ambient", + "sounds": [ + { + "name": "antarchy:mob/mantis/mantis_idle1" + }, + { + "name": "antarchy:mob/mantis/mantis_idle2" + }, + { + "name": "antarchy:mob/mantis/mantis_idle3" + }, + { + "name": "antarchy:mob/mantis/mantis_idle4" + }, + { + "name": "antarchy:mob/mantis/mantis_idle5" + }, + { + "name": "antarchy:mob/mantis/mantis_idle6" + }, + { + "name": "antarchy:mob/mantis/mantis_idle7" + } + ] + }, + "mantis_hurt": { + "subtitle": "subtitles.antarchy.mantis_hurt", + "sounds": [ + { + "name": "antarchy:mob/mantis/mantis_hurt1" + }, + { + "name": "antarchy:mob/mantis/mantis_hurt2" + }, + { + "name": "antarchy:mob/mantis/mantis_hurt3" + } + ] + }, + "mantis_attack": { + "subtitle": "subtitles.antarchy.mantis_attack", + "sounds": [ + { + "name": "antarchy:mob/mantis/mantis_attack1" + }, + { + "name": "antarchy:mob/mantis/mantis_attack2" + }, + { + "name": "antarchy:mob/mantis/mantis_attack3" + }, + { + "name": "antarchy:mob/mantis/mantis_attack4" + } + ] + }, + "mantis_fly_loop": { + "subtitle": "subtitles.antarchy.mantis_fly_loop", + "sounds": [ + { + "name": "antarchy:mob/mantis/mantis_fly_loop", + "stream": true + } + ] + }, + "gravity_gun_pickup": { + "subtitle": "subtitles.antarchy.gravity_gun_pickup", + "sounds": [ + { + "name": "antarchy:gravity_gun/gravity_gun_pickup" + } + ] + }, + "gravity_gun_drop": { + "subtitle": "subtitles.antarchy.gravity_gun_drop", + "sounds": [ + { + "name": "antarchy:gravity_gun/gravity_gun_drop" + } + ] + }, + "gravity_gun_hold_loop": { + "subtitle": "subtitles.antarchy.gravity_gun_hold_loop", + "sounds": [ + { + "name": "antarchy:gravity_gun/gravity_gun_hold_loop" + } + ] + }, + "gravity_gun_launch": { + "subtitle": "subtitles.antarchy.gravity_gun_launch", + "sounds": [ + { + "name": "antarchy:gravity_gun/gravity_gun_launch1" + }, + { + "name": "antarchy:gravity_gun/gravity_gun_launch2" + }, + { + "name": "antarchy:gravity_gun/gravity_gun_launch3" + }, + { + "name": "antarchy:gravity_gun/gravity_gun_launch4" + } + ] + }, + "gravity_gun_dryfire": { + "subtitle": "subtitles.antarchy.gravity_gun_dryfire", + "sounds": [ + { + "name": "antarchy:gravity_gun/gravity_gun_dryfire" + } + ] + }, + "bed_bug_ambient": { + "subtitle": "subtitles.antarchy.bed_bug_ambient", + "sounds": [ + { + "name": "antarchy:mob/bed_bug/bed_bug_ambient1" + }, + { + "name": "antarchy:mob/bed_bug/bed_bug_ambient2" + } + ] + }, + "bed_bug_hurt": { + "subtitle": "subtitles.antarchy.bed_bug_hurt", + "sounds": [ + { + "name": "antarchy:mob/bed_bug/bed_bug_hurt1" + }, + { + "name": "antarchy:mob/bed_bug/bed_bug_hurt2" + } + ] + }, + "bed_bug_attack": { + "subtitle": "subtitles.antarchy.bed_bug_attack", + "sounds": [ + { + "name": "antarchy:mob/bed_bug/bed_bug_attack1" + } + ] + }, + "wasp_idle": { + "subtitle": "subtitles.antarchy.wasp_idle", + "sounds": [ + { + "name": "antarchy:mob/wasp/buzz1" + }, + { + "name": "antarchy:mob/wasp/buzz2" + } + ] + }, + "wasp_hurt": { + "subtitle": "subtitles.antarchy.wasp_hurt", + "sounds": [ + { + "name": "antarchy:mob/wasp/hurt1" + }, + { + "name": "antarchy:mob/wasp/hurt2" + }, + { + "name": "antarchy:mob/wasp/hurt3" + } + ] + }, + "wasp_attack": { + "subtitle": "subtitles.antarchy.wasp_attack", + "sounds": [ + { + "name": "antarchy:mob/wasp/attack1" + }, + { + "name": "antarchy:mob/wasp/attack2" + }, + { + "name": "antarchy:mob/wasp/attack3" + }, + { + "name": "antarchy:mob/wasp/attack4" + }, + { + "name": "antarchy:mob/wasp/attack5" + } + ] + }, + "wasp_death": { + "subtitle": "subtitles.antarchy.wasp_death", + "sounds": [ + { + "name": "antarchy:mob/wasp/death1" + }, + { + "name": "antarchy:mob/wasp/death2" + } + ] + }, + "scorpion_ambient": { + "subtitle": "subtitles.antarchy.scorpion_ambient", + "sounds": [ + { + "name": "antarchy:mob/scorpion/scorpion_ambient1" + } + ] + }, + "scorpion_hurt": { + "subtitle": "subtitles.antarchy.scorpion_hurt", + "sounds": [ + { + "name": "antarchy:mob/scorpion/scorpion_hurt1" + }, + { + "name": "antarchy:mob/scorpion/scorpion_hurt2" + }, + { + "name": "antarchy:mob/scorpion/scorpion_hurt3" + } + ] + }, + "scorpion_attack": { + "subtitle": "subtitles.antarchy.scorpion_attack", + "sounds": [ + { + "name": "antarchy:mob/scorpion/scorpion_attack1" + }, + { + "name": "antarchy:mob/scorpion/scorpion_attack2" + } + ] + }, + "emperor_scorpion_ambient": { + "subtitle": "subtitles.antarchy.emperor_scorpion_ambient", + "sounds": [ + { + "name": "antarchy:mob/emperor_scorpion/emperor_scorpion_ambient1" + } + ] + }, + "emperor_scorpion_hurt": { + "subtitle": "subtitles.antarchy.emperor_scorpion_hurt", + "sounds": [ + { + "name": "antarchy:mob/emperor_scorpion/emperor_scorpion_hurt1" + }, + { + "name": "antarchy:mob/emperor_scorpion/emperor_scorpion_hurt2" + }, + { + "name": "antarchy:mob/emperor_scorpion/emperor_scorpion_hurt3" + } + ] + }, + "emperor_scorpion_attack": { + "subtitle": "subtitles.antarchy.emperor_scorpion_attack", + "sounds": [ + { + "name": "antarchy:mob/emperor_scorpion/emperor_scorpion_attack1" + } + ] + }, + "emperor_scorpion_roar": { + "subtitle": "subtitles.antarchy.emperor_scorpion_roar", + "sounds": [ + { + "name": "antarchy:mob/emperor_scorpion/emperor_scorpion_roar1" + } + ] + }, + "moleworm_ambient": { + "subtitle": "subtitles.antarchy.moleworm_ambient", + "sounds": [ + { + "name": "antarchy:mob/moleworm/moleworm_idle1" + }, + { + "name": "antarchy:mob/moleworm/moleworm_idle2" + }, + { + "name": "antarchy:mob/moleworm/moleworm_idle3" + }, + { + "name": "antarchy:mob/moleworm/moleworm_idle4" + }, + { + "name": "antarchy:mob/moleworm/moleworm_idle5" + }, + { + "name": "antarchy:mob/moleworm/moleworm_idle6" + }, + { + "name": "antarchy:mob/moleworm/moleworm_idle7" + } + ] + }, + "moleworm_hurt": { + "subtitle": "subtitles.antarchy.moleworm_hurt", + "sounds": [ + { + "name": "antarchy:mob/moleworm/moleworm_hurt1" + }, + { + "name": "antarchy:mob/moleworm/moleworm_hurt2" + }, + { + "name": "antarchy:mob/moleworm/moleworm_hurt3" + } + ] + }, + "moleworm_attack": { + "subtitle": "subtitles.antarchy.moleworm_attack", + "sounds": [ + { + "name": "antarchy:mob/moleworm/moleworm_attack1" + }, + { + "name": "antarchy:mob/moleworm/moleworm_attack2" + } + ] + }, + "moleworm_dig": { + "subtitle": "subtitles.antarchy.moleworm_dig", + "sounds": [ + { + "name": "antarchy:mob/moleworm/moleworm_dig1" + }, + { + "name": "antarchy:mob/moleworm/moleworm_dig2" + }, + { + "name": "antarchy:mob/moleworm/moleworm_dig3" + } + ] + }, + "molevore_ambient": { + "subtitle": "subtitles.antarchy.molevore_ambient", + "sounds": [ + { + "name": "antarchy:mob/molevore/molevore_idle1" + }, + { + "name": "antarchy:mob/molevore/molevore_idle2" + }, + { + "name": "antarchy:mob/molevore/molevore_idle3" + } + ] + }, + "molevore_hurt": { + "subtitle": "subtitles.antarchy.molevore_hurt", + "sounds": [ + { + "name": "antarchy:mob/molevore/molevore_hurt1" + }, + { + "name": "antarchy:mob/molevore/molevore_hurt2" + }, + { + "name": "antarchy:mob/molevore/molevore_hurt3" + } + ] + }, + "molevore_attack": { + "subtitle": "subtitles.antarchy.molevore_attack", + "sounds": [ + { + "name": "antarchy:mob/molevore/molevore_attack1" + }, + { + "name": "antarchy:mob/molevore/molevore_attack2" + }, + { + "name": "antarchy:mob/molevore/molevore_attack3" + } + ] + }, + "molevore_dig": { + "subtitle": "subtitles.antarchy.molevore_dig", + "sounds": [ + { + "name": "antarchy:mob/molevore/molevore_dig1" + } + ] + }, + "duct_tape_use": { + "subtitle": "subtitles.antarchy.duct_tape_use", + "sounds": [ + { + "name": "antarchy:block/duct_tape/duct_tape1" + }, + { + "name": "antarchy:block/duct_tape/duct_tape2" + }, + { + "name": "antarchy:block/duct_tape/duct_tape3" + }, + { + "name": "antarchy:block/duct_tape/duct_tape4" + }, + { + "name": "antarchy:block/duct_tape/duct_tape5" + }, + { + "name": "antarchy:block/duct_tape/duct_tape6" + }, + { + "name": "antarchy:block/duct_tape/duct_tape7" + }, + { + "name": "antarchy:block/duct_tape/duct_tape8" + } + ] + }, + "potent_nyxite_hypnotic_gas": { + "subtitle": "subtitles.antarchy.potent_nyxite_hypnotic_gas", + "sounds": [ + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient1" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient2" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient3" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient4" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient5" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient6" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient7" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient8" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient9" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient10" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient11" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient12" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient13" + }, + { + "name": "antarchy:block/potent_nyxite/hypnotic_gas/ambient14" + } + ] + }, + "potent_nyxite_geyser_eruption_start": { + "subtitle": "subtitles.antarchy.potent_nyxite_geyser_eruption", + "sounds": [ + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption1" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption2" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption3" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption4" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption5" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption6" + } + ] + }, + "potent_nyxite_geyser_eruption_active": { + "subtitle": "subtitles.antarchy.potent_nyxite_geyser_eruption", + "sounds": [ + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active1" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active2" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active3" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active4" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active5" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active6" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active7" + } + ] + }, + "potent_nyxite_geyser_continuous_start": { + "subtitle": "subtitles.antarchy.potent_nyxite_geyser_continuous", + "sounds": [ + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption1" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption2" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption3" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption4" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption5" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption6" + } + ] + }, + "potent_nyxite_geyser_continuous_active": { + "subtitle": "subtitles.antarchy.potent_nyxite_geyser_continuous", + "sounds": [ + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active1" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active2" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active3" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active4" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active5" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active6" + }, + { + "name": "antarchy:block/potent_nyxite/geyser_continuous/eruption_active7" + } + ] + }, + "ambient.elythia.firefly": { + "sounds": [ + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush1", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush2", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush3", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush4", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush5", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush6", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush7", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush8", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush9", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush10", + "stream": false + }, + { + "name": "antarchy:ambient/elythia/firefly/firefly_bush11", + "stream": false + } + ] + }, + "triffid_attack": { + "subtitle": "subtitles.antarchy.triffid_attack", + "sounds": [ + { + "name": "antarchy:mob/triffid/triffid_attack1" + } + ] + }, + "triffid_grab": { + "subtitle": "subtitles.antarchy.triffid_grab", + "sounds": [ + { + "name": "antarchy:mob/triffid/triffid_grab1" + } + ] + }, + "triffid_hurt": { + "subtitle": "subtitles.antarchy.triffid_hurt", + "sounds": [ + { + "name": "antarchy:mob/triffid/triffid_hurt1" + }, + { + "name": "antarchy:mob/triffid/triffid_hurt2" + }, + { + "name": "antarchy:mob/triffid/triffid_hurt3" + } + ] + }, + "triffid_death": { + "subtitle": "subtitles.antarchy.triffid_death", + "sounds": [ + { + "name": "antarchy:mob/triffid/triffid_hurt3" + } + ] + }, + "triffid_hiss": { + "subtitle": "subtitles.antarchy.triffid_hiss", + "sounds": [ + { + "name": "antarchy:mob/triffid/triffid_hiss1" + } + ] + }, + "triffid_growl": { + "subtitle": "subtitles.antarchy.triffid_growl", + "sounds": [ + { + "name": "antarchy:mob/triffid/triffid_growl1" + }, + { + "name": "antarchy:mob/triffid/triffid_growl2" + } + ] + } +} diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush1.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush1.ogg new file mode 100644 index 00000000..7864296a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush10.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush10.ogg new file mode 100644 index 00000000..ecb4aa92 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush10.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush11.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush11.ogg new file mode 100644 index 00000000..acf00eff Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush11.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush2.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush2.ogg new file mode 100644 index 00000000..d2ffa071 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush3.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush3.ogg new file mode 100644 index 00000000..ac3fc89b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush4.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush4.ogg new file mode 100644 index 00000000..3d8a94ca Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush5.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush5.ogg new file mode 100644 index 00000000..2514cba6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush6.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush6.ogg new file mode 100644 index 00000000..19a5e7b7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush7.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush7.ogg new file mode 100644 index 00000000..515ca29a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush7.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush8.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush8.ogg new file mode 100644 index 00000000..e1ca3b19 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush8.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush9.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush9.ogg new file mode 100644 index 00000000..ed35ad01 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/elythia/firefly/firefly_bush9.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind1_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind1_reversed.ogg new file mode 100644 index 00000000..25de1a31 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind1_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind2_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind2_reversed.ogg new file mode 100644 index 00000000..051e833c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind2_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind3_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind3_reversed.ogg new file mode 100644 index 00000000..03a4683c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind3_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind4_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind4_reversed.ogg new file mode 100644 index 00000000..cbc1777b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/wind4_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/with1_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/with1_reversed.ogg new file mode 100644 index 00000000..ed599893 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/dream_dunes/with1_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/ambient.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/ambient.ogg new file mode 100644 index 00000000..3f5a53b9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/ambient.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse1.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse1.ogg new file mode 100644 index 00000000..da20b7f6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse2.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse2.ogg new file mode 100644 index 00000000..3d9804ad Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse3.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse3.ogg new file mode 100644 index 00000000..5a0b4431 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse4.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse4.ogg new file mode 100644 index 00000000..9f22b0c1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/lucid_pools/curse4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition1_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition1_reversed.ogg new file mode 100644 index 00000000..010b6b92 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition1_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition2_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition2_reversed.ogg new file mode 100644 index 00000000..5432faf6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition2_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition3_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition3_reversed.ogg new file mode 100644 index 00000000..1dceff57 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition3_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition4_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition4_reversed.ogg new file mode 100644 index 00000000..655bdcf7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition4_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition5_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition5_reversed.ogg new file mode 100644 index 00000000..a9c9dfad Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition5_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition6_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition6_reversed.ogg new file mode 100644 index 00000000..339be3ad Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition6_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition7_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition7_reversed.ogg new file mode 100644 index 00000000..c0de6ded Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition7_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition8_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition8_reversed.ogg new file mode 100644 index 00000000..7245ccdd Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/addition8_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ambience_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ambience_reversed.ogg new file mode 100644 index 00000000..7fb5cf48 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ambience_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/dark1_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/dark1_reversed.ogg new file mode 100644 index 00000000..3dcc50a2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/dark1_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/dark2_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/dark2_reversed.ogg new file mode 100644 index 00000000..330c03d2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/dark2_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground1_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground1_reversed.ogg new file mode 100644 index 00000000..902f30c6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground1_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground2_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground2_reversed.ogg new file mode 100644 index 00000000..fa14737c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground2_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground3_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground3_reversed.ogg new file mode 100644 index 00000000..b517dd05 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground3_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground4_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground4_reversed.ogg new file mode 100644 index 00000000..ce4b4e16 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/ground4_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood1_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood1_reversed.ogg new file mode 100644 index 00000000..40878ca3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood1_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood2_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood2_reversed.ogg new file mode 100644 index 00000000..5bbe4a56 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood2_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood3_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood3_reversed.ogg new file mode 100644 index 00000000..f5d2f944 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood3_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood4_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood4_reversed.ogg new file mode 100644 index 00000000..d2b4b314 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood4_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood5_reversed.ogg b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood5_reversed.ogg new file mode 100644 index 00000000..baf38314 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/ambient/thoraxis/nightmare_wastes/mood5_reversed.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/ant_nest_exit.ogg b/common/src/main/resources/assets/antarchy/sounds/block/ant_nest_exit.ogg new file mode 100644 index 00000000..fcdc940b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/ant_nest_exit.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape1.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape1.ogg new file mode 100644 index 00000000..3709f857 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape2.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape2.ogg new file mode 100644 index 00000000..4b4d6173 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape3.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape3.ogg new file mode 100644 index 00000000..31b02740 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape4.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape4.ogg new file mode 100644 index 00000000..a0649221 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape5.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape5.ogg new file mode 100644 index 00000000..e87c6c34 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape6.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape6.ogg new file mode 100644 index 00000000..5e40474a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape7.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape7.ogg new file mode 100644 index 00000000..a912882d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape7.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape8.ogg b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape8.ogg new file mode 100644 index 00000000..d6cff8e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/duct_tape/duct_tape8.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption1.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption1.ogg new file mode 100644 index 00000000..db211e8c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption2.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption2.ogg new file mode 100644 index 00000000..784248ea Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption3.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption3.ogg new file mode 100644 index 00000000..6b90f774 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption4.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption4.ogg new file mode 100644 index 00000000..6357455c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption5.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption5.ogg new file mode 100644 index 00000000..f0ef4d92 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption6.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption6.ogg new file mode 100644 index 00000000..2bae79db Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active1.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active1.ogg new file mode 100644 index 00000000..7b135e70 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active2.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active2.ogg new file mode 100644 index 00000000..7ff94e79 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active3.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active3.ogg new file mode 100644 index 00000000..c696d11b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active4.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active4.ogg new file mode 100644 index 00000000..93670f58 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active5.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active5.ogg new file mode 100644 index 00000000..dc5c793c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active6.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active6.ogg new file mode 100644 index 00000000..05db972b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active7.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active7.ogg new file mode 100644 index 00000000..717df1ba Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/geyser_continuous/eruption_active7.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient1.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient1.ogg new file mode 100644 index 00000000..4b566583 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient10.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient10.ogg new file mode 100644 index 00000000..81c66172 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient10.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient11.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient11.ogg new file mode 100644 index 00000000..650c1c4a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient11.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient12.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient12.ogg new file mode 100644 index 00000000..a302cd54 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient12.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient13.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient13.ogg new file mode 100644 index 00000000..0e81d716 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient13.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient14.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient14.ogg new file mode 100644 index 00000000..acbf727e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient14.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient2.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient2.ogg new file mode 100644 index 00000000..7a2e2a23 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient3.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient3.ogg new file mode 100644 index 00000000..e5ed92f7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient4.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient4.ogg new file mode 100644 index 00000000..cce3e51b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient5.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient5.ogg new file mode 100644 index 00000000..9e2f45f0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient6.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient6.ogg new file mode 100644 index 00000000..395ea845 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient7.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient7.ogg new file mode 100644 index 00000000..f51954d1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient7.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient8.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient8.ogg new file mode 100644 index 00000000..bd1faf6d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient8.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient9.ogg b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient9.ogg new file mode 100644 index 00000000..d4dc1e60 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/block/potent_nyxite/hypnotic_gas/ambient9.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_drop.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_drop.ogg new file mode 100644 index 00000000..daa4b7d5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_drop.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_dryfire.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_dryfire.ogg new file mode 100644 index 00000000..e8a23b91 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_dryfire.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_hold_loop.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_hold_loop.ogg new file mode 100644 index 00000000..2ff3f3cb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_hold_loop.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch1.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch1.ogg new file mode 100644 index 00000000..71fca081 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch2.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch2.ogg new file mode 100644 index 00000000..601f54ad Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch3.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch3.ogg new file mode 100644 index 00000000..6f6b9876 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch4.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch4.ogg new file mode 100644 index 00000000..50b2c4b1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_launch4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_pickup.ogg b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_pickup.ogg new file mode 100644 index 00000000..36cffa73 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/gravity_gun/gravity_gun_pickup.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_ambient.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_ambient.ogg new file mode 100644 index 00000000..d6cab4c4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_ambient.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_bite.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_bite.ogg new file mode 100644 index 00000000..0891cd41 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_bite.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_gather1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_gather1.ogg new file mode 100644 index 00000000..c1e24d3b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_gather1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_gather2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_gather2.ogg new file mode 100644 index 00000000..7cb2e5e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_gather2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_hurt.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_hurt.ogg new file mode 100644 index 00000000..c18c0fe1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_hurt.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle1.ogg new file mode 100644 index 00000000..274cf1f1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle2.ogg new file mode 100644 index 00000000..a3032f38 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle3.ogg new file mode 100644 index 00000000..44f2f812 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle4.ogg new file mode 100644 index 00000000..80364c85 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle5.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle5.ogg new file mode 100644 index 00000000..d1e0c5f8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle6.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle6.ogg new file mode 100644 index 00000000..71e76cbb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/ant/ant_idle6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_bite.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_bite.ogg new file mode 100644 index 00000000..c4594751 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_bite.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_death.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_death.ogg new file mode 100644 index 00000000..abdd3290 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_death.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hiss.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hiss.ogg new file mode 100644 index 00000000..4c07273c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hiss.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hurt1.ogg new file mode 100644 index 00000000..769d5f41 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hurt2.ogg new file mode 100644 index 00000000..e36c953e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_idle_loop1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_idle_loop1.ogg new file mode 100644 index 00000000..20cf7145 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_idle_loop1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_idle_loop2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_idle_loop2.ogg new file mode 100644 index 00000000..e55c01ca Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_idle_loop2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_slither_loop1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_slither_loop1.ogg new file mode 100644 index 00000000..bf6e48d5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_slither_loop1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_slither_loop2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_slither_loop2.ogg new file mode 100644 index 00000000..080c317e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/basilisk/basilisk_slither_loop2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_ambient1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_ambient1.ogg new file mode 100644 index 00000000..98cd4c20 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_ambient1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_ambient2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_ambient2.ogg new file mode 100644 index 00000000..c4cb713b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_ambient2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_attack1.ogg new file mode 100644 index 00000000..5c0d655f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_hurt1.ogg new file mode 100644 index 00000000..1ad6f0ec Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_hurt2.ogg new file mode 100644 index 00000000..e1f10239 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/bed_bug/bed_bug_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_death1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_death1.ogg new file mode 100644 index 00000000..808d57a8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_death1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle1.ogg new file mode 100644 index 00000000..9bf90b8e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle2.ogg new file mode 100644 index 00000000..12986f5a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle3.ogg new file mode 100644 index 00000000..7533a040 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/brutalfly/brutalfly_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl1.ogg new file mode 100644 index 00000000..6fe75c33 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl2.ogg new file mode 100644 index 00000000..e7310473 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl3.ogg new file mode 100644 index 00000000..6ab04a47 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl4.ogg new file mode 100644 index 00000000..3574490f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl5.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl5.ogg new file mode 100644 index 00000000..ac576cb2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl6.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl6.ogg new file mode 100644 index 00000000..8a75bdaf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_crawl6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt1.ogg new file mode 100644 index 00000000..2f66b0f4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt2.ogg new file mode 100644 index 00000000..054d4283 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt3.ogg new file mode 100644 index 00000000..b79e416b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_idle1.ogg new file mode 100644 index 00000000..fabba96b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_idle2.ogg new file mode 100644 index 00000000..88868dd4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/caterpillar/caterpillar_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_bite.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_bite.ogg new file mode 100644 index 00000000..c8857578 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_bite.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_death.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_death.ogg new file mode 100644 index 00000000..569c17de Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_death.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_fly1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_fly1.ogg new file mode 100644 index 00000000..76920276 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_fly1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_hurt.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_hurt.ogg new file mode 100644 index 00000000..7afa99cf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_hurt.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle1.ogg new file mode 100644 index 00000000..7c97457d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle2.ogg new file mode 100644 index 00000000..c6f6ea1d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle3.ogg new file mode 100644 index 00000000..381b77c3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle4.ogg new file mode 100644 index 00000000..e4896b6b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/cloud_shark/cloud_shark_idle4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_ambient1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_ambient1.ogg new file mode 100644 index 00000000..88d92252 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_ambient1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_attack1.ogg new file mode 100644 index 00000000..3b2e1d66 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt1.ogg new file mode 100644 index 00000000..06573ff9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt2.ogg new file mode 100644 index 00000000..88a4f341 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt3.ogg new file mode 100644 index 00000000..0299850e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_roar1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_roar1.ogg new file mode 100644 index 00000000..25cda264 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/emperor_scorpion/emperor_scorpion_roar1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/flying_squirrel/flying_squirrel_glide_loop.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/flying_squirrel/flying_squirrel_glide_loop.ogg new file mode 100644 index 00000000..fe12615b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/flying_squirrel/flying_squirrel_glide_loop.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/flying_squirrel/flying_squirrel_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/flying_squirrel/flying_squirrel_idle1.ogg new file mode 100644 index 00000000..7b10f402 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/flying_squirrel/flying_squirrel_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_attack1.ogg new file mode 100644 index 00000000..dc7e1307 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_death.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_death.ogg new file mode 100644 index 00000000..c61bc2a4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_death.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_loop1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_loop1.ogg new file mode 100644 index 00000000..ff0fbb9b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_loop1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_loop2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_loop2.ogg new file mode 100644 index 00000000..46d3b186 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_loop2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_sideways_loop1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_sideways_loop1.ogg new file mode 100644 index 00000000..080bd3a6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_sideways_loop1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_sideways_loop2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_sideways_loop2.ogg new file mode 100644 index 00000000..3ac77da3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_flying_sideways_loop2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_hurt1.ogg new file mode 100644 index 00000000..1348d45b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_hurt2.ogg new file mode 100644 index 00000000..2675dde6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_roar.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_roar.ogg new file mode 100644 index 00000000..62674907 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_roar.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_spawn.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_spawn.ogg new file mode 100644 index 00000000..02ae56ff Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_spawn.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_spin.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_spin.ogg new file mode 100644 index 00000000..fdb8f612 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/kraken/kraken_spin.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_ambience.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_ambience.ogg new file mode 100644 index 00000000..5a75cbdb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_ambience.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_attack.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_attack.ogg new file mode 100644 index 00000000..75802e96 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_attack.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_bolt.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_bolt.ogg new file mode 100644 index 00000000..69f0949a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_bolt.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_death.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_death.ogg new file mode 100644 index 00000000..aea300cf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_death.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_flying.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_flying.ogg new file mode 100644 index 00000000..b8555130 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_flying.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_hurt1.ogg new file mode 100644 index 00000000..69218369 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_hurt2.ogg new file mode 100644 index 00000000..8038b879 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/lucid/lucid_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack1.ogg new file mode 100644 index 00000000..61864aec Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack2.ogg new file mode 100644 index 00000000..5b44db74 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack3.ogg new file mode 100644 index 00000000..5f2bb2e3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack4.ogg new file mode 100644 index 00000000..2d28e6ea Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_attack4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_fly_loop.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_fly_loop.ogg new file mode 100644 index 00000000..7204c176 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_fly_loop.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt1.ogg new file mode 100644 index 00000000..06573ff9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt2.ogg new file mode 100644 index 00000000..88a4f341 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt3.ogg new file mode 100644 index 00000000..0299850e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle1.ogg new file mode 100644 index 00000000..fbab3bf2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle2.ogg new file mode 100644 index 00000000..5d66b98b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle3.ogg new file mode 100644 index 00000000..7ea5b2f9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle4.ogg new file mode 100644 index 00000000..0d8aa5ab Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle5.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle5.ogg new file mode 100644 index 00000000..862c6cdd Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle6.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle6.ogg new file mode 100644 index 00000000..1bb457ab Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle7.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle7.ogg new file mode 100644 index 00000000..d98aa46a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/mantis/mantis_idle7.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack1.ogg new file mode 100644 index 00000000..e4803676 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack2.ogg new file mode 100644 index 00000000..38aad46d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack3.ogg new file mode 100644 index 00000000..46a468fd Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/missile_squid/missile_squid_attack3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack1.ogg new file mode 100644 index 00000000..74e8e592 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack2.ogg new file mode 100644 index 00000000..687cfda1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack3.ogg new file mode 100644 index 00000000..dfab2afa Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_attack3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_dig1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_dig1.ogg new file mode 100644 index 00000000..71b33858 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_dig1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt1.ogg new file mode 100644 index 00000000..3792efed Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt2.ogg new file mode 100644 index 00000000..6a2073fb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt3.ogg new file mode 100644 index 00000000..d8f7cdcd Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle1.ogg new file mode 100644 index 00000000..1da7ad6f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle2.ogg new file mode 100644 index 00000000..c850be25 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle3.ogg new file mode 100644 index 00000000..ef7d32d2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/molevore/molevore_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_attack1.ogg new file mode 100644 index 00000000..c61ac155 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_attack2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_attack2.ogg new file mode 100644 index 00000000..42120140 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_attack2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig1.ogg new file mode 100644 index 00000000..cfd76526 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig2.ogg new file mode 100644 index 00000000..5bac0092 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig3.ogg new file mode 100644 index 00000000..0a8ca0d5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_dig3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt1.ogg new file mode 100644 index 00000000..36e3521e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt2.ogg new file mode 100644 index 00000000..b719ae14 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt3.ogg new file mode 100644 index 00000000..583f9ecd Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle1.ogg new file mode 100644 index 00000000..c02558ff Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle2.ogg new file mode 100644 index 00000000..b6b7693c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle3.ogg new file mode 100644 index 00000000..daded55b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle4.ogg new file mode 100644 index 00000000..5e7e4861 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle5.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle5.ogg new file mode 100644 index 00000000..c3eeb8e3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle6.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle6.ogg new file mode 100644 index 00000000..cac33b4d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle6.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle7.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle7.ogg new file mode 100644 index 00000000..2f66bd7f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/moleworm/moleworm_idle7.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_death.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_death.ogg new file mode 100644 index 00000000..4ce6ba58 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_death.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_hurt1.ogg new file mode 100644 index 00000000..a4234ef2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle1.ogg new file mode 100644 index 00000000..6003e33a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle2.ogg new file mode 100644 index 00000000..36629ac5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle3.ogg new file mode 100644 index 00000000..33518fdf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle4.ogg new file mode 100644 index 00000000..20bb6780 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_idle4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_roar1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_roar1.ogg new file mode 100644 index 00000000..1adffcaa Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_roar1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_roar2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_roar2.ogg new file mode 100644 index 00000000..def0e1e1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/nightmare/nightmare_roar2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert1.ogg new file mode 100644 index 00000000..a99660cc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert2.ogg new file mode 100644 index 00000000..ea01bc88 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert3.ogg new file mode 100644 index 00000000..8fab7d11 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_alert3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt1.ogg new file mode 100644 index 00000000..e59c1ac4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt2.ogg new file mode 100644 index 00000000..db983cad Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt3.ogg new file mode 100644 index 00000000..687e1f98 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle1.ogg new file mode 100644 index 00000000..102cf762 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle2.ogg new file mode 100644 index 00000000..232e540a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle3.ogg new file mode 100644 index 00000000..3bdafad1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_idle3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer1.ogg new file mode 100644 index 00000000..d179c883 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer2.ogg new file mode 100644 index 00000000..a0d487a9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer3.ogg new file mode 100644 index 00000000..f37cc2a7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_joinplayer3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save1.ogg new file mode 100644 index 00000000..3e6963a9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save2.ogg new file mode 100644 index 00000000..2267fb21 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save3.ogg new file mode 100644 index 00000000..621a9fcf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_save3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_worry1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_worry1.ogg new file mode 100644 index 00000000..7d79bcda Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_worry1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_worry2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_worry2.ogg new file mode 100644 index 00000000..231b4039 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/reverie/reverie_worry2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_ambient1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_ambient1.ogg new file mode 100644 index 00000000..625962d4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_ambient1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_attack1.ogg new file mode 100644 index 00000000..e526ca74 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_attack2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_attack2.ogg new file mode 100644 index 00000000..33452b64 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_attack2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt1.ogg new file mode 100644 index 00000000..de7ea472 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt2.ogg new file mode 100644 index 00000000..547a2733 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt3.ogg new file mode 100644 index 00000000..6f55250d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/scorpion/scorpion_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_attack1.ogg new file mode 100644 index 00000000..6674f8ef Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_grab1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_grab1.ogg new file mode 100644 index 00000000..b18d0e34 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_grab1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_growl1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_growl1.ogg new file mode 100644 index 00000000..ba078a20 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_growl1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_growl2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_growl2.ogg new file mode 100644 index 00000000..4191a285 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_growl2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hiss1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hiss1.ogg new file mode 100644 index 00000000..0cdeb61d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hiss1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt1.ogg new file mode 100644 index 00000000..f5a311d8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt2.ogg new file mode 100644 index 00000000..3b823754 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt3.ogg new file mode 100644 index 00000000..0b347842 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/triffid/triffid_hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack1.ogg new file mode 100644 index 00000000..f28802ca Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack2.ogg new file mode 100644 index 00000000..402e288c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack3.ogg new file mode 100644 index 00000000..febf178e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack4.ogg new file mode 100644 index 00000000..450de27a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack5.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack5.ogg new file mode 100644 index 00000000..8cb69273 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/attack5.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/buzz1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/buzz1.ogg new file mode 100644 index 00000000..43fb534d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/buzz1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/buzz2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/buzz2.ogg new file mode 100644 index 00000000..15756212 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/buzz2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/death1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/death1.ogg new file mode 100644 index 00000000..e17cf7d4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/death1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/death2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/death2.ogg new file mode 100644 index 00000000..974a0662 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/death2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt1.ogg new file mode 100644 index 00000000..6d5d0a04 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt2.ogg new file mode 100644 index 00000000..8559f964 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt3.ogg new file mode 100644 index 00000000..b779d8ce Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/hurt3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/idle1.ogg new file mode 100644 index 00000000..eb5c5937 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/idle1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/wasp/idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/idle2.ogg new file mode 100644 index 00000000..c1897bed Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/mob/wasp/idle2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/size_ray/growth_ray.ogg b/common/src/main/resources/assets/antarchy/sounds/size_ray/growth_ray.ogg new file mode 100644 index 00000000..32add080 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/size_ray/growth_ray.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/size_ray/shrink_ray.ogg b/common/src/main/resources/assets/antarchy/sounds/size_ray/shrink_ray.ogg new file mode 100644 index 00000000..58828e75 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/size_ray/shrink_ray.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/size_ray/size_ray_charge.ogg b/common/src/main/resources/assets/antarchy/sounds/size_ray/size_ray_charge.ogg new file mode 100644 index 00000000..2ff3f3cb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/size_ray/size_ray_charge.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka1.ogg b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka1.ogg new file mode 100644 index 00000000..21ef89d4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka1.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka2.ogg b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka2.ogg new file mode 100644 index 00000000..e4e60fda Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka2.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka3.ogg b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka3.ogg new file mode 100644 index 00000000..15a12ac9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka3.ogg differ diff --git a/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka4.ogg b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka4.ogg new file mode 100644 index 00000000..6f93376b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/sounds/squidzooka/squizooka4.ogg differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_block.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_block.png new file mode 100644 index 00000000..f07b43f2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_block_top.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_block_top.png new file mode 100644 index 00000000..5d21455b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_block_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_bottom.png new file mode 100644 index 00000000..992a28de Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_side.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_side.png new file mode 100644 index 00000000..7c2275aa Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_side.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_top.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_top.png new file mode 100644 index 00000000..76379dac Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_scaffolding_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/polished_antimetal_block.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/polished_antimetal_block.png new file mode 100644 index 00000000..8be7a9ba Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antimetal/polished_antimetal_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/polished_antimetal_block_top.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/polished_antimetal_block_top.png new file mode 100644 index 00000000..a2a46069 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antimetal/polished_antimetal_block_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antiwater_flow.png b/common/src/main/resources/assets/antarchy/textures/block/antiwater_flow.png new file mode 100644 index 00000000..f4dbd821 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antiwater_flow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antiwater_flow.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/antiwater_flow.png.mcmeta new file mode 100644 index 00000000..4f0718ac --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/antiwater_flow.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/textures/block/antiwater_still.png b/common/src/main/resources/assets/antarchy/textures/block/antiwater_still.png new file mode 100644 index 00000000..276e8a2f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/antiwater_still.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/antiwater_still.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/antiwater_still.png.mcmeta new file mode 100644 index 00000000..0645f48c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/antiwater_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg.png b/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg.png new file mode 100644 index 00000000..25915455 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg_slightly_cracked.png b/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg_slightly_cracked.png new file mode 100644 index 00000000..5550ac1d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg_slightly_cracked.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg_very_cracked.png b/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg_very_cracked.png new file mode 100644 index 00000000..46976ff0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/bed_bug_egg_very_cracked.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_block.png b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_block.png new file mode 100644 index 00000000..7e7d6229 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage0.png b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage0.png new file mode 100644 index 00000000..3ae22a7e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage0.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage1.png b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage1.png new file mode 100644 index 00000000..e15574b9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage2.png b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage2.png new file mode 100644 index 00000000..5827563e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_bud_stage2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_cluster.png b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_cluster.png new file mode 100644 index 00000000..d73397be Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/blood_crystal_cluster.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest.png b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest.png new file mode 100644 index 00000000..602237d0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest.png.mcmeta new file mode 100644 index 00000000..1fd02729 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 9 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest_top.png b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest_top.png new file mode 100644 index 00000000..5de444e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest_top.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest_top.png.mcmeta new file mode 100644 index 00000000..1fd02729 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/brown_ant_nest_top.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 9 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/empty_brown_ant_nest_block.png b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/empty_brown_ant_nest_block.png new file mode 100644 index 00000000..50a968ba Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/empty_brown_ant_nest_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/empty_brown_ant_nest_top.png b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/empty_brown_ant_nest_top.png new file mode 100644 index 00000000..f9c16691 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest/empty_brown_ant_nest_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest_top.png b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest_top.png new file mode 100644 index 00000000..e9ee71db Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/brown_ant_nest_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/budding_blood_crystal_block.png b/common/src/main/resources/assets/antarchy/textures/block/budding_blood_crystal_block.png new file mode 100644 index 00000000..c29ec146 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/budding_blood_crystal_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/chiseled_dream_sandstone.png b/common/src/main/resources/assets/antarchy/textures/block/chiseled_dream_sandstone.png new file mode 100644 index 00000000..41b1f425 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/chiseled_dream_sandstone.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/chiseled_nyxite.png b/common/src/main/resources/assets/antarchy/textures/block/chiseled_nyxite.png new file mode 100644 index 00000000..463a04bf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/chiseled_nyxite.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/cloud_block.png b/common/src/main/resources/assets/antarchy/textures/block/cloud_block.png new file mode 100644 index 00000000..595010ee Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/cloud_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage0.png b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage0.png new file mode 100644 index 00000000..ef1f96cd Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage0.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage1.png b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage1.png new file mode 100644 index 00000000..f17e0b3f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage2.png b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage2.png new file mode 100644 index 00000000..f3990230 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage2.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage2.png.mcmeta new file mode 100644 index 00000000..bbd61c1f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/cornea/cornea_stalk_stage2.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 7 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/cut_dream_sandstone.png b/common/src/main/resources/assets/antarchy/textures/block/cut_dream_sandstone.png new file mode 100644 index 00000000..96381891 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/cut_dream_sandstone.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_fire.png b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_fire.png new file mode 100644 index 00000000..cc28f8b6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_fire.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_fire.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_fire.png.mcmeta new file mode 100644 index 00000000..0645f48c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_fire.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_log_lit.png b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_log_lit.png new file mode 100644 index 00000000..be9b7862 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_log_lit.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_log_lit.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_log_lit.png.mcmeta new file mode 100644 index 00000000..bb2e173f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/dream_campfire_log_lit.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 20 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_fire_0.png b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_0.png new file mode 100644 index 00000000..b90f1257 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_0.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_fire_0.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_0.png.mcmeta new file mode 100644 index 00000000..76446714 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_0.png.mcmeta @@ -0,0 +1,38 @@ +{ + "animation": { + "frames": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_fire_1.png b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_1.png new file mode 100644 index 00000000..ef49e34d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_fire_1.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_1.png.mcmeta new file mode 100644 index 00000000..dd1bedb1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/dream_fire_1.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_lantern.png b/common/src/main/resources/assets/antarchy/textures/block/dream_lantern.png new file mode 100644 index 00000000..280e4b35 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_lantern.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_lantern.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/dream_lantern.png.mcmeta new file mode 100644 index 00000000..3de4a0bd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/dream_lantern.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 8 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_sand.png b/common/src/main/resources/assets/antarchy/textures/block/dream_sand.png new file mode 100644 index 00000000..e096183d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_sand.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone.png b/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone.png new file mode 100644 index 00000000..d395c17d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone_bottom.png new file mode 100644 index 00000000..5f15a270 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone_top.png b/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone_top.png new file mode 100644 index 00000000..00cbc1a0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_sandstone_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/dream_torch.png b/common/src/main/resources/assets/antarchy/textures/block/dream_torch.png new file mode 100644 index 00000000..b2b9df72 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/dream_torch.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side.png b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side.png new file mode 100644 index 00000000..2857679b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side_2.png b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side_2.png new file mode 100644 index 00000000..5a4ee689 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side_2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side_3.png b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side_3.png new file mode 100644 index 00000000..c14d8b44 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_side_3.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_top.png b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_top.png new file mode 100644 index 00000000..1d09bd52 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/duct_tape/duct_tape_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/hushweed.png b/common/src/main/resources/assets/antarchy/textures/block/hushweed.png new file mode 100644 index 00000000..75013dd0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/hushweed.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/hushweed_particle.png b/common/src/main/resources/assets/antarchy/textures/block/hushweed_particle.png new file mode 100644 index 00000000..c887769c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/hushweed_particle.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/milkweed/orange_milkweed_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/milkweed/orange_milkweed_bottom.png new file mode 100644 index 00000000..a515f571 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/milkweed/orange_milkweed_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/milkweed/orange_milkweed_top.png b/common/src/main/resources/assets/antarchy/textures/block/milkweed/orange_milkweed_top.png new file mode 100644 index 00000000..2c1694fc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/milkweed/orange_milkweed_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/milkweed/pink_milkweed_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/milkweed/pink_milkweed_bottom.png new file mode 100644 index 00000000..7796b963 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/milkweed/pink_milkweed_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/milkweed/pink_milkweed_top.png b/common/src/main/resources/assets/antarchy/textures/block/milkweed/pink_milkweed_top.png new file mode 100644 index 00000000..8913e972 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/milkweed/pink_milkweed_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite.png new file mode 100644 index 00000000..c2b1022a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_bricks.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_bricks.png new file mode 100644 index 00000000..477bdefe Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_bricks.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_base.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_base.png new file mode 100644 index 00000000..4096757f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_base.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_frustum.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_frustum.png new file mode 100644 index 00000000..02159840 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_frustum.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_middle.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_middle.png new file mode 100644 index 00000000..3a143dfc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_middle.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_tip.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_tip.png new file mode 100644 index 00000000..59c33d41 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_tip.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_tip_merge.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_tip_merge.png new file mode 100644 index 00000000..2b8be68f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_down_tip_merge.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_base.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_base.png new file mode 100644 index 00000000..f8505b91 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_base.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_frustum.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_frustum.png new file mode 100644 index 00000000..ae826f1b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_frustum.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_middle.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_middle.png new file mode 100644 index 00000000..8cfc71ba Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_middle.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_tip.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_tip.png new file mode 100644 index 00000000..d0fba154 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_tip.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_tip_merge.png b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_tip_merge.png new file mode 100644 index 00000000..50ccf1d3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/nyxite_spike/nyxite_spike_up_tip_merge.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/mossy_ouranwood_log.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/mossy_ouranwood_log.png new file mode 100644 index 00000000..54059d3f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/mossy_ouranwood_log.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/mossy_ouranwood_log_top.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/mossy_ouranwood_log_top.png new file mode 100644 index 00000000..312b4352 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/mossy_ouranwood_log_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_acorn_hanging.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_acorn_hanging.png new file mode 100644 index 00000000..aaba9038 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_acorn_hanging.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_door_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_door_bottom.png new file mode 100644 index 00000000..cfd22a6c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_door_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_door_top.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_door_top.png new file mode 100644 index 00000000..02868c13 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_door_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_leaves.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_leaves.png new file mode 100644 index 00000000..5b6290b0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_leaves.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_log.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_log.png new file mode 100644 index 00000000..cb3fcaf9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_log.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_log_top.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_log_top.png new file mode 100644 index 00000000..60177a81 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_log_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_planks.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_planks.png new file mode 100644 index 00000000..643dd7b3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_planks.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_0.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_0.png new file mode 100644 index 00000000..c232eaf2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_0.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_1.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_1.png new file mode 100644 index 00000000..ca02b758 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_2.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_2.png new file mode 100644 index 00000000..ac43819c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_sapling_2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_trapdoor.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_trapdoor.png new file mode 100644 index 00000000..5ff7f017 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/ouranwood_trapdoor.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/stripped_ouranwood_log.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/stripped_ouranwood_log.png new file mode 100644 index 00000000..c5276727 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/stripped_ouranwood_log.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ouranwood/stripped_ouranwood_log_top.png b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/stripped_ouranwood_log_top.png new file mode 100644 index 00000000..1d0907d6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ouranwood/stripped_ouranwood_log_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/polished_nyxite.png b/common/src/main/resources/assets/antarchy/textures/block/polished_nyxite.png new file mode 100644 index 00000000..cf06e8f5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/polished_nyxite.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/potent_nyxite.png b/common/src/main/resources/assets/antarchy/textures/block/potent_nyxite.png new file mode 100644 index 00000000..4613bd56 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/potent_nyxite.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/potent_nyxite.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/potent_nyxite.png.mcmeta new file mode 100644 index 00000000..ffc3e528 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/potent_nyxite.png.mcmeta @@ -0,0 +1,11 @@ +{ + "animation": { + "frametime": 8, + "interpolate": true, + "frames": [ + 0, + 1, + 2 + ] + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/empty_rainbow_ant_nest_block.png b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/empty_rainbow_ant_nest_block.png new file mode 100644 index 00000000..50a968ba Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/empty_rainbow_ant_nest_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/empty_rainbow_ant_nest_top.png b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/empty_rainbow_ant_nest_top.png new file mode 100644 index 00000000..f9c16691 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/empty_rainbow_ant_nest_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest.png b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest.png new file mode 100644 index 00000000..4e10e095 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest.png.mcmeta new file mode 100644 index 00000000..1fd02729 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 9 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest_top.png b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest_top.png new file mode 100644 index 00000000..ad126e45 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest_top.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest_top.png.mcmeta new file mode 100644 index 00000000..1fd02729 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/rainbow_ant_nest/rainbow_ant_nest_top.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 9 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/red_ant_nest.png b/common/src/main/resources/assets/antarchy/textures/block/red_ant_nest.png new file mode 100644 index 00000000..06db6100 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/red_ant_nest.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/red_ant_nest_top.png b/common/src/main/resources/assets/antarchy/textures/block/red_ant_nest_top.png new file mode 100644 index 00000000..f14da613 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/red_ant_nest_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/smooth_nyxite.png b/common/src/main/resources/assets/antarchy/textures/block/smooth_nyxite.png new file mode 100644 index 00000000..387c9a6a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/smooth_nyxite.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/chiseled_titanium.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/chiseled_titanium.png new file mode 100644 index 00000000..28b9ce32 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/chiseled_titanium.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/cut_titanium.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/cut_titanium.png new file mode 100644 index 00000000..db8f2b86 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/cut_titanium.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/raw_titanium_block.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/raw_titanium_block.png new file mode 100644 index 00000000..16cf0452 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/raw_titanium_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bars.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bars.png new file mode 100644 index 00000000..bffb9257 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bars.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_block.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_block.png new file mode 100644 index 00000000..62c5aa36 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb.png new file mode 100644 index 00000000..74a602b8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_lit.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_lit.png new file mode 100644 index 00000000..fce7f47b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_lit.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_lit_powered.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_lit_powered.png new file mode 100644 index 00000000..3fb4adb3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_lit_powered.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_powered.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_powered.png new file mode 100644 index 00000000..ca7b665b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_bulb_powered.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_deepslate_ore.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_deepslate_ore.png new file mode 100644 index 00000000..7452c652 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_deepslate_ore.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_door_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_door_bottom.png new file mode 100644 index 00000000..ae1512cc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_door_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_door_top.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_door_top.png new file mode 100644 index 00000000..6b7acc32 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_door_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_ore.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_ore.png new file mode 100644 index 00000000..09b9680e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_ore.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_trapdoor.png b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_trapdoor.png new file mode 100644 index 00000000..17b09ed5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/titanium/titanium_trapdoor.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/torchflower_bush_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/torchflower_bush_bottom.png new file mode 100644 index 00000000..c17c76d8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/torchflower_bush_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/torchflower_bush_top.png b/common/src/main/resources/assets/antarchy/textures/block/torchflower_bush_top.png new file mode 100644 index 00000000..cdd07bc3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/torchflower_bush_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/triffid_goo_block.png b/common/src/main/resources/assets/antarchy/textures/block/triffid_goo_block.png new file mode 100644 index 00000000..1b40756a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/triffid_goo_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/ultimate_core.png b/common/src/main/resources/assets/antarchy/textures/block/ultimate_core.png new file mode 100644 index 00000000..143f1cf4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/ultimate_core.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_hanging_moss.png b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_hanging_moss.png new file mode 100644 index 00000000..2cd78248 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_hanging_moss.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_hanging_moss_tip.png b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_hanging_moss_tip.png new file mode 100644 index 00000000..2cb25bd5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_hanging_moss_tip.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_block.png b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_block.png new file mode 100644 index 00000000..4dfbed4e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet.png b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet.png new file mode 100644 index 00000000..4dfbed4e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet_side_small.png b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet_side_small.png new file mode 100644 index 00000000..a48bc74b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet_side_small.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet_side_tall.png b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet_side_tall.png new file mode 100644 index 00000000..2ec5ac28 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/umbral_moss/umbral_moss_carpet_side_tall.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/chiseled_uranium.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/chiseled_uranium.png new file mode 100644 index 00000000..4c400d62 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/chiseled_uranium.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/cut_uranium.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/cut_uranium.png new file mode 100644 index 00000000..ea0696cf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/cut_uranium.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/raw_uranium_block.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/raw_uranium_block.png new file mode 100644 index 00000000..f52a8fb3 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/raw_uranium_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bars.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bars.png new file mode 100644 index 00000000..8efc22c1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bars.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_block.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_block.png new file mode 100644 index 00000000..4e687585 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb.png new file mode 100644 index 00000000..e9ddba6f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_lit.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_lit.png new file mode 100644 index 00000000..8279fffe Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_lit.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_lit_powered.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_lit_powered.png new file mode 100644 index 00000000..25a00609 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_lit_powered.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_powered.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_powered.png new file mode 100644 index 00000000..082b07e2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_bulb_powered.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_deepslate_ore.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_deepslate_ore.png new file mode 100644 index 00000000..3e3f46f2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_deepslate_ore.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_door_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_door_bottom.png new file mode 100644 index 00000000..540c650e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_door_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_door_top.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_door_top.png new file mode 100644 index 00000000..9513bcf6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_door_top.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_ore.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_ore.png new file mode 100644 index 00000000..41966b36 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_ore.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_trapdoor.png b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_trapdoor.png new file mode 100644 index 00000000..7a058ea9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/uranium/uranium_trapdoor.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_front.png b/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_front.png new file mode 100644 index 00000000..88c40843 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_front.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_side.png b/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_side.png new file mode 100644 index 00000000..844163d6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_side.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_top_bottom.png b/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_top_bottom.png new file mode 100644 index 00000000..e41e1f1c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/wasp_nest/wasp_nest_top_bottom.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/apple_cow.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/apple_cow.png new file mode 100644 index 00000000..e74e4e5e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/apple_cow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/apple_cow_sheared.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/apple_cow_sheared.png new file mode 100644 index 00000000..06031dbe Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/apple_cow_sheared.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/baby_apple_cow.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/baby_apple_cow.png new file mode 100644 index 00000000..517b4843 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/baby_apple_cow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/baby_golden_apple_cow.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/baby_golden_apple_cow.png new file mode 100644 index 00000000..be4dc5ed Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/baby_golden_apple_cow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/enchanted_golden_apple_cow.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/enchanted_golden_apple_cow.png new file mode 100644 index 00000000..c6b9222d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/enchanted_golden_apple_cow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/enchanted_golden_apple_cow_sheared.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/enchanted_golden_apple_cow_sheared.png new file mode 100644 index 00000000..739c2483 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/enchanted_golden_apple_cow_sheared.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/golden_apple_cow.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/golden_apple_cow.png new file mode 100644 index 00000000..acdecaa7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/golden_apple_cow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/golden_apple_cow_sheared.png b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/golden_apple_cow_sheared.png new file mode 100644 index 00000000..7581fd6b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/apple_cow/golden_apple_cow_sheared.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/basilisk.png b/common/src/main/resources/assets/antarchy/textures/entity/basilisk.png new file mode 100644 index 00000000..286da995 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/basilisk.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/bed_bug.png b/common/src/main/resources/assets/antarchy/textures/entity/bed_bug.png new file mode 100644 index 00000000..99278795 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/bed_bug.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/blood_crystal_leggings_layer.png b/common/src/main/resources/assets/antarchy/textures/entity/blood_crystal_leggings_layer.png new file mode 100644 index 00000000..820e1750 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/blood_crystal_leggings_layer.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/blood_crystal_main_layer.png b/common/src/main/resources/assets/antarchy/textures/entity/blood_crystal_main_layer.png new file mode 100644 index 00000000..5b3d5191 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/blood_crystal_main_layer.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/boat/ouranwood.png b/common/src/main/resources/assets/antarchy/textures/entity/boat/ouranwood.png new file mode 100644 index 00000000..66b0a4b0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/boat/ouranwood.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/bomber.png b/common/src/main/resources/assets/antarchy/textures/entity/bomber.png new file mode 100644 index 00000000..b8e96c7b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/bomber.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/brown_ant.png b/common/src/main/resources/assets/antarchy/textures/entity/brown_ant.png new file mode 100644 index 00000000..62aa57a6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/brown_ant.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/brutalfly.png b/common/src/main/resources/assets/antarchy/textures/entity/brutalfly.png new file mode 100644 index 00000000..ee6f809b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/brutalfly.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_blue.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_blue.png new file mode 100644 index 00000000..e17e1ce8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_blue.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_brown.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_brown.png new file mode 100644 index 00000000..d2103b27 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_brown.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_cyan.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_cyan.png new file mode 100644 index 00000000..7bd05c3b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_cyan.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_green.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_green.png new file mode 100644 index 00000000..dbed5252 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_green.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_lavender.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_lavender.png new file mode 100644 index 00000000..c80cfca1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_lavender.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_light_blue.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_light_blue.png new file mode 100644 index 00000000..c2cafdae Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_light_blue.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_magenta.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_magenta.png new file mode 100644 index 00000000..492eab57 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_magenta.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_orange.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_orange.png new file mode 100644 index 00000000..fca7baa7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_orange.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_purple.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_purple.png new file mode 100644 index 00000000..cbbc049c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_purple.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_yellow.png b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_yellow.png new file mode 100644 index 00000000..5d8ff8b0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/butterfly/butterfly_yellow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/caterpillar.png b/common/src/main/resources/assets/antarchy/textures/entity/caterpillar.png new file mode 100644 index 00000000..d63b8276 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/caterpillar.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/chest_boat/ouranwood.png b/common/src/main/resources/assets/antarchy/textures/entity/chest_boat/ouranwood.png new file mode 100644 index 00000000..e66c5831 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/chest_boat/ouranwood.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/cloud_shark.png b/common/src/main/resources/assets/antarchy/textures/entity/cloud_shark.png new file mode 100644 index 00000000..3ae79bfc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/cloud_shark.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/diamond_minecart.png b/common/src/main/resources/assets/antarchy/textures/entity/diamond_minecart.png new file mode 100644 index 00000000..4f08c8e0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/diamond_minecart.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/dr_trayaurus.png b/common/src/main/resources/assets/antarchy/textures/entity/dr_trayaurus.png new file mode 100644 index 00000000..e2f90ba8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/dr_trayaurus.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/dr_trayaurus_old.png b/common/src/main/resources/assets/antarchy/textures/entity/dr_trayaurus_old.png new file mode 100644 index 00000000..747c0c86 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/dr_trayaurus_old.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/easter_bunny.png b/common/src/main/resources/assets/antarchy/textures/entity/easter_bunny.png new file mode 100644 index 00000000..9e82710b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/easter_bunny.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/emperor_scorpion.png b/common/src/main/resources/assets/antarchy/textures/entity/emperor_scorpion.png new file mode 100644 index 00000000..d63bb322 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/emperor_scorpion.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel.png b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel.png new file mode 100644 index 00000000..06c36183 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel_albino.png b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel_albino.png new file mode 100644 index 00000000..f4c076b5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel_albino.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel_brown.png b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel_brown.png new file mode 100644 index 00000000..f49f8479 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/flying_squirrel_brown.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/squirrel_collar.png b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/squirrel_collar.png new file mode 100644 index 00000000..26a08e3e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/flying_squirrel/squirrel_collar.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted.png b/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted.png new file mode 100644 index 00000000..8829e90f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted_angry.png b/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted_angry.png new file mode 100644 index 00000000..e3c5f747 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted_angry.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted_tame.png b/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted_tame.png new file mode 100644 index 00000000..8829e90f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/grim/grim_spotted_tame.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/kraken.png b/common/src/main/resources/assets/antarchy/textures/entity/kraken.png new file mode 100644 index 00000000..f653c09f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/kraken.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/kraken_blue.png b/common/src/main/resources/assets/antarchy/textures/entity/kraken_blue.png new file mode 100644 index 00000000..e8a7252e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/kraken_blue.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/kraken_dark.png b/common/src/main/resources/assets/antarchy/textures/entity/kraken_dark.png new file mode 100644 index 00000000..54453c9c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/kraken_dark.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/kraken_purple.png b/common/src/main/resources/assets/antarchy/textures/entity/kraken_purple.png new file mode 100644 index 00000000..e60e229f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/kraken_purple.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/lucid.png b/common/src/main/resources/assets/antarchy/textures/entity/lucid.png new file mode 100644 index 00000000..f6eff03b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/lucid.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/mantis.png b/common/src/main/resources/assets/antarchy/textures/entity/mantis.png new file mode 100644 index 00000000..5eef7559 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/mantis.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/missile_squid.png b/common/src/main/resources/assets/antarchy/textures/entity/missile_squid.png new file mode 100644 index 00000000..0d285ff0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/missile_squid.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/molevore.png b/common/src/main/resources/assets/antarchy/textures/entity/molevore.png new file mode 100644 index 00000000..342f0794 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/molevore.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/moleworm.png b/common/src/main/resources/assets/antarchy/textures/entity/moleworm.png new file mode 100644 index 00000000..ac143b09 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/moleworm.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/nightmare.png b/common/src/main/resources/assets/antarchy/textures/entity/nightmare.png new file mode 100644 index 00000000..9f4fb0b4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/nightmare.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/rainbow_ant.png b/common/src/main/resources/assets/antarchy/textures/entity/rainbow_ant.png new file mode 100644 index 00000000..b55ca31e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/rainbow_ant.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/red_ant.png b/common/src/main/resources/assets/antarchy/textures/entity/red_ant.png new file mode 100644 index 00000000..519d2a91 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/red_ant.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie.png b/common/src/main/resources/assets/antarchy/textures/entity/reverie.png new file mode 100644 index 00000000..87f56ddd Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/reverie.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/entity/reverie.png.mcmeta new file mode 100644 index 00000000..78df88c4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/entity/reverie.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_blue.png b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_blue.png new file mode 100644 index 00000000..b186e4be Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_blue.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_blue.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_blue.png.mcmeta new file mode 100644 index 00000000..eb42938f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_blue.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 4, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_purple.png b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_purple.png new file mode 100644 index 00000000..1469aa6f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_purple.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_purple.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_purple.png.mcmeta new file mode 100644 index 00000000..eb42938f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_purple.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 4, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_red.png b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_red.png new file mode 100644 index 00000000..c8cd7237 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_red.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_red.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_red.png.mcmeta new file mode 100644 index 00000000..eb42938f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_red.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 4, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_white.png b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_white.png new file mode 100644 index 00000000..2c82c97d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_white.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_white.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_white.png.mcmeta new file mode 100644 index 00000000..eb42938f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_white.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 4, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_yellow.png b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_yellow.png new file mode 100644 index 00000000..7c45512c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_yellow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_yellow.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_yellow.png.mcmeta new file mode 100644 index 00000000..eb42938f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/entity/reverie/reverie_yellow.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 4, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/entity/scorpion.png b/common/src/main/resources/assets/antarchy/textures/entity/scorpion.png new file mode 100644 index 00000000..cce310d1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/scorpion.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/signs/hanging/ouranwood.png b/common/src/main/resources/assets/antarchy/textures/entity/signs/hanging/ouranwood.png new file mode 100644 index 00000000..7903f083 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/signs/hanging/ouranwood.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/signs/ouranwood.png b/common/src/main/resources/assets/antarchy/textures/entity/signs/ouranwood.png new file mode 100644 index 00000000..b134ba8c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/signs/ouranwood.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/toreterror.png b/common/src/main/resources/assets/antarchy/textures/entity/toreterror.png new file mode 100644 index 00000000..d6ec135d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/toreterror.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/triffid.png b/common/src/main/resources/assets/antarchy/textures/entity/triffid.png new file mode 100644 index 00000000..568f54a7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/triffid.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/ultimate_armor_leggings.png b/common/src/main/resources/assets/antarchy/textures/entity/ultimate_armor_leggings.png new file mode 100644 index 00000000..39bf843d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/ultimate_armor_leggings.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/ultimate_armor_main.png b/common/src/main/resources/assets/antarchy/textures/entity/ultimate_armor_main.png new file mode 100644 index 00000000..f219dc6d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/ultimate_armor_main.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/wasp.png b/common/src/main/resources/assets/antarchy/textures/entity/wasp.png new file mode 100644 index 00000000..68017546 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/wasp.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/wasp_panda.png b/common/src/main/resources/assets/antarchy/textures/entity/wasp_panda.png new file mode 100644 index 00000000..43a10191 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/wasp_panda.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/gui/hanging_signs/ouranwood.png b/common/src/main/resources/assets/antarchy/textures/gui/hanging_signs/ouranwood.png new file mode 100644 index 00000000..7903f083 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/gui/hanging_signs/ouranwood.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/gui/sprites/hud/bloodglass_heart.png b/common/src/main/resources/assets/antarchy/textures/gui/sprites/hud/bloodglass_heart.png new file mode 100644 index 00000000..fb2becad Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/gui/sprites/hud/bloodglass_heart.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/gui/sprites/hud/bloodglass_heart_cracked.png b/common/src/main/resources/assets/antarchy/textures/gui/sprites/hud/bloodglass_heart_cracked.png new file mode 100644 index 00000000..10117296 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/gui/sprites/hud/bloodglass_heart_cracked.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/antiwater_bucket.png b/common/src/main/resources/assets/antarchy/textures/item/antiwater_bucket.png new file mode 100644 index 00000000..b8ef2c75 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/antiwater_bucket.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/basilisk_dagger.png b/common/src/main/resources/assets/antarchy/textures/item/basilisk_dagger.png new file mode 100644 index 00000000..ec01cb3b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/basilisk_dagger.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/basilisk_fang.png b/common/src/main/resources/assets/antarchy/textures/item/basilisk_fang.png new file mode 100644 index 00000000..d4ba374b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/basilisk_fang.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/battle_axe/battle_axe.png b/common/src/main/resources/assets/antarchy/textures/item/battle_axe/battle_axe.png new file mode 100644 index 00000000..cbfc6aa6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/battle_axe/battle_axe.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/battle_axe/battle_axe_item.png b/common/src/main/resources/assets/antarchy/textures/item/battle_axe/battle_axe_item.png new file mode 100644 index 00000000..cdcd57a9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/battle_axe/battle_axe_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/bed_bug_egg_item.png b/common/src/main/resources/assets/antarchy/textures/item/bed_bug_egg_item.png new file mode 100644 index 00000000..f8bb52b8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/bed_bug_egg_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha.png b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha.png new file mode 100644 index 00000000..e6ef226a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_blade.png b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_blade.png new file mode 100644 index 00000000..6c2e0777 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_blade.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_guard.png b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_guard.png new file mode 100644 index 00000000..b6921fae Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_guard.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_handle.png b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_handle.png new file mode 100644 index 00000000..8043ee3b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_handle.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_item.png b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_item.png new file mode 100644 index 00000000..67ddda7d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/big_bertha/big_bertha_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_boots.png b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_boots.png new file mode 100644 index 00000000..6db77c99 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_boots.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_chestplate.png b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_chestplate.png new file mode 100644 index 00000000..59d25593 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_chestplate.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_helmet.png b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_helmet.png new file mode 100644 index 00000000..4e108e63 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_helmet.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_leggings.png b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_leggings.png new file mode 100644 index 00000000..8a279c73 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal/blood_crystal_leggings.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_apple.png b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_apple.png new file mode 100644 index 00000000..f4bd37e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_apple.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_katana.png b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_katana.png new file mode 100644 index 00000000..97e26383 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_katana.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_shard.png b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_shard.png new file mode 100644 index 00000000..af1ec998 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/blood_crystal_shard.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/brutalfly_wing.png b/common/src/main/resources/assets/antarchy/textures/item/brutalfly_wing.png new file mode 100644 index 00000000..5537396a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/brutalfly_wing.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/brutalfly_wings_item.png b/common/src/main/resources/assets/antarchy/textures/item/brutalfly_wings_item.png new file mode 100644 index 00000000..91f5a649 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/brutalfly_wings_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/cloud_bucket.png b/common/src/main/resources/assets/antarchy/textures/item/cloud_bucket.png new file mode 100644 index 00000000..309b1d2f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/cloud_bucket.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/cloud_shark_fin.png b/common/src/main/resources/assets/antarchy/textures/item/cloud_shark_fin.png new file mode 100644 index 00000000..e8f50269 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/cloud_shark_fin.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/cloud_shark_fin_soup.png b/common/src/main/resources/assets/antarchy/textures/item/cloud_shark_fin_soup.png new file mode 100644 index 00000000..2cba050e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/cloud_shark_fin_soup.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/cornea.png b/common/src/main/resources/assets/antarchy/textures/item/cornea.png new file mode 100644 index 00000000..c762320f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/cornea.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/diamond_minecart.png b/common/src/main/resources/assets/antarchy/textures/item/diamond_minecart.png new file mode 100644 index 00000000..6d25517b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/diamond_minecart.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/dream_campfire.png b/common/src/main/resources/assets/antarchy/textures/item/dream_campfire.png new file mode 100644 index 00000000..f0ebd9cc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/dream_campfire.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/dream_lantern.png b/common/src/main/resources/assets/antarchy/textures/item/dream_lantern.png new file mode 100644 index 00000000..f90a41e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/dream_lantern.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/duct_tape.png b/common/src/main/resources/assets/antarchy/textures/item/duct_tape.png new file mode 100644 index 00000000..bb4c087d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/duct_tape.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/emperor_scorpion_stinger.png b/common/src/main/resources/assets/antarchy/textures/item/emperor_scorpion_stinger.png new file mode 100644 index 00000000..e9822725 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/emperor_scorpion_stinger.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/fallen_king_crown_item.png b/common/src/main/resources/assets/antarchy/textures/item/fallen_king_crown_item.png new file mode 100644 index 00000000..b73a5b56 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/fallen_king_crown_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/gravity_gun_item.png b/common/src/main/resources/assets/antarchy/textures/item/gravity_gun_item.png new file mode 100644 index 00000000..b50c212b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/gravity_gun_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/growth_ray_item.png b/common/src/main/resources/assets/antarchy/textures/item/growth_ray_item.png new file mode 100644 index 00000000..b6cd7548 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/growth_ray_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ichor_bucket.png b/common/src/main/resources/assets/antarchy/textures/item/ichor_bucket.png new file mode 100644 index 00000000..16c8c10a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ichor_bucket.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/jumpy_bug_leg.png b/common/src/main/resources/assets/antarchy/textures/item/jumpy_bug_leg.png new file mode 100644 index 00000000..f517ba33 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/jumpy_bug_leg.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/kraken_tooth.png b/common/src/main/resources/assets/antarchy/textures/item/kraken_tooth.png new file mode 100644 index 00000000..200ab731 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/kraken_tooth.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/lucid_eye.png b/common/src/main/resources/assets/antarchy/textures/item/lucid_eye.png new file mode 100644 index 00000000..3e25968b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/lucid_eye.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/lucid_pearl.png b/common/src/main/resources/assets/antarchy/textures/item/lucid_pearl.png new file mode 100644 index 00000000..e075e709 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/lucid_pearl.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/mantis_claw.png b/common/src/main/resources/assets/antarchy/textures/item/mantis_claw.png new file mode 100644 index 00000000..d0c99633 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/mantis_claw.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/moggles_item.png b/common/src/main/resources/assets/antarchy/textures/item/moggles_item.png new file mode 100644 index 00000000..c27cbc8d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/moggles_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/molevore_nose.png b/common/src/main/resources/assets/antarchy/textures/item/molevore_nose.png new file mode 100644 index 00000000..63b2deca Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/molevore_nose.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/moleworm.png b/common/src/main/resources/assets/antarchy/textures/item/moleworm.png new file mode 100644 index 00000000..3cf841d6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/moleworm.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/mud_pie.png b/common/src/main/resources/assets/antarchy/textures/item/mud_pie.png new file mode 100644 index 00000000..63dfcad7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/mud_pie.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_boots.png b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_boots.png new file mode 100644 index 00000000..1ead3d95 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_boots.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_chestplate.png b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_chestplate.png new file mode 100644 index 00000000..b4886f09 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_chestplate.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_helmet.png b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_helmet.png new file mode 100644 index 00000000..c9d98899 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_helmet.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_leggings.png b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_leggings.png new file mode 100644 index 00000000..4b0bbc7a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_leggings.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_scale.png b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_scale.png new file mode 100644 index 00000000..1ef3135a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_scale.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_sword.png b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_sword.png new file mode 100644 index 00000000..4323a4af Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/nightmare/nightmare_sword.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/nyxite_spike.png b/common/src/main/resources/assets/antarchy/textures/item/nyxite_spike.png new file mode 100644 index 00000000..83307aee Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/nyxite_spike.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ouranwood_acorn.png b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_acorn.png new file mode 100644 index 00000000..edcac9fc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_acorn.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ouranwood_boat.png b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_boat.png new file mode 100644 index 00000000..8571bf53 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_boat.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ouranwood_chest_boat.png b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_chest_boat.png new file mode 100644 index 00000000..082ffad4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_chest_boat.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ouranwood_door_icon.png b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_door_icon.png new file mode 100644 index 00000000..6b12b6b8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_door_icon.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ouranwood_hanging_sign.png b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_hanging_sign.png new file mode 100644 index 00000000..f717332a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_hanging_sign.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ouranwood_sign.png b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_sign.png new file mode 100644 index 00000000..ac116e29 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ouranwood_sign.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/primordial_scute.png b/common/src/main/resources/assets/antarchy/textures/item/primordial_scute.png new file mode 100644 index 00000000..086e0fa2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/primordial_scute.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/rainbow_sugar.png b/common/src/main/resources/assets/antarchy/textures/item/rainbow_sugar.png new file mode 100644 index 00000000..9b602ff6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/rainbow_sugar.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/reverie_bottle.png b/common/src/main/resources/assets/antarchy/textures/item/reverie_bottle.png new file mode 100644 index 00000000..462a2706 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/reverie_bottle.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/scorpion_whip.png b/common/src/main/resources/assets/antarchy/textures/item/scorpion_whip.png new file mode 100644 index 00000000..cc3c9ccc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/scorpion_whip.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/shrink_ray_item.png b/common/src/main/resources/assets/antarchy/textures/item/shrink_ray_item.png new file mode 100644 index 00000000..2e9f8c0d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/shrink_ray_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/squidzooka_item.png b/common/src/main/resources/assets/antarchy/textures/item/squidzooka_item.png new file mode 100644 index 00000000..9f2870eb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/squidzooka_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/titanium/raw_titanium.png b/common/src/main/resources/assets/antarchy/textures/item/titanium/raw_titanium.png new file mode 100644 index 00000000..e64812ef Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/titanium/raw_titanium.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/titanium/raw_titanium_scrap.png b/common/src/main/resources/assets/antarchy/textures/item/titanium/raw_titanium_scrap.png new file mode 100644 index 00000000..0c45d9a2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/titanium/raw_titanium_scrap.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_door.png b/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_door.png new file mode 100644 index 00000000..0a2f1d5b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_door.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_ingot.png b/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_ingot.png new file mode 100644 index 00000000..b2970f78 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_ingot.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_nugget.png b/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_nugget.png new file mode 100644 index 00000000..f9ab0c9c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/titanium/titanium_nugget.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/triffid_goo.png b/common/src/main/resources/assets/antarchy/textures/item/triffid_goo.png new file mode 100644 index 00000000..c815e500 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/triffid_goo.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_axe.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_axe.png new file mode 100644 index 00000000..360792f6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_axe.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_boots.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_boots.png new file mode 100644 index 00000000..f540ca28 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_boots.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow.png new file mode 100644 index 00000000..e1534cb1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull0.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull0.png new file mode 100644 index 00000000..50d91e52 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull0.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull1.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull1.png new file mode 100644 index 00000000..10b292c7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull2.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull2.png new file mode 100644 index 00000000..9492a03e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_bow_pull2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_chestplate.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_chestplate.png new file mode 100644 index 00000000..3c74cb56 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_chestplate.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_arrow.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_arrow.png new file mode 100644 index 00000000..8dc0017e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_arrow.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull1.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull1.png new file mode 100644 index 00000000..d78bc9b1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull2.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull2.png new file mode 100644 index 00000000..91dcb9de Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull3.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull3.png new file mode 100644 index 00000000..0fc69f23 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_pull3.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_standby.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_standby.png new file mode 100644 index 00000000..8c3403e8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_crossbow_standby.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_helmet.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_helmet.png new file mode 100644 index 00000000..37b693fa Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_helmet.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_hoe.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_hoe.png new file mode 100644 index 00000000..4b8071a2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_hoe.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_leggings.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_leggings.png new file mode 100644 index 00000000..ce566861 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_leggings.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_mace_handle.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_mace_handle.png new file mode 100644 index 00000000..550d7d69 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_mace_handle.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_pickaxe.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_pickaxe.png new file mode 100644 index 00000000..5a4d37ae Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_pickaxe.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_pickaxe_old.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_pickaxe_old.png new file mode 100644 index 00000000..7fe59bb1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_pickaxe_old.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_shovel.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_shovel.png new file mode 100644 index 00000000..799e175d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_shovel.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_sword.png b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_sword.png new file mode 100644 index 00000000..62439b98 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/ultimate/ultimate_sword.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/uranium/raw_uranium.png b/common/src/main/resources/assets/antarchy/textures/item/uranium/raw_uranium.png new file mode 100644 index 00000000..96914edb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/uranium/raw_uranium.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/uranium/raw_uranium_scrap.png b/common/src/main/resources/assets/antarchy/textures/item/uranium/raw_uranium_scrap.png new file mode 100644 index 00000000..13d7f995 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/uranium/raw_uranium_scrap.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_door.png b/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_door.png new file mode 100644 index 00000000..91f2c53b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_door.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_ingot.png b/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_ingot.png new file mode 100644 index 00000000..62640d49 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_ingot.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_nugget.png b/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_nugget.png new file mode 100644 index 00000000..f1f1857f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/uranium/uranium_nugget.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/vortex_eye.png b/common/src/main/resources/assets/antarchy/textures/item/vortex_eye.png new file mode 100644 index 00000000..70a00987 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/vortex_eye.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/bloodglass_ward.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/bloodglass_ward.png new file mode 100644 index 00000000..fb2becad Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/bloodglass_ward.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/dread.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/dread.png new file mode 100644 index 00000000..5eaa1735 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/dread.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/growing.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/growing.png new file mode 100644 index 00000000..b758401d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/growing.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/growth.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/growth.png new file mode 100644 index 00000000..b758401d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/growth.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/inverted.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/inverted.png new file mode 100644 index 00000000..77d8ce5f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/inverted.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/paralyzed.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/paralyzed.png new file mode 100644 index 00000000..b4fcebeb Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/paralyzed.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/shrinking.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/shrinking.png new file mode 100644 index 00000000..d2064f8b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/shrinking.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/blood_crystal_layer_1.png b/common/src/main/resources/assets/antarchy/textures/models/armor/blood_crystal_layer_1.png new file mode 100644 index 00000000..5b3d5191 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/blood_crystal_layer_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/blood_crystal_layer_2.png b/common/src/main/resources/assets/antarchy/textures/models/armor/blood_crystal_layer_2.png new file mode 100644 index 00000000..820e1750 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/blood_crystal_layer_2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/brutalfly_wings.png b/common/src/main/resources/assets/antarchy/textures/models/armor/brutalfly_wings.png new file mode 100644 index 00000000..b9e1ed06 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/brutalfly_wings.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/fallen_king_crown.png b/common/src/main/resources/assets/antarchy/textures/models/armor/fallen_king_crown.png new file mode 100644 index 00000000..e6159677 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/fallen_king_crown.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/fallen_king_crown_layer_1.png b/common/src/main/resources/assets/antarchy/textures/models/armor/fallen_king_crown_layer_1.png new file mode 100644 index 00000000..e6159677 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/fallen_king_crown_layer_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/moggles.png b/common/src/main/resources/assets/antarchy/textures/models/armor/moggles.png new file mode 100644 index 00000000..9c92e31b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/moggles.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/moggles_layer_1.png b/common/src/main/resources/assets/antarchy/textures/models/armor/moggles_layer_1.png new file mode 100644 index 00000000..9c92e31b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/moggles_layer_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/nightmare_armor_layer_1.png b/common/src/main/resources/assets/antarchy/textures/models/armor/nightmare_armor_layer_1.png new file mode 100644 index 00000000..3d3b64e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/nightmare_armor_layer_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/nightmare_armor_layer_2.png b/common/src/main/resources/assets/antarchy/textures/models/armor/nightmare_armor_layer_2.png new file mode 100644 index 00000000..9d2a567a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/nightmare_armor_layer_2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/ultimate_armor_layer_1.png b/common/src/main/resources/assets/antarchy/textures/models/armor/ultimate_armor_layer_1.png new file mode 100644 index 00000000..f219dc6d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/ultimate_armor_layer_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/ultimate_armor_layer_2.png b/common/src/main/resources/assets/antarchy/textures/models/armor/ultimate_armor_layer_2.png new file mode 100644 index 00000000..39bf843d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/ultimate_armor_layer_2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/item/gravity_gun.png b/common/src/main/resources/assets/antarchy/textures/models/item/gravity_gun.png new file mode 100644 index 00000000..a5e31390 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/item/gravity_gun.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/item/growth_ray.png b/common/src/main/resources/assets/antarchy/textures/models/item/growth_ray.png new file mode 100644 index 00000000..66b73e01 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/item/growth_ray.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/item/shrink_ray.png b/common/src/main/resources/assets/antarchy/textures/models/item/shrink_ray.png new file mode 100644 index 00000000..c698de60 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/item/shrink_ray.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/item/squidzooka.png b/common/src/main/resources/assets/antarchy/textures/models/item/squidzooka.png new file mode 100644 index 00000000..898f3a39 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/item/squidzooka.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_boat.png b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_boat.png new file mode 100644 index 00000000..66b0a4b0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_boat.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_chest_boat.png b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_chest_boat.png new file mode 100644 index 00000000..e66c5831 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_chest_boat.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_hanging_sign.png b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_hanging_sign.png new file mode 100644 index 00000000..7903f083 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_hanging_sign.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_sign.png b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_sign.png new file mode 100644 index 00000000..b134ba8c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/ouranwood/ouranwood_sign.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/dream_fire_flame.png b/common/src/main/resources/assets/antarchy/textures/particle/dream_fire_flame.png new file mode 100644 index 00000000..53f5f536 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/dream_fire_flame.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/firefly.png b/common/src/main/resources/assets/antarchy/textures/particle/firefly.png new file mode 100644 index 00000000..bb42ea9d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/firefly.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_01.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_01.png new file mode 100644 index 00000000..ea548c36 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_01.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_02.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_02.png new file mode 100644 index 00000000..35d8a887 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_02.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_03.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_03.png new file mode 100644 index 00000000..d498ac47 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_03.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_04.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_04.png new file mode 100644 index 00000000..fec24009 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_04.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_05.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_05.png new file mode 100644 index 00000000..c359d647 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_05.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_06.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_06.png new file mode 100644 index 00000000..d808b029 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_06.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_07.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_07.png new file mode 100644 index 00000000..5820e540 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_07.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_08.png b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_08.png new file mode 100644 index 00000000..a11ce9a1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/hypnotic_gas/hypnotic_gas_08.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_01.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_01.png new file mode 100644 index 00000000..403483ff Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_01.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_02.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_02.png new file mode 100644 index 00000000..6758f218 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_02.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_03.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_03.png new file mode 100644 index 00000000..47e2a20c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_03.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_04.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_04.png new file mode 100644 index 00000000..d9c8d570 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_04.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_05.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_05.png new file mode 100644 index 00000000..ffa8b3c1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_05.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_06.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_06.png new file mode 100644 index 00000000..66ce50ac Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_06.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_07.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_07.png new file mode 100644 index 00000000..b366c041 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_07.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_08.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_08.png new file mode 100644 index 00000000..c0e241a1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_base_08.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_01.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_01.png new file mode 100644 index 00000000..011f0067 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_01.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_02.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_02.png new file mode 100644 index 00000000..b2a8a9c7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_02.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_03.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_03.png new file mode 100644 index 00000000..89a75e5f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_03.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_04.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_04.png new file mode 100644 index 00000000..349fa405 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_04.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_05.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_05.png new file mode 100644 index 00000000..5f94ada5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_05.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_06.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_06.png new file mode 100644 index 00000000..d59425df Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_06.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_07.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_07.png new file mode 100644 index 00000000..eebe8653 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_07.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_08.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_08.png new file mode 100644 index 00000000..7a80a32f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_plume_08.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_01.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_01.png new file mode 100644 index 00000000..0cde5885 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_01.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_02.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_02.png new file mode 100644 index 00000000..d29e256c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_02.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_03.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_03.png new file mode 100644 index 00000000..bf6a1d9e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_03.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_04.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_04.png new file mode 100644 index 00000000..8857bbb5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_04.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_05.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_05.png new file mode 100644 index 00000000..9be1f5b0 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_05.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_06.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_06.png new file mode 100644 index 00000000..c1250907 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_06.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_07.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_07.png new file mode 100644 index 00000000..a6b415c8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_07.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_08.png b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_08.png new file mode 100644 index 00000000..84e8736f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/inverted_geyser/inverted_geyser_poof_08.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/particle/reverie.png b/common/src/main/resources/assets/antarchy/textures/particle/reverie.png new file mode 100644 index 00000000..3b03d8ea Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/particle/reverie.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/blood_crystal.png b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/blood_crystal.png new file mode 100644 index 00000000..1ccdd7e8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/blood_crystal.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/nightmare_scale.png b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/nightmare_scale.png new file mode 100644 index 00000000..195b6979 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/nightmare_scale.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/titanium.png b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/titanium.png new file mode 100644 index 00000000..be2819df Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/titanium.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/uranium.png b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/uranium.png new file mode 100644 index 00000000..b92e8344 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/trims/color_palettes/uranium.png differ diff --git a/common/src/main/resources/assets/minecraft/textures/entity/signs/hanging/ouranwood.png b/common/src/main/resources/assets/minecraft/textures/entity/signs/hanging/ouranwood.png new file mode 100644 index 00000000..7903f083 Binary files /dev/null and b/common/src/main/resources/assets/minecraft/textures/entity/signs/hanging/ouranwood.png differ diff --git a/common/src/main/resources/assets/minecraft/textures/entity/signs/ouranwood.png b/common/src/main/resources/assets/minecraft/textures/entity/signs/ouranwood.png new file mode 100644 index 00000000..b134ba8c Binary files /dev/null and b/common/src/main/resources/assets/minecraft/textures/entity/signs/ouranwood.png differ diff --git a/common/src/main/resources/data/antarchy/advancement/brutalfly.json b/common/src/main/resources/data/antarchy/advancement/brutalfly.json new file mode 100644 index 00000000..9f6cc42f --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/brutalfly.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "brutalfly": { + "conditions": { + "items": [ + { + "items": "antarchy:brutalfly_elytra" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.brutalfly.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:brutalfly_elytra" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.brutalfly.title" + } + }, + "requirements": [ + [ + "brutalfly" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/cancel_out.json b/common/src/main/resources/data/antarchy/advancement/cancel_out.json new file mode 100644 index 00000000..7ab8bd36 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/cancel_out.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "cancel_out": { + "conditions": { + "effects": { + "antarchy:growth": {}, + "antarchy:shrinking": {} + } + }, + "trigger": "minecraft:effects_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.cancel_out.description" + }, + "frame": "goal", + "icon": { + "count": 1, + "id": "antarchy:shrink_ray" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.cancel_out.title" + } + }, + "requirements": [ + [ + "cancel_out" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/davy_jones_locker.json b/common/src/main/resources/data/antarchy/advancement/davy_jones_locker.json new file mode 100644 index 00000000..e5c3e555 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/davy_jones_locker.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_kraken": { + "conditions": { + "entity": { + "type": "antarchy:kraken" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.davy_jones_locker.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:kraken_tooth" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.davy_jones_locker.title" + } + }, + "requirements": [ + [ + "kill_kraken" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/dont_let_the_bed_bugs_bite.json b/common/src/main/resources/data/antarchy/advancement/dont_let_the_bed_bugs_bite.json new file mode 100644 index 00000000..18d4c0a0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/dont_let_the_bed_bugs_bite.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_bed_bug": { + "conditions": { + "entity": { + "type": "antarchy:bed_bug" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.dont_let_the_bed_bugs_bite.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:bed_bug_egg" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.dont_let_the_bed_bugs_bite.title" + } + }, + "requirements": [ + [ + "kill_bed_bug" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/duct_tape.json b/common/src/main/resources/data/antarchy/advancement/duct_tape.json new file mode 100644 index 00000000..7d5bb26a --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/duct_tape.json @@ -0,0 +1,29 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "impossible": { + "trigger": "minecraft:impossible" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.duct_tape.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:duct_tape" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.duct_tape.title" + } + }, + "requirements": [ + [ + "impossible" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/fallen_king_crown.json b/common/src/main/resources/data/antarchy/advancement/fallen_king_crown.json new file mode 100644 index 00000000..03a01b96 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/fallen_king_crown.json @@ -0,0 +1,36 @@ +{ + "parent": "antarchy:fallen_kingdom_castle", + "criteria": { + "fallen_king_crown": { + "conditions": { + "items": [ + { + "items": "antarchy:fallen_king_crown" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.fallen_king_crown.description" + }, + "frame": "goal", + "icon": { + "count": 1, + "id": "antarchy:fallen_king_crown" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.fallen_king_crown.title" + } + }, + "requirements": [ + [ + "fallen_king_crown" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/fallen_kingdom_castle.json b/common/src/main/resources/data/antarchy/advancement/fallen_kingdom_castle.json new file mode 100644 index 00000000..dde5987a --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/fallen_kingdom_castle.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "discover_castle": { + "conditions": { + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "location": { + "structures": "antarchy:fallen_kingdom_castle" + } + } + } + ] + }, + "trigger": "minecraft:location" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.fallen_kingdom_castle.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "minecraft:stone_bricks" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.fallen_kingdom_castle.title" + } + }, + "requirements": [ + [ + "discover_castle" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/gravity_gun_craft.json b/common/src/main/resources/data/antarchy/advancement/gravity_gun_craft.json new file mode 100644 index 00000000..5767a80a --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/gravity_gun_craft.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "craft_gravity_gun": { + "conditions": { + "items": [ + { + "items": "antarchy:gravity_gun" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.gravity_gun_craft.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:gravity_gun" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.gravity_gun_craft.title" + } + }, + "requirements": [ + [ + "craft_gravity_gun" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/growth_ray_craft.json b/common/src/main/resources/data/antarchy/advancement/growth_ray_craft.json new file mode 100644 index 00000000..97c9bdb8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/growth_ray_craft.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "craft_growth_ray": { + "conditions": { + "items": [ + { + "items": "antarchy:growth_ray" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.growth_ray_craft.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:growth_ray" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.growth_ray_craft.title" + } + }, + "requirements": [ + [ + "craft_growth_ray" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/hey_listen.json b/common/src/main/resources/data/antarchy/advancement/hey_listen.json new file mode 100644 index 00000000..61057b6e --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/hey_listen.json @@ -0,0 +1,29 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "impossible": { + "trigger": "minecraft:impossible" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.hey_listen.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:reverie_spawn_egg" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.hey_listen.title" + } + }, + "requirements": [ + [ + "impossible" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/in_the_upside_down.json b/common/src/main/resources/data/antarchy/advancement/in_the_upside_down.json new file mode 100644 index 00000000..22000057 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/in_the_upside_down.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "become_inverted": { + "conditions": { + "effects": { + "antarchy:inverted": {} + } + }, + "trigger": "minecraft:effects_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.in_the_upside_down.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "minecraft:potion", + "components": { + "minecraft:potion_contents": { + "potion": "antarchy:inversion" + } + } + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.in_the_upside_down.title" + } + }, + "requirements": [ + [ + "become_inverted" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/kill_molevore.json b/common/src/main/resources/data/antarchy/advancement/kill_molevore.json new file mode 100644 index 00000000..f9610435 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/kill_molevore.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_molevore": { + "conditions": { + "entity": { + "type": "antarchy:molevore" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.kill_molevore.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:molevore_nose" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.kill_molevore.title" + } + }, + "requirements": [ + [ + "kill_molevore" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/lucid_dreams.json b/common/src/main/resources/data/antarchy/advancement/lucid_dreams.json new file mode 100644 index 00000000..a29635fd --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/lucid_dreams.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_lucid": { + "conditions": { + "entity": { + "type": "antarchy:lucid" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.lucid_dreams.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:lucid_eye" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.lucid_dreams.title" + } + }, + "requirements": [ + [ + "kill_lucid" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/moley_poley.json b/common/src/main/resources/data/antarchy/advancement/moley_poley.json new file mode 100644 index 00000000..25b1c358 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/moley_poley.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_molevore": { + "conditions": { + "entity": { + "type": "antarchy:molevore" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.moley_poley.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:molevore_nose" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.moley_poley.title" + } + }, + "requirements": [ + [ + "kill_molevore" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/now_watch_me_whip.json b/common/src/main/resources/data/antarchy/advancement/now_watch_me_whip.json new file mode 100644 index 00000000..1a1d87de --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/now_watch_me_whip.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "now_watch_me_whip": { + "conditions": { + "items": [ + { + "items": "antarchy:scorpion_whip" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.now_watch_me_whip.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:scorpion_whip" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.now_watch_me_whip.title" + } + }, + "requirements": [ + [ + "now_watch_me_whip" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/shark_weak.json b/common/src/main/resources/data/antarchy/advancement/shark_weak.json new file mode 100644 index 00000000..00079069 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/shark_weak.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_cloud_shark": { + "conditions": { + "entity": { + "type": "antarchy:cloud_shark" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.shark_weak.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:cloud_shark_fin" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.shark_weak.title" + } + }, + "requirements": [ + [ + "kill_cloud_shark" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/shrink_ray_craft.json b/common/src/main/resources/data/antarchy/advancement/shrink_ray_craft.json new file mode 100644 index 00000000..21bbb0c2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/shrink_ray_craft.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "craft_shrink_ray": { + "conditions": { + "items": [ + { + "items": "antarchy:shrink_ray" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.shrink_ray_craft.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:shrink_ray" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.shrink_ray_craft.title" + } + }, + "requirements": [ + [ + "craft_shrink_ray" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/soups_up.json b/common/src/main/resources/data/antarchy/advancement/soups_up.json new file mode 100644 index 00000000..7594279e --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/soups_up.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "eat_soup": { + "conditions": { + "item": { + "items": [ + "antarchy:cloud_shark_fin_soup" + ] + } + }, + "trigger": "minecraft:consume_item" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.soups_up.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:cloud_shark_fin_soup" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.soups_up.title" + } + }, + "requirements": [ + [ + "eat_soup" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/squidzooka_craft.json b/common/src/main/resources/data/antarchy/advancement/squidzooka_craft.json new file mode 100644 index 00000000..719c78d1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/squidzooka_craft.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "craft_squidzooka": { + "conditions": { + "items": [ + { + "items": "antarchy:squidzooka" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.squidzooka_craft.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:squidzooka" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.squidzooka_craft.title" + } + }, + "requirements": [ + [ + "craft_squidzooka" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/stone_cold.json b/common/src/main/resources/data/antarchy/advancement/stone_cold.json new file mode 100644 index 00000000..fb73c71b --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/stone_cold.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_basilisk": { + "conditions": { + "entity": { + "type": "antarchy:basilisk" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.stone_cold.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:basilisk_fang" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.stone_cold.title" + } + }, + "requirements": [ + [ + "kill_basilisk" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/sweater_dreams.json b/common/src/main/resources/data/antarchy/advancement/sweater_dreams.json new file mode 100644 index 00000000..f8eacf00 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/sweater_dreams.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "kill_nightmare": { + "conditions": { + "entity": { + "type": "antarchy:nightmare" + } + }, + "trigger": "minecraft:player_killed_entity" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.sweater_dreams.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "minecraft:potion", + "components": { + "minecraft:potion_contents": { + "potion": "antarchy:dread" + } + } + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.sweater_dreams.title" + } + }, + "requirements": [ + [ + "kill_nightmare" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/the_lab.json b/common/src/main/resources/data/antarchy/advancement/the_lab.json new file mode 100644 index 00000000..284afaaa --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/the_lab.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "discover_lab": { + "conditions": { + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "location": { + "structures": "antarchy:trayaurus_lab" + } + } + } + ] + }, + "trigger": "minecraft:location" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.the_lab.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:diamond_minecart" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.the_lab.title" + } + }, + "requirements": [ + [ + "discover_lab" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/ultimate_armor.json b/common/src/main/resources/data/antarchy/advancement/ultimate_armor.json new file mode 100644 index 00000000..e7a0f11e --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/ultimate_armor.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:story/root", + "criteria": { + "ultimate_helmet": { + "conditions": { + "items": [ + { + "items": "antarchy:ultimate_helmet" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "ultimate_chestplate": { + "conditions": { + "items": [ + { + "items": "antarchy:ultimate_chestplate" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "ultimate_leggings": { + "conditions": { + "items": [ + { + "items": "antarchy:ultimate_leggings" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "ultimate_boots": { + "conditions": { + "items": [ + { + "items": "antarchy:ultimate_boots" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.ultimate_armor.description" + }, + "frame": "goal", + "icon": { + "count": 1, + "id": "antarchy:ultimate_chestplate" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.ultimate_armor.title" + } + }, + "requirements": [ + [ + "ultimate_helmet" + ], + [ + "ultimate_chestplate" + ], + [ + "ultimate_leggings" + ], + [ + "ultimate_boots" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/ultimate_bow.json b/common/src/main/resources/data/antarchy/advancement/ultimate_bow.json new file mode 100644 index 00000000..2b171495 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/ultimate_bow.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "ultimate_bow": { + "conditions": { + "items": [ + { + "items": "antarchy:ultimate_bow" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.ultimate_bow.description" + }, + "frame": "goal", + "icon": { + "count": 1, + "id": "antarchy:ultimate_bow" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.ultimate_bow.title" + } + }, + "requirements": [ + [ + "ultimate_bow" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/very_hungry_caterpillar.json b/common/src/main/resources/data/antarchy/advancement/very_hungry_caterpillar.json new file mode 100644 index 00000000..c87e10a8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/very_hungry_caterpillar.json @@ -0,0 +1,29 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "impossible": { + "trigger": "minecraft:impossible" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.very_hungry_caterpillar.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:caterpillar_spawn_egg" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.very_hungry_caterpillar.title" + } + }, + "requirements": [ + [ + "impossible" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/visit_elythia.json b/common/src/main/resources/data/antarchy/advancement/visit_elythia.json new file mode 100644 index 00000000..374f54ea --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/visit_elythia.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "entered_elythia": { + "conditions": { + "to": "antarchy:elythia" + }, + "trigger": "minecraft:changed_dimension" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.visit_elythia.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:brown_ant_nest" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.visit_elythia.title" + } + }, + "requirements": [ + [ + "entered_elythia" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/advancement/visit_thoraxis.json b/common/src/main/resources/data/antarchy/advancement/visit_thoraxis.json new file mode 100644 index 00000000..e8e96b70 --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/visit_thoraxis.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "entered_thoraxis": { + "conditions": { + "to": "antarchy:thoraxis" + }, + "trigger": "minecraft:changed_dimension" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.visit_thoraxis.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:red_ant_nest" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.visit_thoraxis.title" + } + }, + "requirements": [ + [ + "entered_thoraxis" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/damage_type/basilisk_bite.json b/common/src/main/resources/data/antarchy/damage_type/basilisk_bite.json new file mode 100644 index 00000000..9b392a44 --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/basilisk_bite.json @@ -0,0 +1,7 @@ +{ + "message_id": "basilisk_bite", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/bed_bug_bite.json b/common/src/main/resources/data/antarchy/damage_type/bed_bug_bite.json new file mode 100644 index 00000000..74c22eed --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/bed_bug_bite.json @@ -0,0 +1,7 @@ +{ + "message_id": "bed_bug_bite", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/cornea_stalk_prick.json b/common/src/main/resources/data/antarchy/damage_type/cornea_stalk_prick.json new file mode 100644 index 00000000..9259a978 --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/cornea_stalk_prick.json @@ -0,0 +1,7 @@ +{ + "message_id": "cornea_stalk_prick", + "scaling": "never", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/emperor_scorpion_sting.json b/common/src/main/resources/data/antarchy/damage_type/emperor_scorpion_sting.json new file mode 100644 index 00000000..d74a6fae --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/emperor_scorpion_sting.json @@ -0,0 +1,7 @@ +{ + "message_id": "emperor_scorpion_sting", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/kraken_lightning.json b/common/src/main/resources/data/antarchy/damage_type/kraken_lightning.json new file mode 100644 index 00000000..6feb4b40 --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/kraken_lightning.json @@ -0,0 +1,7 @@ +{ + "message_id": "kraken_lightning", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/kraken_mauling.json b/common/src/main/resources/data/antarchy/damage_type/kraken_mauling.json new file mode 100644 index 00000000..2728d507 --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/kraken_mauling.json @@ -0,0 +1,7 @@ +{ + "message_id": "kraken_mauling", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/nightmare_mauling.json b/common/src/main/resources/data/antarchy/damage_type/nightmare_mauling.json new file mode 100644 index 00000000..833b7379 --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/nightmare_mauling.json @@ -0,0 +1,7 @@ +{ + "message_id": "nightmare_mauling", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/triffid_mauling.json b/common/src/main/resources/data/antarchy/damage_type/triffid_mauling.json new file mode 100644 index 00000000..6cf0af8f --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/triffid_mauling.json @@ -0,0 +1,7 @@ +{ + "message_id": "triffid_mauling", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/damage_type/triffid_swallow.json b/common/src/main/resources/data/antarchy/damage_type/triffid_swallow.json new file mode 100644 index 00000000..e3e25b12 --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/triffid_swallow.json @@ -0,0 +1,7 @@ +{ + "message_id": "triffid_swallow", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/dimension/cavaryn.json b/common/src/main/resources/data/antarchy/dimension/cavaryn.json new file mode 100644 index 00000000..9d1dacc3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/dimension/cavaryn.json @@ -0,0 +1,11 @@ +{ + "type": "antarchy:cavaryn", + "generator": { + "type": "minecraft:noise", + "settings": "antarchy:cavaryn", + "biome_source": { + "type": "minecraft:fixed", + "biome": "antarchy:cavaryn" + } + } +} diff --git a/common/src/main/resources/data/antarchy/dimension/elythia.json b/common/src/main/resources/data/antarchy/dimension/elythia.json new file mode 100644 index 00000000..48f60c0d --- /dev/null +++ b/common/src/main/resources/data/antarchy/dimension/elythia.json @@ -0,0 +1,398 @@ +{ + "type": "antarchy:elythia", + "generator": { + "type": "minecraft:noise", + "settings": "antarchy:elythia", + "biome_source": { + "type": "antarchy:elythia_biome_source", + "moleworm_caves_max_y": 30, + "surface_biome_sample_y": 160, + "biomes": [ + { + "biome": "antarchy:moleworm_caves", + "parameters": { + "temperature": 0.69, + "humidity": 0.95, + "continentalness": 0.56, + "erosion": 0.2, + "weirdness": 0.16, + "depth": 0.3, + "offset": 0.3 + } + }, + { + "biome": "antarchy:moleworm_caves", + "parameters": { + "temperature": 0.62, + "humidity": 0.92, + "continentalness": 0.48, + "erosion": 0.38, + "weirdness": -0.55, + "depth": 0.3, + "offset": 0.3 + } + }, + { + "biome": "antarchy:moleworm_caves", + "parameters": { + "temperature": 0.75, + "humidity": 0.96, + "continentalness": 0.64, + "erosion": 0.10, + "weirdness": 0.65, + "depth": 0.3, + "offset": 0.3 + } + }, + { + "biome": "antarchy:elythia_lush_caves", + "parameters": { + "temperature": 0.72, + "humidity": 1.0, + "continentalness": 0.52, + "erosion": 0.15, + "weirdness": -0.1, + "depth": 0.35, + "offset": 0.1 + } + }, + { + "biome": "antarchy:elythia_lush_caves", + "parameters": { + "temperature": 0.68, + "humidity": 0.99, + "continentalness": 0.60, + "erosion": 0.28, + "weirdness": 0.42, + "depth": 0.4, + "offset": 0.1 + } + }, + { + "biome": "antarchy:elythia_meadow", + "parameters": { + "temperature": 0.70, + "humidity": 0.94, + "continentalness": 0.55, + "erosion": 0.22, + "weirdness": -0.30, + "depth": 0.3, + "offset": 0.0 + } + }, + { + "biome": "antarchy:elythia_meadow", + "parameters": { + "temperature": 0.68, + "humidity": 0.96, + "continentalness": 0.57, + "erosion": 0.18, + "weirdness": 0.55, + "depth": 0.3, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.67, + "humidity": 0.93, + "continentalness": 0.54, + "erosion": 0.25, + "weirdness": -0.50, + "depth": 0.45, + "offset": 0.0 + } + }, + { + "biome": "antarchy:sparse_ouranwood_forest", + "parameters": { + "temperature": 0.67, + "humidity": 0.93, + "continentalness": 0.54, + "erosion": 0.25, + "weirdness": -0.50, + "depth": 0.45, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.45, + "humidity": 0.85, + "continentalness": 0.55, + "erosion": -0.15, + "weirdness": -0.75, + "depth": 0.3, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.55, + "humidity": 0.9, + "continentalness": 0.9, + "erosion": 0.12, + "weirdness": -0.2, + "depth": 0.3, + "offset": 0.0 + } + }, + { + "biome": "antarchy:elythia_meadow", + "parameters": { + "temperature": 0.7, + "humidity": 0.95, + "continentalness": 0.38, + "erosion": 0.12, + "weirdness": -0.1, + "depth": 0.3, + "offset": 0.0 + } + }, + { + "biome": "antarchy:elythia_meadow", + "parameters": { + "temperature": 0.62, + "humidity": 0.98, + "continentalness": 0.78, + "erosion": 0.05, + "weirdness": 0.5, + "depth": 0.3, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.45, + "humidity": 0.85, + "continentalness": 0.55, + "erosion": -0.15, + "weirdness": -0.75, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.45, + "humidity": 0.85, + "continentalness": 0.75, + "erosion": 0.0, + "weirdness": 0.7, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.55, + "humidity": 0.9, + "continentalness": 0.9, + "erosion": 0.12, + "weirdness": -0.2, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:sparse_ouranwood_forest", + "parameters": { + "temperature": 0.45, + "humidity": 0.85, + "continentalness": 0.75, + "erosion": 0.0, + "weirdness": 0.7, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:sparse_ouranwood_forest", + "parameters": { + "temperature": 0.55, + "humidity": 0.9, + "continentalness": 0.9, + "erosion": 0.12, + "weirdness": -0.2, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:torchflower_fields", + "parameters": { + "temperature": 0.76, + "humidity": 0.98, + "continentalness": 0.62, + "erosion": 0.18, + "weirdness": 0.32, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:butterfly_fields", + "parameters": { + "temperature": 0.74, + "humidity": 0.99, + "continentalness": 0.60, + "erosion": 0.17, + "weirdness": 0.28, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:butterfly_fields", + "parameters": { + "temperature": 0.76, + "humidity": 0.995, + "continentalness": 0.68, + "erosion": 0.12, + "weirdness": 0.36, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:elythia_meadow", + "parameters": { + "temperature": 0.7, + "humidity": 0.95, + "continentalness": 0.38, + "erosion": 0.12, + "weirdness": -0.1, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:elythia_meadow", + "parameters": { + "temperature": 0.7, + "humidity": 0.95, + "continentalness": 0.55, + "erosion": 0.22, + "weirdness": 0.15, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.45, + "humidity": 0.85, + "continentalness": 0.55, + "erosion": -0.15, + "weirdness": -0.75, + "depth": 0.5, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.45, + "humidity": 0.85, + "continentalness": 0.75, + "erosion": 0.0, + "weirdness": 0.7, + "depth": 0.5, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.55, + "humidity": 0.9, + "continentalness": 0.9, + "erosion": 0.12, + "weirdness": -0.2, + "depth": 0.5, + "offset": 0.0 + } + }, + { + "biome": "antarchy:ouranwood_forest", + "parameters": { + "temperature": 0.50, + "humidity": 0.87, + "continentalness": 0.70, + "erosion": -0.05, + "weirdness": 0.0, + "depth": 0.85, + "offset": 0.0 + } + }, + { + "biome": "antarchy:butterfly_fields", + "parameters": { + "temperature": 0.66, + "humidity": 0.96, + "continentalness": 0.62, + "erosion": 0.13, + "weirdness": 0.20, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:butterfly_fields", + "parameters": { + "temperature": 0.70, + "humidity": 0.97, + "continentalness": 0.64, + "erosion": 0.15, + "weirdness": 0.10, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:butterfly_fields", + "parameters": { + "temperature": 0.72, + "humidity": 0.98, + "continentalness": 0.66, + "erosion": 0.14, + "weirdness": 0.32, + "depth": 0.0, + "offset": 0.0 + } + }, + { + "biome": "antarchy:torchflower_fields", + "parameters": { + "temperature": 0.74, + "humidity": 0.985, + "continentalness": 0.58, + "erosion": 0.16, + "weirdness": 0.24, + "depth": 0.5, + "offset": 0.0 + } + }, + { + "biome": "antarchy:elythia_meadow", + "parameters": { + "temperature": 0.66, + "humidity": 0.96, + "continentalness": 0.62, + "erosion": 0.13, + "weirdness": 0.20, + "depth": 0.85, + "offset": 0.0 + } + } + ] + } + } +} diff --git a/common/src/main/resources/data/antarchy/dimension/thoraxis.json b/common/src/main/resources/data/antarchy/dimension/thoraxis.json new file mode 100644 index 00000000..c28e2d87 --- /dev/null +++ b/common/src/main/resources/data/antarchy/dimension/thoraxis.json @@ -0,0 +1,147 @@ +{ + "type": "antarchy:thoraxis", + "generator": { + "type": "minecraft:noise", + "settings": "antarchy:thoraxis", + "biome_source": { + "type": "antarchy:thoraxis_biome_source", + "dream_dunes_max_y": 96, + "umbral_hills_max_y": 100, + "lucid_pools_min_y": 116, + "biomes": [ + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.0 + }, + "biome": "antarchy:dream_dunes" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.02 + }, + "biome": "antarchy:umbral_hills" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.0 + }, + "biome": "antarchy:nightmare_wastes" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.04 + }, + "biome": "antarchy:nightmare_wastes" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.12 + }, + "biome": "antarchy:nightmare_wastes" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.18 + }, + "biome": "antarchy:nightmare_wastes" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.24 + }, + "biome": "antarchy:nightmare_wastes" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.6 + }, + "biome": "antarchy:lucid_pools" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.965 + }, + "biome": "antarchy:cloud_sea" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.93 + }, + "biome": "antarchy:cloud_sea" + }, + { + "parameters": { + "temperature": [-1.0, 1.0], + "humidity": [-1.0, 1.0], + "continentalness": [-1.0, 1.0], + "erosion": [-1.0, 1.0], + "weirdness": [-1.0, 1.0], + "depth": [0.0, 1.0], + "offset": 0.985 + }, + "biome": "antarchy:cloud_sea" + } + ] + } + } +} diff --git a/common/src/main/resources/data/antarchy/dimension_type/cavaryn.json b/common/src/main/resources/data/antarchy/dimension_type/cavaryn.json new file mode 100644 index 00000000..19af033e --- /dev/null +++ b/common/src/main/resources/data/antarchy/dimension_type/cavaryn.json @@ -0,0 +1,20 @@ +{ + "ultrawarm": false, + "natural": false, + "coordinate_scale": 1.0, + "bed_works": false, + "respawn_anchor_works": false, + "min_y": 0, + "height": 256, + "logical_height": 240, + "infiniburn": "#minecraft:infiniburn_overworld", + "effects": "minecraft:the_end", + "ambient_light": 0.0, + "piglin_safe": false, + "has_raids": false, + "monster_spawn_light_level": 7, + "monster_spawn_block_light_limit": 0, + "has_skylight": false, + "has_ceiling": true, + "fixed_time": 18000 +} diff --git a/common/src/main/resources/data/antarchy/dimension_type/elythia.json b/common/src/main/resources/data/antarchy/dimension_type/elythia.json new file mode 100644 index 00000000..fa2a6c47 --- /dev/null +++ b/common/src/main/resources/data/antarchy/dimension_type/elythia.json @@ -0,0 +1,23 @@ +{ + "ultrawarm": false, + "natural": true, + "coordinate_scale": 1.0, + "bed_works": true, + "respawn_anchor_works": false, + "min_y": -64, + "height": 384, + "logical_height": 384, + "infiniburn": "#minecraft:infiniburn_overworld", + "effects": "minecraft:overworld", + "ambient_light": 0.0, + "piglin_safe": false, + "has_raids": false, + "monster_spawn_light_level": { + "type": "minecraft:uniform", + "min_inclusive": 0, + "max_inclusive": 7 + }, + "monster_spawn_block_light_limit": 0, + "has_skylight": true, + "has_ceiling": false +} diff --git a/common/src/main/resources/data/antarchy/dimension_type/thoraxis.json b/common/src/main/resources/data/antarchy/dimension_type/thoraxis.json new file mode 100644 index 00000000..368ef383 --- /dev/null +++ b/common/src/main/resources/data/antarchy/dimension_type/thoraxis.json @@ -0,0 +1,20 @@ +{ + "ultrawarm": true, + "natural": false, + "coordinate_scale": 8.0, + "bed_works": false, + "respawn_anchor_works": true, + "min_y": 0, + "height": 256, + "logical_height": 220, + "infiniburn": "#minecraft:infiniburn_nether", + "effects": "minecraft:the_nether", + "ambient_light": 0.08, + "piglin_safe": true, + "has_raids": false, + "monster_spawn_light_level": 7, + "monster_spawn_block_light_limit": 0, + "has_skylight": false, + "has_ceiling": true, + "fixed_time": 18000 +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/antimetal.json b/common/src/main/resources/data/antarchy/loot_table/blocks/antimetal.json new file mode 100644 index 00000000..3ed331e1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/antimetal.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:antimetal" + } + ] + } + ], + "random_sequence": "antarchy:blocks/antimetal" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/antimetal_scaffolding.json b/common/src/main/resources/data/antarchy/loot_table/blocks/antimetal_scaffolding.json new file mode 100644 index 00000000..abcd187f --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/antimetal_scaffolding.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:antimetal_scaffolding" + } + ] + } + ], + "random_sequence": "antarchy:blocks/antimetal_scaffolding" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/bed_bug_egg.json b/common/src/main/resources/data/antarchy/loot_table/blocks/bed_bug_egg.json new file mode 100644 index 00000000..9d53b73e --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/bed_bug_egg.json @@ -0,0 +1,91 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "antarchy:bed_bug_egg", + "properties": { + "eggs": "4" + } + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": 4.0 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:bed_bug_egg" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "antarchy:bed_bug_egg", + "properties": { + "eggs": "3" + } + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": 3.0 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:bed_bug_egg" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "antarchy:bed_bug_egg", + "properties": { + "eggs": "2" + } + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": 2.0 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:bed_bug_egg" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:bed_bug_egg" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/turtle_egg" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/blood_crystal_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/blood_crystal_block.json new file mode 100644 index 00000000..4545a9b1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/blood_crystal_block.json @@ -0,0 +1,51 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "antarchy:blood_crystal_block" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": 4.0 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:blood_crystal_shard" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/amethyst_block" +} + diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/blood_crystal_cluster.json b/common/src/main/resources/data/antarchy/loot_table/blocks/blood_crystal_cluster.json new file mode 100644 index 00000000..3f5b2e29 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/blood_crystal_cluster.json @@ -0,0 +1,79 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "antarchy:blood_crystal_cluster" + }, + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "#minecraft:cluster_max_harvestables" + } + } + ], + "functions": [ + { + "count": 4.0, + "function": "minecraft:set_count" + }, + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + } + ], + "name": "antarchy:blood_crystal_shard" + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:blood_crystal_shard" + } + ] + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/amethyst_cluster" +} + diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/brown_ant_nest.json b/common/src/main/resources/data/antarchy/loot_table/blocks/brown_ant_nest.json new file mode 100644 index 00000000..41e87a40 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/brown_ant_nest.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:brown_ant_nest" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/budding_blood_crystal.json b/common/src/main/resources/data/antarchy/loot_table/blocks/budding_blood_crystal.json new file mode 100644 index 00000000..7b59ea19 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/budding_blood_crystal.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:block", + "pools": [] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_dream_sandstone.json b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_dream_sandstone.json new file mode 100644 index 00000000..ae82513c --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_dream_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:chiseled_dream_sandstone" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/chiseled_sandstone" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_nyxite.json b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_nyxite.json new file mode 100644 index 00000000..47104d56 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_nyxite.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:chiseled_nyxite" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/chiseled_nyxite" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_titanium.json b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_titanium.json new file mode 100644 index 00000000..e0aff048 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_titanium.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:chiseled_titanium" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/chiseled_titanium" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_uranium.json b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_uranium.json new file mode 100644 index 00000000..55880026 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/chiseled_uranium.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:chiseled_uranium" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/chiseled_uranium" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cloud_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cloud_block.json new file mode 100644 index 00000000..7b59ea19 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cloud_block.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:block", + "pools": [] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cornea_stalk.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cornea_stalk.json new file mode 100644 index 00000000..cca0ef2d --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cornea_stalk.json @@ -0,0 +1,5 @@ +{ + "type": "minecraft:block", + "pools": [], + "random_sequence": "antarchy:blocks/cornea_stalk" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_dream_sandstone.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_dream_sandstone.json new file mode 100644 index 00000000..424f9e65 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_dream_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cut_dream_sandstone" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/cut_sandstone" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_dream_sandstone_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_dream_sandstone_slab.json new file mode 100644 index 00000000..2a86b88d --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_dream_sandstone_slab.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cut_dream_sandstone_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/cut_sandstone_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium.json new file mode 100644 index 00000000..66c0b972 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cut_titanium" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/cut_titanium" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium_slab.json new file mode 100644 index 00000000..3c4ff908 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:cut_titanium_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:cut_titanium_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/cut_titanium_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium_stairs.json new file mode 100644 index 00000000..aad46bb5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_titanium_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cut_titanium_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/cut_titanium_stairs" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium.json new file mode 100644 index 00000000..301f599d --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cut_uranium" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/cut_uranium" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium_slab.json new file mode 100644 index 00000000..3a637241 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:cut_uranium_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:cut_uranium_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/cut_uranium_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium_stairs.json new file mode 100644 index 00000000..085fba98 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/cut_uranium_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cut_uranium_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/cut_uranium_stairs" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/deepslate_titanium_ore.json b/common/src/main/resources/data/antarchy/loot_table/blocks/deepslate_titanium_ore.json new file mode 100644 index 00000000..a1bef158 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/deepslate_titanium_ore.json @@ -0,0 +1,52 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "name": "antarchy:deepslate_titanium_ore", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:raw_titanium_scrap", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ] + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/deepslate_uranium_ore.json b/common/src/main/resources/data/antarchy/loot_table/blocks/deepslate_uranium_ore.json new file mode 100644 index 00000000..f2199bdf --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/deepslate_uranium_ore.json @@ -0,0 +1,52 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "name": "antarchy:deepslate_uranium_ore", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:raw_uranium_scrap", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ] + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sand.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sand.json new file mode 100644 index 00000000..d30a08f9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dream_sand" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/sand" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone.json new file mode 100644 index 00000000..d639dbcc --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dream_sandstone" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/sandstone" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_slab.json new file mode 100644 index 00000000..b2b99f1b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_slab.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dream_sandstone_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/sandstone_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_stairs.json new file mode 100644 index 00000000..4c4f2870 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dream_sandstone_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/sandstone_stairs" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_wall.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_wall.json new file mode 100644 index 00000000..62a87487 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dream_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dream_sandstone_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/sandstone_wall" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/duct_tape.json b/common/src/main/resources/data/antarchy/loot_table/blocks/duct_tape.json new file mode 100644 index 00000000..36106b7c --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/duct_tape.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:duct_tape" + } + ], + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "antarchy:duct_tape", + "properties": { + "uses": "4" + } + }, + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/duplicator_log.json b/common/src/main/resources/data/antarchy/loot_table/blocks/duplicator_log.json new file mode 100644 index 00000000..89403243 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/duplicator_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:duplicator_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/duplicator_sapling.json b/common/src/main/resources/data/antarchy/loot_table/blocks/duplicator_sapling.json new file mode 100644 index 00000000..1d011246 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/duplicator_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:duplicator_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/hushweed.json b/common/src/main/resources/data/antarchy/loot_table/blocks/hushweed.json new file mode 100644 index 00000000..38f318d5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/hushweed.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:hushweed" + } + ] + } + ], + "random_sequence": "antarchy:blocks/hushweed" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/infested_coarse_dirt.json b/common/src/main/resources/data/antarchy/loot_table/blocks/infested_coarse_dirt.json new file mode 100644 index 00000000..7b59ea19 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/infested_coarse_dirt.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:block", + "pools": [] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/infested_rooted_dirt.json b/common/src/main/resources/data/antarchy/loot_table/blocks/infested_rooted_dirt.json new file mode 100644 index 00000000..7b59ea19 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/infested_rooted_dirt.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:block", + "pools": [] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/large_blood_crystal_bud.json b/common/src/main/resources/data/antarchy/loot_table/blocks/large_blood_crystal_bud.json new file mode 100644 index 00000000..802a65ec --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/large_blood_crystal_bud.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "antarchy:large_blood_crystal_bud" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/large_amethyst_bud" +} + diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/medium_blood_crystal_bud.json b/common/src/main/resources/data/antarchy/loot_table/blocks/medium_blood_crystal_bud.json new file mode 100644 index 00000000..f8fb2734 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/medium_blood_crystal_bud.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "antarchy:medium_blood_crystal_bud" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/medium_amethyst_bud" +} + diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/mossy_ouranwood_log.json b/common/src/main/resources/data/antarchy/loot_table/blocks/mossy_ouranwood_log.json new file mode 100644 index 00000000..d5d9a58a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/mossy_ouranwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:mossy_ouranwood_log" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_log" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/mossy_ouranwood_wood.json b/common/src/main/resources/data/antarchy/loot_table/blocks/mossy_ouranwood_wood.json new file mode 100644 index 00000000..fb237892 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/mossy_ouranwood_wood.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:mossy_ouranwood_wood" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_wood" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite.json new file mode 100644 index 00000000..88d04855 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nyxite" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_slab.json new file mode 100644 index 00000000..dd76fd58 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:nyxite_brick_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:nyxite_brick_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/nyxite_brick_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_stairs.json new file mode 100644 index 00000000..e417be42 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nyxite_brick_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/nyxite_brick_stairs" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_wall.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_wall.json new file mode 100644 index 00000000..bfd778ec --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_brick_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nyxite_brick_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/nyxite_brick_wall" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_bricks.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_bricks.json new file mode 100644 index 00000000..3737802a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_bricks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nyxite_bricks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/nyxite_bricks" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_slab.json new file mode 100644 index 00000000..a65d7383 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:nyxite_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:nyxite_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/nyxite_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_spike.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_spike.json new file mode 100644 index 00000000..4d1b4380 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_spike.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nyxite_spike" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_stairs.json new file mode 100644 index 00000000..87cece8a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nyxite_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/nyxite_stairs" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_wall.json b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_wall.json new file mode 100644 index 00000000..b1bdfe1b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/nyxite_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nyxite_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/nyxite_wall" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/orange_milkweed.json b/common/src/main/resources/data/antarchy/loot_table/blocks/orange_milkweed.json new file mode 100644 index 00000000..f79b2304 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/orange_milkweed.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:orange_milkweed", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:orange_milkweed" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/orange_milkweed" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_acorn.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_acorn.json new file mode 100644 index 00000000..e1eefbb8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_acorn.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_acorn" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/ouranwood_acorn" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_button.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_button.json new file mode 100644 index 00000000..44d807f6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_button.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_button" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_button" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_door.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_door.json new file mode 100644 index 00000000..f5e80def --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_door.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:ouranwood_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:ouranwood_door" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_door" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_fence.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_fence.json new file mode 100644 index 00000000..7caf870a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_fence.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_fence" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_fence" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_fence_gate.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_fence_gate.json new file mode 100644 index 00000000..b5611fc4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_fence_gate" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_fence_gate" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_hanging_sign.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_hanging_sign.json new file mode 100644 index 00000000..b5a2483d --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_hanging_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_hanging_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_hanging_sign" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_leaves.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_leaves.json new file mode 100644 index 00000000..2957533a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_leaves.json @@ -0,0 +1,137 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + ], + "name": "antarchy:ouranwood_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "chances": [ + 0.025, + 0.027777778, + 0.03125, + 0.041666668, + 0.1 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "name": "antarchy:ouranwood_acorn" + } + ] + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": "minecraft:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/ouranwood_leaves" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_log.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_log.json new file mode 100644 index 00000000..d4293289 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_log" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_log" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_planks.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_planks.json new file mode 100644 index 00000000..a06fd256 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_planks.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_planks" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_planks" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_pressure_plate.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_pressure_plate.json new file mode 100644 index 00000000..572da244 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_pressure_plate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_pressure_plate" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_pressure_plate" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_sign.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_sign.json new file mode 100644 index 00000000..88c29f07 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_sign" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_sign" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_slab.json new file mode 100644 index 00000000..2607b412 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:ouranwood_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:ouranwood_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_slab" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_stairs.json new file mode 100644 index 00000000..5000d99f --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_stairs" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_trapdoor.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_trapdoor.json new file mode 100644 index 00000000..b117b21c --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_trapdoor.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_trapdoor" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_trapdoor" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_wood.json b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_wood.json new file mode 100644 index 00000000..1a7dbd98 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/ouranwood_wood.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ouranwood_wood" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/jungle_wood" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/pale_nyxite.json b/common/src/main/resources/data/antarchy/loot_table/blocks/pale_nyxite.json new file mode 100644 index 00000000..7f93d556 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/pale_nyxite.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:pale_nyxite" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/pink_milkweed.json b/common/src/main/resources/data/antarchy/loot_table/blocks/pink_milkweed.json new file mode 100644 index 00000000..99a772e5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/pink_milkweed.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:pink_milkweed", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:pink_milkweed" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/pink_milkweed" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/polished_antimetal.json b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_antimetal.json new file mode 100644 index 00000000..73100b37 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_antimetal.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:polished_antimetal" + } + ] + } + ], + "random_sequence": "antarchy:blocks/polished_antimetal" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite.json b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite.json new file mode 100644 index 00000000..9bdf4248 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:polished_nyxite" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/polished_nyxite" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_slab.json new file mode 100644 index 00000000..fd3b5613 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "antarchy:polished_nyxite_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:polished_nyxite_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/polished_nyxite_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_stairs.json new file mode 100644 index 00000000..db1519d2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:polished_nyxite_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/polished_nyxite_stairs" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_wall.json b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_wall.json new file mode 100644 index 00000000..852fd8f6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/polished_nyxite_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:polished_nyxite_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/polished_nyxite_wall" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/potent_nyxite.json b/common/src/main/resources/data/antarchy/loot_table/blocks/potent_nyxite.json new file mode 100644 index 00000000..a08a448b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/potent_nyxite.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:potent_nyxite" + } + ], + "rolls": 1.0 + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/rainbow_ant_nest.json b/common/src/main/resources/data/antarchy/loot_table/blocks/rainbow_ant_nest.json new file mode 100644 index 00000000..bd2bcf15 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/rainbow_ant_nest.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:rainbow_ant_nest" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/raw_titanium_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/raw_titanium_block.json new file mode 100644 index 00000000..3db55d2e --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/raw_titanium_block.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:raw_titanium_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/raw_uranium_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/raw_uranium_block.json new file mode 100644 index 00000000..15692e0a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/raw_uranium_block.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:raw_uranium_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/red_ant_nest.json b/common/src/main/resources/data/antarchy/loot_table/blocks/red_ant_nest.json new file mode 100644 index 00000000..1db5c81a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/red_ant_nest.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:red_ant_nest" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/small_blood_crystal_bud.json b/common/src/main/resources/data/antarchy/loot_table/blocks/small_blood_crystal_bud.json new file mode 100644 index 00000000..c3210026 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/small_blood_crystal_bud.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "antarchy:small_blood_crystal_bud" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/small_amethyst_bud" +} + diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone.json b/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone.json new file mode 100644 index 00000000..910fb764 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:smooth_dream_sandstone" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/smooth_sandstone" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone_slab.json b/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone_slab.json new file mode 100644 index 00000000..d2915704 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone_slab.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:smooth_dream_sandstone_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/smooth_sandstone_slab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone_stairs.json b/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone_stairs.json new file mode 100644 index 00000000..d0898ddb --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/smooth_dream_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:smooth_dream_sandstone_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/smooth_sandstone_stairs" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/stripped_ouranwood_log.json b/common/src/main/resources/data/antarchy/loot_table/blocks/stripped_ouranwood_log.json new file mode 100644 index 00000000..50d3061e --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/stripped_ouranwood_log.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:stripped_ouranwood_log" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/stripped_jungle_log" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/stripped_ouranwood_wood.json b/common/src/main/resources/data/antarchy/loot_table/blocks/stripped_ouranwood_wood.json new file mode 100644 index 00000000..6e4679ad --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/stripped_ouranwood_wood.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:stripped_ouranwood_wood" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/stripped_jungle_wood" +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_bars.json b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_bars.json new file mode 100644 index 00000000..ca3141d4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_bars.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:titanium_bars" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/titanium_bars" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_bulb.json b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_bulb.json new file mode 100644 index 00000000..463e1b1d --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_bulb.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:titanium_bulb" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/titanium_bulb" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_door.json b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_door.json new file mode 100644 index 00000000..0d382fda --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_door.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:titanium_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:titanium_door" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/iron_door" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_ore.json b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_ore.json new file mode 100644 index 00000000..f2298a83 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_ore.json @@ -0,0 +1,52 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "name": "antarchy:titanium_ore", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:raw_titanium_scrap", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ] + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_trapdoor.json b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_trapdoor.json new file mode 100644 index 00000000..f8099042 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/titanium_trapdoor.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:titanium_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "minecraft:blocks/iron_trapdoor" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/torchflower_bush.json b/common/src/main/resources/data/antarchy/loot_table/blocks/torchflower_bush.json new file mode 100644 index 00000000..51df220e --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/torchflower_bush.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:torchflower_bush", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:torchflower_bush" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/torchflower_bush" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/triffid_goo_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/triffid_goo_block.json new file mode 100644 index 00000000..b09e8e76 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/triffid_goo_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:triffid_goo_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/triffid_goo_block" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/umbral_moss_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/umbral_moss_block.json new file mode 100644 index 00000000..050f79fd --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/umbral_moss_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:umbral_moss_block" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/moss_block" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/umbral_moss_carpet.json b/common/src/main/resources/data/antarchy/loot_table/blocks/umbral_moss_carpet.json new file mode 100644 index 00000000..1ca07a11 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/umbral_moss_carpet.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:umbral_moss_carpet", + "condition": "minecraft:block_state_property", + "properties": { + "bottom": "true" + } + } + ], + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], + "name": "antarchy:umbral_moss_carpet" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/moss_carpet" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_bars.json b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_bars.json new file mode 100644 index 00000000..e5a40a93 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_bars.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:uranium_bars" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/uranium_bars" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_block.json new file mode 100644 index 00000000..cb0f9784 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_block.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:uranium_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_bulb.json b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_bulb.json new file mode 100644 index 00000000..fa7bc0ff --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_bulb.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:uranium_bulb" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/uranium_bulb" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_door.json b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_door.json new file mode 100644 index 00000000..4485195d --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_door.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "antarchy:uranium_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "antarchy:uranium_door" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/iron_door" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_ore.json b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_ore.json new file mode 100644 index 00000000..41202d6b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_ore.json @@ -0,0 +1,52 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "name": "antarchy:uranium_ore", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:raw_uranium_scrap", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ] + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_trapdoor.json b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_trapdoor.json new file mode 100644 index 00000000..1ad2348a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/uranium_trapdoor.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:uranium_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "minecraft:blocks/iron_trapdoor" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/wasp_nest.json b/common/src/main/resources/data/antarchy/loot_table/blocks/wasp_nest.json new file mode 100644 index 00000000..cb9d67c8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/wasp_nest.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:wasp_nest" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/bedroom.json b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/bedroom.json new file mode 100644 index 00000000..1e1bda3c --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/bedroom.json @@ -0,0 +1,100 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:white_bed", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:red_bed", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:blue_bed", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:book", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:paper", + "weight": 14 + }, + { + "type": "minecraft:item", + "name": "minecraft:clock", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "minecraft:compass", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "minecraft:candle", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:string", + "weight": 6 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:feather", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 2 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 7.0, + "min": 3.0 + } + } + ], + "random_sequence": "antarchy:chests/fallen_kingdom/bedroom" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/generic.json b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/generic.json new file mode 100644 index 00000000..a083640a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/generic.json @@ -0,0 +1,170 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 16.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:oak_slab", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 16.0, + "min": 6.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:cobblestone", + "weight": 16 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:bread", + "weight": 8 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 12.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:torch", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 12.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:stick", + "weight": 16 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:string", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:paper", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:coal", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 6 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:duct_tape", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:candle", + "weight": 8 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 4.0 + } + } + ], + "random_sequence": "antarchy:chests/fallen_kingdom/generic" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/kitchen.json b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/kitchen.json new file mode 100644 index 00000000..5df6310f --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/kitchen.json @@ -0,0 +1,200 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:bread", + "weight": 20 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 7.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:carrot", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 7.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:potato", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:cooked_beef", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:cooked_porkchop", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:bowl", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:apple", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:cookie", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:beetroot", + "weight": 8 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:pumpkin_pie", + "weight": 6 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 5.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:sugar", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:duct_tape", + "weight": 4 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 7.0, + "min": 3.0 + } + } + ], + "random_sequence": "antarchy:chests/fallen_kingdom/kitchen" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/storage.json b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/storage.json new file mode 100644 index 00000000..f33fe93a --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/storage.json @@ -0,0 +1,185 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 16.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:cobblestone", + "weight": 20 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 12.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:oak_planks", + "weight": 18 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 12.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:spruce_planks", + "weight": 18 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:stick", + "weight": 18 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:torch", + "weight": 18 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:string", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:coal", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:paper", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:flint", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:redstone", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 6 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:duct_tape", + "weight": 4 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 4.0 + } + } + ], + "random_sequence": "antarchy:chests/fallen_kingdom/storage" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/tools.json b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/tools.json new file mode 100644 index 00000000..e9309686 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/tools.json @@ -0,0 +1,179 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stone_pickaxe", + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "minecraft:stone_axe", + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "minecraft:stone_shovel", + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_pickaxe", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_axe", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_shovel", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_hoe", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:shears", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:flint_and_steel", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:shield", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:bow", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "minecraft:crossbow", + "weight": 4 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 12.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:stick", + "weight": 16 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:coal", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:string", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:flint", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:leather", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:duct_tape", + "weight": 4 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + } + ], + "random_sequence": "antarchy:chests/fallen_kingdom/tools" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/tower.json b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/tower.json new file mode 100644 index 00000000..7c389108 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/tower.json @@ -0,0 +1,260 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bow", + "weight": 16, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 5.0, + "max": 22.0 + }, + "options": "#minecraft:on_random_loot" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:crossbow", + "weight": 14, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 6.0, + "max": 24.0 + }, + "options": "#minecraft:on_random_loot" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:bow", + "weight": 8, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 18.0, + "max": 30.0 + }, + "options": "#minecraft:on_random_loot" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:crossbow", + "weight": 6, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 18.0, + "max": 30.0 + }, + "options": "#minecraft:on_random_loot" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:shield", + "weight": 6 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:arrow", + "weight": 22, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 16.0, + "max": 32.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 8.0, + "max": 16.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:tipped_arrow", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 12.0 + } + }, + { + "function": "minecraft:set_components", + "components": { + "minecraft:potion_contents": { + "potion": "minecraft:poison" + } + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:feather", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 8.0 + } + } + ] + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:iron_ingot", + "weight": 12, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 6.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:string", + "weight": 12, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 8.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:torch", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 12.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:duct_tape", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:uranium_nugget", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:titanium_nugget", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ], + "random_sequence": "antarchy:chests/fallen_kingdom_castle/tower" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/treasure.json b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/treasure.json new file mode 100644 index 00000000..2eb3aa3d --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/treasure.json @@ -0,0 +1,141 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 10.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:gold_ingot", + "weight": 24 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 20.0, + "min": 8.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:copper_ingot", + "weight": 24 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:emerald", + "weight": 16 + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "max": 35.0, + "min": 20.0 + }, + "options": "#minecraft:on_random_loot" + } + ], + "name": "minecraft:book", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:iron_ingot", + "weight": 8 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:diamond", + "weight": 10 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 5.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:uranium_nugget", + "weight": 1 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:titanium_nugget", + "weight": 1 + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:chests/fallen_kingdom/treasure" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/chests/trayaurus_lab/trayaurus_lab.json b/common/src/main/resources/data/antarchy/loot_table/chests/trayaurus_lab/trayaurus_lab.json new file mode 100644 index 00000000..3163e7d5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/chests/trayaurus_lab/trayaurus_lab.json @@ -0,0 +1,449 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:redstone", + "weight": 28 + }, + { + "type": "minecraft:item", + "name": "minecraft:redstone_torch", + "weight": 18 + }, + { + "type": "minecraft:item", + "name": "minecraft:repeater", + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "minecraft:comparator", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:lever", + "weight": 14 + }, + { + "type": "minecraft:item", + "name": "minecraft:observer", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:piston", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:sticky_piston", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "minecraft:dropper", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:dispenser", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:glass_bottle", + "weight": 12 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 7.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:iron_ingot", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 7.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:copper_ingot", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:gold_ingot", + "weight": 8 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:glowstone_dust", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:uranium_nugget", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:titanium_nugget", + "weight": 2 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flint_and_steel", + "weight": 20 + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 15.0, + "max": 30.0 + }, + "options": "#minecraft:on_random_loot" + } + ], + "name": "minecraft:book", + "weight": 16 + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:enchant_randomly", + "options": [ + "minecraft:mending", + "minecraft:swift_sneak", + "minecraft:frost_walker", + "minecraft:soul_speed", + "minecraft:binding_curse" + ] + } + ], + "name": "minecraft:book", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "minecraft:potion_contents": { + "potion": "antarchy:shrinking" + } + } + } + ], + "name": "minecraft:potion", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "minecraft:potion_contents": { + "potion": "antarchy:growing" + } + } + } + ], + "name": "minecraft:potion", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_sword", + "weight": 8 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:fermented_spider_eye", + "weight": 6 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:rainbow_sugar", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:emerald", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "minecraft:diamond", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:glowstone_dust", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:lapis_lazuli", + "weight": 8 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:amethyst_shard", + "weight": 8 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:bone", + "weight": 16 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:string", + "weight": 14 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:duct_tape", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "antarchy:ouranwood_acorn", + "weight": 12 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:paper", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:feather", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 4 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + } + } + ], + "random_sequence": "antarchy:chests/trayaurus_lab" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/apple_cow.json b/common/src/main/resources/data/antarchy/loot_table/entities/apple_cow.json new file mode 100644 index 00000000..40a7b375 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/apple_cow.json @@ -0,0 +1,106 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:leather", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 2.0 + } + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:beef", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + }, + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "flags": { + "is_on_fire": true + } + } + } + ] + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ] + }, + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "minecraft:flags": { + "is_baby": false, + "sheared": false + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:apple", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/basilisk.json b/common/src/main/resources/data/antarchy/loot_table/entities/basilisk.json new file mode 100644 index 00000000..a5a7135b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/basilisk.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1, + "max": 2 + }, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:basilisk_fang" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/brutalfly.json b/common/src/main/resources/data/antarchy/loot_table/entities/brutalfly.json new file mode 100644 index 00000000..c001fa35 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/brutalfly.json @@ -0,0 +1,39 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:brutalfly_wing" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ], + "random_sequence": "antarchy:entities/brutalfly" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/cloud_shark.json b/common/src/main/resources/data/antarchy/loot_table/entities/cloud_shark.json new file mode 100644 index 00000000..5a78e7af --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/cloud_shark.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:cloud_shark_fin" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/easter_bunny.json b/common/src/main/resources/data/antarchy/loot_table/entities/easter_bunny.json new file mode 100644 index 00000000..c4f7ac96 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/easter_bunny.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:entity", + "pools": [] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/emperor_scorpion.json b/common/src/main/resources/data/antarchy/loot_table/entities/emperor_scorpion.json new file mode 100644 index 00000000..c5a7c9df --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/emperor_scorpion.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:emperor_scorpion_stinger" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/enchanted_golden_apple_cow.json b/common/src/main/resources/data/antarchy/loot_table/entities/enchanted_golden_apple_cow.json new file mode 100644 index 00000000..594bf75b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/enchanted_golden_apple_cow.json @@ -0,0 +1,104 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:leather", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 2.0 + } + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:beef", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + }, + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "flags": { + "is_on_fire": true + } + } + } + ] + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ] + }, + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "minecraft:flags": { + "is_baby": false + }, + "antarchy:apple_cow": { + "sheared": false + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:enchanted_golden_apple", + "functions": [ + { + "function": "minecraft:set_count", + "count": 1 + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/flying_squirrel.json b/common/src/main/resources/data/antarchy/loot_table/entities/flying_squirrel.json new file mode 100644 index 00000000..c4f7ac96 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/flying_squirrel.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:entity", + "pools": [] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/golden_apple_cow.json b/common/src/main/resources/data/antarchy/loot_table/entities/golden_apple_cow.json new file mode 100644 index 00000000..27801152 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/golden_apple_cow.json @@ -0,0 +1,108 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:leather", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 2.0 + } + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:beef", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + }, + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "flags": { + "is_on_fire": true + } + } + } + ] + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ] + }, + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "minecraft:flags": { + "is_baby": false + }, + "antarchy:apple_cow": { + "sheared": false + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:golden_apple", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json b/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json new file mode 100644 index 00000000..d99cdada --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1, + "max": 3 + }, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:kraken_tooth" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/lucid.json b/common/src/main/resources/data/antarchy/loot_table/entities/lucid.json new file mode 100644 index 00000000..664ce949 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/lucid.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:lucid_eye" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/mantis.json b/common/src/main/resources/data/antarchy/loot_table/entities/mantis.json new file mode 100644 index 00000000..3131aa0b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/mantis.json @@ -0,0 +1,39 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:mantis_claw" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 1.0 + } + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ], + "random_sequence": "antarchy:entities/mantis" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/missile_squid.json b/common/src/main/resources/data/antarchy/loot_table/entities/missile_squid.json new file mode 100644 index 00000000..c4f7ac96 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/missile_squid.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:entity", + "pools": [] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/molevore.json b/common/src/main/resources/data/antarchy/loot_table/entities/molevore.json new file mode 100644 index 00000000..6d8b3d99 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/molevore.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:molevore_nose" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/moleworm.json b/common/src/main/resources/data/antarchy/loot_table/entities/moleworm.json new file mode 100644 index 00000000..abb99896 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/moleworm.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:moleworm", + "functions": [ + { + "function": "minecraft:set_count", + "count": 1 + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/nightmare.json b/common/src/main/resources/data/antarchy/loot_table/entities/nightmare.json new file mode 100644 index 00000000..27bd59df --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/nightmare.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:nightmare_scale", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 5.0 + } + } + ] + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/triffid.json b/common/src/main/resources/data/antarchy/loot_table/entities/triffid.json new file mode 100644 index 00000000..703b4e66 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/entities/triffid.json @@ -0,0 +1,39 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:triffid_goo" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 5.0 + } + }, + { + "function": "minecraft:enchanted_count_increase", + "enchantment": "minecraft:looting", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ] + } + ], + "random_sequence": "antarchy:entities/triffid" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/spawners/fallen_kingdom_castle/hard.json b/common/src/main/resources/data/antarchy/loot_table/spawners/fallen_kingdom_castle/hard.json new file mode 100644 index 00000000..ae4663c3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/spawners/fallen_kingdom_castle/hard.json @@ -0,0 +1,226 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:diamond", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot", + "weight": 14, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 6.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:emerald", + "weight": 12, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:copper_ingot", + "weight": 14, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 8.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:enchanted_book", + "weight": 8, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 15.0, + "max": 30.0 + }, + "options": "#minecraft:on_random_loot" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:crossbow", + "weight": 10, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 15.0, + "max": 30.0 + }, + "options": "#minecraft:on_random_loot" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:arrow", + "weight": 14, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 12.0, + "max": 32.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:duct_tape", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:torch", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 12.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:bread", + "weight": 12, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 6.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 4 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 7.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:fallen_king_crown", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 1.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:uranium_nugget", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:titanium_nugget", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ], + "random_sequence": "antarchy:spawners/fallen_kingdom_castle/trail_chamber/hard" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/spawners/fallen_kingdom_castle/medium.json b/common/src/main/resources/data/antarchy/loot_table/spawners/fallen_kingdom_castle/medium.json new file mode 100644 index 00000000..af5228b3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/spawners/fallen_kingdom_castle/medium.json @@ -0,0 +1,255 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bread", + "weight": 18, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 6.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_ingot", + "weight": 12, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:copper_ingot", + "weight": 14, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 8.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:arrow", + "weight": 14, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 8.0, + "max": 24.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:torch", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 12.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:duct_tape", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:potion", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "minecraft:potion_contents": { + "potion": "antarchy:shrinking" + } + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:potion", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "minecraft:potion_contents": { + "potion": "antarchy:growing" + } + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:emerald", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:mud_pie", + "weight": 4 + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 3.0, + "max": 6.0 + } + }, + { + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:fallen_king_crown", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 1.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:uranium_nugget", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antarchy:titanium_nugget", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:diamond", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:enchanted_book", + "weight": 4, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "type": "minecraft:uniform", + "min": 10.0, + "max": 25.0 + }, + "options": "#minecraft:on_random_loot" + } + ] + } + ], + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + } + } + ], + "random_sequence": "antarchy:spawners/fallen_kingdom_castle/trail_chamber/medium" +} diff --git a/common/src/main/resources/data/antarchy/recipe/antimetal_scaffolding.json b/common/src/main/resources/data/antarchy/recipe/antimetal_scaffolding.json new file mode 100644 index 00000000..17b935de --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/antimetal_scaffolding.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "pattern": [ + "PCP", + "P P", + "P P" + ], + "key": { + "P": { + "item": "antarchy:polished_antimetal" + }, + "C": { + "item": "minecraft:chain" + } + }, + "result": { + "id": "antarchy:antimetal_scaffolding", + "count": 16 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/basilisk_dagger.json b/common/src/main/resources/data/antarchy/recipe/basilisk_dagger.json new file mode 100644 index 00000000..745329c2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/basilisk_dagger.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "combat", + "key": { + "F": { + "item": "antarchy:basilisk_fang" + }, + "S": { + "item": "minecraft:stick" + } + }, + "pattern": [ + "F", + "S" + ], + "result": { + "id": "antarchy:basilisk_dagger", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/battle_axe.json b/common/src/main/resources/data/antarchy/recipe/battle_axe.json new file mode 100644 index 00000000..86a54290 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/battle_axe.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "AAN", + "ASN", + " N " + ], + "key": { + "A": { + "item": "antarchy:ultimate_axe" + }, + "S": { + "item": "antarchy:ultimate_sword" + }, + "N": { + "item": "minecraft:netherite_ingot" + } + }, + "result": { + "id": "antarchy:battle_axe", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/big_bertha.json b/common/src/main/resources/data/antarchy/recipe/big_bertha.json new file mode 100644 index 00000000..05e50564 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/big_bertha.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + " B", + " H ", + "A " + ], + "key": { + "B": { + "item": "antarchy:big_bertha_blade" + }, + "H": { + "item": "antarchy:big_bertha_hilt" + }, + "A": { + "item": "antarchy:big_bertha_handle" + } + }, + "result": { + "id": "antarchy:big_bertha", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/big_bertha_blade.json b/common/src/main/resources/data/antarchy/recipe/big_bertha_blade.json new file mode 100644 index 00000000..a75a5b87 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/big_bertha_blade.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " FG", + "CDE", + "AB " + ], + "key": { + "A": { + "item": "antarchy:lucid_eye" + }, + "B": { + "item": "antarchy:basilisk_fang" + }, + "C": { + "item": "antarchy:emperor_scorpion_stinger" + }, + "D": { + "item": "antarchy:ultimate_sword" + }, + "E": { + "item": "antarchy:cloud_shark_fin" + }, + "F": { + "item": "antarchy:nightmare_scale" + }, + "G": { + "item": "antarchy:kraken_tooth" + } + }, + "result": { + "id": "antarchy:big_bertha_blade", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/big_bertha_handle.json b/common/src/main/resources/data/antarchy/recipe/big_bertha_handle.json new file mode 100644 index 00000000..461428b6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/big_bertha_handle.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " G", + "CD ", + "AB " + ], + "key": { + "A": { + "item": "antarchy:mantis_claw" + }, + "B": { + "item": "antarchy:brutalfly_wing" + }, + "C": { + "item": "antarchy:triffid_goo" + }, + "D": { + "item": "antarchy:primordial_scute" + }, + "G": { + "item": "antarchy:gravity_gun" + } + }, + "result": { + "id": "antarchy:big_bertha_handle", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/big_bertha_hilt.json b/common/src/main/resources/data/antarchy/recipe/big_bertha_hilt.json new file mode 100644 index 00000000..83322fd6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/big_bertha_hilt.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "AC ", + "CBC", + " CA" + ], + "key": { + "A": { + "item": "antarchy:vortex_eye" + }, + "B": { + "item": "antarchy:molevore_nose" + }, + "C": { + "item": "antarchy:jumpy_bug_leg" + } + }, + "result": { + "id": "antarchy:big_bertha_hilt", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/blood_crystal_apple.json b/common/src/main/resources/data/antarchy/recipe/blood_crystal_apple.json new file mode 100644 index 00000000..32366787 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/blood_crystal_apple.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "food", + "pattern": [ + "###", + "#A#", + "###" + ], + "key": { + "#": { + "item": "antarchy:blood_crystal_shard" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "id": "antarchy:blood_crystal_apple", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/blood_crystal_block.json b/common/src/main/resources/data/antarchy/recipe/blood_crystal_block.json new file mode 100644 index 00000000..38845aa2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/blood_crystal_block.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:blood_crystal_shard" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "antarchy:blood_crystal_block", + "count": 1 + } +} + diff --git a/common/src/main/resources/data/antarchy/recipe/blood_crystal_boots.json b/common/src/main/resources/data/antarchy/recipe/blood_crystal_boots.json new file mode 100644 index 00000000..da944f9b --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/blood_crystal_boots.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "S S", + "S S" + ], + "key": { + "S": { + "item": "antarchy:blood_crystal_shard" + } + }, + "result": { + "id": "antarchy:blood_crystal_boots", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/blood_crystal_chestplate.json b/common/src/main/resources/data/antarchy/recipe/blood_crystal_chestplate.json new file mode 100644 index 00000000..3d9eecac --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/blood_crystal_chestplate.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "S S", + "SSS", + "SSS" + ], + "key": { + "S": { + "item": "antarchy:blood_crystal_shard" + } + }, + "result": { + "id": "antarchy:blood_crystal_chestplate", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/blood_crystal_helmet.json b/common/src/main/resources/data/antarchy/recipe/blood_crystal_helmet.json new file mode 100644 index 00000000..434d93f3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/blood_crystal_helmet.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "S S" + ], + "key": { + "S": { + "item": "antarchy:blood_crystal_shard" + } + }, + "result": { + "id": "antarchy:blood_crystal_helmet", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/blood_crystal_katana.json b/common/src/main/resources/data/antarchy/recipe/blood_crystal_katana.json new file mode 100644 index 00000000..8b8047f2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/blood_crystal_katana.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "combat", + "pattern": [ + " B", + " B ", + "N " + ], + "key": { + "N": { + "item": "minecraft:netherite_ingot" + }, + "B": { + "item": "antarchy:blood_crystal_shard" + } + }, + "result": { + "id": "antarchy:blood_crystal_katana", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/blood_crystal_leggings.json b/common/src/main/resources/data/antarchy/recipe/blood_crystal_leggings.json new file mode 100644 index 00000000..f187ca03 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/blood_crystal_leggings.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "S S", + "S S" + ], + "key": { + "S": { + "item": "antarchy:blood_crystal_shard" + } + }, + "result": { + "id": "antarchy:blood_crystal_leggings", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/brutalfly_elytra.json b/common/src/main/resources/data/antarchy/recipe/brutalfly_elytra.json new file mode 100644 index 00000000..60af494f --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/brutalfly_elytra.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "BMB", + "BEB" + ], + "key": { + "B": { + "item": "antarchy:brutalfly_wing" + }, + "M": { + "item": "antarchy:duct_tape" + }, + "E": { + "item": "minecraft:elytra" + } + }, + "result": { + "id": "antarchy:brutalfly_elytra", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/chiseled_dream_sandstone.json b/common/src/main/resources/data/antarchy/recipe/chiseled_dream_sandstone.json new file mode 100644 index 00000000..d69cc351 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/chiseled_dream_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:dream_sandstone_slab" + } + }, + "pattern": [ + "#", + "#" + ], + "result": { + "id": "antarchy:chiseled_dream_sandstone" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/chiseled_dream_sandstone_from_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/chiseled_dream_sandstone_from_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..6487724a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/chiseled_dream_sandstone_from_dream_sandstone_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:dream_sandstone" + }, + "result": { + "id": "antarchy:chiseled_dream_sandstone" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/chiseled_nyxite.json b/common/src/main/resources/data/antarchy/recipe/chiseled_nyxite.json new file mode 100644 index 00000000..ae707eb0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/chiseled_nyxite.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:polished_nyxite_slab" + } + }, + "pattern": [ + "#", + "#" + ], + "result": { + "id": "antarchy:chiseled_nyxite" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/chiseled_nyxite_from_polished_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/chiseled_nyxite_from_polished_nyxite_stonecutting.json new file mode 100644 index 00000000..7498fa06 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/chiseled_nyxite_from_polished_nyxite_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:polished_nyxite" + }, + "result": { + "id": "antarchy:chiseled_nyxite" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/cloud_shark_fin_soup.json b/common/src/main/resources/data/antarchy/recipe/cloud_shark_fin_soup.json new file mode 100644 index 00000000..a222940a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/cloud_shark_fin_soup.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "food", + "ingredients": [ + { + "item": "antarchy:cloud_shark_fin" + }, + { + "item": "minecraft:bowl" + } + ], + "result": { + "id": "antarchy:cloud_shark_fin_soup", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone.json b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone.json new file mode 100644 index 00000000..a121e408 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:dream_sandstone" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 4, + "id": "antarchy:cut_dream_sandstone" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_from_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_from_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..1a43db43 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_from_dream_sandstone_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:dream_sandstone" + }, + "result": { + "id": "antarchy:cut_dream_sandstone" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab.json b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab.json new file mode 100644 index 00000000..511672c6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:cut_dream_sandstone" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:cut_dream_sandstone_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab_from_cut_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab_from_cut_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..9cc95cf7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab_from_cut_dream_sandstone_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:cut_dream_sandstone" + }, + "result": { + "count": 2, + "id": "antarchy:cut_dream_sandstone_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab_from_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab_from_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..dd555ba5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/cut_dream_sandstone_slab_from_dream_sandstone_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:dream_sandstone" + }, + "result": { + "count": 2, + "id": "antarchy:cut_dream_sandstone_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_campfire.json b/common/src/main/resources/data/antarchy/recipe/dream_campfire.json new file mode 100644 index 00000000..710fbe0c --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_campfire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": { + "item": "antarchy:dream_sand" + }, + "L": { + "tag": "minecraft:logs" + }, + "S": { + "tag": "c:rods/wooden" + } + }, + "pattern": [ + " S ", + "S#S", + "LLL" + ], + "result": { + "count": 1, + "id": "antarchy:dream_campfire" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_lantern.json b/common/src/main/resources/data/antarchy/recipe/dream_lantern.json new file mode 100644 index 00000000..66dd6083 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_lantern.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": { + "item": "antarchy:dream_torch" + }, + "X": { + "tag": "c:nuggets/iron" + } + }, + "pattern": [ + "XXX", + "X#X", + "XXX" + ], + "result": { + "count": 1, + "id": "antarchy:dream_lantern" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_sandstone.json b/common/src/main/resources/data/antarchy/recipe/dream_sandstone.json new file mode 100644 index 00000000..eb7c82d7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:dream_sand" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "antarchy:dream_sandstone" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_sandstone_slab.json b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_slab.json new file mode 100644 index 00000000..423e5f07 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_slab.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": [ + { + "item": "antarchy:dream_sandstone" + }, + { + "item": "antarchy:chiseled_dream_sandstone" + } + ] + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:dream_sandstone_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_sandstone_slab_from_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_slab_from_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..fe0451f8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_slab_from_dream_sandstone_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:dream_sandstone" + }, + "result": { + "count": 2, + "id": "antarchy:dream_sandstone_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_sandstone_stairs.json b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_stairs.json new file mode 100644 index 00000000..bc2aebc7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_stairs.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": [ + { + "item": "antarchy:dream_sandstone" + }, + { + "item": "antarchy:chiseled_dream_sandstone" + }, + { + "item": "antarchy:cut_dream_sandstone" + } + ] + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:dream_sandstone_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_sandstone_stairs_from_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_stairs_from_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..86114028 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_stairs_from_dream_sandstone_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:dream_sandstone" + }, + "result": { + "id": "antarchy:dream_sandstone_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_sandstone_wall.json b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_wall.json new file mode 100644 index 00000000..b83811b9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_wall.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:dream_sandstone" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "antarchy:dream_sandstone_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_sandstone_wall_from_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_wall_from_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..772e1a26 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_sandstone_wall_from_dream_sandstone_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:dream_sandstone" + }, + "result": { + "id": "antarchy:dream_sandstone_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/dream_torch.json b/common/src/main/resources/data/antarchy/recipe/dream_torch.json new file mode 100644 index 00000000..83931411 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/dream_torch.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "item": "minecraft:stick" + }, + "S": { + "item": "antarchy:dream_sand" + }, + "X": [ + { + "item": "minecraft:coal" + }, + { + "item": "minecraft:charcoal" + } + ] + }, + "pattern": [ + "X", + "#", + "S" + ], + "result": { + "count": 4, + "id": "antarchy:dream_torch" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/duct_tape.json b/common/src/main/resources/data/antarchy/recipe/duct_tape.json new file mode 100644 index 00000000..a03e94ba --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/duct_tape.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "SSS", + "PPP" + ], + "key": { + "S": { + "tag": "c:slime_balls" + }, + "P": { + "item": "minecraft:paper" + } + }, + "result": { + "id": "antarchy:duct_tape", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/gravity_gun.json b/common/src/main/resources/data/antarchy/recipe/gravity_gun.json new file mode 100644 index 00000000..b5d2a1b5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/gravity_gun.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "UGN", + "UCT", + " T" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "G": { + "item": "antarchy:lucid_eye" + }, + "N": { + "tag": "c:ingots/netherite" + }, + "C": { + "item": "minecraft:comparator" + } + }, + "result": { + "id": "antarchy:gravity_gun", + "count": 1 + } +} + diff --git a/common/src/main/resources/data/antarchy/recipe/growth_ray.json b/common/src/main/resources/data/antarchy/recipe/growth_ray.json new file mode 100644 index 00000000..a5aee5dc --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/growth_ray.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "TTT", + "TCT", + " N" + ], + "key": { + "T": { + "item": "antarchy:titanium_ingot" + }, + "N": { + "tag": "c:ingots/netherite" + }, + "C": { + "item": "minecraft:comparator" + } + }, + "result": { + "id": "antarchy:growth_ray", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/infested_coarse_dirt.json b/common/src/main/resources/data/antarchy/recipe/infested_coarse_dirt.json new file mode 100644 index 00000000..c553ae0c --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/infested_coarse_dirt.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "ingredients": [ + { + "item": "minecraft:coarse_dirt" + }, + { + "item": "antarchy:moleworm" + } + ], + "result": { + "count": 1, + "id": "antarchy:infested_coarse_dirt" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/infested_rooted_dirt.json b/common/src/main/resources/data/antarchy/recipe/infested_rooted_dirt.json new file mode 100644 index 00000000..fc85bcb0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/infested_rooted_dirt.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "ingredients": [ + { + "item": "minecraft:rooted_dirt" + }, + { + "item": "antarchy:moleworm" + } + ], + "result": { + "count": 1, + "id": "antarchy:infested_rooted_dirt" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/lucid_pearl.json b/common/src/main/resources/data/antarchy/recipe/lucid_pearl.json new file mode 100644 index 00000000..ec950302 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/lucid_pearl.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "antarchy:lucid_eye" }, + { "item": "minecraft:ender_pearl" } + ], + "result": { + "id": "antarchy:lucid_pearl", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/moggles.json b/common/src/main/resources/data/antarchy/recipe/moggles.json new file mode 100644 index 00000000..4f7bd24a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/moggles.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "BMB" + ], + "key": { + "B": { + "item": "antarchy:titanium_nugget" + }, + "M": { + "item": "antarchy:molevore_nose" + } + }, + "result": { + "id": "antarchy:moggles", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/mud_pie.json b/common/src/main/resources/data/antarchy/recipe/mud_pie.json new file mode 100644 index 00000000..94e1b982 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/mud_pie.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "food", + "ingredients": [ + { + "item": "minecraft:mud" + }, + { + "item": "antarchy:moleworm" + } + ], + "result": { + "count": 1, + "id": "antarchy:mud_pie" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_boots.json b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_boots.json new file mode 100644 index 00000000..ae8a00ef --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_boots.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "S S", + "S S" + ], + "key": { + "S": { + "item": "antarchy:nightmare_scale" + } + }, + "result": { + "id": "antarchy:nightmare_boots", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_chestplate.json b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_chestplate.json new file mode 100644 index 00000000..51e8043f --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_chestplate.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "S S", + "SSS", + "SSS" + ], + "key": { + "S": { + "item": "antarchy:nightmare_scale" + } + }, + "result": { + "id": "antarchy:nightmare_chestplate", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_helmet.json b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_helmet.json new file mode 100644 index 00000000..ba635177 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_helmet.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "S S" + ], + "key": { + "S": { + "item": "antarchy:nightmare_scale" + } + }, + "result": { + "id": "antarchy:nightmare_helmet", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_leggings.json b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_leggings.json new file mode 100644 index 00000000..880e5211 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_leggings.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "S S", + "S S" + ], + "key": { + "S": { + "item": "antarchy:nightmare_scale" + } + }, + "result": { + "id": "antarchy:nightmare_leggings", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_sword.json b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_sword.json new file mode 100644 index 00000000..b20efd2b --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nightmare/nightmare_sword.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + " S ", + " S ", + " N " + ], + "key": { + "N": { + "item": "minecraft:netherite_ingot" + }, + "S": { + "item": "antarchy:nightmare_scale" + } + }, + "result": { + "id": "antarchy:nightmare_sword", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite.json b/common/src/main/resources/data/antarchy/recipe/nyxite.json new file mode 100644 index 00000000..3a75935c --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "SS", + "SS" + ], + "key": { + "S": { + "item": "antarchy:nyxite_spike" + } + }, + "result": { + "id": "antarchy:nyxite", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_brick_slab.json b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_slab.json new file mode 100644 index 00000000..cb6532ed --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:nyxite_bricks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:nyxite_brick_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_brick_slab_from_nyxite_bricks_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_slab_from_nyxite_bricks_stonecutting.json new file mode 100644 index 00000000..42a7e0f1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_slab_from_nyxite_bricks_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:nyxite_bricks" + }, + "result": { + "count": 2, + "id": "antarchy:nyxite_brick_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_brick_stairs.json b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_stairs.json new file mode 100644 index 00000000..cc847260 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:nyxite_bricks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:nyxite_brick_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_brick_stairs_from_nyxite_bricks_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_stairs_from_nyxite_bricks_stonecutting.json new file mode 100644 index 00000000..5e13f3cb --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_stairs_from_nyxite_bricks_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:nyxite_bricks" + }, + "result": { + "id": "antarchy:nyxite_brick_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_brick_wall.json b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_wall.json new file mode 100644 index 00000000..75a0619e --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_wall.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:nyxite_bricks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "antarchy:nyxite_brick_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_brick_wall_from_nyxite_bricks_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_wall_from_nyxite_bricks_stonecutting.json new file mode 100644 index 00000000..2f407f96 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_brick_wall_from_nyxite_bricks_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:nyxite_bricks" + }, + "result": { + "id": "antarchy:nyxite_brick_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_bricks.json b/common/src/main/resources/data/antarchy/recipe/nyxite_bricks.json new file mode 100644 index 00000000..5e8bf30f --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_bricks.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:polished_nyxite" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 4, + "id": "antarchy:nyxite_bricks" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_bricks_from_polished_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/nyxite_bricks_from_polished_nyxite_stonecutting.json new file mode 100644 index 00000000..93e278e5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_bricks_from_polished_nyxite_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:polished_nyxite" + }, + "result": { + "id": "antarchy:nyxite_bricks" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_slab.json b/common/src/main/resources/data/antarchy/recipe/nyxite_slab.json new file mode 100644 index 00000000..d7b2d143 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:nyxite" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:nyxite_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_slab_from_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/nyxite_slab_from_nyxite_stonecutting.json new file mode 100644 index 00000000..c84f39a8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_slab_from_nyxite_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:nyxite" + }, + "result": { + "count": 2, + "id": "antarchy:nyxite_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_spikes.json b/common/src/main/resources/data/antarchy/recipe/nyxite_spikes.json new file mode 100644 index 00000000..f246fc92 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_spikes.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "N" + ], + "key": { + "N": { + "item": "antarchy:nyxite" + } + }, + "result": { + "id": "antarchy:nyxite_spike", + "count": 4 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_stairs.json b/common/src/main/resources/data/antarchy/recipe/nyxite_stairs.json new file mode 100644 index 00000000..033667ea --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:nyxite" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:nyxite_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_stairs_from_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/nyxite_stairs_from_nyxite_stonecutting.json new file mode 100644 index 00000000..ea21f5ef --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_stairs_from_nyxite_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:nyxite" + }, + "result": { + "id": "antarchy:nyxite_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_wall.json b/common/src/main/resources/data/antarchy/recipe/nyxite_wall.json new file mode 100644 index 00000000..88ebdb77 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_wall.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:nyxite" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "antarchy:nyxite_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/nyxite_wall_from_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/nyxite_wall_from_nyxite_stonecutting.json new file mode 100644 index 00000000..5b521034 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/nyxite_wall_from_nyxite_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:nyxite" + }, + "result": { + "id": "antarchy:nyxite_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/orange_dye_from_orange_milkweed.json b/common/src/main/resources/data/antarchy/recipe/orange_dye_from_orange_milkweed.json new file mode 100644 index 00000000..309b1ca3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/orange_dye_from_orange_milkweed.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:orange_milkweed" + } + ], + "result": { + "count": 2, + "id": "minecraft:orange_dye" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/orange_dye_from_torchflower_bush.json b/common/src/main/resources/data/antarchy/recipe/orange_dye_from_torchflower_bush.json new file mode 100644 index 00000000..acf40381 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/orange_dye_from_torchflower_bush.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:torchflower_bush" + } + ], + "result": { + "count": 2, + "id": "minecraft:orange_dye" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_log.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_log.json new file mode 100644 index 00000000..5833935c --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_log.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "ingredients": [ + { + "item": "antarchy:ouranwood_log" + }, + { + "item": "minecraft:moss_block" + } + ], + "result": { + "count": 1, + "id": "antarchy:mossy_ouranwood_log" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_wood.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_wood.json new file mode 100644 index 00000000..a4b4ad87 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_wood.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "ingredients": [ + { + "item": "antarchy:ouranwood_wood" + }, + { + "item": "minecraft:moss_block" + } + ], + "result": { + "count": 1, + "id": "antarchy:mossy_ouranwood_wood" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_wood_from_mossy_ouranwood_log.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_wood_from_mossy_ouranwood_log.json new file mode 100644 index 00000000..91b9bfa5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/mossy_ouranwood_wood_from_mossy_ouranwood_log.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "bark", + "key": { + "#": { + "item": "antarchy:mossy_ouranwood_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:mossy_ouranwood_wood" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_boat.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_boat.json new file mode 100644 index 00000000..8cb70b0f --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_boat.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "#": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "# #", + "###" + ], + "result": { + "count": 1, + "id": "antarchy:ouranwood_boat" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_button.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_button.json new file mode 100644 index 00000000..d3f8a1f7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_button.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "redstone", + "group": "wooden_button", + "ingredients": [ + { + "item": "antarchy:ouranwood_planks" + } + ], + "result": { + "count": 1, + "id": "antarchy:ouranwood_button" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_chest_boat.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_chest_boat.json new file mode 100644 index 00000000..b25f30dc --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_chest_boat.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "equipment", + "ingredients": [ + { + "item": "antarchy:ouranwood_boat" + }, + { + "item": "minecraft:chest" + } + ], + "result": { + "count": 1, + "id": "antarchy:ouranwood_chest_boat" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_door.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_door.json new file mode 100644 index 00000000..43dcf499 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_door.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_door", + "key": { + "#": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:ouranwood_door" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_fence.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_fence.json new file mode 100644 index 00000000..f299a517 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_fence.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "wooden_fence", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "W#W", + "W#W" + ], + "result": { + "count": 3, + "id": "antarchy:ouranwood_fence" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_fence_gate.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_fence_gate.json new file mode 100644 index 00000000..073a844e --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_fence_gate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_fence_gate", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "#W#", + "#W#" + ], + "result": { + "count": 1, + "id": "antarchy:ouranwood_fence_gate" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_hanging_sign.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_hanging_sign.json new file mode 100644 index 00000000..657609c0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_hanging_sign.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "hanging_sign", + "key": { + "#": { + "item": "antarchy:stripped_ouranwood_log" + }, + "X": { + "item": "minecraft:chain" + } + }, + "pattern": [ + "X X", + "###", + "###" + ], + "result": { + "count": 6, + "id": "antarchy:ouranwood_hanging_sign" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_planks.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_planks.json new file mode 100644 index 00000000..22a47950 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_planks.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "group": "planks", + "ingredients": [ + { + "tag": "antarchy:ouranwood_logs" + } + ], + "result": { + "count": 4, + "id": "antarchy:ouranwood_planks" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_pressure_plate.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_pressure_plate.json new file mode 100644 index 00000000..ed263c9a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_pressure_plate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_pressure_plate", + "key": { + "#": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "##" + ], + "result": { + "count": 1, + "id": "antarchy:ouranwood_pressure_plate" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_sign.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_sign.json new file mode 100644 index 00000000..682c866e --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_sign.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "group": "wooden_sign", + "key": { + "#": { + "item": "antarchy:ouranwood_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "pattern": [ + "###", + "###", + " X " + ], + "result": { + "count": 3, + "id": "antarchy:ouranwood_sign" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_slab.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_slab.json new file mode 100644 index 00000000..3a531f30 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "wooden_slab", + "key": { + "#": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:ouranwood_slab" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_stairs.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_stairs.json new file mode 100644 index 00000000..9d2c0ab1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "wooden_stairs", + "key": { + "#": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:ouranwood_stairs" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_trapdoor.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_trapdoor.json new file mode 100644 index 00000000..bd3e0127 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_trapdoor.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "group": "wooden_trapdoor", + "key": { + "#": { + "item": "antarchy:ouranwood_planks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 2, + "id": "antarchy:ouranwood_trapdoor" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_wood.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_wood.json new file mode 100644 index 00000000..5fb3f4b7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/ouranwood_wood.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "bark", + "key": { + "#": { + "item": "antarchy:ouranwood_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:ouranwood_wood" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/ouranwood/stripped_ouranwood_wood.json b/common/src/main/resources/data/antarchy/recipe/ouranwood/stripped_ouranwood_wood.json new file mode 100644 index 00000000..20833116 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ouranwood/stripped_ouranwood_wood.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "group": "bark", + "key": { + "#": { + "item": "antarchy:stripped_ouranwood_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:stripped_ouranwood_wood" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/recipe/pale_nyxite.json b/common/src/main/resources/data/antarchy/recipe/pale_nyxite.json new file mode 100644 index 00000000..10db777a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/pale_nyxite.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "pattern": [ + "NQ", + "QN" + ], + "key": { + "N": { + "item": "antarchy:nyxite" + }, + "Q": { + "item": "minecraft:quartz" + } + }, + "result": { + "id": "antarchy:pale_nyxite", + "count": 2 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/pink_dye_from_pink_milkweed.json b/common/src/main/resources/data/antarchy/recipe/pink_dye_from_pink_milkweed.json new file mode 100644 index 00000000..067771c4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/pink_dye_from_pink_milkweed.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:pink_milkweed" + } + ], + "result": { + "count": 2, + "id": "minecraft:pink_dye" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_antimetal.json b/common/src/main/resources/data/antarchy/recipe/polished_antimetal.json new file mode 100644 index 00000000..cacdf649 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_antimetal.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "antarchy:antimetal" + } + }, + "result": { + "id": "antarchy:polished_antimetal", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite.json new file mode 100644 index 00000000..6d05e925 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:nyxite" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 4, + "id": "antarchy:polished_nyxite" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite_from_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_from_nyxite_stonecutting.json new file mode 100644 index 00000000..c119aa4d --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_from_nyxite_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:nyxite" + }, + "result": { + "id": "antarchy:polished_nyxite" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite_slab.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_slab.json new file mode 100644 index 00000000..819b981d --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:polished_nyxite" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:polished_nyxite_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite_slab_from_polished_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_slab_from_polished_nyxite_stonecutting.json new file mode 100644 index 00000000..edf583e1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_slab_from_polished_nyxite_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:polished_nyxite" + }, + "result": { + "count": 2, + "id": "antarchy:polished_nyxite_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite_stairs.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_stairs.json new file mode 100644 index 00000000..d73f6cc8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:polished_nyxite" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:polished_nyxite_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite_stairs_from_polished_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_stairs_from_polished_nyxite_stonecutting.json new file mode 100644 index 00000000..d07069fd --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_stairs_from_polished_nyxite_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:polished_nyxite" + }, + "result": { + "id": "antarchy:polished_nyxite_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite_wall.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_wall.json new file mode 100644 index 00000000..3bf99321 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_wall.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:polished_nyxite" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "antarchy:polished_nyxite_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/polished_nyxite_wall_from_polished_nyxite_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_wall_from_polished_nyxite_stonecutting.json new file mode 100644 index 00000000..d162d37a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/polished_nyxite_wall_from_polished_nyxite_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:polished_nyxite" + }, + "result": { + "id": "antarchy:polished_nyxite_wall" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/rainbow_sugar.json b/common/src/main/resources/data/antarchy/recipe/rainbow_sugar.json new file mode 100644 index 00000000..67dbe373 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/rainbow_sugar.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { "item": "minecraft:sugar" }, + { "item": "antarchy:uranium_nugget" } + ], + "result": { + "id": "antarchy:rainbow_sugar", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/scorpion_whip.json b/common/src/main/resources/data/antarchy/recipe/scorpion_whip.json new file mode 100644 index 00000000..b88292ef --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/scorpion_whip.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " S", + " L ", + "L " + ], + "key": { + "L": { + "item": "minecraft:lead" + }, + "S": { + "item": "antarchy:emperor_scorpion_stinger" + } + }, + "result": { + "id": "antarchy:scorpion_whip", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/shrink_ray.json b/common/src/main/resources/data/antarchy/recipe/shrink_ray.json new file mode 100644 index 00000000..66e3d4c6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/shrink_ray.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "UUU", + "UCU", + " N" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "N": { + "tag": "c:ingots/netherite" + }, + "C": { + "item": "minecraft:comparator" + } + }, + "result": { + "id": "antarchy:shrink_ray", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone.json b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone.json new file mode 100644 index 00000000..781c3982 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:smelting", + "category": "blocks", + "experience": 0.1, + "ingredient": { + "item": "antarchy:dream_sandstone" + }, + "result": { + "id": "antarchy:smooth_dream_sandstone" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_slab.json b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_slab.json new file mode 100644 index 00000000..ba25e8eb --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:smooth_dream_sandstone" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:smooth_dream_sandstone_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_slab_from_smooth_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_slab_from_smooth_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..5ed26e56 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_slab_from_smooth_dream_sandstone_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:smooth_dream_sandstone" + }, + "result": { + "count": 2, + "id": "antarchy:smooth_dream_sandstone_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_stairs.json b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_stairs.json new file mode 100644 index 00000000..1fc1ca0f --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:smooth_dream_sandstone" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:smooth_dream_sandstone_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_stairs_from_smooth_dream_sandstone_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_stairs_from_smooth_dream_sandstone_stonecutting.json new file mode 100644 index 00000000..92545111 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/smooth_dream_sandstone_stairs_from_smooth_dream_sandstone_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:smooth_dream_sandstone" + }, + "result": { + "id": "antarchy:smooth_dream_sandstone_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/squidzooka.json b/common/src/main/resources/data/antarchy/recipe/squidzooka.json new file mode 100644 index 00000000..f461dbaf --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/squidzooka.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "TTT", + "III", + "TTT" + ], + "key": { + "T": { + "item": "antarchy:titanium_ingot" + }, + "I": { + "item": "minecraft:ink_sac" + } + }, + "result": { + "id": "antarchy:squidzooka", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium.json b/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium.json new file mode 100644 index 00000000..7826f5dd --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:cut_titanium_slab" + } + }, + "pattern": [ + "#", + "#" + ], + "result": { + "id": "antarchy:chiseled_titanium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium_from_cut_titanium_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium_from_cut_titanium_stonecutting.json new file mode 100644 index 00000000..de7293b9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium_from_cut_titanium_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:cut_titanium" + }, + "result": { + "id": "antarchy:chiseled_titanium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium_from_titanium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium_from_titanium_block_stonecutting.json new file mode 100644 index 00000000..6e587373 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/chiseled_titanium_from_titanium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:titanium_block" + }, + "result": { + "count": 4, + "id": "antarchy:chiseled_titanium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium.json new file mode 100644 index 00000000..27b31a8a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:titanium_block" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 4, + "id": "antarchy:cut_titanium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_from_titanium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_from_titanium_block_stonecutting.json new file mode 100644 index 00000000..d9dab374 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_from_titanium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:titanium_block" + }, + "result": { + "count": 4, + "id": "antarchy:cut_titanium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab.json new file mode 100644 index 00000000..db60b7ad --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:cut_titanium" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:cut_titanium_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab_from_cut_titanium_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab_from_cut_titanium_stonecutting.json new file mode 100644 index 00000000..25db603a --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab_from_cut_titanium_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:cut_titanium" + }, + "result": { + "count": 2, + "id": "antarchy:cut_titanium_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab_from_titanium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab_from_titanium_block_stonecutting.json new file mode 100644 index 00000000..fc5663ba --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_slab_from_titanium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:titanium_block" + }, + "result": { + "count": 8, + "id": "antarchy:cut_titanium_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs.json new file mode 100644 index 00000000..29a88cbd --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:cut_titanium" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:cut_titanium_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs_from_cut_titanium_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs_from_cut_titanium_stonecutting.json new file mode 100644 index 00000000..98dc0d43 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs_from_cut_titanium_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:cut_titanium" + }, + "result": { + "id": "antarchy:cut_titanium_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs_from_titanium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs_from_titanium_block_stonecutting.json new file mode 100644 index 00000000..cec54ed4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/cut_titanium_stairs_from_titanium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:titanium_block" + }, + "result": { + "count": 4, + "id": "antarchy:cut_titanium_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_block.json b/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_block.json new file mode 100644 index 00000000..bb28dd32 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_block.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "pattern": [ + "III", + "III", + "III" + ], + "key": { + "I": { + "item": "antarchy:raw_titanium" + } + }, + "result": { + "id": "antarchy:raw_titanium_block", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_from_block.json b/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_from_block.json new file mode 100644 index 00000000..1d2de3ba --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_from_block.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:raw_titanium_block" + } + ], + "result": { + "id": "antarchy:raw_titanium", + "count": 9 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_from_scrap.json b/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_from_scrap.json new file mode 100644 index 00000000..53af6e83 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/raw_titanium_from_scrap.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "SSS", + "SSS", + "SSS" + ], + "key": { + "S": { + "item": "antarchy:raw_titanium_scrap" + } + }, + "result": { + "id": "antarchy:raw_titanium", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_bars.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_bars.json new file mode 100644 index 00000000..45c5d112 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_bars.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "item": "antarchy:titanium_ingot" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 16, + "id": "antarchy:titanium_bars" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_block.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_block.json new file mode 100644 index 00000000..e1b796e1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_block.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "pattern": [ + "III", + "III", + "III" + ], + "key": { + "I": { + "item": "antarchy:titanium_ingot" + } + }, + "result": { + "id": "antarchy:titanium_block", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_bulb.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_bulb.json new file mode 100644 index 00000000..d69d24e1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_bulb.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "key": { + "B": { + "item": "minecraft:blaze_rod" + }, + "C": { + "item": "antarchy:titanium_block" + }, + "R": { + "item": "minecraft:redstone" + } + }, + "pattern": [ + " C ", + "CBC", + " R " + ], + "result": { + "count": 4, + "id": "antarchy:titanium_bulb" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_door.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_door.json new file mode 100644 index 00000000..07269636 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_door.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "key": { + "#": { + "item": "antarchy:titanium_ingot" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:titanium_door" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_nuggets.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_nuggets.json new file mode 100644 index 00000000..fdc229a0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_nuggets.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "NNN", + "NNN", + "NNN" + ], + "key": { + "N": { + "item": "antarchy:titanium_nugget" + } + }, + "result": { + "id": "antarchy:titanium_ingot", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_raw_titanium_blasting.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_raw_titanium_blasting.json new file mode 100644 index 00000000..e4d042a5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_raw_titanium_blasting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_titanium" + }, + "result": { + "id": "antarchy:titanium_ingot" + }, + "experience": 0.1, + "cookingtime": 100 +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_raw_titanium_smelting.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_raw_titanium_smelting.json new file mode 100644 index 00000000..041927b6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingot_from_raw_titanium_smelting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_titanium" + }, + "result": { + "id": "antarchy:titanium_ingot" + }, + "experience": 0.1, + "cookingtime": 200 +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingots_from_block.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingots_from_block.json new file mode 100644 index 00000000..20b49872 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_ingots_from_block.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:titanium_block" + } + ], + "result": { + "id": "antarchy:titanium_ingot", + "count": 9 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nugget_from_raw_titanium_scrap_blasting.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nugget_from_raw_titanium_scrap_blasting.json new file mode 100644 index 00000000..9309f320 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nugget_from_raw_titanium_scrap_blasting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_titanium_scrap" + }, + "result": { + "id": "antarchy:titanium_nugget" + }, + "experience": 0.1, + "cookingtime": 100 +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nugget_from_raw_titanium_scrap_smelting.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nugget_from_raw_titanium_scrap_smelting.json new file mode 100644 index 00000000..d06c3023 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nugget_from_raw_titanium_scrap_smelting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_titanium_scrap" + }, + "result": { + "id": "antarchy:titanium_nugget" + }, + "experience": 0.1, + "cookingtime": 200 +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nuggets_from_ingot.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nuggets_from_ingot.json new file mode 100644 index 00000000..b739a5b2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_nuggets_from_ingot.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:titanium_ingot" + } + ], + "result": { + "id": "antarchy:titanium_nugget", + "count": 9 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/titanium/titanium_trapdoor.json b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_trapdoor.json new file mode 100644 index 00000000..66732d3d --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/titanium/titanium_trapdoor.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "key": { + "#": { + "item": "antarchy:titanium_ingot" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "antarchy:titanium_trapdoor" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/triffid_goo_block.json b/common/src/main/resources/data/antarchy/recipe/triffid_goo_block.json new file mode 100644 index 00000000..77656042 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/triffid_goo_block.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:triffid_goo" + } + }, + "pattern": [ + "###", + "###", + "###" + ], + "result": { + "id": "antarchy:triffid_goo_block" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_axe.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_axe.json new file mode 100644 index 00000000..9a141b6c --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_axe.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "UT ", + "UN ", + " N " + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "N": { + "item": "minecraft:netherite_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_axe", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_boots.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_boots.json new file mode 100644 index 00000000..182b8fc2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_boots.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "U U", + "T T" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_boots", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_bow.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_bow.json new file mode 100644 index 00000000..7a887d40 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_bow.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "UTS", + "U S", + "UTS" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "S": { + "item": "minecraft:string" + } + }, + "result": { + "id": "antarchy:ultimate_bow", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_chestplate.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_chestplate.json new file mode 100644 index 00000000..024c9f0b --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_chestplate.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "U U", + "UTU", + "TTT" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_chestplate", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_crossbow.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_crossbow.json new file mode 100644 index 00000000..947a12ea --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_crossbow.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "TUT", + "UCU", + "TUT" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "C": { + "item": "minecraft:crossbow" + } + }, + "result": { + "id": "antarchy:ultimate_crossbow", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_helmet.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_helmet.json new file mode 100644 index 00000000..0d87b860 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_helmet.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "TUT", + "T T" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_helmet", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_hoe.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_hoe.json new file mode 100644 index 00000000..5ff3eb26 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_hoe.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "UT ", + " N ", + " N " + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "N": { + "item": "minecraft:netherite_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_hoe", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_leggings.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_leggings.json new file mode 100644 index 00000000..fc141585 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_leggings.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "UTU", + "T T", + "U U" + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_leggings", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_pickaxe.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_pickaxe.json new file mode 100644 index 00000000..2be56e04 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_pickaxe.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "UTU", + " N ", + " N " + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "N": { + "item": "minecraft:netherite_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_pickaxe", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_shovel.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_shovel.json new file mode 100644 index 00000000..ebfa5f30 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_shovel.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + " T ", + " U ", + " N " + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "N": { + "item": "minecraft:netherite_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_shovel", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_sword.json b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_sword.json new file mode 100644 index 00000000..90e4ebdb --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/ultimate_sword.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + " U ", + " T ", + " N " + ], + "key": { + "U": { + "item": "antarchy:uranium_ingot" + }, + "T": { + "item": "antarchy:titanium_ingot" + }, + "N": { + "item": "minecraft:netherite_ingot" + } + }, + "result": { + "id": "antarchy:ultimate_sword", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/ultimate/uranium_block.json b/common/src/main/resources/data/antarchy/recipe/ultimate/uranium_block.json new file mode 100644 index 00000000..e9e990ab --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/ultimate/uranium_block.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "pattern": [ + "III", + "III", + "III" + ], + "key": { + "I": { + "item": "antarchy:uranium_ingot" + } + }, + "result": { + "id": "antarchy:uranium_block", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium.json b/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium.json new file mode 100644 index 00000000..1a7c364c --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:cut_uranium_slab" + } + }, + "pattern": [ + "#", + "#" + ], + "result": { + "id": "antarchy:chiseled_uranium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium_from_cut_uranium_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium_from_cut_uranium_stonecutting.json new file mode 100644 index 00000000..0d5f43bb --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium_from_cut_uranium_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:cut_uranium" + }, + "result": { + "id": "antarchy:chiseled_uranium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium_from_uranium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium_from_uranium_block_stonecutting.json new file mode 100644 index 00000000..7550ec01 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/chiseled_uranium_from_uranium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:uranium_block" + }, + "result": { + "count": 4, + "id": "antarchy:chiseled_uranium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium.json new file mode 100644 index 00000000..ea4c3962 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:uranium_block" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 4, + "id": "antarchy:cut_uranium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_from_uranium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_from_uranium_block_stonecutting.json new file mode 100644 index 00000000..1cd6ee71 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_from_uranium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:uranium_block" + }, + "result": { + "count": 4, + "id": "antarchy:cut_uranium" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab.json new file mode 100644 index 00000000..c8ef6043 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:cut_uranium" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "antarchy:cut_uranium_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab_from_cut_uranium_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab_from_cut_uranium_stonecutting.json new file mode 100644 index 00000000..517a39eb --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab_from_cut_uranium_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:cut_uranium" + }, + "result": { + "count": 2, + "id": "antarchy:cut_uranium_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab_from_uranium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab_from_uranium_block_stonecutting.json new file mode 100644 index 00000000..5749c815 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_slab_from_uranium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:uranium_block" + }, + "result": { + "count": 8, + "id": "antarchy:cut_uranium_slab" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs.json new file mode 100644 index 00000000..e0af3de0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": { + "item": "antarchy:cut_uranium" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "antarchy:cut_uranium_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs_from_cut_uranium_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs_from_cut_uranium_stonecutting.json new file mode 100644 index 00000000..750437f1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs_from_cut_uranium_stonecutting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:cut_uranium" + }, + "result": { + "id": "antarchy:cut_uranium_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs_from_uranium_block_stonecutting.json b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs_from_uranium_block_stonecutting.json new file mode 100644 index 00000000..f0e060f2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/cut_uranium_stairs_from_uranium_block_stonecutting.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "antarchy:uranium_block" + }, + "result": { + "count": 4, + "id": "antarchy:cut_uranium_stairs" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_block.json b/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_block.json new file mode 100644 index 00000000..0befce31 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_block.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "pattern": [ + "III", + "III", + "III" + ], + "key": { + "I": { + "item": "antarchy:raw_uranium" + } + }, + "result": { + "id": "antarchy:raw_uranium_block", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_from_block.json b/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_from_block.json new file mode 100644 index 00000000..15f27640 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_from_block.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:raw_uranium_block" + } + ], + "result": { + "id": "antarchy:raw_uranium", + "count": 9 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_from_scrap.json b/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_from_scrap.json new file mode 100644 index 00000000..33fdd110 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/raw_uranium_from_scrap.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "SSS", + "SSS", + "SSS" + ], + "key": { + "S": { + "item": "antarchy:raw_uranium_scrap" + } + }, + "result": { + "id": "antarchy:raw_uranium", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_bars.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_bars.json new file mode 100644 index 00000000..3c7d73b1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_bars.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "item": "antarchy:uranium_ingot" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 16, + "id": "antarchy:uranium_bars" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_bulb.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_bulb.json new file mode 100644 index 00000000..f4c99895 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_bulb.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "key": { + "B": { + "item": "minecraft:blaze_rod" + }, + "C": { + "item": "antarchy:uranium_block" + }, + "R": { + "item": "minecraft:redstone" + } + }, + "pattern": [ + " C ", + "CBC", + " R " + ], + "result": { + "count": 4, + "id": "antarchy:uranium_bulb" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_door.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_door.json new file mode 100644 index 00000000..ba6440a8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_door.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "key": { + "#": { + "item": "antarchy:uranium_ingot" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 3, + "id": "antarchy:uranium_door" + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_nuggets.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_nuggets.json new file mode 100644 index 00000000..60f51c0e --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_nuggets.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "NNN", + "NNN", + "NNN" + ], + "key": { + "N": { + "item": "antarchy:uranium_nugget" + } + }, + "result": { + "id": "antarchy:uranium_ingot", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_raw_uranium_blasting.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_raw_uranium_blasting.json new file mode 100644 index 00000000..ce142114 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_raw_uranium_blasting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_uranium" + }, + "result": { + "id": "antarchy:uranium_ingot" + }, + "experience": 0.1, + "cookingtime": 100 +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_raw_uranium_smelting.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_raw_uranium_smelting.json new file mode 100644 index 00000000..c6a2dcd1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingot_from_raw_uranium_smelting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_uranium" + }, + "result": { + "id": "antarchy:uranium_ingot" + }, + "experience": 0.1, + "cookingtime": 200 +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingots_from_block.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingots_from_block.json new file mode 100644 index 00000000..3b89b3c5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_ingots_from_block.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:uranium_block" + } + ], + "result": { + "id": "antarchy:uranium_ingot", + "count": 9 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nugget_from_raw_uranium_scrap_blasting.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nugget_from_raw_uranium_scrap_blasting.json new file mode 100644 index 00000000..4d79476b --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nugget_from_raw_uranium_scrap_blasting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_uranium_scrap" + }, + "result": { + "id": "antarchy:uranium_nugget" + }, + "experience": 0.1, + "cookingtime": 100 +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nugget_from_raw_uranium_scrap_smelting.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nugget_from_raw_uranium_scrap_smelting.json new file mode 100644 index 00000000..2e8b4ce3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nugget_from_raw_uranium_scrap_smelting.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "ingredient": { + "item": "antarchy:raw_uranium_scrap" + }, + "result": { + "id": "antarchy:uranium_nugget" + }, + "experience": 0.1, + "cookingtime": 200 +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nuggets_from_ingot.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nuggets_from_ingot.json new file mode 100644 index 00000000..b79bfb14 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_nuggets_from_ingot.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "antarchy:uranium_ingot" + } + ], + "result": { + "id": "antarchy:uranium_nugget", + "count": 9 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/uranium/uranium_trapdoor.json b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_trapdoor.json new file mode 100644 index 00000000..87f4a5e9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/uranium/uranium_trapdoor.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "redstone", + "key": { + "#": { + "item": "antarchy:uranium_ingot" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "antarchy:uranium_trapdoor" + } +} diff --git a/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle1.nbt b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle1.nbt new file mode 100644 index 00000000..6714afbd Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle1.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle2.nbt b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle2.nbt new file mode 100644 index 00000000..2470c226 Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle2.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle3.nbt b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle3.nbt new file mode 100644 index 00000000..84c4c852 Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle3.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_banner.nbt b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_banner.nbt new file mode 100644 index 00000000..cede8714 Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_banner.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_bridge.nbt b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_bridge.nbt new file mode 100644 index 00000000..12e7dbed Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_bridge.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_flag.nbt b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_flag.nbt new file mode 100644 index 00000000..3f4c4fcc Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure.fallen_kingom_castle/fallen_kingdom_castle_flag.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle1.nbt b/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle1.nbt new file mode 100644 index 00000000..1670c567 Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle1.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle2.nbt b/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle2.nbt new file mode 100644 index 00000000..868098a9 Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle2.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle3.nbt b/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle3.nbt new file mode 100644 index 00000000..b40629ac Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure/fallen_kingdom_castle/fallen_kingdom_castle3.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure/trayaurus_lab/trayaurus_lab.nbt b/common/src/main/resources/data/antarchy/structure/trayaurus_lab/trayaurus_lab.nbt new file mode 100644 index 00000000..46d6f375 Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure/trayaurus_lab/trayaurus_lab.nbt differ diff --git a/common/src/main/resources/data/antarchy/structure/trayaurus_lab/trayaurus_lab_bottom.nbt b/common/src/main/resources/data/antarchy/structure/trayaurus_lab/trayaurus_lab_bottom.nbt new file mode 100644 index 00000000..972d9cde Binary files /dev/null and b/common/src/main/resources/data/antarchy/structure/trayaurus_lab/trayaurus_lab_bottom.nbt differ diff --git a/common/src/main/resources/data/antarchy/tags/block/caterpillar_foods.json b/common/src/main/resources/data/antarchy/tags/block/caterpillar_foods.json new file mode 100644 index 00000000..02f823bf --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/caterpillar_foods.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:orange_milkweed", + "antarchy:pink_milkweed" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/cornea_stalk_nyxite.json b/common/src/main/resources/data/antarchy/tags/block/cornea_stalk_nyxite.json new file mode 100644 index 00000000..deca3ec2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/cornea_stalk_nyxite.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite", + "antarchy:pale_nyxite" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/cornea_stalk_plantable.json b/common/src/main/resources/data/antarchy/tags/block/cornea_stalk_plantable.json new file mode 100644 index 00000000..f38f0dec --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/cornea_stalk_plantable.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite", + "antarchy:pale_nyxite", + "antarchy:umbral_moss_block", + "antarchy:dream_sand" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/dream_fire_base_blocks.json b/common/src/main/resources/data/antarchy/tags/block/dream_fire_base_blocks.json new file mode 100644 index 00000000..9fa5cb1f --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/dream_fire_base_blocks.json @@ -0,0 +1,10 @@ +{ + "values": [ + "antarchy:nyxite", + "antarchy:dream_sand", + "antarchy:dream_sandstone", + "antarchy:chiseled_dream_sandstone", + "antarchy:cut_dream_sandstone", + "antarchy:smooth_dream_sandstone" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/duplicator_tree_blacklist.json b/common/src/main/resources/data/antarchy/tags/block/duplicator_tree_blacklist.json new file mode 100644 index 00000000..af2fbd55 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/duplicator_tree_blacklist.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "minecraft:bedrock", + "minecraft:barrier", + "minecraft:light", + "minecraft:spawner", + "minecraft:end_portal_frame", + "minecraft:end_portal", + "minecraft:nether_portal", + "minecraft:command_block", + "minecraft:chain_command_block", + "minecraft:repeating_command_block", + "minecraft:structure_block", + "minecraft:structure_void", + "minecraft:jigsaw", + "minecraft:moving_piston", + "minecraft:piston_head" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/gravity_gun_blacklist.json b/common/src/main/resources/data/antarchy/tags/block/gravity_gun_blacklist.json new file mode 100644 index 00000000..af2fbd55 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/gravity_gun_blacklist.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "minecraft:bedrock", + "minecraft:barrier", + "minecraft:light", + "minecraft:spawner", + "minecraft:end_portal_frame", + "minecraft:end_portal", + "minecraft:nether_portal", + "minecraft:command_block", + "minecraft:chain_command_block", + "minecraft:repeating_command_block", + "minecraft:structure_block", + "minecraft:structure_void", + "minecraft:jigsaw", + "minecraft:moving_piston", + "minecraft:piston_head" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/molevore_breakable_blocks.json b/common/src/main/resources/data/antarchy/tags/block/molevore_breakable_blocks.json new file mode 100644 index 00000000..74865fb9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/molevore_breakable_blocks.json @@ -0,0 +1,18 @@ +{ + "replace": false, + "values": [ + "minecraft:coarse_dirt", + "minecraft:dirt", + "minecraft:dirt_path", + "minecraft:farmland", + "minecraft:grass_block", + "minecraft:rooted_dirt", + "minecraft:mud", + "minecraft:mycelium", + "minecraft:podzol", + "minecraft:grass_block", + "minecraft:moss_block", + "antarchy:infested_coarse_dirt", + "antarchy:infested_rooted_dirt" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/molevore_see_through_blocks.json b/common/src/main/resources/data/antarchy/tags/block/molevore_see_through_blocks.json new file mode 100644 index 00000000..74865fb9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/molevore_see_through_blocks.json @@ -0,0 +1,18 @@ +{ + "replace": false, + "values": [ + "minecraft:coarse_dirt", + "minecraft:dirt", + "minecraft:dirt_path", + "minecraft:farmland", + "minecraft:grass_block", + "minecraft:rooted_dirt", + "minecraft:mud", + "minecraft:mycelium", + "minecraft:podzol", + "minecraft:grass_block", + "minecraft:moss_block", + "antarchy:infested_coarse_dirt", + "antarchy:infested_rooted_dirt" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/molevore_spawn_surfaces.json b/common/src/main/resources/data/antarchy/tags/block/molevore_spawn_surfaces.json new file mode 100644 index 00000000..ea10945e --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/molevore_spawn_surfaces.json @@ -0,0 +1,29 @@ +{ + "replace": false, + "values": [ + "minecraft:coarse_dirt", + "minecraft:dirt", + "minecraft:dirt_path", + "minecraft:farmland", + "minecraft:grass_block", + "minecraft:rooted_dirt", + "minecraft:mud", + "minecraft:packed_mud", + "minecraft:mycelium", + "minecraft:podzol", + "minecraft:moss_block", + "minecraft:clay", + "minecraft:gravel", + "minecraft:stone", + "minecraft:granite", + "minecraft:diorite", + "minecraft:andesite", + "minecraft:tuff", + "minecraft:calcite", + "minecraft:dripstone_block", + "minecraft:deepslate", + "minecraft:cobbled_deepslate", + "antarchy:infested_coarse_dirt", + "antarchy:infested_rooted_dirt" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/nightmare_breakable.json b/common/src/main/resources/data/antarchy/tags/block/nightmare_breakable.json new file mode 100644 index 00000000..0ecd95ec --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/nightmare_breakable.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "#minecraft:leaves", + "#minecraft:dirt", + "#minecraft:base_stone_overworld", + "antarchy:dream_sand", + "antarchy:dream_sandstone", + "antarchy:nyxite", + "antarchy:pale_nyxite", + "antarchy:potent_nyxite" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/nyxite.json b/common/src/main/resources/data/antarchy/tags/block/nyxite.json new file mode 100644 index 00000000..51e4f7ea --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/nyxite.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite", + "antarchy:pale_nyxite", + "antarchy:potent_nyxite" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/ouranwood_logs.json b/common/src/main/resources/data/antarchy/tags/block/ouranwood_logs.json new file mode 100644 index 00000000..01800b33 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/ouranwood_logs.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/potent_nyxite_activation_blocks.json b/common/src/main/resources/data/antarchy/tags/block/potent_nyxite_activation_blocks.json new file mode 100644 index 00000000..5bbff63d --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/potent_nyxite_activation_blocks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:magma_block" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/termite_foods.json b/common/src/main/resources/data/antarchy/tags/block/termite_foods.json new file mode 100644 index 00000000..54c986bb --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/termite_foods.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "#minecraft:planks", + "#minecraft:logs", + "#minecraft:wooden_slabs", + "#minecraft:wooden_stairs", + "#minecraft:wooden_doors", + "#minecraft:wooden_trapdoors", + "#minecraft:wooden_fences", + "#minecraft:wooden_pressure_plates", + "#minecraft:wooden_buttons" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/umbral_moss_replaceable.json b/common/src/main/resources/data/antarchy/tags/block/umbral_moss_replaceable.json new file mode 100644 index 00000000..943b3b39 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/umbral_moss_replaceable.json @@ -0,0 +1,7 @@ +{ + "values": [ + "antarchy:nyxite", + "minecraft:blackstone", + "antarchy:umbral_moss_block" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/blocks/moggle_vision_blacklist.json b/common/src/main/resources/data/antarchy/tags/blocks/moggle_vision_blacklist.json new file mode 100644 index 00000000..8ca1ff0a --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/blocks/moggle_vision_blacklist.json @@ -0,0 +1,15 @@ +{ + "values": [ + "minecraft:bedrock", + "minecraft:obsidian", + "minecraft:crying_obsidian", + "minecraft:reinforced_deepslate", + "minecraft:barrier", + "minecraft:end_portal_frame", + "minecraft:end_portal", + "minecraft:nether_portal", + "minecraft:spawner", + "minecraft:trial_spawner", + "minecraft:vault" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/damage_type/bypasses_bloodglass.json b/common/src/main/resources/data/antarchy/tags/damage_type/bypasses_bloodglass.json new file mode 100644 index 00000000..1dd0b488 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/damage_type/bypasses_bloodglass.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:out_of_world", + "minecraft:starve", + "minecraft:drown", + "minecraft:magic", + "minecraft:indirect_magic", + "minecraft:wither", + "minecraft:generic_kill", + "minecraft:in_wall" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/basilisk_prey.json b/common/src/main/resources/data/antarchy/tags/entity_type/basilisk_prey.json new file mode 100644 index 00000000..cca32e6b --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/basilisk_prey.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "minecraft:rabbit", + "minecraft:pig", + "minecraft:chicken", + "minecraft:sheep", + "minecraft:cow", + "minecraft:mooshroom", + "antarchy:flying_squirrel", + "antarchy:moleworm", + "antarchy:red_ant", + "antarchy:brown_ant", + "antarchy:rainbow_ant", + "antarchy:apple_cow", + "antarchy:golden_apple_cow", + "antarchy:enchanted_golden_apple_cow", + "antarchy:caterpillar" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/dread_hallucination_mobs.json b/common/src/main/resources/data/antarchy/tags/entity_type/dread_hallucination_mobs.json new file mode 100644 index 00000000..b78de163 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/dread_hallucination_mobs.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "antarchy:nightmare", + "antarchy:kraken", + "antarchy:emperor_scorpion", + "antarchy:basilisk", + "antarchy:molevore", + "minecraft:wither", + "minecraft:creeper", + "minecraft:skeleton", + "minecraft:spider" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/dream_sand_low_gravity_blacklist.json b/common/src/main/resources/data/antarchy/tags/entity_type/dream_sand_low_gravity_blacklist.json new file mode 100644 index 00000000..66a9f668 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/dream_sand_low_gravity_blacklist.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:bed_bug", + "antarchy:emperor_scorpion", + "antarchy:nightmare", + "antarchy:scorpion" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/duct_tape_stick_blacklist.json b/common/src/main/resources/data/antarchy/tags/entity_type/duct_tape_stick_blacklist.json new file mode 100644 index 00000000..f716692b --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/duct_tape_stick_blacklist.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "minecraft:ender_dragon", + "minecraft:wither", + "antarchy:nightmare", + "antarchy:kraken", + "antarchy:brutalfly" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/gravity_gun_blacklist.json b/common/src/main/resources/data/antarchy/tags/entity_type/gravity_gun_blacklist.json new file mode 100644 index 00000000..5ec6d6a2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/gravity_gun_blacklist.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "minecraft:wither", + "minecraft:ender_dragon", + "antarchy:kraken" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/hushweed_targets.json b/common/src/main/resources/data/antarchy/tags/entity_type/hushweed_targets.json new file mode 100644 index 00000000..ea9c3156 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/hushweed_targets.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:player" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/inverted_immune.json b/common/src/main/resources/data/antarchy/tags/entity_type/inverted_immune.json new file mode 100644 index 00000000..9e9abf63 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/inverted_immune.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "minecraft:ender_dragon", + "antarchy:kraken", + "antarchy:nightmare", + "antarchy:reverie", + "antarchy:lucid", + "antarchy:triffid" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/lucid_bolt_immune.json b/common/src/main/resources/data/antarchy/tags/entity_type/lucid_bolt_immune.json new file mode 100644 index 00000000..687bfa85 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/lucid_bolt_immune.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:reverie" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/nightmare_no_attack.json b/common/src/main/resources/data/antarchy/tags/entity_type/nightmare_no_attack.json new file mode 100644 index 00000000..0ec21525 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/nightmare_no_attack.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:lucid", + "antarchy:reverie" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/paralysis_immune.json b/common/src/main/resources/data/antarchy/tags/entity_type/paralysis_immune.json new file mode 100644 index 00000000..883ca88e --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/paralysis_immune.json @@ -0,0 +1,5 @@ +{ + "values": [ + "antarchy:basilisk" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/scorpion_whip_blacklist.json b/common/src/main/resources/data/antarchy/tags/entity_type/scorpion_whip_blacklist.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/scorpion_whip_blacklist.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/scorpion_whip_immune.json b/common/src/main/resources/data/antarchy/tags/entity_type/scorpion_whip_immune.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/scorpion_whip_immune.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/size_changing_immune.json b/common/src/main/resources/data/antarchy/tags/entity_type/size_changing_immune.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/size_changing_immune.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/triffid_prey.json b/common/src/main/resources/data/antarchy/tags/entity_type/triffid_prey.json new file mode 100644 index 00000000..c6fb3f7c --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/triffid_prey.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "antarchy:flying_squirrel", + "antarchy:caterpillar", + "antarchy:butterfly", + "minecraft:chicken", + "minecraft:rabbit", + "minecraft:frog", + "minecraft:parrot" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/brown_ant_activation_items.json b/common/src/main/resources/data/antarchy/tags/item/brown_ant_activation_items.json new file mode 100644 index 00000000..bc87462f --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/brown_ant_activation_items.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:sugar" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/brown_ant_breeding_foods.json b/common/src/main/resources/data/antarchy/tags/item/brown_ant_breeding_foods.json new file mode 100644 index 00000000..bc87462f --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/brown_ant_breeding_foods.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:sugar" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/butterfly_breeding_foods.json b/common/src/main/resources/data/antarchy/tags/item/butterfly_breeding_foods.json new file mode 100644 index 00000000..02f823bf --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/butterfly_breeding_foods.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:orange_milkweed", + "antarchy:pink_milkweed" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/caterpillar_foods.json b/common/src/main/resources/data/antarchy/tags/item/caterpillar_foods.json new file mode 100644 index 00000000..02f823bf --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/caterpillar_foods.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:orange_milkweed", + "antarchy:pink_milkweed" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/dream_fire_base_blocks.json b/common/src/main/resources/data/antarchy/tags/item/dream_fire_base_blocks.json new file mode 100644 index 00000000..b27038b4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/dream_fire_base_blocks.json @@ -0,0 +1,6 @@ +{ + "values": [ + "antarchy:dream_sand", + "antarchy:dream_sandstone" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/duct_tape_blacklist.json b/common/src/main/resources/data/antarchy/tags/item/duct_tape_blacklist.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/duct_tape_blacklist.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/easter_bunny_spawn_egg_blacklist.json b/common/src/main/resources/data/antarchy/tags/item/easter_bunny_spawn_egg_blacklist.json new file mode 100644 index 00000000..9f62d724 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/easter_bunny_spawn_egg_blacklist.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:ender_dragon_spawn_egg", + "minecraft:wither_spawn_egg" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/flying_squirrel_nuts.json b/common/src/main/resources/data/antarchy/tags/item/flying_squirrel_nuts.json new file mode 100644 index 00000000..2af25ce5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/flying_squirrel_nuts.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_acorn" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/ouranwood_logs.json b/common/src/main/resources/data/antarchy/tags/item/ouranwood_logs.json new file mode 100644 index 00000000..01800b33 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/ouranwood_logs.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/rainbow_ant_activation_items.json b/common/src/main/resources/data/antarchy/tags/item/rainbow_ant_activation_items.json new file mode 100644 index 00000000..4277b9ed --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/rainbow_ant_activation_items.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:rainbow_sugar" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/rainbow_ant_breeding_foods.json b/common/src/main/resources/data/antarchy/tags/item/rainbow_ant_breeding_foods.json new file mode 100644 index 00000000..bc87462f --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/rainbow_ant_breeding_foods.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:sugar" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/red_ant_activation_items.json b/common/src/main/resources/data/antarchy/tags/item/red_ant_activation_items.json new file mode 100644 index 00000000..bc87462f --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/red_ant_activation_items.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:sugar" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/red_ant_breeding_foods.json b/common/src/main/resources/data/antarchy/tags/item/red_ant_breeding_foods.json new file mode 100644 index 00000000..bc87462f --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/red_ant_breeding_foods.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:sugar" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/reverie_duplication_items.json b/common/src/main/resources/data/antarchy/tags/item/reverie_duplication_items.json new file mode 100644 index 00000000..fa1bf6b6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/reverie_duplication_items.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:blood_crystal_shard" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/termite_activation_items.json b/common/src/main/resources/data/antarchy/tags/item/termite_activation_items.json new file mode 100644 index 00000000..90f5f079 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/termite_activation_items.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:stick" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/termite_breeding_foods.json b/common/src/main/resources/data/antarchy/tags/item/termite_breeding_foods.json new file mode 100644 index 00000000..d280b15e --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/termite_breeding_foods.json @@ -0,0 +1,21 @@ +{ + "replace": false, + "values": [ + "#minecraft:logs", + "#minecraft:planks", + "#minecraft:wooden_slabs", + "#minecraft:wooden_stairs", + "#minecraft:wooden_fences", + "#minecraft:fence_gates", + "#minecraft:wooden_doors", + "#minecraft:wooden_trapdoors", + "#minecraft:wooden_pressure_plates", + "#minecraft:wooden_buttons", + "minecraft:stick", + "minecraft:bowl", + "minecraft:ladder", + "minecraft:crafting_table", + "minecraft:chest", + "minecraft:barrel" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/termite_foods.json b/common/src/main/resources/data/antarchy/tags/item/termite_foods.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/item/termite_foods.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/antarchy/tags/sound_event/dread_hallucination_sounds.json b/common/src/main/resources/data/antarchy/tags/sound_event/dread_hallucination_sounds.json new file mode 100644 index 00000000..b578f58d --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/sound_event/dread_hallucination_sounds.json @@ -0,0 +1,26 @@ +{ + "replace": false, + "values": [ + "minecraft:entity.creeper.primed", + "minecraft:entity.spider.ambient", + "minecraft:entity.skeleton.ambient", + "minecraft:entity.zombie.ambient", + "minecraft:entity.zombie.hurt", + "minecraft:entity.skeleton.hurt", + "minecraft:entity.creeper.hurt", + "minecraft:entity.spider.hurt", + "minecraft:ambient.cave", + "antarchy:basilisk_hiss", + "antarchy:basilisk_bite", + "antarchy:bed_bug_ambient", + "antarchy:bed_bug_attack", + "antarchy:scorpion_ambient", + "antarchy:scorpion_attack", + "antarchy:cloud_shark_idle", + "antarchy:cloud_shark_bite", + "antarchy:nightmare_idle", + "antarchy:nightmare_hurt", + "antarchy:nightmare_roar", + "antarchy:nightmare_bite" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/apple_cow_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/apple_cow_spawn_biomes.json new file mode 100644 index 00000000..98db4759 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/apple_cow_spawn_biomes.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "#c:is_plains", + "#c:is_forest", + "#c:is_taiga" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/basilisk_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/basilisk_spawn_biomes.json new file mode 100644 index 00000000..ac9e8982 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/basilisk_spawn_biomes.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_forest", + "antarchy:sparse_ouranwood_forest" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/butterfly_can_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/butterfly_can_spawn_biomes.json new file mode 100644 index 00000000..fc1a8320 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/butterfly_can_spawn_biomes.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "#antarchy:butterfly_spawn_biomes", + "#antarchy:flower_forest_butterfly_spawn_biomes" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/butterfly_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/butterfly_spawn_biomes.json new file mode 100644 index 00000000..2d7b60c1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/butterfly_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#antarchy:is_elythia" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/caterpillar_can_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/caterpillar_can_spawn_biomes.json new file mode 100644 index 00000000..bdba644b --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/caterpillar_can_spawn_biomes.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "#antarchy:caterpillar_spawn_biomes", + "#antarchy:flower_forest_caterpillar_spawn_biomes" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/caterpillar_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/caterpillar_spawn_biomes.json new file mode 100644 index 00000000..2d7b60c1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/caterpillar_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#antarchy:is_elythia" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/cloud_shark_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/cloud_shark_spawn_biomes.json new file mode 100644 index 00000000..ce383501 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/cloud_shark_spawn_biomes.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_forest", + "antarchy:elythia_meadow" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/enchanted_golden_apple_cow_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/enchanted_golden_apple_cow_spawn_biomes.json new file mode 100644 index 00000000..8d8c39a8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/enchanted_golden_apple_cow_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:elythia_meadow" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/flower_forest_butterfly_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/flower_forest_butterfly_spawn_biomes.json new file mode 100644 index 00000000..7650ae2d --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/flower_forest_butterfly_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#antarchy:milkweed_spawn_biomes" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/flower_forest_caterpillar_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/flower_forest_caterpillar_spawn_biomes.json new file mode 100644 index 00000000..7650ae2d --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/flower_forest_caterpillar_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#antarchy:milkweed_spawn_biomes" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/flying_squirrel_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/flying_squirrel_spawn_biomes.json new file mode 100644 index 00000000..893e9545 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/flying_squirrel_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_forest" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/golden_apple_cow_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/golden_apple_cow_spawn_biomes.json new file mode 100644 index 00000000..98db4759 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/golden_apple_cow_spawn_biomes.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "#c:is_plains", + "#c:is_forest", + "#c:is_taiga" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/fallen_kingdom_castle_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/fallen_kingdom_castle_biomes.json new file mode 100644 index 00000000..8d8c39a8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/fallen_kingdom_castle_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:elythia_meadow" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/trayaurus_lab_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/trayaurus_lab_biomes.json new file mode 100644 index 00000000..89bf2423 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/trayaurus_lab_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:elythia_meadow" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/honeyed_apple_cow_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/honeyed_apple_cow_spawn_biomes.json new file mode 100644 index 00000000..8b04fba0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/honeyed_apple_cow_spawn_biomes.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "#c:is_plains", + "#c:is_forest", + "#c:is_taiga", + "antarchy:ouranwood_forest", + "antarchy:elythia_meadow" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/is_elythia.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/is_elythia.json new file mode 100644 index 00000000..b34fcad1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/is_elythia.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "antarchy:butterfly_fields", + "antarchy:elythia_lush_caves", + "antarchy:elythia_meadow", + "antarchy:elythia_river", + "antarchy:torchflower_fields", + "antarchy:moleworm_caves", + "antarchy:ouranwood_forest", + "antarchy:sparse_ouranwood_forest" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_overworld_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_overworld_spawn_biomes.json new file mode 100644 index 00000000..21d751d9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_overworld_spawn_biomes.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#c:is_forest", + "#c:is_jungle", + "#c:is_savanna", + "#c:is_plains" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_spawn_biomes.json new file mode 100644 index 00000000..8076f444 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_spawn_biomes.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:elythia_meadow" + ] +} + diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/milkweed_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/milkweed_spawn_biomes.json new file mode 100644 index 00000000..c2155356 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/milkweed_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:flower_forest" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/missile_squid_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/missile_squid_spawn_biomes.json new file mode 100644 index 00000000..d3150f98 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/missile_squid_spawn_biomes.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "minecraft:deep_ocean", + "minecraft:deep_cold_ocean", + "minecraft:deep_lukewarm_ocean", + "minecraft:deep_frozen_ocean" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/overworld_ant_nest_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/overworld_ant_nest_spawn_biomes.json new file mode 100644 index 00000000..60dbe479 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/overworld_ant_nest_spawn_biomes.json @@ -0,0 +1,248 @@ +{ + "replace": false, + "values": [ + "#minecraft:is_forest", + "#minecraft:is_taiga", + "minecraft:plains", + "minecraft:sunflower_plains", + "minecraft:grove", + { + "id": "#neoforge:is_forest", + "required": false + }, + { + "id": "#c:forest", + "required": false + }, + + { + "id": "biomesoplenty:redwood_forest", + "required": false + }, + { + "id": "byg:redwood_thicket", + "required": false + }, + { + "id": "projectvibrantjourneys:redwoods", + "required": false + }, + { + "id": "terralith:cloud_forest", + "required": false + }, + { + "id": "terralith:forested_highlands", + "required": false + }, + { + "id": "terralith:lavender_forest", + "required": false + }, + { + "id": "terralith:lavender_valley", + "required": false + }, + { + "id": "terralith:moonlight_grove", + "required": false + }, + { + "id": "terralith:moonlight_valley", + "required": false + }, + { + "id": "terralith:rocky_shrubland", + "required": false + }, + { + "id": "terralith:shrubland", + "required": false + }, + { + "id": "terralith:wintry_forest", + "required": false + }, + { + "id": "biomesoplenty:jade_cliffs", + "required": false + }, + { + "id": "biomesoplenty:mediterranean_taiga", + "required": false + }, + { + "id": "biomesoplenty:dead_forest", + "required": false + }, + { + "id": "biomesoplenty:old_growth_dead_forest", + "required": false + }, + { + "id": "byg:autumnal_taiga", + "required": false + }, + { + "id": "byg:canadian_shield", + "required": false + }, + { + "id": "byg:maple_taiga", + "required": false + }, + { + "id": "projectvibrantjourneys:boreal_forest", + "required": false + }, + { + "id": "projectvibrantjourneys:crystal_lakes", + "required": false + }, + { + "id": "regions_unexplored:willow_forest", + "required": false + }, + { + "id": "regions_unexplored:pine_forest", + "required": false + }, + { + "id": "regions_unexplored:boreal_forest", + "required": false + }, + { + "id": "regions_unexplored:golden_boreal_forest", + "required": false + }, + { + "id": "regions_unexplored:boreal_taiga", + "required": false + }, + { + "id": "regions_unexplored:golden_boreal_taiga", + "required": false + }, + { + "id": "regions_unexplored:pine_taiga", + "required": false + }, + { + "id": "regions_unexplored:pine_slopes", + "required": false + }, + { + "id": "wythers:ancient_taiga", + "required": false + }, + { + "id": "wythers:birch_taiga", + "required": false + }, + { + "id": "wythers:boreal_forest_red", + "required": false + }, + { + "id": "wythers:boreal_forest_yellow", + "required": false + }, + { + "id": "wythers:cold_island", + "required": false + }, + { + "id": "wythers:flooded_temperate_rainforest", + "required": false + }, + { + "id": "wythers:forested_highlands", + "required": false + }, + { + "id": "wythers:jade_highlands", + "required": false + }, + { + "id": "wythers:larch_taiga", + "required": false + }, + { + "id": "wythers:old_growth_taiga_crags", + "required": false + }, + { + "id": "wythers:old_growth_taiga_swamp", + "required": false + }, + { + "id": "wythers:pine_barrens", + "required": false + }, + { + "id": "wythers:sparse_eucalyptus_woodland", + "required": false + }, + { + "id": "wythers:sparse_eucalyptus_jungle", + "required": false + }, + { + "id": "wythers:temperate_rainforest", + "required": false + }, + { + "id": "wythers:temperate_rainforest_crags", + "required": false + }, + { + "id": "wythers:thermal_taiga", + "required": false + }, + + { + "id": "terralith:brushland", + "required": false + }, + { + "id": "projectvibrantjourneys:prairie", + "required": false + }, + { + "id": "#c:plains", + "required": false + }, + { + "id": "regions_unexplored:lupine_plains", + "required": false + }, + { + "id": "regions_unexplored:clover_plains", + "required": false + }, + { + "id": "regions_unexplored:prairie", + "required": false + }, + { + "id": "regions_unexplored:grassland", + "required": false + }, + { + "id": "regions_unexplored:barley_fields", + "required": false + }, + { + "id": "regions_unexplored:poppy_fields", + "required": false + }, + { + "id": "regions_unexplored:shrubland", + "required": false + }, + { + "id": "regions_unexplored:lush_hills", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/red_ant_nest_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/red_ant_nest_spawn_biomes.json new file mode 100644 index 00000000..4f82dd88 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/red_ant_nest_spawn_biomes.json @@ -0,0 +1,108 @@ +{ + "replace": false, + "values": [ + "#minecraft:is_nether", + "minecraft:nether_wastes", + "minecraft:basalt_deltas", + { + "id": "#neoforge:is_nether", + "required": false + }, + { + "id": "#c:nether", + "required": false + }, + { + "id": "#c:in_nether", + "required": false + }, + { + "id": "betternether:bone_reef", + "required": false + }, + { + "id": "betternether:crimson_glowing_woods", + "required": false + }, + { + "id": "betternether:crimson_pinewood", + "required": false + }, + { + "id": "betternether:flooded_deltas", + "required": false + }, + { + "id": "betternether:gravel_desert", + "required": false + }, + { + "id": "betternether:magma_land", + "required": false + }, + { + "id": "betternether:nether_grasslands", + "required": false + }, + { + "id": "betternether:nether_jungle", + "required": false + }, + { + "id": "betternether:nether_mushroom_forest", + "required": false + }, + { + "id": "betternether:nether_mushroom_forest_edge", + "required": false + }, + { + "id": "betternether:nether_swampland", + "required": false + }, + { + "id": "betternether:nether_swampland_terraces", + "required": false + }, + { + "id": "betternether:old_fungiwoods", + "required": false + }, + { + "id": "betternether:old_swampland", + "required": false + }, + { + "id": "betternether:old_warped_woods", + "required": false + }, + { + "id": "betternether:poor_nether_grasslands", + "required": false + }, + { + "id": "betternether:soul_plain", + "required": false + }, + { + "id": "betternether:sulfuric_bone_reef", + "required": false + }, + { + "id": "betternether:upside_down_forest", + "required": false + }, + { + "id": "betternether:upside_down_forest_cleared", + "required": false + }, + { + "id": "betternether:wart_forest", + "required": false + }, + { + "id": "betternether:wart_forest_edge", + "required": false + } + ] +} diff --git a/common/src/main/resources/data/antarchy/trayaurus_trades/default.json b/common/src/main/resources/data/antarchy/trayaurus_trades/default.json new file mode 100644 index 00000000..e9b34d41 --- /dev/null +++ b/common/src/main/resources/data/antarchy/trayaurus_trades/default.json @@ -0,0 +1,77 @@ +{ + "trades": [ + { + "buy": { + "item": "antarchy:uranium_ingot", + "count": 4 + }, + "sell": { + "item": "minecraft:spyglass", + "count": 1 + }, + "max_uses": 16, + "villager_xp": 1, + "price_multiplier": 0.05 + }, + { + "buy": { + "item": "antarchy:titanium_ingot", + "count": 6 + }, + "sell": { + "item": "antarchy:duct_tape", + "count": 2 + }, + "max_uses": 12, + "villager_xp": 5, + "price_multiplier": 0.05 + }, + { + "buy": { + "item": "antarchy:uranium_ingot", + "count": 8 + }, + "second_buy": { + "item": "antarchy:kraken_tooth", + "count": 1 + }, + "sell": { + "item": "antarchy:duplicator_sapling", + "count": 1 + }, + "max_uses": 6, + "villager_xp": 10, + "price_multiplier": 0.1 + }, + { + "buy": { + "item": "antarchy:titanium_ingot", + "count": 10 + }, + "sell": { + "item": "antarchy:easter_bunny_spawn_egg", + "count": 1 + }, + "max_uses": 3, + "villager_xp": 5, + "price_multiplier": 0.05 + }, + { + "buy": { + "item": "antarchy:uranium_ingot", + "count": 16 + }, + "second_buy": { + "item": "antarchy:titanium_ingot", + "count": 8 + }, + "sell": { + "item": "minecraft:enchanted_golden_apple", + "count": 1 + }, + "max_uses": 2, + "villager_xp": 20, + "price_multiplier": 0.2 + } + ] +} diff --git a/common/src/main/resources/data/antarchy/trim_material/blood_crystal.json b/common/src/main/resources/data/antarchy/trim_material/blood_crystal.json new file mode 100644 index 00000000..d5c30781 --- /dev/null +++ b/common/src/main/resources/data/antarchy/trim_material/blood_crystal.json @@ -0,0 +1,10 @@ +{ + "asset_name": "blood_crystal", + "ingredient": "antarchy:blood_crystal_shard", + "item_model_index": 0.81, + "description": { + "color": "#AC3E5C", + "translate": "trim_material.antarchy.blood_crystal" + } +} + diff --git a/common/src/main/resources/data/antarchy/trim_material/nightmare_scale.json b/common/src/main/resources/data/antarchy/trim_material/nightmare_scale.json new file mode 100644 index 00000000..a4eb2e6e --- /dev/null +++ b/common/src/main/resources/data/antarchy/trim_material/nightmare_scale.json @@ -0,0 +1,9 @@ +{ + "asset_name": "nightmare_scale", + "ingredient": "antarchy:nightmare_scale", + "item_model_index": 0.82, + "description": { + "color": "#3F3D5D", + "translate": "trim_material.antarchy.nightmare_scale" + } +} diff --git a/common/src/main/resources/data/antarchy/trim_material/titanium.json b/common/src/main/resources/data/antarchy/trim_material/titanium.json new file mode 100644 index 00000000..8dd07511 --- /dev/null +++ b/common/src/main/resources/data/antarchy/trim_material/titanium.json @@ -0,0 +1,9 @@ +{ + "asset_name": "titanium", + "ingredient": "antarchy:titanium_ingot", + "item_model_index": 0.83, + "description": { + "color": "#86BEC5", + "translate": "trim_material.antarchy.titanium" + } +} diff --git a/common/src/main/resources/data/antarchy/trim_material/uranium.json b/common/src/main/resources/data/antarchy/trim_material/uranium.json new file mode 100644 index 00000000..f28f1b16 --- /dev/null +++ b/common/src/main/resources/data/antarchy/trim_material/uranium.json @@ -0,0 +1,9 @@ +{ + "asset_name": "uranium", + "ingredient": "antarchy:uranium_ingot", + "item_model_index": 0.84, + "description": { + "color": "#F1DD4D", + "translate": "trim_material.antarchy.uranium" + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json b/common/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json new file mode 100644 index 00000000..ea553ae8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json @@ -0,0 +1,108 @@ +{ + "has_precipitation": false, + "temperature": 0.83, + "downfall": 1.0, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "mood_sound": { + "sound": "minecraft:ambient.basalt_deltas.mood", + "tick_delay": 8000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": { + "antarchy:brutalfly": { + "energy_budget": 0.3, + "charge": 1.2 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper" + ], + [ + "antarchy:elythia_underground", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [ + "antarchy:elythia_large_tuff_boulders", + "antarchy:elythia_tuff_boulders", + "antarchy:butterfly_fields_flora", + "antarchy:elythia_brown_ant_nests", + "antarchy:ouranwood_cocoon_trees" + ], + [] + ], + "creature_spawn_probability": 0.8, + "spawners": { + "monster": [ + ], + "creature": [ + { + "type": "antarchy:caterpillar", + "weight": 90, + "minCount": 6, + "maxCount": 12 + }, + { + "type": "antarchy:golden_apple_cow", + "weight": 10, + "minCount": 2, + "maxCount": 4 + }, + { + "type": "antarchy:enchanted_golden_apple_cow", + "weight": 4, + "minCount": 2, + "maxCount": 3 + } + ], + "ambient": [ + { + "type": "antarchy:butterfly", + "weight": 180, + "minCount": 4, + "maxCount": 12 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json b/common/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json new file mode 100644 index 00000000..163759c3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json @@ -0,0 +1,149 @@ +{ + "has_precipitation": false, + "temperature": 0.45, + "downfall": 0.0, + "effects": { + "fog_color": 983040, + "water_color": 327680, + "water_fog_color": 0, + "sky_color": 524288, + "grass_color": 4211262, + "foliage_color": 4211262, + "ambient_sound": "minecraft:ambient.cave", + "mood_sound": { + "sound": "minecraft:ambient.cave", + "tick_delay": 6000, + "block_search_extent": 8, + "offset": 2.0 + }, + "particle": { + "probability": 0.002, + "options": { + "type": "minecraft:ash" + } + } + }, + "spawn_costs": {}, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [ + "minecraft:lake_lava_surface" + ], + [], + [ + "minecraft:amethyst_geode" + ], + [ + "minecraft:monster_room", + "minecraft:monster_room_deep" + ], + [], + [], + [ + "minecraft:ore_dirt", + "minecraft:ore_gravel", + "minecraft:ore_granite_upper", + "minecraft:ore_granite_lower", + "minecraft:ore_diorite_upper", + "minecraft:ore_diorite_lower", + "minecraft:ore_andesite_upper", + "minecraft:ore_andesite_lower", + "minecraft:ore_tuff", + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper", + "minecraft:underwater_magma" + ], + [ + "minecraft:large_dripstone", + "minecraft:pointed_dripstone", + "minecraft:glow_lichen" + ], + [ + "minecraft:spring_water", + "minecraft:spring_lava" + ], + [ + "minecraft:brown_mushroom_normal", + "minecraft:red_mushroom_normal" + ], + [] + ], + "creature_spawn_probability": 0.08, + "spawners": { + "monster": [ + { + "type": "minecraft:zombie", + "weight": 95, + "minCount": 2, + "maxCount": 4 + }, + { + "type": "minecraft:skeleton", + "weight": 90, + "minCount": 2, + "maxCount": 4 + }, + { + "type": "minecraft:creeper", + "weight": 80, + "minCount": 1, + "maxCount": 2 + }, + { + "type": "minecraft:spider", + "weight": 70, + "minCount": 1, + "maxCount": 3 + }, + { + "type": "minecraft:cave_spider", + "weight": 45, + "minCount": 1, + "maxCount": 2 + }, + { + "type": "minecraft:enderman", + "weight": 12, + "minCount": 1, + "maxCount": 2 + }, + { + "type": "minecraft:witch", + "weight": 6, + "minCount": 1, + "maxCount": 1 + } + ], + "creature": [], + "ambient": [ + { + "type": "minecraft:bat", + "weight": 10, + "minCount": 4, + "maxCount": 8 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/cloud_sea.json b/common/src/main/resources/data/antarchy/worldgen/biome/cloud_sea.json new file mode 100644 index 00000000..0317147a --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/cloud_sea.json @@ -0,0 +1,59 @@ +{ + "has_precipitation": false, + "temperature": 2.0, + "downfall": 0.0, + "effects": { + "fog_color": 983040, + "water_color": 327680, + "water_fog_color": 0, + "sky_color": 524288, + "particle": { + "probability": 0.02, + "options": { + "type": "minecraft:cloud" + } + } + }, + "spawn_costs": { + "antarchy:cloud_shark": { + "energy_budget": 0.14, + "charge": 1.0 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [ + "antarchy:cloud_sea_calcite_banks" + ], + [], + [], + [], + [], + [] + ], + "creature_spawn_probability": 0.03, + "spawners": { + "monster": [ + { + "type": "antarchy:cloud_shark", + "weight": 40, + "minCount": 2, + "maxCount": 5 + } + ], + "creature": [], + "ambient": [], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json b/common/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json new file mode 100644 index 00000000..9d377ae4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json @@ -0,0 +1,90 @@ +{ + "has_precipitation": false, + "temperature": 2.0, + "downfall": 0.0, + "effects": { + "fog_color": 983040, + "water_color": 327680, + "water_fog_color": 0, + "sky_color": 524288, + "particle": { + "probability": 0.004, + "options": { + "type": "minecraft:ash" + } + }, + "ambient_sound": "antarchy:thoraxis_dream_dunes_ambient", + "additions_sound": { + "sound": "antarchy:thoraxis_dream_dunes_additions", + "tick_chance": 0.002100000 + }, + "mood_sound": { + "sound": "antarchy:thoraxis_dream_dunes_mood", + "tick_delay": 8572, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": { + "antarchy:emperor_scorpion": { + "energy_budget": 0.18, + "charge": 1.4 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [], + [ + "antarchy:patch_fire" + ], + [ + "antarchy:nyxite_spikes", + "antarchy:patch_ceiling_fire" + ], + [ + "antarchy:cornea_stalk_patch", + "antarchy:patch_ceiling_cornea_stalk" + ], + [] + ], + "creature_spawn_probability": 0.03, + "spawners": { + "monster": [ + { + "type": "antarchy:scorpion", + "weight": 20, + "minCount": 2, + "maxCount": 5 + }, + { + "type": "antarchy:emperor_scorpion", + "weight": 3, + "minCount": 1, + "maxCount": 1 + } + ], + "creature": [ + { + "type": "antarchy:bed_bug", + "weight": 15, + "minCount": 2, + "maxCount": 4 + } + ], + "ambient": [], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_lush_caves.json b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_lush_caves.json new file mode 100644 index 00000000..e0c271ee --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_lush_caves.json @@ -0,0 +1,88 @@ +{ + "has_precipitation": false, + "temperature": 0.72, + "downfall": 1.0, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "particle": { + "probability": 0.01428, + "options": { + "type": "minecraft:spore_blossom_air" + } + }, + "ambient_sound": "minecraft:ambient.cave", + "mood_sound": { + "sound": "minecraft:ambient.cave", + "tick_delay": 6000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": {}, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [], + [ + "minecraft:large_dripstone", + "minecraft:pointed_dripstone", + "minecraft:lush_caves_clay" + ], + [], + [ + "minecraft:lush_caves_vegetation", + "minecraft:rooted_azalea_tree", + "minecraft:spore_blossom", + "minecraft:classic_vines_cave_feature", + "minecraft:cave_vines", + "minecraft:lush_caves_ceiling_vegetation" + ], + [] + ], + "creature_spawn_probability": 0.03, + "spawners": { + "monster": [], + "creature": [], + "ambient": [ + { + "type": "minecraft:bat", + "weight": 10, + "minCount": 8, + "maxCount": 8 + } + ], + "axolotls": [ + { + "type": "minecraft:axolotl", + "weight": 10, + "minCount": 4, + "maxCount": 6 + } + ], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [ + { + "type": "minecraft:tropical_fish", + "weight": 25, + "minCount": 8, + "maxCount": 8 + } + ], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json new file mode 100644 index 00000000..728c82f9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json @@ -0,0 +1,131 @@ +{ + "has_precipitation": false, + "temperature": 0.82, + "downfall": 1.0, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "mood_sound": { + "sound": "minecraft:ambient.basalt_deltas.mood", + "tick_delay": 8000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": { + "antarchy:mantis": { + "energy_budget": 0.1, + "charge": 15.0 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper" + ], + [ + "antarchy:elythia_underground", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [ + "antarchy:elythia_large_tuff_boulders", + "antarchy:elythia_tuff_boulders", + "antarchy:elythia_meadow_flora", + "antarchy:elythia_brown_ant_nests" + ], + [] + ], + "creature_spawn_probability": 0.2, + "spawners": { + "creature": [ + { + "type": "antarchy:caterpillar", + "weight": 24, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "antarchy:apple_cow", + "weight": 24, + "minCount": 1, + "maxCount": 3 + }, + { + "type": "antarchy:golden_apple_cow", + "weight": 20, + "minCount": 1, + "maxCount": 3 + }, + { + "type": "antarchy:enchanted_golden_apple_cow", + "weight": 2, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "minecraft:sniffer", + "weight": 18, + "minCount": 1, + "maxCount": 2 + }, + { + "type": "minecraft:rabbit", + "weight": 16, + "minCount": 1, + "maxCount": 3 + } + ], + "ambient": [ + { + "type": "antarchy:butterfly", + "weight": 48, + "minCount": 2, + "maxCount": 4 + } + ], + "monster": [ + { + "type": "antarchy:mantis", + "weight": 20, + "minCount": 1, + "maxCount": 1 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_river.json b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_river.json new file mode 100644 index 00000000..e403f969 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_river.json @@ -0,0 +1,72 @@ +{ + "has_precipitation": false, + "temperature": 0.76, + "downfall": 0.98, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "mood_sound": { + "sound": "minecraft:ambient.crimson_forest.mood", + "tick_delay": 7000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": {}, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper" + ], + [ + "antarchy:elythia_underground", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [ + "antarchy:elythia_meadow_flora" + ], + [] + ], + "creature_spawn_probability": 0.04, + "spawners": { + "monster": [], + "creature": [], + "ambient": [], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json b/common/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json new file mode 100644 index 00000000..c5dab100 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json @@ -0,0 +1,93 @@ +{ + "has_precipitation": false, + "temperature": 2.0, + "downfall": 0.0, + "effects": { + "fog_color": 983040, + "water_color": 327680, + "water_fog_color": 0, + "sky_color": 524288, + "particle": { + "probability": 0.005, + "options": { + "type": "minecraft:crimson_spore" + } + }, + "ambient_sound": "antarchy:thoraxis_lucid_pools_ambient", + "additions_sound": { + "sound": "antarchy:thoraxis_lucid_pools_additions", + "tick_chance": 0.000600000 + }, + "mood_sound": { + "sound": "antarchy:thoraxis_lucid_pools_mood", + "tick_delay": 12000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "spawn_costs": { + "antarchy:lucid": { + "energy_budget": 0.10, + "charge": 7.0 + } + }, + "features": [ + [], + [], + [], + [], + [ + "antarchy:lucid_blood_crystal_spires", + "antarchy:lucid_medium_blood_crystal_spires", + "antarchy:lucid_large_blood_crystal_spires" + ], + [], + [], + [ + "antarchy:lucid_antiwater_pools", + "antarchy:antiwater_springs", + "antarchy:bed_bug_surface_cluster", + "antarchy:red_ant_nest_magma", + "antarchy:nyxite_spikes", + "antarchy:patch_fire_sparse", + "antarchy:patch_ceiling_fire" + ], + [], + [ + "antarchy:cornea_stalk_patch", + "antarchy:patch_ceiling_cornea_stalk", + "antarchy:bed_bug_nest" + ], + [] + ], + "creature_spawn_probability": 0.06, + "spawners": { + "monster": [ + { + "type": "antarchy:lucid", + "weight": 7, + "minCount": 1, + "maxCount": 1 + } + ], + "creature": [ + { + "type": "antarchy:bed_bug", + "weight": 7, + "minCount": 2, + "maxCount": 4 + } + ], + "ambient": [], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} + diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/moleworm_caves.json b/common/src/main/resources/data/antarchy/worldgen/biome/moleworm_caves.json new file mode 100644 index 00000000..7efaca3e --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/moleworm_caves.json @@ -0,0 +1,80 @@ +{ + "has_precipitation": false, + "temperature": 0.77, + "downfall": 0.96, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4566565, + "grass_color_modifier": "none", + "particle": { + "probability": 0.009, + "options": { + "type": "minecraft:ash" + } + } + }, + "spawn_costs": { + "antarchy:molevore": { + "energy_budget": 0.9, + "charge": 2.2 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [], + [ + "antarchy:elythia_moleworm_warrens", + "antarchy:elythia_moleworm_cave_entrances", + "antarchy:elythia_moleworm_tunnels", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [], + [] + ], + "creature_spawn_probability": 0.08, + "spawners": { + "monster": [ + { + "type": "antarchy:molevore", + "weight": 28, + "minCount": 1, + "maxCount": 2 + }, + { + "type": "antarchy:moleworm", + "weight": 20, + "minCount": 2, + "maxCount": 4 + } + ], + "creature": [], + "ambient": [ + { + "type": "minecraft:bat", + "weight": 12, + "minCount": 4, + "maxCount": 8 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/nightmare_wastes.json b/common/src/main/resources/data/antarchy/worldgen/biome/nightmare_wastes.json new file mode 100644 index 00000000..8d6b164d --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/nightmare_wastes.json @@ -0,0 +1,99 @@ +{ + "has_precipitation": false, + "temperature": 2.0, + "downfall": 0.0, + "effects": { + "fog_color": 983040, + "water_color": 327680, + "water_fog_color": 0, + "sky_color": 524288, + "particle": { + "probability": 0.005, + "options": { + "type": "minecraft:crimson_spore" + } + }, + "ambient_sound": "antarchy:thoraxis_nightmare_wastes_ambient", + "additions_sound": { + "sound": "antarchy:thoraxis_nightmare_wastes_additions", + "tick_chance": 0.007777778 + }, + "mood_sound": { + "sound": "antarchy:thoraxis_nightmare_wastes_mood", + "tick_delay": 8572, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "spawn_costs": { + "antarchy:nightmare": { + "energy_budget": 0.1, + "charge": 11.0 + } + }, + "features": [ + [], + [], + [], + [], + [ + "antarchy:thoraxis_floor_rib_columns", + "antarchy:thoraxis_roof_rib_columns", + "antarchy:thoraxis_floor_spikes", + "antarchy:thoraxis_roof_spikes" + ], + [], + [], + [], + [ + "antarchy:antiwater_springs", + "antarchy:bed_bug_surface_cluster", + "antarchy:red_ant_nest_magma", + "antarchy:bed_bug_nest", + "antarchy:nyxite_spikes", + "antarchy:patch_fire_sparse", + "antarchy:patch_ceiling_fire" + ], + [ + "antarchy:cornea_stalk_patch", + "antarchy:patch_ceiling_cornea_stalk" + ], + [] + ], + "creature_spawn_probability": 0.08, + "spawners": { + "monster": [ + { + "type": "antarchy:nightmare", + "weight": 6, + "minCount": 1, + "maxCount": 1 + } + ], + "creature": [ + { + "type": "antarchy:bed_bug", + "weight": 15, + "minCount": 2, + "maxCount": 4 + } + ], + "ambient": [ + { + "type": "antarchy:reverie", + "weight": 10, + "minCount": 1, + "maxCount": 2 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/ouranwood_forest.json b/common/src/main/resources/data/antarchy/worldgen/biome/ouranwood_forest.json new file mode 100644 index 00000000..a099d855 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/ouranwood_forest.json @@ -0,0 +1,108 @@ +{ + "has_precipitation": false, + "temperature": 0.78, + "downfall": 0.95, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "particle": { + "probability": 0.009, + "options": { + "type": "minecraft:spore_blossom_air" + } + }, + "mood_sound": { + "sound": "minecraft:ambient.crimson_forest.mood", + "tick_delay": 6000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": { + "antarchy:basilisk": { + "energy_budget": 0.1, + "charge": 14.0 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper" + ], + [ + "antarchy:elythia_underground", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [ + "antarchy:ouranwood_trees", + "antarchy:elythia_forest_flora", + "antarchy:elythia_brown_ant_nests" + ], + [ + "antarchy:triffid_patch" + ] + ], + "creature_spawn_probability": 0.05, + "spawners": { + "monster": [ + { + "type": "antarchy:basilisk", + "weight": 20, + "minCount": 1, + "maxCount": 1 + } + ], + "creature": [ + { + "type": "antarchy:caterpillar", + "weight": 6, + "minCount": 1, + "maxCount": 2 + }, + { + "type": "antarchy:flying_squirrel", + "weight": 4, + "minCount": 1, + "maxCount": 1 + } + ], + "ambient": [ + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/sparse_ouranwood_forest.json b/common/src/main/resources/data/antarchy/worldgen/biome/sparse_ouranwood_forest.json new file mode 100644 index 00000000..cfa7f932 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/sparse_ouranwood_forest.json @@ -0,0 +1,100 @@ +{ + "has_precipitation": false, + "temperature": 0.78, + "downfall": 0.95, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "particle": { + "probability": 0.009, + "options": { + "type": "minecraft:spore_blossom_air" + } + }, + "mood_sound": { + "sound": "minecraft:ambient.crimson_forest.mood", + "tick_delay": 6000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": {}, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper" + ], + [ + "antarchy:elythia_underground", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [ + "antarchy:ouranwood_trees_sparse", + "antarchy:elythia_forest_flora", + "antarchy:elythia_brown_ant_nests" + ], + [] + ], + "creature_spawn_probability": 0.07, + "spawners": { + "monster": [], + "creature": [ + { + "type": "antarchy:caterpillar", + "weight": 5, + "minCount": 1, + "maxCount": 2 + }, + { + "type": "antarchy:flying_squirrel", + "weight": 2, + "minCount": 1, + "maxCount": 2 + } + ], + "ambient": [ + { + "type": "antarchy:butterfly", + "weight": 7, + "minCount": 1, + "maxCount": 2 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/torchflower_fields.json b/common/src/main/resources/data/antarchy/worldgen/biome/torchflower_fields.json new file mode 100644 index 00000000..5f912469 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/torchflower_fields.json @@ -0,0 +1,93 @@ +{ + "has_precipitation": false, + "temperature": 0.84, + "downfall": 1.0, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 2502722, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "mood_sound": { + "sound": "minecraft:ambient.basalt_deltas.mood", + "tick_delay": 8000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": {}, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper" + ], + [ + "antarchy:elythia_underground", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [ + "antarchy:elythia_torchflower_fields_flora", + "antarchy:elythia_brown_ant_nests" + ], + [] + ], + "creature_spawn_probability": 0.08, + "spawners": { + "monster": [], + "creature": [ + { + "type": "antarchy:golden_apple_cow", + "weight": 14, + "minCount": 2, + "maxCount": 4 + }, + { + "type": "antarchy:enchanted_golden_apple_cow", + "weight": 8, + "minCount": 2, + "maxCount": 3 + } + ], + "ambient": [ + { + "type": "antarchy:butterfly", + "weight": 24, + "minCount": 3, + "maxCount": 6 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/umbral_hills.json b/common/src/main/resources/data/antarchy/worldgen/biome/umbral_hills.json new file mode 100644 index 00000000..d25a88af --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/biome/umbral_hills.json @@ -0,0 +1,97 @@ +{ + "has_precipitation": false, + "temperature": 2.0, + "downfall": 0.0, + "effects": { + "fog_color": 983040, + "water_color": 327680, + "water_fog_color": 0, + "sky_color": 524288, + "particle": { + "probability": 0.006, + "options": { + "type": "minecraft:ash" + } + }, + "ambient_sound": "antarchy:thoraxis_nightmare_wastes_ambient", + "additions_sound": { + "sound": "antarchy:thoraxis_nightmare_wastes_additions", + "tick_chance": 0.0075 + }, + "mood_sound": { + "sound": "antarchy:thoraxis_nightmare_wastes_mood", + "tick_delay": 6000, + "block_search_extent": 8, + "offset": 2.0 + } + }, + "spawn_costs": { + "antarchy:nightmare": { + "energy_budget": 0.3, + "charge": 1.8 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [ + "antarchy:thoraxis_floor_spikes", + "antarchy:thoraxis_roof_spikes" + ], + [], + [], + [ + "antarchy:bed_bug_surface_cluster", + "antarchy:nyxite_spikes", + "antarchy:patch_fire_sparse", + "antarchy:patch_ceiling_fire" + ], + [], + [ + "antarchy:cornea_stalk_patch", + "antarchy:patch_ceiling_cornea_stalk", + "antarchy:bed_bug_nest" + ], + [ + "antarchy:umbral_moss_patch" + ] + ], + "creature_spawn_probability": 0.07, + "spawners": { + "monster": [ + { + "type": "antarchy:nightmare", + "weight": 5, + "minCount": 1, + "maxCount": 1 + } + ], + "creature": [ + { + "type": "antarchy:bed_bug", + "weight": 18, + "minCount": 2, + "maxCount": 5 + } + ], + "ambient": [ + { + "type": "antarchy:reverie", + "weight": 8, + "minCount": 1, + "maxCount": 2 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [], + "water_ambient": [], + "misc": [] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/antiwater_springs.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/antiwater_springs.json new file mode 100644 index 00000000..2167c3e1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/antiwater_springs.json @@ -0,0 +1,26 @@ +{ + "type": "antarchy:antiwater_springs", + "config": { + "state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:antiwater" + } + }, + "horizontal_search_radius": 6, + "floor_search_below": 20, + "floor_search_above": 12, + "vent_offset_radius": 2, + "base_clusters": 1, + "extra_cluster_chance": 4, + "min_small_vent_count": 1, + "max_small_vent_count": 2, + "min_large_vent_count": 2, + "max_large_vent_count": 4, + "large_vent_cluster_chance": 5, + "min_depth": 1, + "max_depth": 4, + "large_cluster_min_depth": 2, + "large_cluster_max_depth": 5 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/basalt_blobs.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/basalt_blobs.json new file mode 100644 index 00000000..5d67d107 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/basalt_blobs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:netherrack_replace_blobs", + "config": { + "radius": { + "type": "minecraft:uniform", + "max_inclusive": 7, + "min_inclusive": 3 + }, + "state": { + "Name": "antarchy:nyxite", + "Properties": { + "axis": "y" + } + }, + "target": { + "Name": "antarchy:nyxite" + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/bed_bug_nest.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/bed_bug_nest.json new file mode 100644 index 00000000..d426764e --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/bed_bug_nest.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:bed_bug_nest", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/bed_bug_surface_cluster.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/bed_bug_surface_cluster.json new file mode 100644 index 00000000..74c938ae --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/bed_bug_surface_cluster.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:bed_bug_surface_cluster", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/blood_crystal_cluster.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/blood_crystal_cluster.json new file mode 100644 index 00000000..c5d9a0fd --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/blood_crystal_cluster.json @@ -0,0 +1,27 @@ +{ + "type": "antarchy:thoraxis_blood_crystal_spires", + "config": { + "base_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:blood_crystal_block" + } + }, + "crystal_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:blood_crystal_cluster" + } + }, + "min_height": 6, + "max_height": 10, + "min_base_radius": 1, + "max_base_radius": 2, + "tip_radius": 1, + "sway": 2, + "side_crystal_chance": 0.24, + "branch_chance": 0.08 + } +} + + diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/brown_ant_nest.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/brown_ant_nest.json new file mode 100644 index 00000000..43492df6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/brown_ant_nest.json @@ -0,0 +1,14 @@ +{ + "type": "antarchy:brown_ant_nest", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:brown_ant_nest", + "Properties": { + "facing": "north" + } + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/brutalfly_cocoon.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/brutalfly_cocoon.json new file mode 100644 index 00000000..4f76262b --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/brutalfly_cocoon.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:brutalfly_cocoon", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/butterfly_fields_flora.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/butterfly_fields_flora.json new file mode 100644 index 00000000..3e137c72 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/butterfly_fields_flora.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:butterfly_fields_flora", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/cloud_sea_calcite_banks.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/cloud_sea_calcite_banks.json new file mode 100644 index 00000000..53cbe8ce --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/cloud_sea_calcite_banks.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:cloud_sea_calcite_banks", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/cornea_stalk_patch.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/cornea_stalk_patch.json new file mode 100644 index 00000000..9ba60ff3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/cornea_stalk_patch.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:cornea_stalk", + "Properties": { + "age": "3" + } + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/delta.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/delta.json new file mode 100644 index 00000000..3dfe8cd7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/delta.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:delta_feature", + "config": { + "contents": { + "Name": "antarchy:ichor", + "Properties": { + "level": "0" + } + }, + "rim": { + "Name": "minecraft:magma_block" + }, + "rim_size": { + "type": "minecraft:uniform", + "max_inclusive": 2, + "min_inclusive": 0 + }, + "size": { + "type": "minecraft:uniform", + "max_inclusive": 7, + "min_inclusive": 3 + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_forest_flora.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_forest_flora.json new file mode 100644 index 00000000..be76b7b6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_forest_flora.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_forest_flora", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_large_tuff_boulder.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_large_tuff_boulder.json new file mode 100644 index 00000000..6b10ea67 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_large_tuff_boulder.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_large_tuff_boulder", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_meadow_flora.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_meadow_flora.json new file mode 100644 index 00000000..c053048c --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_meadow_flora.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_meadow_flora", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_cave_entrances.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_cave_entrances.json new file mode 100644 index 00000000..77cea35f --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_cave_entrances.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_moleworm_cave_entrances", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_surface_mounds.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_surface_mounds.json new file mode 100644 index 00000000..6e9733c3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_surface_mounds.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_moleworm_surface_mounds", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_tunnels.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_tunnels.json new file mode 100644 index 00000000..089735fb --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_tunnels.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_moleworm_tunnels", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_warrens.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_warrens.json new file mode 100644 index 00000000..713fcfe9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_moleworm_warrens.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_moleworm_warrens", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_pond.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_pond.json new file mode 100644 index 00000000..e00c9bc3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_pond.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_pond", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_surface_cover.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_surface_cover.json new file mode 100644 index 00000000..d567f535 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_surface_cover.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_surface_cover", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_torchflower_fields_flora.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_torchflower_fields_flora.json new file mode 100644 index 00000000..6ac9970b --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_torchflower_fields_flora.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_torchflower_fields_flora", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_tuff_boulder.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_tuff_boulder.json new file mode 100644 index 00000000..fba2a478 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_tuff_boulder.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_tuff_boulder", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_underground.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_underground.json new file mode 100644 index 00000000..613db8d0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/elythia_underground.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:elythia_underground", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/flower_forest_milkweed.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/flower_forest_milkweed.json new file mode 100644 index 00000000..526138f4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/flower_forest_milkweed.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:flower_forest_milkweed", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/glowstone_extra.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/glowstone_extra.json new file mode 100644 index 00000000..041755c0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/glowstone_extra.json @@ -0,0 +1,4 @@ +{ + "type": "minecraft:glowstone_blob", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/large_basalt_columns.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/large_basalt_columns.json new file mode 100644 index 00000000..aa352fb9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/large_basalt_columns.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:basalt_columns", + "config": { + "height": { + "type": "minecraft:uniform", + "max_inclusive": 10, + "min_inclusive": 5 + }, + "reach": { + "type": "minecraft:uniform", + "max_inclusive": 3, + "min_inclusive": 2 + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/large_blood_crystal_cluster.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/large_blood_crystal_cluster.json new file mode 100644 index 00000000..3787ac71 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/large_blood_crystal_cluster.json @@ -0,0 +1,27 @@ +{ + "type": "antarchy:thoraxis_blood_crystal_spires", + "config": { + "base_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:blood_crystal_block" + } + }, + "crystal_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:blood_crystal_cluster" + } + }, + "min_height": 16, + "max_height": 24, + "min_base_radius": 3, + "max_base_radius": 5, + "tip_radius": 1, + "sway": 4, + "side_crystal_chance": 0.32, + "branch_chance": 0.16 + } +} + + diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/medium_blood_crystal_cluster.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/medium_blood_crystal_cluster.json new file mode 100644 index 00000000..aba0d210 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/medium_blood_crystal_cluster.json @@ -0,0 +1,27 @@ +{ + "type": "antarchy:thoraxis_blood_crystal_spires", + "config": { + "base_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:blood_crystal_block" + } + }, + "crystal_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:blood_crystal_cluster" + } + }, + "min_height": 10, + "max_height": 16, + "min_base_radius": 2, + "max_base_radius": 3, + "tip_radius": 1, + "sway": 3, + "side_crystal_chance": 0.28, + "branch_chance": 0.12 + } +} + + diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/nyxite_spikes.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/nyxite_spikes.json new file mode 100644 index 00000000..51efc5f7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/nyxite_spikes.json @@ -0,0 +1,13 @@ +{ + "type": "antarchy:nyxite_spikes", + "config": { + "floor_to_ceiling_search_range": 10, + "radius": 4, + "max_column_height": 4, + "height_deviation": 1, + "chance_of_column_at_max_distance_from_center": 0.25, + "max_distance_from_center_affecting_chance_of_column": 4, + "max_distance_from_center_affecting_height_bias": 4, + "max_height_difference": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_gold.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_gold.json new file mode 100644 index 00000000..1b39be60 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_gold.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "minecraft:gold_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "minecraft:deepslate_gold_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_gravel_nether.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_gravel_nether.json new file mode 100644 index 00000000..0ded5a55 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_gravel_nether.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 33, + "targets": [ + { + "state": { + "Name": "minecraft:gravel" + }, + "target": { + "block": "antarchy:nyxite", + "predicate_type": "minecraft:block_match" + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_magma.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_magma.json new file mode 100644 index 00000000..85e60066 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ore_magma.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 33, + "targets": [ + { + "state": { + "Name": "minecraft:blackstone" + }, + "target": { + "block": "antarchy:nyxite", + "predicate_type": "minecraft:block_match" + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_cocoon_tree.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_cocoon_tree.json new file mode 100644 index 00000000..228602fa --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_cocoon_tree.json @@ -0,0 +1,60 @@ +{ + "type": "antarchy:ouranwood_cocoon_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_log", + "Properties": { + "axis": "y" + } + } + }, + "foliage_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_leaves", + "Properties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + } + } + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 55, + "max_inclusive": 75 + }, + "trunk_radius": { + "type": "minecraft:uniform", + "min_inclusive": 1, + "max_inclusive": 2 + }, + "canopy_radius": { + "type": "minecraft:uniform", + "min_inclusive": 7, + "max_inclusive": 12 + }, + "canopy_depth": { + "type": "minecraft:uniform", + "min_inclusive": 10, + "max_inclusive": 16 + }, + "buttress_height": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 7 + }, + "trunk_vine_length": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 7 + }, + "juvenile": false, + "flying_squirrel_nest_chance": 0.1, + "flying_squirrel_hollow_chance": 0.5, + "wasp_nest_chance": 0.025, + "caterpillar_chrysalis_chance": 0.05 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_large_tree.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_large_tree.json new file mode 100644 index 00000000..90f7ba5f --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_large_tree.json @@ -0,0 +1,60 @@ +{ + "type": "antarchy:ouranwood_large_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_log", + "Properties": { + "axis": "y" + } + } + }, + "foliage_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_leaves", + "Properties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + } + } + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 108, + "max_inclusive": 136 + }, + "trunk_radius": { + "type": "minecraft:uniform", + "min_inclusive": 2, + "max_inclusive": 3 + }, + "canopy_radius": { + "type": "minecraft:uniform", + "min_inclusive": 10, + "max_inclusive": 16 + }, + "canopy_depth": { + "type": "minecraft:uniform", + "min_inclusive": 16, + "max_inclusive": 24 + }, + "buttress_height": { + "type": "minecraft:uniform", + "min_inclusive": 6, + "max_inclusive": 12 + }, + "trunk_vine_length": { + "type": "minecraft:uniform", + "min_inclusive": 4, + "max_inclusive": 9 + }, + "juvenile": false, + "flying_squirrel_nest_chance": 0.16, + "flying_squirrel_hollow_chance": 0.75, + "wasp_nest_chance": 0.03266666666666667, + "caterpillar_chrysalis_chance": 0.09 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_medium_tree.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_medium_tree.json new file mode 100644 index 00000000..33ee6394 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_medium_tree.json @@ -0,0 +1,60 @@ +{ + "type": "antarchy:ouranwood_medium_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_log", + "Properties": { + "axis": "y" + } + } + }, + "foliage_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_leaves", + "Properties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + } + } + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 48, + "max_inclusive": 72 + }, + "trunk_radius": { + "type": "minecraft:uniform", + "min_inclusive": 1, + "max_inclusive": 2 + }, + "canopy_radius": { + "type": "minecraft:uniform", + "min_inclusive": 7, + "max_inclusive": 11 + }, + "canopy_depth": { + "type": "minecraft:uniform", + "min_inclusive": 10, + "max_inclusive": 15 + }, + "buttress_height": { + "type": "minecraft:uniform", + "min_inclusive": 1, + "max_inclusive": 4 + }, + "trunk_vine_length": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 7 + }, + "juvenile": false, + "flying_squirrel_nest_chance": 0.08, + "flying_squirrel_hollow_chance": 0.45, + "wasp_nest_chance": 0.02333333333333333, + "caterpillar_chrysalis_chance": 0.07 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_tree_selector.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_tree_selector.json new file mode 100644 index 00000000..bb766731 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_tree_selector.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:random_selector", + "config": { + "features": [ + { "chance": 0.001, "feature": "antarchy:ouranwood_cocoon_trees" }, + { "chance": 0.08, "feature": "antarchy:ouranwood_medium_trees" }, + { "chance": 0.027, "feature": "antarchy:ouranwood_young_trees" } + ], + "default": "antarchy:ouranwood_large_trees" + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_tree_selector_sparse.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_tree_selector_sparse.json new file mode 100644 index 00000000..db71d906 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_tree_selector_sparse.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:random_selector", + "config": { + "features": [ + { "chance": 0.0002, "feature": "antarchy:ouranwood_cocoon_trees" }, + { "chance": 0.133, "feature": "antarchy:ouranwood_young_trees" } + ], + "default": "antarchy:ouranwood_medium_trees" + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_young_tree.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_young_tree.json new file mode 100644 index 00000000..e8cf1a62 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/ouranwood_young_tree.json @@ -0,0 +1,59 @@ +{ + "type": "antarchy:ouranwood_young_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_log", + "Properties": { + "axis": "y" + } + } + }, + "foliage_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:ouranwood_leaves", + "Properties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + } + } + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 22, + "max_inclusive": 36 + }, + "trunk_radius": { + "type": "minecraft:uniform", + "min_inclusive": 1, + "max_inclusive": 2 + }, + "canopy_radius": { + "type": "minecraft:uniform", + "min_inclusive": 5, + "max_inclusive": 8 + }, + "canopy_depth": { + "type": "minecraft:uniform", + "min_inclusive": 7, + "max_inclusive": 11 + }, + "buttress_height": { + "type": "minecraft:uniform", + "min_inclusive": 0, + "max_inclusive": 1 + }, + "trunk_vine_length": { + "type": "minecraft:uniform", + "min_inclusive": 2, + "max_inclusive": 5 + }, + "juvenile": true, + "flying_squirrel_nest_chance": 0.0, + "flying_squirrel_hollow_chance": 0.0, + "wasp_nest_chance": 0.0 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_ceiling_cornea_stalk.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_ceiling_cornea_stalk.json new file mode 100644 index 00000000..97ad1d9d --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_ceiling_cornea_stalk.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:cornea_stalk", + "Properties": { + "age": "3", + "hanging": "true" + } + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_ceiling_fire.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_ceiling_fire.json new file mode 100644 index 00000000..46e3a903 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_ceiling_fire.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:dream_fire_ceiling" + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_fire.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_fire.json new file mode 100644 index 00000000..a71363c2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_fire.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:dream_fire" + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_soul_fire.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_soul_fire.json new file mode 100644 index 00000000..acc303d8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/patch_soul_fire.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:soul_fire" + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/potent_nyxite.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/potent_nyxite.json new file mode 100644 index 00000000..4f84508f --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/potent_nyxite.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:potent_nyxite", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/rainbow_ant_nest.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/rainbow_ant_nest.json new file mode 100644 index 00000000..5c112639 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/rainbow_ant_nest.json @@ -0,0 +1,14 @@ +{ + "type": "antarchy:rainbow_ant_nest", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:rainbow_ant_nest", + "Properties": { + "facing": "north" + } + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/red_ant_nest.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/red_ant_nest.json new file mode 100644 index 00000000..ec67fa66 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/red_ant_nest.json @@ -0,0 +1,14 @@ +{ + "type": "antarchy:red_ant_nest", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:red_ant_nest", + "Properties": { + "facing": "north" + } + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/small_basalt_columns.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/small_basalt_columns.json new file mode 100644 index 00000000..a5b5ead8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/small_basalt_columns.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:basalt_columns", + "config": { + "height": { + "type": "minecraft:uniform", + "max_inclusive": 4, + "min_inclusive": 1 + }, + "reach": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_antiwater_open.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_antiwater_open.json new file mode 100644 index 00000000..60ed926a --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_antiwater_open.json @@ -0,0 +1,16 @@ +{ + "type": "antarchy:lucid_antiwater_pool", + "config": { + "state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:antiwater" + } + }, + "min_radius": 8, + "max_radius": 18, + "min_depth": 2, + "max_depth": 6, + "irregularity": 0.25 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_delta.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_delta.json new file mode 100644 index 00000000..99522b32 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_delta.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:spring_feature", + "config": { + "state": { + "Name": "antarchy:ichor", + "Properties": { + "falling": "true" + } + }, + "valid_blocks": [ + "antarchy:nyxite", + "minecraft:soul_sand", + "minecraft:gravel", + "minecraft:magma_block", + "minecraft:blackstone" + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_lava_overworld.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_lava_overworld.json new file mode 100644 index 00000000..51c6bdba --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_lava_overworld.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:spring_feature", + "config": { + "state": { + "Name": "antarchy:ichor", + "Properties": { + "falling": "true" + } + }, + "valid_blocks": [ + "minecraft:stone", + "minecraft:granite", + "minecraft:diorite", + "minecraft:andesite", + "minecraft:deepslate", + "minecraft:tuff", + "minecraft:calcite", + "minecraft:dirt" + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_nether_closed.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_nether_closed.json new file mode 100644 index 00000000..8ca3b05d --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_nether_closed.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:spring_feature", + "config": { + "hole_count": 0, + "requires_block_below": false, + "rock_count": 5, + "state": { + "Name": "antarchy:ichor", + "Properties": { + "falling": "true" + } + }, + "valid_blocks": "antarchy:nyxite" + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_nether_open.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_nether_open.json new file mode 100644 index 00000000..020a7258 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spring_nether_open.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:spring_feature", + "config": { + "requires_block_below": false, + "state": { + "Name": "antarchy:ichor", + "Properties": { + "falling": "true" + } + }, + "valid_blocks": "antarchy:nyxite" + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_rib_columns.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_rib_columns.json new file mode 100644 index 00000000..47c44f53 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_rib_columns.json @@ -0,0 +1,13 @@ +{ + "type": "antarchy:thoraxis_rib_columns", + "config": { + "min_ribs": 3, + "max_ribs": 6, + "min_length": 5, + "max_length": 12, + "min_thickness": 1, + "max_thickness": 3, + "curve_strength": 8, + "claw_gap_chance": 0.35 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_stalactite.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_stalactite.json new file mode 100644 index 00000000..b28b1f0a --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_stalactite.json @@ -0,0 +1,12 @@ +{ + "type": "antarchy:thoraxis_spike", + "config": { + "orientation": "DOWN", + "min_length": 48, + "max_length": 88, + "base_radius": 4, + "tip_radius": 1, + "sway": 9, + "branch_chance": 0.22 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_stalagmite.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_stalagmite.json new file mode 100644 index 00000000..04f4f197 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_stalagmite.json @@ -0,0 +1,12 @@ +{ + "type": "antarchy:thoraxis_spike", + "config": { + "orientation": "UP", + "min_length": 48, + "max_length": 88, + "base_radius": 4, + "tip_radius": 1, + "sway": 9, + "branch_chance": 0.22 + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/titanium_ore.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/titanium_ore.json new file mode 100644 index 00000000..3842b35d --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/titanium_ore.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "size": 3, + "discard_chance_on_air_exposure": 0.0, + "targets": [ + { + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + }, + "state": { + "Name": "antarchy:titanium_ore" + } + }, + { + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + }, + "state": { + "Name": "antarchy:deepslate_titanium_ore" + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/triffid_patch.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/triffid_patch.json new file mode 100644 index 00000000..055de6bc --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/triffid_patch.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:triffid_patch", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_patch.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_patch.json new file mode 100644 index 00000000..65f04c56 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_patch.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:vegetation_patch", + "config": { + "depth": 1, + "extra_bottom_block_chance": 0.0, + "extra_edge_column_chance": 0.3, + "ground_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:umbral_moss_block" + } + }, + "replaceable": "#antarchy:umbral_moss_replaceable", + "surface": "floor", + "vegetation_chance": 0.4, + "vegetation_feature": { + "feature": "antarchy:umbral_moss_vegetation", + "placement": [] + }, + "vertical_range": 5, + "xz_radius": { + "type": "minecraft:uniform", + "max_inclusive": 7, + "min_inclusive": 4 + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_patch_bonemeal.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_patch_bonemeal.json new file mode 100644 index 00000000..67a7c7f1 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_patch_bonemeal.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:vegetation_patch", + "config": { + "depth": 1, + "extra_bottom_block_chance": 0.0, + "extra_edge_column_chance": 0.3, + "ground_state": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:umbral_moss_block" + } + }, + "replaceable": "#antarchy:umbral_moss_replaceable", + "surface": "floor", + "vegetation_chance": 0.8, + "vegetation_feature": { + "feature": "antarchy:umbral_moss_vegetation", + "placement": [] + }, + "vertical_range": 5, + "xz_radius": { + "type": "minecraft:uniform", + "max_inclusive": 7, + "min_inclusive": 4 + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_vegetation.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_vegetation.json new file mode 100644 index 00000000..c42a3618 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/umbral_moss_vegetation.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:weighted_state_provider", + "entries": [ + { + "data": { + "Name": "antarchy:umbral_moss_carpet", + "Properties": { + "bottom": "true", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + } + }, + "weight": 25 + }, + { + "data": { + "Name": "antarchy:hushweed" + }, + "weight": 1 + } + ] + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/uranium_ore.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/uranium_ore.json new file mode 100644 index 00000000..275f798e --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/uranium_ore.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "size": 3, + "discard_chance_on_air_exposure": 0.0, + "targets": [ + { + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + }, + "state": { + "Name": "antarchy:uranium_ore" + } + }, + { + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + }, + "state": { + "Name": "antarchy:deepslate_uranium_ore" + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/density_function/cavaryn_custom.json b/common/src/main/resources/data/antarchy/worldgen/density_function/cavaryn_custom.json new file mode 100644 index 00000000..02ada1e9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/density_function/cavaryn_custom.json @@ -0,0 +1,107 @@ +{ + "type": "minecraft:add", + "argument1": { + "type": "minecraft:min", + "argument1": { + "type": "minecraft:cache_2d", + "argument": { + "type": "minecraft:clamp", + "input": { + "type": "minecraft:max", + "argument1": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:weird_scaled_sampler", + "input": { + "type": "minecraft:noise", + "noise": "minecraft:spaghetti_2d_modulator", + "xz_scale": 0.25, + "y_scale": 0.15 + }, + "noise": "antarchy:cavaryn", + "rarity_value_mapper": "type_2" + }, + "argument2": { + "type": "minecraft:mul", + "argument1": 0.123, + "argument2": { + "type": "minecraft:cache_once", + "argument": { + "type": "minecraft:add", + "argument1": -0.86, + "argument2": { + "type": "minecraft:mul", + "argument1": -0.25, + "argument2": { + "type": "minecraft:noise", + "noise": "minecraft:spaghetti_2d_thickness", + "xz_scale": 1.2, + "y_scale": 1.5 + } + } + } + } + } + }, + "argument2": { + "type": "minecraft:cube", + "argument": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:abs", + "argument": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:add", + "argument1": 0, + "argument2": { + "type": "minecraft:mul", + "argument1": 10, + "argument2": { + "type": "minecraft:noise", + "noise": "minecraft:spaghetti_2d_elevation", + "xz_scale": 0.8, + "y_scale": 0.4 + } + } + }, + "argument2": { + "type": "minecraft:y_clamped_gradient", + "from_y": 252, + "to_y": 8, + "from_value": 10, + "to_value": -10 + } + } + }, + "argument2": { + "type": "minecraft:cache_once", + "argument": { + "type": "minecraft:add", + "argument1": -0.86, + "argument2": { + "type": "minecraft:mul", + "argument1": -0.25, + "argument2": { + "type": "minecraft:noise", + "noise": "minecraft:spaghetti_2d_thickness", + "xz_scale": 1.2, + "y_scale": 1.5 + } + } + } + } + } + } + }, + "max": 2.0, + "min": -2.0 + } + }, + "argument2": { + "type": "minecraft:cache_all_in_cell", + "argument": "antarchy:cavaryn_noise_cave" + } + }, + "argument2": -0.05 +} diff --git a/common/src/main/resources/data/antarchy/worldgen/density_function/cavaryn_noise_cave.json b/common/src/main/resources/data/antarchy/worldgen/density_function/cavaryn_noise_cave.json new file mode 100644 index 00000000..5ce470a6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/density_function/cavaryn_noise_cave.json @@ -0,0 +1,42 @@ +{ + "type": "minecraft:add", + "argument1": { + "type": "minecraft:cache_once", + "argument": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_y": 232, + "to_y": 20, + "from_value": 1.45, + "to_value": 0.12 + }, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:noise", + "noise": "minecraft:noodle_thickness", + "xz_scale": 1, + "y_scale": 7.5 + }, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:weird_scaled_sampler", + "rarity_value_mapper": "type_1", + "noise": "minecraft:patch", + "input": { + "type": "minecraft:interpolated", + "argument": 1 + } + }, + "argument2": { + "type": "minecraft:cube", + "argument": 0.5 + } + } + } + } + }, + "argument2": 0.3 +} diff --git a/common/src/main/resources/data/antarchy/worldgen/density_function/elythia_surface.json b/common/src/main/resources/data/antarchy/worldgen/density_function/elythia_surface.json new file mode 100644 index 00000000..8d55f6f5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/density_function/elythia_surface.json @@ -0,0 +1,81 @@ +{ + "type": "minecraft:cache_once", + "argument": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_y": -64, + "to_y": 220, + "from_value": 2.1, + "to_value": -1.78 + }, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:mul", + "argument1": 0.565, + "argument2": { + "type": "minecraft:noise", + "noise": "antarchy:elythia_surface", + "xz_scale": 0.65, + "y_scale": 0 + } + }, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:mul", + "argument1": 0.01, + "argument2": { + "type": "minecraft:noise", + "noise": "antarchy:elythia_surface_detail", + "xz_scale": 1.8, + "y_scale": 0 + } + }, + "argument2": { + "type": "minecraft:mul", + "argument1": 0.002, + "argument2": { + "type": "minecraft:noise", + "noise": "antarchy:elythia_surface_edge", + "xz_scale": 4.2, + "y_scale": 0 + } + } + } + }, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:mul", + "argument1": 0.17, + "argument2": "minecraft:overworld/depth" + }, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:mul", + "argument1": 0.003, + "argument2": "minecraft:overworld/ridges" + }, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:mul", + "argument1": -0.06, + "argument2": "minecraft:overworld/erosion" + }, + "argument2": { + "type": "minecraft:mul", + "argument1": 0.02, + "argument2": "minecraft:overworld/continents" + } + } + } + } + } + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/density_function/thoraxis_base_3d_noise.json b/common/src/main/resources/data/antarchy/worldgen/density_function/thoraxis_base_3d_noise.json new file mode 100644 index 00000000..612019dc --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/density_function/thoraxis_base_3d_noise.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:old_blended_noise", + "smear_scale_multiplier": 8.0, + "xz_factor": 80.0, + "xz_scale": 0.25, + "y_factor": 60.0, + "y_scale": 0.375 +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise/cavaryn.json b/common/src/main/resources/data/antarchy/worldgen/noise/cavaryn.json new file mode 100644 index 00000000..76e945fc --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise/cavaryn.json @@ -0,0 +1,7 @@ +{ + "firstOctave": -7, + "amplitudes": [ + 0.95, + 0.95 + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface.json b/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface.json new file mode 100644 index 00000000..ae92390c --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface.json @@ -0,0 +1,8 @@ +{ + "firstOctave": -8, + "amplitudes": [ + 1.0, + 1.0, + 0.5 + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface_detail.json b/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface_detail.json new file mode 100644 index 00000000..4a1cd821 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface_detail.json @@ -0,0 +1,8 @@ +{ + "firstOctave": -6, + "amplitudes": [ + 1.0, + 0.7, + 0.35 + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface_edge.json b/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface_edge.json new file mode 100644 index 00000000..3eae7384 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise/elythia_surface_edge.json @@ -0,0 +1,8 @@ +{ + "firstOctave": -4, + "amplitudes": [ + 1.0, + 0.5, + 0.25 + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise/surface_blend.json b/common/src/main/resources/data/antarchy/worldgen/noise/surface_blend.json new file mode 100644 index 00000000..765d1bdd --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise/surface_blend.json @@ -0,0 +1,4 @@ +{ + "firstOctave": -3, + "amplitudes": [1.0, 0.5, 0.25] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise_settings/cavaryn.json b/common/src/main/resources/data/antarchy/worldgen/noise_settings/cavaryn.json new file mode 100644 index 00000000..ccb3ed01 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise_settings/cavaryn.json @@ -0,0 +1,264 @@ +{ + "sea_level": 32, + "disable_mob_generation": false, + "aquifers_enabled": true, + "ore_veins_enabled": true, + "legacy_random_source": false, + "default_block": { + "Name": "minecraft:stone" + }, + "default_fluid": { + "Name": "minecraft:water", + "Properties": { + "level": "0" + } + }, + "noise": { + "min_y": 0, + "height": 256, + "size_horizontal": 1, + "size_vertical": 2 + }, + "noise_router": { + "barrier": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_barrier", + "xz_scale": 1, + "y_scale": 0.5 + }, + "fluid_level_floodedness": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_fluid_level_floodedness", + "xz_scale": 1, + "y_scale": 0.67 + }, + "fluid_level_spread": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_fluid_level_spread", + "xz_scale": 1, + "y_scale": 0.7142857142857143 + }, + "lava": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_lava", + "xz_scale": 1, + "y_scale": 1 + }, + "temperature": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:temperature", + "xz_scale": 0.25, + "y_scale": 0, + "shift_x": "minecraft:shift_x", + "shift_y": 0, + "shift_z": "minecraft:shift_z" + }, + "vegetation": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:vegetation", + "xz_scale": 0.25, + "y_scale": 0, + "shift_x": "minecraft:shift_x", + "shift_y": 0, + "shift_z": "minecraft:shift_z" + }, + "continents": "minecraft:overworld/continents", + "erosion": "minecraft:overworld/erosion", + "depth": "minecraft:overworld/depth", + "ridges": "minecraft:overworld/ridges", + "initial_density_without_jaggedness": 0, + "final_density": { + "type": "minecraft:max", + "argument1": { + "type": "minecraft:max", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_y": 0, + "to_y": 12, + "from_value": 4, + "to_value": -0.5 + }, + "argument2": { + "type": "minecraft:y_clamped_gradient", + "from_y": 244, + "to_y": 255, + "from_value": -0.5, + "to_value": 4 + } + }, + "argument2": { + "type": "minecraft:min", + "argument1": "minecraft:overworld/caves/noodle", + "argument2": { + "type": "minecraft:range_choice", + "input": "minecraft:y", + "min_inclusive": 4, + "max_exclusive": 252, + "when_in_range": "antarchy:cavaryn_custom", + "when_out_of_range": 2 + } + } + }, + "vein_toggle": { + "type": "minecraft:interpolated", + "argument": { + "type": "minecraft:range_choice", + "input": "minecraft:y", + "min_inclusive": 0, + "max_exclusive": 256, + "when_in_range": { + "type": "minecraft:noise", + "noise": "minecraft:ore_veininess", + "xz_scale": 1.5, + "y_scale": 1.5 + }, + "when_out_of_range": 0 + } + }, + "vein_ridged": { + "type": "minecraft:add", + "argument1": -0.07999999821186066, + "argument2": { + "type": "minecraft:max", + "argument1": { + "type": "minecraft:abs", + "argument": { + "type": "minecraft:interpolated", + "argument": { + "type": "minecraft:range_choice", + "input": "minecraft:y", + "min_inclusive": 0, + "max_exclusive": 256, + "when_in_range": { + "type": "minecraft:noise", + "noise": "minecraft:ore_vein_a", + "xz_scale": 4, + "y_scale": 4 + }, + "when_out_of_range": 0 + } + } + }, + "argument2": { + "type": "minecraft:abs", + "argument": { + "type": "minecraft:interpolated", + "argument": { + "type": "minecraft:range_choice", + "input": "minecraft:y", + "min_inclusive": 0, + "max_exclusive": 256, + "when_in_range": { + "type": "minecraft:noise", + "noise": "minecraft:ore_vein_b", + "xz_scale": 4, + "y_scale": 4 + }, + "when_out_of_range": 0 + } + } + } + } + }, + "vein_gap": { + "type": "minecraft:noise", + "noise": "minecraft:ore_gap", + "xz_scale": 1, + "y_scale": 1 + } + }, + "spawn_target": [ + { + "temperature": [ + -1, + 1 + ], + "humidity": [ + -1, + 1 + ], + "continentalness": [ + -1, + 1 + ], + "erosion": [ + -1, + 1 + ], + "weirdness": [ + -1, + 1 + ], + "depth": 0, + "offset": 0 + } + ], + "surface_rule": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "add_stone_depth": false, + "anchor": { + "absolute": 5 + }, + "surface_depth_multiplier": 0 + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "add_stone_depth": false, + "anchor": { + "below_top": 5 + }, + "surface_depth_multiplier": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "add_stone_depth": false, + "anchor": { + "absolute": 40 + }, + "surface_depth_multiplier": 0 + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:deepslate" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise_settings/elythia.json b/common/src/main/resources/data/antarchy/worldgen/noise_settings/elythia.json new file mode 100644 index 00000000..efa5bb78 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise_settings/elythia.json @@ -0,0 +1,602 @@ +{ + "sea_level": 63, + "disable_mob_generation": false, + "aquifers_enabled": true, + "ore_veins_enabled": false, + "legacy_random_source": false, + "spawn_target": [ + { + "continentalness": [ + -0.11, + 1.0 + ], + "depth": 0.0, + "erosion": [ + -1.0, + 1.0 + ], + "humidity": [ + -1.0, + 1.0 + ], + "offset": 0.0, + "temperature": [ + -1.0, + 1.0 + ], + "weirdness": [ + -1.0, + -0.16 + ] + }, + { + "continentalness": [ + -0.11, + 1.0 + ], + "depth": 0.0, + "erosion": [ + -1.0, + 1.0 + ], + "humidity": [ + -1.0, + 1.0 + ], + "offset": 0.0, + "temperature": [ + -1.0, + 1.0 + ], + "weirdness": [ + 0.16, + 1.0 + ] + } + ], + "default_block": { + "Name": "minecraft:stone" + }, + "default_fluid": { + "Name": "minecraft:water", + "Properties": { + "level": "0" + } + }, + "noise": { + "height": 384, + "min_y": -64, + "size_horizontal": 1, + "size_vertical": 2 + }, + "noise_router": { + "barrier": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_barrier", + "xz_scale": 1.0, + "y_scale": 0.5 + }, + "continents": "minecraft:overworld/continents", + "depth": "minecraft:overworld/depth", + "erosion": "minecraft:overworld/erosion", + "final_density": { + "type": "minecraft:min", + "argument1": { + "type": "minecraft:squeeze", + "argument": { + "type": "minecraft:mul", + "argument1": 0.64, + "argument2": { + "type": "minecraft:interpolated", + "argument": { + "type": "minecraft:blend_density", + "argument": { + "type": "minecraft:add", + "argument1": 0.1171875, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_value": 0.0, + "from_y": -64, + "to_value": 1.0, + "to_y": -40 + }, + "argument2": { + "type": "minecraft:add", + "argument1": -0.1171875, + "argument2": { + "type": "minecraft:add", + "argument1": -0.078125, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_value": 1.0, + "from_y": 240, + "to_value": 0.0, + "to_y": 256 + }, + "argument2": { + "type": "minecraft:add", + "argument1": 0.078125, + "argument2": { + "type": "minecraft:range_choice", + "input": "antarchy:elythia_surface", + "max_exclusive": 1.5625, + "min_inclusive": -1000000.0, + "when_in_range": { + "type": "minecraft:min", + "argument1": "antarchy:elythia_surface", + "argument2": { + "type": "minecraft:mul", + "argument1": 5.0, + "argument2": "minecraft:overworld/caves/entrances" + } + }, + "when_out_of_range": { + "type": "minecraft:max", + "argument1": { + "type": "minecraft:min", + "argument1": { + "type": "minecraft:min", + "argument1": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:mul", + "argument1": 4.0, + "argument2": { + "type": "minecraft:square", + "argument": { + "type": "minecraft:noise", + "noise": "minecraft:cave_layer", + "xz_scale": 1.0, + "y_scale": 8.0 + } + } + }, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:clamp", + "input": { + "type": "minecraft:add", + "argument1": 0.27, + "argument2": { + "type": "minecraft:noise", + "noise": "minecraft:cave_cheese", + "xz_scale": 1.0, + "y_scale": 0.6666666666666666 + } + }, + "max": 1.0, + "min": -1.0 + }, + "argument2": { + "type": "minecraft:clamp", + "input": { + "type": "minecraft:add", + "argument1": 1.5, + "argument2": { + "type": "minecraft:mul", + "argument1": -0.64, + "argument2": "antarchy:elythia_surface" + } + }, + "max": 0.5, + "min": 0.0 + } + } + }, + "argument2": "minecraft:overworld/caves/entrances" + }, + "argument2": { + "type": "minecraft:add", + "argument1": "minecraft:overworld/caves/spaghetti_2d", + "argument2": "minecraft:overworld/caves/spaghetti_roughness_function" + } + }, + "argument2": { + "type": "minecraft:range_choice", + "input": "minecraft:overworld/caves/pillars", + "max_exclusive": 0.03, + "min_inclusive": -1000000.0, + "when_in_range": -1000000.0, + "when_out_of_range": "minecraft:overworld/caves/pillars" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "argument2": "minecraft:overworld/caves/noodle" + }, + "fluid_level_floodedness": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_fluid_level_floodedness", + "xz_scale": 1.0, + "y_scale": 0.67 + }, + "fluid_level_spread": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_fluid_level_spread", + "xz_scale": 1.0, + "y_scale": 0.7142857142857143 + }, + "lava": { + "type": "minecraft:noise", + "noise": "minecraft:aquifer_lava", + "xz_scale": 1.0, + "y_scale": 1.0 + }, + "initial_density_without_jaggedness": "antarchy:elythia_surface", + "preliminary_surface_level": { + "type": "minecraft:find_top_surface", + "cell_height": 8, + "density": "antarchy:elythia_surface", + "lower_bound": -64, + "upper_bound": 320 + }, + "ridges": "minecraft:overworld/ridges", + "temperature": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:temperature", + "shift_x": "minecraft:shift_x", + "shift_y": 0.0, + "shift_z": "minecraft:shift_z", + "xz_scale": 0.25, + "y_scale": 0.0 + }, + "vegetation": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:vegetation", + "shift_x": "minecraft:shift_x", + "shift_y": 0.0, + "shift_z": "minecraft:shift_z", + "xz_scale": 0.25, + "y_scale": 0.0 + }, + "vein_toggle": 0.0, + "vein_ridged": 0.0, + "vein_gap": 0.0 + }, + "surface_rule": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:vertical_gradient", + "random_name": "minecraft:bedrock_floor", + "true_at_and_below": { "absolute": -60 }, + "false_at_and_above": { "absolute": -56 } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:bedrock" } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "antarchy:moleworm_caves" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "add_surface_depth": false, + "offset": 0, + "secondary_depth_range": 0, + "surface_type": "floor" + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "antarchy:surface_blend", + "min_threshold": -1.0, + "max_threshold": -0.18 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:podzol", + "Properties": { + "snowy": "false" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "antarchy:surface_blend", + "min_threshold": -0.055, + "max_threshold": 0.195 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:rooted_dirt" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "antarchy:surface_blend", + "min_threshold": 0.32, + "max_threshold": 0.68 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -1, + "surface_depth_multiplier": 2, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:rooted_dirt" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -4, + "surface_depth_multiplier": 3, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:rooted_dirt" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": ["antarchy:elythia_river"] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "add_surface_depth": false, + "offset": 0, + "secondary_depth_range": 0, + "surface_type": "floor" + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:gravel" } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "add_surface_depth": false, + "offset": 0, + "secondary_depth_range": 0, + "surface_type": "floor" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:grass_block", + "Properties": { "snowy": "false" } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -1, + "surface_depth_multiplier": 2, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:dirt" } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -4, + "surface_depth_multiplier": 3, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:dirt" } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { "type": "minecraft:above_preliminary_surface" }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "add_surface_depth": false, + "offset": 0, + "secondary_depth_range": 0, + "surface_type": "floor" + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "antarchy:surface_blend", + "min_threshold": -0.4, + "max_threshold": 1.1 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:grass_block", + "Properties": { "snowy": "false" } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "antarchy:surface_blend", + "min_threshold": -0.412, + "max_threshold": -0.4 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:rooted_dirt" } + } + }, + { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:moss_block" } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -1, + "surface_depth_multiplier": 2, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "antarchy:surface_blend", + "min_threshold": -0.35, + "max_threshold": -0.15 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:rooted_dirt" } + } + }, + { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:coarse_dirt" } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -4, + "surface_depth_multiplier": 3, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:block", + "result_state": { "Name": "minecraft:dirt" } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:vertical_gradient", + "random_name": "minecraft:deepslate", + "true_at_and_below": { "absolute": -8 }, + "false_at_and_above": { "absolute": 0 } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:deepslate", + "Properties": { "axis": "y" } + } + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/noise_settings/thoraxis.json b/common/src/main/resources/data/antarchy/worldgen/noise_settings/thoraxis.json new file mode 100644 index 00000000..117178af --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/noise_settings/thoraxis.json @@ -0,0 +1,244 @@ +{ + "sea_level": 32, + "disable_mob_generation": false, + "aquifers_enabled": false, + "ore_veins_enabled": false, + "legacy_random_source": true, + "default_block": { + "Name": "antarchy:nyxite" + }, + "default_fluid": { + "Name": "antarchy:ichor", + "Properties": { + "level": "0" + } + }, + "noise": { + "min_y": 0, + "height": 256, + "size_horizontal": 1, + "size_vertical": 2 + }, + "noise_router": { + "barrier": 0, + "fluid_level_floodedness": 0, + "fluid_level_spread": 0, + "lava": 0, + "temperature": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:nether/temperature", + "shift_x": 0.0, + "shift_y": 0.0, + "shift_z": 0.0, + "xz_scale": 0.25, + "y_scale": 0.0 + }, + "vegetation": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:nether/vegetation", + "shift_x": 0.0, + "shift_y": 0.0, + "shift_z": 0.0, + "xz_scale": 0.25, + "y_scale": 0.0 + }, + "continents": 0, + "erosion": 0, + "depth": 0, + "ridges": 0, + "initial_density_without_jaggedness": 0, + "final_density": { + "type": "minecraft:squeeze", + "argument": { + "type": "minecraft:interpolated", + "argument": { + "type": "minecraft:mul", + "argument1": 0.64, + "argument2": { + "type": "minecraft:blend_density", + "argument": { + "type": "minecraft:add", + "argument1": 2.5, + "argument2": { + "type": "minecraft:add", + "argument1": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_value": 0.0, + "from_y": -8, + "to_value": 1.0, + "to_y": 24 + }, + "argument2": -2.5 + }, + "argument2": { + "type": "minecraft:add", + "argument1": 0.9375, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_value": 1.0, + "from_y": 208, + "to_value": 0.0, + "to_y": 256 + }, + "argument2": { + "type": "minecraft:add", + "argument1": -0.9375, + "argument2": "antarchy:thoraxis_base_3d_noise" + } + } + } + } + } + } + } + } + }, + "vein_toggle": 0, + "vein_ridged": 0, + "vein_gap": 0 + }, + "spawn_target": [], + "surface_rule": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "add_stone_depth": false, + "anchor": { + "absolute": 4 + }, + "surface_depth_multiplier": 0 + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "antarchy:dream_dunes" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "add_surface_depth": true, + "offset": 0, + "secondary_depth_range": 0, + "surface_type": "floor" + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "max_threshold": 1.7976931348623157e+308, + "min_threshold": 0.0, + "noise": "minecraft:nether_state_selector" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "antarchy:dream_sand" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "antarchy:dream_sandstone" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "add_surface_depth": false, + "offset": 0, + "secondary_depth_range": 0, + "surface_type": "floor" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "antarchy:dream_sandstone" + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "antarchy:umbral_hills" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "add_surface_depth": true, + "offset": 0, + "secondary_depth_range": 0, + "surface_type": "floor" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "antarchy:umbral_moss_block" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "add_stone_depth": false, + "anchor": { + "below_top": 4 + }, + "surface_depth_multiplier": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "antarchy:nyxite" + } + } + ] + } +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/antiwater_springs.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/antiwater_springs.json new file mode 100644 index 00000000..fa6e86e2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/antiwater_springs.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:antiwater_springs", + "placement": [ + { + "type": "minecraft:count", + "count": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 0 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/basalt_blobs.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/basalt_blobs.json new file mode 100644 index 00000000..16ca54c3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/basalt_blobs.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:basalt_blobs", + "placement": [ + { + "type": "minecraft:count", + "count": 75 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 0 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/bed_bug_nest.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/bed_bug_nest.json new file mode 100644 index 00000000..54704c63 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/bed_bug_nest.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:bed_bug_nest", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 12 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 10 + }, + "max_inclusive": { + "absolute": 140 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/bed_bug_surface_cluster.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/bed_bug_surface_cluster.json new file mode 100644 index 00000000..9cfae10e --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/bed_bug_surface_cluster.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:bed_bug_surface_cluster", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 10 + }, + "max_inclusive": { + "absolute": 140 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/brown_ant_nest.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/brown_ant_nest.json new file mode 100644 index 00000000..2415afc4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/brown_ant_nest.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:brown_ant_nest", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 88 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/brutalfly_cocoon.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/brutalfly_cocoon.json new file mode 100644 index 00000000..b455b92d --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/brutalfly_cocoon.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:brutalfly_cocoon", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/butterfly_fields_flora.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/butterfly_fields_flora.json new file mode 100644 index 00000000..b3224fc4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/butterfly_fields_flora.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:butterfly_fields_flora", + "placement": [ + { + "type": "minecraft:count", + "count": 8 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/cloud_sea_calcite_banks.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/cloud_sea_calcite_banks.json new file mode 100644 index 00000000..a8dd39e3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/cloud_sea_calcite_banks.json @@ -0,0 +1,31 @@ +{ + "feature": "antarchy:cloud_sea_calcite_banks", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 6 + }, + { + "type": "minecraft:count", + "count": 3 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 0 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/cornea_stalk_patch.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/cornea_stalk_patch.json new file mode 100644 index 00000000..b910327d --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/cornea_stalk_patch.json @@ -0,0 +1,57 @@ +{ + "feature": "antarchy:cornea_stalk_patch", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "min_inclusive": 7, + "max_inclusive": 15 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 4 + }, + "max_inclusive": { + "below_top": 4 + } + } + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:random_offset", + "xz_spread": 2, + "y_spread": 1 + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:all_of", + "predicates": [ + { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + }, + { + "type": "minecraft:matching_block_tag", + "tag": "antarchy:cornea_stalk_plantable", + "offset": [ + 0, + -1, + 0 + ] + } + ] + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/delta.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/delta.json new file mode 100644 index 00000000..d7003367 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/delta.json @@ -0,0 +1,12 @@ +{ + "feature": "antarchy:delta", + "placement": [ + { + "type": "minecraft:count_on_every_layer", + "count": 40 + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_brown_ant_nests.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_brown_ant_nests.json new file mode 100644 index 00000000..55fdcfa7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_brown_ant_nests.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:brown_ant_nest", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 24 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_cave_underground.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_cave_underground.json new file mode 100644 index 00000000..40848cfd --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_cave_underground.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:elythia_underground", + "placement": [ + { + "type": "minecraft:count", + "count": 15 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": -48 + }, + "max_inclusive": { + "absolute": 96 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_forest_flora.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_forest_flora.json new file mode 100644 index 00000000..583b014c --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_forest_flora.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:elythia_forest_flora", + "placement": [ + { + "type": "minecraft:count", + "count": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_large_tuff_boulders.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_large_tuff_boulders.json new file mode 100644 index 00000000..b77b27fd --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_large_tuff_boulders.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:elythia_large_tuff_boulder", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 24 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_meadow_flora.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_meadow_flora.json new file mode 100644 index 00000000..05069edb --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_meadow_flora.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:elythia_meadow_flora", + "placement": [ + { + "type": "minecraft:count", + "count": 3 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_meadow_ponds.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_meadow_ponds.json new file mode 100644 index 00000000..69cef79a --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_meadow_ponds.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:elythia_pond", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 5 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_cave_entrances.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_cave_entrances.json new file mode 100644 index 00000000..880e3a50 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_cave_entrances.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:elythia_moleworm_cave_entrances", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 5 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": -48 + }, + "max_inclusive": { + "absolute": 65 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_surface_mounds.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_surface_mounds.json new file mode 100644 index 00000000..07bce835 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_surface_mounds.json @@ -0,0 +1,15 @@ +{ + "feature": "antarchy:elythia_moleworm_surface_mounds", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_tunnels.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_tunnels.json new file mode 100644 index 00000000..75c8e1d4 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_tunnels.json @@ -0,0 +1,15 @@ +{ + "feature": "antarchy:elythia_moleworm_tunnels", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 3 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_warrens.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_warrens.json new file mode 100644 index 00000000..23789262 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_moleworm_warrens.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:elythia_moleworm_warrens", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 8 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": -40 + }, + "max_inclusive": { + "absolute": 32 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_surface_cover.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_surface_cover.json new file mode 100644 index 00000000..1889848a --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_surface_cover.json @@ -0,0 +1,15 @@ +{ + "feature": "antarchy:elythia_surface_cover", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_torchflower_fields_flora.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_torchflower_fields_flora.json new file mode 100644 index 00000000..d73358fb --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_torchflower_fields_flora.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:elythia_torchflower_fields_flora", + "placement": [ + { + "type": "minecraft:count", + "count": 4 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_tuff_boulders.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_tuff_boulders.json new file mode 100644 index 00000000..19494229 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_tuff_boulders.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:elythia_tuff_boulder", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 6 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_underground.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_underground.json new file mode 100644 index 00000000..e7cd0ebf --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/elythia_underground.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:elythia_underground", + "placement": [ + { + "type": "minecraft:count", + "count": 24 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": -48 + }, + "max_inclusive": { + "absolute": 96 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/flower_forest_milkweed.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/flower_forest_milkweed.json new file mode 100644 index 00000000..d40a649f --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/flower_forest_milkweed.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:flower_forest_milkweed", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/glowstone.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/glowstone.json new file mode 100644 index 00000000..44169c4a --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/glowstone.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:glowstone_extra", + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 0 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/glowstone_extra.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/glowstone_extra.json new file mode 100644 index 00000000..bfc40afc --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/glowstone_extra.json @@ -0,0 +1,31 @@ +{ + "feature": "antarchy:glowstone_extra", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:biased_to_bottom", + "max_inclusive": 9, + "min_inclusive": 0 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 4 + }, + "min_inclusive": { + "above_bottom": 4 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/large_basalt_columns.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/large_basalt_columns.json new file mode 100644 index 00000000..2e63b745 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/large_basalt_columns.json @@ -0,0 +1,12 @@ +{ + "feature": "antarchy:large_basalt_columns", + "placement": [ + { + "type": "minecraft:count_on_every_layer", + "count": 2 + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_antiwater_pools.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_antiwater_pools.json new file mode 100644 index 00000000..31998b17 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_antiwater_pools.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:spring_antiwater_open", + "placement": [ + { + "type": "minecraft:count", + "count": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 16 + }, + "min_inclusive": { + "above_bottom": 160 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_blood_crystal_spires.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_blood_crystal_spires.json new file mode 100644 index 00000000..1b324284 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_blood_crystal_spires.json @@ -0,0 +1,33 @@ +{ + "feature": "antarchy:blood_crystal_cluster", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 7 + }, + { + "type": "minecraft:count", + "count": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 20 + }, + "min_inclusive": { + "above_bottom": 8 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} + + diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_large_blood_crystal_spires.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_large_blood_crystal_spires.json new file mode 100644 index 00000000..e75e392d --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_large_blood_crystal_spires.json @@ -0,0 +1,33 @@ +{ + "feature": "antarchy:large_blood_crystal_cluster", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 20 + }, + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 20 + }, + "min_inclusive": { + "above_bottom": 8 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} + + diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_medium_blood_crystal_spires.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_medium_blood_crystal_spires.json new file mode 100644 index 00000000..39631321 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/lucid_medium_blood_crystal_spires.json @@ -0,0 +1,33 @@ +{ + "feature": "antarchy:medium_blood_crystal_cluster", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 12 + }, + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 20 + }, + "min_inclusive": { + "above_bottom": 8 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} + + diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/nyxite_spikes.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/nyxite_spikes.json new file mode 100644 index 00000000..2263e7e2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/nyxite_spikes.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:nyxite_spikes", + "placement": [ + { + "type": "minecraft:count", + "count": 3 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 16 + }, + "max_inclusive": { + "below_top": 16 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gold_deltas.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gold_deltas.json new file mode 100644 index 00000000..0dc9d4a7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gold_deltas.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:ore_gold", + "placement": [ + { + "type": "minecraft:count", + "count": 20 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 10 + }, + "min_inclusive": { + "above_bottom": 10 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gold_nether.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gold_nether.json new file mode 100644 index 00000000..8d983ea7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gold_nether.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:ore_gold", + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 10 + }, + "min_inclusive": { + "above_bottom": 10 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gravel_nether.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gravel_nether.json new file mode 100644 index 00000000..2d7143c6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_gravel_nether.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:ore_gravel_nether", + "placement": [ + { + "type": "minecraft:count", + "count": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "absolute": 41 + }, + "min_inclusive": { + "absolute": 5 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_magma.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_magma.json new file mode 100644 index 00000000..acd5b565 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ore_magma.json @@ -0,0 +1,23 @@ +{ + "feature": "antarchy:ore_magma", + "placement": [ + { + "type": "minecraft:count", + "count": 48 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { "absolute": 144 }, + "min_inclusive": { "absolute": 8 } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_cocoon_trees.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_cocoon_trees.json new file mode 100644 index 00000000..03026319 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_cocoon_trees.json @@ -0,0 +1,4 @@ +{ + "feature": "antarchy:ouranwood_cocoon_tree", + "placement": [] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_large_trees.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_large_trees.json new file mode 100644 index 00000000..4d2e7b93 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_large_trees.json @@ -0,0 +1,4 @@ +{ + "feature": "antarchy:ouranwood_large_tree", + "placement": [] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_medium_trees.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_medium_trees.json new file mode 100644 index 00000000..767595c0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_medium_trees.json @@ -0,0 +1,4 @@ +{ + "feature": "antarchy:ouranwood_medium_tree", + "placement": [] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_trees.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_trees.json new file mode 100644 index 00000000..850dde08 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_trees.json @@ -0,0 +1,9 @@ +{ + "feature": "antarchy:ouranwood_tree_selector", + "placement": [ + { "type": "minecraft:count", "count": 1 }, + { "type": "minecraft:in_square" }, + { "type": "minecraft:heightmap", "heightmap": "WORLD_SURFACE_WG" }, + { "type": "minecraft:biome" } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_trees_sparse.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_trees_sparse.json new file mode 100644 index 00000000..61755a74 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_trees_sparse.json @@ -0,0 +1,9 @@ +{ + "feature": "antarchy:ouranwood_tree_selector_sparse", + "placement": [ + { "type": "minecraft:rarity_filter", "chance": 6 }, + { "type": "minecraft:in_square" }, + { "type": "minecraft:heightmap", "heightmap": "WORLD_SURFACE_WG" }, + { "type": "minecraft:biome" } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_young_trees.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_young_trees.json new file mode 100644 index 00000000..09aa8e25 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/ouranwood_young_trees.json @@ -0,0 +1,4 @@ +{ + "feature": "antarchy:ouranwood_young_tree", + "placement": [] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_ceiling_cornea_stalk.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_ceiling_cornea_stalk.json new file mode 100644 index 00000000..0a6c0f62 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_ceiling_cornea_stalk.json @@ -0,0 +1,57 @@ +{ + "feature": "antarchy:patch_ceiling_cornea_stalk", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "min_inclusive": 7, + "max_inclusive": 15 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 4 + }, + "max_inclusive": { + "below_top": 4 + } + } + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:random_offset", + "xz_spread": 2, + "y_spread": 1 + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:all_of", + "predicates": [ + { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + }, + { + "type": "minecraft:matching_block_tag", + "tag": "antarchy:cornea_stalk_plantable", + "offset": [ + 0, + 1, + 0 + ] + } + ] + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_ceiling_fire.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_ceiling_fire.json new file mode 100644 index 00000000..b5e00f57 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_ceiling_fire.json @@ -0,0 +1,69 @@ +{ + "feature": "antarchy:patch_ceiling_fire", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "max_inclusive": 6, + "min_inclusive": 1 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 4 + }, + "min_inclusive": { + "above_bottom": 4 + } + } + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:count", + "count": 128 + }, + { + "type": "minecraft:random_offset", + "xz_spread": { + "type": "minecraft:uniform", + "max_inclusive": 7, + "min_inclusive": -7 + }, + "y_spread": { + "type": "minecraft:uniform", + "max_inclusive": 3, + "min_inclusive": -3 + } + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:all_of", + "predicates": [ + { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + }, + { + "type": "minecraft:matching_block_tag", + "tag": "antarchy:dream_fire_base_blocks", + "offset": [ + 0, + 1, + 0 + ] + } + ] + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_fire.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_fire.json new file mode 100644 index 00000000..f5011537 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_fire.json @@ -0,0 +1,69 @@ +{ + "feature": "antarchy:patch_fire", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "max_inclusive": 5, + "min_inclusive": 0 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 4 + }, + "min_inclusive": { + "above_bottom": 4 + } + } + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:count", + "count": 96 + }, + { + "type": "minecraft:random_offset", + "xz_spread": { + "type": "minecraft:uniform", + "max_inclusive": 7, + "min_inclusive": -7 + }, + "y_spread": { + "type": "minecraft:uniform", + "max_inclusive": 3, + "min_inclusive": -3 + } + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:all_of", + "predicates": [ + { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + }, + { + "type": "minecraft:matching_block_tag", + "tag": "antarchy:dream_fire_base_blocks", + "offset": [ + 0, + -1, + 0 + ] + } + ] + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_fire_sparse.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_fire_sparse.json new file mode 100644 index 00000000..26fa348b --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_fire_sparse.json @@ -0,0 +1,69 @@ +{ + "feature": "antarchy:patch_fire", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "max_inclusive": 2, + "min_inclusive": 0 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 4 + }, + "min_inclusive": { + "above_bottom": 4 + } + } + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:count", + "count": 24 + }, + { + "type": "minecraft:random_offset", + "xz_spread": { + "type": "minecraft:uniform", + "max_inclusive": 5, + "min_inclusive": -5 + }, + "y_spread": { + "type": "minecraft:uniform", + "max_inclusive": 2, + "min_inclusive": -2 + } + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:all_of", + "predicates": [ + { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + }, + { + "type": "minecraft:matching_block_tag", + "tag": "antarchy:dream_fire_base_blocks", + "offset": [ + 0, + -1, + 0 + ] + } + ] + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_soul_fire.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_soul_fire.json new file mode 100644 index 00000000..914c7572 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/patch_soul_fire.json @@ -0,0 +1,69 @@ +{ + "feature": "antarchy:patch_soul_fire", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "max_inclusive": 5, + "min_inclusive": 0 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 4 + }, + "min_inclusive": { + "above_bottom": 4 + } + } + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:count", + "count": 96 + }, + { + "type": "minecraft:random_offset", + "xz_spread": { + "type": "minecraft:uniform", + "max_inclusive": 7, + "min_inclusive": -7 + }, + "y_spread": { + "type": "minecraft:uniform", + "max_inclusive": 3, + "min_inclusive": -3 + } + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:all_of", + "predicates": [ + { + "type": "minecraft:matching_block_tag", + "tag": "minecraft:air" + }, + { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:soul_soil", + "offset": [ + 0, + -1, + 0 + ] + } + ] + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/potent_nyxite.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/potent_nyxite.json new file mode 100644 index 00000000..4db97e0b --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/potent_nyxite.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:potent_nyxite", + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 0 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/rainbow_ant_nest.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/rainbow_ant_nest.json new file mode 100644 index 00000000..ec93ad43 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/rainbow_ant_nest.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:rainbow_ant_nest", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 128 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/red_ant_nest.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/red_ant_nest.json new file mode 100644 index 00000000..81555f52 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/red_ant_nest.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:red_ant_nest", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 24 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 32 + }, + "max_inclusive": { + "absolute": 118 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/red_ant_nest_magma.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/red_ant_nest_magma.json new file mode 100644 index 00000000..850042eb --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/red_ant_nest_magma.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:red_ant_nest", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 24 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/small_basalt_columns.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/small_basalt_columns.json new file mode 100644 index 00000000..e82bbf99 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/small_basalt_columns.json @@ -0,0 +1,12 @@ +{ + "feature": "antarchy:small_basalt_columns", + "placement": [ + { + "type": "minecraft:count_on_every_layer", + "count": 4 + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_closed.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_closed.json new file mode 100644 index 00000000..bd6292be --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_closed.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:spring_nether_closed", + "placement": [ + { + "type": "minecraft:count", + "count": 16 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 10 + }, + "min_inclusive": { + "above_bottom": 10 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_closed_double.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_closed_double.json new file mode 100644 index 00000000..3f1c0ffa --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_closed_double.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:spring_nether_closed", + "placement": [ + { + "type": "minecraft:count", + "count": 32 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 10 + }, + "min_inclusive": { + "above_bottom": 10 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_delta.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_delta.json new file mode 100644 index 00000000..d9f8c0c5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_delta.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:spring_delta", + "placement": [ + { + "type": "minecraft:count", + "count": 16 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 4 + }, + "min_inclusive": { + "above_bottom": 4 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_lava.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_lava.json new file mode 100644 index 00000000..797bd774 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_lava.json @@ -0,0 +1,28 @@ +{ + "feature": "antarchy:spring_lava_overworld", + "placement": [ + { + "type": "minecraft:count", + "count": 20 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:very_biased_to_bottom", + "inner": 8, + "max_inclusive": { + "below_top": 8 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_open.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_open.json new file mode 100644 index 00000000..bafe98a6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spring_open.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:spring_nether_open", + "placement": [ + { + "type": "minecraft:count", + "count": 8 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 4 + }, + "min_inclusive": { + "above_bottom": 4 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_floor_rib_columns.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_floor_rib_columns.json new file mode 100644 index 00000000..6e7c25e7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_floor_rib_columns.json @@ -0,0 +1,22 @@ +{ + "feature": "antarchy:thoraxis_rib_columns", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 128 + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { "absolute": 32 }, + "max_inclusive": { + "absolute": 84 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_floor_spikes.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_floor_spikes.json new file mode 100644 index 00000000..d3bf833e --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_floor_spikes.json @@ -0,0 +1,25 @@ +{ + "feature": "antarchy:thoraxis_stalagmite", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 224 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { "absolute": 24 }, + "max_inclusive": { + "absolute": 96 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_red_ant_nest_magma.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_red_ant_nest_magma.json new file mode 100644 index 00000000..615a0f1c --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_red_ant_nest_magma.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:red_ant_nest", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 16 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 32 + }, + "max_inclusive": { + "absolute": 118 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_roof_rib_columns.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_roof_rib_columns.json new file mode 100644 index 00000000..b048fc5f --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_roof_rib_columns.json @@ -0,0 +1,24 @@ +{ + "feature": "antarchy:thoraxis_rib_columns", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 72 + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 176 + }, + "max_inclusive": { + "absolute": 248 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_roof_spikes.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_roof_spikes.json new file mode 100644 index 00000000..b1825fe3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_roof_spikes.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:thoraxis_stalactite", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 120 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 176 + }, + "max_inclusive": { + "absolute": 240 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/titanium_ore.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/titanium_ore.json new file mode 100644 index 00000000..06f177fe --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/titanium_ore.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:titanium_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 12 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": -64 + }, + "max_inclusive": { + "absolute": 32 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/triffid_patch.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/triffid_patch.json new file mode 100644 index 00000000..f87e45e7 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/triffid_patch.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:triffid_patch", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 160 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/umbral_moss_patch.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/umbral_moss_patch.json new file mode 100644 index 00000000..8e413526 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/umbral_moss_patch.json @@ -0,0 +1,44 @@ +{ + "feature": "antarchy:umbral_moss_patch", + "placement": [ + { + "type": "minecraft:count", + "count": 125 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 256 + } + } + }, + { + "type": "minecraft:environment_scan", + "allowed_search_condition": { + "type": "minecraft:matching_block_tag", + "tag": "minecraft:air" + }, + "direction_of_search": "down", + "max_steps": 12, + "target_condition": { + "type": "minecraft:solid" + } + }, + { + "type": "minecraft:random_offset", + "xz_spread": 0, + "y_spread": 1 + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/uranium_ore.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/uranium_ore.json new file mode 100644 index 00000000..1e443937 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/uranium_ore.json @@ -0,0 +1,27 @@ +{ + "feature": "antarchy:uranium_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 12 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": -64 + }, + "max_inclusive": { + "absolute": 32 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/processor_list/fallen_kingdom_castle_processor.json b/common/src/main/resources/data/antarchy/worldgen/processor_list/fallen_kingdom_castle_processor.json new file mode 100644 index 00000000..8c6d77f2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/processor_list/fallen_kingdom_castle_processor.json @@ -0,0 +1,18 @@ +{ + "processors": [ + { + "processor_type": "integrated_api:integrated_block_replace_processor", + "input_block" : "minecraft:cobblestone", + "required_mod" : "quark", + "output_block" : "quark:cobblestone_bricks", + "probability" : 0.4 + }, + { + "processor_type": "integrated_api:integrated_block_replace_processor", + "input_block" : "minecraft:mossy_cobblestone", + "required_mod" : "quark", + "output_block" : "quark:mossy_cobblestone_bricks", + "probability" : 0.4 + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/processor_list/generic_processor.json b/common/src/main/resources/data/antarchy/worldgen/processor_list/generic_processor.json new file mode 100644 index 00000000..1e098c7f --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/processor_list/generic_processor.json @@ -0,0 +1,10 @@ +{ + "processors": [ + { + "processor_type": "integrated_api:tick_blocks_processor", + "blocks_to_tick": [ + "minecraft:dispenser" + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/worldgen/structure/fallen_kingdom_castle.json b/common/src/main/resources/data/antarchy/worldgen/structure/fallen_kingdom_castle.json new file mode 100644 index 00000000..73b7adb2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/structure/fallen_kingdom_castle.json @@ -0,0 +1,22 @@ +{ + "type": "integrated_api:generic_structure", + "start_pool": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle", + "size": 12, + "terrain_height_radius_check": 4, + "allowed_terrain_height_range": 14, + "valid_biome_radius_check": 1, + "biomes": "#antarchy:has_structure/fallen_kingdom_castle_biomes", + "step": "surface_structures", + "enhanced_terrain_adaptation": { + "type": "integrated_api:none" + }, + "project_start_to_heightmap": "WORLD_SURFACE_WG", + "start_height": { + "type": "minecraft:constant", + "value": { + "absolute": 0 + } + }, + "spawn_overrides": {}, + "liquid_settings": "ignore_waterlogging" +} diff --git a/common/src/main/resources/data/antarchy/worldgen/structure/trayaurus_lab.json b/common/src/main/resources/data/antarchy/worldgen/structure/trayaurus_lab.json new file mode 100644 index 00000000..3dfb6256 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/structure/trayaurus_lab.json @@ -0,0 +1,17 @@ +{ + "type": "integrated_api:generic_structure", + "start_pool": "antarchy:trayaurus_lab/trayaurus_lab", + "size": 3, + "terrain_height_radius_check": 1, + "allowed_terrain_height_range": 10, + "valid_biome_radius_check": 1, + "biomes": "#antarchy:has_structure/trayaurus_lab_biomes", + "step": "surface_structures", + "terrain_adaptation": "beard_thin", + "project_start_to_heightmap": "WORLD_SURFACE_WG", + "start_height": { + "absolute": 0 + }, + "spawn_overrides": {}, + "liquid_settings": "ignore_waterlogging" +} diff --git a/common/src/main/resources/data/antarchy/worldgen/structure_set/elythia_rare.json b/common/src/main/resources/data/antarchy/worldgen/structure_set/elythia_rare.json new file mode 100644 index 00000000..0cc32c09 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/structure_set/elythia_rare.json @@ -0,0 +1,18 @@ +{ + "structures": [ + { + "structure": "antarchy:trayaurus_lab", + "weight": 1 + }, + { + "structure": "antarchy:fallen_kingdom_castle", + "weight": 1 + } + ], + "placement": { + "salt": 659843583, + "spacing": 75, + "separation": 68, + "type": "integrated_api:advanced_random_spread" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle.json new file mode 100644 index 00000000..2b225e95 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle.json @@ -0,0 +1,22 @@ +{ + "name": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle1", + "processors": "antarchy:fallen_kingdom_castle_processor", + "projection": "rigid", + "enhanced_terrain_adaptation": { + "type": "integrated_api:custom", + "carves": true, + "beards": true, + "kernel_size": 35, + "kernel_distance": 35 + }, + "element_type": "integrated_api:integrated_api_single_pool_element" + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle2.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle2.json new file mode 100644 index 00000000..dc15dfa0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle2.json @@ -0,0 +1,22 @@ +{ + "name": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle2", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle2", + "processors": "antarchy:fallen_kingdom_castle_processor", + "projection": "rigid", + "enhanced_terrain_adaptation": { + "type": "integrated_api:custom", + "carves": true, + "beards": true, + "kernel_size": 35, + "kernel_distance": 35 + }, + "element_type": "integrated_api:integrated_api_single_pool_element" + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle3.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle3.json new file mode 100644 index 00000000..05fbcaa8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle3.json @@ -0,0 +1,22 @@ +{ + "name": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle3", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle3", + "processors": "antarchy:fallen_kingdom_castle_processor", + "projection": "rigid", + "enhanced_terrain_adaptation": { + "type": "integrated_api:custom", + "carves": true, + "beards": true, + "kernel_size": 35, + "kernel_distance": 35 + }, + "element_type": "integrated_api:integrated_api_single_pool_element" + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_banner.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_banner.json new file mode 100644 index 00000000..53b950e6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_banner.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle_banner", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle_banner", + "processors": "antarchy:fallen_kingdom_castle_processor", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_bridge.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_bridge.json new file mode 100644 index 00000000..b0b06695 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_bridge.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle_bridge", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle_bridge", + "processors": "antarchy:fallen_kingdom_castle_processor", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_flag.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_flag.json new file mode 100644 index 00000000..0044b59b --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/fallen_kingdom_castle/fallen_kingdom_castle_flag.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle_flag", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:fallen_kingdom_castle/fallen_kingdom_castle_flag", + "processors": "antarchy:fallen_kingdom_castle_processor", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/trayaurus_lab/trayaurus_lab.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/trayaurus_lab/trayaurus_lab.json new file mode 100644 index 00000000..8a7ad2f3 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/trayaurus_lab/trayaurus_lab.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:trayaurus_lab/trayaurus_lab", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:trayaurus_lab/trayaurus_lab", + "processors": "antarchy:generic_processor", + "projection": "rigid", + "element_type": "integrated_api:integrated_api_single_pool_element" + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/antarchy/worldgen/template_pool/trayaurus_lab/trayaurus_lab_bottom.json b/common/src/main/resources/data/antarchy/worldgen/template_pool/trayaurus_lab/trayaurus_lab_bottom.json new file mode 100644 index 00000000..5e9d3f17 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/template_pool/trayaurus_lab/trayaurus_lab_bottom.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:trayaurus_lab/trayaurus_lab_bottom", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:trayaurus_lab/trayaurus_lab_bottom", + "processors": "antarchy:generic_processor", + "projection": "rigid", + "element_type": "integrated_api:integrated_api_single_pool_element" + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/c/tags/block/fence_gates.json b/common/src/main/resources/data/c/tags/block/fence_gates.json new file mode 100644 index 00000000..628a0416 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/fence_gates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_fence_gate" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/ores.json b/common/src/main/resources/data/c/tags/block/ores.json new file mode 100644 index 00000000..7ee4e077 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/ores.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "#c:ores/titanium", + "#c:ores/uranium" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/ores/titanium.json b/common/src/main/resources/data/c/tags/block/ores/titanium.json new file mode 100644 index 00000000..51a3cb8b --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/ores/titanium.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:titanium_ore", + "antarchy:deepslate_titanium_ore" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/ores/uranium.json b/common/src/main/resources/data/c/tags/block/ores/uranium.json new file mode 100644 index 00000000..004de06d --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/ores/uranium.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_ore", + "antarchy:deepslate_uranium_ore" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/ores_in_ground/deepslate.json b/common/src/main/resources/data/c/tags/block/ores_in_ground/deepslate.json new file mode 100644 index 00000000..a18a1543 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/ores_in_ground/deepslate.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:deepslate_uranium_ore", + "antarchy:deepslate_titanium_ore" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/ores_in_ground/stone.json b/common/src/main/resources/data/c/tags/block/ores_in_ground/stone.json new file mode 100644 index 00000000..5d96296f --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/ores_in_ground/stone.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_ore", + "antarchy:titanium_ore" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/sandstone/blocks.json b/common/src/main/resources/data/c/tags/block/sandstone/blocks.json new file mode 100644 index 00000000..62958bac --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/sandstone/blocks.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sandstone", + "antarchy:chiseled_dream_sandstone", + "antarchy:cut_dream_sandstone", + "antarchy:smooth_dream_sandstone" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/sandstone/slabs.json b/common/src/main/resources/data/c/tags/block/sandstone/slabs.json new file mode 100644 index 00000000..6d2c70e8 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/sandstone/slabs.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sandstone_slab", + "antarchy:smooth_dream_sandstone_slab", + "antarchy:cut_dream_sandstone_slab" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/sandstone/stairs.json b/common/src/main/resources/data/c/tags/block/sandstone/stairs.json new file mode 100644 index 00000000..896f6fad --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/sandstone/stairs.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sandstone_stairs", + "antarchy:smooth_dream_sandstone_stairs" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/storage_blocks.json b/common/src/main/resources/data/c/tags/block/storage_blocks.json new file mode 100644 index 00000000..7ada88fb --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/storage_blocks.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#c:storage_blocks/uranium", + "#c:storage_blocks/raw_uranium", + "#c:storage_blocks/titanium", + "#c:storage_blocks/raw_titanium" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/storage_blocks/raw_titanium.json b/common/src/main/resources/data/c/tags/block/storage_blocks/raw_titanium.json new file mode 100644 index 00000000..4b5d6f93 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/storage_blocks/raw_titanium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:raw_titanium_block" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/storage_blocks/raw_uranium.json b/common/src/main/resources/data/c/tags/block/storage_blocks/raw_uranium.json new file mode 100644 index 00000000..d27b02b0 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/storage_blocks/raw_uranium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:raw_uranium_block" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/storage_blocks/titanium.json b/common/src/main/resources/data/c/tags/block/storage_blocks/titanium.json new file mode 100644 index 00000000..68fda782 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/storage_blocks/titanium.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "antarchy:titanium_block", + "antarchy:cut_titanium", + "antarchy:cut_titanium_slab", + "antarchy:cut_titanium_stairs", + "antarchy:chiseled_titanium", + "antarchy:titanium_door", + "antarchy:titanium_trapdoor", + "antarchy:titanium_bars", + "antarchy:titanium_bulb" + ] +} diff --git a/common/src/main/resources/data/c/tags/block/storage_blocks/uranium.json b/common/src/main/resources/data/c/tags/block/storage_blocks/uranium.json new file mode 100644 index 00000000..29a144b3 --- /dev/null +++ b/common/src/main/resources/data/c/tags/block/storage_blocks/uranium.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_block", + "antarchy:cut_uranium", + "antarchy:cut_uranium_slab", + "antarchy:cut_uranium_stairs", + "antarchy:chiseled_uranium", + "antarchy:uranium_door", + "antarchy:uranium_trapdoor", + "antarchy:uranium_bars", + "antarchy:uranium_bulb" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/animal_foods.json b/common/src/main/resources/data/c/tags/item/animal_foods.json new file mode 100644 index 00000000..feb046f5 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/animal_foods.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:moleworm" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/axes.json b/common/src/main/resources/data/c/tags/item/axes.json new file mode 100644 index 00000000..fb4c4964 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/axes.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_axe", + "antarchy:battle_axe" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/boots.json b/common/src/main/resources/data/c/tags/item/boots.json new file mode 100644 index 00000000..91b3a273 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/boots.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_boots", + "antarchy:nightmare_boots", + "antarchy:blood_crystal_boots" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/bows.json b/common/src/main/resources/data/c/tags/item/bows.json new file mode 100644 index 00000000..66565526 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/bows.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_bow" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/chestplates.json b/common/src/main/resources/data/c/tags/item/chestplates.json new file mode 100644 index 00000000..033455d2 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/chestplates.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_chestplate", + "antarchy:nightmare_chestplate", + "antarchy:blood_crystal_chestplate" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/crossbows.json b/common/src/main/resources/data/c/tags/item/crossbows.json new file mode 100644 index 00000000..d0458b36 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/crossbows.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_crossbow" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/elytra.json b/common/src/main/resources/data/c/tags/item/elytra.json new file mode 100644 index 00000000..32ba9b63 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/elytra.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:brutalfly_elytra" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/fence_gates.json b/common/src/main/resources/data/c/tags/item/fence_gates.json new file mode 100644 index 00000000..628a0416 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/fence_gates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_fence_gate" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/foods.json b/common/src/main/resources/data/c/tags/item/foods.json new file mode 100644 index 00000000..aae71222 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/foods.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "#c:foods/soup", + "antarchy:blood_crystal_apple", + "antarchy:mud_pie", + "antarchy:rainbow_sugar", + "antarchy:cornea_ear", + "antarchy:moleworm" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/foods/food_poisoning.json b/common/src/main/resources/data/c/tags/item/foods/food_poisoning.json new file mode 100644 index 00000000..416e8237 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/foods/food_poisoning.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:mud_pie", + "antarchy:moleworm" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/foods/soup.json b/common/src/main/resources/data/c/tags/item/foods/soup.json new file mode 100644 index 00000000..0e21e13e --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/foods/soup.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:cloud_shark_fin_soup" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/helmets.json b/common/src/main/resources/data/c/tags/item/helmets.json new file mode 100644 index 00000000..bb4cc79a --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/helmets.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_helmet", + "antarchy:nightmare_helmet", + "antarchy:moggles", + "antarchy:blood_crystal_helmet", + "antarchy:fallen_king_crown" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/hoes.json b/common/src/main/resources/data/c/tags/item/hoes.json new file mode 100644 index 00000000..eb8474b2 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/hoes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_hoe" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/ingots.json b/common/src/main/resources/data/c/tags/item/ingots.json new file mode 100644 index 00000000..5c8c1102 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/ingots.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "#c:ingots/titanium", + "#c:ingots/uranium" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/ingots/titanium.json b/common/src/main/resources/data/c/tags/item/ingots/titanium.json new file mode 100644 index 00000000..0c40bede --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/ingots/titanium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:titanium_ingot" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/ingots/uranium.json b/common/src/main/resources/data/c/tags/item/ingots/uranium.json new file mode 100644 index 00000000..c3391b6e --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/ingots/uranium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_ingot" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/leaves.json b/common/src/main/resources/data/c/tags/item/leaves.json new file mode 100644 index 00000000..019600cb --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/leaves.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_leaves" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/leggings.json b/common/src/main/resources/data/c/tags/item/leggings.json new file mode 100644 index 00000000..bfa8e776 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/leggings.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_leggings", + "antarchy:nightmare_leggings", + "antarchy:blood_crystal_leggings" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/nuggets.json b/common/src/main/resources/data/c/tags/item/nuggets.json new file mode 100644 index 00000000..787f0bcf --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/nuggets.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "#c:nuggets/titanium", + "#c:nuggets/uranium" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/nuggets/titanium.json b/common/src/main/resources/data/c/tags/item/nuggets/titanium.json new file mode 100644 index 00000000..fafc2765 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/nuggets/titanium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:titanium_nugget" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/nuggets/uranium.json b/common/src/main/resources/data/c/tags/item/nuggets/uranium.json new file mode 100644 index 00000000..33997321 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/nuggets/uranium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_nugget" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/ores.json b/common/src/main/resources/data/c/tags/item/ores.json new file mode 100644 index 00000000..7ee4e077 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/ores.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "#c:ores/titanium", + "#c:ores/uranium" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/ores/titanium.json b/common/src/main/resources/data/c/tags/item/ores/titanium.json new file mode 100644 index 00000000..51a3cb8b --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/ores/titanium.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:titanium_ore", + "antarchy:deepslate_titanium_ore" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/ores/uranium.json b/common/src/main/resources/data/c/tags/item/ores/uranium.json new file mode 100644 index 00000000..004de06d --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/ores/uranium.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_ore", + "antarchy:deepslate_uranium_ore" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/pickaxes.json b/common/src/main/resources/data/c/tags/item/pickaxes.json new file mode 100644 index 00000000..5418fd4b --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/pickaxes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_pickaxe" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/raw_materials.json b/common/src/main/resources/data/c/tags/item/raw_materials.json new file mode 100644 index 00000000..9d6975bd --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/raw_materials.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "#c:raw_materials/titanium", + "#c:raw_materials/uranium" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/raw_materials/titanium.json b/common/src/main/resources/data/c/tags/item/raw_materials/titanium.json new file mode 100644 index 00000000..c0f35467 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/raw_materials/titanium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:raw_titanium" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/raw_materials/uranium.json b/common/src/main/resources/data/c/tags/item/raw_materials/uranium.json new file mode 100644 index 00000000..9fffc783 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/raw_materials/uranium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:raw_uranium" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/sandstone/blocks.json b/common/src/main/resources/data/c/tags/item/sandstone/blocks.json new file mode 100644 index 00000000..62958bac --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/sandstone/blocks.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sandstone", + "antarchy:chiseled_dream_sandstone", + "antarchy:cut_dream_sandstone", + "antarchy:smooth_dream_sandstone" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/sandstone/slabs.json b/common/src/main/resources/data/c/tags/item/sandstone/slabs.json new file mode 100644 index 00000000..6d2c70e8 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/sandstone/slabs.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sandstone_slab", + "antarchy:smooth_dream_sandstone_slab", + "antarchy:cut_dream_sandstone_slab" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/sandstone/stairs.json b/common/src/main/resources/data/c/tags/item/sandstone/stairs.json new file mode 100644 index 00000000..896f6fad --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/sandstone/stairs.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sandstone_stairs", + "antarchy:smooth_dream_sandstone_stairs" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/shovels.json b/common/src/main/resources/data/c/tags/item/shovels.json new file mode 100644 index 00000000..41d829cb --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/shovels.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_shovel" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/slime_balls.json b/common/src/main/resources/data/c/tags/item/slime_balls.json new file mode 100644 index 00000000..74e34e54 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/slime_balls.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:slime_ball", + "antarchy:triffid_goo" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/storage_blocks.json b/common/src/main/resources/data/c/tags/item/storage_blocks.json new file mode 100644 index 00000000..7ada88fb --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/storage_blocks.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "#c:storage_blocks/uranium", + "#c:storage_blocks/raw_uranium", + "#c:storage_blocks/titanium", + "#c:storage_blocks/raw_titanium" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/storage_blocks/raw_titanium.json b/common/src/main/resources/data/c/tags/item/storage_blocks/raw_titanium.json new file mode 100644 index 00000000..4b5d6f93 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/storage_blocks/raw_titanium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:raw_titanium_block" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/storage_blocks/raw_uranium.json b/common/src/main/resources/data/c/tags/item/storage_blocks/raw_uranium.json new file mode 100644 index 00000000..d27b02b0 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/storage_blocks/raw_uranium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:raw_uranium_block" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/storage_blocks/titanium.json b/common/src/main/resources/data/c/tags/item/storage_blocks/titanium.json new file mode 100644 index 00000000..ab4fd344 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/storage_blocks/titanium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:titanium_block" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/storage_blocks/uranium.json b/common/src/main/resources/data/c/tags/item/storage_blocks/uranium.json new file mode 100644 index 00000000..af7684d6 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/storage_blocks/uranium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_block" + ] +} diff --git a/common/src/main/resources/data/c/tags/item/swords.json b/common/src/main/resources/data/c/tags/item/swords.json new file mode 100644 index 00000000..f3851fd9 --- /dev/null +++ b/common/src/main/resources/data/c/tags/item/swords.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "antarchy:big_bertha", + "antarchy:ultimate_sword", + "antarchy:nightmare_sword", + "antarchy:basilisk_dagger", + "antarchy:blood_crystal_katana" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/all_hanging_signs.json b/common/src/main/resources/data/minecraft/tags/block/all_hanging_signs.json new file mode 100644 index 00000000..a9f77d6c --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/all_hanging_signs.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_hanging_sign", + "antarchy:ouranwood_wall_hanging_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/ceiling_hanging_signs.json b/common/src/main/resources/data/minecraft/tags/block/ceiling_hanging_signs.json new file mode 100644 index 00000000..b030962b --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/ceiling_hanging_signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_hanging_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/dirt.json b/common/src/main/resources/data/minecraft/tags/block/dirt.json new file mode 100644 index 00000000..26f30b50 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/dirt.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:infested_rooted_dirt", + "antarchy:infested_coarse_dirt", + "antarchy:umbral_moss_block" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/doors.json b/common/src/main/resources/data/minecraft/tags/block/doors.json new file mode 100644 index 00000000..e6ac4fd5 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/doors.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_door", + "antarchy:titanium_door" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/fence_gates.json b/common/src/main/resources/data/minecraft/tags/block/fence_gates.json new file mode 100644 index 00000000..628a0416 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/fence_gates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_fence_gate" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/flowers.json b/common/src/main/resources/data/minecraft/tags/block/flowers.json new file mode 100644 index 00000000..0bf5c657 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/flowers.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:orange_milkweed", + "antarchy:pink_milkweed", + "antarchy:torchflower_bush" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/leaves.json b/common/src/main/resources/data/minecraft/tags/block/leaves.json new file mode 100644 index 00000000..019600cb --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/leaves.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_leaves" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/logs.json b/common/src/main/resources/data/minecraft/tags/block/logs.json new file mode 100644 index 00000000..01800b33 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/logs.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/logs_that_burn.json b/common/src/main/resources/data/minecraft/tags/block/logs_that_burn.json new file mode 100644 index 00000000..01800b33 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/logs_that_burn.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/mineable/axe.json b/common/src/main/resources/data/minecraft/tags/block/mineable/axe.json new file mode 100644 index 00000000..136beca6 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/mineable/axe.json @@ -0,0 +1,24 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood", + "antarchy:ouranwood_planks", + "antarchy:ouranwood_stairs", + "antarchy:ouranwood_slab", + "antarchy:ouranwood_fence", + "antarchy:ouranwood_fence_gate", + "antarchy:ouranwood_door", + "antarchy:ouranwood_trapdoor", + "antarchy:ouranwood_pressure_plate", + "antarchy:ouranwood_button", + "antarchy:ouranwood_sign", + "antarchy:ouranwood_wall_sign", + "antarchy:ouranwood_hanging_sign", + "antarchy:ouranwood_wall_hanging_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/mineable/hoe.json b/common/src/main/resources/data/minecraft/tags/block/mineable/hoe.json new file mode 100644 index 00000000..019600cb --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/mineable/hoe.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_leaves" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json b/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json new file mode 100644 index 00000000..fec4d2c7 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -0,0 +1,57 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_ore", + "antarchy:deepslate_uranium_ore", + "antarchy:titanium_ore", + "antarchy:deepslate_titanium_ore", + "antarchy:uranium_block", + "antarchy:cut_uranium", + "antarchy:cut_uranium_slab", + "antarchy:cut_uranium_stairs", + "antarchy:chiseled_uranium", + "antarchy:uranium_door", + "antarchy:uranium_trapdoor", + "antarchy:uranium_bars", + "antarchy:uranium_bulb", + "antarchy:titanium_block", + "antarchy:cut_titanium", + "antarchy:cut_titanium_slab", + "antarchy:cut_titanium_stairs", + "antarchy:chiseled_titanium", + "antarchy:titanium_door", + "antarchy:titanium_trapdoor", + "antarchy:titanium_bars", + "antarchy:titanium_bulb", + "antarchy:nyxite", + "antarchy:polished_nyxite", + "antarchy:chiseled_nyxite", + "antarchy:nyxite_bricks", + "antarchy:nyxite_stairs", + "antarchy:nyxite_slab", + "antarchy:nyxite_wall", + "antarchy:polished_nyxite_stairs", + "antarchy:polished_nyxite_slab", + "antarchy:polished_nyxite_wall", + "antarchy:nyxite_brick_stairs", + "antarchy:nyxite_brick_slab", + "antarchy:nyxite_brick_wall", + "antarchy:nyxite_spike", + "antarchy:potent_nyxite", + "antarchy:blood_crystal_block", + "antarchy:budding_blood_crystal", + "antarchy:blood_crystal_cluster", + "antarchy:dream_sandstone", + "antarchy:chiseled_dream_sandstone", + "antarchy:cut_dream_sandstone", + "antarchy:smooth_dream_sandstone", + "antarchy:dream_sandstone_stairs", + "antarchy:dream_sandstone_slab", + "antarchy:dream_sandstone_wall", + "antarchy:smooth_dream_sandstone_stairs", + "antarchy:smooth_dream_sandstone_slab", + "antarchy:cut_dream_sandstone_slab", + "antarchy:red_ant_nest" + ] +} + diff --git a/common/src/main/resources/data/minecraft/tags/block/mineable/shovel.json b/common/src/main/resources/data/minecraft/tags/block/mineable/shovel.json new file mode 100644 index 00000000..efe8c75a --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/mineable/shovel.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:infested_rooted_dirt", + "antarchy:infested_coarse_dirt", + "antarchy:brown_ant_nest", + "antarchy:rainbow_ant_nest", + "antarchy:dream_sand", + "antarchy:cloud_block" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/needs_iron_tool.json b/common/src/main/resources/data/minecraft/tags/block/needs_iron_tool.json new file mode 100644 index 00000000..5d8944bc --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/needs_iron_tool.json @@ -0,0 +1,29 @@ +{ + "replace": false, + "values": [ + "antarchy:titanium_ore", + "antarchy:deepslate_titanium_ore", + "antarchy:uranium_ore", + "antarchy:deepslate_uranium_ore", + "antarchy:titanium_block", + "antarchy:raw_titanium_block", + "antarchy:cut_titanium", + "antarchy:cut_titanium_slab", + "antarchy:cut_titanium_stairs", + "antarchy:chiseled_titanium", + "antarchy:titanium_door", + "antarchy:titanium_trapdoor", + "antarchy:titanium_bars", + "antarchy:titanium_bulb", + "antarchy:uranium_block", + "antarchy:raw_uranium_block", + "antarchy:cut_uranium", + "antarchy:cut_uranium_slab", + "antarchy:cut_uranium_stairs", + "antarchy:chiseled_uranium", + "antarchy:uranium_door", + "antarchy:uranium_trapdoor", + "antarchy:uranium_bars", + "antarchy:uranium_bulb" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/needs_stone_tool.json b/common/src/main/resources/data/minecraft/tags/block/needs_stone_tool.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/needs_stone_tool.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/planks.json b/common/src/main/resources/data/minecraft/tags/block/planks.json new file mode 100644 index 00000000..fbfbe78e --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/planks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_planks" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/sand.json b/common/src/main/resources/data/minecraft/tags/block/sand.json new file mode 100644 index 00000000..d79aca3c --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/sand.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sand" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/saplings.json b/common/src/main/resources/data/minecraft/tags/block/saplings.json new file mode 100644 index 00000000..2af25ce5 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/saplings.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_acorn" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/slabs.json b/common/src/main/resources/data/minecraft/tags/block/slabs.json new file mode 100644 index 00000000..c369e8a4 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/slabs.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite_slab", + "antarchy:polished_nyxite_slab", + "antarchy:nyxite_brick_slab", + "antarchy:dream_sandstone_slab", + "antarchy:smooth_dream_sandstone_slab", + "antarchy:cut_dream_sandstone_slab", + "antarchy:cut_uranium_slab", + "antarchy:cut_titanium_slab" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/stairs.json b/common/src/main/resources/data/minecraft/tags/block/stairs.json new file mode 100644 index 00000000..eede1ceb --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/stairs.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite_stairs", + "antarchy:nyxite_brick_stairs", + "antarchy:polished_nyxite_stairs", + "antarchy:dream_sandstone_stairs", + "antarchy:smooth_dream_sandstone_stairs", + "antarchy:cut_titanium_stairs", + "antarchy:cut_uranium_stairs" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/standing_signs.json b/common/src/main/resources/data/minecraft/tags/block/standing_signs.json new file mode 100644 index 00000000..61a8a4d5 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/standing_signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/tall_flowers.json b/common/src/main/resources/data/minecraft/tags/block/tall_flowers.json new file mode 100644 index 00000000..0bf5c657 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/tall_flowers.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:orange_milkweed", + "antarchy:pink_milkweed", + "antarchy:torchflower_bush" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/trapdoors.json b/common/src/main/resources/data/minecraft/tags/block/trapdoors.json new file mode 100644 index 00000000..174efdac --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/trapdoors.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_trapdoor", + "antarchy:titanium_trapdoor" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wall_hanging_signs.json b/common/src/main/resources/data/minecraft/tags/block/wall_hanging_signs.json new file mode 100644 index 00000000..2b95abe7 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wall_hanging_signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_wall_hanging_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wall_signs.json b/common/src/main/resources/data/minecraft/tags/block/wall_signs.json new file mode 100644 index 00000000..47091e17 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wall_signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_wall_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/walls.json b/common/src/main/resources/data/minecraft/tags/block/walls.json new file mode 100644 index 00000000..8df37e0e --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/walls.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sandstone_wall", + "antarchy:nyxite_wall", + "antarchy:polished_nyxite_wall", + "antarchy:nyxite_brick_wall" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wooden_buttons.json b/common/src/main/resources/data/minecraft/tags/block/wooden_buttons.json new file mode 100644 index 00000000..9f9f176f --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wooden_buttons.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_button" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wooden_doors.json b/common/src/main/resources/data/minecraft/tags/block/wooden_doors.json new file mode 100644 index 00000000..93bb2e7f --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wooden_doors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_door" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wooden_fences.json b/common/src/main/resources/data/minecraft/tags/block/wooden_fences.json new file mode 100644 index 00000000..d103ebdd --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wooden_fences.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_fence" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wooden_pressure_plates.json b/common/src/main/resources/data/minecraft/tags/block/wooden_pressure_plates.json new file mode 100644 index 00000000..fb1e3e81 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wooden_pressure_plates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_pressure_plate" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wooden_slabs.json b/common/src/main/resources/data/minecraft/tags/block/wooden_slabs.json new file mode 100644 index 00000000..d60c2f07 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wooden_slabs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_slab" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wooden_stairs.json b/common/src/main/resources/data/minecraft/tags/block/wooden_stairs.json new file mode 100644 index 00000000..8e1ff149 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wooden_stairs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_stairs" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wooden_trapdoors.json b/common/src/main/resources/data/minecraft/tags/block/wooden_trapdoors.json new file mode 100644 index 00000000..3567295e --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wooden_trapdoors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_trapdoor" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/entity_type/zombies.json b/common/src/main/resources/data/minecraft/tags/entity_type/zombies.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/entity_type/zombies.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/axes.json b/common/src/main/resources/data/minecraft/tags/item/axes.json new file mode 100644 index 00000000..fb4c4964 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/axes.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_axe", + "antarchy:battle_axe" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/boats.json b/common/src/main/resources/data/minecraft/tags/item/boats.json new file mode 100644 index 00000000..6ee8cf49 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/boats.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_boat", + "antarchy:ouranwood_chest_boat" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/chest_armor.json b/common/src/main/resources/data/minecraft/tags/item/chest_armor.json new file mode 100644 index 00000000..033455d2 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/chest_armor.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_chestplate", + "antarchy:nightmare_chestplate", + "antarchy:blood_crystal_chestplate" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/chest_boats.json b/common/src/main/resources/data/minecraft/tags/item/chest_boats.json new file mode 100644 index 00000000..8e18b86e --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/chest_boats.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_chest_boat" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/dirt.json b/common/src/main/resources/data/minecraft/tags/item/dirt.json new file mode 100644 index 00000000..26f30b50 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/dirt.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:infested_rooted_dirt", + "antarchy:infested_coarse_dirt", + "antarchy:umbral_moss_block" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/doors.json b/common/src/main/resources/data/minecraft/tags/item/doors.json new file mode 100644 index 00000000..e6ac4fd5 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/doors.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_door", + "antarchy:titanium_door" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/bow.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/bow.json new file mode 100644 index 00000000..66565526 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/bow.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_bow" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/crossbow.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/crossbow.json new file mode 100644 index 00000000..d0458b36 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/crossbow.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_crossbow" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/durability.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/durability.json new file mode 100644 index 00000000..01876be3 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/durability.json @@ -0,0 +1,32 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_axe", + "antarchy:ultimate_pickaxe", + "antarchy:ultimate_shovel", + "antarchy:ultimate_hoe", + "antarchy:ultimate_sword", + "antarchy:battle_axe", + "antarchy:big_bertha", + "antarchy:nightmare_sword", + "antarchy:basilisk_dagger", + "antarchy:ultimate_bow", + "antarchy:ultimate_crossbow", + "antarchy:brutalfly_elytra", + "antarchy:ultimate_helmet", + "antarchy:ultimate_chestplate", + "antarchy:ultimate_leggings", + "antarchy:ultimate_boots", + "antarchy:nightmare_helmet", + "antarchy:nightmare_chestplate", + "antarchy:nightmare_leggings", + "antarchy:nightmare_boots", + "antarchy:moggles", + "antarchy:blood_crystal_katana", + "antarchy:blood_crystal_helmet", + "antarchy:blood_crystal_chestplate", + "antarchy:blood_crystal_leggings", + "antarchy:blood_crystal_boots", + "antarchy:fallen_king_crown" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/elytra.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/elytra.json new file mode 100644 index 00000000..91e23a16 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/elytra.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:elytra", + "antarchy:brutalfly_elytra" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/equippable.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/equippable.json new file mode 100644 index 00000000..858f350a --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/equippable.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:battle_axe", + "antarchy:ultimate_bow", + "antarchy:ultimate_crossbow", + "antarchy:brutalfly_elytra" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/fire_aspect.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/fire_aspect.json new file mode 100644 index 00000000..90c9e379 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/fire_aspect.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_sword", + "antarchy:big_bertha", + "antarchy:blood_crystal_katana" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/mace.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/mace.json new file mode 100644 index 00000000..d275da3f --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/mace.json @@ -0,0 +1,5 @@ +{ + "replace": false, + "values": [ + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/weapon.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/weapon.json new file mode 100644 index 00000000..6f080328 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/weapon.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "antarchy:battle_axe", + "antarchy:ultimate_axe", + "antarchy:ultimate_sword", + "antarchy:big_bertha", + "antarchy:nightmare_sword", + "antarchy:basilisk_dagger", + "antarchy:blood_crystal_katana" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/fence_gates.json b/common/src/main/resources/data/minecraft/tags/item/fence_gates.json new file mode 100644 index 00000000..628a0416 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/fence_gates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_fence_gate" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/flowers.json b/common/src/main/resources/data/minecraft/tags/item/flowers.json new file mode 100644 index 00000000..0bf5c657 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/flowers.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:orange_milkweed", + "antarchy:pink_milkweed", + "antarchy:torchflower_bush" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/foot_armor.json b/common/src/main/resources/data/minecraft/tags/item/foot_armor.json new file mode 100644 index 00000000..91b3a273 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/foot_armor.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_boots", + "antarchy:nightmare_boots", + "antarchy:blood_crystal_boots" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/hanging_signs.json b/common/src/main/resources/data/minecraft/tags/item/hanging_signs.json new file mode 100644 index 00000000..b030962b --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/hanging_signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_hanging_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/head_armor.json b/common/src/main/resources/data/minecraft/tags/item/head_armor.json new file mode 100644 index 00000000..bb4cc79a --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/head_armor.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_helmet", + "antarchy:nightmare_helmet", + "antarchy:moggles", + "antarchy:blood_crystal_helmet", + "antarchy:fallen_king_crown" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/hoes.json b/common/src/main/resources/data/minecraft/tags/item/hoes.json new file mode 100644 index 00000000..eb8474b2 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/hoes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_hoe" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/leaves.json b/common/src/main/resources/data/minecraft/tags/item/leaves.json new file mode 100644 index 00000000..019600cb --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/leaves.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_leaves" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/leg_armor.json b/common/src/main/resources/data/minecraft/tags/item/leg_armor.json new file mode 100644 index 00000000..bfa8e776 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/leg_armor.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_leggings", + "antarchy:nightmare_leggings", + "antarchy:blood_crystal_leggings" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/logs.json b/common/src/main/resources/data/minecraft/tags/item/logs.json new file mode 100644 index 00000000..01800b33 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/logs.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/logs_that_burn.json b/common/src/main/resources/data/minecraft/tags/item/logs_that_burn.json new file mode 100644 index 00000000..01800b33 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/logs_that_burn.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_log", + "antarchy:ouranwood_wood", + "antarchy:mossy_ouranwood_log", + "antarchy:mossy_ouranwood_wood", + "antarchy:stripped_ouranwood_log", + "antarchy:stripped_ouranwood_wood" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/pickaxes.json b/common/src/main/resources/data/minecraft/tags/item/pickaxes.json new file mode 100644 index 00000000..5418fd4b --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/pickaxes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_pickaxe" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/piglin_safe_armor.json b/common/src/main/resources/data/minecraft/tags/item/piglin_safe_armor.json new file mode 100644 index 00000000..697a3e6d --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/piglin_safe_armor.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:fallen_king_crown" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/planks.json b/common/src/main/resources/data/minecraft/tags/item/planks.json new file mode 100644 index 00000000..fbfbe78e --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/planks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_planks" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/sand.json b/common/src/main/resources/data/minecraft/tags/item/sand.json new file mode 100644 index 00000000..d79aca3c --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/sand.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:dream_sand" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/saplings.json b/common/src/main/resources/data/minecraft/tags/item/saplings.json new file mode 100644 index 00000000..2af25ce5 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/saplings.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_acorn" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/shovels.json b/common/src/main/resources/data/minecraft/tags/item/shovels.json new file mode 100644 index 00000000..41d829cb --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/shovels.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_shovel" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/signs.json b/common/src/main/resources/data/minecraft/tags/item/signs.json new file mode 100644 index 00000000..61a8a4d5 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_sign" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/slabs.json b/common/src/main/resources/data/minecraft/tags/item/slabs.json new file mode 100644 index 00000000..c369e8a4 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/slabs.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite_slab", + "antarchy:polished_nyxite_slab", + "antarchy:nyxite_brick_slab", + "antarchy:dream_sandstone_slab", + "antarchy:smooth_dream_sandstone_slab", + "antarchy:cut_dream_sandstone_slab", + "antarchy:cut_uranium_slab", + "antarchy:cut_titanium_slab" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/slime_balls.json b/common/src/main/resources/data/minecraft/tags/item/slime_balls.json new file mode 100644 index 00000000..1c54cc36 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/slime_balls.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:triffid_goo" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/stairs.json b/common/src/main/resources/data/minecraft/tags/item/stairs.json new file mode 100644 index 00000000..eede1ceb --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/stairs.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite_stairs", + "antarchy:nyxite_brick_stairs", + "antarchy:polished_nyxite_stairs", + "antarchy:dream_sandstone_stairs", + "antarchy:smooth_dream_sandstone_stairs", + "antarchy:cut_titanium_stairs", + "antarchy:cut_uranium_stairs" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/swords.json b/common/src/main/resources/data/minecraft/tags/item/swords.json new file mode 100644 index 00000000..7700afc0 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/swords.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "antarchy:ultimate_sword", + "antarchy:nightmare_sword", + "antarchy:basilisk_dagger", + "antarchy:big_bertha", + "antarchy:blood_crystal_katana" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/tall_flowers.json b/common/src/main/resources/data/minecraft/tags/item/tall_flowers.json new file mode 100644 index 00000000..0bf5c657 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/tall_flowers.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "antarchy:orange_milkweed", + "antarchy:pink_milkweed", + "antarchy:torchflower_bush" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/trapdoors.json b/common/src/main/resources/data/minecraft/tags/item/trapdoors.json new file mode 100644 index 00000000..174efdac --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/trapdoors.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:uranium_trapdoor", + "antarchy:titanium_trapdoor" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/trim_materials.json b/common/src/main/resources/data/minecraft/tags/item/trim_materials.json new file mode 100644 index 00000000..cda0cb66 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/trim_materials.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "antarchy:blood_crystal_shard", + "antarchy:nightmare_scale", + "antarchy:uranium_ingot", + "antarchy:titanium_ingot" + ] +} + + diff --git a/common/src/main/resources/data/minecraft/tags/item/walls.json b/common/src/main/resources/data/minecraft/tags/item/walls.json new file mode 100644 index 00000000..389a5cde --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/walls.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "antarchy:nyxite_wall", + "antarchy:polished_nyxite_wall", + "antarchy:nyxite_brick_wall", + "antarchy:dream_sandstone_wall" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/wooden_buttons.json b/common/src/main/resources/data/minecraft/tags/item/wooden_buttons.json new file mode 100644 index 00000000..9f9f176f --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/wooden_buttons.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_button" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/wooden_doors.json b/common/src/main/resources/data/minecraft/tags/item/wooden_doors.json new file mode 100644 index 00000000..93bb2e7f --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/wooden_doors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_door" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/wooden_fences.json b/common/src/main/resources/data/minecraft/tags/item/wooden_fences.json new file mode 100644 index 00000000..d103ebdd --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/wooden_fences.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_fence" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/wooden_pressure_plates.json b/common/src/main/resources/data/minecraft/tags/item/wooden_pressure_plates.json new file mode 100644 index 00000000..fb1e3e81 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/wooden_pressure_plates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_pressure_plate" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/wooden_slabs.json b/common/src/main/resources/data/minecraft/tags/item/wooden_slabs.json new file mode 100644 index 00000000..d60c2f07 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/wooden_slabs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_slab" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/wooden_stairs.json b/common/src/main/resources/data/minecraft/tags/item/wooden_stairs.json new file mode 100644 index 00000000..8e1ff149 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/wooden_stairs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_stairs" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/wooden_trapdoors.json b/common/src/main/resources/data/minecraft/tags/item/wooden_trapdoors.json new file mode 100644 index 00000000..3567295e --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/wooden_trapdoors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:ouranwood_trapdoor" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/nether_fossil.json b/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/nether_fossil.json new file mode 100644 index 00000000..2a30802a --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/nether_fossil.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:soul_sand_valley", + "antarchy:dream_dunes" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/worldgen/biome/is_overworld.json b/common/src/main/resources/data/minecraft/tags/worldgen/biome/is_overworld.json new file mode 100644 index 00000000..bf1b47a2 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/worldgen/biome/is_overworld.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:cavaryn" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/worldgen/biome/is_river.json b/common/src/main/resources/data/minecraft/tags/worldgen/biome/is_river.json new file mode 100644 index 00000000..72318268 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/worldgen/biome/is_river.json @@ -0,0 +1,5 @@ +{ + "values": [ + "antarchy:elythia_river" + ] +} diff --git a/common/src/main/resources/data/minecraft/worldgen/noise/nether/temperature.json b/common/src/main/resources/data/minecraft/worldgen/noise/nether/temperature.json new file mode 100644 index 00000000..ab7b15e6 --- /dev/null +++ b/common/src/main/resources/data/minecraft/worldgen/noise/nether/temperature.json @@ -0,0 +1,7 @@ +{ + "amplitudes": [ + 1.0, + 1.0 + ], + "firstOctave": -7 +} diff --git a/common/src/main/resources/data/minecraft/worldgen/noise/nether/vegetation.json b/common/src/main/resources/data/minecraft/worldgen/noise/nether/vegetation.json new file mode 100644 index 00000000..ab7b15e6 --- /dev/null +++ b/common/src/main/resources/data/minecraft/worldgen/noise/nether/vegetation.json @@ -0,0 +1,7 @@ +{ + "amplitudes": [ + 1.0, + 1.0 + ], + "firstOctave": -7 +} diff --git a/common/src/main/resources/pack.mcmeta b/common/src/main/resources/pack.mcmeta new file mode 100644 index 00000000..a056c9a3 --- /dev/null +++ b/common/src/main/resources/pack.mcmeta @@ -0,0 +1,7 @@ +{ + "pack": { + "description": "Integrated Antarchy mod resources", + "pack_format": 15, + "_comment": "BOOGALOO" + } +} diff --git a/fabric/build.gradle b/fabric/build.gradle new file mode 100644 index 00000000..0738b295 --- /dev/null +++ b/fabric/build.gradle @@ -0,0 +1,153 @@ +plugins { + id "com.github.johnrengelman.shadow" version "7.1.2" +} + +architectury { + platformSetupLoomIde() + fabric() +} + +configurations { + common + shadowCommon + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentFabric.extendsFrom common +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings loom.officialMojangMappings() + + modImplementation "net.fabricmc:fabric-loader:${project.fabric_loader_version}" + modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" + modImplementation "software.bernie.geckolib:geckolib-fabric-${project.minecraft_version}:${project.geckolib_version}" + compileOnly("curse.maven:intapi-${project.intapi_curseforge_id}:${project.intapi_curseforge_file_id_neoforge}") + compileOnly("curse.maven:create-${project.create_curseforge_id_neoforge}:${project.create_curseforge_file_id_neoforge}") + compileOnly("curse.maven:marvel-${project.marvel_curseforge_id}:${project.marvel_curseforge_file_id}") + compileOnly("curse.maven:stellaris-${project.stellaris_curseforge_id}:${project.stellaris_curseforge_file_id}") + compileOnly("curse.maven:aperture-${project.aperture_curseforge_id}:${project.aperture_curseforge_file_id}") + compileOnly("curse.maven:inventory_pets-${project.inventory_pets_curseforge_id}:${project.inventory_pets_curseforge_file_id}") + compileOnly("curse.maven:cataclysm-${project.cataclysm_curseforge_id}:${project.cataclysm_curseforge_file_id}") + compileOnly("curse.maven:iaf-${project.iaf_curseforge_id}:${project.iaf_curseforge_file_id}") + compileOnly("curse.maven:backpack-${project.backpack_curseforge_id}:${project.backpack_curseforge_file_id}") + compileOnly("curse.maven:regions_unexplored-${project.regions_unexplored_curseforge_id}:${project.regions_unexplored_curseforge_file_id}") + compileOnly(files("$rootDir/infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge-sources.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/gravity-api-1.0.7-1.20.1.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/Cloro's Gravity Gun Mod (Release 1.3.1).jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/VanillaBackport-neoforge-1.21.1-1.1.7.6.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/soul-fire-d-neoforge-1.21-6.1.0.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/prometheus-neoforge-1.21-1.2.5.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/cloth-config-15.0.140-fabric.jar")) + compileOnly(files("$rootDir/infinite_dimensions_jars/sable-neoforge-1.21.1-2.0.3.jar")) + + annotationProcessor "org.spongepowered:mixin:0.8.7:processor" + common(project(path: ':common', configuration: 'namedElements')) { transitive false } + shadowCommon(project(path: ':common', configuration: 'namedElements')) { transitive false } +} + +loom { + mixin { + useLegacyMixinAp = true + defaultRefmapName = "antarchy.refmap.json" + } + + mods { + "${mod_id}" { + sourceSet sourceSets.main + sourceSet project(':common').sourceSets.main + } + } + + runs { + configureEach { + runDir('run') + ideConfigGenerated(true) + } + + client { + client() + setConfigName('Fabric Client') + } + + server { + server() + setConfigName('Fabric Server') + programArg('--nogui') + } + } +} + +tasks.named('compileJava', JavaCompile) { + source(project(':common').sourceSets.main.allJava) +} + +tasks.named('javadoc', Javadoc).configure { + source(project(':common').sourceSets.main.allJava) +} + +tasks.named('sourcesJar', Jar) { + from(project(':common').sourceSets.main.allSource) + exclude "antarchy-common.mixins.json" +} + +shadowJar { + exclude 'architectury.common.json' + configurations = [project.configurations.shadowCommon] + archiveClassifier.set('dev-shadow') +} + +remapJar { + injectAccessWidener = true + input.set shadowJar.archiveFile + dependsOn shadowJar + archiveClassifier.set(null) +} + +jar { + archiveClassifier.set('dev') +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} + +processResources { + inputs.property "version", project.version + inputs.property "minecraft_version", project.minecraft_version + inputs.property "fabric_loader_version", project.fabric_loader_version + inputs.property "mod_id", project.mod_id + inputs.property "mod_name", project.mod_name + inputs.property "mod_description", project.mod_description + inputs.property "mod_author", project.mod_author + inputs.property "license", project.license + inputs.property "homepage_url", project.homepage_url + inputs.property "issues_url", project.issues_url + inputs.property "sources_url", project.sources_url + inputs.property "logo_fabric", project.logo_fabric + + from(project(':common').sourceSets.main.resources) { + exclude "antarchy-common.mixins.json" + } + + filesMatching("fabric.mod.json") { + expand( + version: project.version, + minecraft_version: project.minecraft_version, + fabric_loader_version: project.fabric_loader_version, + mod_id: project.mod_id, + mod_name: project.mod_name, + mod_description: project.mod_description, + mod_author: project.mod_author, + license: project.license, + homepage_url: project.homepage_url, + issues_url: project.issues_url, + sources_url: project.sources_url, + logo_fabric: project.logo_fabric + ) + } +} + diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyConfigModuleFabric.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyConfigModuleFabric.java new file mode 100644 index 00000000..8df2d942 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyConfigModuleFabric.java @@ -0,0 +1,272 @@ +package com.craisinlord.antarchy.fabric; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonParser; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.resources.ResourceKey; + +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.Map; + +public final class AntarchyConfigModuleFabric { + private static final Gson GSON = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create(); + private static final Path CONFIG_DIR = FabricLoader.getInstance() + .getConfigDir() + .resolve(Antarchy.MODID); + private static final Path LEGACY_CONFIG_PATH = CONFIG_DIR.resolve("antarchy.json"); + private static final Map SETTINGS = buildBindings(); + + private AntarchyConfigModuleFabric() { + } + + public static void init() { + JsonObject legacy = readConfig(LEGACY_CONFIG_PATH); + Map loaded = new LinkedHashMap<>(); + Map normalized = new LinkedHashMap<>(); + + for (ConfigSection section : ConfigSection.values()) { + loaded.put(section, readConfig(section.path)); + normalized.put(section, new JsonObject()); + } + + for (Map.Entry entry : SETTINGS.entrySet()) { + String key = entry.getKey(); + SettingBinding binding = entry.getValue(); + JsonObject loadedSection = loaded.get(binding.section); + JsonElement element = loadedSection != null ? loadedSection.get(key) : null; + if (element == null && legacy != null) { + element = legacy.get(key); + } + Object value = binding.readValue(element); + binding.apply(value); + normalized.get(binding.section).add(key, binding.toJson(value)); + } + + for (Map.Entry entry : normalized.entrySet()) { + writeConfig(entry.getKey().path, entry.getValue()); + } + } + + private static JsonObject readConfig(Path path) { + if (!Files.exists(path)) { + return null; + } + + try (Reader reader = Files.newBufferedReader(path)) { + JsonElement parsed = JsonParser.parseReader(reader); + if (parsed.isJsonObject()) { + return parsed.getAsJsonObject(); + } + Antarchy.LOGGER.warn("Fabric config at {} is not a JSON object, using defaults", path); + } catch (IOException | JsonParseException e) { + Antarchy.LOGGER.warn("Failed to read Fabric config at {}, using defaults", path, e); + } + + return null; + } + + private static void writeConfig(Path path, JsonObject root) { + try { + Files.createDirectories(path.getParent()); + try (Writer writer = Files.newBufferedWriter(path)) { + GSON.toJson(root, writer); + } + } catch (IOException e) { + Antarchy.LOGGER.warn("Failed to write Fabric config at {}", path, e); + } + } + + private static Map buildBindings() { + Map getters = new LinkedHashMap<>(); + for (Method method : AntarchySettings.class.getMethods()) { + if (!isPublicStatic(method) || method.getParameterCount() != 0 || method.getReturnType() == Void.TYPE) { + continue; + } + getters.put(method.getName(), method); + } + + return Arrays.stream(AntarchySettings.class.getMethods()) + .filter(AntarchyConfigModuleFabric::isPublicStatic) + .filter(method -> method.getName().startsWith("set")) + .filter(method -> method.getParameterCount() == 1) + .sorted(Comparator.comparing(Method::getName)) + .collect(LinkedHashMap::new, (bindings, setter) -> { + String propertyName = decapitalize(setter.getName().substring(3)); + Method getter = getters.get(propertyName); + if (getter == null) { + return; + } + if (!isSupported(setter.getParameterTypes()[0], getter.getReturnType())) { + return; + } + bindings.put(propertyName, new SettingBinding(propertyName, getter, setter, ConfigSection.forProperty(propertyName))); + }, Map::putAll); + } + + private static boolean isPublicStatic(Method method) { + int modifiers = method.getModifiers(); + return java.lang.reflect.Modifier.isPublic(modifiers) && java.lang.reflect.Modifier.isStatic(modifiers); + } + + private static boolean isSupported(Class setterType, Class getterType) { + if (setterType == boolean.class || setterType == int.class || setterType == double.class || setterType == float.class) { + return getterType == setterType; + } + return setterType == String.class && ResourceKey.class.isAssignableFrom(getterType); + } + + private static String decapitalize(String value) { + if (value.isEmpty()) { + return value; + } + return Character.toLowerCase(value.charAt(0)) + value.substring(1); + } + + private enum ConfigSection { + MOBS("antarchy_mobs.json"), + TOOLS("antarchy_tools.json"), + MISC("antarchy_misc.json"); + + private final Path path; + + ConfigSection(String fileName) { + this.path = CONFIG_DIR.resolve(fileName); + } + + private static ConfigSection forProperty(String name) { + if (isMiscSetting(name)) { + return MISC; + } + if (isToolSetting(name)) { + return TOOLS; + } + return MOBS; + } + + private static boolean isMiscSetting(String name) { + return name.equals("disableInfinityBookPortalCreation") + || name.equals("rainbowAntsLeadToInfinityDimensions") + || name.equals("hushweedSporeLifetimeSeconds") + || name.equals("elythiaFireflyParticlesEnabled") + || name.equals("duplicatorTreeEnabled") + || name.equals("glowingTorchflowers") + || name.equals("glowVinesUnderLeaves") + || name.equals("entitySpecificFireOverlayEnabled") + || name.equals("dreamSandEnabled") + || name.startsWith("dreamSand") + || name.equals("ichorWitherEnabled") + || name.startsWith("diamondMinecart"); + } + + private static boolean isToolSetting(String name) { + return name.equals("sizeChangingRaysEnabled") + || name.startsWith("sizeRay") + || name.equals("shrinkingPotionDelta") + || name.equals("growthPotionDelta") + || name.startsWith("ultimate") + || name.startsWith("battleAxe") + || name.startsWith("bigBertha") + || name.startsWith("scorpionWhip") + || name.startsWith("bloodCrystal") + || name.startsWith("nightmareHelmet") + || name.startsWith("nightmareChestplate") + || name.startsWith("nightmareLeggings") + || name.startsWith("nightmareBoots") + || name.startsWith("nightmareArmorDreadAura") + || name.startsWith("nightmareSword") + || name.startsWith("basiliskDagger") + || name.startsWith("squidzooka") + || name.equals("invertProjectilesFromInvertedPlayers") + || name.startsWith("gravityGun") + || name.equals("potentNyxiteInvertedDurationSeconds") + || name.equals("corneaEarNightVisionSeconds") + || name.startsWith("mogglesVision") + || name.equals("ductTapeRepairPercentPerUse") + || name.startsWith("fallenKingCrown"); + } + } + + private static final class SettingBinding { + private final String name; + private final Method getter; + private final Method setter; + private final Class setterType; + private final ConfigSection section; + + private SettingBinding(String name, Method getter, Method setter, ConfigSection section) { + this.name = name; + this.getter = getter; + this.setter = setter; + this.setterType = setter.getParameterTypes()[0]; + this.section = section; + } + + private Object readValue(JsonElement element) { + Object defaultValue = getCurrentValue(); + if (element == null || element.isJsonNull()) { + return defaultValue; + } + + try { + if (setterType == boolean.class) { + return element.getAsBoolean(); + } + if (setterType == int.class) { + return element.getAsInt(); + } + if (setterType == double.class) { + return element.getAsDouble(); + } + if (setterType == float.class) { + return element.getAsFloat(); + } + if (setterType == String.class) { + return element.getAsString(); + } + } catch (RuntimeException e) { + Antarchy.LOGGER.warn("Invalid Fabric config value for {}, using default", name, e); + } + + return defaultValue; + } + + private void apply(Object value) { + try { + setter.invoke(null, value); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("Failed to apply config value for " + name, e); + } + } + + private JsonElement toJson(Object value) { + return GSON.toJsonTree(value); + } + + private Object getCurrentValue() { + try { + Object value = getter.invoke(null); + if (setterType == String.class && value instanceof ResourceKey resourceKey) { + return resourceKey.location().toString(); + } + return value; + } catch (IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("Failed to read config default for " + name, e); + } + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java new file mode 100644 index 00000000..7ca68aa5 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java @@ -0,0 +1,19 @@ +package com.craisinlord.antarchy.fabric; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.item.BloodCrystalShardItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import net.fabricmc.api.ModInitializer; + +public final class AntarchyFabric implements ModInitializer { + @Override + public void onInitialize() { + AntarchyFabricNetworking.register(); + AntarchyConfigModuleFabric.init(); + AntarchyFabricContent.register(); + AntarchyFabricEvents.register(); + BloodglassManager.register(); + Antarchy.init(); + BloodCrystalShardItem.SYNC_BLOODGLASS = BloodglassManager::syncBloodglass; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java new file mode 100644 index 00000000..7c174c51 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -0,0 +1,2179 @@ +package com.craisinlord.antarchy.fabric; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.HoneyedAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; + +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; + +public final class AntarchyFabricContent { + public static final boolean CREATE_LOADED = isModLoaded("create"); + private static final ResourceLocation THORAXIS_DIMENSION_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis"); + private static final long THORAXIS_SPAWN_DEBUG_INTERVAL = 200L; + private static long lastThoraxisSpawnSummaryLogTick = Long.MIN_VALUE; + private static long lastThoraxisSpawnPlacementLogTick = Long.MIN_VALUE; + private static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Antarchy.MODID); + private static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Antarchy.MODID); + private static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Antarchy.MODID); + private static final DeferredRegister ARMOR_MATERIALS = DeferredRegister.create(Registries.ARMOR_MATERIAL, Antarchy.MODID); + private static final DeferredRegister> ENTITY_TYPES = DeferredRegister.create(Registries.ENTITY_TYPE, Antarchy.MODID); + private static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, Antarchy.MODID); + private static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(Registries.PARTICLE_TYPE, Antarchy.MODID); + private static final DeferredRegister> FEATURES = DeferredRegister.create(Registries.FEATURE, Antarchy.MODID); + private static final DeferredRegister> BIOME_SOURCES = DeferredRegister.create(Registries.BIOME_SOURCE, Antarchy.MODID); + private static final DeferredRegister> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, Antarchy.MODID); + private static final DeferredRegister> ENTITY_SUB_PREDICATES = DeferredRegister.create(Registries.ENTITY_SUB_PREDICATE_TYPE, Antarchy.MODID); + private static final DeferredRegister ATTRIBUTES = DeferredRegister.create(Registries.ATTRIBUTE, Antarchy.MODID); + private static final TagKey BYPASSES_BLOODGLASS = + TagKey.create(net.minecraft.core.registries.Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath("antarchy", "bypasses_bloodglass")); + private static final DeferredHolder DOUBLE_DAMAGE_CHANCE = ATTRIBUTES.register( + "double_damage_chance", + () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.double_damage_chance", 0.0, 0.0, 1.0).setSyncable(true) + ); + private static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(Registries.MOB_EFFECT, Antarchy.MODID); + private static final DeferredRegister POTIONS = DeferredRegister.create(Registries.POTION, Antarchy.MODID); + private static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(Registries.SOUND_EVENT, Antarchy.MODID); + private static final DeferredRegister FLUIDS = DeferredRegister.create(Registries.FLUID, Antarchy.MODID); + private static final Tier ULTIMATE_TIER = new SimpleToolTier( + 3072, + 10.5F, + 0.0F, + Tiers.NETHERITE.getIncorrectBlocksForDrops(), + 25, + AntarchyFabricContent::ultimateRepairIngredient + ); + private static final Tier BLOOD_CRYSTAL_KATANA_TIER = new SimpleToolTier( + 1200, + 8.0F, + 0.0F, + Tiers.DIAMOND.getIncorrectBlocksForDrops(), + 18, + AntarchyFabricContent::bloodCrystalRepairIngredient + ); + public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); + public static final DeferredHolder SQUIDZOOKA_FIRE = registerSoundEvent("squidzooka_fire"); + public static final DeferredHolder SHRINK_RAY_SOUND = registerSoundEvent("shrink_ray"); + public static final DeferredHolder GROWTH_RAY_SOUND = registerSoundEvent("growth_ray"); + public static final DeferredHolder SIZE_RAY_CHARGE = registerSoundEvent("size_ray_charge"); + public static final DeferredHolder ANT_AMBIENT = registerSoundEvent("ant_ambient"); + public static final DeferredHolder ANT_IDLE = registerSoundEvent("ant_idle"); + public static final DeferredHolder ANT_HURT = registerSoundEvent("ant_hurt"); + public static final DeferredHolder ANT_BITE = registerSoundEvent("ant_bite"); + public static final DeferredHolder ANT_GATHER = registerSoundEvent("ant_gather"); + public static final DeferredHolder ANT_NEST = registerSoundEvent("ant_nest"); + public static final DeferredHolder CLOUD_SHARK_BITE = registerSoundEvent("cloud_shark_bite"); + public static final DeferredHolder CLOUD_SHARK_IDLE = registerSoundEvent("cloud_shark_idle"); + public static final DeferredHolder CLOUD_SHARK_HURT = registerSoundEvent("cloud_shark_hurt"); + public static final DeferredHolder CLOUD_SHARK_DEATH = registerSoundEvent("cloud_shark_death"); + public static final DeferredHolder CLOUD_SHARK_FLY = registerSoundEvent("cloud_shark_fly"); + public static final DeferredHolder CATERPILLAR_IDLE = registerSoundEvent("caterpillar_idle"); + public static final DeferredHolder CATERPILLAR_HURT = registerSoundEvent("caterpillar_hurt"); + public static final DeferredHolder CATERPILLAR_CRAWL = registerSoundEvent("caterpillar_crawl"); + public static final DeferredHolder BUTTERFLY_HURT = registerSoundEvent("butterfly_hurt"); + public static final DeferredHolder BRUTALFLY_IDLE = registerSoundEvent("brutalfly_idle"); + public static final DeferredHolder BRUTALFLY_DEATH = registerSoundEvent("brutalfly_death"); + public static final DeferredHolder ELYTHIA_FIREFLY_AMBIENT = registerSoundEvent("ambient.elythia.firefly"); + public static final DeferredHolder MISSILE_SQUID_AMBIENT = registerSoundEvent("missile_squid_ambient"); + public static final DeferredHolder MISSILE_SQUID_HURT = registerSoundEvent("missile_squid_hurt"); + public static final DeferredHolder MISSILE_SQUID_DEATH = registerSoundEvent("missile_squid_death"); + public static final DeferredHolder MISSILE_SQUID_ATTACK = registerSoundEvent("missile_squid_attack"); + public static final DeferredHolder KRAKEN_FLYING_LOOP = registerSoundEvent("kraken_flying_loop"); + public static final DeferredHolder KRAKEN_FLYING_SIDEWAYS_LOOP = registerSoundEvent("kraken_flying_sideways_loop"); + public static final DeferredHolder KRAKEN_ATTACK = registerSoundEvent("kraken_attack"); + public static final DeferredHolder KRAKEN_SPIN = registerSoundEvent("kraken_spin"); + public static final DeferredHolder KRAKEN_ROAR = registerSoundEvent("kraken_roar"); + public static final DeferredHolder KRAKEN_SUMMON = registerSoundEvent("kraken_summon"); + public static final DeferredHolder KRAKEN_HURT = registerSoundEvent("kraken_hurt"); + public static final DeferredHolder KRAKEN_DEATH = registerSoundEvent("kraken_death"); + public static final DeferredHolder BASILISK_IDLE_LOOP = registerSoundEvent("basilisk_idle_loop"); + public static final DeferredHolder BASILISK_SLITHER_LOOP = registerSoundEvent("basilisk_slither_loop"); + public static final DeferredHolder BASILISK_BITE = registerSoundEvent("basilisk_bite"); + public static final DeferredHolder BASILISK_HISS = registerSoundEvent("basilisk_hiss"); + public static final DeferredHolder BASILISK_HURT = registerSoundEvent("basilisk_hurt"); + public static final DeferredHolder BASILISK_DEATH = registerSoundEvent("basilisk_death"); + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_AMBIENT = registerSoundEvent("thoraxis_nightmare_wastes_ambient"); + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_ADDITIONS = registerSoundEvent("thoraxis_nightmare_wastes_additions"); + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_MOOD = registerSoundEvent("thoraxis_nightmare_wastes_mood"); + public static final DeferredHolder THORAXIS_DREAM_DUNES_AMBIENT = registerSoundEvent("thoraxis_dream_dunes_ambient"); + public static final DeferredHolder THORAXIS_DREAM_DUNES_ADDITIONS = registerSoundEvent("thoraxis_dream_dunes_additions"); + public static final DeferredHolder THORAXIS_DREAM_DUNES_MOOD = registerSoundEvent("thoraxis_dream_dunes_mood"); + public static final DeferredHolder THORAXIS_LUCID_POOLS_AMBIENT = registerSoundEvent("thoraxis_lucid_pools_ambient"); + public static final DeferredHolder THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions"); + public static final DeferredHolder THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood"); + public static final DeferredHolder LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); + public static final DeferredHolder LUCID_FLYING = registerSoundEvent("lucid_flying"); + public static final DeferredHolder LUCID_ATTACK = registerSoundEvent("lucid_attack"); + public static final DeferredHolder LUCID_BOLT_SOUND = registerSoundEvent("lucid_bolt"); + public static final DeferredHolder LUCID_HURT = registerSoundEvent("lucid_hurt"); + public static final DeferredHolder LUCID_DEATH = registerSoundEvent("lucid_death"); + public static final DeferredHolder REVERIE_IDLE = registerSoundEvent("reverie_idle"); + public static final DeferredHolder REVERIE_HURT = registerSoundEvent("reverie_hurt"); + public static final DeferredHolder REVERIE_WORRY = registerSoundEvent("reverie_worry"); + public static final DeferredHolder REVERIE_SAVE = registerSoundEvent("reverie_save"); + public static final DeferredHolder REVERIE_JOIN_PLAYER = registerSoundEvent("reverie_join_player"); + public static final DeferredHolder REVERIE_ALERT = registerSoundEvent("reverie_alert"); + public static final DeferredHolder FLYING_SQUIRREL_IDLE = registerSoundEvent("flying_squirrel_idle"); + public static final DeferredHolder FLYING_SQUIRREL_BEG = registerSoundEvent("flying_squirrel_beg"); + public static final DeferredHolder FLYING_SQUIRREL_NUT = registerSoundEvent("flying_squirrel_nut"); + public static final DeferredHolder FLYING_SQUIRREL_GLIDE_LOOP = registerSoundEvent("flying_squirrel_glide_loop"); + public static final DeferredHolder FLYING_SQUIRREL_HURT = registerSoundEvent("flying_squirrel_hurt"); + public static final DeferredHolder FLYING_SQUIRREL_DEATH = registerSoundEvent("flying_squirrel_death"); + public static final DeferredHolder NIGHTMARE_IDLE = registerSoundEvent("nightmare_idle"); + public static final DeferredHolder NIGHTMARE_HURT = registerSoundEvent("nightmare_hurt"); + public static final DeferredHolder NIGHTMARE_ROAR = registerSoundEvent("nightmare_roar"); + public static final DeferredHolder NIGHTMARE_DEATH = registerSoundEvent("nightmare_death"); + public static final DeferredHolder NIGHTMARE_BITE = registerSoundEvent("nightmare_bite"); + public static final DeferredHolder NIGHTMARE_FLAP = registerSoundEvent("nightmare_flap"); + public static final DeferredHolder TRIFFID_ATTACK = registerSoundEvent("triffid_attack"); + public static final DeferredHolder TRIFFID_GRAB = registerSoundEvent("triffid_grab"); + public static final DeferredHolder TRIFFID_HURT = registerSoundEvent("triffid_hurt"); + public static final DeferredHolder TRIFFID_DEATH = registerSoundEvent("triffid_death"); + public static final DeferredHolder TRIFFID_HISS = registerSoundEvent("triffid_hiss"); + public static final DeferredHolder TRIFFID_GROWL = registerSoundEvent("triffid_growl"); + public static final DeferredHolder MANTIS_AMBIENT = registerSoundEvent("mantis_ambient"); + public static final DeferredHolder MANTIS_HURT = registerSoundEvent("mantis_hurt"); + public static final DeferredHolder MANTIS_ATTACK = registerSoundEvent("mantis_attack"); + public static final DeferredHolder MANTIS_FLY_LOOP = registerSoundEvent("mantis_fly_loop"); + public static final DeferredHolder GRAVITY_GUN_PICKUP = registerSoundEvent("gravity_gun_pickup"); + public static final DeferredHolder GRAVITY_GUN_DROP = registerSoundEvent("gravity_gun_drop"); + public static final DeferredHolder GRAVITY_GUN_HOLD_LOOP = registerSoundEvent("gravity_gun_hold_loop"); + public static final DeferredHolder GRAVITY_GUN_LAUNCH = registerSoundEvent("gravity_gun_launch"); + public static final DeferredHolder GRAVITY_GUN_DRYFIRE = registerSoundEvent("gravity_gun_dryfire"); + public static final DeferredHolder BED_BUG_AMBIENT = registerSoundEvent("bed_bug_ambient"); + public static final DeferredHolder BED_BUG_HURT = registerSoundEvent("bed_bug_hurt"); + public static final DeferredHolder BED_BUG_ATTACK = registerSoundEvent("bed_bug_attack"); + public static final DeferredHolder WASP_IDLE = registerSoundEvent("wasp_idle"); + public static final DeferredHolder WASP_HURT = registerSoundEvent("wasp_hurt"); + public static final DeferredHolder WASP_ATTACK = registerSoundEvent("wasp_attack"); + public static final DeferredHolder WASP_DEATH = registerSoundEvent("wasp_death"); + public static final DeferredHolder SCORPION_AMBIENT = registerSoundEvent("scorpion_ambient"); + public static final DeferredHolder SCORPION_HURT = registerSoundEvent("scorpion_hurt"); + public static final DeferredHolder SCORPION_ATTACK = registerSoundEvent("scorpion_attack"); + public static final DeferredHolder EMPEROR_SCORPION_AMBIENT = registerSoundEvent("emperor_scorpion_ambient"); + public static final DeferredHolder EMPEROR_SCORPION_HURT = registerSoundEvent("emperor_scorpion_hurt"); + public static final DeferredHolder EMPEROR_SCORPION_ATTACK = registerSoundEvent("emperor_scorpion_attack"); + public static final DeferredHolder EMPEROR_SCORPION_ROAR = registerSoundEvent("emperor_scorpion_roar"); + public static final DeferredHolder MOLEWORM_AMBIENT = registerSoundEvent("moleworm_ambient"); + public static final DeferredHolder MOLEWORM_HURT = registerSoundEvent("moleworm_hurt"); + public static final DeferredHolder MOLEWORM_ATTACK = registerSoundEvent("moleworm_attack"); + public static final DeferredHolder MOLEWORM_DIG = registerSoundEvent("moleworm_dig"); + public static final DeferredHolder MOLEVORE_AMBIENT = registerSoundEvent("molevore_ambient"); + public static final DeferredHolder MOLEVORE_HURT = registerSoundEvent("molevore_hurt"); + public static final DeferredHolder MOLEVORE_ATTACK = registerSoundEvent("molevore_attack"); + public static final DeferredHolder MOLEVORE_DIG = registerSoundEvent("molevore_dig"); + public static final DeferredHolder DUCT_TAPE_USE = registerSoundEvent("duct_tape_use"); + public static final DeferredHolder POTENT_NYXITE_HYPNOTIC_GAS = registerSoundEvent("potent_nyxite_hypnotic_gas"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_START = registerSoundEvent("potent_nyxite_geyser_eruption_start"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_ACTIVE = registerSoundEvent("potent_nyxite_geyser_eruption_active"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_START = registerSoundEvent("potent_nyxite_geyser_continuous_start"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_ACTIVE = registerSoundEvent("potent_nyxite_geyser_continuous_active"); + private static final DeferredHolder ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate", + () -> new ArmorMaterial( + createUltimateArmorDefense(), + 10, + SoundEvents.ARMOR_EQUIP_DIAMOND, + AntarchyFabricContent::ultimateRepairIngredient, + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ultimate_armor"))), + 2.0F, + (float) AntarchySettings.ultimateArmorKnockbackResistance() + )); + private static final DeferredHolder NIGHTMARE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("nightmare", + () -> new ArmorMaterial( + createNightmareArmorDefense(), + 10, + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(NIGHTMARE_SCALE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_armor"))), + 3.0F, + (float) AntarchySettings.nightmareArmorKnockbackResistance() + )); + private static final DeferredHolder BLOOD_CRYSTAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("blood_crystal", + () -> new ArmorMaterial( + createBloodCrystalArmorDefense(), + 30, + SoundEvents.ARMOR_EQUIP_DIAMOND, + AntarchyFabricContent::bloodCrystalRepairIngredient, + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal"))), + 0.0F, + 0.0F + )); + private static final DeferredHolder MOGGLES_ARMOR_MATERIAL = ARMOR_MATERIALS.register("moggles", + () -> new ArmorMaterial( + createMogglesArmorDefense(), + 12, + SoundEvents.ARMOR_EQUIP_GOLD, + () -> Ingredient.of(Items.GOLD_INGOT), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "moggles"))), + 0.0F, + 0.0F + )); + private static final DeferredHolder FALLEN_KING_CROWN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("fallen_king_crown", + () -> new ArmorMaterial( + createFallenKingCrownDefense(), + 25, + SoundEvents.ARMOR_EQUIP_GOLD, + () -> Ingredient.of(Items.GOLD_INGOT), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "fallen_king_crown"))), + 0.0F, + 0.0F + )); + public static final DeferredBlock DUPLICATOR_LOG = BLOCKS.register("duplicator_log", + () -> new DuplicatorLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_LOG).randomTicks())); + public static final DeferredBlock OURANWOOD_LOG = BLOCKS.register("ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + public static final DeferredBlock OURANWOOD_WOOD = BLOCKS.register("ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + public static final DeferredBlock MOSSY_OURANWOOD_LOG = BLOCKS.register("mossy_ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + public static final DeferredBlock MOSSY_OURANWOOD_WOOD = BLOCKS.register("mossy_ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + public static final DeferredBlock STRIPPED_OURANWOOD_LOG = BLOCKS.register("stripped_ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + public static final DeferredBlock STRIPPED_OURANWOOD_WOOD = BLOCKS.register("stripped_ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + public static final DeferredBlock OURANWOOD_PLANKS = BLOCKS.register("ouranwood_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + public static final DeferredBlock OURANWOOD_STAIRS = BLOCKS.register("ouranwood_stairs", + () -> new net.minecraft.world.level.block.StairBlock(OURANWOOD_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + public static final DeferredBlock OURANWOOD_SLAB = BLOCKS.register("ouranwood_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + public static final DeferredBlock OURANWOOD_FENCE = BLOCKS.register("ouranwood_fence", + () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + public static final DeferredBlock OURANWOOD_FENCE_GATE = BLOCKS.register("ouranwood_fence_gate", + () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + public static final DeferredBlock OURANWOOD_DOOR = BLOCKS.register("ouranwood_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + public static final DeferredBlock OURANWOOD_TRAPDOOR = BLOCKS.register("ouranwood_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + public static final DeferredBlock OURANWOOD_PRESSURE_PLATE = BLOCKS.register("ouranwood_pressure_plate", + () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + public static final DeferredBlock OURANWOOD_BUTTON = BLOCKS.register("ouranwood_button", + () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + public static final DeferredBlock OURANWOOD_LEAVES = BLOCKS.register("ouranwood_leaves", + () -> new OuranwoodLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + public static final DeferredBlock OURANWOOD_ACORN_BLOCK = BLOCKS.register("ouranwood_acorn", + () -> new OuranwoodAcornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock ORANGE_MILKWEED = BLOCKS.register("orange_milkweed", + () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + public static final DeferredBlock PINK_MILKWEED = BLOCKS.register("pink_milkweed", + () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + public static final DeferredBlock TORCHFLOWER_BUSH = BLOCKS.register("torchflower_bush", + () -> new TorchflowerBushBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY) + .lightLevel(state -> AntarchySettings.glowingTorchflowers() ? 15 : 0))); + public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", + () -> new net.minecraft.world.level.block.StandingSignBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", + () -> new net.minecraft.world.level.block.WallSignBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + public static final DeferredBlock OURANWOOD_HANGING_SIGN = BLOCKS.register("ouranwood_hanging_sign", + () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + public static final DeferredBlock OURANWOOD_WALL_HANGING_SIGN = BLOCKS.register("ouranwood_wall_hanging_sign", + () -> new net.minecraft.world.level.block.WallHangingSignBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + public static final DeferredBlock DUPLICATOR_SAPLING = BLOCKS.register("duplicator_sapling", + () -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock DUCT_TAPE = BLOCKS.register("duct_tape", + () -> new DuctTapeBlock(BlockBehaviour.Properties.of() + .strength(0.2F) + .sound(SoundType.WOOL) + .noOcclusion() + .replaceable())); + public static final DeferredBlock INFESTED_ROOTED_DIRT = BLOCKS.register("infested_rooted_dirt", + () -> new InfestedRootedDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.ROOTED_DIRT).randomTicks())); + public static final DeferredBlock INFESTED_COARSE_DIRT = BLOCKS.register("infested_coarse_dirt", + () -> new InfestedCoarseDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).randomTicks())); + public static final DeferredBlock NYXITE = BLOCKS.register("nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE = BLOCKS.register("polished_nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock CHISELED_NYXITE = BLOCKS.register("chiseled_nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICKS = BLOCKS.register("nyxite_bricks", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock NYXITE_STAIRS = BLOCKS.register("nyxite_stairs", + () -> new net.minecraft.world.level.block.StairBlock(NYXITE.get().defaultBlockState(), nyxiteProperties())); + public static final DeferredBlock NYXITE_SLAB = BLOCKS.register("nyxite_slab", + () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); + public static final DeferredBlock NYXITE_WALL = BLOCKS.register("nyxite_wall", + () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE_STAIRS = BLOCKS.register("polished_nyxite_stairs", + () -> new net.minecraft.world.level.block.StairBlock(POLISHED_NYXITE.get().defaultBlockState(), nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE_SLAB = BLOCKS.register("polished_nyxite_slab", + () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE_WALL = BLOCKS.register("polished_nyxite_wall", + () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICK_STAIRS = BLOCKS.register("nyxite_brick_stairs", + () -> new net.minecraft.world.level.block.StairBlock(NYXITE_BRICKS.get().defaultBlockState(), nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICK_SLAB = BLOCKS.register("nyxite_brick_slab", + () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICK_WALL = BLOCKS.register("nyxite_brick_wall", + () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); + public static final DeferredBlock TRIFFID_GOO_BLOCK = BLOCKS.register("triffid_goo_block", + () -> new com.craisinlord.antarchy.content.block.TriffidGooBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SLIME_BLOCK).noOcclusion().isViewBlocking((s, l, p) -> false).isSuffocating((s, l, p) -> false))); + public static final DeferredBlock CLOUD_BLOCK = BLOCKS.register("cloud_block", + () -> new com.craisinlord.antarchy.content.block.CloudBlock( + AntarchyFabricContent::cloudBucketItem, + BlockBehaviour.Properties.ofFullCopy(Blocks.POWDER_SNOW).noLootTable().noOcclusion() + )); + public static final DeferredBlock PALE_NYXITE = BLOCKS.register("pale_nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock NYXITE_SPIKE = BLOCKS.register("nyxite_spike", + () -> new NyxiteSpikeBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POINTED_DRIPSTONE))); + public static final DeferredBlock POTENT_NYXITE = BLOCKS.register("potent_nyxite", + () -> new PotentNyxiteBlock( + AntarchyFabricContent::potentNyxiteBlockEntityType, + BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK).lightLevel(state -> 3) + )); + public static final DeferredBlock UMBRAL_MOSS_BLOCK = BLOCKS.register("umbral_moss_block", + () -> new UmbralMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); + public static final DeferredBlock UMBRAL_MOSS_CARPET = BLOCKS.register("umbral_moss_carpet", + () -> new UmbralMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion())); + public static final DeferredHolder, SimpleParticleType> DREAM_FIRE_FLAME = PARTICLE_TYPES.register("dream_fire_flame", + () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas", + () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD = PARTICLE_TYPES.register("hypnotic_gas_cloud", + () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_DOWN = PARTICLE_TYPES.register("hypnotic_gas_down", + () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD_DOWN = PARTICLE_TYPES.register("hypnotic_gas_cloud_down", + () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> FIREFLY = PARTICLE_TYPES.register("firefly", + () -> simpleParticleType()); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", + () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", + () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_POOF = PARTICLE_TYPES.register("inverted_geyser_poof", + () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_ERUPTION = PARTICLE_TYPES.register("inverted_geyser_eruption", + () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); + public static final DeferredBlock DREAM_TORCH = BLOCKS.register("dream_torch", + () -> new DreamTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); + public static final DeferredBlock DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch", + () -> new DreamWallTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_WALL_TORCH))); + public static final DeferredBlock DREAM_LANTERN = BLOCKS.register("dream_lantern", + () -> new net.minecraft.world.level.block.LanternBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_LANTERN))); + public static final DeferredBlock DREAM_CAMPFIRE = BLOCKS.register("dream_campfire", + () -> new DreamCampfireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_CAMPFIRE))); + public static final DeferredBlock DREAM_FIRE = BLOCKS.register("dream_fire", + () -> new DreamFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); + public static final DeferredBlock DREAM_CEILING_FIRE = BLOCKS.register("dream_fire_ceiling", + () -> new DreamCeilingFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); + public static final DeferredBlock BED_BUG_EGG = BLOCKS.register("bed_bug_egg", + () -> new BedBugEggBlock(BlockBehaviour.Properties.of() + .strength(0.15F) + .sound(SoundType.METAL) + .randomTicks() + .noOcclusion() + .noCollission() + .replaceable())); + public static final DeferredBlock WASP_NEST = BLOCKS.register("wasp_nest", + () -> new WaspNestBlock(AntarchyFabricContent::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST))); + public static final DeferredBlock OURANWOOD_SQUIRREL_NEST = BLOCKS.register("ouranwood_squirrel_nest", + () -> new com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).noLootTable())); + public static final DeferredBlock HUSHWEED = BLOCKS.register("hushweed", + () -> new HushweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AZALEA).noCollission().noOcclusion())); + public static final DeferredHolder DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new); + public static final DeferredHolder PARALYZED = MOB_EFFECTS.register("paralyzed", ParalyzedMobEffect::new); + public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); + public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); + private static final DeferredHolder BLOODGLASS_MAX_HEARTS = ATTRIBUTES.register( + "bloodglass_max_hearts", + () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.bloodglass_max_hearts", 0.0, 0.0, 8.0).setSyncable(true) + ); + public static final DeferredHolder DREAD_POTION = POTIONS.register("dread", + () -> new Potion(new MobEffectInstance(mobEffectHolder(DREAD), 600))); + public static final DeferredHolder LONG_DREAD = POTIONS.register("long_dread", + () -> new Potion("dread", new MobEffectInstance(mobEffectHolder(DREAD), 2400))); + public static final DeferredHolder INVERSION = POTIONS.register("inversion", + () -> new Potion(new MobEffectInstance(mobEffectHolder(INVERTED), 600))); + public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", + () -> new Potion("inversion", new MobEffectInstance(mobEffectHolder(INVERTED), 2400))); + public static final DeferredHolder SHRINKING_EFFECT = MOB_EFFECTS.register("shrinking", ShrinkMobEffect::new); + public static final DeferredHolder GROWTH_EFFECT = MOB_EFFECTS.register("growth", GrowthMobEffect::new); + public static final DeferredHolder PARALYSIS = POTIONS.register("paralysis", + () -> new Potion(new MobEffectInstance(mobEffectHolder(PARALYZED), 200))); + public static final DeferredHolder LONG_PARALYSIS = POTIONS.register("long_paralysis", + () -> new Potion("paralysis", new MobEffectInstance(mobEffectHolder(PARALYZED), 400))); + public static final DeferredHolder HASTE = POTIONS.register("haste", + () -> new Potion(new MobEffectInstance(MobEffects.DIG_SPEED, 1200, 0))); + public static final DeferredHolder STRONG_HASTE = POTIONS.register("strong_haste", + () -> new Potion("haste", new MobEffectInstance(MobEffects.DIG_SPEED, 600, 1))); + public static final DeferredHolder SHRINKING = POTIONS.register("shrinking", + () -> new Potion(new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 1200, 0))); + public static final DeferredHolder STRONG_SHRINKING = POTIONS.register("strong_shrinking", + () -> new Potion("shrinking", new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 900, 1))); + public static final DeferredHolder EXTREME_SHRINKING = POTIONS.register("extreme_shrinking", + () -> new Potion("shrinking", new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 600, 2))); + public static final DeferredHolder GROWING = POTIONS.register("growing", + () -> new Potion(new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 1200, 0))); + public static final DeferredHolder STRONG_GROWING = POTIONS.register("strong_growing", + () -> new Potion("growing", new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 900, 1))); + public static final DeferredHolder EXTREME_GROWING = POTIONS.register("extreme_growing", + () -> new Potion("growing", new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 600, 2))); + public static final DeferredHolder ICHOR = FLUIDS.register("ichor", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Source( + () -> lookupFlowingFluid("ichor"), + () -> lookupFlowingFluid("flowing_ichor"), + () -> lookupItem("ichor_bucket"), + "ichor", + 4, + 1, + 5 + )); + public static final DeferredHolder FLOWING_ICHOR = FLUIDS.register("flowing_ichor", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Flowing( + () -> lookupFlowingFluid("ichor"), + () -> lookupFlowingFluid("flowing_ichor"), + () -> lookupItem("ichor_bucket"), + "ichor", + 4, + 1, + 5 + )); + public static final DeferredBlock ICHOR_BLOCK = BLOCKS.register("ichor", + () -> new LiquidBlock((net.minecraft.world.level.material.FlowingFluid) ICHOR.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); + + public static final DeferredHolder ANTIWATER = FLUIDS.register("antiwater", + AntiwaterFluid.Source::new); + public static final DeferredHolder FLOWING_ANTIWATER = FLUIDS.register("flowing_antiwater", + AntiwaterFluid.Flowing::new); + public static final DeferredBlock ANTIWATER_BLOCK = BLOCKS.register("antiwater", + () -> new AntiwaterLiquidBlock((net.minecraft.world.level.material.FlowingFluid) ANTIWATER.get(), + BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); + public static final DeferredHolder, EntityType> RED_ANT = ENTITY_TYPES.register("red_ant", + () -> buildAntType(RedAntEntity::new, MobCategory.CREATURE, "red_ant")); + public static final DeferredHolder, EntityType> BROWN_ANT = ENTITY_TYPES.register("brown_ant", + () -> buildAntType(BrownAntEntity::new, MobCategory.CREATURE, "brown_ant")); + public static final DeferredHolder, EntityType> RAINBOW_ANT = ENTITY_TYPES.register("rainbow_ant", + () -> buildAntType(RainbowAntEntity::new, MobCategory.CREATURE, "rainbow_ant")); + public static final DeferredHolder, EntityType> MOLEWORM = ENTITY_TYPES.register("moleworm", + () -> EntityType.Builder.of(MolewormEntity::new, MobCategory.MONSTER) + .sized(0.4F, 0.3F) + .clientTrackingRange(8) + .build("moleworm")); + public static final DeferredHolder, EntityType> MANTIS = ENTITY_TYPES.register("mantis", + () -> EntityType.Builder.of(MantisEntity::new, MobCategory.MONSTER) + .sized(3.125F, 2.5F) + .clientTrackingRange(8) + .build("mantis")); + public static final DeferredHolder, EntityType> OURANWOOD_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_boat", + () -> EntityType.Builder.of(OuranwoodBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("ouranwood_boat")); + public static final DeferredHolder, EntityType> OURANWOOD_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_chest_boat", + () -> EntityType.Builder.of(OuranwoodChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("ouranwood_chest_boat")); + public static final DeferredHolder, EntityType> MOLEVORE = ENTITY_TYPES.register("molevore", + () -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER) + .sized(1.95F, 1.1F) + .clientTrackingRange(10) + .build("molevore")); + public static final DeferredHolder, EntityType> TRIFFID = ENTITY_TYPES.register("triffid", + () -> EntityType.Builder.of(TriffidEntity::new, MobCategory.MONSTER) + .sized(2.0F, 5.0F) + .clientTrackingRange(10) + .build("triffid")); + public static final DeferredHolder, EntityType> BED_BUG = ENTITY_TYPES.register("bed_bug", + () -> EntityType.Builder.of(BedBugEntity::new, MobCategory.CREATURE) + .sized(1.15F, 0.8F) + .clientTrackingRange(8) + .build("bed_bug")); + public static final DeferredHolder, EntityType> WASP = ENTITY_TYPES.register("wasp", + () -> EntityType.Builder.of(WaspEntity::new, MobCategory.MONSTER) + .sized(0.8625F, 1.365F) + .clientTrackingRange(8) + .build("wasp")); + public static final DeferredHolder, EntityType> BOMBER = ENTITY_TYPES.register("bomber", + () -> EntityType.Builder.of(BomberEntity::new, MobCategory.MONSTER) + .sized(0.55F, 0.75F) + .clientTrackingRange(8) + .build("bomber")); + public static final DeferredHolder, EntityType> SHRINK_RAY_PROJECTILE = ENTITY_TYPES.register("shrink_ray_projectile", + () -> EntityType.Builder.of(SizeRayProjectileEntity::createShrink, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("shrink_ray_projectile")); + public static final DeferredHolder, EntityType> GROWTH_RAY_PROJECTILE = ENTITY_TYPES.register("growth_ray_projectile", + () -> EntityType.Builder.of(SizeRayProjectileEntity::createGrowth, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("growth_ray_projectile")); + public static final DeferredBlock RED_ANT_NEST = BLOCKS.register("red_ant_nest", + () -> new AntNestBlock( + RED_ANT, + AntarchyFabricContent::antNestBlockEntityType, + true, + BlockBehaviour.Properties.ofFullCopy(Blocks.MAGMA_BLOCK).lightLevel(state -> 3).noLootTable() + )); + public static final DeferredBlock BROWN_ANT_NEST = BLOCKS.register("brown_ant_nest", + () -> new AntNestBlock(BROWN_ANT, AntarchyFabricContent::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); + public static final DeferredBlock RAINBOW_ANT_NEST = BLOCKS.register("rainbow_ant_nest", + () -> new AntNestBlock(RAINBOW_ANT, AntarchyFabricContent::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); + public static final DeferredBlock URANIUM_ORE = BLOCKS.register("uranium_ore", + () -> createOre(Blocks.EMERALD_ORE, 4, 8)); + public static final DeferredBlock DEEPSLATE_URANIUM_ORE = BLOCKS.register("deepslate_uranium_ore", + () -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8)); + public static final DeferredBlock TITANIUM_ORE = BLOCKS.register("titanium_ore", + () -> createOre(Blocks.DIAMOND_ORE, 4, 8)); + public static final DeferredBlock DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore", + () -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8)); + public static final DeferredBlock URANIUM_BLOCK = BLOCKS.register("uranium_block", + () -> createStorageBlock(Blocks.EMERALD_BLOCK)); + public static final DeferredBlock TITANIUM_BLOCK = BLOCKS.register("titanium_block", + () -> createStorageBlock(Blocks.DIAMOND_BLOCK)); + public static final DeferredBlock RAW_URANIUM_BLOCK = BLOCKS.register("raw_uranium_block", + () -> createRawStorageBlock(Blocks.RAW_GOLD_BLOCK)); + public static final DeferredBlock RAW_TITANIUM_BLOCK = BLOCKS.register("raw_titanium_block", + () -> createRawStorageBlock(Blocks.RAW_IRON_BLOCK)); + public static final DeferredBlock CUT_URANIUM = BLOCKS.register("cut_uranium", + () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); + public static final DeferredBlock CUT_TITANIUM = BLOCKS.register("cut_titanium", + () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); + public static final DeferredBlock CUT_URANIUM_SLAB = BLOCKS.register("cut_uranium_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); + public static final DeferredBlock CUT_TITANIUM_SLAB = BLOCKS.register("cut_titanium_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); + public static final DeferredBlock CUT_URANIUM_STAIRS = BLOCKS.register("cut_uranium_stairs", + () -> new net.minecraft.world.level.block.StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); + public static final DeferredBlock CUT_TITANIUM_STAIRS = BLOCKS.register("cut_titanium_stairs", + () -> new net.minecraft.world.level.block.StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); + public static final DeferredBlock CHISELED_URANIUM = BLOCKS.register("chiseled_uranium", + () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); + public static final DeferredBlock CHISELED_TITANIUM = BLOCKS.register("chiseled_titanium", + () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); + public static final DeferredBlock URANIUM_BULB = BLOCKS.register("uranium_bulb", + () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); + public static final DeferredBlock TITANIUM_BULB = BLOCKS.register("titanium_bulb", + () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); + public static final DeferredBlock URANIUM_DOOR = BLOCKS.register("uranium_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); + public static final DeferredBlock TITANIUM_DOOR = BLOCKS.register("titanium_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); + public static final DeferredBlock URANIUM_TRAPDOOR = BLOCKS.register("uranium_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); + public static final DeferredBlock TITANIUM_TRAPDOOR = BLOCKS.register("titanium_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); + public static final DeferredBlock URANIUM_BARS = BLOCKS.register("uranium_bars", + () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); + public static final DeferredBlock TITANIUM_BARS = BLOCKS.register("titanium_bars", + () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); + public static final DeferredBlock ANTIMETAL = BLOCKS.register("antimetal", + () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BASALT))); + public static final DeferredBlock POLISHED_ANTIMETAL = BLOCKS.register("polished_antimetal", + () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POLISHED_BASALT))); + public static final DeferredBlock ANTIMETAL_SCAFFOLDING = BLOCKS.register("antimetal_scaffolding", + () -> new com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SCAFFOLDING))); + public static final DeferredBlock CORNEA_STALK = BLOCKS.register("cornea_stalk", + () -> new CorneaStalkBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SWEET_BERRY_BUSH).randomTicks())); + public static final DeferredBlock SMALL_BLOOD_CRYSTAL_BUD = BLOCKS.register("small_blood_crystal_bud", + () -> new AmethystClusterBlock(3.0F, 4.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.SMALL_AMETHYST_BUD))); + public static final DeferredBlock MEDIUM_BLOOD_CRYSTAL_BUD = BLOCKS.register("medium_blood_crystal_bud", + () -> new AmethystClusterBlock(4.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.MEDIUM_AMETHYST_BUD))); + public static final DeferredBlock LARGE_BLOOD_CRYSTAL_BUD = BLOCKS.register("large_blood_crystal_bud", + () -> new AmethystClusterBlock(5.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.LARGE_AMETHYST_BUD))); + public static final DeferredBlock BUDDING_BLOOD_CRYSTAL = BLOCKS.register("budding_blood_crystal", + () -> new BuddingBloodCrystalBlock( + BlockBehaviour.Properties.ofFullCopy(Blocks.BUDDING_AMETHYST), + AntarchyFabricContent::smallBloodCrystalBudBlock, + AntarchyFabricContent::mediumBloodCrystalBudBlock, + AntarchyFabricContent::largeBloodCrystalBudBlock, + AntarchyFabricContent::bloodCrystalCrystalBlock + )); + public static final DeferredBlock BLOOD_CRYSTAL = BLOCKS.register("blood_crystal_block", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); + public static final DeferredBlock BLOOD_CRYSTAL_CRYSTAL = BLOCKS.register("blood_crystal_cluster", + () -> new AmethystClusterBlock(7.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_CLUSTER))); + public static final DeferredBlock DREAM_SAND = BLOCKS.register("dream_sand", + () -> new DreamSandBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SAND))); + public static final DeferredBlock DREAM_SANDSTONE = BLOCKS.register("dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE))); + public static final DeferredBlock CHISELED_DREAM_SANDSTONE = BLOCKS.register("chiseled_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CHISELED_SANDSTONE))); + public static final DeferredBlock CUT_DREAM_SANDSTONE = BLOCKS.register("cut_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE))); + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE = BLOCKS.register("smooth_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE))); + public static final DeferredBlock DREAM_SANDSTONE_STAIRS = BLOCKS.register("dream_sandstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_STAIRS))); + public static final DeferredBlock DREAM_SANDSTONE_SLAB = BLOCKS.register("dream_sandstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_SLAB))); + public static final DeferredBlock DREAM_SANDSTONE_WALL = BLOCKS.register("dream_sandstone_wall", + () -> new net.minecraft.world.level.block.WallBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_WALL))); + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_STAIRS = BLOCKS.register("smooth_dream_sandstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(SMOOTH_DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_STAIRS))); + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_SLAB = BLOCKS.register("smooth_dream_sandstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_SLAB))); + public static final DeferredBlock CUT_DREAM_SANDSTONE_SLAB = BLOCKS.register("cut_dream_sandstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB))); + public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", + () -> BlockEntityType.Builder.of( + AntNestBlockEntity::new, + RED_ANT_NEST.get(), + BROWN_ANT_NEST.get(), + RAINBOW_ANT_NEST.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> DREAM_CAMPFIRE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("dream_campfire", + () -> BlockEntityType.Builder.of( + DreamCampfireBlockEntity::new, + DREAM_CAMPFIRE.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> WASP_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("wasp_nest", + () -> BlockEntityType.Builder.of( + WaspNestBlockEntity::new, + WASP_NEST.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> HUSHWEED_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("hushweed", + () -> BlockEntityType.Builder.of( + HushweedBlockEntity::new, + HUSHWEED.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> POTENT_NYXITE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("potent_nyxite", + () -> BlockEntityType.Builder.of( + (pos, state) -> new PotentNyxiteBlockEntity(pos, state, AntarchyFabricContent::potentNyxiteBlockEntityType), + POTENT_NYXITE.get() + ).build(null)); + public static final DeferredHolder, RedAntNestFeature> RED_ANT_NEST_FEATURE = FEATURES.register("red_ant_nest", + () -> new RedAntNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, BrownAntNestFeature> BROWN_ANT_NEST_FEATURE = FEATURES.register("brown_ant_nest", + () -> new BrownAntNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, RainbowAntNestFeature> RAINBOW_ANT_NEST_FEATURE = FEATURES.register("rainbow_ant_nest", + () -> new RainbowAntNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, TermiteNestFeature> TERMITE_NEST_FEATURE = FEATURES.register("termite_nest", + () -> new TermiteNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_LARGE_TREE = FEATURES.register("ouranwood_large_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_YOUNG_TREE = FEATURES.register("ouranwood_young_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_MEDIUM_TREE = FEATURES.register("ouranwood_medium_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodCocoonTreeFeature> OURANWOOD_COCOON_TREE = FEATURES.register("ouranwood_cocoon_tree", + () -> new OuranwoodCocoonTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.MEADOW)); + public static final DeferredHolder, ElythiaFloraFeature> FLOWER_FOREST_MILKWEED = FEATURES.register("flower_forest_milkweed", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FLOWER_FOREST_MILKWEED)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_TORCHFLOWER_FIELDS_FLORA = FEATURES.register("elythia_torchflower_fields_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.TORCHFLOWER_FIELDS)); + public static final DeferredHolder, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover", + () -> new ElythiaSurfaceCoverFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ElythiaUndergroundFeature> ELYTHIA_UNDERGROUND = FEATURES.register("elythia_underground", + () -> new ElythiaUndergroundFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, BrutalflyCocoonFeature> BRUTALFLY_COCOON = FEATURES.register("brutalfly_cocoon", + () -> new BrutalflyCocoonFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormTunnelsFeature> ELYTHIA_MOLEWORM_TUNNELS = FEATURES.register("elythia_moleworm_tunnels", + () -> new MolewormTunnelsFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormCaveEntranceFeature> ELYTHIA_MOLEWORM_CAVE_ENTRANCES = FEATURES.register("elythia_moleworm_cave_entrances", + () -> new MolewormCaveEntranceFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormWarrensFeature> ELYTHIA_MOLEWORM_WARRENS = FEATURES.register("elythia_moleworm_warrens", + () -> new MolewormWarrensFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormSurfaceMoundsFeature> ELYTHIA_MOLEWORM_SURFACE_MOUNDS = FEATURES.register("elythia_moleworm_surface_mounds", + () -> new MolewormSurfaceMoundsFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, TriffidPatchFeature> TRIFFID_PATCH = FEATURES.register("triffid_patch", + () -> new TriffidPatchFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MapCodec> ELYTHIA_BIOME_SOURCE = BIOME_SOURCES.register("elythia_biome_source", + () -> ElythiaBiomeSource.CODEC); + public static final DeferredHolder, MapCodec> ELYTHIA_RIVER_CARVE = DENSITY_FUNCTION_TYPES.register("elythia_river_carve", + () -> ElythiaRiverCarveFunction.CODEC); + public static final DeferredHolder, ElythiaPondFeature> ELYTHIA_POND = FEATURES.register("elythia_pond", + () -> new ElythiaPondFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ElythiaTuffBoulderFeature> ELYTHIA_TUFF_BOULDER = FEATURES.register("elythia_tuff_boulder", + () -> new ElythiaTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ElythiaLargeTuffBoulderFeature> ELYTHIA_LARGE_TUFF_BOULDER = FEATURES.register("elythia_large_tuff_boulder", + () -> new ElythiaLargeTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisFissureFeature> THORAXIS_FISSURE = FEATURES.register("thoraxis_fissure", + () -> new ThoraxisFissureFeature(ThoraxisFissureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisRibColumnsFeature> THORAXIS_RIB_COLUMNS = FEATURES.register("thoraxis_rib_columns", + () -> new ThoraxisRibColumnsFeature(ThoraxisRibColumnsConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisSpikeFeature> THORAXIS_SPIKE = FEATURES.register("thoraxis_spike", + () -> new ThoraxisSpikeFeature(ThoraxisSpikeConfiguration.CODEC)); + public static final DeferredHolder, NyxiteSpikeFeature> NYXITE_SPIKES = FEATURES.register("nyxite_spikes", + () -> new NyxiteSpikeFeature(NyxiteSpikeConfiguration.CODEC)); + public static final DeferredHolder, AntiwaterSpringsFeature> ANTIWATER_SPRINGS = FEATURES.register("antiwater_springs", + () -> new AntiwaterSpringsFeature(AntiwaterSpringsConfiguration.CODEC)); + public static final DeferredHolder, PotentNyxiteFeature> POTENT_NYXITE_FEATURE = FEATURES.register("potent_nyxite", + () -> new PotentNyxiteFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisBloodCrystalFeature> THORAXIS_BLOOD_CRYSTAL_SPIRES = FEATURES.register("thoraxis_blood_crystal_spires", + () -> new ThoraxisBloodCrystalFeature(ThoraxisBloodCrystalConfiguration.CODEC)); + public static final DeferredHolder, CloudSeaCalciteFeature> CLOUD_SEA_CALCITE_BANKS = FEATURES.register("cloud_sea_calcite_banks", + () -> new CloudSeaCalciteFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, BedBugNestFeature> BED_BUG_NEST = FEATURES.register("bed_bug_nest", + () -> new BedBugNestFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, BedBugSurfaceClusterFeature> BED_BUG_SURFACE_CLUSTER = FEATURES.register("bed_bug_surface_cluster", + () -> new BedBugSurfaceClusterFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisAntiwaterPoolFeature> THORAXIS_ANTIWATER_POOL = FEATURES.register("thoraxis_antiwater_pool", + () -> new ThoraxisAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); + public static final DeferredHolder, LucidAntiwaterPoolFeature> LUCID_ANTIWATER_POOL = FEATURES.register("lucid_antiwater_pool", + () -> new LucidAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisDuneFeature> THORAXIS_DUNE = FEATURES.register("thoraxis_dune", + () -> new ThoraxisDuneFeature(ThoraxisDuneConfiguration.CODEC)); + public static final DeferredHolder, MapCodec> THORAXIS_BIOME_SOURCE = BIOME_SOURCES.register("thoraxis_biome_source", + () -> ThoraxisBiomeSource.CODEC); + + public static final DeferredItem DUPLICATOR_LOG_ITEM = ITEMS.registerSimpleBlockItem(DUPLICATOR_LOG); + public static final DeferredItem OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_LOG); + public static final DeferredItem OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_WOOD); + public static final DeferredItem MOSSY_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_OURANWOOD_LOG); + public static final DeferredItem MOSSY_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_OURANWOOD_WOOD); + public static final DeferredItem STRIPPED_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_OURANWOOD_LOG); + public static final DeferredItem STRIPPED_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_OURANWOOD_WOOD); + public static final DeferredItem OURANWOOD_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_PLANKS); + public static final DeferredItem OURANWOOD_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_STAIRS); + public static final DeferredItem OURANWOOD_SLAB_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_SLAB); + public static final DeferredItem OURANWOOD_FENCE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_FENCE); + public static final DeferredItem OURANWOOD_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_FENCE_GATE); + public static final DeferredItem OURANWOOD_DOOR_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_DOOR); + public static final DeferredItem OURANWOOD_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_TRAPDOOR); + public static final DeferredItem OURANWOOD_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_PRESSURE_PLATE); + public static final DeferredItem OURANWOOD_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_BUTTON); + public static final DeferredItem OURANWOOD_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_LEAVES); + public static final DeferredItem OURANWOOD_ACORN = ITEMS.registerSimpleBlockItem(OURANWOOD_ACORN_BLOCK); + public static final DeferredItem ORANGE_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(ORANGE_MILKWEED); + public static final DeferredItem PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(PINK_MILKWEED); + public static final DeferredItem TORCHFLOWER_BUSH_ITEM = ITEMS.registerSimpleBlockItem(TORCHFLOWER_BUSH); + public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", + () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), OURANWOOD_SIGN.get(), OURANWOOD_WALL_SIGN.get())); + public static final DeferredItem OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign", + () -> new net.minecraft.world.item.HangingSignItem(OURANWOOD_HANGING_SIGN.get(), OURANWOOD_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + public static final DeferredItem OURANWOOD_BOAT = ITEMS.register("ouranwood_boat", + () -> new OuranwoodBoatOnlyItem(OURANWOOD_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem OURANWOOD_CHEST_BOAT = ITEMS.register("ouranwood_chest_boat", + () -> new OuranwoodChestBoatItem(OURANWOOD_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(DUPLICATOR_SAPLING); + public static final DeferredItem RED_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(RED_ANT_NEST); + public static final DeferredItem BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(BROWN_ANT_NEST); + public static final DeferredItem RAINBOW_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(RAINBOW_ANT_NEST); + public static final DeferredItem URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_ORE); + public static final DeferredItem DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(DEEPSLATE_URANIUM_ORE); + public static final DeferredItem TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_ORE); + public static final DeferredItem DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(DEEPSLATE_TITANIUM_ORE); + public static final DeferredItem URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_BLOCK); + public static final DeferredItem TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_BLOCK); + public static final DeferredItem RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(RAW_URANIUM_BLOCK); + public static final DeferredItem RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(RAW_TITANIUM_BLOCK); + public static final DeferredItem CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM); + public static final DeferredItem CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM); + public static final DeferredItem CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM_SLAB); + public static final DeferredItem CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM_SLAB); + public static final DeferredItem CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM_STAIRS); + public static final DeferredItem CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM_STAIRS); + public static final DeferredItem CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_URANIUM); + public static final DeferredItem CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_TITANIUM); + public static final DeferredItem URANIUM_BULB_ITEM = ITEMS.register("uranium_bulb", + () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(URANIUM_BULB.get(), new Item.Properties())); + public static final DeferredItem TITANIUM_BULB_ITEM = ITEMS.register("titanium_bulb", + () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(TITANIUM_BULB.get(), new Item.Properties())); + public static final DeferredItem URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_DOOR); + public static final DeferredItem TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_DOOR); + public static final DeferredItem URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_TRAPDOOR); + public static final DeferredItem TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_TRAPDOOR); + public static final DeferredItem URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_BARS); + public static final DeferredItem TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_BARS); + public static final DeferredItem ANTIMETAL_ITEM = ITEMS.register("antimetal", + () -> new AntimetalBlockItem(ANTIMETAL.get(), new Item.Properties())); + public static final DeferredItem POLISHED_ANTIMETAL_ITEM = ITEMS.register("polished_antimetal", + () -> new AntimetalBlockItem(POLISHED_ANTIMETAL.get(), new Item.Properties())); + public static final DeferredItem ANTIMETAL_SCAFFOLDING_ITEM = ITEMS.register("antimetal_scaffolding", + () -> new AntimetalScaffoldingItem(ANTIMETAL_SCAFFOLDING.get(), new Item.Properties())); + public static final DeferredItem SMALL_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(SMALL_BLOOD_CRYSTAL_BUD); + public static final DeferredItem MEDIUM_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(MEDIUM_BLOOD_CRYSTAL_BUD); + public static final DeferredItem LARGE_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(LARGE_BLOOD_CRYSTAL_BUD); + public static final DeferredItem BUDDING_BLOOD_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(BUDDING_BLOOD_CRYSTAL); + public static final DeferredItem BLOOD_CRYSTAL_ITEM = ITEMS.register("blood_crystal_block", + () -> new net.minecraft.world.item.BlockItem(BLOOD_CRYSTAL.get(), new Item.Properties())); + public static final DeferredItem BLOOD_CRYSTAL_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(BLOOD_CRYSTAL_CRYSTAL); + public static final DeferredItem DREAM_SAND_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SAND); + public static final DeferredItem DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE); + public static final DeferredItem CHISELED_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_DREAM_SANDSTONE); + public static final DeferredItem CUT_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(CUT_DREAM_SANDSTONE); + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE); + public static final DeferredItem DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_STAIRS); + public static final DeferredItem DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_SLAB); + public static final DeferredItem DREAM_SANDSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_WALL); + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE_STAIRS); + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE_SLAB); + public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_DREAM_SANDSTONE_SLAB); + public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", + () -> new DuctTapeBlockItem(DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(INFESTED_ROOTED_DIRT); + public static final DeferredItem INFESTED_COARSE_DIRT_ITEM = ITEMS.registerSimpleBlockItem(INFESTED_COARSE_DIRT); + public static final DeferredItem NYXITE_ITEM = ITEMS.registerSimpleBlockItem(NYXITE); + public static final DeferredItem POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE); + public static final DeferredItem CHISELED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_NYXITE); + public static final DeferredItem NYXITE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICKS); + public static final DeferredItem NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_STAIRS); + public static final DeferredItem NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_SLAB); + public static final DeferredItem NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_WALL); + public static final DeferredItem POLISHED_NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_STAIRS); + public static final DeferredItem POLISHED_NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_SLAB); + public static final DeferredItem POLISHED_NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_WALL); + public static final DeferredItem NYXITE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_STAIRS); + public static final DeferredItem NYXITE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_SLAB); + public static final DeferredItem NYXITE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_WALL); + public static final DeferredItem TRIFFID_GOO_BLOCK_ITEM = ITEMS.register("triffid_goo_block", + () -> new com.craisinlord.antarchy.content.item.TriffidGooBlockItem(TRIFFID_GOO_BLOCK.get(), new Item.Properties())); + public static final DeferredItem PALE_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(PALE_NYXITE); + public static final DeferredItem NYXITE_SPIKE_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_SPIKE); + public static final DeferredItem POTENT_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(POTENT_NYXITE); + public static final DeferredItem UMBRAL_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(UMBRAL_MOSS_BLOCK); + public static final DeferredItem UMBRAL_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(UMBRAL_MOSS_CARPET); + public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", + () -> new StandingAndWallBlockItem(DREAM_TORCH.get(), DREAM_WALL_TORCH.get(), new Item.Properties(), Direction.UP)); + public static final DeferredItem DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(DREAM_LANTERN); + public static final DeferredItem DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(DREAM_CAMPFIRE); + public static final DeferredItem BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(BED_BUG_EGG); + public static final DeferredItem WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(WASP_NEST); + public static final DeferredItem HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(HUSHWEED); + public static final DeferredItem ICHOR_BUCKET = ITEMS.register("ichor_bucket", + () -> new BucketItem(ICHOR.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + public static final DeferredItem ANTIWATER_BUCKET = ITEMS.register("antiwater_bucket", + () -> new BucketItem(ANTIWATER.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + public static final DeferredItem CLOUD_BUCKET = ITEMS.register("cloud_bucket", + () -> new com.craisinlord.antarchy.content.item.CloudBucketItem(CLOUD_BLOCK.get(), new Item.Properties().craftRemainder(Items.BUCKET))); + public static final DeferredItem BLOOD_CRYSTAL_SHARD = ITEMS.register("blood_crystal_shard", + () -> new com.craisinlord.antarchy.content.item.BloodCrystalShardItem(new Item.Properties())); + public static final DeferredItem BLOOD_CRYSTAL_APPLE = ITEMS.register("blood_crystal_apple", + () -> new BloodCrystalAppleItem(new Item.Properties() + .rarity(Rarity.RARE) + .food(new net.minecraft.world.food.FoodProperties.Builder() + .nutrition(4) + .saturationModifier(1.2f) + .effect(new MobEffectInstance(net.minecraft.world.effect.MobEffects.REGENERATION, 100, 1), 1.0f) + .alwaysEdible() + .build()))); + public static final DeferredItem BLOOD_CRYSTAL_HELMET = ITEMS.register("blood_crystal_helmet", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_CHESTPLATE = ITEMS.register("blood_crystal_chestplate", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_LEGGINGS = ITEMS.register("blood_crystal_leggings", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_BOOTS = ITEMS.register("blood_crystal_boots", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_KATANA = ITEMS.register("blood_crystal_katana", + () -> new BloodCrystalKatanaItem( + BLOOD_CRYSTAL_KATANA_TIER, + new Item.Properties().stacksTo(1).durability(1200).rarity(Rarity.RARE), + AntarchySettings.bloodCrystalKatanaAttackDamage(), + -2.2F + )); + public static final DeferredItem MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem JUMPY_BUG_LEG = ITEMS.register("jumpy_bug_leg", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem BRUTALFLY_WING = ITEMS.registerSimpleItem("brutalfly_wing", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem BRUTALFLY_ELYTRA = ITEMS.register("brutalfly_elytra", + () -> new BrutalflyElytraItem(new Item.Properties().rarity(Rarity.UNCOMMON).durability(480))); + public static final DeferredItem CORNEA_EAR = ITEMS.register("cornea_ear", + () -> new CorneaEarItem(new Item.Properties() + .rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder() + .nutrition(2) + .saturationModifier(0.4F) + .build()))); + public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.register("primordial_scute", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo", + new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem VORTEX_EYE = ITEMS.register("vortex_eye", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem RAW_URANIUM_SCRAP = ITEMS.registerSimpleItem("raw_uranium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem RAW_TITANIUM_SCRAP = ITEMS.registerSimpleItem("raw_titanium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem RAW_URANIUM = ITEMS.registerSimpleItem("raw_uranium", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem RAW_TITANIUM = ITEMS.registerSimpleItem("raw_titanium", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem MUD_PIE = ITEMS.register("mud_pie", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(10) + .saturationModifier(0.9F) + .effect(new MobEffectInstance(MobEffects.CONFUSION, 200), 1.0F) + .build()))); + public static final DeferredItem RAINBOW_SUGAR = ITEMS.register("rainbow_sugar", + () -> new RainbowSugarItem(new Item.Properties() + .rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder().nutrition(1).saturationModifier(0.0F).alwaysEdible().build()))); + public static final DeferredItem URANIUM_NUGGET = ITEMS.registerSimpleItem("uranium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem TITANIUM_NUGGET = ITEMS.registerSimpleItem("titanium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem URANIUM_INGOT = ITEMS.registerSimpleItem("uranium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); + public static final DeferredItem TITANIUM_INGOT = ITEMS.registerSimpleItem("titanium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); + public static final DeferredItem MOLEVORE_NOSE = ITEMS.registerSimpleItem("molevore_nose", new Item.Properties().rarity(Rarity.RARE)); + public static final DeferredItem MOLEWORM_ITEM = ITEMS.register("moleworm", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(1) + .saturationModifier(0.0F) + .effect(new MobEffectInstance(MobEffects.HUNGER, 600), 0.8F) + .build()))); + public static final DeferredItem CLOUD_SHARK_FIN = ITEMS.registerSimpleItem("cloud_shark_fin", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem CLOUD_SHARK_FIN_SOUP = ITEMS.register("cloud_shark_fin_soup", + () -> new CloudSharkFinSoupItem(new Item.Properties() + .stacksTo(1) + .craftRemainder(Items.BOWL) + .food(new FoodProperties.Builder() + .nutrition(10) + .saturationModifier(0.8F) + .effect(new MobEffectInstance(MobEffects.DAMAGE_BOOST, 600, 0), 1.0F) + .effect(new MobEffectInstance(MobEffects.SLOW_FALLING, 600, 0), 1.0F) + .build()))); + public static final DeferredItem KRAKEN_TOOTH = ITEMS.register("kraken_tooth", + () -> new Item(new Item.Properties().rarity(net.minecraft.world.item.Rarity.RARE))); + public static final DeferredItem BASILISK_FANG = ITEMS.registerSimpleItem("basilisk_fang", new Item.Properties().rarity(Rarity.RARE)); + public static final DeferredItem BASILISK_DAGGER = ITEMS.register("basilisk_dagger", + () -> new BasiliskDaggerItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE), 4, -1.8F)); + public static final DeferredItem EMPEROR_SCORPION_STINGER = ITEMS.registerSimpleItem("emperor_scorpion_stinger", new Item.Properties().rarity(Rarity.RARE)); + public static final DeferredItem SCORPION_WHIP = ITEMS.register("scorpion_whip", + () -> new ScorpionWhipItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE).durability(384))); + public static final DeferredItem MOGGLES = ITEMS.register("moggles", + () -> new MogglesItem(net.minecraft.core.Holder.direct(MOGGLES_ARMOR_MATERIAL.get()), new Item.Properties().rarity(Rarity.RARE).stacksTo(1))); + public static final DeferredItem FALLEN_KING_CROWN = ITEMS.register("fallen_king_crown", + () -> new com.craisinlord.antarchy.content.item.FallenKingCrownItem( + net.minecraft.core.Holder.direct(FALLEN_KING_CROWN_ARMOR_MATERIAL.get()), + new Item.Properties().rarity(Rarity.RARE) + )); + public static final DeferredItem ULTIMATE_HELMET = ITEMS.register("ultimate_helmet", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.HELMET, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.HELMET.getDurability(41)) + )); + public static final DeferredItem ULTIMATE_CHESTPLATE = ITEMS.register("ultimate_chestplate", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.CHESTPLATE, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) + )); + public static final DeferredItem ULTIMATE_LEGGINGS = ITEMS.register("ultimate_leggings", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.LEGGINGS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) + )); + public static final DeferredItem ULTIMATE_BOOTS = ITEMS.register("ultimate_boots", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.BOOTS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.BOOTS.getDurability(41)) + )); + public static final DeferredItem ULTIMATE_SWORD = ITEMS.register("ultimate_sword", + () -> new UltimateSwordItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateSwordAttackDamage, + -2.4F + )); + public static final DeferredItem ULTIMATE_PICKAXE = ITEMS.register("ultimate_pickaxe", + () -> new UltimatePickaxeItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimatePickaxeAttackDamage, + -2.8F + )); + public static final DeferredItem ULTIMATE_AXE = ITEMS.register("ultimate_axe", + () -> new UltimateAxeItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateAxeAttackDamage, + -3.0F + )); + public static final DeferredItem ULTIMATE_SHOVEL = ITEMS.register("ultimate_shovel", + () -> new UtlimateShovelItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateShovelAttackDamage, + -3.0F + )); + public static final DeferredItem ULTIMATE_HOE = ITEMS.register("ultimate_hoe", + () -> new UltimateHoeItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateHoeAttackDamage, + 0.0F + )); + public static final DeferredItem ULTIMATE_BOW = ITEMS.register("ultimate_bow", + () -> new UltimateBowItem(new Item.Properties().stacksTo(1).durability(768).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ULTIMATE_CROSSBOW = ITEMS.register("ultimate_crossbow", + () -> new UltimateCrossbowItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); +// public static final DeferredItem ULTIMATE_MACE = ITEMS.register("ultimate_mace", +// () -> new UltimateMaceItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem NIGHTMARE_HELMET = ITEMS.register("nightmare_helmet", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.HELMET, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.HELMET.getDurability(41)) + )); + public static final DeferredItem NIGHTMARE_CHESTPLATE = ITEMS.register("nightmare_chestplate", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.CHESTPLATE, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) + )); + public static final DeferredItem NIGHTMARE_LEGGINGS = ITEMS.register("nightmare_leggings", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.LEGGINGS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) + )); + public static final DeferredItem NIGHTMARE_BOOTS = ITEMS.register("nightmare_boots", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.BOOTS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.BOOTS.getDurability(41)) + )); + public static final DeferredItem NIGHTMARE_SWORD = ITEMS.register("nightmare_sword", + () -> new NightmareSwordItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + -2.4F + )); + public static final DeferredItem SHRINK_RAY = ITEMS.register("shrink_ray", + () -> new SizeRayItem( + new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), + SHRINK_RAY_PROJECTILE, + SizeRayProjectileEntity.SizeRayType.SHRINK, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/shrink_ray.geo.json"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/shrink_ray.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/shrink_ray.animation.json"), + "shrink_ray_active" + )); + public static final DeferredItem GROWTH_RAY = ITEMS.register("growth_ray", + () -> new SizeRayItem( + new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), + GROWTH_RAY_PROJECTILE, + SizeRayProjectileEntity.SizeRayType.GROWTH, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/growth_ray.geo.json"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/growth_ray.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/growth_ray.animation.json"), + "growth_ray_active" + )); + public static final DeferredItem GRAVITY_GUN = ITEMS.register("gravity_gun", + () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); + public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", + () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); + public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", + () -> new BattleAxeItem( + Tiers.NETHERITE, + new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant(), + AntarchySettings::battleAxeAttackDamage, + -3.1F + )); + public static final DeferredHolder, EntityType> DIAMOND_MINECART = ENTITY_TYPES.register("diamond_minecart", + () -> EntityType.Builder.of((entityType, level) -> new DiamondMinecartEntity(entityType, level, diamondMinecartItem()), MobCategory.MISC) + .sized(0.98F, 0.7F) + .clientTrackingRange(8) + .build("diamond_minecart")); + public static final DeferredItem DIAMOND_MINECART_ITEM = ITEMS.register("diamond_minecart", + () -> new DiamondMinecartItem(DIAMOND_MINECART, new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + public static final DeferredItem REVERIE_BOTTLE = ITEMS.register("reverie_bottle", + () -> new ReverieBottleItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + public static final DeferredItem BIG_BERTHA_BLADE = ITEMS.registerSimpleItem( + "big_bertha_blade", + new Item.Properties().rarity(Rarity.EPIC).fireResistant() + ); + public static final DeferredItem BIG_BERTHA_HANDLE = ITEMS.registerSimpleItem( + "big_bertha_handle", + new Item.Properties().rarity(Rarity.EPIC).fireResistant() + ); + public static final DeferredItem BIG_BERTHA_HILT = ITEMS.registerSimpleItem( + "big_bertha_hilt", + new Item.Properties().rarity(Rarity.EPIC).fireResistant() + ); + public static final DeferredItem BIG_BERTHA = ITEMS.register("big_bertha", + () -> new BigBerthaItem( + Tiers.NETHERITE, + new Item.Properties() + .stacksTo(1) + .rarity(Rarity.EPIC) + .fireResistant() + )); + + public static final DeferredHolder, EntityType> EASTER_BUNNY = ENTITY_TYPES.register("easter_bunny", + () -> EntityType.Builder.of(EasterBunnyEntity::new, MobCategory.CREATURE) + .sized(0.5F, 1.0F) + .clientTrackingRange(8) + .build("easter_bunny")); + public static final DeferredHolder, EntityType> FLYING_SQUIRREL = ENTITY_TYPES.register("flying_squirrel", + () -> EntityType.Builder.of(FlyingSquirrelEntity::new, MobCategory.CREATURE) + .sized(0.6F, 0.7F) + .clientTrackingRange(8) + .build("flying_squirrel")); + public static final DeferredHolder, EntityType> CATERPILLAR = ENTITY_TYPES.register("caterpillar", + () -> EntityType.Builder.of(CaterpillarEntity::new, MobCategory.CREATURE) + .sized(0.8775F, 0.585F) + .clientTrackingRange(8) + .build("caterpillar")); + public static final DeferredHolder, EntityType> BUTTERFLY = ENTITY_TYPES.register("butterfly", + () -> EntityType.Builder.of(ButterflyEntity::new, MobCategory.AMBIENT) + .sized(1.125F, 1.375F) + .clientTrackingRange(8) + .build("butterfly")); + public static final DeferredHolder, EntityType> REVERIE = ENTITY_TYPES.register("reverie", + () -> EntityType.Builder.of(ReverieEntity::new, MobCategory.AMBIENT) + .sized(0.7F, 0.7F) + .clientTrackingRange(8) + .build("reverie")); + public static final DeferredHolder, EntityType> BRUTALFLY = ENTITY_TYPES.register("brutalfly", + () -> EntityType.Builder.of(BrutalflyEntity::new, MobCategory.MONSTER) + .sized(2.4F, 2.1F) + .clientTrackingRange(12) + .build("brutalfly")); + public static final DeferredHolder, EntityType> APPLE_COW = ENTITY_TYPES.register("apple_cow", + () -> buildCowType(AppleCow::new, "apple_cow")); + public static final DeferredHolder, EntityType> GOLDEN_APPLE_COW = ENTITY_TYPES.register("golden_apple_cow", + () -> buildCowType(GoldenAppleCow::new, "golden_apple_cow")); + public static final DeferredHolder, EntityType> ENCHANTED_GOLDEN_APPLE_COW = ENTITY_TYPES.register("enchanted_golden_apple_cow", + () -> buildCowType(EnchantedGoldenAppleCow::new, "enchanted_golden_apple_cow")); + public static final DeferredHolder, EntityType> HONEYED_APPLE_COW = CREATE_LOADED + ? ENTITY_TYPES.register("honeyed_apple_cow", () -> buildCowType(HoneyedAppleCow::new, "honeyed_apple_cow")) + : null; + public static final DeferredHolder, EntityType> DR_TRAYAURUS = ENTITY_TYPES.register("dr_trayaurus", + () -> EntityType.Builder.of(DrTrayaurusEntity::new, MobCategory.MISC) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build("dr_trayaurus")); + public static final DeferredHolder, EntityType> CLOUD_SHARK = ENTITY_TYPES.register("cloud_shark", + () -> EntityType.Builder.of(CloudSharkEntity::new, MobCategory.MONSTER) + .sized(2.4F, 0.9F) + .clientTrackingRange(10) + .build("cloud_shark")); + public static final DeferredHolder, EntityType> KRAKEN = ENTITY_TYPES.register("kraken", + () -> EntityType.Builder.of(KrakenEntity::new, MobCategory.MONSTER) + .sized(5.2F, 9.8F) + .clientTrackingRange(12) + .build("kraken")); + public static final DeferredHolder, EntityType> MISSILE_SQUID = ENTITY_TYPES.register("missile_squid", + () -> EntityType.Builder.of(MissileSquidEntity::new, MobCategory.MONSTER) + .sized(1.62F, 3.18F) + .clientTrackingRange(10) + .build("missile_squid")); + public static final DeferredHolder, EntityType> NIGHTMARE = ENTITY_TYPES.register("nightmare", + () -> EntityType.Builder.of(NightmareEntity::new, MobCategory.MONSTER) + .sized(3.2F, 3.8F) + .clientTrackingRange(12) + .build("nightmare")); + public static final DeferredHolder, EntityType> LUCID = ENTITY_TYPES.register("lucid", + () -> EntityType.Builder.of(LucidEntity::new, MobCategory.MONSTER) + .sized(2.0F, 2.0F) + .clientTrackingRange(10) + .build("lucid")); + public static final DeferredHolder, EntityType> LUCID_BOLT = ENTITY_TYPES.register("lucid_bolt", + () -> EntityType.Builder.of(LucidBoltEntity::new, MobCategory.MISC) + .sized(0.3F, 0.3F) + .clientTrackingRange(8) + .updateInterval(1) + .build("lucid_bolt")); + public static final DeferredHolder, EntityType> SCORPION = ENTITY_TYPES.register("scorpion", + () -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER) + .sized(1.5F, 1.0F) + .clientTrackingRange(8) + .build("scorpion")); + public static final DeferredHolder, EntityType> BASILISK = ENTITY_TYPES.register("basilisk", + () -> EntityType.Builder.of(BasiliskEntity::new, MobCategory.MONSTER) + .sized(2.0F, 3.5F) + .clientTrackingRange(14) + .build("basilisk")); + public static final DeferredHolder, EntityType> EMPEROR_SCORPION = ENTITY_TYPES.register("emperor_scorpion", + () -> EntityType.Builder.of(EmperorScorpionEntity::new, MobCategory.MONSTER) + .sized(4.05F, 1.35F) + .clientTrackingRange(10) + .build("emperor_scorpion")); + public static final DeferredHolder, EntityType> LUCID_PEARL_PROJECTILE = ENTITY_TYPES.register("lucid_pearl_projectile", + () -> EntityType.Builder.of(LucidEyeProjectileEntity::new, MobCategory.MISC) + .sized(0.25F, 0.25F) + .clientTrackingRange(8) + .updateInterval(1) + .build("lucid_pearl_projectile")); + public static final DeferredHolder, EntityType> HUSH_PROJECTILE = ENTITY_TYPES.register("hush_projectile", + () -> EntityType.Builder.of(HushProjectileEntity::new, MobCategory.MISC) + .sized(0.35F, 0.35F) + .clientTrackingRange(8) + .updateInterval(1) + .build("hush_projectile")); + public static final DeferredHolder, EntityType> BRUTALFLY_ORB = ENTITY_TYPES.register("brutalfly_orb", + () -> EntityType.Builder.of(BrutalflyOrbEntity::new, MobCategory.MISC) + .sized(0.75F, 0.75F) + .clientTrackingRange(10) + .updateInterval(1) + .build("brutalfly_orb")); + public static final DeferredHolder, EntityType> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block", + () -> EntityType.Builder.of( + com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity::new, MobCategory.MISC) + .sized(0.98F, 0.98F) + .clientTrackingRange(10) + .updateInterval(1) + .build("upward_falling_block")); + + public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", + () -> new DeferredSpawnEggItem(EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties())); + public static final DeferredItem FLYING_SQUIRREL_SPAWN_EGG = ITEMS.register("flying_squirrel_spawn_egg", + () -> new DeferredSpawnEggItem(FLYING_SQUIRREL, 0x7D6649, 0xDCC59C, new Item.Properties())); + public static final DeferredItem CATERPILLAR_SPAWN_EGG = ITEMS.register("caterpillar_spawn_egg", + () -> new DeferredSpawnEggItem(CATERPILLAR, 0xA8D96A, 0xF4E04D, new Item.Properties())); + public static final DeferredItem BUTTERFLY_SPAWN_EGG = ITEMS.register("butterfly_spawn_egg", + () -> new DeferredSpawnEggItem(BUTTERFLY, 0x111111, 0xFF7A00, new Item.Properties())); + public static final DeferredItem REVERIE_SPAWN_EGG = ITEMS.register("reverie_spawn_egg", + () -> new DeferredSpawnEggItem(REVERIE, 0xF2F2F2, 0xBFC3C7, new Item.Properties())); + public static final DeferredItem BRUTALFLY_SPAWN_EGG = ITEMS.register("brutalfly_spawn_egg", + () -> new DeferredSpawnEggItem(BRUTALFLY, 0x4A2214, 0xFF8A1D, new Item.Properties().rarity(Rarity.EPIC))); + public static final DeferredItem RED_ANT_SPAWN_EGG = ITEMS.register("red_ant_spawn_egg", + () -> new DeferredSpawnEggItem(RED_ANT, 0xA31818, 0x2B0909, new Item.Properties())); + public static final DeferredItem BROWN_ANT_SPAWN_EGG = ITEMS.register("brown_ant_spawn_egg", + () -> new DeferredSpawnEggItem(BROWN_ANT, 0x6A4320, 0x26160A, new Item.Properties())); + public static final DeferredItem RAINBOW_ANT_SPAWN_EGG = ITEMS.register("rainbow_ant_spawn_egg", + () -> new DeferredSpawnEggItem(RAINBOW_ANT, 0x56D4F0, 0xF66DBB, new Item.Properties())); + public static final DeferredItem MOLEWORM_SPAWN_EGG = ITEMS.register("moleworm_spawn_egg", + () -> new DeferredSpawnEggItem(MOLEWORM, 0x7A6150, 0xD2B8A3, new Item.Properties())); + public static final DeferredItem MANTIS_SPAWN_EGG = ITEMS.register("mantis_spawn_egg", + () -> new DeferredSpawnEggItem(MANTIS, 0xF8F8F2, 0x63B44A, new Item.Properties())); + public static final DeferredItem MOLEVORE_SPAWN_EGG = ITEMS.register("molevore_spawn_egg", + () -> new DeferredSpawnEggItem(MOLEVORE, 0x3E2E24, 0xB67B4F, new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem TRIFFID_SPAWN_EGG = ITEMS.register("triffid_spawn_egg", + () -> new DeferredSpawnEggItem(TRIFFID, 0x4C8F3A, 0xFF2FB3, new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem APPLE_COW_SPAWN_EGG = ITEMS.register("apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(APPLE_COW, 0xFF1A1A, 0x32FF32, new Item.Properties())); + public static final DeferredItem GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("golden_apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(GOLDEN_APPLE_COW, 0xFFE14A, 0x32FF32, new Item.Properties())); + public static final DeferredItem ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("enchanted_golden_apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(ENCHANTED_GOLDEN_APPLE_COW, 0x7040B6, 0xFFE14A, new Item.Properties())); + public static final DeferredItem HONEYED_APPLE_COW_SPAWN_EGG = CREATE_LOADED + ? ITEMS.register("honeyed_apple_cow_spawn_egg", () -> new DeferredSpawnEggItem(HONEYED_APPLE_COW, 0xC07A23, 0xF0C75A, new Item.Properties())) + : null; + public static final DeferredItem DR_TRAYAURUS_SPAWN_EGG = ITEMS.register("dr_trayaurus_spawn_egg", + () -> new DeferredSpawnEggItem(DR_TRAYAURUS, 0xB7A27B, 0x4A3D29, new Item.Properties())); + public static final DeferredItem WASP_SPAWN_EGG = ITEMS.register("wasp_spawn_egg", + () -> new DeferredSpawnEggItem(WASP, 0x111111, 0xF1D800, new Item.Properties())); + public static final DeferredItem BOMBER_SPAWN_EGG = ITEMS.register("bomber_spawn_egg", + () -> new DeferredSpawnEggItem(BOMBER, 0x7A7A7A, 0xB32020, new Item.Properties())); + public static final DeferredItem CLOUD_SHARK_SPAWN_EGG = ITEMS.register("cloud_shark_spawn_egg", + () -> new DeferredSpawnEggItem(CLOUD_SHARK, 0xDDEAF4, 0x7F96A8, new Item.Properties())); + public static final DeferredItem KRAKEN_SPAWN_EGG = ITEMS.register("kraken_spawn_egg", + () -> new DeferredSpawnEggItem(KRAKEN, 0x163C53, 0x4F8E99, new Item.Properties().rarity(Rarity.EPIC))); + public static final DeferredItem MISSILE_SQUID_SPAWN_EGG = ITEMS.register("missile_squid_spawn_egg", + () -> new DeferredSpawnEggItem(MISSILE_SQUID, 0xD88FA7, 0x8D5269, new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem NIGHTMARE_SPAWN_EGG = ITEMS.register("nightmare_spawn_egg", + () -> new DeferredSpawnEggItem(NIGHTMARE, 0x22121C, 0xB51B2D, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BED_BUG_SPAWN_EGG = ITEMS.register("bed_bug_spawn_egg", + () -> new DeferredSpawnEggItem(BED_BUG, 0x3B2218, 0x611111, new Item.Properties())); + public static final DeferredItem LUCID_SPAWN_EGG = ITEMS.register("lucid_spawn_egg", + () -> new DeferredSpawnEggItem(LUCID, 0xE53935, 0xF4D03F, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem SCORPION_SPAWN_EGG = ITEMS.register("scorpion_spawn_egg", + () -> new DeferredSpawnEggItem(SCORPION, 0xA8D8FF, 0xE04B5A, new Item.Properties())); + public static final DeferredItem BASILISK_SPAWN_EGG = ITEMS.register("basilisk_spawn_egg", + () -> new DeferredSpawnEggItem(BASILISK, 0x4A7C40, 0xD4A040, new Item.Properties())); + public static final DeferredItem EMPEROR_SCORPION_SPAWN_EGG = ITEMS.register("emperor_scorpion_spawn_egg", + () -> new DeferredSpawnEggItem(EMPEROR_SCORPION, 0x1A1A0A, 0x8B2200, new Item.Properties())); + public static final DeferredItem LUCID_EYE = ITEMS.register("lucid_eye", + () -> new LucidEyeItem(new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON))); + public static final DeferredItem LUCID_PEARL = ITEMS.register("lucid_pearl", + () -> new LucidPearlItem( + new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON), + LUCID_PEARL_PROJECTILE + )); + public static final DeferredHolder ANTARCHY_TAB = CREATIVE_MODE_TABS.register("antarchy", + () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) + .title(net.minecraft.network.chat.Component.translatable("itemGroup.antarchy.antarchy")) + .icon(() -> new ItemStack(GRAVITY_GUN.get())) + .displayItems((parameters, output) -> populateCreativeTab(output)) + .build()); + + private static EntityType buildCowType(EntityType.EntityFactory factory, String name) { + return EntityType.Builder.of(factory, MobCategory.CREATURE) + .sized(0.9F, 1.4F) + .clientTrackingRange(10) + .build(name); + } + + private static EntityType buildAntType(EntityType.EntityFactory factory, MobCategory category, String name) { + return EntityType.Builder.of(factory, category) + .sized(0.6375F, 0.2125F) + .clientTrackingRange(8) + .build(name); + } + + private static AttributeSupplier.Builder buildAntAttributes(double health, double speed, double attackDamage) { + return net.minecraft.world.entity.Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, health) + .add(Attributes.MOVEMENT_SPEED, speed) + .add(Attributes.ATTACK_DAMAGE, attackDamage); + } + + private static Holder mobEffectHolder(DeferredHolder effect) { + return BuiltInRegistries.MOB_EFFECT.wrapAsHolder(effect.get()); + } + + private static Holder attributeHolder(DeferredHolder attribute) { + return BuiltInRegistries.ATTRIBUTE.wrapAsHolder(attribute.get()); + } + + private static Holder potionHolder(DeferredHolder potion) { + return BuiltInRegistries.POTION.wrapAsHolder(potion.get()); + } + + private static Holder armorMaterialHolder(DeferredHolder material) { + return BuiltInRegistries.ARMOR_MATERIAL.wrapAsHolder(material.get()); + } + + private static void registerEntityAttributes() { + FabricDefaultAttributeRegistry.register( + net.minecraft.world.entity.EntityType.PLAYER, + net.minecraft.world.entity.player.Player.createAttributes() + .add(attributeHolder(DOUBLE_DAMAGE_CHANCE)) + .add(attributeHolder(BLOODGLASS_MAX_HEARTS)) + .build() + ); + + AttributeSupplier rabbitAttributes = Rabbit.createAttributes().build(); + FabricDefaultAttributeRegistry.register(EASTER_BUNNY.get(), rabbitAttributes); + FabricDefaultAttributeRegistry.register(FLYING_SQUIRREL.get(), FlyingSquirrelEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(CATERPILLAR.get(), CaterpillarEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(BUTTERFLY.get(), ButterflyEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(REVERIE.get(), ReverieEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(BRUTALFLY.get(), BrutalflyEntity.createAttributes().build()); + + AttributeSupplier cowAttributes = Cow.createAttributes().build(); + FabricDefaultAttributeRegistry.register(APPLE_COW.get(), cowAttributes); + FabricDefaultAttributeRegistry.register(GOLDEN_APPLE_COW.get(), cowAttributes); + FabricDefaultAttributeRegistry.register(ENCHANTED_GOLDEN_APPLE_COW.get(), cowAttributes); + if (CREATE_LOADED && HONEYED_APPLE_COW != null) { + FabricDefaultAttributeRegistry.register(HONEYED_APPLE_COW.get(), cowAttributes); + } + + FabricDefaultAttributeRegistry.register(DR_TRAYAURUS.get(), Villager.createAttributes().build()); + FabricDefaultAttributeRegistry.register(CLOUD_SHARK.get(), CloudSharkEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(KRAKEN.get(), KrakenEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(MISSILE_SQUID.get(), MissileSquidEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(NIGHTMARE.get(), NightmareEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(BED_BUG.get(), BedBugEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(WASP.get(), WaspEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(BOMBER.get(), BomberEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(MANTIS.get(), MantisEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(TRIFFID.get(), TriffidEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(LUCID.get(), LucidEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(SCORPION.get(), ScorpionEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(BASILISK.get(), BasiliskEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build()); + + FabricDefaultAttributeRegistry.register(RED_ANT.get(), buildAntAttributes( + AntarchySettings.redAntHealth(), + AntarchySettings.redAntMovementSpeed(), + AntarchySettings.redAntAttackDamage() + ).build()); + FabricDefaultAttributeRegistry.register(BROWN_ANT.get(), buildAntAttributes( + AntarchySettings.brownAntHealth(), + AntarchySettings.brownAntMovementSpeed(), + AntarchySettings.brownAntAttackDamage() + ).build()); + FabricDefaultAttributeRegistry.register(RAINBOW_ANT.get(), buildAntAttributes( + AntarchySettings.rainbowAntHealth(), + AntarchySettings.rainbowAntMovementSpeed(), + AntarchySettings.rainbowAntAttackDamage() + ).build()); + FabricDefaultAttributeRegistry.register(MOLEWORM.get(), MolewormEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(MOLEVORE.get(), MolevoreEntity.createAttributes().build()); + } + + private static void registerSpawnPlacements() { + SpawnPlacements.register(FLYING_SQUIRREL.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, FlyingSquirrelEntity::canSpawn); + SpawnPlacements.register(CATERPILLAR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CaterpillarEntity::canSpawn); + SpawnPlacements.register(BUTTERFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ButterflyEntity::canSpawn); + SpawnPlacements.register(REVERIE.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ReverieEntity::canSpawn); + SpawnPlacements.register(BRUTALFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules); + SpawnPlacements.register(APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); + SpawnPlacements.register(GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); + SpawnPlacements.register(ENCHANTED_GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); + if (CREATE_LOADED && HONEYED_APPLE_COW != null) { + SpawnPlacements.register(HONEYED_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); + } + SpawnPlacements.register(CLOUD_SHARK.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CloudSharkEntity::canSpawn); + SpawnPlacements.register(WASP.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WaspEntity::canSpawn); + SpawnPlacements.register(BOMBER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BomberEntity::canSpawn); + SpawnPlacements.register(KRAKEN.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, KrakenEntity::canSpawn); + SpawnPlacements.register(MISSILE_SQUID.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MissileSquidEntity::canSpawn); + SpawnPlacements.register(NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn); + SpawnPlacements.register(MOLEWORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolewormEntity::canSpawn); + SpawnPlacements.register(MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MantisEntity::canSpawn); + SpawnPlacements.register(MOLEVORE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolevoreEntity::canSpawn); + SpawnPlacements.register(BED_BUG.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BedBugEntity::canSpawn); + SpawnPlacements.register(LUCID.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, LucidEntity::canSpawn); + SpawnPlacements.register(SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ScorpionEntity::canSpawn); + SpawnPlacements.register(BASILISK.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BasiliskEntity::canSpawn); + SpawnPlacements.register(EMPEROR_SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EmperorScorpionEntity::canSpawn); + } + + private static void populateCreativeTab(CreativeModeTab.Output output) { + ArrayList sortedItems = new ArrayList<>(); + for (var holder : ITEMS.getEntries()) { + Item item = holder.get(); + if (item != Items.AIR) { + sortedItems.add(item); + } + } + sortedItems.sort(Comparator.comparingInt(AntarchyFabricContent::creativeTabGroup)); + sortedItems.forEach(output::accept); + addPotionVariants(output); + } + + private static void addPotionVariants(CreativeModeTab.Output output) { + acceptPotionFamily(output, DREAD_POTION); + acceptPotionFamily(output, LONG_DREAD); + acceptPotionFamily(output, INVERSION); + acceptPotionFamily(output, LONG_INVERSION); + acceptPotionFamily(output, PARALYSIS); + acceptPotionFamily(output, LONG_PARALYSIS); + acceptPotionFamily(output, HASTE); + acceptPotionFamily(output, STRONG_HASTE); + acceptPotionFamily(output, SHRINKING); + acceptPotionFamily(output, STRONG_SHRINKING); + acceptPotionFamily(output, EXTREME_SHRINKING); + acceptPotionFamily(output, GROWING); + acceptPotionFamily(output, STRONG_GROWING); + acceptPotionFamily(output, EXTREME_GROWING); + } + + private static void acceptPotionFamily(CreativeModeTab.Output output, DeferredHolder potion) { + Holder holder = potionHolder(potion); + output.accept(PotionContents.createItemStack(Items.POTION, holder)); + output.accept(PotionContents.createItemStack(Items.SPLASH_POTION, holder)); + output.accept(PotionContents.createItemStack(Items.LINGERING_POTION, holder)); + output.accept(PotionContents.createItemStack(Items.TIPPED_ARROW, holder)); + } + + private static int creativeTabGroup(Item item) { + String path = BuiltInRegistries.ITEM.getKey(item).getPath(); + return switch (path) { + 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; + 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; + case "antimetal", "polished_antimetal" -> 2; + 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" -> 3; + case "umbral_moss_block", "umbral_moss_carpet" -> 4; + case "torchflower_bush", "hushweed", "orange_milkweed", "pink_milkweed" -> 5; + case "blood_crystal_block", "budding_blood_crystal", + "small_blood_crystal_bud", "medium_blood_crystal_bud", + "large_blood_crystal_bud", "blood_crystal_cluster" -> 6; + case "uranium_ore", "deepslate_uranium_ore", "titanium_ore", "deepslate_titanium_ore", + "uranium_block", "titanium_block", "raw_uranium_block", "raw_titanium_block", + "cut_uranium", "cut_titanium", "cut_uranium_slab", "cut_titanium_slab", + "cut_uranium_stairs", "cut_titanium_stairs", "chiseled_uranium", + "chiseled_titanium", "uranium_bulb", "titanium_bulb", + "uranium_door", "titanium_door", "uranium_trapdoor", "titanium_trapdoor", + "uranium_bars", "titanium_bars" -> 7; + case "infested_rooted_dirt", "infested_coarse_dirt", "triffid_goo_block", + "cloud_block" -> 8; + case "dream_torch", "dream_lantern", "dream_campfire", "dream_fire", "dream_fire_ceiling" -> 9; + case "easter_bunny_spawn_egg", "flying_squirrel_spawn_egg", "caterpillar_spawn_egg", + "butterfly_spawn_egg", "reverie_spawn_egg", "brutalfly_spawn_egg", + "red_ant_spawn_egg", "brown_ant_spawn_egg", "rainbow_ant_spawn_egg", + "moleworm_spawn_egg", "mantis_spawn_egg", "molevore_spawn_egg", "triffid_spawn_egg", + "apple_cow_spawn_egg", "golden_apple_cow_spawn_egg", "enchanted_golden_apple_cow_spawn_egg", + "honeyed_apple_cow_spawn_egg", "dr_trayaurus_spawn_egg", "wasp_spawn_egg", + "bomber_spawn_egg", "cloud_shark_spawn_egg", "kraken_spawn_egg", "missile_squid_spawn_egg", + "nightmare_spawn_egg", "bed_bug_spawn_egg", "lucid_spawn_egg", "scorpion_spawn_egg", + "basilisk_spawn_egg", "emperor_scorpion_spawn_egg" -> 90; + default -> 50; + }; + } + + private static BlockEntityType antNestBlockEntityType() { + return ANT_NEST_BLOCK_ENTITY.get(); + } + + private static BlockEntityType waspNestBlockEntityType() { + return WASP_NEST_BLOCK_ENTITY.get(); + } + + private static BlockEntityType potentNyxiteBlockEntityType() { + return POTENT_NYXITE_BLOCK_ENTITY.get(); + } + + private static Block smallBloodCrystalBudBlock() { + return SMALL_BLOOD_CRYSTAL_BUD.get(); + } + + private static Item cloudBucketItem() { + return CLOUD_BUCKET.get(); + } + + private static Block mediumBloodCrystalBudBlock() { + return MEDIUM_BLOOD_CRYSTAL_BUD.get(); + } + + private static Block largeBloodCrystalBudBlock() { + return LARGE_BLOOD_CRYSTAL_BUD.get(); + } + + private static Block bloodCrystalCrystalBlock() { + return BLOOD_CRYSTAL_CRYSTAL.get(); + } + + private static Block createDirtOre(Block copyFrom) { + return new Block(dirtOreProperties()); + } + + private static Block createDirtOre(Block copyFrom, int minExperience, int maxExperience) { + return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), dirtOreProperties()); + } + + private static BlockBehaviour.Properties dirtOreProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT) + .sound(SoundType.ROOTED_DIRT) + .strength(0.65F, 0.8F) + .requiresCorrectToolForDrops(); + } + + private static BlockBehaviour.Properties nyxiteProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK); + } + + private static Block createOre(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + private static Block createOre(Block copyFrom, int minExperience, int maxExperience) { + return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + private static Block createStorageBlock(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + private static Block createHorizontalFacingStorageBlock(Block copyFrom) { + return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + private static final class SimpleHorizontalFacingBlock extends HorizontalDirectionalBlock { + private static final MapCodec CODEC = simpleCodec(SimpleHorizontalFacingBlock::new); + + private SimpleHorizontalFacingBlock(BlockBehaviour.Properties properties) { + super(properties); + registerDefaultState(stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @Override + protected MapCodec codec() { + return CODEC; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return state.rotate(mirror.getRotation(state.getValue(FACING))); + } + } + + private static Block createRawStorageBlock(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom) + .strength(3.5F, 6.0F) + .requiresCorrectToolForDrops()); + } + + private static Item diamondMinecartItem() { + return DIAMOND_MINECART_ITEM.get(); + } + + + private static DeferredHolder registerSoundEvent(String path) { + return SOUND_EVENTS.register(path, + () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path))); + } + + private static boolean isModLoaded(String modId) { + return FabricLoader.getInstance().isModLoaded(modId); + } + + private static Ingredient bloodCrystalRepairIngredient() { + return Ingredient.of(BuiltInRegistries.ITEM.getOptional(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal_shard")) + .orElse(Items.AIR)); + } + + private static Ingredient ultimateRepairIngredient() { + return Ingredient.of(TITANIUM_INGOT.get()); + } + + private static java.util.EnumMap createUltimateArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 6); + defense.put(ArmorItem.Type.LEGGINGS, 12); + defense.put(ArmorItem.Type.CHESTPLATE, 16); + defense.put(ArmorItem.Type.HELMET, 6); + defense.put(ArmorItem.Type.BODY, 16); + return defense; + } + + private static java.util.EnumMap createNightmareArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 4); + defense.put(ArmorItem.Type.LEGGINGS, 9); + defense.put(ArmorItem.Type.CHESTPLATE, 11); + defense.put(ArmorItem.Type.HELMET, 4); + defense.put(ArmorItem.Type.BODY, 11); + return defense; + } + + private static java.util.EnumMap createBloodCrystalArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 2); + defense.put(ArmorItem.Type.LEGGINGS, 5); + defense.put(ArmorItem.Type.CHESTPLATE, 6); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 6); + return defense; + } + + private static java.util.EnumMap createMogglesArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 0); + defense.put(ArmorItem.Type.LEGGINGS, 0); + defense.put(ArmorItem.Type.CHESTPLATE, 0); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 2); + return defense; + } + + private static java.util.EnumMap createFallenKingCrownDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 0); + defense.put(ArmorItem.Type.LEGGINGS, 0); + defense.put(ArmorItem.Type.CHESTPLATE, 0); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 2); + return defense; + } + + private static SimpleParticleType simpleParticleType() { + return new SimpleParticleType(true) { + }; + } + + private static ParticleType particleType( + java.util.function.Function, com.mojang.serialization.MapCodec> codecFactory, + java.util.function.Function, net.minecraft.network.codec.StreamCodec> streamCodecFactory + ) { + return new ParticleType<>(false) { + @Override + public com.mojang.serialization.MapCodec codec() { + return codecFactory.apply(this); + } + + @Override + public net.minecraft.network.codec.StreamCodec streamCodec() { + return streamCodecFactory.apply(this); + } + }; + } + + private static net.minecraft.world.level.material.FlowingFluid lookupFlowingFluid(String path) { + return (net.minecraft.world.level.material.FlowingFluid) BuiltInRegistries.FLUID.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + } + + private static Item lookupItem(String path) { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + } + + private static LiquidBlock lookupLiquidBlock(String path) { + return (LiquidBlock) BuiltInRegistries.BLOCK.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + } + + public static void register() { + com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity.TYPE = UPWARD_FALLING_BLOCK; + FabricBrewingRecipeRegistryBuilder.BUILD.register(builder -> { + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(LUCID_EYE.get()), potionHolder(INVERSION)); + builder.registerPotionRecipe(potionHolder(INVERSION), Ingredient.of(Items.REDSTONE), potionHolder(LONG_INVERSION)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(BASILISK_FANG.get()), potionHolder(PARALYSIS)); + builder.registerPotionRecipe(potionHolder(PARALYSIS), Ingredient.of(Items.REDSTONE), potionHolder(LONG_PARALYSIS)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(MOLEWORM_ITEM.get()), potionHolder(HASTE)); + builder.registerPotionRecipe(potionHolder(HASTE), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(STRONG_HASTE)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(URANIUM_NUGGET.get()), potionHolder(SHRINKING)); + builder.registerPotionRecipe(potionHolder(SHRINKING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(STRONG_SHRINKING)); + builder.registerPotionRecipe(potionHolder(STRONG_SHRINKING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(EXTREME_SHRINKING)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(TITANIUM_NUGGET.get()), potionHolder(GROWING)); + builder.registerPotionRecipe(potionHolder(GROWING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(STRONG_GROWING)); + builder.registerPotionRecipe(potionHolder(STRONG_GROWING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(EXTREME_GROWING)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(CLOUD_SHARK_FIN.get()), net.minecraft.world.item.alchemy.Potions.SLOW_FALLING); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(CORNEA_EAR.get()), net.minecraft.world.item.alchemy.Potions.NIGHT_VISION); + }); + + SOUND_EVENTS.register(); + ARMOR_MATERIALS.register(); + FLUIDS.register(); + BLOCKS.register(); + ENTITY_TYPES.register(); + ATTRIBUTES.register(); + registerEntityAttributes(); + registerSpawnPlacements(); + BLOCK_ENTITY_TYPES.register(); + PARTICLE_TYPES.register(); + FEATURES.register(); + BIOME_SOURCES.register(); + DENSITY_FUNCTION_TYPES.register(); + ENTITY_SUB_PREDICATES.register(); + MOB_EFFECTS.register(); + POTIONS.register(); + ITEMS.register(); + CREATIVE_MODE_TABS.register(); + + AntarchySoundEvents.bind( + SQUIDZOOKA_FIRE, + SHRINK_RAY_SOUND, + GROWTH_RAY_SOUND, + SIZE_RAY_CHARGE, + ANT_AMBIENT, + ANT_IDLE, + ANT_HURT, + ANT_BITE, + ANT_GATHER, + ANT_NEST, + CLOUD_SHARK_BITE, + CLOUD_SHARK_IDLE, + CLOUD_SHARK_HURT, + CLOUD_SHARK_DEATH, + CLOUD_SHARK_FLY, + CATERPILLAR_IDLE, + CATERPILLAR_HURT, + CATERPILLAR_CRAWL, + BUTTERFLY_HURT, + BRUTALFLY_IDLE, + BRUTALFLY_DEATH, + ELYTHIA_FIREFLY_AMBIENT, + MISSILE_SQUID_AMBIENT, + MISSILE_SQUID_HURT, + MISSILE_SQUID_DEATH, + MISSILE_SQUID_ATTACK, + KRAKEN_FLYING_LOOP, + KRAKEN_FLYING_SIDEWAYS_LOOP, + KRAKEN_ATTACK, + KRAKEN_SPIN, + KRAKEN_ROAR, + KRAKEN_SUMMON, + KRAKEN_HURT, + KRAKEN_DEATH, + BASILISK_IDLE_LOOP, + BASILISK_SLITHER_LOOP, + BASILISK_BITE, + BASILISK_HISS, + BASILISK_HURT, + BASILISK_DEATH, + THORAXIS_NIGHTMARE_WASTES_AMBIENT, + THORAXIS_NIGHTMARE_WASTES_ADDITIONS, + THORAXIS_NIGHTMARE_WASTES_MOOD, + THORAXIS_DREAM_DUNES_AMBIENT, + THORAXIS_DREAM_DUNES_ADDITIONS, + THORAXIS_DREAM_DUNES_MOOD, + THORAXIS_LUCID_POOLS_AMBIENT, + THORAXIS_LUCID_POOLS_ADDITIONS, + THORAXIS_LUCID_POOLS_MOOD, + LUCID_AMBIENT, + LUCID_FLYING, + LUCID_ATTACK, + LUCID_BOLT_SOUND, + LUCID_HURT, + LUCID_DEATH, + REVERIE_IDLE, + REVERIE_HURT, + REVERIE_WORRY, + REVERIE_SAVE, + REVERIE_JOIN_PLAYER, + REVERIE_ALERT, + FLYING_SQUIRREL_IDLE, + FLYING_SQUIRREL_BEG, + FLYING_SQUIRREL_NUT, + FLYING_SQUIRREL_GLIDE_LOOP, + FLYING_SQUIRREL_HURT, + FLYING_SQUIRREL_DEATH, + NIGHTMARE_IDLE, + NIGHTMARE_HURT, + NIGHTMARE_ROAR, + NIGHTMARE_DEATH, + NIGHTMARE_BITE, + NIGHTMARE_FLAP, + TRIFFID_ATTACK, + TRIFFID_GRAB, + TRIFFID_HURT, + TRIFFID_DEATH, + TRIFFID_HISS, + TRIFFID_GROWL, + MANTIS_AMBIENT, + MANTIS_HURT, + MANTIS_ATTACK, + MANTIS_FLY_LOOP, + GRAVITY_GUN_PICKUP, + GRAVITY_GUN_DROP, + GRAVITY_GUN_HOLD_LOOP, + GRAVITY_GUN_LAUNCH, + GRAVITY_GUN_DRYFIRE, + BED_BUG_AMBIENT, + BED_BUG_HURT, + BED_BUG_ATTACK, + WASP_IDLE, + WASP_HURT, + WASP_ATTACK, + WASP_DEATH, + SCORPION_AMBIENT, + SCORPION_HURT, + SCORPION_ATTACK, + EMPEROR_SCORPION_AMBIENT, + EMPEROR_SCORPION_HURT, + EMPEROR_SCORPION_ATTACK, + EMPEROR_SCORPION_ROAR, + MOLEWORM_AMBIENT, + MOLEWORM_HURT, + MOLEWORM_ATTACK, + MOLEWORM_DIG, + MOLEVORE_AMBIENT, + MOLEVORE_HURT, + MOLEVORE_ATTACK, + MOLEVORE_DIG, + DUCT_TAPE_USE + ); + + AntarchyObjects.bind( + EASTER_BUNNY, + FLYING_SQUIRREL, + KRAKEN, + MISSILE_SQUID, + MOLEWORM, + MANTIS, + BED_BUG, + WASP, + BOMBER, + SCORPION, + CATERPILLAR, + BUTTERFLY, + REVERIE, + TRIFFID, + BRUTALFLY, + BRUTALFLY_ORB, + HUSH_PROJECTILE, + () -> DUPLICATOR_LOG.get(), + () -> DUPLICATOR_SAPLING.get(), + () -> DUCT_TAPE.get(), + () -> INFESTED_ROOTED_DIRT.get(), + () -> INFESTED_COARSE_DIRT.get(), + () -> NYXITE.get(), + () -> CLOUD_BLOCK.get(), + () -> TRIFFID_GOO_BLOCK.get(), + () -> PALE_NYXITE.get(), + () -> NYXITE_SPIKE.get(), + () -> POTENT_NYXITE.get(), + () -> ANTIMETAL.get(), + () -> POLISHED_ANTIMETAL.get(), + () -> BUDDING_BLOOD_CRYSTAL.get(), + () -> SMALL_BLOOD_CRYSTAL_BUD.get(), + () -> MEDIUM_BLOOD_CRYSTAL_BUD.get(), + () -> LARGE_BLOOD_CRYSTAL_BUD.get(), + () -> BLOOD_CRYSTAL_CRYSTAL.get(), + () -> OURANWOOD_ACORN.get(), + KRAKEN_TOOTH, + () -> MOGGLES.get(), + () -> REVERIE_BOTTLE.get(), + () -> mobEffectHolder(DREAD), + () -> mobEffectHolder(PARALYZED), + () -> mobEffectHolder(INVERTED), + () -> OURANWOOD_ACORN_BLOCK.get(), + () -> MOSSY_OURANWOOD_LOG.get(), + () -> MOSSY_OURANWOOD_WOOD.get(), + () -> ORANGE_MILKWEED.get(), + () -> PINK_MILKWEED.get(), + () -> TORCHFLOWER_BUSH.get(), + () -> BED_BUG_EGG.get(), + () -> WASP_NEST.get(), + () -> HUSHWEED.get(), + () -> OURANWOOD_SQUIRREL_NEST.get(), + () -> ANT_NEST_BLOCK_ENTITY.get(), + () -> DREAM_CAMPFIRE_BLOCK_ENTITY.get(), + () -> WASP_NEST_BLOCK_ENTITY.get(), + () -> HUSHWEED_BLOCK_ENTITY.get(), + () -> attributeHolder(DOUBLE_DAMAGE_CHANCE), + () -> attributeHolder(BLOODGLASS_MAX_HEARTS), + () -> mobEffectHolder(BLOODGLASS_WARD) + ); + + LucidEyeProjectileEntity.defaultItemSupplier = () -> LUCID_PEARL.get(); + LucidEntity.invertedEffectSupplier = () -> mobEffectHolder(INVERTED); + LucidEntity.boltEntityTypeSupplier = () -> LUCID_BOLT.get(); + LucidBoltEntity.invertedEffectSupplier = () -> mobEffectHolder(INVERTED); + LucidEyeProjectileEntity.invertedEffectSupplier = () -> mobEffectHolder(INVERTED); + + ScorpionWhipTetherSync.setSink(AntarchyFabricNetworking::syncScorpionWhipTether); + BloodCrystalKatanaItem.setTrailCallback(AntarchyFabricNetworking::syncKatanaTrail); + com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyFabricNetworking::syncGravityEntity); + AntarchyFabricEvents.register(); + + if (FabricInfinityCompat.isAvailableOnClasspath()) { + InfinityCompat.bind(new FabricInfinityCompat()); + } + } +} + + + + diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java new file mode 100644 index 00000000..3c980b00 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -0,0 +1,177 @@ +package com.craisinlord.antarchy.fabric; + +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.DuctTapeBlock; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.block.ComposterBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +public final class AntarchyFabricEvents { + private static final AntarchyGravityTransition INVERTED_CLEAR_TRANSITION = new AntarchyGravityTransition(12); + private static final Set invertedPlayers = new HashSet<>(); + + private AntarchyFabricEvents() { + } + + public static void register() { + ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.UMBRAL_MOSS_BLOCK.get().asItem(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.UMBRAL_MOSS_CARPET.get().asItem(), 0.3f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.HUSHWEED.get().asItem(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.CORNEA_EAR.get(), 0.65f); + + ServerLivingEntityEvents.AFTER_DEATH.register((entity, damageSource) -> { + if (entity instanceof ServerPlayer sp) { + BloodglassManager.handleDeath(sp); + } + if (!(entity instanceof MissileSquidEntity)) { + return; + } + if (!(entity.level() instanceof ServerLevel serverLevel)) { + return; + } + + BlockPos deathPos = entity.blockPosition(); + if (AntarchySettings.krakenSquidSpawnEnabled() && serverLevel.random.nextInt(100) == 0) { + spawnKrakens(serverLevel, deathPos, 1); + } + if (AntarchySettings.krakenMassSpawnEnabled() && serverLevel.random.nextInt(100) == 0) { + spawnKrakens(serverLevel, deathPos, 10); + } + }); + + ServerTickEvents.END_SERVER_TICK.register(server -> { + Set activeThisTick = new HashSet<>(); + for (ServerLevel level : server.getAllLevels()) { + tickInvertedPlayers(level, activeThisTick); + tickDuctTapePlayers(level); + tickIchorPlayers(level); + tickBloodglassRecharge(level); + } + invertedPlayers.retainAll(activeThisTick); + }); + } + + private static void spawnKrakens(ServerLevel level, BlockPos origin, int count) { + for (int i = 0; i < count; i++) { + BlockPos spawnPos = findKrakenSpawnPos(level, origin); + KrakenEntity kraken = AntarchyObjects.KRAKEN.get().create(level); + if (kraken == null) { + continue; + } + kraken.moveTo(spawnPos.getX() + 0.5D, spawnPos.getY() + 1.0D, spawnPos.getZ() + 0.5D, + level.random.nextFloat() * 360.0F, 0.0F); + kraken.finalizeSpawn(level, level.getCurrentDifficultyAt(spawnPos), MobSpawnType.EVENT, null); + level.addFreshEntity(kraken); + } + } + + private static BlockPos findKrakenSpawnPos(ServerLevel level, BlockPos origin) { + for (int attempt = 0; attempt < 20; attempt++) { + BlockPos candidate = origin.offset( + level.random.nextInt(33) - 16, + level.random.nextInt(9) - 4, + level.random.nextInt(33) - 16 + ); + if (level.getFluidState(candidate).is(FluidTags.WATER)) { + return candidate; + } + } + return origin.above(3); + } + + private static void tickInvertedPlayers(ServerLevel level, Set activeThisTick) { + for (Player player : level.players()) { + LivingEntity livingEntity = player; + + if (livingEntity.hasEffect(AntarchyObjects.INVERTED_EFFECT.get())) { + activeThisTick.add(player.getUUID()); + invertedPlayers.add(player.getUUID()); + continue; + } + + if (!invertedPlayers.remove(player.getUUID())) { + continue; + } + + if (AntarchyGravityApi.getGravityDirection(player) == AntarchyGravityDirection.UP + || AntarchyGravityApi.isGravityForced(player)) { + AntarchyGravityApi.setGravityDirection(player, AntarchyGravityDirection.DOWN, INVERTED_CLEAR_TRANSITION); + } + notifyNearbyReveriesOfInversionChange(player); + } + } + + private static void notifyNearbyReveriesOfInversionChange(Player player) { + for (ReverieEntity reverie : player.level().getEntitiesOfClass( + ReverieEntity.class, + player.getBoundingBox().inflate(48.0D) + )) { + reverie.syncFocusInversionState(); + } + } + + private static void tickDuctTapePlayers(ServerLevel level) { + for (Player player : level.players()) { + DuctTapeBlock.tickStuckEntity(player); + } + } + + private static void tickIchorPlayers(ServerLevel level) { + if (!AntarchySettings.ichorWitherEnabled()) { + return; + } + + for (Player player : level.players()) { + if (!antarchy$isInIchor(player)) { + continue; + } + player.addEffect(new MobEffectInstance(MobEffects.WITHER, 40, 0, false, true, true)); + } + } + + private static void tickBloodglassRecharge(ServerLevel level) { + for (Player player : level.players()) { + if (player instanceof ServerPlayer sp) { + BloodglassManager.tickRecharge(sp); + } + } + } + + private static boolean antarchy$isInIchor(LivingEntity entity) { + BlockPos min = BlockPos.containing(entity.getBoundingBox().minX, entity.getBoundingBox().minY, entity.getBoundingBox().minZ); + BlockPos max = BlockPos.containing(entity.getBoundingBox().maxX, entity.getBoundingBox().maxY, entity.getBoundingBox().maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + if (PotentNyxiteBlock.isIchor(entity.level().getFluidState(cursor))) { + return true; + } + } + } + } + return false; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/BloodglassManager.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/BloodglassManager.java new file mode 100644 index 00000000..2fb4c920 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/BloodglassManager.java @@ -0,0 +1,231 @@ +package com.craisinlord.antarchy.fabric; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.bloodglass.BloodglassAccess; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; +import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.Registries; +import org.joml.Vector3f; + +public final class BloodglassManager { + private static final TagKey BYPASSES_BLOODGLASS = TagKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath("antarchy", "bypasses_bloodglass") + ); + + private BloodglassManager() {} + + public static void register() { + ServerLivingEntityEvents.ALLOW_DAMAGE.register((entity, source, amount) -> { + if (!(entity instanceof Player player)) return true; + if (entity.level().isClientSide()) return true; + if (amount <= 1.0f) return true; + if (source.is(BYPASSES_BLOODGLASS)) return true; + + BloodglassAccess access = (BloodglassAccess) player; + if (access.antarchy$getTotalShieldsActive() <= 0) return true; + + if (access.antarchy$getAppleShieldsActive() > 0) { + access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() - 1); + access.antarchy$setAppleShieldLostCount(access.antarchy$getAppleShieldLostCount() + 1); + if (access.antarchy$getAppleRechargeTimer() == 0) { + access.antarchy$setAppleRechargeTimer(AntarchySettings.bloodCrystalAppleShieldRechargeTicks()); + } + } else { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); + if (access.antarchy$getArmorRechargeTimer() == 0) { + access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); + } + } + + ServerLevel serverLevel = (ServerLevel) player.level(); + serverLevel.broadcastEntityEvent(player, (byte) 2); + serverLevel.playSound(null, player.blockPosition(), SoundEvents.GLASS_BREAK, SoundSource.PLAYERS, 1.0f, 1.0f); + serverLevel.sendParticles( + new DustParticleOptions(new Vector3f(0.85f, 0.18f, 0.38f), 1.2f), + player.getX(), player.getEyeY(), player.getZ(), + 35, 0.35, 0.55, 0.35, 0.12 + ); + + syncBloodglass((ServerPlayer) player); + return false; + }); + + ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> handleLogin(handler.player)); + } + + public static void syncBloodglass(ServerPlayer player) { + BloodglassAccess access = (BloodglassAccess) player; + AntarchyFabricNetworking.syncBloodglass(player, + access.antarchy$getTotalShieldsActive(), + access.antarchy$getTotalShieldsMax()); + } + + public static void handleArmorEquipChange(Player player, EquipmentSlot slot, ItemStack from, ItemStack to) { + if (player.level().isClientSide()) return; + if (slot != EquipmentSlot.HEAD && slot != EquipmentSlot.CHEST + && slot != EquipmentSlot.LEGS && slot != EquipmentSlot.FEET) return; + + boolean fromIsBC = from.getItem() instanceof BloodCrystalArmorItem; + boolean toIsBC = to.getItem() instanceof BloodCrystalArmorItem; + if (!fromIsBC && !toIsBC) return; + + BloodglassAccess access = (BloodglassAccess) player; + + if (fromIsBC && !toIsBC) { + if (access.antarchy$getArmorShieldsActive() > 0) { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); + } else if (access.antarchy$getArmorShieldLostCount() > 0) { + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); + if (access.antarchy$getArmorShieldLostCount() == 0) { + access.antarchy$setArmorRechargeTimer(0); + } + } + } else if (!fromIsBC) { + // Count BC pieces: explicitly include the new piece (to) since getItemBySlot(slot) + // may not reflect the new item yet when onEquipItem fires on Fabric. + int bcPieces = 1; // the piece being equipped now + for (EquipmentSlot s : new EquipmentSlot[]{EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET}) { + if (s == slot) continue; + if (player.getItemBySlot(s).getItem() instanceof BloodCrystalArmorItem) bcPieces++; + } + int currentTotal = access.antarchy$getArmorShieldsActive() + access.antarchy$getArmorShieldLostCount(); + if (currentTotal < bcPieces) { + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); + access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); + } + } else { + // BC → BC swap: remove old slot, queue new one + if (access.antarchy$getArmorShieldsActive() > 0) { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); + } else if (access.antarchy$getArmorShieldLostCount() > 0) { + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); + } + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); + access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); + } + + if (player instanceof ServerPlayer sp) syncBloodglass(sp); + } + + public static void handleWardApplied(Player player, int amplifier) { + if (player.level().isClientSide()) return; + BloodglassAccess access = (BloodglassAccess) player; + int cap = Math.max(0, AntarchySettings.bloodCrystalHardMaxShields() + - access.antarchy$getArmorShieldsActive() + - access.antarchy$getArmorShieldLostCount()); + access.antarchy$setAppleShieldsActive(Math.min(amplifier + 1, cap)); + access.antarchy$setAppleShieldLostCount(0); + access.antarchy$setAppleRechargeTimer(0); + if (player instanceof ServerPlayer sp) syncBloodglass(sp); + } + + public static void handleWardRemoved(Player player) { + if (player.level().isClientSide()) return; + BloodglassAccess access = (BloodglassAccess) player; + access.antarchy$setAppleShieldsActive(0); + access.antarchy$setAppleShieldLostCount(0); + access.antarchy$setAppleRechargeTimer(0); + if (player instanceof ServerPlayer sp) syncBloodglass(sp); + } + + public static void tickRecharge(ServerPlayer player) { + BloodglassAccess access = (BloodglassAccess) player; + boolean changed = false; + int hardCap = AntarchySettings.bloodCrystalHardMaxShields(); + + if (access.antarchy$getArmorShieldLostCount() > 0) { + int timer = access.antarchy$getArmorRechargeTimer(); + if (timer > 1) { + access.antarchy$setArmorRechargeTimer(timer - 1); + } else if (timer == 1) { + if (access.antarchy$getTotalShieldsActive() < hardCap) { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() + 1); + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); + changed = true; + } + access.antarchy$setArmorRechargeTimer(access.antarchy$getArmorShieldLostCount() > 0 + ? AntarchySettings.bloodCrystalArmorShieldRechargeTicks() : 0); + } + } + + if (access.antarchy$getAppleShieldLostCount() > 0 && player.hasEffect(AntarchyObjects.BLOODGLASS_WARD.get())) { + int timer = access.antarchy$getAppleRechargeTimer(); + if (timer > 1) { + access.antarchy$setAppleRechargeTimer(timer - 1); + } else if (timer == 1) { + if (access.antarchy$getTotalShieldsActive() < hardCap) { + access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() + 1); + access.antarchy$setAppleShieldLostCount(access.antarchy$getAppleShieldLostCount() - 1); + changed = true; + } + access.antarchy$setAppleRechargeTimer(access.antarchy$getAppleShieldLostCount() > 0 + ? AntarchySettings.bloodCrystalAppleShieldRechargeTicks() : 0); + } + } + + if (changed) { + syncBloodglass(player); + player.playNotifySound(SoundEvents.AMETHYST_BLOCK_CHIME, SoundSource.PLAYERS, 0.6f, 1.6f); + } + } + + public static void handleDeath(ServerPlayer player) { + BloodglassAccess access = (BloodglassAccess) player; + access.antarchy$setArmorShieldsActive(0); + access.antarchy$setArmorShieldLostCount(0); + access.antarchy$setArmorRechargeTimer(0); + access.antarchy$setAppleShieldsActive(0); + access.antarchy$setAppleShieldLostCount(0); + access.antarchy$setAppleRechargeTimer(0); + syncBloodglass(player); + } + + public static void handleRespawn(ServerPlayer player) { + BloodglassAccess access = (BloodglassAccess) player; + int shields = Math.min(countBCArmorPieces(player), AntarchySettings.bloodCrystalHardMaxShields()); + access.antarchy$setArmorShieldsActive(shields); + access.antarchy$setArmorShieldLostCount(0); + access.antarchy$setArmorRechargeTimer(0); + syncBloodglass(player); + } + + private static void handleLogin(ServerPlayer player) { + BloodglassAccess access = (BloodglassAccess) player; + if (player.hasEffect(AntarchyObjects.BLOODGLASS_WARD.get())) { + var effect = player.getEffect(AntarchyObjects.BLOODGLASS_WARD.get()); + if (effect != null) { + int cap = Math.max(0, AntarchySettings.bloodCrystalHardMaxShields() + - access.antarchy$getArmorShieldsActive() + - access.antarchy$getArmorShieldLostCount()); + access.antarchy$setAppleShieldsActive(Math.min(effect.getAmplifier() + 1, cap)); + access.antarchy$setAppleShieldLostCount(0); + access.antarchy$setAppleRechargeTimer(0); + } + } + syncBloodglass(player); + } + + private static int countBCArmorPieces(Player player) { + int count = 0; + for (EquipmentSlot slot : new EquipmentSlot[]{EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET}) { + if (player.getItemBySlot(slot).getItem() instanceof BloodCrystalArmorItem) count++; + } + return count; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/FabricInfinityCompat.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/FabricInfinityCompat.java new file mode 100644 index 00000000..5aec90de --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/FabricInfinityCompat.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.fabric; + +import com.craisinlord.antarchy.compat.infinity.InfinityCompatBridge; +import net.lerariemann.infinity.util.InfinityMethods; +import net.lerariemann.infinity.util.teleport.WarpLogic; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.util.RandomSource; + +public final class FabricInfinityCompat implements InfinityCompatBridge { + public static boolean isAvailableOnClasspath() { + try { + Class.forName("net.lerariemann.infinity.util.InfinityMethods"); + Class.forName("net.lerariemann.infinity.util.teleport.WarpLogic"); + return true; + } catch (Throwable ignored) { + return false; + } + } + + @Override + public boolean isAvailable() { + return true; + } + + @Override + public ResourceLocation getRandomDimensionId(RandomSource random) { + try { + return InfinityMethods.getRandomId(random); + } catch (Throwable throwable) { + return null; + } + } + + @Override + public boolean requestWarp(ServerPlayer player, ResourceLocation dimensionId) { + try { + WarpLogic.requestWarp(player, dimensionId, false); + return true; + } catch (Throwable throwable) { + return false; + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClient.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClient.java new file mode 100644 index 00000000..d4ad79a8 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClient.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.fabric.network.AntarchyFabricClientNetworking; +import net.fabricmc.api.ClientModInitializer; + +public final class AntarchyFabricClient implements ClientModInitializer { + @Override + public void onInitializeClient() { + AntarchyFabricClientNetworking.register(); + AntarchyFabricClientBootstrap.register(); + } +} + diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java new file mode 100644 index 00000000..bafe0507 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -0,0 +1,312 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.renderer.*; +import com.craisinlord.antarchy.content.client.particle.*; +import com.craisinlord.antarchy.content.client.renderer.AntiwaterFluidRenderer; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityFeatureRendererRegistrationCallback; +import net.minecraft.world.entity.EntityType; +import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry; +import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; +import net.minecraft.client.model.BoatModel; +import net.minecraft.client.model.ChestBoatModel; +import net.minecraft.client.renderer.BiomeColors; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.blockentity.CampfireRenderer; +import net.minecraft.client.renderer.entity.ThrownItemRenderer; +import net.minecraft.client.renderer.item.ItemProperties; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.component.ChargedProjectiles; +import net.minecraft.world.level.FoliageColor; +import net.fabricmc.fabric.api.client.render.fluid.v1.SimpleFluidRenderHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.BlockAndTintGetter; +import com.mojang.blaze3d.vertex.VertexConsumer; +import java.util.function.Function; + +public final class AntarchyFabricClientBootstrap { + private AntarchyFabricClientBootstrap() { + } + + public static void register() { + AntarchyKeyBindings.register(); + registerRenderers(); + registerEntityLayers(); + registerColors(); + registerParticles(); + registerFluids(); + registerRenderLayers(); + registerItemProperties(); + registerClientCallbacks(); + } + + private static void registerRenderers() { + BlockEntityRendererRegistry.register( + (net.minecraft.world.level.block.entity.BlockEntityType) AntarchyFabricContent.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), + (BlockEntityRendererProvider) CampfireRenderer::new + ); + + EntityRendererRegistry.register(AntarchyFabricContent.EASTER_BUNNY.get(), EasterBunnyRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.FLYING_SQUIRREL.get(), FlyingSquirrelRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.CATERPILLAR.get(), CaterpillarRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.BUTTERFLY.get(), ButterflyRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.REVERIE.get(), ReverieRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.BRUTALFLY.get(), BrutalflyRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.RED_ANT.get(), AntRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.BROWN_ANT.get(), AntRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.RAINBOW_ANT.get(), AntRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.MOLEWORM.get(), MolewormRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.MANTIS.get(), MantisRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.MOLEVORE.get(), MolevoreRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.TRIFFID.get(), TriffidRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.OURANWOOD_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/ouranwood.png"), false)); + EntityRendererRegistry.register(AntarchyFabricContent.OURANWOOD_CHEST_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/ouranwood.png"), true)); + EntityRendererRegistry.register(AntarchyFabricContent.APPLE_COW.get(), AppleCowRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.ENCHANTED_GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.DIAMOND_MINECART.get(), DiamondMinecartRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.DR_TRAYAURUS.get(), context -> new DrTrayaurusRenderer(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/dr_trayaurus.png"))); + EntityRendererRegistry.register(AntarchyFabricContent.CLOUD_SHARK.get(), CloudSharkRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.KRAKEN.get(), KrakenRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.MISSILE_SQUID.get(), MissileSquidRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.NIGHTMARE.get(), NightmareRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.LUCID.get(), LucidRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.BED_BUG.get(), BedBugRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.WASP.get(), WaspRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.BOMBER.get(), BomberRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.BASILISK.get(), BasiliskRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.SHRINK_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.GROWTH_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.LUCID_BOLT.get(), LucidBoltRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.LUCID_PEARL_PROJECTILE.get(), ThrownItemRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.HUSH_PROJECTILE.get(), HushProjectileRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.BRUTALFLY_ORB.get(), BrutalflyOrbRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.UPWARD_FALLING_BLOCK.get(), UpwardFallingBlockRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.SCORPION.get(), ScorpionRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.EMPEROR_SCORPION.get(), EmperorScorpionRenderer::new); + + EntityModelLayerRegistry.registerModelLayer(OuranwoodBoatRenderer.boatLayer(), BoatModel::createBodyModel); + EntityModelLayerRegistry.registerModelLayer(OuranwoodBoatRenderer.chestBoatLayer(), ChestBoatModel::createBodyModel); + } + + private static void registerColors() { + ColorProviderRegistry.BLOCK.register( + (state, level, pos, tintIndex) -> level != null && pos != null + ? BiomeColors.getAverageFoliageColor(level, pos) + : FoliageColor.getDefaultColor(), + AntarchyFabricContent.OURANWOOD_LEAVES.get() + ); + ColorProviderRegistry.BLOCK.register((state, level, pos, tintIndex) -> 0xFF4A0000, AntarchyFabricContent.ANTIWATER_BLOCK.get()); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> FoliageColor.getDefaultColor(), AntarchyFabricContent.OURANWOOD_LEAVES_ITEM.get()); + } + + private static void registerFluids() { + FluidRenderHandlerRegistry.INSTANCE.register( + AntarchyFabricContent.ICHOR.get(), + AntarchyFabricContent.FLOWING_ICHOR.get(), + new SimpleFluidRenderHandler( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_still"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_flow"), + ResourceLocation.withDefaultNamespace("block/water_overlay"), + 0xFF2A0306 + ) + ); + + FluidRenderHandlerRegistry.INSTANCE.register( + AntarchyFabricContent.ANTIWATER.get(), + AntarchyFabricContent.FLOWING_ANTIWATER.get(), + new SimpleFluidRenderHandler( + ResourceLocation.withDefaultNamespace("block/water_still"), + ResourceLocation.withDefaultNamespace("block/water_flow"), + ResourceLocation.withDefaultNamespace("block/water_overlay"), + 0xFFFF1A1A + ) { + @Override + public void renderFluid(BlockPos pos, BlockAndTintGetter world, VertexConsumer vertexConsumer, BlockState blockState, FluidState fluidState) { + TextureAtlasSprite[] sprites = this.getFluidSprites(world, pos, fluidState); + AntiwaterFluidRenderer.render( + world, + pos, + vertexConsumer, + blockState, + fluidState, + sprites[0], + sprites[1], + sprites.length > 2 ? sprites[2] : null, + this.getFluidColor(world, pos, fluidState) + ); + } + } + ); + } + + private static void registerParticles() { + ParticleFactoryRegistry registry = ParticleFactoryRegistry.getInstance(); + registry.register(AntarchyFabricContent.DREAM_FIRE_FLAME.get(), DreamFlameParticle.Provider::new); + registry.register(AntarchyFabricContent.HYPNOTIC_GAS.get(), HypnoticGasParticle.Provider::new); + registry.register(AntarchyFabricContent.HYPNOTIC_GAS_DOWN.get(), sprites -> new HypnoticGasParticle.Provider(sprites, true)); + registry.register(AntarchyFabricContent.HYPNOTIC_GAS_CLOUD.get(), new HypnoticGasCloudParticle.Provider()); + registry.register(AntarchyFabricContent.HYPNOTIC_GAS_CLOUD_DOWN.get(), new HypnoticGasCloudParticle.Provider(true)); + registry.register(AntarchyFabricContent.INVERTED_GEYSER_BASE.get(), InvertedGeyserBaseParticle.Provider::new); + registry.register(AntarchyFabricContent.INVERTED_GEYSER_PLUME.get(), InvertedGeyserPlumeParticle.Provider::new); + registry.register(AntarchyFabricContent.INVERTED_GEYSER_POOF.get(), InvertedGeyserBaseParticle.Provider::new); + registry.register(AntarchyFabricContent.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); + registry.register(AntarchyFabricContent.FIREFLY.get(), FireflyParticle.Provider::new); + } + + private static void registerRenderLayers() { + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_LEAVES.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_ACORN_BLOCK.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DUPLICATOR_SAPLING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.ORANGE_MILKWEED.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.PINK_MILKWEED.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TORCHFLOWER_BUSH.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.HUSHWEED.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.CORNEA_STALK.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.ANTIMETAL_SCAFFOLDING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.UMBRAL_MOSS_CARPET.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.NYXITE_SPIKE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.SMALL_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.MEDIUM_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.LARGE_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.BLOOD_CRYSTAL_CRYSTAL.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_TORCH.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_WALL_TORCH.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_LANTERN.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_CAMPFIRE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_FIRE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_CEILING_FIRE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.ANTIWATER_BLOCK.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TRIFFID_GOO_BLOCK.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.URANIUM_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TITANIUM_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.URANIUM_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TITANIUM_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.URANIUM_BARS.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TITANIUM_BARS.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.CLOUD_BLOCK.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putFluids( + RenderType.translucent(), + AntarchyFabricContent.ICHOR.get(), + AntarchyFabricContent.FLOWING_ICHOR.get(), + AntarchyFabricContent.ANTIWATER.get(), + AntarchyFabricContent.FLOWING_ANTIWATER.get() + ); + } + + private static void registerItemProperties() { + ItemProperties.register( + AntarchyFabricContent.ULTIMATE_BOW.get(), + ResourceLocation.withDefaultNamespace("pull"), + (stack, level, entity, seed) -> entity == null || entity.getUseItem() != stack + ? 0.0F + : (stack.getItem().getUseDuration(stack, entity) - entity.getUseItemRemainingTicks()) / 20.0F + ); + ItemProperties.register( + AntarchyFabricContent.ULTIMATE_BOW.get(), + ResourceLocation.withDefaultNamespace("pulling"), + (stack, level, entity, seed) -> entity != null && entity.isUsingItem() && entity.getUseItem() == stack ? 1.0F : 0.0F + ); + ItemProperties.register( + AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("pull"), + (stack, level, entity, seed) -> { + if (entity == null || CrossbowItem.isCharged(stack) || entity.getUseItem() != stack) { + return 0.0F; + } + float adjustedChargeDuration = Math.max(1.0F, stack.getItem().getUseDuration(stack, entity) - 3.0F); + return Mth.clamp((stack.getItem().getUseDuration(stack, entity) - entity.getUseItemRemainingTicks()) / adjustedChargeDuration, 0.0F, 1.0F); + } + ); + ItemProperties.register( + AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("pulling"), + (stack, level, entity, seed) -> entity != null && entity.isUsingItem() && entity.getUseItem() == stack && !CrossbowItem.isCharged(stack) ? 1.0F : 0.0F + ); + ItemProperties.register( + AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("charged"), + (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) ? 1.0F : 0.0F + ); + ItemProperties.register( + AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("firework"), + (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) && ChargedProjectiles.of(stack).contains(Items.FIREWORK_ROCKET) ? 1.0F : 0.0F + ); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + private static void registerEntityLayers() { + LivingEntityFeatureRendererRegistrationCallback.EVENT.register((entityType, renderer, registrationHelper, context) -> { + if (entityType == EntityType.PLAYER) { + if (renderer instanceof net.minecraft.client.renderer.entity.player.PlayerRenderer playerRenderer) { + registrationHelper.register(new ParalyzedStonePlayerLayer(playerRenderer)); + registrationHelper.register(new BrutalflyElytraLayer(playerRenderer)); + registrationHelper.register(new FallenKingCrownLayer(playerRenderer)); + } + return; + } + if (software.bernie.geckolib.renderer.GeoEntityRenderer.class.isAssignableFrom(renderer.getClass())) { + software.bernie.geckolib.renderer.GeoEntityRenderer geoRenderer = + (software.bernie.geckolib.renderer.GeoEntityRenderer) (Object) renderer; + geoRenderer.addRenderLayer(new ParalyzedStoneGeoLayer(geoRenderer)); + return; + } + registrationHelper.register(new ParalyzedStoneLivingLayer(renderer)); + }); + } + + private static void registerClientCallbacks() { + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (client.player != null) { + ParalyzedClientHandler.clampPlayerInput(client.player); + } + BrutalflyElytraClientHandler.tick(); + DiamondMinecartClientHandler.tick(); + ParalyzedClientHandler.tick(); + DreadClientHandler.tick(); + BloodCrystalKatanaTrailHandler.tick(); + ScorpionWhipTetherRenderHandler.tick(); + }); + + GravityGunClientHandler.register(); + + ElythiaFireflyManager.register(); + LucidSoundHandler.register(); + MogglesClientRenderer.register(); + ReverieTrailHandler.register(); + + HudRenderCallback.EVENT.register((guiGraphics, partialTick) -> { + DreadHudRenderer.render(guiGraphics); + ParalyzedHudRenderer.render(guiGraphics); + BrutalflyElytraHudRenderer.render(guiGraphics); + BloodglassHudRenderer.render(guiGraphics); + TriffidGooHudRenderer.render(guiGraphics); + }); + + WorldRenderEvents.AFTER_TRANSLUCENT.register(context -> { + BloodCrystalKatanaTrailHandler.render(context); + ScorpionWhipTetherRenderHandler.render(context); + }); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java new file mode 100644 index 00000000..a9ee00f5 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java @@ -0,0 +1,29 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.blaze3d.platform.InputConstants; +import org.lwjgl.glfw.GLFW; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.Minecraft; + +public final class AntarchyKeyBindings { + public static final String CATEGORY = "key.categories.antarchy"; + + public static final KeyMapping BRUTALFLY_FLAP = new KeyMapping( + "key.antarchy.brutalfly_flap", + InputConstants.Type.KEYSYM, + GLFW.GLFW_KEY_G, + CATEGORY + ); + + private AntarchyKeyBindings() {} + + public static void register() { + KeyBindingHelper.registerKeyBinding(BRUTALFLY_FLAP); + } + + public static boolean isBrutalflyFlapPressed() { + return Minecraft.getInstance().screen == null && BRUTALFLY_FLAP.isDown(); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodCrystalKatanaTrailClientState.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodCrystalKatanaTrailClientState.java new file mode 100644 index 00000000..51cb3969 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodCrystalKatanaTrailClientState.java @@ -0,0 +1,42 @@ +package com.craisinlord.antarchy.fabric.client; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public final class BloodCrystalKatanaTrailClientState { + private static final Map ACTIVE = new HashMap<>(); + + private BloodCrystalKatanaTrailClientState() {} + + public static void trigger(int entityId, int durationTicks) { + if (durationTicks <= 0) { + ACTIVE.remove(entityId); + return; + } + ACTIVE.put(entityId, durationTicks); + } + + public static int getRemainingTicks(int entityId) { + return ACTIVE.getOrDefault(entityId, 0); + } + + public static void tick() { + Iterator> iterator = ACTIVE.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + int remaining = entry.getValue() - 1; + if (remaining <= 0) { + iterator.remove(); + } else { + entry.setValue(remaining); + } + } + } + + public static void clear() { + ACTIVE.clear(); + } +} + + diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodCrystalKatanaTrailHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodCrystalKatanaTrailHandler.java new file mode 100644 index 00000000..12d507de --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodCrystalKatanaTrailHandler.java @@ -0,0 +1,208 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexFormat; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; +import org.joml.Matrix4f; + +public final class BloodCrystalKatanaTrailHandler { + private static final int MAX_TRAIL_POINTS = 16; + private static final int POINT_LIFETIME_TICKS = 10; + private static final double MIN_DISTANCE_BETWEEN_POINTS = 0.05D; + private static final float CORE_WIDTH = 0.06F; + private static final float GLOW_WIDTH = 0.16F; + private static final Map> TRAILS = new HashMap<>(); + + private BloodCrystalKatanaTrailHandler() {} + + private static final class TrailPoint { + private final Vec3 position; + private int age; + + private TrailPoint(Vec3 position) { + this.position = position; + } + + private float alpha() { + return 1.0F - ((float) age / POINT_LIFETIME_TICKS); + } + + private boolean expired() { + return age >= POINT_LIFETIME_TICKS || alpha() <= 0.01F; + } + } + + public static void tick() { + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) { + TRAILS.clear(); + BloodCrystalKatanaTrailClientState.clear(); + return; + } + if (mc.isPaused()) { + return; + } + + BloodCrystalKatanaTrailClientState.tick(); + Set activeIds = new HashSet<>(); + + for (Entity entity : mc.level.entitiesForRendering()) { + int remaining = BloodCrystalKatanaTrailClientState.getRemainingTicks(entity.getId()); + if (remaining <= 0) { + continue; + } + + activeIds.add(entity.getId()); + Vec3 position = entity.position().add(0.0D, entity.getBbHeight() * 0.45D, 0.0D); + ArrayDeque points = TRAILS.computeIfAbsent(entity.getId(), id -> new ArrayDeque<>()); + + if (points.isEmpty() || points.peekFirst().position.distanceToSqr(position) >= MIN_DISTANCE_BETWEEN_POINTS * MIN_DISTANCE_BETWEEN_POINTS) { + points.addFirst(new TrailPoint(position)); + while (points.size() > MAX_TRAIL_POINTS) { + points.pollLast(); + } + } + } + + TRAILS.keySet().removeIf(id -> !activeIds.contains(id)); + for (ArrayDeque points : TRAILS.values()) { + Iterator iterator = points.iterator(); + while (iterator.hasNext()) { + TrailPoint point = iterator.next(); + point.age++; + if (point.expired()) { + iterator.remove(); + } + } + } + TRAILS.values().removeIf(ArrayDeque::isEmpty); + } + + public static void render(WorldRenderContext context) { + if (TRAILS.isEmpty()) { + return; + } + + if (context.world() == null || context.matrixStack() == null) { + return; + } + + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) { + return; + } + + Camera camera = context.camera(); + Vec3 cameraPos = camera.getPosition(); + Matrix4f matrix = context.matrixStack().last().pose(); + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + + Tesselator tesselator = Tesselator.getInstance(); + List> snapshots = new ArrayList<>(TRAILS.size()); + for (ArrayDeque deque : TRAILS.values()) { + if (deque.size() >= 2) { + snapshots.add(new ArrayList<>(deque)); + } + } + + if (snapshots.isEmpty()) { + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + return; + } + + BufferBuilder glowBuffer = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) { + buildTrail(glowBuffer, matrix, points, cameraPos, GLOW_WIDTH, 0.95F, 0.14F, 0.18F, 0.38F); + } + MeshData glowMesh = glowBuffer.build(); + if (glowMesh != null) { + BufferUploader.drawWithShader(glowMesh); + } + + BufferBuilder coreBuffer = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) { + buildTrail(coreBuffer, matrix, points, cameraPos, CORE_WIDTH, 1.0F, 0.32F, 0.36F, 0.92F); + } + MeshData coreMesh = coreBuffer.build(); + if (coreMesh != null) { + BufferUploader.drawWithShader(coreMesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + } + + private static void buildTrail(BufferBuilder builder, Matrix4f matrix, List points, Vec3 cameraPos, + float width, float red, float green, float blue, float alphaScale) { + for (int i = 0; i < points.size() - 1; i++) { + TrailPoint newer = points.get(i); + TrailPoint older = points.get(i + 1); + Vec3 side = cameraFacingRight(newer.position, older.position, cameraPos); + if (side == null) { + continue; + } + + float nearAlpha = newer.alpha() * alphaScale; + float farAlpha = older.alpha() * alphaScale * 0.85F; + Vec3 nearOffset = side.scale(width); + Vec3 farOffset = side.scale(width); + Vec3 nearPos = newer.position.subtract(cameraPos); + Vec3 farPos = older.position.subtract(cameraPos); + + builder.addVertex(matrix, (float) (nearPos.x + nearOffset.x), (float) (nearPos.y + nearOffset.y), (float) (nearPos.z + nearOffset.z)).setColor(red, green, blue, nearAlpha); + builder.addVertex(matrix, (float) (nearPos.x - nearOffset.x), (float) (nearPos.y - nearOffset.y), (float) (nearPos.z - nearOffset.z)).setColor(red, green, blue, nearAlpha); + builder.addVertex(matrix, (float) (farPos.x - farOffset.x), (float) (farPos.y - farOffset.y), (float) (farPos.z - farOffset.z)).setColor(red, green, blue, farAlpha); + builder.addVertex(matrix, (float) (farPos.x + farOffset.x), (float) (farPos.y + farOffset.y), (float) (farPos.z + farOffset.z)).setColor(red, green, blue, farAlpha); + } + } + + private static Vec3 cameraFacingRight(Vec3 current, Vec3 next, Vec3 cameraPos) { + Vec3 segmentDirection = next.subtract(current); + if (segmentDirection.lengthSqr() < 1.0E-8D) { + return null; + } + segmentDirection = segmentDirection.normalize(); + + Vec3 midpoint = current.add(next).scale(0.5D); + Vec3 cameraDirection = cameraPos.subtract(midpoint); + if (cameraDirection.lengthSqr() < 1.0E-8D) { + return null; + } + cameraDirection = cameraDirection.normalize(); + + Vec3 side = segmentDirection.cross(cameraDirection); + if (side.lengthSqr() < 1.0E-8D) { + side = segmentDirection.cross(new Vec3(0.0D, 1.0D, 0.0D)); + if (side.lengthSqr() < 1.0E-8D) { + return null; + } + } + return side.normalize(); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodglassHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodglassHudRenderer.java new file mode 100644 index 00000000..9cd3c27a --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BloodglassHudRenderer.java @@ -0,0 +1,64 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.BloodglassClientState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.player.Player; + +public final class BloodglassHudRenderer { + private static final ResourceLocation HEART_CONTAINER = + ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/heart/container.png"); + private static final ResourceLocation HEART_FULL = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/gui/sprites/hud/bloodglass_heart.png"); + private static final ResourceLocation HEART_CRACKED = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/gui/sprites/hud/bloodglass_heart_cracked.png"); + private static final int HEART_SIZE = 9; + private static final int HEART_PITCH = 8; + + private BloodglassHudRenderer() {} + + public static void render(GuiGraphics gui) { + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui) return; + Player player = mc.player; + if (player == null || player.isDeadOrDying()) return; + // Don't show in creative or spectator — no health bar visible there + if (player.isCreative() || player.isSpectator()) return; + + int total = BloodglassClientState.getShieldsMax(); + if (total <= 0) return; + + int active = BloodglassClientState.getShieldsActive(); + int w = mc.getWindow().getGuiScaledWidth(); + int h = mc.getWindow().getGuiScaledHeight(); + + // Vanilla health bar bottom row is at y = h - 39; each extra row (absorption, extra hearts) is 10px above. + // The armor protection icons sit one row above the bottom health row (h - 49). + // We place bloodglass hearts above both health+absorption stack AND the armor row. + int maxHealth = Mth.ceil(player.getMaxHealth()); + int absorption = Mth.ceil(player.getAbsorptionAmount()); + int healthHearts = Mth.ceil(maxHealth / 2.0f); + int absorptionHearts = Mth.ceil(absorption / 2.0f); + int totalVanillaRows = Mth.ceil((healthHearts + absorptionHearts) / 10.0f); + boolean hasArmor = player.getArmorValue() > 0; + // +1 to clear the armor icon row only when armor is actually equipped + int baseTop = h - 39 - (totalVanillaRows * 10) - (hasArmor ? 10 : 0); + + int left = w / 2 - 91; + + // Wrap across multiple rows if more than 10 bloodglass hearts + for (int i = 0; i < total; i++) { + int row = i / 10; + int col = i % 10; + int x = left + col * HEART_PITCH; + int y = baseTop - row * 10; + ResourceLocation tex = (i < active) ? HEART_FULL : HEART_CRACKED; + gui.blit(HEART_CONTAINER, x, y, 0, 0, HEART_SIZE, HEART_SIZE, HEART_SIZE, HEART_SIZE); + gui.blit(tex, x, y, 0, 0, HEART_SIZE, HEART_SIZE, HEART_SIZE, HEART_SIZE); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraClientHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraClientHandler.java new file mode 100644 index 00000000..661614d9 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraClientHandler.java @@ -0,0 +1,73 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.client.BrutalflyElytraClientState; +import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.network.BrutalflyElytraFlapPayload; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.client.Minecraft; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class BrutalflyElytraClientHandler { + private static final Logger LOGGER = LoggerFactory.getLogger("Antarchy/BrutalflyElytra"); + private static boolean lastJumpDown; + private static int chargeTicks; + + static { + BrutalflyElytraItem.FLAP_KEY_NAME = () -> AntarchyKeyBindings.BRUTALFLY_FLAP.getTranslatedKeyMessage(); + } + + private BrutalflyElytraClientHandler() { + } + + public static void tick() { + BrutalflyElytraClientState.tick(); + + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player == null || minecraft.level == null || minecraft.screen != null) { + reset(); + return; + } + + if (!BrutalflyElytraItem.isWearingBrutalflyElytra(minecraft.player)) { + reset(); + return; + } + + if (!minecraft.player.isFallFlying()) { + reset(); + return; + } + + boolean sneakDown = AntarchyKeyBindings.isBrutalflyFlapPressed(); + boolean wasSneakDown = lastJumpDown; + lastJumpDown = sneakDown; + + if (sneakDown) { + chargeTicks = Math.min(chargeTicks + 1, BrutalflyElytraFlightHelper.FLAP_CHARGE_TICKS_MAX); + return; + } + + if (wasSneakDown && chargeTicks > 0) { + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("[BrutalflyElytra] Sending flap payload chargeTicks={} fallFlying={} deltaMovement={}", chargeTicks, minecraft.player.isFallFlying(), minecraft.player.getDeltaMovement()); + } + ClientPlayNetworking.send(new BrutalflyElytraFlapPayload(chargeTicks)); + } + chargeTicks = 0; + } + + private static void reset() { + lastJumpDown = false; + chargeTicks = 0; + } + + public static boolean isCharging() { + return chargeTicks > 0 && lastJumpDown; + } + + public static int getChargeTicks() { + return chargeTicks; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraHudRenderer.java new file mode 100644 index 00000000..e3971a64 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraHudRenderer.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; + +public final class BrutalflyElytraHudRenderer { + private static final ResourceLocation JUMP_BAR_BACKGROUND = ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_background.png"); + private static final ResourceLocation JUMP_BAR_PROGRESS = ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_progress.png"); + private static final int BAR_WIDTH = 182; + private static final int BAR_HEIGHT = 5; + + private BrutalflyElytraHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + if (player == null || minecraft.screen != null || player.isDeadOrDying()) { + return; + } + if (!BrutalflyElytraItem.isWearingBrutalflyElytra(player) || !player.isFallFlying()) { + return; + } + + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + int x0 = width / 2 - BAR_WIDTH / 2; + int y0 = height - 29; + + guiGraphics.blit(JUMP_BAR_BACKGROUND, x0, y0, 0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + + int chargeTicks = BrutalflyElytraClientHandler.getChargeTicks(); + float chargeRatio = Mth.clamp(chargeTicks / (float) BrutalflyElytraFlightHelper.FLAP_CHARGE_TICKS_MAX, 0.0F, 1.0F); + int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH); + if (filledWidth > 0) { + guiGraphics.setColor(1.0F, 1.0F, 1.0F, 0.35F + chargeRatio * 0.65F); + guiGraphics.blit(JUMP_BAR_PROGRESS, x0, y0, 0, 0, filledWidth, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + guiGraphics.setColor(1.0F, 1.0F, 1.0F, 1.0F); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraModel.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraModel.java new file mode 100644 index 00000000..c2e2de54 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/BrutalflyElytraModel.java @@ -0,0 +1,62 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; + +public final class BrutalflyElytraModel { + public static final ModelLayerLocation LAYER_LOCATION = + new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "brutalfly_elytra"), "main"); + + private final ModelPart root; + private final ModelPart leftWing; + private final ModelPart rightWing; + + public BrutalflyElytraModel(ModelPart root) { + this.root = root; + this.leftWing = root.getChild("left_wing"); + this.rightWing = root.getChild("right_wing"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshDefinition = new MeshDefinition(); + PartDefinition root = meshDefinition.getRoot(); + root.addOrReplaceChild( + "left_wing", + CubeListBuilder.create().texOffs(22, 0).addBox(-10.0F, 0.0F, -1.0F, 10.0F, 20.0F, 2.0F), + PartPose.offset(5.0F, 0.0F, -1.5F) + ); + root.addOrReplaceChild( + "right_wing", + CubeListBuilder.create().mirror().texOffs(22, 0).addBox(0.0F, 0.0F, -1.0F, 10.0F, 20.0F, 2.0F), + PartPose.offset(-5.0F, 0.0F, -1.5F) + ); + return LayerDefinition.create(meshDefinition, 64, 32); + } + + public void setupAnimation(float progress, float strength, boolean crouching) { + float wave = Mth.sin(progress * Mth.PI); + float flap = wave * strength; + float basePitch = crouching ? -0.18F : -0.05F; + float wingSpread = 0.55F; + this.leftWing.xRot = basePitch - flap * 1.2F; + this.rightWing.xRot = basePitch - flap * 1.2F; + this.leftWing.yRot = -wingSpread; + this.rightWing.yRot = -wingSpread; + this.leftWing.zRot = -0.35F - flap * 0.7F; + this.rightWing.zRot = -0.35F - flap * 0.7F; + } + + public void renderToBuffer(PoseStack poseStack, VertexConsumer consumer, int packedLight, int overlay) { + this.root.render(poseStack, consumer, packedLight, overlay); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DiamondMinecartClientHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DiamondMinecartClientHandler.java new file mode 100644 index 00000000..b10fe63a --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DiamondMinecartClientHandler.java @@ -0,0 +1,42 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.network.DiamondMinecartInputPayload; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.client.Minecraft; + +public final class DiamondMinecartClientHandler { + + private DiamondMinecartClientHandler() { + } + + + private static byte lastFlags = 0; + + public static void tick() { + Minecraft mc = Minecraft.getInstance(); + + if (!AntarchySettings.diamondMinecartEnabled()) return; + if (mc.player == null || mc.level == null) return; + if (!(mc.player.getVehicle() instanceof DiamondMinecartEntity)) return; + if (mc.screen != null) { + if (lastFlags != 0) { + ClientPlayNetworking.send(new DiamondMinecartInputPayload((byte) 0)); + lastFlags = 0; + } + return; + } + + byte flags = 0; + if (mc.options.keyUp.isDown()) flags |= DiamondMinecartInputPayload.FLAG_FORWARD; + if (mc.options.keyDown.isDown()) flags |= DiamondMinecartInputPayload.FLAG_BACK; + if (mc.options.keyLeft.isDown()) flags |= DiamondMinecartInputPayload.FLAG_LEFT; + if (mc.options.keyRight.isDown()) flags |= DiamondMinecartInputPayload.FLAG_RIGHT; + + if (flags != lastFlags) { + ClientPlayNetworking.send(new DiamondMinecartInputPayload(flags)); + lastFlags = flags; + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadClientHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadClientHandler.java new file mode 100644 index 00000000..4df0d8ee --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadClientHandler.java @@ -0,0 +1,384 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.DeathScreen; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import java.util.Random; + +public final class DreadClientHandler { + private static final Holder DREAD_EFFECT = + BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.DREAD.get()); + private static final int FOOTSTEP_MIN_INTERVAL_TICKS = 10; + private static final int FOOTSTEP_MAX_INTERVAL_TICKS = 22; + private static final int APPARITION_MIN_DURATION_TICKS = 16; + private static final int APPARITION_MAX_DURATION_TICKS = 34; + private static final int LUNGE_MIN_DURATION_TICKS = 10; + private static final int LUNGE_MAX_DURATION_TICKS = 16; + + private static int nextSoundTick = 0; + private static int nextApparitionTick = 0; + private static int nextFootstepTick = 0; + private static final List ACTIVE_APPARITIONS = new ArrayList<>(); + private static final Random RANDOM = new Random(); + + private DreadClientHandler() { + } + + private enum ApparitionType { + PERIPHERAL_SILHOUETTE, + CROSSING_SHADOW, + LUNGE_FLASH + } + + private static final class ApparitionEntry { + private final ApparitionType type; + private final float scale; + private final int lifetime; + private final int baseColor; + private float xNorm; + private float yNorm; + private float xVelocity; + private float yVelocity; + private int age; + + private ApparitionEntry(ApparitionType type, float xNorm, float yNorm, float xVelocity, float yVelocity, float scale, int lifetime, int baseColor) { + this.type = type; + this.xNorm = xNorm; + this.yNorm = yNorm; + this.xVelocity = xVelocity; + this.yVelocity = yVelocity; + this.scale = scale; + this.lifetime = lifetime; + this.baseColor = baseColor; + } + + private void tick() { + this.age++; + this.xNorm += this.xVelocity; + this.yNorm += this.yVelocity; + } + + private boolean expired() { + return this.age >= this.lifetime; + } + + private float alpha() { + float progress = this.lifetime <= 0 ? 1.0F : (float) this.age / (float) this.lifetime; + return Mth.clamp(Mth.sin(progress * (float) Math.PI), 0.0F, 1.0F); + } + } + + public static void tick() { + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null || mc.player == null) { + resetState(); + return; + } + if (mc.isPaused()) { + return; + } + + Player player = mc.player; + if (!player.isAlive() || player.isRemoved() || player.deathTime > 0 || player.isDeadOrDying() || mc.screen instanceof DeathScreen) { + resetState(); + return; + } + + tickApparitions(); + + if (!player.hasEffect(DREAD_EFFECT)) { + resetState(); + return; + } + + if (AntarchySettings.dreadHallucinationSoundsEnabled()) { + nextSoundTick--; + if (nextSoundTick <= 0) { + playHallucinationSound(mc, player); + nextSoundTick = randomIntervalTicks( + AntarchySettings.dreadHallucinationSoundMinInterval(), + AntarchySettings.dreadHallucinationSoundMaxInterval() + ); + } + } else { + nextSoundTick = 0; + } + + nextFootstepTick--; + if (nextFootstepTick <= 0) { + if (player.onGround() && player.getDeltaMovement().horizontalDistanceSqr() > 0.0025D) { + playFootstepSound(mc, player); + nextFootstepTick = randomTickInterval(FOOTSTEP_MIN_INTERVAL_TICKS, FOOTSTEP_MAX_INTERVAL_TICKS); + } else { + nextFootstepTick = 4; + } + } + + if (AntarchySettings.dreadHallucinationMobsEnabled()) { + nextApparitionTick--; + if (nextApparitionTick <= 0) { + spawnApparition(mc, player); + nextApparitionTick = randomIntervalTicks( + AntarchySettings.dreadHallucinationMobMinInterval(), + AntarchySettings.dreadHallucinationMobMaxInterval() + ); + } + } else { + nextApparitionTick = 0; + ACTIVE_APPARITIONS.clear(); + } + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null || !player.hasEffect(DREAD_EFFECT) || ACTIVE_APPARITIONS.isEmpty()) { + return; + } + + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); + for (ApparitionEntry entry : ACTIVE_APPARITIONS) { + float alpha = entry.alpha(); + if (alpha <= 0.01F) { + continue; + } + + switch (entry.type) { + case PERIPHERAL_SILHOUETTE -> renderPeripheralSilhouette(guiGraphics, width, height, entry, alpha); + case CROSSING_SHADOW -> renderCrossingShadow(guiGraphics, width, height, entry, alpha); + case LUNGE_FLASH -> renderLungeFlash(guiGraphics, width, height, entry, alpha); + } + } + } + + private static void tickApparitions() { + Iterator iterator = ACTIVE_APPARITIONS.iterator(); + while (iterator.hasNext()) { + ApparitionEntry entry = iterator.next(); + entry.tick(); + if (entry.expired()) { + iterator.remove(); + } + } + } + + private static void playHallucinationSound(Minecraft mc, Player player) { + Optional> tagOpt = + BuiltInRegistries.SOUND_EVENT.getTag(AntarchyTags.SoundEvents.DREAD_HALLUCINATION_SOUNDS); + if (tagOpt.isEmpty()) { + return; + } + + List> sounds = tagOpt.get().stream().toList(); + if (sounds.isEmpty()) { + return; + } + + SoundEvent soundEvent = sounds.get(RANDOM.nextInt(sounds.size())).value(); + + Vec3 look = player.getLookAngle(); + double baseAngle = Math.atan2(-look.x, -look.z); + double spread = (RANDOM.nextDouble() - 0.5D) * Math.PI; + double angle = baseAngle + spread; + double distance = 10.0D + RANDOM.nextDouble() * 15.0D; + + double soundX = player.getX() + Math.sin(angle) * distance; + double soundY = player.getY() + RANDOM.nextDouble() * 4.0D - 1.0D; + double soundZ = player.getZ() + Math.cos(angle) * distance; + + mc.level.playLocalSound( + soundX, + soundY, + soundZ, + soundEvent, + SoundSource.HOSTILE, + 1.0F, + 0.85F + RANDOM.nextFloat() * 0.3F, + false + ); + } + + private static void spawnApparition(Minecraft mc, Player player) { + double roll = RANDOM.nextDouble(); + if (roll < 0.5D) { + spawnPeripheralSilhouette(); + return; + } + if (roll < 0.82D) { + spawnCrossingShadow(); + return; + } + spawnLungeFlash(mc, player); + } + + private static void spawnPeripheralSilhouette() { + boolean leftSide = RANDOM.nextBoolean(); + float xNorm = leftSide ? 0.08F + RANDOM.nextFloat() * 0.08F : 0.84F + RANDOM.nextFloat() * 0.08F; + float yNorm = 0.48F + (RANDOM.nextFloat() - 0.5F) * 0.26F; + float scale = 0.85F + RANDOM.nextFloat() * 0.4F; + int lifetime = randomTickInterval(APPARITION_MIN_DURATION_TICKS, APPARITION_MAX_DURATION_TICKS); + ACTIVE_APPARITIONS.add(new ApparitionEntry( + ApparitionType.PERIPHERAL_SILHOUETTE, + xNorm, + yNorm, + leftSide ? -0.0015F : 0.0015F, + 0.0F, + scale, + lifetime, + 0x160000 + )); + } + + private static void spawnCrossingShadow() { + boolean leftToRight = RANDOM.nextBoolean(); + float xNorm = leftToRight ? -0.18F : 1.18F; + float yNorm = 0.38F + RANDOM.nextFloat() * 0.36F; + float velocity = leftToRight ? 0.04F + RANDOM.nextFloat() * 0.015F : -(0.04F + RANDOM.nextFloat() * 0.015F); + float scale = 0.9F + RANDOM.nextFloat() * 0.45F; + int lifetime = randomTickInterval(APPARITION_MIN_DURATION_TICKS, APPARITION_MAX_DURATION_TICKS); + ACTIVE_APPARITIONS.add(new ApparitionEntry( + ApparitionType.CROSSING_SHADOW, + xNorm, + yNorm, + velocity, + 0.0F, + scale, + lifetime, + 0x1A0000 + )); + } + + private static void spawnLungeFlash(Minecraft mc, Player player) { + float xNorm = 0.5F + (RANDOM.nextBoolean() ? -1.0F : 1.0F) * (0.12F + RANDOM.nextFloat() * 0.12F); + float yNorm = 0.58F + (RANDOM.nextFloat() - 0.5F) * 0.12F; + float scale = 0.95F + RANDOM.nextFloat() * 0.35F; + int lifetime = randomTickInterval(LUNGE_MIN_DURATION_TICKS, LUNGE_MAX_DURATION_TICKS); + ACTIVE_APPARITIONS.add(new ApparitionEntry( + ApparitionType.LUNGE_FLASH, + xNorm, + yNorm, + 0.0F, + -0.002F, + scale, + lifetime, + 0x2A0000 + )); + mc.level.playLocalSound( + player.getX(), + player.getY() + 1.0D, + player.getZ(), + AntarchyFabricContent.NIGHTMARE_BITE.get(), + SoundSource.HOSTILE, + 0.4F, + 0.88F + RANDOM.nextFloat() * 0.12F, + false + ); + } + + private static void playFootstepSound(Minecraft mc, Player player) { + double soundX = player.getX() + (RANDOM.nextDouble() - 0.5D) * 1.2D; + double soundY = player.getY() - 0.95D; + double soundZ = player.getZ() + (RANDOM.nextDouble() - 0.5D) * 1.2D; + + mc.level.playLocalSound( + soundX, + soundY, + soundZ, + SoundEvents.SILVERFISH_STEP, + SoundSource.HOSTILE, + 0.45F, + 0.85F + RANDOM.nextFloat() * 0.25F, + false + ); + } + + private static void renderPeripheralSilhouette(GuiGraphics guiGraphics, int width, int height, ApparitionEntry entry, float alpha) { + int centerX = Math.round(entry.xNorm * width); + int baseY = Math.round(entry.yNorm * height); + int bodyWidth = Math.round(width * 0.045F * entry.scale); + int bodyHeight = Math.round(height * 0.24F * entry.scale); + int headSize = Math.round(bodyWidth * 0.78F); + int x0 = centerX - bodyWidth / 2; + int y0 = baseY - bodyHeight / 2; + + int outerColor = alphaColor(entry.baseColor, alpha * 0.8F); + int innerColor = alphaColor(0x5A0000, alpha * 0.22F); + + guiGraphics.fill(x0, y0, x0 + bodyWidth, y0 + bodyHeight, outerColor); + guiGraphics.fill(x0 - headSize / 2 + bodyWidth / 2, y0 - headSize / 2, x0 + bodyWidth / 2 + headSize / 2, y0 + headSize / 2, outerColor); + guiGraphics.fill(x0 + bodyWidth / 6, y0 + bodyHeight / 6, x0 + bodyWidth - bodyWidth / 6, y0 + bodyHeight - bodyHeight / 7, innerColor); + } + + private static void renderCrossingShadow(GuiGraphics guiGraphics, int width, int height, ApparitionEntry entry, float alpha) { + int centerX = Math.round(entry.xNorm * width); + int centerY = Math.round(entry.yNorm * height); + int shadowWidth = Math.round(width * 0.22F * entry.scale); + int shadowHeight = Math.round(height * 0.035F * entry.scale); + + int outerColor = alphaColor(entry.baseColor, alpha * 0.65F); + int innerColor = alphaColor(0x340000, alpha * 0.28F); + + guiGraphics.fill(centerX - shadowWidth / 2, centerY - shadowHeight / 2, centerX + shadowWidth / 2, centerY + shadowHeight / 2, outerColor); + guiGraphics.fill(centerX - shadowWidth / 3, centerY - shadowHeight, centerX + shadowWidth / 3, centerY + shadowHeight, innerColor); + } + + private static void renderLungeFlash(GuiGraphics guiGraphics, int width, int height, ApparitionEntry entry, float alpha) { + int centerX = Math.round(entry.xNorm * width); + int centerY = Math.round(entry.yNorm * height); + int faceWidth = Math.round(width * 0.11F * entry.scale); + int faceHeight = Math.round(height * 0.12F * entry.scale); + + int shadowColor = alphaColor(entry.baseColor, alpha * 0.82F); + int glowColor = alphaColor(0x4A0000, alpha * 0.25F); + int eyeColor = alphaColor(0xB02020, alpha * 0.8F); + + guiGraphics.fill(centerX - faceWidth / 2, centerY - faceHeight / 2, centerX + faceWidth / 2, centerY + faceHeight / 2, shadowColor); + guiGraphics.fill(centerX - faceWidth, centerY - faceHeight / 3, centerX + faceWidth, centerY + faceHeight, glowColor); + + int eyeWidth = Math.max(2, faceWidth / 7); + int eyeHeight = Math.max(2, faceHeight / 12); + int eyeY = centerY - faceHeight / 8; + int eyeOffset = faceWidth / 4; + guiGraphics.fill(centerX - eyeOffset - eyeWidth, eyeY, centerX - eyeOffset + eyeWidth, eyeY + eyeHeight, eyeColor); + guiGraphics.fill(centerX + eyeOffset - eyeWidth, eyeY, centerX + eyeOffset + eyeWidth, eyeY + eyeHeight, eyeColor); + } + + private static void resetState() { + ACTIVE_APPARITIONS.clear(); + nextSoundTick = 0; + nextApparitionTick = 0; + nextFootstepTick = 0; + } + + private static int randomIntervalTicks(double minSeconds, double maxSeconds) { + double seconds = minSeconds + RANDOM.nextDouble() * Math.max(0.0D, maxSeconds - minSeconds); + return Math.max(1, (int) (seconds * 20.0D)); + } + + private static int randomTickInterval(int minTicks, int maxTicks) { + return minTicks + RANDOM.nextInt(Math.max(1, maxTicks - minTicks + 1)); + } + + private static int alphaColor(int rgb, float alpha) { + int alphaByte = Mth.clamp((int) (alpha * 255.0F), 0, 255); + return (alphaByte << 24) | rgb; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadHudRenderer.java new file mode 100644 index 00000000..8feae4d6 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadHudRenderer.java @@ -0,0 +1,33 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.player.Player; + +public final class DreadHudRenderer { + private static final Holder DREAD_EFFECT = BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.DREAD.get()); + + private DreadHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + if (player == null || minecraft.screen != null || player.isDeadOrDying() || !player.hasEffect(DREAD_EFFECT)) { + return; + } + + float pulse = Math.max(0.0F, Mth.sin(player.tickCount * ((float) Math.PI * 2.0F / 80.0F))); + int alpha = Mth.clamp(18 + Mth.floor(pulse * 64.0F), 0, 255); + int color = (alpha << 24) | 0x120000; + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + guiGraphics.fill(0, 0, width, height, color); + DreadClientHandler.render(guiGraphics); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ElythiaFireflyManager.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ElythiaFireflyManager.java new file mode 100644 index 00000000..1a813793 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ElythiaFireflyManager.java @@ -0,0 +1,82 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.client.renderer.ElythiaSkyRenderer; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.player.Player; + +public final class ElythiaFireflyManager { + private static final long NIGHT_START = 13000L; + private static final long NIGHT_END = 23000L; + private static final int SPAWN_INTERVAL = 3; + private static final int SPAWN_RADIUS_H = 20; + private static final int SPAWN_Y_MIN = -2; + private static final int SPAWN_Y_MAX = 10; + private static final int SOUND_INTERVAL_MIN = 250; + private static final int SOUND_INTERVAL_MAX = 450; + + private static int nextSoundTick = SOUND_INTERVAL_MIN; + + private ElythiaFireflyManager() {} + + public static void register() { + ClientTickEvents.END_CLIENT_TICK.register(client -> { + ClientLevel level = client.level; + if (level == null || client.player == null) return; + if (client.isPaused()) return; + if (!ElythiaSkyRenderer.shouldRender(level)) return; + + long dayTime = level.getDayTime() % 24000L; + if (dayTime < NIGHT_START || dayTime > NIGHT_END) return; + + long gameTime = level.getGameTime(); + + if (AntarchySettings.elythiaFireflyParticlesEnabled()) { + if (gameTime % SPAWN_INTERVAL == 0) { + Player player = client.player; + int px = (int) player.getX(); + int py = (int) player.getY(); + int pz = (int) player.getZ(); + + int attempts = 1 + level.random.nextInt(3); + for (int i = 0; i < attempts; i++) { + int ox = level.random.nextInt(SPAWN_RADIUS_H * 2 + 1) - SPAWN_RADIUS_H; + int oy = SPAWN_Y_MIN + level.random.nextInt(SPAWN_Y_MAX - SPAWN_Y_MIN + 1); + int oz = level.random.nextInt(SPAWN_RADIUS_H * 2 + 1) - SPAWN_RADIUS_H; + + BlockPos candidate = new BlockPos(px + ox, py + oy, pz + oz); + if (!level.getBlockState(candidate).isAir()) continue; + + level.addParticle( + AntarchyFabricContent.FIREFLY.get(), + candidate.getX() + level.random.nextDouble(), + candidate.getY() + level.random.nextDouble(), + candidate.getZ() + level.random.nextDouble(), + 0.0, 0.0, 0.0 + ); + } + } + } + + nextSoundTick--; + if (nextSoundTick <= 0) { + nextSoundTick = SOUND_INTERVAL_MIN + level.random.nextInt(SOUND_INTERVAL_MAX - SOUND_INTERVAL_MIN + 1); + Player player = client.player; + level.playLocalSound( + player.getX(), player.getY(), player.getZ(), + AntarchySoundEvents.ELYTHIA_FIREFLY_AMBIENT.get(), + SoundSource.AMBIENT, + 0.6f + level.random.nextFloat() * 0.3f, + 0.9f + level.random.nextFloat() * 0.2f, + false + ); + } + }); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/FallenKingCrownLayer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/FallenKingCrownLayer.java new file mode 100644 index 00000000..2a274138 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/FallenKingCrownLayer.java @@ -0,0 +1,61 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; + +public final class FallenKingCrownLayer extends RenderLayer> { + private static final ModelResourceLocation WORN_MODEL = ModelResourceLocation.inventory( + net.minecraft.resources.ResourceLocation.fromNamespaceAndPath("antarchy", "fallen_king_crown_worn") + ); + private final ItemRenderer itemRenderer; + + public FallenKingCrownLayer(RenderLayerParent> renderer) { + super(renderer); + this.itemRenderer = Minecraft.getInstance().getItemRenderer(); + } + + @Override + public void render( + PoseStack poseStack, + MultiBufferSource buffer, + int packedLight, + AbstractClientPlayer player, + float limbSwing, + float limbSwingAmount, + float partialTick, + float ageInTicks, + float netHeadYaw, + float headPitch + ) { + ItemStack headStack = player.getItemBySlot(EquipmentSlot.HEAD); + if (!headStack.is(AntarchyFabricContent.FALLEN_KING_CROWN.get()) || player.isInvisible()) { + return; + } + + poseStack.pushPose(); + this.getParentModel().head.translateAndRotate(poseStack); + this.itemRenderer.render( + headStack, + ItemDisplayContext.HEAD, + false, + poseStack, + buffer, + packedLight, + LivingEntityRenderer.getOverlayCoords(player, 0.0F), + Minecraft.getInstance().getModelManager().getModel(WORN_MODEL) + ); + poseStack.popPose(); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/GravityGunClientHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/GravityGunClientHandler.java new file mode 100644 index 00000000..d959833b --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/GravityGunClientHandler.java @@ -0,0 +1,63 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.network.GravityGunPrimaryPayload; +import com.craisinlord.antarchy.content.network.GravityGunScrollPayload; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.util.Mth; +import org.lwjgl.glfw.GLFW; + +public final class GravityGunClientHandler { + private static final double SCROLL_STEP_DISTANCE = 0.75D; + private static boolean lastAttackDown; + private static double scrollAccumulator; + + private GravityGunClientHandler() { + } + + public static void register() { + ClientTickEvents.END_CLIENT_TICK.register(client -> tickMouse(client)); + } + + private static void tickMouse(Minecraft mc) { + if (mc.player == null || mc.level == null || mc.screen != null || !AntarchySettings.gravityGunEnabled()) { + lastAttackDown = false; + return; + } + + if (!(mc.player.getMainHandItem().getItem() instanceof GravityGunItem)) { + lastAttackDown = false; + return; + } + + long window = mc.getWindow().getWindow(); + boolean attackDown = org.lwjgl.glfw.GLFW.glfwGetMouseButton(window, GLFW.GLFW_MOUSE_BUTTON_LEFT) == GLFW.GLFW_PRESS; + if (attackDown && !lastAttackDown) { + ClientPlayNetworking.send(new GravityGunPrimaryPayload()); + } + lastAttackDown = attackDown; + } + + public static boolean onScroll(double verticalAmount) { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null || mc.screen != null || !Screen.hasControlDown() || !AntarchySettings.gravityGunEnabled()) { + return false; + } + + if (!(mc.player.getMainHandItem().getItem() instanceof GravityGunItem) || !GravityGunItem.hasHeldTarget(mc.player.getMainHandItem())) { + return false; + } + + double scrollAmount = Mth.clamp(verticalAmount, -1.0D, 1.0D); + if (Math.abs(scrollAmount) < 1.0E-4D) { + return false; + } + + ClientPlayNetworking.send(new GravityGunScrollPayload(scrollAmount * SCROLL_STEP_DISTANCE)); + return true; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/InvertedGeyserEruptionParticle.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/InvertedGeyserEruptionParticle.java new file mode 100644 index 00000000..4f881435 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/InvertedGeyserEruptionParticle.java @@ -0,0 +1,78 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.NoRenderParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; + +public final class InvertedGeyserEruptionParticle extends NoRenderParticle { + private final int fluidBlocks; + private final double motionX; + private final double motionY; + private final double motionZ; + private final InvertedGeyserParticleOptions plumeParticle; + private final InvertedGeyserBaseParticleOptions baseParticle; + private final InvertedGeyserBaseParticleOptions poofParticle; + + protected InvertedGeyserEruptionParticle( + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd, + InvertedGeyserParticleOptions options + ) { + super(level, x, y, z); + this.motionX = xd; + this.motionY = yd; + this.motionZ = zd; + this.fluidBlocks = options.fluidBlocks(); + this.lifetime = 20; + this.plumeParticle = new InvertedGeyserParticleOptions(AntarchyFabricContent.INVERTED_GEYSER_PLUME.get(), this.fluidBlocks, options.direction()); + this.baseParticle = new InvertedGeyserBaseParticleOptions(AntarchyFabricContent.INVERTED_GEYSER_BASE.get(), this.fluidBlocks, 1.5F, options.direction()); + this.poofParticle = new InvertedGeyserBaseParticleOptions(AntarchyFabricContent.INVERTED_GEYSER_POOF.get(), this.fluidBlocks, 2.0F, options.direction()); + } + + @Override + public void tick() { + super.tick(); + + if (this.age % 2 == 0) { + for (int i = 0; i < 2; i++) { + this.level.addParticle(this.baseParticle, this.x, this.y, this.z, this.motionX, this.motionY, this.motionZ); + } + } + + for (int i = 0; i < this.fluidBlocks + 2; i++) { + this.level.addParticle(this.plumeParticle, this.x, this.y, this.z, this.motionX, this.motionY, this.motionZ); + } + + if (this.age % 10 == 0) { + for (int i = 0; i < 20; i++) { + this.level.addParticle(this.poofParticle, this.x, this.y, this.z, this.motionX, this.motionY, this.motionZ); + } + } + } + + public static final class Provider implements ParticleProvider { + @Override + public Particle createParticle( + InvertedGeyserParticleOptions options, + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd + ) { + return new InvertedGeyserEruptionParticle(level, x, y, z, xd, yd, zd, options); + } + } +} + diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/LucidSoundHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/LucidSoundHandler.java new file mode 100644 index 00000000..d1e46e9e --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/LucidSoundHandler.java @@ -0,0 +1,226 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.DeathScreen; +import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public final class LucidSoundHandler { + private static final double START_SCAN_RADIUS = 96.0D; + private static final int ANIM_ATTACK = 2; + private static final int ANIM_DEATH = 3; + private static final Map ACTIVE_LOOPS = new HashMap<>(); + + private LucidSoundHandler() { + } + + public static void register() { + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (client.level == null || client.player == null || client.isPaused()) { + resetAll(client); + return; + } + + if (!client.player.isAlive() || client.player.isRemoved() || client.player.isDeadOrDying() + || client.screen instanceof DeathScreen) { + resetAll(client); + return; + } + + pruneStaleLoops(client); + refreshNearbyLucids(client); + }); + } + + private static void refreshNearbyLucids(Minecraft mc) { + List lucids = mc.level.getEntitiesOfClass( + LucidEntity.class, + mc.player.getBoundingBox().inflate(START_SCAN_RADIUS) + ); + + for (LucidEntity lucid : lucids) { + if (!lucid.shouldPlayAmbientLoop()) continue; + + LucidLoopSet set = ACTIVE_LOOPS.get(lucid.getUUID()); + if (set == null) { + set = new LucidLoopSet(lucid); + ACTIVE_LOOPS.put(lucid.getUUID(), set); + set.start(mc); + } else { + set.refresh(mc, lucid); + } + } + } + + private static void pruneStaleLoops(Minecraft mc) { + Iterator> iterator = ACTIVE_LOOPS.entrySet().iterator(); + while (iterator.hasNext()) { + LucidLoopSet set = iterator.next().getValue(); + if (!set.isValid()) { + set.stop(mc); + iterator.remove(); + } else if (!set.entity.shouldPlayAmbientLoop()) { + set.stop(mc); + iterator.remove(); + } + } + } + + private static void resetAll(Minecraft mc) { + for (LucidLoopSet set : ACTIVE_LOOPS.values()) { + set.stop(mc); + } + ACTIVE_LOOPS.clear(); + } + + private static final class LucidLoopSet { + private LucidEntity entity; + @Nullable private LucidLoopSound ambient; + @Nullable private LucidLoopSound flying; + private int lastAnimationState = -1; + + private LucidLoopSet(LucidEntity entity) { + this.entity = entity; + } + + private boolean isValid() { + return entity != null && entity.isAlive() && !entity.isRemoved(); + } + + private void start(Minecraft mc) { + playAttackSoundIfNeeded(mc, entity); + + if (ambient == null || !mc.getSoundManager().isActive(ambient)) { + ambient = new LucidLoopSound(entity, AntarchyFabricContent.LUCID_AMBIENT.get(), + SoundSource.HOSTILE, 0.14F, 0.97F, true); + mc.getSoundManager().play(ambient); + } + + if (entity.shouldPlayFlyingLoop() && (flying == null || !mc.getSoundManager().isActive(flying))) { + flying = new LucidLoopSound(entity, AntarchyFabricContent.LUCID_FLYING.get(), + SoundSource.HOSTILE, 0.18F, 1.0F, false); + mc.getSoundManager().play(flying); + } + } + + private void refresh(Minecraft mc, LucidEntity entity) { + this.entity = entity; + playAttackSoundIfNeeded(mc, entity); + + if (ambient == null || !mc.getSoundManager().isActive(ambient)) { + ambient = new LucidLoopSound(entity, AntarchyFabricContent.LUCID_AMBIENT.get(), + SoundSource.HOSTILE, 0.14F, 0.97F, true); + mc.getSoundManager().play(ambient); + } else { + ambient.setEntity(entity); + } + + if (entity.shouldPlayFlyingLoop()) { + if (flying == null || !mc.getSoundManager().isActive(flying)) { + flying = new LucidLoopSound(entity, AntarchyFabricContent.LUCID_FLYING.get(), + SoundSource.HOSTILE, 0.18F, 1.0F, false); + mc.getSoundManager().play(flying); + } else { + flying.setEntity(entity); + } + } else if (flying != null) { + mc.getSoundManager().stop(flying); + flying = null; + } + } + + private void stop(Minecraft mc) { + if (ambient != null) { mc.getSoundManager().stop(ambient); ambient = null; } + if (flying != null) { mc.getSoundManager().stop(flying); flying = null; } + lastAnimationState = -1; + } + + private void playAttackSoundIfNeeded(Minecraft mc, LucidEntity entity) { + int currentState = entity.getAnimationState(); + if (currentState == ANIM_ATTACK && lastAnimationState != ANIM_ATTACK) { + mc.getSoundManager().play(new LucidOneShotSound(entity, AntarchyFabricContent.LUCID_ATTACK.get(), + SoundSource.HOSTILE, 1.0F, 1.02F + entity.getRandom().nextFloat() * 0.08F)); + } + lastAnimationState = currentState; + } + } + + private static final class LucidLoopSound extends AbstractTickableSoundInstance { + private LucidEntity entity; + private final boolean ambient; + + private LucidLoopSound(LucidEntity entity, SoundEvent soundEvent, SoundSource source, + float volume, float pitch, boolean ambient) { + super(soundEvent, source, RandomSource.create()); + this.entity = entity; + this.ambient = ambient; + this.looping = true; + this.delay = 0; + this.relative = false; + this.attenuation = SoundInstance.Attenuation.LINEAR; + this.volume = volume; + this.pitch = pitch; + this.x = entity.getX(); + this.y = entity.getY(); + this.z = entity.getZ(); + } + + private void setEntity(LucidEntity entity) { this.entity = entity; } + + @Override + public void tick() { + if (entity == null || entity.isRemoved() || entity.isDeadOrDying() + || entity.getAnimationState() == ANIM_DEATH || !entity.shouldPlayAmbientLoop()) { + stop(); + return; + } + if (!ambient && !entity.shouldPlayFlyingLoop()) { stop(); return; } + x = entity.getX(); y = entity.getY(); z = entity.getZ(); + } + + @Override + public boolean canStartSilent() { return true; } + } + + private static final class LucidOneShotSound extends AbstractTickableSoundInstance { + private final LucidEntity entity; + + private LucidOneShotSound(LucidEntity entity, SoundEvent soundEvent, SoundSource source, + float volume, float pitch) { + super(soundEvent, source, RandomSource.create()); + this.entity = entity; + this.looping = false; + this.delay = 0; + this.relative = false; + this.attenuation = SoundInstance.Attenuation.LINEAR; + this.volume = volume; + this.pitch = pitch; + this.x = entity.getX(); + this.y = entity.getY(); + this.z = entity.getZ(); + } + + @Override + public void tick() { + if (entity == null || entity.isRemoved() || entity.isDeadOrDying() + || entity.getAnimationState() == ANIM_DEATH) { + stop(); + return; + } + x = entity.getX(); y = entity.getY(); z = entity.getZ(); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/MogglesClientRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/MogglesClientRenderer.java new file mode 100644 index 00000000..bd17d646 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/MogglesClientRenderer.java @@ -0,0 +1,54 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.item.MogglesCaveDetector; +import com.craisinlord.antarchy.content.item.MogglesLogic; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; + +public final class MogglesClientRenderer { + private MogglesClientRenderer() {} + + public static void register() { + ClientTickEvents.END_CLIENT_TICK.register(client -> { + Player player = client.player; + Level level = client.level; + if (player == null || level == null) return; + + if (!MogglesLogic.isWearingMoggles(player) || level.canSeeSky(player.blockPosition())) { + MogglesCaveDetector.clear(); + return; + } + + MogglesCaveDetector.tick(player, level); + + BlockPos target = MogglesCaveDetector.getCaveTarget(); + if (target == null) return; + + if (level.getGameTime() % 2 != 0) return; + + Vec3 eye = player.getEyePosition(); + Vec3 end = Vec3.atCenterOf(target); + double totalDist = eye.distanceTo(end); + if (totalDist < 1.5) return; + + Vec3 dir = end.subtract(eye).normalize(); + + int steps = Math.min(5, (int) (totalDist / 1.5)); + double spacing = (totalDist - 1.5) / Math.max(steps, 1); + + for (int i = 0; i < steps; i++) { + double t = 1.5 + i * spacing; + Vec3 p = eye.add(dir.scale(t)); + Vec3 vel = dir.scale(0.04); + level.addParticle(ParticleTypes.END_ROD, + p.x, p.y, p.z, + vel.x, vel.y, vel.z); + } + }); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedClientHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedClientHandler.java new file mode 100644 index 00000000..87523886 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedClientHandler.java @@ -0,0 +1,89 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.minecraft.core.Holder; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.particles.BlockParticleOption; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; + +public final class ParalyzedClientHandler { + private static final Holder PARALYZED_EFFECT = + BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.PARALYZED.get()); + + + private static final int PARTICLE_INTERVAL = 3; + + private static final int PARTICLES_PER_ENTITY = 4; + + private static final double PARTICLE_RADIUS = 24.0; + + private ParalyzedClientHandler() { + } + + + public static void clampPlayerInput(LocalPlayer player) { + if (!player.hasEffect(PARALYZED_EFFECT)) { + return; + } + + var input = player.input; + input.left = false; + input.right = false; + input.up = false; + input.down = false; + input.leftImpulse = 0.0F; + input.forwardImpulse = 0.0F; + input.jumping = false; + } + + public static void tick() { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null) { + return; + } + + LocalPlayer player = mc.player; + if (player.hasEffect(PARALYZED_EFFECT)) { + while (mc.options.keyAttack.consumeClick()) { } + while (mc.options.keyUse.consumeClick()) { } + } + if (player.tickCount % PARTICLE_INTERVAL != 0) { + return; + } + + ClientLevel level = mc.level; + level.getEntitiesOfClass( + LivingEntity.class, + player.getBoundingBox().inflate(PARTICLE_RADIUS), + entity -> entity != player + && entity.isAlive() + && entity.hasEffect(PARALYZED_EFFECT) + ).forEach(entity -> spawnStoneParticles(level, entity)); + } + + private static void spawnStoneParticles(ClientLevel level, LivingEntity entity) { + BlockState stone = Blocks.STONE.defaultBlockState(); + BlockParticleOption particle = new BlockParticleOption(ParticleTypes.BLOCK, stone); + + float w = entity.getBbWidth(); + float h = entity.getBbHeight(); + + for (int i = 0; i < PARTICLES_PER_ENTITY; i++) { + double px = entity.getX() + (Math.random() - 0.5) * w; + double py = entity.getY() + Math.random() * h; + double pz = entity.getZ() + (Math.random() - 0.5) * w; + + double vx = (Math.random() - 0.5) * 0.08; + double vy = Math.random() * 0.06; + double vz = (Math.random() - 0.5) * 0.08; + + level.addParticle(particle, px, py, pz, vx, vy, vz); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedHudRenderer.java new file mode 100644 index 00000000..d5365870 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedHudRenderer.java @@ -0,0 +1,48 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Player; + +public final class ParalyzedHudRenderer { + private static final Holder PARALYZED_EFFECT = BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.PARALYZED.get()); + + private ParalyzedHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null || player.isDeadOrDying()) { + return; + } + + MobEffectInstance effect = player.getEffect(PARALYZED_EFFECT); + if (effect == null) { + return; + } + + int duration = effect.getDuration(); + float fade = effect.isInfiniteDuration() + ? 1.0F + : Math.min(1.0F, Math.max(duration, 20) / 20.0F); + float pulse = 0.85F + 0.15F * Mth.sin(player.tickCount * ((float) Math.PI * 2.0F / 120.0F)); + + int alpha = Mth.clamp((int) (fade * pulse * 0xC0), 0, 0xFF); + + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); + int color = (alpha << 24) | 0x303030; + guiGraphics.fill(0, 0, width, height, color); + int innerAlpha = Mth.clamp(alpha / 3, 0, 0xFF); + int innerColor = (innerAlpha << 24) | 0x606060; + int margin = Math.min(width, height) / 6; + guiGraphics.fill(margin, margin, width - margin, height - margin, innerColor); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ReverieTrailHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ReverieTrailHandler.java new file mode 100644 index 00000000..036092a9 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ReverieTrailHandler.java @@ -0,0 +1,254 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexFormat; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public final class ReverieTrailHandler { + + private static final int MAX_TRAIL_POINTS = 20; + private static final int IDLE_LIFETIME_TICKS = 8; + private static final int NORMAL_LIFETIME_TICKS = 14; + private static final int DASH_LIFETIME_TICKS = 22; + private static final float CORE_LINE_WIDTH = 0.035f; + private static final float GLOW_LINE_WIDTH = 0.10f; + private static final double MIN_DISTANCE_BETWEEN_POINTS = 0.05; + private static final double DASH_DISTANCE_THRESHOLD = 0.35; + + private static final Map> TRAILS = new HashMap<>(); + + private ReverieTrailHandler() {} + + private static final class TrailPoint { + final Vec3 pos; + final ReverieEntity.Mood mood; + int age; + final int lifetime; + + TrailPoint(Vec3 pos, ReverieEntity.Mood mood, int lifetime) { + this.pos = pos; + this.mood = mood; + this.age = 0; + this.lifetime = lifetime; + } + + float progress() { return lifetime <= 0 ? 1f : (float) age / (float) lifetime; } + boolean expired() { return age >= lifetime; } + } + + public static void register() { + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (client.level == null) { TRAILS.clear(); return; } + if (client.isPaused()) return; + + Set activeIds = new HashSet<>(); + + for (Entity entity : client.level.entitiesForRendering()) { + if (!(entity instanceof ReverieEntity reverie)) continue; + + int id = reverie.getId(); + activeIds.add(id); + ReverieEntity.Mood mood = reverie.getMood(); + Vec3 pos = reverie.position().add(0.0, reverie.getBbHeight() * 0.5, 0.0); + + ArrayDeque points = TRAILS.computeIfAbsent(id, k -> new ArrayDeque<>()); + + if (points.isEmpty()) { + points.addFirst(new TrailPoint(pos, mood, lifetimeFor(mood, false))); + } else { + Vec3 lastPos = points.peekFirst().pos; + double distSq = pos.distanceToSqr(lastPos); + if (distSq >= MIN_DISTANCE_BETWEEN_POINTS * MIN_DISTANCE_BETWEEN_POINTS) { + boolean isDash = distSq >= DASH_DISTANCE_THRESHOLD * DASH_DISTANCE_THRESHOLD; + points.addFirst(new TrailPoint(pos, mood, lifetimeFor(mood, isDash))); + while (points.size() > MAX_TRAIL_POINTS) points.pollLast(); + } + } + + Iterator it = points.iterator(); + while (it.hasNext()) { + TrailPoint p = it.next(); + p.age++; + if (p.expired()) it.remove(); + } + } + + TRAILS.keySet().removeIf(id -> !activeIds.contains(id)); + }); + + WorldRenderEvents.AFTER_TRANSLUCENT.register(context -> { + if (TRAILS.isEmpty()) return; + + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) return; + + Camera camera = context.camera(); + Vec3 camPos = camera.getPosition(); + Matrix4f mat = context.matrixStack().last().pose(); + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + + Tesselator tesselator = Tesselator.getInstance(); + + List> snapshots = new ArrayList<>(TRAILS.size()); + for (ArrayDeque deque : TRAILS.values()) { + if (deque.size() >= 2) snapshots.add(new ArrayList<>(deque)); + } + + if (!snapshots.isEmpty()) { + BufferBuilder glowBuf = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) buildPass(glowBuf, mat, points, camPos, true); + MeshData glowMesh = glowBuf.build(); + if (glowMesh != null) BufferUploader.drawWithShader(glowMesh); + + BufferBuilder coreBuf = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) buildPass(coreBuf, mat, points, camPos, false); + MeshData coreMesh = coreBuf.build(); + if (coreMesh != null) BufferUploader.drawWithShader(coreMesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + }); + } + + private static int lifetimeFor(ReverieEntity.Mood mood, boolean isDash) { + if (isDash || mood == ReverieEntity.Mood.PURPLE) return DASH_LIFETIME_TICKS; + if (mood == ReverieEntity.Mood.WHITE) return IDLE_LIFETIME_TICKS; + return NORMAL_LIFETIME_TICKS; + } + + private static void buildPass(BufferBuilder buf, Matrix4f mat, List points, Vec3 camPos, boolean glow) { + int n = points.size(); + for (int i = 0; i < n - 1; i++) { + TrailPoint newer = points.get(i); + TrailPoint older = points.get(i + 1); + + float alphaNearer = (glow ? glowAlpha(newer.mood) : coreAlpha(newer.mood)) * indexAlpha(i, n) * (1f - newer.progress()); + float alphaFarther = (glow ? glowAlpha(older.mood) : coreAlpha(older.mood)) * indexAlpha(i + 1, n) * (1f - older.progress()); + if (alphaNearer < 0.005f && alphaFarther < 0.005f) continue; + + Vec3 right = cameraFacingRight(newer.pos, older.pos, camPos); + if (right == null) continue; + + float halfWidth = glow ? glowHalfWidth(newer.mood) : coreHalfWidth(newer.mood); + right = right.scale(halfWidth); + + float[] cn = color(newer.mood); + float[] co = color(older.mood); + Vec3 na = newer.pos.subtract(camPos); + Vec3 nb = older.pos.subtract(camPos); + + buf.addVertex(mat, (float)(na.x + right.x), (float)(na.y + right.y), (float)(na.z + right.z)).setColor(cn[0], cn[1], cn[2], alphaNearer); + buf.addVertex(mat, (float)(na.x - right.x), (float)(na.y - right.y), (float)(na.z - right.z)).setColor(cn[0], cn[1], cn[2], alphaNearer); + buf.addVertex(mat, (float)(nb.x - right.x), (float)(nb.y - right.y), (float)(nb.z - right.z)).setColor(co[0], co[1], co[2], alphaFarther); + buf.addVertex(mat, (float)(nb.x + right.x), (float)(nb.y + right.y), (float)(nb.z + right.z)).setColor(co[0], co[1], co[2], alphaFarther); + } + } + + private static Vec3 cameraFacingRight(Vec3 a, Vec3 b, Vec3 camPos) { + Vec3 segDir = b.subtract(a); + if (segDir.lengthSqr() < 1e-12) return null; + segDir = segDir.normalize(); + Vec3 mid = a.add(b).scale(0.5); + Vec3 toCamera = camPos.subtract(mid); + if (toCamera.lengthSqr() < 1e-12) return null; + toCamera = toCamera.normalize(); + Vec3 right = segDir.cross(toCamera); + if (right.lengthSqr() < 1e-10) { + right = segDir.cross(new Vec3(0.0, 1.0, 0.0)); + if (right.lengthSqr() < 1e-10) return null; + } + return right.normalize(); + } + + private static float indexAlpha(int i, int n) { + if (n <= 1) return 1f; + return 1f - (float) i / (float) (n - 1); + } + + private static final float[] COLOR_WHITE = { 1.0f, 1.0f, 1.0f }; + private static final float[] COLOR_YELLOW = { 1.0f, 0.85f, 0.1f }; + private static final float[] COLOR_RED = { 1.0f, 0.1f, 0.05f }; + private static final float[] COLOR_PURPLE = { 0.7f, 0.1f, 1.0f }; + private static final float[] COLOR_BLUE = { 0.1f, 0.5f, 1.0f }; + + private static float[] color(ReverieEntity.Mood mood) { + return switch (mood) { + case WHITE -> COLOR_WHITE; + case YELLOW -> COLOR_YELLOW; + case RED -> COLOR_RED; + case PURPLE -> COLOR_PURPLE; + case BLUE -> COLOR_BLUE; + }; + } + + private static float glowAlpha(ReverieEntity.Mood mood) { + return switch (mood) { + case WHITE -> 0.15f; + case YELLOW -> 0.30f; + case RED -> 0.55f; + case PURPLE -> 0.65f; + case BLUE -> 0.35f; + }; + } + + private static float coreAlpha(ReverieEntity.Mood mood) { + return switch (mood) { + case WHITE -> 0.35f; + case YELLOW -> 0.55f; + case RED -> 0.85f; + case PURPLE -> 0.95f; + case BLUE -> 0.60f; + }; + } + + private static float glowHalfWidth(ReverieEntity.Mood mood) { + float base = GLOW_LINE_WIDTH * 0.5f; + return switch (mood) { + case WHITE -> base * 0.60f; + case YELLOW -> base * 0.80f; + case RED -> base * 1.00f; + case PURPLE -> base * 1.25f; + case BLUE -> base * 0.90f; + }; + } + + private static float coreHalfWidth(ReverieEntity.Mood mood) { + float base = CORE_LINE_WIDTH * 0.5f; + return switch (mood) { + case WHITE -> base * 0.60f; + case YELLOW -> base * 0.80f; + case RED -> base * 1.20f; + case PURPLE -> base * 1.50f; + case BLUE -> base * 1.00f; + }; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ScorpionWhipTetherRenderHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ScorpionWhipTetherRenderHandler.java new file mode 100644 index 00000000..1d9837be --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ScorpionWhipTetherRenderHandler.java @@ -0,0 +1,144 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexFormat; +import java.util.Map; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; +import org.joml.Matrix4f; + +public final class ScorpionWhipTetherRenderHandler { + private ScorpionWhipTetherRenderHandler() { + } + + public static void tick() { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + ScorpionWhipTetherClientState.clear(); + } + } + + public static void render(WorldRenderContext context) { + if (context.world() == null || context.matrixStack() == null) { + return; + } + + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + return; + } + + Map tethers = ScorpionWhipTetherClientState.snapshot(); + if (tethers.isEmpty()) { + return; + } + + Camera camera = context.camera(); + Vec3 cameraPos = camera.getPosition(); + Matrix4f pose = context.matrixStack().last().pose(); + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + + BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (Map.Entry entry : tethers.entrySet()) { + Entity source = minecraft.level.getEntity(entry.getKey()); + Entity target = minecraft.level.getEntity(entry.getValue()); + if (!(source instanceof Player player) || target == null || target.isRemoved()) { + continue; + } + + buildTether( + buffer, + pose, + tetherStart(player, context.tickCounter().getGameTimeDeltaPartialTick(false)), + target.position().add(0.0D, target.getBbHeight() * 0.5D, 0.0D), + cameraPos + ); + } + + MeshData mesh = buffer.build(); + if (mesh != null) { + BufferUploader.drawWithShader(mesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + } + + private static Vec3 tetherStart(Player player, float partialTick) { + Vec3 start = player.getEyePosition(partialTick).add(0.0D, -0.45D, 0.0D); + boolean mainHandWhip = player.getMainHandItem().getItem() instanceof ScorpionWhipItem; + boolean offHandWhip = player.getOffhandItem().getItem() instanceof ScorpionWhipItem; + if (!mainHandWhip && !offHandWhip) { + return start; + } + + boolean useMainHand = mainHandWhip || !offHandWhip; + HumanoidArm arm = useMainHand ? player.getMainArm() : player.getMainArm().getOpposite(); + float bodyYaw = Mth.rotLerp(partialTick, player.yBodyRotO, player.yBodyRot); + double radians = Math.toRadians(bodyYaw + 90.0F); + double side = arm == HumanoidArm.RIGHT ? -0.28D : 0.28D; + return start.add(Math.cos(radians) * side, -0.12D, Math.sin(radians) * side); + } + + private static void buildTether(BufferBuilder buffer, Matrix4f pose, Vec3 start, Vec3 end, Vec3 cameraPos) { + Vec3 delta = end.subtract(start); + double length = delta.length(); + if (length < 0.001D) { + return; + } + + Vec3 forward = delta.scale(1.0D / length); + Vec3 right = forward.cross(new Vec3(0.0D, 1.0D, 0.0D)); + if (right.lengthSqr() < 1.0E-6D) { + right = forward.cross(new Vec3(1.0D, 0.0D, 0.0D)); + } + right = right.normalize(); + + int segments = Math.max(16, Mth.ceil(length * 8.0D)); + for (int i = 0; i < segments; i++) { + double t0 = (double) i / (double) segments; + double t1 = (double) (i + 1) / (double) segments; + Vec3 p0 = ropePoint(start, delta, t0, length); + Vec3 p1 = ropePoint(start, delta, t1, length); + float width = 0.045F; + Vec3 offset = right.scale(width); + + Vec3 a = p0.subtract(cameraPos); + Vec3 b = p1.subtract(cameraPos); + float shade = i % 2 == 0 ? 0.82F : 0.62F; + float red = 0.36F * shade; + float green = 0.20F * shade; + float blue = 0.11F * shade; + + buffer.addVertex(pose, (float) (a.x + offset.x), (float) (a.y + offset.y), (float) (a.z + offset.z)).setColor(red, green, blue, 1.0F); + buffer.addVertex(pose, (float) (a.x - offset.x), (float) (a.y - offset.y), (float) (a.z - offset.z)).setColor(red, green, blue, 1.0F); + buffer.addVertex(pose, (float) (b.x - offset.x), (float) (b.y - offset.y), (float) (b.z - offset.z)).setColor(red, green, blue, 1.0F); + buffer.addVertex(pose, (float) (b.x + offset.x), (float) (b.y + offset.y), (float) (b.z + offset.z)).setColor(red, green, blue, 1.0F); + } + } + + private static Vec3 ropePoint(Vec3 start, Vec3 delta, double t, double length) { + double sag = Math.sin(t * Math.PI) * Math.min(0.45D, length * 0.07D); + return start.add(delta.scale(t)).add(0.0D, -sag, 0.0D); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/TriffidGooHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/TriffidGooHudRenderer.java new file mode 100644 index 00000000..b222ffd1 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/TriffidGooHudRenderer.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Block; + +public final class TriffidGooHudRenderer { + private TriffidGooHudRenderer() { + } + + private static float fadeProgress = 0f; + private static final float FADE_SPEED = 0.05f; + private static final int MAX_ALPHA = 0x55; + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + if (player == null || player.isDeadOrDying()) { + fadeProgress = Math.max(0f, fadeProgress - FADE_SPEED); + if (fadeProgress <= 0f) return; + } else { + Block goo = AntarchyFabricContent.TRIFFID_GOO_BLOCK.get(); + BlockPos feet = player.blockPosition(); + boolean inGoo = player.level().getBlockState(feet).is(goo) + || player.level().getBlockState(feet.above()).is(goo); + + if (inGoo) { + fadeProgress = Math.min(1f, fadeProgress + FADE_SPEED); + } else { + fadeProgress = Math.max(0f, fadeProgress - FADE_SPEED); + } + + if (fadeProgress <= 0f || minecraft.screen != null) return; + } + + int alpha = Mth.floor(MAX_ALPHA * fadeProgress); + int color = (alpha << 24) | 0x003300; + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + guiGraphics.fill(0, 0, width, height, color); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterFluid.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterFluid.java new file mode 100644 index 00000000..565d95e8 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterFluid.java @@ -0,0 +1,442 @@ +package com.craisinlord.antarchy.fabric.content.fluid; + +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FlowingFluid; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.phys.Vec3; + +public abstract class AntiwaterFluid extends FlowingFluid { + private static final int MAX_HORIZONTAL_SPREAD_AMOUNT = 5; + private static final int MAX_VERTICAL_FLOW_AMOUNT = 7; + + @Override + public Fluid getFlowing() { + return AntarchyFabricContent.FLOWING_ANTIWATER.get(); + } + + @Override + public Fluid getSource() { + return AntarchyFabricContent.ANTIWATER.get(); + } + + @Override + public Item getBucket() { + return AntarchyFabricContent.ANTIWATER_BUCKET.get(); + } + + @Override + public boolean isSame(Fluid fluid) { + return fluid == AntarchyFabricContent.ANTIWATER.get() || fluid == AntarchyFabricContent.FLOWING_ANTIWATER.get(); + } + + @Override + protected boolean canConvertToSource(Level level) { + return false; + } + + @Override + protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state) { + net.minecraft.world.level.block.Block.dropResources(state, level, pos, state.hasBlockEntity() ? level.getBlockEntity(pos) : null); + } + + @Override + protected int getSlopeFindDistance(LevelReader level) { + return 4; + } + + @Override + protected int getDropOff(LevelReader level) { + return 1; + } + + @Override + public int getTickDelay(LevelReader level) { + return 5; + } + + @Override + protected float getExplosionResistance() { + return 100.0F; + } + + @Override + protected BlockState createLegacyBlock(FluidState state) { + return AntarchyFabricContent.ANTIWATER_BLOCK.get() + .defaultBlockState() + .setValue(LiquidBlock.LEVEL, getLegacyLevel(state)); + } + + @Override + protected boolean canBeReplacedWith(FluidState state, BlockGetter level, BlockPos pos, Fluid fluid, Direction direction) { + return direction != Direction.DOWN && !this.isSame(fluid); + } + + @Override + protected boolean canSpreadTo( + BlockGetter level, + BlockPos fromPos, + BlockState fromState, + Direction direction, + BlockPos toPos, + BlockState toState, + FluidState toFluidState, + Fluid fluid + ) { + if (direction == Direction.DOWN) { + return false; + } + + return super.canSpreadTo(level, fromPos, fromState, direction, toPos, toState, toFluidState, fluid); + } + + @Override + public Optional getPickupSound() { + return Optional.of(SoundEvents.BUCKET_FILL); + } + + @Override + protected int getSpreadDelay(Level level, BlockPos pos, FluidState currentState, FluidState newState) { + return this.getTickDelay(level); + } + + @Override + public Vec3 getFlow(BlockGetter level, BlockPos pos, FluidState state) { + double flowX = 0.0D; + double flowZ = 0.0D; + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos neighborPos = pos.relative(direction); + FluidState neighborFluid = level.getFluidState(neighborPos); + int neighborAmount = this.isSame(neighborFluid.getType()) ? neighborFluid.getAmount() : 0; + int currentAmount = state.getAmount(); + int delta = neighborAmount - currentAmount; + if (delta != 0) { + flowX += direction.getStepX() * delta; + flowZ += direction.getStepZ() * delta; + } + } + + Vec3 flow = new Vec3(flowX, 1.0D, flowZ); + return flow.lengthSqr() < 1.0E-6D ? new Vec3(0.0D, 1.0D, 0.0D) : flow.normalize(); + } + + @Override + protected FluidState getNewLiquid(Level level, BlockPos pos, BlockState blockState) { + FluidState currentState = blockState.getFluidState(); + if (!currentState.isSource() && !this.isFlowingStateValid(level, pos, currentState)) { + return Fluids.EMPTY.defaultFluidState(); + } + + if (this.canCreateSourceAt(level, pos)) { + return this.getSource(false); + } + + if (this.isValidVerticalSupport(level, pos)) { + return this.getFlowing(MAX_VERTICAL_FLOW_AMOUNT, false); + } + + int bestNeighborAmount = this.getBestHorizontalNeighborAmount(level, pos); + if (bestNeighborAmount > 1) { + return this.getFlowing(bestNeighborAmount - 1, false); + } + + return Fluids.EMPTY.defaultFluidState(); + } + + @Override + protected void spread(Level level, BlockPos pos, FluidState state) { + if (state.isEmpty()) { + return; + } + + if (!state.isSource() && !this.isFlowingStateValid(level, pos, state)) { + level.setBlockAndUpdate(pos, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()); + this.scheduleCleanup(level, pos); + return; + } + + BlockState blockState = level.getBlockState(pos); + this.spreadUpward(level, pos, state, blockState); + + if (!this.canHangAt(level, pos)) { + return; + } + + int nextAmount = state.getAmount() - 1; + if (nextAmount <= 0) { + return; + } + + this.spreadHorizontally(level, pos, blockState, nextAmount); + } + + @Override + public void tick(Level level, BlockPos pos, FluidState state) { + if (!state.isSource() && !this.isFlowingStateValid(level, pos, state)) { + level.setBlockAndUpdate(pos, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()); + this.scheduleDependentCleanup(level, pos); + return; + } + + super.tick(level, pos, state); + } + + public static final class Source extends AntiwaterFluid { + @Override + public int getAmount(FluidState state) { + return 8; + } + + @Override + public boolean isSource(FluidState state) { + return true; + } + } + + public static final class Flowing extends AntiwaterFluid { + public Flowing() { + this.registerDefaultState(this.getStateDefinition().any().setValue(LEVEL, 7)); + } + + @Override + protected void createFluidStateDefinition(net.minecraft.world.level.block.state.StateDefinition.Builder builder) { + super.createFluidStateDefinition(builder); + builder.add(LEVEL); + } + + @Override + public int getAmount(FluidState state) { + return state.getValue(LEVEL); + } + + @Override + public boolean isSource(FluidState state) { + return false; + } + } + + private boolean hasCeiling(Level level, BlockPos pos) { + return level.getBlockState(pos.above()).isSolid(); + } + + private boolean canHangAt(Level level, BlockPos pos) { + return this.hasCeiling(level, pos); + } + + private boolean hasHorizontalSupport(Level level, BlockPos pos) { + FluidState state = level.getFluidState(pos); + if (!this.isAntiwater(state)) { + return false; + } + + int currentAmount = state.getAmount(); + for (Direction direction : Direction.Plane.HORIZONTAL) { + FluidState neighbor = level.getFluidState(pos.relative(direction)); + if (!this.isAntiwater(neighbor)) { + continue; + } + + if (this.getHorizontalSpreadAmount(neighbor) > currentAmount) { + return true; + } + } + + return false; + } + + private boolean canSpreadHorizontallyInto(Level level, BlockPos pos) { + return true; + } + + private int getBestHorizontalNeighborAmount(Level level, BlockPos pos) { + int bestAmount = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos neighborPos = pos.relative(direction); + FluidState neighborFluid = level.getFluidState(neighborPos); + if (neighborFluid.isEmpty() || !neighborFluid.getType().isSame(this)) { + continue; + } + + if (!this.hasSourceConnection(level, neighborPos, neighborFluid, new HashSet<>())) { + continue; + } + + bestAmount = Math.max(bestAmount, this.getHorizontalSpreadAmount(neighborFluid)); + } + + return bestAmount; + } + + private int getHorizontalSpreadAmount(FluidState state) { + if (state.isSource() || this.isValidVerticalSupportState(state)) { + return MAX_HORIZONTAL_SPREAD_AMOUNT + 1; + } + + return state.getAmount(); + } + + private boolean isValidVerticalSupportState(FluidState state) { + return this.isAntiwater(state) && !state.isSource() && state.getAmount() >= MAX_VERTICAL_FLOW_AMOUNT; + } + + private boolean isFlowingStateValid(Level level, BlockPos pos, FluidState state) { + return state.isSource() + || this.hasImmediateVerticalSupport(level, pos) + || this.hasHorizontalSupport(level, pos); + } + + private boolean canCreateSourceAt(Level level, BlockPos pos) { + if (!this.canHangAt(level, pos)) { + return false; + } + + int sourceNeighbors = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + FluidState neighbor = level.getFluidState(pos.relative(direction)); + if (this.isAntiwater(neighbor) && neighbor.isSource()) { + sourceNeighbors++; + if (sourceNeighbors >= 2) { + return true; + } + } + } + + return false; + } + + private boolean isValidVerticalSupport(Level level, BlockPos pos) { + return this.hasImmediateVerticalSupport(level, pos); + } + + private boolean isAntiwater(FluidState state) { + return !state.isEmpty() && state.getType().isSame(this); + } + + private boolean hasImmediateVerticalSupport(Level level, BlockPos pos) { + FluidState below = level.getFluidState(pos.below()); + return this.isAntiwater(below); + } + + private void spreadUpward(Level level, BlockPos pos, FluidState state, BlockState blockState) { + BlockPos abovePos = pos.above(); + BlockState aboveState = level.getBlockState(abovePos); + FluidState aboveFluid = level.getFluidState(abovePos); + + if (aboveFluid.is(FluidTags.WATER)) { + BlockState result = state.isSource() + ? AntarchyFabricContent.ANTIMETAL.get().defaultBlockState() + : AntarchyFabricContent.NYXITE.get().defaultBlockState(); + level.setBlockAndUpdate(pos, result); + level.levelEvent(1501, pos, 0); + return; + } + + FluidState upwardState = this.getFlowing(MAX_VERTICAL_FLOW_AMOUNT, false); + if (!this.canSpreadTo(level, pos, blockState, Direction.UP, abovePos, aboveState, aboveFluid, upwardState.getType())) { + return; + } + + if (aboveFluid.getType().isSame(this) && aboveFluid.getAmount() >= upwardState.getAmount()) { + return; + } + + this.spreadTo(level, abovePos, aboveState, Direction.UP, upwardState); + } + + private void spreadHorizontally(Level level, BlockPos pos, BlockState blockState, int nextAmount) { + FluidState horizontalState = this.getFlowing(Math.min(nextAmount, MAX_HORIZONTAL_SPREAD_AMOUNT), false); + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos targetPos = pos.relative(direction); + BlockState targetState = level.getBlockState(targetPos); + FluidState targetFluid = targetState.getFluidState(); + + if (!this.canSpreadHorizontallyInto(level, targetPos)) { + continue; + } + + if (targetFluid.getType().isSame(this) && targetFluid.getAmount() >= horizontalState.getAmount()) { + continue; + } + + if (!this.canSpreadTo(level, pos, blockState, direction, targetPos, targetState, targetFluid, horizontalState.getType())) { + continue; + } + + this.spreadTo(level, targetPos, targetState, direction, horizontalState); + } + } + + private boolean hasSourceConnection(Level level, BlockPos pos, FluidState state, Set visited) { + if (!this.isAntiwater(state)) { + return false; + } + + if (state.isSource()) { + return true; + } + + if (!visited.add(pos)) { + return false; + } + + FluidState below = level.getFluidState(pos.below()); + if (this.hasSourceConnection(level, pos.below(), below, visited)) { + return true; + } + + int currentAmount = state.getAmount(); + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos neighborPos = pos.relative(direction); + FluidState neighbor = level.getFluidState(neighborPos); + if (!this.isAntiwater(neighbor)) { + continue; + } + + if (this.getHorizontalSpreadAmount(neighbor) <= currentAmount) { + continue; + } + + if (this.hasSourceConnection(level, neighborPos, neighbor, visited)) { + return true; + } + } + + return false; + } + + private void scheduleCleanup(Level level, BlockPos pos) { + int tickDelay = this.getTickDelay(level); + level.scheduleTick(pos, this, tickDelay); + level.scheduleTick(pos.above(), this, tickDelay); + level.scheduleTick(pos.below(), this, tickDelay); + for (Direction direction : Direction.Plane.HORIZONTAL) { + level.scheduleTick(pos.relative(direction), this, tickDelay); + } + } + + private void scheduleDependentCleanup(Level level, BlockPos pos) { + int tickDelay = this.getTickDelay(level); + level.scheduleTick(pos.above(), this, tickDelay); + for (Direction direction : Direction.Plane.HORIZONTAL) { + level.scheduleTick(pos.relative(direction), this, tickDelay); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterLiquidBlock.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterLiquidBlock.java new file mode 100644 index 00000000..bca9fb59 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterLiquidBlock.java @@ -0,0 +1,61 @@ +package com.craisinlord.antarchy.fabric.content.fluid; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FlowingFluid; + +public class AntiwaterLiquidBlock extends LiquidBlock { + public AntiwaterLiquidBlock(FlowingFluid fluid, BlockBehaviour.Properties properties) { + super(fluid, properties); + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { + super.onPlace(state, level, pos, oldState, movedByPiston); + scheduleCurrentAntiwaterTick(level, pos); + } + + @Override + protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, BlockPos neighborPos, boolean movedByPiston) { + super.neighborChanged(state, level, pos, neighborBlock, neighborPos, movedByPiston); + scheduleCurrentAntiwaterTick(level, pos); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + scheduleCurrentAntiwaterTick(level, pos); + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (!state.is(newState.getBlock())) { + scheduleDependentAntiwaterTicks(level, pos); + } + super.onRemove(state, level, pos, newState, movedByPiston); + } + + private void scheduleCurrentAntiwaterTick(LevelAccessor level, BlockPos pos) { + level.scheduleTick(pos, this.fluid, this.fluid.getTickDelay(level)); + } + + private void scheduleDependentAntiwaterTicks(LevelAccessor level, BlockPos pos) { + level.scheduleTick(pos.above(), this.fluid, this.fluid.getTickDelay(level)); + for (Direction direction : Direction.Plane.HORIZONTAL) { + level.scheduleTick(pos.relative(direction), this.fluid, this.fluid.getTickDelay(level)); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/SimpleFluid.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/SimpleFluid.java new file mode 100644 index 00000000..d63497a6 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/SimpleFluid.java @@ -0,0 +1,171 @@ +package com.craisinlord.antarchy.fabric.content.fluid; + +import java.util.Optional; +import java.util.function.Supplier; +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.Direction; +import net.minecraft.world.level.material.FlowingFluid; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; + +public abstract class SimpleFluid extends FlowingFluid { + private final Supplier source; + private final Supplier flowing; + private final Supplier bucket; + private final String blockId; + private final int slopeFindDistance; + private final int dropOff; + private final int tickDelay; + + protected SimpleFluid( + Supplier source, + Supplier flowing, + Supplier bucket, + String blockId, + int slopeFindDistance, + int dropOff, + int tickDelay + ) { + this.source = source; + this.flowing = flowing; + this.bucket = bucket; + this.blockId = blockId; + this.slopeFindDistance = slopeFindDistance; + this.dropOff = dropOff; + this.tickDelay = tickDelay; + } + + @Override + public Fluid getFlowing() { + return this.flowing.get(); + } + + @Override + public Fluid getSource() { + return this.source.get(); + } + + @Override + public Item getBucket() { + return this.bucket.get(); + } + + @Override + protected boolean canConvertToSource(Level level) { + return false; + } + + @Override + protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state) { + BlockEntity blockEntity = state.hasBlockEntity() ? level.getBlockEntity(pos) : null; + net.minecraft.world.level.block.Block.dropResources(state, level, pos, blockEntity); + } + + @Override + protected int getSlopeFindDistance(LevelReader level) { + return this.slopeFindDistance; + } + + @Override + protected int getDropOff(LevelReader level) { + return this.dropOff; + } + + @Override + public int getTickDelay(LevelReader level) { + return this.tickDelay; + } + + @Override + protected float getExplosionResistance() { + return 100.0F; + } + + @Override + public boolean isSame(Fluid fluid) { + return fluid == this.source.get() || fluid == this.flowing.get(); + } + + @Override + protected BlockState createLegacyBlock(FluidState state) { + LiquidBlock block = (LiquidBlock) BuiltInRegistries.BLOCK.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, this.blockId)); + return block.defaultBlockState().setValue(LiquidBlock.LEVEL, getLegacyLevel(state)); + } + + @Override + public Optional getPickupSound() { + return Optional.of(SoundEvents.BUCKET_FILL); + } + + @Override + protected boolean canBeReplacedWith(FluidState state, BlockGetter level, BlockPos pos, Fluid fluid, Direction direction) { + return false; + } + + public static final class Flowing extends SimpleFluid { + public Flowing( + Supplier source, + Supplier flowing, + Supplier bucket, + String blockId, + int slopeFindDistance, + int dropOff, + int tickDelay + ) { + super(source, flowing, bucket, blockId, slopeFindDistance, dropOff, tickDelay); + } + + @Override + protected void createFluidStateDefinition(net.minecraft.world.level.block.state.StateDefinition.Builder builder) { + super.createFluidStateDefinition(builder); + builder.add(LEVEL); + } + + @Override + public int getAmount(FluidState state) { + return state.getValue(LEVEL); + } + + @Override + public boolean isSource(FluidState state) { + return false; + } + } + + public static final class Source extends SimpleFluid { + public Source( + Supplier source, + Supplier flowing, + Supplier bucket, + String blockId, + int slopeFindDistance, + int dropOff, + int tickDelay + ) { + super(source, flowing, bucket, blockId, slopeFindDistance, dropOff, tickDelay); + } + + @Override + public int getAmount(FluidState state) { + return 8; + } + + @Override + public boolean isSource(FluidState state) { + return true; + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/item/AntimetalScaffoldingItem.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/item/AntimetalScaffoldingItem.java new file mode 100644 index 00000000..e17136c5 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/item/AntimetalScaffoldingItem.java @@ -0,0 +1,11 @@ +package com.craisinlord.antarchy.fabric.item; + +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ScaffoldingBlockItem; +import net.minecraft.world.level.block.Block; + +public final class AntimetalScaffoldingItem extends ScaffoldingBlockItem { + public AntimetalScaffoldingItem(Block block, Item.Properties properties) { + super(block, properties); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/item/DeferredSpawnEggItem.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/item/DeferredSpawnEggItem.java new file mode 100644 index 00000000..97d82efe --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/item/DeferredSpawnEggItem.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.fabric.item; + +import java.util.function.Supplier; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.SpawnEggItem; + +public final class DeferredSpawnEggItem extends SpawnEggItem { + public DeferredSpawnEggItem(Supplier> typeSupplier, int backgroundColor, int highlightColor, Item.Properties properties) { + super(typeSupplier.get(), backgroundColor, highlightColor, properties); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalInversionMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalInversionMixin.java new file mode 100644 index 00000000..c534a6dc --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalInversionMixin.java @@ -0,0 +1,81 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.AABB; +import org.joml.Vector3f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public abstract class AntimetalInversionMixin { + + private static final int ANTIMETAL_INVERTED_REFRESH_TICKS = 20; + + @Inject(method = "tick", at = @At("TAIL")) + private void antarchy$tickOverheadInversion(CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (entity.level().isClientSide()) return; + if (entity instanceof Player player && player.isSpectator()) return; + if (!antarchy$isDirectlyBelowAntimetal(entity)) return; + + MobEffectInstance existing = entity.getEffect(AntarchyObjects.INVERTED_EFFECT.get()); + if (existing == null || existing.getDuration() <= 5) { + entity.addEffect(new MobEffectInstance(AntarchyObjects.INVERTED_EFFECT.get(), ANTIMETAL_INVERTED_REFRESH_TICKS, 0, false, false, false)); + antarchy$spawnInversionParticles(entity); + } + } + + private static boolean antarchy$isDirectlyBelowAntimetal(LivingEntity entity) { + AABB bounds = entity.getBoundingBox().deflate(1.0E-3D); + int minX = Mth.floor(bounds.minX); + int maxX = Mth.floor(bounds.maxX); + int minY = Mth.floor(bounds.minY); + int maxY = Mth.floor(bounds.maxY); + int minZ = Mth.floor(bounds.minZ); + int maxZ = Mth.floor(bounds.maxZ); + + for (int x = minX; x <= maxX; x++) { + for (int y = minY; y <= maxY; y++) { + for (int z = minZ; z <= maxZ; z++) { + BlockPos above = new BlockPos(x, y + 1, z); + if (entity.level().getBlockState(above).is(AntarchyObjects.ANTIMETAL.get()) + || entity.level().getBlockState(above).is(AntarchyObjects.POLISHED_ANTIMETAL.get())) { + return true; + } + } + } + } + return false; + } + + @Inject(method = "onEffectRemoved", at = @At("HEAD")) + private void antarchy$onInvertedRemoved(MobEffectInstance effectInstance, CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (entity.level().isClientSide()) return; + if (!effectInstance.is(AntarchyObjects.INVERTED_EFFECT.get())) return; + AntarchyGravityApi.setGravityDirection(entity, AntarchyGravityDirection.DOWN, new AntarchyGravityTransition(12)); + } + + private static void antarchy$spawnInversionParticles(LivingEntity entity) { + if (!(entity.level() instanceof ServerLevel serverLevel)) return; + double x = entity.getX(); + double y = entity.getBoundingBox().maxY + 0.1D; + double z = entity.getZ(); + serverLevel.sendParticles( + new DustParticleOptions(new Vector3f(1.0F, 0.1F, 0.1F), 1.0F), + x, y, z, 6, 0.2D, 0.05D, 0.2D, 0.0D + ); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalScaffoldingMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalScaffoldingMixin.java new file mode 100644 index 00000000..472d9277 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalScaffoldingMixin.java @@ -0,0 +1,108 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.ScaffoldingBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.util.RandomSource; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ScaffoldingBlock.class) +public abstract class AntimetalScaffoldingMixin { + @Inject(method = "getStateForPlacement", at = @At("HEAD"), cancellable = true) + private void antarchy$antimetalPlacement(BlockPlaceContext context, CallbackInfoReturnable cir) { + if (!antarchy$isAntimetalScaffolding()) { + return; + } + + BlockPos pos = context.getClickedPos(); + Level level = context.getLevel(); + int distance = antarchy$getDistance(level, pos); + BlockState state = ((ScaffoldingBlock) (Object) this).defaultBlockState() + .setValue(ScaffoldingBlock.WATERLOGGED, level.getFluidState(pos).getType().isSame(net.minecraft.world.level.material.Fluids.WATER)) + .setValue(ScaffoldingBlock.DISTANCE, distance) + .setValue(ScaffoldingBlock.BOTTOM, antarchy$isBottom(level, pos, distance)); + cir.setReturnValue(state); + } + + @Inject(method = "canSurvive", at = @At("HEAD"), cancellable = true) + private void antarchy$antimetalCanSurvive(BlockState state, LevelReader level, BlockPos pos, CallbackInfoReturnable cir) { + if (!antarchy$isAntimetalScaffolding()) { + return; + } + + cir.setReturnValue(antarchy$getDistance(level, pos) < 7); + } + + @Inject(method = "tick", at = @At("HEAD"), cancellable = true) + private void antarchy$antimetalTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random, CallbackInfo ci) { + if (!antarchy$isAntimetalScaffolding()) { + return; + } + + int distance = antarchy$getDistance(level, pos); + BlockState updated = state.setValue(ScaffoldingBlock.DISTANCE, distance) + .setValue(ScaffoldingBlock.BOTTOM, antarchy$isBottom(level, pos, distance)); + + if (updated.getValue(ScaffoldingBlock.DISTANCE) == 7) { + if (state.getValue(ScaffoldingBlock.DISTANCE) == 7) { + FallingBlockEntity.fall(level, pos, updated); + } else { + level.destroyBlock(pos, true); + } + } else if (state != updated) { + level.setBlock(pos, updated, 3); + } + + ci.cancel(); + } + + private boolean antarchy$isAntimetalScaffolding() { + return ((ScaffoldingBlock) (Object) this).asItem() == AntarchyFabricContent.ANTIMETAL_SCAFFOLDING.get().asItem(); + } + + private int antarchy$getDistance(BlockGetter level, BlockPos pos) { + BlockPos.MutableBlockPos cursor = pos.mutable().move(Direction.DOWN); + BlockState below = level.getBlockState(cursor); + int distance = 7; + if (below.is((ScaffoldingBlock) (Object) this)) { + distance = below.getValue(ScaffoldingBlock.DISTANCE); + } else if (below.isFaceSturdy(level, cursor, Direction.UP)) { + return 0; + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos.MutableBlockPos neighborPos = pos.mutable().move(direction); + BlockState neighbor = level.getBlockState(neighborPos); + if (!neighbor.is((ScaffoldingBlock) (Object) this)) { + continue; + } + + distance = Math.min(distance, neighbor.getValue(ScaffoldingBlock.DISTANCE) + 1); + if (distance == 1) { + break; + } + } + + return distance; + } + + private boolean antarchy$isBottom(BlockGetter level, BlockPos pos, int distance) { + if (distance <= 0) { + return false; + } + + return !level.getBlockState(pos.below()).is((ScaffoldingBlock) (Object) this); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterItemEntityMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterItemEntityMixin.java new file mode 100644 index 00000000..7355d77a --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterItemEntityMixin.java @@ -0,0 +1,47 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ItemEntity.class) +public abstract class AntiwaterItemEntityMixin { + @Inject(method = "tick", at = @At("TAIL")) + private void antarchy$applyAntiwaterItemMovement(CallbackInfo ci) { + ItemEntity entity = (ItemEntity) (Object) this; + if (!antarchy$isTouchingAntiwater(entity)) { + return; + } + + Vec3 motion = entity.getDeltaMovement(); + entity.setDeltaMovement( + motion.x * 0.99D, + motion.y + (motion.y < 0.06D ? 5.0E-4D : 0.0D), + motion.z * 0.99D + ); + } + + private boolean antarchy$isTouchingAntiwater(ItemEntity entity) { + BlockPos min = BlockPos.containing(entity.getBoundingBox().minX, entity.getBoundingBox().minY, entity.getBoundingBox().minZ); + BlockPos max = BlockPos.containing(entity.getBoundingBox().maxX, entity.getBoundingBox().maxY, entity.getBoundingBox().maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (PotentNyxiteBlock.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java new file mode 100644 index 00000000..b750f6df --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java @@ -0,0 +1,100 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public abstract class AntiwaterLivingEntityMixin { + @Inject(method = "travel", at = @At("HEAD"), cancellable = true) + private void antarchy$moveInAntiwater(Vec3 travelVector, CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (!antarchy$isTouchingAntiwaterLocal(entity)) { + return; + } + + double prevY = entity.getY(); + float swimSpeed = entity.isSprinting() ? 0.026F : 0.02F; + entity.moveRelative(swimSpeed, travelVector); + entity.move(MoverType.SELF, entity.getDeltaMovement()); + + Vec3 motion = entity.getDeltaMovement(); + if (entity.horizontalCollision && entity.onClimbable()) { + motion = new Vec3(motion.x, 0.2D, motion.z); + } + + AntarchyGravityDirection gravityDirection = antarchy$getEffectiveGravityDirection(entity); + Vec3 worldMotion = gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecPlayerToWorld(motion, gravityDirection) + : motion; + + double drag = entity.isSwimming() ? 0.9D : 0.8D; + worldMotion = worldMotion.scale(drag); + boolean flying = entity instanceof Player player && player.getAbilities().flying; + if (!flying) { + worldMotion = worldMotion.add(0.0D, 0.005D, 0.0D); + } + + entity.setDeltaMovement( + gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecWorldToPlayer(worldMotion, gravityDirection) + : worldMotion + ); + + if (entity.horizontalCollision && entity.isFree( + worldMotion.x, + worldMotion.y + 0.6D - entity.getY() + prevY, + worldMotion.z + )) { + Vec3 boostedWorldMotion = new Vec3(worldMotion.x, 0.3D, worldMotion.z); + entity.setDeltaMovement( + gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecWorldToPlayer(boostedWorldMotion, gravityDirection) + : boostedWorldMotion + ); + } + + ci.cancel(); + } + + private AntarchyGravityDirection antarchy$getEffectiveGravityDirection(LivingEntity entity) { + AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(entity); + if (gravityDirection.isInverted() || !entity.hasEffect(AntarchyObjects.INVERTED_EFFECT.get())) { + return gravityDirection; + } + + return AntarchyGravityDirection.UP; + } + + private boolean antarchy$isTouchingAntiwaterLocal(LivingEntity entity) { + AABB box = entity.getBoundingBox().inflate(0.05D); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (PotentNyxiteBlock.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassEffectMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassEffectMixin.java new file mode 100644 index 00000000..19053ab3 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassEffectMixin.java @@ -0,0 +1,33 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.fabric.BloodglassManager; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public abstract class BloodglassEffectMixin { + + @Inject(method = "onEffectAdded", at = @At("TAIL")) + private void antarchy$onBloodglassWardAdded(MobEffectInstance effectInstance, @Nullable Entity source, CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (!effectInstance.is(AntarchyObjects.BLOODGLASS_WARD.get())) return; + if (!(entity instanceof Player player)) return; + BloodglassManager.handleWardApplied(player, effectInstance.getAmplifier()); + } + + @Inject(method = "onEffectRemoved", at = @At("HEAD")) + private void antarchy$onBloodglassWardRemoved(MobEffectInstance effectInstance, CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (!effectInstance.is(AntarchyObjects.BLOODGLASS_WARD.get())) return; + if (!(entity instanceof Player player)) return; + BloodglassManager.handleWardRemoved(player); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassEquipMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassEquipMixin.java new file mode 100644 index 00000000..1557dbca --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassEquipMixin.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.fabric.BloodglassManager; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public abstract class BloodglassEquipMixin { + + @Inject(method = "onEquipItem", at = @At("TAIL")) + private void antarchy$onBloodglassEquip(EquipmentSlot slot, ItemStack from, ItemStack to, CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (entity instanceof Player player) { + BloodglassManager.handleArmorEquipChange(player, slot, from, to); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassRespawnMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassRespawnMixin.java new file mode 100644 index 00000000..ab8de3bd --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/BloodglassRespawnMixin.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.fabric.BloodglassManager; +import net.minecraft.server.level.ServerPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ServerPlayer.class) +public abstract class BloodglassRespawnMixin { + + @Inject(method = "restoreFrom", at = @At("TAIL")) + private void antarchy$onRespawn(ServerPlayer oldPlayer, boolean keepEverything, CallbackInfo ci) { + BloodglassManager.handleRespawn((ServerPlayer) (Object) this); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/DreamCampfireBlockEntityMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/DreamCampfireBlockEntityMixin.java new file mode 100644 index 00000000..103d3547 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/DreamCampfireBlockEntityMixin.java @@ -0,0 +1,29 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.CampfireBlockEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(CampfireBlockEntity.class) +public abstract class DreamCampfireBlockEntityMixin { + @ModifyArg( + method = "", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/block/entity/BlockEntity;(Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V" + ), + index = 0 + ) + private static BlockEntityType antarchy$useDreamCampfireType( + BlockEntityType original + ) { + return DreamCampfireBlockEntity.isConstructingDreamCampfire() + ? AntarchyObjects.DREAM_CAMPFIRE_BLOCK_ENTITY.get() + : original; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/ElytraFallFlyingMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/ElytraFallFlyingMixin.java new file mode 100644 index 00000000..5239a901 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/ElytraFallFlyingMixin.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ElytraItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(LivingEntity.class) +public abstract class ElytraFallFlyingMixin { + + /** + * Redirect to allow any ElytraItem subclass to sustain fall flying. + */ + @Redirect( + method = "updateFallFlying", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z" + ) + ) + private boolean antarchy$allowCustomElytraFallFlying(ItemStack itemStack, Item item) { + return itemStack.getItem() instanceof ElytraItem; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/ElytraStartFlyingMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/ElytraStartFlyingMixin.java new file mode 100644 index 00000000..4ed20662 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/ElytraStartFlyingMixin.java @@ -0,0 +1,32 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ElytraItem; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Player.class) +public abstract class ElytraStartFlyingMixin { + + @Shadow + public abstract void startFallFlying(); + + @Inject(method = "tryToStartFallFlying", at = @At("RETURN"), cancellable = true) + private void antarchy$allowCustomElytra(CallbackInfoReturnable cir) { + if (cir.getReturnValue()) return; + Player player = (Player) (Object) this; + if (!player.onGround() && !player.isFallFlying() && !player.isInWater() + && !player.hasEffect(net.minecraft.world.effect.MobEffects.LEVITATION)) { + ItemStack chest = player.getItemBySlot(EquipmentSlot.CHEST); + if (chest.getItem() instanceof ElytraItem && ElytraItem.isFlyEnabled(chest)) { + this.startFallFlying(); + cir.setReturnValue(true); + } + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/AntiwaterFogMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/AntiwaterFogMixin.java new file mode 100644 index 00000000..a9b355b7 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/AntiwaterFogMixin.java @@ -0,0 +1,49 @@ +package com.craisinlord.antarchy.fabric.mixin.client; + +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.shaders.FogShape; +import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.material.FluidState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FogRenderer.class) +public abstract class AntiwaterFogMixin { +// @Inject(method = "setupColor", at = @At("TAIL")) +// private static void antarchy$overrideAntiwaterColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, CallbackInfo ci) { +// if (!antarchy$isInAntiwater(camera)) { +// return; +// } +// +// RenderSystem.clearColor(0.52F, 0.06F, 0.06F, 0.0F); +// } +// +// @Inject(method = "setupFog", at = @At("TAIL")) +// private static void antarchy$overrideAntiwaterFog(Camera camera, FogRenderer.FogMode mode, float renderDistance, boolean thickFog, float partialTick, CallbackInfo ci) { +// if (!antarchy$isInAntiwater(camera)) { +// return; +// } +// +// RenderSystem.setShaderFogStart(0.5F); +// RenderSystem.setShaderFogEnd(Math.min(renderDistance, 12.0F)); +// RenderSystem.setShaderFogShape(FogShape.CYLINDER); +// } +// +// private static boolean antarchy$isInAntiwater(Camera camera) { +// Entity entity = camera.getEntity(); +// if (entity == null || entity.level() == null) { +// return false; +// } +// +// BlockPos pos = BlockPos.containing(camera.getPosition()); +// FluidState fluidState = entity.level().getFluidState(pos); +// return PotentNyxiteBlock.isAntiwater(fluidState); +// } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/CrossbowArmPoseMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/CrossbowArmPoseMixin.java new file mode 100644 index 00000000..1426d5ef --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/CrossbowArmPoseMixin.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.fabric.mixin.client; + +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.entity.player.PlayerRenderer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(PlayerRenderer.class) +public class CrossbowArmPoseMixin { + + @Inject(method = "getArmPose", at = @At("RETURN"), cancellable = true) + private static void antarchy$customArmPose( + AbstractClientPlayer player, InteractionHand hand, + CallbackInfoReturnable cir) { + ItemStack stack = player.getItemInHand(hand); + Item item = stack.getItem(); + + if (item instanceof GravityGunItem || item instanceof SquidzookaItem) { + cir.setReturnValue(HumanoidModel.ArmPose.CROSSBOW_HOLD); + } else if (item instanceof SizeRayItem) { + if (player.isUsingItem() && player.getUsedItemHand() == hand) { + cir.setReturnValue(HumanoidModel.ArmPose.CROSSBOW_HOLD); + } + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/DuctTapeInputMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/DuctTapeInputMixin.java new file mode 100644 index 00000000..5aa823ad --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/DuctTapeInputMixin.java @@ -0,0 +1,30 @@ +package com.craisinlord.antarchy.fabric.mixin.client; + +import com.craisinlord.antarchy.content.block.DuctTapeBlock; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.Input; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Input.class) +public abstract class DuctTapeInputMixin { + + @Inject(method = "tick", at = @At("RETURN")) + private void blockInputInDuctTape(boolean isSneaking, float slowFactor, CallbackInfo ci) { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null) return; + if (!mc.player.isNoGravity() && !DuctTapeBlock.isTouchingTape(mc.level, mc.player)) return; + + Input self = (Input) (Object) this; + self.left = false; + self.right = false; + self.up = false; + self.down = false; + self.leftImpulse = 0.0F; + self.forwardImpulse = 0.0F; + self.jumping = false; + self.shiftKeyDown = false; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/GravityGunMouseScrollMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/GravityGunMouseScrollMixin.java new file mode 100644 index 00000000..4415c1b1 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/GravityGunMouseScrollMixin.java @@ -0,0 +1,18 @@ +package com.craisinlord.antarchy.fabric.mixin.client; + +import com.craisinlord.antarchy.fabric.client.GravityGunClientHandler; +import net.minecraft.client.MouseHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MouseHandler.class) +public abstract class GravityGunMouseScrollMixin { + @Inject(method = "onScroll", at = @At("HEAD"), cancellable = true) + private void antarchy$handleGravityGunScroll(long window, double horizontalAmount, double verticalAmount, CallbackInfo ci) { + if (GravityGunClientHandler.onScroll(verticalAmount)) { + ci.cancel(); + } + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/NightmareCameraShakeMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/NightmareCameraShakeMixin.java new file mode 100644 index 00000000..a70f5e60 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/NightmareCameraShakeMixin.java @@ -0,0 +1,63 @@ +package com.craisinlord.antarchy.fabric.mixin.client; + +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +//TODO FIX ON FABRIC SIDE +@Mixin(GameRenderer.class) +public abstract class NightmareCameraShakeMixin { +// private static final double MAX_SHAKE_RANGE = 32.0D; +// +// @Shadow @Final private Minecraft minecraft; +// +// @Redirect( +// method = "renderLevel", +// at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GameRenderer;bobView(Lcom/mojang/blaze3d/vertex/PoseStack;F)V") +// ) +// private void applyNightmareCameraShake(GameRenderer instance, PoseStack poseStack, float partialTick) { +// instance.bobView(poseStack, partialTick); +// if (minecraft.level == null || minecraft.player == null) { +// return; +// } +// +// Vec3 cameraPos = minecraft.gameRenderer.getMainCamera().getPosition(); +// float shakeStrength = 0.0F; +// +// for (NightmareEntity nightmare : minecraft.level.getEntitiesOfClass( +// NightmareEntity.class, +// minecraft.player.getBoundingBox().inflate(MAX_SHAKE_RANGE), +// e -> e.isAlive() && e.isRoaring() +// )) { +// double distance = Math.sqrt(cameraPos.distanceToSqr(nightmare.position().add(0.0D, nightmare.getBbHeight() * 0.5D, 0.0D))); +// if (distance > MAX_SHAKE_RANGE) { +// continue; +// } +// shakeStrength += (float) ((1.0D - distance / MAX_SHAKE_RANGE) * 1.35D); +// } +// +// if (shakeStrength <= 0.0F) { +// return; +// } +// +// float time = (float) (minecraft.player.tickCount + partialTick); +// float yawOffset = Mth.sin(time * 1.85F) * shakeStrength * 1.8F; +// float pitchOffset = Mth.cos(time * 2.15F) * shakeStrength * 1.45F; +// float rollOffset = Mth.sin(time * 2.65F) * shakeStrength * 1.05F; +// +// poseStack.mulPose(Axis.YP.rotationDegrees(yawOffset)); +// poseStack.mulPose(Axis.XP.rotationDegrees(pitchOffset)); +// poseStack.mulPose(Axis.ZP.rotationDegrees(rollOffset)); +// } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/PortalCreatorMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/PortalCreatorMixin.java new file mode 100644 index 00000000..1d55001f --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/PortalCreatorMixin.java @@ -0,0 +1,40 @@ +package com.craisinlord.antarchy.fabric.mixin.infinity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.NetherPortalBlock; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = NetherPortalBlock.class, priority = 2000) +public abstract class PortalCreatorMixin { + @Inject( + method = "entityInside", + at = @At("HEAD"), + cancellable = true + ) + private void antarchy$blockInfinityBookActivation(BlockState state, Level level, BlockPos pos, Entity entity, CallbackInfo ci) { + if (!AntarchySettings.disableInfinityBookPortalCreation()) { + return; + } + + if (!(entity instanceof ItemEntity itemEntity) || itemEntity.isRemoved()) { + return; + } + + ItemStack stack = itemEntity.getItem(); + if (!stack.has(DataComponents.WRITABLE_BOOK_CONTENT) && !stack.has(DataComponents.WRITTEN_BOOK_CONTENT)) { + return; + } + + ci.cancel(); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/RandomSpringMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/RandomSpringMixin.java new file mode 100644 index 00000000..559cdba6 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/RandomSpringMixin.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.fabric.mixin.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 on Fabric. + */ +public abstract class RandomSpringMixin { + @Redirect( + method = "feature", + at = @At( + value = "INVOKE", + target = "Lnet/lerariemann/infinity/util/core/RandomProvider;randomName(Ljava/util/Random;Lnet/lerariemann/infinity/util/core/ConfigType;)Ljava/lang/String;" + ) + ) + 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"); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java new file mode 100644 index 00000000..2bb3e573 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.fabric.network; + +import com.craisinlord.antarchy.content.client.BloodglassClientState; +import com.craisinlord.antarchy.content.client.BrutalflyElytraClientState; +import com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState; +import com.craisinlord.antarchy.content.client.ThoraxisWeatherClientState; +import com.craisinlord.antarchy.content.network.*; +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherKind; +import com.craisinlord.antarchy.fabric.client.BloodCrystalKatanaTrailClientState; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.resources.ResourceLocation; + +public final class AntarchyFabricClientNetworking { + private AntarchyFabricClientNetworking() { + } + + public static void register() { + ClientPlayNetworking.registerGlobalReceiver(GravityStatePayload.TYPE, (payload, context) -> + context.client().execute(() -> AntarchyFabricNetworking.handleGravityState(context.player(), payload))); + ClientPlayNetworking.registerGlobalReceiver(BloodglassStatePayload.TYPE, (payload, context) -> + context.client().execute(() -> BloodglassClientState.update(payload.shieldsActive(), payload.shieldsMax()))); + ClientPlayNetworking.registerGlobalReceiver(BloodCrystalKatanaTrailPayload.TYPE, (payload, context) -> + context.client().execute(() -> BloodCrystalKatanaTrailClientState.trigger(payload.entityId(), payload.durationTicks()))); + ClientPlayNetworking.registerGlobalReceiver(ScorpionWhipTetherPayload.TYPE, (payload, context) -> + context.client().execute(() -> ScorpionWhipTetherClientState.update(payload.playerId(), payload.targetId()))); + ClientPlayNetworking.registerGlobalReceiver(BrutalflyElytraAnimationPayload.TYPE, (payload, context) -> + context.client().execute(() -> BrutalflyElytraClientState.trigger(payload.entityId(), payload.durationTicks(), payload.strength()))); + ClientPlayNetworking.registerGlobalReceiver(ThoraxisWeatherPayload.TYPE, (payload, context) -> + context.client().execute(() -> ThoraxisWeatherClientState.apply( + ResourceLocation.parse(payload.dimensionId()), + ThoraxisWeatherKind.byId(payload.weatherId()), + payload.expiresAt(), + payload.anchorX(), + payload.anchorY(), + payload.anchorZ() + ))); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java new file mode 100644 index 00000000..4a75a3d3 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java @@ -0,0 +1,265 @@ +package com.craisinlord.antarchy.fabric.network; + +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; +import com.craisinlord.antarchy.content.entity.multipart.network.MultipartAttackPayload; +import com.craisinlord.antarchy.content.entity.multipart.network.MultipartInteractPayload; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.network.*; +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherSnapshot; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; +import net.fabricmc.fabric.api.networking.v1.PlayerLookup; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; + +public final class AntarchyFabricNetworking { + private AntarchyFabricNetworking() { + } + + public static void register() { + registerPayloadTypes(); + registerServerReceivers(); + } + + private static void registerPayloadTypes() { + PayloadTypeRegistry.playS2C().register(GravityStatePayload.TYPE, GravityStatePayload.STREAM_CODEC); + PayloadTypeRegistry.playS2C().register(BloodglassStatePayload.TYPE, BloodglassStatePayload.STREAM_CODEC); + PayloadTypeRegistry.playS2C().register(BloodCrystalKatanaTrailPayload.TYPE, BloodCrystalKatanaTrailPayload.STREAM_CODEC); + PayloadTypeRegistry.playS2C().register(ScorpionWhipTetherPayload.TYPE, ScorpionWhipTetherPayload.STREAM_CODEC); + PayloadTypeRegistry.playS2C().register(BrutalflyElytraAnimationPayload.TYPE, BrutalflyElytraAnimationPayload.STREAM_CODEC); + PayloadTypeRegistry.playS2C().register(ThoraxisWeatherPayload.TYPE, ThoraxisWeatherPayload.STREAM_CODEC); + + PayloadTypeRegistry.playC2S().register(GravityGunPrimaryPayload.TYPE, GravityGunPrimaryPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(GravityGunScrollPayload.TYPE, GravityGunScrollPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(DiamondMinecartInputPayload.TYPE, DiamondMinecartInputPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(BrutalflyElytraFlapPayload.TYPE, BrutalflyElytraFlapPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(MultipartAttackPayload.TYPE, MultipartAttackPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(MultipartInteractPayload.TYPE, MultipartInteractPayload.STREAM_CODEC); + } + + private static void registerServerReceivers() { + ServerPlayNetworking.registerGlobalReceiver(GravityGunPrimaryPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleGravityGunPrimary(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(GravityGunScrollPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleGravityGunScroll(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(DiamondMinecartInputPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleDiamondMinecartInput(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(BrutalflyElytraFlapPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleBrutalflyFlap(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(MultipartAttackPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleMultipartAttack(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(MultipartInteractPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleMultipartInteract(context.player(), payload))); + } + + public static void syncGravityToPlayer(ServerPlayer target, Entity entity) { + ServerPlayNetworking.send(target, new GravityStatePayload( + entity.getId(), + AntarchyGravityApi.getGravityDirection(entity), + AntarchyGravityApi.getPrevGravityDirection(entity), + AntarchyGravityApi.isGravityForced(entity), + AntarchyGravityApi.getTransitionDuration(entity), + AntarchyGravityApi.getTransitionRemaining(entity) + )); + } + + public static void syncGravityEntity(Entity entity) { + GravityStatePayload payload = new GravityStatePayload( + entity.getId(), + AntarchyGravityApi.getGravityDirection(entity), + AntarchyGravityApi.getPrevGravityDirection(entity), + AntarchyGravityApi.isGravityForced(entity), + AntarchyGravityApi.getTransitionDuration(entity), + AntarchyGravityApi.getTransitionRemaining(entity) + ); + + for (ServerPlayer player : PlayerLookup.tracking(entity)) { + ServerPlayNetworking.send(player, payload); + } + if (entity instanceof ServerPlayer player) { + ServerPlayNetworking.send(player, payload); + } + } + + public static void syncBloodglass(ServerPlayer player, int shieldsActive, int shieldsMax) { + ServerPlayNetworking.send(player, new BloodglassStatePayload(shieldsActive, shieldsMax)); + } + + public static void syncKatanaTrail(Entity entity, int durationTicks) { + BloodCrystalKatanaTrailPayload payload = new BloodCrystalKatanaTrailPayload(entity.getId(), durationTicks); + for (ServerPlayer player : PlayerLookup.tracking(entity)) { + ServerPlayNetworking.send(player, payload); + } + if (entity instanceof ServerPlayer serverPlayer) { + ServerPlayNetworking.send(serverPlayer, payload); + } + } + + public static void syncScorpionWhipTether(ServerPlayer player, int targetId) { + ScorpionWhipTetherPayload payload = new ScorpionWhipTetherPayload(player.getId(), targetId); + for (ServerPlayer tracking : PlayerLookup.tracking(player)) { + ServerPlayNetworking.send(tracking, payload); + } + ServerPlayNetworking.send(player, payload); + } + + public static void syncThoraxisWeather(ServerLevel level, ThoraxisWeatherSnapshot snapshot) { + ThoraxisWeatherPayload payload = new ThoraxisWeatherPayload( + snapshot.dimension(), + snapshot.kind(), + snapshot.expiresAt(), + snapshot.anchor().getX(), + snapshot.anchor().getY(), + snapshot.anchor().getZ() + ); + for (ServerPlayer player : level.players()) { + ServerPlayNetworking.send(player, payload); + } + } + + public static void handleGravityState(Entity contextPlayer, GravityStatePayload payload) { + Entity entity = contextPlayer.level().getEntity(payload.entityId()); + if (entity == null && contextPlayer.getId() == payload.entityId()) { + entity = contextPlayer; + } + if (entity == null) { + return; + } + AntarchyGravityApi.applySyncedState( + entity, + payload.direction(), + payload.previousDirection(), + payload.forced(), + payload.transitionDuration(), + payload.transitionRemaining() + ); + } + + private static void handleGravityGunPrimary(ServerPlayer player, GravityGunPrimaryPayload payload) { + if (!(player.getMainHandItem().getItem() instanceof GravityGunItem gravityGunItem)) { + return; + } + gravityGunItem.firePrimary(player.serverLevel(), player, player.getMainHandItem()); + } + + private static void handleGravityGunScroll(ServerPlayer player, GravityGunScrollPayload payload) { + if (!(player.getMainHandItem().getItem() instanceof GravityGunItem)) { + return; + } + GravityGunItem.adjustHeldDistance(player.getMainHandItem(), payload.distanceDelta()); + } + + private static void handleDiamondMinecartInput(ServerPlayer player, DiamondMinecartInputPayload payload) { + if (player.getVehicle() instanceof DiamondMinecartEntity cart) { + cart.onInputReceived(payload.inputFlags()); + } + } + + private static void handleBrutalflyFlap(ServerPlayer player, BrutalflyElytraFlapPayload payload) { + ItemStack chestStack = player.getItemBySlot(EquipmentSlot.CHEST); + if (!(chestStack.getItem() instanceof BrutalflyElytraItem)) { + return; + } + if (player.isSpectator() || !player.isFallFlying() || player.isPassenger()) { + return; + } + if (player.getCooldowns().isOnCooldown(chestStack.getItem())) { + return; + } + + BrutalflyElytraFlightHelper.FlapTier tier = BrutalflyElytraFlightHelper.resolveFlapTier(payload.chargeTicks()); + if (tier == BrutalflyElytraFlightHelper.FlapTier.FAIL) { + return; + } + + float lift = BrutalflyElytraFlightHelper.liftFor(tier); + float forwardBoost = BrutalflyElytraFlightHelper.forwardBoostFor(tier); + Vec3 look = player.getLookAngle(); + Vec3 boost = new Vec3(look.x * forwardBoost, lift, look.z * forwardBoost); + player.setDeltaMovement(player.getDeltaMovement().add(boost)); + player.hasImpulse = true; + player.hurtMarked = true; + player.resetFallDistance(); + player.connection.send(new ClientboundSetEntityMotionPacket(player)); + chestStack.hurtAndBreak(1, player, EquipmentSlot.CHEST); + player.getCooldowns().addCooldown(chestStack.getItem(), BrutalflyElytraFlightHelper.FLAP_COOLDOWN_TICKS); + player.level().playSound(null, player.blockPosition(), SoundEvents.PHANTOM_FLAP, SoundSource.PLAYERS, 0.9F, + tier == BrutalflyElytraFlightHelper.FlapTier.PERFECT ? 0.8F : tier == BrutalflyElytraFlightHelper.FlapTier.GOOD ? 0.95F : 1.1F); + + BrutalflyElytraAnimationPayload animationPayload = new BrutalflyElytraAnimationPayload( + player.getId(), + BrutalflyElytraFlightHelper.animationTicksFor(tier), + lift + ); + for (ServerPlayer tracking : PlayerLookup.tracking(player)) { + ServerPlayNetworking.send(tracking, animationPayload); + } + ServerPlayNetworking.send(player, animationPayload); + } + + private static void handleMultipartAttack(ServerPlayer serverPlayer, MultipartAttackPayload payload) { + Entity entity = serverPlayer.serverLevel().getEntity(payload.parentId()); + if (!(entity instanceof MultipartEntityOwner owner)) { + return; + } + + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + parts = owner.antarchy$createMultipartParts(); + owner.antarchy$setMultipartParts(parts); + owner.antarchy$syncMultipartParts(); + } + if (payload.partIndex() < 0 || payload.partIndex() >= parts.length) { + return; + } + + Entity part = parts[payload.partIndex()]; + if (part == null || part.isRemoved()) { + return; + } + if (serverPlayer.distanceToSqr(part) > 10000.0D) { + return; + } + + DamageSource source = serverPlayer.level().damageSources().playerAttack(serverPlayer); + owner.antarchy$hurtMultipartPart(part, source, payload.damage()); + } + + private static void handleMultipartInteract(ServerPlayer serverPlayer, MultipartInteractPayload payload) { + Entity entity = serverPlayer.serverLevel().getEntity(payload.parentId()); + if (!(entity instanceof MultipartEntityOwner owner)) { + return; + } + + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + parts = owner.antarchy$createMultipartParts(); + owner.antarchy$setMultipartParts(parts); + owner.antarchy$syncMultipartParts(); + } + if (payload.partIndex() < 0 || payload.partIndex() >= parts.length) { + return; + } + + Entity part = parts[payload.partIndex()]; + if (part == null || part.isRemoved()) { + return; + } + + InteractionHand hand = payload.handId() == 0 ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; + owner.antarchy$interactMultipartPart(part, serverPlayer, part.position(), hand); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredBlock.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredBlock.java new file mode 100644 index 00000000..bf2e76e0 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredBlock.java @@ -0,0 +1,11 @@ +package com.craisinlord.antarchy.fabric.registry; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; + +public final class DeferredBlock extends DeferredHolder { + DeferredBlock(ResourceKey registryKey, ResourceLocation id) { + super(registryKey, id); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredHolder.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredHolder.java new file mode 100644 index 00000000..555df69e --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredHolder.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.fabric.registry; + +import java.util.function.Supplier; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; + +public class DeferredHolder implements Supplier { + private final ResourceKey registryKey; + private final ResourceLocation id; + private T value; + + DeferredHolder(ResourceKey registryKey, ResourceLocation id) { + this.registryKey = registryKey; + this.id = id; + } + + void bind(T value) { + this.value = value; + } + + public ResourceLocation getId() { + return this.id; + } + + @SuppressWarnings("unchecked") + public ResourceKey getKey() { + return (ResourceKey) ResourceKey.create((ResourceKey) this.registryKey, this.id); + } + + @Override + public T get() { + if (this.value == null) { + throw new IllegalStateException("Registry object not yet bound: " + this.id); + } + return this.value; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredItem.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredItem.java new file mode 100644 index 00000000..6f95de08 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredItem.java @@ -0,0 +1,11 @@ +package com.craisinlord.antarchy.fabric.registry; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; + +public final class DeferredItem extends DeferredHolder { + DeferredItem(ResourceKey registryKey, ResourceLocation id) { + super(registryKey, id); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredRegister.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredRegister.java new file mode 100644 index 00000000..477addf2 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredRegister.java @@ -0,0 +1,117 @@ +package com.craisinlord.antarchy.fabric.registry; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.Supplier; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +public class DeferredRegister { + public static final class Blocks extends DeferredRegister { + private Blocks(String modId) { + super(net.minecraft.core.registries.Registries.BLOCK, modId); + } + + public DeferredBlock register(String name, Supplier supplier) { + return this.registerTyped(name, supplier, DeferredBlock::new); + } + } + + public static final class Items extends DeferredRegister { + private Items(String modId) { + super(net.minecraft.core.registries.Registries.ITEM, modId); + } + + public DeferredItem register(String name, Supplier supplier) { + return this.registerTyped(name, supplier, DeferredItem::new); + } + + public DeferredItem registerSimpleItem(String name) { + return this.registerSimpleItem(name, new Item.Properties()); + } + + public DeferredItem registerSimpleItem(String name, Item.Properties properties) { + return this.register(name, () -> new Item(properties)); + } + + public DeferredItem registerSimpleBlockItem(DeferredBlock block) { + return this.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties())); + } + } + + @FunctionalInterface + protected interface HolderFactory> { + H create(ResourceKey registryKey, ResourceLocation id); + } + + private record PendingEntry(ResourceLocation id, Supplier supplier, DeferredHolder holder) { + } + + private final ResourceKey> registryKey; + private final String modId; + private final List> entries = new ArrayList<>(); + + protected DeferredRegister(ResourceKey> registryKey, String modId) { + this.registryKey = registryKey; + this.modId = modId; + } + + public static Blocks createBlocks(String modId) { + return new Blocks(modId); + } + + public static Items createItems(String modId) { + return new Items(modId); + } + + public static DeferredRegister create(ResourceKey> registryKey, String modId) { + return new DeferredRegister<>(registryKey, modId); + } + + public DeferredHolder register(String name, Supplier supplier) { + return this.registerTyped(name, supplier, DeferredHolder::new); + } + + protected > H registerTyped(String name, Supplier supplier, HolderFactory factory) { + ResourceLocation id = ResourceLocation.fromNamespaceAndPath(this.modId, name); + H holder = factory.create(this.registryKey, id); + this.entries.add(new PendingEntry<>(id, supplier, holder)); + return holder; + } + + public List> getEntries() { + List> holders = new ArrayList<>(this.entries.size()); + for (PendingEntry entry : this.entries) { + holders.add(entry.holder()); + } + return Collections.unmodifiableList(holders); + } + + public void register() { + Registry registry = resolveRegistry(this.registryKey); + for (PendingEntry entry : this.entries) { + T value = Registry.register(registry, entry.id(), entry.supplier().get()); + bind(entry.holder(), value); + } + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + private static void bind(DeferredHolder holder, T value) { + ((DeferredHolder) holder).bind(value); + } + + @SuppressWarnings("unchecked") + private static Registry resolveRegistry(ResourceKey> registryKey) { + Registry registry = BuiltInRegistries.REGISTRY.get(registryKey.location()); + if (registry == null) { + throw new IllegalStateException("Could not resolve registry: " + registryKey.location()); + } + return (Registry) registry; + } +} diff --git a/fabric/src/main/resources/antarchy-fabric.mixins.json b/fabric/src/main/resources/antarchy-fabric.mixins.json new file mode 100644 index 00000000..e29b9be5 --- /dev/null +++ b/fabric/src/main/resources/antarchy-fabric.mixins.json @@ -0,0 +1,31 @@ +{ + "required": true, + "package": "com.craisinlord.antarchy.fabric.mixin", + "refmap": "antarchy.refmap.json", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "AntiwaterLivingEntityMixin", + "AntiwaterItemEntityMixin", + "AntimetalInversionMixin", + "AntimetalScaffoldingMixin", + "ElytraStartFlyingMixin", + "ElytraFallFlyingMixin", + "BloodglassEquipMixin", + "BloodglassEffectMixin", + "BloodglassRespawnMixin", + "DreamCampfireBlockEntityMixin", + "infinity.RandomSpringMixin", + "infinity.PortalCreatorMixin" + ], + "client": [ + "client.NightmareCameraShakeMixin", + "client.DuctTapeInputMixin", + "client.AntiwaterFogMixin", + "client.GravityGunMouseScrollMixin", + "client.CrossbowArmPoseMixin" + ], + "injectors": { + "defaultRequire": 1 + }, + "minVersion": "0.8" +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/antiwater_bucket.json b/fabric/src/main/resources/assets/antarchy/models/item/antiwater_bucket.json new file mode 100644 index 00000000..fbc1ddec --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/antiwater_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/antiwater_bucket" + } +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/battle_axe.json b/fabric/src/main/resources/assets/antarchy/models/item/battle_axe.json new file mode 100644 index 00000000..8c6bdd49 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/battle_axe.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/battle_axe_held" +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/big_bertha.json b/fabric/src/main/resources/assets/antarchy/models/item/big_bertha.json new file mode 100644 index 00000000..ea1c3aa6 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/big_bertha.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/big_bertha_held" +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/gravity_gun.json b/fabric/src/main/resources/assets/antarchy/models/item/gravity_gun.json new file mode 100644 index 00000000..493bed03 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/gravity_gun.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/gravity_gun_held_geo" +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/growth_ray.json b/fabric/src/main/resources/assets/antarchy/models/item/growth_ray.json new file mode 100644 index 00000000..32b7d7c4 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/growth_ray.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/grow_ray_held_geo" +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/ichor_bucket.json b/fabric/src/main/resources/assets/antarchy/models/item/ichor_bucket.json new file mode 100644 index 00000000..c0eafeb0 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/ichor_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/ichor_bucket" + } +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/shrink_ray.json b/fabric/src/main/resources/assets/antarchy/models/item/shrink_ray.json new file mode 100644 index 00000000..3e07ff37 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/shrink_ray.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/shrink_ray_held_geo" +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/squidzooka.json b/fabric/src/main/resources/assets/antarchy/models/item/squidzooka.json new file mode 100644 index 00000000..91978806 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/squidzooka.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/squidzooka_held_geo" +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json new file mode 100644 index 00000000..858e5d75 --- /dev/null +++ b/fabric/src/main/resources/fabric.mod.json @@ -0,0 +1,38 @@ +{ + "schemaVersion": 1, + "id": "${mod_id}", + "version": "${version}", + "name": "${mod_name}", + "description": "${mod_description}", + "authors": [ + "${mod_author}" + ], + "contact": { + "homepage": "${homepage_url}", + "sources": "${sources_url}", + "issues": "${issues_url}" + }, + "license": "${license}", + "environment": "*", + "icon": "${logo_fabric}", + "entrypoints": { + "main": [ + "com.craisinlord.antarchy.fabric.AntarchyFabric" + ], + "client": [ + "com.craisinlord.antarchy.fabric.client.AntarchyFabricClient" + ] + }, + "mixins": [ + "antarchy-common.mixins.json", + "antarchy-fabric.mixins.json" + ], + "depends": { + "fabricloader": ">=${fabric_loader_version}", + "minecraft": "~${minecraft_version}", + "java": ">=21", + "fabric-api": "*", + "integrated_api": "*", + "geckolib": "*" + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..fdb030b7 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,87 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx4G + +minecraft_version=1.21.1 +modid=antarchy +mod_id=antarchy +mod_version=1.0.0 +maven_group=com.craisinlord +mixin_version=0.15.4+mixin.0.8.7 + +mod_name=Antarchy +mod_description=ANTS! ANTS! ANTS! ANTS! +mod_author=CraisinLord +license=All Rights Reserved +homepage_url=https://www.curseforge.com/minecraft/mc-mods/antarchy +issues_url= +sources_url= +logo_fabric=assets/antarchy/antarchy_logo.png +logo_neoforge=assets/antarchy/antarchy_logo.png + +fabric_loader_version=0.15.11 +fabric_api_version=0.102.0+1.21.1 + +neoforge_version=21.1.1 + +# Libraries +midnightlib=1.5.7-fabric +mixin_extras=0.3.6 + +# Libraries +mod_menu=11.0.0-beta.1 + +# Helper Dependencies that only exist at runtime +commandstructures_neoforge=4.4.0+1.21 +commandstructures_fabric=4.4.0+1.21 +structurevoidtoggle_neoforge=4.4.1+1.21 +structurevoidtoggle_fabric=4.4.1+1.21 + +geckolib_version=4.8.4 + + +intapi_curseforge_id = 817709 +intapi_curseforge_file_id_neoforge = 7781663 +#intapi_curseforge_file_id_fabric = 5178464 +intapi_curseforge_file_id_common = 5178461 + +create_curseforge_id_neoforge = 328085 +#create_curseforge_id_fabric = 624165 +create_curseforge_file_id_neoforge = 7408951 +#create_curseforge_file_id_fabric = 4721061 + +clothconfig_curseforge_id=348521 +clothconfig_curseforge_file_id=5623418 + + +marvel_curseforge_id=475642 +marvel_curseforge_file_id=6739364 + +stellaris_curseforge_id=1036270 +stellaris_curseforge_file_id=7720069 + +aperture_curseforge_id=1403821 +aperture_curseforge_file_id=7834117 + + +inventory_pets_curseforge_id=229380 +inventory_pets_curseforge_file_id=7737858 + +iaf_curseforge_id=1040076 +iaf_curseforge_file_id=8031633 + +cataclysm_curseforge_id=551586 +cataclysm_curseforge_file_id=7845980 + +backpack_curseforge_id=321117 +backpack_curseforge_file_id=7816910 + +regions_unexplored_curseforge_id=659110 +regions_unexplored_curseforge_file_id=7826194 + +#geckolib_curseforge_id=388172 +#geckolib_curseforge_file_id=7707149 +# + +#infinite_dimensions_curseforge_id=981829 +#infinite_dimensions_curseforge_file_id=7739053 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..7454180f Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..62692d17 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Mar 13 12:18:02 CDT 2026 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 00000000..c53aefaa --- /dev/null +++ b/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..107acd32 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/mappings/mappings.tiny b/mappings/mappings.tiny new file mode 100644 index 00000000..4587c032 --- /dev/null +++ b/mappings/mappings.tiny @@ -0,0 +1,98379 @@ +tiny 2 0 official intermediary named +c a net/minecraft/class_7833 com/mojang/math/Axis + f La; a field_40713 XN + f La; b field_40714 XP + f La; c field_40715 YN + f La; d field_40716 YP + f La; e field_40717 ZN + f La; f field_40718 ZP + m (F)Lorg/joml/Quaternionf; a method_46349 method_46349 + m (Lorg/joml/Vector3f;F)Lorg/joml/Quaternionf; a method_46350 method_46350 + m (F)Lorg/joml/Quaternionf; b method_46351 method_46351 + m (F)Lorg/joml/Quaternionf; c method_46352 method_46352 + m (F)Lorg/joml/Quaternionf; d method_46353 method_46353 + m (F)Lorg/joml/Quaternionf; e method_46354 method_46354 + m (F)Lorg/joml/Quaternionf; f method_46355 method_46355 + m (Lorg/joml/Vector3f;)La; of method_46356 of + m ()V +c b net/minecraft/class_5973 com/mojang/math/Constants + f F a field_29658 PI + f F b field_29659 RAD_TO_DEG + f F c field_29660 DEG_TO_RAD + f F d field_29661 EPSILON + m ()V +c c net/minecraft/class_7836 com/mojang/math/Divisor + f I a field_40738 denominator + f I b field_40739 quotient + f I c field_40740 mod + f I d field_40741 returnedParts + f I e field_40742 remainder + m (II)Ljava/lang/Iterable; a method_46402 asIterable + m (II)Ljava/util/Iterator; b method_46403 method_46403 + m (II)V +c d net/minecraft/class_6037 com/mojang/math/FieldsAreNonnullByDefault +c e net/minecraft/class_8218 com/mojang/math/GivensParameters + f F a comp_1317 sinHalf + f F b comp_1318 cosHalf + m ()Le; a method_49725 inverse + m (F)Le; a method_49726 fromPositiveAngle + m (FF)Le; a method_49727 fromUnnormalized + m (Lorg/joml/Matrix3f;)Lorg/joml/Matrix3f; a method_49728 aroundX + m (Lorg/joml/Quaternionf;)Lorg/joml/Quaternionf; a method_49729 aroundX + m ()F b method_49730 cos + m (Lorg/joml/Matrix3f;)Lorg/joml/Matrix3f; b method_49731 aroundY + m (Lorg/joml/Quaternionf;)Lorg/joml/Quaternionf; b method_49732 aroundY + m ()F c method_49733 sin + m (Lorg/joml/Matrix3f;)Lorg/joml/Matrix3f; c method_49734 aroundZ + m (Lorg/joml/Quaternionf;)Lorg/joml/Quaternionf; c method_49735 aroundZ + m ()F d comp_1317 sinHalf + m ()F e comp_1318 cosHalf + m (FF)V +c f net/minecraft/class_7837 com/mojang/math/MatrixUtil + f F a field_40746 G + f Le; b field_43146 PI_4 + m (FF)Le; a method_46410 qrGivensQuat + m (FFF)Le; a method_46411 approxGivensQuat + m (Lorg/joml/Matrix3f;)Lorg/apache/commons/lang3/tuple/Triple; a method_46412 svdDecompose + m (Lorg/joml/Matrix3f;I)Lorg/joml/Quaternionf; a method_49741 eigenvalueJacobi + m (Lorg/joml/Matrix3f;Lorg/joml/Matrix3f;)V a method_49742 similarityTransform + m (Lorg/joml/Matrix3f;Lorg/joml/Matrix3f;Lorg/joml/Quaternionf;Lorg/joml/Quaternionf;)V a method_46415 stepJacobi + m (Lorg/joml/Matrix4f;)Z a method_56826 isPureTranslation + m (Lorg/joml/Matrix4f;F)Lorg/joml/Matrix4f; a method_46414 mulComponentWise + m (Lorg/joml/Matrix4f;)Z b method_56827 isOrthonormal + m ()V + m ()V +c g net/minecraft/class_6216 com/mojang/math/MethodsReturnNonnullByDefault +c h net/minecraft/class_4990 com/mojang/math/OctahedralGroup + f Lh; A field_23266 INVERT_Y + f Lh; B field_23267 INVERT_Z + f Lh; C field_23268 ROT_60_REF_NNN + f Lh; D field_23269 ROT_60_REF_NNP + f Lh; E field_23270 ROT_60_REF_NPN + f Lh; F field_23271 ROT_60_REF_NPP + f Lh; G field_23272 ROT_60_REF_PNN + f Lh; H field_23273 ROT_60_REF_PNP + f Lh; I field_23274 ROT_60_REF_PPN + f Lh; J field_23275 ROT_60_REF_PPP + f Lh; K field_23276 SWAP_XY + f Lh; L field_23277 SWAP_YZ + f Lh; M field_23278 SWAP_XZ + f Lh; N field_23279 SWAP_NEG_XY + f Lh; O field_23280 SWAP_NEG_YZ + f Lh; P field_23281 SWAP_NEG_XZ + f Lh; Q field_23282 ROT_90_REF_X_NEG + f Lh; R field_23283 ROT_90_REF_X_POS + f Lh; S field_23284 ROT_90_REF_Y_NEG + f Lh; T field_23285 ROT_90_REF_Y_POS + f Lh; U field_23286 ROT_90_REF_Z_NEG + f Lh; V field_23287 ROT_90_REF_Z_POS + f Lorg/joml/Matrix3f; X field_23288 transformation + f Ljava/lang/String; Y field_23289 name + f Ljava/util/Map; Z field_23290 rotatedDirections + f Lh; a field_23292 IDENTITY + f Z aa field_23291 invertX + f Z ab field_23293 invertY + f Z ac field_23294 invertZ + f Li; ad field_23295 permutation + f [[Lh; ae field_23296 cayleyTable + f [Lh; af field_23297 inverseTable + f [Lh; ag field_23298 $VALUES + f Lh; b field_23299 ROT_180_FACE_XY + f Lh; c field_23300 ROT_180_FACE_XZ + f Lh; d field_23301 ROT_180_FACE_YZ + f Lh; e field_23302 ROT_120_NNN + f Lh; f field_23303 ROT_120_NNP + f Lh; g field_23304 ROT_120_NPN + f Lh; h field_23305 ROT_120_NPP + f Lh; i field_23306 ROT_120_PNN + f Lh; j field_23307 ROT_120_PNP + f Lh; k field_23308 ROT_120_PPN + f Lh; l field_23309 ROT_120_PPP + f Lh; m field_23310 ROT_180_EDGE_XY_NEG + f Lh; n field_23311 ROT_180_EDGE_XY_POS + f Lh; o field_23312 ROT_180_EDGE_XZ_NEG + f Lh; p field_23313 ROT_180_EDGE_XZ_POS + f Lh; q field_23314 ROT_180_EDGE_YZ_NEG + f Lh; r field_23315 ROT_180_EDGE_YZ_POS + f Lh; s field_23316 ROT_90_X_NEG + f Lh; t field_23317 ROT_90_X_POS + f Lh; u field_23318 ROT_90_Y_NEG + f Lh; v field_23319 ROT_90_Y_POS + f Lh; w field_23320 ROT_90_Z_NEG + f Lh; x field_23321 ROT_90_Z_POS + f Lh; y field_23322 INVERSION + f Lh; z field_23323 INVERT_X + m ()Lh; a method_35813 inverse + m (I)[Lh; a method_26384 method_26384 + m (Lh;)Lh; a method_26385 compose + m (Lh;Lh;)Z a method_26386 method_26386 + m (Lji$a;)Z a method_26387 inverts + m (Lji;)Lji; a method_26388 rotate + m (Ljk;)Ljk; a method_26389 rotate + m ([[Lh;)V a method_26390 method_26390 + m ()Lorg/joml/Matrix3f; b method_35814 transformation + m (Lh;)Lh; b method_26392 method_26392 + m (Lh;)Lh; c method_26393 method_26393 + m ()Lit/unimi/dsi/fastutil/booleans/BooleanList; d method_26391 packInversions + m (Lh;)Lcom/mojang/datafixers/util/Pair; d method_26394 method_26394 + m ()[Lh; e method_36928 $values + m (Ljava/lang/String;ILjava/lang/String;Li;ZZZ)V + m ()V +c h$1 net/minecraft/class_4990$1 com/mojang/math/OctahedralGroup$1 + f [I a field_23324 $SwitchMap$net$minecraft$core$Direction$Axis + m ()V +c i net/minecraft/class_4998 com/mojang/math/SymmetricGroup3 + f Li; a field_23362 P123 + f Li; b field_23363 P213 + f Li; c field_23364 P132 + f Li; d field_23365 P231 + f Li; e field_23366 P312 + f Li; f field_23367 P321 + f [I g field_23368 permutation + f Lorg/joml/Matrix3f; h field_23369 transformation + f I i field_33113 ORDER + f [[Li; j field_23370 cayleyTable + f [Li; k field_23371 $VALUES + m ()Lorg/joml/Matrix3f; a method_26416 transformation + m (I)I a method_26417 permutation + m (Li;)Li; a method_26418 compose + m ([ILi;)Z a method_26419 method_26419 + m ([[Li;)V a method_26420 method_26420 + m ()[Li; b method_36937 $values + m (Ljava/lang/String;IIII)V + m ()V +c j net/minecraft/class_4590 com/mojang/math/Transformation + f Lcom/mojang/serialization/Codec; a field_42532 CODEC + f Lcom/mojang/serialization/Codec; b field_42533 EXTENDED_CODEC + f Lorg/joml/Matrix4f; c field_20900 matrix + f Z d field_20901 decomposed + f Lorg/joml/Vector3f; e field_20902 translation + f Lorg/joml/Quaternionf; f field_20903 leftRotation + f Lorg/joml/Vector3f; g field_20904 scale + f Lorg/joml/Quaternionf; h field_20905 rightRotation + f Lj; i field_20906 IDENTITY + m ()Lj; a method_22931 identity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49059 method_49059 + m (Lj;)Lj; a method_22933 compose + m (Lj;F)Lj; a method_35864 slerp + m (Lorg/joml/Vector3f;Lorg/joml/Quaternionf;Lorg/joml/Vector3f;Lorg/joml/Quaternionf;)Lorg/joml/Matrix4f; a method_22934 compose + m ()Lj; b method_22935 inverse + m (Lj;)Lorg/joml/Quaternionf; b method_49062 method_49062 + m ()Lorg/joml/Matrix4f; c method_22936 getMatrix + m (Lj;)Lorg/joml/Vector3f; c method_49063 method_49063 + m ()Lorg/joml/Vector3f; d method_35865 getTranslation + m (Lj;)Lorg/joml/Quaternionf; d method_49064 method_49064 + m ()Lorg/joml/Quaternionf; e method_22937 getLeftRotation + m (Lj;)Lorg/joml/Vector3f; e method_49065 method_49065 + m ()Lorg/joml/Vector3f; f method_35866 getScale + m ()Lorg/joml/Quaternionf; g method_35867 getRightRotation + m ()V h method_22938 ensureDecomposed + m ()Lj; i method_22939 method_22939 + m (Lorg/joml/Matrix4f;)V + m (Lorg/joml/Vector3f;Lorg/joml/Quaternionf;Lorg/joml/Vector3f;Lorg/joml/Quaternionf;)V + m ()V +c k net/minecraft/class_6305 com/mojang/math/package-info +c l net/minecraft/class_5459 net/minecraft/BlockUtil + m (Ldcc;Ljd;Ldfy;Lji;Ldfy;)Ljava/util/Optional; a method_34851 getTopConnectedBlock + m (Ljava/util/function/Predicate;Ljd$a;Lji;I)I a method_30575 getLimit + m (Ljd;Lji$a;ILji$a;ILjava/util/function/Predicate;)Ll$a; a method_30574 getLargestRectangleAround + m ([I)Lcom/mojang/datafixers/util/Pair; a method_30576 getMaxRectangleLocation + m ()V +c l$a net/minecraft/class_5459$class_5460 net/minecraft/BlockUtil$FoundRectangle + f Ljd; a field_25936 minCorner + f I b field_25937 axis1Size + f I c field_25938 axis2Size + m (Ljd;II)V +c l$b net/minecraft/class_5459$class_5461 net/minecraft/BlockUtil$IntBounds + f I a field_25939 min + f I b field_25940 max + m (II)V +c m net/minecraft/class_5462 net/minecraft/CharPredicate + m (C)Z a method_36124 method_36124 + m (Lm;C)Z a method_36126 method_36126 + m (Lm;)Lm; and method_36125 and + m (Lm;C)Z b method_36128 method_36128 + m ()Lm; negate method_36123 negate + m (Lm;)Lm; or method_36127 or +c n net/minecraft/class_124 net/minecraft/ChatFormatting + f Ljava/lang/String; A field_1057 name + f C B field_1059 code + f Z C field_1081 isFormat + f Ljava/lang/String; D field_1069 toString + f I E field_1071 id + f Ljava/lang/Integer; F field_1053 color + f [Ln; G field_1072 $VALUES + f Ln; a field_1074 BLACK + f Ln; b field_1058 DARK_BLUE + f Ln; c field_1077 DARK_GREEN + f Ln; d field_1062 DARK_AQUA + f Ln; e field_1079 DARK_RED + f Ln; f field_1064 DARK_PURPLE + f Ln; g field_1065 GOLD + f Ln; h field_1080 GRAY + f Ln; i field_1063 DARK_GRAY + f Ln; j field_1078 BLUE + f Ln; k field_1060 GREEN + f Ln; l field_1075 AQUA + f Ln; m field_1061 RED + f Ln; n field_1076 LIGHT_PURPLE + f Ln; o field_1054 YELLOW + f Ln; p field_1068 WHITE + f Ln; q field_1051 OBFUSCATED + f Ln; r field_1067 BOLD + f Ln; s field_1055 STRIKETHROUGH + f Ln; t field_1073 UNDERLINE + f Ln; u field_1056 ITALIC + f Ln; v field_1070 RESET + f Lcom/mojang/serialization/Codec; w field_39218 CODEC + f C x field_33292 PREFIX_CODE + f Ljava/util/Map; y field_1052 FORMATTING_BY_NAME + f Ljava/util/regex/Pattern; z field_1066 STRIP_FORMATTING_PATTERN + m ()C a method_36145 getChar + m (C)Ln; a method_544 getByCode + m (I)Ln; a method_534 getById + m (Ljava/lang/String;)Ljava/lang/String; a method_539 stripFormatting + m (Ln;)Ln; a method_541 method_541 + m (ZZ)Ljava/util/Collection; a method_540 getNames + m ()I b method_536 getId + m (Ljava/lang/String;)Ln; b method_533 getByName + m (Ln;)Ljava/lang/String; b method_531 method_531 + m (Ljava/lang/String;)Ljava/lang/String; c method_535 cleanName + m ()Z d method_542 isFormat + m ()Z e method_543 isColor + m ()Ljava/lang/Integer; f method_532 getColor + m ()Ljava/lang/String; g method_537 getName + m ()[Ln; h method_36946 $values + m (Ljava/lang/String;ILjava/lang/String;CILjava/lang/Integer;)V + m (Ljava/lang/String;ILjava/lang/String;CZ)V + m (Ljava/lang/String;ILjava/lang/String;CZILjava/lang/Integer;)V + m ()V +c o net/minecraft/class_128 net/minecraft/CrashReport + f Lorg/slf4j/Logger; a field_1091 LOGGER + f Ljava/time/format/DateTimeFormatter; b field_39880 DATE_TIME_FORMATTER + f Ljava/lang/String; c field_1087 title + f Ljava/lang/Throwable; d field_1093 exception + f Ljava/util/List; e field_1089 details + f Ljava/nio/file/Path; f field_1090 saveFile + f Z g field_1086 trackingStackTrace + f [Ljava/lang/StackTraceElement; h field_1088 uncategorizedStackTrace + f Lac; i field_1092 systemReport + m ()Ljava/lang/String; a method_561 getTitle + m (Ljava/lang/String;)Lp; a method_562 addCategory + m (Ljava/lang/String;I)Lp; a method_556 addCategory + m (Ljava/lang/StringBuilder;)V a method_555 getDetails + m (Ljava/lang/Throwable;Ljava/lang/String;)Lo; a method_560 forThrowable + m (Ljava/nio/file/Path;Ly;)Z a method_60919 saveToFile + m (Ljava/nio/file/Path;Ly;Ljava/util/List;)Z a method_569 saveToFile + m (Ly;)Ljava/lang/String; a method_60920 getFriendlyReport + m (Ly;Ljava/util/List;)Ljava/lang/String; a method_60921 getFriendlyReport + m ()Ljava/lang/Throwable; b method_564 getException + m ()Ljava/lang/String; c method_36147 getDetails + m ()Ljava/lang/String; d method_557 getExceptionMessage + m ()Ljava/nio/file/Path; e method_572 getSaveFile + m ()Lac; f method_567 getSystemReport + m ()V g method_24305 preload + m (Ljava/lang/String;Ljava/lang/Throwable;)V + m ()V +c p net/minecraft/class_129 net/minecraft/CrashReportCategory + f Ljava/lang/String; a field_1096 title + f Ljava/util/List; b field_1094 entries + f [Ljava/lang/StackTraceElement; c field_1097 stackTrace + m ()[Ljava/lang/StackTraceElement; a method_575 getStacktrace + m (I)I a method_579 fillInStackTrace + m (Ldcy;DDD)Ljava/lang/String; a method_583 formatLocation + m (Ldcy;III)Ljava/lang/String; a method_581 formatLocation + m (Ldcy;Ljd;)Ljava/lang/String; a method_582 formatLocation + m (Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;)Z a method_584 validateStackTrace + m (Ljava/lang/String;Ljava/lang/Object;)Lp; a method_578 setDetail + m (Ljava/lang/String;Ljava/lang/Throwable;)V a method_585 setDetailError + m (Ljava/lang/String;Lq;)Lp; a method_577 setDetail + m (Ljava/lang/StringBuilder;)V a method_574 getDetails + m (Lp;Ldcy;Ljd;Ldtc;)V a method_586 populateBlockDetails + m (I)V b method_580 trimStacktrace + m (Ldcy;Ljd;)Ljava/lang/String; b method_576 method_576 + m (Ljava/lang/String;)V +c p$a net/minecraft/class_129$class_130 net/minecraft/CrashReportCategory$Entry + f Ljava/lang/String; a field_1098 key + f Ljava/lang/String; b field_1099 value + m ()Ljava/lang/String; a method_588 getKey + m ()Ljava/lang/String; b method_587 getValue + m (Ljava/lang/String;Ljava/lang/Object;)V +c q net/minecraft/class_133 net/minecraft/CrashReportDetail +c r net/minecraft/class_140 net/minecraft/DefaultUncaughtExceptionHandler + f Lorg/slf4j/Logger; a field_1113 logger + m (Lorg/slf4j/Logger;)V +c s net/minecraft/class_143 net/minecraft/DefaultUncaughtExceptionHandlerWithName + f Lorg/slf4j/Logger; a field_1115 logger + m (Lorg/slf4j/Logger;)V +c t net/minecraft/class_3797 net/minecraft/DetectedVersion + f Lae; a field_25319 BUILT_IN + f Lorg/slf4j/Logger; b field_16741 LOGGER + f Ljava/lang/String; c field_16738 id + f Ljava/lang/String; d field_16733 name + f Z e field_16737 stable + f Leqx; f field_16736 worldVersion + f I g field_16735 protocolVersion + f I h field_27843 resourcePackVersion + f I i field_16734 dataPackVersion + f Ljava/util/Date; j field_16739 buildTime + m ()Lae; a method_16672 tryDetectVersion + m ()V + m (Lcom/google/gson/JsonObject;)V + m ()V +c u net/minecraft/class_6319 net/minecraft/FieldsAreNonnullByDefault +c v net/minecraft/class_4239 net/minecraft/FileUtil + f Ljava/util/regex/Pattern; a field_18956 COPY_COUNTER_PATTERN + f I b field_33384 MAX_FILE_NAME + f Ljava/util/regex/Pattern; c field_18955 RESERVED_WINDOWS_FILENAMES + f Ljava/util/regex/Pattern; d field_40712 STRICT_PATH_SEGMENT_CHECK + m (Ljava/lang/String;)Ljava/lang/String; a method_61105 sanitizeName + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_49680 method_49680 + m (Ljava/nio/file/Path;)Z a method_20200 isPathNormalized + m (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_19773 findAvailableName + m (Ljava/nio/file/Path;Ljava/util/List;)Ljava/nio/file/Path; a method_46344 resolvePath + m ([Ljava/lang/String;)V a method_46345 validatePath + m (Ljava/lang/String;)Ljava/lang/String; b method_34675 getFullResourcePath + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; b method_49681 method_49681 + m (Ljava/nio/file/Path;)Z b method_20201 isPathPortable + m (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;)Ljava/nio/file/Path; b method_20202 createPathToResource + m (Ljava/lang/String;)Ljava/lang/String; c method_34676 normalizeResourcePath + m (Ljava/nio/file/Path;)V c method_47525 createDirectoriesSafe + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; d method_46346 decomposePath + m (Ljava/lang/String;)Z e method_46347 isValidStrictPathSegment + m (Ljava/lang/String;)Ljava/lang/String; f method_49682 method_49682 + m (Ljava/lang/String;)Ljava/lang/String; g method_49683 method_49683 + m ()V + m ()V +c w net/minecraft/class_6328 net/minecraft/MethodsReturnNonnullByDefault +c x net/minecraft/class_8144 net/minecraft/Optionull + m (Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; a method_49077 map + m (Ljava/lang/Object;Ljava/util/function/Function;Ljava/lang/Object;)Ljava/lang/Object; a method_49078 mapOrDefault + m (Ljava/lang/Object;Ljava/util/function/Function;Ljava/util/function/Supplier;)Ljava/lang/Object; a method_49079 mapOrElse + m (Ljava/util/Collection;)Ljava/lang/Object; a method_49080 first + m (Ljava/util/Collection;Ljava/lang/Object;)Ljava/lang/Object; a method_49081 firstOrDefault + m (Ljava/util/Collection;Ljava/util/function/Supplier;)Ljava/lang/Object; a method_49082 firstOrElse + m ([B)Z a method_49083 isNullOrEmpty + m ([C)Z a method_49084 isNullOrEmpty + m ([D)Z a method_49085 isNullOrEmpty + m ([F)Z a method_49086 isNullOrEmpty + m ([I)Z a method_49087 isNullOrEmpty + m ([J)Z a method_49088 isNullOrEmpty + m ([Ljava/lang/Object;)Z a method_49089 isNullOrEmpty + m ([S)Z a method_49090 isNullOrEmpty + m ([Z)Z a method_49091 isNullOrEmpty + m ()V +c y net/minecraft/class_9813 net/minecraft/ReportType + f Ly; a field_52181 CRASH + f Ly; b field_52182 PROFILE + f Ly; c field_52183 TEST + f Ly; d field_52184 NETWORK_PROTOCOL_ERROR + f Ly; e field_52284 CHUNK_IO_ERROR + f Ljava/lang/String; f comp_2856 header + f Ljava/util/List; g comp_2857 nuggets + m ()Ljava/lang/String; a method_60927 getErrorComment + m (Ljava/lang/StringBuilder;Ljava/util/List;)V a method_60928 appendHeader + m ()Ljava/lang/String; b comp_2856 header + m ()Ljava/util/List; c comp_2857 nuggets + m (Ljava/lang/String;Ljava/util/List;)V + m ()V +c z net/minecraft/class_148 net/minecraft/ReportedException + f Lo; a field_1119 report + m ()Lo; a method_631 getReport + m (Lo;)V +c aa net/minecraft/class_151 net/minecraft/ResourceLocationException + m (Ljava/lang/String;)V + m (Ljava/lang/String;Ljava/lang/Throwable;)V +c ab net/minecraft/class_155 net/minecraft/SharedConstants + f Z A field_44779 DEBUG_SUPPORT_BLOCKS + f Z B field_29754 DEBUG_SHAPES + f Z C field_29755 DEBUG_NEIGHBORSUPDATE + f Z D field_29756 DEBUG_STRUCTURES + f Z E field_29676 DEBUG_LIGHT + f Z F field_44582 DEBUG_SKY_LIGHT_SECTIONS + f Z G field_29677 DEBUG_WORLDGENATTEMPT + f Z H field_29678 DEBUG_SOLID_FACE + f Z I field_29679 DEBUG_CHUNKS + f Z J field_29680 DEBUG_GAME_EVENT_LISTENERS + f Z K field_29681 DEBUG_DUMP_TEXTURE_ATLAS + f Z L field_29682 DEBUG_DUMP_INTERPOLATED_TEXTURE_FRAMES + f Z M field_29683 DEBUG_STRUCTURE_EDIT_MODE + f Z N field_29684 DEBUG_SAVE_STRUCTURES_AS_SNBT + f Z O field_29685 DEBUG_SYNCHRONOUS_GL_LOGS + f Z P field_29686 DEBUG_VERBOSE_SERVER_EVENTS + f Z Q field_29687 DEBUG_NAMED_RUNNABLES + f Z R field_29688 DEBUG_GOAL_SELECTOR + f Z S field_29689 DEBUG_VILLAGE_SECTIONS + f Z T field_29690 DEBUG_BRAIN + f Z U field_29691 DEBUG_BEES + f Z V field_29692 DEBUG_RAIDS + f Z W field_29693 DEBUG_BLOCK_BREAK + f Z X field_29694 DEBUG_RESOURCE_LOAD_TIMES + f Z Y field_29695 DEBUG_MONITOR_TICK_TIMES + f Z Z field_29696 DEBUG_KEEP_JIGSAW_BLOCKS_DURING_STRUCTURE_GEN + f Z aA field_33555 DEBUG_DISABLE_ORE_VEINS + f Z aB field_35438 DEBUG_DISABLE_BLENDING + f Z aC field_35439 DEBUG_DISABLE_BELOW_ZERO_RETROGENERATION + f I aD field_29719 DEFAULT_MINECRAFT_PORT + f Z aE field_29720 INGAME_DEBUG_OUTPUT + f Z aF field_29721 DEBUG_SUBTITLES + f I aG field_29722 FAKE_MS_LATENCY + f I aH field_29723 FAKE_MS_JITTER + f Lio/netty/util/ResourceLeakDetector$Level; aI field_1124 NETTY_LEAK_DETECTION + f Z aJ field_29724 COMMAND_STACK_TRACES + f Z aK field_29725 DEBUG_WORLD_RECREATE + f Z aL field_29726 DEBUG_SHOW_SERVER_DEBUG_VALUES + f Z aM field_35652 DEBUG_FEATURE_COUNT + f Z aN field_39961 DEBUG_RESOURCE_GENERATION_OVERRIDE + f Z aO field_41533 DEBUG_FORCE_TELEMETRY + f Z aP field_44780 DEBUG_DONT_SEND_TELEMETRY_TO_BACKEND + f J aQ field_22251 MAXIMUM_TICK_TIME_NANOS + f F aR field_49016 MAXIMUM_BLOCK_EXPLOSION_RESISTANCE + f Z aS field_44583 USE_WORKFLOWS_HOOKS + f Z aT field_49773 USE_DEVONLY + f Z aU field_25135 CHECK_DATA_FIXER_SCHEMA + f Z aV field_1125 IS_RUNNING_IN_IDE + f I aW field_29729 WORLD_RESOLUTION + f I aX field_29730 MAX_CHAT_LENGTH + f I aY field_29731 MAX_USER_INPUT_COMMAND_LENGTH + f Z a field_29709 SNAPSHOT + f I aZ field_49017 MAX_FUNCTION_COMMAND_LENGTH + f Z aa field_29697 DEBUG_DONT_SAVE_WORLD + f Z ab field_29698 DEBUG_LARGE_DRIPSTONE + f Z ac field_29700 DEBUG_CARVERS + f Z ad field_33554 DEBUG_ORE_VEINS + f Z ae field_37273 DEBUG_SCULK_CATALYST + f Z af field_39090 DEBUG_BYPASS_REALMS_VERSION_CHECK + f Z ag field_39460 DEBUG_SOCIAL_INTERACTIONS + f Z ah field_39962 DEBUG_VALIDATE_RESOURCE_PATH_CASE + f Z ai field_46154 DEBUG_UNLOCK_ALL_TRADES + f Z aj field_47176 DEBUG_BREEZE_MOB + f Z ak field_47177 DEBUG_TRIAL_SPAWNER_DETECTS_SHEEP_AS_PLAYERS + f Z al field_48778 DEBUG_VAULT_DETECTS_SHEEP_AS_PLAYERS + f Z am field_47178 DEBUG_FORCE_ONBOARDING_SCREEN + f Z an field_34368 DEBUG_IGNORE_LOCAL_MOB_CAP + f Z ao field_29710 DEBUG_DISABLE_LIQUID_SPREADING + f Z ap field_34369 DEBUG_AQUIFERS + f Z aq field_34370 DEBUG_JFR_PROFILING_ENABLE_LEVEL_LOADING + f Z ar field_34371 debugGenerateSquareTerrainWithoutNoise + f Z as field_34372 debugGenerateStripedTerrainWithoutNoise + f Z at field_29711 DEBUG_ONLY_GENERATE_HALF_THE_WORLD + f Z au field_29712 DEBUG_DISABLE_FLUID_GENERATION + f Z av field_29713 DEBUG_DISABLE_AQUIFERS + f Z aw field_29715 DEBUG_DISABLE_SURFACE + f Z ax field_29716 DEBUG_DISABLE_CARVERS + f Z ay field_29717 DEBUG_DISABLE_STRUCTURES + f Z az field_29718 DEBUG_DISABLE_FEATURES + f I b field_29732 WORLD_VERSION + f I ba field_49170 MAX_PLAYER_NAME_LENGTH + f I bb field_38052 MAX_CHAINED_NEIGHBOR_UPDATES + f I bc field_39898 MAX_RENDER_DISTANCE + f [C bd field_1126 ILLEGAL_FILE_CHARACTERS + f I be field_29702 TICKS_PER_SECOND + f I bf field_44973 MILLIS_PER_TICK + f I bg field_29703 TICKS_PER_MINUTE + f I bh field_29704 TICKS_PER_GAME_DAY + f F bi field_29705 AVERAGE_GAME_TICKS_PER_RANDOM_TICK_PER_BLOCK + f F bj field_29706 AVERAGE_RANDOM_TICKS_PER_BLOCK_PER_MINUTE + f F bk field_29707 AVERAGE_RANDOM_TICKS_PER_BLOCK_PER_GAME_DAY + f I bl field_44922 WORLD_ICON_SIZE + f I bm field_29708 SNAPSHOT_PROTOCOL_BIT + f Lae; bn field_16742 CURRENT_VERSION + f Ljava/lang/String; c field_34373 SERIES + f Ljava/lang/String; d field_29733 VERSION_STRING + f I e field_29735 RELEASE_NETWORK_PROTOCOL_VERSION + f I f field_29736 SNAPSHOT_NETWORK_PROTOCOL_VERSION + f I g field_29737 SNBT_NAG_VERSION + f Z h field_36325 CRASH_EAGERLY + f I i field_29738 RESOURCE_PACK_FORMAT + f I j field_29739 DATA_PACK_FORMAT + f I k field_39963 LANGUAGE_FORMAT + f I l field_39964 REPORT_FORMAT_VERSION + f Ljava/lang/String; m field_29740 DATA_VERSION_TAG + f Z n field_29745 FIX_TNT_DUPE + f Z o field_33851 FIX_SAND_DUPE + f Z p field_29747 USE_DEBUG_FEATURES + f Z q field_35006 DEBUG_OPEN_INCOMPATIBLE_WORLDS + f Z r field_35563 DEBUG_ALLOW_LOW_SIM_DISTANCE + f Z s field_29748 DEBUG_HOTKEYS + f Z t field_33753 DEBUG_UI_NARRATION + f Z u field_29749 DEBUG_RENDER + f Z v field_29750 DEBUG_PATHFINDING + f Z w field_29751 DEBUG_WATER + f Z x field_29752 DEBUG_HEIGHTMAP + f Z y field_29753 DEBUG_COLLISION + f Z z field_52311 DEBUG_SHOW_LOCAL_SERVER_ENTITY_HIT_BOXES + m ()V a method_36208 tryDetectVersion + m (Lae;)V a method_34872 setVersion + m (Ldcd;)Z a method_37896 debugVoidTerrain + m ()Lae; b method_16673 getCurrentVersion + m ()I c method_31372 getProtocolVersion + m ()V + m ()V +c ac net/minecraft/class_6396 net/minecraft/SystemReport + f J a field_33852 BYTES_PER_MEBIBYTE + f J b field_33853 ONE_GIGA + f Lorg/slf4j/Logger; c field_33854 LOGGER + f Ljava/lang/String; d field_33855 OPERATING_SYSTEM + f Ljava/lang/String; e field_33856 JAVA_VERSION + f Ljava/lang/String; f field_33857 JAVA_VM_VERSION + f Ljava/util/Map; g field_33858 entries + m ()Ljava/lang/String; a method_37120 toLineSeparatedString + m (J)F a method_59895 sizeInMiB + m (Ljava/lang/String;)V a method_59896 putSpaceForProperty + m (Ljava/lang/String;Ljava/lang/Runnable;)V a method_37121 ignoreErrors + m (Ljava/lang/String;Ljava/lang/String;)V a method_37122 setDetail + m (Ljava/lang/String;Ljava/util/function/Supplier;)V a method_37123 setDetail + m (Ljava/lang/StringBuilder;)V a method_37124 appendToCrashReportString + m (Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V a method_37125 method_37125 + m (Ljava/util/List;)V a method_37126 putPhysicalMemory + m (Ljava/util/Map$Entry;)Ljava/lang/String; a method_37127 method_37127 + m (Loshi/SystemInfo;)V a method_37128 putHardware + m (Loshi/hardware/CentralProcessor$ProcessorIdentifier;)Ljava/lang/String; a method_37129 method_37129 + m (Loshi/hardware/CentralProcessor;)V a method_37130 putProcessor + m (Loshi/hardware/GlobalMemory;)V a method_37131 putMemory + m (Loshi/hardware/GraphicsCard;)Ljava/lang/String; a method_37132 method_37132 + m (Loshi/hardware/HardwareAbstractionLayer;)V a method_37133 method_37133 + m (Loshi/hardware/PhysicalMemory;)Ljava/lang/String; a method_37134 method_37134 + m (Loshi/hardware/VirtualMemory;)V a method_37135 putVirtualMemory + m ()V b method_59897 putStorage + m (Ljava/lang/String;)Ljava/lang/String; b method_59898 method_59898 + m (Ljava/lang/String;Ljava/util/function/Supplier;)V b method_59899 putSpaceForPath + m (Ljava/util/List;)V b method_37137 putGraphics + m (Loshi/hardware/CentralProcessor;)Ljava/lang/String; b method_37138 method_37138 + m (Loshi/hardware/GlobalMemory;)V b method_37139 method_37139 + m (Loshi/hardware/HardwareAbstractionLayer;)V b method_37140 method_37140 + m (Loshi/hardware/PhysicalMemory;)Ljava/lang/String; b method_37141 method_37141 + m (Loshi/hardware/VirtualMemory;)Ljava/lang/String; b method_37142 method_37142 + m ()Ljava/lang/String; c method_59900 method_59900 + m (Loshi/hardware/CentralProcessor;)Ljava/lang/String; c method_37144 method_37144 + m (Loshi/hardware/GlobalMemory;)V c method_37145 method_37145 + m (Loshi/hardware/HardwareAbstractionLayer;)V c method_37146 method_37146 + m (Loshi/hardware/VirtualMemory;)Ljava/lang/String; c method_37147 method_37147 + m ()Ljava/lang/String; d method_37136 method_37136 + m (Loshi/hardware/CentralProcessor;)Ljava/lang/String; d method_37149 method_37149 + m (Loshi/hardware/VirtualMemory;)Ljava/lang/String; d method_37150 method_37150 + m ()V e method_37143 method_37143 + m (Loshi/hardware/VirtualMemory;)Ljava/lang/String; e method_37152 method_37152 + m ()Ljava/lang/String; f method_37148 method_37148 + m ()Ljava/lang/String; g method_37151 method_37151 + m ()V + m ()V +c ad net/minecraft/class_156 net/minecraft/Util + f I a field_46220 LINEAR_LOOKUP_THRESHOLD + f J b field_45714 NANOS_PER_MILLI + f Lazo$a; c field_1128 timeSource + f Lcom/google/common/base/Ticker; d field_37250 TICKER + f Ljava/util/UUID; e field_25140 NIL_UUID + f Ljava/nio/file/spi/FileSystemProvider; f field_33859 ZIP_FILE_SYSTEM_PROVIDER + f Lorg/slf4j/Logger; g field_1129 LOGGER + f I h field_34891 DEFAULT_MAX_THREADS + f I i field_46764 DEFAULT_SAFE_FILE_OPERATION_RETRIES + f Ljava/lang/String; j field_34892 MAX_THREADS_SYSTEM_PROPERTY + f Ljava/util/concurrent/ExecutorService; k field_18035 BACKGROUND_EXECUTOR + f Ljava/util/concurrent/ExecutorService; l field_24477 IO_POOL + f Ljava/util/concurrent/ExecutorService; m field_47571 DOWNLOAD_POOL + f Ljava/time/format/DateTimeFormatter; n field_39824 FILENAME_DATE_TIME_FORMATTER + f Ljava/util/Set; o field_52196 ALLOWED_UNTRUSTED_LINK_PROTOCOLS + f Ljava/util/function/Consumer; p field_34893 thePauser + m ()Ljava/util/stream/Collector; a method_664 toMap + m (I)Ljava/lang/String; a method_49399 method_49399 + m (IILjava/util/List;)Z a method_59901 isSymmetrical + m (ILjava/lang/String;[Ljava/util/function/BooleanSupplier;)Z a method_30622 runWithRetries + m (Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)Lcom/mojang/datafixers/types/Type; a method_29187 fetchChoiceType + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/types/Type;Ljava/util/function/UnaryOperator;)Lcom/mojang/datafixers/Typed; a method_54907 writeAndReadTypedOrThrow + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/datafixers/Typed; a method_54908 readTypedOrThrow + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/Dynamic;Z)Lcom/mojang/datafixers/Typed; a method_55333 readTypedOrThrow + m (Lduf;Ljava/lang/Object;)Ljava/lang/String; a method_650 getPropertyName + m (Lit/unimi/dsi/fastutil/objects/ObjectArrayList;Layw;)Ljava/util/List; a method_43027 shuffledCopy + m (Ljava/lang/Iterable;Ljava/lang/Object;)Ljava/lang/Object; a method_660 findNextInIterable + m (Ljava/lang/Object;)Z a method_56612 method_56612 + m (Ljava/lang/Object;Ljava/util/List;)Ljava/util/List; a method_58272 copyAndAdd + m (Ljava/lang/Object;Ljava/util/function/Consumer;)Ljava/lang/Object; a method_654 make + m (Ljava/lang/Runnable;Ljava/util/function/Supplier;)Ljava/lang/Runnable; a method_18839 name + m (Ljava/lang/String;)Ljava/net/URI; a method_60931 parseAndValidateUntrustedUri + m (Ljava/lang/String;II)I a method_27761 offsetByCodepoints + m (Ljava/lang/String;Lakr;)Ljava/lang/String; a method_646 makeDescriptionId + m (Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Runnable; a method_33787 wrapThreadWithTaskName + m (Ljava/lang/String;Ljava/lang/Throwable;)V a method_39977 logAndPauseIfInIde + m (Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/ForkJoinPool;)Ljava/util/concurrent/ForkJoinWorkerThread; a method_28123 method_28123 + m (Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;ZLjava/lang/Runnable;)Ljava/lang/Thread; a method_27956 method_27956 + m (Ljava/lang/String;Ljava/util/function/Consumer;)Ljava/util/function/Consumer; a method_29188 prefix + m (Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/util/function/Supplier; a method_37910 wrapThreadWithTaskName + m (Ljava/lang/String;Lm;)Ljava/lang/String; a method_30309 sanitizeName + m (Ljava/lang/String;Z)Ljava/util/concurrent/ExecutorService; a method_27959 makeIoExecutor + m (Ljava/lang/Thread;Ljava/lang/Throwable;)V a method_18347 onThreadException + m (Ljava/lang/Throwable;)V a method_24155 throwAsRuntime + m (Ljava/nio/file/Path;)Ljava/util/function/BooleanSupplier; a method_30624 createDeleter + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/util/function/BooleanSupplier; a method_30625 createRenamer + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;)V a method_30626 safeReplaceFile + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;Z)Z a method_41204 safeReplaceOrMoveFile + m (Ljava/nio/file/spi/FileSystemProvider;)Z a method_37153 method_37153 + m (Ljava/util/List;)Ljava/util/function/Predicate; a method_56613 allOf + m (Ljava/util/List;I)Lcom/mojang/serialization/DataResult; a method_33141 fixedSize + m (Ljava/util/List;Layw;)Ljava/lang/Object; a method_32309 getRandom + m (Ljava/util/List;Ljava/lang/Object;)Ljava/util/List; a method_57108 copyAndAdd + m (Ljava/util/List;Ljava/lang/Void;)Ljava/util/List; a method_43368 method_43368 + m (Ljava/util/List;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; a method_43370 fallibleSequence + m (Ljava/util/List;[Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture;)V a method_43371 method_43371 + m (Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; a method_57109 copyAndPut + m (Ljava/util/Optional;Ljava/util/function/Consumer;Ljava/lang/Runnable;)Ljava/util/Optional; a method_17974 ifElse + m (Ljava/util/concurrent/CompletableFuture;Ljava/util/List;Ljava/lang/Throwable;)V a method_43369 method_43369 + m (Ljava/util/concurrent/ExecutorService;)V a method_27957 shutdownExecutor + m (Ljava/util/function/BiFunction;)Ljava/util/function/BiFunction; a method_34865 memoize + m (Ljava/util/function/Consumer;)V a method_38646 setPause + m (Ljava/util/function/Consumer;Ljava/lang/String;Ljava/lang/String;)V a method_29189 method_29189 + m (Ljava/util/function/Consumer;Ljava/util/List;ILjava/lang/Object;Ljava/lang/Throwable;)V a method_43372 method_43372 + m (Ljava/util/function/Function;)Laze; a method_48746 singleKeyCache + m (Ljava/util/function/Function;Ljava/util/function/Predicate;)Ljava/lang/Object; a method_43498 blockUntilDone + m (Ljava/util/function/Supplier;)Ljava/lang/Object; a method_656 make + m (Ljava/util/function/Supplier;Ljava/util/function/Supplier;)Ljava/util/function/Supplier; a method_41238 name + m (Ljava/util/stream/IntStream;I)Lcom/mojang/serialization/DataResult; a method_29190 fixedSize + m (Ljava/util/stream/IntStream;Layw;)Lit/unimi/dsi/fastutil/ints/IntArrayList; a method_43251 toShuffledList + m (Ljava/util/stream/LongStream;I)Lcom/mojang/serialization/DataResult; a method_51822 fixedSize + m (Ljava/util/stream/Stream;Layw;)Ljava/util/List; a method_43252 toShuffledList + m (Ljz;Ljava/lang/Object;)Ljava/lang/String; a method_57107 getRegisteredName + m (Lm;I)Ljava/lang/String; a method_30623 method_30623 + m ([ILayw;)I a method_27172 getRandom + m ([Ljava/lang/Object;Layw;)Ljava/lang/Object; a method_27173 getRandom + m ([Ljava/util/function/BooleanSupplier;)Z a method_30627 executeInSequence + m ([Ljava/util/function/Predicate;Ljava/lang/Object;)Z a method_56614 method_56614 + m ()Ljava/util/stream/Collector; b method_58579 toMutableList + m (I)Ljava/lang/String; b method_51823 method_51823 + m (Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)Lcom/mojang/datafixers/types/Type; b method_29191 doFetchChoiceType + m (Ljava/lang/Iterable;Ljava/lang/Object;)Ljava/lang/Object; b method_645 findPreviousInIterable + m (Ljava/lang/Object;)Z b method_56615 method_56615 + m (Ljava/lang/String;)V b method_33559 logAndPauseIfInIde + m (Ljava/lang/String;Ljava/lang/Runnable;)V b method_33790 method_33790 + m (Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/lang/Object; b method_37911 method_37911 + m (Ljava/lang/Throwable;)Ljava/lang/Throwable; b method_22320 pauseInIde + m (Ljava/nio/file/Path;)Ljava/util/function/BooleanSupplier; b method_30628 createFileDeletedCheck + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;)V b method_29775 copyBetweenDirs + m (Ljava/util/List;)Ljava/util/function/Predicate; b method_56616 anyOf + m (Ljava/util/List;Layw;)Ljava/util/Optional; b method_40083 getRandomSafe + m (Ljava/util/List;Ljava/lang/Void;)Ljava/util/List; b method_40082 method_40082 + m (Ljava/util/function/Function;)Ljava/util/function/Function; b method_34866 memoize + m ([Ljava/lang/Object;Layw;)Ljava/util/List; b method_43253 shuffledCopy + m ([Ljava/util/function/Predicate;Ljava/lang/Object;)Z b method_56617 method_56617 + m ()J c method_658 getMillis + m (I)Ljava/lang/String; c method_49400 method_49400 + m (Ljava/lang/String;)Ljava/util/concurrent/ExecutorService; c method_28122 makeExecutor + m (Ljava/lang/Throwable;)Ljava/lang/String; c method_22321 describeError + m (Ljava/nio/file/Path;)Ljava/util/function/BooleanSupplier; c method_30629 createFileCreatedCheck + m (Ljava/util/List;)Ljava/lang/Object; c method_20793 lastOf + m (Ljava/util/List;Layw;)V c method_43028 shuffle + m (Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; c method_43499 blockUntilDone + m ()J d method_648 getNanos + m (I)[Ljava/util/function/Predicate; d method_61111 method_61111 + m (Ljava/lang/String;)V d method_33560 doPause + m (Ljava/util/List;)Ljava/util/concurrent/CompletableFuture; d method_33791 sequence + m ()J e method_659 getEpochMillis + m (I)[Ljava/util/function/Predicate; e method_61112 method_61112 + m (Ljava/lang/String;)Z e method_666 method_666 + m (Ljava/util/List;)Ljava/util/concurrent/CompletableFuture; e method_652 sequenceFailFast + m ()Ljava/lang/String; f method_44893 getFilenameFormattedDateTime + m (Ljava/lang/String;)V f method_38647 method_38647 + m (Ljava/util/List;)Ljava/util/concurrent/CompletableFuture; f method_43373 sequenceFailFastAndCancel + m ()Ljava/util/concurrent/ExecutorService; g method_18349 backgroundExecutor + m (Ljava/util/List;)Ljava/util/function/ToIntFunction; g method_43658 createIndexLookup + m ()Ljava/util/concurrent/ExecutorService; h method_27958 ioPool + m (Ljava/util/List;)Ljava/util/function/ToIntFunction; h method_53909 createIndexIdentityLookup + m ()Ljava/util/concurrent/ExecutorService; i method_55473 nonCriticalIoPool + m ()V j method_18350 shutdownExecutors + m ()Lad$a; k method_668 getPlatform + m ()Ljava/util/stream/Stream; l method_651 getVmArguments + m ()V m method_29476 startTimerHackThread + m ()I n method_38648 getMaxThreads + m ()Ljava/lang/IllegalStateException; o method_37154 method_37154 + m ()V + m ()V +c ad$1 net/minecraft/class_156$1 net/minecraft/Util$1 + m ()V +c ad$2 net/minecraft/class_156$2 net/minecraft/Util$10 + f Ljava/util/function/Function; a field_29654 val$function + f Ljava/util/Map; b field_29655 cache + m (Ljava/util/function/Function;)V +c ad$3 net/minecraft/class_156$3 net/minecraft/Util$11 + f Ljava/util/function/BiFunction; a field_29656 val$function + f Ljava/util/Map; b field_29657 cache + m (Ljava/util/function/BiFunction;Lcom/mojang/datafixers/util/Pair;)Ljava/lang/Object; a method_34867 method_34867 + m (Ljava/util/function/BiFunction;)V +c ad$4 net/minecraft/class_156$4 net/minecraft/Util$2 + m (Ljava/util/concurrent/ForkJoinPool;)V +c ad$5 net/minecraft/class_156$5 net/minecraft/Util$5 + f Ljava/nio/file/Path; a field_26348 val$from + f Ljava/nio/file/Path; b field_26349 val$to + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)V +c ad$6 net/minecraft/class_156$6 net/minecraft/Util$6 + f Ljava/nio/file/Path; a field_26352 val$target + m (Ljava/nio/file/Path;)V +c ad$7 net/minecraft/class_156$7 net/minecraft/Util$7 + f Ljava/nio/file/Path; a field_37251 val$target + m (Ljava/nio/file/Path;)V +c ad$8 net/minecraft/class_156$8 net/minecraft/Util$8 + f Ljava/nio/file/Path; a field_37274 val$target + m (Ljava/nio/file/Path;)V +c ad$9 net/minecraft/class_156$9 net/minecraft/Util$9 + m (Ljava/lang/String;)V +c ad$a net/minecraft/class_156$class_158 net/minecraft/Util$OS + f Lad$a; a field_1135 LINUX + f Lad$a; b field_1134 SOLARIS + f Lad$a; c field_1133 WINDOWS + f Lad$a; d field_1137 OSX + f Lad$a; e field_1132 UNKNOWN + f Ljava/lang/String; f field_34894 telemetryName + f [Lad$a; g field_1136 $VALUES + m ()Ljava/lang/String; a method_38649 telemetryName + m (Ljava/io/File;)V a method_672 openFile + m (Ljava/lang/String;)V a method_670 openUri + m (Ljava/net/URI;)V a method_673 openUri + m (Ljava/nio/file/Path;)V a method_60932 openPath + m ()[Lad$a; b method_36579 $values + m (Ljava/net/URI;)[Ljava/lang/String; b method_674 getOpenUriArguments + m (Ljava/net/URI;)Ljava/lang/Process; c method_671 method_671 + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ad$a$1 net/minecraft/class_156$class_158$1 net/minecraft/Util$OS$1 + m (Ljava/lang/String;ILjava/lang/String;)V +c ad$a$2 net/minecraft/class_156$class_158$2 net/minecraft/Util$OS$2 + m (Ljava/lang/String;ILjava/lang/String;)V +c ae net/minecraft/class_6489 net/minecraft/WorldVersion + m (Lass;)I a method_48017 getPackVersion + m ()Ljava/lang/String; b method_48018 getId + m ()Ljava/lang/String; c method_48019 getName + m ()Leqx; d method_37912 getDataVersion + m ()I e method_48020 getProtocolVersion + m ()Ljava/util/Date; f method_48021 getBuildTime + m ()Z g method_48022 isStable +c af net/minecraft/class_161 net/minecraft/advancements/Advancement + f Lcom/mojang/serialization/Codec; a field_47179 CODEC + f Lyx; b field_47996 STREAM_CODEC + f Ljava/util/Optional; c comp_1912 parent + f Ljava/util/Optional; d comp_1913 display + f Lak; e comp_1914 rewards + f Ljava/util/Map; f comp_1915 criteria + f Laj; g comp_1916 requirements + f Z h comp_1917 sendsTelemetryEvent + f Ljava/util/Optional; i comp_1918 name + f Lcom/mojang/serialization/Codec; j field_47180 CRITERIA_CODEC + m ()Z a method_53630 isRoot + m (Laf;)Lcom/mojang/serialization/DataResult; a method_54910 validate + m (Laf;Laj;)Laf; a method_54911 method_54911 + m (Lag;)Lwz; a method_53622 name + m (Las;)Lwz; a method_53623 decorateName + m (Layu;Ljn$a;)V a method_54912 validate + m (Layu;Ljn$a;Ljava/lang/String;Lao;)V a method_54913 method_54913 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54914 method_54914 + m (Ljava/util/Map;)Laj; a method_54915 method_54915 + m (Ljava/util/Optional;Ljava/util/Optional;Lak;Ljava/util/Map;Ljava/util/Optional;Ljava/lang/Boolean;)Laf; a method_54916 method_54916 + m (Lwk;)V a method_53627 write + m (Lwz;Lxw;)Lxw; a method_53629 method_53629 + m ()Ljava/util/Optional; b comp_1912 parent + m (Laf;)Ljava/util/Optional; b method_54917 method_54917 + m (Lag;)Lwz; b method_53631 method_53631 + m (Ljava/util/Map;)Lcom/mojang/serialization/DataResult; b method_54918 method_54918 + m (Lwk;)Laf; b method_53632 read + m ()Ljava/util/Optional; c comp_1913 display + m ()Lak; d comp_1914 rewards + m ()Ljava/util/Map; e comp_1915 criteria + m ()Laj; f comp_1916 requirements + m ()Z g comp_1917 sendsTelemetryEvent + m ()Ljava/util/Optional; h comp_1918 name + m ()Ljava/lang/String; i method_54919 method_54919 + m (Ljava/util/Optional;Ljava/util/Optional;Lak;Ljava/util/Map;Laj;Z)V + m (Ljava/util/Optional;Ljava/util/Optional;Lak;Ljava/util/Map;Laj;ZLjava/util/Optional;)V + m ()V +c af$a net/minecraft/class_161$class_162 net/minecraft/advancements/Advancement$Builder + f Ljava/util/Optional; a field_1149 parent + f Ljava/util/Optional; b field_1147 display + f Lak; c field_1153 rewards + f Lcom/google/common/collect/ImmutableMap$Builder; d field_1148 criteria + f Ljava/util/Optional; e field_1150 requirements + f Laj$a; f field_1151 requirementsStrategy + f Z g field_44783 sendsTelemetryEvent + m ()Laf$a; a method_707 advancement + m (Lag;)Laf$a; a method_701 parent + m (Laj$a;)Laf$a; a method_704 requirements + m (Laj;)Laf$a; a method_34884 requirements + m (Lak$a;)Laf$a; a method_703 rewards + m (Lak;)Laf$a; a method_706 rewards + m (Lakr;)Laf$a; a method_708 parent + m (Las;)Laf$a; a method_693 display + m (Lcuq;Lwz;Lwz;Lakr;Lam;ZZZ)Laf$a; a method_20416 display + m (Ldcv;Lwz;Lwz;Lakr;Lam;ZZZ)Laf$a; a method_697 display + m (Ljava/lang/String;Lao;)Laf$a; a method_705 addCriterion + m (Ljava/util/Map;)Laj; a method_53633 method_53633 + m (Ljava/util/function/Consumer;Ljava/lang/String;)Lag; a method_694 save + m ()Laf$a; b method_51698 recipeAdvancement + m (Lakr;)Lag; b method_695 build + m ()Laf$a; c method_53634 sendsTelemetryEvent + m ()V +c ag net/minecraft/class_8779 net/minecraft/advancements/AdvancementHolder + f Lyx; a field_48180 STREAM_CODEC + f Lyx; b field_48181 LIST_STREAM_CODEC + f Lakr; c comp_1919 id + f Laf; d comp_1920 value + m ()Lakr; a comp_1919 id + m ()Laf; b comp_1920 value + m (Lakr;Laf;)V + m ()V +c ah net/minecraft/class_8781 net/minecraft/advancements/AdvancementNode + f Lag; a field_46077 holder + f Lah; b field_46078 parent + f Ljava/util/Set; c field_46079 children + m ()Laf; a method_53647 advancement + m (Lah;)Lah; a method_53648 getRoot + m ()Lag; b method_53649 holder + m (Lah;)V b method_53650 addChild + m ()Lah; c method_53651 parent + m ()Lah; d method_53652 root + m ()Ljava/lang/Iterable; e method_53653 children + m (Lag;Lah;)V +c ai net/minecraft/class_167 net/minecraft/advancements/AdvancementProgress + f Lcom/mojang/serialization/Codec; a field_46080 CODEC + f Ljava/time/format/DateTimeFormatter; b field_46081 OBTAINED_TIME_FORMAT + f Lcom/mojang/serialization/Codec; c field_46082 OBTAINED_TIME_CODEC + f Lcom/mojang/serialization/Codec; d field_46083 CRITERIA_CODEC + f Ljava/util/Map; e field_1160 criteria + f Laj; f field_1161 requirements + m ()Z a method_740 isDone + m (Lai;)I a method_738 compareTo + m (Laj;)V a method_727 update + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53654 method_53654 + m (Ljava/lang/String;)Z a method_743 grantProgress + m (Ljava/time/Instant;)Ljava/time/temporal/TemporalAccessor; a method_53655 method_53655 + m (Ljava/util/Map$Entry;)Ljava/time/Instant; a method_53656 method_53656 + m (Ljava/util/Map;)Ljava/util/Map; a method_53657 method_53657 + m (Ljava/util/Map;Ljava/lang/Boolean;)Lai; a method_53658 method_53658 + m (Ljava/util/Set;Ljava/util/Map$Entry;)Z a method_730 method_730 + m (Lvw;)V a method_733 serializeToNetwork + m (Lvw;Lap;)V a method_33895 method_33895 + m ()Z b method_742 hasProgress + m (Lai;)Ljava/util/Map; b method_53659 method_53659 + m (Ljava/lang/String;)Z b method_729 revokeProgress + m (Ljava/util/Map$Entry;)Z b method_53660 method_53660 + m (Ljava/util/Map;)Ljava/util/Map; b method_53661 method_53661 + m (Lvw;)Lai; b method_732 fromNetwork + m ()F c method_735 getPercent + m (Ljava/lang/String;)Lap; c method_737 getCriterion + m (Ljava/util/Map$Entry;)Lap; c method_53662 method_53662 + m ()Lwz; d method_728 getProgressText + m (Ljava/lang/String;)Z d method_53663 isCriterionDone + m ()Ljava/lang/Iterable; e method_731 getRemainingCriteria + m ()Ljava/lang/Iterable; f method_734 getCompletedCriteria + m ()Ljava/time/Instant; g method_741 getFirstProgressDate + m ()I h method_736 countCompletedRequirements + m (Ljava/util/Map;)V + m ()V + m ()V +c aj net/minecraft/class_8782 net/minecraft/advancements/AdvancementRequirements + f Lcom/mojang/serialization/Codec; a field_47184 CODEC + f Laj; b field_46084 EMPTY + f Ljava/util/List; c comp_1922 requirements + m ()I a method_53664 size + m (Ljava/util/Collection;)Laj; a method_53668 allOf + m (Ljava/util/List;Ljava/util/function/Predicate;)Z a method_53671 anyMatch + m (Ljava/util/Set;)Lcom/mojang/serialization/DataResult; a method_54925 validate + m (Ljava/util/Set;Ljava/util/Set;)Ljava/lang/String; a method_54926 method_54926 + m (Ljava/util/function/Predicate;)Z a method_53669 test + m (Lvw;)V a method_53670 write + m (Lvw;Ljava/util/List;)V a method_54927 method_54927 + m ()Z b method_53677 isEmpty + m (Ljava/util/Collection;)Laj; b method_53674 anyOf + m (Ljava/util/function/Predicate;)I b method_53675 count + m (Lvw;)Ljava/util/List; b method_54928 method_54928 + m ()Ljava/util/Set; c method_53678 names + m ()Ljava/util/List; d comp_1922 requirements + m ()Ljava/lang/String; e method_54929 method_54929 + m (Lvw;)V + m (Ljava/util/List;)V + m ()V +c aj$a net/minecraft/class_8782$class_8797 net/minecraft/advancements/AdvancementRequirements$Strategy + f Laj$a; a field_16882 AND + f Laj$a; b field_1257 OR + m ()V +c ak net/minecraft/class_170 net/minecraft/advancements/AdvancementRewards + f Lcom/mojang/serialization/Codec; a field_47185 CODEC + f Lak; b field_1167 EMPTY + f I c comp_2025 experience + f Ljava/util/List; d comp_2026 loot + f Ljava/util/List; e comp_2027 recipes + f Ljava/util/Optional; f comp_2028 function + m ()I a comp_2025 experience + m (Laqv;)V a method_748 grant + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54930 method_54930 + m (Lnet/minecraft/server/MinecraftServer;Laqv;Lig;)V a method_17978 method_17978 + m (Lnet/minecraft/server/MinecraftServer;Leo;)Ljava/util/Optional; a method_54931 method_54931 + m ()Ljava/util/List; b comp_2026 loot + m ()Ljava/util/List; c comp_2027 recipes + m ()Ljava/util/Optional; d comp_2028 function + m (ILjava/util/List;Ljava/util/List;Ljava/util/Optional;)V + m ()V +c ak$a net/minecraft/class_170$class_171 net/minecraft/advancements/AdvancementRewards$Builder + f I a field_1169 experience + f Lcom/google/common/collect/ImmutableList$Builder; b field_1171 loot + f Lcom/google/common/collect/ImmutableList$Builder; c field_1168 recipes + f Ljava/util/Optional; d field_1170 function + m ()Lak; a method_751 build + m (I)Lak$a; a method_750 experience + m (Lakq;)Lak$a; a method_34899 loot + m (Lakr;)Lak$a; a method_753 recipe + m (I)Lak$a; b method_749 addExperience + m (Lakq;)Lak$a; b method_34900 addLootTable + m (Lakr;)Lak$a; b method_752 addRecipe + m (Lakr;)Lak$a; c method_34901 function + m (Lakr;)Lak$a; d method_34902 runs + m ()V +c al net/minecraft/class_163 net/minecraft/advancements/AdvancementTree + f Lorg/slf4j/Logger; a field_1158 LOGGER + f Ljava/util/Map; b field_1157 nodes + f Ljava/util/Set; c field_1154 roots + f Ljava/util/Set; d field_1156 tasks + f Lal$a; e field_1155 listener + m ()V a method_714 clear + m (Lag;)Lah; a method_53690 get + m (Lah;)V a method_718 remove + m (Lakr;)Lah; a method_716 get + m (Lal$a;)V a method_717 setListener + m (Ljava/util/Collection;)V a method_53691 addAll + m (Ljava/util/Set;)V a method_713 remove + m ()Ljava/lang/Iterable; b method_715 roots + m (Lag;)Z b method_53692 tryInsert + m ()Ljava/util/Collection; c method_53693 nodes + m ()V + m ()V +c al$a net/minecraft/class_163$class_164 net/minecraft/advancements/AdvancementTree$Listener + m ()V a method_722 onAdvancementsCleared + m (Lah;)V a method_723 onAddAdvancementRoot + m (Lah;)V b method_720 onRemoveAdvancementRoot + m (Lah;)V c method_721 onAddAdvancementTask + m (Lah;)V d method_719 onRemoveAdvancementTask +c am net/minecraft/class_189 net/minecraft/advancements/AdvancementType + f Lam; a field_1254 TASK + f Lam; b field_1250 CHALLENGE + f Lam; c field_1249 GOAL + f Lcom/mojang/serialization/Codec; d field_47186 CODEC + f Ljava/lang/String; e field_1251 name + f Ln; f field_1255 chatColor + f Lwz; g field_26386 displayName + f [Lam; h field_1253 $VALUES + m ()Ln; a method_830 getChatColor + m (Lag;Laqv;)Lxn; a method_54932 createAnnouncement + m ()Lwz; b method_30756 getDisplayName + m ()[Lam; d method_36593 $values + m (Ljava/lang/String;ILjava/lang/String;Ln;)V + m ()V +c an net/minecraft/class_174 net/minecraft/advancements/CriteriaTriggers + f Lbf; A field_1198 CONSUME_ITEM + f Lbo; B field_1193 EFFECTS_CHANGED + f Lei; C field_1204 USED_TOTEM + f Lbn; D field_1211 NETHER_TRAVEL + f Lcc; E field_1203 FISHING_ROD_HOOKED + f Lba; F field_1202 CHANNELED_LIGHTNING + f Ldu; G field_1196 SHOT_CROSSBOW + f Lcz; H field_1197 KILLED_BY_CROSSBOW + f Ldq; I field_19250 RAID_WIN + f Ldq; J field_19251 RAID_OMEN + f Ldx; K field_21628 HONEY_BLOCK_SLIDE + f Lav; L field_21629 BEE_NEST_DESTROYED + f Lef; M field_22450 TARGET_BLOCK_HIT + f Lcw; N field_24478 ITEM_USED_ON_BLOCK + f Lbl; O field_48268 DEFAULT_BLOCK_USE + f Lau; P field_48269 ANY_BLOCK_USE + f Ldg; Q field_24479 GENERATE_LOOT + f Ldl; R field_24480 THROWN_ITEM_PICKED_UP_BY_ENTITY + f Ldl; S field_38700 THROWN_ITEM_PICKED_UP_BY_PLAYER + f Ldn; T field_25694 PLAYER_INTERACTED_WITH_ENTITY + f Lea; U field_33870 START_RIDING_TRIGGER + f Lde; V field_33871 LIGHTNING_STRIKE + f Lej; W field_33872 USING_ITEM + f Lbn; X field_35013 FALL_FROM_HEIGHT + f Lbn; Y field_35014 RIDE_ENTITY_IN_LAVA_TRIGGER + f Lda; Z field_38376 KILL_MOB_NEAR_SCULK_CATALYST + f Lcom/mojang/serialization/Codec; a field_47187 CODEC + f Lcw; aa field_38701 ALLAY_DROP_ITEM_ON_BLOCK + f Ldq; ab field_38838 AVOID_VIBRATION + f Lds; ac field_44587 RECIPE_CRAFTED + f Lds; ad field_49922 CRAFTER_RECIPE_CRAFTED + f Lbz; ae field_49923 FALL_AFTER_EXPLOSION + f Lcf; b field_1184 IMPOSSIBLE + f Lda; c field_1192 PLAYER_KILLED_ENTITY + f Lda; d field_1188 ENTITY_KILLED_PLAYER + f Lbr; e field_1180 ENTER_BLOCK + f Lcg; f field_1195 INVENTORY_CHANGED + f Ldt; g field_1207 RECIPE_UNLOCKED + f Ldm; h field_1199 PLAYER_HURT_ENTITY + f Lbu; i field_1209 ENTITY_HURT_PLAYER + f Lbp; j field_1181 ENCHANTED_ITEM + f Lca; k field_1208 FILLED_BUCKET + f Lay; l field_1213 BREWED_POTION + f Lbe; m field_1189 CONSTRUCT_BEACON + f Leh; n field_1186 USED_ENDER_EYE + f Lec; o field_1182 SUMMONED_ENTITY + f Lax; p field_1190 BRED_ANIMALS + f Ldq; q field_1194 LOCATION + f Ldq; r field_1212 SLEPT_IN_BED + f Lbi; s field_1210 CURED_ZOMBIE_VILLAGER + f Leg; t field_1206 TRADE + f Lcm; u field_1185 ITEM_DURABILITY_CHANGED + f Ldb; v field_1200 LEVITATION + f Laz; w field_1183 CHANGED_DIMENSION + f Ldq; x field_1187 TICK + f Lee; y field_1201 TAME_ANIMAL + f Lcw; z field_1191 PLACED_BLOCK + m (Ljava/lang/String;Laq;)Laq; a method_767 register + m (Ljz;)Laq; a method_54933 bootstrap + m ()V + m ()V +c ao net/minecraft/class_175 net/minecraft/advancements/Criterion + f Lcom/mojang/serialization/Codec; a field_47188 CODEC + f Laq; b comp_1923 trigger + f Lar; c comp_1924 triggerInstance + f Lcom/mojang/serialization/MapCodec; d field_47189 MAP_CODEC + m ()Laq; a comp_1923 trigger + m (Laq;)Lcom/mojang/serialization/Codec; a method_54935 criterionCodec + m (Laq;Lar;)Lao; a method_54936 method_54936 + m ()Lar; b comp_1924 triggerInstance + m (Laq;Lar;)V + m ()V +c ap net/minecraft/class_178 net/minecraft/advancements/CriterionProgress + f Ljava/time/Instant; a field_1219 obtained + m ()Z a method_784 isDone + m (Lvw;)V a method_787 serializeToNetwork + m ()V b method_789 grant + m (Lvw;)Lap; b method_785 fromNetwork + m ()V c method_790 revoke + m ()Ljava/time/Instant; d method_786 getObtained + m ()V + m (Ljava/time/Instant;)V +c aq net/minecraft/class_179 net/minecraft/advancements/CriterionTrigger + m ()Lcom/mojang/serialization/Codec; a method_54937 codec + m (Lakz;)V a method_791 removePlayerListeners + m (Lakz;Laq$a;)V a method_792 addPlayerListener + m (Lar;)Lao; a method_53699 createCriterion + m (Lakz;Laq$a;)V b method_793 removePlayerListener +c aq$a net/minecraft/class_179$class_180 net/minecraft/advancements/CriterionTrigger$Listener + f Lar; a comp_1925 trigger + f Lag; b comp_1926 advancement + f Ljava/lang/String; c comp_1927 criterion + m ()Lar; a comp_1925 trigger + m (Lakz;)V a method_796 run + m ()Lag; b comp_1926 advancement + m ()Ljava/lang/String; c comp_1927 criterion + m (Lar;Lag;Ljava/lang/String;)V +c ar net/minecraft/class_184 net/minecraft/advancements/CriterionTriggerInstance + m (Lbh;)V a method_54938 validate +c as net/minecraft/class_185 net/minecraft/advancements/DisplayInfo + f Lcom/mojang/serialization/Codec; a field_47190 CODEC + f Lyx; b field_48276 STREAM_CODEC + f Lwz; c field_1240 title + f Lwz; d field_1242 description + f Lcuq; e field_1241 icon + f Ljava/util/Optional; f field_1243 background + f Lam; g field_1237 type + f Z h field_1239 showToast + f Z i field_1238 announceChat + f Z j field_1236 hidden + f F k field_1245 x + f F l field_1244 y + m ()Lwz; a method_811 getTitle + m (FF)V a method_816 setLocation + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54939 method_54939 + m (Lwk;)V a method_813 serializeToNetwork + m ()Lwz; b method_817 getDescription + m (Lwk;)Las; b method_820 fromNetwork + m ()Lcuq; c method_821 getIcon + m ()Ljava/util/Optional; d method_812 getBackground + m ()Lam; e method_815 getType + m ()F f method_818 getX + m ()F g method_819 getY + m ()Z h method_823 shouldShowToast + m ()Z i method_808 shouldAnnounceChat + m ()Z j method_824 isHidden + m (Lcuq;Lwz;Lwz;Ljava/util/Optional;Lam;ZZZ)V + m ()V +c at net/minecraft/class_194 net/minecraft/advancements/TreeNodePosition + f Lah; a field_46086 node + f Lat; b field_1258 parent + f Lat; c field_1260 previousSibling + f I d field_1261 childIndex + f Ljava/util/List; e field_1267 children + f Lat; f field_1262 ancestor + f Lat; g field_1264 thread + f I h field_1259 x + f F i field_1269 y + f F j field_1268 mod + f F k field_1266 change + f F l field_1265 shift + m ()V a method_847 firstWalk + m (F)V a method_843 thirdWalk + m (FIF)F a method_842 secondWalk + m (Lah;)V a method_852 run + m (Lah;Lat;)Lat; a method_846 addChild + m (Las;)V a method_53710 method_53710 + m (Lat;)Lat; a method_841 apportion + m (Lat;F)V a method_848 moveSubtree + m (Lat;Lat;)Lat; a method_845 getAncestor + m ()V b method_850 executeShifts + m ()Lat; c method_849 previousOrThread + m ()Lat; d method_844 nextOrThread + m ()V e method_851 finalizePosition + m (Lah;Lat;Lat;II)V +c au net/minecraft/class_9104 net/minecraft/advancements/critereon/AnyBlockInteractionTrigger + m (Laqv;Ljd;Lcuq;)V a method_56049 trigger + m (Lerr;Lau$a;)Z a method_56050 method_56050 + m ()V +c au$a net/minecraft/class_9104$class_9105 net/minecraft/advancements/critereon/AnyBlockInteractionTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_48277 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2203 location + m (Lbh;Lbg;)V a method_56051 method_56051 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56052 method_56052 + m (Lerr;)Z a method_56053 matches + m ()Ljava/util/Optional; b comp_2203 location + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c av net/minecraft/class_4708 net/minecraft/advancements/critereon/BeeNestDestroyedTrigger + m (Laqv;Ldtc;Lcuq;I)V a method_23875 trigger + m (Ldtc;Lcuq;ILav$a;)Z a method_23872 method_23872 + m ()V +c av$a net/minecraft/class_4708$class_4709 net/minecraft/advancements/critereon/BeeNestDestroyedTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47217 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2030 block + f Ljava/util/Optional; d comp_2031 item + f Ldh$d; e comp_2032 beesInside + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54940 method_54940 + m (Ldfy;Lcs$a;Ldh$d;)Lao; a method_23879 destroyedBeeNest + m (Ldtc;Lcuq;I)Z a method_23878 matches + m ()Ljava/util/Optional; b comp_2030 block + m ()Ljava/util/Optional; c comp_2031 item + m ()Ldh$d; d comp_2032 beesInside + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ldh$d;)V + m ()V +c aw net/minecraft/class_4550 net/minecraft/advancements/critereon/BlockPredicate + f Lcom/mojang/serialization/Codec; a field_45723 CODEC + f Lyx; b field_49181 STREAM_CODEC + f Ljava/util/Optional; c comp_1732 blocks + f Ljava/util/Optional; d comp_1733 properties + f Ljava/util/Optional; e comp_1734 nbt + m ()Z a method_57143 requiresNbt + m (Laqu;Ljd;)Z a method_22454 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57144 method_57144 + m (Ldcz;Ldqh;Ldk;)Z a method_57145 matchesBlockEntity + m (Ldtc;)Z a method_57146 matchesState + m (Ldtg;)Z a method_57147 matches + m ()Ljava/util/Optional; b comp_1732 blocks + m ()Ljava/util/Optional; c comp_1733 properties + m ()Ljava/util/Optional; d comp_1734 nbt + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c aw$a net/minecraft/class_4550$class_4710 net/minecraft/advancements/critereon/BlockPredicate$Builder + f Ljava/util/Optional; a field_21572 blocks + f Ljava/util/Optional; b field_21574 properties + f Ljava/util/Optional; c field_21575 nbt + m ()Law$a; a method_23880 block + m (Lawu;)Law$a; a method_29233 of + m (Leb$a;)Law$a; a method_27963 setProperties + m (Ljava/util/Collection;)Law$a; a method_37214 of + m (Lub;)Law$a; a method_35042 hasNbt + m ([Ldfy;)Law$a; a method_27962 of + m ()Law; b method_23882 build + m ()V +c ax net/minecraft/class_196 net/minecraft/advancements/critereon/BredAnimalsTrigger + m (Laqv;Lcfe;Lcfe;Lbsl;)V a method_855 trigger + m (Lerr;Lerr;Lerr;Lax$a;)Z a method_22455 method_22455 + m ()V +c ax$a net/minecraft/class_196$class_198 net/minecraft/advancements/critereon/BredAnimalsTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47228 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2033 parent + f Ljava/util/Optional; d comp_2034 partner + f Ljava/util/Optional; e comp_2035 child + m (Lbv$a;)Lao; a method_861 bredAnimals + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54952 method_54952 + m (Lerr;Lerr;Lerr;)Z a method_862 matches + m (Ljava/util/Optional;Lerr;)Z a method_53075 matches + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)Lao; a method_29918 bredAnimals + m ()Lao; b method_860 bredAnimals + m ()Ljava/util/Optional; c comp_2033 parent + m ()Ljava/util/Optional; d comp_2034 partner + m ()Ljava/util/Optional; e comp_2035 child + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ay net/minecraft/class_1996 net/minecraft/advancements/critereon/BrewedPotionTrigger + m (Laqv;Ljm;)V a method_8784 trigger + m (Ljm;Lay$a;)Z a method_22456 method_22456 + m ()V +c ay$a net/minecraft/class_1996$class_1998 net/minecraft/advancements/critereon/BrewedPotionTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47229 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2036 potion + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54953 method_54953 + m (Ljm;)Z a method_8790 matches + m ()Lao; b method_8791 brewedPotion + m ()Ljava/util/Optional; c comp_2036 potion + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c az net/minecraft/class_1999 net/minecraft/advancements/critereon/ChangeDimensionTrigger + m (Lakq;Lakq;Laz$a;)Z a method_22457 method_22457 + m (Laqv;Lakq;Lakq;)V a method_8794 trigger + m ()V +c az$a net/minecraft/class_1999$class_2001 net/minecraft/advancements/critereon/ChangeDimensionTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47230 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2037 from + f Ljava/util/Optional; d comp_2038 to + m (Lakq;)Lao; a method_8799 changedDimensionTo + m (Lakq;Lakq;)Lao; a method_35068 changedDimension + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54954 method_54954 + m ()Lao; b method_35070 changedDimension + m (Lakq;)Lao; b method_35069 changedDimensionFrom + m (Lakq;Lakq;)Z b method_8800 matches + m ()Ljava/util/Optional; c comp_2037 from + m ()Ljava/util/Optional; d comp_2038 to + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ba net/minecraft/class_2002 net/minecraft/advancements/critereon/ChanneledLightningTrigger + m (Laqv;Lbsr;)Lerr; a method_27791 method_27791 + m (Laqv;Ljava/util/Collection;)V a method_8803 trigger + m (Ljava/util/List;Lba$a;)Z a method_22458 method_22458 + m ()V +c ba$a net/minecraft/class_2002$class_2004 net/minecraft/advancements/critereon/ChanneledLightningTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47231 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/List; c comp_2039 victims + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54955 method_54955 + m (Ljava/util/Collection;)Z a method_8808 matches + m ([Lbv$a;)Lao; a method_8809 channeledLightning + m ()Ljava/util/List; b comp_2039 victims + m (Ljava/util/Optional;Ljava/util/List;)V + m ()V +c bb net/minecraft/class_9639 net/minecraft/advancements/critereon/CollectionContentsPredicate + m ()Ljava/util/List; a method_59605 unpack + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_59606 codec + m (Ljava/util/List;)Lbb; a method_59607 of + m ([Ljava/util/function/Predicate;)Lbb; a method_59608 of +c bb$a net/minecraft/class_9639$class_9640 net/minecraft/advancements/critereon/CollectionContentsPredicate$Multiple + f Ljava/util/List; a comp_2611 tests + m (Ljava/lang/Iterable;)Z a method_59609 test + m (Ljava/lang/Object;Ljava/util/function/Predicate;)Z a method_59610 method_59610 + m ()Ljava/util/List; b comp_2611 tests + m (Ljava/util/List;)V +c bb$b net/minecraft/class_9639$class_9641 net/minecraft/advancements/critereon/CollectionContentsPredicate$Single + f Ljava/util/function/Predicate; a comp_2612 test + m (Ljava/lang/Iterable;)Z a method_59611 test + m ()Ljava/util/function/Predicate; b comp_2612 test + m (Ljava/util/function/Predicate;)V +c bb$c net/minecraft/class_9639$class_9642 net/minecraft/advancements/critereon/CollectionContentsPredicate$Zero + m (Ljava/lang/Iterable;)Z a method_59612 test + m ()V +c bc net/minecraft/class_9643 net/minecraft/advancements/critereon/CollectionCountsPredicate + m ()Ljava/util/List; a method_59613 unpack + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_59614 codec + m (Ljava/util/List;)Lbc; a method_59615 of + m ([Lbc$a;)Lbc; a method_59616 of +c bc$a net/minecraft/class_9643$class_9644 net/minecraft/advancements/critereon/CollectionCountsPredicate$Entry + f Ljava/util/function/Predicate; a comp_2613 test + f Ldh$d; b comp_2614 count + m ()Ljava/util/function/Predicate; a comp_2613 test + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_59617 codec + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59618 method_59618 + m (Ljava/lang/Iterable;)Z a method_59619 test + m ()Ldh$d; b comp_2614 count + m (Ljava/util/function/Predicate;Ldh$d;)V +c bc$b net/minecraft/class_9643$class_9645 net/minecraft/advancements/critereon/CollectionCountsPredicate$Multiple + f Ljava/util/List; a comp_2615 entries + m (Ljava/lang/Iterable;)Z a method_59620 test + m ()Ljava/util/List; b comp_2615 entries + m (Ljava/util/List;)V +c bc$c net/minecraft/class_9643$class_9646 net/minecraft/advancements/critereon/CollectionCountsPredicate$Single + f Lbc$a; a comp_2616 entry + m (Ljava/lang/Iterable;)Z a method_59621 test + m ()Lbc$a; b comp_2616 entry + m (Lbc$a;)V +c bc$d net/minecraft/class_9643$class_9647 net/minecraft/advancements/critereon/CollectionCountsPredicate$Zero + m (Ljava/lang/Iterable;)Z a method_59622 test + m ()V +c bd net/minecraft/class_9648 net/minecraft/advancements/critereon/CollectionPredicate + f Ljava/util/Optional; a comp_2617 contains + f Ljava/util/Optional; b comp_2618 counts + f Ljava/util/Optional; c comp_2619 size + m ()Ljava/util/Optional; a comp_2617 contains + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_59623 codec + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59624 method_59624 + m (Ljava/lang/Iterable;)Z a method_59625 test + m ()Ljava/util/Optional; b comp_2618 counts + m ()Ljava/util/Optional; c comp_2619 size + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V +c be net/minecraft/class_2006 net/minecraft/advancements/critereon/ConstructBeaconTrigger + m (ILbe$a;)Z a method_22459 method_22459 + m (Laqv;I)V a method_8812 trigger + m ()V +c be$a net/minecraft/class_2006$class_2008 net/minecraft/advancements/critereon/ConstructBeaconTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47232 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ldh$d; c comp_2040 level + m (I)Z a method_8817 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54956 method_54956 + m (Ldh$d;)Lao; a method_8818 constructedBeacon + m ()Lao; b method_35110 constructedBeacon + m ()Ldh$d; c comp_2040 level + m (Ljava/util/Optional;Ldh$d;)V + m ()V +c bf net/minecraft/class_2010 net/minecraft/advancements/critereon/ConsumeItemTrigger + m (Laqv;Lcuq;)V a method_8821 trigger + m (Lcuq;Lbf$a;)Z a method_22460 method_22460 + m ()V +c bf$a net/minecraft/class_2010$class_2012 net/minecraft/advancements/critereon/ConsumeItemTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47233 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2041 item + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54957 method_54957 + m (Lcs$a;)Lao; a method_35112 usedItem + m (Lcuq;)Z a method_8826 matches + m (Ldcv;)Lao; a method_8828 usedItem + m ()Lao; b method_8827 usedItem + m ()Ljava/util/Optional; c comp_2041 item + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bg net/minecraft/class_5258 net/minecraft/advancements/critereon/ContextAwarePredicate + f Lcom/mojang/serialization/Codec; a field_47234 CODEC + f Ljava/util/List; b field_24389 conditions + f Ljava/util/function/Predicate; c field_24390 compositePredicates + m (Lbg;)Ljava/util/List; a method_54958 method_54958 + m (Lerr;)Z a method_27806 matches + m (Lerx;)V a method_54959 validate + m ([Levc;)Lbg; a method_27973 create + m (Ljava/util/List;)V + m ()V +c bh net/minecraft/class_8944 net/minecraft/advancements/critereon/CriterionValidator + f Layu; a field_47235 reporter + f Ljn$a; b field_47236 lootData + m (Lbg;Leul;Ljava/lang/String;)V a method_54961 validate + m (Lbg;Ljava/lang/String;)V a method_54962 validateEntity + m (Ljava/lang/String;Lbg;)V a method_54963 method_54963 + m (Ljava/util/List;Leul;Ljava/lang/String;)V a method_54964 validate + m (Ljava/util/List;Ljava/lang/String;)V a method_54965 validateEntities + m (Ljava/util/Optional;Ljava/lang/String;)V a method_54966 validateEntity + m (Layu;Ljn$a;)V +c bi net/minecraft/class_2014 net/minecraft/advancements/critereon/CuredZombieVillagerTrigger + m (Laqv;Lckw;Lcmk;)V a method_8831 trigger + m (Lerr;Lerr;Lbi$a;)Z a method_22461 method_22461 + m ()V +c bi$a net/minecraft/class_2014$class_2016 net/minecraft/advancements/critereon/CuredZombieVillagerTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47237 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2042 zombie + f Ljava/util/Optional; d comp_2043 villager + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54972 method_54972 + m (Lerr;Lerr;)Z a method_8837 matches + m ()Lao; b method_8836 curedZombieVillager + m ()Ljava/util/Optional; c comp_2042 zombie + m ()Ljava/util/Optional; d comp_2043 villager + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bj net/minecraft/class_2019 net/minecraft/advancements/critereon/DamagePredicate + f Lcom/mojang/serialization/Codec; a field_47238 CODEC + f Ldh$c; b comp_1735 dealtDamage + f Ldh$c; c comp_1736 takenDamage + f Ljava/util/Optional; d comp_1737 sourceEntity + f Ljava/util/Optional; e comp_1738 blocked + f Ljava/util/Optional; f comp_1739 type + m ()Ldh$c; a comp_1735 dealtDamage + m (Laqv;Lbrk;FFZ)Z a method_8838 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54973 method_54973 + m ()Ldh$c; b comp_1736 takenDamage + m ()Ljava/util/Optional; c comp_1737 sourceEntity + m ()Ljava/util/Optional; d comp_1738 blocked + m ()Ljava/util/Optional; e comp_1739 type + m (Ldh$c;Ldh$c;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bj$a net/minecraft/class_2019$class_2020 net/minecraft/advancements/critereon/DamagePredicate$Builder + f Ldh$c; a field_9530 dealtDamage + f Ldh$c; b field_9527 takenDamage + f Ljava/util/Optional; c field_9528 sourceEntity + f Ljava/util/Optional; d field_9526 blocked + f Ljava/util/Optional; e field_9529 type + m ()Lbj$a; a method_8844 damageInstance + m (Lbk$a;)Lbj$a; a method_8842 type + m (Lbk;)Lbj$a; a method_35116 type + m (Lbv;)Lbj$a; a method_35117 sourceEntity + m (Ldh$c;)Lbj$a; a method_35118 dealtDamage + m (Ljava/lang/Boolean;)Lbj$a; a method_8841 blocked + m ()Lbj; b method_8843 build + m (Ldh$c;)Lbj$a; b method_35119 takenDamage + m ()V +c bk net/minecraft/class_2022 net/minecraft/advancements/critereon/DamageSourcePredicate + f Lcom/mojang/serialization/Codec; a field_45727 CODEC + f Ljava/util/List; b comp_1740 tags + f Ljava/util/Optional; c comp_1741 directEntity + f Ljava/util/Optional; d comp_1742 sourceEntity + f Ljava/util/Optional; e comp_2793 isDirect + m ()Ljava/util/List; a comp_1740 tags + m (Laqu;Lexc;Lbrk;)Z a method_8845 matches + m (Laqv;Lbrk;)Z a method_8847 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53116 method_53116 + m ()Ljava/util/Optional; b comp_1741 directEntity + m ()Ljava/util/Optional; c comp_1742 sourceEntity + m ()Ljava/util/Optional; d comp_2793 isDirect + m (Ljava/util/List;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bk$a net/minecraft/class_2022$class_2023 net/minecraft/advancements/critereon/DamageSourcePredicate$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_42273 tags + f Ljava/util/Optional; b field_9544 directEntity + f Ljava/util/Optional; c field_9545 sourceEntity + f Ljava/util/Optional; d field_51883 isDirect + m ()Lbk$a; a method_8855 damageType + m (Lbv$a;)Lbk$a; a method_8854 direct + m (Led;)Lbk$a; a method_48785 tag + m (Z)Lbk$a; a method_60488 isDirect + m ()Lbk; b method_8851 build + m (Lbv$a;)Lbk$a; b method_35131 source + m ()V +c bl net/minecraft/class_9107 net/minecraft/advancements/critereon/DefaultBlockInteractionTrigger + m (Laqv;Ljd;)V a method_56066 trigger + m (Lerr;Lbl$a;)Z a method_56067 method_56067 + m ()V +c bl$a net/minecraft/class_9107$class_9108 net/minecraft/advancements/critereon/DefaultBlockInteractionTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_48317 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2204 location + m (Lbh;Lbg;)V a method_56068 method_56068 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56069 method_56069 + m (Lerr;)Z a method_56070 matches + m ()Ljava/util/Optional; b comp_2204 location + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bm net/minecraft/class_2025 net/minecraft/advancements/critereon/DistancePredicate + f Lcom/mojang/serialization/Codec; a field_45728 CODEC + f Ldh$c; b comp_1743 x + f Ldh$c; c comp_1744 y + f Ldh$c; d comp_1745 z + f Ldh$c; e comp_1746 horizontal + f Ldh$c; f comp_1747 absolute + m ()Ldh$c; a comp_1743 x + m (DDDDDD)Z a method_8859 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53118 method_53118 + m (Ldh$c;)Lbm; a method_8860 horizontal + m ()Ldh$c; b comp_1744 y + m (Ldh$c;)Lbm; b method_8856 vertical + m ()Ldh$c; c comp_1745 z + m (Ldh$c;)Lbm; c method_37223 absolute + m ()Ldh$c; d comp_1746 horizontal + m ()Ldh$c; e comp_1747 absolute + m (Ldh$c;Ldh$c;Ldh$c;Ldh$c;Ldh$c;)V + m ()V +c bn net/minecraft/class_2108 net/minecraft/advancements/critereon/DistanceTrigger + m (Laqv;Lexc;)V a method_9080 trigger + m (Laqv;Lexc;Lexc;Lbn$a;)Z a method_22486 method_22486 + m ()V +c bn$a net/minecraft/class_2108$class_2110 net/minecraft/advancements/critereon/DistanceTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47239 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2044 startPosition + f Ljava/util/Optional; d comp_2045 distance + m (Laqu;Lexc;Lexc;)Z a method_9086 matches + m (Lbm;)Lao; a method_9085 travelledThroughNether + m (Lbv$a;Lbm;)Lao; a method_38850 rideEntityInLava + m (Lbv$a;Lbm;Ldf$a;)Lao; a method_38851 fallFromHeight + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54976 method_54976 + m ()Ljava/util/Optional; b comp_2044 startPosition + m ()Ljava/util/Optional; c comp_2045 distance + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bo net/minecraft/class_2027 net/minecraft/advancements/critereon/EffectsChangedTrigger + m (Laqv;Lbsr;)V a method_8863 trigger + m (Laqv;Lerr;Lbo$a;)Z a method_22462 method_22462 + m ()V +c bo$a net/minecraft/class_2027$class_2029 net/minecraft/advancements/critereon/EffectsChangedTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47240 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2046 effects + f Ljava/util/Optional; d comp_2047 source + m (Laqv;Lerr;)Z a method_8868 matches + m (Lbv$a;)Lao; a method_37224 gotEffectsFrom + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54977 method_54977 + m (Ldi$a;)Lao; a method_8869 hasEffects + m ()Ljava/util/Optional; b comp_2046 effects + m ()Ljava/util/Optional; c comp_2047 source + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bp net/minecraft/class_2030 net/minecraft/advancements/critereon/EnchantedItemTrigger + m (Laqv;Lcuq;I)V a method_8870 trigger + m (Lcuq;ILbp$a;)Z a method_22463 method_22463 + m ()V +c bp$a net/minecraft/class_2030$class_2032 net/minecraft/advancements/critereon/EnchantedItemTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47241 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2048 item + f Ldh$d; d comp_2049 levels + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54978 method_54978 + m (Lcuq;I)Z a method_8878 matches + m ()Lao; b method_8877 enchantedItem + m ()Ljava/util/Optional; c comp_2048 item + m ()Ldh$d; d comp_2049 levels + m (Ljava/util/Optional;Ljava/util/Optional;Ldh$d;)V + m ()V +c bq net/minecraft/class_2035 net/minecraft/advancements/critereon/EnchantmentPredicate + f Lcom/mojang/serialization/Codec; a field_45741 CODEC + f Ljava/util/Optional; b comp_2665 enchantments + f Ldh$d; c comp_1749 level + m ()Ljava/util/Optional; a comp_2665 enchantments + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53126 method_53126 + m (Ldai;)Z a method_8880 containedIn + m (Ldai;Ljm;)Z a method_59916 matchesEnchantment + m ()Ldh$d; b comp_1749 level + m (Ljm;Ldh$d;)V + m (Ljq;Ldh$d;)V + m (Ljava/util/Optional;Ldh$d;)V + m ()V +c br net/minecraft/class_2037 net/minecraft/advancements/critereon/EnterBlockTrigger + m (Laqv;Ldtc;)V a method_8885 trigger + m (Ldtc;Lbr$a;)Z a method_22465 method_22465 + m ()V +c br$a net/minecraft/class_2037$class_2039 net/minecraft/advancements/critereon/EnterBlockTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47242 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2050 block + f Ljava/util/Optional; d comp_2051 state + m (Lbr$a;)Lcom/mojang/serialization/DataResult; a method_54979 validate + m (Lbr$a;Ljm;)Ljava/util/Optional; a method_54980 method_54980 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54981 method_54981 + m (Ldfy;)Lao; a method_8890 entersBlock + m (Ldtc;)Z a method_8891 matches + m (Ljm;Leb;)Ljava/util/Optional; a method_54982 method_54982 + m (Ljm;Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_54983 method_54983 + m ()Ljava/util/Optional; b comp_2050 block + m (Lbr$a;)Lcom/mojang/serialization/DataResult; b method_54984 method_54984 + m (Ljm;Ljava/lang/String;)Ljava/lang/String; b method_54985 method_54985 + m ()Ljava/util/Optional; c comp_2051 state + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bs net/minecraft/class_3735 net/minecraft/advancements/critereon/EntityEquipmentPredicate + f Lcom/mojang/serialization/Codec; a field_45744 CODEC + f Ljava/util/Optional; b comp_1750 head + f Ljava/util/Optional; c comp_1751 chest + f Ljava/util/Optional; d comp_1752 legs + f Ljava/util/Optional; e comp_1753 feet + f Ljava/util/Optional; f comp_2620 body + f Ljava/util/Optional; g comp_1754 mainhand + f Ljava/util/Optional; h comp_1755 offhand + m ()Ljava/util/Optional; a comp_1750 head + m (Lbsr;)Z a method_16226 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53129 method_53129 + m (Ljn;)Lbs; a method_58057 captainPredicate + m ()Ljava/util/Optional; b comp_1751 chest + m ()Ljava/util/Optional; c comp_1752 legs + m ()Ljava/util/Optional; d comp_1753 feet + m ()Ljava/util/Optional; e comp_2620 body + m ()Ljava/util/Optional; f comp_1754 mainhand + m ()Ljava/util/Optional; g comp_1755 offhand + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bs$a net/minecraft/class_3735$class_5278 net/minecraft/advancements/critereon/EntityEquipmentPredicate$Builder + f Ljava/util/Optional; a field_24482 head + f Ljava/util/Optional; b field_24483 chest + f Ljava/util/Optional; c field_24484 legs + f Ljava/util/Optional; d field_24485 feet + f Ljava/util/Optional; e field_51371 body + f Ljava/util/Optional; f field_24486 mainhand + f Ljava/util/Optional; g field_24487 offhand + m ()Lbs$a; a method_27965 equipment + m (Lcs$a;)Lbs$a; a method_27966 head + m ()Lbs; b method_27967 build + m (Lcs$a;)Lbs$a; b method_27968 chest + m (Lcs$a;)Lbs$a; c method_27969 legs + m (Lcs$a;)Lbs$a; d method_27970 feet + m (Lcs$a;)Lbs$a; e method_59651 body + m (Lcs$a;)Lbs$a; f method_35195 mainhand + m (Lcs$a;)Lbs$a; g method_35196 offhand + m ()V +c bt net/minecraft/class_2040 net/minecraft/advancements/critereon/EntityFlagsPredicate + f Lcom/mojang/serialization/Codec; a field_45745 CODEC + f Ljava/util/Optional; b comp_2666 isOnGround + f Ljava/util/Optional; c comp_1756 isOnFire + f Ljava/util/Optional; d comp_1757 isCrouching + f Ljava/util/Optional; e comp_1758 isSprinting + f Ljava/util/Optional; f comp_1759 isSwimming + f Ljava/util/Optional; g comp_2667 isFlying + f Ljava/util/Optional; h comp_1760 isBaby + m ()Ljava/util/Optional; a comp_2666 isOnGround + m (Lbsr;)Z a method_8892 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53131 method_53131 + m ()Ljava/util/Optional; b comp_1756 isOnFire + m ()Ljava/util/Optional; c comp_1757 isCrouching + m ()Ljava/util/Optional; d comp_1758 isSprinting + m ()Ljava/util/Optional; e comp_1759 isSwimming + m ()Ljava/util/Optional; f comp_2667 isFlying + m ()Ljava/util/Optional; g comp_1760 isBaby + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bt$a net/minecraft/class_2040$class_2041 net/minecraft/advancements/critereon/EntityFlagsPredicate$Builder + f Ljava/util/Optional; a field_51567 isOnGround + f Ljava/util/Optional; b field_9587 isOnFire + f Ljava/util/Optional; c field_9586 isCrouching + f Ljava/util/Optional; d field_9588 isSprinting + f Ljava/util/Optional; e field_9585 isSwimming + f Ljava/util/Optional; f field_51568 isFlying + f Ljava/util/Optional; g field_9584 isBaby + m ()Lbt$a; a method_8897 flags + m (Ljava/lang/Boolean;)Lbt$a; a method_59918 setOnGround + m ()Lbt; b method_8899 build + m (Ljava/lang/Boolean;)Lbt$a; b method_8898 setOnFire + m (Ljava/lang/Boolean;)Lbt$a; c method_35203 setCrouching + m (Ljava/lang/Boolean;)Lbt$a; d method_35204 setSprinting + m (Ljava/lang/Boolean;)Lbt$a; e method_35205 setSwimming + m (Ljava/lang/Boolean;)Lbt$a; f method_59919 setIsFlying + m (Ljava/lang/Boolean;)Lbt$a; g method_29935 setIsBaby + m ()V +c bu net/minecraft/class_2044 net/minecraft/advancements/critereon/EntityHurtPlayerTrigger + m (Laqv;Lbrk;FFZ)V a method_22467 trigger + m (Laqv;Lbrk;FFZLbu$a;)Z a method_22468 method_22468 + m ()V +c bu$a net/minecraft/class_2044$class_2046 net/minecraft/advancements/critereon/EntityHurtPlayerTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47249 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2052 damage + m (Laqv;Lbrk;FFZ)Z a method_8907 matches + m (Lbj$a;)Lao; a method_8908 entityHurtPlayer + m (Lbj;)Lao; a method_35209 entityHurtPlayer + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54988 method_54988 + m ()Lao; b method_35210 entityHurtPlayer + m ()Ljava/util/Optional; c comp_2052 damage + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bv net/minecraft/class_2048 net/minecraft/advancements/critereon/EntityPredicate + f Lcom/mojang/serialization/Codec; a field_45746 CODEC + f Lcom/mojang/serialization/Codec; b field_47250 ADVANCEMENT_CODEC + f Ljava/util/Optional; c comp_1761 entityType + f Ljava/util/Optional; d comp_1762 distanceToPlayer + f Ljava/util/Optional; e comp_2668 movement + f Lbv$b; f comp_1763 location + f Ljava/util/Optional; g comp_1765 effects + f Ljava/util/Optional; h comp_1766 nbt + f Ljava/util/Optional; i comp_1767 flags + f Ljava/util/Optional; j comp_1768 equipment + f Ljava/util/Optional; k comp_1769 subPredicate + f Ljava/util/Optional; l comp_2669 periodicTick + f Ljava/util/Optional; m comp_1770 vehicle + f Ljava/util/Optional; n comp_1771 passenger + f Ljava/util/Optional; o comp_1772 targetedEntity + f Ljava/util/Optional; p comp_1773 team + f Ljava/util/Optional; q comp_2446 slots + m ()Ljava/util/Optional; a comp_1761 entityType + m (Laqu;Lexc;Lbsr;)Z a method_8909 matches + m (Laqv;Lbsr;)Z a method_8914 matches + m (Lbv$a;)Lbg; a method_53134 wrap + m (Lbv;)Lbg; a method_51704 wrap + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_53135 method_53135 + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53136 method_53136 + m (Ljava/util/Optional;)Ljava/util/Optional; a method_53137 wrap + m ([Lbv$a;)Ljava/util/List; a method_53139 wrap + m ()Ljava/util/Optional; b comp_1762 distanceToPlayer + m (Laqu;Lexc;Lbsr;)Z b method_37227 method_37227 + m (Laqv;Lbsr;)Lerr; b method_27802 createContext + m ()Ljava/util/Optional; c comp_2668 movement + m ()Lbv$b; d comp_1763 location + m ()Ljava/util/Optional; e comp_1765 effects + m ()Ljava/util/Optional; f comp_1766 nbt + m ()Ljava/util/Optional; g comp_1767 flags + m ()Ljava/util/Optional; h comp_1768 equipment + m ()Ljava/util/Optional; i comp_1769 subPredicate + m ()Ljava/util/Optional; j comp_2669 periodicTick + m ()Ljava/util/Optional; k comp_1770 vehicle + m ()Ljava/util/Optional; l comp_1771 passenger + m ()Ljava/util/Optional; m comp_1772 targetedEntity + m ()Ljava/util/Optional; n comp_1773 team + m ()Ljava/util/Optional; o comp_2446 slots + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Lbv$b;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bv$a net/minecraft/class_2048$class_2049 net/minecraft/advancements/critereon/EntityPredicate$Builder + f Ljava/util/Optional; a field_9607 entityType + f Ljava/util/Optional; b field_9602 distanceToPlayer + f Ljava/util/Optional; c field_51572 fallDistance + f Ljava/util/Optional; d field_51573 movement + f Ljava/util/Optional; e field_9604 location + f Ljava/util/Optional; f field_51937 located + f Ljava/util/Optional; g field_33915 steppingOnLocation + f Ljava/util/Optional; h field_51938 movementAffectedBy + f Ljava/util/Optional; i field_9605 effects + f Ljava/util/Optional; j field_9603 nbt + f Ljava/util/Optional; k field_9606 flags + f Ljava/util/Optional; l field_16491 equipment + f Ljava/util/Optional; m field_38722 subPredicate + f Ljava/util/Optional; n field_51574 periodicTick + f Ljava/util/Optional; o field_24490 vehicle + f Ljava/util/Optional; p field_33917 passenger + f Ljava/util/Optional; q field_24491 targetedEntity + f Ljava/util/Optional; r field_20700 team + f Ljava/util/Optional; s field_49721 slots + m ()Lbv$a; a method_8916 entity + m (I)Lbv$a; a method_59929 periodicTick + m (Lawu;)Lbv$a; a method_8922 of + m (Lbm;)Lbv$a; a method_8924 distance + m (Lbs$a;)Lbv$a; a method_53141 equipment + m (Lbs;)Lbv$a; a method_16227 equipment + m (Lbsx;)Lbv$a; a method_8921 of + m (Lbt$a;)Lbv$a; a method_8919 flags + m (Lbv$a;)Lbv$a; a method_27971 vehicle + m (Lbw;)Lbv$a; a method_43094 subPredicate + m (Lby;)Lbv$a; a method_8917 entityType + m (Ldf$a;)Lbv$a; a method_8918 located + m (Ldi$a;)Lbv$a; a method_8923 effects + m (Ldj;)Lbv$a; a method_59930 moving + m (Ldk;)Lbv$a; a method_8915 nbt + m (Ldz;)Lbv$a; a method_58058 slots + m (Ljava/lang/String;)Lbv$a; a method_22470 team + m ()Lbv; b method_8920 build + m (Lbv$a;)Lbv$a; b method_37229 passenger + m (Ldf$a;)Lbv$a; b method_37230 steppingOn + m (Lbv$a;)Lbv$a; c method_27972 targetedEntity + m (Ldf$a;)Lbv$a; c method_60611 movementAffectedBy + m ()V +c bv$b net/minecraft/class_2048$class_9777 net/minecraft/advancements/critereon/EntityPredicate$LocationWrapper + f Lcom/mojang/serialization/MapCodec; a field_51939 CODEC + f Ljava/util/Optional; b comp_2813 located + f Ljava/util/Optional; c comp_2814 steppingOn + f Ljava/util/Optional; d comp_2815 affectsMovement + m ()Ljava/util/Optional; a comp_2813 located + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60612 method_60612 + m ()Ljava/util/Optional; b comp_2814 steppingOn + m ()Ljava/util/Optional; c comp_2815 affectsMovement + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c bw net/minecraft/class_7376 net/minecraft/advancements/critereon/EntitySubPredicate + f Lcom/mojang/serialization/Codec; a field_45747 CODEC + m ()Lcom/mojang/serialization/MapCodec; a method_58152 codec + m (Lbsr;Laqu;Lexc;)Z a method_22497 matches + m ()V +c bx net/minecraft/class_7378 net/minecraft/advancements/critereon/EntitySubPredicates + f Lcom/mojang/serialization/MapCodec; a field_38725 LIGHTNING + f Lcom/mojang/serialization/MapCodec; b field_38726 FISHING_HOOK + f Lcom/mojang/serialization/MapCodec; c field_38727 PLAYER + f Lcom/mojang/serialization/MapCodec; d field_38728 SLIME + f Lcom/mojang/serialization/MapCodec; e field_50135 RAIDER + f Lbx$b; f field_41534 AXOLOTL + f Lbx$b; g field_41535 BOAT + f Lbx$b; h field_41536 FOX + f Lbx$b; i field_41537 MOOSHROOM + f Lbx$b; j field_41539 RABBIT + f Lbx$b; k field_41540 HORSE + f Lbx$b; l field_41541 LLAMA + f Lbx$b; m field_41542 VILLAGER + f Lbx$b; n field_41543 PARROT + f Lbx$b; o field_41544 TROPICAL_FISH + f Lbx$a; p field_41538 PAINTING + f Lbx$a; q field_38729 CAT + f Lbx$a; r field_38730 FROG + f Lbx$a; s field_49973 WOLF + m (Lbsr;)Ljava/util/Optional; a method_58351 method_58351 + m (Ljava/lang/String;Lbx$a;)Lbx$a; a method_58352 register + m (Ljava/lang/String;Lbx$b;)Lbx$b; a method_58155 register + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_58156 register + m (Ljm;)Lbw; a method_58153 catVariant + m (Ljq;)Lbw; a method_59667 wolfVariant + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_58157 bootstrap + m (Lbsr;)Ljava/util/Optional; b method_47829 method_47829 + m (Ljm;)Lbw; b method_58154 frogVariant + m (Lbsr;)Ljava/util/Optional; c method_47830 method_47830 + m (Lbsr;)Ljava/util/Optional; d method_47831 method_47831 + m (Lbsr;)Ljava/util/Optional; e method_47832 method_47832 + m (Lbsr;)Ljava/util/Optional; f method_47833 method_47833 + m (Lbsr;)Ljava/util/Optional; g method_47834 method_47834 + m (Lbsr;)Ljava/util/Optional; h method_47835 method_47835 + m (Lbsr;)Ljava/util/Optional; i method_47836 method_47836 + m (Lbsr;)Ljava/util/Optional; j method_47837 method_47837 + m (Lbsr;)Ljava/util/Optional; k method_47838 method_47838 + m (Lbsr;)Ljava/util/Optional; l method_47839 method_47839 + m (Lbsr;)Ljava/util/Optional; m method_43100 method_43100 + m (Lbsr;)Ljava/util/Optional; n method_43102 method_43102 + m ()V + m ()V +c bx$a net/minecraft/class_7378$class_9419 net/minecraft/advancements/critereon/EntitySubPredicates$EntityHolderVariantPredicateType + f Lcom/mojang/serialization/MapCodec; a field_49974 codec + f Ljava/util/function/Function; b field_49975 getter + m (Lakq;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58353 method_58353 + m (Lakq;Ljava/util/function/Function;)Lbx$a; a method_58354 create + m (Lbx$a$a;)Ljq; a method_58355 method_58355 + m (Ljq;)Lbw; a method_58356 createPredicate + m (Ljq;)Lbx$a$a; b method_58357 method_58357 + m (Lakq;Ljava/util/function/Function;)V +c bx$a$a net/minecraft/class_7378$class_9419$class_9420 net/minecraft/advancements/critereon/EntitySubPredicates$EntityHolderVariantPredicateType$Instance + f Lbx$a; b field_49976 field_49976 + f Ljq; c field_49977 variants + m (Lbx$a;Ljq;)V +c bx$b net/minecraft/class_7378$class_7380 net/minecraft/advancements/critereon/EntitySubPredicates$EntityVariantPredicateType + f Lcom/mojang/serialization/MapCodec; a field_49794 codec + f Ljava/util/function/Function; b field_38741 getter + m (Lbx$b$a;)Ljava/lang/Object; a method_58158 method_58158 + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43115 method_43115 + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;)Lbx$b; a method_47840 create + m (Ljava/lang/Object;)Lbw; a method_43117 createPredicate + m (Ljz;Ljava/util/function/Function;)Lbx$b; a method_43116 create + m (Ljava/lang/Object;)Lbx$b$a; b method_58159 method_58159 + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;)V +c bx$b$a net/minecraft/class_7378$class_7380$class_9353 net/minecraft/advancements/critereon/EntitySubPredicates$EntityVariantPredicateType$Instance + f Lbx$b; b field_49795 field_49795 + f Ljava/lang/Object; c field_49796 variant + m (Lbx$b;Ljava/lang/Object;)V +c by net/minecraft/class_2050 net/minecraft/advancements/critereon/EntityTypePredicate + f Lcom/mojang/serialization/Codec; a field_45749 CODEC + f Ljq; b comp_1775 types + m ()Ljq; a comp_1775 types + m (Lawu;)Lby; a method_8926 of + m (Lbsx;)Lby; a method_8929 of + m (Lbsx;)Z b method_8925 matches + m (Ljq;)V + m ()V +c bz net/minecraft/class_9421 net/minecraft/advancements/critereon/FallAfterExplosionTrigger + m (Laqv;Lexc;Lbsr;)V a method_58358 trigger + m (Laqv;Lexc;Lexc;Lerr;Lbz$a;)Z a method_58359 method_58359 + m ()V +c bz$a net/minecraft/class_9421$class_9422 net/minecraft/advancements/critereon/FallAfterExplosionTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_49978 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2488 startPosition + f Ljava/util/Optional; d comp_2489 distance + f Ljava/util/Optional; e comp_2490 cause + m (Laqu;Lexc;Lexc;Lerr;)Z a method_58360 matches + m (Lbm;Lbv$a;)Lao; a method_58361 fallAfterExplosion + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58362 method_58362 + m ()Ljava/util/Optional; b comp_2488 startPosition + m ()Ljava/util/Optional; c comp_2489 distance + m ()Ljava/util/Optional; d comp_2490 cause + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ca net/minecraft/class_2054 net/minecraft/advancements/critereon/FilledBucketTrigger + m (Laqv;Lcuq;)V a method_8932 trigger + m (Lcuq;Lca$a;)Z a method_22471 method_22471 + m ()V +c ca$a net/minecraft/class_2054$class_2056 net/minecraft/advancements/critereon/FilledBucketTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47251 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2053 item + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54991 method_54991 + m (Lcs$a;)Lao; a method_8937 filledBucket + m (Lcuq;)Z a method_8938 matches + m ()Ljava/util/Optional; b comp_2053 item + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c cb net/minecraft/class_4965 net/minecraft/advancements/critereon/FishingHookPredicate + f Lcb; b field_23137 ANY + f Lcom/mojang/serialization/MapCodec; c field_45750 CODEC + f Ljava/util/Optional; d comp_1779 inOpenWater + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53150 method_53150 + m (Z)Lcb; a method_26095 inOpenWater + m ()Ljava/util/Optional; b comp_1779 inOpenWater + m (Ljava/util/Optional;)V + m ()V +c cc net/minecraft/class_2058 net/minecraft/advancements/critereon/FishingRodHookedTrigger + m (Laqv;Lcuq;Lcnl;Ljava/util/Collection;)V a method_8939 trigger + m (Lcuq;Lerr;Ljava/util/Collection;Lcc$a;)Z a method_22472 method_22472 + m ()V +c cc$a net/minecraft/class_2058$class_2060 net/minecraft/advancements/critereon/FishingRodHookedTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47259 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2054 rod + f Ljava/util/Optional; d comp_2055 entity + f Ljava/util/Optional; e comp_2056 item + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54992 method_54992 + m (Lcuq;Lerr;Ljava/util/Collection;)Z a method_27810 matches + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)Lao; a method_8947 fishedItem + m ()Ljava/util/Optional; b comp_2054 rod + m ()Ljava/util/Optional; c comp_2055 entity + m ()Ljava/util/Optional; d comp_2056 item + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c cd net/minecraft/class_4551 net/minecraft/advancements/critereon/FluidPredicate + f Lcom/mojang/serialization/Codec; a field_45753 CODEC + f Ljava/util/Optional; b comp_2372 fluids + f Ljava/util/Optional; c comp_1782 properties + m ()Ljava/util/Optional; a comp_2372 fluids + m (Laqu;Ljd;)Z a method_22475 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53156 method_53156 + m ()Ljava/util/Optional; b comp_1782 properties + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c cd$a net/minecraft/class_4551$class_6079 net/minecraft/advancements/critereon/FluidPredicate$Builder + f Ljava/util/Optional; a field_30913 fluids + f Ljava/util/Optional; b field_30914 properties + m ()Lcd$a; a method_35221 fluid + m (Leb;)Lcd$a; a method_35223 setProperties + m (Lepd;)Lcd$a; a method_35224 of + m (Ljq;)Lcd$a; a method_35222 of + m ()Lcd; b method_35225 build + m ()V +c ce net/minecraft/class_9789 net/minecraft/advancements/critereon/GameTypePredicate + f Lce; a field_52012 ANY + f Lce; b field_52013 SURVIVAL_LIKE + f Lcom/mojang/serialization/Codec; c field_52014 CODEC + f Ljava/util/List; d comp_2829 types + m ()Ljava/util/List; a comp_2829 types + m (Ldct;)Z a method_60723 matches + m ([Ldct;)Lce; a method_60724 of + m (Ljava/util/List;)V + m ()V +c cf net/minecraft/class_2062 net/minecraft/advancements/critereon/ImpossibleTrigger + m ()V +c cf$a net/minecraft/class_2062$class_2063 net/minecraft/advancements/critereon/ImpossibleTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47262 CODEC + m ()V + m ()V +c cg net/minecraft/class_2066 net/minecraft/advancements/critereon/InventoryChangeTrigger + m (Laqv;Lcmw;Lcuq;)V a method_8950 trigger + m (Laqv;Lcmw;Lcuq;III)V a method_24362 trigger + m (Lcmw;Lcuq;IIILcg$a;)Z a method_22476 method_22476 + m ()V +c cg$a net/minecraft/class_2066$class_2068 net/minecraft/advancements/critereon/InventoryChangeTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47263 CODEC + f Ljava/util/Optional; b comp_2029 player + f Lcg$a$a; c comp_2057 slots + f Ljava/util/List; d comp_2058 items + m (I)[Lcs; a method_53158 method_53158 + m (Lcmw;Lcuq;III)Z a method_8958 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54997 method_54997 + m (Lcuq;Lcs;)Z a method_24363 method_24363 + m ([Lcs$a;)Lao; a method_53160 hasItems + m ([Lcs;)Lao; a method_8957 hasItems + m ([Ldcv;)Lao; a method_8959 hasItems + m ()Lcg$a$a; b comp_2057 slots + m ()Ljava/util/List; c comp_2058 items + m (Ljava/util/Optional;Lcg$a$a;Ljava/util/List;)V + m ()V +c cg$a$a net/minecraft/class_2066$class_2068$class_8948 net/minecraft/advancements/critereon/InventoryChangeTrigger$TriggerInstance$Slots + f Lcom/mojang/serialization/Codec; a field_47264 CODEC + f Lcg$a$a; b field_47265 ANY + f Ldh$d; c comp_2059 occupied + f Ldh$d; d comp_2060 full + f Ldh$d; e comp_2061 empty + m ()Ldh$d; a comp_2059 occupied + m (III)Z a method_54998 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54999 method_54999 + m ()Ldh$d; b comp_2060 full + m ()Ldh$d; c comp_2061 empty + m (Ldh$d;Ldh$d;Ldh$d;)V + m ()V +c ch net/minecraft/class_9653 net/minecraft/advancements/critereon/ItemAttributeModifiersPredicate + f Lcom/mojang/serialization/Codec; a field_51378 CODEC + f Ljava/util/Optional; c comp_2623 modifiers + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59668 method_59668 + m (Lcuq;Lcxn;)Z a method_59669 matches + m ()Ljava/util/Optional; b comp_2623 modifiers + m (Ljava/util/Optional;)V + m ()V +c ch$a net/minecraft/class_9653$class_9654 net/minecraft/advancements/critereon/ItemAttributeModifiersPredicate$EntryPredicate + f Lcom/mojang/serialization/Codec; a field_51379 CODEC + f Ljava/util/Optional; b comp_2624 attribute + f Ljava/util/Optional; c comp_2625 id + f Ldh$c; d comp_2627 amount + f Ljava/util/Optional; e comp_2628 operation + f Ljava/util/Optional; f comp_2629 slot + m ()Ljava/util/Optional; a comp_2624 attribute + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59670 method_59670 + m (Lcxn$b;)Z a method_59671 test + m ()Ljava/util/Optional; b comp_2625 id + m ()Ldh$c; c comp_2627 amount + m ()Ljava/util/Optional; d comp_2628 operation + m ()Ljava/util/Optional; e comp_2629 slot + m (Ljava/util/Optional;Ljava/util/Optional;Ldh$c;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ci net/minecraft/class_9655 net/minecraft/advancements/critereon/ItemBundlePredicate + f Lcom/mojang/serialization/Codec; a field_51380 CODEC + f Ljava/util/Optional; c comp_2630 items + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59672 method_59672 + m (Lcuq;Lcxf;)Z a method_59673 matches + m ()Ljava/util/Optional; b comp_2630 items + m (Ljava/util/Optional;)V + m ()V +c cj net/minecraft/class_9656 net/minecraft/advancements/critereon/ItemContainerPredicate + f Lcom/mojang/serialization/Codec; a field_51381 CODEC + f Ljava/util/Optional; c comp_2631 items + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59674 method_59674 + m (Lcuq;Lcxo;)Z a method_59675 matches + m ()Ljava/util/Optional; b comp_2631 items + m (Ljava/util/Optional;)V + m ()V +c ck net/minecraft/class_9354 net/minecraft/advancements/critereon/ItemCustomDataPredicate + f Lcom/mojang/serialization/Codec; a field_49797 CODEC + f Ldk; c comp_2458 value + m ()Ldk; a comp_2458 value + m (Ldk;)Lck; a method_58162 customData + m (Ldk;)V + m ()V +c cl net/minecraft/class_9355 net/minecraft/advancements/critereon/ItemDamagePredicate + f Lcom/mojang/serialization/Codec; a field_49798 CODEC + f Ldh$d; c comp_2459 durability + f Ldh$d; d comp_2460 damage + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58164 method_58164 + m (Lcuq;Ljava/lang/Integer;)Z a method_58166 matches + m (Ldh$d;)Lcl; a method_58165 durability + m ()Ldh$d; b comp_2459 durability + m ()Ldh$d; c comp_2460 damage + m (Ldh$d;Ldh$d;)V + m ()V +c cm net/minecraft/class_2069 net/minecraft/advancements/critereon/ItemDurabilityTrigger + m (Laqv;Lcuq;I)V a method_8960 trigger + m (Lcuq;ILcm$a;)Z a method_22477 method_22477 + m ()V +c cm$a net/minecraft/class_2069$class_2071 net/minecraft/advancements/critereon/ItemDurabilityTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47266 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2062 item + f Ldh$d; d comp_2063 durability + f Ldh$d; e comp_2064 delta + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55000 method_55000 + m (Lcuq;I)Z a method_8968 matches + m (Ljava/util/Optional;Ldh$d;)Lao; a method_35229 changedDurability + m (Ljava/util/Optional;Ljava/util/Optional;Ldh$d;)Lao; a method_8967 changedDurability + m ()Ljava/util/Optional; b comp_2062 item + m ()Ldh$d; c comp_2063 durability + m ()Ldh$d; d comp_2064 delta + m (Ljava/util/Optional;Ljava/util/Optional;Ldh$d;Ldh$d;)V + m ()V +c cn net/minecraft/class_9356 net/minecraft/advancements/critereon/ItemEnchantmentsPredicate + f Ljava/util/List; a field_49799 enchantments + m (Lcuq;Ldai;)Z a method_58172 matches + m (Ljava/util/List;)Lcn$a; a method_58173 enchantments + m (Ljava/util/function/Function;)Lcom/mojang/serialization/Codec; a method_58174 codec + m ()Ljava/util/List; b method_58175 enchantments + m (Ljava/util/List;)Lcn$b; b method_58176 storedEnchantments + m (Ljava/util/List;)V +c cn$a net/minecraft/class_9356$class_9357 net/minecraft/advancements/critereon/ItemEnchantmentsPredicate$Enchantments + f Lcom/mojang/serialization/Codec; a field_49800 CODEC + m (Ljava/util/List;)V + m ()V +c cn$b net/minecraft/class_9356$class_9358 net/minecraft/advancements/critereon/ItemEnchantmentsPredicate$StoredEnchantments + f Lcom/mojang/serialization/Codec; a field_49801 CODEC + m (Ljava/util/List;)V + m ()V +c co net/minecraft/class_9657 net/minecraft/advancements/critereon/ItemFireworkExplosionPredicate + f Lcom/mojang/serialization/Codec; a field_51382 CODEC + f Lco$a; c comp_2632 predicate + m (Lcuq;Lcxl;)Z a method_59676 matches + m ()Lco$a; b comp_2632 predicate + m (Lco$a;)V + m ()V +c co$a net/minecraft/class_9657$class_9658 net/minecraft/advancements/critereon/ItemFireworkExplosionPredicate$FireworkPredicate + f Lcom/mojang/serialization/Codec; a field_51383 CODEC + f Ljava/util/Optional; b comp_2633 shape + f Ljava/util/Optional; c comp_2634 twinkle + f Ljava/util/Optional; d comp_2635 trail + m ()Ljava/util/Optional; a comp_2633 shape + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59677 method_59677 + m (Lcxl;)Z a method_59678 test + m ()Ljava/util/Optional; b comp_2634 twinkle + m ()Ljava/util/Optional; c comp_2635 trail + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c cp net/minecraft/class_9659 net/minecraft/advancements/critereon/ItemFireworksPredicate + f Lcom/mojang/serialization/Codec; a field_51384 CODEC + f Ljava/util/Optional; c comp_2636 explosions + f Ldh$d; d comp_2637 flightDuration + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59680 method_59680 + m (Lcuq;Lcxm;)Z a method_59681 matches + m ()Ljava/util/Optional; b comp_2636 explosions + m ()Ldh$d; c comp_2637 flightDuration + m (Ljava/util/Optional;Ldh$d;)V + m ()V +c cq net/minecraft/class_9790 net/minecraft/advancements/critereon/ItemJukeboxPlayablePredicate + f Lcom/mojang/serialization/Codec; a field_52020 CODEC + f Ljava/util/Optional; c comp_2830 song + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60730 method_60730 + m (Lcuq;Lcuu;)Z a method_60731 matches + m ()Lcq; b method_60732 any + m ()Ljava/util/Optional; c comp_2830 song + m (Ljava/util/Optional;)V + m ()V +c cr net/minecraft/class_9359 net/minecraft/advancements/critereon/ItemPotionsPredicate + f Lcom/mojang/serialization/Codec; a field_49802 CODEC + f Ljq; c comp_2461 potions + m (Lcuq;Lcwu;)Z a method_58177 matches + m (Ljq;)Lct; a method_58178 potions + m ()Ljq; b comp_2461 potions + m (Ljq;)V + m ()V +c cs net/minecraft/class_2073 net/minecraft/advancements/critereon/ItemPredicate + f Lcom/mojang/serialization/Codec; a field_45754 CODEC + f Ljava/util/Optional; b comp_1784 items + f Ldh$d; c comp_1785 count + f Lko; d comp_2374 components + f Ljava/util/Map; e comp_2462 subPredicates + m ()Ljava/util/Optional; a comp_1784 items + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57298 method_57298 + m (Lcuq;)Z a method_8970 test + m ()Ldh$d; b comp_1785 count + m ()Lko; c comp_2374 components + m ()Ljava/util/Map; d comp_2462 subPredicates + m (Ljava/util/Optional;Ldh$d;Lko;Ljava/util/Map;)V + m ()V +c cs$a net/minecraft/class_2073$class_2074 net/minecraft/advancements/critereon/ItemPredicate$Builder + f Ljava/util/Optional; a field_9650 items + f Ldh$d; b field_9648 count + f Lko; c field_49235 components + f Lcom/google/common/collect/ImmutableMap$Builder; d field_49803 subPredicates + m ()Lcs$a; a method_8973 item + m (Lawu;)Lcs$a; a method_8975 of + m (Lct$a;Lct;)Lcs$a; a method_58179 withSubPredicate + m (Ldcv;)Ljm; a method_53166 method_53166 + m (Ldh$d;)Lcs$a; a method_35233 withCount + m (Lko;)Lcs$a; a method_57299 hasComponents + m ([Ldcv;)Lcs$a; a method_8977 of + m ()Lcs; b method_8976 build + m ()V +c ct net/minecraft/class_9360 net/minecraft/advancements/critereon/ItemSubPredicate + f Lcom/mojang/serialization/Codec; b field_49805 CODEC + m (Lcuq;)Z a method_58161 matches + m ()V +c ct$a net/minecraft/class_9360$class_8745 net/minecraft/advancements/critereon/ItemSubPredicate$Type + f Lcom/mojang/serialization/Codec; a comp_1774 codec + m ()Lcom/mojang/serialization/Codec; a comp_1774 codec + m (Lcom/mojang/serialization/Codec;)V +c cu net/minecraft/class_9361 net/minecraft/advancements/critereon/ItemSubPredicates + f Lct$a; a field_49806 DAMAGE + f Lct$a; b field_49807 ENCHANTMENTS + f Lct$a; c field_49808 STORED_ENCHANTMENTS + f Lct$a; d field_49809 POTIONS + f Lct$a; e field_49810 CUSTOM_DATA + f Lct$a; f field_51386 CONTAINER + f Lct$a; g field_51387 BUNDLE_CONTENTS + f Lct$a; h field_51388 FIREWORK_EXPLOSION + f Lct$a; i field_51389 FIREWORKS + f Lct$a; j field_51390 WRITABLE_BOOK + f Lct$a; k field_51391 WRITTEN_BOOK + f Lct$a; l field_51392 ATTRIBUTE_MODIFIERS + f Lct$a; m field_51393 ARMOR_TRIM + f Lct$a; n field_52024 JUKEBOX_PLAYABLE + m (Ljava/lang/String;Lcom/mojang/serialization/Codec;)Lct$a; a method_58180 register + m (Ljz;)Lct$a; a method_58181 bootstrap + m ()V + m ()V +c cv net/minecraft/class_9660 net/minecraft/advancements/critereon/ItemTrimPredicate + f Lcom/mojang/serialization/Codec; a field_51394 CODEC + f Ljava/util/Optional; c comp_2638 material + f Ljava/util/Optional; d comp_2639 pattern + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59685 method_59685 + m (Lcuq;Lcwx;)Z a method_59686 matches + m ()Ljava/util/Optional; b comp_2638 material + m ()Ljava/util/Optional; c comp_2639 pattern + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c cw net/minecraft/class_4711 net/minecraft/advancements/critereon/ItemUsedOnLocationTrigger + m (Laqv;Ljd;Lcuq;)V a method_23889 trigger + m (Lerr;Lcw$a;)Z a method_23888 method_23888 + m ()V +c cw$a net/minecraft/class_4711$class_4712 net/minecraft/advancements/critereon/ItemUsedOnLocationTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47267 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2065 location + m (I)[Levc; a method_51708 method_51708 + m (Lbh;Lbg;)V a method_55003 method_55003 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55004 method_55004 + m (Ldf$a;Lcs$a;)Lao; a method_27981 itemUsedOnBlock + m (Ldfy;)Lao; a method_51710 placedBlock + m (Lerr;)Z a method_51711 matches + m ([Levc$a;)Lao; a method_51712 placedBlock + m ()Ljava/util/Optional; b comp_2065 location + m (Ldf$a;Lcs$a;)Lao; b method_43125 allayDropItemOnBlock + m (Ldf$a;Lcs$a;)Lcw$a; c method_51709 itemUsedOnLocation + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c cx net/minecraft/class_9661 net/minecraft/advancements/critereon/ItemWritableBookPredicate + f Lcom/mojang/serialization/Codec; a field_51395 CODEC + f Ljava/util/Optional; c comp_2640 pages + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59687 method_59687 + m (Lcuq;Lcya;)Z a method_59688 matches + m ()Ljava/util/Optional; b comp_2640 pages + m (Ljava/util/Optional;)V + m ()V +c cx$a net/minecraft/class_9661$class_9662 net/minecraft/advancements/critereon/ItemWritableBookPredicate$PagePredicate + f Lcom/mojang/serialization/Codec; a field_51396 CODEC + f Ljava/lang/String; b comp_2641 contents + m ()Ljava/lang/String; a comp_2641 contents + m (Larl;)Z a method_59689 test + m (Ljava/lang/String;)V + m ()V +c cy net/minecraft/class_9663 net/minecraft/advancements/critereon/ItemWrittenBookPredicate + f Lcom/mojang/serialization/Codec; a field_51400 CODEC + f Ljava/util/Optional; c comp_2642 pages + f Ljava/util/Optional; d comp_2643 author + f Ljava/util/Optional; e comp_2644 title + f Ldh$d; f comp_2645 generation + f Ljava/util/Optional; g comp_2646 resolved + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59696 method_59696 + m (Lcuq;Lcyb;)Z a method_59697 matches + m ()Ljava/util/Optional; b comp_2642 pages + m ()Ljava/util/Optional; c comp_2643 author + m ()Ljava/util/Optional; d comp_2644 title + m ()Ldh$d; e comp_2645 generation + m ()Ljava/util/Optional; f comp_2646 resolved + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ldh$d;Ljava/util/Optional;)V + m ()V +c cy$a net/minecraft/class_9663$class_9664 net/minecraft/advancements/critereon/ItemWrittenBookPredicate$PagePredicate + f Lcom/mojang/serialization/Codec; a field_51401 CODEC + f Lwz; b comp_2647 contents + m ()Lwz; a comp_2647 contents + m (Larl;)Z a method_59698 test + m (Lwz;)V + m ()V +c cz net/minecraft/class_2076 net/minecraft/advancements/critereon/KilledByCrossbowTrigger + m (Laqv;Ljava/util/Collection;)V a method_8980 trigger + m (Ljava/util/List;Ljava/util/Set;Lcz$a;)Z a method_22478 method_22478 + m ()V +c cz$a net/minecraft/class_2076$class_2078 net/minecraft/advancements/critereon/KilledByCrossbowTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47268 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/List; c comp_2066 victims + f Ldh$d; d comp_2067 uniqueEntityTypes + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55005 method_55005 + m (Ldh$d;)Lao; a method_8987 crossbowKilled + m (Ljava/util/Collection;I)Z a method_8988 matches + m ([Lbv$a;)Lao; a method_8986 crossbowKilled + m ()Ljava/util/List; b comp_2066 victims + m ()Ldh$d; c comp_2067 uniqueEntityTypes + m (Ljava/util/Optional;Ljava/util/List;Ldh$d;)V + m ()V +c da net/minecraft/class_2080 net/minecraft/advancements/critereon/KilledTrigger + m (Laqv;Lbsr;Lbrk;)V a method_8990 trigger + m (Laqv;Lerr;Lbrk;Lda$a;)Z a method_22479 method_22479 + m ()V +c da$a net/minecraft/class_2080$class_2083 net/minecraft/advancements/critereon/KilledTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47304 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2068 entityPredicate + f Ljava/util/Optional; d comp_2069 killingBlow + m (Laqv;Lerr;Lbrk;)Z a method_9000 matches + m (Lbv$a;)Lao; a method_8997 playerKilledEntity + m (Lbv$a;Lbk$a;)Lao; a method_9001 playerKilledEntity + m (Lbv$a;Ljava/util/Optional;)Lao; a method_35247 playerKilledEntity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55050 method_55050 + m (Ljava/util/Optional;)Lao; a method_35248 playerKilledEntity + m (Ljava/util/Optional;Lbk$a;)Lao; a method_35249 playerKilledEntity + m (Ljava/util/Optional;Ljava/util/Optional;)Lao; a method_35250 playerKilledEntity + m ()Lao; b method_8999 playerKilledEntity + m (Lbv$a;)Lao; b method_35251 entityKilledPlayer + m (Lbv$a;Lbk$a;)Lao; b method_35252 entityKilledPlayer + m (Lbv$a;Ljava/util/Optional;)Lao; b method_35253 entityKilledPlayer + m (Ljava/util/Optional;)Lao; b method_35254 entityKilledPlayer + m (Ljava/util/Optional;Lbk$a;)Lao; b method_35255 entityKilledPlayer + m (Ljava/util/Optional;Ljava/util/Optional;)Lao; b method_35256 entityKilledPlayer + m ()Lao; c method_42671 playerKilledEntityNearSculkCatalyst + m ()Lao; d method_8998 entityKilledPlayer + m ()Ljava/util/Optional; e comp_2068 entityPredicate + m ()Ljava/util/Optional; f comp_2069 killingBlow + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c db net/minecraft/class_2085 net/minecraft/advancements/critereon/LevitationTrigger + m (Laqv;Lexc;I)V a method_9008 trigger + m (Laqv;Lexc;ILdb$a;)Z a method_22480 method_22480 + m ()V +c db$a net/minecraft/class_2085$class_2087 net/minecraft/advancements/critereon/LevitationTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47305 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2070 distance + f Ldh$d; d comp_2071 duration + m (Laqv;Lexc;I)Z a method_9014 matches + m (Lbm;)Lao; a method_9013 levitated + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55051 method_55051 + m ()Ljava/util/Optional; b comp_2070 distance + m ()Ldh$d; c comp_2071 duration + m (Ljava/util/Optional;Ljava/util/Optional;Ldh$d;)V + m ()V +c dc net/minecraft/class_4552 net/minecraft/advancements/critereon/LightPredicate + f Lcom/mojang/serialization/Codec; a field_45757 CODEC + f Ldh$d; b comp_1791 composite + m ()Ldh$d; a comp_1791 composite + m (Laqu;Ljd;)Z a method_22483 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53172 method_53172 + m (Ldh$d;)V + m ()V +c dc$a net/minecraft/class_4552$class_6087 net/minecraft/advancements/critereon/LightPredicate$Builder + f Ldh$d; a field_31078 composite + m ()Ldc$a; a method_35271 light + m (Ldh$d;)Ldc$a; a method_35272 setComposite + m ()Ldc; b method_35273 build + m ()V +c dd net/minecraft/class_6404 net/minecraft/advancements/critereon/LightningBoltPredicate + f Lcom/mojang/serialization/MapCodec; b field_45759 CODEC + f Ldh$d; c comp_1792 blocksSetOnFire + f Ljava/util/Optional; d comp_1793 entityStruck + m (Laqu;Lexc;Lbsr;)Z a method_37235 method_37235 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53175 method_53175 + m (Ldh$d;)Ldd; a method_37237 blockSetOnFire + m ()Ldh$d; b comp_1792 blocksSetOnFire + m ()Ljava/util/Optional; c comp_1793 entityStruck + m (Ldh$d;Ljava/util/Optional;)V + m ()V +c de net/minecraft/class_6405 net/minecraft/advancements/critereon/LightningStrikeTrigger + m (Laqv;Lbsr;)Lerr; a method_37239 method_37239 + m (Laqv;Lbtm;Ljava/util/List;)V a method_37240 trigger + m (Lerr;Ljava/util/List;Lde$a;)Z a method_37242 method_37242 + m ()V +c de$a net/minecraft/class_6405$class_6406 net/minecraft/advancements/critereon/LightningStrikeTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47306 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2072 lightning + f Ljava/util/Optional; d comp_2073 bystander + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55058 method_55058 + m (Lerr;Ljava/util/List;)Z a method_37244 matches + m (Ljava/util/Optional;Ljava/util/Optional;)Lao; a method_37243 lightningStrike + m ()Ljava/util/Optional; b comp_2072 lightning + m ()Ljava/util/Optional; c comp_2073 bystander + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c df net/minecraft/class_2090 net/minecraft/advancements/critereon/LocationPredicate + f Lcom/mojang/serialization/Codec; a field_45760 CODEC + f Ljava/util/Optional; b comp_1794 position + f Ljava/util/Optional; c comp_2375 biomes + f Ljava/util/Optional; d comp_2376 structures + f Ljava/util/Optional; e comp_1797 dimension + f Ljava/util/Optional; f comp_1798 smokey + f Ljava/util/Optional; g comp_1799 light + f Ljava/util/Optional; h comp_1800 block + f Ljava/util/Optional; i comp_1801 fluid + f Ljava/util/Optional; j comp_2771 canSeeSky + m ()Ljava/util/Optional; a comp_1794 position + m (Laqu;DDD)Z a method_9018 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53178 method_53178 + m ()Ljava/util/Optional; b comp_2375 biomes + m ()Ljava/util/Optional; c comp_2376 structures + m ()Ljava/util/Optional; d comp_1797 dimension + m ()Ljava/util/Optional; e comp_1798 smokey + m ()Ljava/util/Optional; f comp_1799 light + m ()Ljava/util/Optional; g comp_1800 block + m ()Ljava/util/Optional; h comp_1801 fluid + m ()Ljava/util/Optional; i comp_2771 canSeeSky + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c df$a net/minecraft/class_2090$class_2091 net/minecraft/advancements/critereon/LocationPredicate$Builder + f Ldh$c; a field_9693 x + f Ldh$c; b field_9689 y + f Ldh$c; c field_9692 z + f Ljava/util/Optional; d field_9690 biomes + f Ljava/util/Optional; e field_9688 structures + f Ljava/util/Optional; f field_9691 dimension + f Ljava/util/Optional; g field_24501 smokey + f Ljava/util/Optional; h field_20717 light + f Ljava/util/Optional; i field_20718 block + f Ljava/util/Optional; j field_20719 fluid + f Ljava/util/Optional; k field_51778 canSeeSky + m ()Ldf$a; a method_22484 location + m (Lakq;)Ldf$a; a method_53182 inDimension + m (Law$a;)Ldf$a; a method_27989 setBlock + m (Lcd$a;)Ldf$a; a method_35274 setFluid + m (Ldc$a;)Ldf$a; a method_35275 setLight + m (Ldh$c;)Ldf$a; a method_53181 atYLocation + m (Ljm;)Ldf$a; a method_53180 inBiome + m (Ljq;)Ldf$a; a method_9024 setBiomes + m (Z)Ldf$a; a method_27990 setSmokey + m ()Ldf; b method_9023 build + m (Lakq;)Ldf$a; b method_35279 setDimension + m (Ldh$c;)Ldf$a; b method_35276 setX + m (Ljm;)Ldf$a; b method_53183 inStructure + m (Ljq;)Ldf$a; b method_35277 setStructures + m (Z)Ldf$a; b method_60275 setCanSeeSky + m (Ldh$c;)Ldf$a; c method_35278 setY + m (Ldh$c;)Ldf$a; d method_35280 setZ + m ()V +c df$b net/minecraft/class_2090$class_8747 net/minecraft/advancements/critereon/LocationPredicate$PositionPredicate + f Lcom/mojang/serialization/Codec; a field_45761 CODEC + f Ldh$c; b comp_1802 x + f Ldh$c; c comp_1803 y + f Ldh$c; d comp_1804 z + m ()Ldh$c; a comp_1802 x + m (DDD)Z a method_53184 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53186 method_53186 + m (Ldh$c;Ldh$c;Ldh$c;)Ljava/util/Optional; a method_53185 of + m ()Ldh$c; b comp_1803 y + m ()Ldh$c; c comp_1804 z + m (Ldh$c;Ldh$c;Ldh$c;)V + m ()V +c dg net/minecraft/class_5282 net/minecraft/advancements/critereon/LootTableTrigger + m (Lakq;Ldg$a;)Z a method_27992 method_27992 + m (Laqv;Lakq;)V a method_27993 trigger + m ()V +c dg$a net/minecraft/class_5282$class_5283 net/minecraft/advancements/critereon/LootTableTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47307 CODEC + f Ljava/util/Optional; b comp_2029 player + f Lakq; c comp_2074 lootTable + m (Lakq;)Lao; a method_27995 lootTableUsed + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55060 method_55060 + m ()Lakq; b comp_2074 lootTable + m (Lakq;)Z b method_27996 matches + m (Ljava/util/Optional;Lakq;)V + m ()V +c dh net/minecraft/class_2096 net/minecraft/advancements/critereon/MinMaxBounds + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_9700 ERROR_EMPTY + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_9701 ERROR_SWAPPED + m ()Ljava/util/Optional; a comp_1805 min + m (Lcom/mojang/brigadier/StringReader;)Z a method_9040 isAllowedInputChat + m (Lcom/mojang/brigadier/StringReader;Ldh$b;Ljava/util/function/Function;Ljava/util/function/Supplier;Ljava/util/function/Function;)Ldh; a method_9043 fromReader + m (Lcom/mojang/brigadier/StringReader;Ljava/util/function/Function;Ljava/util/function/Supplier;)Ljava/util/Optional; a method_9037 readNumber + m (Lcom/mojang/serialization/Codec;Ldh$a;)Lcom/mojang/serialization/Codec; a method_53191 createCodec + m (Lcom/mojang/serialization/Codec;Ldh$a;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53192 method_53192 + m (Ldh$a;Lcom/mojang/datafixers/util/Either;)Ldh; a method_53188 method_53188 + m (Ldh$a;Ljava/lang/Number;)Ldh; a method_53189 method_53189 + m (Ldh;)Lcom/mojang/datafixers/util/Either; a method_53190 method_53190 + m ()Ljava/util/Optional; b comp_1806 max + m (Ldh;)Ldh; b method_53193 method_53193 + m ()Z c method_9041 isAny + m ()Ljava/util/Optional; d method_53194 unwrapPoint + m ()V +c dh$a net/minecraft/class_2096$class_2097 net/minecraft/advancements/critereon/MinMaxBounds$BoundsFactory +c dh$b net/minecraft/class_2096$class_2098 net/minecraft/advancements/critereon/MinMaxBounds$BoundsFromReaderFactory +c dh$c net/minecraft/class_2096$class_2099 net/minecraft/advancements/critereon/MinMaxBounds$Doubles + f Ldh$c; c field_9705 ANY + f Lcom/mojang/serialization/Codec; d field_45762 CODEC + f Ljava/util/Optional; e comp_1805 min + f Ljava/util/Optional; f comp_1806 max + f Ljava/util/Optional; g comp_1807 minSq + f Ljava/util/Optional; h comp_1808 maxSq + m (D)Ldh$c; a method_35284 exactly + m (DD)Ldh$c; a method_35285 between + m (Lcom/mojang/brigadier/StringReader;)Ldh$c; a method_9049 fromReader + m (Lcom/mojang/brigadier/StringReader;Ljava/util/Optional;Ljava/util/Optional;)Ldh$c; a method_9046 create + m (Lcom/mojang/brigadier/StringReader;Ljava/util/function/Function;)Ldh$c; a method_9048 fromReader + m (Ljava/lang/Double;)Ljava/lang/Double; a method_9052 method_9052 + m (Ljava/util/Optional;)Ljava/util/Optional; a method_9044 squareOpt + m (D)Ldh$c; b method_9050 atLeast + m (Ljava/lang/Double;)Ljava/lang/Double; b method_53195 method_53195 + m (D)Ldh$c; c method_35286 atMost + m (D)Z d method_9047 matches + m ()Ljava/util/Optional; e comp_1807 minSq + m (D)Z e method_9045 matchesSqr + m ()Ljava/util/Optional; f comp_1808 maxSq + m (Ljava/util/Optional;Ljava/util/Optional;)V + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dh$d net/minecraft/class_2096$class_2100 net/minecraft/advancements/critereon/MinMaxBounds$Ints + f Ldh$d; c field_9708 ANY + f Lcom/mojang/serialization/Codec; d field_45763 CODEC + f Ljava/util/Optional; e comp_1805 min + f Ljava/util/Optional; f comp_1806 max + f Ljava/util/Optional; g comp_1809 minSq + f Ljava/util/Optional; h comp_1810 maxSq + m (I)Ldh$d; a method_9058 exactly + m (II)Ldh$d; a method_35287 between + m (J)Z a method_35288 matchesSqr + m (Lcom/mojang/brigadier/StringReader;)Ldh$d; a method_9060 fromReader + m (Lcom/mojang/brigadier/StringReader;Ljava/util/Optional;Ljava/util/Optional;)Ldh$d; a method_9055 create + m (Lcom/mojang/brigadier/StringReader;Ljava/util/function/Function;)Ldh$d; a method_9057 fromReader + m (Ljava/lang/Integer;)Ljava/lang/Integer; a method_9061 method_9061 + m (Ljava/util/Optional;)Ljava/util/Optional; a method_9059 squareOpt + m (I)Ldh$d; b method_9053 atLeast + m (Ljava/lang/Integer;)Ljava/lang/Long; b method_53197 method_53197 + m (I)Ldh$d; c method_35289 atMost + m (Ljava/lang/Integer;)Ljava/lang/Long; c method_53198 method_53198 + m (I)Z d method_9054 matches + m ()Ljava/util/Optional; e comp_1809 minSq + m ()Ljava/util/Optional; f comp_1810 maxSq + m (Ljava/util/Optional;Ljava/util/Optional;)V + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c di net/minecraft/class_2102 net/minecraft/advancements/critereon/MobEffectsPredicate + f Lcom/mojang/serialization/Codec; a field_45764 CODEC + f Ljava/util/Map; b comp_1811 effectMap + m ()Ljava/util/Map; a comp_1811 effectMap + m (Lbsr;)Z a method_9062 matches + m (Lbtn;)Z a method_9067 matches + m (Ljava/util/Map;)Z a method_9063 matches + m (Ljava/util/Map;)V + m ()V +c di$a net/minecraft/class_2102$class_8748 net/minecraft/advancements/critereon/MobEffectsPredicate$Builder + f Lcom/google/common/collect/ImmutableMap$Builder; a field_45765 effectMap + m ()Ldi$a; a method_53200 effects + m (Ljm;)Ldi$a; a method_53201 and + m (Ljm;Ldi$b;)Ldi$a; a method_53202 and + m ()Ljava/util/Optional; b method_53203 build + m ()V +c di$b net/minecraft/class_2102$class_2103 net/minecraft/advancements/critereon/MobEffectsPredicate$MobEffectInstancePredicate + f Lcom/mojang/serialization/Codec; a field_45766 CODEC + f Ldh$d; b comp_1812 amplifier + f Ldh$d; c comp_1813 duration + f Ljava/util/Optional; d comp_1814 ambient + f Ljava/util/Optional; e comp_1815 visible + m ()Ldh$d; a comp_1812 amplifier + m (Lbrz;)Z a method_9069 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53204 method_53204 + m ()Ldh$d; b comp_1813 duration + m ()Ljava/util/Optional; c comp_1814 ambient + m ()Ljava/util/Optional; d comp_1815 visible + m ()V + m (Ldh$d;Ldh$d;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dj net/minecraft/class_9750 net/minecraft/advancements/critereon/MovementPredicate + f Lcom/mojang/serialization/Codec; a field_51786 CODEC + f Ldh$c; b comp_2772 x + f Ldh$c; c comp_2773 y + f Ldh$c; d comp_2774 z + f Ldh$c; e comp_2775 speed + f Ldh$c; f comp_2776 horizontalSpeed + f Ldh$c; g comp_2777 verticalSpeed + f Ldh$c; h comp_2778 fallDistance + m ()Ldh$c; a comp_2772 x + m (DDDD)Z a method_60277 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60278 method_60278 + m (Ldh$c;)Ldj; a method_60279 speed + m ()Ldh$c; b comp_2773 y + m (Ldh$c;)Ldj; b method_60280 horizontalSpeed + m ()Ldh$c; c comp_2774 z + m (Ldh$c;)Ldj; c method_60281 verticalSpeed + m ()Ldh$c; d comp_2775 speed + m (Ldh$c;)Ldj; d method_60282 fallDistance + m ()Ldh$c; e comp_2776 horizontalSpeed + m ()Ldh$c; f comp_2777 verticalSpeed + m ()Ldh$c; g comp_2778 fallDistance + m (Ldh$c;Ldh$c;Ldh$c;Ldh$c;Ldh$c;Ldh$c;Ldh$c;)V + m ()V +c dk net/minecraft/class_2105 net/minecraft/advancements/critereon/NbtPredicate + f Lcom/mojang/serialization/Codec; a field_45768 CODEC + f Lyx; b field_49244 STREAM_CODEC + f Lub; c comp_1816 tag + m ()Lub; a comp_1816 tag + m (Lbsr;)Z a method_9072 matches + m (Lcuq;)Z a method_9074 matches + m (Luy;)Z a method_9077 matches + m (Lbsr;)Lub; b method_9076 getEntityTagToCompare + m (Lub;)V + m ()V +c dl net/minecraft/class_5279 net/minecraft/advancements/critereon/PickedUpItemTrigger + m (Laqv;Lcuq;Lbsr;)V a method_27975 trigger + m (Laqv;Lcuq;Lerr;Ldl$a;)Z a method_27976 method_27976 + m ()V +c dl$a net/minecraft/class_5279$class_5280 net/minecraft/advancements/critereon/PickedUpItemTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47316 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2075 item + f Ljava/util/Optional; d comp_2076 entity + m (Laqv;Lcuq;Lerr;)Z a method_27979 matches + m (Lbg;Ljava/util/Optional;Ljava/util/Optional;)Lao; a method_27978 thrownItemPickedUpByEntity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55068 method_55068 + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)Lao; a method_43277 thrownItemPickedUpByPlayer + m ()Ljava/util/Optional; b comp_2075 item + m ()Ljava/util/Optional; c comp_2076 entity + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dm net/minecraft/class_2115 net/minecraft/advancements/critereon/PlayerHurtEntityTrigger + m (Laqv;Lbsr;Lbrk;FFZ)V a method_9097 trigger + m (Laqv;Lerr;Lbrk;FFZLdm$a;)Z a method_22493 method_22493 + m ()V +c dm$a net/minecraft/class_2115$class_2117 net/minecraft/advancements/critereon/PlayerHurtEntityTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47317 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2077 damage + f Ljava/util/Optional; d comp_2078 entity + m (Laqv;Lerr;Lbrk;FFZ)Z a method_9104 matches + m (Lbj$a;)Lao; a method_35297 playerHurtEntityWithDamage + m (Lbj$a;Ljava/util/Optional;)Lao; a method_9103 playerHurtEntity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55069 method_55069 + m (Ljava/util/Optional;)Lao; a method_35296 playerHurtEntityWithDamage + m (Ljava/util/Optional;Ljava/util/Optional;)Lao; a method_35294 playerHurtEntity + m ()Lao; b method_35298 playerHurtEntity + m (Ljava/util/Optional;)Lao; b method_35295 playerHurtEntity + m ()Ljava/util/Optional; c comp_2077 damage + m ()Ljava/util/Optional; d comp_2078 entity + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dn net/minecraft/class_5409 net/minecraft/advancements/critereon/PlayerInteractTrigger + m (Laqv;Lcuq;Lbsr;)V a method_30097 trigger + m (Lcuq;Lerr;Ldn$a;)Z a method_30095 method_30095 + m ()V +c dn$a net/minecraft/class_5409$class_5410 net/minecraft/advancements/critereon/PlayerInteractTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47318 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2079 item + f Ljava/util/Optional; d comp_2080 entity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55070 method_55070 + m (Lcs$a;Ljava/util/Optional;)Lao; a method_43278 itemUsedOnEntity + m (Lcuq;Lerr;)Z a method_30100 matches + m (Ljava/util/Optional;Lcs$a;Ljava/util/Optional;)Lao; a method_30099 itemUsedOnEntity + m ()Ljava/util/Optional; b comp_2079 item + m ()Ljava/util/Optional; c comp_2080 entity + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dp net/minecraft/class_4553 net/minecraft/advancements/critereon/PlayerPredicate + f I b field_33928 LOOKING_AT_RANGE + f Lcom/mojang/serialization/MapCodec; c field_45770 CODEC + f Ldh$d; d comp_1817 level + f Lce; e comp_1818 gameType + f Ljava/util/List; f comp_1819 stats + f Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; g comp_1820 recipes + f Ljava/util/Map; h comp_1821 advancements + f Ljava/util/Optional; i comp_1822 lookingAt + m (Lbsr;)Z a method_37250 method_37250 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53219 method_53219 + m ()Ldh$d; b comp_1817 level + m ()Lce; c comp_1818 gameType + m ()Ljava/util/List; d comp_1819 stats + m ()Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; e comp_1820 recipes + m ()Ljava/util/Map; f comp_1821 advancements + m ()Ljava/util/Optional; g comp_1822 lookingAt + m (Ldh$d;Lce;Ljava/util/List;Lit/unimi/dsi/fastutil/objects/Object2BooleanMap;Ljava/util/Map;Ljava/util/Optional;)V + m ()V +c dp$a net/minecraft/class_4553$class_4554 net/minecraft/advancements/critereon/PlayerPredicate$AdvancementCriterionsPredicate + f Lcom/mojang/serialization/Codec; a field_45771 CODEC + f Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; c comp_1823 criterions + m ()Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; a comp_1823 criterions + m (Lai;)Z a method_22504 test + m (Lit/unimi/dsi/fastutil/objects/Object2BooleanMap;)V + m ()V +c dp$b net/minecraft/class_4553$class_4555 net/minecraft/advancements/critereon/PlayerPredicate$AdvancementDonePredicate + f Lcom/mojang/serialization/Codec; a field_45772 CODEC + f Z c comp_1824 state + m ()Z a comp_1824 state + m (Lai;)Z a method_22505 test + m (Z)V + m ()V +c dp$c net/minecraft/class_4553$class_4556 net/minecraft/advancements/critereon/PlayerPredicate$AdvancementPredicate + f Lcom/mojang/serialization/Codec; b field_45773 CODEC + m (Ldp$c;)Lcom/mojang/datafixers/util/Either; a method_53223 method_53223 + m ()V +c dp$d net/minecraft/class_4553$class_4557 net/minecraft/advancements/critereon/PlayerPredicate$Builder + f Ldh$d; a field_20730 level + f Lce; b field_20731 gameType + f Lcom/google/common/collect/ImmutableList$Builder; c field_20732 stats + f Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; d field_20733 recipes + f Ljava/util/Map; e field_20734 advancements + f Ljava/util/Optional; f field_33930 lookingAt + m ()Ldp$d; a method_35310 player + m (Lakr;Ljava/util/Map;)Ldp$d; a method_35314 checkAdvancementCriterions + m (Lakr;Z)Ldp$d; a method_35315 addRecipe + m (Lavy;Ljm$c;Ldh$d;)Ldp$d; a method_35311 addStat + m (Lbv$a;)Ldp$d; a method_37251 setLookingAt + m (Lce;)Ldp$d; a method_35312 setGameType + m (Ldh$d;)Ldp$d; a method_35313 setLevel + m ()Ldp; b method_22507 build + m (Lakr;Z)Ldp$d; b method_35316 checkAdvancementDone + m ()V +c dp$e net/minecraft/class_4553$class_8749 net/minecraft/advancements/critereon/PlayerPredicate$StatMatcher + f Lcom/mojang/serialization/Codec; a field_45774 CODEC + f Lavy; b comp_1825 type + f Ljm; c comp_1826 value + f Ldh$d; d comp_1827 range + f Ljava/util/function/Supplier; e comp_1828 stat + m ()Lavy; a comp_1825 type + m (Lavy;)Lcom/mojang/serialization/MapCodec; a method_53224 createTypedCodec + m (Lavy;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53225 method_53225 + m (Lavy;Ljm;)Lavw; a method_53226 method_53226 + m (Lavy;Ljm;Ldh$d;)Ldp$e; a method_53227 method_53227 + m (Lawa;)Z a method_53228 matches + m ()Ljm; b comp_1826 value + m ()Ldh$d; c comp_1827 range + m ()Ljava/util/function/Supplier; d comp_1828 stat + m (Lavy;Ljm;Ldh$d;)V + m (Lavy;Ljm;Ldh$d;Ljava/util/function/Supplier;)V + m ()V +c dq net/minecraft/class_2135 net/minecraft/advancements/critereon/PlayerTrigger + m (Laqv;)V a method_9141 trigger + m (Ldq$a;)Z a method_29964 method_29964 + m ()V +c dq$a net/minecraft/class_2135$class_2137 net/minecraft/advancements/critereon/PlayerTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47326 CODEC + f Ljava/util/Optional; b comp_2029 player + m (Lbv$a;)Lao; a method_53788 located + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55105 method_55105 + m (Ldf$a;)Lao; a method_43137 located + m (Ldfy;Lcul;)Lao; a method_43136 walkOnBlockWithEquipment + m (Ljava/util/Optional;)Lao; a method_43135 located + m ()Lao; b method_43138 sleptInBed + m ()Lao; c method_43139 raidWon + m ()Lao; d method_43279 avoidVibration + m ()Lao; e method_49195 tick + m (Ljava/util/Optional;)V + m ()V +c dr net/minecraft/class_9471 net/minecraft/advancements/critereon/RaiderPredicate + f Lcom/mojang/serialization/MapCodec; b field_50162 CODEC + f Ldr; c field_50163 CAPTAIN_WITHOUT_RAID + f Z d comp_2549 hasRaid + f Z e comp_2550 isCaptain + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58678 method_58678 + m ()Z b comp_2549 hasRaid + m ()Z c comp_2550 isCaptain + m (ZZ)V + m ()V +c ds net/minecraft/class_8508 net/minecraft/advancements/critereon/RecipeCraftedTrigger + m (Lakr;Ljava/util/List;Lds$a;)Z a method_51349 method_51349 + m (Laqv;Lakr;Ljava/util/List;)V a method_51350 trigger + m ()V +c ds$a net/minecraft/class_8508$class_8509 net/minecraft/advancements/critereon/RecipeCraftedTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47327 CODEC + f Ljava/util/Optional; b comp_2029 player + f Lakr; c comp_2087 recipeId + f Ljava/util/List; d comp_2088 ingredients + m (Lakr;)Lao; a method_51352 craftedItem + m (Lakr;Ljava/util/List;)Lao; a method_51353 craftedItem + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55106 method_55106 + m ()Lakr; b comp_2087 recipeId + m (Lakr;)Lao; b method_58450 crafterCraftedItem + m (Lakr;Ljava/util/List;)Z b method_51354 matches + m ()Ljava/util/List; c comp_2088 ingredients + m (Ljava/util/Optional;Lakr;Ljava/util/List;)V + m ()V +c dt net/minecraft/class_2119 net/minecraft/advancements/critereon/RecipeUnlockedTrigger + m (Lakr;)Lao; a method_27847 unlocked + m (Laqv;Lczb;)V a method_9107 trigger + m (Lczb;Ldt$a;)Z a method_22508 method_22508 + m ()V +c dt$a net/minecraft/class_2119$class_2121 net/minecraft/advancements/critereon/RecipeUnlockedTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47333 CODEC + f Ljava/util/Optional; b comp_2029 player + f Lakr; c comp_2089 recipe + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55118 method_55118 + m (Lczb;)Z a method_9112 matches + m ()Lakr; b comp_2089 recipe + m (Ljava/util/Optional;Lakr;)V + m ()V +c du net/minecraft/class_2123 net/minecraft/advancements/critereon/ShotCrossbowTrigger + m (Laqv;Lcuq;)V a method_9115 trigger + m (Lcuq;Ldu$a;)Z a method_22509 method_22509 + m ()V +c du$a net/minecraft/class_2123$class_2125 net/minecraft/advancements/critereon/ShotCrossbowTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47334 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2090 item + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55123 method_55123 + m (Lcuq;)Z a method_9121 matches + m (Ldcv;)Lao; a method_9120 shotCrossbow + m (Ljava/util/Optional;)Lao; a method_35323 shotCrossbow + m ()Ljava/util/Optional; b comp_2090 item + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dv net/minecraft/class_4558 net/minecraft/advancements/critereon/SimpleCriterionTrigger + f Ljava/util/Map; a field_20735 players + m (Laqv;Ljava/util/function/Predicate;)V a method_22510 trigger + m (Lakz;)Ljava/util/Set; b method_22512 method_22512 + m ()V +c dv$a net/minecraft/class_4558$class_8788 net/minecraft/advancements/critereon/SimpleCriterionTrigger$SimpleInstance + m ()Ljava/util/Optional; a comp_2029 player +c dw net/minecraft/class_9365 net/minecraft/advancements/critereon/SingleComponentItemPredicate + m ()Lkp; a method_58163 componentType + m (Lcuq;Ljava/lang/Object;)Z a method_58167 matches +c dx net/minecraft/class_4713 net/minecraft/advancements/critereon/SlideDownBlockTrigger + m (Laqv;Ldtc;)V a method_23909 trigger + m (Ldtc;Ldx$a;)Z a method_23906 method_23906 + m ()V +c dx$a net/minecraft/class_4713$class_4714 net/minecraft/advancements/critereon/SlideDownBlockTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47335 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2091 block + f Ljava/util/Optional; d comp_2092 state + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55125 method_55125 + m (Ldfy;)Lao; a method_23912 slidesDownBlock + m (Ldtc;)Z a method_23913 matches + m (Ldx$a;)Lcom/mojang/serialization/DataResult; a method_55126 validate + m (Ldx$a;Ljm;)Ljava/util/Optional; a method_55127 method_55127 + m (Ljm;Leb;)Ljava/util/Optional; a method_55128 method_55128 + m (Ljm;Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_55129 method_55129 + m ()Ljava/util/Optional; b comp_2091 block + m (Ldx$a;)Lcom/mojang/serialization/DataResult; b method_55130 method_55130 + m (Ljm;Ljava/lang/String;)Ljava/lang/String; b method_55131 method_55131 + m ()Ljava/util/Optional; c comp_2092 state + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dy net/minecraft/class_7383 net/minecraft/advancements/critereon/SlimePredicate + f Lcom/mojang/serialization/MapCodec; b field_45776 CODEC + f Ldh$d; c comp_1829 size + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53234 method_53234 + m (Ldh$d;)Ldy; a method_43157 sized + m ()Ldh$d; b comp_1829 size + m (Ldh$d;)V + m ()V +c dz net/minecraft/class_9350 net/minecraft/advancements/critereon/SlotsPredicate + f Lcom/mojang/serialization/Codec; a field_49755 CODEC + f Ljava/util/Map; b comp_2455 slots + m ()Ljava/util/Map; a comp_2455 slots + m (Lbsr;)Z a method_58119 matches + m (Lbsr;Lcs;Lit/unimi/dsi/fastutil/ints/IntList;)Z a method_58120 matchSlots + m (Ljava/util/Map;)V + m ()V +c ea net/minecraft/class_6407 net/minecraft/advancements/critereon/StartRidingTrigger + m (Laqv;)V a method_37257 trigger + m (Lea$a;)Z a method_37259 method_37259 + m ()V +c ea$a net/minecraft/class_6407$class_6408 net/minecraft/advancements/critereon/StartRidingTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47337 CODEC + f Ljava/util/Optional; b comp_2029 player + m (Lbv$a;)Lao; a method_37260 playerStartsRiding + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55134 method_55134 + m (Ljava/util/Optional;)V + m ()V +c eb net/minecraft/class_4559 net/minecraft/advancements/critereon/StatePropertiesPredicate + f Lcom/mojang/serialization/Codec; a field_45777 CODEC + f Lyx; b field_49396 STREAM_CODEC + f Ljava/util/List; c comp_1830 properties + f Lcom/mojang/serialization/Codec; d field_45778 PROPERTIES_CODEC + m ()Ljava/util/List; a comp_1830 properties + m (Ldtc;)Z a method_22514 matches + m (Ldtd;)Ljava/util/Optional; a method_53235 checkState + m (Ldtd;Ldte;)Z a method_22515 matches + m (Lepe;)Z a method_22518 matches + m (Ljava/util/List;)Ljava/util/Map; a method_53236 method_53236 + m (Ljava/util/Map$Entry;)Leb$c; a method_53237 method_53237 + m (Ljava/util/Map;)Ljava/util/List; a method_53238 method_53238 + m (Ljava/util/List;)V + m ()V +c eb$a net/minecraft/class_4559$class_4560 net/minecraft/advancements/critereon/StatePropertiesPredicate$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_20738 matchers + m ()Leb$a; a method_22523 properties + m (Lduf;I)Leb$a; a method_22524 hasProperty + m (Lduf;Ljava/lang/Comparable;)Leb$a; a method_22525 hasProperty + m (Lduf;Ljava/lang/String;)Leb$a; a method_22526 hasProperty + m (Lduf;Z)Leb$a; a method_22527 hasProperty + m ()Ljava/util/Optional; b method_22528 build + m ()V +c eb$b net/minecraft/class_4559$class_4561 net/minecraft/advancements/critereon/StatePropertiesPredicate$ExactMatcher + f Lcom/mojang/serialization/Codec; a field_45779 CODEC + f Lyx; b field_49397 STREAM_CODEC + f Ljava/lang/String; e comp_1831 value + m ()Ljava/lang/String; a comp_1831 value + m (Ljava/lang/String;)V + m ()V +c eb$c net/minecraft/class_4559$class_4562 net/minecraft/advancements/critereon/StatePropertiesPredicate$PropertyMatcher + f Lyx; a field_49398 STREAM_CODEC + f Ljava/lang/String; b comp_1832 name + f Leb$e; c comp_1833 valueMatcher + m ()Ljava/lang/String; a comp_1832 name + m (Ldtd;)Ljava/util/Optional; a method_22531 checkState + m (Ldtd;Ldte;)Z a method_22530 match + m ()Leb$e; b comp_1833 valueMatcher + m (Ljava/lang/String;Leb$e;)V + m ()V +c eb$d net/minecraft/class_4559$class_4563 net/minecraft/advancements/critereon/StatePropertiesPredicate$RangedMatcher + f Lcom/mojang/serialization/Codec; a field_45780 CODEC + f Lyx; b field_49399 STREAM_CODEC + f Ljava/util/Optional; e comp_1834 minValue + f Ljava/util/Optional; f comp_1835 maxValue + m ()Ljava/util/Optional; a comp_1834 minValue + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53239 method_53239 + m ()Ljava/util/Optional; b comp_1835 maxValue + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c eb$e net/minecraft/class_4559$class_8750 net/minecraft/advancements/critereon/StatePropertiesPredicate$ValueMatcher + f Lcom/mojang/serialization/Codec; c field_45781 CODEC + f Lyx; d field_49400 STREAM_CODEC + m (Ldte;Lduf;)Z a method_22532 match + m (Leb$e;)Lcom/mojang/datafixers/util/Either; a method_57564 method_57564 + m (Leb$e;)Lcom/mojang/datafixers/util/Either; b method_53243 method_53243 + m ()V +c ec net/minecraft/class_2128 net/minecraft/advancements/critereon/SummonedEntityTrigger + m (Laqv;Lbsr;)V a method_9124 trigger + m (Lerr;Lec$a;)Z a method_22537 method_22537 + m ()V +c ec$a net/minecraft/class_2128$class_2130 net/minecraft/advancements/critereon/SummonedEntityTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47338 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2093 entity + m (Lbv$a;)Lao; a method_9129 summonedEntity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55135 method_55135 + m (Lerr;)Z a method_9130 matches + m ()Ljava/util/Optional; b comp_2093 entity + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ed net/minecraft/class_8129 net/minecraft/advancements/critereon/TagPredicate + f Lawu; a comp_1836 tag + f Z b comp_1837 expected + m ()Lawu; a comp_1836 tag + m (Lakq;)Lcom/mojang/serialization/Codec; a method_53245 codec + m (Lakq;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53246 method_53246 + m (Lawu;)Led; a method_48965 is + m (Ljm;)Z a method_48967 matches + m ()Z b comp_1837 expected + m (Lawu;)Led; b method_48968 isNot + m (Lawu;Z)V +c ee net/minecraft/class_2131 net/minecraft/advancements/critereon/TameAnimalTrigger + m (Laqv;Lcfe;)V a method_9132 trigger + m (Lerr;Lee$a;)Z a method_22538 method_22538 + m ()V +c ee$a net/minecraft/class_2131$class_2133 net/minecraft/advancements/critereon/TameAnimalTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47344 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2094 entity + m (Lbv$a;)Lao; a method_16114 tamedAnimal + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55136 method_55136 + m (Lerr;)Z a method_9139 matches + m ()Lao; b method_9138 tamedAnimal + m ()Ljava/util/Optional; c comp_2094 entity + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ef net/minecraft/class_4851 net/minecraft/advancements/critereon/TargetBlockTrigger + m (Laqv;Lbsr;Lexc;I)V a method_24861 trigger + m (Lerr;Lexc;ILef$a;)Z a method_24951 method_24951 + m ()V +c ef$a net/minecraft/class_4851$class_4852 net/minecraft/advancements/critereon/TargetBlockTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47345 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ldh$d; c comp_2095 signalStrength + f Ljava/util/Optional; d comp_2096 projectile + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55137 method_55137 + m (Ldh$d;Ljava/util/Optional;)Lao; a method_24865 targetHit + m (Lerr;Lexc;I)Z a method_24952 matches + m ()Ldh$d; b comp_2095 signalStrength + m ()Ljava/util/Optional; c comp_2096 projectile + m (Ljava/util/Optional;Ldh$d;Ljava/util/Optional;)V + m ()V +c eg net/minecraft/class_2140 net/minecraft/advancements/critereon/TradeTrigger + m (Laqv;Lcmf;Lcuq;)V a method_9146 trigger + m (Lerr;Lcuq;Leg$a;)Z a method_22539 method_22539 + m ()V +c eg$a net/minecraft/class_2140$class_2142 net/minecraft/advancements/critereon/TradeTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47347 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2097 villager + f Ljava/util/Optional; d comp_2098 item + m (Lbv$a;)Lao; a method_38914 tradedWithVillager + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55138 method_55138 + m (Lerr;Lcuq;)Z a method_9154 matches + m ()Lao; b method_9153 tradedWithVillager + m ()Ljava/util/Optional; c comp_2097 villager + m ()Ljava/util/Optional; d comp_2098 item + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c eh net/minecraft/class_2143 net/minecraft/advancements/critereon/UsedEnderEyeTrigger + m (DLeh$a;)Z a method_22540 method_22540 + m (Laqv;Ljd;)V a method_9157 trigger + m ()V +c eh$a net/minecraft/class_2143$class_2145 net/minecraft/advancements/critereon/UsedEnderEyeTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47350 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ldh$c; c comp_2099 distance + m (D)Z a method_9162 matches + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55142 method_55142 + m ()Ldh$c; b comp_2099 distance + m (Ljava/util/Optional;Ldh$c;)V + m ()V +c ei net/minecraft/class_2148 net/minecraft/advancements/critereon/UsedTotemTrigger + m (Laqv;Lcuq;)V a method_9165 trigger + m (Lcuq;Lei$a;)Z a method_22541 method_22541 + m ()V +c ei$a net/minecraft/class_2148$class_2150 net/minecraft/advancements/critereon/UsedTotemTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47351 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2100 item + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55143 method_55143 + m (Lcs;)Lao; a method_35399 usedTotem + m (Lcuq;)Z a method_9171 matches + m (Ldcv;)Lao; a method_9170 usedTotem + m ()Ljava/util/Optional; b comp_2100 item + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ej net/minecraft/class_6409 net/minecraft/advancements/critereon/UsingItemTrigger + m (Laqv;Lcuq;)V a method_37262 trigger + m (Lcuq;Lej$a;)Z a method_37263 method_37263 + m ()V +c ej$a net/minecraft/class_6409$class_6410 net/minecraft/advancements/critereon/UsingItemTrigger$TriggerInstance + f Lcom/mojang/serialization/Codec; a field_47353 CODEC + f Ljava/util/Optional; b comp_2029 player + f Ljava/util/Optional; c comp_2101 item + m (Lbv$a;Lcs$a;)Lao; a method_37265 lookingAt + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55144 method_55144 + m (Lcuq;)Z a method_37266 matches + m ()Ljava/util/Optional; b comp_2101 item + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ek net/minecraft/class_2152 net/minecraft/advancements/critereon/WrappedMinMaxBounds + f Lek; a field_9780 ANY + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_9781 ERROR_INTS_ONLY + f Ljava/lang/Float; c comp_1840 min + f Ljava/lang/Float; d comp_1841 max + m ()Lcom/google/gson/JsonElement; a method_35407 serializeToJson + m (D)Z a method_35400 matchesSqr + m (F)Lek; a method_35401 exactly + m (FF)Lek; a method_35402 between + m (Lcom/google/gson/JsonElement;)Lek; a method_35403 fromJson + m (Lcom/mojang/brigadier/StringReader;Z)Lek; a method_35404 fromReader + m (Lcom/mojang/brigadier/StringReader;ZLjava/util/function/Function;)Lek; a method_9172 fromReader + m (Ljava/lang/Float;)Ljava/lang/Float; a method_35405 method_35405 + m (Ljava/lang/Float;Ljava/util/function/Function;)Ljava/lang/Float; a method_9174 optionallyFormat + m ()Ljava/lang/Float; b comp_1840 min + m (F)Lek; b method_35406 atLeast + m (Lcom/mojang/brigadier/StringReader;Z)Ljava/lang/Float; b method_9176 readNumber + m ()Ljava/lang/Float; c comp_1841 max + m (F)Lek; c method_35408 atMost + m (Lcom/mojang/brigadier/StringReader;Z)Z c method_9173 isAllowedNumber + m (F)Z d method_35409 matches + m (Ljava/lang/Float;Ljava/lang/Float;)V + m ()V +c el net/minecraft/class_6129 net/minecraft/advancements/critereon/package-info +c em net/minecraft/class_6132 net/minecraft/advancements/package-info +c en net/minecraft/class_2156 net/minecraft/commands/BrigadierExceptions + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; A field_9790 DISPATCHER_PARSE_EXCEPTION + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; a field_9799 DOUBLE_TOO_SMALL + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_9788 DOUBLE_TOO_BIG + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; c field_9802 FLOAT_TOO_SMALL + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; d field_9795 FLOAT_TOO_BIG + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; e field_9784 INTEGER_TOO_SMALL + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; f field_9793 INTEGER_TOO_BIG + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; g field_18140 LONG_TOO_SMALL + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; h field_18141 LONG_TOO_BIG + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; i field_9796 LITERAL_INCORRECT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; j field_9783 READER_EXPECTED_START_OF_QUOTE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; k field_9803 READER_EXPECTED_END_OF_QUOTE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; l field_9791 READER_INVALID_ESCAPE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; m field_9789 READER_INVALID_BOOL + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; n field_9786 READER_INVALID_INT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; o field_9801 READER_EXPECTED_INT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; p field_18142 READER_INVALID_LONG + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; q field_18143 READER_EXPECTED_LONG + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; r field_9800 READER_INVALID_DOUBLE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; s field_9798 READER_EXPECTED_DOUBLE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; t field_9804 READER_INVALID_FLOAT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; u field_9787 READER_EXPECTED_FLOAT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; v field_9794 READER_EXPECTED_BOOL + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; w field_9785 READER_EXPECTED_SYMBOL + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; x field_9797 DISPATCHER_UNKNOWN_COMMAND + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; y field_9792 DISPATCHER_UNKNOWN_ARGUMENT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; z field_9782 DISPATCHER_EXPECTED_ARGUMENT_SEPARATOR + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9184 method_9184 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_18479 method_18479 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9188 method_9188 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_18480 method_18480 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_9179 method_9179 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_9186 method_9186 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_9182 method_9182 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_9190 method_9190 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; e method_18481 method_18481 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; e method_9178 method_9178 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; f method_9181 method_9181 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; f method_9180 method_9180 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; g method_9185 method_9185 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; g method_9183 method_9183 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; h method_9191 method_9191 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; h method_9187 method_9187 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; i method_9189 method_9189 + m ()V + m ()V +c eo net/minecraft/class_2159 net/minecraft/commands/CacheableFunction + f Lcom/mojang/serialization/Codec; a field_47409 CODEC + f Lakr; b field_9807 id + f Z c field_9810 resolved + f Ljava/util/Optional; d field_9808 function + m ()Lakr; a method_9197 getId + m (Lalg;)Ljava/util/Optional; a method_9196 get + m (Lakr;)V + m ()V +c ep net/minecraft/class_7157 net/minecraft/commands/CommandBuildContext + m (Ljo$a;Lcpl;)Lep; a method_46722 simple +c ep$1 net/minecraft/class_7157$1 net/minecraft/commands/CommandBuildContext$1 + f Ljo$a; a field_40908 val$access + f Lcpl; b field_40909 val$enabledFeatures + m (Lcpl;Ljo$b;)Ljo$b; a method_56810 method_56810 + m (Ljo$a;Lcpl;)V +c eq net/minecraft/class_8935 net/minecraft/commands/CommandResultCallback + f Leq; a field_47158 EMPTY + m (Leq;Leq;ZI)V a method_54880 method_54880 + m ()V +c eq$1 net/minecraft/class_8935$1 net/minecraft/commands/CommandResultCallback$1 + m ()V +c er net/minecraft/class_7448 net/minecraft/commands/CommandSigningContext + f Ler; a field_39901 ANONYMOUS + m (Ljava/lang/String;)Lxp; a method_44907 getArgument + m ()V +c er$1 net/minecraft/class_7448$1 net/minecraft/commands/CommandSigningContext$1 + m ()V +c er$a net/minecraft/class_7448$class_7449 net/minecraft/commands/CommandSigningContext$SignedArguments + f Ljava/util/Map; b comp_971 arguments + m ()Ljava/util/Map; a comp_971 arguments + m (Ljava/util/Map;)V +c es net/minecraft/class_2165 net/minecraft/commands/CommandSource + f Les; a field_17395 NULL + m ()Z M_ method_9201 shouldInformAdmins + m (Lwz;)V a method_43496 sendSystemMessage + m ()Z k_ method_9200 acceptsSuccess + m ()Z l_ method_36320 alwaysAccepts + m ()Z w_ method_9202 acceptsFailure + m ()V +c es$1 net/minecraft/class_2165$1 net/minecraft/commands/CommandSource$1 + m ()V +c et net/minecraft/class_2168 net/minecraft/commands/CommandSourceStack + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_9824 ERROR_NOT_PLAYER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_9827 ERROR_NOT_ENTITY + f Les; c field_9819 source + f Lexc; d field_9817 worldPosition + f Laqu; e field_9828 level + f I f field_9815 permissionLevel + f Ljava/lang/String; g field_9826 textName + f Lwz; h field_9825 displayName + f Lnet/minecraft/server/MinecraftServer; i field_9818 server + f Z j field_9823 silent + f Lbsr; k field_9820 entity + f Leq; l field_47159 resultCallback + f Lff$a; m field_9816 anchor + f Lexb; n field_9822 rotation + f Ler; o field_39183 signingContext + f Lazm; p field_39834 chatMessageChainer + m ()Let; a method_9217 withSuppressedOutput + m (I)Let; a method_9206 withPermission + m (Laqu;)Let; a method_9227 withLevel + m (Laqv;)Z a method_45067 shouldFilterMessageTo + m (Lbsr;)Let; a method_9232 withEntity + m (Lbsr;Lff$a;)Let; a method_9220 facing + m (Leq;)Let; a method_9231 withCallback + m (Leq;Ljava/util/function/BinaryOperator;)Let; a method_9209 withCallback + m (Ler;Lazm;)Let; a method_43735 withSigningContext + m (Les;)Let; a method_36321 withSource + m (Lexb;)Let; a method_9216 withRotation + m (Lexc;)Let; a method_9208 withPosition + m (Ley$a;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljz;)Ljava/util/concurrent/CompletableFuture; a method_41212 method_41212 + m (Lff$a;)Let; a method_9218 withAnchor + m (Ljava/util/function/Supplier;Z)V a method_9226 sendSuccess + m (Lwz;)V a method_45068 sendSystemMessage + m (Lxo;ZLwv$a;)V a method_44749 sendChatMessage + m ()Lwz; b method_9223 getDisplayName + m (I)Let; b method_9230 withMaximumPermission + m (Lexc;)Let; b method_9221 facing + m (Lwz;)V b method_9213 sendFailure + m ()Ljava/lang/String; c method_9214 getTextName + m (Lwz;)V c method_9212 broadcastToAdmins + m ()Lexc; d method_9222 getPosition + m ()Laqu; e method_9225 getLevel + m ()Lbsr; f method_9228 getEntity + m ()Lbsr; g method_9229 getEntityOrException + m ()Laqv; h method_9207 getPlayerOrException + m ()Laqv; i method_44023 getPlayer + m ()Z j method_43737 isPlayer + m ()Lexb; k method_9210 getRotation + m ()Lnet/minecraft/server/MinecraftServer; l method_9211 getServer + m ()Lff$a; m method_9219 getAnchor + m ()Ler; n method_43738 getSigningContext + m ()Lazm; o method_44909 getChatMessageChainer + m (Les;Lexc;Lexb;Laqu;ILjava/lang/String;Lwz;Lnet/minecraft/server/MinecraftServer;Lbsr;)V + m (Les;Lexc;Lexb;Laqu;ILjava/lang/String;Lwz;Lnet/minecraft/server/MinecraftServer;Lbsr;ZLeq;Lff$a;Ler;Lazm;)V + m ()V +c eu net/minecraft/class_2170 net/minecraft/commands/Commands + f I a field_31837 LEVEL_ALL + f I b field_31838 LEVEL_MODERATORS + f I c field_31839 LEVEL_GAMEMASTERS + f I d field_31840 LEVEL_ADMINS + f I e field_31841 LEVEL_OWNERS + f Ljava/lang/ThreadLocal; f field_46823 CURRENT_EXECUTION_CONTEXT + f Lorg/slf4j/Logger; g field_9833 LOGGER + f Lcom/mojang/brigadier/CommandDispatcher; h field_9832 dispatcher + m ()Lcom/mojang/brigadier/CommandDispatcher; a method_9235 getDispatcher + m (Laqv;)V a method_9241 sendCommands + m (Lcom/mojang/brigadier/CommandDispatcher;Lcom/mojang/brigadier/tree/CommandNode;Lcom/mojang/brigadier/tree/CommandNode;Lcom/mojang/brigadier/tree/CommandNode;Ljava/util/Collection;)V a method_41710 method_41710 + m (Lcom/mojang/brigadier/ParseResults;)V a method_54312 validateParseResults + m (Lcom/mojang/brigadier/ParseResults;Ljava/lang/String;)V a method_9249 performCommand + m (Lcom/mojang/brigadier/ParseResults;Ljava/lang/String;Let;)Lcom/mojang/brigadier/context/ContextChain; a method_54492 finishParsing + m (Lcom/mojang/brigadier/ParseResults;Ljava/util/function/UnaryOperator;)Lcom/mojang/brigadier/ParseResults; a method_45018 mapSource + m (Lcom/mojang/brigadier/arguments/ArgumentType;)Ljava/lang/String; a method_30851 method_30851 + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_9246 method_9246 + m (Lcom/mojang/brigadier/tree/CommandNode;Lcom/mojang/brigadier/tree/CommandNode;Let;Ljava/util/Map;)V a method_9239 fillUsableCommands + m (Let;Ljava/lang/String;)V a method_44252 performPrefixedCommand + m (Let;Ljava/util/function/Consumer;)V a method_54313 executeCommandInContext + m (Leu$b;)Ljava/util/function/Predicate; a method_9238 createValidator + m (Leu$b;Ljava/lang/String;)Z a method_9240 method_9240 + m (Ley;)Z a method_9245 method_9245 + m (Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; a method_9247 literal + m (Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; a method_9244 argument + m (Ljava/lang/String;Lcom/mojang/brigadier/context/ContextChain;Let;Lhs;)V a method_54314 method_54314 + m (Ljava/lang/String;Lxw;)Lxw; a method_54493 method_54493 + m (Ljo$a;)Lep; a method_46732 createValidationContext + m (Lxn;Lxw;)Lxw; a method_9242 method_9242 + m ()V b method_30852 validate + m (Lcom/mojang/brigadier/ParseResults;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; b method_23917 getParseException + m (Lcom/mojang/brigadier/arguments/ArgumentType;)Z b method_30853 method_30853 + m (Ljava/lang/String;)Ljava/lang/String; b method_44253 method_44253 + m (Lcom/mojang/brigadier/ParseResults;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; c method_54494 method_54494 + m (Leu$a;Lep;)V + m ()V +c eu$1 net/minecraft/class_2170$1 net/minecraft/commands/Commands$1 + f Ljo$a; a field_40921 val$registries + m (Ljo$b;)Ljo$b$a; a method_56811 createLookup + m (Ljo$a;)V +c eu$1$1 net/minecraft/class_2170$1$1 net/minecraft/commands/Commands$1$1 + f Ljo$b; a field_40922 val$original + m (Lawu;)Ljq$c; c method_46734 method_46734 + m (Leu$1;Ljo$b;)V +c eu$a net/minecraft/class_2170$class_5364 net/minecraft/commands/Commands$CommandSelection + f Leu$a; a field_25419 ALL + f Leu$a; b field_25420 DEDICATED + f Leu$a; c field_25421 INTEGRATED + f Z d field_25422 includeIntegrated + f Z e field_25423 includeDedicated + f [Leu$a; f field_25424 $VALUES + m ()[Leu$a; a method_36791 $values + m (Ljava/lang/String;IZZ)V + m ()V +c eu$b net/minecraft/class_2170$class_2171 net/minecraft/commands/Commands$ParseFunction +c ev net/minecraft/class_8839 net/minecraft/commands/ExecutionCommandSource + m (Lcom/mojang/brigadier/context/CommandContext;ZI)V a method_54316 method_54316 + m (Lcom/mojang/brigadier/exceptions/CommandExceptionType;Lcom/mojang/brigadier/Message;ZLhv;)V a method_54491 handleError + m (Lcom/mojang/brigadier/exceptions/CommandSyntaxException;ZLhv;)V a method_54495 handleError + m ()Lev; a_ method_54311 clearCallbacks + m (Leq;)Lev; b method_54307 withCallback + m ()Lcom/mojang/brigadier/ResultConsumer; b_ method_54317 resultConsumer + m (I)Z c method_9259 hasPermission + m ()Leq; p method_54881 callback + m ()Lcom/mojang/brigadier/CommandDispatcher; x method_54310 dispatcher + m ()Z y method_54882 isSilent +c ew net/minecraft/class_8643 net/minecraft/commands/FunctionInstantiationException + f Lwz; a field_45154 messageComponent + m ()Lwz; a method_52600 messageComponent + m (Lwz;)V +c ex net/minecraft/class_9010 net/minecraft/commands/ParserUtils + f Ljava/lang/reflect/Field; a field_47525 JSON_READER_POS + f Ljava/lang/reflect/Field; b field_47526 JSON_READER_LINESTART + m ()Ljava/lang/reflect/Field; a method_55375 method_55375 + m (Lcom/google/gson/stream/JsonReader;)I a method_55376 getPos + m (Lcom/mojang/brigadier/StringReader;Lm;)Ljava/lang/String; a method_58128 readWhile + m (Ljo$a;Lcom/mojang/brigadier/StringReader;Lcom/mojang/serialization/Codec;)Ljava/lang/Object; a method_55377 parseJson + m ()Ljava/lang/reflect/Field; b method_55378 method_55378 + m ()V + m ()V +c ey net/minecraft/class_2172 net/minecraft/commands/SharedSuggestionProvider + m ()Ljava/util/Collection; A method_9269 getSelectedEntities + m ()Ljava/util/Collection; B method_17771 getRelevantCoordinates + m ()Ljava/util/Collection; C method_17772 getAbsoluteCoordinates + m (Lakq;Ley$a;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/concurrent/CompletableFuture; a method_41213 suggestRegistryElements + m (Lakr;)Lakr; a method_9263 method_9263 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/concurrent/CompletableFuture; a method_9261 customSuggestion + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Lakr;)V a method_9275 method_9275 + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/lang/String;Lakr;)V a method_9266 method_9266 + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/Object;)V a method_9256 method_9256 + m (Ljava/lang/Iterable;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9270 suggestResource + m (Ljava/lang/Iterable;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_9258 suggestResource + m (Ljava/lang/Iterable;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; a method_9255 suggestResource + m (Ljava/lang/Iterable;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Function;Ljava/util/function/Consumer;)V a method_9250 filterResources + m (Ljava/lang/Iterable;Ljava/lang/String;Ljava/util/function/Function;Ljava/util/function/Consumer;)V a method_9268 filterResources + m (Ljava/lang/String;Ljava/lang/String;)Z a method_27136 matchesSubStr + m (Ljava/lang/String;Ljava/util/Collection;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Predicate;)Ljava/util/concurrent/CompletableFuture; a method_9260 suggestCoordinates + m (Ljava/util/stream/Stream;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9257 suggestResource + m (Ljava/util/stream/Stream;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_40182 suggestResource + m (Ljava/util/stream/Stream;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; a method_9271 suggestResource + m (Ljz;Ley$a;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)V a method_41214 suggestRegistryElements + m ([Ljava/lang/String;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9253 suggest + m (Lakr;)Lakr; b method_9251 method_9251 + m (Ljava/lang/Iterable;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_9265 suggest + m (Ljava/lang/Iterable;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; b method_35510 suggest + m (Ljava/lang/String;Ljava/lang/String;)Z b method_9272 method_9272 + m (Ljava/lang/String;Ljava/util/Collection;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Predicate;)Ljava/util/concurrent/CompletableFuture; b method_9252 suggest2DCoordinates + m (Ljava/util/stream/Stream;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_9264 suggest + m (I)Z c method_9259 hasPermission + m ()Ljava/util/Collection; q method_9262 getOnlinePlayerNames + m ()Ljava/util/Collection; r method_9267 getAllTeams + m ()Ljava/util/stream/Stream; s method_9254 getAvailableSounds + m ()Ljava/util/stream/Stream; t method_9273 getRecipeNames + m ()Ljava/util/Set; u method_29310 levels + m ()Lka; v method_30497 registryAccess + m ()Lcpl; w method_45549 enabledFeatures + m ()Ljava/util/Collection; z method_44750 getCustomTabSugggestions +c ey$a net/minecraft/class_2172$class_7078 net/minecraft/commands/SharedSuggestionProvider$ElementSuggestionType + f Ley$a; a field_37262 TAGS + f Ley$a; b field_37263 ELEMENTS + f Ley$a; c field_37264 ALL + f [Ley$a; d field_37265 $VALUES + m ()Z a method_41215 shouldSuggestTags + m ()Z b method_41216 shouldSuggestElements + m ()[Ley$a; c method_41217 $values + m (Ljava/lang/String;I)V + m ()V +c ey$b net/minecraft/class_2172$class_2173 net/minecraft/commands/SharedSuggestionProvider$TextCoordinates + f Ley$b; a field_9834 DEFAULT_LOCAL + f Ley$b; b field_9838 DEFAULT_GLOBAL + f Ljava/lang/String; c field_9835 x + f Ljava/lang/String; d field_9836 y + f Ljava/lang/String; e field_9837 z + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + m ()V +c ez net/minecraft/class_5473 net/minecraft/commands/arguments/AngleArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_26368 ERROR_NOT_COMPLETE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_27345 ERROR_INVALID_ANGLE + f Ljava/util/Collection; c field_26369 EXAMPLES + m ()Lez; a method_30658 angle + m (Lcom/mojang/brigadier/StringReader;)Lez$a; a method_30659 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F a method_30660 getAngle + m ()V + m ()V +c ez$a net/minecraft/class_5473$class_5474 net/minecraft/commands/arguments/AngleArgument$SingleAngle + f F a field_26370 angle + f Z b field_26371 isRelative + m (Let;)F a method_30661 getAngle + m (FZ)V +c fa net/minecraft/class_7450 net/minecraft/commands/arguments/ArgumentSignatures + f Lfa; a field_39807 EMPTY + f Ljava/util/List; b comp_912 entries + f I c field_39418 MAX_ARGUMENT_COUNT + f I d field_39185 MAX_ARGUMENT_NAME_LENGTH + m ()Ljava/util/List; a comp_912 entries + m (Lfa$b;Lxr$a;)Lfa$a; a method_45561 method_45561 + m (Lvw;)V a method_43749 write + m (Lvw;Lfa$a;)V a method_44799 method_44799 + m (Lxr;Lfa$b;)Lfa; a method_44797 signCommand + m (Lvw;)V + m (Ljava/util/List;)V + m ()V +c fa$a net/minecraft/class_7450$class_7599 net/minecraft/commands/arguments/ArgumentSignatures$Entry + f Ljava/lang/String; a comp_913 name + f Lxl; b comp_914 signature + m ()Ljava/lang/String; a comp_913 name + m (Lvw;)V a method_44800 write + m ()Lxl; b comp_914 signature + m (Lvw;)V + m (Ljava/lang/String;Lxl;)V +c fa$b net/minecraft/class_7450$class_7600 net/minecraft/commands/arguments/ArgumentSignatures$Signer +c fb net/minecraft/class_2177 net/minecraft/commands/arguments/ColorArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_9840 ERROR_INVALID_VALUE + f Ljava/util/Collection; b field_9839 EXAMPLES + m ()Lfb; a method_9276 color + m (Lcom/mojang/brigadier/StringReader;)Ln; a method_9279 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ln; a method_9277 getColor + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9278 method_9278 + m ()V + m ()V +c fc net/minecraft/class_2178 net/minecraft/commands/arguments/ComponentArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_9842 ERROR_INVALID_JSON + f Ljava/util/Collection; b field_9841 EXAMPLES + f Ljo$a; c field_48917 registries + m (Lcom/mojang/brigadier/StringReader;)Lwz; a method_9283 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lwz; a method_9280 getComponent + m (Lep;)Lfc; a method_9281 textComponent + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9282 method_9282 + m (Ljo$a;)V + m ()V +c fd net/minecraft/class_2179 net/minecraft/commands/arguments/CompoundTagArgument + f Ljava/util/Collection; a field_9843 EXAMPLES + m ()Lfd; a method_9284 compoundTag + m (Lcom/mojang/brigadier/StringReader;)Lub; a method_9286 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lub; a method_9285 getCompoundTag + m ()V + m ()V +c fe net/minecraft/class_2181 net/minecraft/commands/arguments/DimensionArgument + f Ljava/util/Collection; a field_9844 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_9845 ERROR_INVALID_VALUE + m ()Lfe; a method_9288 dimension + m (Lakq;)Ljava/lang/String; a method_9291 method_9291 + m (Lcom/mojang/brigadier/StringReader;)Lakr; a method_9287 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Laqu; a method_9289 getDimension + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9290 method_9290 + m ()V + m ()V +c ff net/minecraft/class_2183 net/minecraft/commands/arguments/EntityAnchorArgument + f Ljava/util/Collection; a field_9847 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_9846 ERROR_INVALID + m ()Lff; a method_9295 anchor + m (Lcom/mojang/brigadier/StringReader;)Lff$a; a method_9292 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lff$a; a method_9294 getAnchor + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9293 method_9293 + m ()V + m ()V +c ff$a net/minecraft/class_2183$class_2184 net/minecraft/commands/arguments/EntityAnchorArgument$Anchor + f Lff$a; a field_9853 FEET + f Lff$a; b field_9851 EYES + f Ljava/util/Map; c field_9852 BY_NAME + f Ljava/lang/String; d field_9849 name + f Ljava/util/function/BiFunction; e field_9848 transform + f [Lff$a; f field_9850 $VALUES + m ()[Lff$a; a method_36814 $values + m (Lbsr;)Lexc; a method_9302 apply + m (Let;)Lexc; a method_9299 apply + m (Lexc;Lbsr;)Lexc; a method_9298 method_9298 + m (Ljava/lang/String;)Lff$a; a method_9296 getByName + m (Ljava/util/HashMap;)V a method_9297 method_9297 + m (Lexc;Lbsr;)Lexc; b method_9300 method_9300 + m (Ljava/lang/String;ILjava/lang/String;Ljava/util/function/BiFunction;)V + m ()V +c fg net/minecraft/class_2186 net/minecraft/commands/arguments/EntityArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_9860 ERROR_NOT_SINGLE_ENTITY + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_9864 ERROR_NOT_SINGLE_PLAYER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_9861 ERROR_ONLY_PLAYERS_ALLOWED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_9863 NO_ENTITIES_FOUND + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_9856 NO_PLAYERS_FOUND + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; f field_9862 ERROR_SELECTORS_NOT_ALLOWED + f Ljava/util/Collection; g field_9859 EXAMPLES + f Z h field_9858 single + f Z i field_9857 playersOnly + m ()Lfg; a method_9309 entity + m (Lcom/mojang/brigadier/StringReader;)Lhi; a method_61178 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/Object;)Lhi; a method_61179 parse + m (Lcom/mojang/brigadier/StringReader;Z)Lhi; a method_9318 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lbsr; a method_9313 getEntity + m (Ley;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)V a method_9311 method_9311 + m ()Lfg; b method_9306 entities + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; b method_9317 getEntities + m ()Lfg; c method_9305 player + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; c method_9307 getOptionalEntities + m ()Lfg; d method_9308 players + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; d method_9310 getOptionalPlayers + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Laqv; e method_9315 getPlayer + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; f method_9312 getPlayers + m (ZZ)V + m ()V +c fg$a net/minecraft/class_2186$class_2187 net/minecraft/commands/arguments/EntityArgument$Info + f B a field_37850 FLAG_SINGLE + f B b field_37851 FLAG_PLAYERS_ONLY + m (Lfg$a$a;Lcom/google/gson/JsonObject;)V a method_9319 serializeToJson + m (Lfg$a$a;Lvw;)V a method_9320 serializeToNetwork + m (Lfg;)Lfg$a$a; a method_41727 unpack + m (Lvw;)Lfg$a$a; a method_9321 deserializeFromNetwork + m ()V +c fg$a$a net/minecraft/class_2186$class_2187$class_7171 net/minecraft/commands/arguments/EntityArgument$Info$Template + f Lfg$a; a field_37852 field_37852 + f Z b field_37853 single + f Z c field_37854 playersOnly + m (Lep;)Lfg; a method_41729 instantiate + m (Lfg$a;ZZ)V +c fh net/minecraft/class_7918 net/minecraft/commands/arguments/GameModeArgument + f Ljava/util/Collection; a field_41088 EXAMPLES + f [Ldct; b field_41089 VALUES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_41090 ERROR_INVALID + m ()Lfh; a method_47383 gameMode + m (Lcom/mojang/brigadier/StringReader;)Ldct; a method_47384 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ldct; a method_47385 getGameMode + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_47386 method_47386 + m ()V + m ()V +c fi net/minecraft/class_2191 net/minecraft/commands/arguments/GameProfileArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_9869 ERROR_UNKNOWN_PLAYER + f Ljava/util/Collection; b field_9868 EXAMPLES + m ()Lfi; a method_9329 gameProfile + m (Lcom/mojang/brigadier/StringReader;)Lfi$a; a method_61180 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/Object;)Lfi$a; a method_61181 parse + m (Lcom/mojang/brigadier/StringReader;Z)Lfi$a; a method_9331 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; a method_9330 getGameProfiles + m (Ley;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)V a method_9332 method_9332 + m (Ljava/lang/String;Let;)Ljava/util/Collection; a method_9328 method_9328 + m ()V + m ()V +c fi$a net/minecraft/class_2191$class_2192 net/minecraft/commands/arguments/GameProfileArgument$Result +c fi$b net/minecraft/class_2191$class_2193 net/minecraft/commands/arguments/GameProfileArgument$SelectorResult + f Lhi; a field_9870 selector + m (Lhi;)V +c fj net/minecraft/class_8199 net/minecraft/commands/arguments/HeightmapTypeArgument + f Lcom/mojang/serialization/Codec; a field_42994 LOWER_CASE_CODEC + m ()Lfj; a method_49542 heightmap + m (I)[Ldyy$a; a method_49543 method_49543 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ldyy$a; a method_49544 getHeightmap + m ()[Ldyy$a; b method_49546 keptTypes + m (Ljava/lang/String;)Ljava/lang/String; b method_49547 method_49547 + m ()V + m ()V +c fk net/minecraft/class_2196 net/minecraft/commands/arguments/MessageArgument + f Ljava/util/Collection; a field_9876 EXAMPLES + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_51482 TOO_LONG + m ()Lfk; a method_9340 message + m (Lcom/mojang/brigadier/StringReader;)Lfk$a; a method_9338 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/Object;)Lfk$a; a method_61182 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lwz; a method_9339 getMessage + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Ljava/util/function/Consumer;)V a method_45562 resolveChatMessage + m (Let;Lxp;)Ljava/util/concurrent/CompletableFuture; a method_45563 filterPlainText + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_59836 method_59836 + m (Ljava/util/function/Consumer;Let;Lxp;)V a method_45566 resolveSignedMessage + m (Lxp;Lwz;Ljava/util/function/Consumer;Larm;)V a method_45568 method_45568 + m (Ljava/util/function/Consumer;Let;Lxp;)V b method_45569 resolveDisguisedMessage + m ()V + m ()V +c fk$a net/minecraft/class_2196$class_2197 net/minecraft/commands/arguments/MessageArgument$Message + f Ljava/lang/String; a comp_2653 text + f [Lfk$b; b comp_2654 parts + m ()Ljava/lang/String; a comp_2653 text + m (Lcom/mojang/brigadier/StringReader;Z)Lfk$a; a method_9342 parseText + m (Let;)Lwz; a method_44268 resolveComponent + m (Let;Z)Lwz; a method_9341 toComponent + m ()[Lfk$b; b comp_2654 parts + m (Ljava/lang/String;[Lfk$b;)V +c fk$b net/minecraft/class_2196$class_2198 net/minecraft/commands/arguments/MessageArgument$Part + f I a comp_2655 start + f I b comp_2656 end + f Lhi; c comp_2657 selector + m ()I a comp_2655 start + m (Let;)Lwz; a method_9345 toComponent + m ()I b comp_2656 end + m ()Lhi; c comp_2657 selector + m (IILhi;)V +c fl net/minecraft/class_2203 net/minecraft/commands/arguments/NbtPathArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_9900 ERROR_INVALID_NODE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_41706 ERROR_DATA_TOO_DEEP + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_9899 ERROR_NOTHING_FOUND + f Ljava/util/Collection; d field_9898 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; e field_41708 ERROR_EXPECTED_LIST + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; f field_41709 ERROR_INVALID_INDEX + f C g field_32182 INDEX_MATCH_START + f C h field_32183 INDEX_MATCH_END + f C i field_32184 KEY_MATCH_START + f C j field_32185 KEY_MATCH_END + f C k field_32186 QUOTED_KEY_START + f C l field_44920 SINGLE_QUOTED_KEY_START + m ()Lfl; a method_9360 nbtPath + m (C)Z a method_9355 isAllowedInUnquotedName + m (Lcom/mojang/brigadier/StringReader;)Lfl$g; a method_9362 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/String;)Lfl$h; a method_9352 readObjectNode + m (Lcom/mojang/brigadier/StringReader;Z)Lfl$h; a method_9361 parseNode + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lfl$g; a method_9358 getPath + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_47969 method_47969 + m (Lub;)Ljava/util/function/Predicate; a method_9359 createTagPredicate + m (Lub;Luy;)Z a method_9353 method_9353 + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/String; b method_9357 readUnquotedName + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_47970 method_47970 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_9356 method_9356 + m ()V + m ()V +c fl$a net/minecraft/class_2203$class_2204 net/minecraft/commands/arguments/NbtPathArgument$AllElementsNode + f Lfl$a; a field_9901 INSTANCE + m ()V + m ()V +c fl$b net/minecraft/class_2203$class_2205 net/minecraft/commands/arguments/NbtPathArgument$CompoundChildNode + f Ljava/lang/String; a field_9902 name + m (Ljava/lang/String;)V +c fl$c net/minecraft/class_2203$class_2206 net/minecraft/commands/arguments/NbtPathArgument$IndexedElementNode + f I a field_9903 index + m (I)V +c fl$d net/minecraft/class_2203$class_2207 net/minecraft/commands/arguments/NbtPathArgument$MatchElementNode + f Lub; a field_9904 pattern + f Ljava/util/function/Predicate; b field_9905 predicate + m (Ljava/util/List;Lorg/apache/commons/lang3/mutable/MutableBoolean;Luy;)V a method_9365 method_9365 + m (Lub;)V +c fl$e net/minecraft/class_2203$class_2208 net/minecraft/commands/arguments/NbtPathArgument$MatchObjectNode + f Ljava/lang/String; a field_9906 name + f Lub; b field_9907 pattern + f Ljava/util/function/Predicate; c field_9908 predicate + m (Ljava/lang/String;Lub;)V +c fl$f net/minecraft/class_2203$class_3707 net/minecraft/commands/arguments/NbtPathArgument$MatchRootObjectNode + f Ljava/util/function/Predicate; a field_16319 predicate + m (Lub;)V +c fl$g net/minecraft/class_2203$class_2209 net/minecraft/commands/arguments/NbtPathArgument$NbtPath + f Lcom/mojang/serialization/Codec; a field_50034 CODEC + f Ljava/lang/String; b field_9909 original + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; c field_9910 nodeToOriginalPosition + f [Lfl$h; d field_9911 nodes + m ()Ljava/lang/String; a method_54100 asString + m (ILub;Ljava/util/List;)I a method_47972 insert + m (Lfl$h;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_9375 createNotFoundException + m (Lfl$h;Lorg/apache/commons/lang3/mutable/MutableBoolean;Luy;Luy;)Ljava/lang/Integer; a method_47973 method_47973 + m (Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer; a method_9370 method_9370 + m (Ljava/lang/String;)Lfl$g; a method_58472 of + m (Ljava/lang/String;Lcom/mojang/brigadier/exceptions/CommandSyntaxException;)Ljava/lang/String; a method_58473 method_58473 + m (Ljava/util/List;Ljava/util/function/Function;)I a method_9371 apply + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Luy;)Luy; a method_47974 method_47974 + m (Luy;)Ljava/util/List; a method_9366 get + m (Luy;I)Z a method_47975 isTooDeep + m (Luy;Ljava/util/function/Supplier;)Ljava/util/List; a method_9367 getOrCreate + m (Luy;Luy;)I a method_35722 set + m ()I b method_47971 estimatePathDepth + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; b method_58474 method_58474 + m (Luy;)I b method_9374 countMatching + m (Luy;)I c method_9372 remove + m (Luy;)Ljava/util/List; d method_9369 getOrCreateParents + m (Ljava/lang/String;[Lfl$h;Lit/unimi/dsi/fastutil/objects/Object2IntMap;)V + m ()V +c fl$h net/minecraft/class_2203$class_2210 net/minecraft/commands/arguments/NbtPathArgument$Node + m ()Luy; a method_9382 createPreferredParentTag + m (Ljava/util/List;)Ljava/util/List; a method_9381 get + m (Ljava/util/List;Ljava/util/function/BiConsumer;)Ljava/util/List; a method_9384 collect + m (Ljava/util/List;Ljava/util/function/Supplier;)Ljava/util/List; a method_9377 getOrCreate + m (Ljava/util/function/Supplier;Luy;Ljava/util/List;)V a method_9379 method_9379 + m (Luy;)I a method_9383 removeTag + m (Luy;Ljava/util/List;)V a method_9378 getTag + m (Luy;Ljava/util/function/Supplier;)I a method_9376 setTag + m (Luy;Ljava/util/function/Supplier;Ljava/util/List;)V a method_9380 getOrCreateTag +c fm net/minecraft/class_2212 net/minecraft/commands/arguments/NbtTagArgument + f Ljava/util/Collection; a field_9918 EXAMPLES + m ()Lfm; a method_9389 nbtTag + m (Lcom/mojang/brigadier/StringReader;)Luy; a method_9388 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Luy; a method_9390 getNbtTag + m ()V + m ()V +c fn net/minecraft/class_2214 net/minecraft/commands/arguments/ObjectiveArgument + f Ljava/util/Collection; a field_9919 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_9922 ERROR_OBJECTIVE_NOT_FOUND + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_9921 ERROR_OBJECTIVE_READ_ONLY + m ()Lfn; a method_9391 objective + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/String; a method_9396 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lexy; a method_9395 getObjective + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9392 method_9392 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lexy; b method_9393 getWritableObjective + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9397 method_9397 + m ()V + m ()V +c fo net/minecraft/class_2216 net/minecraft/commands/arguments/ObjectiveCriteriaArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_9927 ERROR_INVALID_VALUE + f Ljava/util/Collection; b field_9926 EXAMPLES + m ()Lfo; a method_9399 criteria + m (Lavy;Ljava/lang/Object;)Ljava/lang/String; a method_9400 getName + m (Lcom/mojang/brigadier/StringReader;)Leyj; a method_9403 parse + m (Lcom/mojang/brigadier/StringReader;ILjava/lang/String;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_17949 method_17949 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Leyj; a method_9402 getCriteria + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9401 method_9401 + m ()V + m ()V +c fp net/minecraft/class_2218 net/minecraft/commands/arguments/OperationArgument + f Ljava/util/Collection; a field_9929 EXAMPLES + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_9931 ERROR_INVALID_OPERATION + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_9930 ERROR_DIVIDE_BY_ZERO + m ()Lfp; a method_9404 operation + m (II)I a method_9414 method_9414 + m (Lcom/mojang/brigadier/StringReader;)Lfp$a; a method_9412 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lfp$a; a method_9409 getOperation + m (Leye;Leye;)V a method_9410 method_9410 + m (Ljava/lang/String;)Lfp$a; a method_9413 getOperation + m (II)I b method_9411 method_9411 + m (Ljava/lang/String;)Lfp$b; b method_9407 getSimpleOperation + m (II)I c method_9415 method_9415 + m (II)I d method_9408 method_9408 + m (II)I e method_9406 method_9406 + m ()V + m ()V +c fp$a net/minecraft/class_2218$class_2219 net/minecraft/commands/arguments/OperationArgument$Operation +c fp$b net/minecraft/class_2218$class_2220 net/minecraft/commands/arguments/OperationArgument$SimpleOperation +c fq net/minecraft/class_2223 net/minecraft/commands/arguments/ParticleArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_9936 ERROR_UNKNOWN_PARTICLE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_51438 ERROR_INVALID_OPTIONS + f Ljava/util/Collection; c field_9935 EXAMPLES + f Ljo$a; d field_48929 registries + m (Lcom/mojang/brigadier/StringReader;)Llk; a method_9416 parse + m (Lcom/mojang/brigadier/StringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_45582 method_45582 + m (Lcom/mojang/brigadier/StringReader;Ljo$a;)Llk; a method_9418 readParticle + m (Lcom/mojang/brigadier/StringReader;Ljo;)Lll; a method_45583 readParticleType + m (Lcom/mojang/brigadier/StringReader;Lll;Ljo$a;)Llk; a method_9420 readParticle + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Llk; a method_9421 getParticle + m (Lep;)Lfq; a method_9417 particle + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_59751 method_59751 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9419 method_9419 + m (Lep;)V + m ()V +c fr net/minecraft/class_2224 net/minecraft/commands/arguments/RangeArgument + m ()Lfr$b; a method_9422 intRange + m ()Lfr$a; b method_30918 floatRange +c fr$a net/minecraft/class_2224$class_2225 net/minecraft/commands/arguments/RangeArgument$Floats + f Ljava/util/Collection; a field_9937 EXAMPLES + m (Lcom/mojang/brigadier/StringReader;)Ldh$c; a method_9423 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ldh$c; a method_35738 getRange + m ()V + m ()V +c fr$b net/minecraft/class_2224$class_2227 net/minecraft/commands/arguments/RangeArgument$Ints + f Ljava/util/Collection; a field_9938 EXAMPLES + m (Lcom/mojang/brigadier/StringReader;)Ldh$d; a method_9426 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ldh$d; a method_9425 getRange + m ()V + m ()V +c fs net/minecraft/class_7733 net/minecraft/commands/arguments/ResourceArgument + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; a field_40401 ERROR_UNKNOWN_RESOURCE + f Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType; b field_40402 ERROR_INVALID_RESOURCE_TYPE + f Ljava/util/Collection; c field_40403 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_40404 ERROR_NOT_SUMMONABLE_ENTITY + f Lakq; e field_40405 registryKey + f Ljo; f field_40406 registryLookup + m (Lcom/mojang/brigadier/StringReader;)Ljm$c; a method_45600 parse + m (Lcom/mojang/brigadier/StringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_45599 method_45599 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; a method_45601 getAttribute + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Lakq;)Ljm$c; a method_45602 getResource + m (Lep;Lakq;)Lfs; a method_45603 resource + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_45604 method_45604 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_45605 method_45605 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_45606 method_45606 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; b method_45607 getConfiguredFeature + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; c method_45608 getStructure + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; d method_45609 getEntityType + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; e method_45610 getSummonableEntityType + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; f method_45611 getMobEffect + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; g method_45612 getEnchantment + m (Lep;Lakq;)V + m ()V +c fs$a net/minecraft/class_7733$class_7734 net/minecraft/commands/arguments/ResourceArgument$Info + m (Lfs$a$a;Lcom/google/gson/JsonObject;)V a method_45613 serializeToJson + m (Lfs$a$a;Lvw;)V a method_45614 serializeToNetwork + m (Lfs;)Lfs$a$a; a method_45615 unpack + m (Lvw;)Lfs$a$a; a method_45616 deserializeFromNetwork + m ()V +c fs$a$a net/minecraft/class_7733$class_7734$class_7735 net/minecraft/commands/arguments/ResourceArgument$Info$Template + f Lfs$a; a field_40407 field_40407 + f Lakq; b field_40408 registryKey + m (Lep;)Lfs; a method_45617 instantiate + m (Lfs$a;Lakq;)V +c ft net/minecraft/class_7079 net/minecraft/commands/arguments/ResourceKeyArgument + f Ljava/util/Collection; a field_37269 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_37271 ERROR_INVALID_FEATURE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_39191 ERROR_INVALID_STRUCTURE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_39192 ERROR_INVALID_TEMPLATE_POOL + f Lakq; e field_37272 registryKey + m (Lakq;)Lft; a method_41224 key + m (Lcom/mojang/brigadier/StringReader;)Lakq; a method_41218 parse + m (Lcom/mojang/brigadier/context/CommandContext;Lakq;)Ljz; a method_41221 getRegistry + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; a method_41225 getConfiguredFeature + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Lakq;Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType;)Lakq; a method_41220 getRegistryKey + m (Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType;Lakq;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_43775 method_43775 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_43776 method_43776 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; b method_43779 getStructure + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Lakq;Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType;)Ljm$c; b method_43777 resolveKey + m (Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType;Lakq;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; b method_41222 method_41222 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_43778 method_43778 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm$c; c method_43780 getStructureTemplatePool + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_41226 method_41226 + m (Lakq;)V + m ()V +c ft$a net/minecraft/class_7079$class_7080 net/minecraft/commands/arguments/ResourceKeyArgument$Info + m (Lft$a$a;Lcom/google/gson/JsonObject;)V a method_41229 serializeToJson + m (Lft$a$a;Lvw;)V a method_41230 serializeToNetwork + m (Lft;)Lft$a$a; a method_41903 unpack + m (Lvw;)Lft$a$a; a method_41231 deserializeFromNetwork + m ()V +c ft$a$a net/minecraft/class_7079$class_7080$class_7197 net/minecraft/commands/arguments/ResourceKeyArgument$Info$Template + f Lft$a; a field_37916 field_37916 + f Lakq; b field_37917 registryKey + m (Lep;)Lft; a method_41904 instantiate + m (Lft$a;Lakq;)V +c fu net/minecraft/class_2232 net/minecraft/commands/arguments/ResourceLocationArgument + f Ljava/util/Collection; a field_9946 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_9945 ERROR_UNKNOWN_ADVANCEMENT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_9947 ERROR_UNKNOWN_RECIPE + m ()Lfu; a method_9441 id + m (Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_17788 method_17788 + m (Lcom/mojang/brigadier/StringReader;)Lakr; a method_9446 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lag; a method_9439 getAdvancement + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9444 method_9444 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lczb; b method_9442 getRecipe + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9440 method_9440 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lakr; c method_9443 getId + m ()V + m ()V +c fv net/minecraft/class_9433 net/minecraft/commands/arguments/ResourceOrIdArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_50037 ERROR_FAILED_TO_PARSE + f Ljava/util/Collection; b field_50038 EXAMPLES + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_50039 ERROR_INVALID + f Ljo$a; d field_50040 registryLookup + f Z e field_50041 hasRegistry + f Lcom/mojang/serialization/Codec; f field_50042 codec + m (Lcom/mojang/brigadier/StringReader;)Ljm; a method_58479 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/String;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_58480 method_58480 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm; a method_58481 getLootTable + m (Lep;)Lfv$c; a method_58482 lootTable + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_58483 method_58483 + m (Lcom/mojang/brigadier/StringReader;)Luy; b method_58484 parseInlineOrId + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm; b method_58485 getLootModifier + m (Lep;)Lfv$a; b method_58486 lootModifier + m (Lcom/mojang/brigadier/StringReader;)Z c method_58487 hasConsumedWholeArg + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm; c method_58488 getLootPredicate + m (Lep;)Lfv$b; c method_58489 lootPredicate + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljm; d method_58490 getResource + m (Lep;Lakq;Lcom/mojang/serialization/Codec;)V + m ()V +c fv$a net/minecraft/class_9433$class_9434 net/minecraft/commands/arguments/ResourceOrIdArgument$LootModifierArgument + m (Lep;)V +c fv$b net/minecraft/class_9433$class_9435 net/minecraft/commands/arguments/ResourceOrIdArgument$LootPredicateArgument + m (Lep;)V +c fv$c net/minecraft/class_9433$class_9436 net/minecraft/commands/arguments/ResourceOrIdArgument$LootTableArgument + m (Lep;)V +c fw net/minecraft/class_7737 net/minecraft/commands/arguments/ResourceOrTagArgument + f Ljava/util/Collection; a field_40417 EXAMPLES + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_40418 ERROR_UNKNOWN_TAG + f Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType; c field_40419 ERROR_INVALID_TAG_TYPE + f Ljo; d field_40420 registryLookup + f Lakq; e field_40421 registryKey + m (Lakq;Ljm$c;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_45632 method_45632 + m (Lakq;Ljq$c;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_45633 method_45633 + m (Lcom/mojang/brigadier/StringReader;)Lfw$c; a method_45635 parse + m (Lcom/mojang/brigadier/StringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_45634 method_45634 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Lakq;)Lfw$c; a method_45636 getResourceOrTag + m (Lep;Lakq;)Lfw; a method_45637 resourceOrTag + m (Lfw$c;Lakq;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_45638 method_45638 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_45639 method_45639 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_45640 method_45640 + m (Lcom/mojang/brigadier/StringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; b method_45641 method_45641 + m (Lep;Lakq;)V + m ()V +c fw$a net/minecraft/class_7737$class_7738 net/minecraft/commands/arguments/ResourceOrTagArgument$Info + m (Lfw$a$a;Lcom/google/gson/JsonObject;)V a method_45642 serializeToJson + m (Lfw$a$a;Lvw;)V a method_45643 serializeToNetwork + m (Lfw;)Lfw$a$a; a method_45644 unpack + m (Lvw;)Lfw$a$a; a method_45645 deserializeFromNetwork + m ()V +c fw$a$a net/minecraft/class_7737$class_7738$class_7739 net/minecraft/commands/arguments/ResourceOrTagArgument$Info$Template + f Lfw$a; a field_40422 field_40422 + f Lakq; b field_40423 registryKey + m (Lep;)Lfw; a method_45646 instantiate + m (Lfw$a;Lakq;)V +c fw$b net/minecraft/class_7737$class_7740 net/minecraft/commands/arguments/ResourceOrTagArgument$ResourceResult + f Ljm$c; a comp_1023 value + m (Ljm;)Z a method_45649 test + m ()Ljm$c; c comp_1023 value + m (Ljm$c;)V +c fw$c net/minecraft/class_7737$class_7741 net/minecraft/commands/arguments/ResourceOrTagArgument$Result + m ()Lcom/mojang/datafixers/util/Either; a method_45647 unwrap + m (Lakq;)Ljava/util/Optional; a method_45648 cast + m ()Ljava/lang/String; b method_45650 asPrintable +c fw$d net/minecraft/class_7737$class_7742 net/minecraft/commands/arguments/ResourceOrTagArgument$TagResult + f Ljq$c; a comp_1024 tag + m (Ljm;)Z a method_45651 test + m ()Ljq$c; c comp_1024 tag + m (Ljq$c;)V +c fx net/minecraft/class_7066 net/minecraft/commands/arguments/ResourceOrTagKeyArgument + f Ljava/util/Collection; a field_37223 EXAMPLES + f Lakq; b field_37226 registryKey + m (Lakq;)Lfx; a method_41170 resourceOrTagKey + m (Lcom/mojang/brigadier/StringReader;)Lfx$c; a method_41164 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Lakq;Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType;)Lfx$c; a method_41166 getResourceOrTagKey + m (Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType;Lfx$c;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_41167 method_41167 + m (Lakq;)V + m ()V +c fx$a net/minecraft/class_7066$class_7069 net/minecraft/commands/arguments/ResourceOrTagKeyArgument$Info + m (Lfx$a$a;Lcom/google/gson/JsonObject;)V a method_41177 serializeToJson + m (Lfx$a$a;Lvw;)V a method_41178 serializeToNetwork + m (Lfx;)Lfx$a$a; a method_41912 unpack + m (Lvw;)Lfx$a$a; a method_41179 deserializeFromNetwork + m ()V +c fx$a$a net/minecraft/class_7066$class_7069$class_7199 net/minecraft/commands/arguments/ResourceOrTagKeyArgument$Info$Template + f Lfx$a; a field_37928 field_37928 + f Lakq; b field_37929 registryKey + m (Lep;)Lfx; a method_41913 instantiate + m (Lfx$a;Lakq;)V +c fx$b net/minecraft/class_7066$class_7067 net/minecraft/commands/arguments/ResourceOrTagKeyArgument$ResourceResult + f Lakq; a comp_522 key + m (Ljm;)Z a method_41174 test + m ()Lakq; c comp_522 key + m (Lakq;)V +c fx$c net/minecraft/class_7066$class_7068 net/minecraft/commands/arguments/ResourceOrTagKeyArgument$Result + m ()Lcom/mojang/datafixers/util/Either; a method_41173 unwrap + m (Lakq;)Ljava/util/Optional; a method_41175 cast + m ()Ljava/lang/String; b method_41176 asPrintable +c fx$d net/minecraft/class_7066$class_7070 net/minecraft/commands/arguments/ResourceOrTagKeyArgument$TagResult + f Lawu; a comp_523 key + m (Ljm;)Z a method_41180 test + m ()Lawu; c comp_523 key + m (Lawu;)V +c fy net/minecraft/class_2233 net/minecraft/commands/arguments/ScoreHolderArgument + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; a field_9951 SUGGEST_SCORE_HOLDERS + f Ljava/util/Collection; b field_9948 EXAMPLES + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_9950 ERROR_NO_RESULTS + f Z d field_9949 multiple + m ()Lfy; a method_9447 scoreHolder + m (Lcom/mojang/brigadier/StringReader;)Lfy$b; a method_61183 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/Object;)Lfy$b; a method_61184 parse + m (Lcom/mojang/brigadier/StringReader;Z)Lfy$b; a method_9453 parse + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9455 method_9455 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Leyf; a method_9452 getName + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/util/Collection; a method_9450 getNames + m (Let;Ljava/util/function/Supplier;)Ljava/util/Collection; a method_9457 method_9457 + m (Ljava/lang/String;Ljava/util/List;Let;Ljava/util/function/Supplier;)Ljava/util/Collection; a method_55587 method_55587 + m (Ljava/util/List;Let;Ljava/util/function/Supplier;)Ljava/util/Collection; a method_9456 method_9456 + m (Ljava/util/UUID;Ljava/util/List;Let;Ljava/util/function/Supplier;)Ljava/util/Collection; a method_55588 method_55588 + m ()Lfy; b method_9451 scoreHolders + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)V b method_9448 method_9448 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; b method_9458 getNames + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; c method_9449 getNamesWithDefaultWildcard + m (Z)V + m ()V +c fy$a net/minecraft/class_2233$class_2236 net/minecraft/commands/arguments/ScoreHolderArgument$Info + f B a field_37930 FLAG_MULTIPLE + m (Lfy$a$a;Lcom/google/gson/JsonObject;)V a method_9459 serializeToJson + m (Lfy$a$a;Lvw;)V a method_9461 serializeToNetwork + m (Lfy;)Lfy$a$a; a method_41914 unpack + m (Lvw;)Lfy$a$a; a method_9460 deserializeFromNetwork + m ()V +c fy$a$a net/minecraft/class_2233$class_2236$class_7200 net/minecraft/commands/arguments/ScoreHolderArgument$Info$Template + f Lfy$a; a field_37931 field_37931 + f Z b field_37932 multiple + m (Lep;)Lfy; a method_41915 instantiate + m (Lfy$a;Z)V +c fy$b net/minecraft/class_2233$class_2234 net/minecraft/commands/arguments/ScoreHolderArgument$Result +c fy$c net/minecraft/class_2233$class_2235 net/minecraft/commands/arguments/ScoreHolderArgument$SelectorResult + f Lhi; a field_9952 selector + m (Lhi;)V +c fz net/minecraft/class_2239 net/minecraft/commands/arguments/ScoreboardSlotArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_9954 ERROR_INVALID_VALUE + f Ljava/util/Collection; b field_9953 EXAMPLES + m ()Lfz; a method_9468 displaySlot + m (Lcom/mojang/brigadier/StringReader;)Lexx; a method_9466 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lexx; a method_9465 getDisplaySlot + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9467 method_9467 + m ()V + m ()V +c ga net/minecraft/class_7451 net/minecraft/commands/arguments/SignedArgument +c gb net/minecraft/class_2240 net/minecraft/commands/arguments/SlotArgument + f Ljava/util/Collection; a field_9956 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_9955 ERROR_UNKNOWN_SLOT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_49766 ERROR_ONLY_SINGLE_SLOT_ALLOWED + m ()Lgb; a method_9473 slot + m (C)Z a method_58129 method_58129 + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/Integer; a method_9470 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I a method_9469 getSlot + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9472 method_9472 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9471 method_9471 + m ()V + m ()V +c gc net/minecraft/class_9351 net/minecraft/commands/arguments/SlotsArgument + f Ljava/util/Collection; a field_49767 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_49768 ERROR_UNKNOWN_SLOT + m ()Lgc; a method_58130 slots + m (C)Z a method_58131 method_58131 + m (Lcom/mojang/brigadier/StringReader;)Lcrr; a method_58132 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lcrr; a method_58133 getSlots + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_58134 method_58134 + m ()V + m ()V +c gd net/minecraft/class_7485 net/minecraft/commands/arguments/StringRepresentableArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_39361 ERROR_INVALID_VALUE + f Lcom/mojang/serialization/Codec; b field_39362 codec + f Ljava/util/function/Supplier; c field_39363 values + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/Enum; a method_44091 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/String;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_44093 method_44093 + m (Ljava/lang/Object;)Ljava/lang/String; a method_44092 method_44092 + m (Ljava/lang/String;)Ljava/lang/String; a method_49545 convertId + m (Ljava/lang/Object;)Ljava/lang/String; b method_44094 method_44094 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_44095 method_44095 + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Supplier;)V + m ()V +c ge net/minecraft/class_9019 net/minecraft/commands/arguments/StyleArgument + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_47553 ERROR_INVALID_JSON + f Ljava/util/Collection; b field_47554 EXAMPLES + f Ljo$a; c field_48932 registries + m (Lcom/mojang/brigadier/StringReader;)Lxw; a method_55447 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lxw; a method_55448 getStyle + m (Lep;)Lge; a method_55446 style + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_55449 method_55449 + m (Ljo$a;)V + m ()V +c gf net/minecraft/class_2243 net/minecraft/commands/arguments/TeamArgument + f Ljava/util/Collection; a field_9964 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_9963 ERROR_TEAM_NOT_FOUND + m ()Lgf; a method_9482 team + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/String; a method_9483 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Leyb; a method_9480 getTeam + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9481 method_9481 + m ()V + m ()V +c gg net/minecraft/class_7486 net/minecraft/commands/arguments/TemplateMirrorArgument + m ()Lgd; a method_44100 templateMirror + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ldkv; a method_44101 getMirror + m ()V +c gh net/minecraft/class_7487 net/minecraft/commands/arguments/TemplateRotationArgument + m ()Lgh; a method_44102 templateRotation + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ldmm; a method_44103 getRotation + m ()V +c gi net/minecraft/class_2245 net/minecraft/commands/arguments/TimeArgument + f Ljava/util/Collection; a field_9969 EXAMPLES + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_9970 ERROR_INVALID_UNIT + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; c field_41857 ERROR_TICK_COUNT_TOO_LOW + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; d field_9972 UNITS + f I e field_41858 minimum + m ()Lgi; a method_9489 time + m (I)Lgi; a method_48287 time + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/Integer; a method_9490 parse + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9491 method_9491 + m (I)V + m ()V +c gi$a net/minecraft/class_2245$class_8033 net/minecraft/commands/arguments/TimeArgument$Info + m (Lgi$a$a;Lcom/google/gson/JsonObject;)V a method_48288 serializeToJson + m (Lgi$a$a;Lvw;)V a method_48289 serializeToNetwork + m (Lgi;)Lgi$a$a; a method_48290 unpack + m (Lvw;)Lgi$a$a; a method_48291 deserializeFromNetwork + m ()V +c gi$a$a net/minecraft/class_2245$class_8033$class_8034 net/minecraft/commands/arguments/TimeArgument$Info$Template + f Lgi$a; a field_41859 field_41859 + f I b field_41860 min + m (Lep;)Lgi; a method_48292 instantiate + m (Lgi$a;I)V +c gj net/minecraft/class_5242 net/minecraft/commands/arguments/UuidArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_24318 ERROR_INVALID_UUID + f Ljava/util/Collection; b field_24319 EXAMPLES + f Ljava/util/regex/Pattern; c field_24320 ALLOWED_CHARACTERS + m ()Lgj; a method_27643 uuid + m (Lcom/mojang/brigadier/StringReader;)Ljava/util/UUID; a method_27644 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/UUID; a method_27645 getUuid + m ()V + m ()V +c gk net/minecraft/class_2247 net/minecraft/commands/arguments/blocks/BlockInput + f Ldtc; a field_10632 state + f Ljava/util/Set; b field_10631 properties + f Lub; c field_10633 tag + m ()Ldtc; a method_9494 getState + m (Laqu;Ljd;)Z a method_35758 test + m (Laqu;Ljd;I)Z a method_9495 place + m (Ldtg;)Z a method_9493 test + m ()Ljava/util/Set; b method_35759 getDefinedProperties + m (Ldtc;Ljava/util/Set;Lub;)V +c gl net/minecraft/class_2252 net/minecraft/commands/arguments/blocks/BlockPredicateArgument + f Ljava/util/Collection; a field_10672 EXAMPLES + f Ljo; b field_37963 blocks + m (Lcom/mojang/brigadier/StringReader;)Lgl$b; a method_9642 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/function/Predicate; a method_9644 getBlockPredicate + m (Lep;)Lgl; a method_9645 blockPredicate + m (Lgn$a;)Lgl$b; a method_41951 method_41951 + m (Lgn$b;)Lgl$b; a method_41952 method_41952 + m (Ljo;Lcom/mojang/brigadier/StringReader;)Lgl$b; a method_41953 parse + m (Lep;)V + m ()V +c gl$a net/minecraft/class_2252$class_2253 net/minecraft/commands/arguments/blocks/BlockPredicateArgument$BlockPredicate + f Ldtc; a field_10674 state + f Ljava/util/Set; b field_10673 properties + f Lub; c field_10675 nbt + m (Ldtg;)Z a method_9648 test + m (Ldtc;Ljava/util/Set;Lub;)V +c gl$b net/minecraft/class_2252$class_2254 net/minecraft/commands/arguments/blocks/BlockPredicateArgument$Result + m ()Z a method_38559 requiresNbt +c gl$c net/minecraft/class_2252$class_2255 net/minecraft/commands/arguments/blocks/BlockPredicateArgument$TagPredicate + f Ljq; a field_10676 tag + f Lub; b field_10677 nbt + f Ljava/util/Map; c field_10678 vagueProperties + m (Ldtg;)Z a method_9649 test + m (Ljq;Ljava/util/Map;Lub;)V +c gm net/minecraft/class_2257 net/minecraft/commands/arguments/blocks/BlockStateArgument + f Ljava/util/Collection; a field_10679 EXAMPLES + f Ljo; b field_37964 blocks + m (Lcom/mojang/brigadier/StringReader;)Lgk; a method_9654 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lgk; a method_9655 getBlock + m (Lep;)Lgm; a method_9653 block + m (Lep;)V + m ()V +c gn net/minecraft/class_2259 net/minecraft/commands/arguments/blocks/BlockStateParser + f Ljava/util/function/Function; A field_10696 suggestions + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_10691 ERROR_NO_TAGS_ALLOWED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_10690 ERROR_UNKNOWN_BLOCK + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; c field_10695 ERROR_UNKNOWN_PROPERTY + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; d field_10692 ERROR_DUPLICATE_PROPERTY + f Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType; e field_10683 ERROR_INVALID_VALUE + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; f field_10688 ERROR_EXPECTED_VALUE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; g field_10684 ERROR_EXPECTED_END_OF_PROPERTIES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; h field_37965 ERROR_UNKNOWN_TAG + f C i field_32800 SYNTAX_START_PROPERTIES + f C j field_32801 SYNTAX_START_NBT + f C k field_32802 SYNTAX_END_PROPERTIES + f C l field_32803 SYNTAX_EQUALS + f C m field_32804 SYNTAX_PROPERTY_SEPARATOR + f C n field_32805 SYNTAX_TAG + f Ljava/util/function/Function; o field_10682 SUGGEST_NOTHING + f Ljo; p field_37966 blocks + f Lcom/mojang/brigadier/StringReader; q field_10698 reader + f Z r field_10687 forTesting + f Z s field_37967 allowNbt + f Ljava/util/Map; t field_10699 properties + f Ljava/util/Map; u field_10685 vagueProperties + f Lakr; v field_10697 id + f Ldtd; w field_10689 definition + f Ldtc; x field_10686 state + f Lub; y field_10693 nbt + f Ljq; z field_10681 tag + m ()V a method_9678 parse + m (I)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_17956 method_17956 + m (ILakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_41954 method_41954 + m (Lakq;)Ljava/lang/String; a method_41959 method_41959 + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9671 suggestPropertyNameOrEnd + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Lduf;)Lcom/mojang/brigadier/suggestion/SuggestionsBuilder; a method_9662 addSuggestions + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_9690 suggestVaguePropertyValue + m (Ldtc;)Ljava/lang/String; a method_9685 serialize + m (Lduf;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9684 method_9684 + m (Lduf;Ljava/lang/String;I)V a method_9668 setValue + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_41958 method_41958 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9686 method_9686 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9660 method_9660 + m (Ljava/lang/String;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9683 method_9683 + m (Ljava/lang/StringBuilder;Lduf;Ljava/lang/Comparable;)V a method_9663 appendProperty + m (Ljo;Lcom/mojang/brigadier/StringReader;Z)Lgn$a; a method_41955 parseForBlock + m (Ljo;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;ZZ)Ljava/util/concurrent/CompletableFuture; a method_9666 fillSuggestions + m (Ljo;Ljava/lang/String;Z)Lgn$a; a method_41957 parseForBlock + m ()Z b method_9676 hasBlockEntity + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_9674 suggestVaguePropertyNameOrEnd + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9682 method_9682 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9691 method_9691 + m (Ljo;Lcom/mojang/brigadier/StringReader;Z)Lcom/mojang/datafixers/util/Either; b method_41960 parseForTesting + m (Ljo;Ljava/lang/String;Z)Lcom/mojang/datafixers/util/Either; b method_41962 parseForTesting + m ()V c method_9675 readBlock + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; c method_9665 suggestPropertyName + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_9661 method_9661 + m ()V d method_9677 readTag + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; d method_9667 suggestVaguePropertyName + m ()V e method_9659 readProperties + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; e method_9687 suggestOpenNbt + m ()V f method_9680 readVagueProperties + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; f method_9693 suggestEquals + m ()V g method_9672 readNbt + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; g method_9689 suggestNextPropertyOrEnd + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; h method_9679 suggestOpenVaguePropertiesOrNbt + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; i method_9681 suggestOpenPropertiesOrNbt + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; j method_9670 suggestTag + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; k method_41963 suggestItem + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; l method_9673 suggestBlockIdOrTag + m (Ljo;Lcom/mojang/brigadier/StringReader;ZZ)V + m ()V +c gn$a net/minecraft/class_2259$class_7211 net/minecraft/commands/arguments/blocks/BlockStateParser$BlockResult + f Ldtc; a comp_622 blockState + f Ljava/util/Map; b comp_623 properties + f Lub; c comp_624 nbt + m ()Ldtc; a comp_622 blockState + m ()Ljava/util/Map; b comp_623 properties + m ()Lub; c comp_624 nbt + m (Ldtc;Ljava/util/Map;Lub;)V +c gn$b net/minecraft/class_2259$class_7212 net/minecraft/commands/arguments/blocks/BlockStateParser$TagResult + f Ljq; a comp_625 tag + f Ljava/util/Map; b comp_626 vagueProperties + f Lub; c comp_627 nbt + m ()Ljq; a comp_625 tag + m ()Ljava/util/Map; b comp_626 vagueProperties + m ()Lub; c comp_627 nbt + m (Ljq;Ljava/util/Map;Lub;)V +c go net/minecraft/class_6251 net/minecraft/commands/arguments/blocks/package-info +c gp net/minecraft/class_2262 net/minecraft/commands/arguments/coordinates/BlockPosArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_10703 ERROR_NOT_LOADED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_10704 ERROR_OUT_OF_WORLD + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_29499 ERROR_OUT_OF_BOUNDS + f Ljava/util/Collection; d field_10702 EXAMPLES + m ()Lgp; a method_9698 blockPos + m (Lcom/mojang/brigadier/StringReader;)Lgr; a method_9699 parse + m (Lcom/mojang/brigadier/context/CommandContext;Laqu;Ljava/lang/String;)Ljd; a method_48298 getLoadedBlockPos + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljd; a method_9696 getLoadedBlockPos + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljd; b method_48299 getBlockPos + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljd; c method_9697 getSpawnablePos + m ()V + m ()V +c gq net/minecraft/class_2264 net/minecraft/commands/arguments/coordinates/ColumnPosArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_10706 ERROR_NOT_COMPLETE + f Ljava/util/Collection; b field_10705 EXAMPLES + m ()Lgq; a method_9701 columnPos + m (Lcom/mojang/brigadier/StringReader;)Lgr; a method_9703 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Laqi; a method_9702 getColumnPos + m ()V + m ()V +c gr net/minecraft/class_2267 net/minecraft/commands/arguments/coordinates/Coordinates + m ()Z a method_9705 isXRelative + m (Let;)Lexc; a method_9708 getPosition + m ()Z b method_9706 isYRelative + m (Let;)Lexb; b method_9709 getRotation + m ()Z c method_9707 isZRelative + m (Let;)Ljd; c method_9704 getBlockPos +c gs net/minecraft/class_2268 net/minecraft/commands/arguments/coordinates/LocalCoordinates + f C a field_32941 PREFIX_LOCAL_COORDINATE + f D b field_10714 left + f D c field_10713 up + f D d field_10712 forwards + m (Lcom/mojang/brigadier/StringReader;)Lgs; a method_9711 parse + m (Lcom/mojang/brigadier/StringReader;I)D a method_9710 readDouble + m (DDD)V +c gt net/minecraft/class_2270 net/minecraft/commands/arguments/coordinates/RotationArgument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_10736 ERROR_NOT_COMPLETE + f Ljava/util/Collection; b field_10735 EXAMPLES + m ()Lgt; a method_9717 rotation + m (Lcom/mojang/brigadier/StringReader;)Lgr; a method_9718 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lgr; a method_9716 getRotation + m ()V + m ()V +c gu net/minecraft/class_2273 net/minecraft/commands/arguments/coordinates/SwizzleArgument + f Ljava/util/Collection; a field_10740 EXAMPLES + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_10741 ERROR_INVALID + m ()Lgu; a method_9721 swizzle + m (Lcom/mojang/brigadier/StringReader;)Ljava/util/EnumSet; a method_9722 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/EnumSet; a method_9720 getSwizzle + m ()V + m ()V +c gv net/minecraft/class_2274 net/minecraft/commands/arguments/coordinates/Vec2Argument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_10743 ERROR_NOT_COMPLETE + f Ljava/util/Collection; b field_10742 EXAMPLES + f Z c field_10744 centerCorrect + m ()Lgv; a method_9723 vec2 + m (Lcom/mojang/brigadier/StringReader;)Lgr; a method_9725 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lexb; a method_9724 getVec2 + m (Z)Lgv; a method_35802 vec2 + m (Z)V + m ()V +c gw net/minecraft/class_2277 net/minecraft/commands/arguments/coordinates/Vec3Argument + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_10755 ERROR_NOT_COMPLETE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_10757 ERROR_MIXED_TYPE + f Ljava/util/Collection; c field_10754 EXAMPLES + f Z d field_10756 centerCorrect + m ()Lgw; a method_9737 vec3 + m (Lcom/mojang/brigadier/StringReader;)Lgr; a method_9738 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lexc; a method_9736 getVec3 + m (Z)Lgw; a method_9735 vec3 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lgr; b method_9734 getCoordinates + m (Z)V + m ()V +c gx net/minecraft/class_2278 net/minecraft/commands/arguments/coordinates/WorldCoordinate + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_10759 ERROR_EXPECTED_DOUBLE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_10761 ERROR_EXPECTED_INT + f C c field_32972 PREFIX_RELATIVE + f Z d field_10760 relative + f D e field_10758 value + m ()Z a method_9741 isRelative + m (D)D a method_9740 get + m (Lcom/mojang/brigadier/StringReader;)Lgx; a method_9739 parseInt + m (Lcom/mojang/brigadier/StringReader;Z)Lgx; a method_9743 parseDouble + m (Lcom/mojang/brigadier/StringReader;)Z b method_9742 isRelative + m (ZD)V + m ()V +c gy net/minecraft/class_2280 net/minecraft/commands/arguments/coordinates/WorldCoordinates + f Lgx; a field_10765 x + f Lgx; b field_10764 y + f Lgx; c field_10766 z + m (DDD)Lgy; a method_35810 absolute + m (Lcom/mojang/brigadier/StringReader;)Lgy; a method_9749 parseInt + m (Lcom/mojang/brigadier/StringReader;Z)Lgy; a method_9750 parseDouble + m (Lexb;)Lgy; a method_35811 absolute + m ()Lgy; d method_9751 current + m (Lgx;Lgx;Lgx;)V +c gz net/minecraft/class_6271 net/minecraft/commands/arguments/coordinates/package-info +c ha net/minecraft/class_9437 net/minecraft/commands/arguments/item/ComponentPredicateParser + m (Lbmf;Lbmf;Lbmm;)Ljava/lang/Object; a method_58492 method_58492 + m (Lbmf;Lbmf;Lha$b;Lbmf;Lbmk;Lbmm;)Ljava/util/Optional; a method_58493 method_58493 + m (Lbmm;)Lazs; a method_58494 method_58494 + m (Lha$b;)Lbmp; a method_58495 createGrammar + m (Lha$b;Lbmf;Lbmf;Lbmm;)Ljava/util/List; a method_58496 method_58496 + m (Lha$b;Lbmf;Lbmm;)Ljava/lang/Object; a method_58497 method_58497 + m (Ljava/lang/Object;Ljava/util/List;)Ljava/util/List; a method_58498 method_58498 + m (Lbmf;Lbmf;Lbmm;)Ljava/util/List; b method_58499 method_58499 + m (Ljava/lang/Object;Ljava/util/List;)Ljava/util/List; b method_58500 method_58500 + m (Lbmf;Lbmf;Lbmm;)Ljava/util/Optional; c method_58501 method_58501 + m (Lbmf;Lbmf;Lbmm;)Ljava/util/List; d method_58502 method_58502 + m ()V +c ha$a net/minecraft/class_9437$class_9438 net/minecraft/commands/arguments/item/ComponentPredicateParser$ComponentLookupRule + m (Lbmf;Lha$b;)V +c ha$b net/minecraft/class_9437$class_9439 net/minecraft/commands/arguments/item/ComponentPredicateParser$Context + m ()Ljava/util/stream/Stream; a method_58503 listElementTypes + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Ljava/lang/Object; a method_58504 forElementType + m (Lcom/mojang/brigadier/ImmutableStringReader;Ljava/lang/Object;)Ljava/lang/Object; a method_58505 createComponentTest + m (Lcom/mojang/brigadier/ImmutableStringReader;Ljava/lang/Object;Luy;)Ljava/lang/Object; a method_58506 createComponentTest + m (Ljava/lang/Object;)Ljava/lang/Object; a method_58507 negate + m (Ljava/util/List;)Ljava/lang/Object; a method_58508 anyOf + m ()Ljava/util/stream/Stream; b method_58509 listTagTypes + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Ljava/lang/Object; b method_58510 forTagType + m (Lcom/mojang/brigadier/ImmutableStringReader;Ljava/lang/Object;Luy;)Ljava/lang/Object; b method_58511 createPredicateTest + m ()Ljava/util/stream/Stream; c method_58512 listComponentTypes + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Ljava/lang/Object; c method_58513 lookupComponentType + m ()Ljava/util/stream/Stream; d method_58514 listPredicateTypes + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Ljava/lang/Object; d method_58515 lookupPredicateType +c ha$c net/minecraft/class_9437$class_9440 net/minecraft/commands/arguments/item/ComponentPredicateParser$ElementLookupRule + m (Lbmf;Lha$b;)V +c ha$d net/minecraft/class_9437$class_9441 net/minecraft/commands/arguments/item/ComponentPredicateParser$PredicateLookupRule + m (Lbmf;Lha$b;)V +c ha$e net/minecraft/class_9437$class_9442 net/minecraft/commands/arguments/item/ComponentPredicateParser$TagLookupRule + m (Lbmf;Lha$b;)V +c hb net/minecraft/class_2284 net/minecraft/commands/arguments/item/FunctionArgument + f Ljava/util/Collection; a field_10783 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_10782 ERROR_UNKNOWN_TAG + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_10784 ERROR_UNKNOWN_FUNCTION + m ()Lhb; a method_9760 functions + m (Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_17959 method_17959 + m (Lcom/mojang/brigadier/StringReader;)Lhb$a; a method_9764 parse + m (Lcom/mojang/brigadier/context/CommandContext;Lakr;)Lig; a method_9761 getFunction + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/Collection; a method_9769 getFunctions + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9762 method_9762 + m (Lcom/mojang/brigadier/context/CommandContext;Lakr;)Ljava/util/Collection; b method_9767 getFunctionTag + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lcom/mojang/datafixers/util/Pair; b method_9768 getFunctionOrTag + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9765 method_9765 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lcom/mojang/datafixers/util/Pair; c method_55590 getFunctionCollection + m ()V + m ()V +c hb$1 net/minecraft/class_2284$1 net/minecraft/commands/arguments/item/FunctionArgument$1 + f Lakr; a field_10785 val$id + m (Lhb;Lakr;)V +c hb$2 net/minecraft/class_2284$2 net/minecraft/commands/arguments/item/FunctionArgument$2 + f Lakr; a field_10787 val$id + m (Lhb;Lakr;)V +c hb$a net/minecraft/class_2284$class_2285 net/minecraft/commands/arguments/item/FunctionArgument$Result + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; a method_9771 create + m (Lcom/mojang/brigadier/context/CommandContext;)Lcom/mojang/datafixers/util/Pair; b method_9770 unwrap + m (Lcom/mojang/brigadier/context/CommandContext;)Lcom/mojang/datafixers/util/Pair; c method_55591 unwrapToCollection +c hc net/minecraft/class_2287 net/minecraft/commands/arguments/item/ItemArgument + f Ljava/util/Collection; a field_10790 EXAMPLES + f Lhe; b field_48954 parser + m (Lcom/mojang/brigadier/StringReader;)Lhd; a method_9778 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lhd; a method_9777 getItem + m (Lep;)Lhc; a method_9776 item + m (Lep;)V + m ()V +c hd net/minecraft/class_2290 net/minecraft/commands/arguments/item/ItemInput + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; a field_10797 ERROR_STACK_TOO_BIG + f Ljm; b field_10796 item + f Lkn; c field_49570 components + m ()Lcul; a method_9785 getItem + m (IZ)Lcuq; a method_9781 createItemStack + m (Lakr;Luy;)Ljava/lang/String; a method_60378 method_60378 + m (Lcom/mojang/serialization/DynamicOps;Ljava/util/Map$Entry;)Ljava/util/stream/Stream; a method_57800 method_57800 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9784 method_9784 + m (Ljo$a;)Ljava/lang/String; a method_9782 serialize + m ()Ljava/lang/String; b method_41967 getItemName + m (Ljo$a;)Ljava/lang/String; b method_57801 serializeComponents + m ()Ljava/lang/Object; c method_41968 method_41968 + m (Ljm;Lkn;)V + m ()V +c he net/minecraft/class_2291 net/minecraft/commands/arguments/item/ItemParser + f C a field_50044 SYNTAX_START_COMPONENTS + f C b field_50045 SYNTAX_END_COMPONENTS + f C c field_50046 SYNTAX_COMPONENT_SEPARATOR + f C d field_50047 SYNTAX_COMPONENT_ASSIGNMENT + f C e field_51831 SYNTAX_REMOVED_COMPONENT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; f field_50048 ERROR_UNKNOWN_ITEM + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; g field_50049 ERROR_UNKNOWN_COMPONENT + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; h field_50050 ERROR_MALFORMED_COMPONENT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; i field_50051 ERROR_EXPECTED_COMPONENT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; j field_50052 ERROR_REPEATED_COMPONENT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; k field_51458 ERROR_MALFORMED_ITEM + f Ljava/util/function/Function; l field_50053 SUGGEST_NOTHING + f Ljo$b; m field_50054 items + f Lcom/mojang/serialization/DynamicOps; n field_50055 registryOps + m (Lcom/mojang/brigadier/StringReader;)Lhe$a; a method_9789 parse + m (Lcom/mojang/brigadier/StringReader;Lhe$d;)V a method_58517 parse + m (Lcom/mojang/brigadier/StringReader;Ljava/lang/String;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_59768 method_59768 + m (Lcom/mojang/brigadier/StringReader;Ljm;Lkn;)V a method_59769 validateComponents + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_9793 fillSuggestions + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_59770 method_59770 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_58519 method_58519 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_58518 method_58518 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_58520 method_58520 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_58521 method_58521 + m (Ljo$a;)V + m ()V +c he$1 net/minecraft/class_2291$1 net/minecraft/commands/arguments/item/ItemParser$1 + f Lorg/apache/commons/lang3/mutable/MutableObject; a field_48956 val$itemResult + f Lkn$a; b field_49571 val$componentsBuilder + m (Lhe;Lorg/apache/commons/lang3/mutable/MutableObject;Lkn$a;)V +c he$a net/minecraft/class_2291$class_7215 net/minecraft/commands/arguments/item/ItemParser$ItemResult + f Ljm; a comp_628 item + f Lkn; b comp_2439 components + m ()Ljm; a comp_628 item + m ()Lkn; b comp_2439 components + m (Ljm;Lkn;)V +c he$b net/minecraft/class_2291$class_9217 net/minecraft/commands/arguments/item/ItemParser$State + f Lhe; a field_48970 field_48970 + f Lcom/mojang/brigadier/StringReader; b field_48971 reader + f Lhe$d; c field_48972 visitor + m ()V a method_56869 parse + m (ILakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_56873 method_56873 + m (ILkp;Ljava/lang/String;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_57806 method_57806 + m (Lcom/mojang/brigadier/StringReader;)Lkp; a method_57807 readComponentType + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_57808 suggestStartComponents + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_60380 suggestComponent + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/lang/String;Ljava/util/Map$Entry;)V a method_60381 method_60381 + m (Ljava/util/Map$Entry;)Lakr; a method_60382 method_60382 + m (Lkp;)V a method_57811 readComponent + m ()V b method_56872 readItem + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_57812 suggestNextOrEndComponents + m ()V c method_57814 readComponents + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; c method_57813 suggestAssignment + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; d method_56874 suggestItem + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; e method_60383 suggestComponentAssignmentOrRemoval + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; f method_60384 suggestComponent + m (Lhe;Lcom/mojang/brigadier/StringReader;Lhe$d;)V +c he$c net/minecraft/class_2291$class_9218 net/minecraft/commands/arguments/item/ItemParser$SuggestionsVisitor + f Ljava/util/function/Function; a field_48973 suggestions + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Lcom/mojang/brigadier/StringReader;)Ljava/util/concurrent/CompletableFuture; a method_56879 resolveSuggestions + m ()V +c he$d net/minecraft/class_2291$class_9219 net/minecraft/commands/arguments/item/ItemParser$Visitor + m (Ljava/util/function/Function;)V a method_56880 visitSuggestions + m (Ljm;)V a method_56853 visitItem + m (Lkp;)V a method_60379 visitRemovedComponent + m (Lkp;Ljava/lang/Object;)V a method_57802 visitComponent +c hf net/minecraft/class_2293 net/minecraft/commands/arguments/item/ItemPredicateArgument + f Ljava/util/Collection; a field_10812 EXAMPLES + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_50056 ERROR_UNKNOWN_ITEM + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_50057 ERROR_UNKNOWN_TAG + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_50058 ERROR_UNKNOWN_COMPONENT + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; e field_50059 ERROR_MALFORMED_COMPONENT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; f field_50060 ERROR_UNKNOWN_PREDICATE + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; g field_50061 ERROR_MALFORMED_PREDICATE + f Lakr; h field_50062 COUNT_ID + f Ljava/util/Map; i field_50063 PSEUDO_COMPONENTS + f Ljava/util/Map; j field_50064 PSEUDO_PREDICATES + f Lbmp; k field_50065 grammarWithContext + m (Lcom/mojang/brigadier/StringReader;)Lhf$d; a method_9800 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lhf$d; a method_9804 getItemPredicate + m (Lcuq;)Z a method_58522 method_58522 + m (Ldh$d;)Ljava/util/function/Predicate; a method_58523 method_58523 + m (Ldh$d;Lcuq;)Z a method_58524 method_58524 + m (Lep;)Lhf; a method_9801 itemPredicate + m (Lhf$a;)Lhf$a; a method_58525 method_58525 + m (Lhf$c;)Lhf$c; a method_58526 method_58526 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_58527 method_58527 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_58528 method_58528 + m (Ldh$d;)Ljava/util/function/Predicate; b method_58529 method_58529 + m (Ldh$d;Lcuq;)Z b method_58530 method_58530 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_58531 method_58531 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_58532 method_58532 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_58533 method_58533 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_58534 method_58534 + m (Lep;)V + m ()V +c hf$a net/minecraft/class_2293$class_9444 net/minecraft/commands/arguments/item/ItemPredicateArgument$ComponentWrapper + f Lakr; a comp_2527 id + f Ljava/util/function/Predicate; b comp_2528 presenceChecker + f Lcom/mojang/serialization/Decoder; c comp_2529 valueChecker + m ()Lakr; a comp_2527 id + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakp;Luy;)Ljava/util/function/Predicate; a method_58535 decode + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;Lkp;)Lhf$a; a method_58536 create + m (Lcom/mojang/brigadier/ImmutableStringReader;Ljava/lang/String;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_58537 method_58537 + m (Lkp;Lcuq;)Z a method_58538 method_58538 + m (Lkp;Ljava/lang/Object;)Ljava/util/function/Predicate; a method_58539 method_58539 + m (Lkp;Ljava/lang/Object;Lcuq;)Z a method_58540 method_58540 + m ()Ljava/util/function/Predicate; b comp_2528 presenceChecker + m ()Lcom/mojang/serialization/Decoder; c comp_2529 valueChecker + m (Lakr;Ljava/util/function/Predicate;Lcom/mojang/serialization/Decoder;)V +c hf$b net/minecraft/class_2293$class_9445 net/minecraft/commands/arguments/item/ItemPredicateArgument$Context + f Ljo$b; a field_50066 items + f Ljo$b; b field_50067 components + f Ljo$b; c field_50068 predicates + f Lakp; d field_50069 registryOps + m (Lcom/mojang/brigadier/ImmutableStringReader;Lhf$a;)Ljava/util/function/Predicate; a method_58541 createComponentTest + m (Lcom/mojang/brigadier/ImmutableStringReader;Lhf$a;Luy;)Ljava/util/function/Predicate; a method_58542 createComponentTest + m (Lcom/mojang/brigadier/ImmutableStringReader;Lhf$c;Luy;)Ljava/util/function/Predicate; a method_58543 createPredicateTest + m (Ljava/util/function/Predicate;)Ljava/util/function/Predicate; a method_58547 negate + m (Ljm$c;)Lakr; a method_58544 method_58544 + m (Ljm$c;Lcuq;)Z a method_58545 method_58545 + m (Ljq;Lcuq;)Z a method_58546 method_58546 + m (Ljava/util/List;)Ljava/util/function/Predicate; b method_58549 anyOf + m (Ljm$c;)Z b method_58548 method_58548 + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Ljava/util/function/Predicate; e method_58550 forElementType + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Ljava/util/function/Predicate; f method_58551 forTagType + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Lhf$a; g method_58552 lookupComponentType + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Lhf$c; h method_58553 lookupPredicateType + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; i method_58554 method_58554 + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; j method_58555 method_58555 + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; k method_58556 method_58556 + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; l method_58557 method_58557 + m (Ljo$a;)V +c hf$c net/minecraft/class_2293$class_9446 net/minecraft/commands/arguments/item/ItemPredicateArgument$PredicateWrapper + f Lakr; a comp_2530 id + f Lcom/mojang/serialization/Decoder; b comp_2531 type + m ()Lakr; a comp_2530 id + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakp;Luy;)Ljava/util/function/Predicate; a method_58559 decode + m (Lcom/mojang/brigadier/ImmutableStringReader;Ljava/lang/String;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_58560 method_58560 + m (Lct;)Ljava/util/function/Predicate; a method_58558 method_58558 + m ()Lcom/mojang/serialization/Decoder; b comp_2531 type + m (Ljm$c;)V + m (Lakr;Lcom/mojang/serialization/Decoder;)V +c hf$d net/minecraft/class_2293$class_2295 net/minecraft/commands/arguments/item/ItemPredicateArgument$Result +c hg net/minecraft/class_6277 net/minecraft/commands/arguments/item/package-info +c hh net/minecraft/class_6278 net/minecraft/commands/arguments/package-info +c hi net/minecraft/class_2300 net/minecraft/commands/arguments/selector/EntitySelector + f I a field_33068 INFINITE + f Ljava/util/function/BiConsumer; b field_41524 ORDER_ARBITRARY + f Ldxn; c field_27774 ANY_TYPE + f I d field_10822 maxResults + f Z e field_10830 includesEntities + f Z f field_10829 worldLimited + f Ljava/util/List; g field_52308 contextFreePredicates + f Ldh$c; h field_10825 range + f Ljava/util/function/Function; i field_10823 position + f Lewx; j field_10824 aabb + f Ljava/util/function/BiConsumer; k field_10826 order + f Z l field_10828 currentEntity + f Ljava/lang/String; m field_10831 playerName + f Ljava/util/UUID; n field_10821 entityUUID + f Ldxn; o field_10832 type + f Z p field_10827 usesSelector + m ()I a method_9815 getMaxResults + m (Lcpl;Lbsr;)Z a method_61159 method_61159 + m (Let;)Lbsr; a method_9809 findSingleEntity + m (Lewx;Lbsr;)Z a method_9810 method_9810 + m (Lexc;)Lewx; a method_61160 getAbsoluteAabb + m (Lexc;Lbsr;)Z a method_9812 method_9812 + m (Lexc;Lewx;Lcpl;)Ljava/util/function/Predicate; a method_9817 getPredicate + m (Lexc;Ljava/util/List;)Ljava/util/List; a method_9814 sortAndLimit + m (Ljava/util/List;)Lwz; a method_9822 joinNames + m (Ljava/util/List;Laqu;Lewx;Ljava/util/function/Predicate;)V a method_9823 addEntities + m ()Z b method_9819 includesEntities + m (Let;)Ljava/util/List; b method_9816 findEntities + m (Lexc;Ljava/util/List;)V b method_47802 method_47802 + m ()Z c method_9820 isSelfSelector + m (Let;)Laqv; c method_9811 findSinglePlayer + m ()Z d method_9821 isWorldLimited + m (Let;)Ljava/util/List; d method_9813 findPlayers + m ()Z e method_35815 usesSelector + m (Let;)V e method_9818 checkPermissions + m ()I f method_47803 getResultLimit + m (IZZLjava/util/List;Ldh$c;Ljava/util/function/Function;Lewx;Ljava/util/function/BiConsumer;ZLjava/lang/String;Ljava/util/UUID;Lbsx;Z)V + m ()V +c hi$1 net/minecraft/class_2300$1 net/minecraft/commands/arguments/selector/EntitySelector$1 + m (Lbsr;)Lbsr; a method_32203 tryCast + m ()V +c hj net/minecraft/class_2303 net/minecraft/commands/arguments/selector/EntitySelectorParser + f Z A field_10843 includesEntities + f Z B field_10866 worldLimited + f Ldh$c; C field_10838 distance + f Ldh$d; D field_10842 level + f Ljava/lang/Double; E field_10857 x + f Ljava/lang/Double; F field_10872 y + f Ljava/lang/Double; G field_10839 z + f Ljava/lang/Double; H field_10862 deltaX + f Ljava/lang/Double; I field_10852 deltaY + f Ljava/lang/Double; J field_10881 deltaZ + f Lek; K field_10877 rotX + f Lek; L field_10859 rotY + f Ljava/util/List; M field_10870 predicates + f Ljava/util/function/BiConsumer; N field_10847 order + f Z O field_10879 currentEntity + f Ljava/lang/String; P field_10876 playerName + f I Q field_10861 startPosition + f Ljava/util/UUID; R field_10878 entityUUID + f Ljava/util/function/BiFunction; S field_10848 suggestions + f Z T field_10854 hasNameEquals + f Z U field_10874 hasNameNotEquals + f Z V field_10851 isLimited + f Z W field_10873 isSorted + f Z X field_10849 hasGamemodeEquals + f Z Y field_10871 hasGamemodeNotEquals + f Z Z field_10845 hasTeamEquals + f C a field_33069 SYNTAX_SELECTOR_START + f Z aa field_10868 hasTeamNotEquals + f Lbsx; ab field_10863 type + f Z ac field_10865 typeInverse + f Z ad field_10841 hasScores + f Z ae field_10864 hasAdvancements + f Z af field_10840 usesSelectors + f C b field_33070 SYNTAX_OPTIONS_KEY_VALUE_SEPARATOR + f C c field_33071 SYNTAX_NOT + f C d field_33072 SYNTAX_TAG + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_10875 ERROR_INVALID_NAME_OR_UUID + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; f field_10853 ERROR_UNKNOWN_SELECTOR_TYPE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; g field_10880 ERROR_SELECTORS_NOT_ALLOWED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; h field_10844 ERROR_MISSING_SELECTOR_TYPE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; i field_10837 ERROR_EXPECTED_END_OF_OPTIONS + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; j field_10855 ERROR_EXPECTED_OPTION_VALUE + f Ljava/util/function/BiConsumer; k field_10869 ORDER_NEAREST + f Ljava/util/function/BiConsumer; l field_10882 ORDER_FURTHEST + f Ljava/util/function/BiConsumer; m field_10850 ORDER_RANDOM + f Ljava/util/function/BiFunction; n field_10867 SUGGEST_NOTHING + f C o field_33073 SYNTAX_OPTIONS_START + f C p field_33074 SYNTAX_OPTIONS_END + f C q field_33075 SYNTAX_OPTIONS_SEPARATOR + f C r field_33076 SELECTOR_NEAREST_PLAYER + f C s field_33077 SELECTOR_ALL_PLAYERS + f C t field_33078 SELECTOR_RANDOM_PLAYERS + f C u field_33079 SELECTOR_CURRENT_ENTITY + f C v field_33080 SELECTOR_ALL_ENTITIES + f C w field_52174 SELECTOR_NEAREST_ENTITY + f Lcom/mojang/brigadier/StringReader; x field_10860 reader + f Z y field_10846 allowSelectors + f I z field_10858 maxResults + m ()Z A method_9837 hasGamemodeNotEquals + m ()Z B method_9904 hasTeamEquals + m ()Z C method_35816 hasTeamNotEquals + m ()V D method_9860 setTypeLimitedInversely + m ()Z E method_9886 isTypeLimited + m ()Z F method_9910 isTypeLimitedInversely + m ()Z G method_9843 hasScores + m ()Z H method_9861 hasAdvancements + m ()V I method_9878 finalizePredicates + m ()Lhi; a method_9871 getSelector + m (D)V a method_9850 setX + m (DDD)Lewx; a method_9894 createAabb + m (I)V a method_9900 setMaxResults + m (Lbsr;)Z a method_9856 method_9856 + m (Lbsx;)V a method_9842 limitToType + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)V a method_9896 fillSelectorSuggestions + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; a method_9908 fillSuggestions + m (Ldh$c;)V a method_9870 setDistance + m (Ldh$d;)V a method_9846 setLevel + m (Lek;)V a method_9898 setRotX + m (Lek;Ljava/util/function/ToDoubleFunction;)Ljava/util/function/Predicate; a method_9859 createRotationPredicate + m (Lexc;)Lexc; a method_9872 method_9872 + m (Lexc;Lbsr;Lbsr;)I a method_9862 method_9862 + m (Lexc;Ljava/util/List;)V a method_9867 method_9867 + m (Ljava/lang/Object;)Z a method_61185 allowSelectors + m (Ljava/util/function/BiConsumer;)V a method_9845 setOrder + m (Ljava/util/function/BiFunction;)V a method_9875 setSuggestions + m (Ljava/util/function/Predicate;)V a method_9916 addPredicate + m (Ljava/util/function/ToDoubleFunction;DDLbsr;)Z a method_9881 method_9881 + m (Z)V a method_9841 setIncludesEntities + m ()V b method_9917 parseSelector + m (D)V b method_9864 setY + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; b method_9880 suggestNameOrSelector + m (Lek;)V b method_9855 setRotY + m (Lexc;)Lexc; b method_9869 method_9869 + m (Lexc;Lbsr;Lbsr;)I b method_9897 method_9897 + m (Lexc;Ljava/util/List;)V b method_9901 method_9901 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9903 method_9903 + m (Z)V b method_9899 setHasNameEquals + m ()V c method_9849 parseNameOrUUID + m (D)V c method_9879 setZ + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; c method_9858 suggestName + m (Lexc;Ljava/util/List;)V c method_9888 method_9888 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_9863 method_9863 + m (Z)V c method_9913 setHasNameNotEquals + m ()V d method_9874 parseOptions + m (D)V d method_9891 setDeltaX + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; d method_9834 suggestSelector + m (Z)V d method_9877 setLimited + m ()Z e method_9892 shouldInvertValue + m (D)V e method_9905 setDeltaY + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; e method_9893 suggestOpenOptions + m (Z)V e method_9887 setSorted + m ()Z f method_9915 isTag + m (D)V f method_9918 setDeltaZ + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; f method_9911 suggestOptionsKeyOrClose + m (Z)V f method_9890 setHasGamemodeEquals + m ()Lcom/mojang/brigadier/StringReader; g method_9835 getReader + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; g method_9909 suggestOptionsKey + m (Z)V g method_9857 setHasGamemodeNotEquals + m ()V h method_9852 setWorldLimited + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; h method_9847 suggestOptionsNextOrClose + m (Z)V h method_9865 setHasTeamEquals + m ()Ldh$c; i method_9873 getDistance + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; i method_35817 suggestEquals + m (Z)V i method_9833 setHasTeamNotEquals + m ()Ldh$d; j method_9895 getLevel + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; j method_9854 method_9854 + m (Z)V j method_9848 setHasScores + m ()Lek; k method_9883 getRotX + m (Z)V k method_9906 setHasAdvancements + m ()Lek; l method_9853 getRotY + m ()Ljava/lang/Double; m method_9902 getX + m ()Ljava/lang/Double; n method_9884 getY + m ()Ljava/lang/Double; o method_9868 getZ + m ()Ljava/lang/Double; p method_9851 getDeltaX + m ()Ljava/lang/Double; q method_9840 getDeltaY + m ()Ljava/lang/Double; r method_9907 getDeltaZ + m ()Ljava/util/function/BiConsumer; s method_35818 getOrder + m ()Lhi; t method_9882 parse + m ()Z u method_9885 isCurrentEntity + m ()Z v method_9912 hasNameEquals + m ()Z w method_9844 hasNameNotEquals + m ()Z x method_9866 isLimited + m ()Z y method_9889 isSorted + m ()Z z method_9839 hasGamemodeEquals + m (Lcom/mojang/brigadier/StringReader;Z)V + m ()V +c hk net/minecraft/class_2306 net/minecraft/commands/arguments/selector/options/EntitySelectorOptions + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_10885 ERROR_UNKNOWN_OPTION + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_10887 ERROR_INAPPLICABLE_OPTION + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_10890 ERROR_RANGE_NEGATIVE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_10893 ERROR_LEVEL_NEGATIVE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_10886 ERROR_LIMIT_TOO_SMALL + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; f field_10888 ERROR_SORT_UNKNOWN + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; g field_10889 ERROR_GAME_MODE_INVALID + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; h field_10892 ERROR_ENTITY_TYPE_INVALID + f Ljava/util/Map; i field_10891 OPTIONS + m (Lhj;)Z A method_9928 method_9928 + m (Lhj;)V B method_9963 method_9963 + m (Lhj;)Z C method_9947 method_9947 + m (Lhj;)V D method_9962 method_9962 + m (Lhj;)Z E method_9925 method_9925 + m (Lhj;)V F method_9977 method_9977 + m (Lhj;)Z G method_9944 method_9944 + m (Lhj;)V H method_9978 method_9978 + m (Lhj;)Z I method_9942 method_9942 + m (Lhj;)V J method_9979 method_9979 + m (Lhj;)Z K method_9945 method_9945 + m (Lhj;)V L method_9980 method_9980 + m (Lhj;)Z M method_9934 method_9934 + m (Lhj;)V N method_9981 method_9981 + m (Lhj;)Z O method_9943 method_9943 + m (Lhj;)V P method_9982 method_9982 + m ()V a method_9960 bootStrap + m (Lakq;ZLbsr;)Z a method_22823 method_22823 + m (Lawu;ZLbsr;)Z a method_9950 method_9950 + m (Lbsx;ZLbsr;)Z a method_9919 method_9919 + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; a method_9967 method_9967 + m (Lhj;)Z a method_22822 method_22822 + m (Lhj;ILakr;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_17961 method_17961 + m (Lhj;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)V a method_9930 suggestNames + m (Lhj;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; a method_9921 method_9921 + m (Lhj;Ljava/lang/String;I)Lhk$a; a method_9976 get + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_9964 method_9964 + m (Ljava/lang/String;Lhk$a;Ljava/util/function/Predicate;Lwz;)V a method_9961 register + m (Ljava/lang/String;ZLbsr;)Z a method_9965 method_9965 + m (Ljava/util/Map;Lai;)Z a method_9929 method_9929 + m (Ljava/util/Map;Lbsr;)Z a method_9958 method_9958 + m (Lub;ZLbsr;)Z a method_9957 method_9957 + m (ZLai;)Z a method_9936 method_9936 + m (ZLap;)Z a method_9931 method_9931 + m (ZLdct;Lbsr;)Z a method_9924 method_9924 + m (Lhj;)V b method_22824 method_22824 + m (Lhj;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; b method_9946 method_9946 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_9932 method_9932 + m (Ljava/lang/String;ZLbsr;)Z b method_9922 method_9922 + m (Ljava/util/Map;Lbsr;)Z b method_9937 method_9937 + m (Lhj;)Z c method_9926 method_9926 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_9956 method_9956 + m (Ljava/lang/String;ZLbsr;)Z c method_9920 method_9920 + m (Lhj;)V d method_9974 method_9974 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_9923 method_9923 + m (Lhj;)Z e method_9927 method_9927 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; e method_9959 method_9959 + m (Lhj;)V f method_9975 method_9975 + m (Lhj;)Z g method_9941 method_9941 + m (Lhj;)V h method_9966 method_9966 + m (Lhj;)Z i method_9938 method_9938 + m (Lhj;)V j method_9968 method_9968 + m (Lhj;)Z k method_9939 method_9939 + m (Lhj;)V l method_9973 method_9973 + m (Lhj;)Z m method_9940 method_9940 + m (Lhj;)V n method_9951 method_9951 + m (Lhj;)Z o method_9952 method_9952 + m (Lhj;)V p method_9948 method_9948 + m (Lhj;)Z q method_9949 method_9949 + m (Lhj;)V r method_9953 method_9953 + m (Lhj;)Z s method_9954 method_9954 + m (Lhj;)V t method_9969 method_9969 + m (Lhj;)Z u method_9955 method_9955 + m (Lhj;)V v method_9970 method_9970 + m (Lhj;)Z w method_9935 method_9935 + m (Lhj;)V x method_9971 method_9971 + m (Lhj;)Z y method_9933 method_9933 + m (Lhj;)V z method_9972 method_9972 + m ()V + m ()V +c hk$a net/minecraft/class_2306$class_2307 net/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier +c hk$b net/minecraft/class_2306$class_2308 net/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Option + f Lhk$a; a comp_1063 modifier + f Ljava/util/function/Predicate; b comp_1064 canUse + f Lwz; c comp_1065 description + m ()Lhk$a; a comp_1063 modifier + m ()Ljava/util/function/Predicate; b comp_1064 canUse + m ()Lwz; c comp_1065 description + m (Lhk$a;Ljava/util/function/Predicate;Lwz;)V +c hl net/minecraft/class_6279 net/minecraft/commands/arguments/selector/options/package-info +c hm net/minecraft/class_6280 net/minecraft/commands/arguments/selector/package-info +c hn net/minecraft/class_8936 net/minecraft/commands/execution/ChainModifiers + f Lhn; a field_47160 DEFAULT + f B b comp_2020 flags + f B c field_47161 FLAG_FORKED + f B d field_47162 FLAG_IS_RETURN + m ()Z a method_54884 isForked + m (B)Lhn; a method_54885 setFlag + m ()Lhn; b method_54886 setForked + m ()Z c method_54887 isReturn + m ()Lhn; d method_54888 setReturn + m ()B e comp_2020 flags + m (B)V + m ()V +c ho net/minecraft/class_8847 net/minecraft/commands/execution/CommandQueueEntry + f Lhu; a comp_2021 frame + f Lhr; b comp_1993 action + m ()Lhu; a comp_2021 frame + m (Lhs;)V a method_54388 execute + m ()Lhr; b comp_1993 action + m (Lhu;Lhr;)V +c hp net/minecraft/class_8848 net/minecraft/commands/execution/CustomCommandExecutor + m (Ljava/lang/Object;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54290 run +c hp$a net/minecraft/class_8848$class_8849 net/minecraft/commands/execution/CustomCommandExecutor$CommandAdapter +c hp$b net/minecraft/class_8848$class_8850 net/minecraft/commands/execution/CustomCommandExecutor$WithErrorHandling + m (Lcom/mojang/brigadier/exceptions/CommandSyntaxException;Lev;Lhn;Lhv;)V a method_54255 onError + m (Lev;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54389 run + m (Lev;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V b method_54259 runGuarded + m ()V +c hq net/minecraft/class_8851 net/minecraft/commands/execution/CustomModifierExecutor + m (Ljava/lang/Object;Ljava/util/List;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54270 apply +c hq$a net/minecraft/class_8851$class_8852 net/minecraft/commands/execution/CustomModifierExecutor$ModifierAdapter +c hr net/minecraft/class_8853 net/minecraft/commands/execution/EntryAction +c hs net/minecraft/class_8854 net/minecraft/commands/execution/ExecutionContext + f I a field_46729 MAX_QUEUE_DEPTH + f Lorg/slf4j/Logger; b field_46730 LOGGER + f I c field_46731 commandLimit + f I d field_46732 forkLimit + f Lbnf; e field_46733 profiler + f Lhv; f field_46734 tracer + f I g field_46735 commandQuota + f Z h field_46736 queueOverflow + f Ljava/util/Deque; i field_46737 commandQueue + f Ljava/util/List; j field_46738 newTopCommands + f I k field_47705 currentFrameDepth + m ()V a method_54390 runCommandQueue + m (I)V a method_54391 discardAtDepthOrHigher + m (Lho;)V a method_54392 queueNext + m (Lhs;Leq;)Lhu; a method_54889 createTopFrame + m (Lhs;Lii;Lev;Leq;)V a method_54395 queueInitialFunctionCall + m (Lhs;Ljava/lang/String;Lcom/mojang/brigadier/context/ContextChain;Lev;Leq;)V a method_54393 queueInitialCommandExecution + m (Lhv;)V a method_54394 tracer + m ()Lhv; b method_54396 tracer + m (I)Lhu$a; b method_54890 frameControlForDepth + m ()Lbnf; c method_54397 profiler + m (I)V c method_54891 method_54891 + m ()I d method_54398 forkLimit + m ()V e method_54399 incrementCost + m ()V f method_54400 handleQueueOverflow + m ()V g method_55594 pushNewCommands + m (IILbnf;)V + m ()V +c ht net/minecraft/class_8855 net/minecraft/commands/execution/ExecutionControl + m ()Lhv; a method_54404 tracer + m (Lhr;)V a method_54402 queueNext + m (Lhs;Lhu;)Lht; a method_54892 create + m (Lhv;)V a method_54403 tracer + m ()Lhu; b method_54893 currentFrame +c ht$1 net/minecraft/class_8855$1 net/minecraft/commands/execution/ExecutionControl$1 + f Lhs; a field_46742 val$context + f Lhu; b field_47163 val$frame + m (Lhs;Lhu;)V +c hu net/minecraft/class_8937 net/minecraft/commands/execution/Frame + f I a comp_2022 depth + f Leq; b comp_2023 returnValueConsumer + f Lhu$a; c comp_2024 frameControl + m ()V a method_54894 returnFailure + m (I)V a method_54895 returnSuccess + m ()V b method_54896 discard + m ()I c comp_2022 depth + m ()Leq; d comp_2023 returnValueConsumer + m ()Lhu$a; e comp_2024 frameControl + m (ILeq;Lhu$a;)V +c hu$a net/minecraft/class_8937$class_8938 net/minecraft/commands/execution/Frame$FrameControl +c hv net/minecraft/class_6346 net/minecraft/commands/execution/TraceCallbacks + m (ILakr;I)V a method_36351 onCall + m (ILjava/lang/String;)V a method_36349 onCommand + m (ILjava/lang/String;I)V a method_36350 onReturn + m (Ljava/lang/String;)V a method_36352 onError +c hw net/minecraft/class_8856 net/minecraft/commands/execution/UnboundEntryAction + m (Ljava/lang/Object;Lhs;Lhu;)V a method_54405 method_54405 +c hx net/minecraft/class_8857 net/minecraft/commands/execution/package-info +c hy net/minecraft/class_8858 net/minecraft/commands/execution/tasks/BuildContexts + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_46739 ERROR_FORK_LIMIT_REACHED + f Ljava/lang/String; b field_46740 commandInput + f Lcom/mojang/brigadier/context/ContextChain; c field_46741 command + m ()Ljava/lang/String; a method_54406 method_54406 + m (Lcom/mojang/brigadier/context/CommandContext;ZI)V a method_54897 method_54897 + m (Lev;Ljava/util/List;Lhs;Lhu;Lhn;)V a method_54410 execute + m (Lhs;Lhu;)V a method_54407 traceCommandStart + m (Lib;Lhu;Lev;)Lho; a method_54408 method_54408 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_54409 method_54409 + m (Ljava/lang/String;Lcom/mojang/brigadier/context/ContextChain;)V + m ()V +c hy$a net/minecraft/class_8858$class_8859 net/minecraft/commands/execution/tasks/BuildContexts$Continuation + f Lhn; b field_47164 modifiers + f Lev; c field_47165 originalSource + f Ljava/util/List; d field_46745 sources + m (Ljava/lang/String;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lev;Ljava/util/List;)V +c hy$b net/minecraft/class_8858$class_8860 net/minecraft/commands/execution/tasks/BuildContexts$TopLevel + f Lev; b field_46746 source + m (Ljava/lang/String;Lcom/mojang/brigadier/context/ContextChain;Lev;)V +c hy$c net/minecraft/class_8858$class_8861 net/minecraft/commands/execution/tasks/BuildContexts$Unbound + m (Lev;Lhs;Lhu;)V a method_54412 execute + m (Ljava/lang/String;Lcom/mojang/brigadier/context/ContextChain;)V +c hz net/minecraft/class_8862 net/minecraft/commands/execution/tasks/CallFunction + f Lii; a field_46747 function + f Leq; b field_47166 resultCallback + f Z c field_47167 returnParentFrame + m (Lev;Lhs;Lhu;)V a method_54851 execute + m (Lev;Lhu;Lhw;)Lho; a method_54898 method_54898 + m (Lii;Leq;Z)V +c ia net/minecraft/class_8863 net/minecraft/commands/execution/tasks/ContinuationTask + f Lia$a; a field_46748 taskFactory + f Ljava/util/List; b field_46749 arguments + f Lho; c field_46750 selfEntry + f I d field_46751 index + m (Lhs;Lhu;Ljava/util/List;Lia$a;)V a method_54414 schedule + m (Lia$a;Ljava/util/List;Lhu;)V +c ia$a net/minecraft/class_8863$class_8864 net/minecraft/commands/execution/tasks/ContinuationTask$TaskProvider +c ib net/minecraft/class_8865 net/minecraft/commands/execution/tasks/ExecuteCommand + f Ljava/lang/String; a field_46752 commandInput + f Lhn; b field_47168 modifiers + f Lcom/mojang/brigadier/context/CommandContext; c field_46754 executionContext + m ()Ljava/lang/String; a method_54415 method_54415 + m (Lev;Lhs;Lhu;)V a method_54416 execute + m (Ljava/lang/String;Lhn;Lcom/mojang/brigadier/context/CommandContext;)V +c ic net/minecraft/class_8939 net/minecraft/commands/execution/tasks/FallthroughTask + f Lic; a field_47169 INSTANCE + m ()Lhr; a method_54899 instance + m ()V + m ()V +c id net/minecraft/class_8940 net/minecraft/commands/execution/tasks/IsolatedCall + f Ljava/util/function/Consumer; a field_47170 taskProducer + f Leq; b field_47171 output + m (Ljava/util/function/Consumer;Leq;)V +c ie net/minecraft/class_8866 net/minecraft/commands/execution/tasks/package-info +c ig net/minecraft/class_2158 net/minecraft/commands/functions/CommandFunction + m ()Lakr; a comp_1994 id + m (Lakr;Lcom/mojang/brigadier/CommandDispatcher;Lev;Ljava/util/List;)Lig; a method_9195 fromLines + m (Lcom/mojang/brigadier/CommandDispatcher;Lev;Lcom/mojang/brigadier/StringReader;)Lhw; a method_54417 parseCommand + m (Ljava/lang/CharSequence;)V a method_57057 checkCommandLineLength + m (Lub;Lcom/mojang/brigadier/CommandDispatcher;)Lii; a method_52595 instantiate + m (Ljava/lang/CharSequence;)Z b method_52592 shouldConcatenateNextLine +c ih net/minecraft/class_8867 net/minecraft/commands/functions/FunctionBuilder + f Ljava/util/List; a field_46755 plainEntries + f Ljava/util/List; b field_46756 macroEntries + f Ljava/util/List; c field_46757 macroArguments + m (Lakr;)Lig; a method_54418 build + m (Lhw;)V a method_54419 addCommand + m (Ljava/lang/String;)I a method_54420 getArgumentIndex + m (Ljava/lang/String;ILev;)V a method_54421 addMacro + m (Ljava/util/List;)Lit/unimi/dsi/fastutil/ints/IntList; a method_54422 convertToIndices + m ()V +c ii net/minecraft/class_8868 net/minecraft/commands/functions/InstantiatedFunction + m ()Lakr; a comp_1994 id + m ()Ljava/util/List; b comp_1995 entries +c ij net/minecraft/class_8641 net/minecraft/commands/functions/MacroFunction + f Ljava/text/DecimalFormat; a field_46190 DECIMAL_FORMAT + f I b field_45150 MAX_CACHE_ENTRIES + f Ljava/util/List; c field_45149 parameters + f Lit/unimi/dsi/fastutil/objects/Object2ObjectLinkedOpenHashMap; d field_45151 cache + f Lakr; e field_46758 id + f Ljava/util/List; f field_46759 entries + m (Ljava/text/DecimalFormat;)V a method_54423 method_54423 + m (Ljava/util/List;Lit/unimi/dsi/fastutil/ints/IntList;Ljava/util/List;)V a method_54424 lookupValues + m (Ljava/util/List;Ljava/lang/String;)Ljava/lang/String; a method_54425 method_54425 + m (Ljava/util/List;Ljava/util/List;I)V a method_54426 method_54426 + m (Ljava/util/List;Ljava/util/List;Lcom/mojang/brigadier/CommandDispatcher;)Lii; a method_52597 substituteAndParse + m (Luy;)Ljava/lang/String; a method_53840 stringify + m (Lakr;Ljava/util/List;Ljava/util/List;)V + m ()V +c ij$a net/minecraft/class_8641$class_8869 net/minecraft/commands/functions/MacroFunction$Entry + m ()Lit/unimi/dsi/fastutil/ints/IntList; a method_54428 parameters + m (Ljava/util/List;Lcom/mojang/brigadier/CommandDispatcher;Lakr;)Lhw; a method_54429 instantiate +c ij$b net/minecraft/class_8641$class_8870 net/minecraft/commands/functions/MacroFunction$MacroEntry + f Lil; a field_46760 template + f Lit/unimi/dsi/fastutil/ints/IntList; b field_46761 parameters + f Lev; c field_47891 compilationContext + m (Lil;Lit/unimi/dsi/fastutil/ints/IntList;Lev;)V +c ij$c net/minecraft/class_8641$class_8871 net/minecraft/commands/functions/MacroFunction$PlainTextEntry + f Lhw; a field_46762 compiledAction + m (Lhw;)V +c ik net/minecraft/class_8872 net/minecraft/commands/functions/PlainTextFunction + f Lakr; a comp_1994 id + f Ljava/util/List; b comp_1995 entries + m (Lakr;Ljava/util/List;)V +c il net/minecraft/class_8873 net/minecraft/commands/functions/StringTemplate + f Ljava/util/List; a comp_1996 segments + f Ljava/util/List; b comp_1997 variables + m ()Ljava/util/List; a comp_1996 segments + m (Ljava/lang/String;)Z a method_54431 isValidVariableName + m (Ljava/lang/String;I)Lil; a method_54432 fromString + m (Ljava/util/List;)Ljava/lang/String; a method_54433 substitute + m ()Ljava/util/List; b comp_1997 variables + m (Ljava/util/List;Ljava/util/List;)V +c im net/minecraft/class_8874 net/minecraft/commands/functions/package-info +c in net/minecraft/class_6281 net/minecraft/commands/package-info +c io net/minecraft/class_2314 net/minecraft/commands/synchronization/ArgumentTypeInfo + m (Lcom/mojang/brigadier/arguments/ArgumentType;)Lio$a; a method_41726 unpack + m (Lio$a;Lcom/google/gson/JsonObject;)V a method_10006 serializeToJson + m (Lio$a;Lvw;)V a method_10007 serializeToNetwork + m (Lvw;)Lio$a; b method_10005 deserializeFromNetwork +c io$a net/minecraft/class_2314$class_7217 net/minecraft/commands/synchronization/ArgumentTypeInfo$Template + m ()Lio; a method_41728 type + m (Lep;)Lcom/mojang/brigadier/arguments/ArgumentType; b method_41730 instantiate +c ip net/minecraft/class_2316 net/minecraft/commands/synchronization/ArgumentTypeInfos + f Ljava/util/Map; a field_10921 BY_CLASS + m (Lcom/mojang/brigadier/arguments/ArgumentType;)Lio; a method_41983 byClass + m (Ljava/lang/Class;)Z a method_41984 isClassRecognized + m (Ljz;)Lio; a method_10015 bootstrap + m (Ljz;Ljava/lang/String;Ljava/lang/Class;Lio;)Lio; a method_10017 register + m (Lcom/mojang/brigadier/arguments/ArgumentType;)Lio$a; b method_41985 unpack + m (Ljava/lang/Class;)Ljava/lang/Class; b method_41181 fixClassType + m ()V + m ()V +c iq net/minecraft/class_7218 net/minecraft/commands/synchronization/ArgumentUtils + f Lorg/slf4j/Logger; a field_37975 LOGGER + f B b field_37976 NUMBER_FLAG_MIN + f B c field_37977 NUMBER_FLAG_MAX + m (B)Z a method_41986 numberHasMin + m (Lcom/google/gson/JsonObject;Lcom/mojang/brigadier/arguments/ArgumentType;)V a method_41987 serializeArgumentToJson + m (Lcom/google/gson/JsonObject;Lio$a;)V a method_41988 serializeCap + m (Lcom/google/gson/JsonObject;Lio;Lio$a;)V a method_41989 serializeCap + m (Lcom/mojang/brigadier/CommandDispatcher;Lcom/mojang/brigadier/tree/CommandNode;)Lcom/google/gson/JsonObject; a method_41990 serializeNodeToJson + m (Lcom/mojang/brigadier/tree/CommandNode;)Ljava/util/Set; a method_41991 findUsedArgumentTypes + m (Lcom/mojang/brigadier/tree/CommandNode;Ljava/util/Set;Ljava/util/Set;)V a method_41992 findUsedArgumentTypes + m (Ljava/util/Set;Ljava/util/Set;Lcom/mojang/brigadier/tree/CommandNode;)V a method_41993 method_41993 + m (ZZ)I a method_41994 createNumberFlags + m (B)Z b method_41995 numberHasMax + m ()V + m ()V +c ir net/minecraft/class_2319 net/minecraft/commands/synchronization/SingletonArgumentInfo + f Lir$a; a field_37978 template + m (Lir$a;Lcom/google/gson/JsonObject;)V a method_41996 serializeToJson + m (Lir$a;Lvw;)V a method_41997 serializeToNetwork + m (Ljava/util/function/Function;)Lir; a method_41998 contextAware + m (Ljava/util/function/Supplier;)Lir; a method_41999 contextFree + m (Ljava/util/function/Supplier;Lep;)Lcom/mojang/brigadier/arguments/ArgumentType; a method_42000 method_42000 + m (Lvw;)Lir$a; a method_42001 deserializeFromNetwork + m (Lcom/mojang/brigadier/arguments/ArgumentType;)Lir$a; b method_42002 unpack + m (Ljava/util/function/Function;)V +c ir$a net/minecraft/class_2319$class_7219 net/minecraft/commands/synchronization/SingletonArgumentInfo$Template + f Lir; a field_37979 field_37979 + f Ljava/util/function/Function; b field_37980 constructor + m (Lir;Ljava/util/function/Function;)V +c is net/minecraft/class_2321 net/minecraft/commands/synchronization/SuggestionProviders + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; a field_10933 ASK_SERVER + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; b field_10932 ALL_RECIPES + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; c field_10934 AVAILABLE_SOUNDS + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; d field_10935 SUMMONABLE_ENTITIES + f Ljava/util/Map; e field_10931 PROVIDERS_BY_NAME + f Lakr; f field_10930 DEFAULT_NAME + m (Lakr;)Lcom/mojang/brigadier/suggestion/SuggestionProvider; a method_10024 getProvider + m (Lakr;Lcom/mojang/brigadier/suggestion/SuggestionProvider;)Lcom/mojang/brigadier/suggestion/SuggestionProvider; a method_10022 register + m (Lbsx;)Lcom/mojang/brigadier/Message; a method_10023 method_10023 + m (Lcom/mojang/brigadier/context/CommandContext;Lbsx;)Z a method_45916 method_45916 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_10028 method_10028 + m (Lcom/mojang/brigadier/suggestion/SuggestionProvider;)Lakr; a method_10027 getName + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_10025 method_10025 + m (Lcom/mojang/brigadier/suggestion/SuggestionProvider;)Lcom/mojang/brigadier/suggestion/SuggestionProvider; b method_10026 safelySwap + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; c method_10030 method_10030 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; d method_10029 method_10029 + m ()V + m ()V +c is$a net/minecraft/class_2321$class_2322 net/minecraft/commands/synchronization/SuggestionProviders$Wrapper + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; a field_10937 delegate + f Lakr; b field_10936 name + m (Lakr;Lcom/mojang/brigadier/suggestion/SuggestionProvider;)V +c it net/minecraft/class_2326 net/minecraft/commands/synchronization/brigadier/DoubleArgumentInfo + m (Lcom/mojang/brigadier/arguments/DoubleArgumentType;)Lit$a; a method_42003 unpack + m (Lit$a;Lcom/google/gson/JsonObject;)V a method_10043 serializeToJson + m (Lit$a;Lvw;)V a method_10041 serializeToNetwork + m (Lvw;)Lit$a; a method_10042 deserializeFromNetwork + m ()V +c it$a net/minecraft/class_2326$class_7220 net/minecraft/commands/synchronization/brigadier/DoubleArgumentInfo$Template + f Lit; a field_37981 field_37981 + f D b field_37982 min + f D c field_37983 max + m (Lep;)Lcom/mojang/brigadier/arguments/DoubleArgumentType; a method_42004 instantiate + m (Lit;DD)V +c iu net/minecraft/class_2327 net/minecraft/commands/synchronization/brigadier/FloatArgumentInfo + m (Lcom/mojang/brigadier/arguments/FloatArgumentType;)Liu$a; a method_42005 unpack + m (Liu$a;Lcom/google/gson/JsonObject;)V a method_10046 serializeToJson + m (Liu$a;Lvw;)V a method_10044 serializeToNetwork + m (Lvw;)Liu$a; a method_10045 deserializeFromNetwork + m ()V +c iu$a net/minecraft/class_2327$class_7221 net/minecraft/commands/synchronization/brigadier/FloatArgumentInfo$Template + f Liu; a field_37984 field_37984 + f F b field_37985 min + f F c field_37986 max + m (Lep;)Lcom/mojang/brigadier/arguments/FloatArgumentType; a method_42006 instantiate + m (Liu;FF)V +c iv net/minecraft/class_2330 net/minecraft/commands/synchronization/brigadier/IntegerArgumentInfo + m (Lcom/mojang/brigadier/arguments/IntegerArgumentType;)Liv$a; a method_42007 unpack + m (Liv$a;Lcom/google/gson/JsonObject;)V a method_10049 serializeToJson + m (Liv$a;Lvw;)V a method_10048 serializeToNetwork + m (Lvw;)Liv$a; a method_10050 deserializeFromNetwork + m ()V +c iv$a net/minecraft/class_2330$class_7222 net/minecraft/commands/synchronization/brigadier/IntegerArgumentInfo$Template + f Liv; a field_37987 field_37987 + f I b field_37988 min + f I c field_37989 max + m (Lep;)Lcom/mojang/brigadier/arguments/IntegerArgumentType; a method_42008 instantiate + m (Liv;II)V +c iw net/minecraft/class_4461 net/minecraft/commands/synchronization/brigadier/LongArgumentInfo + m (Lcom/mojang/brigadier/arguments/LongArgumentType;)Liw$a; a method_42009 unpack + m (Liw$a;Lcom/google/gson/JsonObject;)V a method_21689 serializeToJson + m (Liw$a;Lvw;)V a method_21690 serializeToNetwork + m (Lvw;)Liw$a; a method_21691 deserializeFromNetwork + m ()V +c iw$a net/minecraft/class_4461$class_7223 net/minecraft/commands/synchronization/brigadier/LongArgumentInfo$Template + f Liw; a field_37990 field_37990 + f J b field_37991 min + f J c field_37992 max + m (Lep;)Lcom/mojang/brigadier/arguments/LongArgumentType; a method_42010 instantiate + m (Liw;JJ)V +c ix net/minecraft/class_2332 net/minecraft/commands/synchronization/brigadier/StringArgumentSerializer + m (Lcom/mojang/brigadier/arguments/StringArgumentType;)Lix$a; a method_42011 unpack + m (Lix$a;Lcom/google/gson/JsonObject;)V a method_10051 serializeToJson + m (Lix$a;Lvw;)V a method_10053 serializeToNetwork + m (Lvw;)Lix$a; a method_10052 deserializeFromNetwork + m ()V +c ix$1 net/minecraft/class_2332$1 net/minecraft/commands/synchronization/brigadier/StringArgumentSerializer$1 + f [I a field_10952 $SwitchMap$com$mojang$brigadier$arguments$StringArgumentType$StringType + m ()V +c ix$a net/minecraft/class_2332$class_7224 net/minecraft/commands/synchronization/brigadier/StringArgumentSerializer$Template + f Lix; a field_37993 field_37993 + f Lcom/mojang/brigadier/arguments/StringArgumentType$StringType; b field_37994 type + m (Lep;)Lcom/mojang/brigadier/arguments/StringArgumentType; a method_42012 instantiate + m (Lix;Lcom/mojang/brigadier/arguments/StringArgumentType$StringType;)V +c iy net/minecraft/class_6282 net/minecraft/commands/synchronization/brigadier/package-info +c iz net/minecraft/class_6283 net/minecraft/commands/synchronization/package-info +c ja net/minecraft/class_2335 net/minecraft/core/AxisCycle + f Lja; a field_10962 NONE + f Lja; b field_10963 FORWARD + f Lja; c field_10965 BACKWARD + f [Lji$a; d field_10961 AXIS_VALUES + f [Lja; e field_10960 VALUES + f [Lja; f field_10964 $VALUES + m ()Lja; a method_10055 inverse + m (DDDLji$a;)D a method_35819 cycle + m (IIILji$a;)I a method_10056 cycle + m (Lji$a;)Lji$a; a method_10058 cycle + m (Lji$a;Lji$a;)Lja; a method_10057 between + m ()[Lja; b method_36930 $values + m (Ljava/lang/String;I)V + m ()V +c ja$1 net/minecraft/class_2335$1 net/minecraft/core/AxisCycle$1 + m (Ljava/lang/String;I)V +c ja$2 net/minecraft/class_2335$2 net/minecraft/core/AxisCycle$2 + m (Ljava/lang/String;I)V +c ja$3 net/minecraft/class_2335$3 net/minecraft/core/AxisCycle$3 + m (Ljava/lang/String;I)V +c jb net/minecraft/class_9380 net/minecraft/core/BlockBox + f Lyx; a field_49907 STREAM_CODEC + f Ljd; b comp_2466 min + f Ljd; c comp_2467 max + m ()Z a method_58235 isBlock + m (Ljd;)Ljb; a method_58236 of + m (Ljd;Ljd;)Ljb; a method_58237 of + m (Lji;I)Ljb; a method_58238 extend + m (Lkh;)Ljb; a method_58239 offset + m ()Lewx; b method_58240 aabb + m (Ljd;)Ljb; b method_58241 include + m (Lji;I)Ljb; b method_58242 move + m ()I c method_58243 sizeX + m (Ljd;)Z c method_58244 contains + m ()I d method_58245 sizeY + m ()I e method_58246 sizeZ + m ()Ljd; f comp_2466 min + m ()Ljd; g comp_2467 max + m (Ljd;Ljd;)V + m ()V +c jb$1 net/minecraft/class_9380$1 net/minecraft/core/BlockBox$1 + m (Lio/netty/buffer/ByteBuf;)Ljb; a method_58247 decode + m (Lio/netty/buffer/ByteBuf;Ljb;)V a method_58248 encode + m ()V +c jc net/minecraft/class_4609 net/minecraft/core/BlockMath + f Ljava/util/Map; a field_21021 VANILLA_UV_TRANSFORM_LOCAL_TO_GLOBAL + f Ljava/util/Map; b field_21022 VANILLA_UV_TRANSFORM_GLOBAL_TO_LOCAL + f Lorg/slf4j/Logger; c field_21023 LOGGER + m (Lj;)Lj; a method_23220 blockCenterToCorner + m (Lj;Lji;)Lj; a method_23221 getUVLockTransform + m (Ljava/util/EnumMap;)V a method_23222 method_23222 + m (Lj;)Lj; b method_35829 blockCornerToCenter + m (Ljava/util/EnumMap;)V b method_23223 method_23223 + m ()V + m ()V +c jd net/minecraft/class_2338 net/minecraft/core/BlockPos + f Lcom/mojang/serialization/Codec; a field_25064 CODEC + f Lyx; b field_48404 STREAM_CODEC + f Ljd; c field_10980 ZERO + f I d field_10975 PACKED_Y_LENGTH + f Lorg/slf4j/Logger; e field_18789 LOGGER + f I h field_10978 PACKED_X_LENGTH + f I i field_10977 PACKED_Z_LENGTH + f J j field_10976 PACKED_X_MASK + f J k field_10974 PACKED_Y_MASK + f J l field_10973 PACKED_Z_MASK + f I m field_33083 Y_OFFSET + f I n field_10983 Z_OFFSET + f I o field_10981 X_OFFSET + m ()J a method_10063 asLong + m (DDD)Ljd; a method_49637 containing + m (I)Ljd; a method_35830 multiply + m (III)J a method_10064 asLong + m (IIIIII)Ljava/util/stream/Stream; a method_17962 betweenClosedStream + m (IIIIIII)Ljava/util/Iterator; a method_25995 method_25995 + m (IILayw;IIIII)Ljava/util/Iterator; a method_27155 method_27155 + m (J)I a method_10061 getX + m (JIII)J a method_10096 offset + m (JLji;)J a method_10060 offset + m (Layw;IIIIIII)Ljava/lang/Iterable; a method_27156 randomBetweenClosed + m (Layw;ILjd;I)Ljava/lang/Iterable; a method_34848 randomInCube + m (Ldmm;)Ljd; a method_10070 rotate + m (Lejj;)Ljava/util/stream/Stream; a method_23627 betweenClosedStream + m (Lewx;)Ljava/util/stream/Stream; a method_29715 betweenClosedStream + m (Lexc;)Lexc; a method_60913 clampLocationWithin + m (Ljava/util/Queue;ILjd;)V a method_49926 method_49926 + m (Ljava/util/stream/IntStream;)Lcom/mojang/serialization/DataResult; a method_29094 method_29094 + m (Ljd;)Ljava/util/stream/Stream; a method_51686 squareOutSouthEast + m (Ljd;III)Ljava/lang/Iterable; a method_25996 withinManhattan + m (Ljd;IILjava/util/function/BiConsumer;Ljava/util/function/Predicate;)I a method_49925 breadthFirstTraversal + m (Ljd;IILjava/util/function/Predicate;)Ljava/util/Optional; a method_25997 findClosestMatch + m (Ljd;ILji;Lji;)Ljava/lang/Iterable; a method_30512 spiralAround + m (Ljd;Ljd;)Ljd; a method_58249 min + m (Lji$a;I)Ljd; a method_30513 relative + m (Lji;)Ljd; a method_10093 relative + m (Lji;I)Ljd; a method_10079 relative + m (Lji;Lji;Ljd;I)Ljava/util/Iterator; a method_30514 method_30514 + m (Ljw;)Ljd; a method_49638 containing + m (Lkh;)Ljd; a method_10081 offset + m ([I)Ljd; a method_29095 method_29095 + m ()Lexc; b method_46558 getCenter + m (I)Ljd; b method_10086 above + m (III)Ljd; b method_10069 offset + m (IIIIII)Ljava/lang/Iterable; b method_10094 betweenClosed + m (J)I b method_10071 getY + m (Ljd;)Ljava/util/stream/IntStream; b method_29093 method_29093 + m (Ljd;III)Ljava/util/stream/Stream; b method_25998 withinManhattanStream + m (Ljd;Ljd;)Ljd; b method_58250 max + m (Lkh;)Ljd; b method_10059 subtract + m ()Lexc; c method_61082 getBottomCenter + m (I)Ljd; c method_10087 below + m (IIIIII)Ljava/util/Iterator; c method_10073 method_10073 + m (J)I c method_10083 getZ + m (Ljd;Ljd;)Ljava/lang/Iterable; c method_10097 betweenClosed + m (Lkh;)Ljd; c method_10075 cross + m ()Ljd; d method_10084 above + m (I)Ljd; d method_10076 north + m (J)Ljd; d method_10092 of + m (Ljd;Ljd;)Ljava/util/stream/Stream; d method_20437 betweenClosedStream + m ()Ljd; e method_10074 below + m (I)Ljd; e method_10077 south + m (J)J e method_10091 getFlatIndex + m ()Ljd; f method_10095 north + m (I)Ljd; f method_10088 west + m ()Ljd; g method_10072 south + m (I)Ljd; g method_10089 east + m ()Ljd; h method_10067 west + m (I)Ljd; h method_33096 atY + m ()Ljd; i method_10078 east + m ()Ljd; j method_10062 immutable + m ()Ljd$a; k method_25503 mutable + m (III)V + m (Lkh;)V + m ()V +c jd$1 net/minecraft/class_2338$1 net/minecraft/core/BlockPos$1 + m (Lio/netty/buffer/ByteBuf;)Ljd; a method_56156 decode + m (Lio/netty/buffer/ByteBuf;Ljd;)V a method_56157 encode + m ()V +c jd$2 net/minecraft/class_2338$2 net/minecraft/core/BlockPos$2 + f Ljd$a; a field_48405 nextPos + f I b field_48406 counter + f I c field_48407 val$limit + f I d field_48408 val$minX + f Layw; e field_48409 val$random + f I f field_48410 val$width + f I g field_48411 val$minY + f I h field_48412 val$height + f I i field_48413 val$minZ + f I j field_48414 val$depth + m ()Ljd; a method_25999 computeNext + m (IILayw;IIIII)V +c jd$3 net/minecraft/class_2338$3 net/minecraft/core/BlockPos$3 + f I a field_48415 val$originZ + f I b field_48416 val$maxDepth + f I c field_48417 val$reachX + f I d field_48418 val$reachY + f I e field_48419 val$reachZ + f I f field_48420 val$originX + f I g field_48421 val$originY + f Ljd$a; h field_23380 cursor + f I i field_48422 currentDepth + f I j field_48423 maxX + f I k field_48424 maxY + f I l field_48425 x + f I m field_48426 y + f Z n field_48427 zMirror + m ()Ljd; a method_10106 computeNext + m (IIIIIII)V +c jd$4 net/minecraft/class_2338$4 net/minecraft/core/BlockPos$4 + f I a field_48428 val$end + f I b field_48429 val$width + f I c field_48430 val$height + f I d field_48431 val$minX + f I e field_48432 val$minY + f I f field_48433 val$minZ + f Ljd$a; g field_48434 cursor + f I h field_48435 index + m ()Ljd; a method_30515 computeNext + m (IIIIII)V +c jd$5 net/minecraft/class_2338$5 net/minecraft/core/BlockPos$5 + f Lji; a field_48436 val$firstDirection + f Lji; b field_48437 val$secondDirection + f Ljd; c field_48438 val$center + f I d field_48439 val$radius + f [Lji; e field_48440 directions + f Ljd$a; f field_48441 cursor + f I g field_48442 legs + f I h field_48443 leg + f I i field_48444 legSize + f I j field_48445 legIndex + f I k field_48446 lastX + f I l field_48447 lastY + f I m field_48448 lastZ + m ()Ljd$a; a method_27157 computeNext + m (Lji;Lji;Ljd;I)V +c jd$6 net/minecraft/class_2338$6 net/minecraft/core/BlockPos$6 + f [I a field_11006 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_23955 $SwitchMap$net$minecraft$core$Direction$Axis + m ()V +c jd$a net/minecraft/class_2338$class_2339 net/minecraft/core/BlockPos$MutableBlockPos + m (Lja;III)Ljd$a; a method_17965 set + m (Lji$a;II)Ljd$a; a method_27158 clamp + m (Lkh;III)Ljd$a; a method_25504 setWithOffset + m (Lkh;Lji;)Ljd$a; a method_25505 setWithOffset + m (Lkh;Lkh;)Ljd$a; a method_35831 setWithOffset + m (DDD)Ljd$a; b method_10102 set + m (Lji;)Ljd$a; c method_10098 move + m (Lji;I)Ljd$a; c method_10104 move + m (III)Ljd$a; d method_10103 set + m (III)Ljd$a; e method_10100 move + m (J)Ljd$a; f method_16363 set + m (Lkh;)Ljd$a; g method_10101 set + m (Lkh;)Ljd$a; h method_30927 move + m (I)Ljd$a; p method_33097 setX + m (I)Ljd$a; q method_33098 setY + m (I)Ljd$a; r method_33099 setZ + m ()V + m (III)V + m (DDD)V +c je net/minecraft/class_8990 net/minecraft/core/Cloner + f Lcom/mojang/serialization/Codec; a field_47486 directCodec + m (Ljava/lang/Object;Ljo$a;Ljo$a;)Ljava/lang/Object; a method_55277 clone + m (Ljava/lang/String;)Ljava/lang/IllegalStateException; a method_55278 method_55278 + m (Ljava/lang/String;)Ljava/lang/IllegalStateException; b method_55279 method_55279 + m (Lcom/mojang/serialization/Codec;)V +c je$a net/minecraft/class_8990$class_8991 net/minecraft/core/Cloner$Factory + f Ljava/util/Map; a field_47487 codecs + m (Lakq;)Lje; a method_55280 cloner + m (Lakq;Lcom/mojang/serialization/Codec;)Lje$a; a method_55281 addCodec + m ()V +c jf net/minecraft/class_3980 net/minecraft/core/Cursor3D + f I a field_33084 TYPE_INSIDE + f I b field_33085 TYPE_FACE + f I c field_33086 TYPE_EDGE + f I d field_33087 TYPE_CORNER + f I e field_17683 originX + f I f field_17684 originY + f I g field_17685 originZ + f I h field_17686 width + f I i field_17687 height + f I j field_17688 depth + f I k field_23112 end + f I l field_23113 index + f I m field_18233 x + f I n field_18234 y + f I o field_18235 z + m ()Z a method_17963 advance + m ()I b method_18671 nextX + m ()I c method_18672 nextY + m ()I d method_18673 nextZ + m ()I e method_20789 getNextType + m (IIIIII)V +c jg net/minecraft/class_2348 net/minecraft/core/DefaultedMappedRegistry + f Lakr; b field_11014 defaultKey + f Ljm$c; c field_11015 defaultValue + m ()Ljava/util/Optional; w method_40219 method_40219 + m (Ljava/lang/String;Lakq;Lcom/mojang/serialization/Lifecycle;Z)V +c jh net/minecraft/class_7922 net/minecraft/core/DefaultedRegistry + m ()Lakr; b method_10137 getDefaultKey +c ji net/minecraft/class_2350 net/minecraft/core/Direction + f Lji; a field_11033 DOWN + f Lji; b field_11036 UP + f Lji; c field_11043 NORTH + f Lji; d field_11035 SOUTH + f Lji; e field_11039 WEST + f Lji; f field_11034 EAST + f Lazk$a; g field_29502 CODEC + f Lcom/mojang/serialization/Codec; h field_35088 VERTICAL_CODEC + f Ljava/util/function/IntFunction; i field_48449 BY_ID + f Lyx; j field_48450 STREAM_CODEC + f I k field_11032 data3d + f I l field_11031 oppositeIndex + f I m field_11030 data2d + f Ljava/lang/String; n field_11046 name + f Lji$a; o field_11047 axis + f Lji$b; p field_11044 axisDirection + f Lkh; q field_11042 normal + f [Lji; r field_11040 VALUES + f [Lji; s field_11038 BY_3D_DATA + f [Lji; t field_11041 BY_2D_DATA + f [Lji; u field_11037 $VALUES + m ()Ljava/util/stream/Stream; a method_42013 stream + m (D)Lji; a method_10150 fromYRot + m (DDD)Lji; a method_10142 getNearest + m (F)Z a method_30928 isFacingAngle + m (FFF)Lji; a method_10147 getNearest + m (I)Lji; a method_10143 from3DDataValue + m (III)Lji; a method_50026 fromDelta + m (Layw;)Ljava/util/Collection; a method_42014 allShuffled + m (Lbsr;)[Lji; a method_10159 orderedByNearest + m (Lbsr;Lji$a;)Lji; a method_32801 getFacingAxis + m (Lexc;)Lji; a method_58251 getNearest + m (Ljava/lang/String;)Lji; a method_10168 byName + m (Lji$a;)Lji; a method_35833 getClockWise + m (Lji$a;Lji$b;)Lji; a method_10169 fromAxisAndDirection + m (Lji$b;Lji$a;)Lji; a method_10156 get + m (Lji;)Lcom/mojang/serialization/DataResult; a method_38940 verifyVertical + m (Lji;Lji;Lji;)[Lji; a method_10145 makeDirectionArray + m (Lorg/joml/Matrix4f;Lji;)Lji; a method_23225 rotate + m ()Lorg/joml/Quaternionf; b method_23224 getRotation + m (I)Lji; b method_10139 from2DDataValue + m (Layw;)Lji; b method_10162 getRandom + m (Lji$a;)Lji; b method_35834 getCounterClockWise + m (Lji;)I b method_10141 method_10141 + m (I)[Lji; c method_10158 method_10158 + m (Lji;)Z c method_10155 method_10155 + m ()I d method_10146 get3DDataValue + m (I)[Lji; d method_10157 method_10157 + m (Lji;)I d method_10140 method_10140 + m ()I e method_10161 get2DDataValue + m ()Lji$b; f method_10171 getAxisDirection + m ()Lji; g method_10153 getOpposite + m ()Lji; h method_10170 getClockWise + m ()Lji; i method_10160 getCounterClockWise + m ()I j method_10148 getStepX + m ()I k method_10164 getStepY + m ()I l method_10165 getStepZ + m ()Lorg/joml/Vector3f; m method_23955 step + m ()Ljava/lang/String; n method_10151 getName + m ()Lji$a; o method_10166 getAxis + m ()F p method_10144 toYRot + m ()Lkh; q method_10163 getNormal + m ()Lji; r method_35835 getClockWiseX + m ()Lji; s method_35836 getCounterClockWiseX + m ()Lji; t method_35837 getClockWiseZ + m ()Lji; u method_35838 getCounterClockWiseZ + m ()Ljava/lang/String; v method_49639 method_49639 + m ()[Lji; w method_36931 $values + m (Ljava/lang/String;IIIILjava/lang/String;Lji$b;Lji$a;Lkh;)V + m ()V +c ji$a net/minecraft/class_2350$class_2351 net/minecraft/core/Direction$Axis + f Lji$a; a field_11048 X + f Lji$a; b field_11052 Y + f Lji$a; c field_11051 Z + f [Lji$a; d field_23780 VALUES + f Lazk$a; e field_25065 CODEC + f Ljava/lang/String; f field_11053 name + f [Lji$a; g field_11049 $VALUES + m ()Ljava/lang/String; a method_10174 getName + m (DDD)D a method_10172 choose + m (III)I a method_10173 choose + m (Layw;)Lji$a; a method_16699 getRandom + m (Ljava/lang/String;)Lji$a; a method_10177 byName + m (Lji;)Z a method_10176 test + m ()Z b method_10178 isVertical + m ()Z d method_10179 isHorizontal + m ()Lji$c; e method_10180 getPlane + m ()[Lji$a; f method_36932 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ji$a$1 net/minecraft/class_2350$class_2351$1 net/minecraft/core/Direction$Axis$1 + m (Ljava/lang/String;ILjava/lang/String;)V +c ji$a$2 net/minecraft/class_2350$class_2351$2 net/minecraft/core/Direction$Axis$2 + m (Ljava/lang/String;ILjava/lang/String;)V +c ji$a$3 net/minecraft/class_2350$class_2351$3 net/minecraft/core/Direction$Axis$3 + m (Ljava/lang/String;ILjava/lang/String;)V +c ji$b net/minecraft/class_2350$class_2352 net/minecraft/core/Direction$AxisDirection + f Lji$b; a field_11056 POSITIVE + f Lji$b; b field_11060 NEGATIVE + f I c field_11059 step + f Ljava/lang/String; d field_11057 name + f [Lji$b; e field_11058 $VALUES + m ()I a method_10181 getStep + m ()Ljava/lang/String; b method_35839 getName + m ()Lji$b; c method_26424 opposite + m ()[Lji$b; d method_36933 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c ji$c net/minecraft/class_2350$class_2353 net/minecraft/core/Direction$Plane + f Lji$c; a field_11062 HORIZONTAL + f Lji$c; b field_11064 VERTICAL + f [Lji; c field_11061 faces + f [Lji$a; d field_11065 axis + f [Lji$c; e field_11063 $VALUES + m ()Ljava/util/stream/Stream; a method_29716 stream + m (Layw;)Lji; a method_10183 getRandomDirection + m (Lji;)Z a method_10182 test + m ()I b method_57092 length + m (Layw;)Lji$a; b method_33465 getRandomAxis + m ()[Lji$c; c method_36934 $values + m (Layw;)Ljava/util/List; c method_43342 shuffledCopy + m (Ljava/lang/String;I[Lji;[Lji$a;)V + m ()V +c jj net/minecraft/class_2355 net/minecraft/core/Direction8 + f Ljj; a field_11069 NORTH + f Ljj; b field_11074 NORTH_EAST + f Ljj; c field_11075 EAST + f Ljj; d field_11070 SOUTH_EAST + f Ljj; e field_11073 SOUTH + f Ljj; f field_11068 SOUTH_WEST + f Ljj; g field_11072 WEST + f Ljj; h field_11076 NORTH_WEST + f Ljava/util/Set; i field_11078 directions + f Lkh; j field_37995 step + f [Ljj; k field_11071 $VALUES + m ()Ljava/util/Set; a method_10186 getDirections + m ()I b method_42015 getStepX + m ()I c method_42016 getStepZ + m ()[Ljj; d method_36935 $values + m (Ljava/lang/String;I[Lji;)V + m ()V +c jk net/minecraft/class_5000 net/minecraft/core/FrontAndTop + f Ljk; a field_23381 DOWN_EAST + f Ljk; b field_23382 DOWN_NORTH + f Ljk; c field_23383 DOWN_SOUTH + f Ljk; d field_23384 DOWN_WEST + f Ljk; e field_23385 UP_EAST + f Ljk; f field_23386 UP_NORTH + f Ljk; g field_23387 UP_SOUTH + f Ljk; h field_23388 UP_WEST + f Ljk; i field_23389 WEST_UP + f Ljk; j field_23390 EAST_UP + f Ljk; k field_23391 NORTH_UP + f Ljk; l field_23392 SOUTH_UP + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; m field_23393 LOOKUP_TOP_FRONT + f Ljava/lang/String; n field_23394 name + f Lji; o field_23395 top + f Lji; p field_23396 front + f [Ljk; q field_23397 $VALUES + m ()Lji; a method_26426 front + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_35840 method_35840 + m (Lji;Lji;)Ljk; a method_26425 fromFrontAndTop + m ()Lji; b method_26428 top + m (Lji;Lji;)I b method_26427 lookupKey + m ()[Ljk; d method_36936 $values + m (Ljava/lang/String;ILjava/lang/String;Lji;Lji;)V + m ()V +c jl net/minecraft/class_4208 net/minecraft/core/GlobalPos + f Lcom/mojang/serialization/MapCodec; a field_49583 MAP_CODEC + f Lcom/mojang/serialization/Codec; b field_25066 CODEC + f Lyx; c field_48451 STREAM_CODEC + f Lakq; d comp_2207 dimension + f Ljd; e comp_2208 pos + m ()Lakq; a comp_2207 dimension + m (Lakq;Ljd;)Ljl; a method_19443 of + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_29096 method_29096 + m ()Ljd; b comp_2208 pos + m (Lakq;Ljd;)V + m ()V +c jm net/minecraft/class_6880 net/minecraft/core/Holder + m ()Ljava/lang/Object; a comp_349 value + m (Lakq;)Z a method_40225 is + m (Lakr;)Z a method_40226 is + m (Lawu;)Z a method_40220 is + m (Ljava/lang/Object;)Ljm; a method_40223 direct + m (Ljava/util/function/Predicate;)Z a method_40224 is + m (Ljm;)Z a method_55838 is + m (Ljp;)Z a method_46745 canSerializeIn + m ()Z b method_40227 isBound + m (Lakq;)Ljava/lang/String; b method_55839 method_55839 + m ()Ljava/util/stream/Stream; c method_40228 tags + m ()Lcom/mojang/datafixers/util/Either; d method_40229 unwrap + m ()Ljava/util/Optional; e method_40230 unwrapKey + m ()Ljm$b; f method_40231 kind + m ()Ljava/lang/String; g method_55840 getRegisteredName +c jm$a net/minecraft/class_6880$class_6881 net/minecraft/core/Holder$Direct + f Ljava/lang/Object; a comp_349 value + m (Ljava/lang/Object;)V +c jm$b net/minecraft/class_6880$class_6882 net/minecraft/core/Holder$Kind + f Ljm$b; a field_36446 REFERENCE + f Ljm$b; b field_36447 DIRECT + f [Ljm$b; c field_36448 $VALUES + m ()[Ljm$b; a method_40232 $values + m (Ljava/lang/String;I)V + m ()V +c jm$c net/minecraft/class_6880$class_6883 net/minecraft/core/Holder$Reference + f Ljp; a field_40930 owner + f Ljava/util/Set; b field_36450 tags + f Ljm$c$a; c field_36451 type + f Lakq; d field_36452 key + f Ljava/lang/Object; e field_36453 value + m (Ljava/util/Collection;)V a method_40235 bindTags + m (Ljp;Lakq;)Ljm$c; a method_40234 createStandAlone + m (Ljp;Ljava/lang/Object;)Ljm$c; a method_40233 createIntrusive + m (Lakq;)V b method_45917 bindKey + m (Ljava/lang/Object;)V b method_45918 bindValue + m ()Lakq; h method_40237 key + m (Ljm$c$a;Ljp;Lakq;Ljava/lang/Object;)V +c jm$c$a net/minecraft/class_6880$class_6883$class_6884 net/minecraft/core/Holder$Reference$Type + f Ljm$c$a; a field_36454 STAND_ALONE + f Ljm$c$a; b field_36455 INTRUSIVE + f [Ljm$c$a; c field_36456 $VALUES + m ()[Ljm$c$a; a method_40238 $values + m (Ljava/lang/String;I)V + m ()V +c jn net/minecraft/class_7871 net/minecraft/core/HolderGetter + m (Lakq;)Ljava/util/Optional; a method_46746 get + m (Lawu;)Ljava/util/Optional; a method_46733 get + m (Lakq;)Ljm$c; b method_46747 getOrThrow + m (Lawu;)Ljq$c; b method_46735 getOrThrow + m (Lakq;)Ljava/lang/IllegalStateException; c method_46748 method_46748 + m (Lawu;)Ljava/lang/IllegalStateException; c method_46749 method_46749 +c jn$a net/minecraft/class_7871$class_7872 net/minecraft/core/HolderGetter$Provider + m (Lakq;)Ljava/util/Optional; a method_46750 lookup + m (Lakq;Lakq;)Ljava/util/Optional; a method_58561 get + m (Lakq;Ljn;)Ljava/util/Optional; a method_58562 method_58562 + m (Lakq;)Ljn; b method_46751 lookupOrThrow + m (Lakq;)Ljava/lang/IllegalStateException; c method_46752 method_46752 +c jo net/minecraft/class_7225 net/minecraft/core/HolderLookup + m ()Ljava/util/stream/Stream; b method_42017 listElements + m ()Ljava/util/stream/Stream; c method_46754 listElementIds + m ()Ljava/util/stream/Stream; d method_42020 listTags + m ()Ljava/util/stream/Stream; e method_46755 listTagIds +c jo$a net/minecraft/class_7225$class_7874 net/minecraft/core/HolderLookup$Provider + m ()Ljava/util/stream/Stream; a method_55282 listRegistries + m (Lakq;)Ljava/util/Optional; a method_46759 lookup + m (Lcom/mojang/serialization/DynamicOps;)Lakp; a method_57093 createSerializationContext + m (Ljava/util/stream/Stream;)Ljo$a; a method_46761 create + m (Ljo$b;)Ljo$b; a method_46760 method_46760 + m ()Ljn$a; b method_46758 asGetterLookup + m (Lakq;)Ljo$b; b method_46762 lookupOrThrow + m (Lakq;)Ljava/lang/IllegalStateException; e method_46763 method_46763 +c jo$a$1 net/minecraft/class_7225$class_7874$1 net/minecraft/core/HolderLookup$Provider$1 + f Ljo$a; a field_40934 field_40934 + m (Ljo$b;)Ljn; a method_46764 method_46764 + m (Ljo$a;)V +c jo$a$2 net/minecraft/class_7225$class_7874$2 net/minecraft/core/HolderLookup$Provider$2 + f Ljava/util/Map; a field_40935 val$map + m (Ljava/util/Map;)V +c jo$b net/minecraft/class_7225$class_7226 net/minecraft/core/HolderLookup$RegistryLookup + m (Lcpl;)Ljo$b; a method_45919 filterFeatures + m (Lcpl;Ljava/lang/Object;)Z a method_45920 method_45920 + m (Ljava/util/function/Predicate;)Ljo$b; a method_56882 filterElements + m ()Lakq; f method_46765 key + m ()Lcom/mojang/serialization/Lifecycle; g method_46766 registryLifecycle +c jo$b$1 net/minecraft/class_7225$class_7226$1 net/minecraft/core/HolderLookup$RegistryLookup$1 + f Ljava/util/function/Predicate; a field_40931 val$filter + f Ljo$b; b field_40932 field_40932 + m (Ljava/util/function/Predicate;Ljm$c;)Z a method_46756 method_46756 + m (Ljava/util/function/Predicate;Ljm$c;)Z b method_46757 method_46757 + m (Ljo$b;Ljava/util/function/Predicate;)V +c jo$b$a net/minecraft/class_7225$class_7226$class_7875 net/minecraft/core/HolderLookup$RegistryLookup$Delegate + m ()Ljo$b; a method_46725 parent +c jp net/minecraft/class_7876 net/minecraft/core/HolderOwner + m (Ljp;)Z a method_46767 canSerializeIn +c jq net/minecraft/class_6885 net/minecraft/core/HolderSet + m ()Ljava/util/stream/Stream; a method_40239 stream + m (I)Ljm; a method_40240 get + m (Layw;)Ljava/util/Optional; a method_40243 getRandomElement + m (Ljava/util/List;)Ljq$a; a method_40242 direct + m (Ljava/util/function/Function;Ljava/util/Collection;)Ljq$a; a method_40244 direct + m (Ljava/util/function/Function;[Ljava/lang/Object;)Ljq$a; a method_40245 direct + m (Ljm;)Z a method_40241 contains + m (Ljp;)Z a method_46768 canSerializeIn + m (Ljp;Lawu;)Ljq$c; a method_45924 emptyNamed + m ([Ljm;)Ljq$a; a method_40246 direct + m ()I b method_40247 size + m ()Lcom/mojang/datafixers/util/Either; c method_40248 unwrap + m ()Ljava/util/Optional; d method_45925 unwrapKey + m ()Ljq; e method_58563 empty +c jq$1 net/minecraft/class_6885$1 net/minecraft/core/HolderSet$1 + m (Ljp;Lawu;)V +c jq$a net/minecraft/class_6885$class_6886 net/minecraft/core/HolderSet$Direct + f Ljq$a; a field_50070 EMPTY + f Ljava/util/List; b field_36457 contents + f Ljava/util/Set; c field_36458 contentsSet + m (Ljava/util/List;)V + m ()V +c jq$b net/minecraft/class_6885$class_6887 net/minecraft/core/HolderSet$ListBacked + m ()Ljava/util/List; f method_40249 contents + m ()V +c jq$c net/minecraft/class_6885$class_6888 net/minecraft/core/HolderSet$Named + f Ljp; a field_40936 owner + f Lawu; b field_36459 key + f Ljava/util/List; c field_36460 contents + m (Ljava/util/List;)V b method_40250 bind + m ()Lawu; g method_40251 key + m (Ljp;Lawu;)V +c jr net/minecraft/class_2359 net/minecraft/core/IdMap + f I a field_34829 DEFAULT + m (I)Ljava/lang/Object; a method_10200 byId + m (Ljava/lang/Object;)I a method_10206 getId + m (I)Ljava/lang/Object; b method_39974 byIdOrThrow + m ()I c method_10204 size + m (Ljava/lang/Object;)I c method_56158 getIdOrThrow +c js net/minecraft/class_2361 net/minecraft/core/IdMapper + f I b field_11099 nextId + f Lit/unimi/dsi/fastutil/objects/Reference2IntMap; c field_11100 tToId + f Ljava/util/List; d field_11098 idToT + m (Ljava/lang/Object;I)V a method_10203 addMapping + m (Ljava/lang/Object;)V b method_10205 add + m (I)Z c method_35841 contains + m ()V + m (I)V +c jt net/minecraft/class_7780 net/minecraft/core/LayeredRegistryAccess + f Ljava/util/List; a field_40581 keys + f Ljava/util/List; b field_40582 values + f Lka$b; c field_40583 composite + m ()Lka$b; a method_45926 compositeAccess + m (II)Lka$b; a method_45927 getCompositeAccessForLayers + m (Ljava/lang/Object;)Lka$b; a method_45928 getLayer + m (Ljava/lang/Object;Ljava/util/List;)Ljt; a method_45929 replaceFrom + m (Ljava/lang/Object;[Lka$b;)Ljt; a method_45930 replaceFrom + m (Ljava/util/List;)Ljava/util/List; a method_45931 method_45931 + m (Ljava/util/Map;Lka$d;)V a method_45932 method_45932 + m (Ljava/util/Map;Lka;)V a method_45933 method_45933 + m (Ljava/util/stream/Stream;)Ljava/util/Map; a method_45934 collectRegistries + m (Ljava/lang/Object;)Lka$b; b method_45935 getAccessForLoading + m (Ljava/lang/Object;)Lka$b; c method_45936 getAccessFrom + m (Ljava/lang/Object;)I d method_45937 getLayerIndexOrThrow + m (Ljava/util/List;)V + m (Ljava/util/List;Ljava/util/List;)V +c ju net/minecraft/class_2370 net/minecraft/core/MappedRegistry + f Lorg/slf4j/Logger; b field_36635 LOGGER + f Lakq; c field_41126 key + f Lit/unimi/dsi/fastutil/objects/ObjectList; d field_26682 byId + f Lit/unimi/dsi/fastutil/objects/Reference2IntMap; e field_26683 toId + f Ljava/util/Map; f field_11107 byLocation + f Ljava/util/Map; g field_25067 byKey + f Ljava/util/Map; h field_36461 byValue + f Ljava/util/Map; i field_49135 registrationInfos + f Lcom/mojang/serialization/Lifecycle; j field_26732 registryLifecycle + f Ljava/util/Map; k field_36462 tags + f Z l field_36463 frozen + f Ljava/util/Map; m field_40584 unregisteredIntrusiveHolders + f Ljo$b; n field_41127 lookup + f Ljava/lang/Object; o field_51521 tagAdditionLock + m (Lit/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap;)V a method_39665 method_39665 + m (Ljava/lang/Object;Ljm$c;)V a method_45938 method_45938 + m (Ljava/util/Map$Entry;)Lakr; a method_41199 method_41199 + m (Ljava/util/Map;Lawu;Ljava/util/List;)V a method_40258 method_40258 + m (Ljava/util/Map;Ljm$c;)V a method_40259 method_40259 + m (Ljm$c;)Ljava/lang/Object; a method_40253 getValueFromNullable + m (Ljq$c;)V a method_40255 method_40255 + m ()V b method_45939 validateWrite + m (Ljava/util/Map$Entry;)Z b method_40256 method_40256 + m (Ljava/util/Map;Lawu;Ljava/util/List;)V b method_40263 method_40263 + m (Ljm$c;)V b method_40261 method_40261 + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; c method_40262 method_40262 + m (Lawu;)Ljq$c; d method_40562 createTag + m (Lawu;)Ljava/lang/String; e method_40563 method_40563 + m (Ljava/lang/Object;)Ljm$c; g method_40271 method_40271 + m (Lakq;)V h method_40274 validateWrite + m (Lakq;)Ljm$c; i method_44298 getOrCreateHolderOrThrow + m (Lakq;)Ljm$c; j method_44299 method_44299 + m (Lakq;)Ljm$c; k method_56594 method_56594 + m (Lakq;Lcom/mojang/serialization/Lifecycle;)V + m (Lakq;Lcom/mojang/serialization/Lifecycle;Z)V + m ()V +c ju$1 net/minecraft/class_2370$1 net/minecraft/core/MappedRegistry$1 + f Lju; a field_36468 field_36468 + m (Lju;)V +c ju$2 net/minecraft/class_2370$2 net/minecraft/core/MappedRegistry$2 + f Lju; a field_40937 field_40937 + m (Lju;)V +c jv net/minecraft/class_2371 net/minecraft/core/NonNullList + f Ljava/util/List; a field_11115 list + f Ljava/lang/Object; b field_11116 defaultValue + m ()Ljv; a method_10211 create + m (I)Ljv; a method_37434 createWithCapacity + m (ILjava/lang/Object;)Ljv; a method_10213 withSize + m (Ljava/lang/Object;[Ljava/lang/Object;)Ljv; a method_10212 of + m (Ljava/util/List;Ljava/lang/Object;)V +c jw net/minecraft/class_2374 net/minecraft/core/Position + m ()D a method_10216 x + m ()D b method_10214 y + m ()D c method_10215 z +c jx net/minecraft/class_5742 net/minecraft/core/QuartPos + f I a field_33089 BITS + f I b field_33090 SIZE + f I c field_34830 MASK + f I d field_33091 SECTION_TO_QUARTS_BITS + m (I)I a method_33100 fromBlock + m (I)I b method_39920 quartLocal + m (I)I c method_33101 toBlock + m (I)I d method_33102 fromSection + m (I)I e method_33103 toSection + m ()V +c jy net/minecraft/class_9248 net/minecraft/core/RegistrationInfo + f Ljy; a field_49136 BUILT_IN + f Ljava/util/Optional; b comp_2354 knownPackInfo + f Lcom/mojang/serialization/Lifecycle; c comp_2355 lifecycle + m ()Ljava/util/Optional; a comp_2354 knownPackInfo + m ()Lcom/mojang/serialization/Lifecycle; b comp_2355 lifecycle + m (Ljava/util/Optional;Lcom/mojang/serialization/Lifecycle;)V + m ()V +c jz net/minecraft/class_2378 net/minecraft/core/Registry + m ()Ljava/util/Optional; a method_60385 getAny + m (Lakq;)Ljava/lang/Object; a method_29107 get + m (Lakr;)Ljava/lang/Object; a method_10223 get + m (Lawu;)Ljq$c; a method_40260 getOrCreateTag + m (Lawu;Layw;)Ljava/util/Optional; a method_56159 getRandomElementOf + m (Layw;)Ljava/util/Optional; a method_10240 getRandom + m (Layw;Ljq$c;)Ljava/util/Optional; a method_56160 method_56160 + m (Lcom/mojang/serialization/DynamicOps;Lakr;)Ljava/lang/Object; a method_34028 method_34028 + m (Ljava/util/Map;)V a method_40257 bindTags + m (Ljm$c;)Lcom/mojang/serialization/Lifecycle; a method_57060 method_57060 + m (Ljm;)Lcom/mojang/serialization/DataResult; a method_57061 safeCastToReference + m (Ljz;Lakq;Ljava/lang/Object;)Ljava/lang/Object; a method_39197 register + m (Ljz;Lakr;Ljava/lang/Object;)Ljava/lang/Object; a method_10230 register + m (Ljz;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; a method_10226 register + m ()Lcom/mojang/serialization/Codec; b method_57059 referenceHolderWithLifecycle + m (Lakq;)Ljava/util/Optional; b method_40264 getHolder + m (Lakr;)Ljava/util/Optional; b method_17966 getOptional + m (Lawu;)Ljava/util/Optional; b method_40266 getTag + m (Ljava/lang/Object;)Lakr; b method_10221 getKey + m (Ljm$c;)Lakr; b method_57062 method_57062 + m (Ljm;)Ljava/lang/String; b method_57063 method_57063 + m (Ljz;Lakq;Ljava/lang/Object;)Ljm$c; b method_47984 registerForHolder + m (Ljz;Lakr;Ljava/lang/Object;)Ljm$c; b method_47985 registerForHolder + m (I)Ljava/util/Optional; c method_40265 getHolder + m (Lakq;)Ljava/util/Optional; c method_57058 registrationInfo + m (Lakr;)Ljava/util/Optional; c method_55841 getHolder + m (Lawu;)Ljava/lang/Iterable; c method_40286 getTagOrEmpty + m (Ljm$c;)Ljm; c method_57064 method_57064 + m ()Lakq; d method_30517 key + m (Lakq;)Z d method_35842 containsKey + m (Lakr;)Z d method_10250 containsKey + m (Ljava/lang/Object;)Ljava/util/Optional; d method_29113 getResourceKey + m ()Lcom/mojang/serialization/Lifecycle; e method_31138 registryLifecycle + m (Lakq;)Ljava/util/Optional; e method_31189 getOptional + m (Lakr;)Lcom/mojang/serialization/DataResult; e method_57065 method_57065 + m (Ljava/lang/Object;)Ljm; e method_47983 wrapAsHolder + m ()Ljava/util/Set; f method_10235 keySet + m (Lakq;)Ljava/lang/Object; f method_31140 getOrThrow + m (Lakr;)Lcom/mojang/serialization/DataResult; f method_57066 method_57066 + m (Ljava/lang/Object;)Ljm$c; f method_40269 createIntrusiveHolder + m ()Ljava/util/Set; g method_42021 registryKeySet + m (Lakq;)Ljm$c; g method_40290 getHolderOrThrow + m (Lakr;)Ljava/lang/String; g method_57067 method_57067 + m (Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; g method_47448 method_47448 + m ()Ljava/util/Set; h method_29722 entrySet + m (Lakq;)Ljava/lang/IllegalStateException; h method_47446 method_47446 + m ()Ljava/util/stream/Stream; i method_40270 holders + m ()Ljava/util/stream/Stream; j method_40272 getTags + m ()Ljava/util/stream/Stream; k method_40273 getTagNames + m ()Ljz; m method_40276 freeze + m ()V n method_40278 resetTags + m ()Ljp; p method_46770 holderOwner + m ()Ljo$b; q method_46771 asLookup + m ()Lcom/mojang/serialization/Codec; r method_39673 byNameCodec + m ()Lcom/mojang/serialization/Codec; s method_40294 holderByNameCodec + m ()Ljava/util/stream/Stream; t method_10220 stream + m ()Ljr; u method_40295 asHolderIdMap + m ()Ljo$b; v method_46772 asTagAddingLookup +c jz$1 net/minecraft/class_2378$1 net/minecraft/core/Registry$1 + f Ljz; b field_40939 field_40939 + m (Ljm$c;)Ljm; a method_46773 method_46773 + m (Ljm;)I a method_46774 getId + m (I)Ljm; c method_46775 byId + m (Ljz;)V +c jz$2 net/minecraft/class_2378$2 net/minecraft/core/Registry$2 + f Ljz; a field_40940 field_40940 + m (Ljz;)V +c ka net/minecraft/class_5455 net/minecraft/core/RegistryAccess + f Lorg/slf4j/Logger; a field_25918 LOGGER + f Lka$b; b field_40585 EMPTY + m (Ljz;)Lka$b; a method_40302 fromRegistryOfRegistries + m (Lka$d;)Lcom/mojang/serialization/Lifecycle; a method_41200 method_41200 + m ()Ljava/util/stream/Stream; c method_40311 registries + m (Lakq;)Ljava/util/Optional; c method_33310 registry + m ()Lka$b; d method_40316 freeze + m (Lakq;)Ljz; d method_30530 registryOrThrow + m ()Lcom/mojang/serialization/Lifecycle; e method_41201 allRegistriesLifecycle + m (Lakq;)Ljava/lang/IllegalStateException; f method_30534 method_30534 + m ()V +c ka$1 net/minecraft/class_5455$1 net/minecraft/core/RegistryAccess$1 + f Ljz; c field_36470 val$registries + m (Ljz;)V +c ka$a net/minecraft/class_5455$class_7781 net/minecraft/core/RegistryAccess$1FrozenAccess + m (Lka;Ljava/util/stream/Stream;)V +c ka$b net/minecraft/class_5455$class_6890 net/minecraft/core/RegistryAccess$Frozen +c ka$c net/minecraft/class_5455$class_6891 net/minecraft/core/RegistryAccess$ImmutableRegistryAccess + f Ljava/util/Map; c field_36471 registries + m (Ljz;)Ljz; b method_45942 method_45942 + m (Ljz;)Ljz; c method_45943 method_45943 + m (Ljava/util/List;)V + m (Ljava/util/Map;)V + m (Ljava/util/stream/Stream;)V +c ka$d net/minecraft/class_5455$class_6892 net/minecraft/core/RegistryAccess$RegistryEntry + f Lakq; a comp_350 key + f Ljz; b comp_351 value + m ()Lakq; a comp_350 key + m (Lakq;Ljz;)Lka$d; a method_40331 fromUntyped + m (Ljava/util/Map$Entry;)Lka$d; a method_40330 fromMapEntry + m ()Ljz; b comp_351 value + m ()Lka$d; c method_40332 freeze + m (Lakq;Ljz;)V +c kb net/minecraft/class_6895 net/minecraft/core/RegistryCodecs + m (Lakq;)Lcom/mojang/serialization/Codec; a method_40340 homogeneousList + m (Lakq;Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_40341 homogeneousList + m (Lakq;Lcom/mojang/serialization/Codec;Z)Lcom/mojang/serialization/Codec; a method_40343 homogeneousList + m (Lakq;Z)Lcom/mojang/serialization/Codec; a method_40349 homogeneousList + m ()V +c kc net/minecraft/class_7877 net/minecraft/core/RegistrySetBuilder + f Ljava/util/List; a field_40941 entries + m (Lakq;Lcom/mojang/serialization/Lifecycle;Ljp;Ljava/util/Map;)Ljo$b; a method_55283 lookupFromMap + m (Lakq;Lcom/mojang/serialization/Lifecycle;Lkc$i;)Lkc; a method_46776 add + m (Lakq;Lkc$i;)Lkc; a method_46777 add + m (Ljava/util/Map;Lakq;)V a method_55293 method_55293 + m (Ljava/util/Map;Ljp;Lje;Ljo$a;Lorg/apache/commons/lang3/mutable/MutableObject;Ljm$c;)V a method_55294 method_55294 + m (Ljava/util/Map;Lka$d;)V a method_55288 method_55288 + m (Ljava/util/Map;Lkc$j;)V a method_49352 method_49352 + m (Ljava/util/Map;Lkc$m;Ljo$b;)V a method_57094 method_57094 + m (Ljava/util/Set;Lakq;)Z a method_55295 method_55295 + m (Lje;Ljm$c;Ljo$a;Lorg/apache/commons/lang3/mutable/MutableObject;)Ljava/lang/Object; a method_55284 method_55284 + m (Ljo$b;)Ljn; a method_46778 wrapContextLookup + m (Ljp;Lakq;Lje;Ljm$c;Ljo$a;Lorg/apache/commons/lang3/mutable/MutableObject;Lakq;)Ljm$c; a method_55285 method_55285 + m (Ljp;Lje$a;Lakq;Ljo$a;Ljo$a;Lorg/apache/commons/lang3/mutable/MutableObject;)Ljo$b; a method_55286 createLazyFullPatchedRegistries + m (Ljp;Lje;Ljo$a;Lorg/apache/commons/lang3/mutable/MutableObject;Ljava/util/Map;Ljm$c;)V a method_55287 method_55287 + m (Lka;)Ljo$a; a method_46780 build + m (Lka;Ljo$a;Lje$a;)Lkc$g; a method_46781 buildPatch + m (Lka;Ljo$a;Lje$a;Ljava/util/Map;Ljo$a;)Ljo$a; a method_55289 createLazyFullPatchedRegistries + m (Lkc$b;Lkc$j;)Ljo$b; a method_55291 method_55291 + m (Lkc$b;Lkc$k;)Lkc$j; a method_46782 method_46782 + m (Lkc$m;Lje$a;Ljo$a;Ljo$a;Lorg/apache/commons/lang3/mutable/MutableObject;Lakq;)Ljo$b; a method_55292 method_55292 + m (Lkc$m;Lka;Ljava/util/stream/Stream;)Ljo$a; a method_55290 buildProviderWithContext + m (Lje;Ljm$c;Ljo$a;Lorg/apache/commons/lang3/mutable/MutableObject;)Ljava/lang/Object; b method_55296 method_55296 + m (Lka;)Lkc$b; b method_46784 createState + m (Lkc$b;Lkc$k;)Ljo$b; b method_46785 method_46785 + m (Lkc$b;Lkc$k;)V c method_46786 method_46786 + m ()V +c kc$1 net/minecraft/class_7877$1 net/minecraft/core/RegistrySetBuilder$1 + f Ljo$b; a field_40942 val$original + m (Ljp;Ljo$b;)V +c kc$2 net/minecraft/class_7877$2 net/minecraft/core/RegistrySetBuilder$2 + f Lakq; a field_47488 val$key + f Lcom/mojang/serialization/Lifecycle; b field_47489 val$lifecycle + f Ljava/util/Map; c field_40947 val$entries + m (Ljp;Lakq;Lcom/mojang/serialization/Lifecycle;Ljava/util/Map;)V +c kc$3 net/minecraft/class_7877$3 net/minecraft/core/RegistrySetBuilder$3 + f Ljava/util/Map; a field_49167 val$lookups + m (Lakq;)Ljava/util/Optional; c method_57095 getEntry + m (Ljava/util/Map;)V +c kc$3$1 net/minecraft/class_7877$3$1 net/minecraft/core/RegistrySetBuilder$3$1 + f Lkc$3; a field_49168 field_49168 + m (Lkc$3;)V +c kc$a net/minecraft/class_7877$class_9256 net/minecraft/core/RegistrySetBuilder$1Entry + f Ljo$b; a comp_2360 lookup + f Lakp$b; b comp_2361 opsInfo + m ()Ljo$b; a comp_2360 lookup + m (Ljo$b;)Lkc$a; a method_57096 createForContextRegistry + m (Lkc$m;Ljo$b;)Lkc$a; a method_57097 createForNewRegistry + m ()Lakp$b; b comp_2361 opsInfo + m (Ljo$b;Lakp$b;)V +c kc$b net/minecraft/class_7877$class_7878 net/minecraft/core/RegistrySetBuilder$BuildState + f Lkc$m; a comp_1135 owner + f Lkc$l; b comp_1136 lookup + f Ljava/util/Map; c comp_1137 registries + f Ljava/util/Map; d comp_1138 registeredValues + f Ljava/util/List; e comp_1139 errors + m ()Lqq; a method_46787 bootstrapContext + m (Lakq;Lkc$h;)V a method_55297 method_55297 + m (Lcom/google/common/collect/ImmutableMap$Builder;Lka$d;)V a method_46790 method_46790 + m (Lcom/google/common/collect/ImmutableMap$Builder;Lkc$l;Lakq;)V a method_46791 method_46791 + m (Lka;Ljava/util/stream/Stream;)Lkc$b; a method_46796 create + m ()V b method_55298 reportUnclaimedRegisteredValues + m ()V c method_55299 reportNotCollectedHolders + m ()V d method_46798 throwOnError + m ()Lkc$m; e comp_1135 owner + m ()Lkc$l; f comp_1136 lookup + m ()Ljava/util/Map; g comp_1137 registries + m ()Ljava/util/Map; h comp_1138 registeredValues + m ()Ljava/util/List; i comp_1139 errors + m (Lkc$m;Lkc$l;Ljava/util/Map;Ljava/util/Map;Ljava/util/List;)V +c kc$b$1 net/minecraft/class_7877$class_7878$1 net/minecraft/core/RegistrySetBuilder$BuildState$1 + f Lkc$b; a field_40943 field_40943 + m (Lkc$b;)V +c kc$c net/minecraft/class_7877$class_7880 net/minecraft/core/RegistrySetBuilder$EmptyTagLookup + f Ljp; d field_40945 owner + m (Ljp;)V +c kc$d net/minecraft/class_7877$class_9257 net/minecraft/core/RegistrySetBuilder$EmptyTagLookupWrapper + f Ljo$b; a field_49169 parent + m (Ljp;Ljo$b;)V +c kc$e net/minecraft/class_7877$class_9258 net/minecraft/core/RegistrySetBuilder$EmptyTagRegistryLookup + m (Ljp;)V +c kc$f net/minecraft/class_7877$class_8992 net/minecraft/core/RegistrySetBuilder$LazyHolder + f Ljava/util/function/Supplier; a field_47490 supplier + m (Ljp;Lakq;)V +c kc$g net/minecraft/class_7877$class_8993 net/minecraft/core/RegistrySetBuilder$PatchedRegistries + f Ljo$a; a comp_2113 full + f Ljo$a; b comp_2114 patches + m ()Ljo$a; a comp_2113 full + m ()Ljo$a; b comp_2114 patches + m (Ljo$a;Ljo$a;)V +c kc$h net/minecraft/class_7877$class_7881 net/minecraft/core/RegistrySetBuilder$RegisteredValue + f Ljava/lang/Object; a comp_1140 value + f Lcom/mojang/serialization/Lifecycle; b comp_1141 lifecycle + m ()Ljava/lang/Object; a comp_1140 value + m ()Lcom/mojang/serialization/Lifecycle; b comp_1141 lifecycle + m (Ljava/lang/Object;Lcom/mojang/serialization/Lifecycle;)V +c kc$i net/minecraft/class_7877$class_7882 net/minecraft/core/RegistrySetBuilder$RegistryBootstrap +c kc$j net/minecraft/class_7877$class_7883 net/minecraft/core/RegistrySetBuilder$RegistryContents + f Lakq; a comp_1305 key + f Lcom/mojang/serialization/Lifecycle; b comp_1306 lifecycle + f Ljava/util/Map; c comp_1143 values + m ()Lakq; a comp_1305 key + m (Lkc$m;)Ljo$b; a method_46802 buildAsLookup + m (Lkc$m;Ljava/util/Map$Entry;)Ljm$c; a method_55301 method_55301 + m ()Lcom/mojang/serialization/Lifecycle; b comp_1306 lifecycle + m (Lkc$m;Ljava/util/Map$Entry;)Ljm$c; b method_55302 method_55302 + m ()Ljava/util/Map; c comp_1143 values + m (Lakq;Lcom/mojang/serialization/Lifecycle;Ljava/util/Map;)V +c kc$k net/minecraft/class_7877$class_7884 net/minecraft/core/RegistrySetBuilder$RegistryStub + f Lakq; a comp_1144 key + f Lcom/mojang/serialization/Lifecycle; b comp_1145 lifecycle + f Lkc$i; c comp_1146 bootstrap + m ()Lakq; a comp_1144 key + m (Lkc$b;)Lkc$j; a method_46805 collectRegisteredValues + m ()Lcom/mojang/serialization/Lifecycle; b comp_1145 lifecycle + m (Lkc$b;)V b method_46806 apply + m ()Lkc$i; c comp_1146 bootstrap + m (Lakq;Lcom/mojang/serialization/Lifecycle;Lkc$i;)V +c kc$l net/minecraft/class_7877$class_7885 net/minecraft/core/RegistrySetBuilder$UniversalLookup + f Ljava/util/Map; a field_40948 holders + m (Lakq;)Ljm$c; c method_46807 getOrCreate + m (Lakq;)Ljm$c; d method_46808 method_46808 + m (Ljp;)V +c kc$m net/minecraft/class_7877$class_7879 net/minecraft/core/RegistrySetBuilder$UniversalOwner + m ()Ljp; a method_55300 cast + m ()V +c kc$n net/minecraft/class_7877$class_7886 net/minecraft/core/RegistrySetBuilder$ValueAndHolder + f Lkc$h; a comp_1147 value + f Ljava/util/Optional; b comp_1148 holder + m ()Lkc$h; a comp_1147 value + m ()Ljava/util/Optional; b comp_1148 holder + m (Lkc$h;Ljava/util/Optional;)V +c kd net/minecraft/class_7782 net/minecraft/core/RegistrySynchronization + f Ljava/util/Set; a field_48771 NETWORKABLE_REGISTRIES + m (Lcom/mojang/serialization/DynamicOps;Lakm$c;Lka;Ljava/util/Set;Ljava/util/function/BiConsumer;)V a method_56597 packRegistry + m (Lcom/mojang/serialization/DynamicOps;Lka;Ljava/util/Set;Ljava/util/function/BiConsumer;)V a method_56598 packRegistries + m (Lcom/mojang/serialization/DynamicOps;Lka;Ljava/util/Set;Ljava/util/function/BiConsumer;Lakm$c;)V a method_56599 method_56599 + m (Ljava/util/Set;Lakm$c;Lcom/mojang/serialization/DynamicOps;Ljava/util/function/BiConsumer;Ljz;)V a method_56596 method_56596 + m (Ljm$c;Ljava/lang/String;)Ljava/lang/IllegalArgumentException; a method_56600 method_56600 + m (Ljt;)Ljava/util/stream/Stream; a method_47449 networkedRegistries + m (Ljz;Ljava/util/Set;Lakm$c;Lcom/mojang/serialization/DynamicOps;Ljava/util/List;Ljm$c;)V a method_56595 method_56595 + m (Lka$d;)Z a method_56601 method_56601 + m (Lka;)Ljava/util/stream/Stream; a method_45956 ownedNetworkableRegistries + m (Ljt;)Ljava/util/stream/Stream; b method_45953 networkSafeRegistries + m ()V + m ()V +c kd$a net/minecraft/class_7782$class_9176 net/minecraft/core/RegistrySynchronization$PackedRegistryEntry + f Lyx; a field_48772 STREAM_CODEC + f Lakr; b comp_2256 id + f Ljava/util/Optional; c comp_2257 data + m ()Lakr; a comp_2256 id + m ()Ljava/util/Optional; b comp_2257 data + m (Lakr;Ljava/util/Optional;)V + m ()V +c ke net/minecraft/class_2379 net/minecraft/core/Rotations + f Lyx; a field_48452 STREAM_CODEC + f F b field_11165 x + f F c field_11164 y + f F d field_11163 z + m ()Luh; a method_10255 save + m ()F b method_10256 getX + m ()F c method_10257 getY + m ()F d method_10258 getZ + m ()F e method_35845 getWrappedX + m ()F f method_35846 getWrappedY + m ()F g method_35847 getWrappedZ + m (FFF)V + m (Luh;)V + m ()V +c ke$1 net/minecraft/class_2379$1 net/minecraft/core/Rotations$1 + m (Lio/netty/buffer/ByteBuf;)Lke; a method_56161 decode + m (Lio/netty/buffer/ByteBuf;Lke;)V a method_56162 encode + m ()V +c kf net/minecraft/class_4076 net/minecraft/core/SectionPos + f I a field_33096 SECTION_BITS + f I b field_33097 SECTION_SIZE + f I c field_33100 SECTION_MASK + f I d field_33098 SECTION_HALF_SIZE + f I e field_33099 SECTION_MAX_INDEX + f I h field_33101 PACKED_X_LENGTH + f I i field_33102 PACKED_Y_LENGTH + f I j field_33103 PACKED_Z_LENGTH + f J k field_33104 PACKED_X_MASK + f J l field_33105 PACKED_Y_MASK + f J m field_33106 PACKED_Z_MASK + f I n field_33107 Y_OFFSET + f I o field_33108 Z_OFFSET + f I p field_33109 X_OFFSET + f I q field_33110 RELATIVE_X_SHIFT + f I r field_33111 RELATIVE_Y_SHIFT + f I s field_33112 RELATIVE_Z_SHIFT + m ()I a method_18674 x + m (D)I a method_32204 posToSectionCoord + m (I)I a method_18675 blockToSectionCoord + m (II)I a method_32205 sectionToBlockCoord + m (III)Lkf; a method_18676 of + m (IIIIII)Ljava/util/stream/Stream; a method_20438 betweenClosedStream + m (IIILit/unimi/dsi/fastutil/longs/LongConsumer;)V a method_39489 aroundAndAtBlockPos + m (J)Lkf; a method_18677 of + m (JIII)J a method_18678 offset + m (JLit/unimi/dsi/fastutil/longs/LongConsumer;)V a method_39490 aroundAndAtBlockPos + m (JLji;)J a method_18679 offset + m (Ldcd;I)Lkf; a method_18681 of + m (Ldcd;III)Ljava/util/stream/Stream; a method_22446 aroundChunk + m (Lduy;)Lkf; a method_33705 bottomOf + m (Ldxg;)Lkf; a method_42614 of + m (Ljd;)Lkf; a method_18682 of + m (Ljd;Lit/unimi/dsi/fastutil/longs/LongConsumer;)V a method_39491 aroundAndAtBlockPos + m (Ljw;)Lkf; a method_18680 of + m (Lkf;I)Ljava/util/stream/Stream; a method_20439 cube + m (S)I a method_30551 sectionRelativeX + m ()I b method_18683 y + m (D)I b method_42615 blockToSectionCoord + m (I)I b method_18684 sectionRelative + m (II)J b method_51687 getZeroNode + m (III)J b method_18685 asLong + m (J)I b method_18686 x + m (Ljd;)S b method_19454 sectionRelativePos + m (S)I b method_30552 sectionRelativeY + m ()I c method_18687 z + m (I)I c method_18688 sectionToBlockCoord + m (J)I c method_18689 y + m (Ljd;)J c method_33706 asLong + m (S)I c method_30553 sectionRelativeZ + m ()I d method_19527 minBlockX + m (III)Lkf; d method_34591 offset + m (J)I d method_18690 z + m (S)I d method_30554 relativeToBlockX + m ()I e method_19528 minBlockY + m (J)J e method_18691 blockToSection + m (S)I e method_30555 relativeToBlockY + m ()I f method_19529 minBlockZ + m (J)J f method_18693 getZeroNode + m (S)I f method_30556 relativeToBlockZ + m ()I g method_19530 maxBlockX + m (S)Ljd; g method_30557 relativeToBlockPos + m ()I h method_19531 maxBlockY + m ()I i method_19532 maxBlockZ + m ()Ljd; j method_19767 origin + m ()Ljd; k method_19768 center + m ()Ldcd; r method_18692 chunk + m ()J s method_18694 asLong + m ()Ljava/util/stream/Stream; t method_19533 blocksInside + m (III)V +c kf$1 net/minecraft/class_4076$1 net/minecraft/core/SectionPos$1 + f Ljf; a field_19263 cursor + f I b field_19264 val$minX + f I c field_19265 val$minY + f I d field_19266 val$minZ + f I e field_19267 val$maxX + f I f field_19268 val$maxY + f I g field_19269 val$maxZ + m (JIIIIIII)V +c kg net/minecraft/class_4844 net/minecraft/core/UUIDUtil + f Lcom/mojang/serialization/Codec; a field_25122 CODEC + f Lcom/mojang/serialization/Codec; b field_47491 CODEC_SET + f Lcom/mojang/serialization/Codec; c field_48974 CODEC_LINKED_SET + f Lcom/mojang/serialization/Codec; d field_41525 STRING_CODEC + f Lcom/mojang/serialization/Codec; e field_40825 AUTHLIB_CODEC + f Lcom/mojang/serialization/Codec; f field_46588 LENIENT_CODEC + f Lyx; g field_48453 STREAM_CODEC + f I h field_39211 UUID_BYTES + f Ljava/lang/String; i field_38907 UUID_PREFIX_OFFLINE_PLAYER + m (JJ)[I a method_26274 leastMostToIntArray + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/UUID; a method_35848 readUUID + m (Ljava/lang/String;)Ljava/util/UUID; a method_43344 createOfflinePlayerUUID + m (Ljava/lang/String;Ljava/lang/IllegalArgumentException;)Ljava/lang/String; a method_49645 method_49645 + m (Ljava/util/UUID;)[I a method_26275 uuidToIntArray + m (Ljava/util/stream/IntStream;)Lcom/mojang/serialization/DataResult; a method_29122 method_29122 + m ([I)Ljava/util/UUID; a method_26276 uuidFromIntArray + m (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; b method_54140 createOfflineProfile + m (Ljava/lang/String;Ljava/lang/IllegalArgumentException;)Ljava/lang/String; b method_49646 method_49646 + m (Ljava/util/UUID;)[B b method_44827 uuidToByteArray + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; c method_46560 method_46560 + m (Ljava/util/UUID;)Ljava/util/stream/IntStream; c method_29727 method_29727 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; d method_47804 method_47804 + m ()V + m ()V +c kg$1 net/minecraft/class_4844$1 net/minecraft/core/UUIDUtil$1 + m (Lio/netty/buffer/ByteBuf;)Ljava/util/UUID; a method_56163 decode + m (Lio/netty/buffer/ByteBuf;Ljava/util/UUID;)V a method_56164 encode + m ()V +c kh net/minecraft/class_2382 net/minecraft/core/Vec3i + f I a field_11175 x + f I b field_11174 y + f I c field_11173 z + f Lcom/mojang/serialization/Codec; f field_25123 CODEC + f Lkh; g field_11176 ZERO + m (ILkh;)Lcom/mojang/serialization/DataResult; a method_48305 method_48305 + m (Ljava/util/stream/IntStream;)Lcom/mojang/serialization/DataResult; a method_29125 method_29125 + m (Lji$a;)I a method_30558 get + m (Ljw;D)Z a method_19769 closerToCenterThan + m (Lkh;)Ljava/util/stream/IntStream; a method_29124 method_29124 + m (Lkh;D)Z a method_19771 closerThan + m ([I)Lkh; a method_29126 method_29126 + m (ILkh;)Ljava/lang/String; b method_49647 method_49647 + m (Lji$a;I)Lkh; b method_35850 relative + m (Lji;)Lkh; b method_35851 relative + m (Lji;I)Lkh; b method_23226 relative + m (Ljw;)D b method_19770 distToCenterSqr + m (DDD)D c method_10268 distToCenterSqr + m (III)Lkh; c method_34592 offset + m (DDD)D d method_40081 distToLowCornerSqr + m (Lkh;)Lkh; d method_10259 cross + m (Lkh;)Lkh; e method_35852 subtract + m (Lkh;)Lkh; f method_35853 offset + m (I)Lkh; i method_35854 east + m (Lkh;)I i method_10265 compareTo + m (I)Lkh; j method_35856 west + m (Lkh;)D j method_10262 distSqr + m (I)Lkh; k method_35858 south + m (Lkh;)I k method_19455 distManhattan + m ()Lkh; l method_35855 east + m (I)Lkh; l method_35860 north + m ()Lkh; m method_35857 west + m (I)Lkh; m method_23227 below + m ()Lkh; n method_35859 south + m (I)Lkh; n method_30930 above + m ()Lkh; o method_35861 north + m (I)Lkh; o method_35862 multiply + m ()Lkh; p method_23228 below + m ()Lkh; q method_30931 above + m (I)Lkh; s method_20788 setZ + m (I)Lkh; t method_10099 setY + m ()I u method_10263 getX + m (I)Lkh; u method_20787 setX + m ()I v method_10264 getY + m (I)Lcom/mojang/serialization/Codec; v method_39677 offsetCodec + m ()I w method_10260 getZ + m ()Ljava/lang/String; x method_23854 toShortString + m (III)V + m ()V +c ki net/minecraft/class_2385 net/minecraft/core/WritableRegistry + m (Lakq;Ljava/lang/Object;Ljy;)Ljm$c; a method_10272 register + m ()Z l method_35863 isEmpty + m ()Ljn; o method_46769 createRegistrationLookup +c kj net/minecraft/class_5620 net/minecraft/core/cauldron/CauldronInteraction + f Ljava/util/Map; a field_46589 INTERACTIONS + f Lcom/mojang/serialization/Codec; b field_46590 CODEC + f Lkj$a; c field_27775 EMPTY + f Lkj$a; d field_27776 WATER + f Lkj$a; e field_27777 LAVA + f Lkj$a; f field_28011 POWDER_SNOW + f Lkj; g field_27778 FILL_WATER + f Lkj; h field_27779 FILL_LAVA + f Lkj; i field_28012 FILL_POWDER_SNOW + f Lkj; j field_27780 SHULKER_BOX + f Lkj; k field_27781 BANNER + f Lkj; l field_27782 DYED_ITEM + m ()V a method_32212 bootStrap + m (Ldcw;Ljd;Lcmx;Lbqq;Lcuq;Ldtc;Lavo;)Lbqt; a method_32207 emptyBucket + m (Ldtc;)Z a method_32696 method_32696 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; a method_32209 method_32209 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;Lcuq;Ljava/util/function/Predicate;Lavo;)Lbqt; a method_32210 fillBucket + m (Ljava/lang/String;)Lkj$a; a method_32206 newInteractionMap + m (Ljava/util/Map;)V a method_34850 addDefaultInteractions + m (Ldtc;)Z b method_32208 method_32208 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; b method_32214 method_32214 + m (Ldtc;)Z c method_32213 method_32213 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; c method_32215 method_32215 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; d method_32697 method_32697 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; e method_32216 method_32216 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; f method_32217 method_32217 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; g method_32698 method_32698 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; h method_32218 method_32218 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; i method_32219 method_32219 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; j method_32220 method_32220 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; k method_32221 method_32221 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; l method_32222 method_32222 + m (Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lcuq;)Lbqt; m method_32223 method_32223 + m ()V +c kj$a net/minecraft/class_5620$class_8821 net/minecraft/core/cauldron/CauldronInteraction$InteractionMap + f Ljava/lang/String; a comp_1981 name + f Ljava/util/Map; b comp_1982 map + m ()Ljava/lang/String; a comp_1981 name + m ()Ljava/util/Map; b comp_1982 map + m (Ljava/lang/String;Ljava/util/Map;)V +c kk net/minecraft/class_6666 net/minecraft/core/cauldron/package-info +c kl net/minecraft/class_9322 net/minecraft/core/component/DataComponentHolder + m ()Lkm; a method_57353 getComponents + m (Lkp;)Ljava/lang/Object; a method_57824 get + m (Lkp;Ljava/lang/Object;)Ljava/lang/Object; a method_57825 getOrDefault + m (Lkp;)Z b method_57826 has +c km net/minecraft/class_9323 net/minecraft/core/component/DataComponentMap + f Lkm; a field_49584 EMPTY + f Lcom/mojang/serialization/Codec; b field_50234 CODEC + m ()Lkm$a; a method_57827 builder + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_60386 makeCodec + m (Ljava/util/function/Predicate;)Lkm; a method_57828 filter + m (Lkm;)Lcom/mojang/serialization/DataResult; a method_60387 method_60387 + m (Lkm;Lkm;)Lkm; a method_59771 composite + m (Lkp;)Ljava/lang/Object; a method_57829 get + m (Lkp;Ljava/lang/Object;)Ljava/lang/Object; a method_57830 getOrDefault + m ()Ljava/util/Set; b method_57831 keySet + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; b method_60388 makeCodecFromMap + m (Lkp;)Z b method_57832 has + m ()Ljava/util/stream/Stream; c method_57833 stream + m (Lkp;)Lks; c method_57834 getTyped + m ()I d method_57835 size + m (Lkp;)Lks; d method_57836 method_57836 + m ()Z e method_57837 isEmpty + m ()V +c km$1 net/minecraft/class_9323$1 net/minecraft/core/component/DataComponentMap$1 + m ()V +c km$2 net/minecraft/class_9323$2 net/minecraft/core/component/DataComponentMap$2 + f Lkm; c field_51459 val$overrides + f Lkm; d field_51460 val$prototype + m (Lkm;Lkm;)V +c km$3 net/minecraft/class_9323$3 net/minecraft/core/component/DataComponentMap$3 + f Ljava/util/function/Predicate; c field_51461 val$predicate + f Lkm; d field_51462 field_51462 + m (Lkm;Ljava/util/function/Predicate;)V +c km$a net/minecraft/class_9323$class_9324 net/minecraft/core/component/DataComponentMap$Builder + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; a field_49587 map + m ()Lkm; a method_57838 build + m (Ljava/util/Map;)Lkm; a method_58755 buildFromMapTrusted + m (Lkm;)Lkm$a; a method_57839 addAll + m (Lkp;Ljava/lang/Object;)Lkm$a; a method_57840 set + m (Lkp;Ljava/lang/Object;)V b method_58756 setUnchecked + m ()V +c km$a$a net/minecraft/class_9323$class_9324$class_9325 net/minecraft/core/component/DataComponentMap$Builder$SimpleMap + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; c comp_2440 map + m ()Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; f comp_2440 map + m (Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap;)V +c kn net/minecraft/class_9326 net/minecraft/core/component/DataComponentPatch + f Lkn; a field_49588 EMPTY + f Lcom/mojang/serialization/Codec; b field_49589 CODEC + f Lyx; c field_49590 STREAM_CODEC + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; d field_49591 map + f Ljava/lang/String; e field_49592 REMOVED_PREFIX + m ()Lkn$a; a method_57841 builder + m (Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap;)Ljava/lang/String; a method_57842 toString + m (Ljava/util/Map;)Lkn; a method_57843 method_57843 + m (Ljava/util/function/Predicate;)Lkn; a method_58757 forget + m (Lkm$a;Ljava/util/Set;Lkp;Ljava/util/Optional;)V a method_58758 method_58758 + m (Lkn;)Ljava/util/Map; a method_57844 method_57844 + m (Lkp;)Ljava/util/Optional; a method_57845 get + m ()Ljava/util/Set; b method_57846 entrySet + m ()I c method_57847 size + m ()Z d method_57848 isEmpty + m ()Lkn$c; e method_58759 split + m (Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap;)V + m ()V +c kn$1 net/minecraft/class_9326$1 net/minecraft/core/component/DataComponentPatch$1 + m (Lwk;)Lkn; a method_57849 decode + m (Lwk;Lkn;)V a method_57850 encode + m (Lwk;Lkp;Ljava/lang/Object;)V a method_57851 encodeComponent + m ()V +c kn$a net/minecraft/class_9326$class_9327 net/minecraft/core/component/DataComponentPatch$Builder + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; a field_49593 map + m ()Lkn; a method_57852 build + m (Lkp;)Lkn$a; a method_57853 remove + m (Lkp;Ljava/lang/Object;)Lkn$a; a method_57854 set + m (Lks;)Lkn$a; a method_57855 set + m ()V +c kn$b net/minecraft/class_9326$class_9328 net/minecraft/core/component/DataComponentPatch$PatchKey + f Lcom/mojang/serialization/Codec; a field_49594 CODEC + f Lkp; b comp_2441 type + f Z c comp_2442 removed + m ()Lcom/mojang/serialization/Codec; a method_57856 valueCodec + m (Lakr;)Ljava/lang/String; a method_57857 method_57857 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_57858 method_57858 + m (Lkn$b;)Lcom/mojang/serialization/DataResult; a method_57859 method_57859 + m (Lkp;)Ljava/lang/String; a method_57860 method_57860 + m ()Lkp; b comp_2441 type + m (Lakr;)Ljava/lang/String; b method_57861 method_57861 + m ()Z c comp_2442 removed + m (Lkp;Z)V + m ()V +c kn$c net/minecraft/class_9326$class_9484 net/minecraft/core/component/DataComponentPatch$SplitResult + f Lkn$c; a field_50235 EMPTY + f Lkm; b comp_2554 added + f Ljava/util/Set; c comp_2555 removed + m ()Lkm; a comp_2554 added + m ()Ljava/util/Set; b comp_2555 removed + m (Lkm;Ljava/util/Set;)V + m ()V +c ko net/minecraft/class_9329 net/minecraft/core/component/DataComponentPredicate + f Lcom/mojang/serialization/Codec; a field_49595 CODEC + f Lyx; b field_49596 STREAM_CODEC + f Lko; c field_49597 EMPTY + f Ljava/util/List; d field_49598 expectedComponents + m ()Lko$a; a method_57862 builder + m (Ljava/util/Map;)Lko; a method_57863 method_57863 + m (Lkl;)Z a method_57864 test + m (Lkm;)Lko; a method_57865 allOf + m (Lko;)Ljava/util/List; a method_57866 method_57866 + m (Lks;)Z a method_58760 method_58760 + m ()Z b method_57867 alwaysMatches + m (Lkm;)Z b method_57868 test + m (Lko;)Ljava/util/Map; b method_57869 method_57869 + m ()Lkn; c method_57870 asPatch + m (Ljava/util/List;)V + m ()V +c ko$a net/minecraft/class_9329$class_9330 net/minecraft/core/component/DataComponentPredicate$Builder + f Ljava/util/List; a field_49599 expectedComponents + m ()Lko; a method_57871 build + m (Lkp;Ljava/lang/Object;)Lko$a; a method_57872 expect + m ()V +c kp net/minecraft/class_9331 net/minecraft/core/component/DataComponentType + f Lcom/mojang/serialization/Codec; a field_49600 CODEC + f Lyx; b field_49601 STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_50236 PERSISTENT_CODEC + f Lcom/mojang/serialization/Codec; d field_50237 VALUE_MAP_CODEC + m ()Lkp$a; a method_57873 builder + m (Lkp;)Lcom/mojang/serialization/DataResult; a method_58761 method_58761 + m (Lyx;)Lyx; a method_57874 method_57874 + m ()Lcom/mojang/serialization/Codec; b method_57875 codec + m (Lkp;)Ljava/lang/String; b method_58762 method_58762 + m ()Lcom/mojang/serialization/Codec; c method_57876 codecOrThrow + m ()Z d method_57877 isTransient + m ()Lyx; e method_57878 streamCodec + m ()Lcom/mojang/serialization/Codec; f method_57879 method_57879 + m ()V +c kp$a net/minecraft/class_9331$class_9332 net/minecraft/core/component/DataComponentType$Builder + f Lcom/mojang/serialization/Codec; a field_49602 codec + f Lyx; b field_49603 streamCodec + f Z c field_51517 cacheEncoding + m ()Lkp$a; a method_59871 cacheEncoding + m (Lcom/mojang/serialization/Codec;)Lkp$a; a method_57881 persistent + m (Lyx;)Lkp$a; a method_57882 networkSynchronized + m ()Lkp; b method_57880 build + m ()Lyx; c method_57883 method_57883 + m ()V +c kp$a$a net/minecraft/class_9331$class_9332$class_9333 net/minecraft/core/component/DataComponentType$Builder$SimpleType + f Lcom/mojang/serialization/Codec; e field_49604 codec + f Lyx; f field_49605 streamCodec + m (Lcom/mojang/serialization/Codec;Lyx;)V +c kq net/minecraft/class_9334 net/minecraft/core/component/DataComponents + f Lkp; A field_49645 MAP_COLOR + f Lkp; B field_49646 MAP_ID + f Lkp; C field_49647 MAP_DECORATIONS + f Lkp; D field_49648 MAP_POST_PROCESSING + f Lkp; E field_49649 CHARGED_PROJECTILES + f Lkp; F field_49650 BUNDLE_CONTENTS + f Lkp; G field_49651 POTION_CONTENTS + f Lkp; H field_49652 SUSPICIOUS_STEW_EFFECTS + f Lkp; I field_49653 WRITABLE_BOOK_CONTENT + f Lkp; J field_49606 WRITTEN_BOOK_CONTENT + f Lkp; K field_49607 TRIM + f Lkp; L field_49608 DEBUG_STICK_STATE + f Lkp; M field_49609 ENTITY_DATA + f Lkp; N field_49610 BUCKET_ENTITY_DATA + f Lkp; O field_49611 BLOCK_ENTITY_DATA + f Lkp; P field_49612 INSTRUMENT + f Lkp; Q field_50238 OMINOUS_BOTTLE_AMPLIFIER + f Lkp; R field_52175 JUKEBOX_PLAYABLE + f Lkp; S field_49613 RECIPES + f Lkp; T field_49614 LODESTONE_TRACKER + f Lkp; U field_49615 FIREWORK_EXPLOSION + f Lkp; V field_49616 FIREWORKS + f Lkp; W field_49617 PROFILE + f Lkp; X field_49618 NOTE_BLOCK_SOUND + f Lkp; Y field_49619 BANNER_PATTERNS + f Lkp; Z field_49620 BASE_COLOR + f Laxu; a field_51518 ENCODER_CACHE + f Lkp; aa field_49621 POT_DECORATIONS + f Lkp; ab field_49622 CONTAINER + f Lkp; ac field_49623 BLOCK_STATE + f Lkp; ad field_49624 BEES + f Lkp; ae field_49625 LOCK + f Lkp; af field_49626 CONTAINER_LOOT + f Lkm; ag field_49627 COMMON_ITEM_COMPONENTS + f Lkp; b field_49628 CUSTOM_DATA + f Lkp; c field_50071 MAX_STACK_SIZE + f Lkp; d field_50072 MAX_DAMAGE + f Lkp; e field_49629 DAMAGE + f Lkp; f field_49630 UNBREAKABLE + f Lkp; g field_49631 CUSTOM_NAME + f Lkp; h field_50239 ITEM_NAME + f Lkp; i field_49632 LORE + f Lkp; j field_50073 RARITY + f Lkp; k field_49633 ENCHANTMENTS + f Lkp; l field_49634 CAN_PLACE_ON + f Lkp; m field_49635 CAN_BREAK + f Lkp; n field_49636 ATTRIBUTE_MODIFIERS + f Lkp; o field_49637 CUSTOM_MODEL_DATA + f Lkp; p field_49638 HIDE_ADDITIONAL_TOOLTIP + f Lkp; q field_50074 HIDE_TOOLTIP + f Lkp; r field_49639 REPAIR_COST + f Lkp; s field_49640 CREATIVE_SLOT_LOCK + f Lkp; t field_49641 ENCHANTMENT_GLINT_OVERRIDE + f Lkp; u field_49642 INTANGIBLE_PROJECTILE + f Lkp; v field_50075 FOOD + f Lkp; w field_50076 FIRE_RESISTANT + f Lkp; x field_50077 TOOL + f Lkp; y field_49643 STORED_ENCHANTMENTS + f Lkp; z field_49644 DYED_COLOR + m (Lkp$a;)Lkp$a; A method_57931 method_57931 + m (Lkp$a;)Lkp$a; B method_57932 method_57932 + m (Lkp$a;)Lkp$a; C method_57884 method_57884 + m (Lkp$a;)Lkp$a; D method_57885 method_57885 + m (Lkp$a;)Lkp$a; E method_57886 method_57886 + m (Lkp$a;)Lkp$a; F method_57887 method_57887 + m (Lkp$a;)Lkp$a; G method_57888 method_57888 + m (Lkp$a;)Lkp$a; H method_57889 method_57889 + m (Lkp$a;)Lkp$a; I method_58564 method_58564 + m (Lkp$a;)Lkp$a; J method_58565 method_58565 + m (Lkp$a;)Lkp$a; K method_58566 method_58566 + m (Lkp$a;)Lkp$a; L method_57890 method_57890 + m (Lkp$a;)Lkp$a; M method_57891 method_57891 + m (Lkp$a;)Lkp$a; N method_57892 method_57892 + m (Lkp$a;)Lkp$a; O method_57893 method_57893 + m (Lkp$a;)Lkp$a; P method_58567 method_58567 + m (Lkp$a;)Lkp$a; Q method_57894 method_57894 + m (Lkp$a;)Lkp$a; R method_57895 method_57895 + m (Lkp$a;)Lkp$a; S method_57896 method_57896 + m (Lkp$a;)Lkp$a; T method_57897 method_57897 + m (Lkp$a;)Lkp$a; U method_57898 method_57898 + m (Lkp$a;)Lkp$a; V method_57899 method_57899 + m (Lkp$a;)Lkp$a; W method_58568 method_58568 + m (Lkp$a;)Lkp$a; X method_57900 method_57900 + m (Lkp$a;)Lkp$a; Y method_58763 method_58763 + m (Lkp$a;)Lkp$a; Z method_57901 method_57901 + m (Ljava/lang/String;Ljava/util/function/UnaryOperator;)Lkp; a method_57906 register + m (Ljz;)Lkp; a method_57905 bootstrap + m (Lkp$a;)Lkp$a; a method_57907 method_57907 + m (Lkp$a;)Lkp$a; aa method_57902 method_57902 + m (Lkp$a;)Lkp$a; ab method_57903 method_57903 + m (Lkp$a;)Lkp$a; ac method_58569 method_58569 + m (Lkp$a;)Lkp$a; ad method_58570 method_58570 + m (Lkp$a;)Lkp$a; ae method_57904 method_57904 + m (Lkp$a;)Lkp$a; b method_57908 method_57908 + m (Lkp$a;)Lkp$a; c method_57909 method_57909 + m (Lkp$a;)Lkp$a; d method_57910 method_57910 + m (Lkp$a;)Lkp$a; e method_57911 method_57911 + m (Lkp$a;)Lkp$a; f method_57912 method_57912 + m (Lkp$a;)Lkp$a; g method_57913 method_57913 + m (Lkp$a;)Lkp$a; h method_57914 method_57914 + m (Lkp$a;)Lkp$a; i method_57915 method_57915 + m (Lkp$a;)Lkp$a; j method_57916 method_57916 + m (Lkp$a;)Lkp$a; k method_57917 method_57917 + m (Lkp$a;)Lkp$a; l method_57918 method_57918 + m (Lkp$a;)Lkp$a; m method_57919 method_57919 + m (Lkp$a;)Lkp$a; n method_57920 method_57920 + m (Lkp$a;)Lkp$a; o method_60914 method_60914 + m (Lkp$a;)Lkp$a; p method_58764 method_58764 + m (Lkp$a;)Lkp$a; q method_57921 method_57921 + m (Lkp$a;)Lkp$a; r method_57922 method_57922 + m (Lkp$a;)Lkp$a; s method_57923 method_57923 + m (Lkp$a;)Lkp$a; t method_57924 method_57924 + m (Lkp$a;)Lkp$a; u method_57925 method_57925 + m (Lkp$a;)Lkp$a; v method_57926 method_57926 + m (Lkp$a;)Lkp$a; w method_57927 method_57927 + m (Lkp$a;)Lkp$a; x method_57928 method_57928 + m (Lkp$a;)Lkp$a; y method_57929 method_57929 + m (Lkp$a;)Lkp$a; z method_57930 method_57930 + m ()V + m ()V +c kr net/minecraft/class_9335 net/minecraft/core/component/PatchedDataComponentMap + f Lkm; c field_49654 prototype + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; d field_49655 patch + f Z e field_49656 copyOnWrite + m (Lkm;)V a method_57933 setAll + m (Lkm;Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap;)Z a method_57934 isPatchSanitized + m (Lkm;Lkn;)Lkr; a method_57935 fromPatch + m (Lkn;)V a method_57936 applyPatch + m (Lkp;Ljava/util/Optional;)V a method_57937 applyPatch + m (Lkn;)V b method_59772 restorePatch + m (Lkp;Ljava/lang/Object;)Ljava/lang/Object; b method_57938 set + m (Lkp;)Ljava/lang/Object; d method_57939 remove + m ()Lkn; f method_57940 asPatch + m ()Lkr; g method_57941 copy + m ()V h method_57942 ensureMapOwnership + m (Lkm;)V + m (Lkm;Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap;Z)V +c ks net/minecraft/class_9336 net/minecraft/core/component/TypedDataComponent + f Lyx; a field_49657 STREAM_CODEC + f Lkp; b comp_2443 type + f Ljava/lang/Object; c comp_2444 value + m ()Lkp; a comp_2443 type + m (Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/DataResult; a method_57943 encodeValue + m (Ljava/util/Map$Entry;)Lks; a method_57944 fromEntryUnchecked + m (Lkp;Ljava/lang/Object;)Lks; a method_57945 createUnchecked + m (Lkr;)V a method_57946 applyTo + m ()Ljava/lang/Object; b comp_2444 value + m ()Ljava/lang/String; c method_57947 method_57947 + m (Lkp;Ljava/lang/Object;)V + m ()V +c ks$1 net/minecraft/class_9336$1 net/minecraft/core/component/TypedDataComponent$1 + m (Lwk;)Lks; a method_57948 decode + m (Lwk;Lkp;)Lks; a method_57949 decodeTyped + m (Lwk;Lks;)V a method_57950 encode + m (Lwk;Lks;)V b method_57951 encodeCap + m ()V +c kt net/minecraft/class_9337 net/minecraft/core/component/package-info +c ku net/minecraft/class_2342 net/minecraft/core/dispenser/BlockSource + f Laqu; a comp_1967 level + f Ljd; b comp_1968 pos + f Ldtc; c comp_1969 state + f Ldra; d comp_1970 blockEntity + m ()Lexc; a method_53906 center + m ()Laqu; b comp_1967 level + m ()Ljd; c comp_1968 pos + m ()Ldtc; d comp_1969 state + m ()Ldra; e comp_1970 blockEntity + m (Laqu;Ljd;Ldtc;Ldra;)V +c kv net/minecraft/class_2967 net/minecraft/core/dispenser/BoatDispenseItemBehavior + f Lkw; c field_13360 defaultDispenseItemBehavior + f Lcov$b; d field_13361 type + f Z e field_38465 isChestBoat + m (Lcov$b;)V + m (Lcov$b;Z)V +c kw net/minecraft/class_2347 net/minecraft/core/dispenser/DefaultDispenseItemBehavior + f I c field_51916 DEFAULT_ACCURACY + m (Ldcw;Lcuq;ILji;Ljw;)V a method_10134 spawnItem + m (Lku;)V a method_10136 playSound + m (Lku;Lcuq;)Lcuq; a method_10135 execute + m (Lku;Lcuq;Lcuq;)Lcuq; a method_60577 consumeWithRemainder + m (Lku;Lji;)V a method_10133 playAnimation + m (Lku;)V b method_60578 playDefaultSound + m (Lku;Lcuq;)V b method_60579 addToInventoryOrDispense + m (Lku;Lji;)V b method_60580 playDefaultAnimation + m ()V +c kx net/minecraft/class_2357 net/minecraft/core/dispenser/DispenseItemBehavior + f Lorg/slf4j/Logger; a field_34020 LOGGER + f Lkx; b field_16902 NOOP + m ()V a method_18346 bootStrap + m (Lku;Lcuq;)Lcuq; a method_16812 method_16812 + m ()V +c kx$1 net/minecraft/class_2357$1 net/minecraft/core/dispenser/DispenseItemBehavior$1 + m ()V +c kx$2 net/minecraft/class_2357$2 net/minecraft/core/dispenser/DispenseItemBehavior$10 + m ()V +c kx$3 net/minecraft/class_2357$3 net/minecraft/core/dispenser/DispenseItemBehavior$11 + m ()V +c kx$4 net/minecraft/class_2357$4 net/minecraft/core/dispenser/DispenseItemBehavior$12 + m ()V +c kx$5 net/minecraft/class_2357$5 net/minecraft/core/dispenser/DispenseItemBehavior$13 + m ()V +c kx$6 net/minecraft/class_2357$6 net/minecraft/core/dispenser/DispenseItemBehavior$14 + m (Ldtb$a;)Z a method_58770 method_58770 + m (Lku;Lcuq;Lcuq;)Lcuq; b method_58771 takeLiquid + m ()V +c kx$7 net/minecraft/class_2357$7 net/minecraft/core/dispenser/DispenseItemBehavior$15 + m ()V +c kx$8 net/minecraft/class_2357$8 net/minecraft/core/dispenser/DispenseItemBehavior$16 + m (Lcul;)V a method_58772 method_58772 + m ()V +c kx$9 net/minecraft/class_2357$9 net/minecraft/core/dispenser/DispenseItemBehavior$17 + m ()V +c kx$10 net/minecraft/class_2357$10 net/minecraft/core/dispenser/DispenseItemBehavior$18 + f Lkw; c field_49137 defaultDispenseItemBehavior + m ()V +c kx$11 net/minecraft/class_2357$11 net/minecraft/core/dispenser/DispenseItemBehavior$2 + m (Lji;Lciw;)V a method_58765 method_58765 + m ()V +c kx$12 net/minecraft/class_2357$12 net/minecraft/core/dispenser/DispenseItemBehavior$3 + m (Lbtn;)Z a method_58766 method_58766 + m ()V +c kx$13 net/minecraft/class_2357$13 net/minecraft/core/dispenser/DispenseItemBehavior$4 + m (Lchi;)Z a method_58767 method_58767 + m ()V +c kx$14 net/minecraft/class_2357$14 net/minecraft/core/dispenser/DispenseItemBehavior$5 + m (Lchh;)Z a method_58768 method_58768 + m ()V +c kx$15 net/minecraft/class_2357$15 net/minecraft/core/dispenser/DispenseItemBehavior$6 + f Lkw; c field_50240 defaultDispenseItemBehavior + m ()V +c kx$16 net/minecraft/class_2357$16 net/minecraft/core/dispenser/DispenseItemBehavior$7 + m ()V +c kx$17 net/minecraft/class_2357$17 net/minecraft/core/dispenser/DispenseItemBehavior$8 + m (Lcul;)V a method_58769 method_58769 + m ()V +c kx$18 net/minecraft/class_2357$18 net/minecraft/core/dispenser/DispenseItemBehavior$9 + m ()V +c ky net/minecraft/class_2969 net/minecraft/core/dispenser/OptionalDispenseItemBehavior + f Z c field_13364 success + m (Z)V a method_27955 setSuccess + m ()Z b method_27954 isSuccess + m ()V +c kz net/minecraft/class_2965 net/minecraft/core/dispenser/ProjectileDispenseBehavior + f Lcvm; c field_50243 projectileItem + f Lcvm$a; d field_50244 dispenseConfig + m (Lcul;)V +c la net/minecraft/class_5168 net/minecraft/core/dispenser/ShearsDispenseItemBehavior + m (Laqu;Ljd;)Z a method_27162 tryShearBeehive + m (Lcul;)V a method_56167 method_56167 + m (Ldtb$a;)Z a method_40054 method_40054 + m (Laqu;Ljd;)Z b method_27163 tryShearLivingEntity + m ()V +c lb net/minecraft/class_2970 net/minecraft/core/dispenser/ShulkerBoxDispenseBehavior + f Lorg/slf4j/Logger; c field_33680 LOGGER + m ()V + m ()V +c lc net/minecraft/class_6284 net/minecraft/core/dispenser/package-info +c ld net/minecraft/class_6285 net/minecraft/core/package-info +c le net/minecraft/class_2388 net/minecraft/core/particles/BlockParticleOption + f Lcom/mojang/serialization/Codec; a field_51463 BLOCK_STATE_CODEC + f Lll; b field_11183 type + f Ldtc; c field_11182 state + m (Lle;)Ldtc; a method_56168 method_56168 + m (Lll;)Lcom/mojang/serialization/MapCodec; a method_29128 codec + m (Lll;Ldtc;)Lle; a method_56169 method_56169 + m ()Ldtc; b method_10278 getState + m (Lle;)Ldtc; b method_29127 method_29127 + m (Lll;)Lyx; b method_56170 streamCodec + m (Lll;Ldtc;)Lle; b method_29129 method_29129 + m (Lll;Ldtc;)V + m ()V +c lf net/minecraft/class_9381 net/minecraft/core/particles/ColorParticleOption + f Lll; a field_49909 type + f I b field_49910 color + m (Llf;)Ljava/lang/Integer; a method_58253 method_58253 + m (Lll;)Lcom/mojang/serialization/MapCodec; a method_58254 codec + m (Lll;FFF)Llf; a method_58255 create + m (Lll;I)Llf; a method_58256 create + m (Lll;Ljava/lang/Integer;)Llf; a method_58258 method_58258 + m ()F b method_58259 getRed + m (Llf;)Ljava/lang/Integer; b method_58260 method_58260 + m (Lll;)Lyx; b method_58261 streamCodec + m (Lll;Ljava/lang/Integer;)Llf; b method_58262 method_58262 + m ()F c method_58263 getGreen + m ()F d method_58264 getBlue + m ()F e method_58265 getAlpha + m (Lll;I)V +c lg net/minecraft/class_5743 net/minecraft/core/particles/DustColorTransitionOptions + f Lorg/joml/Vector3f; a field_28267 SCULK_PARTICLE_COLOR + f Llg; b field_28268 SCULK_TO_REDSTONE + f Lcom/mojang/serialization/MapCodec; c field_28269 CODEC + f Lyx; d field_48454 STREAM_CODEC + f Lorg/joml/Vector3f; h field_51491 fromColor + f Lorg/joml/Vector3f; i field_28271 toColor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33107 method_33107 + m (Llg;)Lorg/joml/Vector3f; a method_56172 method_56172 + m ()Lorg/joml/Vector3f; b method_33110 getFromColor + m (Llg;)Lorg/joml/Vector3f; b method_56173 method_56173 + m ()Lorg/joml/Vector3f; c method_33112 getToColor + m (Llg;)Lorg/joml/Vector3f; c method_33109 method_33109 + m (Llg;)Lorg/joml/Vector3f; d method_33111 method_33111 + m (Lorg/joml/Vector3f;Lorg/joml/Vector3f;F)V + m ()V +c lh net/minecraft/class_2390 net/minecraft/core/particles/DustParticleOptions + f Lorg/joml/Vector3f; a field_28272 REDSTONE_PARTICLE_COLOR + f Llh; b field_11188 REDSTONE + f Lcom/mojang/serialization/MapCodec; c field_25124 CODEC + f Lyx; d field_48455 STREAM_CODEC + f Lorg/joml/Vector3f; h field_51492 color + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33115 method_33115 + m (Llh;)Lorg/joml/Vector3f; a method_56175 method_56175 + m ()Lorg/joml/Vector3f; b method_59843 getColor + m (Llh;)Lorg/joml/Vector3f; b method_33117 method_33117 + m (Lorg/joml/Vector3f;F)V + m ()V +c li net/minecraft/class_2392 net/minecraft/core/particles/ItemParticleOption + f Lcom/mojang/serialization/Codec; a field_51464 ITEM_CODEC + f Lll; b field_11193 type + f Lcuq; c field_11192 itemStack + m (Lli;)Lcuq; a method_56176 method_56176 + m (Lll;)Lcom/mojang/serialization/MapCodec; a method_29136 codec + m (Lll;Lcuq;)Lli; a method_56177 method_56177 + m ()Lcuq; b method_10289 getItem + m (Lli;)Lcuq; b method_29135 method_29135 + m (Lll;)Lyx; b method_56178 streamCodec + m (Lll;Lcuq;)Lli; b method_29137 method_29137 + m (Lll;Lcuq;)V + m ()V +c lj net/minecraft/class_5878 net/minecraft/core/particles/ParticleGroup + f Llj; a field_29077 SPORE_BLOSSOM + f I b field_29078 limit + m ()I a method_34045 getLimit + m (I)V + m ()V +c lk net/minecraft/class_2394 net/minecraft/core/particles/ParticleOptions + m ()Lll; a method_10295 getType +c ll net/minecraft/class_2396 net/minecraft/core/particles/ParticleType + f Z a field_11196 overrideLimiter + m ()Z b method_10299 getOverrideLimiter + m ()Lcom/mojang/serialization/MapCodec; c method_29138 codec + m ()Lyx; d method_56179 streamCodec + m (Z)V +c lm net/minecraft/class_2398 net/minecraft/core/particles/ParticleTypes + f Llq; A field_49139 GUST_EMITTER_SMALL + f Llq; B field_38908 SONIC_BOOM + f Lll; C field_11206 FALLING_DUST + f Llq; D field_11248 FIREWORK + f Llq; E field_11244 FISHING + f Llq; F field_11240 FLAME + f Llq; G field_50245 INFESTED + f Llq; H field_43379 CHERRY_LEAVES + f Llq; I field_38002 SCULK_SOUL + f Lll; J field_38003 SCULK_CHARGE + f Llq; K field_38004 SCULK_CHARGE_POP + f Llq; L field_22246 SOUL_FIRE_FLAME + f Llq; M field_23114 SOUL + f Llq; N field_17909 FLASH + f Llq; O field_11211 HAPPY_VILLAGER + f Llq; P field_17741 COMPOSTER + f Llq; Q field_11201 HEART + f Llq; R field_11213 INSTANT_EFFECT + f Lll; S field_11218 ITEM + f Lll; T field_28275 VIBRATION + f Llq; U field_11246 ITEM_SLIME + f Llq; V field_50246 ITEM_COBWEB + f Llq; W field_11230 ITEM_SNOWBALL + f Llq; X field_11237 LARGE_SMOKE + f Llq; Y field_11239 LAVA + f Llq; Z field_11219 MYCELIUM + f Llq; aA field_22247 ASH + f Llq; aB field_22248 CRIMSON_SPORE + f Llq; aC field_22249 WARPED_SPORE + f Llq; aD field_28803 SPORE_BLOSSOM_AIR + f Llq; aE field_22446 DRIPPING_OBSIDIAN_TEAR + f Llq; aF field_22447 FALLING_OBSIDIAN_TEAR + f Llq; aG field_22448 LANDING_OBSIDIAN_TEAR + f Llq; aH field_23190 REVERSE_PORTAL + f Llq; aI field_23956 WHITE_ASH + f Llq; aJ field_27783 SMALL_FLAME + f Llq; aK field_28013 SNOWFLAKE + f Llq; aL field_28076 DRIPPING_DRIPSTONE_LAVA + f Llq; a field_11231 ANGRY_VILLAGER + f Llq; aM field_28077 FALLING_DRIPSTONE_LAVA + f Llq; aN field_28078 DRIPPING_DRIPSTONE_WATER + f Llq; aO field_28079 FALLING_DRIPSTONE_WATER + f Llq; aP field_28478 GLOW_SQUID_INK + f Llq; aQ field_28479 GLOW + f Llq; aR field_29642 WAX_ON + f Llq; aS field_29643 WAX_OFF + f Llq; aT field_29644 ELECTRIC_SPARK + f Llq; aU field_29645 SCRAPE + f Lll; aV field_38357 SHRIEK + f Llq; aW field_43380 EGG_CRACK + f Llq; aX field_46763 DUST_PLUME + f Llq; aY field_47493 TRIAL_SPAWNER_DETECTED_PLAYER + f Llq; aZ field_50247 TRIAL_SPAWNER_DETECTED_PLAYER_OMINOUS + f Llq; aa field_11224 NOTE + f Llq; ab field_11203 POOF + f Llq; ac field_11214 PORTAL + f Llq; ad field_11242 RAIN + f Llq; ae field_11251 SMOKE + f Llq; af field_46911 WHITE_SMOKE + f Llq; ag field_11234 SNEEZE + f Llq; ah field_11228 SPIT + f Llq; ai field_11233 SQUID_INK + f Llq; aj field_11227 SWEEP_ATTACK + f Llq; ak field_11220 TOTEM_OF_UNDYING + f Llq; al field_11210 UNDERWATER + f Llq; am field_11202 SPLASH + f Llq; an field_11249 WITCH + f Llq; ao field_11241 BUBBLE_POP + f Llq; ap field_11243 CURRENT_DOWN + f Llq; aq field_11238 BUBBLE_COLUMN_UP + f Llq; ar field_11229 NAUTILUS + f Llq; as field_11222 DOLPHIN + f Llq; at field_17430 CAMPFIRE_COSY_SMOKE + f Llq; au field_17431 CAMPFIRE_SIGNAL_SMOKE + f Llq; av field_20534 DRIPPING_HONEY + f Llq; aw field_20535 FALLING_HONEY + f Llq; ax field_20536 LANDING_HONEY + f Llq; ay field_20537 FALLING_NECTAR + f Llq; az field_28802 FALLING_SPORE_BLOSSOM + f Lll; b field_11217 BLOCK + f Llq; ba field_48975 VAULT_CONNECTION + f Lll; bb field_50248 DUST_PILLAR + f Llq; bc field_50249 OMINOUS_SPAWNING + f Llq; bd field_50250 RAID_OMEN + f Llq; be field_50251 TRIAL_OMEN + f Lcom/mojang/serialization/Codec; bf field_25125 CODEC + f Lyx; bg field_48456 STREAM_CODEC + f Lll; c field_35434 BLOCK_MARKER + f Llq; d field_11247 BUBBLE + f Llq; e field_11204 CLOUD + f Llq; f field_11205 CRIT + f Llq; g field_11209 DAMAGE_INDICATOR + f Llq; h field_11216 DRAGON_BREATH + f Llq; i field_11223 DRIPPING_LAVA + f Llq; j field_18304 FALLING_LAVA + f Llq; k field_18305 LANDING_LAVA + f Llq; l field_11232 DRIPPING_WATER + f Llq; m field_18306 FALLING_WATER + f Lll; n field_11212 DUST + f Lll; o field_28276 DUST_COLOR_TRANSITION + f Llq; p field_11245 EFFECT + f Llq; q field_11250 ELDER_GUARDIAN + f Llq; r field_11208 ENCHANTED_HIT + f Llq; s field_11215 ENCHANT + f Llq; t field_11207 END_ROD + f Lll; u field_11226 ENTITY_EFFECT + f Llq; v field_11221 EXPLOSION_EMITTER + f Llq; w field_11236 EXPLOSION + f Llq; x field_47494 GUST + f Llq; y field_50252 SMALL_GUST + f Llq; z field_49140 GUST_EMITTER_LARGE + m (Ljava/lang/String;Z)Llq; a method_10303 register + m (Ljava/lang/String;ZLjava/util/function/Function;Ljava/util/function/Function;)Lll; a method_42022 register + m (Lll;)Lyx; a method_56180 method_56180 + m (Lll;)Lcom/mojang/serialization/MapCodec; b method_42616 method_42616 + m (Lll;)Lyx; c method_56181 method_56181 + m (Lll;)Lcom/mojang/serialization/MapCodec; d method_33121 method_33121 + m (Lll;)Lyx; e method_56182 method_56182 + m (Lll;)Lcom/mojang/serialization/MapCodec; f method_42023 method_42023 + m (Lll;)Lyx; g method_56183 method_56183 + m (Lll;)Lcom/mojang/serialization/MapCodec; h method_33122 method_33122 + m (Lll;)Lyx; i method_56184 method_56184 + m (Lll;)Lcom/mojang/serialization/MapCodec; j method_29139 method_29139 + m ()V + m ()V +c lm$1 net/minecraft/class_2398$1 net/minecraft/core/particles/ParticleTypes$1 + f Ljava/util/function/Function; a field_25126 val$codec + f Ljava/util/function/Function; b field_48457 val$streamCodec + m (ZLjava/util/function/Function;Ljava/util/function/Function;)V +c ln net/minecraft/class_9679 net/minecraft/core/particles/ScalableParticleOptionsBase + f F a field_51493 scale + f F e field_51494 MIN_SCALE + f F f field_51495 MAX_SCALE + f Lcom/mojang/serialization/Codec; g field_51496 SCALE + m (Ljava/lang/Float;)Lcom/mojang/serialization/DataResult; a method_59844 method_59844 + m (Ljava/lang/Float;)Ljava/lang/String; b method_59845 method_59845 + m ()F d method_59846 getScale + m (F)V + m ()V +c lo net/minecraft/class_7227 net/minecraft/core/particles/SculkChargeParticleOptions + f Lcom/mojang/serialization/MapCodec; a field_38005 CODEC + f Lyx; b field_48458 STREAM_CODEC + f F c comp_632 roll + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42024 method_42024 + m (Llo;)Ljava/lang/Float; a method_56185 method_56185 + m ()F b comp_632 roll + m (Llo;)Ljava/lang/Float; b method_42025 method_42025 + m (F)V + m ()V +c lp net/minecraft/class_7290 net/minecraft/core/particles/ShriekParticleOption + f Lcom/mojang/serialization/MapCodec; a field_38358 CODEC + f Lyx; b field_48459 STREAM_CODEC + f I c field_38360 delay + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42617 method_42617 + m (Llp;)Ljava/lang/Integer; a method_56186 method_56186 + m ()I b method_42619 getDelay + m (Llp;)Ljava/lang/Integer; b method_42618 method_42618 + m (I)V + m ()V +c lq net/minecraft/class_2400 net/minecraft/core/particles/SimpleParticleType + f Lcom/mojang/serialization/MapCodec; a field_25127 codec + f Lyx; b field_48460 streamCodec + m ()Llq; e method_29140 getType + m (Z)V +c lr net/minecraft/class_5745 net/minecraft/core/particles/VibrationParticleOption + f Lcom/mojang/serialization/MapCodec; a field_28277 CODEC + f Lyx; b field_48461 STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_51465 SAFE_POSITION_SOURCE_CODEC + f Ldyd; d field_38361 destination + f I e field_38362 arrivalInTicks + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42622 method_42622 + m (Ldyd;)Lcom/mojang/serialization/DataResult; a method_59773 method_59773 + m ()Ldyd; b method_33125 getDestination + m ()I c method_42624 getArrivalInTicks + m ()Ljava/lang/String; d method_59774 method_59774 + m (Ldyd;I)V + m ()V +c ls net/minecraft/class_6286 net/minecraft/core/particles/package-info +c lt net/minecraft/class_7923 net/minecraft/core/registries/BuiltInRegistries + f Ljh; A field_41130 SENSOR_TYPE + f Ljz; B field_41131 SCHEDULE + f Ljz; C field_41132 ACTIVITY + f Ljz; D field_41133 LOOT_POOL_ENTRY_TYPE + f Ljz; E field_41134 LOOT_FUNCTION_TYPE + f Ljz; F field_41135 LOOT_CONDITION_TYPE + f Ljz; G field_41136 LOOT_NUMBER_PROVIDER_TYPE + f Ljz; H field_41137 LOOT_NBT_PROVIDER_TYPE + f Ljz; I field_41138 LOOT_SCORE_PROVIDER_TYPE + f Ljz; J field_41139 FLOAT_PROVIDER_TYPE + f Ljz; K field_41140 INT_PROVIDER_TYPE + f Ljz; L field_41141 HEIGHT_PROVIDER_TYPE + f Ljz; M field_41142 BLOCK_PREDICATE_TYPE + f Ljz; N field_41143 CARVER + f Ljz; O field_41144 FEATURE + f Ljz; P field_41145 STRUCTURE_PLACEMENT + f Ljz; Q field_41146 STRUCTURE_PIECE + f Ljz; R field_41147 STRUCTURE_TYPE + f Ljz; S field_41148 PLACEMENT_MODIFIER_TYPE + f Ljz; T field_41149 BLOCKSTATE_PROVIDER_TYPE + f Ljz; U field_41150 FOLIAGE_PLACER_TYPE + f Ljz; V field_41151 TRUNK_PLACER_TYPE + f Ljz; W field_41152 ROOT_PLACER_TYPE + f Ljz; X field_41153 TREE_DECORATOR_TYPE + f Ljz; Y field_41155 FEATURE_SIZE_TYPE + f Ljz; Z field_41156 BIOME_SOURCE + f Ljz; aA field_41167 REGISTRY + f Lorg/slf4j/Logger; aB field_41168 LOGGER + f Ljava/util/Map; aC field_41169 LOADERS + f Lki; aD field_41170 WRITABLE_REGISTRY + f Ljh; a field_41171 GAME_EVENT + f Ljz; aa field_41157 CHUNK_GENERATOR + f Ljz; ab field_41158 MATERIAL_CONDITION + f Ljz; ac field_41159 MATERIAL_RULE + f Ljz; ad field_41160 DENSITY_FUNCTION_TYPE + f Ljz; ae field_46591 BLOCK_TYPE + f Ljz; af field_41161 STRUCTURE_PROCESSOR + f Ljz; ag field_41162 STRUCTURE_POOL_ELEMENT + f Ljz; ah field_46912 POOL_ALIAS_BINDING_TYPE + f Ljz; ai field_41163 CAT_VARIANT + f Ljz; aj field_41164 FROG_VARIANT + f Ljz; ak field_41166 INSTRUMENT + f Ljz; al field_42940 DECORATED_POT_PATTERN + f Ljz; am field_44687 CREATIVE_MODE_TAB + f Ljz; an field_47496 TRIGGER_TYPES + f Ljz; ao field_47555 NUMBER_FORMAT_TYPE + f Ljz; ap field_48976 ARMOR_MATERIAL + f Ljz; aq field_49658 DATA_COMPONENT_TYPE + f Ljz; ar field_49911 ENTITY_SUB_PREDICATE_TYPE + f Ljz; as field_49912 ITEM_SUB_PREDICATE_TYPE + f Ljz; at field_50078 MAP_DECORATION_TYPE + f Ljz; au field_51832 ENCHANTMENT_EFFECT_COMPONENT_TYPE + f Ljz; av field_51833 ENCHANTMENT_LEVEL_BASED_VALUE_TYPE + f Ljz; aw field_51834 ENCHANTMENT_ENTITY_EFFECT_TYPE + f Ljz; ax field_51835 ENCHANTMENT_LOCATION_BASED_EFFECT_TYPE + f Ljz; ay field_51836 ENCHANTMENT_VALUE_EFFECT_TYPE + f Ljz; az field_51837 ENCHANTMENT_PROVIDER_TYPE + f Ljz; b field_41172 SOUND_EVENT + f Ljh; c field_41173 FLUID + f Ljz; d field_41174 MOB_EFFECT + f Ljh; e field_41175 BLOCK + f Ljh; f field_41177 ENTITY_TYPE + f Ljh; g field_41178 ITEM + f Ljz; h field_41179 POTION + f Ljz; i field_41180 PARTICLE_TYPE + f Ljz; j field_41181 BLOCK_ENTITY_TYPE + f Ljz; k field_41183 CUSTOM_STAT + f Ljh; l field_41184 CHUNK_STATUS + f Ljz; m field_41185 RULE_TEST + f Ljz; n field_43381 RULE_BLOCK_ENTITY_MODIFIER + f Ljz; o field_41186 POS_RULE_TEST + f Ljz; p field_41187 MENU + f Ljz; q field_41188 RECIPE_TYPE + f Ljz; r field_41189 RECIPE_SERIALIZER + f Ljz; s field_41190 ATTRIBUTE + f Ljz; t field_41191 POSITION_SOURCE_TYPE + f Ljz; u field_41192 COMMAND_ARGUMENT_TYPE + f Ljz; v field_41193 STAT_TYPE + f Ljh; w field_41194 VILLAGER_TYPE + f Ljh; x field_41195 VILLAGER_PROFESSION + f Ljz; y field_41128 POINT_OF_INTEREST_TYPE + f Ljh; z field_41129 MEMORY_MODULE_TYPE + m (Ljz;)Ljava/lang/Object; A method_47451 method_47451 + m (Ljz;)Ljava/lang/Object; B method_47452 method_47452 + m (Ljz;)Ljava/lang/Object; C method_47453 method_47453 + m (Ljz;)Ljava/lang/Object; D method_47454 method_47454 + m (Ljz;)Ljava/lang/Object; E method_47455 method_47455 + m (Ljz;)Ljava/lang/Object; F method_47456 method_47456 + m (Ljz;)Ljava/lang/Object; G method_47457 method_47457 + m (Ljz;)Ljava/lang/Object; H method_47459 method_47459 + m (Ljz;)Ljava/lang/Object; I method_47460 method_47460 + m (Ljz;)Ljava/lang/Object; J method_47461 method_47461 + m (Ljz;)Ljava/lang/Object; K method_47462 method_47462 + m (Ljz;)Ljava/lang/Object; L method_49927 method_49927 + m (Ljz;)Ljava/lang/Object; M method_60389 method_60389 + m (Ljz;)Ljava/lang/Object; N method_47465 method_47465 + m (Ljz;)Ljava/lang/Object; O method_47466 method_47466 + m (Ljz;)Ljava/lang/Object; P method_47467 method_47467 + m (Ljz;)Ljava/lang/Object; Q method_47469 method_47469 + m (Ljz;)Ljava/lang/Object; R method_47470 method_47470 + m (Ljz;)Ljava/lang/Object; S method_47471 method_47471 + m (Ljz;)Ljava/lang/Object; T method_47472 method_47472 + m (Ljz;)Ljava/lang/Object; U method_47474 method_47474 + m (Ljz;)Ljava/lang/Object; V method_47475 method_47475 + m ()V a method_47476 bootStrap + m (Lakq;)Ljava/lang/String; a method_55303 method_55303 + m (Lakq;Ljava/lang/String;Llt$a;)Ljh; a method_47481 registerDefaulted + m (Lakq;Lki;Llt$a;)Lki; a method_47478 internalRegister + m (Lakq;Llt$a;)Ljz; a method_47479 registerSimple + m (Lakr;Ljava/util/function/Supplier;)V a method_47482 method_47482 + m (Ljz;)V a method_47483 validate + m (Ljz;Ljz;)V a method_47484 method_47484 + m (Llt$a;Lki;)Ljava/lang/Object; a method_47485 method_47485 + m ()V b method_47487 createContents + m (Lakq;Ljava/lang/String;Llt$a;)Ljh; b method_47489 registerDefaultedWithIntrusiveHolders + m (Lakq;Llt$a;)Ljz; b method_53495 registerSimpleWithIntrusiveHolders + m (Ljz;)Ljava/lang/Object; b method_47492 method_47492 + m ()V c method_47491 freeze + m (Ljz;)Ljava/lang/Object; c method_47493 method_47493 + m (Ljz;)Ljava/lang/Object; d method_47494 method_47494 + m (Ljz;)Ljava/lang/Object; e method_47495 method_47495 + m (Ljz;)Ljava/lang/Object; f method_47496 method_47496 + m (Ljz;)Ljava/lang/Object; g method_47497 method_47497 + m (Ljz;)Ljava/lang/Object; h method_47498 method_47498 + m (Ljz;)Ljava/lang/Object; i method_47499 method_47499 + m (Ljz;)Ljava/lang/Object; j method_47500 method_47500 + m (Ljz;)Ljava/lang/Object; k method_47501 method_47501 + m (Ljz;)Ljava/lang/Object; l method_47502 method_47502 + m (Ljz;)Ljava/lang/Object; m method_47503 method_47503 + m (Ljz;)Ljava/lang/Object; n method_47504 method_47504 + m (Ljz;)Ljava/lang/Object; o method_47505 method_47505 + m (Ljz;)Ljava/lang/Object; p method_47506 method_47506 + m (Ljz;)Ljava/lang/Object; q method_47507 method_47507 + m (Ljz;)Ljava/lang/Object; r method_47508 method_47508 + m (Ljz;)Ljava/lang/Object; s method_47509 method_47509 + m (Ljz;)Ljava/lang/Object; t method_47510 method_47510 + m (Ljz;)Ljava/lang/Object; u method_47511 method_47511 + m (Ljz;)Ljava/lang/Object; v method_47512 method_47512 + m (Ljz;)Ljava/lang/Object; w method_47513 method_47513 + m (Ljz;)Ljava/lang/Object; x method_47514 method_47514 + m (Ljz;)Ljava/lang/Object; y method_47515 method_47515 + m (Ljz;)Ljava/lang/Object; z method_47450 method_47450 + m ()V + m ()V +c lt$a net/minecraft/class_7923$class_6889 net/minecraft/core/registries/BuiltInRegistries$RegistryBootstrap +c lu net/minecraft/class_7924 net/minecraft/core/registries/Registries + f Lakq; A field_41267 FEATURE + f Lakq; B field_41268 FEATURE_SIZE_TYPE + f Lakq; C field_41269 FLOAT_PROVIDER_TYPE + f Lakq; D field_41270 FLUID + f Lakq; E field_41271 FOLIAGE_PLACER_TYPE + f Lakq; F field_41272 FROG_VARIANT + f Lakq; G field_41273 GAME_EVENT + f Lakq; H field_41274 HEIGHT_PROVIDER_TYPE + f Lakq; I field_41275 INSTRUMENT + f Lakq; J field_41196 INT_PROVIDER_TYPE + f Lakq; K field_41197 ITEM + f Lakq; L field_52176 JUKEBOX_SONG + f Lakq; M field_41198 LOOT_CONDITION_TYPE + f Lakq; N field_41199 LOOT_FUNCTION_TYPE + f Lakq; O field_41200 LOOT_NBT_PROVIDER_TYPE + f Lakq; P field_41201 LOOT_NUMBER_PROVIDER_TYPE + f Lakq; Q field_41202 LOOT_POOL_ENTRY_TYPE + f Lakq; R field_41203 LOOT_SCORE_PROVIDER_TYPE + f Lakq; S field_41204 MATERIAL_CONDITION + f Lakq; T field_41205 MATERIAL_RULE + f Lakq; U field_41206 MEMORY_MODULE_TYPE + f Lakq; V field_41207 MENU + f Lakq; W field_41208 MOB_EFFECT + f Lakq; X field_41209 PAINTING_VARIANT + f Lakq; Y field_41210 PARTICLE_TYPE + f Lakq; Z field_41211 PLACEMENT_MODIFIER_TYPE + f Lakq; aA field_49659 DATA_COMPONENT_TYPE + f Lakq; aB field_49913 ENTITY_SUB_PREDICATE_TYPE + f Lakq; aC field_49914 ITEM_SUB_PREDICATE_TYPE + f Lakq; aD field_50082 MAP_DECORATION_TYPE + f Lakq; aE field_51838 ENCHANTMENT_EFFECT_COMPONENT_TYPE + f Lakq; aF field_41236 BIOME + f Lakq; aG field_41237 CHAT_TYPE + f Lakq; aH field_41238 CONFIGURED_CARVER + f Lakq; aI field_41239 CONFIGURED_FEATURE + f Lakq; aJ field_41240 DENSITY_FUNCTION + f Lakq; aK field_41241 DIMENSION_TYPE + f Lakq; aL field_41265 ENCHANTMENT + f Lakr; a field_47497 ROOT_REGISTRY_NAME + f Lakq; aM field_51839 ENCHANTMENT_PROVIDER + f Lakq; aN field_41242 FLAT_LEVEL_GENERATOR_PRESET + f Lakq; aO field_41243 NOISE_SETTINGS + f Lakq; aP field_41244 NOISE + f Lakq; aQ field_41245 PLACED_FEATURE + f Lakq; aR field_41246 STRUCTURE + f Lakq; aS field_41247 PROCESSOR_LIST + f Lakq; aT field_41248 STRUCTURE_SET + f Lakq; aU field_41249 TEMPLATE_POOL + f Lakq; aV field_47498 TRIGGER_TYPE + f Lakq; aW field_42083 TRIM_MATERIAL + f Lakq; aX field_42082 TRIM_PATTERN + f Lakq; aY field_41250 WORLD_PRESET + f Lakq; aZ field_43089 MULTI_NOISE_BIOME_SOURCE_PARAMETER_LIST + f Lakq; aa field_41212 POINT_OF_INTEREST_TYPE + f Lakq; ab field_41213 POSITION_SOURCE_TYPE + f Lakq; ac field_41214 POS_RULE_TEST + f Lakq; ad field_41215 POTION + f Lakq; ae field_41216 RECIPE_SERIALIZER + f Lakq; af field_41217 RECIPE_TYPE + f Lakq; ag field_41218 ROOT_PLACER_TYPE + f Lakq; ah field_41219 RULE_TEST + f Lakq; ai field_43382 RULE_BLOCK_ENTITY_MODIFIER + f Lakq; aj field_41220 SCHEDULE + f Lakq; ak field_41221 SENSOR_TYPE + f Lakq; al field_41225 SOUND_EVENT + f Lakq; am field_41226 STAT_TYPE + f Lakq; an field_41227 STRUCTURE_PIECE + f Lakq; ao field_41228 STRUCTURE_PLACEMENT + f Lakq; ap field_41229 STRUCTURE_POOL_ELEMENT + f Lakq; aq field_46913 POOL_ALIAS_BINDING + f Lakq; ar field_41230 STRUCTURE_PROCESSOR + f Lakq; as field_41231 STRUCTURE_TYPE + f Lakq; at field_41232 TREE_DECORATOR_TYPE + f Lakq; au field_41233 TRUNK_PLACER_TYPE + f Lakq; av field_41234 VILLAGER_PROFESSION + f Lakq; aw field_41235 VILLAGER_TYPE + f Lakq; ax field_42941 DECORATED_POT_PATTERN + f Lakq; ay field_47556 NUMBER_FORMAT_TYPE + f Lakq; az field_48977 ARMOR_MATERIAL + f Lakq; b field_41222 ACTIVITY + f Lakq; ba field_41223 DIMENSION + f Lakq; bb field_41224 LEVEL_STEM + f Lakq; bc field_50079 LOOT_TABLE + f Lakq; bd field_50080 ITEM_MODIFIER + f Lakq; be field_50081 PREDICATE + f Lakq; bf field_52177 ADVANCEMENT + f Lakq; bg field_52178 RECIPE + f Lakq; c field_41251 ATTRIBUTE + f Lakq; d field_41252 BANNER_PATTERN + f Lakq; e field_41253 BIOME_SOURCE + f Lakq; f field_41254 BLOCK + f Lakq; g field_46592 BLOCK_TYPE + f Lakq; h field_41255 BLOCK_ENTITY_TYPE + f Lakq; i field_41256 BLOCK_PREDICATE_TYPE + f Lakq; j field_41257 BLOCK_STATE_PROVIDER_TYPE + f Lakq; k field_41258 CARVER + f Lakq; l field_41259 CAT_VARIANT + f Lakq; m field_49772 WOLF_VARIANT + f Lakq; n field_41260 CHUNK_GENERATOR + f Lakq; o field_41261 CHUNK_STATUS + f Lakq; p field_41262 COMMAND_ARGUMENT_TYPE + f Lakq; q field_44688 CREATIVE_MODE_TAB + f Lakq; r field_41263 CUSTOM_STAT + f Lakq; s field_42534 DAMAGE_TYPE + f Lakq; t field_41264 DENSITY_FUNCTION_TYPE + f Lakq; u field_51840 ENCHANTMENT_ENTITY_EFFECT_TYPE + f Lakq; v field_51841 ENCHANTMENT_LEVEL_BASED_VALUE_TYPE + f Lakq; w field_51842 ENCHANTMENT_LOCATION_BASED_EFFECT_TYPE + f Lakq; x field_51843 ENCHANTMENT_PROVIDER_TYPE + f Lakq; y field_51844 ENCHANTMENT_VALUE_EFFECT_TYPE + f Lakq; z field_41266 ENTITY_TYPE + m (Lakq;)Lakq; a method_47516 levelStemToLevel + m (Ljava/lang/String;)Lakq; a method_47517 createRegistryKey + m (Lakq;)Lakq; b method_47518 levelToLevelStem + m (Lakq;)Ljava/lang/String; c method_60915 elementsDirPath + m (Lakq;)Ljava/lang/String; d method_60916 tagsDirPath + m ()V + m ()V +c lv net/minecraft/class_7925 net/minecraft/core/registries/package-info +c lw net/minecraft/class_5793 net/minecraft/data/BlockFamilies + f Llx; A field_28518 EXPOSED_CUT_COPPER + f Llx; B field_33687 WAXED_EXPOSED_COPPER + f Llx; C field_28519 WAXED_EXPOSED_CUT_COPPER + f Llx; D field_33688 WEATHERED_COPPER + f Llx; E field_28520 WEATHERED_CUT_COPPER + f Llx; F field_33681 WAXED_WEATHERED_COPPER + f Llx; G field_28521 WAXED_WEATHERED_CUT_COPPER + f Llx; H field_33682 OXIDIZED_COPPER + f Llx; I field_28522 OXIDIZED_CUT_COPPER + f Llx; J field_33683 WAXED_OXIDIZED_COPPER + f Llx; K field_33419 WAXED_OXIDIZED_CUT_COPPER + f Llx; L field_28523 COBBLESTONE + f Llx; M field_28524 MOSSY_COBBLESTONE + f Llx; N field_28525 DIORITE + f Llx; O field_28480 POLISHED_DIORITE + f Llx; P field_28481 GRANITE + f Llx; Q field_28482 POLISHED_GRANITE + f Llx; R field_47131 TUFF + f Llx; S field_47132 POLISHED_TUFF + f Llx; T field_47133 TUFF_BRICKS + f Llx; U field_28483 NETHER_BRICKS + f Llx; V field_28484 RED_NETHER_BRICKS + f Llx; W field_28485 PRISMARINE + f Llx; X field_28486 PURPUR + f Llx; Y field_28487 PRISMARINE_BRICKS + f Llx; Z field_28488 DARK_PRISMARINE + f Llx; a field_28500 ACACIA_PLANKS + f Llx; aa field_28489 QUARTZ + f Llx; ab field_28490 SMOOTH_QUARTZ + f Llx; ac field_28491 SANDSTONE + f Llx; ad field_28492 CUT_SANDSTONE + f Llx; ae field_28493 SMOOTH_SANDSTONE + f Llx; af field_28494 RED_SANDSTONE + f Llx; ag field_28495 CUT_RED_SANDSTONE + f Llx; ah field_28496 SMOOTH_RED_SANDSTONE + f Llx; ai field_28497 STONE + f Llx; aj field_28498 STONE_BRICK + f Llx; ak field_28946 DEEPSLATE + f Llx; al field_29079 COBBLED_DEEPSLATE + f Llx; am field_28947 POLISHED_DEEPSLATE + f Llx; an field_28949 DEEPSLATE_BRICKS + f Llx; ao field_28948 DEEPSLATE_TILES + f Ljava/util/Map; ap field_28499 MAP + f Ljava/lang/String; aq field_33117 RECIPE_GROUP_PREFIX_WOODEN + f Ljava/lang/String; ar field_33118 RECIPE_UNLOCKED_BY_HAS_PLANKS + f Llx; b field_42942 CHERRY_PLANKS + f Llx; c field_28501 BIRCH_PLANKS + f Llx; d field_28502 CRIMSON_PLANKS + f Llx; e field_28503 JUNGLE_PLANKS + f Llx; f field_28504 OAK_PLANKS + f Llx; g field_28505 DARK_OAK_PLANKS + f Llx; h field_28506 SPRUCE_PLANKS + f Llx; i field_28507 WARPED_PLANKS + f Llx; j field_38007 MANGROVE_PLANKS + f Llx; k field_40589 BAMBOO_PLANKS + f Llx; l field_40590 BAMBOO_MOSAIC + f Llx; m field_38008 MUD_BRICKS + f Llx; n field_28508 ANDESITE + f Llx; o field_28509 POLISHED_ANDESITE + f Llx; p field_28510 BLACKSTONE + f Llx; q field_28511 POLISHED_BLACKSTONE + f Llx; r field_28512 POLISHED_BLACKSTONE_BRICKS + f Llx; s field_28513 BRICKS + f Llx; t field_28514 END_STONE_BRICKS + f Llx; u field_28515 MOSSY_STONE_BRICKS + f Llx; v field_33684 COPPER_BLOCK + f Llx; w field_28516 CUT_COPPER + f Llx; x field_33685 WAXED_COPPER_BLOCK + f Llx; y field_28517 WAXED_CUT_COPPER + f Llx; z field_33686 EXPOSED_COPPER + m ()Ljava/util/stream/Stream; a method_33467 getAllFamilies + m (Ldfy;)Llx$a; a method_33468 familyBuilder + m ()V + m ()V +c lx net/minecraft/class_5794 net/minecraft/data/BlockFamily + f Ldfy; a field_28526 baseBlock + f Ljava/util/Map; b field_28527 variants + f Z c field_28528 generateModel + f Z d field_28529 generateRecipe + f Ljava/lang/String; e field_28530 recipeGroupPrefix + f Ljava/lang/String; f field_28531 recipeUnlockedBy + m ()Ldfy; a method_33469 getBaseBlock + m (Llx$b;)Ldfy; a method_33470 get + m ()Ljava/util/Map; b method_33474 getVariants + m ()Z c method_33477 shouldGenerateModel + m ()Z d method_33478 shouldGenerateRecipe + m ()Ljava/util/Optional; e method_33479 getRecipeGroupPrefix + m ()Ljava/util/Optional; f method_33480 getRecipeUnlockedBy + m (Ldfy;)V +c lx$a net/minecraft/class_5794$class_5795 net/minecraft/data/BlockFamily$Builder + f Llx; a field_28532 family + m ()Llx; a method_33481 getFamily + m (Ldfy;)Llx$a; a method_33482 button + m (Ldfy;Ldfy;)Llx$a; a method_33483 sign + m (Ljava/lang/String;)Llx$a; a method_33484 recipeGroupPrefix + m ()Llx$a; b method_33485 dontGenerateModel + m (Ldfy;)Llx$a; b method_33486 chiseled + m (Ljava/lang/String;)Llx$a; b method_33487 recipeUnlockedBy + m ()Llx$a; c method_33488 dontGenerateRecipe + m (Ldfy;)Llx$a; c method_45965 mosaic + m (Ldfy;)Llx$a; d method_34593 cracked + m (Ldfy;)Llx$a; e method_36544 cut + m (Ldfy;)Llx$a; f method_33489 door + m (Ldfy;)Llx$a; g method_45966 customFence + m (Ldfy;)Llx$a; h method_33490 fence + m (Ldfy;)Llx$a; i method_45967 customFenceGate + m (Ldfy;)Llx$a; j method_33491 fenceGate + m (Ldfy;)Llx$a; k method_33492 slab + m (Ldfy;)Llx$a; l method_33493 stairs + m (Ldfy;)Llx$a; m method_33494 pressurePlate + m (Ldfy;)Llx$a; n method_33495 polished + m (Ldfy;)Llx$a; o method_33496 trapdoor + m (Ldfy;)Llx$a; p method_33497 wall + m (Ldfy;)V +c lx$b net/minecraft/class_5794$class_5796 net/minecraft/data/BlockFamily$Variant + f Llx$b; a field_28533 BUTTON + f Llx$b; b field_28534 CHISELED + f Llx$b; c field_29503 CRACKED + f Llx$b; d field_33689 CUT + f Llx$b; e field_28535 DOOR + f Llx$b; f field_40592 CUSTOM_FENCE + f Llx$b; g field_28536 FENCE + f Llx$b; h field_40593 CUSTOM_FENCE_GATE + f Llx$b; i field_28537 FENCE_GATE + f Llx$b; j field_40594 MOSAIC + f Llx$b; k field_28538 SIGN + f Llx$b; l field_28539 SLAB + f Llx$b; m field_28540 STAIRS + f Llx$b; n field_28541 PRESSURE_PLATE + f Llx$b; o field_28542 POLISHED + f Llx$b; p field_28543 TRAPDOOR + f Llx$b; q field_28544 WALL + f Llx$b; r field_28545 WALL_SIGN + f Ljava/lang/String; s field_28546 recipeGroup + f [Llx$b; t field_28547 $VALUES + m ()Ljava/lang/String; a method_33498 getRecipeGroup + m ()[Llx$b; b method_36938 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ly net/minecraft/class_7403 net/minecraft/data/CachedOutput + f Lly; a field_39439 NO_CACHE + m (Ljava/nio/file/Path;[BLcom/google/common/hash/HashCode;)V a method_44300 method_44300 + m (Ljava/nio/file/Path;[BLcom/google/common/hash/HashCode;)V writeIfNeeded method_43346 writeIfNeeded + m ()V +c lz net/minecraft/class_2403 net/minecraft/data/DataGenerator + f Lorg/slf4j/Logger; a field_11275 LOGGER + f Ljava/nio/file/Path; b field_40595 rootOutputFolder + f Lmc; c field_40596 vanillaPackOutput + f Ljava/util/Set; d field_40826 allProviderIds + f Ljava/util/Map; e field_38909 providersToRun + f Lae; f field_38910 version + f Z g field_38911 alwaysGenerate + m ()V a method_10315 run + m (Lmb;Lcom/google/common/base/Stopwatch;Ljava/lang/String;Lma;)V a method_46563 method_46563 + m (Z)Llz$a; a method_46564 getVanillaPack + m (ZLjava/lang/String;)Llz$a; a method_46565 getBuiltinDatapack + m (Ljava/nio/file/Path;Lae;Z)V + m ()V +c lz$a net/minecraft/class_2403$class_7856 net/minecraft/data/DataGenerator$PackGenerator + f Llz; a field_40827 field_40827 + f Z b field_40828 toRun + f Ljava/lang/String; c field_40829 providerPrefix + f Lmc; d field_40830 output + m (Lma$a;)Lma; a method_46566 addProvider + m (Llz;ZLjava/lang/String;Lmc;)V +c ma net/minecraft/class_2405 net/minecraft/data/DataProvider + f Ljava/util/function/ToIntFunction; a field_39212 FIXED_ORDER_FIELDS + f Ljava/util/Comparator; b field_39213 KEY_COMPARATOR + f Lorg/slf4j/Logger; c field_40831 LOGGER + m ()Ljava/lang/String; a method_10321 getName + m (Lcom/google/gson/JsonElement;Lly;Ljava/nio/file/Path;)V a method_46567 method_46567 + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)V a method_43808 method_43808 + m (Ljava/lang/String;)Ljava/lang/String; a method_43809 method_43809 + m (Lly;)Ljava/util/concurrent/CompletableFuture; a method_10319 run + m (Lly;Lcom/google/gson/JsonElement;Ljava/nio/file/Path;)Ljava/util/concurrent/CompletableFuture; a method_10320 saveStable + m (Lly;Ljo$a;Lcom/mojang/serialization/Codec;Ljava/lang/Object;Ljava/nio/file/Path;)Ljava/util/concurrent/CompletableFuture; a method_53496 saveStable + m ()V +c ma$a net/minecraft/class_2405$class_7857 net/minecraft/data/DataProvider$Factory +c mb net/minecraft/class_2408 net/minecraft/data/HashCache + f Lorg/slf4j/Logger; a field_11287 LOGGER + f Ljava/lang/String; b field_38912 HEADER_MARKER + f Ljava/nio/file/Path; c field_11285 rootDir + f Ljava/nio/file/Path; d field_38913 cacheDir + f Ljava/lang/String; e field_38914 versionId + f Ljava/util/Map; f field_40832 caches + f Ljava/util/Set; g field_38916 cachesToWrite + f Ljava/util/Set; h field_38917 cachePaths + f I i field_38918 initialCount + f I j field_40833 writes + m ()V a method_10326 purgeStaleAndWrite + m (Ljava/lang/String;)Z a method_43347 shouldRunInThisVersion + m (Ljava/lang/String;Lmb$d;)Ljava/util/concurrent/CompletableFuture; a method_46570 generateUpdate + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)Lmb$b; a method_43348 readCache + m (Ljava/util/Set;Ljava/lang/String;Lmb$b;)V a method_46571 method_46571 + m (Lmb$a;Ljava/lang/Object;)Lmb$e; a method_46568 method_46568 + m (Lmb$e;)V a method_46569 applyUpdate + m (Ljava/lang/String;)Ljava/nio/file/Path; b method_43353 getProviderCachePath + m (Ljava/nio/file/Path;Ljava/util/Collection;Lae;)V + m ()V +c mb$1 net/minecraft/class_2408$1 net/minecraft/data/HashCache$1 + f Lorg/apache/commons/lang3/mutable/MutableInt; a field_48462 val$found + f Ljava/util/Set; b field_48463 val$allowedFiles + f Lorg/apache/commons/lang3/mutable/MutableInt; c field_48464 val$removed + f Lmb; d field_48465 field_48465 + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult; a method_56187 visitFile + m (Lmb;Lorg/apache/commons/lang3/mutable/MutableInt;Ljava/util/Set;Lorg/apache/commons/lang3/mutable/MutableInt;)V +c mb$a net/minecraft/class_2408$class_7404 net/minecraft/data/HashCache$CacheUpdater + f Ljava/lang/String; b field_40835 provider + f Lmb$b; c field_38919 oldCache + f Lmb$c; d field_38920 newCache + f Ljava/util/concurrent/atomic/AtomicInteger; e field_38921 writes + f Z f field_40836 closed + m ()Lmb$e; a method_46572 close + m (Ljava/nio/file/Path;Lcom/google/common/hash/HashCode;)Z a method_43355 shouldWrite + m (Lmb;Ljava/lang/String;Ljava/lang/String;Lmb$b;)V +c mb$b net/minecraft/class_2408$class_7405 net/minecraft/data/HashCache$ProviderCache + f Ljava/lang/String; a comp_729 version + f Lcom/google/common/collect/ImmutableMap; b comp_730 data + m ()I a method_43356 count + m (Lcom/google/common/collect/ImmutableMap$Builder;Ljava/nio/file/Path;Ljava/lang/String;)V a method_43361 method_43361 + m (Ljava/nio/file/Path;)Lcom/google/common/hash/HashCode; a method_43357 get + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)Lmb$b; a method_43359 load + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/lang/String;)V a method_43360 save + m ()Ljava/lang/String; b comp_729 version + m ()Lcom/google/common/collect/ImmutableMap; c comp_730 data + m (Ljava/lang/String;Lcom/google/common/collect/ImmutableMap;)V +c mb$c net/minecraft/class_2408$class_7858 net/minecraft/data/HashCache$ProviderCacheBuilder + f Ljava/lang/String; a comp_1122 version + f Ljava/util/concurrent/ConcurrentMap; b comp_1123 data + m ()Lmb$b; a method_46573 build + m (Ljava/nio/file/Path;Lcom/google/common/hash/HashCode;)V a method_46574 put + m ()Ljava/lang/String; b comp_1122 version + m ()Ljava/util/concurrent/ConcurrentMap; c comp_1123 data + m (Ljava/lang/String;)V + m (Ljava/lang/String;Ljava/util/concurrent/ConcurrentMap;)V +c mb$d net/minecraft/class_2408$class_7859 net/minecraft/data/HashCache$UpdateFunction +c mb$e net/minecraft/class_2408$class_7860 net/minecraft/data/HashCache$UpdateResult + f Ljava/lang/String; a comp_1124 providerId + f Lmb$b; b comp_1125 cache + f I c comp_1126 writes + m ()Ljava/lang/String; a comp_1124 providerId + m ()Lmb$b; b comp_1125 cache + m ()I c comp_1126 writes + m (Ljava/lang/String;Lmb$b;I)V +c mc net/minecraft/class_7784 net/minecraft/data/PackOutput + f Ljava/nio/file/Path; a field_40597 outputFolder + m ()Ljava/nio/file/Path; a method_45971 getOutputFolder + m (Lakq;)Lmc$a; a method_60917 createRegistryElementsPathProvider + m (Lmc$b;)Ljava/nio/file/Path; a method_45972 getOutputFolder + m (Lmc$b;Ljava/lang/String;)Lmc$a; a method_45973 createPathProvider + m (Lakq;)Lmc$a; b method_60918 createRegistryTagsPathProvider + m (Ljava/nio/file/Path;)V +c mc$a net/minecraft/class_7784$class_7489 net/minecraft/data/PackOutput$PathProvider + f Ljava/nio/file/Path; a field_39365 root + f Ljava/lang/String; b field_39366 kind + m (Lakr;)Ljava/nio/file/Path; a method_44107 json + m (Lakr;Ljava/lang/String;)Ljava/nio/file/Path; a method_44108 file + m (Lmc;Lmc$b;Ljava/lang/String;)V +c mc$b net/minecraft/class_7784$class_7490 net/minecraft/data/PackOutput$Target + f Lmc$b; a field_39367 DATA_PACK + f Lmc$b; b field_39368 RESOURCE_PACK + f Lmc$b; c field_39369 REPORTS + f Ljava/lang/String; d field_39370 directory + f [Lmc$b; e field_39371 $VALUES + m ()[Lmc$b; a method_44109 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c md net/minecraft/class_2409 net/minecraft/data/advancements/AdvancementProvider + f Lmc$a; d field_39372 pathProvider + f Ljava/util/List; e field_11289 subProviders + f Ljava/util/concurrent/CompletableFuture; f field_40949 registries + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46575 method_46575 + m (Ljava/util/Set;Ljava/util/List;Lly;Ljo$a;Lag;)V a method_10333 method_10333 + m (Lly;Ljo$a;)Ljava/util/concurrent/CompletionStage; a method_46809 method_46809 + m (Lmc;Ljava/util/concurrent/CompletableFuture;Ljava/util/List;)V +c me net/minecraft/class_7785 net/minecraft/data/advancements/AdvancementSubProvider + m (Ljava/lang/String;)Lag; a method_55578 createPlaceholder + m (Ljo$a;Ljava/util/function/Consumer;)V a method_10335 generate +c mf net/minecraft/class_6287 net/minecraft/data/advancements/package-info +c mg net/minecraft/class_7786 net/minecraft/data/advancements/packs/VanillaAdvancementProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)Lmd; a method_45974 create + m ()V +c mh net/minecraft/class_2412 net/minecraft/data/advancements/packs/VanillaAdventureAdvancements + f Ljava/util/List; a field_11294 MOBS_TO_KILL + f I b field_35091 DISTANCE_FROM_BOTTOM_TO_TOP + f I c field_35092 Y_COORDINATE_AT_TOP + f I d field_35093 Y_COORDINATE_AT_BOTTOM + f I e field_35094 BEDROCK_THICKNESS + m (I)[Levc$a; a method_51818 method_51818 + m (Laf$a;)Laf$a; a method_51689 smithingWithStyle + m (Laf$a;Lakr;)V a method_54650 method_54650 + m (Laf$a;Lbsx;)V a method_55580 method_55580 + m (Laf$a;Lcom/mojang/datafixers/util/Pair;)V a method_54651 method_54651 + m (Laf$a;Ljava/util/List;)Laf$a; a method_10336 addMobsToKill + m (Laf$a;Ljo$a;Ljava/util/List;)Laf$a; a method_10337 addBiomes + m (Laf$a;Loy$a;)V a method_51690 method_51690 + m (Lag;Ljava/util/function/Consumer;Ljava/util/List;)Lag; a method_55581 createMonsterHunterAdvancement + m (Lbsx;Lcul;)Lao; a method_37315 lookAtThroughItem + m (Ldfy;)Lao; a method_51815 placedBlockReadByComparator + m (Ldfy;Lji;)Leup$a; a method_51816 method_51816 + m (Ldh$d;Ljava/util/Optional;)Lao; a method_37316 fireCountAndBystander + m (Ljava/util/Set;Loy$a;)Z a method_54652 method_54652 + m (Lji;)Levc$a; a method_51817 method_51817 + m (Ljo$a;Ljava/util/function/Consumer;Lag;Ldek$a;)V a method_49356 createAdventuringTime + m (I)[Levc$a; b method_51820 method_51820 + m (Laf$a;)Laf$a; b method_51691 craftingANewLook + m (Ldfy;)Lao; b method_51819 placedComparatorReadingBlock + m (Laf$a;)Laf$a; c method_51692 respectingTheRemnantsCriterions + m ()V + m ()V +c mi net/minecraft/class_2414 net/minecraft/data/advancements/packs/VanillaHusbandryAdvancements + f Ljava/util/List; a field_11296 BREEDABLE_ANIMALS + f Ljava/util/List; b field_38467 INDIRECTLY_BREEDABLE_ANIMALS + f [Lcul; c field_33964 WAX_SCRAPING_TOOLS + f [Lcul; d field_11295 FISH + f [Lcul; e field_11297 FISH_BUCKETS + f [Lcul; f field_11298 EDIBLE_ITEMS + m (Laf$a;)Laf$a; a method_43362 addLeashedFrogVariants + m (Laf$a;Lbsx;)V a method_48497 method_48497 + m (Laf$a;Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Laf$a; a method_10342 addBreedable + m (Laf$a;Ljm$c;)V a method_16117 method_16117 + m (Laf$a;Ljo$a;)Laf$a; a method_59775 addTamedWolfVariants + m (Lag;Ljava/util/function/Consumer;Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Lag; a method_47810 createBreedAllAnimalsAdvancement + m (Ljm$c;)Lakr; a method_58572 method_58572 + m (Ljo$b;Laf$a;Lakq;)V a method_59776 method_59776 + m (Laf$a;)Laf$a; b method_10341 addFood + m (Laf$a;Lbsx;)V b method_48498 method_48498 + m (Laf$a;Ljm$c;)V b method_43363 method_43363 + m (Laf$a;)Laf$a; c method_10340 addFishBuckets + m (Laf$a;)Laf$a; d method_10339 addFish + m (Laf$a;)Laf$a; e method_16118 addCatVariants + m ()V + m ()V +c mj net/minecraft/class_2416 net/minecraft/data/advancements/packs/VanillaNetherAdvancements + f Lbg; a field_25712 DISTRACT_PIGLIN_PLAYER_ARMOR_PREDICATE + m ()V + m ()V +c mk net/minecraft/class_2417 net/minecraft/data/advancements/packs/VanillaStoryAdvancements + m ()V +c ml net/minecraft/class_2419 net/minecraft/data/advancements/packs/VanillaTheEndAdvancements + m ()V +c mm net/minecraft/class_7787 net/minecraft/data/advancements/packs/package-info +c mn net/minecraft/class_7228 net/minecraft/data/info/BiomeParametersDumpReport + f Lorg/slf4j/Logger; d field_38012 LOGGER + f Ljava/nio/file/Path; e field_39373 topPath + f Ljava/util/concurrent/CompletableFuture; f field_40950 registries + f Lcom/mojang/serialization/MapCodec; g field_43090 ENTRY_CODEC + f Lcom/mojang/serialization/Codec; h field_43091 CODEC + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46576 method_46576 + m (Lakr;)Ljava/nio/file/Path; a method_42032 createPath + m (Ljava/nio/file/Path;Ljava/lang/String;)V a method_42031 method_42031 + m (Ljava/nio/file/Path;Lly;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Encoder;Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture; a method_42030 dumpValue + m (Ljava/util/List;Lly;Lcom/mojang/serialization/DynamicOps;Ldek$a;Ldef$c;)V a method_49648 method_49648 + m (Lly;Ljo$a;)Ljava/util/concurrent/CompletionStage; a method_46810 method_46810 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V + m ()V +c mo net/minecraft/class_2422 net/minecraft/data/info/BlockListReport + f Lmc; d field_40599 output + f Ljava/util/concurrent/CompletableFuture; e field_49660 registries + m (Lakp;Lcom/google/gson/JsonObject;Ljm$c;)V a method_57952 method_57952 + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/AssertionError; a method_57953 method_57953 + m (Lly;Ljava/nio/file/Path;Ljo$a;)Ljava/util/concurrent/CompletionStage; a method_57954 method_57954 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c mp net/minecraft/class_2425 net/minecraft/data/info/CommandsReport + f Lmc; d field_40600 output + f Ljava/util/concurrent/CompletableFuture; e field_40951 registries + m (Lly;Ljava/nio/file/Path;Ljo$a;)Ljava/util/concurrent/CompletionStage; a method_46811 method_46811 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c mq net/minecraft/class_9338 net/minecraft/data/info/ItemListReport + f Lmc; d field_49661 output + f Ljava/util/concurrent/CompletableFuture; e field_49662 registries + m (Lakp;Lcom/google/gson/JsonObject;Ljm$c;)V a method_57955 method_57955 + m (Ljava/lang/String;)Ljava/lang/IllegalStateException; a method_60581 method_60581 + m (Lly;Ljava/nio/file/Path;Ljo$a;)Ljava/util/concurrent/CompletionStage; a method_57959 method_57959 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c mr net/minecraft/class_9827 net/minecraft/data/info/PacketReport + f Lmc; d field_52278 output + m (Lcom/google/gson/JsonObject;Lvu;Ljava/util/List;)V a method_61083 method_61083 + m (Lcom/google/gson/JsonObject;Lwh$a;)V a method_61084 method_61084 + m (Lcom/google/gson/JsonObject;Lzi;I)V a method_61085 method_61085 + m ()Lcom/google/gson/JsonElement; b method_61086 serializePackets + m (Lmc;)V +c ms net/minecraft/class_2427 net/minecraft/data/info/RegistryDumpReport + f Lmc; d field_40601 output + m (Lcom/google/gson/JsonObject;Ljm$c;)V a method_17174 method_17174 + m (Ljz;)Lcom/google/gson/JsonElement; a method_17175 dumpRegistry + m (Ljz;Lcom/google/gson/JsonObject;Ljm$c;)V a method_40564 method_40564 + m (Lmc;)V +c mt net/minecraft/class_6288 net/minecraft/data/info/package-info +c mu net/minecraft/class_7788 net/minecraft/data/loot/BlockLootSubProvider + f Levc$a; a field_40604 HAS_SHEARS + f Ljo$a; b field_51845 registries + f Ljava/util/Set; c field_40608 explosionResistant + f Lcpl; d field_40609 enabledFeatures + f Ljava/util/Map; e field_40610 map + f [F f field_40605 NORMAL_LEAVES_SAPLING_CHANCES + f [F g field_40611 NORMAL_LEAVES_STICK_CHANCES + m ()Levc$a; a method_60390 hasSilkTouch + m (Ldcv;)Lerw$a; a method_45976 createSingleItemTable + m (Ldcv;Letb;)Letb; a method_45977 applyExplosionDecay + m (Ldcv;Leuu;)Leuu; a method_45978 applyExplosionCondition + m (Ldcv;Levy;)Lerw$a; a method_45979 createSingleItemTable + m (Ldfy;)Lerw$a; a method_45980 createSlabItemTable + m (Ldfy;Lcul;)Lerw$a; a method_45981 createOreDrop + m (Ldfy;Lcul;Lcul;Levc$a;)Lerw$a; a method_45982 createCropDrops + m (Ldfy;Ldcv;)Lerw$a; a method_45983 createSingleItemTableWithSilkTouch + m (Ldfy;Ldcv;Levy;)Lerw$a; a method_45984 createSingleItemTableWithSilkTouch + m (Ldfy;Ldfy;)Lerw$a; a method_45985 createDoublePlantWithSeedDrops + m (Ldfy;Ldfy;[F)Lerw$a; a method_45986 createLeavesDrops + m (Ldfy;Lduf;Ljava/lang/Comparable;)Lerw$a; a method_45987 createSinglePropConditionTable + m (Ldfy;Lerw$a;)V a method_45988 add + m (Ldfy;Lesh$a;)Lerw$a; a method_45989 createSilkTouchDispatchTable + m (Ldfy;Levc$a;)Lerw$a; a method_45990 createMultifaceBlockDrops + m (Ldfy;Levc$a;Lesh$a;)Lerw$a; a method_45991 createSelfDropDispatchTable + m (Ldfy;Ljava/lang/Integer;)Letf$a; a method_49357 method_49357 + m (Ldfy;Ljava/util/function/Function;)V a method_45994 add + m (Ldfy;Lji;)Letf$a; a method_45992 method_45992 + m ()Levc$a; b method_60391 doesNotHaveSilkTouch + m (Ldcv;)Lerw$a; b method_45995 createShearsOnlyDrop + m (Ldfy;)Lerw$a; b method_45996 createNameableBlockEntityTable + m (Ldfy;Lcul;)Lerw$a; b method_45997 createStemDrops + m (Ldfy;Ldcv;)Lerw$a; b method_45998 createMushroomBlockDrop + m (Ldfy;Ldfy;)V b method_45999 addNetherVinesDropTable + m (Ldfy;Ldfy;[F)Lerw$a; b method_46000 createOakLeavesDrops + m (Ldfy;Lesh$a;)Lerw$a; b method_46001 createShearsDispatchTable + m (Ldfy;Ljava/lang/Integer;)Letf$a; b method_45993 method_45993 + m ()Lerw$a; c method_45975 noDrop + m (Ldcv;)Lerw$a; c method_46003 createSilkTouchOnlyTable + m (Ldfy;)Lerw$a; c method_46004 createShulkerBoxDrop + m (Ldfy;Lcul;)Lerw$a; c method_46005 createAttachedStemDrops + m (Ldfy;Ldcv;)V c method_46006 dropOther + m (Ldfy;Ldfy;)V c method_46007 otherWhenSilkTouch + m (Ldfy;Lesh$a;)Lerw$a; c method_46008 createSilkTouchOrShearsDispatchTable + m (Ldfy;Ljava/lang/Integer;)Letf$a; c method_46002 method_46002 + m ()V d method_10379 generate + m (Ldcv;)Lerw$a; d method_46009 createPotFlowerItemTable + m (Ldfy;)Lerw$a; d method_46010 createCopperOreDrops + m ()Levc$a; e method_60392 hasShearsOrSilkTouch + m (Ldfy;)Lerw$a; e method_46011 createLapisOreDrops + m ()Levc$a; f method_60393 doesNotHaveShearsOrSilkTouch + m (Ldfy;)Lerw$a; f method_46012 createRedstoneOreDrops + m (Ldfy;)Lerw$a; g method_46013 createBannerDrop + m (Ldfy;)Lerw$a; h method_46014 createBeeNestDrop + m (Ldfy;)Lerw$a; i method_46015 createBeeHiveDrop + m (Ldfy;)Lerw$a; j method_46016 createCaveVinesDrop + m (Ldfy;)Lerw$a; k method_46017 createGrassDrops + m (Ldfy;)Lerw$a; l method_46018 createMangroveLeavesDrops + m (Ldfy;)Lerw$a; m method_46019 createDoublePlantShearsDrop + m (Ldfy;)Lerw$a; n method_46020 createCandleDrops + m (Ldfy;)Lerw$a; o method_49358 createPetalsDrops + m (Ldfy;)Lerw$a; p method_46021 createCandleCakeDrops + m (Ldfy;)Lerw$a; q method_46022 createDoorTable + m (Ldfy;)V r method_46023 dropPottedContents + m (Ldfy;)V s method_46024 dropWhenSilkTouch + m (Ldfy;)V t method_46025 dropSelf + m (Ldfy;)Lerw$a; u method_46026 method_46026 + m (Ljava/util/Set;Lcpl;Ljo$a;)V + m (Ljava/util/Set;Lcpl;Ljava/util/Map;Ljo$a;)V + m ()V +c mv net/minecraft/class_7789 net/minecraft/data/loot/EntityLootSubProvider + f Ljo$a; a field_51846 registries + f Ljava/util/Set; b field_40613 SPECIAL_LOOT_TABLE_TYPES + f Lcpl; c field_42084 allowed + f Lcpl; d field_42085 required + f Ljava/util/Map; e field_40615 map + m ()Leuq$a; a method_60394 shouldSmeltLoot + m (Lakq;)Levc$a; a method_46030 killedByFrogVariant + m (Lbsx;)Z a method_46027 canHaveLootTable + m (Lbsx;Lakq;Lerw$a;)V a method_46028 add + m (Lbsx;Lerw$a;)V a method_46029 add + m (Ldcv;)Lerw$a; a method_46031 createSheepTable + m (Ljava/util/Set;Ljava/util/function/BiConsumer;Ljm$c;)V a method_46033 method_46033 + m (Ljava/util/Set;Ljm$c;Ljava/util/function/BiConsumer;Lakq;Lerw$a;)V a method_46032 method_46032 + m ()V b method_10400 generate + m (Lakq;)Ljava/lang/String; b method_58573 method_58573 + m (Lbsx;)Ljava/util/Map; b method_46035 method_46035 + m ()Levc$a; c method_46034 killedByFrog + m (Lcpl;Ljo$a;)V + m (Lcpl;Lcpl;Ljo$a;)V + m ()V +c mw net/minecraft/class_2438 net/minecraft/data/loot/LootTableProvider + f Lorg/slf4j/Logger; d field_11355 LOGGER + f Lmc$a; e field_39374 pathProvider + f Ljava/util/Set; f field_40617 requiredTables + f Ljava/util/List; g field_11354 subProviders + f Ljava/util/concurrent/CompletableFuture; h field_48978 registries + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46577 method_46577 + m (Lakq;)Lakr; a method_58574 sequenceIdForLootTable + m (Lerx;Ljm$c;)V a method_10411 method_10411 + m (Ljava/lang/String;Ljava/lang/String;)V a method_10407 method_10407 + m (Ljava/util/Map;Lmw$a;Lki;Lakq;Lerw$a;)V a method_10412 method_10412 + m (Ljo$a;Ljava/util/Map;Lki;Lmw$a;)V a method_10410 method_10410 + m (Lly;Ljo$a;)Ljava/util/concurrent/CompletableFuture; a method_56883 run + m (Lly;Ljo$a;Ljava/util/Map$Entry;)Ljava/util/concurrent/CompletableFuture; a method_10408 method_10408 + m (Lly;Ljo$a;)Ljava/util/concurrent/CompletionStage; b method_56884 method_56884 + m (Lmc;Ljava/util/Set;Ljava/util/List;Ljava/util/concurrent/CompletableFuture;)V + m ()V +c mw$a net/minecraft/class_2438$class_7790 net/minecraft/data/loot/LootTableProvider$SubProviderEntry + f Ljava/util/function/Function; a comp_1068 provider + f Leul; b comp_1069 paramSet + m ()Ljava/util/function/Function; a comp_1068 provider + m ()Leul; b comp_1069 paramSet + m (Ljava/util/function/Function;Leul;)V +c mx net/minecraft/class_7791 net/minecraft/data/loot/LootTableSubProvider + m (Ljava/util/function/BiConsumer;)V generate method_10399 generate +c my net/minecraft/class_6289 net/minecraft/data/loot/package-info +c mz net/minecraft/class_8794 net/minecraft/data/loot/packs/TradeRebalanceChestLoot + f Ljo$a; a comp_2785 registries + m ()Lerw$a; a method_53849 pillagerOutpostLootTable + m ()Lerw$a; b method_53850 desertPyramidLootTable + m ()Lerw$a; c method_53851 ancientCityLootTable + m ()Lerw$a; d method_53852 jungleTempleLootTable + m ()Ljo$a; e comp_2785 registries + m (Ljo$a;)V +c na net/minecraft/class_8795 net/minecraft/data/loot/packs/TradeRebalanceLootTableProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)Lmw; a method_53853 create + m ()V +c nb net/minecraft/class_8255 net/minecraft/data/loot/packs/VanillaArchaeologyLoot + f Ljo$a; a comp_2786 registries + m ()Ljo$a; a comp_2786 registries + m (Ljo$a;)V +c nc net/minecraft/class_2430 net/minecraft/data/loot/packs/VanillaBlockLoot + f [F g field_11338 JUNGLE_LEAVES_SAPLING_CHANGES + f Ljava/util/Set; h field_11340 EXPLOSION_RESISTANT + m (Ldfy;)Lerw$a; A method_16314 method_16314 + m (Lnc;Ldfy;)Lerw$a; A method_46182 method_46182 + m (Ldfy;)Lerw$a; B method_16254 method_16254 + m (Lnc;Ldfy;)Lerw$a; B method_46183 method_46183 + m (Ldfy;)Lerw$a; C method_34594 method_34594 + m (Lnc;Ldfy;)Lerw$a; C method_46040 method_46040 + m (Ldfy;)Lerw$a; D method_16242 method_16242 + m (Lnc;Ldfy;)Lerw$a; D method_46041 method_46041 + m (Ldfy;)Lerw$a; E method_34595 method_34595 + m (Lnc;Ldfy;)Lerw$a; E method_46042 method_46042 + m (Ldfy;)Lerw$a; F method_43810 method_43810 + m (Lnc;Ldfy;)Lerw$a; F method_46043 method_46043 + m (Ldfy;)Lerw$a; G method_34047 method_34047 + m (Lnc;Ldfy;)Lerw$a; G method_46044 method_46044 + m (Ldfy;)Lerw$a; H method_23230 method_23230 + m (Lnc;Ldfy;)Lerw$a; H method_46045 method_46045 + m (Ldfy;)Lerw$a; I method_23231 method_23231 + m (Lnc;Ldfy;)Lerw$a; I method_46046 method_46046 + m (Ldfy;)Lerw$a; J method_34596 method_34596 + m (Lnc;Ldfy;)Lerw$a; J method_46047 method_46047 + m (Ldfy;)Lerw$a; K method_30157 method_30157 + m (Lnc;Ldfy;)Lerw$a; K method_46048 method_46048 + m (Ldfy;)Lerw$a; L method_34048 method_34048 + m (Lnc;Ldfy;)Lerw$a; L method_46049 method_46049 + m (Ldfy;)Lerw$a; M method_16324 method_16324 + m (Lnc;Ldfy;)Lerw$a; M method_46050 method_46050 + m (Ldfy;)Lerw$a; N method_16307 method_16307 + m (Lnc;Ldfy;)Lerw$a; N method_46051 method_46051 + m (Ldfy;)Lerw$a; O method_16250 method_16250 + m (Lnc;Ldfy;)Lerw$a; O method_46052 method_46052 + m (Ldfy;)Lerw$a; P method_26277 method_26277 + m (Lnc;Ldfy;)Lerw$a; P method_46053 method_46053 + m (Ldfy;)Lerw$a; Q method_16290 method_16290 + m (Lnc;Ldfy;)Lerw$a; Q method_46054 method_46054 + m (Ldfy;)Lerw$a; R method_16280 method_16280 + m (Lnc;Ldfy;)Lerw$a; R method_46055 method_46055 + m (Ldfy;)Lerw$a; S method_16266 method_16266 + m (Lnc;Ldfy;)Lerw$a; S method_46056 method_46056 + m (Ldfy;)Lerw$a; T method_16264 method_16264 + m (Lnc;Ldfy;)Lerw$a; T method_46057 method_46057 + m (Ldfy;)Lerw$a; U method_16243 method_16243 + m (Lnc;Ldfy;)Lerw$a; U method_46058 method_46058 + m (Ldfy;)Lerw$a; V method_49950 method_49950 + m (Lnc;Ldfy;)Lerw$a; V method_46059 method_46059 + m (Ldfy;)Lerw$a; W method_34050 method_34050 + m (Lnc;Ldfy;)Lerw$a; W method_46060 method_46060 + m (Ldfy;)Lerw$a; X method_33707 method_33707 + m (Lnc;Ldfy;)Lerw$a; X method_46061 method_46061 + m (Ldfy;)Lerw$a; Y method_49951 method_49951 + m (Lnc;Ldfy;)Lerw$a; Y method_46062 method_46062 + m (Ldfy;)Lerw$a; Z method_33708 method_33708 + m (Lnc;Ldfy;)Lerw$a; Z method_46063 method_46063 + m (Ldfy;Ljava/lang/Integer;)Lesh$a; a method_43812 method_43812 + m (Ljava/lang/Integer;)Lesh$a; a method_49928 method_49928 + m (Ljo$b;Ldfy;)Lerw$a; a method_60395 method_60395 + m (Lnc;Ldfy;)Lerw$a; a method_46066 method_46066 + m (Ldfy;)Lerw$a; aA method_16255 method_16255 + m (Lnc;Ldfy;)Lerw$a; aA method_60396 method_60396 + m (Ldfy;)Lerw$a; aB method_16286 method_16286 + m (Lnc;Ldfy;)Lerw$a; aB method_60397 method_60397 + m (Ldfy;)Lerw$a; aC method_16235 method_16235 + m (Lnc;Ldfy;)Lerw$a; aC method_60398 method_60398 + m (Ldfy;)Lerw$a; aD method_34051 method_34051 + m (Lnc;Ldfy;)Lerw$a; aD method_60399 method_60399 + m (Ldfy;)Lerw$a; aE method_16277 method_16277 + m (Lnc;Ldfy;)Lerw$a; aE method_60400 method_60400 + m (Ldfy;)Lerw$a; aF method_16241 method_16241 + m (Lnc;Ldfy;)Lerw$a; aF method_60401 method_60401 + m (Ldfy;)Lerw$a; aG method_16300 method_16300 + m (Lnc;Ldfy;)Lerw$a; aG method_46117 method_46117 + m (Ldfy;)Lerw$a; aH method_34052 method_34052 + m (Lnc;Ldfy;)Lerw$a; aH method_49952 method_49952 + m (Ldfy;)Lerw$a; aI method_29399 method_29399 + m (Lnc;Ldfy;)Lerw$a; aI method_49953 method_49953 + m (Ldfy;)Lerw$a; aJ method_29400 method_29400 + m (Lnc;Ldfy;)Lerw$a; aJ method_49954 method_49954 + m (Ldfy;)Lerw$a; aK method_16328 method_16328 + m (Lnc;Ldfy;)Lerw$a; aK method_46119 method_46119 + m (Ldfy;)Lerw$a; aL method_16282 method_16282 + m (Lnc;Ldfy;)Lerw$a; aL method_46120 method_46120 + m (Ldfy;)Lerw$a; aM method_16251 method_16251 + m (Lnc;Ldfy;)Lerw$a; aM method_46121 method_46121 + m (Ldfy;)Lerw$a; aN method_16302 method_16302 + m (Lnc;Ldfy;)Lerw$a; aN method_46122 method_46122 + m (Ldfy;)Lerw$a; aO method_16269 method_16269 + m (Lnc;Ldfy;)Lerw$a; aO method_46067 method_46067 + m (Ldfy;)Lerw$a; aP method_16275 method_16275 + m (Lnc;Ldfy;)Lerw$a; aP method_46068 method_46068 + m (Ldfy;)Lerw$a; aQ method_16283 method_16283 + m (Lnc;Ldfy;)Lerw$a; aQ method_46069 method_46069 + m (Ldfy;)Lerw$a; aR method_16252 method_16252 + m (Lnc;Ldfy;)Lerw$a; aR method_49929 method_49929 + m (Ldfy;)Lerw$a; aS method_16311 method_16311 + m (Lnc;Ldfy;)Lerw$a; aS method_49930 method_49930 + m (Ldfy;)Lerw$a; aT method_43813 method_43813 + m (Lnc;Ldfy;)Lerw$a; aT method_49931 method_49931 + m (Lnc;Ldfy;)Lerw$a; aU method_49932 method_49932 + m (Lnc;Ldfy;)Lerw$a; aV method_49933 method_49933 + m (Lnc;Ldfy;)Lerw$a; aW method_49934 method_49934 + m (Lnc;Ldfy;)Lerw$a; aX method_49935 method_49935 + m (Lnc;Ldfy;)Lerw$a; aY method_49936 method_49936 + m (Lnc;Ldfy;)Lerw$a; aZ method_49937 method_49937 + m (Ldfy;)Lerw$a; aa method_16284 method_16284 + m (Lnc;Ldfy;)Lerw$a; aa method_46064 method_46064 + m (Ldfy;)Lerw$a; ab method_16303 method_16303 + m (Lnc;Ldfy;)Lerw$a; ab method_46065 method_46065 + m (Ldfy;)Lerw$a; ac method_16317 method_16317 + m (Lnc;Ldfy;)Lerw$a; ac method_46093 method_46093 + m (Ldfy;)Lerw$a; ad method_16325 method_16325 + m (Lnc;Ldfy;)Lerw$a; ad method_46094 method_46094 + m (Ldfy;)Lerw$a; ae method_16245 method_16245 + m (Lnc;Ldfy;)Lerw$a; ae method_46095 method_46095 + m (Ldfy;)Lerw$a; af method_34053 method_34053 + m (Lnc;Ldfy;)Lerw$a; af method_46096 method_46096 + m (Ldfy;)Lerw$a; ag method_34054 method_34054 + m (Lnc;Ldfy;)Lerw$a; ag method_46097 method_46097 + m (Ldfy;)Lerw$a; ah method_34055 method_34055 + m (Lnc;Ldfy;)Lerw$a; ah method_46098 method_46098 + m (Ldfy;)Lerw$a; ai method_16237 method_16237 + m (Lnc;Ldfy;)Lerw$a; ai method_46099 method_46099 + m (Ldfy;)Lerw$a; aj method_34056 method_34056 + m (Lnc;Ldfy;)Lerw$a; aj method_46100 method_46100 + m (Ldfy;)Lerw$a; ak method_16327 method_16327 + m (Lnc;Ldfy;)Lerw$a; ak method_46101 method_46101 + m (Ldfy;)Lerw$a; al method_16310 method_16310 + m (Lnc;Ldfy;)Lerw$a; al method_46102 method_46102 + m (Ldfy;)Lerw$a; am method_16295 method_16295 + m (Lnc;Ldfy;)Lerw$a; am method_46104 method_46104 + m (Ldfy;)Lerw$a; an method_16233 method_16233 + m (Lnc;Ldfy;)Lerw$a; an method_46106 method_46106 + m (Ldfy;)Lerw$a; ao method_16292 method_16292 + m (Lnc;Ldfy;)Lerw$a; ao method_46107 method_46107 + m (Ldfy;)Lerw$a; ap method_16273 method_16273 + m (Lnc;Ldfy;)Lerw$a; ap method_46109 method_46109 + m (Ldfy;)Lerw$a; aq method_16268 method_16268 + m (Lnc;Ldfy;)Lerw$a; aq method_46111 method_46111 + m (Ldfy;)Lerw$a; ar method_16296 method_16296 + m (Lnc;Ldfy;)Lerw$a; ar method_46112 method_46112 + m (Ldfy;)Lerw$a; as method_16232 method_16232 + m (Lnc;Ldfy;)Lerw$a; as method_46113 method_46113 + m (Ldfy;)Lerw$a; at method_16326 method_16326 + m (Lnc;Ldfy;)Lerw$a; at method_46114 method_46114 + m (Ldfy;)Lerw$a; au method_16312 method_16312 + m (Lnc;Ldfy;)Lerw$a; au method_46115 method_46115 + m (Ldfy;)Lerw$a; av method_16316 method_16316 + m (Lnc;Ldfy;)Lerw$a; av method_60402 method_60402 + m (Ldfy;)Lerw$a; aw method_16306 method_16306 + m (Lnc;Ldfy;)Lerw$a; aw method_60403 method_60403 + m (Ldfy;)Lerw$a; ax method_16246 method_16246 + m (Lnc;Ldfy;)Lerw$a; ax method_60404 method_60404 + m (Ldfy;)Lerw$a; ay method_16270 method_16270 + m (Lnc;Ldfy;)Lerw$a; ay method_60405 method_60405 + m (Ldfy;)Lerw$a; az method_16263 method_16263 + m (Lnc;Ldfy;)Lerw$a; az method_60406 method_60406 + m (Ldfy;Ljava/lang/Integer;)Lesh$a; b method_43814 method_43814 + m (Ljo$b;Ldfy;)Lerw$a; b method_60407 method_60407 + m (Lnc;Ldfy;)Lerw$a; b method_46123 method_46123 + m (Lnc;Ldfy;)Lerw$a; bA method_49971 method_49971 + m (Lnc;Ldfy;)Lerw$a; bB method_49972 method_49972 + m (Lnc;Ldfy;)Lerw$a; bC method_49973 method_49973 + m (Lnc;Ldfy;)Lerw$a; bD method_49974 method_49974 + m (Lnc;Ldfy;)Lerw$a; bE method_49975 method_49975 + m (Lnc;Ldfy;)Lerw$a; bF method_49976 method_49976 + m (Lnc;Ldfy;)Lerw$a; bG method_49977 method_49977 + m (Lnc;Ldfy;)Lerw$a; bH method_49978 method_49978 + m (Lnc;Ldfy;)Lerw$a; bI method_49979 method_49979 + m (Lnc;Ldfy;)Lerw$a; bJ method_49980 method_49980 + m (Lnc;Ldfy;)Lerw$a; bK method_49981 method_49981 + m (Lnc;Ldfy;)Lerw$a; bL method_49982 method_49982 + m (Lnc;Ldfy;)Lerw$a; bM method_49955 method_49955 + m (Lnc;Ldfy;)Lerw$a; bN method_49956 method_49956 + m (Lnc;Ldfy;)Lerw$a; bO method_49371 method_49371 + m (Lnc;Ldfy;)Lerw$a; bP method_49372 method_49372 + m (Lnc;Ldfy;)Lerw$a; bQ method_49373 method_49373 + m (Lnc;Ldfy;)Lerw$a; bR method_49366 method_49366 + m (Lnc;Ldfy;)Lerw$a; bS method_49367 method_49367 + m (Lnc;Ldfy;)Lerw$a; bT method_49368 method_49368 + m (Lnc;Ldfy;)Lerw$a; bU method_49369 method_49369 + m (Lnc;Ldfy;)Lerw$a; bV method_49370 method_49370 + m (Lnc;Ldfy;)Lerw$a; bW method_60408 method_60408 + m (Lnc;Ldfy;)Lerw$a; bX method_60409 method_60409 + m (Lnc;Ldfy;)Lerw$a; bY method_60410 method_60410 + m (Lnc;Ldfy;)Lerw$a; ba method_49938 method_49938 + m (Lnc;Ldfy;)Lerw$a; bb method_49939 method_49939 + m (Lnc;Ldfy;)Lerw$a; bc method_49940 method_49940 + m (Lnc;Ldfy;)Lerw$a; bd method_49941 method_49941 + m (Lnc;Ldfy;)Lerw$a; be method_49942 method_49942 + m (Lnc;Ldfy;)Lerw$a; bf method_49943 method_49943 + m (Lnc;Ldfy;)Lerw$a; bg method_49944 method_49944 + m (Lnc;Ldfy;)Lerw$a; bh method_49945 method_49945 + m (Lnc;Ldfy;)Lerw$a; bi method_49946 method_49946 + m (Lnc;Ldfy;)Lerw$a; bj method_49947 method_49947 + m (Lnc;Ldfy;)Lerw$a; bk method_49948 method_49948 + m (Lnc;Ldfy;)Lerw$a; bl method_49949 method_49949 + m (Lnc;Ldfy;)Lerw$a; bm method_49957 method_49957 + m (Lnc;Ldfy;)Lerw$a; bn method_49958 method_49958 + m (Lnc;Ldfy;)Lerw$a; bo method_49959 method_49959 + m (Lnc;Ldfy;)Lerw$a; bp method_49960 method_49960 + m (Lnc;Ldfy;)Lerw$a; bq method_49961 method_49961 + m (Lnc;Ldfy;)Lerw$a; br method_49962 method_49962 + m (Lnc;Ldfy;)Lerw$a; bs method_49963 method_49963 + m (Lnc;Ldfy;)Lerw$a; bt method_49964 method_49964 + m (Lnc;Ldfy;)Lerw$a; bu method_49965 method_49965 + m (Lnc;Ldfy;)Lerw$a; bv method_49966 method_49966 + m (Lnc;Ldfy;)Lerw$a; bw method_49967 method_49967 + m (Lnc;Ldfy;)Lerw$a; bx method_49968 method_49968 + m (Lnc;Ldfy;)Lerw$a; by method_49969 method_49969 + m (Lnc;Ldfy;)Lerw$a; bz method_49970 method_49970 + m (Ldcv;)Lerw$a; c method_46155 method_46155 + m (Ldfy;Ljava/lang/Integer;)Letf$a; c method_43815 method_43815 + m (Ljo$b;Ldfy;)Lerw$a; c method_60411 method_60411 + m (Lnc;Ldfy;)Lerw$a; c method_46156 method_46156 + m (Ldcv;)Lerw$a; d method_46157 method_46157 + m (Ljo$b;Ldfy;)Lerw$a; d method_32226 method_32226 + m (Lnc;Ldfy;)Lerw$a; d method_46158 method_46158 + m ()Lerw$a; e method_49983 createPitcherCropLoot + m (Ldcv;)Lerw$a; e method_46159 method_46159 + m (Ljo$b;Ldfy;)Lerw$a; e method_60412 method_60412 + m (Lnc;Ldfy;)Lerw$a; e method_46160 method_46160 + m (Ldcv;)Lerw$a; f method_46161 method_46161 + m (Ljo$b;Ldfy;)Lerw$a; f method_60413 method_60413 + m (Lnc;Ldfy;)Lerw$a; f method_46162 method_46162 + m (Ldcv;)Lerw$a; g method_46163 method_46163 + m (Ljo$b;Ldfy;)Lerw$a; g method_60414 method_60414 + m (Lnc;Ldfy;)Lerw$a; g method_46164 method_46164 + m (Ljo$b;Ldfy;)Lerw$a; h method_60415 method_60415 + m (Lnc;Ldfy;)Lerw$a; h method_46165 method_46165 + m (Ljo$b;Ldfy;)Lerw$a; i method_60416 method_60416 + m (Lnc;Ldfy;)Lerw$a; i method_46166 method_46166 + m (Lnc;Ldfy;)Lerw$a; j method_60417 method_60417 + m (Lnc;Ldfy;)Lerw$a; k method_60418 method_60418 + m (Lnc;Ldfy;)Lerw$a; l method_46167 method_46167 + m (Lnc;Ldfy;)Lerw$a; m method_46168 method_46168 + m (Lnc;Ldfy;)Lerw$a; n method_46169 method_46169 + m (Lnc;Ldfy;)Lerw$a; o method_46170 method_46170 + m (Lnc;Ldfy;)Lerw$a; p method_46171 method_46171 + m (Lnc;Ldfy;)Lerw$a; q method_46172 method_46172 + m (Lnc;Ldfy;)Lerw$a; r method_46173 method_46173 + m (Lnc;Ldfy;)Lerw$a; s method_46174 method_46174 + m (Lnc;Ldfy;)Lerw$a; t method_46175 method_46175 + m (Ldfy;)Lerw$a; u method_49984 createDecoratedPotTable + m (Lnc;Ldfy;)Lerw$a; u method_46176 method_46176 + m (Ldfy;)Lerw$a; v method_36230 method_36230 + m (Lnc;Ldfy;)Lerw$a; v method_46177 method_46177 + m (Ldfy;)Lerw$a; w method_34600 method_34600 + m (Lnc;Ldfy;)Lerw$a; w method_46178 method_46178 + m (Ldfy;)Lerw$a; x method_34599 method_34599 + m (Lnc;Ldfy;)Lerw$a; x method_46179 method_46179 + m (Ldfy;)Lerw$a; y method_34601 method_34601 + m (Lnc;Ldfy;)Lerw$a; y method_46180 method_46180 + m (Ldfy;)Lerw$a; z method_34602 method_34602 + m (Lnc;Ldfy;)Lerw$a; z method_46181 method_46181 + m (Ljo$a;)V + m ()V +c nd net/minecraft/class_2432 net/minecraft/data/loot/packs/VanillaChestLoot + f Ljo$a; a comp_2787 registries + m ()Lerw$a; a method_48499 shipwreckSupplyLootTable + m (Ljava/util/function/BiConsumer;)V a method_55304 spawnerLootTables + m ()Lerw$a; b method_48500 shipwreckMapLootTable + m ()Lerw$a; c method_48501 bastionHoglinStableLootTable + m ()Lerw$a; d method_48502 bastionBridgeLootTable + m ()Lerw$a; e method_48503 endCityTreasureLootTable + m ()Lerw$a; f method_48504 netherBridgeLootTable + m ()Lerw$a; g method_48505 bastionTreasureLootTable + m ()Lerw$a; h method_48506 bastionOtherLootTable + m ()Lerw$a; i method_48507 woodlandMansionLootTable + m ()Lerw$a; j method_48508 strongholdLibraryLootTable + m ()Lerw$a; k method_48509 strongholdCorridorLootTable + m ()Lerw$a; l method_48510 ancientCityLootTable + m ()Lerw$a; m method_48511 jungleTempleLootTable + m ()Lerw$a; n method_48512 shipwreckTreasureLootTable + m ()Lerw$a; o method_48513 pillagerOutpostLootTable + m ()Lerw$a; p method_48514 desertPyramidLootTable + m ()Ljo$a; q comp_2787 registries + m (Ljo$a;)V +c ne net/minecraft/class_2434 net/minecraft/data/loot/packs/VanillaEntityLoot + m ()Lerw$a; d method_48515 elderGuardianLootTable + m (Ljo$a;)V +c nf net/minecraft/class_9486 net/minecraft/data/loot/packs/VanillaEquipmentLoot + f Ljo$a; a comp_2788 registries + m ()Ljo$a; a comp_2788 registries + m (Lcul;Lcul;Lcwx;Ljo$b;)Lerw$a; a method_60419 trialChamberEquipment + m (Ljo$a;)V +c ng net/minecraft/class_2437 net/minecraft/data/loot/packs/VanillaFishingLoot + f Ljo$a; a comp_2789 registries + m ()Lerw$a; a method_48516 fishingFishLootTable + m ()Ljo$a; b comp_2789 registries + m (Ljo$a;)V +c nh net/minecraft/class_3714 net/minecraft/data/loot/packs/VanillaGiftLoot + f Ljo$a; a comp_2790 registries + m ()Ljo$a; a comp_2790 registries + m (Ljo$a;)V +c ni net/minecraft/class_7794 net/minecraft/data/loot/packs/VanillaLootTableProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)Lmw; a method_46184 create + m ()V +c nj net/minecraft/class_4845 net/minecraft/data/loot/packs/VanillaPiglinBarterLoot + f Ljo$a; a comp_2791 registries + m ()Ljo$a; a comp_2791 registries + m (Ljo$a;)V +c nk net/minecraft/class_9340 net/minecraft/data/loot/packs/VanillaShearingLoot + f Ljo$a; a comp_2792 registries + m ()Ljo$a; a comp_2792 registries + m (Ljo$a;)V +c nl net/minecraft/class_7795 net/minecraft/data/loot/packs/package-info +c nm net/minecraft/class_7796 net/minecraft/data/metadata/PackMetadataGenerator + f Lmc; d field_40619 output + f Ljava/util/Map; e field_40620 elements + m (Late;Ljava/lang/Object;)Lnm; a method_46185 add + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/util/function/Supplier;)V a method_46186 method_46186 + m (Lmc;Lwz;)Lnm; a method_46812 forFeaturePack + m (Lmc;Lwz;Lcpl;)Lnm; a method_46187 forFeaturePack + m (Late;Ljava/lang/Object;)Lcom/google/gson/JsonElement; b method_46188 method_46188 + m (Lmc;)V +c nn net/minecraft/class_7797 net/minecraft/data/metadata/package-info +c no net/minecraft/class_4910 net/minecraft/data/models/BlockModelGenerators + f Ljava/util/List; a field_28548 MULTIFACE_GENERATOR + f Ljava/util/function/Consumer; b field_22830 blockStateOutput + f Ljava/util/function/BiConsumer; c field_22831 modelOutput + f Ljava/util/function/Consumer; d field_22832 skippedAutoModelsOutput + f Ljava/util/List; e field_28549 nonOrientableTrapdoor + f Ljava/util/Map; f field_29504 fullBlockModelCustomGenerators + f Ljava/util/Map; g field_28551 texturedModels + f Ljava/util/Map; h field_28552 SHAPE_CONSUMERS + f Ljava/util/Map; i field_41526 CHISELED_BOOKSHELF_SLOT_MODEL_CACHE + m ()V A method_25709 createCauldrons + m (Ldfy;)Ljava/util/List; A method_25700 createFloorFireModels + m ()V B method_25711 createChorusFlower + m (Ldfy;)Ljava/util/List; B method_25702 createSideFireModels + m ()V C method_54654 createCrafterBlock + m (Ldfy;)Ljava/util/List; C method_25704 createTopFireModels + m ()V D method_25712 createEndPortalFrame + m (Ldfy;)V D method_25706 createLantern + m ()V E method_25508 createChorusPlant + m (Ldfy;)V E method_25708 createNonTemplateHorizontalBlock + m ()V F method_25509 createComposter + m (Ldfy;)V F method_33520 createMultiface + m ()V G method_32227 createAmethystClusters + m (Ldfy;)V G method_25710 createShulkerBox + m ()V H method_32802 createPointedDripstone + m ()V I method_25510 createDaylightDetector + m ()V J method_34852 createLightningRod + m ()V K method_25512 createFarmland + m ()V L method_25513 createFire + m ()V M method_25514 createSoulFire + m ()V N method_42033 createMuddyMangroveRoots + m ()V O method_42034 createMangrovePropagule + m ()V P method_25515 createFrostedIce + m ()V Q method_25516 createGrassBlocks + m ()V R method_25517 createCocoa + m ()V S method_25518 createDirtPath + m ()V T method_25519 createHopper + m ()V U method_25520 createIronBars + m ()V V method_25521 createLever + m ()V W method_25522 createLilyPad + m ()V X method_42035 createFrogspawnBlock + m ()V Y method_25523 createNetherPortalBlock + m ()V Z method_25524 createNetherrack + m ()V a method_25534 run + m (I)Ljava/util/List; a method_25535 createBambooModels + m (ILjava/lang/String;Lof;)Lakr; a method_25536 createTurtleEggModel + m (Lakr;)[Lnx; a method_25584 createRotatedVariants + m (Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Ldsp;Ljava/lang/Boolean;)Lnx; a method_56885 method_56885 + m (Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Ldsi;Ljava/lang/Boolean;)Lnx; a method_55305 method_55305 + m (Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Ljava/lang/Boolean;Ldug;)Lnx; a method_34628 method_34628 + m (Lakr;Lakr;Lakr;Lakr;Ljava/lang/Boolean;Ljava/lang/Boolean;)Lnx; a method_54821 method_54821 + m (Lakr;Lakr;Lduj;)Lnx; a method_49985 method_49985 + m (Lakr;Lakr;Ljava/lang/Boolean;)Lnx; a method_42036 method_42036 + m (Lakr;Ldfy;)Lno$a; a method_25585 blockEntityModels + m (Lakr;Ljava/lang/Integer;)Lnx; a method_34625 method_34625 + m (Lakr;Lof;)V a method_34626 method_34626 + m (Lcul;)V a method_25537 createSimpleFlatItemModel + m (Lcul;Lakr;)V a method_25538 delegateItemModel + m (Lcwa;)V a method_34603 method_34603 + m (Ldfy;)V a method_25641 createTrivialCube + m (Ldfy;II)Lakr; a method_34604 method_34604 + m (Ldfy;Lakr;)V a method_25623 delegateItemModel + m (Ldfy;Lakr;Lakr;)Lnu; a method_25645 createRotatedVariant + m (Ldfy;Lakr;Lakr;Lakr;)Lnr; a method_25636 createWall + m (Ldfy;Lakr;Lakr;Lakr;Lakr;)Lnr; a method_54822 createCopperBulb + m (Ldfy;Lakr;Lakr;Lakr;Lakr;Lakr;)Lnr; a method_46189 createCustomFence + m (Ldfy;Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;)Lnr; a method_25609 createDoor + m (Ldfy;Lakr;Lakr;Lakr;Lakr;Z)Lnr; a method_25626 createFenceGate + m (Ldfy;Lakr;Lnx;)V a method_25560 createGrassLikeBlock + m (Ldfy;Lakr;Lof;)V a method_25561 createPistonVariant + m (Ldfy;Lakr;Lof;Ljava/util/function/BiConsumer;)Lnr; a method_34608 createMirroredCubeGenerator + m (Ldfy;Lcul;)V a method_25542 createAirLikeBlock + m (Ldfy;Ldfy;)V a method_54823 copyDoorModel + m (Ldfy;Ldfy;Ldfy;)V a method_46190 createHangingSign + m (Ldfy;Ldfy;Ldfy;Ldfy;Ldfy;Ldfy;Ldfy;Ldfy;)V a method_25544 createCoral + m (Ldfy;Ldfy;Ljava/util/function/BiFunction;)V a method_25546 createCraftingTableLike + m (Ldfy;Ldfy;Lno$e;)V a method_25545 createPlant + m (Ldfy;Lduf;[I)V a method_25547 createCropBlock + m (Ldfy;Ljava/lang/Integer;)Lnx; a method_49376 method_49376 + m (Ldfy;Ljava/lang/Integer;Ldty;)Lnx; a method_49986 method_49986 + m (Ldfy;Ljava/lang/String;)V a method_25556 createSimpleFlatItemModel + m (Ldfy;Ljava/lang/String;Lod;Ljava/util/function/Function;)Lakr; a method_25557 createSuffixedVariant + m (Ldfy;Ljava/util/function/Function;)V a method_25558 createBeeNest + m (Ldfy;Lno$e;)V a method_25548 createCrossBlockWithDefaultItem + m (Ldfy;Lno$e;Lduf;[I)V a method_49374 createCrossBlock + m (Ldfy;Lno$e;Lof;)V a method_25549 createCrossBlockWithDefaultItem + m (Ldfy;Lns$c;)V a method_37366 method_37366 + m (Ldfy;Lns$c;Ldtt;)V a method_34605 method_34605 + m (Ldfy;Lof;)V a method_25550 createPumpkinVariant + m (Ldfy;Lof;Ljava/lang/Integer;)Lnx; a method_34606 method_34606 + m (Ldfy;Lof;Ljava/util/function/BiConsumer;)Lnr; a method_47519 createPillarBlockUVLocked + m (Ldfy;Lof;Lod;)V a method_35868 createTrivialBlock + m (Ldfy;Loh$a;)V a method_25553 createAxisAlignedPillarBlock + m (Ldfy;Loh$a;Loh$a;)V a method_25554 createRotatedPillarWithHorizontalVariant + m (Ldtt;Lakr;Lakr;)Lnv; a method_25565 createBooleanModelDispatch + m (Lduf;Ljava/lang/Comparable;Lakr;Lakr;)Lnv; a method_25566 createEmptyOrFullDispatch + m (Ldum;)Lnx; a method_34610 method_34610 + m (Ljava/lang/Boolean;Ljava/lang/Boolean;)Lnx; a method_34616 method_34616 + m (Ljava/lang/Comparable;Lnx;Lnx;Ljava/lang/Comparable;)Lnx; a method_34617 method_34617 + m (Ljava/lang/Integer;)Lakr; a method_49987 method_49987 + m (Ljava/lang/Integer;Ljava/lang/Boolean;Ljava/lang/Boolean;)Lnx; a method_34619 method_34619 + m (Ljava/lang/Integer;Ljava/lang/Integer;)Lakr; a method_25581 createTurtleEggModel + m (Ljava/lang/String;I)Lnx; a method_34621 method_34621 + m (Ljava/util/List;Ljava/util/function/UnaryOperator;)Ljava/util/List; a method_25583 wrapModels + m (Ljava/util/function/Function;Ljava/lang/Integer;)Lnx; a method_49988 method_49988 + m (Lji;Ldtz;)Lnx; a method_32803 createPointedDripstoneVariant + m (Ljk;)Lnx; a method_34611 method_34611 + m (Ljk;Lnx;)Lnx; a method_26433 applyRotation + m (Llx;)V a method_34612 method_34612 + m (Lnt;Lakr;Lcom/mojang/datafixers/util/Pair;)V a method_47811 method_47811 + m (Lnt;Lns$c;Lny$a;)V a method_47812 addSlotStateAndRotationVariants + m (Lnt;Lns$c;Lny$a;Lcom/mojang/datafixers/util/Pair;)V a method_47813 method_47813 + m (Lnt;Lns$c;Lny$a;Ldtt;Lod;Z)V a method_47814 addBookSlotModel + m (Lnv$d;Ldty;Lakr;Lakr;Lakr;Lakr;)Lnv$d; a method_25572 configureDoorHalf + m (Lnx;)Lnx; a method_34615 method_34615 + m (Lod;Ljava/lang/String;Lof;Lno$d;)Lakr; a method_47815 method_47815 + m (Lof;)V a method_34623 method_34623 + m (Lof;Lakr;)Lof; a method_34624 method_34624 + m (Loh$a;[Ldfy;)V a method_25576 createColoredBlockWithRandomRotations + m ([ILdfy;Lno$e;Ljava/lang/Integer;)Lnx; a method_49375 method_49375 + m ([ILit/unimi/dsi/fastutil/ints/Int2ObjectMap;Ldfy;Ljava/lang/Integer;)Lnx; a method_34629 method_34629 + m ([Lakr;Ljava/lang/Integer;)Lnx; a method_34630 method_34630 + m ([Ldfy;)V a method_27166 createCampfires + m ()V aA method_36440 createInfestedDeepslate + m ()V aB method_26279 createRespawnAnchor + m ()V aC method_26434 createJigsaw + m ()V aD method_33504 createPetrifiedOakSlab + m ()V aE method_39204 createLightBlock + m ()V aa method_25525 createObserver + m ()V ab method_25526 createPistons + m ()V ac method_25527 createPistonHeads + m ()V ad method_55306 createTrialSpawner + m ()V ae method_56886 createVault + m ()V af method_33128 createSculkSensor + m ()V ag method_49989 createCalibratedSculkSensor + m ()V ah method_42037 createSculkShrieker + m ()V ai method_25528 createScaffolding + m ()V aj method_33710 createCaveVines + m ()V ak method_25529 createRedstoneLamp + m ()V al method_25530 createRedstoneTorch + m ()V am method_25531 createRepeater + m ()V an method_25532 createSeaPickle + m ()V ao method_25533 createSnowBlocks + m ()V ap method_25590 createStonecutter + m ()V aq method_25591 createStructureBlock + m ()V ar method_25592 createSweetBerryBush + m ()V as method_25593 createTripwire + m ()V at method_25594 createTripwireHook + m ()V au method_25595 createTurtleEgg + m ()V av method_49990 createSnifferEgg + m ()V aw method_42038 createSculkCatalyst + m ()V ax method_46193 createChiseledBookshelf + m ()V ay method_25597 createMagmaBlock + m ()V az method_25598 createInfestedStone + m ()Lnv; b method_25599 createHorizontalFacingDispatch + m (Lakr;)Lnx; b method_43818 method_43818 + m (Lakr;Lakr;Lduj;)Lnx; b method_34627 method_34627 + m (Lakr;Lof;)V b method_34639 method_34639 + m (Ldfy;)V b method_51463 createGenericCube + m (Ldfy;Lakr;)Lnu; b method_25634 createRotatedVariant + m (Ldfy;Lakr;Lakr;)Lnr; b method_25654 createButton + m (Ldfy;Lakr;Lakr;Lakr;)Lnr; b method_25646 createStairs + m (Ldfy;Lakr;Lof;Ljava/util/function/BiConsumer;)Lnr; b method_42039 createNorthWestMirroredCubeGenerator + m (Ldfy;Ldfy;)V b method_54824 copyTrapdoorModel + m (Ldfy;Ldfy;Lno$e;)V b method_25602 createGrowingPlant + m (Ldfy;Lno$e;)V b method_25603 createCrossBlock + m (Ldfy;Lno$e;Lof;)V b method_25604 createCrossBlock + m (Ldfy;Loh$a;)V b method_25622 createTrivialBlock + m (Ljava/lang/Integer;)Lnx; b method_34618 method_34618 + m (Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/util/List; b method_34634 method_34634 + m (Ljk;)Lnx; b method_54655 method_54655 + m (Lnx;)Lnx; b method_34633 method_34633 + m (Lof;)V b method_34636 method_34636 + m (Lof;Lakr;)Lof; b method_34637 method_34637 + m (Loh$a;[Ldfy;)V b method_25614 createColoredBlockWithStateRotations + m ()Lnv; c method_25618 createHorizontalFacingDispatchAlt + m (Lakr;)Lnx; c method_43819 method_43819 + m (Lakr;Lof;)V c method_34645 method_34645 + m (Ldfy;)V c method_25540 skipAutoItemBlock + m (Ldfy;Lakr;)Lnu; c method_25644 createSimpleBlock + m (Ldfy;Lakr;Lakr;)Lnr; c method_25661 createFence + m (Ldfy;Lakr;Lakr;Lakr;)Lnr; c method_25655 createOrientableTrapdoor + m (Ldfy;Lakr;Lof;Ljava/util/function/BiConsumer;)Lnr; c method_34631 createMirroredColumnGenerator + m (Ldfy;Ldfy;)V c method_25543 createNonTemplateModelBlock + m (Ldfy;Lno$e;)V c method_25621 createDoublePlant + m (Ldfy;Loh$a;)V c method_25605 createHorizontallyRotatedBlock + m (Lnx;)Lnx; c method_34641 method_34641 + m (Lof;)V c method_34643 method_34643 + m ()Lnv; d method_25630 createTorchHorizontalDispatch + m (Lakr;)Lnx; d method_43820 method_43820 + m (Lakr;Lof;)V d method_34650 method_34650 + m (Ldfy;)V d method_25600 createSimpleFlatItemModel + m (Ldfy;Lakr;)Lnr; d method_25653 createAxisAlignedPillarBlock + m (Ldfy;Lakr;Lakr;)Lnr; d method_25667 createRotatedPillarWithHorizontalVariant + m (Ldfy;Lakr;Lakr;Lakr;)Lnr; d method_25662 createTrapdoor + m (Ldfy;Ldfy;)V d method_25601 createCoralFans + m (Ldfy;Loh$a;)V d method_25652 createFurnace + m (Lnx;)Lnx; d method_34647 method_34647 + m (Lof;)V d method_33509 method_33509 + m ()Lnv; e method_25640 createFacingDispatch + m (Lakr;)Lnx; e method_43821 method_43821 + m (Ldfy;)V e method_25619 createRotatedMirroredVariantBlock + m (Ldfy;Lakr;)V e method_31063 createAxisAlignedPillarBlockCustomModel + m (Ldfy;Lakr;Lakr;)Lnr; e method_25673 createPressurePlate + m (Ldfy;Lakr;Lakr;Lakr;)Lnr; e method_25668 createSlab + m (Ldfy;Ldfy;)V e method_25620 createStems + m (Lnx;)Lnx; e method_34651 method_34651 + m (Lof;)V e method_33512 method_33512 + m ()Lnv; f method_25649 createRotatedPillar + m (Lakr;)Lnx; f method_43822 method_43822 + m (Ldfy;)V f method_25631 createRotatedVariantBlock + m (Ldfy;Lakr;)V f method_25660 createAirLikeBlock + m (Ldfy;Lakr;Lakr;)V f method_25678 createDoubleBlock + m (Ldfy;Ldfy;)Lno$a; f method_25632 blockEntityModels + m (Lnx;)Lnx; f method_34653 method_34653 + m ()V g method_33711 createBigDripLeafBlock + m (Lakr;)Lnx; g method_43823 method_43823 + m (Ldfy;)V g method_49377 createBrushableBlock + m (Ldfy;Ldfy;)V g method_25642 createFullAndCarpetBlocks + m (Lnx;)Lnx; g method_34655 method_34655 + m ()V h method_49991 createPitcherPlant + m (Lakr;)Lnx; h method_34657 method_34657 + m (Ldfy;)Lno$b; h method_25650 family + m (Ldfy;Ldfy;)V h method_25651 createGlassBlocks + m (Lnx;)Lnx; h method_34656 method_34656 + m ()V i method_49992 createPitcherCrop + m (Ldfy;)V i method_25658 createDoor + m (Ldfy;Ldfy;)V i method_54825 copyCopperBulbModel + m (Lnx;)Lnx; i method_34658 method_34658 + m ()V j method_25657 createSunflower + m (Ldfy;)V j method_25665 createOrientableTrapdoor + m (Ldfy;Ldfy;)V j method_25666 createWeightedPressurePlate + m (Lnx;)Lnx; j method_34659 method_34659 + m ()V k method_25664 createTallSeagrass + m (Ldfy;)V k method_25671 createTrapdoor + m (Ldfy;Ldfy;)V k method_25672 copyModel + m (Lnx;)Lnx; k method_25656 method_25656 + m ()V l method_33712 createSmallDripleaf + m (Ldfy;)Lno$f; l method_25676 woodProvider + m (Ldfy;Ldfy;)V l method_25677 createNormalTorch + m ()V m method_25670 createBamboo + m (Ldfy;)V m method_25681 createNonTemplateModelBlock + m (Ldfy;Ldfy;)V m method_25682 createBedItem + m ()Lnv; n method_25675 createColumnWithFacing + m (Ldfy;)V n method_25685 createPassiveRail + m (Ldfy;Ldfy;)V n method_25686 createNetherRoots + m ()V o method_25680 createBarrel + m (Ldfy;)V o method_25688 createActiveRail + m (Ldfy;Ldfy;)V o method_32228 createCandleAndCandleCake + m ()V p method_25684 createBell + m (Ldfy;)V p method_49378 createFlowerBed + m ()V q method_25687 createGrindstone + m (Ldfy;)V q method_25690 createCommandBlock + m ()V r method_25691 createBookshelf + m (Ldfy;)V r method_25692 createAnvil + m ()V s method_25693 createRedstoneWire + m (Ldfy;)V s method_33713 createAzalea + m ()V t method_25695 createComparator + m (Ldfy;)V t method_37317 createPottedAzalea + m ()V u method_25697 createSmoothStoneSlab + m (Ldfy;)V u method_25694 createMushroomBlock + m ()V v method_25699 createBrewingStand + m (Ldfy;)V v method_25696 createDispenserBlock + m ()V w method_25701 createCakeBlock + m (Ldfy;)V w method_54826 createCopperBulb + m ()V x method_25703 createCartographyTable + m (Ldfy;)V x method_32229 createAmethystCluster + m ()V y method_25705 createSmithingTable + m (Ldfy;)V y method_25698 createNyliumBlock + m ()V z method_25707 createPumpkins + m (Ldfy;)V z method_31064 createRotatableColumn + m (Ljava/util/function/Consumer;Ljava/util/function/BiConsumer;Ljava/util/function/Consumer;)V + m ()V +c no$1 net/minecraft/class_4910$1 net/minecraft/data/models/BlockModelGenerators$1 + f [I a field_23399 $SwitchMap$net$minecraft$core$FrontAndTop + f [I b field_48979 $SwitchMap$net$minecraft$world$level$block$entity$vault$VaultState + f [I c field_47499 $SwitchMap$net$minecraft$world$level$block$entity$trialspawner$TrialSpawnerState + f [I d field_22833 $SwitchMap$net$minecraft$world$level$block$state$properties$RailShape + f [I e field_43383 $SwitchMap$net$minecraft$world$level$block$state$properties$DoubleBlockHalf + m ()V +c no$a net/minecraft/class_4910$class_4911 net/minecraft/data/models/BlockModelGenerators$BlockEntityModelGenerator + f Lno; a field_22834 field_22834 + f Lakr; b field_22835 baseModel + m (Lod;[Ldfy;)Lno$a; a method_25713 createWithCustomBlockItemModel + m ([Ldfy;)Lno$a; a method_25714 create + m ([Ldfy;)Lno$a; b method_25715 createWithoutBlockItem + m (Lno;Lakr;Ldfy;)V +c no$b net/minecraft/class_4910$class_4912 net/minecraft/data/models/BlockModelGenerators$BlockFamilyProvider + f Lno; a field_22836 field_22836 + f Lof; b field_22837 mapping + f Ljava/util/Map; c field_28553 models + f Llx; d field_28554 family + f Lakr; e field_22838 fullBlock + f Ljava/util/Set; f field_47134 skipGeneratingModelsFor + m (Ldfy;)Lno$b; a method_25716 button + m (Ldfy;Ldfy;)Lno$b; a method_54827 donateModelTo + m (Ldfy;Lod;)Lno$b; a method_25718 fullBlock + m (Llx$b;Ldfy;)V a method_33521 method_33521 + m (Llx;)Lno$b; a method_33522 generateFor + m (Lod;Ldfy;)Lakr; a method_33524 getOrCreateModel + m (Ldfy;)Lno$b; b method_25720 wall + m (Ldfy;Lod;)Lakr; b method_33525 method_33525 + m (Ldfy;)Lno$b; c method_46194 customFence + m (Ldfy;)Lno$b; d method_25721 fence + m (Ldfy;)Lno$b; e method_46195 customFenceGate + m (Ldfy;)Lno$b; f method_25722 fenceGate + m (Ldfy;)Lno$b; g method_25723 pressurePlate + m (Ldfy;)Lno$b; h method_25717 sign + m (Ldfy;)Lno$b; i method_25724 slab + m (Ldfy;)Lno$b; j method_25725 stairs + m (Ldfy;)Lno$b; k method_34661 fullBlockVariant + m (Ldfy;)Lno$b; l method_33527 door + m (Ldfy;)V m method_33528 trapdoor + m (Lno;Lof;)V +c no$c net/minecraft/class_4910$class_5879 net/minecraft/data/models/BlockModelGenerators$BlockStateGeneratorSupplier +c no$d net/minecraft/class_4910$class_7987 net/minecraft/data/models/BlockModelGenerators$BookSlotModelCacheKey + f Lod; a comp_1175 template + f Ljava/lang/String; b comp_1176 modelSuffix + m ()Lod; a comp_1175 template + m ()Ljava/lang/String; b comp_1176 modelSuffix + m (Lod;Ljava/lang/String;)V +c no$e net/minecraft/class_4910$class_4913 net/minecraft/data/models/BlockModelGenerators$TintState + f Lno$e; a field_22839 TINTED + f Lno$e; b field_22840 NOT_TINTED + f [Lno$e; c field_22841 $VALUES + m ()Lod; a method_25726 getCross + m ()Lod; b method_25727 getCrossPot + m ()[Lno$e; c method_36939 $values + m (Ljava/lang/String;I)V + m ()V +c no$f net/minecraft/class_4910$class_4914 net/minecraft/data/models/BlockModelGenerators$WoodProvider + f Lno; a field_22842 field_22842 + f Lof; b field_22843 logMapping + m (Ldfy;)Lno$f; a method_25728 wood + m (Ldfy;)Lno$f; b method_25729 log + m (Ldfy;)Lno$f; c method_25730 logWithHorizontal + m (Ldfy;)Lno$f; d method_47520 logUVLocked + m (Lno;Lof;)V +c np net/minecraft/class_4915 net/minecraft/data/models/ItemModelGenerators + f Lakr; a field_42086 TRIM_TYPE_PREDICATE_ID + f Ljava/util/List; b field_42087 GENERATED_TRIM_MODELS + f Ljava/util/function/BiConsumer; c field_22844 output + m ()V a method_25731 run + m (Lakr;Lakr;Lakr;)V a method_48517 generateLayeredItem + m (Lakr;Lakr;Lakr;Lakr;)V a method_48742 generateLayeredItem + m (Lakr;Ljava/lang/String;)Lakr; a method_48518 getItemModelForTrimMaterial + m (Lakr;Ljava/util/Map;Ljm;)Lcom/google/gson/JsonObject; a method_48519 generateBaseArmorTrimTemplate + m (Lcsf;)V a method_48523 generateArmorTrims + m (Lcsf;Lakr;Ljava/util/Map;)Lcom/google/gson/JsonObject; a method_48522 method_48522 + m (Lcul;)V a method_57960 generateItemWithOverlay + m (Lcul;Lcul;Lod;)V a method_25732 generateFlatItem + m (Lcul;Ljava/lang/String;Lod;)V a method_25734 generateFlatItem + m (Lcul;Lod;)V a method_25733 generateFlatItem + m (Lcsf;Lakr;Ljava/util/Map;)Lcom/google/gson/JsonObject; b method_48743 method_48743 + m (Lcul;)V b method_43228 generateCompassItem + m (Lcul;)V c method_43229 generateClockItem + m (Ljava/util/function/BiConsumer;)V + m ()V +c np$a net/minecraft/class_4915$class_8072 net/minecraft/data/models/ItemModelGenerators$TrimModelData + f Ljava/lang/String; a comp_1219 name + f F b comp_1220 itemModelIndex + f Ljava/util/Map; c comp_1239 overrideArmorMaterials + m ()Ljava/lang/String; a comp_1219 name + m (Ljm;)Ljava/lang/String; a method_48744 name + m ()F b comp_1220 itemModelIndex + m ()Ljava/util/Map; c comp_1239 overrideArmorMaterials + m (Ljava/lang/String;FLjava/util/Map;)V +c nq net/minecraft/class_4916 net/minecraft/data/models/ModelProvider + f Lmc$a; d field_39375 blockStatePathProvider + f Lmc$a; e field_39376 modelPathProvider + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46578 method_46578 + m (Ldfy;)Ljava/nio/file/Path; a method_44110 method_44110 + m (Ljava/util/Map$Entry;)Z a method_53817 method_53817 + m (Ljava/util/Map;Lakr;Ljava/util/function/Supplier;)V a method_25740 method_25740 + m (Ljava/util/Map;Ldfy;)Z a method_25738 method_25738 + m (Ljava/util/Map;Lnr;)V a method_25739 method_25739 + m (Ljava/util/Set;Ljava/util/Map;Ldfy;)V a method_25741 method_25741 + m (Ljava/util/function/Function;Lly;Ljava/util/Map$Entry;)Ljava/util/concurrent/CompletableFuture; a method_25742 method_25742 + m (Lly;Ljava/util/Map;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; a method_25735 saveCollection + m (Lmc;)V +c nr net/minecraft/class_4917 net/minecraft/data/models/blockstates/BlockStateGenerator + m ()Ldfy; a method_25743 getBlock +c ns net/minecraft/class_4918 net/minecraft/data/models/blockstates/Condition + m ()Lns$c; a method_25744 condition + m (Ldtd;)V a method_25745 validate + m ([Lns;)Lns; a method_35870 and + m ([Lns;)Lns; b method_25746 or +c ns$a net/minecraft/class_4918$class_4919 net/minecraft/data/models/blockstates/Condition$CompositeCondition + f Lns$b; a field_22848 operation + f Ljava/util/List; b field_22849 subconditions + m (Ldtd;Lns;)V a method_25747 method_25747 + m ()Lcom/google/gson/JsonElement; b method_25748 get + m (Lns$b;Ljava/util/List;)V +c ns$b net/minecraft/class_4918$class_4920 net/minecraft/data/models/blockstates/Condition$Operation + f Lns$b; a field_22850 AND + f Lns$b; b field_22851 OR + f Ljava/lang/String; c field_22852 id + f [Lns$b; d field_22853 $VALUES + m ()[Lns$b; a method_36940 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ns$c net/minecraft/class_4918$class_4921 net/minecraft/data/models/blockstates/Condition$TerminalCondition + f Ljava/util/Map; a field_22854 terms + m (Lcom/google/gson/JsonObject;Lduf;Ljava/lang/String;)V a method_25755 method_25755 + m (Ldtd;Lduf;)Z a method_25750 method_25750 + m (Lduf;Ljava/lang/Comparable;)Lns$c; a method_25751 term + m (Lduf;Ljava/lang/Comparable;[Ljava/lang/Comparable;)Lns$c; a method_25752 term + m (Lduf;Ljava/lang/String;)V a method_25753 putValue + m (Lduf;Ljava/util/stream/Stream;)Ljava/lang/String; a method_25754 joinValues + m ()Lcom/google/gson/JsonElement; b method_25756 get + m (Lduf;Ljava/lang/Comparable;)Lns$c; b method_35871 negatedTerm + m (Lduf;Ljava/lang/Comparable;[Ljava/lang/Comparable;)Lns$c; b method_35872 negatedTerm + m (Lduf;Ljava/lang/Comparable;[Ljava/lang/Comparable;)Ljava/lang/String; c method_25757 getTerm + m ()V +c nt net/minecraft/class_4922 net/minecraft/data/models/blockstates/MultiPartGenerator + f Ldfy; a field_22855 block + f Ljava/util/List; b field_22856 parts + m (Ldfy;)Lnt; a method_25758 multiPart + m (Ldtd;Lnt$b;)V a method_25759 method_25759 + m (Ljava/util/List;)Lnt; a method_25764 with + m (Lns;Ljava/util/List;)Lnt; a method_25761 with + m (Lns;Lnx;)Lnt; a method_25760 with + m (Lns;[Lnx;)Lnt; a method_25762 with + m (Lnx;)Lnt; a method_25763 with + m ()Lcom/google/gson/JsonElement; b method_25765 get + m (Ldfy;)V +c nt$a net/minecraft/class_4922$class_4923 net/minecraft/data/models/blockstates/MultiPartGenerator$ConditionalEntry + f Lns; a field_22857 condition + m (Lns;Ljava/util/List;)V +c nt$b net/minecraft/class_4922$class_4924 net/minecraft/data/models/blockstates/MultiPartGenerator$Entry + f Ljava/util/List; a field_22858 variants + m ()Lcom/google/gson/JsonElement; a method_25766 get + m (Lcom/google/gson/JsonObject;)V a method_25768 decorate + m (Ldtd;)V a method_25767 validate + m (Ljava/util/List;)V +c nu net/minecraft/class_4925 net/minecraft/data/models/blockstates/MultiVariantGenerator + f Ldfy; a field_22859 block + f Ljava/util/List; b field_22860 baseVariants + f Ljava/util/Set; c field_22861 seenProperties + f Ljava/util/List; d field_22862 declaredPropertySets + m (Lcom/google/common/collect/ImmutableList$Builder;Lnx;Lnx;)V a method_25773 method_25773 + m (Lcom/mojang/datafixers/util/Pair;Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_25774 method_25774 + m (Ldfy;)Lnu; a method_25769 multiVariant + m (Ldfy;Lnx;)Lnu; a method_25770 multiVariant + m (Ldfy;[Lnx;)Lnu; a method_25771 multiVariant + m (Lduf;)V a method_25772 method_25772 + m (Ljava/util/List;Lcom/google/common/collect/ImmutableList$Builder;Lnx;)V a method_25776 method_25776 + m (Ljava/util/List;Ljava/util/List;)Ljava/util/List; a method_25777 mergeVariants + m (Ljava/util/Map;Lcom/google/gson/JsonObject;)V a method_25778 method_25778 + m (Ljava/util/Map;Lcom/mojang/datafixers/util/Pair;)V a method_25779 method_25779 + m (Lnv;)Lnu; a method_25775 with + m ()Lcom/google/gson/JsonElement; b method_25780 get + m (Ljava/util/Map;Lcom/mojang/datafixers/util/Pair;)Ljava/util/stream/Stream; b method_25781 method_25781 + m (Ldfy;Ljava/util/List;)V +c nv net/minecraft/class_4926 net/minecraft/data/models/blockstates/PropertyDispatch + f Ljava/util/Map; a field_22863 values + m ()Ljava/util/Map; a method_25782 getEntries + m (Lduf;)Lnv$a; a method_25783 property + m (Lduf;Lduf;)Lnv$b; a method_25784 properties + m (Lduf;Lduf;Lduf;)Lnv$c; a method_25785 properties + m (Lduf;Lduf;Lduf;Lduf;)Lnv$d; a method_25786 properties + m (Lduf;Lduf;Lduf;Lduf;Lduf;)Lnv$e; a method_25787 properties + m (Lduf;Lnw;)Ljava/util/stream/Stream; a method_25788 method_25788 + m (Lnw;)Z a method_25789 method_25789 + m (Lnw;Ljava/util/List;)V a method_25790 putValue + m ()Ljava/util/List; b method_25791 getDefinedProperties + m ()V c method_25792 verifyComplete + m ()V +c nv$a net/minecraft/class_4926$class_4927 net/minecraft/data/models/blockstates/PropertyDispatch$C1 + f Lduf; a field_22864 property1 + m (Ljava/lang/Comparable;Ljava/util/List;)Lnv$a; a method_25794 select + m (Ljava/lang/Comparable;Lnx;)Lnv$a; a method_25793 select + m (Ljava/util/function/Function;)Lnv; a method_25795 generate + m (Ljava/util/function/Function;Ljava/lang/Comparable;)V a method_35877 method_35877 + m (Ljava/util/function/Function;)Lnv; b method_35878 generateList + m (Ljava/util/function/Function;Ljava/lang/Comparable;)V b method_25796 method_25796 + m (Lduf;)V +c nv$b net/minecraft/class_4926$class_4928 net/minecraft/data/models/blockstates/PropertyDispatch$C2 + f Lduf; a field_22865 property1 + f Lduf; b field_22866 property2 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/util/List;)Lnv$b; a method_25798 select + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Lnx;)Lnv$b; a method_25797 select + m (Ljava/lang/Comparable;Ljava/util/function/BiFunction;Ljava/lang/Comparable;)V a method_25799 method_25799 + m (Ljava/util/function/BiFunction;)Lnv; a method_25800 generate + m (Ljava/util/function/BiFunction;Ljava/lang/Comparable;)V a method_25801 method_25801 + m (Ljava/lang/Comparable;Ljava/util/function/BiFunction;Ljava/lang/Comparable;)V b method_25802 method_25802 + m (Ljava/util/function/BiFunction;)Lnv; b method_25803 generateList + m (Ljava/util/function/BiFunction;Ljava/lang/Comparable;)V b method_25804 method_25804 + m (Lduf;Lduf;)V +c nv$c net/minecraft/class_4926$class_4929 net/minecraft/data/models/blockstates/PropertyDispatch$C3 + f Lduf; a field_22867 property1 + f Lduf; b field_22868 property2 + f Lduf; c field_22869 property3 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/util/List;)Lnv$c; a method_25807 select + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnx;)Lnv$c; a method_25806 select + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$h;Ljava/lang/Comparable;)V a method_35879 method_35879 + m (Ljava/lang/Comparable;Lnv$h;Ljava/lang/Comparable;)V a method_35880 method_35880 + m (Lnv$h;)Lnv; a method_25805 generate + m (Lnv$h;Ljava/lang/Comparable;)V a method_35881 method_35881 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$h;Ljava/lang/Comparable;)V b method_25810 method_25810 + m (Ljava/lang/Comparable;Lnv$h;Ljava/lang/Comparable;)V b method_25809 method_25809 + m (Lnv$h;)Lnv; b method_35882 generateList + m (Lnv$h;Ljava/lang/Comparable;)V b method_25808 method_25808 + m (Lduf;Lduf;Lduf;)V +c nv$d net/minecraft/class_4926$class_4930 net/minecraft/data/models/blockstates/PropertyDispatch$C4 + f Lduf; a field_22870 property1 + f Lduf; b field_22871 property2 + f Lduf; c field_22872 property3 + f Lduf; d field_22873 property4 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/util/List;)Lnv$d; a method_25812 select + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnx;)Lnv$d; a method_25811 select + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$g;Ljava/lang/Comparable;)V a method_35883 method_35883 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$g;Ljava/lang/Comparable;)V a method_35884 method_35884 + m (Ljava/lang/Comparable;Lnv$g;Ljava/lang/Comparable;)V a method_35885 method_35885 + m (Lnv$g;)Lnv; a method_35886 generate + m (Lnv$g;Ljava/lang/Comparable;)V a method_35887 method_35887 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$g;Ljava/lang/Comparable;)V b method_35888 method_35888 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$g;Ljava/lang/Comparable;)V b method_35889 method_35889 + m (Ljava/lang/Comparable;Lnv$g;Ljava/lang/Comparable;)V b method_35890 method_35890 + m (Lnv$g;)Lnv; b method_35891 generateList + m (Lnv$g;Ljava/lang/Comparable;)V b method_35892 method_35892 + m (Lduf;Lduf;Lduf;Lduf;)V +c nv$e net/minecraft/class_4926$class_4931 net/minecraft/data/models/blockstates/PropertyDispatch$C5 + f Lduf; a field_22874 property1 + f Lduf; b field_22875 property2 + f Lduf; c field_22876 property3 + f Lduf; d field_22877 property4 + f Lduf; e field_22878 property5 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/util/List;)Lnv$e; a method_25814 select + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnx;)Lnv$e; a method_25813 select + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V a method_35893 method_35893 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V a method_35894 method_35894 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V a method_35895 method_35895 + m (Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V a method_35896 method_35896 + m (Lnv$f;)Lnv; a method_35897 generate + m (Lnv$f;Ljava/lang/Comparable;)V a method_35898 method_35898 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V b method_35899 method_35899 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V b method_35900 method_35900 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V b method_35901 method_35901 + m (Ljava/lang/Comparable;Lnv$f;Ljava/lang/Comparable;)V b method_35902 method_35902 + m (Lnv$f;)Lnv; b method_35903 generateList + m (Lnv$f;Ljava/lang/Comparable;)V b method_35904 method_35904 + m (Lduf;Lduf;Lduf;Lduf;Lduf;)V +c nv$f net/minecraft/class_4926$class_6290 net/minecraft/data/models/blockstates/PropertyDispatch$PentaFunction + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; apply method_35905 apply +c nv$g net/minecraft/class_4926$class_6291 net/minecraft/data/models/blockstates/PropertyDispatch$QuadFunction + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; apply method_35906 apply +c nv$h net/minecraft/class_4926$class_4932 net/minecraft/data/models/blockstates/PropertyDispatch$TriFunction +c nw net/minecraft/class_4934 net/minecraft/data/models/blockstates/Selector + f Lnw; a field_22881 EMPTY + f Ljava/util/Comparator; b field_22882 COMPARE_BY_NAME + f Ljava/util/List; c field_22883 values + m ()Lnw; a method_25818 empty + m (Lduf$a;)Lnw; a method_25819 extend + m (Lnw;)Lnw; a method_25820 extend + m ([Lduf$a;)Lnw; a method_25821 of + m ()Ljava/lang/String; b method_25822 getKey + m (Lduf$a;)Ljava/lang/String; b method_25823 method_25823 + m (Ljava/util/List;)V + m ()V +c nx net/minecraft/class_4935 net/minecraft/data/models/blockstates/Variant + f Ljava/util/Map; a field_22884 values + m ()Lnx; a method_25824 variant + m (Lcom/google/gson/JsonArray;Lnx;)V a method_25825 method_25825 + m (Lcom/google/gson/JsonObject;Lnz$a;)V a method_25826 method_25826 + m (Ljava/util/List;)Lcom/google/gson/JsonElement; a method_25829 convertList + m (Lnx;Lnx;)Lnx; a method_25827 merge + m (Lnz;Ljava/lang/Object;)Lnx; a method_25828 with + m ()Lcom/google/gson/JsonElement; b method_25830 get + m ()V +c ny net/minecraft/class_4936 net/minecraft/data/models/blockstates/VariantProperties + f Lnz; a field_22885 X_ROT + f Lnz; b field_22886 Y_ROT + f Lnz; c field_22887 MODEL + f Lnz; d field_22888 UV_LOCK + f Lnz; e field_22889 WEIGHT + m (Lakr;)Lcom/google/gson/JsonElement; a method_25832 method_25832 + m (Lny$a;)Lcom/google/gson/JsonElement; a method_25831 method_25831 + m (Lny$a;)Lcom/google/gson/JsonElement; b method_25833 method_25833 + m ()V + m ()V +c ny$a net/minecraft/class_4936$class_4937 net/minecraft/data/models/blockstates/VariantProperties$Rotation + f Lny$a; a field_22890 R0 + f Lny$a; b field_22891 R90 + f Lny$a; c field_22892 R180 + f Lny$a; d field_22893 R270 + f I e field_22894 value + f [Lny$a; f field_22895 $VALUES + m ()[Lny$a; a method_36941 $values + m (Ljava/lang/String;II)V + m ()V +c nz net/minecraft/class_4938 net/minecraft/data/models/blockstates/VariantProperty + f Ljava/lang/String; a field_22896 key + f Ljava/util/function/Function; b field_22897 serializer + m (Ljava/lang/Object;)Lnz$a; a method_25836 withValue + m (Ljava/lang/String;Ljava/util/function/Function;)V +c nz$a net/minecraft/class_4938$class_4939 net/minecraft/data/models/blockstates/VariantProperty$Value + f Lnz; a field_22898 field_22898 + f Ljava/lang/Object; b field_22899 value + m ()Lnz; a method_35907 getKey + m (Lcom/google/gson/JsonObject;)V a method_25838 addToVariant + m (Lnz;Ljava/lang/Object;)V +c oa net/minecraft/class_6292 net/minecraft/data/models/blockstates/package-info +c ob net/minecraft/class_4940 net/minecraft/data/models/model/DelegatedModel + f Lakr; a field_22900 parent + m ()Lcom/google/gson/JsonElement; a method_25839 get + m (Lakr;)V +c oc net/minecraft/class_4941 net/minecraft/data/models/model/ModelLocationUtils + m (Lcul;)Lakr; a method_25840 getModelLocation + m (Lcul;Ljava/lang/String;)Lakr; a method_25841 getModelLocation + m (Ldfy;)Lakr; a method_25842 getModelLocation + m (Ldfy;Ljava/lang/String;)Lakr; a method_25843 getModelLocation + m (Ljava/lang/String;)Lakr; a method_25844 decorateBlockModelLocation + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_46196 method_46196 + m (Ljava/lang/String;)Lakr; b method_25845 decorateItemModelLocation + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; b method_46197 method_46197 + m ()V +c od net/minecraft/class_4942 net/minecraft/data/models/model/ModelTemplate + f Ljava/util/Optional; a field_22901 model + f Ljava/util/Set; b field_22902 requiredSlots + f Ljava/util/Optional; c field_22903 suffix + m (Lakr;Ljava/util/Map;)Lcom/google/gson/JsonObject; a method_48524 createBaseTemplate + m (Lakr;Lof;Ljava/util/function/BiConsumer;)Lakr; a method_25852 create + m (Lakr;Lof;Ljava/util/function/BiConsumer;Lod$a;)Lakr; a method_48525 create + m (Lcom/google/gson/JsonObject;Lakr;)V a method_48526 method_48526 + m (Lcom/google/gson/JsonObject;Log;Lakr;)V a method_48527 method_48527 + m (Ldfy;)Lakr; a method_54828 getDefaultModelLocation + m (Ldfy;Ljava/lang/String;Lof;Ljava/util/function/BiConsumer;)Lakr; a method_25847 createWithSuffix + m (Ldfy;Lof;Ljava/util/function/BiConsumer;)Lakr; a method_25846 create + m (Lod$a;Lakr;Ljava/util/Map;)Lcom/google/gson/JsonElement; a method_48528 method_48528 + m (Lof;)Ljava/util/Map; a method_25850 createMap + m (Ldfy;Ljava/lang/String;Lof;Ljava/util/function/BiConsumer;)Lakr; b method_25853 createWithOverride + m (Ljava/util/Optional;Ljava/util/Optional;[Log;)V +c od$a net/minecraft/class_4942$class_8073 net/minecraft/data/models/model/ModelTemplate$JsonFactory +c oe net/minecraft/class_4943 net/minecraft/data/models/model/ModelTemplates + f Lod; A field_38021 DOOR_TOP_LEFT_OPEN + f Lod; B field_38022 DOOR_TOP_RIGHT + f Lod; C field_38023 DOOR_TOP_RIGHT_OPEN + f Lod; D field_40630 CUSTOM_FENCE_POST + f Lod; E field_40631 CUSTOM_FENCE_SIDE_NORTH + f Lod; F field_40621 CUSTOM_FENCE_SIDE_EAST + f Lod; G field_40622 CUSTOM_FENCE_SIDE_SOUTH + f Lod; H field_40623 CUSTOM_FENCE_SIDE_WEST + f Lod; I field_40624 CUSTOM_FENCE_INVENTORY + f Lod; J field_22988 FENCE_POST + f Lod; K field_22989 FENCE_SIDE + f Lod; L field_22990 FENCE_INVENTORY + f Lod; M field_22991 WALL_POST + f Lod; N field_22992 WALL_LOW_SIDE + f Lod; O field_22993 WALL_TALL_SIDE + f Lod; P field_22994 WALL_INVENTORY + f Lod; Q field_40625 CUSTOM_FENCE_GATE_CLOSED + f Lod; R field_40626 CUSTOM_FENCE_GATE_OPEN + f Lod; S field_40627 CUSTOM_FENCE_GATE_WALL_CLOSED + f Lod; T field_40628 CUSTOM_FENCE_GATE_WALL_OPEN + f Lod; U field_22995 FENCE_GATE_CLOSED + f Lod; V field_22996 FENCE_GATE_OPEN + f Lod; W field_22904 FENCE_GATE_WALL_CLOSED + f Lod; X field_22905 FENCE_GATE_WALL_OPEN + f Lod; Y field_22906 PRESSURE_PLATE_UP + f Lod; Z field_22907 PRESSURE_PLATE_DOWN + f Lod; aA field_42950 FLOWERBED_4 + f Lod; aB field_22946 CORAL_FAN + f Lod; aC field_22947 CORAL_WALL_FAN + f Lod; aD field_22948 GLAZED_TERRACOTTA + f Lod; aE field_22949 CHORUS_FLOWER + f Lod; aF field_22950 DAYLIGHT_DETECTOR + f Lod; aG field_22951 STAINED_GLASS_PANE_NOSIDE + f Lod; aH field_22952 STAINED_GLASS_PANE_NOSIDE_ALT + f Lod; aI field_22953 STAINED_GLASS_PANE_POST + f Lod; aJ field_22954 STAINED_GLASS_PANE_SIDE + f Lod; aK field_22955 STAINED_GLASS_PANE_SIDE_ALT + f Lod; aL field_22956 COMMAND_BLOCK + f Lod; a field_22942 CUBE + f Lod; aM field_41527 CHISELED_BOOKSHELF_SLOT_TOP_LEFT + f Lod; aN field_41528 CHISELED_BOOKSHELF_SLOT_TOP_MID + f Lod; aO field_41529 CHISELED_BOOKSHELF_SLOT_TOP_RIGHT + f Lod; aP field_41530 CHISELED_BOOKSHELF_SLOT_BOTTOM_LEFT + f Lod; aQ field_41531 CHISELED_BOOKSHELF_SLOT_BOTTOM_MID + f Lod; aR field_41532 CHISELED_BOOKSHELF_SLOT_BOTTOM_RIGHT + f Lod; aS field_22957 ANVIL + f [Lod; aT field_22958 STEMS + f Lod; aU field_22959 ATTACHED_STEM + f Lod; aV field_22960 CROP + f Lod; aW field_22961 FARMLAND + f Lod; aX field_22962 FIRE_FLOOR + f Lod; aY field_22963 FIRE_SIDE + f Lod; aZ field_22964 FIRE_SIDE_ALT + f Lod; aa field_22908 PARTICLE_ONLY + f Lod; ab field_22909 SLAB_BOTTOM + f Lod; ac field_22910 SLAB_TOP + f Lod; ad field_22911 LEAVES + f Lod; ae field_22912 STAIRS_STRAIGHT + f Lod; af field_22913 STAIRS_INNER + f Lod; ag field_22914 STAIRS_OUTER + f Lod; ah field_22915 TRAPDOOR_TOP + f Lod; ai field_22916 TRAPDOOR_BOTTOM + f Lod; aj field_22917 TRAPDOOR_OPEN + f Lod; ak field_22918 ORIENTABLE_TRAPDOOR_TOP + f Lod; al field_22919 ORIENTABLE_TRAPDOOR_BOTTOM + f Lod; am field_22920 ORIENTABLE_TRAPDOOR_OPEN + f Lod; an field_28080 POINTED_DRIPSTONE + f Lod; ao field_22921 CROSS + f Lod; ap field_22922 TINTED_CROSS + f Lod; aq field_22923 FLOWER_POT_CROSS + f Lod; ar field_22924 TINTED_FLOWER_POT_CROSS + f Lod; as field_22925 RAIL_FLAT + f Lod; at field_22926 RAIL_CURVED + f Lod; au field_22927 RAIL_RAISED_NE + f Lod; av field_22928 RAIL_RAISED_SW + f Lod; aw field_22929 CARPET + f Lod; ax field_42947 FLOWERBED_1 + f Lod; ay field_42948 FLOWERBED_2 + f Lod; az field_42949 FLOWERBED_3 + f Lod; bA field_22940 FLAT_HANDHELD_ROD_ITEM + f Lod; bB field_42232 TWO_LAYERED_ITEM + f Lod; bC field_42233 THREE_LAYERED_ITEM + f Lod; bD field_22941 SHULKER_BOX_INVENTORY + f Lod; bE field_22943 BED_INVENTORY + f Lod; bF field_22944 BANNER_INVENTORY + f Lod; bG field_22945 SKULL_INVENTORY + f Lod; bH field_27785 CANDLE + f Lod; bI field_27786 TWO_CANDLES + f Lod; bJ field_27787 THREE_CANDLES + f Lod; bK field_27788 FOUR_CANDLES + f Lod; bL field_27789 CANDLE_CAKE + f Lod; b field_23400 CUBE_DIRECTIONAL + f Lod; bM field_38469 SCULK_SHRIEKER + f Lod; bN field_48980 VAULT + f Lod; bO field_49915 FLAT_HANDHELD_MACE_ITEM + f Lod; ba field_22965 FIRE_UP + f Lod; bb field_22966 FIRE_UP_ALT + f Lod; bc field_23957 CAMPFIRE + f Lod; bd field_22967 LANTERN + f Lod; be field_22968 HANGING_LANTERN + f Lod; bf field_22969 TORCH + f Lod; bg field_22970 WALL_TORCH + f Lod; bh field_22971 PISTON + f Lod; bi field_22930 PISTON_HEAD + f Lod; bj field_22931 PISTON_HEAD_SHORT + f Lod; bk field_22932 SEAGRASS + f Lod; bl field_22933 TURTLE_EGG + f Lod; bm field_22934 TWO_TURTLE_EGGS + f Lod; bn field_22935 THREE_TURTLE_EGGS + f Lod; bo field_22936 FOUR_TURTLE_EGGS + f Lod; bp field_22937 SINGLE_FACE + f Lod; bq field_28014 CAULDRON_LEVEL1 + f Lod; br field_28015 CAULDRON_LEVEL2 + f Lod; bs field_27784 CAULDRON_FULL + f Lod; bt field_28804 AZALEA + f Lod; bu field_33965 POTTED_AZALEA + f Lod; bv field_43408 POTTED_FLOWERING_AZALEA + f Lod; bw field_43384 SNIFFER_EGG + f Lod; bx field_22938 FLAT_ITEM + f Lod; by field_44581 MUSIC_DISC + f Lod; bz field_22939 FLAT_HANDHELD_ITEM + f Lod; c field_22972 CUBE_ALL + f Lod; d field_47500 CUBE_ALL_INNER_FACES + f Lod; e field_22973 CUBE_MIRRORED_ALL + f Lod; f field_38015 CUBE_NORTH_WEST_MIRRORED_ALL + f Lod; g field_41276 CUBE_COLUMN_UV_LOCKED_X + f Lod; h field_41277 CUBE_COLUMN_UV_LOCKED_Y + f Lod; i field_41278 CUBE_COLUMN_UV_LOCKED_Z + f Lod; j field_22974 CUBE_COLUMN + f Lod; k field_22975 CUBE_COLUMN_HORIZONTAL + f Lod; l field_29081 CUBE_COLUMN_MIRRORED + f Lod; m field_22976 CUBE_TOP + f Lod; n field_22977 CUBE_BOTTOM_TOP + f Lod; o field_47501 CUBE_BOTTOM_TOP_INNER_FACES + f Lod; p field_22978 CUBE_ORIENTABLE + f Lod; q field_22979 CUBE_ORIENTABLE_TOP_BOTTOM + f Lod; r field_22980 CUBE_ORIENTABLE_VERTICAL + f Lod; s field_22981 BUTTON + f Lod; t field_22982 BUTTON_PRESSED + f Lod; u field_22983 BUTTON_INVENTORY + f Lod; v field_38016 DOOR_BOTTOM_LEFT + f Lod; w field_38017 DOOR_BOTTOM_LEFT_OPEN + f Lod; x field_38018 DOOR_BOTTOM_RIGHT + f Lod; y field_38019 DOOR_BOTTOM_RIGHT_OPEN + f Lod; z field_38020 DOOR_TOP_LEFT + m (I)[Lod; a method_25854 method_25854 + m (Ljava/lang/String;Ljava/lang/String;[Log;)Lod; a method_25855 create + m (Ljava/lang/String;[Log;)Lod; a method_25856 create + m ([Log;)Lod; a method_25857 create + m (I)Lod; b method_25858 method_25858 + m (Ljava/lang/String;[Log;)Lod; b method_25859 createItem + m ()V + m ()V +c of net/minecraft/class_4944 net/minecraft/data/models/model/TextureMapping + f Ljava/util/Map; a field_22997 slots + f Ljava/util/Set; b field_22998 forcedSlots + m (Ldfy;)Lof; A method_25907 orientableCube + m (Ldfy;)Lof; B method_25908 orientableCubeOnlyTop + m (Ldfy;)Lof; C method_25909 orientableCubeSameEnds + m (Ldfy;)Lof; D method_25910 top + m (Ldfy;)Lof; E method_27167 campfire + m (Ldfy;)Lof; F method_25911 layer0 + m (Ldfy;)Lakr; G method_25860 getBlockTexture + m ()Ljava/util/stream/Stream; a method_25861 getForced + m (Lakr;)Lof; a method_25869 defaultTexture + m (Lakr;Lakr;)Lof; a method_25870 column + m (Lakr;Lakr;Lakr;)Lof; a method_48745 layered + m (Lcul;)Lof; a method_25862 particleFromItem + m (Lcul;Ljava/lang/String;)Lakr; a method_25863 getItemTexture + m (Ldfy;)Lof; a method_25864 cube + m (Ldfy;Ldfy;)Lof; a method_25865 attachedStem + m (Ldfy;Ljava/lang/String;)Lakr; a method_25866 getBlockTexture + m (Ldfy;Ljava/lang/String;Ljava/lang/String;)Lof; a method_55307 trialSpawner + m (Ldfy;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lof; a method_56887 vault + m (Ldfy;Z)Lof; a method_32231 candleCake + m (Ljava/lang/String;)Lof; a method_50027 snifferEgg + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_46198 method_46198 + m (Log;)Lakr; a method_25867 get + m (Log;Lakr;)Lof; a method_25868 put + m (Log;Log;)Lof; a method_35908 copySlot + m (Z)Lof; a method_42753 sculkShrieker + m (Lakr;)Lof; b method_25875 cube + m (Lakr;Lakr;)Lof; b method_35910 door + m (Lcul;)Lof; b method_25871 layer0 + m (Ldfy;)Lof; b method_25872 defaultTexture + m (Ldfy;Ldfy;)Lof; b method_25873 pane + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; b method_46199 method_46199 + m (Log;Lakr;)Lof; b method_35909 putForced + m (Log;Log;)Lof; b method_25874 copyForced + m (Lakr;)Lof; c method_25880 cross + m (Lakr;Lakr;)Lof; c method_48529 layered + m (Lcul;)Lakr; c method_25876 getItemTexture + m (Ldfy;)Lof; c method_25877 cross + m (Ldfy;Ldfy;)Lof; c method_25878 craftingTable + m (Log;Lakr;)Lof; c method_25879 copyAndUpdate + m (Lakr;)Lof; d method_25884 plant + m (Ldfy;)Lof; d method_25881 plant + m (Ldfy;Ldfy;)Lof; d method_25882 fletchingTable + m (Log;Lakr;)Lof; d method_25883 singleSlot + m (Lakr;)Lof; e method_25886 rail + m (Ldfy;)Lof; e method_25885 rail + m (Lakr;)Lof; f method_35911 wool + m (Ldfy;)Lof; f method_25887 wool + m (Lakr;)Lof; g method_25889 crop + m (Ldfy;)Lof; g method_49379 flowerbed + m (Lakr;)Lof; h method_25891 particle + m (Ldfy;)Lof; h method_25888 stem + m (Lakr;)Lof; i method_25893 torch + m (Ldfy;)Lof; i method_25890 pattern + m (Lakr;)Lof; j method_32232 cauldron + m (Ldfy;)Lof; j method_25892 fan + m (Lakr;)Lof; k method_25895 layer0 + m (Ldfy;)Lof; k method_25894 column + m (Ldfy;)Lof; l method_25896 cubeTop + m (Ldfy;)Lof; m method_50028 pottedAzalea + m (Ldfy;)Lof; n method_25897 logColumn + m (Ldfy;)Lof; o method_46200 fence + m (Ldfy;)Lof; p method_46201 customParticle + m (Ldfy;)Lof; q method_25898 cubeBottomTop + m (Ldfy;)Lof; r method_25899 cubeBottomTopWithWall + m (Ldfy;)Lof; s method_27168 columnWithWall + m (Ldfy;)Lof; t method_25900 door + m (Ldfy;)Lof; u method_25901 particle + m (Ldfy;)Lof; v method_25902 fire0 + m (Ldfy;)Lof; w method_25903 fire1 + m (Ldfy;)Lof; x method_25904 lantern + m (Ldfy;)Lof; y method_25905 torch + m (Ldfy;)Lof; z method_25906 commandBlock + m ()V +c og net/minecraft/class_4945 net/minecraft/data/models/model/TextureSlot + f Log; A field_22999 CROP + f Log; B field_23000 DIRT + f Log; C field_23001 FIRE + f Log; D field_23002 LANTERN + f Log; E field_23003 PLATFORM + f Log; F field_23004 UNSTICKY + f Log; G field_23005 TORCH + f Log; H field_23006 LAYER0 + f Log; I field_42089 LAYER1 + f Log; J field_42234 LAYER2 + f Log; K field_23958 LIT_LOG + f Log; L field_27790 CANDLE + f Log; M field_27791 INSIDE + f Log; N field_27792 CONTENT + f Log; O field_38470 INNER_TOP + f Log; P field_42951 FLOWERBED + f Ljava/lang/String; Q field_23007 id + f Log; R field_23008 parent + f Log; a field_23010 ALL + f Log; b field_23011 TEXTURE + f Log; c field_23012 PARTICLE + f Log; d field_23013 END + f Log; e field_23014 BOTTOM + f Log; f field_23015 TOP + f Log; g field_23016 FRONT + f Log; h field_23017 BACK + f Log; i field_23018 SIDE + f Log; j field_23019 NORTH + f Log; k field_23020 SOUTH + f Log; l field_23021 EAST + f Log; m field_23022 WEST + f Log; n field_23023 UP + f Log; o field_23024 DOWN + f Log; p field_23025 CROSS + f Log; q field_23026 PLANT + f Log; r field_23027 WALL + f Log; s field_23028 RAIL + f Log; t field_23029 WOOL + f Log; u field_23030 PATTERN + f Log; v field_23031 PANE + f Log; w field_23032 EDGE + f Log; x field_23033 FAN + f Log; y field_23034 STEM + f Log; z field_23035 UPPER_STEM + m ()Ljava/lang/String; a method_25912 getId + m (Ljava/lang/String;)Log; a method_27043 create + m (Ljava/lang/String;Log;)Log; a method_27044 create + m ()Log; b method_25913 getParent + m (Ljava/lang/String;Log;)V + m ()V +c oh net/minecraft/class_4946 net/minecraft/data/models/model/TexturedModel + f Lof; A field_23058 mapping + f Lod; B field_23059 template + f Loh$a; a field_23036 CUBE + f Loh$a; b field_47502 CUBE_INNER_FACES + f Loh$a; c field_23037 CUBE_MIRRORED + f Loh$a; d field_23038 COLUMN + f Loh$a; e field_23039 COLUMN_HORIZONTAL + f Loh$a; f field_23040 CUBE_TOP_BOTTOM + f Loh$a; g field_23041 CUBE_TOP + f Loh$a; h field_23042 ORIENTABLE_ONLY_TOP + f Loh$a; i field_23043 ORIENTABLE + f Loh$a; j field_23044 CARPET + f Loh$a; k field_42952 FLOWERBED_1 + f Loh$a; l field_42953 FLOWERBED_2 + f Loh$a; m field_42954 FLOWERBED_3 + f Loh$a; n field_42955 FLOWERBED_4 + f Loh$a; o field_23045 GLAZED_TERRACOTTA + f Loh$a; p field_23046 CORAL_FAN + f Loh$a; q field_23047 PARTICLE_ONLY + f Loh$a; r field_23048 ANVIL + f Loh$a; s field_23049 LEAVES + f Loh$a; t field_23050 LANTERN + f Loh$a; u field_23051 HANGING_LANTERN + f Loh$a; v field_23054 SEAGRASS + f Loh$a; w field_23055 COLUMN_ALT + f Loh$a; x field_23056 COLUMN_HORIZONTAL_ALT + f Loh$a; y field_23057 TOP_BOTTOM_WITH_WALL + f Loh$a; z field_23959 COLUMN_WITH_WALL + m ()Lod; a method_25914 getTemplate + m (Lakr;)Loh; a method_25920 createAllSame + m (Ldfy;Ljava/lang/String;Ljava/util/function/BiConsumer;)Lakr; a method_25915 createWithSuffix + m (Ldfy;Ljava/util/function/BiConsumer;)Lakr; a method_25916 create + m (Ljava/util/function/Consumer;)Loh; a method_25917 updateTextures + m (Ljava/util/function/Function;Lod;)Loh$a; a method_25918 createDefault + m (Ljava/util/function/Function;Lod;Ldfy;)Loh; a method_25919 method_25919 + m ()Lof; b method_25921 getMapping + m (Lof;Lod;)V + m ()V +c oh$a net/minecraft/class_4946$class_4947 net/minecraft/data/models/model/TexturedModel$Provider + m (Ljava/util/function/Consumer;Ldfy;)Loh; a method_35913 method_35913 + m (Ldfy;Ljava/util/function/BiConsumer;)Lakr; create method_25923 create + m (Ldfy;Ljava/lang/String;Ljava/util/function/BiConsumer;)Lakr; createWithSuffix method_25922 createWithSuffix + m (Ljava/util/function/Consumer;)Loh$a; updateTexture method_35912 updateTexture +c oi net/minecraft/class_6293 net/minecraft/data/models/model/package-info +c oj net/minecraft/class_6294 net/minecraft/data/models/package-info +c ok net/minecraft/class_6295 net/minecraft/data/package-info +c ol net/minecraft/class_5797 net/minecraft/data/recipes/RecipeBuilder + f Lakr; a field_39377 ROOT_RECIPE_ADVANCEMENT + m ()Lcul; a method_36441 getResult + m (Ldcv;)Lakr; a method_36442 getDefaultRecipeId + m (Ljava/lang/String;)Lol; a method_33529 group + m (Ljava/lang/String;Lao;)Lol; a method_33530 unlockedBy + m (Lom;)Lcyo; a method_55308 determineBookCategory + m (Lon;)V a method_10431 save + m (Lon;Lakr;)V a method_17972 save + m (Lon;Ljava/lang/String;)V a method_36443 save + m ()V +c ol$1 net/minecraft/class_5797$1 net/minecraft/data/recipes/RecipeBuilder$1 + f [I a field_47503 $SwitchMap$net$minecraft$data$recipes$RecipeCategory + m ()V +c om net/minecraft/class_7800 net/minecraft/data/recipes/RecipeCategory + f Lom; a field_40634 BUILDING_BLOCKS + f Lom; b field_40635 DECORATIONS + f Lom; c field_40636 REDSTONE + f Lom; d field_40637 TRANSPORTATION + f Lom; e field_40638 TOOLS + f Lom; f field_40639 COMBAT + f Lom; g field_40640 FOOD + f Lom; h field_40641 BREWING + f Lom; i field_40642 MISC + f Ljava/lang/String; j field_40643 recipeFolderName + f [Lom; k field_40644 $VALUES + m ()Ljava/lang/String; a method_46203 getFolderName + m ()[Lom; b method_46204 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c on net/minecraft/class_8790 net/minecraft/data/recipes/RecipeOutput + m ()Laf$a; a method_53818 advancement + m (Lakr;Lcyz;Lag;)V a method_53819 accept +c oo net/minecraft/class_2446 net/minecraft/data/recipes/RecipeProvider + f Lmc$a; d field_39378 recipePathProvider + f Lmc$a; e field_39379 advancementPathProvider + f Ljava/util/concurrent/CompletableFuture; f field_48981 registries + f Ljava/util/Map; g field_28555 SHAPE_BUILDERS + m (I)[Lcs; a method_53497 method_53497 + m (Lawu;)Lao; a method_10420 has + m (Lcpl;Llx;Lon;Llx$b;Ldfy;)V a method_33534 method_33534 + m (Lcpl;Lon;Ldfy;Ldfy;)V a method_34853 method_34853 + m (Lcul;Lcul;)Z a method_52186 method_52186 + m (Ldcv;)Lao; a method_10426 has + m (Ldcv;Lcyw;)Lol; a method_33544 doorBuilder + m (Ldcv;Ldcv;)Ljava/lang/String; a method_33714 getConversionRecipeName + m (Ldfy;)Lao; a method_10422 insideOf + m (Ldh$d;Ldcv;)Lao; a method_35914 has + m (Llx;Llx$b;)Ldfy; a method_33533 getBaseBlock + m (Lly;Ljo$a;)Ljava/util/concurrent/CompletableFuture; a method_56888 run + m (Lly;Ljo$a;Lag;)Ljava/util/concurrent/CompletableFuture; a method_46206 buildAdvancement + m (Lol;Llx$b;Ljava/lang/String;)V a method_33536 method_33536 + m (Lom;Ldcv;Lcyw;)Lol; a method_32804 slabBuilder + m (Lon;)V a method_10419 buildRecipes + m (Lon;Lcpl;)V a method_46207 generateForEnabledBlockFamilies + m (Lon;Lcpl;Llx;)V a method_46210 method_46210 + m (Lon;Lcul;Lakr;)V a method_48530 trimSmithing + m (Lon;Lcul;Lom;Lcul;)V a method_29728 netheriteSmithing + m (Lon;Lcze;Lcyh$a;Ljava/util/List;Lom;Ldcv;FILjava/lang/String;Ljava/lang/String;)V a method_36232 oreCooking + m (Lon;Ldcv;Lawu;)V a method_48532 copySmithingTemplate + m (Lon;Ldcv;Lawu;I)V a method_24475 planksFromLog + m (Lon;Ldcv;Lcyw;)V a method_60922 copySmithingTemplate + m (Lon;Ldcv;Ldcv;)V a method_24476 woodFromLogs + m (Lon;Ldcv;Ldcv;Ljava/lang/String;)V a method_36444 oneToOneConversionRecipe + m (Lon;Ldcv;Ldcv;Ljava/lang/String;I)V a method_36445 oneToOneConversionRecipe + m (Lon;Ldfy;Ldfy;)V a method_54829 grate + m (Lon;Ljava/lang/String;Lcze;Lcyh$a;I)V a method_17585 cookRecipes + m (Lon;Ljava/lang/String;Lcze;Lcyh$a;ILdcv;Ldcv;F)V a method_36448 simpleCookingRecipe + m (Lon;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V a method_51890 colorBlockWithDye + m (Lon;Ljava/util/List;Lom;Ldcv;FILjava/lang/String;)V a method_36233 oreSmelting + m (Lon;Llx;Lcpl;)V a method_33535 generateRecipes + m (Lon;Lom;Ldcv;Ldcv;)V a method_46209 twoByTwoPacker + m (Lon;Lom;Ldcv;Ldcv;I)V a method_33715 stonecutterResultFromBase + m (Lon;Lom;Ldcv;Ldcv;Ljava/lang/String;)V a method_47521 threeByThreePacker + m (Lon;Lom;Ldcv;Lom;Ldcv;)V a method_36325 nineBlockStorageRecipes + m (Lon;Lom;Ldcv;Lom;Ldcv;Ljava/lang/String;Ljava/lang/String;)V a method_36446 nineBlockStorageRecipesWithCustomPacking + m (Lon;Lom;Ldcv;Lom;Ldcv;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V a method_36447 nineBlockStorageRecipes + m ([Lcs$a;)Lao; a method_53499 inventoryTrigger + m ([Lcs;)Lao; a method_10423 inventoryTrigger + m (I)[Ljava/util/concurrent/CompletableFuture; b method_46579 method_46579 + m (Ldcv;)Ljava/lang/String; b method_32807 getHasName + m (Ldcv;Lcyw;)Lol; b method_32808 stairBuilder + m (Ldcv;Ldcv;)Lol; b method_36546 method_36546 + m (Lly;Ljo$a;)Ljava/util/concurrent/CompletionStage; b method_56889 method_56889 + m (Lom;Ldcv;Lcyw;)Lop; b method_32805 chiseledBuilder + m (Lon;Lcpl;)V b method_34854 waxRecipes + m (Lon;Ldcv;Lawu;I)V b method_24477 planksFromLogs + m (Lon;Ldcv;Ldcv;)V b method_24478 woodenBoat + m (Lon;Ldfy;Ldfy;)V b method_54830 copperBulb + m (Lon;Ljava/util/List;Lom;Ldcv;FILjava/lang/String;)V b method_36234 oreBlasting + m (Lon;Lom;Ldcv;Ldcv;)V b method_47522 threeByThreePacker + m (Lon;Lom;Ldcv;Lom;Ldcv;Ljava/lang/String;Ljava/lang/String;)V b method_36449 nineBlockStorageRecipesRecipesWithCustomUnpacking + m (Ldcv;)Ljava/lang/String; c method_33716 getItemName + m (Ldcv;Lcyw;)Lol; c method_33553 trapdoorBuilder + m (Ldcv;Ldcv;)Lol; c method_33556 method_33556 + m (Lom;Ldcv;Lcyw;)Lol; c method_32806 pressurePlateBuilder + m (Lon;Ldcv;Ldcv;)V c method_42754 chestBoat + m (Lon;Lom;Ldcv;Ldcv;)V c method_32814 slab + m (Ldcv;)Ljava/lang/String; d method_36450 getSimpleRecipeName + m (Ldcv;Lcyw;)Lol; d method_33542 buttonBuilder + m (Ldcv;Ldcv;)Lol; d method_33532 method_33532 + m (Lom;Ldcv;Lcyw;)Lol; d method_33531 wallBuilder + m (Lon;Ldcv;Ldcv;)V d method_32813 pressurePlate + m (Lon;Lom;Ldcv;Ldcv;)V d method_32809 wall + m (Ldcv;)Ljava/lang/String; e method_36451 getSmeltingRecipeName + m (Ldcv;Lcyw;)Lol; e method_33546 fenceBuilder + m (Ldcv;Ldcv;)Lol; e method_33538 method_33538 + m (Lom;Ldcv;Lcyw;)Lol; e method_33537 polishedBuilder + m (Lon;Ldcv;Ldcv;)V e method_46208 hangingSign + m (Lon;Lom;Ldcv;Ldcv;)V e method_32810 polished + m (Ldcv;)Ljava/lang/String; f method_36452 getBlastingRecipeName + m (Ldcv;Lcyw;)Lol; f method_33548 fenceGateBuilder + m (Ldcv;Ldcv;)Lol; f method_33541 method_33541 + m (Lom;Ldcv;Lcyw;)Lop; f method_36547 cutBuilder + m (Lon;Ldcv;Ldcv;)V f method_24885 carpet + m (Lon;Lom;Ldcv;Ldcv;)V f method_32811 cut + m (Ldcv;)Ljava/lang/String; g method_33540 method_33540 + m (Ldcv;Lcyw;)Lol; g method_33555 signBuilder + m (Ldcv;Ldcv;)Lol; g method_33543 method_33543 + m (Lon;Ldcv;Ldcv;)V g method_24887 bedFromPlanksAndWool + m (Lon;Lom;Ldcv;Ldcv;)V g method_32812 chiseled + m (Ldcv;Ldcv;)Lol; h method_33545 method_33545 + m (Lon;Ldcv;Ldcv;)V h method_24889 banner + m (Lon;Lom;Ldcv;Ldcv;)V h method_46212 mosaicBuilder + m (Ldcv;Ldcv;)Lol; i method_33547 method_33547 + m (Lon;Ldcv;Ldcv;)V i method_24890 stainedGlassFromGlassAndDye + m (Lon;Lom;Ldcv;Ldcv;)V i method_33717 stonecutterResultFromBase + m (Ldcv;Ldcv;)Lol; j method_46213 method_46213 + m (Lon;Ldcv;Ldcv;)V j method_24891 stainedGlassPaneFromStainedGlass + m (Ldcv;Ldcv;)Lol; k method_33549 method_33549 + m (Lon;Ldcv;Ldcv;)V k method_24892 stainedGlassPaneFromGlassPaneAndDye + m (Ldcv;Ldcv;)Lol; l method_33551 method_33551 + m (Lon;Ldcv;Ldcv;)V l method_24893 coloredTerracottaFromTerracottaAndDye + m (Ldcv;Ldcv;)Lol; m method_33550 method_33550 + m (Lon;Ldcv;Ldcv;)V m method_24894 concretePowder + m (Ldcv;Ldcv;)Lol; n method_46214 method_46214 + m (Lon;Ldcv;Ldcv;)V n method_32233 candle + m (Ldcv;Ldcv;)Lol; o method_33552 method_33552 + m (Lon;Ldcv;Ldcv;)V o method_48533 copySmithingTemplate + m (Ldcv;Ldcv;)Lol; p method_33554 method_33554 + m (Lon;Ldcv;Ldcv;)V p method_34662 smeltingResultFromBase + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V + m ()V +c oo$1 net/minecraft/class_2446$1 net/minecraft/data/recipes/RecipeProvider$1 + f Ljava/util/Set; a field_46145 val$allRecipes + f Ljava/util/List; b field_46146 val$tasks + f Lly; c field_46147 val$cache + f Ljo$a; d field_48982 val$registries + f Loo; e field_46148 field_46148 + m (Loo;Ljava/util/Set;Ljava/util/List;Lly;Ljo$a;)V +c op net/minecraft/class_2447 net/minecraft/data/recipes/ShapedRecipeBuilder + f Lom; b field_40645 category + f Lcul; c field_11380 result + f I d field_11378 count + f Ljava/util/List; e field_11377 rows + f Ljava/util/Map; f field_11376 key + f Ljava/util/Map; g field_46149 criteria + f Ljava/lang/String; h field_11381 group + f Z i field_42956 showNotification + m (Lakr;)Lczi; a method_10432 ensureValid + m (Ljava/lang/Character;Lawu;)Lop; a method_10433 define + m (Ljava/lang/Character;Lcyw;)Lop; a method_10428 define + m (Ljava/lang/Character;Ldcv;)Lop; a method_10434 define + m (Lom;Ldcv;)Lop; a method_10437 shaped + m (Lom;Ldcv;I)Lop; a method_10436 shaped + m (Z)Lop; a method_49380 showNotification + m (Ljava/lang/String;)Lop; b method_10439 pattern + m (Ljava/lang/String;Lao;)Lop; b method_10429 unlockedBy + m (Ljava/lang/String;)Lop; c method_10435 group + m (Lom;Ldcv;I)V +c oq net/minecraft/class_2450 net/minecraft/data/recipes/ShapelessRecipeBuilder + f Lom; b field_40646 category + f Lcul; c field_11396 result + f I d field_11395 count + f Ljv; e field_11394 ingredients + f Ljava/util/Map; f field_11393 criteria + f Ljava/lang/String; g field_11398 group + m (Lakr;)V a method_10445 ensureValid + m (Lawu;)Loq; a method_10446 requires + m (Lcyw;)Loq; a method_10451 requires + m (Lcyw;I)Loq; a method_10453 requires + m (Ldcv;I)Loq; a method_10449 requires + m (Lom;Ldcv;)Loq; a method_10447 shapeless + m (Lom;Ldcv;I)Loq; a method_10448 shapeless + m (Ldcv;)Loq; b method_10454 requires + m (Ljava/lang/String;)Loq; b method_10452 group + m (Ljava/lang/String;Lao;)Loq; b method_10442 unlockedBy + m (Lom;Ldcv;I)V +c or net/minecraft/class_2454 net/minecraft/data/recipes/SimpleCookingRecipeBuilder + f Lom; b field_40647 category + f Lcyn; c field_40648 bookCategory + f Lcul; d field_11417 result + f Lcyw; e field_11418 ingredient + f F f field_11414 experience + f I g field_11415 cookingTime + f Ljava/util/Map; h field_46150 criteria + f Ljava/lang/String; i field_11419 group + f Lcyh$a; j field_47504 factory + m (Lakr;)V a method_10471 ensureValid + m (Lcyw;Lom;Ldcv;FI)Lor; a method_35916 campfireCooking + m (Lcyw;Lom;Ldcv;FILcze;Lcyh$a;)Lor; a method_17801 generic + m (Lcze;Ldcv;)Lcyn; a method_46215 determineRecipeCategory + m (Lcyw;Lom;Ldcv;FI)Lor; b method_10473 blasting + m (Ldcv;)Lcyn; b method_46216 determineSmeltingRecipeCategory + m (Ljava/lang/String;)Lor; b method_35917 group + m (Ljava/lang/String;Lao;)Lor; b method_10469 unlockedBy + m (Lcyw;Lom;Ldcv;FI)Lor; c method_17802 smelting + m (Ldcv;)Lcyn; c method_46217 determineBlastingRecipeCategory + m (Lcyw;Lom;Ldcv;FI)Lor; d method_35918 smoking + m (Lom;Lcyn;Ldcv;Lcyw;FILcyh$a;)V +c os net/minecraft/class_3981 net/minecraft/data/recipes/SingleItemRecipeBuilder + f Lom; b field_40650 category + f Lcul; c field_17690 result + f Lcyw; d field_17691 ingredient + f I e field_17692 count + f Ljava/util/Map; f field_46151 criteria + f Ljava/lang/String; g field_17694 group + f Lczo$a; h field_47505 factory + m (Lakr;)V a method_17973 ensureValid + m (Lcyw;Lom;Ldcv;)Los; a method_17968 stonecutting + m (Lcyw;Lom;Ldcv;I)Los; a method_17969 stonecutting + m (Ljava/lang/String;)Los; b method_35919 group + m (Ljava/lang/String;Lao;)Los; b method_17970 unlockedBy + m (Lom;Lczo$a;Lcyw;Ldcv;I)V +c ot net/minecraft/class_8074 net/minecraft/data/recipes/SmithingTransformRecipeBuilder + f Lcyw; a field_42090 template + f Lcyw; b field_42091 base + f Lcyw; c field_42092 addition + f Lom; d field_42093 category + f Lcul; e field_42094 result + f Ljava/util/Map; f field_46152 criteria + m (Lakr;)V a method_48534 ensureValid + m (Lcyw;Lcyw;Lcyw;Lom;Lcul;)Lot; a method_48535 smithing + m (Ljava/lang/String;Lao;)Lot; a method_48536 unlocks + m (Lon;Lakr;)V a method_48537 save + m (Lon;Ljava/lang/String;)V a method_48538 save + m (Lcyw;Lcyw;Lcyw;Lom;Lcul;)V +c ou net/minecraft/class_8076 net/minecraft/data/recipes/SmithingTrimRecipeBuilder + f Lom; a field_42097 category + f Lcyw; b field_42098 template + f Lcyw; c field_42099 base + f Lcyw; d field_42100 addition + f Ljava/util/Map; e field_46153 criteria + m (Lakr;)V a method_48539 ensureValid + m (Lcyw;Lcyw;Lcyw;Lom;)Lou; a method_48540 smithingTrim + m (Ljava/lang/String;Lao;)Lou; a method_48541 unlocks + m (Lon;Lakr;)V a method_48542 save + m (Lom;Lcyw;Lcyw;Lcyw;)V +c ov net/minecraft/class_2456 net/minecraft/data/recipes/SpecialRecipeBuilder + f Ljava/util/function/Function; a field_47506 factory + m (Ljava/util/function/Function;)Lov; a method_10476 special + m (Lon;Lakr;)V a method_10475 save + m (Lon;Ljava/lang/String;)V a method_53820 save + m (Ljava/util/function/Function;)V +c ow net/minecraft/class_6296 net/minecraft/data/recipes/package-info +c ox net/minecraft/class_7801 net/minecraft/data/recipes/packs/BundleRecipeProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c oy net/minecraft/class_7803 net/minecraft/data/recipes/packs/VanillaRecipeProvider + f Lcom/google/common/collect/ImmutableList; d field_40652 COAL_SMELTABLES + f Lcom/google/common/collect/ImmutableList; e field_40653 IRON_SMELTABLES + f Lcom/google/common/collect/ImmutableList; f field_40654 COPPER_SMELTABLES + f Lcom/google/common/collect/ImmutableList; g field_40655 GOLD_SMELTABLES + f Lcom/google/common/collect/ImmutableList; h field_40656 DIAMOND_SMELTABLES + f Lcom/google/common/collect/ImmutableList; i field_40657 LAPIS_SMELTABLES + f Lcom/google/common/collect/ImmutableList; j field_40658 REDSTONE_SMELTABLES + f Lcom/google/common/collect/ImmutableList; k field_40659 EMERALD_SMELTABLES + m (Lcul;)Loy$a; a method_51693 method_51693 + m (Lon;Loy$a;)V a method_51695 method_51695 + m ()Ljava/util/stream/Stream; b method_51694 smithingTrims + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V + m ()V +c oy$a net/minecraft/class_7803$class_8905 net/minecraft/data/recipes/packs/VanillaRecipeProvider$TrimTemplate + f Lcul; a comp_2012 template + f Lakr; b comp_2013 id + m ()Lcul; a comp_2012 template + m ()Lakr; b comp_2013 id + m (Lcul;Lakr;)V +c oz net/minecraft/class_7804 net/minecraft/data/recipes/packs/package-info +c pa net/minecraft/class_5475 net/minecraft/data/registries/RegistriesDatapackGenerator + f Lmc; d field_40665 output + f Ljava/util/concurrent/CompletableFuture; e field_40952 registries + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46591 method_46591 + m (Lakq;Lly;Lcom/mojang/serialization/DynamicOps;Lakm$c;Ljo$b;)Ljava/util/concurrent/CompletableFuture; a method_46813 method_46813 + m (Ljava/nio/file/Path;Lcom/mojang/serialization/DataResult$Error;)Ljava/util/concurrent/CompletableFuture; a method_61090 method_61090 + m (Ljava/nio/file/Path;Lly;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Encoder;Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture; a method_39680 dumpValue + m (Lly;Ljava/nio/file/Path;Lcom/google/gson/JsonElement;)Ljava/util/concurrent/CompletableFuture; a method_61091 method_61091 + m (Lly;Ljo$a;)Ljava/util/concurrent/CompletionStage; a method_46814 method_46814 + m (Lly;Ljo$a;Lcom/mojang/serialization/DynamicOps;Lakm$c;)Ljava/util/Optional; a method_39678 dumpRegistryCap + m (Lmc$a;Lly;Lcom/mojang/serialization/DynamicOps;Lakm$c;Ljm$c;)Ljava/util/concurrent/CompletableFuture; a method_46592 method_46592 + m (I)[Ljava/util/concurrent/CompletableFuture; b method_46815 method_46815 + m (Lly;Ljo$a;Lcom/mojang/serialization/DynamicOps;Lakm$c;)Ljava/util/stream/Stream; b method_46816 method_46816 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pb net/minecraft/class_8931 net/minecraft/data/registries/RegistryPatchGenerator + m (Ljava/util/concurrent/CompletableFuture;Lkc;)Ljava/util/concurrent/CompletableFuture; a method_54840 createLookup + m (Lje$a;Lakm$c;)V a method_55310 method_55310 + m (Ljo$a;)Ljo$b; a method_54838 method_54838 + m (Lkc;Ljo$a;)Lkc$g; a method_54839 method_54839 + m (Ljo$a;)Ljo$b; b method_54841 method_54841 + m ()V +c pc net/minecraft/class_9757 net/minecraft/data/registries/TradeRebalanceRegistries + f Lkc; a field_51847 BUILDER + m (Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletableFuture; a method_60420 createLookup + m ()V + m ()V +c pd net/minecraft/class_7887 net/minecraft/data/registries/VanillaRegistries + f Lkc; a field_40953 BUILDER + m ()Ljo$a; a method_46817 createLookup + m (Leiv;)Z a method_46818 validatePlacedFeature + m (Ljm$c;Leiv;)V a method_46819 method_46819 + m (Ljn;Lakr;Lakq;)V a method_46820 method_46820 + m (Ljn;Lakr;Ljm$c;Ljm;)V a method_46821 method_46821 + m (Ljn;Ljm$c;)V a method_46822 method_46822 + m (Ljn;Ljo;)V a method_49382 validateThatAllBiomeFeaturesHaveBiomeFilter + m (Ljo$a;)V a method_46823 validateThatAllBiomeFeaturesHaveBiomeFilter + m ()V + m ()V +c pe net/minecraft/class_7888 net/minecraft/data/registries/package-info +c pf net/minecraft/class_2461 net/minecraft/data/structures/NbtToSnbt + f Lorg/slf4j/Logger; d field_11450 LOGGER + f Ljava/lang/Iterable; e field_40660 inputFolders + f Lmc; f field_40661 output + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46580 method_46580 + m (Ljava/nio/file/Path;)Z a method_10495 method_10495 + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/lang/String; a method_10496 getName + m (Ljava/nio/file/Path;Lly;Ljava/nio/file/Path;)Ljava/util/concurrent/CompletableFuture; a method_46582 method_46582 + m (Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletionStage; a method_46583 method_46583 + m (Lly;Ljava/nio/file/Path;Ljava/lang/String;)V a method_32234 writeSnbt + m (Lly;Ljava/nio/file/Path;Ljava/lang/String;Ljava/nio/file/Path;)Ljava/nio/file/Path; a method_10493 convertStructure + m (Lly;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/util/concurrent/CompletableFuture; a method_46581 method_46581 + m (I)[Ljava/util/concurrent/CompletableFuture; b method_46584 method_46584 + m (Lly;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;)V b method_10494 method_10494 + m (Lmc;Ljava/util/Collection;)V + m ()V +c pg net/minecraft/class_8796 net/minecraft/data/structures/SnbtDatafixer + m (Ljava/lang/String;)V a method_53854 updateInDirectory + m (Ljava/nio/file/Path;)V a method_53855 method_53855 + m ([Ljava/lang/String;)V a method_53856 main + m (Ljava/nio/file/Path;)Z b method_53857 method_53857 + m ()V +c ph net/minecraft/class_2463 net/minecraft/data/structures/SnbtToNbt + f Lorg/slf4j/Logger; d field_11454 LOGGER + f Lmc; e field_40662 output + f Ljava/lang/Iterable; f field_40663 inputFolders + f Ljava/util/List; g field_20309 filters + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46585 method_46585 + m (Ljava/lang/String;Lub;)Lub; a method_21673 applyFilters + m (Ljava/nio/file/Path;)Z a method_10499 method_10499 + m (Ljava/nio/file/Path;Ljava/lang/String;)Lph$c; a method_22144 readStructure + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/lang/String; a method_10500 getName + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Lly;Ljava/nio/file/Path;)V a method_46588 method_46588 + m (Ljava/nio/file/Path;Lly;Ljava/nio/file/Path;)Ljava/util/concurrent/CompletableFuture; a method_46586 method_46586 + m (Ljava/nio/file/Path;Lly;Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/util/concurrent/CompletableFuture; a method_46587 method_46587 + m (Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletionStage; a method_46589 method_46589 + m (Lly;Lph$c;Ljava/nio/file/Path;)V a method_10497 storeStructureIfChanged + m (Lph$a;)Lph; a method_21672 addFilter + m (Lmc;Ljava/lang/Iterable;)V + m ()V +c ph$a net/minecraft/class_2463$class_4460 net/minecraft/data/structures/SnbtToNbt$Filter + m (Ljava/lang/String;Lub;)Lub; apply method_21674 apply +c ph$b net/minecraft/class_2463$class_5621 net/minecraft/data/structures/SnbtToNbt$StructureConversionException + m (Ljava/nio/file/Path;Ljava/lang/Throwable;)V +c ph$c net/minecraft/class_2463$class_4511 net/minecraft/data/structures/SnbtToNbt$TaskResult + f Ljava/lang/String; a comp_780 name + f [B b comp_781 payload + f Lcom/google/common/hash/HashCode; c comp_783 hash + m ()Ljava/lang/String; a comp_780 name + m ()[B b comp_781 payload + m ()Lcom/google/common/hash/HashCode; c comp_783 hash + m (Ljava/lang/String;[BLcom/google/common/hash/HashCode;)V +c pi net/minecraft/class_3843 net/minecraft/data/structures/StructureUpdater + f Lorg/slf4j/Logger; a field_24617 LOGGER + f Ljava/lang/String; b field_52179 PREFIX + m (Ljava/lang/String;Lub;)Lub; a method_32235 update + m ()V + m ()V +c pj net/minecraft/class_6297 net/minecraft/data/structures/package-info +c pk net/minecraft/class_7458 net/minecraft/data/tags/BannerPatternTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pl net/minecraft/class_6957 net/minecraft/data/tags/BiomeTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pm net/minecraft/class_7393 net/minecraft/data/tags/CatVariantTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pn net/minecraft/class_8142 net/minecraft/data/tags/DamageTypeTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c po net/minecraft/class_9674 net/minecraft/data/tags/EnchantmentTagsProvider + m (Ljava/util/Set;Ljm$c;)Z a method_59779 method_59779 + m (Ljo$a;[Lakq;)V a method_59781 tooltipOrder + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pp net/minecraft/class_2467 net/minecraft/data/tags/EntityTypeTagsProvider + m (Lbsx;)Lakq; a method_46824 method_46824 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pq net/minecraft/class_7229 net/minecraft/data/tags/FlatLevelGeneratorPresetTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pr net/minecraft/class_2469 net/minecraft/data/tags/FluidTagsProvider + m (Lepd;)Lakq; a method_46825 method_46825 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c ps net/minecraft/class_5746 net/minecraft/data/tags/GameEventTagsProvider + f Ljava/util/List; d field_38363 VIBRATIONS_EXCEPT_FLAP + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V + m ()V +c pt net/minecraft/class_7459 net/minecraft/data/tags/InstrumentTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pu net/minecraft/class_7889 net/minecraft/data/tags/IntrinsicHolderTagsProvider + f Ljava/util/function/Function; d field_40954 keyExtractor + m (Lawu;)Lpu$a; a method_46827 tag + m (Lmc;Lakq;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V + m (Lmc;Lakq;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V +c pu$a net/minecraft/class_7889$class_7890 net/minecraft/data/tags/IntrinsicHolderTagsProvider$IntrinsicTagAppender + f Ljava/util/function/Function; a field_40955 keyExtractor + m (Lawu;)Lpu$a; a method_46828 addTag + m (Ljava/lang/Object;)Lpu$a; a method_46829 add + m ([Ljava/lang/Object;)Lpu$a; a method_46830 add + m (Lawr;Ljava/util/function/Function;)V +c pv net/minecraft/class_7805 net/minecraft/data/tags/ItemTagsProvider + f Ljava/util/concurrent/CompletableFuture; d field_40664 blockTags + f Ljava/util/Map; g field_43092 tagsToCopy + m (Lawu;Lawu;)V a method_46218 copy + m (Lcul;)Lakq; a method_46831 method_46831 + m (Ljo$a;Lpz$c;)Ljo$a; a method_49649 method_49649 + m (Lpz$c;Lawu;Lawu;)V a method_49650 method_49650 + m (Lcul;)Lakq; b method_49652 method_49652 + m (Lawu;)Ljava/lang/IllegalStateException; d method_49653 method_49653 + m (Lmc;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V + m (Lmc;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V +c pw net/minecraft/class_7416 net/minecraft/data/tags/PaintingVariantTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c px net/minecraft/class_7491 net/minecraft/data/tags/PoiTypeTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c py net/minecraft/class_7071 net/minecraft/data/tags/StructureTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c pz net/minecraft/class_2474 net/minecraft/data/tags/TagsProvider + f Ljava/util/concurrent/CompletableFuture; d field_43107 lookupProvider + f Lmc$a; e field_39380 pathProvider + f Lakq; f field_40957 registryKey + f Ljava/util/concurrent/CompletableFuture; g field_43108 contentsDone + f Ljava/util/concurrent/CompletableFuture; h field_43093 parentProvider + f Ljava/util/Map; i field_11481 builders + m (I)[Ljava/util/concurrent/CompletableFuture; a method_46590 method_46590 + m (Lakr;)Lawr; a method_27170 method_27170 + m (Lawu;)Ljava/util/Optional; a method_49656 method_49656 + m (Ljava/lang/Void;)Lpz$c; a method_49661 method_49661 + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Laws;)Z a method_49658 method_49658 + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lly;Lpz$a;Ljava/util/Map$Entry;)Ljava/util/concurrent/CompletableFuture; a method_27046 method_27046 + m (Ljo$a;)V a method_10514 addTags + m (Ljo$a;Lpz$c;)Lpz$a; a method_49657 method_49657 + m (Ljo$b;Lakr;)Z a method_46832 method_46832 + m (Lly;Lpz$a;)Ljava/util/concurrent/CompletionStage; a method_49659 method_49659 + m (Lpz$a;Lakr;)Z a method_49660 method_49660 + m ()Ljava/util/concurrent/CompletableFuture; b method_49651 createContentsProvider + m (Lawu;)Lpz$b; b method_10512 tag + m (Ljo$a;)Ljo$a; b method_49706 method_49706 + m ()Ljava/util/concurrent/CompletableFuture; c method_49662 contentsGetter + m (Lawu;)Lawr; c method_27169 getOrCreateRawBuilder + m (Ljo$a;)Ljo$a; c method_49707 method_49707 + m (Lmc;Lakq;Ljava/util/concurrent/CompletableFuture;)V + m (Lmc;Lakq;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V +c pz$a net/minecraft/class_2474$class_8210 net/minecraft/data/tags/TagsProvider$1CombinedData + f Ljo$a; a comp_1311 contents + f Lpz$c; b comp_1312 parent + m ()Ljo$a; a comp_1311 contents + m ()Lpz$c; b comp_1312 parent + m (Ljo$a;Lpz$c;)V +c pz$b net/minecraft/class_2474$class_5124 net/minecraft/data/tags/TagsProvider$TagAppender + f Lawr; a field_23960 builder + m (Lakq;)Lpz$b; a method_46835 add + m (Lakr;)Lpz$b; a method_35922 addOptional + m (Ljava/util/List;)Lpz$b; a method_55842 addAll + m ([Lakq;)Lpz$b; a method_40565 add + m (Lakr;)Lpz$b; b method_35923 addOptionalTag + m (Lawu;)Lpz$b; b method_26792 addTag + m (Lawr;)V +c pz$c net/minecraft/class_2474$class_8211 net/minecraft/data/tags/TagsProvider$TagLookup + m (Lawu;)Ljava/util/Optional; a method_49664 method_49664 +c qa net/minecraft/class_9758 net/minecraft/data/tags/TradeRebalanceEnchantmentTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c qb net/minecraft/class_8799 net/minecraft/data/tags/TradeRebalanceStructureTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c qc net/minecraft/class_2466 net/minecraft/data/tags/VanillaBlockTagsProvider + m (Ldfy;)Z a method_51274 method_51274 + m (Ldfy;)Lakq; b method_46837 method_46837 + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c qd net/minecraft/class_9676 net/minecraft/data/tags/VanillaEnchantmentTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c qe net/minecraft/class_2471 net/minecraft/data/tags/VanillaItemTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V +c qf net/minecraft/class_7230 net/minecraft/data/tags/WorldPresetTagsProvider + m (Lmc;Ljava/util/concurrent/CompletableFuture;)V +c qg net/minecraft/class_6298 net/minecraft/data/tags/package-info +c qh net/minecraft/class_7312 net/minecraft/data/worldgen/AncientCityStructurePieces + f Lakq; a field_38471 START + m (Lqq;)V a method_42755 bootstrap + m ()V + m ()V +c qi net/minecraft/class_7313 net/minecraft/data/worldgen/AncientCityStructurePools + m (Lqq;)V a method_42756 bootstrap + m ()V +c qj net/minecraft/class_5174 net/minecraft/data/worldgen/BastionBridgePools + m (Lqq;)V a method_27198 bootstrap + m ()V +c qk net/minecraft/class_5177 net/minecraft/data/worldgen/BastionHoglinStablePools + m (Lqq;)V a method_27199 bootstrap + m ()V +c ql net/minecraft/class_5178 net/minecraft/data/worldgen/BastionHousingUnitsPools + m (Lqq;)V a method_27200 bootstrap + m ()V +c qm net/minecraft/class_5179 net/minecraft/data/worldgen/BastionPieces + f Lakq; a field_25941 START + m (Lqq;)V a method_27201 bootstrap + m ()V + m ()V +c qn net/minecraft/class_5181 net/minecraft/data/worldgen/BastionSharedPools + m (Lqq;)V a method_27203 bootstrap + m ()V +c qo net/minecraft/class_5182 net/minecraft/data/worldgen/BastionTreasureRoomPools + m (Lqq;)V a method_27204 bootstrap + m ()V +c qp net/minecraft/class_3864 net/minecraft/data/worldgen/BiomeDefaultFeatures + m (Lddx$a;)V A method_34663 addLushCavesVegetationFeatures + m (Lddx$a;)V B method_34664 addLushCavesSpecialOres + m (Lddx$a;)V C method_16957 addMountainTrees + m (Lddx$a;)V D method_16958 addMountainForestTrees + m (Lddx$a;)V E method_16959 addJungleTrees + m (Lddx$a;)V F method_16960 addSparseJungleTrees + m (Lddx$a;)V G method_16961 addBadlandsTrees + m (Lddx$a;)V H method_16962 addSnowyTrees + m (Lddx$a;)V I method_16965 addJungleGrass + m (Lddx$a;)V J method_16966 addSavannaGrass + m (Lddx$a;)V K method_16967 addShatteredSavannaGrass + m (Lddx$a;)V L method_16968 addSavannaExtraGrass + m (Lddx$a;)V M method_16969 addBadlandGrass + m (Lddx$a;)V N method_16970 addForestFlowers + m (Lddx$a;)V O method_16971 addForestGrass + m (Lddx$a;)V P method_16972 addSwampVegetation + m (Lddx$a;)V Q method_43230 addMangroveSwampVegetation + m (Lddx$a;)V R method_16973 addMushroomFieldVegetation + m (Lddx$a;)V S method_16974 addPlainVegetation + m (Lddx$a;)V T method_16975 addDesertVegetation + m (Lddx$a;)V U method_16976 addGiantTaigaVegetation + m (Lddx$a;)V V method_16977 addDefaultFlowers + m (Lddx$a;)V W method_49390 addCherryGroveVegetation + m (Lddx$a;)V X method_38567 addMeadowVegetation + m (Lddx$a;)V Y method_16978 addWarmFlowers + m (Lddx$a;)V Z method_16979 addDefaultGrass + m (Lddx$a;)V a method_16983 addDefaultCarversAndLakes + m (Lddx$a;Z)V a method_17006 addDefaultOres + m (Ldei$a;)V a method_30580 farmAnimals + m (Ldei$a;I)V a method_60650 commonSpawns + m (Ldei$a;II)V a method_30678 warmOceanSpawns + m (Ldei$a;III)V a method_30679 oceanSpawns + m (Ldei$a;IIIZ)V a method_30578 monsters + m (Lddx$a;)V aa method_16980 addTaigaGrass + m (Lddx$a;)V ab method_16981 addPlainGrass + m (Lddx$a;)V ac method_16982 addDefaultMushrooms + m (Lddx$a;)V ad method_16984 addDefaultExtraVegetation + m (Lddx$a;)V ae method_16985 addBadlandExtraVegetation + m (Lddx$a;)V af method_39931 addJungleMelons + m (Lddx$a;)V ag method_39932 addSparseJungleMelons + m (Lddx$a;)V ah method_39933 addJungleVines + m (Lddx$a;)V ai method_16987 addDesertExtraVegetation + m (Lddx$a;)V aj method_16988 addSwampExtraVegetation + m (Lddx$a;)V ak method_16989 addDesertExtraDecoration + m (Lddx$a;)V al method_16990 addFossilDecoration + m (Lddx$a;)V am method_16991 addColdOceanExtraVegetation + m (Lddx$a;)V an method_16992 addDefaultSeagrass + m (Lddx$a;)V ao method_16995 addLukeWarmKelp + m (Lddx$a;)V ap method_16996 addDefaultSprings + m (Lddx$a;)V aq method_39420 addFrozenSprings + m (Lddx$a;)V ar method_16997 addIcebergs + m (Lddx$a;)V as method_16998 addBlueIce + m (Lddx$a;)V at method_16999 addSurfaceFreezing + m (Lddx$a;)V au method_24382 addNetherDefaultOres + m (Lddx$a;)V av method_28439 addAncientDebris + m (Lddx$a;)V aw method_32236 addDefaultCrystalFormations + m (Lddx$a;)V b method_17004 addDefaultMonsterRoom + m (Ldei$a;)V b method_30579 caveSpawns + m (Lddx$a;)V c method_17005 addDefaultUndergroundVariety + m (Ldei$a;)V c method_30581 commonSpawns + m (Lddx$a;)V d method_33131 addDripstone + m (Ldei$a;)V d method_30680 plainsSpawns + m (Lddx$a;)V e method_42042 addSculk + m (Ldei$a;)V e method_30582 snowySpawns + m (Lddx$a;)V f method_38568 addDefaultOres + m (Ldei$a;)V f method_30583 desertSpawns + m (Lddx$a;)V g method_17007 addExtraGold + m (Ldei$a;)V g method_38941 dripstoneCavesSpawns + m (Lddx$a;)V h method_17008 addExtraEmeralds + m (Ldei$a;)V h method_30585 mooshroomSpawns + m (Lddx$a;)V i method_17009 addInfestedStone + m (Ldei$a;)V i method_30586 baseJungleSpawns + m (Lddx$a;)V j method_17010 addDefaultSoftDisks + m (Ldei$a;)V j method_30587 endSpawns + m (Lddx$a;)V k method_17011 addSwampClayDisk + m (Lddx$a;)V l method_43231 addMangroveSwampDisks + m (Lddx$a;)V m method_17012 addMossyStoneBlock + m (Lddx$a;)V n method_17013 addFerns + m (Lddx$a;)V o method_17014 addRareBerryBushes + m (Lddx$a;)V p method_17015 addCommonBerryBushes + m (Lddx$a;)V q method_17016 addLightBambooVegetation + m (Lddx$a;)V r method_17017 addBambooVegetation + m (Lddx$a;)V s method_17018 addTaigaTrees + m (Lddx$a;)V t method_38745 addGroveTrees + m (Lddx$a;)V u method_17019 addWaterTrees + m (Lddx$a;)V v method_17020 addBirchTrees + m (Lddx$a;)V w method_17021 addOtherBirchTrees + m (Lddx$a;)V x method_17022 addTallBirchTrees + m (Lddx$a;)V y method_17023 addSavannaTrees + m (Lddx$a;)V z method_17024 addShatteredSavannaTrees + m ()V +c qq net/minecraft/class_7891 net/minecraft/data/worldgen/BootstrapContext + m (Lakq;)Ljn; a method_46799 lookup + m (Lakq;Ljava/lang/Object;)Ljm$c; a method_46838 register + m (Lakq;Ljava/lang/Object;Lcom/mojang/serialization/Lifecycle;)Ljm$c; a method_46800 register +c qr net/minecraft/class_5463 net/minecraft/data/worldgen/Carvers + f Lakq; a field_33119 CAVE + f Lakq; b field_34968 CAVE_EXTRA_UNDERGROUND + f Lakq; c field_33120 CANYON + f Lakq; d field_25947 NETHER_CAVE + m (Ljava/lang/String;)Lakq; a method_30588 createKey + m (Lqq;)V a method_46843 bootstrap + m ()V + m ()V +c qs net/minecraft/class_3868 net/minecraft/data/worldgen/DesertVillagePools + f Lakq; a field_25948 START + f Lakq; b field_40958 TERMINATORS_KEY + f Lakq; c field_40959 ZOMBIE_TERMINATORS_KEY + m (Lqq;)V a method_17037 bootstrap + m ()V + m ()V +c qt net/minecraft/class_7231 net/minecraft/data/worldgen/DimensionTypes + m (Lqq;)V a method_42043 bootstrap + m ()V +c qu net/minecraft/class_6736 net/minecraft/data/worldgen/NoiseData + f Leoh$a; a field_40960 DEFAULT_SHIFT + m (Lqq;)V a method_39216 bootstrap + m (Lqq;ILakq;Lakq;Lakq;Lakq;)V a method_39493 registerBiomeNoises + m (Lqq;Lakq;ID[D)V a method_39217 register + m ()V + m ()V +c qv net/minecraft/class_3791 net/minecraft/data/worldgen/PillagerOutpostPools + f Lakq; a field_26252 START + m (Lqq;)V a method_27235 bootstrap + m ()V + m ()V +c qw net/minecraft/class_3815 net/minecraft/data/worldgen/PlainVillagePools + f Lakq; a field_26253 START + f Lakq; b field_40961 TERMINATORS_KEY + m (Lqq;)V a method_16754 bootstrap + m ()V + m ()V +c qx net/minecraft/class_5468 net/minecraft/data/worldgen/Pools + f Lakq; a field_26254 EMPTY + m (Ljava/lang/String;)Lakq; a method_46844 createKey + m (Lqq;)V a method_30599 bootstrap + m (Lqq;Ljava/lang/String;Lelb;)V a method_30600 register + m (Ljava/lang/String;)Lakq; b method_60923 parseKey + m ()V + m ()V +c qy net/minecraft/class_5469 net/minecraft/data/worldgen/ProcessorLists + f Lakq; A field_26284 ROOF + f Lakq; B field_26256 HIGH_WALL + f Lakq; C field_26257 HIGH_RAMPART + f Lakq; D field_29537 FOSSIL_ROT + f Lakq; E field_29538 FOSSIL_COAL + f Lakq; F field_29539 FOSSIL_DIAMONDS + f Lakq; G field_38472 ANCIENT_CITY_START_DEGRADATION + f Lakq; H field_38473 ANCIENT_CITY_GENERIC_DEGRADATION + f Lakq; I field_38474 ANCIENT_CITY_WALLS_DEGRADATION + f Lakq; J field_44689 TRAIL_RUINS_HOUSES_ARCHAEOLOGY + f Lakq; K field_44690 TRAIL_RUINS_ROADS_ARCHAEOLOGY + f Lakq; L field_44691 TRAIL_RUINS_TOWER_TOP_ARCHAEOLOGY + f Lakq; M field_51848 TRIAL_CHAMBERS_COPPER_BULB_DEGRADATION + f Lakq; N field_26688 EMPTY + f Lakq; a field_26259 ZOMBIE_PLAINS + f Lakq; b field_26260 ZOMBIE_SAVANNA + f Lakq; c field_26261 ZOMBIE_SNOWY + f Lakq; d field_26262 ZOMBIE_TAIGA + f Lakq; e field_26263 ZOMBIE_DESERT + f Lakq; f field_26264 MOSSIFY_10_PERCENT + f Lakq; g field_26265 MOSSIFY_20_PERCENT + f Lakq; h field_26266 MOSSIFY_70_PERCENT + f Lakq; i field_26267 STREET_PLAINS + f Lakq; j field_26268 STREET_SAVANNA + f Lakq; k field_26269 STREET_SNOWY_OR_TAIGA + f Lakq; l field_26270 FARM_PLAINS + f Lakq; m field_26271 FARM_SAVANNA + f Lakq; n field_26272 FARM_SNOWY + f Lakq; o field_26273 FARM_TAIGA + f Lakq; p field_26274 FARM_DESERT + f Lakq; q field_26689 OUTPOST_ROT + f Lakq; r field_26275 BOTTOM_RAMPART + f Lakq; s field_26276 TREASURE_ROOMS + f Lakq; t field_26277 HOUSING + f Lakq; u field_26278 SIDE_WALL_DEGRADATION + f Lakq; v field_26279 STABLE_DEGRADATION + f Lakq; w field_26280 BASTION_GENERIC_DEGRADATION + f Lakq; x field_26281 RAMPART_DEGRADATION + f Lakq; y field_26282 ENTRANCE_REPLACEMENT + f Lakq; z field_26283 BRIDGE + m (Lakq;I)Lemy; a method_51464 trailsArchyLootProcessor + m (Ljava/lang/String;)Lakq; a method_46845 createKey + m (Lqq;)V a method_46846 bootstrap + m (Lqq;Lakq;Ljava/util/List;)V a method_30601 register + m ()V + m ()V +c qz net/minecraft/class_3834 net/minecraft/data/worldgen/SavannaVillagePools + f Lakq; a field_26285 START + f Lakq; b field_40962 TERMINATORS_KEY + f Lakq; c field_40963 ZOMBIE_TERMINATORS_KEY + m (Lqq;)V a method_16844 bootstrap + m ()V + m ()V +c ra net/minecraft/class_3836 net/minecraft/data/worldgen/SnowyVillagePools + f Lakq; a field_26286 START + f Lakq; b field_40964 TERMINATORS_KEY + m (Lqq;)V a method_16845 bootstrap + m ()V + m ()V +c rb net/minecraft/class_7072 net/minecraft/data/worldgen/StructureSets + m (Lqq;)V a method_41182 bootstrap +c rc net/minecraft/class_5470 net/minecraft/data/worldgen/Structures + m (Lbtq;)Lejy; a method_60421 method_60421 + m (Lqq;)V a method_38569 bootstrap + m (Lbtq;)Lbtq; b method_60422 method_60422 + m (Lbtq;)Lejy; c method_46847 method_46847 + m (Lbtq;)Lbtq; d method_46848 method_46848 + m ()V +c rd net/minecraft/class_6725 net/minecraft/data/worldgen/SurfaceRuleData + f Ldzp$o; A field_35335 SOUL_SAND + f Ldzp$o; B field_35336 SOUL_SOIL + f Ldzp$o; C field_35337 BASALT + f Ldzp$o; D field_35338 BLACKSTONE + f Ldzp$o; E field_35339 WARPED_WART_BLOCK + f Ldzp$o; F field_35310 WARPED_NYLIUM + f Ldzp$o; G field_35311 NETHER_WART_BLOCK + f Ldzp$o; H field_35312 CRIMSON_NYLIUM + f Ldzp$o; I field_35313 ENDSTONE + f Ldzp$o; a field_35314 AIR + f Ldzp$o; b field_35639 BEDROCK + f Ldzp$o; c field_35315 WHITE_TERRACOTTA + f Ldzp$o; d field_35316 ORANGE_TERRACOTTA + f Ldzp$o; e field_35317 TERRACOTTA + f Ldzp$o; f field_35318 RED_SAND + f Ldzp$o; g field_35561 RED_SANDSTONE + f Ldzp$o; h field_35319 STONE + f Ldzp$o; i field_35640 DEEPSLATE + f Ldzp$o; j field_35320 DIRT + f Ldzp$o; k field_35321 PODZOL + f Ldzp$o; l field_35322 COARSE_DIRT + f Ldzp$o; m field_35323 MYCELIUM + f Ldzp$o; n field_35324 GRASS_BLOCK + f Ldzp$o; o field_35325 CALCITE + f Ldzp$o; p field_35326 GRAVEL + f Ldzp$o; q field_35327 SAND + f Ldzp$o; r field_35562 SANDSTONE + f Ldzp$o; s field_35328 PACKED_ICE + f Ldzp$o; t field_35329 SNOW_BLOCK + f Ldzp$o; u field_38808 MUD + f Ldzp$o; v field_35330 POWDER_SNOW + f Ldzp$o; w field_35331 ICE + f Ldzp$o; x field_35332 WATER + f Ldzp$o; y field_35333 LAVA + f Ldzp$o; z field_35334 NETHERRACK + m ()Ldzp$o; a method_39134 overworld + m (D)Ldzp$f; a method_39135 surfaceNoiseAbove + m (I)[Ldzp$o; a method_39921 method_39921 + m (Ldfy;)Ldzp$o; a method_39136 makeStateRule + m (ZZZ)Ldzp$o; a method_39922 overworldLike + m ()Ldzp$o; b method_39138 nether + m ()Ldzp$o; c method_39139 end + m ()Ldzp$o; d method_44325 air + m ()V + m ()V +c re net/minecraft/class_3870 net/minecraft/data/worldgen/TaigaVillagePools + f Lakq; a field_26341 START + f Lakq; b field_40965 TERMINATORS_KEY + m (Lqq;)V a method_17038 bootstrap + m ()V + m ()V +c rf net/minecraft/class_6765 net/minecraft/data/worldgen/TerrainProvider + f F a field_38024 DEEP_OCEAN_CONTINENTALNESS + f F b field_38025 OCEAN_CONTINENTALNESS + f F c field_38026 PLAINS_CONTINENTALNESS + f F d field_38027 BEACH_CONTINENTALNESS + f Lazq; e field_38028 NO_TRANSFORM + f Lazq; f field_38029 AMPLIFIED_OFFSET + f Lazq; g field_38030 AMPLIFIED_FACTOR + f Lazq; h field_38031 AMPLIFIED_JAGGEDNESS + m (F)F a method_42045 calculateMountainRidgeZeroContinentalnessPoint + m (FFF)F a method_42046 mountainContinentalness + m (FFFF)F a method_42047 calculateSlope + m (Lazq;FFFFFFLazq;)Laxp; a method_42048 ridgeSpline + m (Lazq;FLazq;)Laxp; a method_42049 buildWeirdnessJaggednessSpline + m (Lazq;FZLazq;)Laxp; a method_42050 buildMountainRidgeSplineWithPoints + m (Lazq;Lazq;FFFFFFZZLazq;)Laxp; a method_42051 buildErosionOffsetSpline + m (Lazq;Lazq;FFLazq;)Laxp; a method_42052 buildRidgeJaggednessSpline + m (Lazq;Lazq;Lazq;FFFFLazq;)Laxp; a method_42053 buildErosionJaggednessSpline + m (Lazq;Lazq;Lazq;FZLazq;)Laxp; a method_42054 getErosionFactor + m (Lazq;Lazq;Lazq;Lazq;Z)Laxp; a method_42055 overworldFactor + m (Lazq;Lazq;Lazq;Z)Laxp; a method_42056 overworldOffset + m (F)F b method_42057 method_42057 + m (Lazq;Lazq;Lazq;Lazq;Z)Laxp; b method_42058 overworldJaggedness + m (F)F c method_42059 method_42059 + m (F)F d method_42060 method_42060 + m ()V + m ()V +c rg net/minecraft/class_8256 net/minecraft/data/worldgen/TrailRuinsStructurePools + f Lakq; a field_43386 START + m (Lqq;)V a method_49993 bootstrap + m ()V + m ()V +c rh net/minecraft/class_8998 net/minecraft/data/worldgen/TrialChambersStructurePools + f Lakq; a field_47507 START + f Lakq; b field_47508 HALLWAY_FALLBACK + f Lakq; c field_47509 CHAMBER_CAP_FALLBACK + f Ljava/util/List; d field_47510 ALIAS_BINDINGS + m (Ljava/lang/String;)Ljava/lang/String; a method_55312 spawner + m (Lqq;)V a method_55313 bootstrap + m ()V + m ()V +c ri net/minecraft/class_3813 net/minecraft/data/worldgen/VillagePools + m (Lqq;)V a method_27221 bootstrap + m ()V +c rj net/minecraft/class_5504 net/minecraft/data/worldgen/biome/BiomeData + m (Lqq;)V a method_40363 bootstrap + m ()V +c rk net/minecraft/class_6726 net/minecraft/data/worldgen/biome/EndBiomes + m (Lddx$a;)Lddw; a method_39141 baseEndBiome + m (Ljn;Ljn;)Lddw; a method_39140 endBarrens + m (Ljn;Ljn;)Lddw; b method_39142 theEnd + m (Ljn;Ljn;)Lddw; c method_39143 endMidlands + m (Ljn;Ljn;)Lddw; d method_39144 endHighlands + m (Ljn;Ljn;)Lddw; e method_39145 smallEndIslands + m ()V +c rl net/minecraft/class_6727 net/minecraft/data/worldgen/biome/NetherBiomes + m (Ljn;Ljn;)Lddw; a method_39146 netherWastes + m (Ljn;Ljn;)Lddw; b method_39147 soulSandValley + m (Ljn;Ljn;)Lddw; c method_39148 basaltDeltas + m (Ljn;Ljn;)Lddw; d method_39149 crimsonForest + m (Ljn;Ljn;)Lddw; e method_39150 warpedForest + m ()V +c rm net/minecraft/class_5478 net/minecraft/data/worldgen/biome/OverworldBiomes + f I a field_35340 NORMAL_WATER_COLOR + f I b field_35341 NORMAL_WATER_FOG_COLOR + f I c field_51968 SWAMP_SKELETON_WEIGHT + f I d field_35342 OVERWORLD_FOG_COLOR + f Lavm; e field_35436 NORMAL_MUSIC + m (F)I a method_30932 calculateSkyColor + m (Lddx$a;)V a method_39153 globalOverworldGeneration + m (Ldei$a;IILddx$a;)Lddw; a method_30692 baseOcean + m (Ljn;Ljn;)Lddw; a method_30703 sparseJungle + m (Ljn;Ljn;FZZZLdei$a;Lavm;)Lddw; a method_30695 baseJungle + m (Ljn;Ljn;Z)Lddw; a method_30687 oldGrowthTaiga + m (Ljn;Ljn;ZZ)Lddw; a method_30694 savanna + m (Ljn;Ljn;ZZZ)Lddw; a method_30701 plains + m (ZFFIILjava/lang/Integer;Ljava/lang/Integer;Ldei$a;Lddx$a;Lavm;)Lddw; a method_39151 biome + m (ZFFLdei$a;Lddx$a;Lavm;)Lddw; a method_39152 biome + m (Ljn;Ljn;)Lddw; b method_30683 jungle + m (Ljn;Ljn;Z)Lddw; b method_30690 windsweptHills + m (Ljn;Ljn;ZZ)Lddw; b method_30685 beach + m (Ljn;Ljn;ZZZ)Lddw; b method_30704 forest + m (Ljn;Ljn;)Lddw; c method_30714 bambooJungle + m (Ljn;Ljn;Z)Lddw; c method_30696 badlands + m (Ljn;Ljn;)Lddw; d method_30698 desert + m (Ljn;Ljn;Z)Lddw; d method_30702 coldOcean + m (Ljn;Ljn;)Lddw; e method_30684 mushroomFields + m (Ljn;Ljn;Z)Lddw; e method_30706 ocean + m (Ljn;Ljn;)Lddw; f method_30723 warmOcean + m (Ljn;Ljn;Z)Lddw; f method_30709 lukeWarmOcean + m (Ljn;Ljn;)Lddw; g method_30705 darkForest + m (Ljn;Ljn;Z)Lddw; g method_30712 frozenOcean + m (Ljn;Ljn;)Lddw; h method_30708 swamp + m (Ljn;Ljn;Z)Lddw; h method_30699 taiga + m (Ljn;Ljn;)Lddw; i method_43232 mangroveSwamp + m (Ljn;Ljn;Z)Lddw; i method_30686 river + m (Ljn;Ljn;)Lddw; j method_30726 theVoid + m (Ljn;Ljn;Z)Lddw; j method_38574 meadowOrCherryGrove + m (Ljn;Ljn;)Lddw; k method_38575 frozenPeaks + m (Ljn;Ljn;)Lddw; l method_38576 jaggedPeaks + m (Ljn;Ljn;)Lddw; m method_38577 stonyPeaks + m (Ljn;Ljn;)Lddw; n method_38578 snowySlopes + m (Ljn;Ljn;)Lddw; o method_38579 grove + m (Ljn;Ljn;)Lddw; p method_34674 lushCaves + m (Ljn;Ljn;)Lddw; q method_33132 dripstoneCaves + m (Ljn;Ljn;)Lddw; r method_42061 deepDark + m (Ljn;Ljn;)Lddx$a; s method_31066 baseOceanGeneration + m ()V + m ()V +c rn net/minecraft/class_6299 net/minecraft/data/worldgen/biome/package-info +c ro net/minecraft/class_6800 net/minecraft/data/worldgen/features/AquaticFeatures + f Lakq; a field_35762 SEAGRASS_SHORT + f Lakq; b field_35763 SEAGRASS_SLIGHTLY_LESS_SHORT + f Lakq; c field_35764 SEAGRASS_MID + f Lakq; d field_35765 SEAGRASS_TALL + f Lakq; e field_35766 SEA_PICKLE + f Lakq; f field_35767 SEAGRASS_SIMPLE + f Lakq; g field_35768 KELP + f Lakq; h field_35769 WARM_OCEAN_VEGETATION + m (Lqq;)V a method_46849 bootstrap + m ()V + m ()V +c rp net/minecraft/class_6801 net/minecraft/data/worldgen/features/CaveFeatures + f Lakq; a field_35770 MONSTER_ROOM + f Lakq; b field_35771 FOSSIL_COAL + f Lakq; c field_35772 FOSSIL_DIAMONDS + f Lakq; d field_35773 DRIPSTONE_CLUSTER + f Lakq; e field_35774 LARGE_DRIPSTONE + f Lakq; f field_35775 POINTED_DRIPSTONE + f Lakq; g field_35776 UNDERWATER_MAGMA + f Lakq; h field_35777 GLOW_LICHEN + f Lakq; i field_35778 ROOTED_AZALEA_TREE + f Lakq; j field_35779 CAVE_VINE + f Lakq; k field_35780 CAVE_VINE_IN_MOSS + f Lakq; l field_35781 MOSS_VEGETATION + f Lakq; m field_35782 MOSS_PATCH + f Lakq; n field_35783 MOSS_PATCH_BONEMEAL + f Lakq; o field_35784 DRIPLEAF + f Lakq; p field_35785 CLAY_WITH_DRIPLEAVES + f Lakq; q field_35786 CLAY_POOL_WITH_DRIPLEAVES + f Lakq; r field_35787 LUSH_CAVES_CLAY + f Lakq; s field_35788 MOSS_PATCH_CEILING + f Lakq; t field_35789 SPORE_BLOSSOM + f Lakq; u field_35790 AMETHYST_GEODE + f Lakq; v field_38033 SCULK_PATCH_DEEP_DARK + f Lakq; w field_38477 SCULK_PATCH_ANCIENT_CITY + f Lakq; x field_38034 SCULK_VEIN + m ()Ljm; a method_39686 makeSmallDripleaf + m (Lji;)Ljm; a method_39687 makeDripleaf + m (Lqq;)V a method_46850 bootstrap + m ()V + m ()V +c rq net/minecraft/class_6802 net/minecraft/data/worldgen/features/EndFeatures + f Lakq; a field_52309 END_PLATFORM + f Lakq; b field_35795 END_SPIKE + f Lakq; c field_35796 END_GATEWAY_RETURN + f Lakq; d field_35797 END_GATEWAY_DELAYED + f Lakq; e field_35798 CHORUS_PLANT + f Lakq; f field_35799 END_ISLAND + m (Lqq;)V a method_46851 bootstrap + m ()V + m ()V +c rr net/minecraft/class_6803 net/minecraft/data/worldgen/features/FeatureUtils + m (ILjm;)Leev; a method_39703 simpleRandomPatchConfiguration + m (Lece;Leei;)Leev; a method_39704 simplePatchConfiguration + m (Lece;Leei;Ljava/util/List;)Leev; a method_39705 simplePatchConfiguration + m (Lece;Leei;Ljava/util/List;I)Leev; a method_39706 simplePatchConfiguration + m (Ljava/lang/String;)Lakq; a method_46852 createKey + m (Ljava/util/List;)Leaf; a method_39709 simplePatchPredicate + m (Lqq;)V a method_39702 bootstrap + m (Lqq;Lakq;Lece;)V a method_40364 register + m (Lqq;Lakq;Lece;Leei;)V a method_39708 register + m ()V +c rs net/minecraft/class_6804 net/minecraft/data/worldgen/features/MiscOverworldFeatures + f Lakq; a field_35800 ICE_SPIKE + f Lakq; b field_35801 ICE_PATCH + f Lakq; c field_35802 FOREST_ROCK + f Lakq; d field_35803 ICEBERG_PACKED + f Lakq; e field_35804 ICEBERG_BLUE + f Lakq; f field_35805 BLUE_ICE + f Lakq; g field_35806 LAKE_LAVA + f Lakq; h field_35807 DISK_CLAY + f Lakq; i field_35808 DISK_GRAVEL + f Lakq; j field_35809 DISK_SAND + f Lakq; k field_35810 FREEZE_TOP_LAYER + f Lakq; l field_38809 DISK_GRASS + f Lakq; m field_35811 BONUS_CHEST + f Lakq; n field_35812 VOID_START_PLATFORM + f Lakq; o field_35813 DESERT_WELL + f Lakq; p field_35814 SPRING_LAVA_OVERWORLD + f Lakq; q field_35815 SPRING_LAVA_FROZEN + f Lakq; r field_35816 SPRING_WATER + m (Lqq;)V a method_46853 bootstrap + m ()V + m ()V +c rt net/minecraft/class_6805 net/minecraft/data/worldgen/features/NetherFeatures + f Lakq; a field_35817 DELTA + f Lakq; b field_35818 SMALL_BASALT_COLUMNS + f Lakq; c field_35819 LARGE_BASALT_COLUMNS + f Lakq; d field_35820 BASALT_BLOBS + f Lakq; e field_35821 BLACKSTONE_BLOBS + f Lakq; f field_35822 GLOWSTONE_EXTRA + f Lakq; g field_35824 CRIMSON_FOREST_VEGETATION + f Lakq; h field_35825 CRIMSON_FOREST_VEGETATION_BONEMEAL + f Lakq; i field_35827 WARPED_FOREST_VEGETION + f Lakq; j field_35828 WARPED_FOREST_VEGETATION_BONEMEAL + f Lakq; k field_35829 NETHER_SPROUTS + f Lakq; l field_35830 NETHER_SPROUTS_BONEMEAL + f Lakq; m field_35831 TWISTING_VINES + f Lakq; n field_35832 TWISTING_VINES_BONEMEAL + f Lakq; o field_35833 WEEPING_VINES + f Lakq; p field_35834 PATCH_CRIMSON_ROOTS + f Lakq; q field_35835 BASALT_PILLAR + f Lakq; r field_35836 SPRING_LAVA_NETHER + f Lakq; s field_35837 SPRING_NETHER_CLOSED + f Lakq; t field_35838 SPRING_NETHER_OPEN + f Lakq; u field_35839 PATCH_FIRE + f Lakq; v field_35840 PATCH_SOUL_FIRE + m (Lqq;)V a method_46854 bootstrap + m ()V + m ()V +c ru net/minecraft/class_6806 net/minecraft/data/worldgen/features/OreFeatures + f Lakq; A field_35851 ORE_EMERALD + f Lakq; B field_35852 ORE_ANCIENT_DEBRIS_LARGE + f Lakq; C field_35853 ORE_ANCIENT_DEBRIS_SMALL + f Lakq; D field_35854 ORE_COPPPER_SMALL + f Lakq; E field_35855 ORE_COPPER_LARGE + f Lakq; F field_35856 ORE_CLAY + f Lakq; a field_35868 ORE_MAGMA + f Lakq; b field_35869 ORE_SOUL_SAND + f Lakq; c field_35870 ORE_NETHER_GOLD + f Lakq; d field_35871 ORE_QUARTZ + f Lakq; e field_35872 ORE_GRAVEL_NETHER + f Lakq; f field_35873 ORE_BLACKSTONE + f Lakq; g field_35874 ORE_DIRT + f Lakq; h field_35875 ORE_GRAVEL + f Lakq; i field_35876 ORE_GRANITE + f Lakq; j field_35877 ORE_DIORITE + f Lakq; k field_35878 ORE_ANDESITE + f Lakq; l field_35879 ORE_TUFF + f Lakq; m field_35880 ORE_COAL + f Lakq; n field_35881 ORE_COAL_BURIED + f Lakq; o field_35882 ORE_IRON + f Lakq; p field_35841 ORE_IRON_SMALL + f Lakq; q field_35842 ORE_GOLD + f Lakq; r field_35843 ORE_GOLD_BURIED + f Lakq; s field_35844 ORE_REDSTONE + f Lakq; t field_35845 ORE_DIAMOND_SMALL + f Lakq; u field_45663 ORE_DIAMOND_MEDIUM + f Lakq; v field_35846 ORE_DIAMOND_LARGE + f Lakq; w field_35847 ORE_DIAMOND_BURIED + f Lakq; x field_35848 ORE_LAPIS + f Lakq; y field_35849 ORE_LAPIS_BURIED + f Lakq; z field_35850 ORE_INFESTED + m (Lqq;)V a method_46855 bootstrap + m ()V + m ()V +c rv net/minecraft/class_6807 net/minecraft/data/worldgen/features/PileFeatures + f Lakq; a field_35883 PILE_HAY + f Lakq; b field_35884 PILE_MELON + f Lakq; c field_35885 PILE_SNOW + f Lakq; d field_35886 PILE_ICE + f Lakq; e field_35887 PILE_PUMPKIN + m (Lqq;)V a method_46856 bootstrap + m ()V + m ()V +c rw net/minecraft/class_6808 net/minecraft/data/worldgen/features/TreeFeatures + f Lakq; A field_35922 OAK_BEES_0002 + f Lakq; B field_35923 OAK_BEES_002 + f Lakq; C field_35924 OAK_BEES_005 + f Lakq; D field_35888 BIRCH_BEES_0002 + f Lakq; E field_35889 BIRCH_BEES_002 + f Lakq; F field_35890 BIRCH_BEES_005 + f Lakq; G field_35891 FANCY_OAK_BEES_0002 + f Lakq; H field_35892 FANCY_OAK_BEES_002 + f Lakq; I field_35893 FANCY_OAK_BEES_005 + f Lakq; J field_35894 FANCY_OAK_BEES + f Lakq; K field_42959 CHERRY_BEES_005 + f Lakq; a field_35899 CRIMSON_FUNGUS + f Lakq; b field_35900 CRIMSON_FUNGUS_PLANTED + f Lakq; c field_35901 WARPED_FUNGUS + f Lakq; d field_35902 WARPED_FUNGUS_PLANTED + f Lakq; e field_35903 HUGE_BROWN_MUSHROOM + f Lakq; f field_35904 HUGE_RED_MUSHROOM + f Lakq; g field_35905 OAK + f Lakq; h field_35906 DARK_OAK + f Lakq; i field_35907 BIRCH + f Lakq; j field_35908 ACACIA + f Lakq; k field_35909 SPRUCE + f Lakq; l field_35910 PINE + f Lakq; m field_35911 JUNGLE_TREE + f Lakq; n field_35912 FANCY_OAK + f Lakq; o field_35913 JUNGLE_TREE_NO_VINE + f Lakq; p field_35914 MEGA_JUNGLE_TREE + f Lakq; q field_35915 MEGA_SPRUCE + f Lakq; r field_35916 MEGA_PINE + f Lakq; s field_35917 SUPER_BIRCH_BEES_0002 + f Lakq; t field_35918 SUPER_BIRCH_BEES + f Lakq; u field_35919 SWAMP_OAK + f Lakq; v field_35920 JUNGLE_BUSH + f Lakq; w field_35921 AZALEA_TREE + f Lakq; x field_38810 MANGROVE + f Lakq; y field_38811 TALL_MANGROVE + f Lakq; z field_42960 CHERRY + m ()Lefe$a; a method_39710 createOak + m (Ldfy;Ldfy;IIII)Lefe$a; a method_39711 createStraightBlobTree + m (Lqq;)V a method_46857 bootstrap + m ()Lefe$a; b method_39712 createBirch + m ()Lefe$a; c method_39713 createSuperBirch + m ()Lefe$a; d method_39714 createJungleTree + m ()Lefe$a; e method_39715 createFancyOak + m ()Lefe$a; f method_49392 cherry + m ()V + m ()V +c rx net/minecraft/class_6809 net/minecraft/data/worldgen/features/VegetationFeatures + f Lakq; A field_35966 DARK_FOREST_VEGETATION + f Lakq; B field_35925 TREES_FLOWER_FOREST + f Lakq; C field_35926 MEADOW_TREES + f Lakq; D field_35927 TREES_TAIGA + f Lakq; E field_35928 TREES_GROVE + f Lakq; F field_35929 TREES_SAVANNA + f Lakq; G field_35930 BIRCH_TALL + f Lakq; H field_35931 TREES_WINDSWEPT_HILLS + f Lakq; I field_35932 TREES_WATER + f Lakq; J field_35933 TREES_BIRCH_AND_OAK + f Lakq; K field_35934 TREES_PLAINS + f Lakq; L field_35935 TREES_SPARSE_JUNGLE + f Lakq; M field_35936 TREES_OLD_GROWTH_SPRUCE_TAIGA + f Lakq; N field_35937 TREES_OLD_GROWTH_PINE_TAIGA + f Lakq; O field_35938 TREES_JUNGLE + f Lakq; P field_35939 BAMBOO_VEGETATION + f Lakq; Q field_35940 MUSHROOM_ISLAND_VEGETATION + f Lakq; R field_38812 MANGROVE_VEGETATION + f Lakq; a field_35941 BAMBOO_NO_PODZOL + f Lakq; b field_35942 BAMBOO_SOME_PODZOL + f Lakq; c field_35943 VINES + f Lakq; d field_35944 PATCH_BROWN_MUSHROOM + f Lakq; e field_35945 PATCH_RED_MUSHROOM + f Lakq; f field_35946 PATCH_SUNFLOWER + f Lakq; g field_35947 PATCH_PUMPKIN + f Lakq; h field_35948 PATCH_BERRY_BUSH + f Lakq; i field_35949 PATCH_TAIGA_GRASS + f Lakq; j field_35950 PATCH_GRASS + f Lakq; k field_35951 PATCH_GRASS_JUNGLE + f Lakq; l field_35952 SINGLE_PIECE_OF_GRASS + f Lakq; m field_35953 PATCH_DEAD_BUSH + f Lakq; n field_35954 PATCH_MELON + f Lakq; o field_35955 PATCH_WATERLILY + f Lakq; p field_35956 PATCH_TALL_GRASS + f Lakq; q field_35957 PATCH_LARGE_FERN + f Lakq; r field_35958 PATCH_CACTUS + f Lakq; s field_35959 PATCH_SUGAR_CANE + f Lakq; t field_35960 FLOWER_DEFAULT + f Lakq; u field_35961 FLOWER_FLOWER_FOREST + f Lakq; v field_35962 FLOWER_SWAMP + f Lakq; w field_35963 FLOWER_PLAIN + f Lakq; x field_35964 FLOWER_MEADOW + f Lakq; y field_42961 FLOWER_CHERRY + f Lakq; z field_35965 FOREST_FLOWERS + m (Legj;I)Leev; a method_39717 grassPatch + m (Lqq;)V a method_46858 bootstrap + m ()V + m ()V +c ry net/minecraft/class_6810 net/minecraft/data/worldgen/features/package-info +c rz net/minecraft/class_6667 net/minecraft/data/worldgen/package-info +c sa net/minecraft/class_6811 net/minecraft/data/worldgen/placement/AquaticPlacements + f Lakq; a field_35967 SEAGRASS_WARM + f Lakq; b field_35968 SEAGRASS_NORMAL + f Lakq; c field_35969 SEAGRASS_COLD + f Lakq; d field_35970 SEAGRASS_RIVER + f Lakq; e field_35971 SEAGRASS_SWAMP + f Lakq; f field_35972 SEAGRASS_DEEP_WARM + f Lakq; g field_35973 SEAGRASS_DEEP + f Lakq; h field_35974 SEAGRASS_DEEP_COLD + f Lakq; i field_35975 SEAGRASS_SIMPLE + f Lakq; j field_35976 SEA_PICKLE + f Lakq; k field_35977 KELP_COLD + f Lakq; l field_35978 KELP_WARM + f Lakq; m field_35979 WARM_OCEAN_VEGETATION + m (I)Ljava/util/List; a method_39731 seagrassPlacement + m (Lqq;)V a method_46859 bootstrap + m ()V + m ()V +c sb net/minecraft/class_6812 net/minecraft/data/worldgen/placement/CavePlacements + f Lakq; a field_35980 MONSTER_ROOM + f Lakq; b field_35981 MONSTER_ROOM_DEEP + f Lakq; c field_35982 FOSSIL_UPPER + f Lakq; d field_35983 FOSSIL_LOWER + f Lakq; e field_35984 DRIPSTONE_CLUSTER + f Lakq; f field_35985 LARGE_DRIPSTONE + f Lakq; g field_35986 POINTED_DRIPSTONE + f Lakq; h field_35987 UNDERWATER_MAGMA + f Lakq; i field_35988 GLOW_LICHEN + f Lakq; j field_35989 ROOTED_AZALEA_TREE + f Lakq; k field_35990 CAVE_VINES + f Lakq; l field_35991 LUSH_CAVES_VEGETATION + f Lakq; m field_35992 LUSH_CAVES_CLAY + f Lakq; n field_35993 LUSH_CAVES_CEILING_VEGETATION + f Lakq; o field_35994 SPORE_BLOSSOM + f Lakq; p field_35995 CLASSIC_VINES + f Lakq; q field_35996 AMETHYST_GEODE + f Lakq; r field_38036 SCULK_PATCH_DEEP_DARK + f Lakq; s field_38478 SCULK_PATCH_ANCIENT_CITY + f Lakq; t field_38037 SCULK_VEIN + m (Lqq;)V a method_46860 bootstrap + m ()V + m ()V +c sc net/minecraft/class_6813 net/minecraft/data/worldgen/placement/EndPlacements + f Lakq; a field_52310 END_PLATFORM + f Lakq; b field_35997 END_SPIKE + f Lakq; c field_35998 END_GATEWAY_RETURN + f Lakq; d field_35999 CHORUS_PLANT + f Lakq; e field_36000 END_ISLAND_DECORATED + m (Lqq;)V a method_46861 bootstrap + m ()V + m ()V +c sd net/minecraft/class_6814 net/minecraft/data/worldgen/placement/MiscOverworldPlacements + f Lakq; a field_36001 ICE_SPIKE + f Lakq; b field_36002 ICE_PATCH + f Lakq; c field_36003 FOREST_ROCK + f Lakq; d field_36004 ICEBERG_PACKED + f Lakq; e field_36005 ICEBERG_BLUE + f Lakq; f field_36006 BLUE_ICE + f Lakq; g field_36007 LAKE_LAVA_UNDERGROUND + f Lakq; h field_36008 LAKE_LAVA_SURFACE + f Lakq; i field_36009 DISK_CLAY + f Lakq; j field_36010 DISK_GRAVEL + f Lakq; k field_36011 DISK_SAND + f Lakq; l field_38813 DISK_GRASS + f Lakq; m field_36012 FREEZE_TOP_LAYER + f Lakq; n field_36013 VOID_START_PLATFORM + f Lakq; o field_36014 DESERT_WELL + f Lakq; p field_36015 SPRING_LAVA + f Lakq; q field_36016 SPRING_LAVA_FROZEN + f Lakq; r field_36017 SPRING_WATER + m (Lqq;)V a method_46862 bootstrap + m ()V + m ()V +c se net/minecraft/class_6815 net/minecraft/data/worldgen/placement/NetherPlacements + f Lakq; a field_36018 DELTA + f Lakq; b field_36019 SMALL_BASALT_COLUMNS + f Lakq; c field_36020 LARGE_BASALT_COLUMNS + f Lakq; d field_36021 BASALT_BLOBS + f Lakq; e field_36022 BLACKSTONE_BLOBS + f Lakq; f field_36023 GLOWSTONE_EXTRA + f Lakq; g field_36024 GLOWSTONE + f Lakq; h field_36025 CRIMSON_FOREST_VEGETATION + f Lakq; i field_36026 WARPED_FOREST_VEGETATION + f Lakq; j field_36027 NETHER_SPROUTS + f Lakq; k field_36028 TWISTING_VINES + f Lakq; l field_36029 WEEPING_VINES + f Lakq; m field_36030 PATCH_CRIMSON_ROOTS + f Lakq; n field_36031 BASALT_PILLAR + f Lakq; o field_36032 SPRING_DELTA + f Lakq; p field_36033 SPRING_CLOSED + f Lakq; q field_36034 SPRING_CLOSED_DOUBLE + f Lakq; r field_36035 SPRING_OPEN + f Lakq; s field_36037 PATCH_SOUL_FIRE + f Lakq; t field_36038 PATCH_FIRE + m (Lqq;)V a method_46863 bootstrap + m ()V + m ()V +c sf net/minecraft/class_6816 net/minecraft/data/worldgen/placement/OrePlacements + f Lakq; A field_36039 ORE_REDSTONE_LOWER + f Lakq; B field_36040 ORE_DIAMOND + f Lakq; C field_45664 ORE_DIAMOND_MEDIUM + f Lakq; D field_36041 ORE_DIAMOND_LARGE + f Lakq; E field_36042 ORE_DIAMOND_BURIED + f Lakq; F field_36043 ORE_LAPIS + f Lakq; G field_36044 ORE_LAPIS_BURIED + f Lakq; H field_36045 ORE_INFESTED + f Lakq; I field_36046 ORE_EMERALD + f Lakq; J field_36047 ORE_ANCIENT_DEBRIS_LARGE + f Lakq; K field_36048 ORE_ANCIENT_DEBRIS_SMALL + f Lakq; L field_36049 ORE_COPPER + f Lakq; M field_36050 ORE_COPPER_LARGE + f Lakq; N field_36051 ORE_CLAY + f Lakq; a field_36052 ORE_MAGMA + f Lakq; b field_36053 ORE_SOUL_SAND + f Lakq; c field_36054 ORE_GOLD_DELTAS + f Lakq; d field_36055 ORE_QUARTZ_DELTAS + f Lakq; e field_36056 ORE_GOLD_NETHER + f Lakq; f field_36057 ORE_QUARTZ_NETHER + f Lakq; g field_36058 ORE_GRAVEL_NETHER + f Lakq; h field_36059 ORE_BLACKSTONE + f Lakq; i field_36060 ORE_DIRT + f Lakq; j field_36061 ORE_GRAVEL + f Lakq; k field_36062 ORE_GRANITE_UPPER + f Lakq; l field_36063 ORE_GRANITE_LOWER + f Lakq; m field_36064 ORE_DIORITE_UPPER + f Lakq; n field_36065 ORE_DIORITE_LOWER + f Lakq; o field_36066 ORE_ANDESITE_UPPER + f Lakq; p field_36067 ORE_ANDESITE_LOWER + f Lakq; q field_36068 ORE_TUFF + f Lakq; r field_36069 ORE_COAL_UPPER + f Lakq; s field_36070 ORE_COAL_LOWER + f Lakq; t field_36071 ORE_IRON_UPPER + f Lakq; u field_36072 ORE_IRON_MIDDLE + f Lakq; v field_36073 ORE_IRON_SMALL + f Lakq; w field_36074 ORE_GOLD_EXTRA + f Lakq; x field_36075 ORE_GOLD + f Lakq; y field_36076 ORE_GOLD_LOWER + f Lakq; z field_36077 ORE_REDSTONE + m (ILeiy;)Ljava/util/List; a method_39732 commonOrePlacement + m (Leiy;Leiy;)Ljava/util/List; a method_39733 orePlacement + m (Lqq;)V a method_46864 bootstrap + m (ILeiy;)Ljava/util/List; b method_39734 rareOrePlacement + m ()V + m ()V +c sg net/minecraft/class_6817 net/minecraft/data/worldgen/placement/PlacementUtils + f Leiy; a field_36078 HEIGHTMAP + f Leiy; b field_36079 HEIGHTMAP_TOP_SOLID + f Leiy; c field_36080 HEIGHTMAP_WORLD_SURFACE + f Leiy; d field_36081 HEIGHTMAP_OCEAN_FLOOR + f Leiy; e field_36082 FULL_RANGE + f Leiy; f field_36083 RANGE_10_10 + f Leiy; g field_36084 RANGE_8_8 + f Leiy; h field_36085 RANGE_4_4 + f Leiy; i field_36086 RANGE_BOTTOM_TO_MAX_TERRAIN_HEIGHT + m ()Leix; a method_40371 isEmpty + m (IFI)Leiy; a method_39736 countExtra + m (Ldfy;)Leij; a method_40365 filteredByBlockSurvival + m (Lece;Leei;)Ljm; a method_40366 onlyWhenEmpty + m (Lece;Leei;Leaf;)Ljm; a method_40367 filtered + m (Lece;Leei;[Leiy;)Ljm; a method_40368 inlinePlaced + m (Ljava/lang/String;)Lakq; a method_46865 createKey + m (Ljm;[Leiy;)Ljm; a method_40369 inlinePlaced + m (Lqq;)V a method_39735 bootstrap + m (Lqq;Lakq;Ljm;Ljava/util/List;)V a method_39737 register + m (Lqq;Lakq;Ljm;[Leiy;)V a method_40370 register + m ()V + m ()V +c sh net/minecraft/class_6818 net/minecraft/data/worldgen/placement/TreePlacements + f Lakq; A field_36113 FANCY_OAK_BEES_002 + f Lakq; B field_36087 FANCY_OAK_BEES + f Lakq; C field_42962 CHERRY_BEES_005 + f Lakq; a field_36088 CRIMSON_FUNGI + f Lakq; b field_36089 WARPED_FUNGI + f Lakq; c field_36090 OAK_CHECKED + f Lakq; d field_36091 DARK_OAK_CHECKED + f Lakq; e field_36092 BIRCH_CHECKED + f Lakq; f field_36093 ACACIA_CHECKED + f Lakq; g field_36094 SPRUCE_CHECKED + f Lakq; h field_38814 MANGROVE_CHECKED + f Lakq; i field_42963 CHERRY_CHECKED + f Lakq; j field_36097 PINE_ON_SNOW + f Lakq; k field_36098 SPRUCE_ON_SNOW + f Lakq; l field_36099 PINE_CHECKED + f Lakq; m field_36100 JUNGLE_TREE_CHECKED + f Lakq; n field_36101 FANCY_OAK_CHECKED + f Lakq; o field_36102 MEGA_JUNGLE_TREE_CHECKED + f Lakq; p field_36103 MEGA_SPRUCE_CHECKED + f Lakq; q field_36104 MEGA_PINE_CHECKED + f Lakq; r field_38815 TALL_MANGROVE_CHECKED + f Lakq; s field_36105 JUNGLE_BUSH + f Lakq; t field_36106 SUPER_BIRCH_BEES_0002 + f Lakq; u field_36107 SUPER_BIRCH_BEES + f Lakq; v field_36108 OAK_BEES_0002 + f Lakq; w field_36109 OAK_BEES_002 + f Lakq; x field_36110 BIRCH_BEES_0002_PLACED + f Lakq; y field_36111 BIRCH_BEES_002 + f Lakq; z field_36112 FANCY_OAK_BEES_0002 + m (Lqq;)V a method_46866 bootstrap + m ()V + m ()V +c si net/minecraft/class_6819 net/minecraft/data/worldgen/placement/VegetationPlacements + f Lakq; A field_36185 PATCH_CACTUS_DECORATED + f Lakq; B field_36114 PATCH_SUGAR_CANE_SWAMP + f Lakq; C field_36115 PATCH_SUGAR_CANE_DESERT + f Lakq; D field_36116 PATCH_SUGAR_CANE_BADLANDS + f Lakq; E field_36117 PATCH_SUGAR_CANE + f Lakq; F field_36118 BROWN_MUSHROOM_NETHER + f Lakq; G field_36119 RED_MUSHROOM_NETHER + f Lakq; H field_36120 BROWN_MUSHROOM_NORMAL + f Lakq; I field_36121 RED_MUSHROOM_NORMAL + f Lakq; J field_36122 BROWN_MUSHROOM_TAIGA + f Lakq; K field_36123 RED_MUSHROOM_TAIGA + f Lakq; L field_36124 BROWN_MUSHROOM_OLD_GROWTH + f Lakq; M field_36125 RED_MUSHROOM_OLD_GROWTH + f Lakq; N field_36126 BROWN_MUSHROOM_SWAMP + f Lakq; O field_36127 RED_MUSHROOM_SWAMP + f Lakq; P field_36128 FLOWER_WARM + f Lakq; Q field_36129 FLOWER_DEFAULT + f Lakq; R field_36130 FLOWER_FLOWER_FOREST + f Lakq; S field_36131 FLOWER_SWAMP + f Lakq; T field_36132 FLOWER_PLAINS + f Lakq; U field_36133 FLOWER_MEADOW + f Lakq; V field_42964 FLOWER_CHERRY + f Lakq; W field_36135 TREES_PLAINS + f Lakq; X field_36136 DARK_FOREST_VEGETATION + f Lakq; Y field_36137 FLOWER_FOREST_FLOWERS + f Lakq; Z field_36138 FOREST_FLOWERS + f Lakq; a field_36140 BAMBOO_LIGHT + f Lakq; aa field_36139 TREES_FLOWER_FOREST + f Lakq; ab field_36141 TREES_MEADOW + f Lakq; ac field_42965 TREES_CHERRY + f Lakq; ad field_36142 TREES_TAIGA + f Lakq; ae field_36143 TREES_GROVE + f Lakq; af field_36144 TREES_BADLANDS + f Lakq; ag field_36145 TREES_SNOWY + f Lakq; ah field_36146 TREES_SWAMP + f Lakq; ai field_36147 TREES_WINDSWEPT_SAVANNA + f Lakq; aj field_36148 TREES_SAVANNA + f Lakq; ak field_36149 BIRCH_TALL + f Lakq; al field_36150 TREES_BIRCH + f Lakq; am field_36151 TREES_WINDSWEPT_FOREST + f Lakq; an field_36152 TREES_WINDSWEPT_HILLS + f Lakq; ao field_36153 TREES_WATER + f Lakq; ap field_36154 TREES_BIRCH_AND_OAK + f Lakq; aq field_36155 TREES_SPARSE_JUNGLE + f Lakq; ar field_36156 TREES_OLD_GROWTH_SPRUCE_TAIGA + f Lakq; as field_36157 TREES_OLD_GROWTH_PINE_TAIGA + f Lakq; at field_36158 TREES_JUNGLE + f Lakq; au field_36159 BAMBOO_VEGETATION + f Lakq; av field_36160 MUSHROOM_ISLAND_VEGETATION + f Lakq; aw field_38816 TREES_MANGROVE + f Leiy; ax field_36134 TREE_THRESHOLD + f Lakq; b field_36161 BAMBOO + f Lakq; c field_36162 VINES + f Lakq; d field_36163 PATCH_SUNFLOWER + f Lakq; e field_36164 PATCH_PUMPKIN + f Lakq; f field_36165 PATCH_GRASS_PLAIN + f Lakq; g field_36166 PATCH_GRASS_FOREST + f Lakq; h field_36167 PATCH_GRASS_BADLANDS + f Lakq; i field_36168 PATCH_GRASS_SAVANNA + f Lakq; j field_36169 PATCH_GRASS_NORMAL + f Lakq; k field_36170 PATCH_GRASS_TAIGA_2 + f Lakq; l field_36171 PATCH_GRASS_TAIGA + f Lakq; m field_36172 PATCH_GRASS_JUNGLE + f Lakq; n field_36173 GRASS_BONEMEAL + f Lakq; o field_36174 PATCH_DEAD_BUSH_2 + f Lakq; p field_36175 PATCH_DEAD_BUSH + f Lakq; q field_36176 PATCH_DEAD_BUSH_BADLANDS + f Lakq; r field_36177 PATCH_MELON + f Lakq; s field_36292 PATCH_MELON_SPARSE + f Lakq; t field_36178 PATCH_BERRY_COMMON + f Lakq; u field_36179 PATCH_BERRY_RARE + f Lakq; v field_36180 PATCH_WATERLILY + f Lakq; w field_36181 PATCH_TALL_GRASS_2 + f Lakq; x field_36182 PATCH_TALL_GRASS + f Lakq; y field_36183 PATCH_LARGE_FERN + f Lakq; z field_36184 PATCH_CACTUS_DESERT + m (I)Ljava/util/List; a method_39738 worldSurfaceSquaredWithCount + m (ILeiy;)Ljava/util/List; a method_39739 getMushroomPlacement + m (Leiy;)Ljava/util/List; a method_39740 treePlacement + m (Leiy;Ldfy;)Ljava/util/List; a method_39741 treePlacement + m (Lqq;)V a method_46867 bootstrap + m (Leiy;)Lcom/google/common/collect/ImmutableList$Builder; b method_39742 treePlacementBase + m ()V + m ()V +c sj net/minecraft/class_6825 net/minecraft/data/worldgen/placement/VillagePlacements + f Lakq; a field_36195 PILE_HAY_VILLAGE + f Lakq; b field_36196 PILE_MELON_VILLAGE + f Lakq; c field_36197 PILE_SNOW_VILLAGE + f Lakq; d field_36198 PILE_ICE_VILLAGE + f Lakq; e field_36199 PILE_PUMPKIN_VILLAGE + f Lakq; f field_36200 OAK_VILLAGE + f Lakq; g field_36201 ACACIA_VILLAGE + f Lakq; h field_36202 SPRUCE_VILLAGE + f Lakq; i field_36203 PINE_VILLAGE + f Lakq; j field_36204 PATCH_CACTUS_VILLAGE + f Lakq; k field_36205 FLOWER_PLAIN_VILLAGE + f Lakq; l field_36206 PATCH_TAIGA_GRASS_VILLAGE + f Lakq; m field_36207 PATCH_BERRY_BUSH_VILLAGE + m (Lqq;)V a method_46868 bootstrap + m ()V + m ()V +c sk net/minecraft/class_6820 net/minecraft/data/worldgen/placement/package-info +c sl net/minecraft/class_6300 net/minecraft/gametest/framework/AfterBatch + m ()Ljava/lang/String; a method_35930 batch +c sm net/minecraft/class_6301 net/minecraft/gametest/framework/BeforeBatch + m ()Ljava/lang/String; a method_35931 batch +c sn net/minecraft/class_5622 net/minecraft/gametest/framework/ExhaustedAttemptsException + m (IILsx;)V +c so net/minecraft/class_6302 net/minecraft/gametest/framework/GameTest + m ()I a method_35932 timeoutTicks + m ()Ljava/lang/String; b method_35933 batch + m ()Z c method_57098 skyAccess + m ()I d method_35934 rotationSteps + m ()Z e method_35935 required + m ()Z f method_57962 manualOnly + m ()Ljava/lang/String; g method_35936 template + m ()J h method_35937 setupTicks + m ()I i method_35938 attempts + m ()I j method_35939 requiredSuccesses +c sp net/minecraft/class_4512 net/minecraft/gametest/framework/GameTestAssertException + m (Ljava/lang/String;)V +c sq net/minecraft/class_4513 net/minecraft/gametest/framework/GameTestAssertPosException + f Ljd; a field_20541 absolutePos + f Ljd; b field_20542 relativePos + f J c field_21449 tick + m ()Ljava/lang/String; a method_22150 getMessageToShowAtBlock + m ()Ljd; b method_35940 getRelativePos + m ()Ljd; c method_22151 getAbsolutePos + m (Ljava/lang/String;Ljd;Ljd;J)V +c sr net/minecraft/class_4514 net/minecraft/gametest/framework/GameTestBatch + f Ljava/lang/String; a field_33145 DEFAULT_BATCH_NAME + f Ljava/lang/String; b comp_2209 name + f Ljava/util/Collection; c comp_2210 gameTestInfos + f Ljava/util/function/Consumer; d comp_2211 beforeBatchFunction + f Ljava/util/function/Consumer; e comp_2212 afterBatchFunction + m ()Ljava/lang/String; a comp_2209 name + m ()Ljava/util/Collection; b comp_2210 gameTestInfos + m ()Ljava/util/function/Consumer; c comp_2211 beforeBatchFunction + m ()Ljava/util/function/Consumer; d comp_2212 afterBatchFunction + m (Ljava/lang/String;Ljava/util/Collection;Ljava/util/function/Consumer;Ljava/util/function/Consumer;)V +c ss net/minecraft/class_9113 net/minecraft/gametest/framework/GameTestBatchFactory + f I a field_48467 MAX_TESTS_PER_BATCH + m ()Lta$b; a method_56188 fromGameTestInfo + m (I)Lta$b; a method_61092 fromGameTestInfo + m (ILjava/util/Collection;)Ljava/util/Collection; a method_56193 method_56193 + m (ILjava/util/Map$Entry;)Ljava/util/stream/Stream; a method_56196 method_56196 + m (Laqu;Ljava/lang/String;Ljava/util/List;J)Lsr; a method_56189 method_56189 + m (Laqu;Ljava/util/Map$Entry;)Ljava/util/stream/Stream; a method_56190 method_56190 + m (Laqu;Ltr;)Lsx; a method_56191 method_56191 + m (Ljava/lang/String;Ljava/util/List;J)Lsr; a method_56192 method_56192 + m (Ljava/util/Collection;Laqu;)Ljava/util/Collection; a method_56194 fromTestFunction + m (Ljava/util/Collection;Ljava/lang/String;J)Lsr; a method_56195 toGameTestBatch + m (Lsx;)Ljava/lang/String; a method_56197 method_56197 + m (Ltr;ILaqu;)Lsx; a method_56198 toGameTestInfo + m ()V +c st net/minecraft/class_9114 net/minecraft/gametest/framework/GameTestBatchListener + m (Lsr;)V a method_56199 testBatchStarting + m (Lsr;)V b method_56200 testBatchFinished +c su net/minecraft/class_4692 net/minecraft/gametest/framework/GameTestEvent + f Ljava/lang/Long; a field_21450 expectedDelay + f Ljava/lang/Runnable; b field_21451 assertion + m (JLjava/lang/Runnable;)Lsu; a method_35941 create + m (Ljava/lang/Runnable;)Lsu; a method_35942 create + m (Ljava/lang/Long;Ljava/lang/Runnable;)V +c sv net/minecraft/class_6303 net/minecraft/gametest/framework/GameTestGenerator +c sw net/minecraft/class_4516 net/minecraft/gametest/framework/GameTestHelper + f Lsx; a field_20558 testInfo + f Z b field_33146 finalCheckAdded + m ()Laqu; a method_35943 getLevel + m (I)V a method_35944 setDayTime + m (III)V a method_35945 pressButton + m (IIILdfy;)V a method_35946 setBlock + m (IIILdtc;)V a method_35947 setBlock + m (ILjava/lang/Runnable;)V a method_35948 succeedOnTickWhen + m (JLjava/lang/Runnable;)V a method_35951 runAtTickTime + m (JLjd;)V a method_35949 assertAtTickTimeContainerEmpty + m (JLjd;Lcul;)V a method_35950 assertAtTickTimeContainerContains + m (Lakq;)V a method_55451 setBiome + m (Lbsr;)Z a method_52206 method_52206 + m (Lbsr;III)V a method_35953 assertEntityInstancePresent + m (Lbsr;Lbsr;)Z a method_35954 method_35954 + m (Lbsr;Lewx;Ljava/lang/String;)V a method_61173 assertEntityPosition + m (Lbsr;Ljava/util/function/Function;Ljava/lang/String;Ljava/lang/Object;)V a method_35957 assertEntityProperty + m (Lbsr;Ljava/util/function/Predicate;Ljava/lang/String;)V a method_35958 assertEntityProperty + m (Lbsr;Ljd;)V a method_35955 assertEntityInstancePresent + m (Lbsr;Ljd;Ljd;)Lsq; a method_35956 method_35956 + m (Lbsx;)Lbsr; a method_56201 findOneEntity + m (Lbsx;DDD)V a method_35960 assertEntityTouching + m (Lbsx;FFF)Lbsr; a method_35961 spawn + m (Lbsx;I)V a method_55323 assertEntitiesPresent + m (Lbsx;III)Lbsr; a method_35962 spawn + m (Lbsx;IIID)Lbsr; a method_56202 findClosestEntity + m (Lbsx;Lexc;)Lbsr; a method_35963 spawn + m (Lbsx;Lexc;D)Ljava/util/List; a method_56203 findEntities + m (Lbsx;Lexc;Lexc;)V a method_46224 assertEntityPresent + m (Lbsx;Ljd;)Lbsr; a method_35964 spawn + m (Lbsx;Ljd;D)V a method_35965 assertEntityPresent + m (Lbsx;Ljd;ID)V a method_44606 assertEntitiesPresent + m (Lbtn;)Lbtn; a method_35966 makeAboutToDrown + m (Lbtn;Ljm;I)V a method_52889 assertLivingEntityHasMobEffect + m (Lbtp;FFF)V a method_57099 moveTo + m (Lbtp;Ljd;F)Ltb; a method_35967 walkTo + m (Lcmx;Lcuq;Ljd;Lji;)V a method_47816 placeAt + m (Lcul;)V a method_54143 assertItemEntityPresent + m (Lcul;FFF)Lcjh; a method_35968 spawnItem + m (Lcul;Lcuq;)Z a method_48000 method_48000 + m (Lcul;Lexc;)Lcjh; a method_57100 spawnItem + m (Lcul;Ljd;)Lcjh; a method_46225 spawnItem + m (Lcul;Ljd;D)V a method_35969 assertItemEntityPresent + m (Lcul;Ljd;DI)V a method_35970 assertItemEntityCountIs + m (Ldct;)Lcmx; a method_36021 makeMockPlayer + m (Ldfy;III)V a method_35971 assertBlockPresent + m (Ldfy;Ljd;)V a method_35972 assertBlockPresent + m (Ldtc;)Z a method_35973 method_35973 + m (Ldtc;Ldfy;Ldfy;)Z a method_35974 method_35974 + m (Lduf;Ljava/util/function/Predicate;Ldtc;)Z a method_36000 method_36000 + m (Ldyy$a;II)I a method_42063 getHeight + m (Lejj;Ljd;)V a method_35977 assertSameBlockStates + m (Lewx;Lbsr;)Z a method_56204 method_56204 + m (Lexc;)Lexc; a method_35978 absoluteVec + m (Lexc;Lbsr;)Z a method_35979 method_35979 + m (Lexc;Lbsr;Lbsr;)I a method_56205 method_56205 + m (Ljava/lang/Class;)V a method_52207 killAllEntitiesOfClass + m (Ljava/lang/Object;)Z a method_48002 method_48002 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;)V a method_56606 assertValueEqual + m (Ljava/lang/Runnable;)V a method_35993 succeedIf + m (Ljava/lang/Runnable;J)V a method_35994 method_35994 + m (Ljava/lang/String;)V a method_35995 fail + m (Ljava/lang/String;Lbsr;)V a method_35996 fail + m (Ljava/lang/String;Ljd;)V a method_35997 fail + m (Ljava/util/function/Consumer;)V a method_35998 forEveryBlockInStructure + m (Ljava/util/function/Predicate;Ldtc;)Z a method_35999 method_35999 + m (Ljd;)Ldtc; a method_35980 getBlockState + m (Ljd;J)V a method_35981 pulseRedstone + m (Ljd;Lbsx;Lcul;)V a method_48001 assertEntityIsHolding + m (Ljd;Lbsx;Ljava/util/function/Function;Ljava/lang/Object;)V a method_35982 assertEntityData + m (Ljd;Lcmx;)V a method_36034 useBlock + m (Ljd;Lcmx;Lewy;)V a method_47817 useBlock + m (Ljd;Lcul;)V a method_35983 assertContainerContains + m (Ljd;Ldfy;)V a method_35984 setBlock + m (Ljd;Ldfy;Ldfy;)Z a method_35985 method_35985 + m (Ljd;Ldtc;)V a method_35986 setBlock + m (Ljd;Lduf;Ljava/lang/Comparable;)V a method_35987 assertBlockProperty + m (Ljd;Lduf;Ljava/util/function/Predicate;Ljava/lang/String;)V a method_35988 assertBlockProperty + m (Ljd;Lejj;Ljd;)V a method_35989 method_35989 + m (Ljd;Ljava/util/function/Predicate;Ljava/lang/String;)V a method_35991 assertBlock + m (Ljd;Ljava/util/function/Predicate;Ljava/util/function/Supplier;)V a method_35992 assertBlock + m (Ljd;Ljd;)V a method_35990 assertSameBlockState + m (Ljd;Lji;Ljava/util/function/IntPredicate;Ljava/util/function/Supplier;)V a method_52225 assertRedstoneSignal + m (ZLjava/lang/String;)V a method_46226 assertTrue + m ()V b method_36001 killAllEntities + m (III)V b method_36002 pullLever + m (JLjava/lang/Runnable;)V b method_36003 runAfterDelay + m (Lbsx;)V b method_35959 assertEntityPresent + m (Lbsx;DDD)V b method_36005 assertEntityNotTouching + m (Lbsx;FFF)Lbtp; b method_36006 spawnWithNoFreeWill + m (Lbsx;III)Lbtp; b method_36007 spawnWithNoFreeWill + m (Lbsx;IIID)Ljava/util/List; b method_56207 findEntities + m (Lbsx;Lexc;)Lbtp; b method_36008 spawnWithNoFreeWill + m (Lbsx;Lexc;Lexc;)V b method_59872 assertEntityNotPresent + m (Lbsx;Ljd;)Lbtp; b method_36009 spawnWithNoFreeWill + m (Lbsx;Ljd;D)Ljava/util/List; b method_44335 getEntities + m (Lbtn;)Lbtn; b method_51821 withLowHealth + m (Lbtp;Ljd;F)V b method_36010 method_36010 + m (Lcul;)V b method_54144 assertItemEntityNotPresent + m (Lcul;Ljd;D)V b method_42762 assertItemEntityNotPresent + m (Ldfy;III)V b method_36011 assertBlockNotPresent + m (Ldfy;Ljd;)V b method_36012 assertBlockNotPresent + m (Lexc;)Lexc; b method_46227 relativeVec + m (Lexc;Lbsr;)Z b method_36013 method_36013 + m (Ljava/lang/Runnable;)V b method_36018 succeedWhen + m (Ljava/lang/Runnable;J)V b method_36019 method_36019 + m (Ljava/lang/String;)Ljava/lang/String; b method_36020 method_36020 + m (Ljd;)Ldqh; b method_36014 getBlockEntity + m (Ljd;Lbsx;Lcul;)V b method_48003 assertEntityInventoryContains + m (Ljd;Lbsx;Ljava/util/function/Function;Ljava/lang/Object;)V b method_36015 succeedWhenEntityData + m (Ljd;Lcul;)V b method_36016 method_36016 + m (Ljd;Ljava/util/function/Predicate;Ljava/util/function/Supplier;)V b method_36017 assertBlockState + m (ZLjava/lang/String;)V b method_49994 assertFalse + m ()Laqv; c method_51891 makeMockServerPlayerInLevel + m (Lbsx;)Ljava/util/List; c method_56208 getEntities + m (Lbsx;III)V c method_36022 assertEntityPresent + m (Lbsx;Ljd;)V c method_36023 assertEntityPresent + m (Ldfy;III)V c method_36024 succeedWhenBlockPresent + m (Ldfy;Ljd;)V c method_36025 succeedWhenBlockPresent + m (Ljava/lang/Runnable;)V c method_36028 failIf + m (Ljava/lang/String;)Ljava/lang/String; c method_36029 method_36029 + m (Ljd;)V c method_36026 pressButton + m (Ljd;Lbsx;Ljava/util/function/Function;Ljava/lang/Object;)V c method_36027 method_36027 + m (Ljd;Ljava/util/function/Predicate;Ljava/util/function/Supplier;)V c method_60651 assertBlockEntityData + m ()V d method_36030 setNight + m (Lbsx;)V d method_36004 assertEntityNotPresent + m (Lbsx;III)V d method_36031 assertEntityNotPresent + m (Lbsx;Ljd;)V d method_36032 assertEntityNotPresent + m (Ldfy;Ljd;)V d method_36033 method_36033 + m (Ljava/lang/Runnable;)V d method_36035 failIfEver + m (Ljd;)V d method_46229 useBlock + m ()V e method_36036 succeed + m (Lbsx;III)V e method_36037 succeedWhenEntityPresent + m (Lbsx;Ljd;)V e method_36038 succeedWhenEntityPresent + m (Ljava/lang/Runnable;)V e method_36040 onEachTick + m (Ljd;)V e method_36039 pullLever + m ()V f method_55452 tickPrecipitation + m (Lbsx;III)V f method_36042 succeedWhenEntityNotPresent + m (Lbsx;Ljd;)V f method_36043 succeedWhenEntityNotPresent + m (Ljd;)V f method_36044 destroyBlock + m ()Ltb; g method_36041 startSequence + m (Lbsx;Ljd;)V g method_36046 method_36046 + m (Ljd;)V g method_36047 assertContainerEmpty + m ()Ldmm; h method_61093 getTestRotation + m (Lbsx;Ljd;)V h method_36049 method_36049 + m (Ljd;)V h method_36050 randomTick + m ()J i method_36045 getTick + m (Ljd;)V i method_55453 tickPrecipitation + m ()Lewx; j method_36051 getBounds + m (Ljd;)Ljd; j method_36052 absolutePos + m ()V k method_36048 ensureSingleFinalCheck + m (Ljd;)Ljd; k method_36054 relativePos + m ()Lewx; l method_36053 getRelativeBounds + m (Ljd;)V l method_36056 method_36056 + m ()Ljava/lang/Exception; m method_36055 method_36055 + m (Ljd;)V m method_36058 method_36058 + m ()Ljava/lang/String; n method_36057 method_36057 + m (Lsx;)V +c sw$1 net/minecraft/class_4516$1 net/minecraft/gametest/framework/GameTestHelper$1 + f Ldct; b field_48983 val$gameType + m (Lsw;Ldcw;Ljd;FLcom/mojang/authlib/GameProfile;Ldct;)V +c sw$2 net/minecraft/class_4516$2 net/minecraft/gametest/framework/GameTestHelper$2 + m (Lsw;Lnet/minecraft/server/MinecraftServer;Laqu;Lcom/mojang/authlib/GameProfile;Laqh;)V +c sx net/minecraft/class_4517 net/minecraft/gametest/framework/GameTestInfo + f Ltr; a field_20559 testFunction + f Ljd; b field_20560 structureBlockPos + f Ljd; c field_48468 northWestCorner + f Laqu; d field_20561 level + f Ljava/util/Collection; e field_20562 listeners + f I f field_20563 timeoutTicks + f Ljava/util/Collection; g field_21452 sequences + f Lit/unimi/dsi/fastutil/objects/Object2LongMap; h field_21453 runAtTickTimeMap + f J i field_21454 startTick + f I j field_47172 ticksToWaitForChunkLoading + f Z k field_47173 placedStructure + f Z l field_47174 chunksLoaded + f J m field_21455 tickCount + f Z n field_20565 started + f Ltk; o field_48469 retryOptions + f Lcom/google/common/base/Stopwatch; p field_21456 timer + f Z q field_20567 done + f Ldmm; r field_25301 rotation + f Ljava/lang/Throwable; s field_20569 error + f Ldrx; t field_27805 structureBlockEntity + m ()Ljava/util/stream/Stream; A method_56209 getListeners + m ()Lsx; B method_56210 copyReset + m ()Z C method_56211 ensureStructureIsPlaced + m ()V D method_33315 tickInternal + m ()V E method_23639 startTest + m ()V F method_23640 finish + m ()Ljd; G method_56212 getOrCalculateNorthwestCorner + m ()Lsx; a method_56213 placeStructure + m (I)Lsx; a method_23634 startExecution + m (JLjava/lang/Runnable;)V a method_36060 setRunAtTickTime + m (Lbsr;)V a method_54434 method_54434 + m (Ldcd;)Z a method_54900 method_54900 + m (Ljava/lang/Throwable;)V a method_22168 fail + m (Ljd;)V a method_23635 setStructureBlockPos + m (Lsy;)V a method_22167 addListener + m (Lta;)V a method_22165 tick + m (Lta;Lsy;)V a method_33316 method_33316 + m (Ltb;)V a method_23636 method_23636 + m ()Ljava/lang/String; b method_22169 getTestName + m (Lbsr;)Z b method_54435 method_54435 + m (Ljd;)V b method_56214 setNorthWestCorner + m (Lsy;)V b method_22175 method_22175 + m (Lta;Lsy;)V b method_22171 method_22171 + m (Ltb;)V b method_23637 method_23637 + m ()Ljd; c method_22172 getStructureBlockPos + m ()Lewx; d method_36062 getStructureBounds + m ()Ldrx; e method_36059 getStructureBlockEntity + m ()Laqu; f method_22176 getLevel + m ()Z g method_22177 hasSucceeded + m ()Z h method_22178 hasFailed + m ()Z i method_22179 hasStarted + m ()Z j method_22180 isDone + m ()J k method_36063 getRunTime + m ()V l method_36064 succeed + m ()Ljava/lang/Throwable; m method_22182 getError + m ()Lsx; n method_22166 prepareTestStructure + m ()J o method_36065 getTick + m ()Ltb; p method_36066 createSequence + m ()Z q method_22183 isRequired + m ()Z r method_22184 isOptional + m ()Ljava/lang/String; s method_23638 getStructureName + m ()Ldmm; t method_29402 getRotation + m ()Ltr; u method_29403 getTestFunction + m ()I v method_36067 getTimeoutTicks + m ()Z w method_32241 isFlaky + m ()I x method_32242 maxAttempts + m ()I y method_32243 requiredSuccesses + m ()Ltk; z method_56215 retryOptions + m (Ltr;Ldmm;Laqu;Ltk;)V +c sy net/minecraft/class_4518 net/minecraft/gametest/framework/GameTestListener + m (Lsx;)V a method_22188 testStructureLoaded + m (Lsx;Lsx;Lta;)V a method_56216 testAddedForRerun + m (Lsx;Lta;)V a method_33317 testPassed + m (Lsx;Lta;)V b method_22190 testFailed +c sz net/minecraft/class_4519 net/minecraft/gametest/framework/GameTestRegistry + f Ljava/util/Collection; a field_20570 TEST_FUNCTIONS + f Ljava/util/Set; b field_20571 TEST_CLASS_NAMES + f Ljava/util/Map; c field_20572 BEFORE_BATCH_FUNCTIONS + f Ljava/util/Map; d field_27806 AFTER_BATCH_FUNCTIONS + f Ljava/util/Set; e field_25302 LAST_FAILED_TESTS + m ()Ljava/util/Collection; a method_22191 getAllTestFunctions + m (Laqu;)V a method_56217 method_56217 + m (Ljava/lang/Class;)V a method_36068 register + m (Ljava/lang/String;)Ljava/util/stream/Stream; a method_22193 getTestFunctionsForClassName + m (Ljava/lang/String;Ltr;)Z a method_22194 method_22194 + m (Ljava/lang/reflect/Method;)V a method_36069 register + m (Ljava/lang/reflect/Method;Ljava/lang/Class;Ljava/util/function/Function;Ljava/util/Map;)V a method_36070 registerBatchFunction + m (Ljava/lang/reflect/Method;Ljava/lang/Object;)V a method_36071 method_36071 + m (Ltr;)V a method_29404 rememberFailedTest + m (Ltr;Ljava/lang/String;)Z a method_22192 isTestFunctionPartOfClass + m ()Ljava/util/Collection; b method_22195 getAllTestClassNames + m (Laqu;)V b method_56218 method_56218 + m (Ljava/lang/String;)Z b method_22196 isTestClass + m (Ljava/lang/String;Ltr;)Z b method_22197 method_22197 + m (Ljava/lang/reflect/Method;)Ljava/util/Collection; b method_36072 useTestGeneratorMethod + m ()Ljava/util/stream/Stream; c method_29405 getLastFailedTests + m (Ljava/lang/String;)Ljava/util/function/Consumer; c method_22198 getBeforeBatchFunction + m (Ljava/lang/reflect/Method;)Ltr; c method_36073 turnMethodIntoTestFunction + m ()V d method_29406 forgetFailedTests + m (Ljava/lang/String;)Ljava/util/function/Consumer; d method_32244 getAfterBatchFunction + m (Ljava/lang/reflect/Method;)Ljava/util/function/Consumer; d method_36074 turnMethodIntoConsumer + m (Ljava/lang/String;)Ljava/util/Optional; e method_22199 findTestFunction + m (Ljava/lang/String;)Ltr; f method_22200 getTestFunction + m ()V + m ()V +c ta net/minecraft/class_4520 net/minecraft/gametest/framework/GameTestRunner + f I a field_33151 DEFAULT_TESTS_PER_ROW + f Lorg/slf4j/Logger; b field_48470 LOGGER + f Laqu; c field_48471 level + f Ltd; d field_48472 testTicker + f Ljava/util/List; e field_48473 allTestInfos + f Lcom/google/common/collect/ImmutableList; f field_48474 batches + f Ljava/util/List; g field_48475 batchListeners + f Ljava/util/List; h field_48476 scheduledForRerun + f Lta$b; i field_48477 testBatcher + f Z j field_48478 stopped + f Lsr; k field_48479 currentBatch + f Lta$c; l field_48480 existingStructureSpawner + f Lta$c; m field_48481 newStructureSpawner + f Z n field_52279 haltOnError + m ()Ljava/util/List; a method_56219 getTestInfos + m (I)V a method_56220 runBatch + m (Laqu;)V a method_22213 clearMarkers + m (Ljava/util/Collection;)Ljava/util/Collection; a method_56221 createStructuresForBatch + m (Lsr;)Ljava/util/stream/Stream; a method_56222 method_56222 + m (Lst;)V a method_56223 addListener + m (Lsx;)V a method_56224 rerunTest + m (Lsx;Lsx;Lsy;)V a method_56225 method_56225 + m ()V b method_56226 start + m (Lst;)V b method_56227 method_56227 + m (Lsx;)Ljava/util/Optional; b method_56228 spawn + m ()V c method_56229 stop + m (Lsx;)Ljava/lang/String; c method_57072 method_57072 + m ()V d method_56231 runScheduledRerunTests + m (Lsx;)V d method_56230 method_56230 + m (Lta$b;Ljava/util/Collection;Laqu;Ltd;Lta$c;Lta$c;Z)V + m ()V +c ta$1 net/minecraft/class_4520$1 net/minecraft/gametest/framework/GameTestRunner$1 + f Lti; a field_48482 val$currentBatchTracker + f I b field_48483 val$batchIndex + f Lta; c field_48484 field_48484 + m ()V a method_56232 testCompleted + m (J)V a method_61094 method_61094 + m (Lst;)V a method_56234 method_56234 + m (J)V b method_56233 method_56233 + m (Lta;Lti;I)V +c ta$a net/minecraft/class_4520$class_9115 net/minecraft/gametest/framework/GameTestRunner$Builder + f Laqu; a field_48485 level + f Ltd; b field_48486 testTicker + f Lta$b; c field_48487 batcher + f Lta$c; d field_48488 existingStructureSpawner + f Lta$c; e field_48489 newStructureSpawner + f Ljava/util/Collection; f field_48490 batches + f Z g field_52280 haltOnError + m ()Lta; a method_56235 build + m (Ljava/util/Collection;Laqu;)Lta$a; a method_56236 fromBatches + m (Lta$b;)Lta$a; a method_61095 batcher + m (Lta$c;)Lta$a; a method_56237 newStructureSpawner + m (Ltm;)Lta$a; a method_61096 existingStructureSpawner + m (Z)Lta$a; a method_61097 haltOnError + m (Ljava/util/Collection;Laqu;)Lta$a; b method_56238 fromInfo + m (Ljava/util/Collection;Laqu;)V +c ta$b net/minecraft/class_4520$class_9116 net/minecraft/gametest/framework/GameTestRunner$GameTestBatcher +c ta$c net/minecraft/class_4520$class_9117 net/minecraft/gametest/framework/GameTestRunner$StructureSpawner + f Lta$c; a field_48491 IN_PLACE + f Lta$c; b field_48492 NOT_SET + m (Laqu;)V a method_61098 onBatchStart + m (Lsx;)Ljava/util/Optional; a method_56239 method_56239 + m (Lsx;)Ljava/util/Optional; b method_56240 method_56240 + m ()V +c tb net/minecraft/class_4693 net/minecraft/gametest/framework/GameTestSequence + f Lsx; a field_21457 parent + f Ljava/util/List; b field_21458 events + f J c field_21459 lastTick + m ()V a method_36075 thenSucceed + m (I)Ltb; a method_36076 thenIdle + m (ILjava/lang/Runnable;)Ltb; a method_36077 thenExecuteAfter + m (J)V a method_23643 tickAndContinue + m (JLjava/lang/Runnable;)Ltb; a method_36078 thenWaitUntil + m (Ljava/lang/Runnable;)Ltb; a method_36079 thenWaitUntil + m (Ljava/util/function/Supplier;)V a method_36080 thenFail + m (Ltb$a;)V a method_36081 method_36081 + m ()Ltb$a; b method_36083 thenTrigger + m (ILjava/lang/Runnable;)Ltb; b method_36084 thenExecuteFor + m (J)V b method_23644 tickAndFailIfNotComplete + m (Ljava/lang/Runnable;)Ltb; b method_36085 thenExecute + m (Ljava/util/function/Supplier;)V b method_36086 method_36086 + m ()V c method_36087 method_36087 + m (ILjava/lang/Runnable;)V c method_36088 method_36088 + m (J)V c method_23645 tick + m (Ljava/lang/Runnable;)V c method_36089 executeWithoutFail + m (ILjava/lang/Runnable;)V d method_36090 method_36090 + m (Ljava/lang/Runnable;)V d method_36091 method_36091 + m (Lsx;)V +c tb$a net/minecraft/class_4693$class_6304 net/minecraft/gametest/framework/GameTestSequence$Condition + f Ltb; a field_33153 field_33153 + f J b field_33154 NOT_TRIGGERED + f J c field_33155 triggerTime + m ()V a method_36092 assertTriggeredThisTick + m (J)V a method_36093 trigger + m (Ltb;)V +c tc net/minecraft/class_6306 net/minecraft/gametest/framework/GameTestServer + f Lorg/slf4j/Logger; k field_33156 LOGGER + f I l field_33157 PROGRESS_REPORT_INTERVAL + f I m field_47175 TEST_POSITION_RANGE + f Lalm; n field_39441 NO_SERVICES + f Lblr; o field_48984 sampleLogger + f Ljava/util/List; p field_33158 testBatches + f Ljava/util/List; q field_48493 testFunctions + f Ljd; r field_33159 spawnPos + f Lcom/google/common/base/Stopwatch; s field_48494 stopwatch + f Ldcs; t field_33160 TEST_GAME_RULES + f Ldzw; u field_33161 WORLD_OPTIONS + f Lti; v field_33162 testTracker + m (Lalo$c;Ldda;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_43615 method_43615 + m (Ldcs;)V a method_36094 method_36094 + m (Ldda;Lalo$a;)Lalo$b; a method_40377 method_40377 + m (Ljava/lang/Thread;Lerf$c;Latp;Ljava/util/Collection;Ljd;)Ltc; a method_40378 create + m (Lsx;)V a method_36095 method_36095 + m (Laqu;)V b method_36096 startTests + m (Lsx;)V b method_36097 method_36097 + m ()Z br method_36098 haveTestsStarted + m (Ljava/lang/Thread;Lerf$c;Latp;Lalp;Ljava/util/Collection;Ljd;)V + m ()V +c tc$1 net/minecraft/class_6306$1 net/minecraft/gametest/framework/GameTestServer$1 + m (Ltc;Lnet/minecraft/server/MinecraftServer;Ljt;Leri;I)V +c td net/minecraft/class_4521 net/minecraft/gametest/framework/GameTestTicker + f Ltd; a field_20574 SINGLETON + f Ljava/util/Collection; b field_20575 testInfos + f Lta; c field_48495 runner + m ()V a method_22226 clear + m (Lsx;)V a method_22227 add + m (Lta;)V a method_56241 setRunner + m ()V b method_22228 tick + m (Lsx;)V b method_56242 method_56242 + m ()V + m ()V +c te net/minecraft/class_4522 net/minecraft/gametest/framework/GameTestTimeoutException + m (Ljava/lang/String;)V +c tf net/minecraft/class_5623 net/minecraft/gametest/framework/GlobalTestReporter + f Ltu; a field_27807 DELEGATE + m ()V a method_36099 finish + m (Lsx;)V a method_32245 onTestFailed + m (Ltu;)V a method_36100 replaceWith + m (Lsx;)V b method_33319 onTestSuccess + m ()V + m ()V +c tg net/minecraft/class_6307 net/minecraft/gametest/framework/JUnitLikeTestReporter + f Lorg/w3c/dom/Document; a field_33164 document + f Lorg/w3c/dom/Element; b field_33165 testSuite + f Lcom/google/common/base/Stopwatch; c field_33166 stopwatch + f Ljava/io/File; d field_33167 destination + m (Ljava/io/File;)V a method_36101 save + m (Lsx;Ljava/lang/String;)Lorg/w3c/dom/Element; a method_36102 createTestCase + m (Ljava/io/File;)V +c th net/minecraft/class_4523 net/minecraft/gametest/framework/LogTestReporter + f Lorg/slf4j/Logger; a field_20576 LOGGER + m ()V + m ()V +c ti net/minecraft/class_4524 net/minecraft/gametest/framework/MultipleTestTracker + f C a field_33168 NOT_STARTED_TEST_CHAR + f C b field_33169 ONGOING_TEST_CHAR + f C c field_33170 SUCCESSFUL_TEST_CHAR + f C d field_33171 FAILED_OPTIONAL_TEST_CHAR + f C e field_33172 FAILED_REQUIRED_TEST_CHAR + f Ljava/util/Collection; f field_20577 tests + f Ljava/util/Collection; g field_25303 listeners + m ()I a method_22229 getFailedRequiredCount + m (Ljava/lang/StringBuffer;Lsx;)V a method_22233 method_22233 + m (Ljava/util/function/Consumer;)V a method_29407 addFailureListener + m (Lsx;)V a method_22230 addTestToTrack + m (Lsy;)V a method_22231 addListener + m (Lsy;Lsx;)V a method_22232 method_22232 + m ()I b method_22234 getFailedOptionalCount + m (Lsx;)V b method_56243 remove + m ()I c method_22235 getDoneCount + m ()Z d method_22236 hasFailedRequired + m ()Z e method_22237 hasFailedOptional + m ()Ljava/util/Collection; f method_36103 getFailedRequired + m ()Ljava/util/Collection; g method_36104 getFailedOptional + m ()I h method_22238 getTotalCount + m ()Z i method_22239 isDone + m ()Ljava/lang/String; j method_22240 getProgressBar + m ()V + m (Ljava/util/Collection;)V +c ti$1 net/minecraft/class_4524$1 net/minecraft/gametest/framework/MultipleTestTracker$1 + f Ljava/util/function/Consumer; a field_25304 val$listener + m (Lti;Ljava/util/function/Consumer;)V +c tj net/minecraft/class_5624 net/minecraft/gametest/framework/ReportGameListener + f I a field_27808 attempts + f I b field_27809 successes + m (Laqu;Ljd;Ljava/lang/String;)V a method_32247 showRedBox + m (Laqu;Ln;Ljava/lang/String;)V a method_32248 say + m (Laqv;)Z a method_32249 method_32249 + m (Ljava/lang/String;Ln;Laqv;)V a method_32250 method_32250 + m (Ljava/lang/String;ZLjava/lang/String;)Lcuq; a method_32251 createBook + m (Ljava/lang/StringBuffer;Ljava/lang/String;)V a method_32252 method_32252 + m (Lsx;Ldfy;)V a method_32253 spawnBeacon + m (Lsx;Ljava/lang/String;)V a method_33320 reportPassed + m (Lsx;Ljava/lang/Throwable;)V a method_32254 reportFailure + m (Lsx;Lta;Z)V a method_56244 handleRetry + m (Lsx;)Ljd; b method_61099 getBeaconPos + m (Lsx;Ldfy;)V b method_61100 updateBeaconGlass + m (Lsx;Ljava/lang/String;)V b method_33321 visualizePassedTest + m (Lsx;Ljava/lang/Throwable;)V b method_32255 visualizeFailedTest + m (Lsx;Ljava/lang/String;)V c method_32256 spawnLectern + m ()V +c tk net/minecraft/class_9118 net/minecraft/gametest/framework/RetryOptions + f I a comp_2213 numberOfTries + f Z b comp_2214 haltOnFailure + f Ltk; c field_48496 NO_RETRIES + m ()Ltk; a method_56245 noRetries + m (II)Z a method_56246 hasTriesLeft + m ()Z b method_56247 unlimitedTries + m ()Z c method_56248 hasRetries + m ()I d comp_2213 numberOfTries + m ()Z e comp_2214 haltOnFailure + m (IZ)V + m ()V +c tl net/minecraft/class_9119 net/minecraft/gametest/framework/StructureBlockPosFinder +c tm net/minecraft/class_9120 net/minecraft/gametest/framework/StructureGridSpawner + f I c field_48497 SPACE_BETWEEN_COLUMNS + f I d field_48498 SPACE_BETWEEN_ROWS + f I e field_48499 testsPerRow + f I f field_48500 currentRowCount + f Lewx; g field_48501 rowBounds + f Ljd$a; h field_48502 nextTestNorthWestCorner + f Ljd; i field_48503 firstTestNorthWestCorner + f Z j field_52281 clearOnBatch + f F k field_52282 maxX + f Ljava/util/Collection; l field_52283 testInLastBatch + m (Laqu;Lsx;)V a method_61101 method_61101 + m (Ljd;IZ)V +c tn net/minecraft/class_4525 net/minecraft/gametest/framework/StructureUtils + f I a field_51468 DEFAULT_Y_SEARCH_RADIUS + f Ljava/lang/String; b field_33173 DEFAULT_TEST_STRUCTURES_DIR + f Ljava/lang/String; c field_20579 testStructuresDir + f Lorg/slf4j/Logger; d field_27813 LOGGER + m (I)Ldmm; a method_29408 getRotationForRotationSteps + m (ILaqu;Ljd;)V a method_22254 method_22254 + m (ILjd;Laqu;)V a method_22368 clearBlock + m (Laqu;Ldcd;)V a method_54901 method_54901 + m (Laqu;Ljd;)Ljava/util/Optional; a method_56250 method_56250 + m (Lbsr;)Z a method_22241 method_22241 + m (Ldmm;)I a method_36105 getRotationStepsForRotation + m (Ldrx;)Lewx; a method_22242 getStructureBounds + m (Lejj;Laqu;)V a method_22246 clearSpaceForStructure + m (Lewx;Laqu;)V a method_57101 removeBarriers + m (Lewx;Laqu;Z)V a method_57102 encaseStructure + m (Lexc;Lexc;Ldrx;)Z a method_56251 method_56251 + m (Ljava/lang/String;Ldrx;)Z a method_59783 method_59783 + m (Ljava/lang/String;Ljd;Lkh;Ldmm;Laqu;)V a method_22251 createNewEmptyStructureBlock + m (Ljd;ILaqu;)Ljava/util/Optional; a method_22244 findStructureBlockContainingPos + m (Ljd;ILaqu;Ljava/lang/String;)Ljava/util/stream/Stream; a method_59782 findStructureByTestFunction + m (Ljd;Laqu;Ljd;)Z a method_22249 method_22249 + m (Ljd;Lbsr;Laqu;)Ljava/util/stream/Stream; a method_56252 lookedAtStructureBlockPos + m (Ljd;Ljd;)I a method_22245 method_22245 + m (Ljd;Ljd;Laqu;)Z a method_22247 doesStructureContain + m (Ljd;Ljd;Laqu;Ljd;)V a method_57103 method_57103 + m (Ljd;Ljd;Ldmm;Laqu;)V a method_22248 addCommandBlockAndButtonToStartTest + m (Ljd;Ljd;ZLaqu;Ljd;)V a method_57104 method_57104 + m (Ljd;Lkh;Ldmm;)Ljd; a method_54847 getTransformedFarCorner + m (Lsx;)Ljava/lang/IllegalStateException; a method_54902 method_54902 + m (Lsx;Ljd;Ldmm;Laqu;)Ldrx; a method_54903 prepareTestStructure + m (Laqu;Ljd;)Z b method_54845 method_54845 + m (Ldrx;)Lejj; b method_29410 getStructureBoundingBox + m (Lejj;Laqu;)V b method_22256 forceLoadChunks + m (Ljd;ILaqu;)Ljava/util/Optional; b method_22255 findNearestStructureBlock + m (Ljd;Lkh;Ldmm;)Lejj; b method_29409 getStructureBoundingBox + m (Lsx;Ljd;Ldmm;Laqu;)Ldrx; b method_22252 createStructureBlock + m (Laqu;Ljd;)Ldrx; c method_59784 method_59784 + m (Ldrx;)Ljd; c method_54849 getStructureOrigin + m (Ljd;ILaqu;)Ljava/util/stream/Stream; c method_22258 findStructureBlocks + m (Ljd;ILaqu;)Lejj; d method_59785 getBoundingBoxAtGround + m ()V + m ()V +c tn$1 net/minecraft/class_4525$1 net/minecraft/gametest/framework/StructureUtils$1 + f [I a field_33175 $SwitchMap$net$minecraft$world$level$block$Rotation + m ()V +c to net/minecraft/class_4526 net/minecraft/gametest/framework/TestClassNameArgument + f Ljava/util/Collection; a field_20580 EXAMPLES + m ()Lto; a method_22370 testClassName + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/String; a method_22261 parse + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; a method_22262 getTestClassName + m ()V + m ()V +c tp net/minecraft/class_4527 net/minecraft/gametest/framework/TestCommand + f I a field_33180 STRUCTURE_BLOCK_NEARBY_SEARCH_RADIUS + f I b field_33181 STRUCTURE_BLOCK_FULL_SEARCH_RADIUS + f Lorg/slf4j/Logger; c field_45665 LOGGER + f I d field_33178 DEFAULT_CLEAR_RADIUS + f I e field_33179 MAX_CLEAR_RADIUS + f I f field_33182 TEST_POS_Z_OFFSET_FROM_PLAYER + f I g field_33183 SHOW_POS_DURATION_MS + f I h field_33184 DEFAULT_X_SIZE + f I i field_33185 DEFAULT_Y_SIZE + f I j field_33186 DEFAULT_Z_SIZE + f Ljava/lang/String; k field_48504 STRUCTURE_BLOCK_ENTITY_COULD_NOT_BE_FOUND + f Ltq$a; l field_48505 testFinder + m ()I a method_56254 stopTests + m (ILet;Ltk;Ltr;)Lsx; a method_56255 method_56255 + m (Laqu;Ljava/lang/String;)Z a method_54904 verifyStructureExists + m (Laqu;Ljava/lang/String;Ln;)V a method_22275 say + m (Laqu;Ljd;)V a method_57105 method_57105 + m (Laqv;)Z a method_22276 method_22276 + m (Lbsr;)V a method_57106 method_57106 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_22270 register + m (Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_56256 method_56256 + m (Lcom/mojang/brigadier/builder/ArgumentBuilder;Ljava/util/function/Function;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_56257 runWithRetryOptions + m (Lcom/mojang/brigadier/builder/ArgumentBuilder;Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_56258 runWithRetryOptions + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_22283 method_22283 + m (Let;)Ljd; a method_54850 createTestPositionAround + m (Let;Laqu;Lta;)I a method_56259 trackAndStartRunner + m (Let;Ldrx;)I a method_54905 saveAndExportTestStructure + m (Let;Ljava/lang/String;)I a method_22264 showPos + m (Let;Ljava/lang/String;III)I a method_22268 createNewStructure + m (Let;Ltk;Ljd;)Ljava/util/Optional; a method_56260 method_56260 + m (Let;Ltk;Ltl;)Ljava/util/stream/Stream; a method_56261 toGameTestInfos + m (Let;Ltk;Ltt;I)Ljava/util/stream/Stream; a method_56262 toGameTestInfo + m (Let;Ltr;)Z a method_56263 method_56263 + m (Ljava/lang/String;)Lwz; a method_52187 method_52187 + m (Ljava/lang/String;Ln;Laqv;)V a method_22263 method_22263 + m (Ljava/lang/String;Lwz;)Lwz; a method_52188 method_52188 + m (Ljava/util/function/Function;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_56265 method_56265 + m (Ljava/util/function/Function;Lcom/mojang/brigadier/context/CommandContext;)I a method_56266 method_56266 + m (Ljd;Laqu;Ltk;)Ljava/util/Optional; a method_56264 createGameTestInfo + m (Lsx;)I a method_56267 resetGameTestInfo + m (Lcom/mojang/brigadier/builder/ArgumentBuilder;Ljava/util/function/Function;)Lcom/mojang/brigadier/builder/ArgumentBuilder; b method_56268 runWithRetryOptionsAndBuildInfo + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_22286 method_22286 + m (Let;Ljava/lang/String;)I b method_22282 exportTestStructure + m (Ljava/util/function/Function;Lcom/mojang/brigadier/context/CommandContext;)I b method_56269 method_56269 + m (Lsx;)V b method_56270 method_56270 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_22287 method_22287 + m (Let;Ljava/lang/String;)V c method_22278 say + m (Ljava/util/function/Function;Lcom/mojang/brigadier/context/CommandContext;)I c method_56271 method_56271 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_23648 method_23648 + m (Let;Ljava/lang/String;)I d method_22285 importTestStructure + m (Ljava/util/function/Function;Lcom/mojang/brigadier/context/CommandContext;)I d method_56272 method_56272 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_22288 method_22288 + m (Ljava/util/function/Function;Lcom/mojang/brigadier/context/CommandContext;)I e method_56273 method_56273 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_56274 method_56274 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_22289 method_22289 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_56275 method_56275 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_56276 method_56276 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_56277 method_56277 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_56278 method_56278 + m (Lcom/mojang/brigadier/context/CommandContext;)I l method_56279 method_56279 + m (Lcom/mojang/brigadier/context/CommandContext;)I m method_56280 method_56280 + m (Lcom/mojang/brigadier/context/CommandContext;)I n method_56281 method_56281 + m (Lcom/mojang/brigadier/context/CommandContext;)I o method_22290 method_22290 + m (Lcom/mojang/brigadier/context/CommandContext;)I p method_56282 method_56282 + m (Lcom/mojang/brigadier/context/CommandContext;)I q method_56283 method_56283 + m (Lcom/mojang/brigadier/context/CommandContext;)I r method_56284 method_56284 + m (Lcom/mojang/brigadier/context/CommandContext;)I s method_59786 method_59786 + m (Lcom/mojang/brigadier/context/CommandContext;)I t method_61102 method_61102 + m (Lcom/mojang/brigadier/context/CommandContext;)I u method_61103 method_61103 + m (Lcom/mojang/brigadier/context/CommandContext;)I v method_57963 method_57963 + m (Lcom/mojang/brigadier/context/CommandContext;)I w method_57964 method_57964 + m (Lcom/mojang/brigadier/context/CommandContext;)Ltp$a; x method_56285 method_56285 + m (Lcom/mojang/brigadier/context/CommandContext;)Ltp$a; y method_56286 method_56286 + m (Lcom/mojang/brigadier/context/CommandContext;)Ltp$a; z method_56287 method_56287 + m ()V + m ()V +c tp$a net/minecraft/class_4527$class_9121 net/minecraft/gametest/framework/TestCommand$Runner + f Ltq; a field_48506 finder + m ()I a method_56288 reset + m (I)I a method_56289 run + m (II)I a method_56290 run + m (Laqu;)V a method_56291 method_56291 + m (Laqu;Ljd;)I a method_56292 method_56292 + m (Laqu;Lorg/apache/commons/lang3/mutable/MutableBoolean;Let;Ljd;)I a method_56293 method_56293 + m (Let;Ljava/lang/Integer;)V a method_56294 method_56294 + m (Ljava/lang/String;Lxw;)Lxw; a method_59788 method_59788 + m (Ljava/util/stream/Stream;Ljava/util/function/ToIntFunction;Ljava/lang/Runnable;Ljava/util/function/Consumer;)V a method_56295 logAndRun + m (Ljd;Lorg/apache/commons/lang3/mutable/MutableInt;Ljd;)V a method_59787 method_59787 + m (Ltk;)I a method_56296 run + m (Ltk;I)I a method_56297 run + m (Ltk;II)I a method_56298 run + m (Lwz;)Lwz; a method_59789 method_59789 + m ()I b method_56299 clear + m (Laqu;)V b method_56300 method_56300 + m (Let;Ljava/lang/Integer;)V b method_56301 method_56301 + m ()I c method_56302 export + m ()I d method_56303 run + m ()I e method_59790 locate + m ()I f method_61104 verify + m (Ltq;)V +c tp$b net/minecraft/class_4527$class_9122 net/minecraft/gametest/framework/TestCommand$TestBatchSummaryDisplayer + f Let; a comp_2215 source + m ()Let; a comp_2215 source + m (Let;)V +c tp$c net/minecraft/class_4527$class_4528 net/minecraft/gametest/framework/TestCommand$TestSummaryDisplayer + f Laqu; a comp_2216 level + f Lti; b comp_2217 tracker + m ()Laqu; a comp_2216 level + m (Laqu;Lti;)V a method_56304 showTestSummaryIfAllDone + m ()Lti; b comp_2217 tracker + m (Laqu;Lti;)V +c tq net/minecraft/class_9123 net/minecraft/gametest/framework/TestFinder + f Ltt; a field_48507 NO_FUNCTIONS + f Ltl; b field_48508 NO_STRUCTURES + f Ltt; c field_48509 testFunctionFinder + f Ltl; d field_48510 structureBlockPosFinder + f Let; e field_48511 source + f Ljava/util/function/Function; f field_48512 contextProvider + m ()Let; a method_56305 source + m ()Ljava/lang/Object; b method_56306 get + m (Let;Ljava/util/function/Function;Ltt;Ltl;)V + m ()V +c tq$a net/minecraft/class_9123$class_9124 net/minecraft/gametest/framework/TestFinder$Builder + f Ljava/util/function/Function; a field_48513 contextProvider + f Ljava/util/function/UnaryOperator; b field_49663 testFunctionFinderWrapper + f Ljava/util/function/UnaryOperator; c field_49664 structureBlockPosFinderWrapper + m ()Ljava/util/stream/Stream; a method_56307 method_56307 + m (I)Ltq$a; a method_57965 createMultipleCopies + m (ILjava/util/function/Supplier;)Ljava/util/function/Supplier; a method_57966 method_57966 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/lang/Object; a method_56309 nearest + m (Lcom/mojang/brigadier/context/CommandContext;I)Ljava/lang/Object; a method_56310 radius + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/Object; a method_56311 allTestsInClass + m (Lcom/mojang/brigadier/context/CommandContext;Z)Ljava/lang/Object; a method_56312 failedTests + m (Let;)Ljava/util/stream/Stream; a method_56313 method_56313 + m (Let;Ltt;Ltl;)Ljava/lang/Object; a method_57967 build + m (Ljava/lang/String;)Ljava/util/stream/Stream; a method_56315 method_56315 + m (Ljava/util/function/Supplier;)Ljava/util/function/Supplier; a method_57968 method_57968 + m (Ljd;ILet;)Ljava/util/stream/Stream; a method_56308 method_56308 + m (Ljd;Let;)Ljava/util/stream/Stream; a method_56314 method_56314 + m (Ljd;Let;Ljava/lang/String;)Ljava/util/stream/Stream; a method_59791 method_59791 + m (Ltr;)Z a method_57969 method_57969 + m (Z)Ljava/util/stream/Stream; a method_56316 method_56316 + m (ZLtr;)Z a method_56317 method_56317 + m (I)Ljava/util/function/UnaryOperator; b method_57970 createCopies + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/lang/Object; b method_56318 allNearby + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/Object; b method_56319 byArgument + m (Ljava/util/function/Supplier;)Ljava/util/function/Supplier; b method_57971 method_57971 + m (Ljd;Let;)Ljava/util/stream/Stream; b method_56320 method_56320 + m (Ltr;)Z b method_57972 method_57972 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/lang/Object; c method_56321 lookedAt + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/Object; c method_59792 locateByName + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/lang/Object; d method_56323 allTests + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/util/stream/Stream; d method_56322 method_56322 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/lang/Object; e method_56324 failedTests + m (Ljava/util/function/Function;)V + m (Ljava/util/function/Function;Ljava/util/function/UnaryOperator;Ljava/util/function/UnaryOperator;)V +c tr net/minecraft/class_4529 net/minecraft/gametest/framework/TestFunction + f Ljava/lang/String; a comp_2218 batchName + f Ljava/lang/String; b comp_2219 testName + f Ljava/lang/String; c comp_2220 structureName + f Ldmm; d comp_2221 rotation + f I e comp_2222 maxTicks + f J f comp_2223 setupTicks + f Z g comp_2224 required + f Z h comp_2445 manualOnly + f I i comp_2225 maxAttempts + f I j comp_2226 requiredSuccesses + f Z k comp_2362 skyAccess + f Ljava/util/function/Consumer; l comp_2227 function + m ()Z a method_32257 isFlaky + m (Lsw;)V a method_22297 run + m ()Ljava/lang/String; b comp_2218 batchName + m ()Ljava/lang/String; c comp_2219 testName + m ()Ljava/lang/String; d comp_2220 structureName + m ()Ldmm; e comp_2221 rotation + m ()I f comp_2222 maxTicks + m ()J g comp_2223 setupTicks + m ()Z h comp_2224 required + m ()Z i comp_2445 manualOnly + m ()I j comp_2225 maxAttempts + m ()I k comp_2226 requiredSuccesses + m ()Z l comp_2362 skyAccess + m ()Ljava/util/function/Consumer; m comp_2227 function + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJZLjava/util/function/Consumer;)V + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldmm;IJZLjava/util/function/Consumer;)V + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldmm;IJZZIIZLjava/util/function/Consumer;)V +c ts net/minecraft/class_4530 net/minecraft/gametest/framework/TestFunctionArgument + f Ljava/util/Collection; a field_20589 EXAMPLES + m ()Lts; a method_22371 testFunctionArgument + m (Lcom/mojang/brigadier/StringReader;)Ltr; a method_22302 parse + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_56325 suggestTestFunction + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ltr; a method_22303 getTestFunction + m ()V + m ()V +c tt net/minecraft/class_9125 net/minecraft/gametest/framework/TestFunctionFinder +c tu net/minecraft/class_4531 net/minecraft/gametest/framework/TestReporter + m ()V a method_36109 finish + m (Lsx;)V a method_22304 onTestFailed + m (Lsx;)V b method_33322 onTestSuccess +c tv net/minecraft/class_6309 net/minecraft/gametest/framework/package-info +c tw net/minecraft/class_2477 net/minecraft/locale/Language + f Ljava/lang/String; a field_33187 DEFAULT + f Lorg/slf4j/Logger; b field_11490 LOGGER + f Lcom/google/gson/Gson; c field_25307 GSON + f Ljava/util/regex/Pattern; d field_11489 UNSUPPORTED_FORMAT_PATTERN + f Ltw; e field_11486 instance + m ()Ltw; a method_10517 getInstance + m (Ljava/io/InputStream;Ljava/util/function/BiConsumer;)V a method_29425 loadFromJson + m (Ljava/lang/String;)Ljava/lang/String; a method_48307 getOrDefault + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_4679 getOrDefault + m (Ljava/util/List;)Ljava/util/List; a method_30933 getVisualOrder + m (Ljava/util/function/BiConsumer;Ljava/lang/String;)V a method_51465 parseTranslations + m (Ltw;)V a method_29427 inject + m (Lxe;)Laya; a method_30934 getVisualOrder + m ()Z b method_29428 isDefaultRightToLeft + m (Ljava/lang/String;)Z b method_4678 has + m ()Ltw; c method_29429 loadDefault + m ()V + m ()V +c tw$1 net/minecraft/class_2477$1 net/minecraft/locale/Language$1 + f Ljava/util/Map; b field_25308 val$storage + m (Layb;Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_30935 method_30935 + m (Lxe;Layb;)Z a method_30936 method_30936 + m (Ljava/util/Map;)V +c tx net/minecraft/class_6310 net/minecraft/locale/package-info +c ty net/minecraft/class_2479 net/minecraft/nbt/ByteArrayTag + f Lva; a field_21024 TYPE + f I b field_41716 SELF_SIZE_IN_BYTES + f [B c field_11493 data + m (I)Ltz; a method_10523 get + m (ILtz;)Ltz; a method_17803 set + m (Ljava/util/List;)[B a method_10522 toArray + m (I)Ltz; b method_17804 remove + m (ILtz;)V b method_17805 add + m ()[B e method_10521 getAsByteArray + m ([B)V + m (Ljava/util/List;)V + m ()V +c ty$1 net/minecraft/class_2479$1 net/minecraft/nbt/ByteArrayTag$1 + m (Ljava/io/DataInput;Luk;)Lty; a method_23232 load + m (Ljava/io/DataInput;Luk;)[B d method_53886 readAccounted + m ()V +c tz net/minecraft/class_2481 net/minecraft/nbt/ByteTag + f Lva; a field_21025 TYPE + f Ltz; b field_21026 ZERO + f Ltz; c field_21027 ONE + f I w field_41717 SELF_SIZE_IN_BYTES + f B x field_11498 data + m (B)Ltz; a method_23233 valueOf + m (Z)Ltz; a method_23234 valueOf + m ()Ltz; e method_10530 copy + m (B)V + m ()V +c tz$1 net/minecraft/class_2481$1 net/minecraft/nbt/ByteTag$1 + m (Ljava/io/DataInput;Luk;)Ltz; a method_23235 load + m (Ljava/io/DataInput;Luk;)B d method_53887 readAccounted + m ()V +c tz$a net/minecraft/class_2481$class_4610 net/minecraft/nbt/ByteTag$Cache + f [Ltz; a field_21028 cache + m ()V + m ()V +c ua net/minecraft/class_2483 net/minecraft/nbt/CollectionTag + m (ILuy;)Z a method_10535 setTag + m (ILuy;)Z b method_10533 addTag + m (I)Luy; c method_10536 remove + m (ILuy;)V c method_10531 add + m (ILuy;)Luy; d method_10606 set + m ()B f method_10601 getElementType + m ()V +c ub net/minecraft/class_2487 net/minecraft/nbt/CompoundTag + f Lcom/mojang/serialization/Codec; a field_25128 CODEC + f Lva; b field_21029 TYPE + f I c field_41718 SELF_SIZE_IN_BYTES + f I w field_41719 MAP_ENTRY_SIZE_IN_BYTES + f Ljava/util/Map; x field_11515 tags + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/DataResult; a method_29141 method_29141 + m (Ljava/lang/String;)Ljava/util/UUID; a method_25926 getUUID + m (Ljava/lang/String;B)V a method_10567 putByte + m (Ljava/lang/String;D)V a method_10549 putDouble + m (Ljava/lang/String;F)V a method_10548 putFloat + m (Ljava/lang/String;I)V a method_10569 putInt + m (Ljava/lang/String;J)V a method_10544 putLong + m (Ljava/lang/String;Ljava/lang/String;)V a method_10582 putString + m (Ljava/lang/String;Ljava/util/List;)V a method_36110 putByteArray + m (Ljava/lang/String;Ljava/util/UUID;)V a method_25927 putUUID + m (Ljava/lang/String;Luy;)Luy; a method_10566 put + m (Ljava/lang/String;Luy;Ljava/io/DataOutput;)V a method_10555 writeNamedTag + m (Ljava/lang/String;Lva;Ljava/lang/ClassCastException;)Lo; a method_10559 createReport + m (Ljava/lang/String;S)V a method_10575 putShort + m (Ljava/lang/String;Z)V a method_10556 putBoolean + m (Ljava/lang/String;[B)V a method_10570 putByteArray + m (Ljava/lang/String;[I)V a method_10539 putIntArray + m (Ljava/lang/String;[J)V a method_10564 putLongArray + m (Lub;)Lub; a method_10543 merge + m (Luy;)Ljava/lang/String; a method_49665 method_49665 + m (Lva;Ljava/lang/String;Ljava/io/DataInput;Luk;)Luy; a method_10581 readNamedTagData + m (Ljava/lang/String;)Z b method_25928 hasUUID + m (Ljava/lang/String;I)Z b method_10573 contains + m (Ljava/lang/String;Ljava/util/List;)V b method_10572 putIntArray + m (Lub;)Lcom/mojang/serialization/Dynamic; b method_29142 method_29142 + m (Ljava/lang/String;)Luy; c method_10580 get + m (Ljava/lang/String;I)Luh; c method_10554 getList + m (Ljava/lang/String;Ljava/util/List;)V c method_10538 putLongArray + m (Ljava/lang/String;)B d method_10540 getTagType + m ()Ljava/util/Set; e method_10541 getAllKeys + m (Ljava/lang/String;)Z e method_10545 contains + m ()I f method_10546 size + m (Ljava/lang/String;)B f method_10571 getByte + m ()Z g method_33133 isEmpty + m (Ljava/lang/String;)S g method_10568 getShort + m ()Lub; h method_59873 shallowCopy + m (Ljava/lang/String;)I h method_10550 getInt + m ()Lub; i method_10553 copy + m (Ljava/lang/String;)J i method_10537 getLong + m ()Ljava/util/Set; j method_59874 entrySet + m (Ljava/lang/String;)F j method_10583 getFloat + m (Ljava/lang/String;)D k method_10574 getDouble + m (Ljava/lang/String;)Ljava/lang/String; l method_10558 getString + m (Ljava/lang/String;)[B m method_10547 getByteArray + m (Ljava/lang/String;)[I n method_10561 getIntArray + m (Ljava/lang/String;)[J o method_10565 getLongArray + m (Ljava/lang/String;)Lub; p method_10562 getCompound + m (Ljava/lang/String;)Z q method_10577 getBoolean + m (Ljava/lang/String;)V r method_10551 remove + m (Ljava/lang/String;)Ljava/lang/String; s method_10579 method_10579 + m (Ljava/util/Map;)V + m ()V + m ()V +c ub$1 net/minecraft/class_2487$1 net/minecraft/nbt/CompoundTag$1 + m (Ljava/io/DataInput;Luk;)Lub; a method_23240 load + m (Ljava/io/DataInput;Luv;Luk;)Luv$b; c method_53888 parseCompound + m (Ljava/io/DataInput;Luk;)Lub; d method_53889 loadCompound + m (Ljava/io/DataInput;Luk;)Ljava/lang/String; e method_53907 readString + m ()V +c ub$2 net/minecraft/class_2487$2 net/minecraft/nbt/CompoundTag$2 + f [I a field_36243 $SwitchMap$net$minecraft$nbt$StreamTagVisitor$EntryResult + f [I b field_36244 $SwitchMap$net$minecraft$nbt$StreamTagVisitor$ValueResult + m ()V +c uc net/minecraft/class_2489 net/minecraft/nbt/DoubleTag + f Luc; a field_21030 ZERO + f Lva; b field_21031 TYPE + f I c field_41720 SELF_SIZE_IN_BYTES + f D w field_11520 data + m (D)Luc; a method_23241 valueOf + m ()Luc; e method_10585 copy + m (D)V + m ()V +c uc$1 net/minecraft/class_2489$1 net/minecraft/nbt/DoubleTag$1 + m (Ljava/io/DataInput;Luk;)Luc; a method_23242 load + m (Ljava/io/DataInput;Luk;)D d method_53890 readAccounted + m ()V +c ud net/minecraft/class_2491 net/minecraft/nbt/EndTag + f Lva; a field_21032 TYPE + f Lud; b field_21033 INSTANCE + f I c field_41721 SELF_SIZE_IN_BYTES + m ()Lud; e method_10586 copy + m ()V + m ()V +c ud$1 net/minecraft/class_2491$1 net/minecraft/nbt/EndTag$1 + m (Ljava/io/DataInput;Luk;)Lud; a method_23243 load + m ()V +c ue net/minecraft/class_2494 net/minecraft/nbt/FloatTag + f Lue; a field_21034 ZERO + f Lva; b field_21035 TYPE + f I c field_41722 SELF_SIZE_IN_BYTES + f F w field_11523 data + m (F)Lue; a method_23244 valueOf + m ()Lue; e method_10587 copy + m (F)V + m ()V +c ue$1 net/minecraft/class_2494$1 net/minecraft/nbt/FloatTag$1 + m (Ljava/io/DataInput;Luk;)Lue; a method_23245 load + m (Ljava/io/DataInput;Luk;)F d method_53891 readAccounted + m ()V +c uf net/minecraft/class_2495 net/minecraft/nbt/IntArrayTag + f Lva; a field_21036 TYPE + f I b field_41723 SELF_SIZE_IN_BYTES + f [I c field_11524 data + m (I)Lug; a method_10589 get + m (ILug;)Lug; a method_17806 set + m (Ljava/util/List;)[I a method_10590 toArray + m (I)Lug; b method_17807 remove + m (ILug;)V b method_17808 add + m ()Luf; e method_10591 copy + m ()[I g method_10588 getAsIntArray + m ([I)V + m (Ljava/util/List;)V + m ()V +c uf$1 net/minecraft/class_2495$1 net/minecraft/nbt/IntArrayTag$1 + m (Ljava/io/DataInput;Luk;)Luf; a method_23246 load + m (Ljava/io/DataInput;Luk;)[I d method_53892 readAccounted + m ()V +c ug net/minecraft/class_2497 net/minecraft/nbt/IntTag + f Lva; a field_21037 TYPE + f I b field_41724 SELF_SIZE_IN_BYTES + f I c field_11525 data + m (I)Lug; a method_23247 valueOf + m ()Lug; e method_10592 copy + m (I)V + m ()V +c ug$1 net/minecraft/class_2497$1 net/minecraft/nbt/IntTag$1 + m (Ljava/io/DataInput;Luk;)Lug; a method_23248 load + m (Ljava/io/DataInput;Luk;)I d method_53893 readAccounted + m ()V +c ug$a net/minecraft/class_2497$class_4611 net/minecraft/nbt/IntTag$Cache + f [Lug; a field_21038 cache + f I b field_33197 HIGH + f I c field_33198 LOW + m ()V + m ()V +c uh net/minecraft/class_2499 net/minecraft/nbt/ListTag + f Lva; a field_21039 TYPE + f I b field_41725 SELF_SIZE_IN_BYTES + f Ljava/util/List; c field_11550 list + f B w field_11551 type + m (I)Lub; a method_10602 getCompound + m (Luy;)Z a method_10605 updateType + m (I)Luh; b method_10603 getList + m (I)S d method_10609 getShort + m ()Luh; e method_10612 copy + m (I)I e method_10600 getInt + m (I)[I f method_36111 getIntArray + m ()V g method_17809 updateTypeAfterRemove + m (I)[J g method_36112 getLongArray + m (I)D h method_10611 getDouble + m (I)F i method_10604 getFloat + m (I)Ljava/lang/String; j method_10608 getString + m (I)Luy; k method_10534 get + m (Ljava/util/List;B)V + m ()V + m ()V +c uh$1 net/minecraft/class_2499$1 net/minecraft/nbt/ListTag$1 + m (Ljava/io/DataInput;Luk;)Luh; a method_23249 load + m (Ljava/io/DataInput;Luv;Luk;)Luv$b; c method_53894 parseList + m (Ljava/io/DataInput;Luk;)Luh; d method_53895 loadList + m ()V +c uh$2 net/minecraft/class_2499$2 net/minecraft/nbt/ListTag$2 + f [I a field_36245 $SwitchMap$net$minecraft$nbt$StreamTagVisitor$ValueResult + f [I b field_36246 $SwitchMap$net$minecraft$nbt$StreamTagVisitor$EntryResult + m ()V +c ui net/minecraft/class_2501 net/minecraft/nbt/LongArrayTag + f Lva; a field_21040 TYPE + f I b field_41726 SELF_SIZE_IN_BYTES + f [J c field_11552 data + m (I)Luj; a method_10616 get + m (ILuj;)Luj; a method_17810 set + m (Ljava/util/List;)[J a method_10617 toArray + m (I)Luj; b method_17811 remove + m (ILuj;)V b method_17812 add + m ()Lui; e method_10618 copy + m ()[J g method_10615 getAsLongArray + m ([J)V + m (Lit/unimi/dsi/fastutil/longs/LongSet;)V + m (Ljava/util/List;)V + m ()V +c ui$1 net/minecraft/class_2501$1 net/minecraft/nbt/LongArrayTag$1 + m (Ljava/io/DataInput;Luk;)Lui; a method_23250 load + m (Ljava/io/DataInput;Luk;)[J d method_53896 readAccounted + m ()V +c uj net/minecraft/class_2503 net/minecraft/nbt/LongTag + f Lva; a field_21041 TYPE + f I b field_41727 SELF_SIZE_IN_BYTES + f J c field_11553 data + m (J)Luj; a method_23251 valueOf + m ()Luj; e method_10621 copy + m (J)V + m ()V +c uj$1 net/minecraft/class_2503$1 net/minecraft/nbt/LongTag$1 + m (Ljava/io/DataInput;Luk;)Luj; a method_23252 load + m (Ljava/io/DataInput;Luk;)J d method_53897 readAccounted + m ()V +c uj$a net/minecraft/class_2503$class_4612 net/minecraft/nbt/LongTag$Cache + f [Luj; a field_21042 cache + f I b field_33202 HIGH + f I c field_33203 LOW + m ()V + m ()V +c uk net/minecraft/class_2505 net/minecraft/nbt/NbtAccounter + f I a field_46208 MAX_STACK_DEPTH + f J b field_11557 quota + f J c field_11555 usage + f I d field_46209 maxDepth + f I e field_46210 depth + m ()Luk; a method_53898 unlimitedHeap + m (J)Luk; a method_53899 create + m (JJ)V a method_53908 accountBytes + m ()V b method_53900 pushDepth + m (J)V b method_48004 accountBytes + m ()V c method_53901 popDepth + m ()J d method_47987 getUsage + m ()I e method_53902 getDepth + m (JI)V +c ul net/minecraft/class_8801 net/minecraft/nbt/NbtAccounterException + m (Ljava/lang/String;)V +c um net/minecraft/class_8909 net/minecraft/nbt/NbtException + m (Ljava/lang/String;)V +c un net/minecraft/class_8910 net/minecraft/nbt/NbtFormatException + m (Ljava/lang/String;)V +c uo net/minecraft/class_2507 net/minecraft/nbt/NbtIo + f [Ljava/nio/file/OpenOption; a field_47513 SYNC_OUTPUT_OPTIONS + m (Ljava/io/DataInput;)Lub; a method_10627 read + m (Ljava/io/DataInput;Luk;)Lub; a method_10625 read + m (Ljava/io/DataInput;Luk;B)Luy; a method_52892 readTagSafe + m (Ljava/io/DataInput;Luv;Luk;)V a method_39855 parse + m (Ljava/io/InputStream;)Ljava/io/DataInputStream; a method_40059 createDecompressorStream + m (Ljava/io/InputStream;Luk;)Lub; a method_10629 readCompressed + m (Ljava/io/InputStream;Luv;Luk;)V a method_40058 parseCompressed + m (Ljava/io/OutputStream;)Ljava/io/DataOutputStream; a method_54906 createCompressorStream + m (Ljava/nio/file/Path;)Lub; a method_10633 read + m (Ljava/nio/file/Path;Luk;)Lub; a method_30613 readCompressed + m (Ljava/nio/file/Path;Luv;Luk;)V a method_40057 parseCompressed + m (Lub;Ljava/io/DataOutput;)V a method_10628 write + m (Lub;Ljava/io/OutputStream;)V a method_10634 writeCompressed + m (Lub;Ljava/nio/file/Path;)V a method_30614 writeCompressed + m (Luy;Ljava/io/DataOutput;)V a method_52893 writeAnyTag + m (Ljava/io/DataInput;Luk;)Luy; b method_52894 readAnyTag + m (Lub;Ljava/nio/file/Path;)V b method_10630 write + m (Luy;Ljava/io/DataOutput;)V b method_10631 writeUnnamedTag + m (Ljava/io/DataInput;Luk;)Luy; c method_10626 readUnnamedTag + m (Luy;Ljava/io/DataOutput;)V c method_55324 writeUnnamedTagWithFallback + m ()V + m ()V +c uo$1 net/minecraft/class_2507$1 net/minecraft/nbt/NbtIo$1 + f [I a field_36247 $SwitchMap$net$minecraft$nbt$StreamTagVisitor$ValueResult + m ()V +c uo$a net/minecraft/class_2507$class_9003 net/minecraft/nbt/NbtIo$StringFallbackDataOutput + m (Ljava/io/DataOutput;)V +c up net/minecraft/class_2509 net/minecraft/nbt/NbtOps + f Lup; a field_11560 INSTANCE + f Ljava/lang/String; b field_40667 WRAPPER_MARKER + m ()Luy; a method_10668 empty + m (B)Luy; a method_10640 createByte + m (D)Luy; a method_10652 createDouble + m (F)Luy; a method_10662 createFloat + m (I)Luy; a method_10661 createInt + m (J)Luy; a method_10654 createLong + m (Lcom/mojang/serialization/DynamicOps;Luy;)Ljava/lang/Object; a method_29146 convertTo + m (Ljava/lang/Number;)Luy; a method_10660 createNumeric + m (Ljava/lang/String;)Luy; a method_10639 createString + m (Ljava/nio/ByteBuffer;)Luy; a method_10657 createByteList + m (Ljava/util/List;)Ljava/lang/String; a method_59875 method_59875 + m (Ljava/util/List;Lub;Lcom/mojang/datafixers/util/Pair;)V a method_29147 method_29147 + m (Ljava/util/List;Lup$f;)Lcom/mojang/serialization/DataResult; a method_46230 method_46230 + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_10638 method_10638 + m (Ljava/util/stream/IntStream;)Luy; a method_10663 createIntList + m (Ljava/util/stream/LongStream;)Luy; a method_10643 createLongList + m (Ljava/util/stream/Stream;)Luy; a method_10655 createMap + m (Lub;)Luy; a method_46232 tryUnwrap + m (Lub;Lcom/mojang/datafixers/util/Pair;)V a method_29152 method_29152 + m (Lub;Ljava/util/function/BiConsumer;)V a method_29153 method_29153 + m (Luh;Ljava/util/function/Consumer;)V a method_59876 method_59876 + m (Luy;)Lcom/mojang/serialization/DataResult; a method_10645 getNumberValue + m (Luy;Lcom/mojang/serialization/MapLike;)Lcom/mojang/serialization/DataResult; a method_29154 mergeToMap + m (Luy;Ljava/lang/String;)Luy; a method_10648 remove + m (Luy;Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_29155 mergeToList + m (Luy;Ljava/util/Map;)Lcom/mojang/serialization/DataResult; a method_59877 mergeToMap + m (Luy;Lup$f;)Lcom/mojang/serialization/DataResult; a method_46234 method_46234 + m (Luy;Luy;)Lcom/mojang/serialization/DataResult; a method_29156 mergeToList + m (Luy;Luy;Luy;)Lcom/mojang/serialization/DataResult; a method_29157 mergeToMap + m (S)Luy; a method_10635 createShort + m (Z)Luy; a method_23253 createBoolean + m ()Ljava/lang/String; b method_49667 method_49667 + m (Ljava/util/List;)Ljava/lang/String; b method_49666 method_49666 + m (Ljava/util/stream/Stream;)Luy; b method_10665 createList + m (Luy;)Lcom/mojang/serialization/DataResult; b method_10656 getStringValue + m ()Ljava/lang/String; c method_49668 method_49668 + m (Luy;)Lcom/mojang/serialization/DataResult; c method_10669 getMapValues + m ()Ljava/lang/String; d method_49669 method_49669 + m (Luy;)Lcom/mojang/serialization/DataResult; d method_29162 getMapEntries + m (Luy;)Lcom/mojang/serialization/DataResult; e method_29163 getMap + m (Luy;)Lcom/mojang/serialization/DataResult; f method_10664 getStream + m (Luy;)Lcom/mojang/serialization/DataResult; g method_29164 getList + m (Luy;)Lcom/mojang/serialization/DataResult; h method_10646 getByteBuffer + m (Luy;)Lcom/mojang/serialization/DataResult; i method_10651 getIntStream + m (Luy;)Lcom/mojang/serialization/DataResult; j method_10637 getLongStream + m (Luy;)Ljava/util/Optional; k method_46235 createCollector + m (Luy;)Ljava/lang/String; l method_49670 method_49670 + m (Luy;)Luy; m method_10667 method_10667 + m (Luy;)Luy; n method_46236 method_46236 + m (Luy;)Ljava/lang/String; o method_49671 method_49671 + m (Luy;)Ljava/lang/String; p method_49672 method_49672 + m (Luy;)Ljava/lang/String; q method_49673 method_49673 + m (Luy;)Ljava/lang/String; r method_59878 method_59878 + m (Luy;)Ljava/lang/String; s method_49674 method_49674 + m (Luy;)Ljava/lang/String; t method_49675 method_49675 + m (Luy;)Ljava/lang/String; u method_49676 method_49676 + m (Luy;)Lcom/mojang/serialization/DataResult; v method_46237 method_46237 + m (Luy;)Ljava/lang/String; w method_49677 method_49677 + m (Luy;)Lcom/mojang/serialization/DataResult; x method_46238 method_46238 + m (Luy;)Ljava/lang/String; y method_49678 method_49678 + m ()V + m ()V +c up$1 net/minecraft/class_2509$1 net/minecraft/nbt/NbtOps$1 + f Lub; a field_25129 val$tag + f Lup; b field_25130 field_25130 + m (Ljava/lang/String;)Luy; a method_29165 get + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_29166 method_29166 + m (Luy;)Luy; a method_29167 get + m (Lup;Lub;)V +c up$a net/minecraft/class_2509$class_7808 net/minecraft/nbt/NbtOps$ByteListCollector + f Lit/unimi/dsi/fastutil/bytes/ByteArrayList; a field_40668 values + m (B)V + m ([B)V +c up$b net/minecraft/class_2509$class_7809 net/minecraft/nbt/NbtOps$HeterogenousListCollector + f Luh; a field_40669 result + m (B)V a method_46241 method_46241 + m (I)V a method_46242 method_46242 + m (J)V a method_46243 method_46243 + m (Lub;)Z a method_46244 isWrapper + m (Luy;)Luy; b method_46245 wrapIfNeeded + m (Luy;)Lub; c method_46246 wrapElement + m ()V + m (Ljava/util/Collection;)V + m (Lit/unimi/dsi/fastutil/ints/IntArrayList;)V + m (Lit/unimi/dsi/fastutil/bytes/ByteArrayList;)V + m (Lit/unimi/dsi/fastutil/longs/LongArrayList;)V +c up$c net/minecraft/class_2509$class_7810 net/minecraft/nbt/NbtOps$HomogenousListCollector + f Luh; a field_40670 result + m (Luy;)V + m (Luh;)V +c up$d net/minecraft/class_2509$class_7811 net/minecraft/nbt/NbtOps$InitialListCollector + f Lup$d; a field_40671 INSTANCE + m ()V + m ()V +c up$e net/minecraft/class_2509$class_7812 net/minecraft/nbt/NbtOps$IntListCollector + f Lit/unimi/dsi/fastutil/ints/IntArrayList; a field_40672 values + m (I)V + m ([I)V +c up$f net/minecraft/class_2509$class_7813 net/minecraft/nbt/NbtOps$ListCollector + m ()Luy; a method_46239 result + m (Ljava/lang/Iterable;)Lup$f; a method_46247 acceptAll + m (Ljava/util/stream/Stream;)Lup$f; a method_46248 acceptAll + m (Luy;)Lup$f; a method_46240 accept +c up$g net/minecraft/class_2509$class_7814 net/minecraft/nbt/NbtOps$LongListCollector + f Lit/unimi/dsi/fastutil/longs/LongArrayList; a field_40673 values + m (J)V + m ([J)V +c up$h net/minecraft/class_2509$class_5320 net/minecraft/nbt/NbtOps$NbtRecordBuilder + m ()Lub; a method_29168 initBuilder + m (Ljava/lang/String;Luy;Lub;)Lub; a method_29169 append + m (Lub;Luy;)Lcom/mojang/serialization/DataResult; a method_29170 build + m (Luy;)Ljava/lang/String; a method_49679 method_49679 + m (Lup;)V +c uq net/minecraft/class_2512 net/minecraft/nbt/NbtUtils + f Ljava/lang/String; a field_33224 SNBT_DATA_TAG + f Ljava/util/Comparator; b field_27816 YXZ_LISTTAG_INT_COMPARATOR + f Ljava/util/Comparator; c field_27817 YXZ_LISTTAG_DOUBLE_COMPARATOR + f C d field_33225 PROPERTIES_START + f C e field_33226 PROPERTIES_END + f Ljava/lang/String; f field_33227 ELEMENT_SEPARATOR + f C g field_33228 KEY_VALUE_SEPARATOR + f Lcom/google/common/base/Splitter; h field_27818 COMMA_SPLITTER + f Lcom/google/common/base/Splitter; i field_27819 COLON_SPLITTER + f Lorg/slf4j/Logger; j field_11582 LOGGER + f I k field_33229 INDENT + f I l field_33230 NOT_FOUND + m (ILjava/lang/StringBuilder;)Ljava/lang/StringBuilder; a method_36114 indent + m (Ldtc;)Lub; a method_10686 writeBlockState + m (Ldte;Lduf;Ljava/lang/String;Lub;Lub;)Ldte; a method_10682 setValueHelper + m (Lduf;Ljava/lang/Comparable;)Ljava/lang/String; a method_10685 getName + m (Lepe;)Lub; a method_36115 writeFluidState + m (Ljava/lang/String;)Lub; a method_32260 snbtToStructure + m (Ljava/lang/StringBuilder;Luy;IZ)Ljava/lang/StringBuilder; a method_36116 prettyPrint + m (Ljava/util/Map;Lub;)Luh; a method_32261 method_32261 + m (Ljava/util/UUID;)Luf; a method_25929 createUUID + m (Ljd;)Luy; a method_10692 writeBlockPos + m (Ljn;Lub;)Ldtc; a method_10681 readBlockState + m (Lub;)Ljava/lang/String; a method_32271 structureToSnbt + m (Lub;I)Lub; a method_48308 addDataVersion + m (Lub;Ljava/lang/String;)Ljava/util/Optional; a method_10691 readBlockPos + m (Lub;Ljava/lang/String;Ljava/lang/String;)V a method_32263 method_32263 + m (Luh;)D a method_32264 method_32264 + m (Luh;Lub;)V a method_32265 method_32265 + m (Luh;Luh;Luh;)V a method_32266 method_32266 + m (Luy;)Ljava/util/UUID; a method_25930 loadUUID + m (Luy;Luy;Z)Z a method_10687 compareNbt + m (Luy;Z)Ljava/lang/String; a method_36117 prettyPrint + m (Ljava/lang/String;)Lub; b method_32267 unpackBlockState + m (Lub;)Lub; b method_32273 packStructureTemplate + m (Lub;I)I b method_48309 getDataVersion + m (Lub;Ljava/lang/String;)Ljava/lang/String; b method_32262 method_32262 + m (Luh;)D b method_32268 method_32268 + m (Luy;)Ljava/lang/String; b method_36118 prettyPrint + m (Lub;)Lub; c method_32275 unpackStructureTemplate + m (Luh;)D c method_32269 method_32269 + m (Luy;)Lwz; c method_32270 toPrettyComponent + m (Lub;)Ljava/lang/String; d method_32277 packBlockState + m (Luh;)I d method_32272 method_32272 + m (Lub;)Lub; e method_48310 addCurrentDataVersion + m (Luh;)I e method_32274 method_32274 + m (Lub;)Luh; f method_32278 method_32278 + m (Luh;)I f method_32276 method_32276 + m (Lub;)Luh; g method_32279 method_32279 + m ()V + m ()V +c ur net/minecraft/class_2514 net/minecraft/nbt/NumericTag + m ()J f method_10699 getAsLong + m ()I g method_10701 getAsInt + m ()S h method_10696 getAsShort + m ()B i method_10698 getAsByte + m ()D j method_10697 getAsDouble + m ()F k method_10700 getAsFloat + m ()Ljava/lang/Number; l method_10702 getAsNumber + m ()V +c us net/minecraft/class_8911 net/minecraft/nbt/ReportedNbtException + m (Lo;)V +c ut net/minecraft/class_2516 net/minecraft/nbt/ShortTag + f Lva; a field_21043 TYPE + f I b field_41728 SELF_SIZE_IN_BYTES + f S c field_11588 data + m (S)Lut; a method_23254 valueOf + m ()Lut; e method_10704 copy + m (S)V + m ()V +c ut$1 net/minecraft/class_2516$1 net/minecraft/nbt/ShortTag$1 + m (Ljava/io/DataInput;Luk;)Lut; a method_23255 load + m (Ljava/io/DataInput;Luk;)S d method_53903 readAccounted + m ()V +c ut$a net/minecraft/class_2516$class_4613 net/minecraft/nbt/ShortTag$Cache + f [Lut; a field_21044 cache + f I b field_33232 HIGH + f I c field_33233 LOW + m ()V + m ()V +c uu net/minecraft/class_5625 net/minecraft/nbt/SnbtPrinterTagVisitor + f Ljava/util/Map; a field_27820 KEY_ORDER + f Ljava/util/Set; b field_27821 NO_INDENTATION + f Ljava/util/regex/Pattern; c field_27822 SIMPLE_VALUE + f Ljava/lang/String; d field_27823 NAME_VALUE_SEPARATOR + f Ljava/lang/String; e field_27824 ELEMENT_SEPARATOR + f Ljava/lang/String; f field_33234 LIST_OPEN + f Ljava/lang/String; g field_33235 LIST_CLOSE + f Ljava/lang/String; h field_33236 LIST_TYPE_SEPARATOR + f Ljava/lang/String; i field_33237 ELEMENT_SPACING + f Ljava/lang/String; j field_33238 STRUCT_OPEN + f Ljava/lang/String; k field_33239 STRUCT_CLOSE + f Ljava/lang/String; l field_33240 NEWLINE + f Ljava/lang/String; m field_27825 indentation + f I n field_27826 depth + f Ljava/util/List; o field_27827 path + f Ljava/lang/String; p field_27828 result + m ()Ljava/lang/String; a method_32280 pathString + m (Ljava/lang/String;)Ljava/lang/String; a method_32281 handleEscapePretty + m (Ljava/util/HashMap;)V a method_32282 method_32282 + m (Luy;)Ljava/lang/String; a method_32283 visit + m ()V b method_32284 popPath + m (Ljava/lang/String;)V b method_32285 pushPath + m (Lub;)Ljava/util/List; b method_32286 getKeys + m ()V + m (Ljava/lang/String;ILjava/util/List;)V + m ()V +c uv net/minecraft/class_6836 net/minecraft/nbt/StreamTagVisitor + m ()Luv$b; a method_39856 visitEnd + m (B)Luv$b; a method_39857 visit + m (D)Luv$b; a method_39858 visit + m (F)Luv$b; a method_39859 visit + m (I)Luv$b; a method_39860 visit + m (J)Luv$b; a method_39861 visit + m (Ljava/lang/String;)Luv$b; a method_39862 visit + m (Lva;)Luv$a; a method_39863 visitEntry + m (Lva;I)Luv$b; a method_39864 visitList + m (Lva;Ljava/lang/String;)Luv$a; a method_39865 visitEntry + m (S)Luv$b; a method_39866 visit + m ([B)Luv$b; a method_39867 visit + m ([I)Luv$b; a method_39868 visit + m ([J)Luv$b; a method_39869 visit + m ()Luv$b; b method_39870 visitContainerEnd + m (Lva;)Luv$b; b method_39871 visitRootEntry + m (Lva;I)Luv$a; b method_39872 visitElement +c uv$a net/minecraft/class_6836$class_6837 net/minecraft/nbt/StreamTagVisitor$EntryResult + f Luv$a; a field_36248 ENTER + f Luv$a; b field_36249 SKIP + f Luv$a; c field_36250 BREAK + f Luv$a; d field_36251 HALT + f [Luv$a; e field_36252 $VALUES + m ()[Luv$a; a method_39873 $values + m (Ljava/lang/String;I)V + m ()V +c uv$b net/minecraft/class_6836$class_6838 net/minecraft/nbt/StreamTagVisitor$ValueResult + f Luv$b; a field_36253 CONTINUE + f Luv$b; b field_36254 BREAK + f Luv$b; c field_36255 HALT + f [Luv$b; d field_36256 $VALUES + m ()[Luv$b; a method_39874 $values + m (Ljava/lang/String;I)V + m ()V +c uw net/minecraft/class_2519 net/minecraft/nbt/StringTag + f Ljava/lang/String; A field_11590 data + f Lva; a field_21045 TYPE + f I b field_41729 SELF_SIZE_IN_BYTES + f Luw; c field_21046 EMPTY + f C w field_33242 DOUBLE_QUOTE + f C x field_33243 SINGLE_QUOTE + f C y field_33244 ESCAPE + f C z field_33245 NOT_SET + m (Ljava/io/DataInput;)V a method_39875 skipString + m (Ljava/lang/String;)Luw; a method_23256 valueOf + m (Ljava/lang/String;)Ljava/lang/String; b method_10706 quoteAndEscape + m ()Luw; e method_10705 copy + m (Ljava/lang/String;)V + m ()V +c uw$1 net/minecraft/class_2519$1 net/minecraft/nbt/StringTag$1 + m (Ljava/io/DataInput;Luk;)Luw; a method_23257 load + m (Ljava/io/DataInput;Luk;)Ljava/lang/String; d method_53904 readAccounted + m ()V +c ux net/minecraft/class_5626 net/minecraft/nbt/StringTagVisitor + f Ljava/util/regex/Pattern; a field_27829 SIMPLE_VALUE + f Ljava/lang/StringBuilder; b field_27830 builder + m (Ljava/lang/String;)Ljava/lang/String; a method_32287 handleEscape + m (Luy;)Ljava/lang/String; a method_32288 visit + m ()V + m ()V +c uy net/minecraft/class_2520 net/minecraft/nbt/Tag + f I d field_33246 OBJECT_HEADER + f I e field_33247 ARRAY_HEADER + f I f field_33248 OBJECT_REFERENCE + f I g field_33249 STRING_SIZE + f B h field_33250 TAG_END + f B i field_33251 TAG_BYTE + f B j field_33252 TAG_SHORT + f B k field_33253 TAG_INT + f B l field_33254 TAG_LONG + f B m field_33255 TAG_FLOAT + f B n field_33256 TAG_DOUBLE + f B o field_33257 TAG_BYTE_ARRAY + f B p field_33258 TAG_STRING + f B q field_33259 TAG_LIST + f B r field_33260 TAG_COMPOUND + f B s field_33261 TAG_INT_ARRAY + f B t field_33262 TAG_LONG_ARRAY + f B u field_33263 TAG_ANY_NUMERIC + f I v field_33264 MAX_DEPTH + m ()I a method_47988 sizeInBytes + m (Ljava/io/DataOutput;)V a method_10713 write + m (Luv;)Luv$b; a method_39850 accept + m (Lvc;)V a method_32289 accept + m ()B b method_10711 getId + m (Luv;)V b method_39876 acceptAsRoot + m ()Lva; c method_23258 getType + m ()Luy; d method_10707 copy + m ()Ljava/lang/String; s_ method_10714 getAsString +c uz net/minecraft/class_2522 net/minecraft/nbt/TagParser + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_11602 ERROR_TRAILING_DATA + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_11608 ERROR_EXPECTED_KEY + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_11605 ERROR_EXPECTED_VALUE + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; d field_11603 ERROR_INSERT_MIXED_LIST + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; e field_11597 ERROR_INSERT_MIXED_ARRAY + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; f field_11604 ERROR_INVALID_ARRAY + f C g field_33265 ELEMENT_SEPARATOR + f C h field_33266 NAME_VALUE_SEPARATOR + f Lcom/mojang/serialization/Codec; i field_45952 AS_CODEC + f Lcom/mojang/serialization/Codec; j field_51469 LENIENT_CODEC + f C k field_33267 LIST_OPEN + f C l field_33268 LIST_CLOSE + f C m field_33269 STRUCT_CLOSE + f C n field_33270 STRUCT_OPEN + f Ljava/util/regex/Pattern; o field_11607 DOUBLE_PATTERN_NOSUFFIX + f Ljava/util/regex/Pattern; p field_11600 DOUBLE_PATTERN + f Ljava/util/regex/Pattern; q field_11596 FLOAT_PATTERN + f Ljava/util/regex/Pattern; r field_11606 BYTE_PATTERN + f Ljava/util/regex/Pattern; s field_11609 LONG_PATTERN + f Ljava/util/regex/Pattern; t field_11601 SHORT_PATTERN + f Ljava/util/regex/Pattern; u field_11599 INT_PATTERN + f Lcom/mojang/brigadier/StringReader; v field_11598 reader + m ()Lub; a method_10721 readSingleStruct + m (C)V a method_10719 expect + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_10720 method_10720 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_10724 method_10724 + m (Ljava/lang/String;)Lub; a method_10718 parseTag + m (Lva;Lva;)Ljava/util/List; a method_10728 readArray + m ()Ljava/lang/String; b method_10725 readKey + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_10730 method_10730 + m (Ljava/lang/String;)Luy; b method_10731 type + m ()Luy; c method_10722 readTypedValue + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; c method_53502 method_53502 + m ()Luy; d method_10723 readValue + m ()Luy; e method_10717 readList + m ()Lub; f method_10727 readStruct + m ()Luy; g method_10729 readListTag + m ()Luy; h method_10726 readArrayTag + m ()Z i method_10716 hasElementSeparator + m (Lcom/mojang/brigadier/StringReader;)V + m ()V +c va net/minecraft/class_4614 net/minecraft/nbt/TagType + m ()Ljava/lang/String; a method_23259 getName + m (I)Lva; a method_23260 createInvalid + m (Ljava/io/DataInput;ILuk;)V a method_39854 skip + m (Ljava/io/DataInput;Luv;Luk;)Luv$b; a method_39852 parse + m ()Ljava/lang/String; b method_23261 getPrettyName + m (Ljava/io/DataInput;Luk;)V b method_39851 skip + m (Ljava/io/DataInput;Luv;Luk;)V b method_39877 parseRoot + m (Ljava/io/DataInput;Luk;)Luy; c method_23262 load + m ()Z d method_23263 isValue +c va$1 net/minecraft/class_4614$1 net/minecraft/nbt/TagType$1 + f I a field_21047 val$id + m (Ljava/io/DataInput;Luk;)Lud; a method_23264 load + m ()Ljava/io/IOException; c method_39878 createException + m (I)V +c va$2 net/minecraft/class_4614$2 net/minecraft/nbt/TagType$2 + f [I a field_36257 $SwitchMap$net$minecraft$nbt$StreamTagVisitor$ValueResult + m ()V +c va$a net/minecraft/class_4614$class_6839 net/minecraft/nbt/TagType$StaticSize + m ()I c method_39853 size +c va$b net/minecraft/class_4614$class_6840 net/minecraft/nbt/TagType$VariableSize +c vb net/minecraft/class_4615 net/minecraft/nbt/TagTypes + f [Lva; a field_21048 TYPES + m (I)Lva; a method_23265 getType + m ()V + m ()V +c vc net/minecraft/class_5627 net/minecraft/nbt/TagVisitor + m (Lty;)V a method_32290 visitByteArray + m (Ltz;)V a method_32291 visitByte + m (Lub;)V a method_32292 visitCompound + m (Luc;)V a method_32293 visitDouble + m (Lud;)V a method_32294 visitEnd + m (Lue;)V a method_32295 visitFloat + m (Luf;)V a method_32296 visitIntArray + m (Lug;)V a method_32297 visitInt + m (Luh;)V a method_32298 visitList + m (Lui;)V a method_32299 visitLongArray + m (Luj;)V a method_32300 visitLong + m (Lut;)V a method_32301 visitShort + m (Luw;)V a method_32302 visitString +c vd net/minecraft/class_5628 net/minecraft/nbt/TextComponentTagVisitor + f Lwz; A field_51918 FLOAT_TYPE + f Lwz; B field_51919 DOUBLE_TYPE + f Lwz; C field_51920 BYTE_ARRAY_TYPE + f Ljava/lang/String; D field_27840 indentation + f I E field_51499 indentDepth + f I F field_27841 depth + f Lxn; G field_27842 result + f Lorg/slf4j/Logger; a field_27831 LOGGER + f I b field_33271 INLINE_LIST_THRESHOLD + f I c field_51497 MAX_DEPTH + f I d field_51921 MAX_LENGTH + f Lit/unimi/dsi/fastutil/bytes/ByteCollection; e field_27832 INLINE_ELEMENT_TYPES + f Ln; f field_27833 SYNTAX_HIGHLIGHTING_KEY + f Ln; g field_27834 SYNTAX_HIGHLIGHTING_STRING + f Ln; h field_27835 SYNTAX_HIGHLIGHTING_NUMBER + f Ln; i field_27836 SYNTAX_HIGHLIGHTING_NUMBER_TYPE + f Ljava/util/regex/Pattern; j field_27837 SIMPLE_VALUE + f Ljava/lang/String; k field_33272 LIST_OPEN + f Ljava/lang/String; l field_33273 LIST_CLOSE + f Ljava/lang/String; m field_33274 LIST_TYPE_SEPARATOR + f Ljava/lang/String; n field_33275 ELEMENT_SPACING + f Ljava/lang/String; o field_33276 STRUCT_OPEN + f Ljava/lang/String; p field_33277 STRUCT_CLOSE + f Ljava/lang/String; q field_33278 NEWLINE + f Ljava/lang/String; r field_51922 NAME_VALUE_SEPARATOR + f Ljava/lang/String; s field_27839 ELEMENT_SEPARATOR + f Ljava/lang/String; t field_51923 WRAPPED_ELEMENT_SEPARATOR + f Ljava/lang/String; u field_51924 SPACED_ELEMENT_SEPARATOR + f Lwz; v field_51925 FOLDED + f Lwz; w field_51926 BYTE_TYPE + f Lwz; x field_51927 SHORT_TYPE + f Lwz; y field_51928 INT_TYPE + f Lwz; z field_51929 LONG_TYPE + m (Ljava/lang/String;)Lwz; a method_32304 handleEscapePretty + m (Luy;)Lwz; a method_32305 visit + m (Luy;Z)V a method_60585 appendSubTag + m (Ljava/lang/String;)V + m ()V +c ve net/minecraft/class_6311 net/minecraft/nbt/package-info +c vf net/minecraft/class_6841 net/minecraft/nbt/visitors/CollectFields + f I a field_36258 fieldsToGetCount + f Ljava/util/Set; b field_36259 wantedTypes + f Ljava/util/Deque; c field_36260 stack + m ()I c method_39879 getMissingFieldCount + m ([Lvh;)V +c vg net/minecraft/class_6844 net/minecraft/nbt/visitors/CollectToTag + f Ljava/lang/String; a field_36261 lastId + f Luy; b field_36262 rootTag + f Ljava/util/Deque; c field_36263 consumerStack + m (Lub;Luy;)V a method_39882 method_39882 + m (Luy;)V a method_39883 appendEntry + m (Lub;Luy;)V b method_39884 method_39884 + m (Luy;)V b method_39885 method_39885 + m (Lva;)V c method_39886 enterContainerIfNeeded + m ()Luy; d method_39887 getResult + m ()I e method_39888 depth + m ()V +c vh net/minecraft/class_6843 net/minecraft/nbt/visitors/FieldSelector + f Ljava/util/List; a comp_318 path + f Lva; b comp_319 type + f Ljava/lang/String; c comp_320 name + m ()Ljava/util/List; a comp_318 path + m ()Lva; b comp_319 type + m ()Ljava/lang/String; c comp_320 name + m (Lva;Ljava/lang/String;)V + m (Ljava/lang/String;Lva;Ljava/lang/String;)V + m (Ljava/lang/String;Ljava/lang/String;Lva;Ljava/lang/String;)V + m (Ljava/util/List;Lva;Ljava/lang/String;)V +c vi net/minecraft/class_6842 net/minecraft/nbt/visitors/FieldTree + f I a comp_315 depth + f Ljava/util/Map; b comp_323 selectedFields + f Ljava/util/Map; c comp_317 fieldsToRecurse + m ()Lvi; a method_40060 createRoot + m (Ljava/lang/String;)Lvi; a method_39880 method_39880 + m (Lva;Ljava/lang/String;)Z a method_40061 isSelected + m (Lvh;)V a method_39881 addEntry + m ()I b comp_315 depth + m ()Ljava/util/Map; c comp_323 selectedFields + m ()Ljava/util/Map; d comp_317 fieldsToRecurse + m (I)V + m (ILjava/util/Map;Ljava/util/Map;)V +c vj net/minecraft/class_6845 net/minecraft/nbt/visitors/SkipAll + f Lvj; a field_36264 INSTANCE + m ()V +c vj$1 net/minecraft/class_6845$1 net/minecraft/nbt/visitors/SkipAll$1 + m ()V +c vk net/minecraft/class_6856 net/minecraft/nbt/visitors/SkipFields + f Ljava/util/Deque; a field_36378 stack + m ([Lvh;)V +c vl net/minecraft/class_6846 net/minecraft/nbt/visitors/package-info +c vm net/minecraft/class_8762 net/minecraft/network/BandwidthDebugMonitor + f Ljava/util/concurrent/atomic/AtomicInteger; a field_45953 bytesReceived + f Lblr; b field_45954 bandwidthLogger + m ()V a method_53503 tick + m (I)V a method_53504 onReceive + m (Lblr;)V +c vn net/minecraft/class_2524 net/minecraft/network/CipherBase + f Ljavax/crypto/Cipher; a field_11612 cipher + f [B b field_11613 heapIn + f [B c field_11614 heapOut + m (Lio/netty/buffer/ByteBuf;)[B a method_10733 bufToByte + m (Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a method_10732 encipher + m (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; a method_10734 decipher + m (Ljavax/crypto/Cipher;)V +c vo net/minecraft/class_2528 net/minecraft/network/CipherDecoder + f Lvn; a field_11619 cipher + m (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V a method_10735 decode + m (Ljavax/crypto/Cipher;)V +c vp net/minecraft/class_2529 net/minecraft/network/CipherEncoder + f Lvn; a field_11620 cipher + m (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a method_10736 encode + m (Ljavax/crypto/Cipher;)V +c vq net/minecraft/class_8697 net/minecraft/network/ClientboundPacketListener +c vr net/minecraft/class_2532 net/minecraft/network/CompressionDecoder + f I a field_34057 MAXIMUM_COMPRESSED_LENGTH + f I b field_33279 MAXIMUM_UNCOMPRESSED_LENGTH + f Ljava/util/zip/Inflater; c field_11622 inflater + f I d field_11623 threshold + f Z e field_34058 validateDecompressed + m (IZ)V a method_10739 setThreshold + m (Lio/netty/buffer/ByteBuf;)V a method_52896 setupInflaterInput + m (Lio/netty/channel/ChannelHandlerContext;I)Lio/netty/buffer/ByteBuf; a method_52897 inflate + m (IZ)V +c vs net/minecraft/class_2534 net/minecraft/network/CompressionEncoder + f [B a field_11637 encodeBuf + f Ljava/util/zip/Deflater; b field_11638 deflater + f I c field_11636 threshold + m ()I a method_36120 getThreshold + m (I)V a method_10742 setThreshold + m (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a method_10741 encode + m (I)V +c vt net/minecraft/class_2535 net/minecraft/network/Connection + f Lvv; A field_44972 delayedDisconnect + f Lvm; B field_45955 bandwidthDebugMonitor + f Lorg/slf4j/Marker; a field_11641 ROOT_MARKER + f Lorg/slf4j/Marker; b field_11639 PACKET_MARKER + f Lorg/slf4j/Marker; c field_36379 PACKET_RECEIVED_MARKER + f Lorg/slf4j/Marker; d field_36380 PACKET_SENT_MARKER + f Ljava/util/function/Supplier; e field_11650 NETWORK_WORKER_GROUP + f Ljava/util/function/Supplier; f field_11657 NETWORK_EPOLL_WORKER_GROUP + f Ljava/util/function/Supplier; g field_11649 LOCAL_WORKER_GROUP + f F h field_33280 AVERAGE_PACKETS_SMOOTHING + f Lorg/slf4j/Logger; i field_11642 LOGGER + f Lwh; j field_48514 INITIAL_PROTOCOL + f Lzh; k field_11643 receiving + f Z l field_48515 sendLoginDisconnect + f Ljava/util/Queue; m field_45668 pendingActions + f Lio/netty/channel/Channel; n field_11651 channel + f Ljava/net/SocketAddress; o field_11645 address + f Lwf; p field_45669 disconnectListener + f Lwf; q field_11652 packetListener + f Lvv; r field_52180 disconnectionDetails + f Z s field_11647 encrypted + f Z t field_11646 disconnectionHandled + f I u field_11658 receivedPackets + f I v field_11656 sentPackets + f F w field_11654 averageReceivedPackets + f F x field_11653 averageSentPackets + f I y field_11655 tickCount + f Z z field_11640 handlingFault + m ()V a method_52915 flushChannel + m (IZ)V a method_10760 setupCompression + m (Lblr;)V a method_53505 setBandwidthLogger + m (Lio/netty/channel/ChannelFuture;)V a method_59851 syncAfterConfigurationChange + m (Lio/netty/channel/ChannelHandlerContext;Lzg;)V a method_10770 channelRead0 + m (Lio/netty/channel/ChannelPipeline;)V a method_53859 configurePacketHandler + m (Lio/netty/channel/ChannelPipeline;Lzh;)V a method_52911 configureInMemoryPipeline + m (Lio/netty/channel/ChannelPipeline;Lzh;ZLvm;)V a method_48311 configureSerialization + m (Ljava/lang/String;ILaio;)V a method_52902 initiateServerboundPlayConnection + m (Ljava/lang/String;ILajo;)V a method_52903 initiateServerboundStatusConnection + m (Ljava/lang/String;ILwh;Lwh;Lvq;Laii;)V a method_52904 initiateServerboundConnection + m (Ljava/lang/String;ILwh;Lwh;Lvq;Z)V a method_56326 initiateServerboundPlayConnection + m (Ljava/net/InetSocketAddress;ZLblr;)Lvt; a method_10753 connectToServer + m (Ljava/net/InetSocketAddress;ZLvt;)Lio/netty/channel/ChannelFuture; a method_52271 connect + m (Ljava/net/SocketAddress;)Lvt; a method_10769 connectToLocalServer + m (Ljava/util/function/Consumer;)V a method_52905 runOnceConnected + m (Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;)V a method_10746 setEncryptionKey + m (Lorg/slf4j/Marker;)V a method_40062 method_40062 + m (Lvm;Z)Lio/netty/channel/ChannelInboundHandler; a method_59852 createFrameDecoder + m (Lvv;)V a method_60924 disconnect + m (Lwb;Lio/netty/channel/ChannelHandlerContext;)V a method_56327 method_56327 + m (Lwc;Lio/netty/channel/ChannelHandlerContext;)V a method_56328 method_56328 + m (Lwf;)V a method_52912 setListenerForServerboundHandshake + m (Lwg;Lio/netty/util/concurrent/Future;)V a method_45082 method_45082 + m (Lwh;)V a method_56329 setupOutboundProtocol + m (Lwh;Lvq;Ljava/lang/String;ILaii;Lwh;Lvt;)V a method_52900 method_52900 + m (Lwh;Lwf;)V a method_56330 setupInboundProtocol + m (Lwz;)V a method_10747 disconnect + m (Lzg;)V a method_10743 send + m (Lzg;Lwf;)V a method_10759 genericsFtw + m (Lzg;Lwg;)V a method_10752 send + m (Lzg;Lwg;Z)V a method_52906 send + m (Lzg;Lwg;ZLvt;)V a method_52907 method_52907 + m (Z)Ljava/lang/String; a method_52909 getLoggableAddress + m (ZLio/netty/channel/ChannelHandlerContext;)V a method_56331 method_56331 + m ()V b method_10754 tick + m (Lorg/slf4j/Marker;)V b method_40063 method_40063 + m (Lvv;)V b method_60925 method_60925 + m (Lwh;Lwf;)V b method_56332 validateListener + m (Lzg;Lwg;Z)V b method_10764 sendPacket + m (Z)Ljava/lang/String; b method_56333 outboundHandlerName + m ()V c method_30615 tickSecond + m (Lorg/slf4j/Marker;)V c method_40064 method_40064 + m (Lzg;Lwg;Z)V c method_36942 doSendPacket + m (Z)Ljava/lang/String; c method_56334 inboundHandlerName + m ()Ljava/net/SocketAddress; d method_10755 getRemoteAddress + m (Lzg;Lwg;Z)V d method_52917 method_52917 + m (Z)Lio/netty/channel/ChannelOutboundHandler; d method_59853 createFrameEncoder + m ()Z e method_10756 isMemoryConnection + m ()Lzh; f method_36121 getReceiving + m ()Lzh; g method_36122 getSending + m ()Z h method_10771 isEncrypted + m ()Z i method_10758 isConnected + m ()Z j method_10772 isConnecting + m ()Lwf; k method_10744 getPacketListener + m ()Lvv; l method_60926 getDisconnectionDetails + m ()V m method_10757 setReadOnly + m ()V n method_10768 handleDisconnection + m ()F o method_10762 getAverageReceivedPackets + m ()F p method_10745 getAverageSentPackets + m ()V q method_52918 flush + m ()V r method_10751 flushQueue + m ()Lvv; s method_52919 method_52919 + m ()V t method_52920 method_52920 + m ()Lio/netty/channel/DefaultEventLoopGroup; u method_10766 method_10766 + m ()Lio/netty/channel/epoll/EpollEventLoopGroup; v method_10765 method_10765 + m ()Lio/netty/channel/nio/NioEventLoopGroup; w method_10767 method_10767 + m (Lzh;)V + m ()V +c vt$1 net/minecraft/class_2535$1 net/minecraft/network/Connection$1 + f Lvt; a field_11663 val$connection + m (Lvt;)V +c vt$2 net/minecraft/class_2535$2 net/minecraft/network/Connection$2 + m (Lvt;)V +c vt$3 net/minecraft/class_2535$3 net/minecraft/network/Connection$3 + f Lvt; a field_48517 val$connection + m (Lvt;)V +c vu net/minecraft/class_2539 net/minecraft/network/ConnectionProtocol + f Lvu; a field_20590 HANDSHAKING + f Lvu; b field_20591 PLAY + f Lvu; c field_20592 STATUS + f Lvu; d field_20593 LOGIN + f Lvu; e field_45671 CONFIGURATION + f Ljava/lang/String; f field_20594 id + f [Lvu; g field_11694 $VALUES + m ()Ljava/lang/String; a method_10785 id + m ()[Lvu; b method_36943 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c vv net/minecraft/class_9812 net/minecraft/network/DisconnectionDetails + f Lwz; a comp_2853 reason + f Ljava/util/Optional; b comp_2854 report + f Ljava/util/Optional; c comp_2855 bugReportLink + m ()Lwz; a comp_2853 reason + m ()Ljava/util/Optional; b comp_2854 report + m ()Ljava/util/Optional; c comp_2855 bugReportLink + m (Lwz;)V + m (Lwz;Ljava/util/Optional;Ljava/util/Optional;)V +c vw net/minecraft/class_2540 net/minecraft/network/FriendlyByteBuf + f I a field_33287 DEFAULT_NBT_QUOTA + f S b field_33283 MAX_STRING_LENGTH + f I c field_33284 MAX_COMPONENT_STRING_LENGTH + f Lio/netty/buffer/ByteBuf; d field_11695 source + f I e field_39381 PUBLIC_KEY_SIZE + f I f field_39382 MAX_PUBLIC_KEY_HEADER_SIZE + f I g field_39383 MAX_PUBLIC_KEY_LENGTH + f Lcom/google/gson/Gson; h field_42966 GSON + m ()Lvw; A method_52934 markWriterIndex + m ()Lvw; B method_52935 resetWriterIndex + m ()Lvw; C method_52936 discardReadBytes + m ()Lvw; D method_52937 discardSomeReadBytes + m ()Lvw; E method_52938 retain + m ()Lvw; F method_52939 touch + m ()Lit/unimi/dsi/fastutil/ints/IntList; a method_34059 readIntIdList + m (D)Lvw; a method_52940 writeDouble + m (F)Lvw; a method_52941 writeFloat + m (I)[B a method_10803 readByteArray + m (ID)Lvw; a method_52942 setDouble + m (IF)Lvw; a method_52943 setFloat + m (II)Lvw; a method_52944 setIndex + m (IJ)Lvw; a method_52945 setLong + m (ILio/netty/buffer/ByteBuf;)Lvw; a method_52946 getBytes + m (ILio/netty/buffer/ByteBuf;I)Lvw; a method_52947 getBytes + m (ILio/netty/buffer/ByteBuf;II)Lvw; a method_52948 getBytes + m (ILjava/io/OutputStream;I)Lvw; a method_52949 getBytes + m (ILjava/nio/ByteBuffer;)Lvw; a method_52950 getBytes + m (ILjava/util/function/IntFunction;I)Ljava/lang/Object; a method_37452 method_37452 + m (IZ)Lvw; a method_52951 setBoolean + m (I[B)Lvw; a method_52952 getBytes + m (I[BII)Lvw; a method_52953 getBytes + m (J)Lvw; a method_10791 writeVarLong + m (Lakq;)Lakq; a method_44112 readResourceKey + m (Lakr;)Lvw; a method_10812 writeResourceLocation + m (Lcom/mojang/serialization/Codec;)Ljava/lang/Object; a method_49394 readJsonWithCodec + m (Lcom/mojang/serialization/Codec;Ljava/lang/Object;)V a method_49395 writeJsonWithCodec + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;)Ljava/lang/Object; a method_52954 readWithCodecTrusted + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;Ljava/lang/Object;)Lvw; a method_29172 writeWithCodec + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;Luk;)Ljava/lang/Object; a method_29171 readWithCodec + m (Ldcd;)Lvw; a method_36130 writeChunkPos + m (Lewy;)V a method_17813 writeBlockHitResult + m (Lexc;)V a method_52955 writeVec3 + m (Lio/netty/buffer/ByteBuf;)[B a method_56890 readByteArray + m (Lio/netty/buffer/ByteBuf;I)[B a method_56891 readByteArray + m (Lio/netty/buffer/ByteBuf;II)Lvw; a method_52958 readBytes + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Object;Lyz;)V a method_56892 writeNullable + m (Lio/netty/buffer/ByteBuf;Ljava/util/UUID;)V a method_56337 writeUUID + m (Lio/netty/buffer/ByteBuf;Ljd;)V a method_56336 writeBlockPos + m (Lio/netty/buffer/ByteBuf;Lorg/joml/Quaternionf;)V a method_56338 writeQuaternion + m (Lio/netty/buffer/ByteBuf;Lorg/joml/Vector3f;)V a method_56339 writeVector3f + m (Lio/netty/buffer/ByteBuf;Luk;)Luy; a method_56340 readNbt + m (Lio/netty/buffer/ByteBuf;Luy;)V a method_56341 writeNbt + m (Lio/netty/buffer/ByteBuf;Lyy;)Ljava/lang/Object; a method_56893 readNullable + m (Lio/netty/buffer/ByteBuf;[B)V a method_56894 writeByteArray + m (Lit/unimi/dsi/fastutil/ints/IntList;)V a method_34060 writeIntIdList + m (Ljava/io/OutputStream;I)Lvw; a method_52959 readBytes + m (Ljava/lang/Class;)Ljava/util/EnumSet; a method_46251 readEnumSet + m (Ljava/lang/Enum;)Lvw; a method_10817 writeEnum + m (Ljava/lang/Object;)Lvw; a method_52960 touch + m (Ljava/lang/Object;Ljava/lang/String;)Lio/netty/handler/codec/EncoderException; a method_49396 method_49396 + m (Ljava/lang/Object;Lyz;)V a method_43826 writeNullable + m (Ljava/lang/String;)Lvw; a method_10814 writeUtf + m (Ljava/lang/String;I)Lvw; a method_10788 writeUtf + m (Ljava/nio/ByteBuffer;)Lvw; a method_52961 readBytes + m (Ljava/security/PublicKey;)Lvw; a method_44114 writePublicKey + m (Ljava/time/Instant;)V a method_44115 writeInstant + m (Ljava/util/BitSet;)V a method_33557 writeBitSet + m (Ljava/util/BitSet;I)V a method_46252 writeFixedBitSet + m (Ljava/util/Collection;Lyz;)V a method_34062 writeCollection + m (Ljava/util/Date;)Lvw; a method_10796 writeDate + m (Ljava/util/EnumSet;Ljava/lang/Class;)V a method_46253 writeEnumSet + m (Ljava/util/Map;Lyz;Lyz;)V a method_34063 writeMap + m (Ljava/util/Optional;Lyz;)V a method_37435 writeOptional + m (Ljava/util/UUID;)Lvw; a method_10797 writeUUID + m (Ljava/util/function/Consumer;)V a method_34065 readWithCount + m (Ljava/util/function/IntFunction;)Ljava/lang/Object; a method_52962 readById + m (Ljava/util/function/IntFunction;I)Ljava/util/function/IntFunction; a method_37453 limitValue + m (Ljava/util/function/IntFunction;Lyy;)Ljava/util/Collection; a method_34068 readCollection + m (Ljava/util/function/IntFunction;Lyy;Lyy;)Ljava/util/Map; a method_34069 readMap + m (Ljava/util/function/ToIntFunction;Ljava/lang/Object;)Lvw; a method_52963 writeById + m (Ljd;)Lvw; a method_10807 writeBlockPos + m (Ljl;)V a method_44113 writeGlobalPos + m (Lkf;)Lvw; a method_36131 writeSectionPos + m (Lorg/joml/Quaternionf;)V a method_49067 writeQuaternion + m (Lorg/joml/Vector3f;)V a method_49068 writeVector3f + m (Luk;)Luy; a method_30616 readNbt + m (Luy;)Lvw; a method_10794 writeNbt + m (Luy;Ljava/lang/String;)Lio/netty/handler/codec/DecoderException; a method_34070 method_34070 + m (Lyy;)Ljava/util/List; a method_34066 readList + m (Lyy;Lyy;)Ljava/util/Map; a method_34067 readMap + m (Lyz;Lyz;Ljava/lang/Object;Ljava/lang/Object;)V a method_34064 method_34064 + m (Z)Lvw; a method_52964 writeBoolean + m ([B)Lvw; a method_10813 writeByteArray + m ([BII)Lvw; a method_52965 readBytes + m ([I)Lvw; a method_10806 writeVarIntArray + m ([J)Lvw; a method_10789 writeLongArray + m ([JI)[J a method_10809 readLongArray + m ()[B b method_10795 readByteArray + m (I)[I b method_10799 readVarIntArray + m (II)Lvw; b method_52966 setByte + m (IJ)Lvw; b method_52967 setLongLE + m (ILio/netty/buffer/ByteBuf;)Lvw; b method_52968 setBytes + m (ILio/netty/buffer/ByteBuf;I)Lvw; b method_52969 setBytes + m (ILio/netty/buffer/ByteBuf;II)Lvw; b method_52970 setBytes + m (ILjava/nio/ByteBuffer;)Lvw; b method_52971 setBytes + m (I[B)Lvw; b method_52972 setBytes + m (I[BII)Lvw; b method_52973 setBytes + m (J)Lvw; b method_52974 writeLong + m (Lakq;)V b method_44116 writeResourceKey + m (Lio/netty/buffer/ByteBuf;)Ljd; b method_56335 readBlockPos + m (Lio/netty/buffer/ByteBuf;I)Lvw; b method_52957 readBytes + m (Lio/netty/buffer/ByteBuf;II)Lvw; b method_52977 writeBytes + m (Ljava/lang/Class;)Ljava/lang/Enum; b method_10818 readEnum + m (Ljava/lang/Object;Ljava/lang/String;)Lio/netty/handler/codec/EncoderException; b method_34061 method_34061 + m (Ljava/lang/String;)Lio/netty/handler/codec/DecoderException; b method_49397 method_49397 + m (Ljava/nio/ByteBuffer;)Lvw; b method_52978 writeBytes + m (Lyy;)Ljava/util/Optional; b method_37436 readOptional + m ([B)Lvw; b method_52979 readBytes + m ([BII)Lvw; b method_52980 writeBytes + m ([J)[J b method_10801 readLongArray + m ()[I c method_10787 readVarIntArray + m (I)Lvw; c method_10804 writeVarInt + m (II)Lvw; c method_52981 setShort + m (J)Lvw; c method_52982 writeLongLE + m (Lio/netty/buffer/ByteBuf;)Lorg/joml/Vector3f; c method_56342 readVector3f + m (Lio/netty/buffer/ByteBuf;I)Lvw; c method_52976 writeBytes + m (Lyy;)Ljava/lang/Object; c method_43827 readNullable + m ([B)Lvw; c method_52983 writeBytes + m ()[J d method_33134 readLongArray + m (I)Ljava/lang/String; d method_10800 readUtf + m (II)Lvw; d method_52984 setShortLE + m (Lio/netty/buffer/ByteBuf;)Lorg/joml/Quaternionf; d method_56343 readQuaternion + m ()Ljd; e method_10811 readBlockPos + m (I)Ljava/util/BitSet; e method_46254 readFixedBitSet + m (II)Lvw; e method_52985 setMedium + m (Lio/netty/buffer/ByteBuf;)Ljava/util/UUID; e method_56344 readUUID + m ()Ldcd; f method_36133 readChunkPos + m (I)Lvw; f method_52986 capacity + m (II)Lvw; f method_52987 setMediumLE + m (Lio/netty/buffer/ByteBuf;)Lub; f method_56345 readNbt + m ()Lkf; g method_19456 readSectionPos + m (I)Lvw; g method_52988 readerIndex + m (II)Lvw; g method_52989 setInt + m (Lio/netty/buffer/ByteBuf;)Lvw; g method_52956 readBytes + m ()Ljl; h method_44117 readGlobalPos + m (I)Lvw; h method_52990 writerIndex + m (II)Lvw; h method_52991 setIntLE + m (Lio/netty/buffer/ByteBuf;)Lvw; h method_52975 writeBytes + m ()Lorg/joml/Vector3f; i method_49069 readVector3f + m (I)Lvw; i method_52992 ensureWritable + m (II)Lvw; i method_52993 setChar + m ()Lorg/joml/Quaternionf; j method_49070 readQuaternion + m (I)Lvw; j method_52994 skipBytes + m (II)Lvw; j method_52995 setZero + m ()Lexc; k method_52996 readVec3 + m (I)Lvw; k method_52997 writeByte + m ()I l method_10816 readVarInt + m (I)Lvw; l method_52998 writeShort + m ()J m method_10792 readVarLong + m (I)Lvw; m method_52999 writeShortLE + m ()Ljava/util/UUID; n method_10790 readUUID + m (I)Lvw; n method_53000 writeMedium + m ()Lub; o method_10798 readNbt + m (I)Lvw; o method_53001 writeMediumLE + m ()Ljava/lang/String; p method_19772 readUtf + m (I)Lvw; p method_53002 writeInt + m ()Lakr; q method_10810 readResourceLocation + m (I)Lvw; q method_53003 writeIntLE + m ()Lakq; r method_53006 readRegistryKey + m (I)Lvw; r method_53004 writeChar + m ()Ljava/util/Date; s method_10802 readDate + m (I)Lvw; s method_53005 writeZero + m ()Ljava/time/Instant; t method_44118 readInstant + m (I)Lvw; t method_53007 retain + m ()Ljava/security/PublicKey; u method_44119 readPublicKey + m ()Lewy; v method_17814 readBlockHitResult + m ()Ljava/util/BitSet; w method_33558 readBitSet + m ()Lvw; x method_52931 clear + m ()Lvw; y method_52932 markReaderIndex + m ()Lvw; z method_52933 resetReaderIndex + m (Lio/netty/buffer/ByteBuf;)V + m ()V +c vx net/minecraft/class_9126 net/minecraft/network/HandlerNames + f Ljava/lang/String; a field_48518 DECOMPRESS + f Ljava/lang/String; b field_48519 COMPRESS + f Ljava/lang/String; c field_48520 DECODER + f Ljava/lang/String; d field_48521 ENCODER + f Ljava/lang/String; e field_48522 INBOUND_CONFIG + f Ljava/lang/String; f field_48523 OUTBOUND_CONFIG + f Ljava/lang/String; g field_48524 SPLITTER + f Ljava/lang/String; h field_48525 PREPENDER + f Ljava/lang/String; i field_48526 DECRYPT + f Ljava/lang/String; j field_48527 ENCRYPT + f Ljava/lang/String; k field_48528 UNBUNDLER + f Ljava/lang/String; l field_48529 BUNDLER + f Ljava/lang/String; m field_48530 PACKET_HANDLER + f Ljava/lang/String; n field_48531 TIMEOUT + f Ljava/lang/String; o field_48532 LEGACY_QUERY + f Ljava/lang/String; p field_48533 LATENCY + m ()V +c vy net/minecraft/class_9680 net/minecraft/network/MonitorFrameDecoder + f Lvm; a field_51500 monitor + m (Lvm;)V +c vz net/minecraft/class_9681 net/minecraft/network/NoOpFrameDecoder + m ()V +c wa net/minecraft/class_9682 net/minecraft/network/NoOpFrameEncoder + m ()V +c wb net/minecraft/class_8035 net/minecraft/network/PacketBundlePacker + f Lzf; a field_48534 bundlerInfo + f Lzf$a; b field_41869 currentBundler + m (Lio/netty/channel/ChannelHandlerContext;Lzg;Ljava/util/List;)V a method_48318 decode + m (Lzg;)V a method_56346 verifyNonTerminalPacket + m (Lzf;)V +c wc net/minecraft/class_8036 net/minecraft/network/PacketBundleUnpacker + f Lzf; a field_48535 bundlerInfo + m (Lio/netty/channel/ChannelHandlerContext;Lzg;Ljava/util/List;)V a method_48319 encode + m (Lzf;)V +c wd net/minecraft/class_2543 net/minecraft/network/PacketDecoder + f Lorg/slf4j/Logger; a field_11715 LOGGER + f Lwh; b field_48536 protocolInfo + m (Lwh;)V + m ()V +c we net/minecraft/class_2545 net/minecraft/network/PacketEncoder + f Lorg/slf4j/Logger; a field_11721 LOGGER + f Lwh; b field_48537 protocolInfo + m (Lio/netty/channel/ChannelHandlerContext;Lzg;Lio/netty/buffer/ByteBuf;)V a method_10838 encode + m (Lwh;)V + m ()V +c wf net/minecraft/class_2547 net/minecraft/network/PacketListener + m ()Lzh; a method_52895 flow + m (Lo;)V a method_55622 fillCrashReport + m (Lo;Lp;)V a method_55597 fillListenerSpecificCrashDetails + m (Lvv;)V a method_10839 onDisconnect + m (Lwz;Ljava/lang/Throwable;)Lvv; a method_60881 createDisconnectionInfo + m (Lzg;)Z a method_52413 shouldHandleMessage + m (Lzg;Ljava/lang/Exception;)V a method_59807 onPacketError + m ()Lvu; b method_52280 protocol + m ()Z c method_48106 isAcceptingMessages + m ()Ljava/lang/String; d method_55623 method_55623 + m ()Ljava/lang/String; e method_55624 method_55624 +c wg net/minecraft/class_7648 net/minecraft/network/PacketSendListener + m ()V a method_45083 onSuccess + m (Ljava/lang/Runnable;)Lwg; a method_45084 thenRun + m (Ljava/util/function/Supplier;)Lwg; a method_45085 exceptionallySend + m ()Lzg; b method_45086 onFailure +c wg$1 net/minecraft/class_7648$1 net/minecraft/network/PacketSendListener$1 + f Ljava/lang/Runnable; a field_39939 val$runnable + m (Ljava/lang/Runnable;)V +c wg$2 net/minecraft/class_7648$2 net/minecraft/network/PacketSendListener$2 + f Ljava/util/function/Supplier; a field_39940 val$handler + m (Ljava/util/function/Supplier;)V +c wh net/minecraft/class_9127 net/minecraft/network/ProtocolInfo + m ()Lvu; a comp_2234 id + m ()Lzh; b comp_2235 flow + m ()Lyx; c comp_2236 codec + m ()Lzf; d comp_2237 bundlerInfo +c wh$a net/minecraft/class_9127$class_9128 net/minecraft/network/ProtocolInfo$Unbound + m ()Lvu; a method_61106 id + m (Ljava/util/function/Function;)Lwh; a method_61107 bind + m (Lwh$a$a;)V a method_61108 listPackets + m ()Lzh; b method_61109 flow +c wh$a$a net/minecraft/class_9127$class_9128$class_9828 net/minecraft/network/ProtocolInfo$Unbound$PacketVisitor +c wi net/minecraft/class_8700 net/minecraft/network/ProtocolSwapHandler + m (Lio/netty/channel/ChannelHandlerContext;Lzg;)V a method_56347 handleInboundTerminalPacket + m (Lio/netty/channel/ChannelHandlerContext;Lzg;)V b method_56348 handleOutboundTerminalPacket +c wj net/minecraft/class_5472 net/minecraft/network/RateKickingConnection + f Lorg/slf4j/Logger; h field_26342 LOGGER + f Lwz; i field_26343 EXCEED_REASON + f I j field_26344 rateLimitPacketsPerSecond + m ()V q method_30618 method_30618 + m (I)V + m ()V +c wk net/minecraft/class_9129 net/minecraft/network/RegistryFriendlyByteBuf + f Lka; d field_48538 registryAccess + m ()Lka; G method_56349 registryAccess + m (Lka;)Ljava/util/function/Function; a method_56350 decorator + m (Lka;Lio/netty/buffer/ByteBuf;)Lwk; a method_56351 method_56351 + m (Lio/netty/buffer/ByteBuf;Lka;)V +c wl net/minecraft/class_8701 net/minecraft/network/ServerboundPacketListener +c wm net/minecraft/class_2548 net/minecraft/network/SkipPacketException + m (Ljava/lang/Throwable;)V +c wn net/minecraft/class_7633 net/minecraft/network/TickablePacketListener + m ()V d method_18784 tick +c wo net/minecraft/class_9130 net/minecraft/network/UnconfiguredPipelineHandler + m (Lio/netty/channel/ChannelInboundHandler;)Lwo$b; a method_56352 setupInboundHandler + m (Lio/netty/channel/ChannelInboundHandler;Lio/netty/channel/ChannelHandlerContext;)V a method_56353 method_56353 + m (Lio/netty/channel/ChannelOutboundHandler;)Lwo$d; a method_56354 setupOutboundHandler + m (Lio/netty/channel/ChannelOutboundHandler;Lio/netty/channel/ChannelHandlerContext;)V a method_56355 method_56355 + m (Lwh;)Lwo$b; a method_56356 setupInboundProtocol + m (Lwh;)Lwo$d; b method_56357 setupOutboundProtocol + m ()V +c wo$a net/minecraft/class_9130$class_9131 net/minecraft/network/UnconfiguredPipelineHandler$Inbound + m ()V +c wo$b net/minecraft/class_9130$class_9132 net/minecraft/network/UnconfiguredPipelineHandler$InboundConfigurationTask + m (Lwo$b;Lio/netty/channel/ChannelHandlerContext;)V a method_56358 method_56358 +c wo$c net/minecraft/class_9130$class_9133 net/minecraft/network/UnconfiguredPipelineHandler$Outbound + m ()V +c wo$d net/minecraft/class_9130$class_9134 net/minecraft/network/UnconfiguredPipelineHandler$OutboundConfigurationTask + m (Lwo$d;Lio/netty/channel/ChannelHandlerContext;)V a method_56359 method_56359 +c wp net/minecraft/class_8702 net/minecraft/network/Utf8String + m (Lio/netty/buffer/ByteBuf;I)Ljava/lang/String; a method_53012 read + m (Lio/netty/buffer/ByteBuf;Ljava/lang/CharSequence;I)V a method_53013 write + m ()V +c wq net/minecraft/class_8703 net/minecraft/network/VarInt + f I a field_45682 MAX_VARINT_SIZE + f I b field_45683 DATA_BITS_MASK + f I c field_45684 CONTINUATION_BIT_MASK + f I d field_45685 DATA_BITS_PER_BYTE + m (B)Z a method_53014 hasContinuationBit + m (I)I a method_53015 getByteSize + m (Lio/netty/buffer/ByteBuf;)I a method_53016 read + m (Lio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; a method_53017 write + m ()V +c wr net/minecraft/class_8704 net/minecraft/network/VarLong + f I a field_45686 MAX_VARLONG_SIZE + f I b field_45687 DATA_BITS_MASK + f I c field_45688 CONTINUATION_BIT_MASK + f I d field_45689 DATA_BITS_PER_BYTE + m (B)Z a method_53018 hasContinuationBit + m (J)I a method_53019 getByteSize + m (Lio/netty/buffer/ByteBuf;)J a method_53020 read + m (Lio/netty/buffer/ByteBuf;J)Lio/netty/buffer/ByteBuf; a method_53021 write + m ()V +c ws net/minecraft/class_2550 net/minecraft/network/Varint21FrameDecoder + f I a field_45690 MAX_VARINT21_BYTES + f Lio/netty/buffer/ByteBuf; b field_45691 helperBuf + f Lvm; c field_45956 monitor + m (Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)Z a method_53022 copyVarint + m (Lvm;)V +c wt net/minecraft/class_2552 net/minecraft/network/Varint21LengthFieldPrepender + f I a field_33288 MAX_VARINT21_BYTES + m (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a method_10840 encode + m ()V +c wu net/minecraft/class_7492 net/minecraft/network/chat/ChatDecorator + f Lwu; a field_39384 PLAIN + m (Laqv;Lwz;)Lwz; a method_44303 method_44303 + m ()V +c wv net/minecraft/class_2556 net/minecraft/network/chat/ChatType + f Lcom/mojang/serialization/Codec; a field_39227 DIRECT_CODEC + f Lyx; b field_51969 DIRECT_STREAM_CODEC + f Lyx; c field_51970 STREAM_CODEC + f Lww; d field_39677 DEFAULT_CHAT_DECORATION + f Lakq; e field_11737 CHAT + f Lakq; f field_39228 SAY_COMMAND + f Lakq; g field_39799 MSG_COMMAND_INCOMING + f Lakq; h field_39800 MSG_COMMAND_OUTGOING + f Lakq; i field_39881 TEAM_MSG_COMMAND_INCOMING + f Lakq; j field_39882 TEAM_MSG_COMMAND_OUTGOING + f Lakq; k field_39231 EMOTE_COMMAND + f Lww; l comp_792 chat + f Lww; m comp_794 narration + m ()Lww; a comp_792 chat + m (Lakq;Lbsr;)Lwv$a; a method_44832 bind + m (Lakq;Let;)Lwv$a; a method_44833 bind + m (Lakq;Lka;Lwz;)Lwv$a; a method_44834 bind + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43843 method_43843 + m (Ljava/lang/String;)Lakq; a method_43845 create + m (Lqq;)V a method_43844 bootstrap + m ()Lww; b comp_794 narration + m (Lww;Lww;)V + m ()V +c wv$a net/minecraft/class_2556$class_7602 net/minecraft/network/chat/ChatType$Bound + f Lyx; a field_48776 STREAM_CODEC + f Ljm; b comp_919 chatType + f Lwz; c comp_920 name + f Ljava/util/Optional; d comp_921 targetName + m ()Ljm; a comp_919 chatType + m (Lwz;)Lwz; a method_44837 decorate + m ()Lwz; b comp_920 name + m (Lwz;)Lwz; b method_44838 decorateNarration + m ()Ljava/util/Optional; c comp_921 targetName + m (Lwz;)Lwv$a; c method_44839 withTargetName + m (Ljm;Lwz;)V + m (Ljm;Lwz;Ljava/util/Optional;)V + m ()V +c ww net/minecraft/class_7463 net/minecraft/network/chat/ChatTypeDecoration + f Lcom/mojang/serialization/Codec; a field_39219 CODEC + f Lyx; b field_51971 STREAM_CODEC + f Ljava/lang/String; c comp_788 translationKey + f Ljava/util/List; d comp_789 parameters + f Lxw; e comp_790 style + m ()Ljava/lang/String; a comp_788 translationKey + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43830 method_43830 + m (Ljava/lang/String;)Lww; a method_43831 withSender + m (Lwz;Lwv$a;)Lwz; a method_43832 decorate + m ()Ljava/util/List; b comp_789 parameters + m (Ljava/lang/String;)Lww; b method_44779 incomingDirectMessage + m (Lwz;Lwv$a;)[Lwz; b method_43834 resolveParameters + m ()Lxw; c comp_790 style + m (Ljava/lang/String;)Lww; c method_44780 outgoingDirectMessage + m (Ljava/lang/String;)Lww; d method_43835 teamMessage + m (Ljava/lang/String;Ljava/util/List;Lxw;)V + m ()V +c ww$a net/minecraft/class_7463$class_7464 net/minecraft/network/chat/ChatTypeDecoration$Parameter + f Lww$a; a field_39220 SENDER + f Lww$a; b field_39221 TARGET + f Lww$a; c field_39222 CONTENT + f Lcom/mojang/serialization/Codec; d field_39223 CODEC + f Lyx; e field_51972 STREAM_CODEC + f Ljava/util/function/IntFunction; f field_51973 BY_ID + f I g field_51974 id + f Ljava/lang/String; h field_39224 name + f Lww$a$a; i field_39225 selector + f [Lww$a; j field_39226 $VALUES + m ()[Lww$a; a method_43836 $values + m (Lww$a;)I a method_60652 method_60652 + m (Lwz;Lwv$a;)Lwz; a method_43837 select + m (Lww$a;)I b method_60653 method_60653 + m (Lwz;Lwv$a;)Lwz; b method_43838 method_43838 + m (Lwz;Lwv$a;)Lwz; c method_43839 method_43839 + m (Lwz;Lwv$a;)Lwz; d method_43840 method_43840 + m (Ljava/lang/String;IILjava/lang/String;Lww$a$a;)V + m ()V +c ww$a$a net/minecraft/class_7463$class_7464$class_7465 net/minecraft/network/chat/ChatTypeDecoration$Parameter$Selector +c wx net/minecraft/class_2558 net/minecraft/network/chat/ClickEvent + f Lcom/mojang/serialization/Codec; a field_46594 CODEC + f Lwx$a; b field_11741 action + f Ljava/lang/String; c field_11740 value + m ()Lwx$a; a method_10845 getAction + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54149 method_54149 + m (Lwx;)Ljava/lang/String; a method_54150 method_54150 + m ()Ljava/lang/String; b method_10844 getValue + m (Lwx;)Lwx$a; b method_54151 method_54151 + m (Lwx$a;Ljava/lang/String;)V + m ()V +c wx$a net/minecraft/class_2558$class_2559 net/minecraft/network/chat/ClickEvent$Action + f Lwx$a; a field_11749 OPEN_URL + f Lwx$a; b field_11746 OPEN_FILE + f Lwx$a; c field_11750 RUN_COMMAND + f Lwx$a; d field_11745 SUGGEST_COMMAND + f Lwx$a; e field_11748 CHANGE_PAGE + f Lwx$a; f field_21462 COPY_TO_CLIPBOARD + f Lcom/mojang/serialization/MapCodec; g field_46595 UNSAFE_CODEC + f Lcom/mojang/serialization/MapCodec; h field_46596 CODEC + f Z i field_11744 allowFromServer + f Ljava/lang/String; j field_11742 name + f [Lwx$a; k field_11747 $VALUES + m ()Z a method_10847 isAllowedFromServer + m (Lwx$a;)Lcom/mojang/serialization/DataResult; a method_54152 filterForSerialization + m ()[Lwx$a; b method_36945 $values + m (Lwx$a;)Ljava/lang/String; b method_54153 method_54153 + m (Ljava/lang/String;ILjava/lang/String;Z)V + m ()V +c wy net/minecraft/class_5244 net/minecraft/network/chat/CommonComponents + f Lwz; a field_39003 EMPTY + f Lwz; b field_24332 OPTION_ON + f Lwz; c field_24333 OPTION_OFF + f Lwz; d field_24334 GUI_DONE + f Lwz; e field_24335 GUI_CANCEL + f Lwz; f field_24336 GUI_YES + f Lwz; g field_24337 GUI_NO + f Lwz; h field_44914 GUI_OK + f Lwz; i field_24338 GUI_PROCEED + f Lwz; j field_41873 GUI_CONTINUE + f Lwz; k field_24339 GUI_BACK + f Lwz; l field_43109 GUI_TO_TITLE + f Lwz; m field_39742 GUI_ACKNOWLEDGE + f Lwz; n field_44968 GUI_OPEN_IN_BROWSER + f Lwz; o field_44969 GUI_COPY_LINK_TO_CLIPBOARD + f Lwz; p field_45692 GUI_DISCONNECT + f Lwz; q field_48539 TRANSFER_CONNECT_FAILED + f Lwz; r field_26625 CONNECT_FAILED + f Lwz; s field_33849 NEW_LINE + f Lwz; t field_33850 NARRATION_SEPARATOR + f Lwz; u field_39678 ELLIPSIS + f Lwz; v field_41874 SPACE + m ()Lxn; a method_48320 space + m (J)Lxn; a method_44682 days + m (Ljava/util/Collection;)Lwz; a method_37109 joinLines + m (Lwz;Lwz;)Lxn; a method_32700 optionNameValue + m (Lwz;Z)Lxn; a method_30619 optionStatus + m (Z)Lwz; a method_36134 optionStatus + m ([Lwz;)Lxn; a method_37111 joinForNarration + m (J)Lxn; b method_44683 hours + m ([Lwz;)Lwz; b method_37110 joinLines + m (J)Lxn; c method_44684 minutes + m ()V + m ()V +c wz net/minecraft/class_2561 net/minecraft/network/chat/Component + m ()Lxw; a method_10866 getStyle + m (I)Ljava/lang/String; a method_10858 getString + m (ILjava/lang/StringBuilder;Ljava/lang/String;)Ljava/util/Optional; a method_27655 method_27655 + m (Lakr;)Lwz; a method_54154 translationArg + m (Lcom/mojang/brigadier/Message;)Lwz; a method_54155 translationArg + m (Ldcd;)Lwz; a method_54156 translationArg + m (Ljava/lang/String;)Lwz; a method_30163 nullToEmpty + m (Ljava/lang/String;Ljava/lang/String;)Lxn; a method_48321 translatableWithFallback + m (Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Lxn; a method_48322 translatableWithFallback + m (Ljava/lang/String;Ljava/util/Optional;)Lxn; a method_43467 selector + m (Ljava/lang/String;ZLjava/util/Optional;Lyb;)Lxn; a method_43468 nbt + m (Ljava/lang/String;[Ljava/lang/Object;)Lxn; a method_43469 translatable + m (Ljava/net/URI;)Lwz; a method_61110 translationArg + m (Ljava/util/Date;)Lwz; a method_54157 translationArg + m (Ljava/util/List;Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_36135 method_36135 + m (Ljava/util/UUID;)Lwz; a method_54158 translationArg + m (Lwz;)Z a method_44745 contains + m (Lxw;)Ljava/util/List; a method_36136 toFlatList + m ()Lxa; b method_10851 getContents + m (Ljava/lang/String;)Lxn; b method_43470 literal + m (Ljava/lang/String;Ljava/lang/String;)Lxn; b method_43466 score + m (Ljava/lang/String;[Ljava/lang/Object;)Lxn; b method_54159 translatableEscape + m ()Ljava/util/List; c method_10855 getSiblings + m (Ljava/lang/String;)Lxn; c method_43471 translatable + m ()Ljava/lang/String; d method_54160 tryCollapseToString + m (Ljava/lang/String;)Lxn; d method_43472 keybind + m ()Lxn; e method_27662 plainCopy + m ()Lxn; f method_27661 copy + m ()Laya; g method_30937 getVisualOrderText + m ()Ljava/util/List; h method_44746 toFlatList + m ()Lxn; i method_43473 empty +c wz$a net/minecraft/class_2561$class_2562 net/minecraft/network/chat/Component$Serializer + f Lcom/google/gson/Gson; a field_11754 GSON + m (Lcom/google/gson/JsonElement;Ljo$a;)Lxn; a method_10872 fromJson + m (Ljava/lang/String;Ljo$a;)Lxn; a method_10877 fromJson + m (Lwz;Ljo$a;)Ljava/lang/String; a method_10867 toJson + m (Lcom/google/gson/JsonElement;Ljo$a;)Lxn; b method_10871 deserialize + m (Ljava/lang/String;Ljo$a;)Lxn; b method_10873 fromJsonLenient + m (Lwz;Ljo$a;)Lcom/google/gson/JsonElement; b method_10874 serialize + m ()V + m ()V +c wz$b net/minecraft/class_2561$class_8822 net/minecraft/network/chat/Component$SerializerAdapter + f Ljo$a; a field_49665 registries + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lxn; a method_54161 deserialize + m (Lwz;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a method_54162 serialize + m (Ljo$a;)V +c xa net/minecraft/class_7417 net/minecraft/network/chat/ComponentContents + m ()Lxa$a; a method_54163 type + m (Let;Lbsr;I)Lxn; a method_10890 resolve + m (Lxe$a;)Ljava/util/Optional; a method_27659 visit + m (Lxe$b;Lxw;)Ljava/util/Optional; a method_27660 visit +c xa$a net/minecraft/class_7417$class_8823 net/minecraft/network/chat/ComponentContents$Type + f Lcom/mojang/serialization/MapCodec; a comp_1983 codec + f Ljava/lang/String; b comp_1984 id + m ()Lcom/mojang/serialization/MapCodec; a comp_1983 codec + m ()Ljava/lang/String; b comp_1984 id + m (Lcom/mojang/serialization/MapCodec;Ljava/lang/String;)V +c xb net/minecraft/class_8824 net/minecraft/network/chat/ComponentSerialization + f Lcom/mojang/serialization/Codec; a field_46597 CODEC + f Lyx; b field_48540 STREAM_CODEC + f Lyx; c field_48985 OPTIONAL_STREAM_CODEC + f Lyx; d field_49666 TRUSTED_STREAM_CODEC + f Lyx; e field_49667 TRUSTED_OPTIONAL_STREAM_CODEC + f Lyx; f field_49668 TRUSTED_CONTEXT_FREE_STREAM_CODEC + f Lcom/mojang/serialization/Codec; g field_46598 FLAT_CODEC + m (I)Lcom/mojang/serialization/Codec; a method_57973 flatCodec + m (Lcom/mojang/datafixers/util/Either;)Lwz; a method_54165 method_54165 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_54166 createCodec + m (Lcom/mojang/serialization/MapCodec;Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54167 method_54167 + m (Ljava/util/List;)Lxn; a method_54169 createFromList + m (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/Object;)Lcom/mojang/serialization/MapEncoder; a method_54171 method_54171 + m (Lwz;)Lcom/mojang/datafixers/util/Either; a method_54172 method_54172 + m ([Lazk;)[Lazk; a method_54173 method_54173 + m ([Lazk;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/String;)Lcom/mojang/serialization/MapCodec; a method_54174 createLegacyComponentMatcher + m (Lcom/mojang/datafixers/util/Either;)Lwz; b method_54175 method_54175 + m (Lwz;)Lwz; b method_54177 method_54177 + m ()V + m ()V +c xb$1 net/minecraft/class_8824$1 net/minecraft/network/chat/ComponentSerialization$1 + f Lcom/mojang/serialization/Codec; a field_49669 val$stringCodec + m (Lcom/mojang/datafixers/util/Pair;Lwz;)Lcom/mojang/datafixers/util/Pair; a method_57974 method_57974 + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/DynamicOps;Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult; a method_57975 method_57975 + m (Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/DynamicOps; a method_57976 asJsonOps + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_57977 method_57977 + m (Lwz;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_57978 encode + m (Lcom/mojang/serialization/Codec;)V +c xb$a net/minecraft/class_8824$class_8825 net/minecraft/network/chat/ComponentSerialization$FuzzyCodec + f Ljava/util/List; a field_46599 codecs + f Ljava/util/function/Function; b field_46600 encoderGetter + m ()Ljava/lang/String; a method_54180 method_54180 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/MapCodec;)Ljava/util/stream/Stream; a method_54181 method_54181 + m (Ljava/util/List;Ljava/util/function/Function;)V +c xb$b net/minecraft/class_8824$class_8912 net/minecraft/network/chat/ComponentSerialization$StrictEither + f Ljava/lang/String; a field_46914 typeFieldName + f Lcom/mojang/serialization/MapCodec; b field_46915 typed + f Lcom/mojang/serialization/MapCodec; c field_46916 fuzzy + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;Lcom/mojang/serialization/MapCodec;)V +c xc net/minecraft/class_2564 net/minecraft/network/chat/ComponentUtils + f Ljava/lang/String; a field_33536 DEFAULT_SEPARATOR_TEXT + f Lwz; b field_33537 DEFAULT_SEPARATOR + f Lwz; c field_33538 DEFAULT_NO_STYLE_SEPARATOR + m (Lcom/mojang/brigadier/Message;)Lwz; a method_10883 fromMessage + m (Let;Ljava/util/Optional;Lbsr;I)Ljava/util/Optional; a method_36330 updateForEntity + m (Let;Lwz;Lbsr;I)Lxn; a method_10881 updateForEntity + m (Let;Lxw;Lbsr;I)Lxw; a method_27663 resolveStyle + m (Ljava/lang/String;)Lxn; a method_47523 copyOnClickText + m (Ljava/lang/String;Lxw;)Lxw; a method_47524 method_47524 + m (Ljava/util/Collection;)Lwz; a method_10888 formatList + m (Ljava/util/Collection;Ljava/util/Optional;Ljava/util/function/Function;)Lxn; a method_36331 formatList + m (Ljava/util/Collection;Ljava/util/function/Function;)Lwz; a method_10887 formatAndSortList + m (Ljava/util/Collection;Lwz;)Lwz; a method_37112 formatList + m (Ljava/util/Collection;Lwz;Ljava/util/function/Function;)Lxn; a method_36332 formatList + m (Lwz;)Lxn; a method_10885 wrapInSquareBrackets + m (Lxn;Lxw;)Lxn; a method_10889 mergeStyles + m (Ljava/lang/String;)Lwz; b method_10886 method_10886 + m (Ljava/util/Collection;Ljava/util/function/Function;)Lwz; b method_10884 formatList + m (Lwz;)Z b method_43476 isTranslationResolvable + m ()V + m ()V +c xd net/minecraft/class_7649 net/minecraft/network/chat/FilterMask + f Lcom/mojang/serialization/Codec; a field_40837 CODEC + f Lxd; b field_39941 FULLY_FILTERED + f Lxd; c field_39942 PASS_THROUGH + f Lxw; d field_40674 FILTERED_STYLE + f Lcom/mojang/serialization/MapCodec; e field_40838 PASS_THROUGH_CODEC + f Lcom/mojang/serialization/MapCodec; f field_40839 FULLY_FILTERED_CODEC + f Lcom/mojang/serialization/MapCodec; g field_40840 PARTIALLY_FILTERED_CODEC + f C h field_39943 HASH + f Ljava/util/BitSet; i field_39944 mask + f Lxd$a; j field_39945 type + m ()Z a method_45087 isEmpty + m (I)V a method_45088 setFiltered + m (Ljava/lang/String;)Ljava/lang/String; a method_45089 apply + m (Lvw;)Lxd; a method_45090 read + m (Lvw;Lxd;)V a method_45091 write + m ()Z b method_45093 isFullyFiltered + m (Ljava/lang/String;)Lwz; b method_46256 applyWithFormatting + m ()Lxd$a; c method_46600 type + m ()Ljava/util/BitSet; d method_46601 mask + m (Ljava/util/BitSet;Lxd$a;)V + m (Ljava/util/BitSet;)V + m (I)V + m ()V +c xd$a net/minecraft/class_7649$class_7650 net/minecraft/network/chat/FilterMask$Type + f Lxd$a; a field_39947 PASS_THROUGH + f Lxd$a; b field_39948 FULLY_FILTERED + f Lxd$a; c field_39949 PARTIALLY_FILTERED + f Ljava/lang/String; d field_40841 serializedName + f Ljava/util/function/Supplier; e field_40842 codec + f [Lxd$a; f field_39950 $VALUES + m ()Lcom/mojang/serialization/MapCodec; a method_46602 codec + m ()Lcom/mojang/serialization/MapCodec; b method_46603 method_46603 + m ()Lcom/mojang/serialization/MapCodec; d method_46604 method_46604 + m ()Lcom/mojang/serialization/MapCodec; e method_46605 method_46605 + m ()[Lxd$a; f method_45094 $values + m (Ljava/lang/String;ILjava/lang/String;Ljava/util/function/Supplier;)V + m ()V +c xe net/minecraft/class_5348 net/minecraft/network/chat/FormattedText + f Ljava/util/Optional; a field_25309 STOP_ITERATION + f Lxe; b field_25310 EMPTY + m (Ljava/lang/String;Lxw;)Lxe; a method_29431 of + m (Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/util/Optional; a method_30067 method_30067 + m (Ljava/util/List;)Lxe; a method_29432 composite + m (Lxe$a;)Ljava/util/Optional; a method_27657 visit + m (Lxe$b;Lxw;)Ljava/util/Optional; a method_27658 visit + m ([Lxe;)Lxe; a method_29433 composite + m (Ljava/lang/String;)Lxe; e method_29430 of + m ()V +c xe$1 net/minecraft/class_5348$1 net/minecraft/network/chat/FormattedText$1 + m ()V +c xe$2 net/minecraft/class_5348$2 net/minecraft/network/chat/FormattedText$2 + f Ljava/lang/String; c field_25311 val$text + m (Ljava/lang/String;)V +c xe$3 net/minecraft/class_5348$3 net/minecraft/network/chat/FormattedText$3 + f Ljava/lang/String; c field_25312 val$text + f Lxw; d field_25313 val$style + m (Ljava/lang/String;Lxw;)V +c xe$4 net/minecraft/class_5348$4 net/minecraft/network/chat/FormattedText$4 + f Ljava/util/List; c field_25314 val$parts + m (Ljava/util/List;)V +c xe$a net/minecraft/class_5348$class_5245 net/minecraft/network/chat/FormattedText$ContentConsumer +c xe$b net/minecraft/class_5348$class_5246 net/minecraft/network/chat/FormattedText$StyledContentConsumer +c xf net/minecraft/class_2568 net/minecraft/network/chat/HoverEvent + f Lcom/mojang/serialization/Codec; a field_46601 CODEC + f Lxf$e; b field_46602 event + m ()Lxf$a; a method_10892 getAction + m (Lxf$a;)Ljava/lang/Object; a method_10891 getValue + m (Lxf;)Lxf$e; a method_54184 method_54184 + m (Lxf$a;Ljava/lang/Object;)V + m (Lxf$e;)V + m ()V +c xf$a net/minecraft/class_2568$class_5247 net/minecraft/network/chat/HoverEvent$Action + f Lxf$a; a field_24342 SHOW_TEXT + f Lxf$a; b field_24343 SHOW_ITEM + f Lxf$a; c field_24344 SHOW_ENTITY + f Lcom/mojang/serialization/Codec; d field_46603 UNSAFE_CODEC + f Lcom/mojang/serialization/Codec; e field_46604 CODEC + f Ljava/lang/String; f field_24346 name + f Z g field_24347 allowFromServer + f Lcom/mojang/serialization/MapCodec; h field_46605 codec + f Lcom/mojang/serialization/MapCodec; i field_46606 legacyCodec + m ()Z a method_27667 isAllowedFromServer + m (Ljava/lang/Object;)Ljava/lang/Object; a method_27676 cast + m (Lwz;Lakp;)Lcom/mojang/serialization/DataResult; a method_57979 method_57979 + m (Lxf$a;)Lcom/mojang/serialization/DataResult; a method_54186 filterForSerialization + m (Lxf$e;)Ljava/lang/Object; a method_54187 method_54187 + m ()Ljava/lang/String; b method_54188 method_54188 + m (Ljava/lang/Object;)Lxf$e; b method_57980 method_57980 + m (Lxf$a;)Ljava/lang/String; b method_54190 method_54190 + m ()[Lxf$a; d method_54192 method_54192 + m (Ljava/lang/String;ZLcom/mojang/serialization/Codec;Lxf$d;)V + m ()V +c xf$a$1 net/minecraft/class_2568$class_5247$1 net/minecraft/network/chat/HoverEvent$Action$1 + f Lxf$d; a field_49670 val$legacyConverter + f Lxf$a; b field_49671 field_49671 + m ()Ljava/lang/String; a method_57981 method_57981 + m (Lcom/mojang/datafixers/util/Pair;Ljava/lang/Object;)Lcom/mojang/datafixers/util/Pair; a method_57982 method_57982 + m (Lcom/mojang/serialization/DynamicOps;Lxf$d;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_57983 method_57983 + m (Lxf$e;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_57984 encode + m (Lxf$a;Lxf$d;)V +c xf$b net/minecraft/class_2568$class_5248 net/minecraft/network/chat/HoverEvent$EntityTooltipInfo + f Lcom/mojang/serialization/Codec; a field_46607 CODEC + f Lbsx; b field_24351 type + f Ljava/util/UUID; c field_24352 id + f Ljava/util/Optional; d field_24353 name + f Ljava/util/List; e field_24354 linesCache + m ()Ljava/util/List; a method_27682 getTooltipLines + m (Lbsx;Ljava/util/UUID;Lwz;)Lxf$b; a method_57985 method_57985 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54193 method_54193 + m (Ljava/lang/Exception;)Ljava/lang/String; a method_54194 method_54194 + m (Lwz;Lakp;)Lcom/mojang/serialization/DataResult; a method_54195 legacyCreate + m (Lxf$b;)Ljava/util/Optional; a method_54196 method_54196 + m (Lxf$b;)Ljava/util/UUID; b method_54197 method_54197 + m (Lxf$b;)Lbsx; c method_54198 method_54198 + m (Lbsx;Ljava/util/UUID;Lwz;)V + m (Lbsx;Ljava/util/UUID;Ljava/util/Optional;)V + m ()V +c xf$c net/minecraft/class_2568$class_5249 net/minecraft/network/chat/HoverEvent$ItemStackInfo + f Lcom/mojang/serialization/Codec; a field_46608 FULL_CODEC + f Lcom/mojang/serialization/Codec; b field_46609 CODEC + f Lcom/mojang/serialization/Codec; c field_49672 SIMPLE_CODEC + f Ljm; d field_24355 item + f I e field_24356 count + f Lkn; f field_49673 components + f Lcuq; g field_24358 itemStack + m ()Lcuq; a method_27683 getItemStack + m (Lcom/mojang/brigadier/exceptions/CommandSyntaxException;)Ljava/lang/String; a method_54200 method_54200 + m (Lwz;Lakp;)Lcom/mojang/serialization/DataResult; a method_54203 legacyCreate + m (Ljm;ILkn;)V + m (Lcuq;)V + m ()V +c xf$d net/minecraft/class_2568$class_9341 net/minecraft/network/chat/HoverEvent$LegacyConverter +c xf$e net/minecraft/class_2568$class_8826 net/minecraft/network/chat/HoverEvent$TypedHoverEvent + f Lcom/mojang/serialization/MapCodec; a field_46610 CODEC + f Lcom/mojang/serialization/MapCodec; b field_46611 LEGACY_CODEC + f Lxf$a; c comp_1985 action + f Ljava/lang/Object; d comp_1986 value + m ()Lxf$a; a comp_1985 action + m (Lxf$a;)Lcom/mojang/serialization/MapCodec; a method_54208 method_54208 + m ()Ljava/lang/Object; b comp_1986 value + m (Lxf$a;)Lcom/mojang/serialization/MapCodec; b method_54209 method_54209 + m (Lxf$a;Ljava/lang/Object;)V + m ()V +c xg net/minecraft/class_7635 net/minecraft/network/chat/LastSeenMessages + f Lcom/mojang/serialization/Codec; a field_40843 CODEC + f Lxg; b field_39883 EMPTY + f I c field_39884 LAST_SEEN_MESSAGES_MAX_LENGTH + f Ljava/util/List; d comp_965 entries + m ()Ljava/util/List; a comp_965 entries + m (Laza$a;)V a method_46257 updateSignature + m (Lxm;)Lxg$a; a method_46258 pack + m (Lxm;Lxl;)Lxl$a; a method_46259 method_46259 + m (Ljava/util/List;)V + m ()V +c xg$a net/minecraft/class_7635$class_7815 net/minecraft/network/chat/LastSeenMessages$Packed + f Lxg$a; a field_40675 EMPTY + f Ljava/util/List; b comp_1070 entries + m ()Ljava/util/List; a comp_1070 entries + m (Lvw;)V a method_46260 write + m (Lxm;)Ljava/util/Optional; a method_46261 unpack + m (Lvw;)V + m (Ljava/util/List;)V + m ()V +c xg$b net/minecraft/class_7635$class_7636 net/minecraft/network/chat/LastSeenMessages$Update + f I a comp_1071 offset + f Ljava/util/BitSet; b comp_1072 acknowledged + m ()I a comp_1071 offset + m (Lvw;)V a method_44983 write + m ()Ljava/util/BitSet; b comp_1072 acknowledged + m (Lvw;)V + m (ILjava/util/BitSet;)V +c xh net/minecraft/class_7637 net/minecraft/network/chat/LastSeenMessagesTracker + f [Lxj; a field_40676 trackedMessages + f I b field_40677 tail + f I c field_40678 offset + f Lxl; d field_40679 lastTrackedMessage + m ()I a method_46262 getAndClearOffset + m (Lxj;)V a method_46263 addEntry + m (Lxl;)V a method_46264 ignorePending + m (Lxl;Z)Z a method_46265 addPending + m ()Lxh$a; b method_46266 generateAndApplyUpdate + m ()I c method_46267 offset + m (I)V +c xh$a net/minecraft/class_7637$class_7816 net/minecraft/network/chat/LastSeenMessagesTracker$Update + f Lxg; a comp_1073 lastSeen + f Lxg$b; b comp_1074 update + m ()Lxg; a comp_1073 lastSeen + m ()Lxg$b; b comp_1074 update + m (Lxg;Lxg$b;)V +c xi net/minecraft/class_7638 net/minecraft/network/chat/LastSeenMessagesValidator + f I a field_40680 lastSeenCount + f Lit/unimi/dsi/fastutil/objects/ObjectList; b field_40681 trackedMessages + f Lxl; c field_40682 lastPendingMessage + m ()I a method_46268 trackedMessagesCount + m (I)Z a method_46269 applyOffset + m (Lxg$b;)Ljava/util/Optional; a method_46270 applyUpdate + m (Lxl;)V a method_44989 addPending + m (I)V +c xj net/minecraft/class_7817 net/minecraft/network/chat/LastSeenTrackedEntry + f Lxl; a comp_1075 signature + f Z b comp_1076 pending + m ()Lxj; a method_46271 acknowledge + m ()Lxl; b comp_1075 signature + m ()Z c comp_1076 pending + m (Lxl;Z)V +c xk net/minecraft/class_7818 net/minecraft/network/chat/LocalChatSession + f Ljava/util/UUID; a comp_1077 sessionId + f Lcmz; b comp_1078 keyPair + m ()Lxq; a method_46275 asRemote + m (Lcmz;)Lxk; a method_46273 create + m (Ljava/util/UUID;)Lxt$c; a method_46274 createMessageEncoder + m ()Ljava/util/UUID; b comp_1077 sessionId + m ()Lcmz; c comp_1078 keyPair + m (Ljava/util/UUID;Lcmz;)V +c xl net/minecraft/class_7469 net/minecraft/network/chat/MessageSignature + f Lcom/mojang/serialization/Codec; a field_40844 CODEC + f I b field_40683 BYTES + f [B c comp_925 bytes + m ()Ljava/nio/ByteBuffer; a method_44994 asByteBuffer + m (Lazb;Laza;)Z a method_44843 verify + m (Lvw;)Lxl; a method_46276 read + m (Lvw;Lxl;)V a method_44845 write + m (Lxm;)Lxl$a; a method_46277 pack + m ()[B b comp_925 bytes + m ([B)V + m ()V +c xl$a net/minecraft/class_7469$class_7819 net/minecraft/network/chat/MessageSignature$Packed + f I a field_40684 FULL_SIGNATURE + f I b comp_1079 id + f Lxl; c comp_1080 fullSignature + m ()I a comp_1079 id + m (Lvw;)Lxl$a; a method_46278 read + m (Lvw;Lxl$a;)V a method_46279 write + m (Lxm;)Ljava/util/Optional; a method_46280 unpack + m ()Lxl; b comp_1080 fullSignature + m (Lxl;)V + m (I)V + m (ILxl;)V +c xm net/minecraft/class_7561 net/minecraft/network/chat/MessageSignatureCache + f I a field_40845 NOT_FOUND + f I b field_40686 DEFAULT_CAPACITY + f [Lxl; c field_40687 entries + m ()Lxm; a method_46281 createDefault + m (I)Lxl; a method_46606 unpack + m (Ljava/util/ArrayDeque;)V a method_46283 push + m (Ljava/util/List;)V a method_46284 push + m (Lxl;)I a method_46607 pack + m (Lxs;Lxl;)V a method_46286 push + m (I)V +c xn net/minecraft/class_5250 net/minecraft/network/chat/MutableComponent + f Lxa; c field_39005 contents + f Ljava/util/List; d field_39006 siblings + f Lxw; e field_39007 style + f Laya; f field_39008 visualOrderText + f Ltw; g field_39009 decomposedWith + m (Ljava/util/function/UnaryOperator;)Lxn; a method_27694 withStyle + m (Ln;)Lxn; a method_27692 withStyle + m (Lxa;)Lxn; a method_43477 create + m ([Ln;)Lxn; a method_27695 withStyle + m (I)Lxn; b method_54663 withColor + m (Lwz;)Lxn; b method_10852 append + m (Lxw;)Lxn; b method_10862 setStyle + m (Lxw;)Lxn; c method_27696 withStyle + m (Ljava/lang/String;)Lxn; f method_27693 append + m (Lxa;Ljava/util/List;Lxw;)V +c xo net/minecraft/class_7604 net/minecraft/network/chat/OutgoingChatMessage + m ()Lwz; a comp_1081 content + m (Laqv;ZLwv$a;)V a method_45095 sendToPlayer + m (Lxp;)Lxo; a method_44857 create +c xo$a net/minecraft/class_7604$class_7606 net/minecraft/network/chat/OutgoingChatMessage$Disguised + f Lwz; a comp_1081 content + m (Lwz;)V +c xo$b net/minecraft/class_7604$class_7607 net/minecraft/network/chat/OutgoingChatMessage$Player + f Lxp; a comp_1082 message + m ()Lxp; b comp_1082 message + m (Lxp;)V +c xp net/minecraft/class_7471 net/minecraft/network/chat/PlayerChatMessage + f Lcom/mojang/serialization/MapCodec; a field_40846 MAP_CODEC + f Ljava/time/Duration; b field_39786 MESSAGE_EXPIRES_AFTER_SERVER + f Ljava/time/Duration; c field_39787 MESSAGE_EXPIRES_AFTER_CLIENT + f Lxu; d comp_1083 link + f Lxl; e comp_1084 signature + f Lxs; f comp_928 signedBody + f Lwz; g comp_830 unsignedContent + f Lxd; h comp_981 filterMask + f Ljava/util/UUID; i field_40688 SYSTEM_SENDER + m ()Lxp; a method_44607 removeUnsignedContent + m (Laza$a;)V a method_46289 method_46289 + m (Laza$a;Lxu;Lxs;)V a method_46290 updateSignature + m (Lazb;)Z a method_44858 verify + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_46608 method_46608 + m (Ljava/lang/String;)Lxp; a method_45041 system + m (Ljava/time/Instant;)Z a method_44747 hasExpiredServer + m (Ljava/util/UUID;)Z a method_45040 hasSignatureFrom + m (Ljava/util/UUID;Ljava/lang/String;)Lxp; a method_45098 unsigned + m (Lwz;)Lxp; a method_44863 withUnsignedContent + m (Lxd;)Lxp; a method_45097 filter + m (Lxp;)Ljava/util/Optional; a method_46609 method_46609 + m (Lxu;Ljava/util/Optional;Lxs;Ljava/util/Optional;Lxd;)Lxp; a method_46610 method_46610 + m (Z)Lxp; a method_45099 filter + m ()Lxp; b method_55625 removeSignature + m (Ljava/time/Instant;)Z b method_44748 hasExpiredClient + m (Lxp;)Ljava/util/Optional; b method_46611 method_46611 + m ()Ljava/lang/String; c method_44862 signedContent + m ()Lwz; d method_46291 decoratedContent + m ()Ljava/time/Instant; e method_44864 timeStamp + m ()J f method_44865 salt + m ()Ljava/util/UUID; g method_46292 sender + m ()Z h method_46293 isSystem + m ()Z i method_46294 hasSignature + m ()Z j method_45100 isFullyFiltered + m ()Lxu; k comp_1083 link + m ()Lxl; l comp_1084 signature + m ()Lxs; m comp_928 signedBody + m ()Lwz; n comp_830 unsignedContent + m ()Lxd; o comp_981 filterMask + m ()Lwz; p method_46295 method_46295 + m (Lxu;Lxl;Lxs;Lwz;Lxd;)V + m ()V +c xq net/minecraft/class_7822 net/minecraft/network/chat/RemoteChatSession + f Ljava/util/UUID; a comp_1085 sessionId + f Lcna; b comp_1086 profilePublicKey + m ()Lxq$a; a method_46298 asData + m (Ljava/time/Duration;)Lxv; a method_46296 createMessageValidator + m (Ljava/util/UUID;)Lxt$b; a method_46297 createMessageDecoder + m ()Z b method_51466 hasExpired + m (Ljava/time/Duration;)Z b method_53506 method_53506 + m ()Ljava/util/UUID; c comp_1085 sessionId + m ()Lcna; d comp_1086 profilePublicKey + m (Ljava/util/UUID;Lcna;)V +c xq$a net/minecraft/class_7822$class_7823 net/minecraft/network/chat/RemoteChatSession$Data + f Ljava/util/UUID; a comp_1087 sessionId + f Lcna$a; b comp_1088 profilePublicKey + m ()Ljava/util/UUID; a comp_1087 sessionId + m (Lcom/mojang/authlib/GameProfile;Lazb;)Lxq; a method_46300 validate + m (Lvw;)Lxq$a; a method_46301 read + m (Lvw;Lxq$a;)V a method_46303 write + m ()Lcna$a; b comp_1088 profilePublicKey + m (Ljava/util/UUID;Lcna$a;)V +c xr net/minecraft/class_7644 net/minecraft/network/chat/SignableCommand + f Ljava/util/List; a comp_974 arguments + m ()Ljava/util/List; a comp_974 arguments + m (Lcom/mojang/brigadier/ParseResults;)Z a method_58774 hasSignableArguments + m (Ljava/lang/String;)Lxr$a; a method_58775 getArgument + m (Ljava/lang/String;Lcom/mojang/brigadier/context/CommandContextBuilder;)Ljava/util/List; a method_45044 collectArguments + m (Lcom/mojang/brigadier/ParseResults;)Lxr; b method_45043 of + m (Ljava/util/List;)V +c xr$a net/minecraft/class_7644$class_7645 net/minecraft/network/chat/SignableCommand$Argument + f Lcom/mojang/brigadier/tree/ArgumentCommandNode; a comp_975 node + f Ljava/lang/String; b comp_1089 value + m ()Ljava/lang/String; a method_45046 name + m ()Lcom/mojang/brigadier/tree/ArgumentCommandNode; b comp_975 node + m ()Ljava/lang/String; c comp_1089 value + m (Lcom/mojang/brigadier/tree/ArgumentCommandNode;Ljava/lang/String;)V +c xs net/minecraft/class_7608 net/minecraft/network/chat/SignedMessageBody + f Lcom/mojang/serialization/MapCodec; a field_40847 MAP_CODEC + f Ljava/lang/String; b comp_929 content + f Ljava/time/Instant; c comp_930 timeStamp + f J d comp_931 salt + f Lxg; e comp_932 lastSeen + m ()Ljava/lang/String; a comp_929 content + m (Laza$a;)V a method_46304 updateSignature + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_46612 method_46612 + m (Ljava/lang/String;)Lxs; a method_46305 unsigned + m (Lxm;)Lxs$a; a method_46306 pack + m ()Ljava/time/Instant; b comp_930 timeStamp + m ()J c comp_931 salt + m ()Lxg; d comp_932 lastSeen + m (Ljava/lang/String;Ljava/time/Instant;JLxg;)V + m ()V +c xs$a net/minecraft/class_7608$class_7824 net/minecraft/network/chat/SignedMessageBody$Packed + f Ljava/lang/String; a comp_1090 content + f Ljava/time/Instant; b comp_1091 timeStamp + f J c comp_1092 salt + f Lxg$a; d comp_1093 lastSeen + m ()Ljava/lang/String; a comp_1090 content + m (Lvw;)V a method_46307 write + m (Lxg;)Lxs; a method_46308 method_46308 + m (Lxm;)Ljava/util/Optional; a method_46309 unpack + m ()Ljava/time/Instant; b comp_1091 timeStamp + m ()J c comp_1092 salt + m ()Lxg$a; d comp_1093 lastSeen + m (Lvw;)V + m (Ljava/lang/String;Ljava/time/Instant;JLxg$a;)V +c xt net/minecraft/class_7610 net/minecraft/network/chat/SignedMessageChain + f Lorg/slf4j/Logger; a field_40691 LOGGER + f Lxu; b field_40692 nextLink + f Ljava/time/Instant; c field_47703 lastTimeStamp + m (Lazc;)Lxt$c; a method_44880 encoder + m (Lazc;Lxs;)Lxl; a method_46311 method_46311 + m (Lcna;)Lxt$b; a method_44874 decoder + m (Lxu;Lxs;Laza$a;)V a method_46313 method_46313 + m (Ljava/util/UUID;Ljava/util/UUID;)V + m ()V +c xt$1 net/minecraft/class_7610$1 net/minecraft/network/chat/SignedMessageChain$1 + f Lcna; a field_50253 val$profilePublicKey + f Lazb; b field_50254 val$signatureValidator + f Lxt; c field_50255 field_50255 + m (Lxt;Lcna;Lazb;)V +c xt$a net/minecraft/class_7610$class_7825 net/minecraft/network/chat/SignedMessageChain$DecodeException + f Lwz; a field_50256 MISSING_PROFILE_KEY + f Lwz; b field_50257 CHAIN_BROKEN + f Lwz; c field_50258 EXPIRED_PROFILE_KEY + f Lwz; d field_50259 INVALID_SIGNATURE + f Lwz; e field_50260 OUT_OF_ORDER_CHAT + m (Lwz;)V + m ()V +c xt$b net/minecraft/class_7610$class_7611 net/minecraft/network/chat/SignedMessageChain$Decoder + m (Ljava/util/function/BooleanSupplier;Ljava/util/UUID;Lxl;Lxs;)Lxp; a method_46315 method_46315 +c xt$c net/minecraft/class_7610$class_7612 net/minecraft/network/chat/SignedMessageChain$Encoder + f Lxt$c; a field_40694 UNSIGNED + m (Lxs;)Lxl; a method_46316 method_46316 + m ()V +c xu net/minecraft/class_7826 net/minecraft/network/chat/SignedMessageLink + f Lcom/mojang/serialization/Codec; a field_40849 CODEC + f I b comp_1094 index + f Ljava/util/UUID; c comp_1095 sender + f Ljava/util/UUID; d comp_1096 sessionId + m ()Lxu; a method_46317 advance + m (Laza$a;)V a method_46318 updateSignature + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_46614 method_46614 + m (Ljava/util/UUID;)Lxu; a method_46319 unsigned + m (Ljava/util/UUID;Ljava/util/UUID;)Lxu; a method_46320 root + m (Lxu;)Z a method_46321 isDescendantOf + m ()I b comp_1094 index + m ()Ljava/util/UUID; c comp_1095 sender + m ()Ljava/util/UUID; d comp_1096 sessionId + m (ILjava/util/UUID;Ljava/util/UUID;)V + m ()V +c xv net/minecraft/class_7615 net/minecraft/network/chat/SignedMessageValidator + f Lorg/slf4j/Logger; a field_45957 LOGGER + f Lxv; b field_40695 ACCEPT_UNSIGNED + f Lxv; c field_40696 REJECT_ALL + m (Lxp;)Lxp; a method_55626 method_55626 + m (Lxp;)Lxp; updateAndValidate method_45048 updateAndValidate + m ()V +c xv$a net/minecraft/class_7615$class_7616 net/minecraft/network/chat/SignedMessageValidator$KeyBased + f Lazb; d field_39822 validator + f Ljava/util/function/BooleanSupplier; e field_45958 expired + f Lxp; f field_40697 lastMessage + f Z g field_39821 isChainValid + m (Lxp;)Z a method_44996 validateChain + m (Lxp;)Z b method_53509 validate + m (Lazb;Ljava/util/function/BooleanSupplier;)V +c xw net/minecraft/class_2583 net/minecraft/network/chat/Style + f Lxw; a field_24360 EMPTY + f Lakr; b field_24359 DEFAULT_FONT + f Lxy; c field_11855 color + f Ljava/lang/Boolean; d field_11856 bold + f Ljava/lang/Boolean; e field_11852 italic + f Ljava/lang/Boolean; f field_11851 underlined + f Ljava/lang/Boolean; g field_11857 strikethrough + f Ljava/lang/Boolean; h field_11861 obfuscated + f Lwx; i field_11853 clickEvent + f Lxf; j field_11858 hoverEvent + f Ljava/lang/String; k field_11859 insertion + f Lakr; l field_24361 font + m ()Lxy; a method_10973 getColor + m (I)Lxw; a method_36139 withColor + m (Lakr;)Lxw; a method_27704 withFont + m (Ljava/lang/Boolean;)Lxw; a method_10982 withBold + m (Ljava/lang/String;)Lxw; a method_10975 withInsertion + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)Lxw; a method_43870 create + m (Ln;)Lxw; a method_10977 withColor + m (Lwx;)Lxw; a method_10958 withClickEvent + m (Lxf;)Lxw; a method_10949 withHoverEvent + m (Lxw;)Lxw; a method_27702 applyTo + m (Lxw;Ljava/lang/Object;Ljava/lang/Object;)Lxw; a method_54210 checkEmptyAfterChange + m (Lxy;)Lxw; a method_27703 withColor + m ([Ln;)Lxw; a method_27705 applyFormats + m ()Z b method_10984 isBold + m (Ljava/lang/Boolean;)Lxw; b method_10978 withItalic + m (Ln;)Lxw; b method_27706 applyFormat + m ()Z c method_10966 isItalic + m (Ljava/lang/Boolean;)Lxw; c method_30938 withUnderlined + m (Ln;)Lxw; c method_27707 applyLegacyFormat + m ()Z d method_10986 isStrikethrough + m (Ljava/lang/Boolean;)Lxw; d method_36140 withStrikethrough + m ()Z e method_10965 isUnderlined + m (Ljava/lang/Boolean;)Lxw; e method_36141 withObfuscated + m ()Z f method_10987 isObfuscated + m ()Z g method_10967 isEmpty + m ()Lwx; h method_10970 getClickEvent + m ()Lxf; i method_10969 getHoverEvent + m ()Ljava/lang/String; j method_10955 getInsertion + m ()Lakr; k method_27708 getFont + m (Lxy;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Lwx;Lxf;Ljava/lang/String;Lakr;)V + m ()V +c xw$1 net/minecraft/class_2583$1 net/minecraft/network/chat/Style$1 + f [I a field_11751 $SwitchMap$net$minecraft$ChatFormatting + m ()V +c xw$a net/minecraft/class_2583$class_7418 net/minecraft/network/chat/Style$1Collector + f Ljava/lang/StringBuilder; a field_39010 val$result + f Z b field_39012 isNotFirst + m ()V a method_43478 prependSeparator + m (Ljava/lang/String;Ljava/lang/Boolean;)V a method_43479 addFlagString + m (Ljava/lang/String;Ljava/lang/Object;)V a method_43480 addValueString + m (Lxw;Ljava/lang/StringBuilder;)V +c xw$b net/minecraft/class_2583$class_2584 net/minecraft/network/chat/Style$Serializer + f Lcom/mojang/serialization/MapCodec; a field_46612 MAP_CODEC + f Lcom/mojang/serialization/Codec; b field_46613 CODEC + f Lyx; c field_48541 TRUSTED_STREAM_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54211 method_54211 + m (Lxw;)Ljava/util/Optional; a method_54212 method_54212 + m (Lxw;)Ljava/util/Optional; b method_54213 method_54213 + m (Lxw;)Ljava/util/Optional; c method_54214 method_54214 + m (Lxw;)Ljava/util/Optional; d method_54215 method_54215 + m (Lxw;)Ljava/util/Optional; e method_54216 method_54216 + m (Lxw;)Ljava/util/Optional; f method_54217 method_54217 + m (Lxw;)Ljava/util/Optional; g method_54218 method_54218 + m (Lxw;)Ljava/util/Optional; h method_54219 method_54219 + m (Lxw;)Ljava/util/Optional; i method_54220 method_54220 + m (Lxw;)Ljava/util/Optional; j method_54221 method_54221 + m ()V + m ()V +c xx net/minecraft/class_5492 net/minecraft/network/chat/SubStringSource + f Ljava/lang/String; a field_26626 plainText + f Ljava/util/List; b field_26627 charStyles + f Lit/unimi/dsi/fastutil/ints/Int2IntFunction; c field_26628 reverseCharModifier + m ()Ljava/lang/String; a method_30939 getPlainText + m (I)I a method_36142 method_36142 + m (IIZ)Ljava/util/List; a method_30940 substring + m (Ljava/lang/String;)Ljava/lang/String; a method_36143 method_36143 + m (Ljava/lang/StringBuilder;Ljava/util/List;ILxw;I)Z a method_30941 method_30941 + m (Ljava/lang/StringBuilder;Ljava/util/List;Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_30942 method_30942 + m (Lxe;)Lxx; a method_36144 create + m (Lxe;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;Ljava/util/function/UnaryOperator;)Lxx; a method_30943 create + m (Ljava/lang/String;Ljava/util/List;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;)V +c xy net/minecraft/class_5251 net/minecraft/network/chat/TextColor + f Lcom/mojang/serialization/Codec; a field_39242 CODEC + f Ljava/lang/String; b field_33291 CUSTOM_COLOR_PREFIX + f Ljava/util/Map; c field_24362 LEGACY_FORMAT_TO_COLOR + f Ljava/util/Map; d field_24363 NAMED_COLORS + f I e field_24364 value + f Ljava/lang/String; f field_24365 name + m ()I a method_27716 getValue + m (I)Lxy; a method_27717 fromRgb + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_27719 parseColor + m (Ln;)Lxy; a method_27718 fromLegacyFormat + m (Lxy;)Ljava/lang/String; a method_27720 method_27720 + m ()Ljava/lang/String; b method_27721 serialize + m (Ljava/lang/String;)Ljava/lang/String; b method_54222 method_54222 + m (Ln;)Lxy; b method_27722 method_27722 + m ()Ljava/lang/String; c method_27723 formatValue + m (Ljava/lang/String;)Ljava/lang/String; c method_54223 method_54223 + m (Ljava/lang/String;)Ljava/lang/String; d method_54224 method_54224 + m (ILjava/lang/String;)V + m (I)V + m ()V +c xz net/minecraft/class_7437 net/minecraft/network/chat/ThrowingComponent + f Lwz; a field_39084 component + m ()Lwz; a method_43626 getComponent + m (Lwz;)V + m (Lwz;Ljava/lang/Throwable;)V +c ya net/minecraft/class_2575 net/minecraft/network/chat/contents/BlockDataSource + f Lcom/mojang/serialization/MapCodec; a field_46614 SUB_CODEC + f Lyb$a; b field_46615 TYPE + f Ljava/lang/String; d comp_733 posPattern + f Lgr; e comp_734 compiledPos + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54226 method_54226 + m (Ljava/lang/String;)Lgr; a method_16121 compilePos + m ()Ljava/lang/String; b comp_733 posPattern + m ()Lgr; c comp_734 compiledPos + m (Ljava/lang/String;)V + m (Ljava/lang/String;Lgr;)V + m ()V +c yb net/minecraft/class_7419 net/minecraft/network/chat/contents/DataSource + f Lcom/mojang/serialization/MapCodec; c field_46616 CODEC + m ()Lyb$a; a method_54225 type + m (Let;)Ljava/util/stream/Stream; a method_10916 getData + m ()V +c yb$a net/minecraft/class_7419$class_8827 net/minecraft/network/chat/contents/DataSource$Type + f Lcom/mojang/serialization/MapCodec; a comp_1987 codec + f Ljava/lang/String; b comp_1988 id + m ()Lcom/mojang/serialization/MapCodec; a comp_1987 codec + m ()Ljava/lang/String; b comp_1988 id + m (Lcom/mojang/serialization/MapCodec;Ljava/lang/String;)V +c yc net/minecraft/class_2576 net/minecraft/network/chat/contents/EntityDataSource + f Lcom/mojang/serialization/MapCodec; a field_46617 SUB_CODEC + f Lyb$a; b field_46618 TYPE + f Ljava/lang/String; d comp_735 selectorPattern + f Lhi; e comp_736 compiledSelector + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54227 method_54227 + m (Ljava/lang/String;)Lhi; a method_10923 compileSelector + m ()Ljava/lang/String; b comp_735 selectorPattern + m ()Lhi; c comp_736 compiledSelector + m (Ljava/lang/String;)V + m (Ljava/lang/String;Lhi;)V + m ()V +c yd net/minecraft/class_2572 net/minecraft/network/chat/contents/KeybindContents + f Lcom/mojang/serialization/MapCodec; a field_46619 CODEC + f Lxa$a; b field_46620 TYPE + f Ljava/lang/String; c field_11767 name + f Ljava/util/function/Supplier; d field_11768 nameResolver + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54228 method_54228 + m (Lyd;)Ljava/lang/String; a method_54229 method_54229 + m ()Ljava/lang/String; b method_10901 getName + m ()Lwz; c method_27691 getNestedComponent + m (Ljava/lang/String;)V + m ()V +c ye net/minecraft/class_7420 net/minecraft/network/chat/contents/KeybindResolver + f Ljava/util/function/Function; a field_39013 keyResolver + m (Ljava/lang/String;)Ljava/util/function/Supplier; a method_43481 method_43481 + m (Ljava/util/function/Function;)V a method_43482 setKeyResolver + m (Ljava/lang/String;)Lwz; b method_43483 method_43483 + m ()V + m ()V +c yf net/minecraft/class_2574 net/minecraft/network/chat/contents/NbtContents + f Lcom/mojang/serialization/MapCodec; a field_46621 CODEC + f Lxa$a; b field_46622 TYPE + f Lfl$g; c field_11779 compiledNbtPath + f Lorg/slf4j/Logger; d field_11777 LOGGER + f Z e field_11778 interpreting + f Ljava/util/Optional; f field_33539 separator + f Ljava/lang/String; g field_11776 nbtPathPattern + f Lyb; h field_39014 dataSource + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54230 method_54230 + m (Let;Lbsr;ILjava/lang/String;)Ljava/util/stream/Stream; a method_10917 method_10917 + m (Ljava/lang/String;)Lfl$g; a method_10919 compileNbtPath + m (Ljava/util/stream/Stream;)Lxn; a method_36333 method_36333 + m (Ljava/util/stream/Stream;Lxn;)Lxn; a method_36334 method_36334 + m (Lub;)Ljava/util/stream/Stream; a method_10918 method_10918 + m (Lwz;Lxn;Lxn;)Lxn; a method_15880 method_15880 + m (Lxn;Lxn;Lxn;)Lxn; a method_36335 method_36335 + m ()Ljava/lang/String; b method_10920 getNbtPath + m ()Z c method_10921 isInterpreting + m ()Ljava/util/Optional; d method_43484 getSeparator + m ()Lyb; e method_43485 getDataSource + m (Ljava/lang/String;ZLjava/util/Optional;Lyb;)V + m (Ljava/lang/String;Lfl$g;ZLjava/util/Optional;Lyb;)V + m ()V +c yg net/minecraft/class_8828 net/minecraft/network/chat/contents/PlainTextContents + f Lcom/mojang/serialization/MapCodec; a field_46623 CODEC + f Lxa$a; b field_46624 TYPE + f Lyg; c field_46625 EMPTY + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54231 method_54231 + m (Ljava/lang/String;)Lyg; a method_54232 create + m ()Ljava/lang/String; b comp_737 text + m ()V +c yg$1 net/minecraft/class_8828$1 net/minecraft/network/chat/contents/PlainTextContents$1 + m ()V +c yg$a net/minecraft/class_8828$class_2585 net/minecraft/network/chat/contents/PlainTextContents$LiteralContents + f Ljava/lang/String; d comp_737 text + m (Ljava/lang/String;)V +c yh net/minecraft/class_2578 net/minecraft/network/chat/contents/ScoreContents + f Lcom/mojang/serialization/MapCodec; a field_46626 INNER_CODEC + f Lcom/mojang/serialization/MapCodec; b field_46627 CODEC + f Lxa$a; c field_46628 TYPE + f Ljava/lang/String; d field_11787 name + f Lhi; e field_11786 selector + f Ljava/lang/String; f field_11785 objective + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54233 method_54233 + m (Let;)Leyf; a method_27699 findTargetName + m (Leyf;Let;)Lxn; a method_27700 getScore + m (Ljava/lang/String;)Lhi; a method_27701 parseSelector + m ()Ljava/lang/String; b method_10930 getName + m ()Lhi; c method_36137 getSelector + m ()Ljava/lang/String; d method_10928 getObjective + m (Ljava/lang/String;Ljava/lang/String;)V + m ()V +c yi net/minecraft/class_2579 net/minecraft/network/chat/contents/SelectorContents + f Lcom/mojang/serialization/MapCodec; a field_46629 CODEC + f Lxa$a; b field_46630 TYPE + f Ljava/util/Optional; c field_33540 separator + f Lorg/slf4j/Logger; d field_11791 LOGGER + f Ljava/lang/String; e field_11789 pattern + f Lhi; f field_11790 selector + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54234 method_54234 + m (Ljava/lang/String;)Lhi; a method_43486 parseSelector + m ()Ljava/lang/String; b method_10932 getPattern + m ()Lhi; c method_36138 getSelector + m ()Ljava/util/Optional; d method_36339 getSeparator + m (Ljava/lang/String;Ljava/util/Optional;)V + m ()V +c yj net/minecraft/class_4616 net/minecraft/network/chat/contents/StorageDataSource + f Lcom/mojang/serialization/MapCodec; a field_46631 SUB_CODEC + f Lyb$a; b field_46632 TYPE + f Lakr; d comp_738 id + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54235 method_54235 + m ()Lakr; b comp_738 id + m (Lakr;)V + m ()V +c yk net/minecraft/class_2588 net/minecraft/network/chat/contents/TranslatableContents + f [Ljava/lang/Object; a field_24367 NO_ARGS + f Lcom/mojang/serialization/MapCodec; b field_46633 CODEC + f Lxa$a; c field_46634 TYPE + f Lcom/mojang/serialization/Codec; d field_46635 PRIMITIVE_ARG_CODEC + f Lcom/mojang/serialization/Codec; e field_46636 ARG_CODEC + f Lxe; f field_24368 TEXT_PERCENT + f Lxe; g field_24369 TEXT_NULL + f Ljava/lang/String; h field_11876 key + f Ljava/lang/String; i field_41875 fallback + f [Ljava/lang/Object; j field_11875 args + f Ltw; k field_25317 decomposedWith + f Ljava/util/List; l field_11877 decomposedParts + f Ljava/util/regex/Pattern; m field_11872 FORMAT_PATTERN + m (I)Lxe; a method_29434 getArgument + m (Lcom/mojang/datafixers/util/Either;)Ljava/lang/Object; a method_54236 method_54236 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54237 method_54237 + m (Ljava/lang/Object;)Z a method_54238 isAllowedPrimitiveArgument + m (Ljava/lang/String;Ljava/util/Optional;Ljava/util/Optional;)Lyk; a method_54239 create + m (Ljava/lang/String;Ljava/util/function/Consumer;)V a method_11024 decomposeTemplate + m (Ljava/util/List;)[Ljava/lang/Object; a method_54240 method_54240 + m (Ljava/util/Optional;)[Ljava/lang/Object; a method_54241 adjustArgs + m (Lwz;)Ljava/lang/Object; a method_54242 method_54242 + m (Lyk;)Ljava/util/Optional; a method_54243 method_54243 + m ([Ljava/lang/Object;)Ljava/util/Optional; a method_54244 adjustArgs + m ()Ljava/lang/String; b method_11022 getKey + m (Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; b method_54245 filterAllowedArguments + m (Lyk;)Ljava/util/Optional; b method_54246 method_54246 + m ()Ljava/lang/String; c method_48323 getFallback + m (Ljava/lang/Object;)Lcom/mojang/datafixers/util/Either; c method_54247 method_54247 + m (Lyk;)Ljava/lang/String; c method_54248 method_54248 + m ()[Ljava/lang/Object; d method_11023 getArgs + m (Ljava/lang/Object;)Ljava/lang/Object; d method_54249 method_54249 + m ()V e method_11025 decompose + m ()Ljava/lang/String; f method_54250 method_54250 + m (Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V + m ()V +c yl net/minecraft/class_2590 net/minecraft/network/chat/contents/TranslatableFormatException + m (Lyk;Ljava/lang/String;)V + m (Lyk;I)V + m (Lyk;Ljava/lang/Throwable;)V +c ym net/minecraft/class_7421 net/minecraft/network/chat/contents/package-info +c yn net/minecraft/class_9020 net/minecraft/network/chat/numbers/BlankFormat + f Lyn; a field_47557 INSTANCE + f Lyq; b field_47558 TYPE + m ()V + m ()V +c yn$1 net/minecraft/class_9020$1 net/minecraft/network/chat/numbers/BlankFormat$1 + f Lcom/mojang/serialization/MapCodec; a field_47559 CODEC + f Lyx; b field_48542 STREAM_CODEC + m ()V + m ()V +c yo net/minecraft/class_9021 net/minecraft/network/chat/numbers/FixedFormat + f Lyq; a field_47560 TYPE + f Lwz; b field_47561 value + m (Lwz;)V + m ()V +c yo$1 net/minecraft/class_9021$1 net/minecraft/network/chat/numbers/FixedFormat$1 + f Lcom/mojang/serialization/MapCodec; a field_47562 CODEC + f Lyx; b field_48543 STREAM_CODEC + m (Lyo;)Lwz; a method_56361 method_56361 + m (Lyo;)Lwz; b method_55465 method_55465 + m ()V + m ()V +c yp net/minecraft/class_9022 net/minecraft/network/chat/numbers/NumberFormat + m ()Lyq; a method_55456 type + m (I)Lxn; a method_55457 format +c yq net/minecraft/class_9023 net/minecraft/network/chat/numbers/NumberFormatType + m ()Lcom/mojang/serialization/MapCodec; a method_55458 mapCodec + m ()Lyx; b method_56360 streamCodec +c yr net/minecraft/class_9024 net/minecraft/network/chat/numbers/NumberFormatTypes + f Lcom/mojang/serialization/MapCodec; a field_47563 MAP_CODEC + f Lcom/mojang/serialization/Codec; b field_47564 CODEC + f Lyx; c field_48544 STREAM_CODEC + f Lyx; d field_48545 OPTIONAL_STREAM_CODEC + m (Ljz;)Lyq; a method_55466 bootstrap + m ()V + m ()V +c ys net/minecraft/class_9025 net/minecraft/network/chat/numbers/StyledFormat + f Lyq; a field_47565 TYPE + f Lys; b field_47566 NO_STYLE + f Lys; c field_47567 SIDEBAR_DEFAULT + f Lys; d field_47568 PLAYER_LIST_DEFAULT + f Lxw; e field_47569 style + m (Lxw;)V + m ()V +c ys$1 net/minecraft/class_9025$1 net/minecraft/network/chat/numbers/StyledFormat$1 + f Lcom/mojang/serialization/MapCodec; a field_47570 CODEC + f Lyx; b field_48546 STREAM_CODEC + m (Lys;)Lxw; a method_56362 method_56362 + m (Lys;)Lxw; b method_55472 method_55472 + m ()V + m ()V +c yt net/minecraft/class_9026 net/minecraft/network/chat/numbers/package-info +c yu net/minecraft/class_6312 net/minecraft/network/chat/package-info +c yv net/minecraft/class_9135 net/minecraft/network/codec/ByteBufCodecs + f I a field_49674 MAX_INITIAL_COLLECTION_SIZE + f Lyx; b field_48547 BOOL + f Lyx; c field_48548 BYTE + f Lyx; d field_48549 SHORT + f Lyx; e field_51470 UNSIGNED_SHORT + f Lyx; f field_49675 INT + f Lyx; g field_48550 VAR_INT + f Lyx; h field_48551 VAR_LONG + f Lyx; i field_48552 FLOAT + f Lyx; j field_48553 DOUBLE + f Lyx; k field_48987 BYTE_ARRAY + f Lyx; l field_48554 STRING_UTF8 + f Lyx; m field_48555 TAG + f Lyx; n field_49676 TRUSTED_TAG + f Lyx; o field_48556 COMPOUND_TAG + f Lyx; p field_49677 TRUSTED_COMPOUND_TAG + f Lyx; q field_48557 OPTIONAL_COMPOUND_TAG + f Lyx; r field_48558 VECTOR3F + f Lyx; s field_48559 QUATERNIONF + f Lyx; t field_49678 GAME_PROFILE_PROPERTIES + f Lyx; u field_49679 GAME_PROFILE + m ()Lyx$a; a method_56363 list + m (I)Lyx; a method_56895 byteArray + m (ILyx;)Lyx; a method_57986 method_57986 + m (Lakq;)Lyx; a method_56365 registry + m (Lakq;Ljava/util/function/Function;)Lyx; a method_56366 registry + m (Lakq;Lyx;)Lyx; a method_56367 holder + m (Lcom/mojang/serialization/Codec;)Lyx; a method_57987 fromCodecTrusted + m (Lcom/mojang/serialization/Codec;Ljava/lang/Object;)Luy; a method_56369 method_56369 + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Supplier;)Lyx; a method_57988 fromCodec + m (Lcom/mojang/serialization/Codec;Luy;)Ljava/lang/Object; a method_56370 method_56370 + m (Lio/netty/buffer/ByteBuf;I)I a method_57989 readCount + m (Lio/netty/buffer/ByteBuf;II)V a method_57990 writeCount + m (Ljava/lang/Object;Ljava/lang/String;)Lio/netty/handler/codec/EncoderException; a method_56373 method_56373 + m (Ljava/util/function/IntFunction;)Lyx$a; a method_56374 collection + m (Ljava/util/function/IntFunction;Ljava/util/function/ToIntFunction;)Lyx; a method_56375 idMapper + m (Ljava/util/function/IntFunction;Lyx;)Lyx; a method_56376 collection + m (Ljava/util/function/IntFunction;Lyx;I)Lyx; a method_57991 collection + m (Ljava/util/function/IntFunction;Lyx;Lyx;)Lyx; a method_56377 map + m (Ljava/util/function/IntFunction;Lyx;Lyx;I)Lyx; a method_57992 map + m (Ljava/util/function/Supplier;)Lyx; a method_56378 tagCodec + m (Ljr;)Lyx; a method_56371 idMapper + m (Ljz;)Ljr; a method_56372 method_56372 + m (Lub;)Luy; a method_57993 method_57993 + m (Luy;)Lub; a method_57994 method_57994 + m (Luy;Ljava/lang/String;)Lio/netty/handler/codec/DecoderException; a method_56381 method_56381 + m (Lyx;)Lyx; a method_56382 optional + m (Lyx;Lyx;)Lyx; a method_57995 either + m ()Luk; b method_57996 method_57996 + m (I)Lyx; b method_56364 stringUtf8 + m (Lakq;)Lyx; b method_56383 holderRegistry + m (Lcom/mojang/serialization/Codec;)Lyx; b method_56368 fromCodec + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Supplier;)Lyx; b method_57997 fromCodecWithRegistries + m (Ljava/util/function/IntFunction;Lyx;)Lyx; b method_56384 method_56384 + m (Ljava/util/function/Supplier;)Lyx; b method_57998 compoundTagCodec + m (Lyx;)Lyx; b method_56385 method_56385 + m ()Luk; c method_57999 method_57999 + m (I)Lyx$a; c method_58000 list + m (Lakq;)Lyx; c method_58001 holderSet + m (Lcom/mojang/serialization/Codec;)Lyx; c method_58002 fromCodecWithRegistriesTrusted + m ()Luk; d method_58003 method_58003 + m (Lcom/mojang/serialization/Codec;)Lyx; d method_56896 fromCodecWithRegistries + m ()Luk; e method_58004 method_58004 + m ()V +c yv$1 net/minecraft/class_9135$1 net/minecraft/network/codec/ByteBufCodecs$1 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Boolean; a method_56386 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Boolean;)V a method_56387 encode + m ()V +c yv$2 net/minecraft/class_9135$2 net/minecraft/network/codec/ByteBufCodecs$10 + f I a field_51478 val$maxSize + m (Lio/netty/buffer/ByteBuf;)[B a method_56403 decode + m (Lio/netty/buffer/ByteBuf;[B)V a method_56404 encode + m (I)V +c yv$3 net/minecraft/class_9135$3 net/minecraft/network/codec/ByteBufCodecs$11 + m (Lio/netty/buffer/ByteBuf;)[B a method_59799 decode + m (Lio/netty/buffer/ByteBuf;[B)V a method_59800 encode + m ()V +c yv$4 net/minecraft/class_9135$4 net/minecraft/network/codec/ByteBufCodecs$12 + f I a field_48988 val$maxStringLength + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/String; a method_56897 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/String;)V a method_56898 encode + m (I)V +c yv$5 net/minecraft/class_9135$5 net/minecraft/network/codec/ByteBufCodecs$13 + f Ljava/util/function/Supplier; a field_48565 val$accounter + m (Lio/netty/buffer/ByteBuf;)Luy; a method_56405 decode + m (Lio/netty/buffer/ByteBuf;Luy;)V a method_56406 encode + m (Ljava/util/function/Supplier;)V +c yv$6 net/minecraft/class_9135$6 net/minecraft/network/codec/ByteBufCodecs$14 + f Lyx; a field_49696 val$tagCodec + f Lcom/mojang/serialization/Codec; b field_48989 val$codec + m (Ljava/lang/Object;Ljava/lang/String;)Lio/netty/handler/codec/EncoderException; a method_56899 method_56899 + m (Luy;Ljava/lang/String;)Lio/netty/handler/codec/DecoderException; a method_56900 method_56900 + m (Lwk;)Ljava/lang/Object; a method_56901 decode + m (Lwk;Ljava/lang/Object;)V a method_56902 encode + m (Lyx;Lcom/mojang/serialization/Codec;)V +c yv$7 net/minecraft/class_9135$7 net/minecraft/network/codec/ByteBufCodecs$15 + m (Lio/netty/buffer/ByteBuf;)Ljava/util/Optional; a method_56411 decode + m (Lio/netty/buffer/ByteBuf;Ljava/util/Optional;)V a method_56412 encode + m ()V +c yv$8 net/minecraft/class_9135$8 net/minecraft/network/codec/ByteBufCodecs$16 + m (Lio/netty/buffer/ByteBuf;)Lorg/joml/Vector3f; a method_58022 decode + m (Lio/netty/buffer/ByteBuf;Lorg/joml/Vector3f;)V a method_58023 encode + m ()V +c yv$9 net/minecraft/class_9135$9 net/minecraft/network/codec/ByteBufCodecs$17 + m (Lio/netty/buffer/ByteBuf;)Lorg/joml/Quaternionf; a method_59801 decode + m (Lio/netty/buffer/ByteBuf;Lorg/joml/Quaternionf;)V a method_59802 encode + m ()V +c yv$10 net/minecraft/class_9135$10 net/minecraft/network/codec/ByteBufCodecs$18 + f Lyx; a field_49697 val$original + m (Lio/netty/buffer/ByteBuf;)Ljava/util/Optional; a method_56415 decode + m (Lio/netty/buffer/ByteBuf;Ljava/util/Optional;)V a method_56416 encode + m (Lyx;)V +c yv$11 net/minecraft/class_9135$11 net/minecraft/network/codec/ByteBufCodecs$19 + f I a field_49682 val$maxSize + f Ljava/util/function/IntFunction; b field_49685 val$constructor + f Lyx; c field_51471 val$elementCodec + m (Lio/netty/buffer/ByteBuf;)Ljava/util/Collection; a method_58005 decode + m (Lio/netty/buffer/ByteBuf;Ljava/util/Collection;)V a method_58006 encode + m (ILjava/util/function/IntFunction;Lyx;)V +c yv$12 net/minecraft/class_9135$12 net/minecraft/network/codec/ByteBufCodecs$2 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Byte; a method_56391 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Byte;)V a method_56392 encode + m ()V +c yv$13 net/minecraft/class_9135$13 net/minecraft/network/codec/ByteBufCodecs$20 + f I a field_49680 val$maxSize + f Lyx; b field_51472 val$keyCodec + f Lyx; c field_51473 val$valueCodec + f Ljava/util/function/IntFunction; d field_48571 val$constructor + m (Lio/netty/buffer/ByteBuf;)Ljava/util/Map; a method_56417 decode + m (Lio/netty/buffer/ByteBuf;Ljava/util/Map;)V a method_56418 encode + m (Lyx;Lio/netty/buffer/ByteBuf;Lyx;Ljava/lang/Object;Ljava/lang/Object;)V a method_59793 method_59793 + m (ILyx;Lyx;Ljava/util/function/IntFunction;)V +c yv$14 net/minecraft/class_9135$14 net/minecraft/network/codec/ByteBufCodecs$21 + f Lyx; a field_49686 val$leftCodec + f Lyx; b field_49687 val$rightCodec + m (Lio/netty/buffer/ByteBuf;)Lcom/mojang/datafixers/util/Either; a method_58008 decode + m (Lio/netty/buffer/ByteBuf;Lcom/mojang/datafixers/util/Either;)V a method_58009 encode + m (Lio/netty/buffer/ByteBuf;Lyx;Ljava/lang/Object;)V a method_58010 method_58010 + m (Lio/netty/buffer/ByteBuf;Lyx;Ljava/lang/Object;)V b method_58011 method_58011 + m (Lyx;Lyx;)V +c yv$15 net/minecraft/class_9135$15 net/minecraft/network/codec/ByteBufCodecs$22 + f Ljava/util/function/IntFunction; a field_48572 val$byId + f Ljava/util/function/ToIntFunction; b field_48573 val$toId + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Object; a method_56420 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Object;)V a method_56421 encode + m (Ljava/util/function/IntFunction;Ljava/util/function/ToIntFunction;)V +c yv$16 net/minecraft/class_9135$16 net/minecraft/network/codec/ByteBufCodecs$23 + f Ljava/util/function/Function; a field_48574 val$mapExtractor + f Lakq; b field_48575 val$registryKey + m (Lwk;)Ljava/lang/Object; a method_56422 decode + m (Lwk;Ljava/lang/Object;)V a method_56423 encode + m (Lwk;)Ljr; b method_56424 getRegistryOrThrow + m (Ljava/util/function/Function;Lakq;)V +c yv$17 net/minecraft/class_9135$17 net/minecraft/network/codec/ByteBufCodecs$24 + f Lakq; a field_49688 val$registryKey + f Lyx; b field_49690 val$directCodec + f I c field_51474 DIRECT_HOLDER_ID + m (Lwk;)Ljm; a method_58012 decode + m (Lwk;Ljm;)V a method_58013 encode + m (Lwk;)Ljr; b method_59794 getRegistryOrThrow + m (Lakq;Lyx;)V +c yv$18 net/minecraft/class_9135$18 net/minecraft/network/codec/ByteBufCodecs$25 + f Lakq; a field_51475 val$registryKey + f I b field_51476 NAMED_SET + f Lyx; c field_51477 holderCodec + m (Lwk;)Ljq; a method_59795 decode + m (Lwk;Ljq;)V a method_59796 encode + m (Lakq;)V +c yv$19 net/minecraft/class_9135$19 net/minecraft/network/codec/ByteBufCodecs$26 + f I a field_49691 MAX_PROPERTY_NAME_LENGTH + f I b field_49692 MAX_PROPERTY_VALUE_LENGTH + f I c field_49693 MAX_PROPERTY_SIGNATURE_LENGTH + f I d field_49694 MAX_PROPERTIES + m (Lio/netty/buffer/ByteBuf;)Lcom/mojang/authlib/properties/PropertyMap; a method_58014 decode + m (Lio/netty/buffer/ByteBuf;Lcom/mojang/authlib/properties/PropertyMap;)V a method_58015 encode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/String;)V a method_58016 method_58016 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/String; b method_58017 method_58017 + m ()V +c yv$20 net/minecraft/class_9135$20 net/minecraft/network/codec/ByteBufCodecs$27 + m (Lio/netty/buffer/ByteBuf;)Lcom/mojang/authlib/GameProfile; a method_58018 decode + m (Lio/netty/buffer/ByteBuf;Lcom/mojang/authlib/GameProfile;)V a method_58019 encode + m ()V +c yv$21 net/minecraft/class_9135$21 net/minecraft/network/codec/ByteBufCodecs$28 + f [I a field_48563 $SwitchMap$net$minecraft$core$Holder$Kind + m ()V +c yv$22 net/minecraft/class_9135$22 net/minecraft/network/codec/ByteBufCodecs$3 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Short; a method_56393 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Short;)V a method_56394 encode + m ()V +c yv$23 net/minecraft/class_9135$23 net/minecraft/network/codec/ByteBufCodecs$4 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Integer; a method_56395 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Integer;)V a method_56396 encode + m ()V +c yv$24 net/minecraft/class_9135$24 net/minecraft/network/codec/ByteBufCodecs$5 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Integer; a method_56397 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Integer;)V a method_56398 encode + m ()V +c yv$25 net/minecraft/class_9135$25 net/minecraft/network/codec/ByteBufCodecs$6 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Integer; a method_56399 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Integer;)V a method_56400 encode + m ()V +c yv$26 net/minecraft/class_9135$26 net/minecraft/network/codec/ByteBufCodecs$7 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Long; a method_56401 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Long;)V a method_56402 encode + m ()V +c yv$27 net/minecraft/class_9135$27 net/minecraft/network/codec/ByteBufCodecs$8 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Float; a method_58020 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Float;)V a method_58021 encode + m ()V +c yv$28 net/minecraft/class_9135$28 net/minecraft/network/codec/ByteBufCodecs$9 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Double; a method_59797 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Double;)V a method_59798 encode + m ()V +c yw net/minecraft/class_9136 net/minecraft/network/codec/IdDispatchCodec + f I a field_48576 UNKNOWN_TYPE + f Ljava/util/function/Function; b field_48577 typeGetter + f Ljava/util/List; c field_48578 byId + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; d field_48579 toId + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Object; a method_56425 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Object;)V a method_56426 encode + m (Ljava/util/function/Function;)Lyw$a; a method_56427 builder + m (Ljava/util/function/Function;Ljava/util/List;Lit/unimi/dsi/fastutil/objects/Object2IntMap;)V +c yw$a net/minecraft/class_9136$class_9137 net/minecraft/network/codec/IdDispatchCodec$Builder + f Ljava/util/List; a field_48580 entries + f Ljava/util/function/Function; b field_48581 typeGetter + m ()Lyw; a method_56428 build + m (Ljava/lang/Object;Lyx;)Lyw$a; a method_56429 add + m (Ljava/util/function/Function;)V +c yw$b net/minecraft/class_9136$class_9138 net/minecraft/network/codec/IdDispatchCodec$Entry + f Lyx; a comp_2228 serializer + f Ljava/lang/Object; b comp_2229 type + m ()Lyx; a comp_2228 serializer + m ()Ljava/lang/Object; b comp_2229 type + m (Lyx;Ljava/lang/Object;)V +c yx net/minecraft/class_9139 net/minecraft/network/codec/StreamCodec + m ()Lyx; a method_56430 cast + m (Ljava/lang/Object;)Lyx; a method_56431 unit + m (Ljava/util/function/Function;Ljava/util/function/Function;)Lyx; a method_56432 map + m (Ljava/util/function/UnaryOperator;)Lyx; a method_58024 recursive + m (Lyx$a;)Lyx; a method_56433 apply + m (Lyx;Ljava/util/function/Function;Ljava/util/function/Function;)Lyx; a method_56434 composite + m (Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Ljava/util/function/BiFunction;)Lyx; a method_56435 composite + m (Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function3;)Lyx; a method_56436 composite + m (Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function4;)Lyx; a method_56905 composite + m (Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function5;)Lyx; a method_56906 composite + m (Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lyx;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function6;)Lyx; a method_58025 composite + m (Lyz;Lyy;)Lyx; a method_56437 of + m (Lza;Lyy;)Lyx; a method_56438 ofMember + m (Ljava/util/function/Function;)Lyx; b method_56439 mapStream + m (Ljava/util/function/Function;Ljava/util/function/Function;)Lyx; b method_56440 dispatch +c yx$1 net/minecraft/class_9139$1 net/minecraft/network/codec/StreamCodec$1 + f Lyy; a field_48582 val$decoder + f Lyz; b field_48583 val$encoder + m (Lyy;Lyz;)V +c yx$2 net/minecraft/class_9139$2 net/minecraft/network/codec/StreamCodec$10 + f Lyx; a field_48991 val$codec1 + f Lyx; b field_48992 val$codec2 + f Lyx; c field_48993 val$codec3 + f Lyx; d field_48994 val$codec4 + f Lcom/mojang/datafixers/util/Function4; e field_48995 val$constructor + f Ljava/util/function/Function; f field_48996 val$getter1 + f Ljava/util/function/Function; g field_48997 val$getter2 + f Ljava/util/function/Function; h field_48998 val$getter3 + f Ljava/util/function/Function; i field_48999 val$getter4 + m (Lyx;Lyx;Lyx;Lyx;Lcom/mojang/datafixers/util/Function4;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yx$3 net/minecraft/class_9139$3 net/minecraft/network/codec/StreamCodec$11 + f Lyx; a field_49000 val$codec1 + f Lyx; b field_49001 val$codec2 + f Lyx; c field_49002 val$codec3 + f Lyx; d field_49003 val$codec4 + f Lyx; e field_49004 val$codec5 + f Lcom/mojang/datafixers/util/Function5; f field_49005 val$constructor + f Ljava/util/function/Function; g field_49006 val$getter1 + f Ljava/util/function/Function; h field_49007 val$getter2 + f Ljava/util/function/Function; i field_49008 val$getter3 + f Ljava/util/function/Function; j field_49009 val$getter4 + f Ljava/util/function/Function; k field_49010 val$getter5 + m (Lyx;Lyx;Lyx;Lyx;Lyx;Lcom/mojang/datafixers/util/Function5;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yx$4 net/minecraft/class_9139$4 net/minecraft/network/codec/StreamCodec$12 + f Lyx; a field_49698 val$codec1 + f Lyx; b field_49699 val$codec2 + f Lyx; c field_49700 val$codec3 + f Lyx; d field_49701 val$codec4 + f Lyx; e field_49702 val$codec5 + f Lyx; f field_49703 val$codec6 + f Lcom/mojang/datafixers/util/Function6; g field_49704 val$constructor + f Ljava/util/function/Function; h field_49705 val$getter1 + f Ljava/util/function/Function; i field_49706 val$getter2 + f Ljava/util/function/Function; j field_49707 val$getter3 + f Ljava/util/function/Function; k field_49708 val$getter4 + f Ljava/util/function/Function; l field_49709 val$getter5 + f Ljava/util/function/Function; m field_49710 val$getter6 + m (Lyx;Lyx;Lyx;Lyx;Lyx;Lyx;Lcom/mojang/datafixers/util/Function6;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yx$5 net/minecraft/class_9139$5 net/minecraft/network/codec/StreamCodec$13 + f Ljava/util/function/UnaryOperator; a field_49711 val$factory + f Ljava/util/function/Supplier; b field_49712 inner + m (Ljava/util/function/UnaryOperator;)Lyx; b method_58026 method_58026 + m (Ljava/util/function/UnaryOperator;)V +c yx$6 net/minecraft/class_9139$6 net/minecraft/network/codec/StreamCodec$2 + f Lyy; a field_48584 val$decoder + f Lza; b field_48585 val$encoder + m (Lyy;Lza;)V +c yx$7 net/minecraft/class_9139$7 net/minecraft/network/codec/StreamCodec$3 + f Ljava/lang/Object; a field_48586 val$instance + m (Ljava/lang/Object;)V +c yx$8 net/minecraft/class_9139$8 net/minecraft/network/codec/StreamCodec$4 + f Ljava/util/function/Function; a field_48587 val$to + f Ljava/util/function/Function; b field_48588 val$from + f Lyx; c field_48589 field_48589 + m (Lyx;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yx$9 net/minecraft/class_9139$9 net/minecraft/network/codec/StreamCodec$5 + f Ljava/util/function/Function; a field_48590 val$operation + f Lyx; b field_48591 field_48591 + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/Object; a method_56441 decode + m (Lio/netty/buffer/ByteBuf;Ljava/lang/Object;)V a method_56442 encode + m (Lyx;Ljava/util/function/Function;)V +c yx$a net/minecraft/class_9139$class_9140 net/minecraft/network/codec/StreamCodec$CodecOperation +c yx$10 net/minecraft/class_9139$10 net/minecraft/network/codec/StreamCodec$6 + f Ljava/util/function/Function; a field_48592 val$codec + f Ljava/util/function/Function; b field_48593 val$type + f Lyx; c field_48594 field_48594 + m (Lyx;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yx$11 net/minecraft/class_9139$11 net/minecraft/network/codec/StreamCodec$7 + f Lyx; a field_48595 val$codec1 + f Ljava/util/function/Function; b field_48596 val$constructor + f Ljava/util/function/Function; c field_48597 val$getter1 + m (Lyx;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yx$12 net/minecraft/class_9139$12 net/minecraft/network/codec/StreamCodec$8 + f Lyx; a field_48598 val$codec1 + f Lyx; b field_48599 val$codec2 + f Ljava/util/function/BiFunction; c field_48600 val$constructor + f Ljava/util/function/Function; d field_48601 val$getter1 + f Ljava/util/function/Function; e field_48602 val$getter2 + m (Lyx;Lyx;Ljava/util/function/BiFunction;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yx$13 net/minecraft/class_9139$13 net/minecraft/network/codec/StreamCodec$9 + f Lyx; a field_48603 val$codec1 + f Lyx; b field_48604 val$codec2 + f Lyx; c field_48605 val$codec3 + f Lcom/mojang/datafixers/util/Function3; d field_48606 val$constructor + f Ljava/util/function/Function; e field_48607 val$getter1 + f Ljava/util/function/Function; f field_48608 val$getter2 + f Ljava/util/function/Function; g field_48609 val$getter3 + m (Lyx;Lyx;Lyx;Lcom/mojang/datafixers/util/Function3;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;)V +c yy net/minecraft/class_9141 net/minecraft/network/codec/StreamDecoder +c yz net/minecraft/class_9142 net/minecraft/network/codec/StreamEncoder +c za net/minecraft/class_9143 net/minecraft/network/codec/StreamMemberEncoder +c zb net/minecraft/class_9144 net/minecraft/network/codec/package-info +c zc net/minecraft/class_6313 net/minecraft/network/package-info +c zd net/minecraft/class_8037 net/minecraft/network/protocol/BundleDelimiterPacket + m ()V +c ze net/minecraft/class_8038 net/minecraft/network/protocol/BundlePacket + f Ljava/lang/Iterable; a field_41876 packets + m ()Ljava/lang/Iterable; b method_48324 subPackets + m (Ljava/lang/Iterable;)V +c zf net/minecraft/class_8039 net/minecraft/network/protocol/BundlerInfo + f I a field_41878 BUNDLE_SIZE_LIMIT + m (Lzg;)Lzf$a; a method_48326 startPacketBundling + m (Lzg;Ljava/util/function/Consumer;)V a method_48327 unbundlePacket + m (Lzi;Ljava/util/function/Function;Lzd;)Lzf; a method_48325 createForPacket +c zf$1 net/minecraft/class_8039$1 net/minecraft/network/protocol/BundlerInfo$1 + f Lzi; b field_48610 val$bundlePacketType + f Lzd; c field_48611 val$delimiterPacket + f Ljava/util/function/Function; d field_48612 val$constructor + m (Lzi;Lzd;Ljava/util/function/Function;)V +c zf$1$1 net/minecraft/class_8039$1$1 net/minecraft/network/protocol/BundlerInfo$1$1 + f Lzf$1; a field_41883 field_41883 + f Ljava/util/List; b field_41884 bundlePackets + m (Lzf$1;)V +c zf$a net/minecraft/class_8039$class_8040 net/minecraft/network/protocol/BundlerInfo$Bundler + m (Lzg;)Lzg; a method_48328 addPacket +c zg net/minecraft/class_2596 net/minecraft/network/protocol/Packet + m ()Lzi; a method_55846 type + m (Lwf;)V a method_11054 handle + m (Lza;Lyy;)Lyx; a method_56443 codec + m ()Z c method_11051 isSkippable + m ()Z d method_55943 isTerminal +c zh net/minecraft/class_2598 net/minecraft/network/protocol/PacketFlow + f Lzh; a field_11941 SERVERBOUND + f Lzh; b field_11942 CLIENTBOUND + f Ljava/lang/String; c field_48613 id + f [Lzh; d field_11940 $VALUES + m ()Lzh; a method_36146 getOpposite + m ()Ljava/lang/String; b method_56444 id + m ()[Lzh; c method_36947 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c zi net/minecraft/class_9145 net/minecraft/network/protocol/PacketType + f Lzh; a comp_2230 flow + f Lakr; b comp_2231 id + m ()Lzh; a comp_2230 flow + m ()Lakr; b comp_2231 id + m (Lzh;Lakr;)V +c zj net/minecraft/class_2600 net/minecraft/network/protocol/PacketUtils + f Lorg/slf4j/Logger; a field_20318 LOGGER + m (Ljava/lang/Exception;Lzg;Lwf;)Lz; a method_59854 makeReportedException + m (Lo;Lwf;Lzg;)V a method_59803 fillCrashReport + m (Lwf;Lzg;)V a method_11072 method_11072 + m (Lzg;)Ljava/lang/String; a method_59804 method_59804 + m (Lzg;Lwf;Laqu;)V a method_11073 ensureRunningOnSameThread + m (Lzg;Lwf;Lbph;)V a method_11074 ensureRunningOnSameThread + m (Lzg;)Ljava/lang/String; b method_59805 method_59805 + m (Lzg;)Ljava/lang/String; c method_59806 method_59806 + m ()V + m ()V +c zk net/minecraft/class_9146 net/minecraft/network/protocol/ProtocolCodecBuilder + f Lyw$a; a field_48614 dispatchBuilder + f Lzh; b field_48615 flow + m ()Lyx; a method_56445 build + m (Lzi;Lyx;)Lzk; a method_56446 add + m (Lzh;)V +c zl net/minecraft/class_9147 net/minecraft/network/protocol/ProtocolInfoBuilder + f Lvu; a field_48616 protocol + f Lzh; b field_48617 flow + f Ljava/util/List; c field_48618 codecs + f Lzf; d field_48619 bundlerInfo + m ()Lwh$a; a method_56447 buildUnbound + m (Ljava/util/function/Function;)Lwh; a method_56449 build + m (Ljava/util/function/Function;Ljava/util/List;)Lyx; a method_56450 buildPacketCodec + m (Lvu;Ljava/util/function/Consumer;)Lwh$a; a method_56451 serverboundProtocol + m (Lvu;Lzh;Ljava/util/function/Consumer;)Lwh$a; a method_56452 protocol + m (Lzi;Ljava/util/function/Function;Lzd;)Lzl; a method_56453 withBundlePacket + m (Lzi;Lyx;)Lzl; a method_56454 addPacket + m (Lvu;Ljava/util/function/Consumer;)Lwh$a; b method_56455 clientboundProtocol + m (Lvu;Lzh;)V +c zl$1 net/minecraft/class_9147$1 net/minecraft/network/protocol/ProtocolInfoBuilder$1 + f Ljava/util/List; a field_52285 val$codecs + f Lzf; b field_52286 val$bundlerInfo + f Lzl; c field_52287 field_52287 + m (Lzl;Ljava/util/List;Lzf;)V +c zl$a net/minecraft/class_9147$class_9148 net/minecraft/network/protocol/ProtocolInfoBuilder$CodecEntry + f Lzi; a comp_2232 type + f Lyx; b comp_2233 serializer + m ()Lzi; a comp_2232 type + m (Lzk;Ljava/util/function/Function;)V a method_56459 addToBuilder + m ()Lyx; b comp_2233 serializer + m (Lzi;Lyx;)V +c zl$b net/minecraft/class_9147$class_9149 net/minecraft/network/protocol/ProtocolInfoBuilder$Implementation + f Lvu; a comp_2234 id + f Lzh; b comp_2235 flow + f Lyx; c comp_2236 codec + f Lzf; d comp_2237 bundlerInfo + m (Lvu;Lzh;Lyx;Lzf;)V +c zm net/minecraft/class_8705 net/minecraft/network/protocol/common/ClientCommonPacketListener + m (Lzn;)V a method_52780 handleCustomPayload + m (Lzo;)V a method_60883 handleCustomReportDetails + m (Lzp;)V a method_52781 handleDisconnect + m (Lzq;)V a method_52782 handleKeepAlive + m (Lzr;)V a method_52783 handlePing + m (Lzs;)V a method_55512 handleResourcePackPop + m (Lzt;)V a method_52784 handleResourcePackPush + m (Lzu;)V a method_60884 handleServerLinks + m (Lzv;)V a method_56149 handleStoreCookie + m (Lzw;)V a method_56150 handleTransfer + m (Lzx;)V a method_11126 handleUpdateTags +c zn net/minecraft/class_2658 net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket + f Lyx; a field_48620 GAMEPLAY_STREAM_CODEC + f Lyx; b field_48621 CONFIG_STREAM_CODEC + f Laaj; c comp_1646 payload + f I d field_33326 MAX_PAYLOAD_SIZE + m (Lakr;)Lyx; a method_56460 method_56460 + m (Ljava/util/ArrayList;)V a method_58270 method_58270 + m (Lzm;)V a method_53024 handle + m ()Laaj; b comp_1646 payload + m (Lakr;)Lyx; b method_56461 method_56461 + m (Laaj;)V + m ()V +c zo net/minecraft/class_9814 net/minecraft/network/protocol/common/ClientboundCustomReportDetailsPacket + f Lyx; a field_52185 STREAM_CODEC + f Ljava/util/Map; b comp_2858 details + f I c field_52186 MAX_DETAIL_KEY_LENGTH + f I d field_52187 MAX_DETAIL_VALUE_LENGTH + f I e field_52188 MAX_DETAIL_COUNT + f Lyx; f field_52189 DETAILS_STREAM_CODEC + m (Lzm;)V a method_60929 handle + m ()Ljava/util/Map; b comp_2858 details + m (Ljava/util/Map;)V + m ()V +c zp net/minecraft/class_2661 net/minecraft/network/protocol/common/ClientboundDisconnectPacket + f Lyx; a field_48622 STREAM_CODEC + f Lwz; b comp_2325 reason + m (Lzm;)V a method_11467 handle + m ()Lwz; b comp_2325 reason + m (Lwz;)V + m ()V +c zq net/minecraft/class_2670 net/minecraft/network/protocol/common/ClientboundKeepAlivePacket + f Lyx; a field_48623 STREAM_CODEC + f J b field_12211 id + m (Lvw;)V a method_56463 write + m (Lzm;)V a method_11518 handle + m ()J b method_11517 getId + m (J)V + m (Lvw;)V + m ()V +c zr net/minecraft/class_6373 net/minecraft/network/protocol/common/ClientboundPingPacket + f Lyx; a field_48624 STREAM_CODEC + f I b field_33751 id + m (Lvw;)V a method_56464 write + m (Lzm;)V a method_36949 handle + m ()I b method_36950 getId + m (I)V + m (Lvw;)V + m ()V +c zs net/minecraft/class_9053 net/minecraft/network/protocol/common/ClientboundResourcePackPopPacket + f Lyx; a field_48625 STREAM_CODEC + f Ljava/util/Optional; b comp_2157 id + m (Lvw;)V a method_56465 write + m (Lzm;)V a method_55582 handle + m ()Ljava/util/Optional; b comp_2157 id + m (Lvw;)V + m (Ljava/util/Optional;)V + m ()V +c zt net/minecraft/class_2720 net/minecraft/network/protocol/common/ClientboundResourcePackPushPacket + f I a field_33340 MAX_HASH_LENGTH + f Lyx; b field_48626 STREAM_CODEC + f Ljava/util/UUID; c comp_2158 id + f Ljava/lang/String; d comp_2159 url + f Ljava/lang/String; e comp_2160 hash + f Z f comp_2161 required + f Ljava/util/Optional; g comp_2162 prompt + m (Lzm;)V a method_11774 handle + m ()Ljava/util/UUID; b comp_2158 id + m ()Ljava/lang/String; e comp_2159 url + m ()Ljava/lang/String; f comp_2160 hash + m ()Z g comp_2161 required + m ()Ljava/util/Optional; h comp_2162 prompt + m (Ljava/util/UUID;Ljava/lang/String;Ljava/lang/String;ZLjava/util/Optional;)V + m ()V +c zu net/minecraft/class_9815 net/minecraft/network/protocol/common/ClientboundServerLinksPacket + f Lyx; a field_52190 STREAM_CODEC + f Ljava/util/List; b comp_2859 links + m (Lzm;)V a method_60930 handle + m ()Ljava/util/List; b comp_2859 links + m (Ljava/util/List;)V + m ()V +c zv net/minecraft/class_9150 net/minecraft/network/protocol/common/ClientboundStoreCookiePacket + f Lyx; a field_48627 STREAM_CODEC + f Lyx; b field_49011 PAYLOAD_STREAM_CODEC + f Lakr; c comp_2238 key + f [B d comp_2239 payload + f I e field_48628 MAX_PAYLOAD_SIZE + m (Lvw;)V a method_56467 write + m (Lzm;)V a method_56468 handle + m ()Lakr; b comp_2238 key + m ()[B e comp_2239 payload + m (Lvw;)V + m (Lakr;[B)V + m ()V +c zw net/minecraft/class_9151 net/minecraft/network/protocol/common/ClientboundTransferPacket + f Lyx; a field_48629 STREAM_CODEC + f Ljava/lang/String; b comp_2240 host + f I c comp_2241 port + m (Lvw;)V a method_56469 write + m (Lzm;)V a method_56470 handle + m ()Ljava/lang/String; b comp_2240 host + m ()I e comp_2241 port + m (Lvw;)V + m (Ljava/lang/String;I)V + m ()V +c zx net/minecraft/class_2790 net/minecraft/network/protocol/common/ClientboundUpdateTagsPacket + f Lyx; a field_48630 STREAM_CODEC + f Ljava/util/Map; b field_12757 tags + m (Lvw;)V a method_56471 write + m (Lvw;Lawx$a;)V a method_34203 method_34203 + m (Lzm;)V a method_12001 handle + m ()Ljava/util/Map; b method_12000 getTags + m (Ljava/util/Map;)V + m (Lvw;)V + m ()V +c zy net/minecraft/class_9152 net/minecraft/network/protocol/common/CommonPacketTypes + f Lzi; a field_48631 CLIENTBOUND_CUSTOM_PAYLOAD + f Lzi; b field_52191 CLIENTBOUND_CUSTOM_REPORT_DETAILS + f Lzi; c field_48632 CLIENTBOUND_DISCONNECT + f Lzi; d field_48633 CLIENTBOUND_KEEP_ALIVE + f Lzi; e field_48634 CLIENTBOUND_PING + f Lzi; f field_48635 CLIENTBOUND_RESOURCE_PACK_POP + f Lzi; g field_48636 CLIENTBOUND_RESOURCE_PACK_PUSH + f Lzi; h field_52192 CLIENTBOUND_SERVER_LINKS + f Lzi; i field_48637 CLIENTBOUND_STORE_COOKIE + f Lzi; j field_48638 CLIENTBOUND_TRANSFER + f Lzi; k field_48639 CLIENTBOUND_UPDATE_TAGS + f Lzi; l field_48640 SERVERBOUND_CLIENT_INFORMATION + f Lzi; m field_48641 SERVERBOUND_CUSTOM_PAYLOAD + f Lzi; n field_48642 SERVERBOUND_KEEP_ALIVE + f Lzi; o field_48643 SERVERBOUND_PONG + f Lzi; p field_48644 SERVERBOUND_RESOURCE_PACK + m (Ljava/lang/String;)Lzi; a method_56472 createClientbound + m (Ljava/lang/String;)Lzi; b method_56473 createServerbound + m ()V + m ()V +c zz net/minecraft/class_8706 net/minecraft/network/protocol/common/ServerCommonPacketListener + m (Laaa;)V a method_12069 handleClientInformation + m (Laab;)V a method_52392 handleCustomPayload + m (Laac;)V a method_52393 handleKeepAlive + m (Laad;)V a method_52394 handlePong + m (Laae;)V a method_52395 handleResourcePackResponse +c aaa net/minecraft/class_2803 net/minecraft/network/protocol/common/ServerboundClientInformationPacket + f Lyx; a field_48645 STREAM_CODEC + f Laqh; b comp_1963 information + m (Lvw;)V a method_56474 write + m (Lzz;)V a method_12133 handle + m ()Laqh; b comp_1963 information + m (Lvw;)V + m (Laqh;)V + m ()V +c aab net/minecraft/class_2817 net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket + f Lyx; a field_48646 STREAM_CODEC + f Laaj; b comp_1647 payload + f I c field_33361 MAX_PAYLOAD_SIZE + m (Lakr;)Lyx; a method_56475 method_56475 + m (Ljava/util/ArrayList;)V a method_58271 method_58271 + m (Lzz;)V a method_12199 handle + m ()Laaj; b comp_1647 payload + m (Laaj;)V + m ()V +c aac net/minecraft/class_2827 net/minecraft/network/protocol/common/ServerboundKeepAlivePacket + f Lyx; a field_48647 STREAM_CODEC + f J b field_12883 id + m (Lvw;)V a method_56476 write + m (Lzz;)V a method_12266 handle + m ()J b method_12267 getId + m (J)V + m (Lvw;)V + m ()V +c aad net/minecraft/class_6374 net/minecraft/network/protocol/common/ServerboundPongPacket + f Lyx; a field_48648 STREAM_CODEC + f I b field_33752 id + m (Lvw;)V a method_56477 write + m (Lzz;)V a method_36959 handle + m ()I b method_36960 getId + m (I)V + m (Lvw;)V + m ()V +c aae net/minecraft/class_2856 net/minecraft/network/protocol/common/ServerboundResourcePackPacket + f Lyx; a field_48649 STREAM_CODEC + f Ljava/util/UUID; b comp_2163 id + f Laae$a; c comp_2164 action + m (Lvw;)V a method_56478 write + m (Lzz;)V a method_12409 handle + m ()Ljava/util/UUID; b comp_2163 id + m ()Laae$a; e comp_2164 action + m (Lvw;)V + m (Ljava/util/UUID;Laae$a;)V + m ()V +c aae$a net/minecraft/class_2856$class_2857 net/minecraft/network/protocol/common/ServerboundResourcePackPacket$Action + f Laae$a; a field_13017 SUCCESSFULLY_LOADED + f Laae$a; b field_13018 DECLINED + f Laae$a; c field_13015 FAILED_DOWNLOAD + f Laae$a; d field_13016 ACCEPTED + f Laae$a; e field_47704 DOWNLOADED + f Laae$a; f field_47667 INVALID_URL + f Laae$a; g field_47668 FAILED_RELOAD + f Laae$a; h field_47669 DISCARDED + f [Laae$a; i field_13019 $VALUES + m ()Z a method_55627 isTerminal + m ()[Laae$a; b method_36961 $values + m (Ljava/lang/String;I)V + m ()V +c aaf net/minecraft/class_8707 net/minecraft/network/protocol/common/custom/BeeDebugPayload + f Lyx; a field_48650 STREAM_CODEC + f Laaj$b; b field_48651 TYPE + f Laaf$a; c comp_1648 beeInfo + m (Lvw;)V a method_53028 write + m ()Laaf$a; b comp_1648 beeInfo + m (Lvw;)V + m (Laaf$a;)V + m ()V +c aaf$a net/minecraft/class_8707$class_5243 net/minecraft/network/protocol/common/custom/BeeDebugPayload$BeeInfo + f Ljava/util/UUID; a comp_1649 uuid + f I b comp_1650 id + f Lexc; c comp_1651 pos + f Leps; d comp_1652 path + f Ljd; e comp_1653 hivePos + f Ljd; f comp_1654 flowerPos + f I g comp_1655 travelTicks + f Ljava/util/Set; h comp_1656 goals + f Ljava/util/List; i comp_1657 blacklistedHives + m ()Ljava/lang/String; a method_53029 generateName + m (Ljd;)Z a method_27649 hasHive + m (Lvw;)V a method_53030 write + m (Lvw;Leps;)V a method_53031 method_53031 + m ()Ljava/util/UUID; b comp_1649 uuid + m ()I c comp_1650 id + m ()Lexc; d comp_1651 pos + m ()Leps; e comp_1652 path + m ()Ljd; f comp_1653 hivePos + m ()Ljd; g comp_1654 flowerPos + m ()I h comp_1655 travelTicks + m ()Ljava/util/Set; i comp_1656 goals + m ()Ljava/util/List; j comp_1657 blacklistedHives + m (Lvw;)V + m (Ljava/util/UUID;ILexc;Leps;Ljd;Ljd;ILjava/util/Set;Ljava/util/List;)V +c aag net/minecraft/class_8708 net/minecraft/network/protocol/common/custom/BrainDebugPayload + f Lyx; a field_48652 STREAM_CODEC + f Laaj$b; b field_48653 TYPE + f Laag$a; c comp_1658 brainDump + m (Lvw;)V a method_56480 write + m ()Laag$a; b comp_1658 brainDump + m (Lvw;)V + m (Laag$a;)V + m ()V +c aag$a net/minecraft/class_8708$class_4232 net/minecraft/network/protocol/common/custom/BrainDebugPayload$BrainDump + f Ljava/util/UUID; a comp_1659 uuid + f I b comp_1660 id + f Ljava/lang/String; c comp_1661 name + f Ljava/lang/String; d comp_1662 profession + f I e comp_1663 xp + f F f comp_1664 health + f F g comp_1665 maxHealth + f Lexc; h comp_1666 pos + f Ljava/lang/String; i comp_1667 inventory + f Leps; j comp_1668 path + f Z k comp_1669 wantsGolem + f I l comp_1670 angerLevel + f Ljava/util/List; m comp_1671 activities + f Ljava/util/List; n comp_1672 behaviors + f Ljava/util/List; o comp_1673 memories + f Ljava/util/List; p comp_1674 gossips + f Ljava/util/Set; q comp_1675 pois + f Ljava/util/Set; r comp_1676 potentialPois + m ()Ljava/util/UUID; a comp_1659 uuid + m (Ljd;)Z a method_23151 hasPoi + m (Lvw;)V a method_53032 write + m (Lvw;Leps;)V a method_53033 method_53033 + m ()I b comp_1660 id + m (Ljd;)Z b method_29388 hasPotentialPoi + m ()Ljava/lang/String; c comp_1661 name + m ()Ljava/lang/String; d comp_1662 profession + m ()I e comp_1663 xp + m ()F f comp_1664 health + m ()F g comp_1665 maxHealth + m ()Lexc; h comp_1666 pos + m ()Ljava/lang/String; i comp_1667 inventory + m ()Leps; j comp_1668 path + m ()Z k comp_1669 wantsGolem + m ()I l comp_1670 angerLevel + m ()Ljava/util/List; m comp_1671 activities + m ()Ljava/util/List; n comp_1672 behaviors + m ()Ljava/util/List; o comp_1673 memories + m ()Ljava/util/List; p comp_1674 gossips + m ()Ljava/util/Set; q comp_1675 pois + m ()Ljava/util/Set; r comp_1676 potentialPois + m (Lvw;)V + m (Ljava/util/UUID;ILjava/lang/String;Ljava/lang/String;IFFLexc;Ljava/lang/String;Leps;ZILjava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;)V +c aah net/minecraft/class_8709 net/minecraft/network/protocol/common/custom/BrandPayload + f Lyx; a field_48654 STREAM_CODEC + f Laaj$b; b field_48655 TYPE + f Ljava/lang/String; c comp_1677 brand + m (Lvw;)V a method_56481 write + m ()Ljava/lang/String; b comp_1677 brand + m (Lvw;)V + m (Ljava/lang/String;)V + m ()V +c aai net/minecraft/class_9004 net/minecraft/network/protocol/common/custom/BreezeDebugPayload + f Lyx; a field_48656 STREAM_CODEC + f Laaj$b; b field_48657 TYPE + f Laai$a; c comp_2115 breezeInfo + m (Lvw;)V a method_56482 write + m ()Laai$a; b comp_2115 breezeInfo + m (Lvw;)V + m (Laai$a;)V + m ()V +c aai$a net/minecraft/class_9004$class_9005 net/minecraft/network/protocol/common/custom/BreezeDebugPayload$BreezeInfo + f Ljava/util/UUID; a comp_2116 uuid + f I b comp_2117 id + f Ljava/lang/Integer; c comp_2118 attackTarget + f Ljd; d comp_2119 jumpTarget + m ()Ljava/lang/String; a method_55325 generateName + m (Lvw;)V a method_55326 write + m ()Ljava/util/UUID; b comp_2116 uuid + m ()I c comp_2117 id + m ()Ljava/lang/Integer; d comp_2118 attackTarget + m ()Ljd; e comp_2119 jumpTarget + m (Lvw;)V + m (Ljava/util/UUID;ILjava/lang/Integer;Ljd;)V +c aaj net/minecraft/class_8710 net/minecraft/network/protocol/common/custom/CustomPacketPayload + m ()Laaj$b; a method_56479 type + m (Laaj$a;Ljava/util/List;)Lyx; a method_56485 codec + m (Laaj$c;)Lakr; a method_56486 method_56486 + m (Ljava/lang/String;)Laaj$b; a method_56483 createType + m (Lza;Lyy;)Lyx; a method_56484 codec +c aaj$1 net/minecraft/class_8710$1 net/minecraft/network/protocol/common/custom/CustomPacketPayload$1 + f Ljava/util/Map; a field_48658 val$idToType + f Laaj$a; b field_48659 val$fallback + m (Lakr;)Lyx; a method_56487 findCodec + m (Lvw;)Laaj; a method_56488 decode + m (Lvw;Laaj$b;Laaj;)V a method_56489 writeCap + m (Lvw;Laaj;)V a method_56490 encode + m (Ljava/util/Map;Laaj$a;)V +c aaj$a net/minecraft/class_8710$class_9153 net/minecraft/network/protocol/common/custom/CustomPacketPayload$FallbackProvider +c aaj$b net/minecraft/class_8710$class_9154 net/minecraft/network/protocol/common/custom/CustomPacketPayload$Type + f Lakr; a comp_2242 id + m ()Lakr; a comp_2242 id + m (Lakr;)V +c aaj$c net/minecraft/class_8710$class_9155 net/minecraft/network/protocol/common/custom/CustomPacketPayload$TypeAndCodec + f Laaj$b; a comp_2243 type + f Lyx; b comp_2244 codec + m ()Laaj$b; a comp_2243 type + m ()Lyx; b comp_2244 codec + m (Laaj$b;Lyx;)V +c aak net/minecraft/class_8711 net/minecraft/network/protocol/common/custom/DiscardedPayload + f Lakr; a comp_1678 id + m (ILakr;Lvw;)Laak; a method_56491 method_56491 + m (Laak;Lvw;)V a method_56493 method_56493 + m (Lakr;I)Lyx; a method_56492 codec + m ()Lakr; b comp_1678 id + m (Lakr;)V +c aal net/minecraft/class_8712 net/minecraft/network/protocol/common/custom/GameEventDebugPayload + f Lyx; a field_48660 STREAM_CODEC + f Laaj$b; b field_48661 TYPE + f Lakq; c comp_1679 gameEventType + f Lexc; d comp_1680 pos + m (Lvw;)V a method_56494 write + m ()Lakq; b comp_1679 gameEventType + m ()Lexc; c comp_1680 pos + m (Lvw;)V + m (Lakq;Lexc;)V + m ()V +c aam net/minecraft/class_8713 net/minecraft/network/protocol/common/custom/GameEventListenerDebugPayload + f Lyx; a field_48662 STREAM_CODEC + f Laaj$b; b field_48663 TYPE + f Ldyd; c comp_1681 listenerPos + f I d comp_1682 listenerRange + m ()Ldyd; b comp_1681 listenerPos + m ()I c comp_1682 listenerRange + m (Ldyd;I)V + m ()V +c aan net/minecraft/class_8714 net/minecraft/network/protocol/common/custom/GameTestAddMarkerDebugPayload + f Lyx; a field_48664 STREAM_CODEC + f Laaj$b; b field_48665 TYPE + f Ljd; c comp_1683 pos + f I d comp_1684 color + f Ljava/lang/String; e comp_1685 text + f I f comp_1686 durationMs + m (Lvw;)V a method_56495 write + m ()Ljd; b comp_1683 pos + m ()I c comp_1684 color + m ()Ljava/lang/String; d comp_1685 text + m ()I e comp_1686 durationMs + m (Lvw;)V + m (Ljd;ILjava/lang/String;I)V + m ()V +c aao net/minecraft/class_8715 net/minecraft/network/protocol/common/custom/GameTestClearMarkersDebugPayload + f Lyx; a field_48666 STREAM_CODEC + f Laaj$b; b field_48667 TYPE + m (Lvw;)V a method_56496 write + m (Lvw;)V + m ()V + m ()V +c aap net/minecraft/class_8716 net/minecraft/network/protocol/common/custom/GoalDebugPayload + f Lyx; a field_48668 STREAM_CODEC + f Laaj$b; b field_48669 TYPE + f I c comp_1687 entityId + f Ljd; d comp_1688 pos + f Ljava/util/List; e comp_1689 goals + m (Lvw;)V a method_56497 write + m (Lvw;Laap$a;)V a method_53034 method_53034 + m ()I b comp_1687 entityId + m ()Ljd; c comp_1688 pos + m ()Ljava/util/List; d comp_1689 goals + m (Lvw;)V + m (ILjd;Ljava/util/List;)V + m ()V +c aap$a net/minecraft/class_8716$class_8717 net/minecraft/network/protocol/common/custom/GoalDebugPayload$DebugGoal + f I a comp_1690 priority + f Z b comp_1691 isRunning + f Ljava/lang/String; c comp_1692 name + m ()I a comp_1690 priority + m (Lvw;)V a method_53035 write + m ()Z b comp_1691 isRunning + m ()Ljava/lang/String; c comp_1692 name + m (Lvw;)V + m (IZLjava/lang/String;)V +c aaq net/minecraft/class_8718 net/minecraft/network/protocol/common/custom/HiveDebugPayload + f Lyx; a field_48670 STREAM_CODEC + f Laaj$b; b field_48671 TYPE + f Laaq$a; c comp_1693 hiveInfo + m (Lvw;)V a method_56498 write + m ()Laaq$a; b comp_1693 hiveInfo + m (Lvw;)V + m (Laaq$a;)V + m ()V +c aaq$a net/minecraft/class_8718$class_8719 net/minecraft/network/protocol/common/custom/HiveDebugPayload$HiveInfo + f Ljd; a comp_1694 pos + f Ljava/lang/String; b comp_1695 hiveType + f I c comp_1696 occupantCount + f I d comp_1697 honeyLevel + f Z e comp_1698 sedated + m ()Ljd; a comp_1694 pos + m (Lvw;)V a method_53036 write + m ()Ljava/lang/String; b comp_1695 hiveType + m ()I c comp_1696 occupantCount + m ()I d comp_1697 honeyLevel + m ()Z e comp_1698 sedated + m (Lvw;)V + m (Ljd;Ljava/lang/String;IIZ)V +c aar net/minecraft/class_8720 net/minecraft/network/protocol/common/custom/NeighborUpdatesDebugPayload + f Lyx; a field_48672 STREAM_CODEC + f Laaj$b; b field_48673 TYPE + f J c comp_1699 time + f Ljd; d comp_1700 pos + m (Lvw;)V a method_56499 write + m ()J b comp_1699 time + m ()Ljd; c comp_1700 pos + m (Lvw;)V + m (JLjd;)V + m ()V +c aas net/minecraft/class_8721 net/minecraft/network/protocol/common/custom/PathfindingDebugPayload + f Lyx; a field_48674 STREAM_CODEC + f Laaj$b; b field_48675 TYPE + f I c comp_1701 entityId + f Leps; d comp_1702 path + f F e comp_1703 maxNodeDistance + m (Lvw;)V a method_56500 write + m ()I b comp_1701 entityId + m ()Leps; c comp_1702 path + m ()F d comp_1703 maxNodeDistance + m (Lvw;)V + m (ILeps;F)V + m ()V +c aat net/minecraft/class_8722 net/minecraft/network/protocol/common/custom/PoiAddedDebugPayload + f Lyx; a field_48676 STREAM_CODEC + f Laaj$b; b field_48677 TYPE + f Ljd; c comp_1704 pos + f Ljava/lang/String; d comp_1705 poiType + f I e comp_1706 freeTicketCount + m (Lvw;)V a method_56501 write + m ()Ljd; b comp_1704 pos + m ()Ljava/lang/String; c comp_1705 poiType + m ()I d comp_1706 freeTicketCount + m (Lvw;)V + m (Ljd;Ljava/lang/String;I)V + m ()V +c aau net/minecraft/class_8723 net/minecraft/network/protocol/common/custom/PoiRemovedDebugPayload + f Lyx; a field_48678 STREAM_CODEC + f Laaj$b; b field_48679 TYPE + f Ljd; c comp_1707 pos + m (Lvw;)V a method_56502 write + m ()Ljd; b comp_1707 pos + m (Lvw;)V + m (Ljd;)V + m ()V +c aav net/minecraft/class_8724 net/minecraft/network/protocol/common/custom/PoiTicketCountDebugPayload + f Lyx; a field_48680 STREAM_CODEC + f Laaj$b; b field_48681 TYPE + f Ljd; c comp_1708 pos + f I d comp_1709 freeTicketCount + m (Lvw;)V a method_56503 write + m ()Ljd; b comp_1708 pos + m ()I c comp_1709 freeTicketCount + m (Lvw;)V + m (Ljd;I)V + m ()V +c aaw net/minecraft/class_8725 net/minecraft/network/protocol/common/custom/RaidsDebugPayload + f Lyx; a field_48682 STREAM_CODEC + f Laaj$b; b field_48683 TYPE + f Ljava/util/List; c comp_1710 raidCenters + m (Lvw;)V a method_56504 write + m ()Ljava/util/List; b comp_1710 raidCenters + m (Lvw;)V + m (Ljava/util/List;)V + m ()V +c aax net/minecraft/class_8726 net/minecraft/network/protocol/common/custom/StructuresDebugPayload + f Lyx; a field_48684 STREAM_CODEC + f Laaj$b; b field_48685 TYPE + f Lakq; c comp_1711 dimension + f Lejj; d comp_1712 mainBB + f Ljava/util/List; e comp_1713 pieces + m (Lvw;)V a method_56505 write + m (Lvw;Lejj;)V a method_53037 writeBoundingBox + m (Lvw;Lvw;Laax$a;)V a method_53038 method_53038 + m ()Lakq; b comp_1711 dimension + m (Lvw;)Lejj; b method_53039 readBoundingBox + m ()Lejj; c comp_1712 mainBB + m ()Ljava/util/List; d comp_1713 pieces + m (Lvw;)V + m (Lakq;Lejj;Ljava/util/List;)V + m ()V +c aax$a net/minecraft/class_8726$class_8727 net/minecraft/network/protocol/common/custom/StructuresDebugPayload$PieceInfo + f Lejj; a comp_1714 boundingBox + f Z b comp_1715 isStart + m ()Lejj; a comp_1714 boundingBox + m (Lvw;)V a method_53040 write + m ()Z b comp_1715 isStart + m (Lvw;)V + m (Lejj;Z)V +c aay net/minecraft/class_8728 net/minecraft/network/protocol/common/custom/VillageSectionsDebugPayload + f Lyx; a field_48686 STREAM_CODEC + f Laaj$b; b field_48687 TYPE + f Ljava/util/Set; c comp_1716 villageChunks + f Ljava/util/Set; d comp_1717 notVillageChunks + m (Lvw;)V a method_56506 write + m ()Ljava/util/Set; b comp_1716 villageChunks + m ()Ljava/util/Set; c comp_1717 notVillageChunks + m (Lvw;)V + m (Ljava/util/Set;Ljava/util/Set;)V + m ()V +c aaz net/minecraft/class_8729 net/minecraft/network/protocol/common/custom/WorldGenAttemptDebugPayload + f Lyx; a field_48688 STREAM_CODEC + f Laaj$b; b field_48689 TYPE + f Ljd; c comp_1718 pos + f F d comp_1719 scale + f F e comp_1720 red + f F f comp_1721 green + f F g comp_1722 blue + f F h comp_1723 alpha + m (Lvw;)V a method_56507 write + m ()Ljd; b comp_1718 pos + m ()F c comp_1719 scale + m ()F d comp_1720 red + m ()F e comp_1721 green + m ()F f comp_1722 blue + m ()F g comp_1723 alpha + m (Lvw;)V + m (Ljd;FFFFF)V + m ()V +c aba net/minecraft/class_8730 net/minecraft/network/protocol/common/custom/package-info +c abb net/minecraft/class_8731 net/minecraft/network/protocol/common/package-info +c abc net/minecraft/class_8732 net/minecraft/network/protocol/configuration/ClientConfigurationPacketListener + m (Labd;)V a method_52794 handleConfigurationFinished + m (Labe;)V a method_52795 handleRegistryData + m (Labf;)V a method_58577 handleResetChat + m (Labg;)V a method_57045 handleSelectKnownPacks + m (Labh;)V a method_52796 handleEnabledFeatures +c abd net/minecraft/class_8733 net/minecraft/network/protocol/configuration/ClientboundFinishConfigurationPacket + f Labd; a field_48690 INSTANCE + f Lyx; b field_48691 STREAM_CODEC + m (Labc;)V a method_53041 handle + m ()V + m ()V +c abe net/minecraft/class_8734 net/minecraft/network/protocol/configuration/ClientboundRegistryDataPacket + f Lyx; a field_48692 STREAM_CODEC + f Lakq; b comp_2258 registry + f Ljava/util/List; c comp_2259 entries + f Lyx; d field_48777 REGISTRY_KEY_STREAM_CODEC + m (Labc;)V a method_53042 handle + m ()Lakq; b comp_2258 registry + m ()Ljava/util/List; e comp_2259 entries + m (Lakq;Ljava/util/List;)V + m ()V +c abf net/minecraft/class_9448 net/minecraft/network/protocol/configuration/ClientboundResetChatPacket + f Labf; a field_50083 INSTANCE + f Lyx; b field_50084 STREAM_CODEC + m (Labc;)V a method_58578 handle + m ()V + m ()V +c abg net/minecraft/class_9250 net/minecraft/network/protocol/configuration/ClientboundSelectKnownPacks + f Lyx; a field_49141 STREAM_CODEC + f Ljava/util/List; b comp_2356 knownPacks + m (Labc;)V a method_57073 handle + m ()Ljava/util/List; b comp_2356 knownPacks + m (Ljava/util/List;)V + m ()V +c abh net/minecraft/class_7832 net/minecraft/network/protocol/configuration/ClientboundUpdateEnabledFeaturesPacket + f Lyx; a field_48693 STREAM_CODEC + f Ljava/util/Set; b comp_1113 features + m (Labc;)V a method_46348 handle + m (Lvw;)V a method_56509 write + m ()Ljava/util/Set; b comp_1113 features + m (Lvw;)V + m (Ljava/util/Set;)V + m ()V +c abi net/minecraft/class_9156 net/minecraft/network/protocol/configuration/ConfigurationPacketTypes + f Lzi; a field_48694 CLIENTBOUND_FINISH_CONFIGURATION + f Lzi; b field_48695 CLIENTBOUND_REGISTRY_DATA + f Lzi; c field_48696 CLIENTBOUND_UPDATE_ENABLED_FEATURES + f Lzi; d field_49018 CLIENTBOUND_SELECT_KNOWN_PACKS + f Lzi; e field_50085 CLIENTBOUND_RESET_CHAT + f Lzi; f field_48697 SERVERBOUND_FINISH_CONFIGURATION + f Lzi; g field_49019 SERVERBOUND_SELECT_KNOWN_PACKS + m (Ljava/lang/String;)Lzi; a method_56510 createClientbound + m (Ljava/lang/String;)Lzi; b method_56511 createServerbound + m ()V + m ()V +c abj net/minecraft/class_9157 net/minecraft/network/protocol/configuration/ConfigurationProtocols + f Lwh$a; a field_52194 SERVERBOUND_TEMPLATE + f Lwh; b field_48698 SERVERBOUND + f Lwh$a; c field_52195 CLIENTBOUND_TEMPLATE + f Lwh; d field_48699 CLIENTBOUND + m (Lzl;)V a method_56512 method_56512 + m (Lzl;)V b method_56513 method_56513 + m ()V + m ()V +c abk net/minecraft/class_8735 net/minecraft/network/protocol/configuration/ServerConfigurationPacketListener + m (Labl;)V a method_52408 handleConfigurationFinished + m (Labm;)V a method_56909 handleSelectKnownPacks +c abl net/minecraft/class_8736 net/minecraft/network/protocol/configuration/ServerboundFinishConfigurationPacket + f Labl; a field_48700 INSTANCE + f Lyx; b field_48701 STREAM_CODEC + m (Labk;)V a method_53043 handle + m ()V + m ()V +c abm net/minecraft/class_9220 net/minecraft/network/protocol/configuration/ServerboundSelectKnownPacks + f Lyx; a field_49020 STREAM_CODEC + f Ljava/util/List; b comp_2326 knownPacks + m (Labk;)V a method_56910 handle + m ()Ljava/util/List; b comp_2326 knownPacks + m (Ljava/util/List;)V + m ()V +c abn net/minecraft/class_8737 net/minecraft/network/protocol/configuration/package-info +c abo net/minecraft/class_9087 net/minecraft/network/protocol/cookie/ClientCookiePacketListener + m (Labp;)V a method_55845 handleRequestCookie +c abp net/minecraft/class_9088 net/minecraft/network/protocol/cookie/ClientboundCookieRequestPacket + f Lyx; a field_47892 STREAM_CODEC + f Lakr; b comp_2194 key + m (Labo;)V a method_55847 handle + m (Lvw;)V a method_55848 write + m ()Lakr; b comp_2194 key + m (Lvw;)V + m (Lakr;)V + m ()V +c abq net/minecraft/class_9089 net/minecraft/network/protocol/cookie/CookiePacketTypes + f Lzi; a field_47893 CLIENTBOUND_COOKIE_REQUEST + f Lzi; b field_47894 SERVERBOUND_COOKIE_RESPONSE + m (Ljava/lang/String;)Lzi; a method_55849 createClientbound + m (Ljava/lang/String;)Lzi; b method_55850 createServerbound + m ()V + m ()V +c abr net/minecraft/class_9090 net/minecraft/network/protocol/cookie/ServerCookiePacketListener + m (Labs;)V a method_55851 handleCookieResponse +c abs net/minecraft/class_9091 net/minecraft/network/protocol/cookie/ServerboundCookieResponsePacket + f Lyx; a field_47895 STREAM_CODEC + f Lakr; b comp_2195 key + f [B c comp_2196 payload + m (Labr;)V a method_55852 handle + m (Lvw;)V a method_55853 write + m ()Lakr; b comp_2195 key + m ()[B e comp_2196 payload + m (Lvw;)V + m (Lakr;[B)V + m ()V +c abt net/minecraft/class_9092 net/minecraft/network/protocol/cookie/package-info +c abu net/minecraft/class_2602 net/minecraft/network/protocol/game/ClientGamePacketListener + m (Labv;)V a method_11112 handleAddEntity + m (Labw;)V a method_11091 handleAddExperienceOrb + m (Labx;)V a method_11160 handleAnimate + m (Laby;)V a method_11129 handleAwardStats + m (Labz;)V a method_21707 handleBlockChangedAck + m (Laca;)V a method_11116 handleBlockDestruction + m (Lacb;)V a method_11094 handleBlockEntityData + m (Lacc;)V a method_11158 handleBlockEvent + m (Lacd;)V a method_11136 handleBlockUpdate + m (Lace;)V a method_11078 handleBossUpdate + m (Lacg;)V a method_48294 handleBundlePacket + m (Lach;)V a method_11140 handleChangeDifficulty + m (Laci;)V a method_52799 handleChunkBatchFinished + m (Lacj;)V a method_52800 handleChunkBatchStart + m (Lack;)V a method_49631 handleChunksBiomes + m (Lacl;)V a method_34071 handleTitlesClear + m (Lacm;)V a method_11081 handleCommandSuggestions + m (Lacn;)V a method_11145 handleCommands + m (Laco;)V a method_11102 handleContainerClose + m (Lacp;)V a method_11153 handleContainerContent + m (Lacq;)V a method_11131 handleContainerSetData + m (Lacr;)V a method_11109 handleContainerSetSlot + m (Lacs;)V a method_11087 handleItemCooldown + m (Lact;)V a method_44763 handleCustomChatCompletions + m (Lacu;)V a method_49034 handleDamageEvent + m (Lacv;)V a method_56607 handleDebugSample + m (Lacw;)V a method_44814 handleDeleteChat + m (Lacx;)V a method_45724 handleDisguisedChat + m (Lacy;)V a method_11148 handleEntityEvent + m (Lacz;)V a method_11124 handleExplosion + m (Lada;)V a method_11107 handleForgetLevelChunk + m (Ladb;)V a method_11085 handleGameEvent + m (Ladc;)V a method_11089 handleHorseScreenOpen + m (Ladd;)V a method_48295 handleHurtAnimation + m (Lade;)V a method_34072 handleInitializeBorder + m (Ladg;)V a method_11128 handleLevelChunkWithLight + m (Ladh;)V a method_11098 handleLevelEvent + m (Ladi;)V a method_11077 handleParticleEvent + m (Ladj;)V a method_11143 handleLightUpdatePacket + m (Ladl;)V a method_11120 handleLogin + m (Ladm;)V a method_11088 handleMapItemData + m (Ladn;)V a method_17586 handleMerchantOffers + m (Lado;)V a method_11155 handleMoveEntity + m (Ladp;)V a method_11134 handleMoveVehicle + m (Ladq;)V a method_17186 handleOpenBook + m (Ladr;)V a method_17587 handleOpenScreen + m (Lads;)V a method_11108 handleOpenSignEditor + m (Ladt;)V a method_11090 handlePlaceRecipe + m (Ladu;)V a method_11154 handlePlayerAbilities + m (Ladv;)V a method_43595 handlePlayerChat + m (Ladw;)V a method_34073 handlePlayerCombatEnd + m (Ladx;)V a method_34074 handlePlayerCombatEnter + m (Lady;)V a method_34075 handlePlayerCombatKill + m (Ladz;)V a method_45725 handlePlayerInfoRemove + m (Laea;)V a method_11113 handlePlayerInfoUpdate + m (Laeb;)V a method_11092 handleLookAt + m (Laec;)V a method_11157 handleMovePlayer + m (Laed;)V a method_59504 handleProjectilePowerPacket + m (Laee;)V a method_11115 handleAddOrRemoveRecipes + m (Laef;)V a method_11095 handleRemoveEntities + m (Laeg;)V a method_11119 handleRemoveMobEffect + m (Laeh;)V a method_55450 handleResetScore + m (Laei;)V a method_11117 handleRespawn + m (Laej;)V a method_11139 handleRotateMob + m (Laek;)V a method_11100 handleChunkBlocksUpdate + m (Lael;)V a method_11161 handleSelectAdvancementsTab + m (Laem;)V a method_44075 handleServerData + m (Laen;)V a method_34076 setActionBarText + m (Laeo;)V a method_34077 handleSetBorderCenter + m (Laep;)V a method_34078 handleSetBorderLerpSize + m (Laeq;)V a method_34079 handleSetBorderSize + m (Laer;)V a method_34080 handleSetBorderWarningDelay + m (Laes;)V a method_34081 handleSetBorderWarningDistance + m (Laet;)V a method_11111 handleSetCamera + m (Laeu;)V a method_11135 handleSetCarriedItem + m (Laev;)V a method_20320 handleSetChunkCacheCenter + m (Laew;)V a method_20203 handleSetChunkCacheRadius + m (Laex;)V a method_11142 handleSetSpawn + m (Laey;)V a method_11159 handleSetDisplayObjective + m (Laez;)V a method_11093 handleSetEntityData + m (Lafa;)V a method_11110 handleEntityLinkPacket + m (Lafb;)V a method_11132 handleSetEntityMotion + m (Lafc;)V a method_11151 handleSetEquipment + m (Lafd;)V a method_11101 handleSetExperience + m (Lafe;)V a method_11122 handleSetHealth + m (Laff;)V a method_11144 handleAddObjective + m (Lafg;)V a method_11080 handleSetEntityPassengersPacket + m (Lafh;)V a method_11099 handleSetPlayerTeamPacket + m (Lafi;)V a method_11118 handleSetScore + m (Lafj;)V a method_39025 handleSetSimulationDistance + m (Lafk;)V a method_34082 setSubtitleText + m (Lafl;)V a method_11079 handleSetTime + m (Lafm;)V a method_34083 setTitleText + m (Lafn;)V a method_34084 setTitlesAnimation + m (Lafo;)V a method_11125 handleSoundEntityEvent + m (Lafp;)V a method_11146 handleSoundEvent + m (Lafq;)V a method_52798 handleConfigurationStart + m (Lafr;)V a method_11082 handleStopSoundEvent + m (Lafs;)V a method_43596 handleSystemChat + m (Laft;)V a method_11105 handleTabListCustomisation + m (Lafu;)V a method_11127 handleTagQueryPacket + m (Lafv;)V a method_11150 handleTakeItemEntity + m (Lafw;)V a method_11086 handleTeleportEntity + m (Lafx;)V a method_54806 handleTickingState + m (Lafy;)V a method_54807 handleTickingStep + m (Lafz;)V a method_11130 handleUpdateAdvancementsPacket + m (Laga;)V a method_11149 handleUpdateAttributes + m (Lagb;)V a method_11084 handleUpdateMobEffect + m (Lagc;)V a method_11106 handleUpdateRecipes +c abv net/minecraft/class_2604 net/minecraft/network/protocol/game/ClientboundAddEntityPacket + f Lyx; a field_47896 STREAM_CODEC + f D b field_33293 MAGICAL_QUANTIZATION + f D c field_33294 LIMIT + f I d field_11953 id + f Ljava/util/UUID; e field_11952 uuid + f Lbsx; f field_11955 type + f D g field_11948 x + f D h field_11946 y + f D i field_11956 z + f I j field_11951 xa + f I k field_11950 ya + f I l field_11949 za + f B m field_11947 xRot + f B n field_11957 yRot + f B o field_38817 yHeadRot + f I p field_11954 data + m (Labu;)V a method_11178 handle + m (Lwk;)V a method_55855 write + m ()I b method_11167 getId + m ()Ljava/util/UUID; e method_11164 getUUID + m ()Lbsx; f method_11169 getType + m ()D g method_11175 getX + m ()D h method_11174 getY + m ()D i method_11176 getZ + m ()D j method_11170 getXa + m ()D k method_11172 getYa + m ()D l method_11173 getZa + m ()F m method_11171 getXRot + m ()F n method_11168 getYRot + m ()F o method_43233 getYHeadRot + m ()I p method_11166 getData + m (Lbsr;Laqt;)V + m (Lbsr;Laqt;I)V + m (Lbsr;ILjd;)V + m (ILjava/util/UUID;DDDFFLbsx;ILexc;D)V + m (Lwk;)V + m ()V +c abw net/minecraft/class_2606 net/minecraft/network/protocol/game/ClientboundAddExperienceOrbPacket + f Lyx; a field_47897 STREAM_CODEC + f I b field_11974 id + f D c field_11972 x + f D d field_11971 y + f D e field_11970 z + f I f field_11973 value + m (Labu;)V a method_11182 handle + m (Lvw;)V a method_55856 write + m ()I b method_11183 getId + m ()D e method_11185 getX + m ()D f method_11181 getY + m ()D g method_11180 getZ + m ()I h method_11184 getValue + m (Lbtc;Laqt;)V + m (Lvw;)V + m ()V +c abx net/minecraft/class_2616 net/minecraft/network/protocol/game/ClientboundAnimatePacket + f Lyx; a field_47898 STREAM_CODEC + f I b field_33295 SWING_MAIN_HAND + f I c field_33297 WAKE_UP + f I d field_33298 SWING_OFF_HAND + f I e field_33299 CRITICAL_HIT + f I f field_33300 MAGIC_CRITICAL_HIT + f I g field_12029 id + f I h field_12028 action + m (Labu;)V a method_11268 handle + m (Lvw;)V a method_55857 write + m ()I b method_11269 getId + m ()I e method_11267 getAction + m (Lbsr;I)V + m (Lvw;)V + m ()V +c aby net/minecraft/class_2617 net/minecraft/network/protocol/game/ClientboundAwardStatsPacket + f Lyx; a field_47899 STREAM_CODEC + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; b comp_2197 stats + f Lyx; c field_47900 STAT_VALUES_STREAM_CODEC + m (Labu;)V a method_11270 handle + m ()Lit/unimi/dsi/fastutil/objects/Object2IntMap; b comp_2197 stats + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;)V + m ()V +c abz net/minecraft/class_4463 net/minecraft/network/protocol/game/ClientboundBlockChangedAckPacket + f Lyx; a field_47901 STREAM_CODEC + f I b comp_633 sequence + m (Labu;)V a method_21708 handle + m (Lvw;)V a method_55858 write + m ()I b comp_633 sequence + m (Lvw;)V + m (I)V + m ()V +c aca net/minecraft/class_2620 net/minecraft/network/protocol/game/ClientboundBlockDestructionPacket + f Lyx; a field_47902 STREAM_CODEC + f I b field_12033 id + f Ljd; c field_12034 pos + f I d field_12032 progress + m (Labu;)V a method_11279 handle + m (Lvw;)V a method_55859 write + m ()I b method_11280 getId + m ()Ljd; e method_11277 getPos + m ()I f method_11278 getProgress + m (ILjd;I)V + m (Lvw;)V + m ()V +c acb net/minecraft/class_2622 net/minecraft/network/protocol/game/ClientboundBlockEntityDataPacket + f Lyx; a field_47903 STREAM_CODEC + f Ljd; b field_12040 pos + f Ldqj; c field_12038 type + f Lub; d field_12039 tag + m (Labu;)V a method_11292 handle + m (Ldqh;)Lacb; a method_38585 create + m (Ldqh;Ljava/util/function/BiFunction;)Lacb; a method_39026 create + m ()Ljd; b method_11293 getPos + m ()Ldqj; e method_11291 getType + m ()Lub; f method_11290 getTag + m (Ljd;Ldqj;Lub;)V + m ()V +c acc net/minecraft/class_2623 net/minecraft/network/protocol/game/ClientboundBlockEventPacket + f Lyx; a field_47904 STREAM_CODEC + f Ljd; b field_12044 pos + f I c field_12042 b0 + f I d field_12041 b1 + f Ldfy; e field_12043 block + m (Labu;)V a method_11297 handle + m (Lwk;)V a method_55860 write + m ()Ljd; b method_11298 getPos + m ()I e method_11294 getB0 + m ()I f method_11296 getB1 + m ()Ldfy; g method_11295 getBlock + m (Ljd;Ldfy;II)V + m (Lwk;)V + m ()V +c acd net/minecraft/class_2626 net/minecraft/network/protocol/game/ClientboundBlockUpdatePacket + f Lyx; a field_47905 STREAM_CODEC + f Ljd; b field_12052 pos + f Ldtc; c field_12051 blockState + m (Labu;)V a method_11310 handle + m ()Ldtc; b method_11308 getBlockState + m ()Ljd; e method_11309 getPos + m (Ljd;Ldtc;)V + m (Ldcc;Ljd;)V + m ()V +c ace net/minecraft/class_2629 net/minecraft/network/protocol/game/ClientboundBossEventPacket + f Lyx; a field_47906 STREAM_CODEC + f I b field_33314 FLAG_DARKEN + f I c field_33315 FLAG_MUSIC + f I d field_33316 FLAG_FOG + f Ljava/util/UUID; e field_12074 id + f Lace$c; f field_12075 operation + f Lace$c; g field_29099 REMOVE_OPERATION + m (Labu;)V a method_11330 handle + m (Lace$b;)V a method_34091 dispatch + m (Lbqh;)Lace; a method_34089 createAddPacket + m (Ljava/util/UUID;)Lace; a method_34090 createRemovePacket + m (Lwk;)V a method_55861 write + m (ZZZ)I a method_34095 encodeProperties + m (Lbqh;)Lace; b method_34094 createUpdateProgressPacket + m (Lbqh;)Lace; c method_34096 createUpdateNamePacket + m (Lbqh;)Lace; d method_34097 createUpdateStylePacket + m (Lbqh;)Lace; e method_34098 createUpdatePropertiesPacket + m (Ljava/util/UUID;Lace$c;)V + m (Lwk;)V + m ()V +c ace$1 net/minecraft/class_2629$1 net/minecraft/network/protocol/game/ClientboundBossEventPacket$1 + m ()V +c ace$a net/minecraft/class_2629$class_5880 net/minecraft/network/protocol/game/ClientboundBossEventPacket$AddOperation + f Lwz; a field_29100 name + f F b field_29101 progress + f Lbqh$a; c field_29102 color + f Lbqh$b; d field_29103 overlay + f Z e field_29104 darkenScreen + f Z f field_29105 playMusic + f Z g field_29106 createWorldFog + m (Lbqh;)V + m (Lwk;)V +c ace$b net/minecraft/class_2629$class_5881 net/minecraft/network/protocol/game/ClientboundBossEventPacket$Handler + m (Ljava/util/UUID;)V a method_34099 remove + m (Ljava/util/UUID;F)V a method_34100 updateProgress + m (Ljava/util/UUID;Lbqh$a;Lbqh$b;)V a method_34101 updateStyle + m (Ljava/util/UUID;Lwz;)V a method_34102 updateName + m (Ljava/util/UUID;Lwz;FLbqh$a;Lbqh$b;ZZZ)V a method_34103 add + m (Ljava/util/UUID;ZZZ)V a method_34104 updateProperties +c ace$c net/minecraft/class_2629$class_5882 net/minecraft/network/protocol/game/ClientboundBossEventPacket$Operation + m ()Lace$d; a method_34105 getType + m (Ljava/util/UUID;Lace$b;)V a method_34106 dispatch + m (Lwk;)V a method_34107 write +c ace$d net/minecraft/class_2629$class_5883 net/minecraft/network/protocol/game/ClientboundBossEventPacket$OperationType + f Lace$d; a field_29107 ADD + f Lace$d; b field_29108 REMOVE + f Lace$d; c field_29109 UPDATE_PROGRESS + f Lace$d; d field_29110 UPDATE_NAME + f Lace$d; e field_29111 UPDATE_STYLE + f Lace$d; f field_29112 UPDATE_PROPERTIES + f Lyy; g field_29113 reader + f [Lace$d; h field_29114 $VALUES + m ()[Lace$d; a method_36948 $values + m (Lwk;)Lace$c; a method_34113 method_34113 + m (Ljava/lang/String;ILyy;)V + m ()V +c ace$e net/minecraft/class_2629$class_5884 net/minecraft/network/protocol/game/ClientboundBossEventPacket$UpdateNameOperation + f Lwz; a comp_2260 name + m ()Lwz; b comp_2260 name + m (Lwk;)V + m (Lwz;)V +c ace$f net/minecraft/class_2629$class_5885 net/minecraft/network/protocol/game/ClientboundBossEventPacket$UpdateProgressOperation + f F a comp_2261 progress + m ()F b comp_2261 progress + m (Lwk;)V + m (F)V +c ace$g net/minecraft/class_2629$class_5886 net/minecraft/network/protocol/game/ClientboundBossEventPacket$UpdatePropertiesOperation + f Z a field_29117 darkenScreen + f Z b field_29118 playMusic + f Z c field_29119 createWorldFog + m (ZZZ)V + m (Lwk;)V +c ace$h net/minecraft/class_2629$class_5887 net/minecraft/network/protocol/game/ClientboundBossEventPacket$UpdateStyleOperation + f Lbqh$a; a field_29120 color + f Lbqh$b; b field_29121 overlay + m (Lbqh$a;Lbqh$b;)V + m (Lwk;)V +c acf net/minecraft/class_9093 net/minecraft/network/protocol/game/ClientboundBundleDelimiterPacket + m ()V +c acg net/minecraft/class_8042 net/minecraft/network/protocol/game/ClientboundBundlePacket + m (Labu;)V a method_48329 handle + m (Ljava/lang/Iterable;)V +c ach net/minecraft/class_2632 net/minecraft/network/protocol/game/ClientboundChangeDifficultyPacket + f Lyx; a field_47907 STREAM_CODEC + f Lbqo; b field_12090 difficulty + f Z c field_12091 locked + m (Labu;)V a method_11341 handle + m (Lvw;)V a method_55862 write + m ()Z b method_11340 isLocked + m ()Lbqo; e method_11342 getDifficulty + m (Lbqo;Z)V + m (Lvw;)V + m ()V +c aci net/minecraft/class_8738 net/minecraft/network/protocol/game/ClientboundChunkBatchFinishedPacket + f Lyx; a field_47908 STREAM_CODEC + f I b comp_1725 batchSize + m (Labu;)V a method_53044 handle + m (Lvw;)V a method_55863 write + m ()I b comp_1725 batchSize + m (Lvw;)V + m (I)V + m ()V +c acj net/minecraft/class_8739 net/minecraft/network/protocol/game/ClientboundChunkBatchStartPacket + f Lacj; a field_47909 INSTANCE + f Lyx; b field_47910 STREAM_CODEC + m (Labu;)V a method_53045 handle + m ()V + m ()V +c ack net/minecraft/class_8212 net/minecraft/network/protocol/game/ClientboundChunksBiomesPacket + f Lyx; a field_47911 STREAM_CODEC + f Ljava/util/List; b comp_1313 chunkBiomeData + f I c field_43094 TWO_MEGABYTES + m (Labu;)V a method_49687 handle + m (Ljava/util/List;)Lack; a method_49685 forChunks + m (Lvw;)V a method_55864 write + m (Lvw;Lack$a;)V a method_49686 method_49686 + m ()Ljava/util/List; b comp_1313 chunkBiomeData + m (Lvw;)V + m (Ljava/util/List;)V + m ()V +c ack$a net/minecraft/class_8212$class_8213 net/minecraft/network/protocol/game/ClientboundChunksBiomesPacket$ChunkBiomeData + f Ldcd; a comp_1314 pos + f [B b comp_1315 buffer + m ()Lvw; a method_49688 getReadBuffer + m (Ldvi;)I a method_49689 calculateChunkSize + m (Lvw;)V a method_49690 write + m (Lvw;Ldvi;)V a method_49691 extractChunkData + m ()Ldcd; b comp_1314 pos + m ()[B c comp_1315 buffer + m ()Lio/netty/buffer/ByteBuf; d method_49692 getWriteBuffer + m (Ldvi;)V + m (Lvw;)V + m (Ldcd;[B)V +c acl net/minecraft/class_5888 net/minecraft/network/protocol/game/ClientboundClearTitlesPacket + f Lyx; a field_47912 STREAM_CODEC + f Z b field_29122 resetTimes + m (Labu;)V a method_34115 handle + m (Lvw;)V a method_55865 write + m ()Z b method_34116 shouldResetTimes + m (Z)V + m (Lvw;)V + m ()V +c acm net/minecraft/class_2639 net/minecraft/network/protocol/game/ClientboundCommandSuggestionsPacket + f Lyx; a field_47913 STREAM_CODEC + f I b comp_2262 id + f I c comp_2263 start + f I d comp_2264 length + f Ljava/util/List; e comp_2265 suggestions + m (Labu;)V a method_11398 handle + m (Lcom/mojang/brigadier/context/StringRange;Lacm$a;)Lcom/mojang/brigadier/suggestion/Suggestion; a method_56608 method_56608 + m (Lcom/mojang/brigadier/suggestion/Suggestion;)Lacm$a; a method_56609 method_56609 + m ()Lcom/mojang/brigadier/suggestion/Suggestions; b method_11397 toSuggestions + m ()I e comp_2262 id + m ()I f comp_2263 start + m ()I g comp_2264 length + m ()Ljava/util/List; h comp_2265 suggestions + m (ILcom/mojang/brigadier/suggestion/Suggestions;)V + m (IIILjava/util/List;)V + m ()V +c acm$a net/minecraft/class_2639$class_9177 net/minecraft/network/protocol/game/ClientboundCommandSuggestionsPacket$Entry + f Lyx; a field_48779 STREAM_CODEC + f Ljava/lang/String; b comp_2266 text + f Ljava/util/Optional; c comp_2267 tooltip + m ()Ljava/lang/String; a comp_2266 text + m ()Ljava/util/Optional; b comp_2267 tooltip + m (Ljava/lang/String;Ljava/util/Optional;)V + m ()V +c acn net/minecraft/class_2641 net/minecraft/network/protocol/game/ClientboundCommandsPacket + f Lyx; a field_47914 STREAM_CODEC + f B b field_33317 MASK_TYPE + f B c field_33318 FLAG_EXECUTABLE + f B d field_33319 FLAG_REDIRECT + f B e field_33320 FLAG_CUSTOM_SUGGESTIONS + f B f field_33321 TYPE_ROOT + f B g field_33322 TYPE_LITERAL + f B h field_33323 TYPE_ARGUMENT + f I i field_38038 rootIndex + f Ljava/util/List; j field_38039 entries + m (Labu;)V a method_11404 handle + m (Lcom/mojang/brigadier/tree/CommandNode;Lit/unimi/dsi/fastutil/objects/Object2IntMap;)Lacn$b; a method_11401 createEntry + m (Lcom/mojang/brigadier/tree/RootCommandNode;)Lit/unimi/dsi/fastutil/objects/Object2IntMap; a method_30944 enumerateNodes + m (Lep;)Lcom/mojang/brigadier/tree/RootCommandNode; a method_11403 getRoot + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;)Ljava/util/List; a method_30945 createEntries + m (Ljava/util/List;)V a method_30946 validateEntries + m (Ljava/util/List;Ljava/util/function/BiPredicate;)V a method_42067 validateEntries + m (Ljava/util/function/BiPredicate;Ljava/util/List;Lit/unimi/dsi/fastutil/ints/IntSet;I)Z a method_42068 method_42068 + m (Lvw;)V a method_55867 write + m (Lvw;B)Lacn$e; a method_11402 read + m (Lvw;Lacn$b;)V a method_34119 method_34119 + m (Lvw;)Lacn$b; b method_11405 readNode + m (Lcom/mojang/brigadier/tree/RootCommandNode;)V + m (Lvw;)V + m ()V +c acn$a net/minecraft/class_2641$class_7232 net/minecraft/network/protocol/game/ClientboundCommandsPacket$ArgumentNodeStub + f Ljava/lang/String; a field_38040 id + f Lio$a; b field_38041 argumentType + f Lakr; c field_38042 suggestionId + m (Lcom/mojang/brigadier/suggestion/SuggestionProvider;)Lakr; a method_42069 getSuggestionId + m (Lvw;Lio$a;)V a method_42072 serializeCap + m (Lvw;Lio;Lio$a;)V a method_42073 serializeCap + m (Ljava/lang/String;Lio$a;Lakr;)V + m (Lcom/mojang/brigadier/tree/ArgumentCommandNode;)V +c acn$b net/minecraft/class_2641$class_2642 net/minecraft/network/protocol/game/ClientboundCommandsPacket$Entry + f Lacn$e; a field_38043 stub + f I b field_12124 flags + f I c field_12126 redirect + f [I d field_12125 children + m (Lit/unimi/dsi/fastutil/ints/IntSet;)Z a method_42074 canBuild + m (Lvw;)V a method_42075 write + m (Lit/unimi/dsi/fastutil/ints/IntSet;)Z b method_42076 canResolve + m (Lacn$e;II[I)V +c acn$c net/minecraft/class_2641$class_7233 net/minecraft/network/protocol/game/ClientboundCommandsPacket$LiteralNodeStub + f Ljava/lang/String; a field_38044 id + m (Ljava/lang/String;)V +c acn$d net/minecraft/class_2641$class_7234 net/minecraft/network/protocol/game/ClientboundCommandsPacket$NodeResolver + f Lep; a field_38045 context + f Ljava/util/List; b field_38046 entries + f Ljava/util/List; c field_38047 nodes + m (I)Lcom/mojang/brigadier/tree/CommandNode; a method_42077 resolve + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_42078 method_42078 + m (Lep;Ljava/util/List;)V +c acn$e net/minecraft/class_2641$class_7235 net/minecraft/network/protocol/game/ClientboundCommandsPacket$NodeStub + m (Lep;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_42070 build + m (Lvw;)V a method_42071 write +c aco net/minecraft/class_2645 net/minecraft/network/protocol/game/ClientboundContainerClosePacket + f Lyx; a field_47915 STREAM_CODEC + f I b field_12137 containerId + m (Labu;)V a method_11427 handle + m (Lvw;)V a method_55868 write + m ()I b method_36148 getContainerId + m (I)V + m (Lvw;)V + m ()V +c acp net/minecraft/class_2649 net/minecraft/network/protocol/game/ClientboundContainerSetContentPacket + f Lyx; a field_47916 STREAM_CODEC + f I b field_12146 containerId + f I c field_34034 stateId + f Ljava/util/List; d field_12147 items + f Lcuq; e field_34035 carriedItem + m (Labu;)V a method_11439 handle + m (Lwk;)V a method_55869 write + m ()I b method_11440 getContainerId + m ()Ljava/util/List; e method_11441 getItems + m ()Lcuq; f method_37437 getCarriedItem + m ()I g method_37438 getStateId + m (IILjv;Lcuq;)V + m (Lwk;)V + m ()V +c acq net/minecraft/class_2651 net/minecraft/network/protocol/game/ClientboundContainerSetDataPacket + f Lyx; a field_47917 STREAM_CODEC + f I b field_12150 containerId + f I c field_12149 id + f I d field_12148 value + m (Labu;)V a method_11447 handle + m (Lvw;)V a method_55870 write + m ()I b method_11448 getContainerId + m ()I e method_11445 getId + m ()I f method_11446 getValue + m (III)V + m (Lvw;)V + m ()V +c acr net/minecraft/class_2653 net/minecraft/network/protocol/game/ClientboundContainerSetSlotPacket + f Lyx; a field_47918 STREAM_CODEC + f I b field_33324 CARRIED_ITEM + f I c field_33325 PLAYER_INVENTORY + f I d field_12152 containerId + f I e field_34036 stateId + f I f field_12151 slot + f Lcuq; g field_12153 itemStack + m (Labu;)V a method_11451 handle + m (Lwk;)V a method_55871 write + m ()I b method_11452 getContainerId + m ()I e method_11450 getSlot + m ()Lcuq; f method_11449 getItem + m ()I g method_37439 getStateId + m (IIILcuq;)V + m (Lwk;)V + m ()V +c acs net/minecraft/class_2656 net/minecraft/network/protocol/game/ClientboundCooldownPacket + f Lyx; a field_47919 STREAM_CODEC + f Lcul; b comp_2198 item + f I c comp_2199 duration + m (Labu;)V a method_11455 handle + m ()Lcul; b comp_2198 item + m ()I e comp_2199 duration + m (Lcul;I)V + m ()V +c act net/minecraft/class_7597 net/minecraft/network/protocol/game/ClientboundCustomChatCompletionsPacket + f Lyx; a field_47920 STREAM_CODEC + f Lact$a; b comp_908 action + f Ljava/util/List; c comp_909 entries + m (Labu;)V a method_44783 handle + m (Lvw;)V a method_55872 write + m ()Lact$a; b comp_908 action + m ()Ljava/util/List; e comp_909 entries + m (Lvw;)V + m (Lact$a;Ljava/util/List;)V + m ()V +c act$a net/minecraft/class_7597$class_7598 net/minecraft/network/protocol/game/ClientboundCustomChatCompletionsPacket$Action + f Lact$a; a field_39801 ADD + f Lact$a; b field_39802 REMOVE + f Lact$a; c field_39803 SET + f [Lact$a; d field_39804 $VALUES + m ()[Lact$a; a method_44784 $values + m (Ljava/lang/String;I)V + m ()V +c acu net/minecraft/class_8143 net/minecraft/network/protocol/game/ClientboundDamageEventPacket + f Lyx; a field_47921 STREAM_CODEC + f I b comp_1267 entityId + f Ljm; c comp_1268 sourceType + f I d comp_1269 sourceCauseId + f I e comp_1270 sourceDirectId + f Ljava/util/Optional; f comp_1271 sourcePosition + m (Labu;)V a method_49074 handle + m (Ldcw;)Lbrk; a method_49071 getSource + m (Lvw;)I a method_49075 readOptionalEntityId + m (Lvw;I)V a method_49072 writeOptionalEntityId + m (Lvw;Lexc;)V a method_49073 method_49073 + m (Lwk;)V a method_55873 write + m ()I b comp_1267 entityId + m (Lvw;)Lexc; b method_49076 method_49076 + m ()Ljm; e comp_1268 sourceType + m ()I f comp_1269 sourceCauseId + m ()I g comp_1270 sourceDirectId + m ()Ljava/util/Optional; h comp_1271 sourcePosition + m (Lbsr;Lbrk;)V + m (Lwk;)V + m (ILjm;IILjava/util/Optional;)V + m ()V +c acv net/minecraft/class_9178 net/minecraft/network/protocol/game/ClientboundDebugSamplePacket + f Lyx; a field_48780 STREAM_CODEC + f [J b comp_2268 sample + f Lbls; c comp_2269 debugSampleType + m (Labu;)V a method_56610 handle + m (Lvw;)V a method_56611 write + m ()[J b comp_2268 sample + m ()Lbls; e comp_2269 debugSampleType + m (Lvw;)V + m ([JLbls;)V + m ()V +c acw net/minecraft/class_7617 net/minecraft/network/protocol/game/ClientboundDeleteChatPacket + f Lyx; a field_47922 STREAM_CODEC + f Lxl$a; b comp_938 messageSignature + m (Labu;)V a method_44889 handle + m (Lvw;)V a method_55874 write + m ()Lxl$a; b comp_938 messageSignature + m (Lvw;)V + m (Lxl$a;)V + m ()V +c acx net/minecraft/class_7827 net/minecraft/network/protocol/game/ClientboundDisguisedChatPacket + f Lyx; a field_47923 STREAM_CODEC + f Lwz; b comp_1097 message + f Lwv$a; c comp_1098 chatType + m (Labu;)V a method_46324 handle + m ()Lwz; b comp_1097 message + m ()Lwv$a; e comp_1098 chatType + m (Lwz;Lwv$a;)V + m ()V +c acy net/minecraft/class_2663 net/minecraft/network/protocol/game/ClientboundEntityEventPacket + f Lyx; a field_47924 STREAM_CODEC + f I b field_12175 entityId + f B c field_12174 eventId + m (Labu;)V a method_11471 handle + m (Ldcw;)Lbsr; a method_11469 getEntity + m (Lvw;)V a method_55876 write + m ()B b method_11470 getEventId + m (Lbsr;B)V + m (Lvw;)V + m ()V +c acz net/minecraft/class_2664 net/minecraft/network/protocol/game/ClientboundExplodePacket + f Lyx; a field_47925 STREAM_CODEC + f D b field_12180 x + f D c field_12178 y + f D d field_12177 z + f F e field_12179 power + f Ljava/util/List; f field_12181 toBlow + f F g field_12176 knockbackX + f F h field_12183 knockbackY + f F i field_12182 knockbackZ + f Llk; j field_47515 smallExplosionParticles + f Llk; k field_47516 largeExplosionParticles + f Ldco$a; l field_47517 blockInteraction + f Ljm; m field_47518 explosionSound + m (IIILvw;)Ljd; a method_34121 method_34121 + m (IIILvw;Ljd;)V a method_34122 method_34122 + m (Labu;)V a method_11480 handle + m (Lwk;)V a method_55877 write + m ()F b method_11472 getKnockbackX + m ()F e method_11473 getKnockbackY + m ()F f method_11474 getKnockbackZ + m ()D g method_11475 getX + m ()D h method_11477 getY + m ()D i method_11478 getZ + m ()F j method_11476 getPower + m ()Ljava/util/List; k method_11479 getToBlow + m ()Ldco$a; l method_55328 getBlockInteraction + m ()Llk; m method_55329 getSmallExplosionParticles + m ()Llk; n method_55330 getLargeExplosionParticles + m ()Ljm; o method_55331 getExplosionSound + m (DDDFLjava/util/List;Lexc;Ldco$a;Llk;Llk;Ljm;)V + m (Lwk;)V + m ()V +c ada net/minecraft/class_2666 net/minecraft/network/protocol/game/ClientboundForgetLevelChunkPacket + f Lyx; a field_47926 STREAM_CODEC + f Ldcd; b comp_1726 pos + m (Labu;)V a method_11486 handle + m (Lvw;)V a method_55878 write + m ()Ldcd; b comp_1726 pos + m (Lvw;)V + m (Ldcd;)V + m ()V +c adb net/minecraft/class_2668 net/minecraft/network/protocol/game/ClientboundGameEventPacket + f Lyx; a field_47927 STREAM_CODEC + f Ladb$a; b field_25645 NO_RESPAWN_BLOCK_AVAILABLE + f Ladb$a; c field_25646 START_RAINING + f Ladb$a; d field_25647 STOP_RAINING + f Ladb$a; e field_25648 CHANGE_GAME_MODE + f Ladb$a; f field_25649 WIN_GAME + f Ladb$a; g field_25650 DEMO_EVENT + f Ladb$a; h field_25651 ARROW_HIT_PLAYER + f Ladb$a; i field_25652 RAIN_LEVEL_CHANGE + f Ladb$a; j field_25653 THUNDER_LEVEL_CHANGE + f Ladb$a; k field_25654 PUFFER_FISH_STING + f Ladb$a; l field_25655 GUARDIAN_ELDER_EFFECT + f Ladb$a; m field_25656 IMMEDIATE_RESPAWN + f Ladb$a; n field_46189 LIMITED_CRAFTING + f Ladb$a; o field_46637 LEVEL_CHUNKS_LOAD_START + f I p field_33328 DEMO_PARAM_INTRO + f I q field_33329 DEMO_PARAM_HINT_1 + f I r field_33330 DEMO_PARAM_HINT_2 + f I s field_33331 DEMO_PARAM_HINT_3 + f I t field_33332 DEMO_PARAM_HINT_4 + f Ladb$a; u field_12199 event + f F v field_12198 param + m (Labu;)V a method_11490 handle + m (Lvw;)V a method_55879 write + m ()Ladb$a; b method_11491 getEvent + m ()F e method_11492 getParam + m (Ladb$a;F)V + m (Lvw;)V + m ()V +c adb$a net/minecraft/class_2668$class_5402 net/minecraft/network/protocol/game/ClientboundGameEventPacket$Type + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a field_25657 TYPES + f I b field_25658 id + m (I)V + m ()V +c adc net/minecraft/class_2648 net/minecraft/network/protocol/game/ClientboundHorseScreenOpenPacket + f Lyx; a field_47928 STREAM_CODEC + f I b field_12144 containerId + f I c field_12143 inventoryColumns + f I d field_12142 entityId + m (Labu;)V a method_11437 handle + m (Lvw;)V a method_55880 write + m ()I b method_11432 getContainerId + m ()I e method_11434 getInventoryColumns + m ()I f method_11433 getEntityId + m (III)V + m (Lvw;)V + m ()V +c add net/minecraft/class_8043 net/minecraft/network/protocol/game/ClientboundHurtAnimationPacket + f Lyx; a field_47929 STREAM_CODEC + f I b comp_1202 id + f F c comp_1203 yaw + m (Labu;)V a method_48330 handle + m (Lvw;)V a method_55881 write + m ()I b comp_1202 id + m ()F e comp_1203 yaw + m (Lbtn;)V + m (Lvw;)V + m (IF)V + m ()V +c ade net/minecraft/class_5889 net/minecraft/network/protocol/game/ClientboundInitializeBorderPacket + f Lyx; a field_47930 STREAM_CODEC + f D b field_29123 newCenterX + f D c field_29124 newCenterZ + f D d field_29125 oldSize + f D e field_29126 newSize + f J f field_29127 lerpTime + f I g field_29128 newAbsoluteMaxSize + f I h field_29129 warningBlocks + f I i field_29130 warningTime + m (Labu;)V a method_34123 handle + m (Lvw;)V a method_55882 write + m ()D b method_34124 getNewCenterX + m ()D e method_34125 getNewCenterZ + m ()D f method_34126 getNewSize + m ()D g method_34127 getOldSize + m ()J h method_34128 getLerpTime + m ()I i method_34129 getNewAbsoluteMaxSize + m ()I j method_34130 getWarningTime + m ()I k method_34131 getWarningBlocks + m (Lvw;)V + m (Ldut;)V + m ()V +c adf net/minecraft/class_6603 net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData + f I a field_34862 TWO_MEGABYTES + f Lub; b field_34863 heightmaps + f [B c field_34864 buffer + f Ljava/util/List; d field_34865 blockEntitiesData + m ()Lvw; a method_38586 getReadBuffer + m (II)Ljava/util/function/Consumer; a method_38587 getBlockEntitiesTagsConsumer + m (IILadf$b;)V a method_38588 method_38588 + m (Ladf$b;II)V a method_38593 getBlockEntitiesTags + m (Ldvi;)I a method_38589 calculateChunkSize + m (Lvw;Ldvi;)V a method_38591 extractChunkData + m (Lwk;)V a method_38590 write + m ()Lub; b method_38594 getHeightmaps + m ()Lio/netty/buffer/ByteBuf; c method_38595 getWriteBuffer + m (Ldvi;)V + m (Lwk;II)V +c adf$a net/minecraft/class_6603$class_6604 net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityInfo + f Lyx; a field_47931 STREAM_CODEC + f Lyx; b field_47932 LIST_STREAM_CODEC + f I c field_34866 packedXZ + f I d field_34867 y + f Ldqj; e field_34868 type + f Lub; f field_34869 tag + m (Ldqh;)Ladf$a; a method_38596 create + m (Lwk;)V a method_38597 write + m (IILdqj;Lub;)V + m (Lwk;)V + m ()V +c adf$b net/minecraft/class_6603$class_6605 net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityTagOutput +c adg net/minecraft/class_2672 net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket + f Lyx; a field_47933 STREAM_CODEC + f I b field_12236 x + f I c field_12235 z + f Ladf; d field_34870 chunkData + f Ladk; e field_34871 lightData + m (Labu;)V a method_11528 handle + m (Lwk;)V a method_55883 write + m ()I b method_11523 getX + m ()I e method_11524 getZ + m ()Ladf; f method_38598 getChunkData + m ()Ladk; g method_38599 getLightData + m (Ldvi;Leot;Ljava/util/BitSet;Ljava/util/BitSet;)V + m (Lwk;)V + m ()V +c adh net/minecraft/class_2673 net/minecraft/network/protocol/game/ClientboundLevelEventPacket + f Lyx; a field_47934 STREAM_CODEC + f I b field_12241 type + f Ljd; c field_12242 pos + f I d field_12239 data + f Z e field_12240 globalEvent + m (Labu;)V a method_11535 handle + m (Lvw;)V a method_55884 write + m ()Z b method_11533 isGlobalEvent + m ()I e method_11532 getType + m ()I f method_11534 getData + m ()Ljd; g method_11531 getPos + m (ILjd;IZ)V + m (Lvw;)V + m ()V +c adi net/minecraft/class_2675 net/minecraft/network/protocol/game/ClientboundLevelParticlesPacket + f Lyx; a field_47935 STREAM_CODEC + f D b field_12258 x + f D c field_12257 y + f D d field_12256 z + f F e field_12255 xDist + f F f field_12252 yDist + f F g field_12251 zDist + f F h field_12260 maxSpeed + f I i field_12253 count + f Z j field_12254 overrideLimiter + f Llk; k field_12259 particle + m (Labu;)V a method_11553 handle + m (Lwk;)V a method_55885 write + m ()Z b method_11552 isOverrideLimiter + m ()D e method_11544 getX + m ()D f method_11547 getY + m ()D g method_11546 getZ + m ()F h method_11548 getXDist + m ()F i method_11549 getYDist + m ()F j method_11550 getZDist + m ()F k method_11543 getMaxSpeed + m ()I l method_11545 getCount + m ()Llk; m method_11551 getParticle + m (Llk;ZDDDFFFFI)V + m (Lwk;)V + m ()V +c adj net/minecraft/class_2676 net/minecraft/network/protocol/game/ClientboundLightUpdatePacket + f Lyx; a field_47936 STREAM_CODEC + f I b field_12265 x + f I c field_12264 z + f Ladk; d field_34872 lightData + m (Labu;)V a method_11560 handle + m (Lvw;)V a method_55886 write + m ()I b method_11558 getX + m ()I e method_11554 getZ + m ()Ladk; f method_38600 getLightData + m (Ldcd;Leot;Ljava/util/BitSet;Ljava/util/BitSet;)V + m (Lvw;)V + m ()V +c adk net/minecraft/class_6606 net/minecraft/network/protocol/game/ClientboundLightUpdatePacketData + f Lyx; a field_48781 DATA_LAYER_STREAM_CODEC + f Ljava/util/BitSet; b field_34873 skyYMask + f Ljava/util/BitSet; c field_34874 blockYMask + f Ljava/util/BitSet; d field_34875 emptySkyYMask + f Ljava/util/BitSet; e field_34876 emptyBlockYMask + f Ljava/util/List; f field_34877 skyUpdates + f Ljava/util/List; g field_34878 blockUpdates + m ()Ljava/util/BitSet; a method_38601 getSkyYMask + m (Ldcd;Leot;Lddf;ILjava/util/BitSet;Ljava/util/BitSet;Ljava/util/List;)V a method_38602 prepareSectionData + m (Lvw;)V a method_38603 write + m ()Ljava/util/BitSet; b method_38604 getEmptySkyYMask + m ()Ljava/util/List; c method_38606 getSkyUpdates + m ()Ljava/util/BitSet; d method_38608 getBlockYMask + m ()Ljava/util/BitSet; e method_38609 getEmptyBlockYMask + m ()Ljava/util/List; f method_38610 getBlockUpdates + m (Ldcd;Leot;Ljava/util/BitSet;Ljava/util/BitSet;)V + m (Lvw;II)V + m ()V +c adl net/minecraft/class_2678 net/minecraft/network/protocol/game/ClientboundLoginPacket + f Lyx; a field_47937 STREAM_CODEC + f I b comp_88 playerId + f Z c comp_89 hardcore + f Ljava/util/Set; d comp_92 levels + f I e comp_97 maxPlayers + f I f comp_98 chunkRadius + f I g comp_169 simulationDistance + f Z h comp_99 reducedDebugInfo + f Z i comp_100 showDeathScreen + f Z j comp_1964 doLimitedCrafting + f Lagd; k comp_1727 commonPlayerSpawnInfo + f Z l comp_2200 enforcesSecureChat + m (Labu;)V a method_11567 handle + m (Lvw;)Lakq; a method_34135 method_34135 + m (Lwk;)V a method_55887 write + m ()I b comp_88 playerId + m ()Z e comp_89 hardcore + m ()Ljava/util/Set; f comp_92 levels + m ()I g comp_97 maxPlayers + m ()I h comp_98 chunkRadius + m ()I i comp_169 simulationDistance + m ()Z j comp_99 reducedDebugInfo + m ()Z k comp_100 showDeathScreen + m ()Z l comp_1964 doLimitedCrafting + m ()Lagd; m comp_1727 commonPlayerSpawnInfo + m ()Z n comp_2200 enforcesSecureChat + m (Lwk;)V + m (IZLjava/util/Set;IIIZZZLagd;Z)V + m ()V +c adm net/minecraft/class_2683 net/minecraft/network/protocol/game/ClientboundMapItemDataPacket + f Lyx; a field_47938 STREAM_CODEC + f Leqr; b comp_2270 mapId + f B c comp_2271 scale + f Z d comp_2272 locked + f Ljava/util/Optional; e comp_2273 decorations + f Ljava/util/Optional; f comp_2274 colorPatch + m (Labu;)V a method_11643 handle + m (Leqt;)V a method_11642 applyToMap + m (Leqt;Leqt$b;)V a method_56618 method_56618 + m ()Leqr; b comp_2270 mapId + m ()B e comp_2271 scale + m ()Z f comp_2272 locked + m ()Ljava/util/Optional; g comp_2273 decorations + m ()Ljava/util/Optional; h comp_2274 colorPatch + m (Leqr;BZLjava/util/Collection;Leqt$b;)V + m (Leqr;BZLjava/util/Optional;Ljava/util/Optional;)V + m ()V +c adn net/minecraft/class_3943 net/minecraft/network/protocol/game/ClientboundMerchantOffersPacket + f Lyx; a field_47939 STREAM_CODEC + f I b field_17434 containerId + f Ldbv; c field_17435 offers + f I d field_18801 villagerLevel + f I e field_18802 villagerXp + f Z f field_18803 showProgress + f Z g field_19376 canRestock + m (Labu;)V a method_17588 handle + m (Lwk;)V a method_55889 write + m ()I b method_17589 getContainerId + m ()Ldbv; e method_17590 getOffers + m ()I f method_19458 getVillagerLevel + m ()I g method_19459 getVillagerXp + m ()Z h method_19460 showProgress + m ()Z i method_20722 canRestock + m (ILdbv;IIZZ)V + m (Lwk;)V + m ()V +c ado net/minecraft/class_2684 net/minecraft/network/protocol/game/ClientboundMoveEntityPacket + f I a field_12310 entityId + f S b field_12309 xa + f S c field_12308 ya + f S d field_12307 za + f B e field_12312 yRot + f B f field_12311 xRot + f Z g field_12306 onGround + f Z h field_12305 hasRot + f Z i field_20849 hasPos + m (Labu;)V a method_11651 handle + m (Ldcw;)Lbsr; a method_11645 getEntity + m ()S b method_36150 getXa + m ()S e method_36151 getYa + m ()S f method_36152 getZa + m ()B g method_11649 getyRot + m ()B h method_11650 getxRot + m ()Z i method_11652 hasRotation + m ()Z j method_22826 hasPosition + m ()Z k method_11653 isOnGround + m (ISSSBBZZZ)V +c ado$a net/minecraft/class_2684$class_2685 net/minecraft/network/protocol/game/ClientboundMoveEntityPacket$Pos + f Lyx; j field_47940 STREAM_CODEC + m (Lvw;)Lado$a; a method_34138 read + m (Lvw;)V b method_55890 write + m (ISSSZ)V + m ()V +c ado$b net/minecraft/class_2684$class_2686 net/minecraft/network/protocol/game/ClientboundMoveEntityPacket$PosRot + f Lyx; j field_47941 STREAM_CODEC + m (Lvw;)Lado$b; a method_34139 read + m (Lvw;)V b method_55891 write + m (ISSSBBZ)V + m ()V +c ado$c net/minecraft/class_2684$class_2687 net/minecraft/network/protocol/game/ClientboundMoveEntityPacket$Rot + f Lyx; j field_47942 STREAM_CODEC + m (Lvw;)Lado$c; a method_34140 read + m (Lvw;)V b method_55892 write + m (IBBZ)V + m ()V +c adp net/minecraft/class_2692 net/minecraft/network/protocol/game/ClientboundMoveVehiclePacket + f Lyx; a field_47943 STREAM_CODEC + f D b field_12324 x + f D c field_12322 y + f D d field_12320 z + f F e field_12323 yRot + f F f field_12321 xRot + m (Labu;)V a method_11672 handle + m (Lvw;)V a method_55893 write + m ()D b method_11673 getX + m ()D e method_11674 getY + m ()D f method_11670 getZ + m ()F g method_11675 getYRot + m ()F h method_11671 getXRot + m (Lbsr;)V + m (Lvw;)V + m ()V +c adq net/minecraft/class_3895 net/minecraft/network/protocol/game/ClientboundOpenBookPacket + f Lyx; a field_47944 STREAM_CODEC + f Lbqq; b field_17199 hand + m (Labu;)V a method_17187 handle + m (Lvw;)V a method_55894 write + m ()Lbqq; b method_17188 getHand + m (Lbqq;)V + m (Lvw;)V + m ()V +c adr net/minecraft/class_3944 net/minecraft/network/protocol/game/ClientboundOpenScreenPacket + f Lyx; a field_47945 STREAM_CODEC + f I b field_17436 containerId + f Lcrc; c field_17437 type + f Lwz; d field_17438 title + m (Labu;)V a method_17591 handle + m ()I b method_17592 getContainerId + m ()Lcrc; e method_17593 getType + m ()Lwz; f method_17594 getTitle + m (ILcrc;Lwz;)V + m ()V +c ads net/minecraft/class_2693 net/minecraft/network/protocol/game/ClientboundOpenSignEditorPacket + f Lyx; a field_47946 STREAM_CODEC + f Ljd; b field_12325 pos + f Z c field_43387 isFrontText + m (Labu;)V a method_11676 handle + m (Lvw;)V a method_55895 write + m ()Ljd; b method_11677 getPos + m ()Z e method_49995 isFrontText + m (Ljd;Z)V + m (Lvw;)V + m ()V +c adt net/minecraft/class_2695 net/minecraft/network/protocol/game/ClientboundPlaceGhostRecipePacket + f Lyx; a field_47947 STREAM_CODEC + f I b field_12333 containerId + f Lakr; c field_12332 recipe + m (Labu;)V a method_11686 handle + m (Lvw;)V a method_55896 write + m ()Lakr; b method_11684 getRecipe + m ()I e method_11685 getContainerId + m (ILczb;)V + m (Lvw;)V + m ()V +c adu net/minecraft/class_2696 net/minecraft/network/protocol/game/ClientboundPlayerAbilitiesPacket + f Lyx; a field_47948 STREAM_CODEC + f I b field_33336 FLAG_INVULNERABLE + f I c field_33337 FLAG_FLYING + f I d field_33338 FLAG_CAN_FLY + f I e field_33339 FLAG_INSTABUILD + f Z f field_12339 invulnerable + f Z g field_12338 isFlying + f Z h field_12337 canFly + f Z i field_12336 instabuild + f F j field_12335 flyingSpeed + f F k field_12334 walkingSpeed + m (Labu;)V a method_11697 handle + m (Lvw;)V a method_55897 write + m ()Z b method_11695 isInvulnerable + m ()Z e method_11698 isFlying + m ()Z f method_11699 canFly + m ()Z g method_11696 canInstabuild + m ()F h method_11690 getFlyingSpeed + m ()F i method_11691 getWalkingSpeed + m (Lcmu;)V + m (Lvw;)V + m ()V +c adv net/minecraft/class_7438 net/minecraft/network/protocol/game/ClientboundPlayerChatPacket + f Lyx; a field_47949 STREAM_CODEC + f Ljava/util/UUID; b comp_1099 sender + f I c comp_1100 index + f Lxl; d comp_1101 signature + f Lxs$a; e comp_1102 body + f Lwz; f comp_1103 unsignedContent + f Lxd; g comp_1104 filterMask + f Lwv$a; h comp_943 chatType + m (Labu;)V a method_43629 handle + m (Lwk;)V a method_55898 write + m ()Ljava/util/UUID; b comp_1099 sender + m ()I e comp_1100 index + m ()Lxl; f comp_1101 signature + m ()Lxs$a; g comp_1102 body + m ()Lwz; h comp_1103 unsignedContent + m ()Lxd; i comp_1104 filterMask + m ()Lwv$a; j comp_943 chatType + m (Lwk;)V + m (Ljava/util/UUID;ILxl;Lxs$a;Lwz;Lxd;Lwv$a;)V + m ()V +c adw net/minecraft/class_5890 net/minecraft/network/protocol/game/ClientboundPlayerCombatEndPacket + f Lyx; a field_47950 STREAM_CODEC + f I b field_29132 duration + m (Labu;)V a method_34141 handle + m (Lvw;)V a method_55899 write + m (Lbrh;)V + m (I)V + m (Lvw;)V + m ()V +c adx net/minecraft/class_5891 net/minecraft/network/protocol/game/ClientboundPlayerCombatEnterPacket + f Ladx; a field_47951 INSTANCE + f Lyx; b field_47952 STREAM_CODEC + m (Labu;)V a method_34142 handle + m ()V + m ()V +c ady net/minecraft/class_5892 net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket + f Lyx; a field_47953 STREAM_CODEC + f I b comp_2275 playerId + f Lwz; c comp_2276 message + m (Labu;)V a method_34143 handle + m ()I b comp_2275 playerId + m ()Lwz; e comp_2276 message + m (ILwz;)V + m ()V +c adz net/minecraft/class_7828 net/minecraft/network/protocol/game/ClientboundPlayerInfoRemovePacket + f Lyx; a field_47954 STREAM_CODEC + f Ljava/util/List; b comp_1105 profileIds + m (Labu;)V a method_46325 handle + m (Lvw;)V a method_55901 write + m ()Ljava/util/List; b comp_1105 profileIds + m (Lvw;)V + m (Ljava/util/List;)V + m ()V +c aea net/minecraft/class_2703 net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket + f Lyx; a field_47955 STREAM_CODEC + f Ljava/util/EnumSet; b field_40698 actions + f Ljava/util/List; c field_12369 entries + m (Labu;)V a method_11721 handle + m (Ljava/util/Collection;)Laea; a method_43886 createPlayerInitializing + m (Lvw;)Laea$b; a method_46328 method_46328 + m (Lvw;Laea$b;)V a method_46326 method_46326 + m (Lwk;)V a method_55902 write + m ()Ljava/util/EnumSet; b method_46327 actions + m ()Ljava/util/List; e method_46329 entries + m ()Ljava/util/List; f method_46330 newEntries + m (Ljava/util/EnumSet;Ljava/util/Collection;)V + m (Laea$a;Laqv;)V + m (Lwk;)V + m ()V +c aea$a net/minecraft/class_2703$class_5893 net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket$Action + f Laea$a; a field_29136 ADD_PLAYER + f Laea$a; b field_40699 INITIALIZE_CHAT + f Laea$a; c field_29137 UPDATE_GAME_MODE + f Laea$a; d field_40700 UPDATE_LISTED + f Laea$a; e field_29138 UPDATE_LATENCY + f Laea$a; f field_29139 UPDATE_DISPLAY_NAME + f Laea$a$a; g field_40701 reader + f Laea$a$b; h field_40702 writer + f [Laea$a; i field_29141 $VALUES + m ()[Laea$a; a method_36951 $values + m (Laea$c;Lwk;)V a method_46332 method_46332 + m (Lwk;Laea$b;)V a method_46331 method_46331 + m (Laea$c;Lwk;)V b method_46334 method_46334 + m (Lwk;Laea$b;)V b method_46333 method_46333 + m (Laea$c;Lwk;)V c method_46336 method_46336 + m (Lwk;Laea$b;)V c method_46335 method_46335 + m (Laea$c;Lwk;)V d method_46338 method_46338 + m (Lwk;Laea$b;)V d method_46337 method_46337 + m (Laea$c;Lwk;)V e method_46340 method_46340 + m (Lwk;Laea$b;)V e method_46339 method_46339 + m (Laea$c;Lwk;)V f method_46342 method_46342 + m (Lwk;Laea$b;)V f method_46341 method_46341 + m (Ljava/lang/String;ILaea$a$a;Laea$a$b;)V + m ()V +c aea$a$a net/minecraft/class_2703$class_5893$class_7829 net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket$Action$Reader +c aea$a$b net/minecraft/class_2703$class_5893$class_7830 net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket$Action$Writer +c aea$b net/minecraft/class_2703$class_2705 net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket$Entry + f Ljava/util/UUID; a comp_1106 profileId + f Lcom/mojang/authlib/GameProfile; b comp_1107 profile + f Z c comp_1108 listed + f I d comp_1109 latency + f Ldct; e comp_1110 gameMode + f Lwz; f comp_1111 displayName + f Lxq$a; g comp_1112 chatSession + m ()Ljava/util/UUID; a comp_1106 profileId + m ()Lcom/mojang/authlib/GameProfile; b comp_1107 profile + m ()Z c comp_1108 listed + m ()I d comp_1109 latency + m ()Ldct; e comp_1110 gameMode + m ()Lwz; f comp_1111 displayName + m ()Lxq$a; g comp_1112 chatSession + m (Laqv;)V + m (Ljava/util/UUID;Lcom/mojang/authlib/GameProfile;ZILdct;Lwz;Lxq$a;)V +c aea$c net/minecraft/class_2703$class_7831 net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket$EntryBuilder + f Ljava/util/UUID; a field_40703 profileId + f Lcom/mojang/authlib/GameProfile; b field_40704 profile + f Z c field_40705 listed + f I d field_40706 latency + f Ldct; e field_40707 gameMode + f Lwz; f field_40708 displayName + f Lxq$a; g field_40709 chatSession + m ()Laea$b; a method_46343 build + m (Ljava/util/UUID;)V +c aeb net/minecraft/class_2707 net/minecraft/network/protocol/game/ClientboundPlayerLookAtPacket + f Lyx; a field_47956 STREAM_CODEC + f D b field_12386 x + f D c field_12384 y + f D d field_12383 z + f I e field_12388 entity + f Lff$a; f field_12385 fromAnchor + f Lff$a; g field_12389 toAnchor + f Z h field_12387 atEntity + m (Labu;)V a method_11731 handle + m (Ldcw;)Lexc; a method_11732 getPosition + m (Lvw;)V a method_55903 write + m ()Lff$a; b method_11730 getFromAnchor + m (Lff$a;DDD)V + m (Lff$a;Lbsr;Lff$a;)V + m (Lvw;)V + m ()V +c aec net/minecraft/class_2708 net/minecraft/network/protocol/game/ClientboundPlayerPositionPacket + f Lyx; a field_47957 STREAM_CODEC + f D b field_12395 x + f D c field_12392 y + f D d field_12390 z + f F e field_12393 yRot + f F f field_12391 xRot + f Ljava/util/Set; g field_12396 relativeArguments + f I h field_12394 id + m (Labu;)V a method_11740 handle + m (Lvw;)V a method_55904 write + m ()D b method_11734 getX + m ()D e method_11735 getY + m ()D f method_11738 getZ + m ()F g method_11736 getYRot + m ()F h method_11739 getXRot + m ()I i method_11737 getId + m ()Ljava/util/Set; j method_11733 getRelativeArguments + m (DDDFFLjava/util/Set;I)V + m (Lvw;)V + m ()V +c aed net/minecraft/class_9632 net/minecraft/network/protocol/game/ClientboundProjectilePowerPacket + f Lyx; a field_51336 STREAM_CODEC + f I b field_51337 id + f D c field_51849 accelerationPower + m (Labu;)V a method_59505 handle + m (Lvw;)V a method_59506 write + m ()I b method_59507 getId + m ()D e method_60423 getAccelerationPower + m (ID)V + m (Lvw;)V + m ()V +c aee net/minecraft/class_2713 net/minecraft/network/protocol/game/ClientboundRecipePacket + f Lyx; a field_47958 STREAM_CODEC + f Laee$a; b field_12408 state + f Ljava/util/List; c field_12414 recipes + f Ljava/util/List; d field_12409 toHighlight + f Lavt; e field_25797 bookSettings + m (Labu;)V a method_11753 handle + m (Lvw;)V a method_55905 write + m ()Ljava/util/List; b method_11750 getRecipes + m ()Ljava/util/List; e method_11757 getHighlights + m ()Lavt; f method_11756 getBookSettings + m ()Laee$a; g method_11751 getState + m (Laee$a;Ljava/util/Collection;Ljava/util/Collection;Lavt;)V + m (Lvw;)V + m ()V +c aee$a net/minecraft/class_2713$class_2714 net/minecraft/network/protocol/game/ClientboundRecipePacket$State + f Laee$a; a field_12416 INIT + f Laee$a; b field_12415 ADD + f Laee$a; c field_12417 REMOVE + f [Laee$a; d field_12418 $VALUES + m ()[Laee$a; a method_36953 $values + m (Ljava/lang/String;I)V + m ()V +c aef net/minecraft/class_2716 net/minecraft/network/protocol/game/ClientboundRemoveEntitiesPacket + f Lyx; a field_47959 STREAM_CODEC + f Lit/unimi/dsi/fastutil/ints/IntList; b field_33690 entityIds + m (Labu;)V a method_11764 handle + m (Lvw;)V a method_55906 write + m ()Lit/unimi/dsi/fastutil/ints/IntList; b method_36548 getEntityIds + m (Lit/unimi/dsi/fastutil/ints/IntList;)V + m ([I)V + m (Lvw;)V + m ()V +c aeg net/minecraft/class_2718 net/minecraft/network/protocol/game/ClientboundRemoveMobEffectPacket + f Lyx; a field_47960 STREAM_CODEC + f I b comp_2175 entityId + f Ljm; c comp_2176 effect + m (Labu;)V a method_11769 handle + m (Ldcw;)Lbsr; a method_11767 getEntity + m ()I b comp_2175 entityId + m ()Ljm; e comp_2176 effect + m (ILjm;)V + m ()V +c aeh net/minecraft/class_9006 net/minecraft/network/protocol/game/ClientboundResetScorePacket + f Lyx; a field_47961 STREAM_CODEC + f Ljava/lang/String; b comp_2120 owner + f Ljava/lang/String; c comp_2121 objectiveName + m (Labu;)V a method_55332 handle + m (Lvw;)V a method_55908 write + m ()Ljava/lang/String; b comp_2120 owner + m ()Ljava/lang/String; e comp_2121 objectiveName + m (Lvw;)V + m (Ljava/lang/String;Ljava/lang/String;)V + m ()V +c aei net/minecraft/class_2724 net/minecraft/network/protocol/game/ClientboundRespawnPacket + f Lyx; a field_47962 STREAM_CODEC + f B b field_41730 KEEP_ATTRIBUTE_MODIFIERS + f B c field_41731 KEEP_ENTITY_DATA + f B d field_41732 KEEP_ALL_DATA + f Lagd; e comp_1728 commonPlayerSpawnInfo + f B f comp_1729 dataToKeep + m (B)Z a method_48016 shouldKeep + m (Labu;)V a method_11782 handle + m (Lwk;)V a method_55909 write + m ()Lagd; b comp_1728 commonPlayerSpawnInfo + m ()B e comp_1729 dataToKeep + m (Lwk;)V + m (Lagd;B)V + m ()V +c aej net/minecraft/class_2726 net/minecraft/network/protocol/game/ClientboundRotateHeadPacket + f Lyx; a field_47963 STREAM_CODEC + f I b field_12437 entityId + f B c field_12436 yHeadRot + m (Labu;)V a method_11788 handle + m (Ldcw;)Lbsr; a method_11786 getEntity + m (Lvw;)V a method_55910 write + m ()B b method_11787 getYHeadRot + m (Lbsr;B)V + m (Lvw;)V + m ()V +c aek net/minecraft/class_2637 net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket + f Lyx; a field_47964 STREAM_CODEC + f I b field_33341 POS_IN_SECTION_BITS + f Lkf; c field_26345 sectionPos + f [S d field_26346 positions + f [Ldtc; e field_26347 states + m (Labu;)V a method_11392 handle + m (Ljava/util/function/BiConsumer;)V a method_30621 runUpdates + m (Lvw;)V a method_55911 write + m (Lkf;Lit/unimi/dsi/fastutil/shorts/ShortSet;Ldvj;)V + m (Lvw;)V + m ()V +c ael net/minecraft/class_2729 net/minecraft/network/protocol/game/ClientboundSelectAdvancementsTabPacket + f Lyx; a field_47965 STREAM_CODEC + f Lakr; b field_12440 tab + m (Labu;)V a method_11794 handle + m (Lvw;)V a method_55912 write + m ()Lakr; b method_11793 getTab + m (Lakr;)V + m (Lvw;)V + m ()V +c aem net/minecraft/class_7495 net/minecraft/network/protocol/game/ClientboundServerDataPacket + f Lyx; a field_47966 STREAM_CODEC + f Lwz; b comp_2277 motd + f Ljava/util/Optional; c comp_2278 iconBytes + m (Labu;)V a method_44131 handle + m ()Lwz; b comp_2277 motd + m ()Ljava/util/Optional; e comp_2278 iconBytes + m (Lwz;Ljava/util/Optional;)V + m ()V +c aen net/minecraft/class_5894 net/minecraft/network/protocol/game/ClientboundSetActionBarTextPacket + f Lyx; a field_47967 STREAM_CODEC + f Lwz; b comp_2279 text + m (Labu;)V a method_34154 handle + m ()Lwz; b comp_2279 text + m (Lwz;)V + m ()V +c aeo net/minecraft/class_5895 net/minecraft/network/protocol/game/ClientboundSetBorderCenterPacket + f Lyx; a field_47968 STREAM_CODEC + f D b field_29143 newCenterX + f D c field_29144 newCenterZ + m (Labu;)V a method_34156 handle + m (Lvw;)V a method_55915 write + m ()D b method_34157 getNewCenterZ + m ()D e method_34158 getNewCenterX + m (Ldut;)V + m (Lvw;)V + m ()V +c aep net/minecraft/class_5896 net/minecraft/network/protocol/game/ClientboundSetBorderLerpSizePacket + f Lyx; a field_47969 STREAM_CODEC + f D b field_29145 oldSize + f D c field_29146 newSize + f J d field_29147 lerpTime + m (Labu;)V a method_34159 handle + m (Lvw;)V a method_55916 write + m ()D b method_34160 getOldSize + m ()D e method_34161 getNewSize + m ()J f method_34162 getLerpTime + m (Ldut;)V + m (Lvw;)V + m ()V +c aeq net/minecraft/class_5897 net/minecraft/network/protocol/game/ClientboundSetBorderSizePacket + f Lyx; a field_47970 STREAM_CODEC + f D b field_29148 size + m (Labu;)V a method_34163 handle + m (Lvw;)V a method_55917 write + m ()D b method_34164 getSize + m (Ldut;)V + m (Lvw;)V + m ()V +c aer net/minecraft/class_5898 net/minecraft/network/protocol/game/ClientboundSetBorderWarningDelayPacket + f Lyx; a field_47971 STREAM_CODEC + f I b field_29149 warningDelay + m (Labu;)V a method_34165 handle + m (Lvw;)V a method_55918 write + m ()I b method_34166 getWarningDelay + m (Ldut;)V + m (Lvw;)V + m ()V +c aes net/minecraft/class_5899 net/minecraft/network/protocol/game/ClientboundSetBorderWarningDistancePacket + f Lyx; a field_47972 STREAM_CODEC + f I b field_29150 warningBlocks + m (Labu;)V a method_34167 handle + m (Lvw;)V a method_55919 write + m ()I b method_34168 getWarningBlocks + m (Ldut;)V + m (Lvw;)V + m ()V +c aet net/minecraft/class_2734 net/minecraft/network/protocol/game/ClientboundSetCameraPacket + f Lyx; a field_47973 STREAM_CODEC + f I b field_12462 cameraId + m (Labu;)V a method_11801 handle + m (Ldcw;)Lbsr; a method_11800 getEntity + m (Lvw;)V a method_55920 write + m (Lbsr;)V + m (Lvw;)V + m ()V +c aeu net/minecraft/class_2735 net/minecraft/network/protocol/game/ClientboundSetCarriedItemPacket + f Lyx; a field_47974 STREAM_CODEC + f I b field_12463 slot + m (Labu;)V a method_11802 handle + m (Lvw;)V a method_55921 write + m ()I b method_11803 getSlot + m (I)V + m (Lvw;)V + m ()V +c aev net/minecraft/class_4282 net/minecraft/network/protocol/game/ClientboundSetChunkCacheCenterPacket + f Lyx; a field_47975 STREAM_CODEC + f I b field_19206 x + f I c field_19207 z + m (Labu;)V a method_20321 handle + m (Lvw;)V a method_55922 write + m ()I b method_20322 getX + m ()I e method_20323 getZ + m (II)V + m (Lvw;)V + m ()V +c aew net/minecraft/class_4273 net/minecraft/network/protocol/game/ClientboundSetChunkCacheRadiusPacket + f Lyx; a field_47976 STREAM_CODEC + f I b field_19146 radius + m (Labu;)V a method_20205 handle + m (Lvw;)V a method_55923 write + m ()I b method_20206 getRadius + m (I)V + m (Lvw;)V + m ()V +c aex net/minecraft/class_2759 net/minecraft/network/protocol/game/ClientboundSetDefaultSpawnPositionPacket + f Lyx; a field_47977 STREAM_CODEC + f Ljd; b field_12615 pos + f F c field_26381 angle + m (Labu;)V a method_11869 handle + m (Lvw;)V a method_55924 write + m ()Ljd; b method_11870 getPos + m ()F e method_30732 getAngle + m (Ljd;F)V + m (Lvw;)V + m ()V +c aey net/minecraft/class_2736 net/minecraft/network/protocol/game/ClientboundSetDisplayObjectivePacket + f Lyx; a field_47978 STREAM_CODEC + f Lexx; b field_12464 slot + f Ljava/lang/String; c field_12465 objectiveName + m (Labu;)V a method_11805 handle + m (Lvw;)V a method_55925 write + m ()Lexx; b method_11806 getSlot + m ()Ljava/lang/String; e method_11804 getObjectiveName + m (Lexx;Lexy;)V + m (Lvw;)V + m ()V +c aez net/minecraft/class_2739 net/minecraft/network/protocol/game/ClientboundSetEntityDataPacket + f Lyx; a field_47979 STREAM_CODEC + f I b field_40850 EOF_MARKER + f I c comp_1127 id + f Ljava/util/List; d comp_1128 packedItems + m (Labu;)V a method_11808 handle + m (Ljava/util/List;Lwk;)V a method_46615 pack + m (Lwk;)Ljava/util/List; a method_46616 unpack + m ()I b comp_1127 id + m (Lwk;)V b method_55926 write + m ()Ljava/util/List; e comp_1128 packedItems + m (Lwk;)V + m (ILjava/util/List;)V + m ()V +c afa net/minecraft/class_2740 net/minecraft/network/protocol/game/ClientboundSetEntityLinkPacket + f Lyx; a field_47980 STREAM_CODEC + f I b field_12479 sourceId + f I c field_12478 destId + m (Labu;)V a method_11811 handle + m (Lvw;)V a method_55927 write + m ()I b method_11812 getSourceId + m ()I e method_11810 getDestId + m (Lbsr;Lbsr;)V + m (Lvw;)V + m ()V +c afb net/minecraft/class_2743 net/minecraft/network/protocol/game/ClientboundSetEntityMotionPacket + f Lyx; a field_47981 STREAM_CODEC + f I b field_12564 id + f I c field_12563 xa + f I d field_12562 ya + f I e field_12561 za + m (Labu;)V a method_11817 handle + m (Lvw;)V a method_55928 write + m ()I b method_11818 getId + m ()D e method_11815 getXa + m ()D f method_11816 getYa + m ()D g method_11819 getZa + m (Lbsr;)V + m (ILexc;)V + m (Lvw;)V + m ()V +c afc net/minecraft/class_2744 net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket + f Lyx; a field_47982 STREAM_CODEC + f B b field_33342 CONTINUE_MASK + f I c field_12565 entity + f Ljava/util/List; d field_25721 slots + m (Labu;)V a method_11823 handle + m (Lwk;)V a method_55929 write + m ()I b method_11820 getEntity + m ()Ljava/util/List; e method_30145 getSlots + m (ILjava/util/List;)V + m (Lwk;)V + m ()V +c afd net/minecraft/class_2748 net/minecraft/network/protocol/game/ClientboundSetExperiencePacket + f Lyx; a field_47983 STREAM_CODEC + f F b field_12580 experienceProgress + f I c field_12582 totalExperience + f I d field_12581 experienceLevel + m (Labu;)V a method_11829 handle + m (Lvw;)V a method_55930 write + m ()F b method_11830 getExperienceProgress + m ()I e method_11827 getTotalExperience + m ()I f method_11828 getExperienceLevel + m (FII)V + m (Lvw;)V + m ()V +c afe net/minecraft/class_2749 net/minecraft/network/protocol/game/ClientboundSetHealthPacket + f Lyx; a field_47984 STREAM_CODEC + f F b field_12584 health + f I c field_12585 food + f F d field_12583 saturation + m (Labu;)V a method_11832 handle + m (Lvw;)V a method_55931 write + m ()F b method_11833 getHealth + m ()I e method_11831 getFood + m ()F f method_11834 getSaturation + m (FIF)V + m (Lvw;)V + m ()V +c aff net/minecraft/class_2751 net/minecraft/network/protocol/game/ClientboundSetObjectivePacket + f Lyx; a field_47985 STREAM_CODEC + f I b field_33343 METHOD_ADD + f I c field_33344 METHOD_REMOVE + f I d field_33345 METHOD_CHANGE + f Ljava/lang/String; e field_12589 objectiveName + f Lwz; f field_12591 displayName + f Leyj$a; g field_12592 renderType + f Ljava/util/Optional; h field_47519 numberFormat + f I i field_12590 method + m (Labu;)V a method_11838 handle + m (Lwk;)V a method_55932 write + m ()Ljava/lang/String; b method_11835 getObjectiveName + m ()Lwz; e method_11836 getDisplayName + m ()I f method_11837 getMethod + m ()Leyj$a; g method_11839 getRenderType + m ()Ljava/util/Optional; h method_55336 getNumberFormat + m (Lexy;I)V + m (Lwk;)V + m ()V +c afg net/minecraft/class_2752 net/minecraft/network/protocol/game/ClientboundSetPassengersPacket + f Lyx; a field_47986 STREAM_CODEC + f I b field_12594 vehicle + f [I c field_12593 passengers + m (Labu;)V a method_11842 handle + m (Lvw;)V a method_55933 write + m ()[I b method_11840 getPassengers + m ()I e method_11841 getVehicle + m (Lbsr;)V + m (Lvw;)V + m ()V +c afh net/minecraft/class_5900 net/minecraft/network/protocol/game/ClientboundSetPlayerTeamPacket + f Lyx; a field_47987 STREAM_CODEC + f I b field_33346 METHOD_ADD + f I c field_33347 METHOD_REMOVE + f I d field_33348 METHOD_CHANGE + f I e field_33349 METHOD_JOIN + f I f field_33350 METHOD_LEAVE + f I g field_33351 MAX_VISIBILITY_LENGTH + f I h field_33352 MAX_COLLISION_LENGTH + f I i field_29151 method + f Ljava/lang/String; j field_29152 name + f Ljava/util/Collection; k field_29153 players + f Ljava/util/Optional; l field_29154 parameters + m (I)Z a method_34169 shouldHavePlayerList + m (Labu;)V a method_34173 handle + m (Leyb;)Lafh; a method_34170 createRemovePacket + m (Leyb;Ljava/lang/String;Lafh$a;)Lafh; a method_34171 createPlayerPacket + m (Leyb;Z)Lafh; a method_34172 createAddOrModifyPacket + m (Lwk;)V a method_55934 write + m ()Lafh$a; b method_34174 getPlayerAction + m (I)Z b method_34175 shouldHaveParameters + m ()Lafh$a; e method_34176 getTeamAction + m ()Ljava/lang/String; f method_34177 getName + m ()Ljava/util/Collection; g method_34178 getPlayers + m ()Ljava/util/Optional; h method_34179 getParameters + m ()Ljava/lang/IllegalStateException; i method_34180 method_34180 + m (Ljava/lang/String;ILjava/util/Optional;Ljava/util/Collection;)V + m (Lwk;)V + m ()V +c afh$a net/minecraft/class_5900$class_5901 net/minecraft/network/protocol/game/ClientboundSetPlayerTeamPacket$Action + f Lafh$a; a field_29155 ADD + f Lafh$a; b field_29156 REMOVE + f [Lafh$a; c field_29157 $VALUES + m ()[Lafh$a; a method_36954 $values + m (Ljava/lang/String;I)V + m ()V +c afh$b net/minecraft/class_5900$class_5902 net/minecraft/network/protocol/game/ClientboundSetPlayerTeamPacket$Parameters + f Lwz; a field_29158 displayName + f Lwz; b field_29159 playerPrefix + f Lwz; c field_29160 playerSuffix + f Ljava/lang/String; d field_29161 nametagVisibility + f Ljava/lang/String; e field_29162 collisionRule + f Ln; f field_29163 color + f I g field_29164 options + m ()Lwz; a method_34181 getDisplayName + m (Lwk;)V a method_34182 write + m ()I b method_34183 getOptions + m ()Ln; c method_34184 getColor + m ()Ljava/lang/String; d method_34185 getNametagVisibility + m ()Ljava/lang/String; e method_34186 getCollisionRule + m ()Lwz; f method_34187 getPlayerPrefix + m ()Lwz; g method_34188 getPlayerSuffix + m (Leyb;)V + m (Lwk;)V +c afi net/minecraft/class_2757 net/minecraft/network/protocol/game/ClientboundSetScorePacket + f Lyx; a field_47988 STREAM_CODEC + f Ljava/lang/String; b comp_2122 owner + f Ljava/lang/String; c comp_2123 objectiveName + f I d comp_2124 score + f Ljava/util/Optional; e comp_2125 display + f Ljava/util/Optional; f comp_2126 numberFormat + m (Labu;)V a method_11866 handle + m ()Ljava/lang/String; b comp_2122 owner + m ()Ljava/lang/String; e comp_2123 objectiveName + m ()I f comp_2124 score + m ()Ljava/util/Optional; g comp_2125 display + m ()Ljava/util/Optional; h comp_2126 numberFormat + m (Ljava/lang/String;Ljava/lang/String;ILjava/util/Optional;Ljava/util/Optional;)V + m ()V +c afj net/minecraft/class_6682 net/minecraft/network/protocol/game/ClientboundSetSimulationDistancePacket + f Lyx; a field_47989 STREAM_CODEC + f I b comp_170 simulationDistance + m (Labu;)V a method_39027 handle + m (Lvw;)V a method_55936 write + m ()I b comp_170 simulationDistance + m (Lvw;)V + m (I)V + m ()V +c afk net/minecraft/class_5903 net/minecraft/network/protocol/game/ClientboundSetSubtitleTextPacket + f Lyx; a field_47990 STREAM_CODEC + f Lwz; b comp_2280 text + m (Labu;)V a method_34189 handle + m ()Lwz; b comp_2280 text + m (Lwz;)V + m ()V +c afl net/minecraft/class_2761 net/minecraft/network/protocol/game/ClientboundSetTimePacket + f Lyx; a field_47991 STREAM_CODEC + f J b field_12621 gameTime + f J c field_12620 dayTime + m (Labu;)V a method_11872 handle + m (Lvw;)V a method_55938 write + m ()J b method_11871 getGameTime + m ()J e method_11873 getDayTime + m (JJZ)V + m (Lvw;)V + m ()V +c afm net/minecraft/class_5904 net/minecraft/network/protocol/game/ClientboundSetTitleTextPacket + f Lyx; a field_47992 STREAM_CODEC + f Lwz; b comp_2281 text + m (Labu;)V a method_34191 handle + m ()Lwz; b comp_2281 text + m (Lwz;)V + m ()V +c afn net/minecraft/class_5905 net/minecraft/network/protocol/game/ClientboundSetTitlesAnimationPacket + f Lyx; a field_47993 STREAM_CODEC + f I b field_29167 fadeIn + f I c field_29168 stay + f I d field_29169 fadeOut + m (Labu;)V a method_34193 handle + m (Lvw;)V a method_55940 write + m ()I b method_34194 getFadeIn + m ()I e method_34195 getStay + m ()I f method_34196 getFadeOut + m (III)V + m (Lvw;)V + m ()V +c afo net/minecraft/class_2765 net/minecraft/network/protocol/game/ClientboundSoundEntityPacket + f Lyx; a field_47994 STREAM_CODEC + f Ljm; b field_12642 sound + f Lavq; c field_12641 source + f I d field_12640 id + f F e field_12639 volume + f F f field_12638 pitch + f J g field_38819 seed + m (Labu;)V a method_11884 handle + m (Lwk;)V a method_55941 write + m ()Ljm; b method_11882 getSound + m ()Lavq; e method_11881 getSource + m ()I f method_11883 getId + m ()F g method_11885 getVolume + m ()F h method_11880 getPitch + m ()J i method_43235 getSeed + m (Ljm;Lavq;Lbsr;FFJ)V + m (Lwk;)V + m ()V +c afp net/minecraft/class_2767 net/minecraft/network/protocol/game/ClientboundSoundPacket + f Lyx; a field_47995 STREAM_CODEC + f F b field_33353 LOCATION_ACCURACY + f Ljm; c field_12661 sound + f Lavq; d field_12660 source + f I e field_12659 x + f I f field_12658 y + f I g field_12657 z + f F h field_12656 volume + f F i field_12662 pitch + f J j field_38820 seed + m (Labu;)V a method_11895 handle + m (Lwk;)V a method_55942 write + m ()Ljm; b method_11894 getSound + m ()Lavq; e method_11888 getSource + m ()D f method_11890 getX + m ()D g method_11889 getY + m ()D h method_11893 getZ + m ()F i method_11891 getVolume + m ()F j method_11892 getPitch + m ()J k method_43236 getSeed + m (Ljm;Lavq;DDDFFJ)V + m (Lwk;)V + m ()V +c afq net/minecraft/class_8588 net/minecraft/network/protocol/game/ClientboundStartConfigurationPacket + f Lafq; a field_47997 INSTANCE + f Lyx; b field_47998 STREAM_CODEC + m (Labu;)V a method_52272 handle + m ()V + m ()V +c afr net/minecraft/class_2770 net/minecraft/network/protocol/game/ClientboundStopSoundPacket + f Lyx; a field_47999 STREAM_CODEC + f I b field_33354 HAS_SOURCE + f I c field_33355 HAS_SOUND + f Lakr; d field_12676 name + f Lavq; e field_12677 source + m (Labu;)V a method_11905 handle + m (Lvw;)V a method_55944 write + m ()Lakr; b method_11904 getName + m ()Lavq; e method_11903 getSource + m (Lakr;Lavq;)V + m (Lvw;)V + m ()V +c afs net/minecraft/class_7439 net/minecraft/network/protocol/game/ClientboundSystemChatPacket + f Lyx; a field_48000 STREAM_CODEC + f Lwz; b comp_763 content + f Z c comp_906 overlay + m (Labu;)V a method_43631 handle + m ()Lwz; b comp_763 content + m ()Z e comp_906 overlay + m (Lwz;Z)V + m ()V +c aft net/minecraft/class_2772 net/minecraft/network/protocol/game/ClientboundTabListPacket + f Lyx; a field_48001 STREAM_CODEC + f Lwz; b comp_2282 header + f Lwz; c comp_2283 footer + m (Labu;)V a method_11907 handle + m ()Lwz; b comp_2282 header + m ()Lwz; e comp_2283 footer + m (Lwz;Lwz;)V + m ()V +c afu net/minecraft/class_2774 net/minecraft/network/protocol/game/ClientboundTagQueryPacket + f Lyx; a field_48002 STREAM_CODEC + f I b field_12691 transactionId + f Lub; c field_12690 tag + m (Labu;)V a method_11909 handle + m (Lvw;)V a method_55947 write + m ()I b method_11910 getTransactionId + m ()Lub; e method_11911 getTag + m (ILub;)V + m (Lvw;)V + m ()V +c afv net/minecraft/class_2775 net/minecraft/network/protocol/game/ClientboundTakeItemEntityPacket + f Lyx; a field_48003 STREAM_CODEC + f I b field_12694 itemId + f I c field_12693 playerId + f I d field_12692 amount + m (Labu;)V a method_11914 handle + m (Lvw;)V a method_55948 write + m ()I b method_11915 getItemId + m ()I e method_11912 getPlayerId + m ()I f method_11913 getAmount + m (III)V + m (Lvw;)V + m ()V +c afw net/minecraft/class_2777 net/minecraft/network/protocol/game/ClientboundTeleportEntityPacket + f Lyx; a field_48004 STREAM_CODEC + f I b field_12705 id + f D c field_12703 x + f D d field_12702 y + f D e field_12701 z + f B f field_12707 yRot + f B g field_12706 xRot + f Z h field_12704 onGround + m (Labu;)V a method_11922 handle + m (Lvw;)V a method_55949 write + m ()I b method_11916 getId + m ()D e method_11917 getX + m ()D f method_11919 getY + m ()D g method_11918 getZ + m ()B h method_11920 getyRot + m ()B i method_11921 getxRot + m ()Z j method_11923 isOnGround + m (Lbsr;)V + m (Lvw;)V + m ()V +c afx net/minecraft/class_8913 net/minecraft/network/protocol/game/ClientboundTickingStatePacket + f Lyx; a field_48005 STREAM_CODEC + f F b comp_2014 tickRate + f Z c comp_2015 isFrozen + m (Labu;)V a method_54665 handle + m (Lbrc;)Lafx; a method_54664 from + m (Lvw;)V a method_55950 write + m ()F b comp_2014 tickRate + m ()Z e comp_2015 isFrozen + m (Lvw;)V + m (FZ)V + m ()V +c afy net/minecraft/class_8914 net/minecraft/network/protocol/game/ClientboundTickingStepPacket + f Lyx; a field_48006 STREAM_CODEC + f I b comp_2016 tickSteps + m (Labu;)V a method_54667 handle + m (Lbrc;)Lafy; a method_54666 from + m (Lvw;)V a method_55951 write + m ()I b comp_2016 tickSteps + m (Lvw;)V + m (I)V + m ()V +c afz net/minecraft/class_2779 net/minecraft/network/protocol/game/ClientboundUpdateAdvancementsPacket + f Lyx; a field_48007 STREAM_CODEC + f Z b field_12718 reset + f Ljava/util/List; c field_12717 added + f Ljava/util/Set; d field_12715 removed + f Ljava/util/Map; e field_12716 progress + m (Labu;)V a method_11925 handle + m (Lvw;Lai;)V a method_34197 method_34197 + m (Lwk;)V a method_55952 write + m ()Ljava/util/List; b method_11928 getAdded + m ()Ljava/util/Set; e method_11926 getRemoved + m ()Ljava/util/Map; f method_11927 getProgress + m ()Z g method_11924 shouldReset + m (ZLjava/util/Collection;Ljava/util/Set;Ljava/util/Map;)V + m (Lwk;)V + m ()V +c aga net/minecraft/class_2781 net/minecraft/network/protocol/game/ClientboundUpdateAttributesPacket + f Lyx; a field_48008 STREAM_CODEC + f I b field_12719 entityId + f Ljava/util/List; c field_12720 attributes + m (Labu;)V a method_11936 handle + m ()I b method_11937 getEntityId + m ()Ljava/util/List; e method_11938 getValues + m (ILjava/util/Collection;)V + m (ILjava/util/List;)V + m ()V +c aga$a net/minecraft/class_2781$class_2782 net/minecraft/network/protocol/game/ClientboundUpdateAttributesPacket$AttributeSnapshot + f Lyx; a field_48009 MODIFIER_STREAM_CODEC + f Lyx; b field_48010 STREAM_CODEC + f Ljm; c comp_2177 attribute + f D d comp_2178 base + f Ljava/util/Collection; e comp_2179 modifiers + m ()Ljm; a comp_2177 attribute + m ()D b comp_2178 base + m ()Ljava/util/Collection; c comp_2179 modifiers + m (Ljm;DLjava/util/Collection;)V + m ()V +c agb net/minecraft/class_2783 net/minecraft/network/protocol/game/ClientboundUpdateMobEffectPacket + f Lyx; a field_48011 STREAM_CODEC + f I b field_33356 FLAG_AMBIENT + f I c field_33357 FLAG_VISIBLE + f I d field_33358 FLAG_SHOW_ICON + f I e field_47706 FLAG_BLEND + f I f field_12727 entityId + f Ljm; g field_12725 effect + f I h field_12729 effectAmplifier + f I i field_12726 effectDurationTicks + f B j field_12728 flags + m (Labu;)V a method_11948 handle + m (Lwk;)V a method_55954 write + m ()I b method_11943 getEntityId + m ()Ljm; e method_11946 getEffect + m ()I f method_11945 getEffectAmplifier + m ()I g method_11944 getEffectDurationTicks + m ()Z h method_11949 isEffectVisible + m ()Z i method_11950 isEffectAmbient + m ()Z j method_11942 effectShowsIcon + m ()Z k method_55629 shouldBlend + m (ILbrz;Z)V + m (Lwk;)V + m ()V +c agc net/minecraft/class_2788 net/minecraft/network/protocol/game/ClientboundUpdateRecipesPacket + f Lyx; a field_48012 STREAM_CODEC + f Ljava/util/List; b field_12751 recipes + m (Labu;)V a method_11997 handle + m (Lagc;)Ljava/util/List; a method_55955 method_55955 + m ()Ljava/util/List; b method_11998 getRecipes + m (Ljava/util/Collection;)V + m ()V +c agd net/minecraft/class_8589 net/minecraft/network/protocol/game/CommonPlayerSpawnInfo + f Ljm; a comp_1553 dimensionType + f Lakq; b comp_1554 dimension + f J c comp_1555 seed + f Ldct; d comp_1556 gameType + f Ldct; e comp_1557 previousGameType + f Z f comp_1558 isDebug + f Z g comp_1559 isFlat + f Ljava/util/Optional; h comp_1560 lastDeathLocation + f I i comp_1561 portalCooldown + m ()Ljm; a comp_1553 dimensionType + m (Lwk;)V a method_52274 write + m ()Lakq; b comp_1554 dimension + m ()J c comp_1555 seed + m ()Ldct; d comp_1556 gameType + m ()Ldct; e comp_1557 previousGameType + m ()Z f comp_1558 isDebug + m ()Z g comp_1559 isFlat + m ()Ljava/util/Optional; h comp_1560 lastDeathLocation + m ()I i comp_1561 portalCooldown + m (Lwk;)V + m (Ljm;Lakq;JLdct;Ldct;ZZLjava/util/Optional;I)V +c age net/minecraft/class_4617 net/minecraft/network/protocol/game/DebugEntityNameGenerator + f [Ljava/lang/String; a field_21050 NAMES_FIRST_PART + f [Ljava/lang/String; b field_21051 NAMES_SECOND_PART + m (Layw;[Ljava/lang/String;)Ljava/lang/String; a method_23266 getRandomString + m (Lbsr;)Ljava/lang/String; a method_36154 getEntityName + m (Ljava/util/UUID;)Ljava/lang/String; a method_23267 getEntityName + m (Ljava/util/UUID;)Layw; b method_23268 getRandom + m ()V + m ()V +c agf net/minecraft/class_4209 net/minecraft/network/protocol/game/DebugPackets + f Lorg/slf4j/Logger; a field_18961 LOGGER + m (Lakq;)Ljava/lang/String; a method_44135 method_44135 + m (Laqu;)V a method_22317 sendGameTestClearPacket + m (Laqu;Laaj;)V a method_22319 sendPacketToAllPlayers + m (Laqu;Lcet;)V a method_36155 method_36155 + m (Laqu;Ldcd;)V a method_19775 sendPoiPacketsForChunk + m (Laqu;Lexc;Lakq;)V a method_55630 method_55630 + m (Laqu;Ljava/lang/Object;)Ljava/lang/String; a method_36156 getShortDescription + m (Laqu;Ljava/util/Collection;)V a method_20575 sendRaids + m (Laqu;Ljd;)V a method_19776 sendPoiAddedPacket + m (Laqu;Ljd;Ljava/lang/String;II)V a method_22318 sendGameTestAddMarker + m (Lbtn;)V a method_19774 sendEntityBrain + m (Lbtn;J)Ljava/util/List; a method_36157 getMemoryDescriptions + m (Lcff;)V a method_23855 sendBeeInfo + m (Lckz;)V a method_54909 sendBreezeInfo + m (Ldcw;Lbtp;Lcan;)V a method_19469 sendGoalSelector + m (Ldcw;Lbtp;Leps;F)V a method_19470 sendPathFindingPacket + m (Ldcw;Ldyb;)V a method_33140 sendGameEventListenerInfo + m (Ldcw;Ljd;)V a method_19472 sendNeighborsUpdatePacket + m (Ldcw;Ljd;Ldtc;Ldqe;)V a method_23856 sendHiveInfo + m (Ldcw;Ljm;Lexc;)V a method_33139 sendGameEventInfo + m (Ldds;Lejz;)V a method_19474 sendStructurePacket + m (Ljava/lang/String;)Ljava/lang/String; a method_52275 method_52275 + m (Ljava/util/List;Lcca;)V a method_36162 method_36162 + m (Ljava/util/List;Ljava/lang/String;Lccp;Ljava/lang/Integer;)V a method_52276 method_52276 + m (Ljava/util/List;Ljava/util/UUID;Lit/unimi/dsi/fastutil/objects/Object2IntMap;)V a method_52277 method_52277 + m (Ljm;)Z a method_36159 method_36159 + m (Laqu;Ljd;)V b method_19777 sendPoiRemovedPacket + m (Laqu;Ljd;)V c method_19778 sendPoiTicketCountPacket + m (Laqu;Ljd;)V d method_24819 sendVillageSectionsPacket + m ()V + m ()V +c agg net/minecraft/class_9094 net/minecraft/network/protocol/game/GamePacketTypes + f Lzi; A field_48782 CLIENTBOUND_DEBUG_SAMPLE + f Lzi; B field_48013 CLIENTBOUND_DELETE_CHAT + f Lzi; C field_48014 CLIENTBOUND_DISGUISED_CHAT + f Lzi; D field_48015 CLIENTBOUND_ENTITY_EVENT + f Lzi; E field_48016 CLIENTBOUND_EXPLODE + f Lzi; F field_48017 CLIENTBOUND_FORGET_LEVEL_CHUNK + f Lzi; G field_48018 CLIENTBOUND_GAME_EVENT + f Lzi; H field_48019 CLIENTBOUND_HORSE_SCREEN_OPEN + f Lzi; I field_48020 CLIENTBOUND_HURT_ANIMATION + f Lzi; J field_48021 CLIENTBOUND_INITIALIZE_BORDER + f Lzi; K field_48022 CLIENTBOUND_LEVEL_CHUNK_WITH_LIGHT + f Lzi; L field_48023 CLIENTBOUND_LEVEL_EVENT + f Lzi; M field_48024 CLIENTBOUND_LEVEL_PARTICLES + f Lzi; N field_48025 CLIENTBOUND_LIGHT_UPDATE + f Lzi; O field_48026 CLIENTBOUND_LOGIN + f Lzi; P field_48027 CLIENTBOUND_MAP_ITEM_DATA + f Lzi; Q field_48028 CLIENTBOUND_MERCHANT_OFFERS + f Lzi; R field_48029 CLIENTBOUND_MOVE_ENTITY_POS + f Lzi; S field_48030 CLIENTBOUND_MOVE_ENTITY_POS_ROT + f Lzi; T field_48031 CLIENTBOUND_MOVE_ENTITY_ROT + f Lzi; U field_48032 CLIENTBOUND_MOVE_VEHICLE + f Lzi; V field_48033 CLIENTBOUND_OPEN_BOOK + f Lzi; W field_48034 CLIENTBOUND_OPEN_SCREEN + f Lzi; X field_48035 CLIENTBOUND_OPEN_SIGN_EDITOR + f Lzi; Y field_48036 CLIENTBOUND_PLACE_GHOST_RECIPE + f Lzi; Z field_48037 CLIENTBOUND_PLAYER_ABILITIES + f Lzi; aA field_48091 CLIENTBOUND_SET_DEFAULT_SPAWN_POSITION + f Lzi; aB field_48040 CLIENTBOUND_SET_DISPLAY_OBJECTIVE + f Lzi; aC field_48041 CLIENTBOUND_SET_ENTITY_DATA + f Lzi; aD field_48042 CLIENTBOUND_SET_ENTITY_LINK + f Lzi; aE field_48043 CLIENTBOUND_SET_ENTITY_MOTION + f Lzi; aF field_48044 CLIENTBOUND_SET_EQUIPMENT + f Lzi; aG field_48045 CLIENTBOUND_SET_EXPERIENCE + f Lzi; aH field_48046 CLIENTBOUND_SET_HEALTH + f Lzi; aI field_48047 CLIENTBOUND_SET_OBJECTIVE + f Lzi; aJ field_48048 CLIENTBOUND_SET_PASSENGERS + f Lzi; aK field_48049 CLIENTBOUND_SET_PLAYER_TEAM + f Lzi; aL field_48050 CLIENTBOUND_SET_SCORE + f Lzi; a field_48039 CLIENTBOUND_BUNDLE + f Lzi; aM field_48051 CLIENTBOUND_SET_SIMULATION_DISTANCE + f Lzi; aN field_48052 CLIENTBOUND_SET_SUBTITLE_TEXT + f Lzi; aO field_48053 CLIENTBOUND_SET_TIME + f Lzi; aP field_48054 CLIENTBOUND_SET_TITLE_TEXT + f Lzi; aQ field_48055 CLIENTBOUND_SET_TITLES_ANIMATION + f Lzi; aR field_48056 CLIENTBOUND_SOUND_ENTITY + f Lzi; aS field_48057 CLIENTBOUND_SOUND + f Lzi; aT field_48058 CLIENTBOUND_START_CONFIGURATION + f Lzi; aU field_48059 CLIENTBOUND_STOP_SOUND + f Lzi; aV field_48060 CLIENTBOUND_SYSTEM_CHAT + f Lzi; aW field_48061 CLIENTBOUND_TAB_LIST + f Lzi; aX field_48062 CLIENTBOUND_TAG_QUERY + f Lzi; aY field_48063 CLIENTBOUND_TAKE_ITEM_ENTITY + f Lzi; aZ field_48064 CLIENTBOUND_TELEPORT_ENTITY + f Lzi; aa field_48038 CLIENTBOUND_PLAYER_CHAT + f Lzi; ab field_48066 CLIENTBOUND_PLAYER_COMBAT_END + f Lzi; ac field_48067 CLIENTBOUND_PLAYER_COMBAT_ENTER + f Lzi; ad field_48068 CLIENTBOUND_PLAYER_COMBAT_KILL + f Lzi; ae field_48069 CLIENTBOUND_PLAYER_INFO_REMOVE + f Lzi; af field_48070 CLIENTBOUND_PLAYER_INFO_UPDATE + f Lzi; ag field_48071 CLIENTBOUND_PLAYER_LOOK_AT + f Lzi; ah field_48072 CLIENTBOUND_PLAYER_POSITION + f Lzi; ai field_48073 CLIENTBOUND_RECIPE + f Lzi; aj field_48074 CLIENTBOUND_REMOVE_ENTITIES + f Lzi; ak field_48075 CLIENTBOUND_REMOVE_MOB_EFFECT + f Lzi; al field_48076 CLIENTBOUND_RESPAWN + f Lzi; am field_48077 CLIENTBOUND_ROTATE_HEAD + f Lzi; an field_48078 CLIENTBOUND_SECTION_BLOCKS_UPDATE + f Lzi; ao field_48079 CLIENTBOUND_SELECT_ADVANCEMENTS_TAB + f Lzi; ap field_48080 CLIENTBOUND_SERVER_DATA + f Lzi; aq field_48081 CLIENTBOUND_SET_ACTION_BAR_TEXT + f Lzi; ar field_48082 CLIENTBOUND_SET_BORDER_CENTER + f Lzi; as field_48083 CLIENTBOUND_SET_BORDER_LERP_SIZE + f Lzi; at field_48084 CLIENTBOUND_SET_BORDER_SIZE + f Lzi; au field_48085 CLIENTBOUND_SET_BORDER_WARNING_DELAY + f Lzi; av field_48086 CLIENTBOUND_SET_BORDER_WARNING_DISTANCE + f Lzi; aw field_48087 CLIENTBOUND_SET_CAMERA + f Lzi; ax field_48088 CLIENTBOUND_SET_CARRIED_ITEM + f Lzi; ay field_48089 CLIENTBOUND_SET_CHUNK_CACHE_CENTER + f Lzi; az field_48090 CLIENTBOUND_SET_CHUNK_CACHE_RADIUS + f Lzi; bA field_48141 SERVERBOUND_LOCK_DIFFICULTY + f Lzi; bB field_48142 SERVERBOUND_MOVE_PLAYER_POS + f Lzi; bC field_48143 SERVERBOUND_MOVE_PLAYER_POS_ROT + f Lzi; bD field_48144 SERVERBOUND_MOVE_PLAYER_ROT + f Lzi; bE field_48093 SERVERBOUND_MOVE_PLAYER_STATUS_ONLY + f Lzi; bF field_48094 SERVERBOUND_MOVE_VEHICLE + f Lzi; bG field_48095 SERVERBOUND_PADDLE_BOAT + f Lzi; bH field_48096 SERVERBOUND_PICK_ITEM + f Lzi; bI field_48097 SERVERBOUND_PLACE_RECIPE + f Lzi; bJ field_48098 SERVERBOUND_PLAYER_ABILITIES + f Lzi; bK field_48099 SERVERBOUND_PLAYER_ACTION + f Lzi; bL field_48100 SERVERBOUND_PLAYER_COMMAND + f Lzi; b field_48092 CLIENTBOUND_BUNDLE_DELIMITER + f Lzi; bM field_48101 SERVERBOUND_PLAYER_INPUT + f Lzi; bN field_48102 SERVERBOUND_RECIPE_BOOK_CHANGE_SETTINGS + f Lzi; bO field_48103 SERVERBOUND_RECIPE_BOOK_SEEN_RECIPE + f Lzi; bP field_48104 SERVERBOUND_RENAME_ITEM + f Lzi; bQ field_48105 SERVERBOUND_SEEN_ADVANCEMENTS + f Lzi; bR field_48106 SERVERBOUND_SELECT_TRADE + f Lzi; bS field_48107 SERVERBOUND_SET_BEACON + f Lzi; bT field_48108 SERVERBOUND_SET_CARRIED_ITEM + f Lzi; bU field_48109 SERVERBOUND_SET_COMMAND_BLOCK + f Lzi; bV field_48110 SERVERBOUND_SET_COMMAND_MINECART + f Lzi; bW field_48111 SERVERBOUND_SET_CREATIVE_MODE_SLOT + f Lzi; bX field_48112 SERVERBOUND_SET_JIGSAW_BLOCK + f Lzi; bY field_48113 SERVERBOUND_SET_STRUCTURE_BLOCK + f Lzi; bZ field_48114 SERVERBOUND_SIGN_UPDATE + f Lzi; ba field_48065 CLIENTBOUND_UPDATE_ADVANCEMENTS + f Lzi; bb field_48119 CLIENTBOUND_UPDATE_ATTRIBUTES + f Lzi; bc field_48120 CLIENTBOUND_UPDATE_MOB_EFFECT + f Lzi; bd field_48121 CLIENTBOUND_UPDATE_RECIPES + f Lzi; be field_51341 CLIENTBOUND_PROJECTILE_POWER + f Lzi; bf field_48122 SERVERBOUND_ACCEPT_TELEPORTATION + f Lzi; bg field_48123 SERVERBOUND_BLOCK_ENTITY_TAG_QUERY + f Lzi; bh field_48124 SERVERBOUND_CHANGE_DIFFICULTY + f Lzi; bi field_48125 SERVERBOUND_CHAT_ACK + f Lzi; bj field_48126 SERVERBOUND_CHAT_COMMAND + f Lzi; bk field_50086 SERVERBOUND_CHAT_COMMAND_SIGNED + f Lzi; bl field_48127 SERVERBOUND_CHAT + f Lzi; bm field_48128 SERVERBOUND_CHAT_SESSION_UPDATE + f Lzi; bn field_48129 SERVERBOUND_CHUNK_BATCH_RECEIVED + f Lzi; bo field_48130 SERVERBOUND_CLIENT_COMMAND + f Lzi; bp field_48131 SERVERBOUND_COMMAND_SUGGESTION + f Lzi; bq field_48132 SERVERBOUND_CONFIGURATION_ACKNOWLEDGED + f Lzi; br field_48133 SERVERBOUND_CONTAINER_BUTTON_CLICK + f Lzi; bs field_48134 SERVERBOUND_CONTAINER_CLICK + f Lzi; bt field_48135 SERVERBOUND_CONTAINER_CLOSE + f Lzi; bu field_48136 SERVERBOUND_CONTAINER_SLOT_STATE_CHANGED + f Lzi; bv field_48783 SERVERBOUND_DEBUG_SAMPLE_SUBSCRIPTION + f Lzi; bw field_48137 SERVERBOUND_EDIT_BOOK + f Lzi; bx field_48138 SERVERBOUND_ENTITY_TAG_QUERY + f Lzi; by field_48139 SERVERBOUND_INTERACT + f Lzi; bz field_48140 SERVERBOUND_JIGSAW_GENERATE + f Lzi; c field_48145 CLIENTBOUND_ADD_ENTITY + f Lzi; ca field_48115 SERVERBOUND_SWING + f Lzi; cb field_48116 SERVERBOUND_TELEPORT_TO_ENTITY + f Lzi; cc field_48117 SERVERBOUND_USE_ITEM_ON + f Lzi; cd field_48118 SERVERBOUND_USE_ITEM + f Lzi; ce field_48146 CLIENTBOUND_RESET_SCORE + f Lzi; cf field_48147 CLIENTBOUND_TICKING_STATE + f Lzi; cg field_48148 CLIENTBOUND_TICKING_STEP + f Lzi; d field_48149 CLIENTBOUND_ADD_EXPERIENCE_ORB + f Lzi; e field_48150 CLIENTBOUND_ANIMATE + f Lzi; f field_48151 CLIENTBOUND_AWARD_STATS + f Lzi; g field_48152 CLIENTBOUND_BLOCK_CHANGED_ACK + f Lzi; h field_48153 CLIENTBOUND_BLOCK_DESTRUCTION + f Lzi; i field_48154 CLIENTBOUND_BLOCK_ENTITY_DATA + f Lzi; j field_48155 CLIENTBOUND_BLOCK_EVENT + f Lzi; k field_48156 CLIENTBOUND_BLOCK_UPDATE + f Lzi; l field_48157 CLIENTBOUND_BOSS_EVENT + f Lzi; m field_48158 CLIENTBOUND_CHANGE_DIFFICULTY + f Lzi; n field_48159 CLIENTBOUND_CHUNK_BATCH_FINISHED + f Lzi; o field_48160 CLIENTBOUND_CHUNK_BATCH_START + f Lzi; p field_48161 CLIENTBOUND_CHUNKS_BIOMES + f Lzi; q field_48162 CLIENTBOUND_CLEAR_TITLES + f Lzi; r field_48163 CLIENTBOUND_COMMAND_SUGGESTIONS + f Lzi; s field_48164 CLIENTBOUND_COMMANDS + f Lzi; t field_48165 CLIENTBOUND_CONTAINER_CLOSE + f Lzi; u field_48166 CLIENTBOUND_CONTAINER_SET_CONTENT + f Lzi; v field_48167 CLIENTBOUND_CONTAINER_SET_DATA + f Lzi; w field_48168 CLIENTBOUND_CONTAINER_SET_SLOT + f Lzi; x field_48169 CLIENTBOUND_COOLDOWN + f Lzi; y field_48170 CLIENTBOUND_CUSTOM_CHAT_COMPLETIONS + f Lzi; z field_48171 CLIENTBOUND_DAMAGE_EVENT + m (Ljava/lang/String;)Lzi; a method_55956 createClientbound + m (Ljava/lang/String;)Lzi; b method_55957 createServerbound + m ()V + m ()V +c agh net/minecraft/class_9095 net/minecraft/network/protocol/game/GameProtocols + f Lwh$a; a field_48172 SERVERBOUND_TEMPLATE + f Lwh$a; b field_48173 CLIENTBOUND_TEMPLATE + m (Lzl;)V a method_55958 method_55958 + m (Lzl;)V b method_55959 method_55959 + m ()V + m ()V +c agi net/minecraft/class_2792 net/minecraft/network/protocol/game/ServerGamePacketListener + m (Lagk;)V a method_12050 handleAcceptTeleportPacket + m (Lagl;)V a method_12072 handleBlockEntityTagQuery + m (Lagm;)V a method_19475 handleChangeDifficulty + m (Lagn;)V a method_44898 handleChatAck + m (Lago;)V a method_43667 handleChatCommand + m (Lagp;)V a method_58580 handleSignedChatCommand + m (Lagq;)V a method_12048 handleChat + m (Lagr;)V a method_46367 handleChatSessionUpdate + m (Lags;)V a method_52278 handleChunkBatchReceived + m (Lagt;)V a method_12068 handleClientCommand + m (Lagu;)V a method_12059 handleCustomCommandSuggestions + m (Lagv;)V a method_52279 handleConfigurationAcknowledged + m (Lagw;)V a method_12055 handleContainerButtonClick + m (Lagx;)V a method_12076 handleContainerClick + m (Lagy;)V a method_12054 handleContainerClose + m (Lagz;)V a method_54436 handleContainerSlotStateChanged + m (Laha;)V a method_56619 handleDebugSampleSubscription + m (Lahb;)V a method_12053 handleEditBook + m (Lahc;)V a method_12074 handleEntityTagQuery + m (Lahd;)V a method_12062 handleInteract + m (Lahe;)V a method_27273 handleJigsawGenerate + m (Lahf;)V a method_19476 handleLockDifficulty + m (Lahg;)V a method_12063 handleMovePlayer + m (Lahh;)V a method_12078 handleMoveVehicle + m (Lahi;)V a method_12064 handlePaddleBoat + m (Lahj;)V a method_12084 handlePickItem + m (Lahk;)V a method_12061 handlePlaceRecipe + m (Lahl;)V a method_12083 handlePlayerAbilities + m (Lahm;)V a method_12066 handlePlayerAction + m (Lahn;)V a method_12045 handlePlayerCommand + m (Laho;)V a method_12067 handlePlayerInput + m (Lahp;)V a method_30303 handleRecipeBookChangeSettingsPacket + m (Lahq;)V a method_12047 handleRecipeBookSeenRecipePacket + m (Lahr;)V a method_12060 handleRenameItem + m (Lahs;)V a method_12058 handleSeenAdvancements + m (Laht;)V a method_12080 handleSelectTrade + m (Lahu;)V a method_12057 handleSetBeaconPacket + m (Lahv;)V a method_12056 handleSetCarriedItem + m (Lahw;)V a method_12077 handleSetCommandBlock + m (Lahx;)V a method_12049 handleSetCommandMinecart + m (Lahy;)V a method_12070 handleSetCreativeModeSlot + m (Lahz;)V a method_16383 handleSetJigsawBlock + m (Laia;)V a method_12051 handleSetStructureBlock + m (Laib;)V a method_12071 handleSignUpdate + m (Laic;)V a method_12052 handleAnimate + m (Laid;)V a method_12073 handleTeleportToEntityPacket + m (Laie;)V a method_12046 handleUseItemOn + m (Laif;)V a method_12065 handleUseItem +c agj net/minecraft/class_6857 net/minecraft/network/protocol/game/ServerPacketListener + f Lorg/slf4j/Logger; a field_51479 LOGGER + m ()V +c agk net/minecraft/class_2793 net/minecraft/network/protocol/game/ServerboundAcceptTeleportationPacket + f Lyx; a field_48174 STREAM_CODEC + f I b field_12758 id + m (Lagi;)V a method_12085 handle + m (Lvw;)V a method_55960 write + m ()I b method_12086 getId + m (I)V + m (Lvw;)V + m ()V +c agl net/minecraft/class_2795 net/minecraft/network/protocol/game/ServerboundBlockEntityTagQueryPacket + f Lyx; a field_48175 STREAM_CODEC + f I b field_12762 transactionId + f Ljd; c field_12763 pos + m (Lagi;)V a method_12095 handle + m (Lvw;)V a method_55961 write + m ()I b method_12096 getTransactionId + m ()Ljd; e method_12094 getPos + m (ILjd;)V + m (Lvw;)V + m ()V +c agm net/minecraft/class_4210 net/minecraft/network/protocol/game/ServerboundChangeDifficultyPacket + f Lyx; a field_48176 STREAM_CODEC + f Lbqo; b field_18805 difficulty + m (Lagi;)V a method_19477 handle + m (Lvw;)V a method_55962 write + m ()Lbqo; b method_19478 getDifficulty + m (Lbqo;)V + m (Lvw;)V + m ()V +c agn net/minecraft/class_7640 net/minecraft/network/protocol/game/ServerboundChatAckPacket + f Lyx; a field_48177 STREAM_CODEC + f I b comp_1114 offset + m (Lagi;)V a method_44998 handle + m (Lvw;)V a method_55963 write + m ()I b comp_1114 offset + m (Lvw;)V + m (I)V + m ()V +c ago net/minecraft/class_7472 net/minecraft/network/protocol/game/ServerboundChatCommandPacket + f Lyx; a field_48178 STREAM_CODEC + f Ljava/lang/String; b comp_808 command + m (Lagi;)V a method_43897 handle + m (Lvw;)V a method_55964 write + m ()Ljava/lang/String; b comp_808 command + m (Lvw;)V + m (Ljava/lang/String;)V + m ()V +c agp net/minecraft/class_9449 net/minecraft/network/protocol/game/ServerboundChatCommandSignedPacket + f Lyx; a field_50087 STREAM_CODEC + f Ljava/lang/String; b comp_2532 command + f Ljava/time/Instant; c comp_2533 timeStamp + f J d comp_2534 salt + f Lfa; e comp_2535 argumentSignatures + f Lxg$b; f comp_2536 lastSeenMessages + m (Lagi;)V a method_58581 handle + m (Lvw;)V a method_58582 write + m ()Ljava/lang/String; b comp_2532 command + m ()Ljava/time/Instant; e comp_2533 timeStamp + m ()J f comp_2534 salt + m ()Lfa; g comp_2535 argumentSignatures + m ()Lxg$b; h comp_2536 lastSeenMessages + m (Lvw;)V + m (Ljava/lang/String;Ljava/time/Instant;JLfa;Lxg$b;)V + m ()V +c agq net/minecraft/class_2797 net/minecraft/network/protocol/game/ServerboundChatPacket + f Lyx; a field_48179 STREAM_CODEC + f Ljava/lang/String; b comp_945 message + f Ljava/time/Instant; c comp_946 timeStamp + f J d comp_947 salt + f Lxl; e comp_948 signature + f Lxg$b; f comp_970 lastSeenMessages + m (Lagi;)V a method_12115 handle + m (Lvw;)V a method_55965 write + m ()Ljava/lang/String; b comp_945 message + m ()Ljava/time/Instant; e comp_946 timeStamp + m ()J f comp_947 salt + m ()Lxl; g comp_948 signature + m ()Lxg$b; h comp_970 lastSeenMessages + m (Lvw;)V + m (Ljava/lang/String;Ljava/time/Instant;JLxl;Lxg$b;)V + m ()V +c agr net/minecraft/class_7861 net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket + f Lyx; a field_48182 STREAM_CODEC + f Lxq$a; b comp_1129 chatSession + m (Lagi;)V a method_46617 handle + m (Lvw;)V a method_55966 write + m ()Lxq$a; b comp_1129 chatSession + m (Lvw;)V + m (Lxq$a;)V + m ()V +c ags net/minecraft/class_8590 net/minecraft/network/protocol/game/ServerboundChunkBatchReceivedPacket + f Lyx; a field_48183 STREAM_CODEC + f F b comp_1730 desiredChunksPerTick + m (Lagi;)V a method_52281 handle + m (Lvw;)V a method_55967 write + m ()F b comp_1730 desiredChunksPerTick + m (Lvw;)V + m (F)V + m ()V +c agt net/minecraft/class_2799 net/minecraft/network/protocol/game/ServerboundClientCommandPacket + f Lyx; a field_48184 STREAM_CODEC + f Lagt$a; b field_12773 action + m (Lagi;)V a method_12120 handle + m (Lvw;)V a method_55968 write + m ()Lagt$a; b method_12119 getAction + m (Lagt$a;)V + m (Lvw;)V + m ()V +c agt$a net/minecraft/class_2799$class_2800 net/minecraft/network/protocol/game/ServerboundClientCommandPacket$Action + f Lagt$a; a field_12774 PERFORM_RESPAWN + f Lagt$a; b field_12775 REQUEST_STATS + f [Lagt$a; c field_12776 $VALUES + m ()[Lagt$a; a method_36955 $values + m (Ljava/lang/String;I)V + m ()V +c agu net/minecraft/class_2805 net/minecraft/network/protocol/game/ServerboundCommandSuggestionPacket + f Lyx; a field_48185 STREAM_CODEC + f I b field_12784 id + f Ljava/lang/String; c field_12785 command + m (Lagi;)V a method_12147 handle + m (Lvw;)V a method_55969 write + m ()I b method_12149 getId + m ()Ljava/lang/String; e method_12148 getCommand + m (ILjava/lang/String;)V + m (Lvw;)V + m ()V +c agv net/minecraft/class_8591 net/minecraft/network/protocol/game/ServerboundConfigurationAcknowledgedPacket + f Lagv; a field_48186 INSTANCE + f Lyx; b field_48187 STREAM_CODEC + m (Lagi;)V a method_52282 handle + m ()V + m ()V +c agw net/minecraft/class_2811 net/minecraft/network/protocol/game/ServerboundContainerButtonClickPacket + f Lyx; a field_48188 STREAM_CODEC + f I b comp_2649 containerId + f I c comp_2650 buttonId + m (Lagi;)V a method_12185 handle + m ()I b comp_2649 containerId + m ()I e comp_2650 buttonId + m (II)V + m ()V +c agx net/minecraft/class_2813 net/minecraft/network/protocol/game/ServerboundContainerClickPacket + f Lyx; a field_48189 STREAM_CODEC + f I b field_34045 MAX_SLOT_COUNT + f Lyx; c field_48190 SLOTS_STREAM_CODEC + f I d field_12819 containerId + f I e field_34037 stateId + f I f field_12818 slotNum + f I g field_12817 buttonNum + f Lcqe; h field_12815 clickType + f Lcuq; i field_12816 carriedItem + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; j field_29540 changedSlots + m (Lagi;)V a method_12191 handle + m (Lwk;)V a method_55971 write + m ()I b method_12194 getContainerId + m ()I e method_12192 getSlotNum + m ()I f method_12193 getButtonNum + m ()Lcuq; g method_12190 getCarriedItem + m ()Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; h method_34678 getChangedSlots + m ()Lcqe; i method_12195 getClickType + m ()I j method_37440 getStateId + m (IIIILcqe;Lcuq;Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;)V + m (Lwk;)V + m ()V +c agy net/minecraft/class_2815 net/minecraft/network/protocol/game/ServerboundContainerClosePacket + f Lyx; a field_48191 STREAM_CODEC + f I b field_12827 containerId + m (Lagi;)V a method_12198 handle + m (Lvw;)V a method_55972 write + m ()I b method_36168 getContainerId + m (I)V + m (Lvw;)V + m ()V +c agz net/minecraft/class_8875 net/minecraft/network/protocol/game/ServerboundContainerSlotStateChangedPacket + f Lyx; a field_48192 STREAM_CODEC + f I b comp_1998 slotId + f I c comp_1999 containerId + f Z d comp_2000 newState + m (Lagi;)V a method_54437 handle + m (Lvw;)V a method_55973 write + m ()I b comp_1998 slotId + m ()I e comp_1999 containerId + m ()Z f comp_2000 newState + m (Lvw;)V + m (IIZ)V + m ()V +c aha net/minecraft/class_9179 net/minecraft/network/protocol/game/ServerboundDebugSampleSubscriptionPacket + f Lyx; a field_48784 STREAM_CODEC + f Lbls; b comp_2284 sampleType + m (Lagi;)V a method_56620 handle + m (Lvw;)V a method_56621 write + m ()Lbls; b comp_2284 sampleType + m (Lvw;)V + m (Lbls;)V + m ()V +c ahb net/minecraft/class_2820 net/minecraft/network/protocol/game/ServerboundEditBookPacket + f I a field_34038 MAX_BYTES_PER_CHAR + f Lyx; b field_48193 STREAM_CODEC + f I c comp_2285 slot + f Ljava/util/List; d comp_2286 pages + f Ljava/util/Optional; e comp_2287 title + f I f field_34039 TITLE_MAX_CHARS + f I g field_34040 PAGE_MAX_CHARS + f I h field_34046 MAX_PAGES_COUNT + m (Lagi;)V a method_12236 handle + m ()I b comp_2285 slot + m ()Ljava/util/List; e comp_2286 pages + m ()Ljava/util/Optional; f comp_2287 title + m (ILjava/util/List;Ljava/util/Optional;)V + m ()V +c ahc net/minecraft/class_2822 net/minecraft/network/protocol/game/ServerboundEntityTagQueryPacket + f Lyx; a field_48194 STREAM_CODEC + f I b field_12868 transactionId + f I c field_12867 entityId + m (Lagi;)V a method_12243 handle + m (Lvw;)V a method_55975 write + m ()I b method_12245 getTransactionId + m ()I e method_12244 getEntityId + m (II)V + m (Lvw;)V + m ()V +c ahd net/minecraft/class_2824 net/minecraft/network/protocol/game/ServerboundInteractPacket + f Lyx; a field_48195 STREAM_CODEC + f I b field_12870 entityId + f Lahd$a; c field_12871 action + f Z d field_25660 usingSecondaryAction + f Lahd$a; e field_29170 ATTACK_ACTION + m (Lagi;)V a method_12251 handle + m (Lahd$c;)V a method_34209 dispatch + m (Laqu;)Lbsr; a method_12248 getTarget + m (Lbsr;Z)Lahd; a method_34206 createAttackPacket + m (Lbsr;ZLbqq;)Lahd; a method_34207 createInteractionPacket + m (Lbsr;ZLbqq;Lexc;)Lahd; a method_34208 createInteractionPacket + m (Lvw;)V a method_55976 write + m ()Z b method_30007 isUsingSecondaryAction + m (IZLahd$a;)V + m (Lvw;)V + m ()V +c ahd$1 net/minecraft/class_2824$1 net/minecraft/network/protocol/game/ServerboundInteractPacket$1 + m ()V +c ahd$a net/minecraft/class_2824$class_5906 net/minecraft/network/protocol/game/ServerboundInteractPacket$Action + m ()Lahd$b; a method_34211 getType + m (Lahd$c;)V a method_34213 dispatch + m (Lvw;)V a method_34212 write +c ahd$b net/minecraft/class_2824$class_5907 net/minecraft/network/protocol/game/ServerboundInteractPacket$ActionType + f Lahd$b; a field_29171 INTERACT + f Lahd$b; b field_29172 ATTACK + f Lahd$b; c field_29173 INTERACT_AT + f Ljava/util/function/Function; d field_29174 reader + f [Lahd$b; e field_29175 $VALUES + m ()[Lahd$b; a method_36956 $values + m (Lvw;)Lahd$a; a method_34216 method_34216 + m (Ljava/lang/String;ILjava/util/function/Function;)V + m ()V +c ahd$c net/minecraft/class_2824$class_5908 net/minecraft/network/protocol/game/ServerboundInteractPacket$Handler + m ()V a method_34218 onAttack + m (Lbqq;)V a method_34219 onInteraction + m (Lbqq;Lexc;)V a method_34220 onInteraction +c ahd$d net/minecraft/class_2824$class_5909 net/minecraft/network/protocol/game/ServerboundInteractPacket$InteractionAction + f Lbqq; a field_29176 hand + m (Lbqq;)V + m (Lvw;)V +c ahd$e net/minecraft/class_2824$class_5910 net/minecraft/network/protocol/game/ServerboundInteractPacket$InteractionAtLocationAction + f Lbqq; a field_29177 hand + f Lexc; b field_29178 location + m (Lbqq;Lexc;)V + m (Lvw;)V +c ahe net/minecraft/class_5194 net/minecraft/network/protocol/game/ServerboundJigsawGeneratePacket + f Lyx; a field_48196 STREAM_CODEC + f Ljd; b field_24054 pos + f I c field_24055 levels + f Z d field_25323 keepJigsaws + m (Lagi;)V a method_27274 handle + m (Lvw;)V a method_55977 write + m ()Ljd; b method_27275 getPos + m ()I e method_27276 levels + m ()Z f method_29446 keepJigsaws + m (Ljd;IZ)V + m (Lvw;)V + m ()V +c ahf net/minecraft/class_4211 net/minecraft/network/protocol/game/ServerboundLockDifficultyPacket + f Lyx; a field_48197 STREAM_CODEC + f Z b field_18806 locked + m (Lagi;)V a method_19484 handle + m (Lvw;)V a method_55978 write + m ()Z b method_19485 isLocked + m (Z)V + m (Lvw;)V + m ()V +c ahg net/minecraft/class_2828 net/minecraft/network/protocol/game/ServerboundMovePlayerPacket + f D a field_12889 x + f D b field_12886 y + f D c field_12884 z + f F d field_12887 yRot + f F e field_12885 xRot + f Z f field_29179 onGround + f Z g field_12890 hasPos + f Z h field_12888 hasRot + m (D)D a method_12269 getX + m (F)F a method_12271 getYRot + m (Lagi;)V a method_12272 handle + m ()Z b method_12273 isOnGround + m (D)D b method_12268 getY + m (F)F b method_12270 getXRot + m (D)D c method_12274 getZ + m ()Z e method_36171 hasPosition + m ()Z f method_36172 hasRotation + m (DDDFFZZZ)V +c ahg$a net/minecraft/class_2828$class_2829 net/minecraft/network/protocol/game/ServerboundMovePlayerPacket$Pos + f Lyx; i field_48198 STREAM_CODEC + m (Lvw;)Lahg$a; a method_34221 read + m (Lvw;)V b method_55979 write + m (DDDZ)V + m ()V +c ahg$b net/minecraft/class_2828$class_2830 net/minecraft/network/protocol/game/ServerboundMovePlayerPacket$PosRot + f Lyx; i field_48199 STREAM_CODEC + m (Lvw;)Lahg$b; a method_34222 read + m (Lvw;)V b method_55980 write + m (DDDFFZ)V + m ()V +c ahg$c net/minecraft/class_2828$class_2831 net/minecraft/network/protocol/game/ServerboundMovePlayerPacket$Rot + f Lyx; i field_48200 STREAM_CODEC + m (Lvw;)Lahg$c; a method_34223 read + m (Lvw;)V b method_55981 write + m (FFZ)V + m ()V +c ahg$d net/minecraft/class_2828$class_5911 net/minecraft/network/protocol/game/ServerboundMovePlayerPacket$StatusOnly + f Lyx; i field_48201 STREAM_CODEC + m (Lvw;)Lahg$d; a method_34224 read + m (Lvw;)V b method_55982 write + m (Z)V + m ()V +c ahh net/minecraft/class_2833 net/minecraft/network/protocol/game/ServerboundMoveVehiclePacket + f Lyx; a field_48202 STREAM_CODEC + f D b field_12899 x + f D c field_12897 y + f D d field_12895 z + f F e field_12898 yRot + f F f field_12896 xRot + m (Lagi;)V a method_12278 handle + m (Lvw;)V a method_55983 write + m ()D b method_12279 getX + m ()D e method_12280 getY + m ()D f method_12276 getZ + m ()F g method_12281 getYRot + m ()F h method_12277 getXRot + m (Lbsr;)V + m (Lvw;)V + m ()V +c ahi net/minecraft/class_2836 net/minecraft/network/protocol/game/ServerboundPaddleBoatPacket + f Lyx; a field_48203 STREAM_CODEC + f Z b field_12907 left + f Z c field_12906 right + m (Lagi;)V a method_12283 handle + m (Lvw;)V a method_55984 write + m ()Z b method_12284 getLeft + m ()Z e method_12285 getRight + m (ZZ)V + m (Lvw;)V + m ()V +c ahj net/minecraft/class_2838 net/minecraft/network/protocol/game/ServerboundPickItemPacket + f Lyx; a field_48204 STREAM_CODEC + f I b field_12908 slot + m (Lagi;)V a method_12292 handle + m (Lvw;)V a method_55985 write + m ()I b method_12293 getSlot + m (I)V + m (Lvw;)V + m ()V +c ahk net/minecraft/class_2840 net/minecraft/network/protocol/game/ServerboundPlaceRecipePacket + f Lyx; a field_48205 STREAM_CODEC + f I b field_12933 containerId + f Lakr; c field_12931 recipe + f Z d field_12932 shiftDown + m (Lagi;)V a method_12317 handle + m (Lvw;)V a method_55986 write + m ()I b method_12318 getContainerId + m ()Lakr; e method_12320 getRecipe + m ()Z f method_12319 isShiftDown + m (ILczb;Z)V + m (Lvw;)V + m ()V +c ahl net/minecraft/class_2842 net/minecraft/network/protocol/game/ServerboundPlayerAbilitiesPacket + f Lyx; a field_48206 STREAM_CODEC + f I b field_33362 FLAG_FLYING + f Z c field_12948 isFlying + m (Lagi;)V a method_12339 handle + m (Lvw;)V a method_55987 write + m ()Z b method_12346 isFlying + m (Lcmu;)V + m (Lvw;)V + m ()V +c ahm net/minecraft/class_2846 net/minecraft/network/protocol/game/ServerboundPlayerActionPacket + f Lyx; a field_48207 STREAM_CODEC + f Ljd; b field_12967 pos + f Lji; c field_12965 direction + f Lahm$a; d field_12966 action + f I e field_38048 sequence + m (Lagi;)V a method_12361 handle + m (Lvw;)V a method_55988 write + m ()Ljd; b method_12362 getPos + m ()Lji; e method_12360 getDirection + m ()Lahm$a; f method_12363 getAction + m ()I g method_42079 getSequence + m (Lahm$a;Ljd;Lji;I)V + m (Lahm$a;Ljd;Lji;)V + m (Lvw;)V + m ()V +c ahm$a net/minecraft/class_2846$class_2847 net/minecraft/network/protocol/game/ServerboundPlayerActionPacket$Action + f Lahm$a; a field_12968 START_DESTROY_BLOCK + f Lahm$a; b field_12971 ABORT_DESTROY_BLOCK + f Lahm$a; c field_12973 STOP_DESTROY_BLOCK + f Lahm$a; d field_12970 DROP_ALL_ITEMS + f Lahm$a; e field_12975 DROP_ITEM + f Lahm$a; f field_12974 RELEASE_USE_ITEM + f Lahm$a; g field_12969 SWAP_ITEM_WITH_OFFHAND + f [Lahm$a; h field_12972 $VALUES + m ()[Lahm$a; a method_36957 $values + m (Ljava/lang/String;I)V + m ()V +c ahn net/minecraft/class_2848 net/minecraft/network/protocol/game/ServerboundPlayerCommandPacket + f Lyx; a field_48208 STREAM_CODEC + f I b field_12977 id + f Lahn$a; c field_12978 action + f I d field_12976 data + m (Lagi;)V a method_12364 handle + m (Lvw;)V a method_55989 write + m ()I b method_36173 getId + m ()Lahn$a; e method_12365 getAction + m ()I f method_12366 getData + m (Lbsr;Lahn$a;)V + m (Lbsr;Lahn$a;I)V + m (Lvw;)V + m ()V +c ahn$a net/minecraft/class_2848$class_2849 net/minecraft/network/protocol/game/ServerboundPlayerCommandPacket$Action + f Lahn$a; a field_12979 PRESS_SHIFT_KEY + f Lahn$a; b field_12984 RELEASE_SHIFT_KEY + f Lahn$a; c field_12986 STOP_SLEEPING + f Lahn$a; d field_12981 START_SPRINTING + f Lahn$a; e field_12985 STOP_SPRINTING + f Lahn$a; f field_12987 START_RIDING_JUMP + f Lahn$a; g field_12980 STOP_RIDING_JUMP + f Lahn$a; h field_12988 OPEN_INVENTORY + f Lahn$a; i field_12982 START_FALL_FLYING + f [Lahn$a; j field_12983 $VALUES + m ()[Lahn$a; a method_36958 $values + m (Ljava/lang/String;I)V + m ()V +c aho net/minecraft/class_2851 net/minecraft/network/protocol/game/ServerboundPlayerInputPacket + f Lyx; a field_48209 STREAM_CODEC + f I b field_33363 FLAG_JUMPING + f I c field_33364 FLAG_SHIFT_KEY_DOWN + f F d field_12995 xxa + f F e field_12994 zza + f Z f field_12997 isJumping + f Z g field_12996 isShiftKeyDown + m (Lagi;)V a method_12369 handle + m (Lvw;)V a method_55990 write + m ()F b method_12372 getXxa + m ()F e method_12373 getZza + m ()Z f method_12371 isJumping + m ()Z g method_12370 isShiftKeyDown + m (FFZZ)V + m (Lvw;)V + m ()V +c ahp net/minecraft/class_5427 net/minecraft/network/protocol/game/ServerboundRecipeBookChangeSettingsPacket + f Lyx; a field_48210 STREAM_CODEC + f Lcrj; b field_25798 bookType + f Z c field_25799 isOpen + f Z d field_25800 isFiltering + m (Lagi;)V a method_30304 handle + m (Lvw;)V a method_55991 write + m ()Lcrj; b method_30305 getBookType + m ()Z e method_30306 isOpen + m ()Z f method_30307 isFiltering + m (Lcrj;ZZ)V + m (Lvw;)V + m ()V +c ahq net/minecraft/class_2853 net/minecraft/network/protocol/game/ServerboundRecipeBookSeenRecipePacket + f Lyx; a field_48211 STREAM_CODEC + f Lakr; b field_13004 recipe + m (Lagi;)V a method_12400 handle + m (Lvw;)V a method_55992 write + m ()Lakr; b method_12406 getRecipe + m (Lczb;)V + m (Lvw;)V + m ()V +c ahr net/minecraft/class_2855 net/minecraft/network/protocol/game/ServerboundRenameItemPacket + f Lyx; a field_48212 STREAM_CODEC + f Ljava/lang/String; b field_13013 name + m (Lagi;)V a method_12408 handle + m (Lvw;)V a method_55993 write + m ()Ljava/lang/String; b method_12407 getName + m (Ljava/lang/String;)V + m (Lvw;)V + m ()V +c ahs net/minecraft/class_2859 net/minecraft/network/protocol/game/ServerboundSeenAdvancementsPacket + f Lyx; a field_48213 STREAM_CODEC + f Lahs$a; b field_13021 action + f Lakr; c field_13020 tab + m (Lag;)Lahs; a method_12418 openedTab + m (Lagi;)V a method_12417 handle + m (Lvw;)V a method_55994 write + m ()Lahs; b method_12414 closedScreen + m ()Lahs$a; e method_12415 getAction + m ()Lakr; f method_12416 getTab + m (Lahs$a;Lakr;)V + m (Lvw;)V + m ()V +c ahs$a net/minecraft/class_2859$class_2860 net/minecraft/network/protocol/game/ServerboundSeenAdvancementsPacket$Action + f Lahs$a; a field_13024 OPENED_TAB + f Lahs$a; b field_13023 CLOSED_SCREEN + f [Lahs$a; c field_13022 $VALUES + m ()[Lahs$a; a method_36962 $values + m (Ljava/lang/String;I)V + m ()V +c aht net/minecraft/class_2863 net/minecraft/network/protocol/game/ServerboundSelectTradePacket + f Lyx; a field_48214 STREAM_CODEC + f I b field_13036 item + m (Lagi;)V a method_12430 handle + m (Lvw;)V a method_55995 write + m ()I b method_12431 getItem + m (I)V + m (Lvw;)V + m ()V +c ahu net/minecraft/class_2866 net/minecraft/network/protocol/game/ServerboundSetBeaconPacket + f Lyx; a field_48215 STREAM_CODEC + f Ljava/util/Optional; b comp_2180 primary + f Ljava/util/Optional; c comp_2181 secondary + m (Lagi;)V a method_12434 handle + m ()Ljava/util/Optional; b comp_2180 primary + m ()Ljava/util/Optional; e comp_2181 secondary + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ahv net/minecraft/class_2868 net/minecraft/network/protocol/game/ServerboundSetCarriedItemPacket + f Lyx; a field_48216 STREAM_CODEC + f I b field_13052 slot + m (Lagi;)V a method_12441 handle + m (Lvw;)V a method_55996 write + m ()I b method_12442 getSlot + m (I)V + m (Lvw;)V + m ()V +c ahw net/minecraft/class_2870 net/minecraft/network/protocol/game/ServerboundSetCommandBlockPacket + f Lyx; a field_48217 STREAM_CODEC + f I b field_33365 FLAG_TRACK_OUTPUT + f I c field_33366 FLAG_CONDITIONAL + f I d field_33367 FLAG_AUTOMATIC + f Ljd; e field_13065 pos + f Ljava/lang/String; f field_13064 command + f Z g field_13063 trackOutput + f Z h field_13062 conditional + f Z i field_13061 automatic + f Ldqr$a; j field_13060 mode + m (Lagi;)V a method_12469 handle + m (Lvw;)V a method_55997 write + m ()Ljd; b method_12473 getPos + m ()Ljava/lang/String; e method_12470 getCommand + m ()Z f method_12472 isTrackOutput + m ()Z g method_12471 isConditional + m ()Z h method_12474 isAutomatic + m ()Ldqr$a; i method_12468 getMode + m (Ljd;Ljava/lang/String;Ldqr$a;ZZZ)V + m (Lvw;)V + m ()V +c ahx net/minecraft/class_2871 net/minecraft/network/protocol/game/ServerboundSetCommandMinecartPacket + f Lyx; a field_48218 STREAM_CODEC + f I b field_13067 entity + f Ljava/lang/String; c field_13068 command + f Z d field_13066 trackOutput + m (Lagi;)V a method_12477 handle + m (Ldcw;)Ldbx; a method_12476 getCommandBlock + m (Lvw;)V a method_55998 write + m ()Ljava/lang/String; b method_12475 getCommand + m ()Z e method_12478 isTrackOutput + m (ILjava/lang/String;Z)V + m (Lvw;)V + m ()V +c ahy net/minecraft/class_2873 net/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket + f Lyx; a field_48219 STREAM_CODEC + f S b comp_2609 slotNum + f Lcuq; c comp_2610 itemStack + m (Lagi;)V a method_12480 handle + m ()S b comp_2609 slotNum + m ()Lcuq; e comp_2610 itemStack + m (ILcuq;)V + m (SLcuq;)V + m ()V +c ahz net/minecraft/class_3753 net/minecraft/network/protocol/game/ServerboundSetJigsawBlockPacket + f Lyx; a field_48220 STREAM_CODEC + f Ljd; b field_16565 pos + f Lakr; c field_16563 name + f Lakr; d field_16566 target + f Lakr; e field_23401 pool + f Ljava/lang/String; f field_16564 finalState + f Ldri$a; g field_23402 joint + f I h field_46917 selectionPriority + f I i field_46918 placementPriority + m (Lagi;)V a method_16392 handle + m (Lvw;)V a method_56000 write + m ()Ljd; b method_16396 getPos + m ()Lakr; e method_16395 getName + m ()Lakr; f method_16394 getTarget + m ()Lakr; g method_26435 getPool + m ()Ljava/lang/String; h method_16393 getFinalState + m ()Ldri$a; i method_26436 getJoint + m ()I j method_54668 getSelectionPriority + m ()I k method_54669 getPlacementPriority + m (Ljd;Lakr;Lakr;Lakr;Ljava/lang/String;Ldri$a;II)V + m (Lvw;)V + m ()V +c aia net/minecraft/class_2875 net/minecraft/network/protocol/game/ServerboundSetStructureBlockPacket + f Lyx; a field_48221 STREAM_CODEC + f I b field_33368 FLAG_IGNORE_ENTITIES + f I c field_33369 FLAG_SHOW_AIR + f I d field_33370 FLAG_SHOW_BOUNDING_BOX + f Ljd; e field_13093 pos + f Ldrx$a; f field_13082 updateType + f Ldum; g field_13084 mode + f Ljava/lang/String; h field_13080 name + f Ljd; i field_13091 offset + f Lkh; j field_13083 size + f Ldkv; k field_13081 mirror + f Ldmm; l field_13088 rotation + f Ljava/lang/String; m field_13085 data + f Z n field_13089 ignoreEntities + f Z o field_13087 showAir + f Z p field_13086 showBoundingBox + f F q field_13090 integrity + f J r field_13092 seed + m (Lagi;)V a method_12495 handle + m (Lvw;)V a method_56001 write + m ()Ljd; b method_12499 getPos + m ()Ldrx$a; e method_12500 getUpdateType + m ()Ldum; f method_12504 getMode + m ()Ljava/lang/String; g method_12502 getName + m ()Ljd; h method_12496 getOffset + m ()Lkh; i method_12492 getSize + m ()Ldkv; j method_12493 getMirror + m ()Ldmm; k method_12498 getRotation + m ()Ljava/lang/String; l method_12501 getData + m ()Z m method_12506 isIgnoreEntities + m ()Z n method_12503 isShowAir + m ()Z o method_12505 isShowBoundingBox + m ()F p method_12494 getIntegrity + m ()J q method_12497 getSeed + m (Ljd;Ldrx$a;Ldum;Ljava/lang/String;Ljd;Lkh;Ldkv;Ldmm;Ljava/lang/String;ZZZFJ)V + m (Lvw;)V + m ()V +c aib net/minecraft/class_2877 net/minecraft/network/protocol/game/ServerboundSignUpdatePacket + f Lyx; a field_48222 STREAM_CODEC + f I b field_33371 MAX_STRING_LENGTH + f Ljd; c field_13101 pos + f [Ljava/lang/String; d field_13100 lines + f Z e field_43153 isFrontText + m (Lagi;)V a method_12509 handle + m (Lvw;)V a method_56002 write + m ()Ljd; b method_12510 getPos + m ()Z e method_49751 isFrontText + m ()[Ljava/lang/String; f method_12508 getLines + m (Ljd;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + m (Lvw;)V + m ()V +c aic net/minecraft/class_2879 net/minecraft/network/protocol/game/ServerboundSwingPacket + f Lyx; a field_48223 STREAM_CODEC + f Lbqq; b field_13102 hand + m (Lagi;)V a method_12511 handle + m (Lvw;)V a method_56003 write + m ()Lbqq; b method_12512 getHand + m (Lbqq;)V + m (Lvw;)V + m ()V +c aid net/minecraft/class_2884 net/minecraft/network/protocol/game/ServerboundTeleportToEntityPacket + f Lyx; a field_48224 STREAM_CODEC + f Ljava/util/UUID; b field_13129 uuid + m (Lagi;)V a method_12542 handle + m (Laqu;)Lbsr; a method_12541 getEntity + m (Lvw;)V a method_56004 write + m (Ljava/util/UUID;)V + m (Lvw;)V + m ()V +c aie net/minecraft/class_2885 net/minecraft/network/protocol/game/ServerboundUseItemOnPacket + f Lyx; a field_48225 STREAM_CODEC + f Lewy; b field_17602 blockHit + f Lbqq; c field_13134 hand + f I d field_38049 sequence + m (Lagi;)V a method_12547 handle + m (Lvw;)V a method_56005 write + m ()Lbqq; b method_12546 getHand + m ()Lewy; e method_12543 getHitResult + m ()I f method_42080 getSequence + m (Lbqq;Lewy;I)V + m (Lvw;)V + m ()V +c aif net/minecraft/class_2886 net/minecraft/network/protocol/game/ServerboundUseItemPacket + f Lyx; a field_48226 STREAM_CODEC + f Lbqq; b field_13136 hand + f I c field_38050 sequence + f F d field_51930 yRot + f F e field_51931 xRot + m (Lagi;)V a method_12550 handle + m (Lvw;)V a method_56006 write + m ()Lbqq; b method_12551 getHand + m ()I e method_42081 getSequence + m ()F f method_60586 getYRot + m ()F g method_60587 getXRot + m (Lbqq;IFF)V + m (Lvw;)V + m ()V +c aig net/minecraft/class_7422 net/minecraft/network/protocol/game/VecDeltaCodec + f D a field_39015 TRUNCATION_STEPS + f Lexc; b field_39016 base + m ()Lexc; a method_60933 getBase + m (D)J a method_43487 encode + m (J)D a method_43488 decode + m (JJJ)Lexc; a method_43489 decode + m (Lexc;)J a method_43490 encodeX + m (Lexc;)J b method_43491 encodeY + m (Lexc;)J c method_43492 encodeZ + m (Lexc;)Lexc; d method_43493 delta + m (Lexc;)V e method_43494 setBase + m ()V +c aih net/minecraft/class_6314 net/minecraft/network/protocol/game/package-info +c aii net/minecraft/class_8592 net/minecraft/network/protocol/handshake/ClientIntent + f Laii; a field_44974 STATUS + f Laii; b field_44975 LOGIN + f Laii; c field_48227 TRANSFER + f I d field_44976 STATUS_ID + f I e field_44977 LOGIN_ID + f I f field_48228 TRANSFER_ID + f [Laii; g field_44978 $VALUES + m ()I a method_52283 id + m (I)Laii; a method_52284 byId + m ()[Laii; b method_52286 $values + m (Ljava/lang/String;I)V + m ()V +c aij net/minecraft/class_2889 net/minecraft/network/protocol/handshake/ClientIntentionPacket + f Lyx; a field_48229 STREAM_CODEC + f I b comp_1563 protocolVersion + f Ljava/lang/String; c comp_1564 hostName + f I d comp_1565 port + f Laii; e comp_1566 intention + f I f field_33372 MAX_HOST_LENGTH + m (Laim;)V a method_12575 handle + m (Lvw;)V a method_56007 write + m ()I b comp_1563 protocolVersion + m ()Ljava/lang/String; e comp_1564 hostName + m ()I f comp_1565 port + m ()Laii; g comp_1566 intention + m (ILjava/lang/String;ILaii;)V + m (Lvw;)V + m ()V +c aik net/minecraft/class_9096 net/minecraft/network/protocol/handshake/HandshakePacketTypes + f Lzi; a field_48230 CLIENT_INTENTION + m (Ljava/lang/String;)Lzi; a method_56008 createServerbound + m ()V + m ()V +c ail net/minecraft/class_9097 net/minecraft/network/protocol/handshake/HandshakeProtocols + f Lwh$a; a field_52197 SERVERBOUND_TEMPLATE + f Lwh; b field_48231 SERVERBOUND + m (Lzl;)V a method_56009 method_56009 + m ()V + m ()V +c aim net/minecraft/class_2890 net/minecraft/network/protocol/handshake/ServerHandshakePacketListener + m (Laij;)V a method_12576 handleIntention +c ain net/minecraft/class_6315 net/minecraft/network/protocol/handshake/package-info +c aio net/minecraft/class_2896 net/minecraft/network/protocol/login/ClientLoginPacketListener + m (Laip;)V a method_12586 handleCustomQuery + m (Laiq;)V a method_12588 handleGameProfile + m (Lair;)V a method_12587 handleHello + m (Lais;)V a method_12585 handleCompression + m (Lait;)V a method_12584 handleDisconnect +c aip net/minecraft/class_2899 net/minecraft/network/protocol/login/ClientboundCustomQueryPacket + f Lyx; a field_48232 STREAM_CODEC + f I b comp_1567 transactionId + f Lajc; c comp_1568 payload + f I d field_33373 MAX_PAYLOAD_SIZE + m (Laio;)V a method_12591 handle + m (Lakr;Lvw;)Lajc; a method_52287 readPayload + m (Lvw;)V a method_56010 write + m ()I b comp_1567 transactionId + m (Lakr;Lvw;)Laje; b method_52288 readUnknownPayload + m ()Lajc; e comp_1568 payload + m (Lvw;)V + m (ILajc;)V + m ()V +c aiq net/minecraft/class_2901 net/minecraft/network/protocol/login/ClientboundGameProfilePacket + f Lyx; a field_48233 STREAM_CODEC + f Lcom/mojang/authlib/GameProfile; b comp_2363 gameProfile + f Z c comp_2662 strictErrorHandling + m (Laio;)V a method_12594 handle + m ()Lcom/mojang/authlib/GameProfile; b comp_2363 gameProfile + m ()Z e comp_2662 strictErrorHandling + m (Lcom/mojang/authlib/GameProfile;Z)V + m ()V +c air net/minecraft/class_2905 net/minecraft/network/protocol/login/ClientboundHelloPacket + f Lyx; a field_48234 STREAM_CODEC + f Ljava/lang/String; b field_13209 serverId + f [B c field_13211 publicKey + f [B d field_13210 challenge + f Z e field_48235 shouldAuthenticate + m (Laio;)V a method_12612 handle + m (Lvw;)V a method_56012 write + m ()Ljava/lang/String; b method_12610 getServerId + m ()Ljava/security/PublicKey; e method_12611 getPublicKey + m ()[B f method_12613 getChallenge + m ()Z g method_56013 shouldAuthenticate + m (Ljava/lang/String;[B[BZ)V + m (Lvw;)V + m ()V +c ais net/minecraft/class_2907 net/minecraft/network/protocol/login/ClientboundLoginCompressionPacket + f Lyx; a field_48236 STREAM_CODEC + f I b field_13232 compressionThreshold + m (Laio;)V a method_12633 handle + m (Lvw;)V a method_56014 write + m ()I b method_12634 getCompressionThreshold + m (I)V + m (Lvw;)V + m ()V +c ait net/minecraft/class_2909 net/minecraft/network/protocol/login/ClientboundLoginDisconnectPacket + f Lyx; a field_48237 STREAM_CODEC + f Lwz; b field_13243 reason + m (Laio;)V a method_12637 handle + m (Lvw;)V a method_56015 write + m ()Lwz; b method_12638 getReason + m (Lwz;)V + m (Lvw;)V + m ()V +c aiu net/minecraft/class_9098 net/minecraft/network/protocol/login/LoginPacketTypes + f Lzi; a field_48238 CLIENTBOUND_CUSTOM_QUERY + f Lzi; b field_48239 CLIENTBOUND_GAME_PROFILE + f Lzi; c field_48240 CLIENTBOUND_HELLO + f Lzi; d field_48241 CLIENTBOUND_LOGIN_COMPRESSION + f Lzi; e field_48242 CLIENTBOUND_LOGIN_DISCONNECT + f Lzi; f field_48243 SERVERBOUND_CUSTOM_QUERY_ANSWER + f Lzi; g field_48244 SERVERBOUND_HELLO + f Lzi; h field_48245 SERVERBOUND_KEY + f Lzi; i field_48246 SERVERBOUND_LOGIN_ACKNOWLEDGED + m (Ljava/lang/String;)Lzi; a method_56016 createClientbound + m (Ljava/lang/String;)Lzi; b method_56017 createServerbound + m ()V + m ()V +c aiv net/minecraft/class_9099 net/minecraft/network/protocol/login/LoginProtocols + f Lwh$a; a field_52198 SERVERBOUND_TEMPLATE + f Lwh; b field_48247 SERVERBOUND + f Lwh$a; c field_52199 CLIENTBOUND_TEMPLATE + f Lwh; d field_48248 CLIENTBOUND + m (Lzl;)V a method_56018 method_56018 + m (Lzl;)V b method_56019 method_56019 + m ()V + m ()V +c aiw net/minecraft/class_2911 net/minecraft/network/protocol/login/ServerLoginPacketListener + m (Laix;)V a method_12640 handleCustomQueryPacket + m (Laiy;)V a method_12641 handleHello + m (Laiz;)V a method_12642 handleKey + m (Laja;)V a method_52289 handleLoginAcknowledgement +c aix net/minecraft/class_2913 net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket + f Lyx; a field_48249 STREAM_CODEC + f I b comp_1569 transactionId + f Lajb; c comp_1570 payload + f I d field_33374 MAX_PAYLOAD_SIZE + m (ILvw;)Lajb; a method_52290 readPayload + m (Laiw;)V a method_12645 handle + m (Lvw;)Laix; a method_52292 read + m (Lvw;Lajb;)V a method_52291 method_52291 + m ()I b comp_1569 transactionId + m (Lvw;)Lajb; b method_52293 readUnknownPayload + m (Lvw;)V c method_11052 write + m ()Lajb; e comp_1570 payload + m (ILajb;)V + m ()V +c aiy net/minecraft/class_2915 net/minecraft/network/protocol/login/ServerboundHelloPacket + f Lyx; a field_48250 STREAM_CODEC + f Ljava/lang/String; b comp_765 name + f Ljava/util/UUID; c comp_907 profileId + m (Laiw;)V a method_12649 handle + m (Lvw;)V a method_56020 write + m ()Ljava/lang/String; b comp_765 name + m ()Ljava/util/UUID; e comp_907 profileId + m (Lvw;)V + m (Ljava/lang/String;Ljava/util/UUID;)V + m ()V +c aiz net/minecraft/class_2917 net/minecraft/network/protocol/login/ServerboundKeyPacket + f Lyx; a field_48251 STREAM_CODEC + f [B b field_13274 keybytes + f [B c field_39089 encryptedChallenge + m (Laiw;)V a method_12653 handle + m (Ljava/security/PrivateKey;)Ljavax/crypto/SecretKey; a method_12654 getSecretKey + m (Lvw;)V a method_56021 write + m ([BLjava/security/PrivateKey;)Z a method_43643 isChallengeValid + m (Ljavax/crypto/SecretKey;Ljava/security/PublicKey;[B)V + m (Lvw;)V + m ()V +c aja net/minecraft/class_8593 net/minecraft/network/protocol/login/ServerboundLoginAcknowledgedPacket + f Laja; a field_48252 INSTANCE + f Lyx; b field_48253 STREAM_CODEC + m (Laiw;)V a method_52294 handle + m ()V + m ()V +c ajb net/minecraft/class_8594 net/minecraft/network/protocol/login/custom/CustomQueryAnswerPayload + m (Lvw;)V a method_52295 write +c ajc net/minecraft/class_8595 net/minecraft/network/protocol/login/custom/CustomQueryPayload + m ()Lakr; a comp_1571 id + m (Lvw;)V a method_52296 write +c ajd net/minecraft/class_8596 net/minecraft/network/protocol/login/custom/DiscardedQueryAnswerPayload + f Lajd; a field_44980 INSTANCE + m ()V + m ()V +c aje net/minecraft/class_8597 net/minecraft/network/protocol/login/custom/DiscardedQueryPayload + f Lakr; a comp_1571 id + m (Lakr;)V +c ajf net/minecraft/class_8598 net/minecraft/network/protocol/login/custom/package-info +c ajg net/minecraft/class_6316 net/minecraft/network/protocol/login/package-info +c ajh net/minecraft/class_6317 net/minecraft/network/protocol/package-info +c aji net/minecraft/class_8763 net/minecraft/network/protocol/ping/ClientPongPacketListener + m (Lajj;)V a method_12666 handlePongResponse +c ajj net/minecraft/class_2923 net/minecraft/network/protocol/ping/ClientboundPongResponsePacket + f Lyx; a field_48254 STREAM_CODEC + f J b comp_2201 time + m (Laji;)V a method_12670 handle + m (Lvw;)V a method_56022 write + m ()J b comp_2201 time + m (Lvw;)V + m (J)V + m ()V +c ajk net/minecraft/class_9100 net/minecraft/network/protocol/ping/PingPacketTypes + f Lzi; a field_48255 CLIENTBOUND_PONG_RESPONSE + f Lzi; b field_48256 SERVERBOUND_PING_REQUEST + m (Ljava/lang/String;)Lzi; a method_56023 createClientbound + m (Ljava/lang/String;)Lzi; b method_56024 createServerbound + m ()V + m ()V +c ajl net/minecraft/class_8740 net/minecraft/network/protocol/ping/ServerPingPacketListener + m (Lajm;)V a method_12697 handlePingRequest +c ajm net/minecraft/class_2935 net/minecraft/network/protocol/ping/ServerboundPingRequestPacket + f Lyx; a field_48257 STREAM_CODEC + f J b field_13292 time + m (Lajl;)V a method_12699 handle + m (Lio/netty/buffer/ByteBuf;)V a method_56025 write + m ()J b method_12700 getTime + m (J)V + m (Lio/netty/buffer/ByteBuf;)V + m ()V +c ajn net/minecraft/class_9101 net/minecraft/network/protocol/ping/package-info +c ajo net/minecraft/class_2921 net/minecraft/network/protocol/status/ClientStatusPacketListener + m (Lajp;)V a method_12667 handleStatusResponse +c ajp net/minecraft/class_2924 net/minecraft/network/protocol/status/ClientboundStatusResponsePacket + f Lyx; a field_48258 STREAM_CODEC + f Lajq; b comp_1272 status + m (Lajo;)V a method_12671 handle + m (Lvw;)V a method_56026 write + m ()Lajq; b comp_1272 status + m (Lvw;)V + m (Lajq;)V + m ()V +c ajq net/minecraft/class_2926 net/minecraft/network/protocol/status/ServerStatus + f Lcom/mojang/serialization/Codec; a field_42535 CODEC + f Lwz; b comp_1273 description + f Ljava/util/Optional; c comp_1274 players + f Ljava/util/Optional; d comp_1275 version + f Ljava/util/Optional; e comp_1276 favicon + f Z f comp_1277 enforcesSecureChat + m ()Lwz; a comp_1273 description + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49092 method_49092 + m ()Ljava/util/Optional; b comp_1274 players + m ()Ljava/util/Optional; c comp_1275 version + m ()Ljava/util/Optional; d comp_1276 favicon + m ()Z e comp_1277 enforcesSecureChat + m (Lwz;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Z)V + m ()V +c ajq$a net/minecraft/class_2926$class_8145 net/minecraft/network/protocol/status/ServerStatus$Favicon + f Lcom/mojang/serialization/Codec; a field_42538 CODEC + f [B b comp_1278 iconBytes + f Ljava/lang/String; c field_42539 PREFIX + m ()[B a comp_1278 iconBytes + m (Lajq$a;)Ljava/lang/String; a method_49093 method_49093 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_49094 method_49094 + m ()Ljava/lang/String; b method_49401 method_49401 + m ()Ljava/lang/String; c method_49402 method_49402 + m ([B)V + m ()V +c ajq$b net/minecraft/class_2926$class_2927 net/minecraft/network/protocol/status/ServerStatus$Players + f Lcom/mojang/serialization/Codec; a field_42540 CODEC + f I b comp_1279 max + f I c comp_1280 online + f Ljava/util/List; d comp_1281 sample + f Lcom/mojang/serialization/Codec; e field_42541 PROFILE_CODEC + m ()I a comp_1279 max + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49095 method_49095 + m ()I b comp_1280 online + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_49096 method_49096 + m ()Ljava/util/List; c comp_1281 sample + m (IILjava/util/List;)V + m ()V +c ajq$c net/minecraft/class_2926$class_2930 net/minecraft/network/protocol/status/ServerStatus$Version + f Lcom/mojang/serialization/Codec; a field_42542 CODEC + f Ljava/lang/String; b comp_1282 name + f I c comp_1283 protocol + m ()Lajq$c; a method_49097 current + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49098 method_49098 + m ()Ljava/lang/String; b comp_1282 name + m ()I c comp_1283 protocol + m (Ljava/lang/String;I)V + m ()V +c ajr net/minecraft/class_2933 net/minecraft/network/protocol/status/ServerStatusPacketListener + m (Lajs;)V a method_12698 handleStatusRequest +c ajs net/minecraft/class_2937 net/minecraft/network/protocol/status/ServerboundStatusRequestPacket + f Lajs; a field_48259 INSTANCE + f Lyx; b field_48260 STREAM_CODEC + m (Lajr;)V a method_12701 handle + m ()V + m ()V +c ajt net/minecraft/class_9102 net/minecraft/network/protocol/status/StatusPacketTypes + f Lzi; a field_48261 CLIENTBOUND_STATUS_RESPONSE + f Lzi; b field_48262 SERVERBOUND_STATUS_REQUEST + m (Ljava/lang/String;)Lzi; a method_56027 createClientbound + m (Ljava/lang/String;)Lzi; b method_56028 createServerbound + m ()V + m ()V +c aju net/minecraft/class_9103 net/minecraft/network/protocol/status/StatusProtocols + f Lwh$a; a field_52200 SERVERBOUND_TEMPLATE + f Lwh; b field_48263 SERVERBOUND + f Lwh$a; c field_52201 CLIENTBOUND_TEMPLATE + f Lwh; d field_48264 CLIENTBOUND + m (Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; a method_60934 method_60934 + m (Lzl;)V a method_56029 method_56029 + m (Lzl;)V b method_56030 method_56030 + m ()V + m ()V +c ajv net/minecraft/class_6318 net/minecraft/network/protocol/status/package-info +c ajw net/minecraft/class_2940 net/minecraft/network/syncher/EntityDataAccessor + f I a comp_2327 id + f Lajx; b comp_2328 serializer + m ()I a comp_2327 id + m ()Lajx; b comp_2328 serializer + m (ILajx;)V +c ajx net/minecraft/class_2941 net/minecraft/network/syncher/EntityDataSerializer + m (I)Lajw; a method_12717 createAccessor + m (Lyx;)Lajx; a method_56031 forValueType + m (Lyx;)Lyx; b method_56032 method_56032 + m (Ljava/lang/Object;)Ljava/lang/Object; copy method_12714 copy +c ajx$a net/minecraft/class_2941$class_7394 net/minecraft/network/syncher/EntityDataSerializer$ForValueType +c ajy net/minecraft/class_2943 net/minecraft/network/syncher/EntityDataSerializers + f Lajx; A field_39017 PAINTING_VARIANT + f Lajx; B field_47707 ARMADILLO_STATE + f Lajx; C field_42543 SNIFFER_STATE + f Lajx; D field_42237 VECTOR3 + f Lajx; E field_42235 QUATERNION + f Laxk; F field_13328 SERIALIZERS + f Lyx; G field_48265 OPTIONAL_BLOCK_STATE_CODEC + f Lyx; H field_48266 OPTIONAL_UNSIGNED_INT_CODEC + f Lajx; a field_13319 BYTE + f Lajx; b field_13327 INT + f Lajx; c field_39965 LONG + f Lajx; d field_13320 FLOAT + f Lajx; e field_13326 STRING + f Lajx; f field_13317 COMPONENT + f Lajx; g field_13325 OPTIONAL_COMPONENT + f Lajx; h field_13322 ITEM_STACK + f Lajx; i field_13312 BLOCK_STATE + f Lajx; j field_42236 OPTIONAL_BLOCK_STATE + f Lajx; k field_13323 BOOLEAN + f Lajx; l field_13314 PARTICLE + f Lajx; m field_49774 PARTICLES + f Lajx; n field_13316 ROTATIONS + f Lajx; o field_13324 BLOCK_POS + f Lajx; p field_13315 OPTIONAL_BLOCK_POS + f Lajx; q field_13321 DIRECTION + f Lajx; r field_13313 OPTIONAL_UUID + f Lajx; s field_38825 OPTIONAL_GLOBAL_POS + f Lajx; t field_13318 COMPOUND_TAG + f Lajx; u field_17207 VILLAGER_DATA + f Lajx; v field_17910 OPTIONAL_UNSIGNED_INT + f Lajx; w field_18238 POSE + f Lajx; x field_38826 CAT_VARIANT + f Lajx; y field_49713 WOLF_VARIANT + f Lajx; z field_38827 FROG_VARIANT + m (I)Lajx; a method_12721 getSerializer + m (Lajx;)V a method_12720 registerSerializer + m (Lajx;)I b method_12719 getSerializedId + m ()V + m ()V +c ajy$1 net/minecraft/class_2943$1 net/minecraft/network/syncher/EntityDataSerializers$1 + m (Lcuq;)Lcuq; a method_12732 copy + m ()V +c ajy$2 net/minecraft/class_2943$2 net/minecraft/network/syncher/EntityDataSerializers$2 + m (Lio/netty/buffer/ByteBuf;)Ljava/util/Optional; a method_56033 decode + m (Lio/netty/buffer/ByteBuf;Ljava/util/Optional;)V a method_56034 encode + m ()V +c ajy$3 net/minecraft/class_2943$3 net/minecraft/network/syncher/EntityDataSerializers$3 + m (Lub;)Lub; a method_56035 copy + m ()V +c ajy$4 net/minecraft/class_2943$4 net/minecraft/network/syncher/EntityDataSerializers$4 + m (Lio/netty/buffer/ByteBuf;)Ljava/util/OptionalInt; a method_56036 decode + m (Lio/netty/buffer/ByteBuf;Ljava/util/OptionalInt;)V a method_56037 encode + m ()V +c ajz net/minecraft/class_9221 net/minecraft/network/syncher/SyncedDataHolder + m (Lajw;)V a method_5674 onSyncedDataUpdated + m (Ljava/util/List;)V a method_48850 onSyncedDataUpdated +c aka net/minecraft/class_2945 net/minecraft/network/syncher/SynchedEntityData + f Lorg/slf4j/Logger; a field_13334 LOGGER + f I b field_33378 MAX_ID_VALUE + f Laxg; c field_49021 ID_REGISTRY + f Lajz; d field_13333 entity + f [Laka$b; e field_13331 itemsById + f Z f field_13329 isDirty + m ()Z a method_12786 isDirty + m (Lajw;)Ljava/lang/Object; a method_12789 get + m (Lajw;Ljava/lang/Object;)V a method_12778 set + m (Lajw;Ljava/lang/Object;Z)V a method_49743 set + m (Laka$b;Laka$c;)V a method_12785 assignValue + m (Ljava/lang/Class;Lajx;)Lajw; a method_12791 defineId + m (Ljava/util/List;)V a method_12779 assignValues + m ()Ljava/util/List; b method_12781 packDirty + m (Lajw;)Laka$b; b method_12783 getItem + m ()Ljava/util/List; c method_46357 getNonDefaultValues + m (Lajz;[Laka$b;)V + m ()V +c aka$a net/minecraft/class_2945$class_9222 net/minecraft/network/syncher/SynchedEntityData$Builder + f Lajz; a field_49022 entity + f [Laka$b; b field_49023 itemsById + m ()Laka; a method_56911 build + m (Lajw;Ljava/lang/Object;)Laka$a; a method_56912 define + m (Lajz;)V +c aka$b net/minecraft/class_2945$class_2946 net/minecraft/network/syncher/SynchedEntityData$DataItem + f Lajw; a field_13337 accessor + f Ljava/lang/Object; b field_13338 value + f Ljava/lang/Object; c field_40719 initialValue + f Z d field_13336 dirty + m ()Lajw; a method_12797 getAccessor + m (Ljava/lang/Object;)V a method_12799 setValue + m (Z)V a method_12795 setDirty + m ()Ljava/lang/Object; b method_12794 getValue + m ()Z c method_12796 isDirty + m ()Z d method_46358 isSetToDefault + m ()Laka$c; e method_46359 value + m (Lajw;Ljava/lang/Object;)V +c aka$c net/minecraft/class_2945$class_7834 net/minecraft/network/syncher/SynchedEntityData$DataValue + f I a comp_1115 id + f Lajx; b comp_1116 serializer + f Ljava/lang/Object; c comp_1117 value + m ()I a comp_1115 id + m (Lajw;Ljava/lang/Object;)Laka$c; a method_46360 create + m (Lwk;)V a method_46361 write + m (Lwk;I)Laka$c; a method_46362 read + m (Lwk;ILajx;)Laka$c; a method_46363 read + m ()Lajx; b comp_1116 serializer + m ()Ljava/lang/Object; c comp_1117 value + m (ILajx;Ljava/lang/Object;)V +c akb net/minecraft/class_6320 net/minecraft/network/syncher/package-info +c akc net/minecraft/class_6321 net/minecraft/obfuscate/package-info +c akd net/minecraft/class_6322 net/minecraft/package-info +c ake net/minecraft/class_2952 net/minecraft/recipebook/PlaceRecipe + m (IIILczb;Ljava/util/Iterator;I)V a method_12816 placeRecipe + m (Ljava/lang/Object;IIII)V a method_12815 addItemToSlot +c akf net/minecraft/class_2955 net/minecraft/recipebook/ServerPlaceRecipe + f Lcnb; a field_13347 stackedContents + f Lcmw; b field_13350 inventory + f Lcri; c field_13348 menu + f I d field_51523 ITEM_NOT_FOUND + m ()V a method_12822 clearGrid + m (Laqv;Lczb;Z)V a method_12826 recipeClicked + m (Lcrq;Lcuq;I)I a method_12824 moveItemToGrid + m (Lczb;Z)V a method_12821 handleRecipeClicked + m (Ljava/lang/Integer;IIII)V a method_59902 addItemToSlot + m (ZIZ)I a method_12819 getStackSize + m ()Z b method_12825 testClearGrid + m ()I c method_12823 getAmountOfFreeSlotsInInventory + m (Lcri;)V +c akg net/minecraft/class_6323 net/minecraft/recipebook/package-info +c akh net/minecraft/class_8803 net/minecraft/references/Blocks + f Lakq; a field_46221 PUMPKIN + f Lakq; b field_46222 PUMPKIN_STEM + f Lakq; c field_46223 ATTACHED_PUMPKIN_STEM + f Lakq; d field_46224 MELON + f Lakq; e field_46225 MELON_STEM + f Lakq; f field_46226 ATTACHED_MELON_STEM + m (Ljava/lang/String;)Lakq; a method_53910 createKey + m ()V + m ()V +c aki net/minecraft/class_8804 net/minecraft/references/Items + f Lakq; a field_46227 PUMPKIN_SEEDS + f Lakq; b field_46228 MELON_SEEDS + m (Ljava/lang/String;)Lakq; a method_53911 createKey + m ()V + m ()V +c akj net/minecraft/class_5379 net/minecraft/resources/DelegatingOps + f Lcom/mojang/serialization/DynamicOps; a field_25503 delegate + m (Lcom/mojang/serialization/DynamicOps;)V +c akk net/minecraft/class_7654 net/minecraft/resources/FileToIdConverter + f Ljava/lang/String; a field_39966 prefix + f Ljava/lang/String; b field_39967 extension + m (Lakr;)Lakr; a method_45112 idToFile + m (Laue;)Ljava/util/Map; a method_45113 listMatchingResources + m (Ljava/lang/String;)Lakk; a method_45114 json + m (Lakr;)Lakr; b method_45115 fileToId + m (Laue;)Ljava/util/Map; b method_45116 listMatchingResourceStacks + m (Lakr;)Z c method_45117 method_45117 + m (Lakr;)Z d method_45118 method_45118 + m (Ljava/lang/String;Ljava/lang/String;)V +c akl net/minecraft/class_6898 net/minecraft/resources/HolderSetCodec + f Lakq; a field_36480 registryKey + f Lcom/mojang/serialization/Codec; b field_36481 elementCodec + f Lcom/mojang/serialization/Codec; c field_36482 homogenousListCodec + f Lcom/mojang/serialization/Codec; d field_36483 registryAwareCodec + m (Lakq;Lcom/mojang/serialization/Codec;Z)Lcom/mojang/serialization/Codec; a method_40388 create + m (Lawu;)Lcom/mojang/serialization/DataResult; a method_58027 method_58027 + m (Lcom/mojang/datafixers/util/Either;)Ljava/util/List; a method_40380 method_40380 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_40381 method_40381 + m (Lcom/mojang/datafixers/util/Pair;Ljq;)Lcom/mojang/datafixers/util/Pair; a method_58028 method_58028 + m (Lcom/mojang/serialization/Codec;Z)Lcom/mojang/serialization/Codec; a method_40382 homogenousList + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_40383 decodeWithoutRegistry + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_58030 method_58030 + m (Ljm;)Ljava/lang/String; a method_49403 method_49403 + m (Ljn;Lawu;)Lcom/mojang/serialization/DataResult; a method_58029 lookupTag + m (Ljn;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_40386 method_40386 + m (Ljq;)Ljava/lang/String; a method_49404 method_49404 + m (Ljq;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_40384 encode + m (Lawu;)Ljava/lang/String; b method_58031 method_58031 + m (Ljava/util/List;)Lcom/mojang/datafixers/util/Either; b method_40387 method_40387 + m (Ljn;Lawu;)Lcom/mojang/serialization/DataResult; b method_40385 method_40385 + m (Ljq;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; b method_40389 encodeWithoutRegistry + m (Ljava/util/List;)Ljava/util/List; c method_40390 method_40390 + m (Lakq;Lcom/mojang/serialization/Codec;Z)V +c akm net/minecraft/class_7655 net/minecraft/resources/RegistryDataLoader + f Ljava/util/List; a field_39968 WORLDGEN_REGISTRIES + f Ljava/util/List; b field_39969 DIMENSION_REGISTRIES + f Ljava/util/List; c field_48709 SYNCHRONIZED_REGISTRIES + f Lorg/slf4j/Logger; d field_39970 LOGGER + f Ljy; e field_49024 NETWORK_REGISTRATION_INFO + f Ljava/util/function/Function; f field_49025 REGISTRATION_INFO_CACHE + m (Lakm$b;Lakp$c;Lakm$a;)V a method_45120 method_45120 + m (Lakm$b;Lka;Ljava/util/List;)Lka$b; a method_45121 load + m (Laue;Lakm$a;Lakp$c;)V a method_56514 method_56514 + m (Laue;Lakp$c;Lki;Lcom/mojang/serialization/Decoder;Ljava/util/Map;)V a method_45122 loadContentsFromManager + m (Laue;Lka;Ljava/util/List;)Lka$b; a method_56515 load + m (Ljava/io/PrintWriter;Ljava/util/Map$Entry;)V a method_45123 method_45123 + m (Ljava/lang/Boolean;)Lcom/mojang/serialization/Lifecycle; a method_56913 method_56913 + m (Ljava/util/Map$Entry;)Lakr; a method_45125 method_45125 + m (Ljava/util/Map;)V a method_45126 logErrors + m (Ljava/util/Map;Lakm$a;)V a method_46621 method_46621 + m (Ljava/util/Map;Lakm$c;)Lakm$a; a method_45127 method_45127 + m (Ljava/util/Map;Lauh;Lakm$a;Lakp$c;)V a method_56517 method_56517 + m (Ljava/util/Map;Lauh;Lakp$c;Lki;Lcom/mojang/serialization/Decoder;Ljava/util/Map;)V a method_56518 loadContentsFromNetwork + m (Ljava/util/Map;Lauh;Lka;Ljava/util/List;)Lka$b; a method_56519 load + m (Ljava/util/Map;Lka$d;)V a method_46622 method_46622 + m (Ljava/util/Optional;)Ljy; a method_56914 method_56914 + m (Ljz;)Lakp$b; a method_46618 createInfoForContextRegistry + m (Lka;Ljava/util/List;)Lakp$c; a method_46619 createContext + m (Lki;)Lakp$b; a method_46620 createInfoForNewRegistry + m (Lki;Lcom/mojang/serialization/Decoder;Lakp;Lakq;Lauc;Ljy;)V a method_56915 loadElementFromResource + m (Ljava/io/PrintWriter;Ljava/util/Map$Entry;)V b method_45129 method_45129 + m (Ljava/util/Map$Entry;)Lakr; b method_45130 method_45130 + m (Ljava/util/Map;Lakm$a;)V b method_45128 method_45128 + m ()V + m ()V +c akm$1 net/minecraft/class_7655$1 net/minecraft/resources/RegistryDataLoader$1 + f Ljava/util/Map; a field_40851 val$result + m (Ljava/util/Map;)V +c akm$a net/minecraft/class_7655$class_9158 net/minecraft/resources/RegistryDataLoader$Loader + f Lakm$c; a comp_2245 data + f Lki; b comp_2246 registry + f Ljava/util/Map; c comp_2247 loadingErrors + m ()Lakm$c; a comp_2245 data + m (Laue;Lakp$c;)V a method_56520 loadFromResources + m (Ljava/util/Map;Lauh;Lakp$c;)V a method_56521 loadFromNetwork + m ()Lki; b comp_2246 registry + m ()Ljava/util/Map; c comp_2247 loadingErrors + m (Lakm$c;Lki;Ljava/util/Map;)V +c akm$b net/minecraft/class_7655$class_7656 net/minecraft/resources/RegistryDataLoader$LoadingFunction +c akm$c net/minecraft/class_7655$class_7657 net/minecraft/resources/RegistryDataLoader$RegistryData + f Lakq; a comp_985 key + f Lcom/mojang/serialization/Codec; b comp_986 elementCodec + f Z c comp_2664 requiredNonEmpty + m ()Lakq; a comp_985 key + m (Lcom/mojang/serialization/Lifecycle;Ljava/util/Map;)Lakm$a; a method_45131 create + m (Ljava/util/function/BiConsumer;)V a method_54920 runWithArguments + m ()Lcom/mojang/serialization/Codec; b comp_986 elementCodec + m ()Z c comp_2664 requiredNonEmpty + m (Lakq;Lcom/mojang/serialization/Codec;)V + m (Lakq;Lcom/mojang/serialization/Codec;Z)V +c akn net/minecraft/class_5381 net/minecraft/resources/RegistryFileCodec + f Lakq; a field_25507 registryKey + f Lcom/mojang/serialization/Codec; b field_25508 elementCodec + f Z c field_26758 allowInline + m ()Ljava/lang/String; a method_49405 method_49405 + m (Lakq;)Lcom/mojang/serialization/DataResult; a method_46624 method_46624 + m (Lakq;Lcom/mojang/serialization/Codec;)Lakn; a method_29749 create + m (Lakq;Lcom/mojang/serialization/Codec;Z)Lakn; a method_31192 create + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_29746 method_29746 + m (Lcom/mojang/datafixers/util/Pair;Ljm$c;)Lcom/mojang/datafixers/util/Pair; a method_45133 method_45133 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;Lakq;)Lcom/mojang/serialization/DataResult; a method_40393 method_40393 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_40392 method_40392 + m (Ljm;)Ljava/lang/String; a method_49406 method_49406 + m (Ljm;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_29748 encode + m ()Ljava/lang/String; b method_49407 method_49407 + m (Lakq;)Ljava/lang/String; b method_49408 method_49408 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; b method_40394 method_40394 + m (Lakq;Lcom/mojang/serialization/Codec;Z)V +c ako net/minecraft/class_6899 net/minecraft/resources/RegistryFixedCodec + f Lakq; a field_36484 registryKey + m ()Ljava/lang/String; a method_49409 method_49409 + m (Lakq;)Lako; a method_40400 create + m (Lakr;)Lcom/mojang/serialization/DataResult; a method_46625 method_46625 + m (Lcom/mojang/datafixers/util/Pair;Ljm$c;)Lcom/mojang/datafixers/util/Pair; a method_44141 method_44141 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;Lakq;)Lcom/mojang/serialization/DataResult; a method_40395 method_40395 + m (Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_40397 method_40397 + m (Ljava/util/Optional;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_44142 method_44142 + m (Ljm;)Ljava/lang/String; a method_49410 method_49410 + m (Ljm;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_40396 encode + m ()Ljava/lang/String; b method_49411 method_49411 + m (Lakr;)Ljava/lang/String; b method_49412 method_49412 + m ()Ljava/lang/String; c method_49413 method_49413 + m (Lakq;)V +c akp net/minecraft/class_6903 net/minecraft/resources/RegistryOps + f Lakp$c; b field_40852 lookupProvider + m ()Ljava/lang/String; a method_49414 method_49414 + m (Lakp$b;)Lcom/mojang/serialization/DataResult; a method_46626 method_46626 + m (Lakq;)Ljava/util/Optional; a method_46628 owner + m (Lakq;Lakp$b;)Ljava/util/Optional; a method_46629 method_46629 + m (Lakq;Lakq;Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/DataResult; a method_46630 method_46630 + m (Lakq;Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/DataResult; a method_46631 method_46631 + m (Lcom/mojang/serialization/Dynamic;Ljo$a;)Lcom/mojang/serialization/Dynamic; a method_56622 injectRegistryContext + m (Lcom/mojang/serialization/DynamicOps;)Lakp; a method_57110 withParent + m (Lcom/mojang/serialization/DynamicOps;Lakp$c;)Lakp; a method_40414 create + m (Lcom/mojang/serialization/DynamicOps;Ljo$a;)Lakp; a method_46632 create + m (Ljava/lang/Object;)Ljm$c; a method_46633 method_46633 + m ()Ljava/lang/String; b method_49415 method_49415 + m (Lakq;)Ljava/util/Optional; b method_46634 getter + m (Ljava/lang/Object;)Ljn; b method_46635 method_46635 + m (Lakq;)Lcom/mojang/serialization/codecs/RecordCodecBuilder; c method_46636 retrieveGetter + m (Lakq;)Lcom/mojang/serialization/codecs/RecordCodecBuilder; d method_46637 retrieveElement + m (Lakq;)Lcom/mojang/serialization/DataResult; e method_46638 method_46638 + m (Lakq;)Ljava/lang/String; f method_49416 method_49416 + m (Lakq;)Lcom/mojang/serialization/DataResult; g method_46639 method_46639 + m (Lakq;)Ljava/lang/String; h method_49417 method_49417 + m (Lcom/mojang/serialization/DynamicOps;Lakp$c;)V +c akp$a net/minecraft/class_6903$class_9683 net/minecraft/resources/RegistryOps$HolderLookupAdapter + f Ljo$a; a field_51501 lookupProvider + f Ljava/util/Map; b field_51502 lookups + m (Lakq;)Ljava/util/Optional; b method_59855 createLookup + m (Ljo$a;)V +c akp$b net/minecraft/class_6903$class_7862 net/minecraft/resources/RegistryOps$RegistryInfo + f Ljp; a comp_1130 owner + f Ljn; b comp_1131 getter + f Lcom/mojang/serialization/Lifecycle; c comp_1132 elementsLifecycle + m ()Ljp; a comp_1130 owner + m (Ljo$b;)Lakp$b; a method_57074 fromRegistryLookup + m ()Ljn; b comp_1131 getter + m ()Lcom/mojang/serialization/Lifecycle; c comp_1132 elementsLifecycle + m (Ljp;Ljn;Lcom/mojang/serialization/Lifecycle;)V +c akp$c net/minecraft/class_6903$class_7863 net/minecraft/resources/RegistryOps$RegistryInfoLookup + m (Lakq;)Ljava/util/Optional; a method_46623 lookup +c akq net/minecraft/class_5321 net/minecraft/resources/ResourceKey + f Ljava/util/concurrent/ConcurrentMap; a field_25136 VALUES + f Lakr; b field_25137 registryName + f Lakr; c field_25138 location + m ()Lakr; a method_29177 location + m (Lakq$a;)Lakq; a method_29182 method_29182 + m (Lakq;)Lcom/mojang/serialization/Codec; a method_39154 codec + m (Lakq;Lakr;)Lakq; a method_29179 create + m (Lakr;)Lakq; a method_29180 createRegistryKey + m (Lakr;Lakr;)Lakq; a method_29181 create + m ()Lakr; b method_41185 registry + m (Lakq;)Lyx; b method_56038 streamCodec + m (Lakq;Lakr;)Lakq; b method_56039 method_56039 + m ()Lakq; c method_58273 registryKey + m (Lakq;)Z c method_31163 isFor + m (Lakq;Lakr;)Lakq; c method_39155 method_39155 + m (Lakq;)Ljava/util/Optional; d method_39752 cast + m (Lakr;Lakr;)V + m ()V +c akq$a net/minecraft/class_5321$class_7892 net/minecraft/resources/ResourceKey$InternKey + f Lakr; a comp_1149 registry + f Lakr; b comp_1150 location + m ()Lakr; a comp_1149 registry + m ()Lakr; b comp_1150 location + m (Lakr;Lakr;)V +c akr net/minecraft/class_2960 net/minecraft/resources/ResourceLocation + f Lcom/mojang/serialization/Codec; a field_25139 CODEC + f Lyx; b field_48267 STREAM_CODEC + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13354 ERROR_INVALID + f C d field_33380 NAMESPACE_SEPARATOR + f Ljava/lang/String; e field_33381 DEFAULT_NAMESPACE + f Ljava/lang/String; f field_33382 REALMS_NAMESPACE + f Z g field_52202 $assertionsDisabled + f Ljava/lang/String; h field_13353 namespace + f Ljava/lang/String; i field_13355 path + m ()Ljava/lang/String; a method_12832 getPath + m (C)Z a method_12831 isAllowedInResourceLocation + m (Lakr;)I a method_12833 compareTo + m (Lcom/mojang/brigadier/StringReader;)Lakr; a method_12835 read + m (Ljava/lang/String;)Lakr; a method_60654 parse + m (Ljava/lang/String;C)Lakr; a method_12838 bySeparator + m (Ljava/lang/String;Laa;)Ljava/lang/String; a method_49418 method_49418 + m (Ljava/lang/String;Ljava/lang/String;)Lakr; a method_60655 fromNamespaceAndPath + m (Ljava/util/function/UnaryOperator;)Lakr; a method_45134 withPath + m ()Ljava/lang/String; b method_12836 getNamespace + m (C)Z b method_29184 validPathChar + m (Lcom/mojang/brigadier/StringReader;)Lakr; b method_58274 readNonEmpty + m (Ljava/lang/String;)Lakr; b method_60656 withDefaultNamespace + m (Ljava/lang/String;C)Lakr; b method_60935 tryBySeparator + m (Ljava/lang/String;Ljava/lang/String;)Lakr; b method_43902 tryBuild + m ()Ljava/lang/String; c method_36181 toDebugFileName + m (C)Z c method_29185 validNamespaceChar + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/String; c method_58275 readGreedy + m (Ljava/lang/String;)Lakr; c method_12829 tryParse + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; c method_48747 toLanguageKey + m ()Ljava/lang/String; d method_42094 toLanguageKey + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; d method_29186 read + m (Ljava/lang/String;Ljava/lang/String;)Lakr; d method_60936 createUntrusted + m ()Ljava/lang/String; e method_43903 toShortLanguageKey + m (Ljava/lang/String;)Lakr; e method_45136 withPath + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; e method_45135 assertValidNamespace + m (Ljava/lang/String;)Lakr; f method_45138 withPrefix + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; f method_45137 assertValidPath + m (Ljava/lang/String;)Lakr; g method_48331 withSuffix + m (Ljava/lang/String;)Ljava/lang/String; h method_42093 toLanguageKey + m (Ljava/lang/String;)Z i method_20208 isValidPath + m (Ljava/lang/String;)Z j method_20209 isValidNamespace + m (Ljava/lang/String;Ljava/lang/String;)V + m ()V +c akr$a net/minecraft/class_2960$class_2961 net/minecraft/resources/ResourceLocation$Serializer + m (Lakr;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a method_12839 serialize + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lakr; a method_12840 deserialize + m ()V +c aks net/minecraft/class_6324 net/minecraft/resources/package-info +c akt net/minecraft/class_2966 net/minecraft/server/Bootstrap + f Ljava/io/PrintStream; a field_13358 STDOUT + f Ljava/util/concurrent/atomic/AtomicLong; b field_44781 bootstrapDuration + f Z c field_13357 isBootstrapped + f Lorg/slf4j/Logger; d field_13359 LOGGER + m ()V a method_12851 bootStrap + m (Lakr;)Ljava/lang/String; a method_17595 method_17595 + m (Ljava/lang/Iterable;Ljava/util/function/Function;Ljava/util/Set;)V a method_12848 checkTranslations + m (Ljava/lang/String;)V a method_12847 realStdoutPrintln + m (Ljava/util/Set;)V a method_27732 checkGameruleTranslations + m (Ljava/util/function/Function;Ltw;Ljava/util/Set;Ljava/lang/Object;)V a method_12850 method_12850 + m (Ljava/util/function/Supplier;)V a method_36235 checkBootstrapCalled + m ()Ljava/util/Set; b method_17597 getMissingTranslations + m (Ljava/lang/String;)V b method_36236 method_36236 + m (Ljava/util/function/Supplier;)Ljava/lang/RuntimeException; b method_36237 createBootstrapException + m ()V c method_17598 validate + m ()V d method_12852 wrapStreams + m ()Ljava/lang/String; e method_36238 method_36238 + m ()V + m ()V +c akt$1 net/minecraft/class_2966$1 net/minecraft/server/Bootstrap$1 + f Ltw; a field_24373 val$language + f Ljava/util/Set; b field_24374 val$missing + m (Ltw;Ljava/util/Set;)V +c aku net/minecraft/class_2973 net/minecraft/server/ChainedJsonException + f Ljava/util/List; a field_13371 entries + f Ljava/lang/String; b field_13372 message + m (Ljava/lang/Exception;)Laku; a method_12856 forException + m (Ljava/lang/String;)V a method_12854 prependJsonKey + m (Ljava/lang/String;)V b method_12855 setFilenameAndFlush + m (Ljava/lang/String;)V + m (Ljava/lang/String;Ljava/lang/Throwable;)V +c aku$a net/minecraft/class_2973$class_2974 net/minecraft/server/ChainedJsonException$Entry + f Ljava/lang/String; a field_13373 filename + f Ljava/util/List; b field_13374 jsonKeys + m ()Ljava/lang/String; a method_36182 getFilename + m (Ljava/lang/String;)V a method_12858 addJsonKey + m ()Ljava/lang/String; b method_12857 getJsonKeys + m ()V +c akv net/minecraft/class_2976 net/minecraft/server/ConsoleInput + f Ljava/lang/String; a field_13377 msg + f Let; b field_13378 source + m (Ljava/lang/String;Let;)V +c akw net/minecraft/class_2980 net/minecraft/server/DebugLoggedPrintStream + f Lorg/slf4j/Logger; b field_36382 LOGGER + m (Ljava/lang/String;Ljava/io/OutputStream;)V + m ()V +c akx net/minecraft/class_2981 net/minecraft/server/Eula + f Lorg/slf4j/Logger; a field_13381 LOGGER + f Ljava/nio/file/Path; b field_13380 file + f Z c field_13379 agreed + m ()Z a method_12866 hasAgreedToEULA + m ()Z b method_12867 readFile + m ()V c method_12868 saveDefaults + m (Ljava/nio/file/Path;)V + m ()V +c aky net/minecraft/class_2983 net/minecraft/server/LoggedPrintStream + f Ljava/lang/String; a field_13383 name + f Lorg/slf4j/Logger; b field_13384 LOGGER + m (Ljava/lang/String;)V a method_12870 logLine + m (Ljava/lang/String;Ljava/io/OutputStream;)V + m ()V +c akz net/minecraft/class_2985 net/minecraft/server/PlayerAdvancements + f Lorg/slf4j/Logger; a field_13394 LOGGER + f Lcom/google/gson/Gson; b field_13395 GSON + f Laur; c field_25325 playerList + f Ljava/nio/file/Path; d field_41734 playerSavePath + f Lal; e field_46073 tree + f Ljava/util/Map; f field_41735 progress + f Ljava/util/Set; g field_13390 visible + f Ljava/util/Set; h field_13388 progressChanged + f Ljava/util/Set; i field_41736 rootsToUpdate + f Laqv; j field_13391 player + f Lag; k field_13387 lastSelectedTab + f Z l field_13396 isFirstPacket + f Lcom/mojang/serialization/Codec; m field_46074 codec + m ()V a method_12881 stopListening + m (Lag;)V a method_12888 setSelectedTab + m (Lag;Lai;)V a method_12884 startProgress + m (Lag;Las;)V a method_53637 method_53637 + m (Lag;Ljava/lang/String;)Z a method_12878 award + m (Lag;Ljava/lang/String;Lao;)V a method_53638 registerListener + m (Lah;)Z a method_48029 method_48029 + m (Lah;Ljava/util/Set;Ljava/util/Set;)V a method_48025 updateTreeVisibility + m (Lale;)V a method_12886 reload + m (Lale;Lakr;Lai;)V a method_53639 method_53639 + m (Lale;Lakz$a;)V a method_53640 applyFrom + m (Laqv;)V a method_12875 setPlayer + m (Ljava/util/Map;Lag;Lai;)V a method_53641 method_53641 + m (Ljava/util/Set;Ljava/util/Set;Lah;Z)V a method_48027 method_48027 + m ()V b method_12890 save + m (Lag;)Lai; b method_12882 getOrStartProgress + m (Lag;Ljava/lang/String;)Z b method_12883 revoke + m (Lag;Ljava/lang/String;Lao;)V b method_53642 removeListener + m (Lale;)V b method_12889 registerListeners + m (Laqv;)V b method_12876 flushDirty + m ()Lakz$a; c method_53643 asData + m (Lag;)V c method_48028 markForVisibilityUpdate + m (Lale;)V c method_12872 checkForAutomaticTriggers + m (Lag;)V d method_12874 registerListeners + m (Lale;)V d method_12873 load + m (Lag;)V e method_12880 unregisterListeners + m (Lcom/mojang/datafixers/DataFixer;Laur;Lale;Ljava/nio/file/Path;Laqv;)V + m ()V +c akz$a net/minecraft/class_2985$class_8780 net/minecraft/server/PlayerAdvancements$Data + f Lcom/mojang/serialization/Codec; a field_46075 CODEC + f Ljava/util/Map; b comp_1921 map + m ()Ljava/util/Map; a comp_1921 map + m (Ljava/util/function/BiConsumer;)V a method_53644 forEach + m (Ljava/util/function/BiConsumer;Ljava/util/Map$Entry;)V a method_53645 method_53645 + m (Ljava/util/Map;)V + m ()V +c ala net/minecraft/class_7659 net/minecraft/server/RegistryLayer + f Lala; a field_39971 STATIC + f Lala; b field_39972 WORLDGEN + f Lala; c field_39973 DIMENSIONS + f Lala; d field_39974 RELOADABLE + f Ljava/util/List; e field_39975 VALUES + f Lka$b; f field_39976 STATIC_ACCESS + f [Lala; g field_39977 $VALUES + m ()Ljt; a method_45139 createRegistryAccess + m ()[Lala; b method_45140 $values + m (Ljava/lang/String;I)V + m ()V +c alb net/minecraft/class_9383 net/minecraft/server/ReloadableServerRegistries + f Lorg/slf4j/Logger; a field_49916 LOGGER + f Lcom/google/gson/Gson; b field_49917 GSON + f Ljy; c field_49918 DEFAULT_REGISTRATION_INFO + m (Lakp;Laue;Ljava/util/concurrent/Executor;Lert;)Ljava/util/concurrent/CompletableFuture; a method_58276 method_58276 + m (Lert;Lakp;Laue;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_58277 scheduleElementParse + m (Lert;Lakp;Lki;Lakr;Lcom/google/gson/JsonElement;)V a method_58278 method_58278 + m (Lert;Laue;Lakp;)Lki; a method_58279 method_58279 + m (Lert;Lerx;Ljm$c;)V a method_58280 method_58280 + m (Lerx;Lert;Lka;)V a method_58281 validateRegistry + m (Lerx;Lka$b;Lert;)V a method_58282 method_58282 + m (Ljava/lang/String;Ljava/lang/String;)V a method_58283 method_58283 + m (Ljt;Laue;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_58284 reload + m (Ljt;Ljava/util/List;)Ljt; a method_58285 apply + m (Lki;Lert;Lakr;Ljava/lang/Object;)V a method_58286 method_58286 + m (Ljt;Ljava/util/List;)Ljt; b method_58287 createUpdatedRegistries + m (Ljt;Ljava/util/List;)Ljt; c method_58288 method_58288 + m ()V + m ()V +c alb$a net/minecraft/class_9383$class_9384 net/minecraft/server/ReloadableServerRegistries$EmptyTagLookupWrapper + f Lka; a field_49919 registryAccess + m (Lka;)V +c alb$b net/minecraft/class_9383$class_9385 net/minecraft/server/ReloadableServerRegistries$Holder + f Lka$b; a field_49920 registries + m ()Lka$b; a method_58289 get + m (Lakq;)Ljava/util/Collection; a method_58290 getKeys + m (Lakq;Ljo$b;)Ljava/util/Optional; a method_58291 method_58291 + m (Ljm$c;)Lakr; a method_58292 method_58292 + m (Ljz;)Ljava/util/stream/Stream; a method_58293 method_58293 + m ()Ljn$a; b method_58294 lookup + m (Lakq;)Lerw; b method_58295 getLootTable + m (Lka$b;)V +c alc net/minecraft/class_5350 net/minecraft/server/ReloadableServerResources + f Lorg/slf4j/Logger; a field_36491 LOGGER + f Ljava/util/concurrent/CompletableFuture; b field_25334 DATA_RELOAD_INITIAL_TASK + f Lalb$b; c field_49921 fullRegistryHolder + f Lalc$a; d field_48785 registryLookup + f Leu; e field_25336 commands + f Lczd; f field_25337 recipes + f Laww; g field_25338 tagManager + f Lale; h field_25341 advancements + f Lalf; i field_25342 functionLibrary + m ()Lalf; a method_29465 getFunctionLibrary + m (Lakq;Ljava/util/Map$Entry;)Lawu; a method_40424 method_40424 + m (Lalc;Ljava/lang/Object;)Lalc; a method_40425 method_40425 + m (Lalc;Ljava/lang/Object;Ljava/lang/Throwable;)V a method_42095 method_42095 + m (Laue;Ljt;Lcpl;Leu$a;ILjava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_29466 loadResources + m (Laww$a;)V a method_40426 method_40426 + m (Lcpl;Leu$a;ILaue;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljt;)Ljava/util/concurrent/CompletionStage; a method_58296 method_58296 + m (Ljava/util/Map$Entry;)Ljava/util/List; a method_40423 method_40423 + m (Lka;Laww$a;)V a method_40422 updateRegistryTags + m ()Lalb$b; b method_58297 fullRegistries + m ()Lczd; c method_29471 getRecipeManager + m ()Leu; d method_29472 getCommands + m ()Lale; e method_29473 getAdvancements + m ()Ljava/util/List; f method_40427 listeners + m ()V g method_40421 updateRegistryTags + m (Lka$b;Lcpl;Leu$a;I)V + m ()V +c alc$a net/minecraft/class_5350$class_9180 net/minecraft/server/ReloadableServerResources$ConfigurableRegistryLookup + f Lka; a field_48786 registryAccess + f Lalc$b; b field_40912 missingTagAccessPolicy + m (Lalc$b;)V a method_46724 missingTagAccessPolicy + m (Ljo$b;Ljo$b;)Ljo$b; a method_56623 createDispatchedLookup + m (Ljz;)Ljo$b; a method_56624 method_56624 + m (Lka;)V +c alc$a$1 net/minecraft/class_5350$class_9180$1 net/minecraft/server/ReloadableServerResources$ConfigurableRegistryLookup$1 + f Ljo$b; a field_40913 val$originalLookup + f Ljo$b; b field_40914 val$originalTagAddingLookup + f Lalc$a; c field_40915 field_40915 + m (Lalc$a;Ljo$b;Ljo$b;)V +c alc$b net/minecraft/class_5350$class_7158 net/minecraft/server/ReloadableServerResources$MissingTagAccessPolicy + f Lalc$b; a field_37824 CREATE_NEW + f Lalc$b; b field_37826 FAIL + f [Lalc$b; c field_37827 $VALUES + m ()[Lalc$b; a method_41701 $values + m (Ljava/lang/String;I)V + m ()V +c ald net/minecraft/class_2987 net/minecraft/server/RunningOnDifferentThreadException + f Lald; a field_13400 RUNNING_ON_DIFFERENT_THREAD + m ()V + m ()V +c ale net/minecraft/class_2989 net/minecraft/server/ServerAdvancementManager + f Lorg/slf4j/Logger; a field_13406 LOGGER + f Lcom/google/gson/Gson; b field_13405 GSON + f Ljava/util/Map; c field_13404 advancements + f Lal; d field_46076 tree + f Ljo$a; e field_48787 registries + m ()Lal; a method_53646 tree + m (Lakp;Lcom/google/common/collect/ImmutableMap$Builder;Lakr;Lcom/google/gson/JsonElement;)V a method_20723 method_20723 + m (Lakr;)Lag; a method_12896 get + m (Lakr;Laf;)V a method_54921 validate + m (Lakr;Ljava/lang/String;)V a method_54922 method_54922 + m (Ljava/util/Map;Laue;Lbnf;)V a method_20724 apply + m ()Ljava/util/Collection; b method_12893 getAllAdvancements + m (Ljo$a;)V + m ()V +c alf net/minecraft/class_5349 net/minecraft/server/ServerFunctionLibrary + f Lakq; a field_51976 TYPE_KEY + f Lorg/slf4j/Logger; b field_25326 LOGGER + f Lakk; c field_39978 LISTER + f Ljava/util/Map; d field_25329 functions + f Lawv; e field_25330 tagsLoader + f Ljava/util/Map; f field_25801 tags + f I g field_25331 functionCompilationLevel + f Lcom/mojang/brigadier/CommandDispatcher; h field_25332 dispatcher + m ()Ljava/util/Map; a method_29447 getFunctions + m (Lakr;)Ljava/util/Optional; a method_29456 getFunction + m (Lakr;Lcom/google/common/collect/ImmutableMap$Builder;Lig;Ljava/lang/Throwable;)Ljava/lang/Object; a method_29457 method_29457 + m (Lauc;)Ljava/util/List; a method_29450 readLines + m (Laue;)Ljava/util/Map; a method_45141 method_45141 + m (Lcom/google/common/collect/ImmutableMap$Builder;Lakr;Ljava/util/concurrent/CompletableFuture;)V a method_29452 method_29452 + m (Lcom/mojang/datafixers/util/Pair;)V a method_29453 method_29453 + m (Ljava/util/Map$Entry;Lakr;Let;)Lig; a method_29451 method_29451 + m (Ljava/util/Map;Ljava/lang/Void;Ljava/lang/Throwable;)Ljava/util/Map; a method_29455 method_29455 + m (Ljava/util/concurrent/Executor;Ljava/util/Map;)Ljava/util/concurrent/CompletionStage; a method_29449 method_29449 + m ()Ljava/lang/Iterable; b method_29458 getAvailableTags + m (Lakr;)Ljava/util/Collection; b method_29459 getTag + m (Laue;)Ljava/util/Map; b method_33324 method_33324 + m (ILcom/mojang/brigadier/CommandDispatcher;)V + m ()V +c alg net/minecraft/class_2991 net/minecraft/server/ServerFunctionManager + f Lorg/slf4j/Logger; a field_47181 LOGGER + f Lakr; b field_13417 TICK_FUNCTION_TAG + f Lakr; c field_13412 LOAD_FUNCTION_TAG + f Lnet/minecraft/server/MinecraftServer; d field_13419 server + f Ljava/util/List; e field_13418 ticking + f Z f field_13422 postReload + f Lalf; g field_25333 library + m ()Lcom/mojang/brigadier/CommandDispatcher; a method_12900 getDispatcher + m (Lakr;)Ljava/util/Optional; a method_12905 get + m (Lalf;)V a method_29461 replaceLibrary + m (Lig;)Ljava/lang/String; a method_54251 method_54251 + m (Lig;Let;)V a method_12904 execute + m (Lii;Let;Lhs;)V a method_54252 method_54252 + m (Ljava/util/Collection;Lakr;)V a method_29460 executeTagFunctions + m ()V b method_18699 tick + m (Lakr;)Ljava/util/Collection; b method_29462 getTag + m (Lalf;)V b method_29773 postReload + m ()Let; c method_12899 getGameLoopSender + m ()Ljava/lang/Iterable; d method_29463 getFunctionNames + m ()Ljava/lang/Iterable; e method_29464 getTagNames + m (Lnet/minecraft/server/MinecraftServer;Lalf;)V + m ()V +c alh net/minecraft/class_8599 net/minecraft/server/ServerInfo + m ()Ljava/lang/String; L method_3827 getServerVersion + m ()I M method_3788 getPlayerCount + m ()I N method_3802 getMaxPlayers + m ()Ljava/lang/String; af method_3818 getMotd +c ali net/minecraft/class_2994 net/minecraft/server/ServerInterface + m ()[Ljava/lang/String; O method_3858 getPlayerNames + m ()Lapo; a method_16705 getProperties + m (Ljava/lang/String;)Ljava/lang/String; a method_12934 runCommand + m ()Ljava/lang/String; b method_12929 getServerIp + m ()I d method_12918 getServerPort + m ()Ljava/lang/String; h method_12930 getServerName + m ()Ljava/lang/String; s method_3865 getLevelIdName + m ()Ljava/lang/String; u method_12916 getPluginNames +c alj net/minecraft/class_9782 net/minecraft/server/ServerLinks + f Lalj; a field_51977 EMPTY + f Lyx; b field_52203 TYPE_STREAM_CODEC + f Lyx; c field_52204 UNTRUSTED_LINKS_STREAM_CODEC + f Ljava/util/List; d comp_2826 entries + m ()Z a method_60657 isEmpty + m (Lalj$a;)Lalj$c; a method_60937 method_60937 + m (Lalj$b;)Ljava/util/Optional; a method_60658 findKnownType + m (Lalj$b;Lalj$a;)Z a method_60659 method_60659 + m (Lalj$b;Lalj$b;)Ljava/lang/Boolean; a method_60660 method_60660 + m (Lwz;)Ljava/lang/Boolean; a method_60661 method_60661 + m ()Ljava/util/List; b method_60938 untrust + m ()Ljava/util/List; c comp_2826 entries + m (Ljava/util/List;)V + m ()V +c alj$a net/minecraft/class_9782$class_9783 net/minecraft/server/ServerLinks$Entry + f Lcom/mojang/datafixers/util/Either; a comp_2827 type + f Ljava/net/URI; b comp_2828 link + m ()Lwz; a method_60662 displayName + m (Lalj$b;Ljava/net/URI;)Lalj$a; a method_60663 knownType + m (Lwz;)Lwz; a method_60664 method_60664 + m (Lwz;Ljava/net/URI;)Lalj$a; a method_60665 custom + m ()Lcom/mojang/datafixers/util/Either; b comp_2827 type + m ()Ljava/net/URI; c comp_2828 link + m (Lcom/mojang/datafixers/util/Either;Ljava/net/URI;)V +c alj$b net/minecraft/class_9782$class_9784 net/minecraft/server/ServerLinks$KnownLinkType + f Lalj$b; a field_51981 BUG_REPORT + f Lalj$b; b field_52205 COMMUNITY_GUIDELINES + f Lalj$b; c field_52206 SUPPORT + f Lalj$b; d field_52207 STATUS + f Lalj$b; e field_52208 FEEDBACK + f Lalj$b; f field_52209 COMMUNITY + f Lalj$b; g field_52210 WEBSITE + f Lalj$b; h field_52211 FORUMS + f Lalj$b; i field_52212 NEWS + f Lalj$b; j field_52213 ANNOUNCEMENTS + f Lyx; k field_51982 STREAM_CODEC + f Ljava/util/function/IntFunction; l field_51983 BY_ID + f I m field_51984 id + f Ljava/lang/String; n field_51985 name + f [Lalj$b; o field_51986 $VALUES + m ()Lwz; a method_60666 displayName + m (Lalj$b;)I a method_60667 method_60667 + m (Ljava/net/URI;)Lalj$a; a method_60668 create + m ()[Lalj$b; b method_60669 $values + m (Lalj$b;)I b method_60670 method_60670 + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c alj$c net/minecraft/class_9782$class_9816 net/minecraft/server/ServerLinks$UntrustedEntry + f Lyx; a field_52214 STREAM_CODEC + f Lcom/mojang/datafixers/util/Either; b comp_2860 type + f Ljava/lang/String; c comp_2861 link + m ()Lcom/mojang/datafixers/util/Either; a comp_2860 type + m ()Ljava/lang/String; b comp_2861 link + m (Lcom/mojang/datafixers/util/Either;Ljava/lang/String;)V + m ()V +c alk net/minecraft/class_2995 net/minecraft/server/ServerScoreboard + f Lnet/minecraft/server/MinecraftServer; b field_13428 server + f Ljava/util/Set; c field_13427 trackedObjectives + f Ljava/util/List; d field_13426 dirtyListeners + m ()V a method_12941 setDirty + m (Ljava/lang/Runnable;)V a method_12935 addDirtyListener + m (Lub;Ljo$a;)Leyh; a method_32704 createData + m ()Leql$a; b method_52297 dataFactory + m (Lexy;)Ljava/util/List; d method_12937 getStartTrackingPackets + m (Lexy;)V e method_12939 startTrackingObjective + m (Lexy;)Ljava/util/List; f method_12940 getStopTrackingPackets + m (Lexy;)V g method_12938 stopTrackingObjective + m ()Leyh; h method_32705 createData + m (Lexy;)I h method_12936 getObjectiveDisplaySlotCount + m (Lnet/minecraft/server/MinecraftServer;)V +c alk$a net/minecraft/class_2995$class_2996 net/minecraft/server/ServerScoreboard$Method + f Lalk$a; a field_13431 CHANGE + f Lalk$a; b field_13430 REMOVE + f [Lalk$a; c field_13429 $VALUES + m ()[Lalk$a; a method_36963 $values + m (Ljava/lang/String;I)V + m ()V +c all net/minecraft/class_8915 net/minecraft/server/ServerTickRateManager + f J g field_46919 remainingSprintTicks + f J h field_46920 sprintTickStartTime + f J i field_46921 sprintTimeSpend + f J j field_46922 scheduledCurrentSprintTicks + f Z k field_46923 previousIsFrozen + f Lnet/minecraft/server/MinecraftServer; l field_46924 server + m ()Z a method_54670 isSprinting + m (I)Z a method_54672 stepGameIfPaused + m (ILjava/lang/String;)Lwz; a method_54673 method_54673 + m (Laqv;)V a method_54674 updateJoiningPlayer + m ()Z b method_54676 stopStepping + m (I)Z b method_54677 requestGameToSprint + m ()Z c method_54678 stopSprinting + m ()Z d method_54679 checkShouldSprintThisTick + m ()V e method_54680 endTickWork + m ()V n method_54681 updateStateToClients + m ()V o method_54682 updateStepTicks + m ()V p method_54683 finishTickSprint + m (Lnet/minecraft/server/MinecraftServer;)V +c alm net/minecraft/class_7497 net/minecraft/server/Services + f Lcom/mojang/authlib/minecraft/MinecraftSessionService; a comp_837 sessionService + f Lcom/mojang/authlib/yggdrasil/ServicesKeySet; b comp_838 servicesKeySet + f Lcom/mojang/authlib/GameProfileRepository; c comp_839 profileRepository + f Laun; d comp_840 profileCache + f Ljava/lang/String; e field_39392 USERID_CACHE_FILE + m ()Lazb; a method_51467 profileKeySignatureValidator + m (Lcom/mojang/authlib/yggdrasil/YggdrasilAuthenticationService;Ljava/io/File;)Lalm; a method_44143 create + m ()Z b method_55595 canValidateProfileKeys + m ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; c comp_837 sessionService + m ()Lcom/mojang/authlib/yggdrasil/ServicesKeySet; d comp_838 servicesKeySet + m ()Lcom/mojang/authlib/GameProfileRepository; e comp_839 profileRepository + m ()Laun; f comp_840 profileCache + m (Lcom/mojang/authlib/minecraft/MinecraftSessionService;Lcom/mojang/authlib/yggdrasil/ServicesKeySet;Lcom/mojang/authlib/GameProfileRepository;Laun;)V +c aln net/minecraft/class_3738 net/minecraft/server/TickTask + f I a field_16504 tick + f Ljava/lang/Runnable; b field_16505 runnable + m ()I a method_16338 getTick + m (ILjava/lang/Runnable;)V +c alo net/minecraft/class_7237 net/minecraft/server/WorldLoader + f Lorg/slf4j/Logger; a field_39979 LOGGER + m (Lalo$c;Lalo$f;Lalo$e;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_42098 load + m (Lalo$e;Latu;Ljt;Lalo$b;Lalc;)Ljava/lang/Object; a method_42097 method_42097 + m (Latu;Lalc;Ljava/lang/Throwable;)V a method_42096 method_42096 + m (Laue;Ljt;Lala;Ljava/util/List;)Lka$b; a method_45142 loadLayer + m (Laue;Ljt;Lala;Ljava/util/List;)Ljt; b method_45143 loadAndReplaceLayer + m ()V + m ()V +c alo$a net/minecraft/class_7237$class_7660 net/minecraft/server/WorldLoader$DataLoadContext + f Laue; a comp_987 resources + f Lddr; b comp_988 dataConfiguration + f Lka$b; c comp_989 datapackWorldgen + f Lka$b; d comp_990 datapackDimensions + m ()Laue; a comp_987 resources + m ()Lddr; b comp_988 dataConfiguration + m ()Lka$b; c comp_989 datapackWorldgen + m ()Lka$b; d comp_990 datapackDimensions + m (Laue;Lddr;Lka$b;Lka$b;)V +c alo$b net/minecraft/class_7237$class_7661 net/minecraft/server/WorldLoader$DataLoadOutput + f Ljava/lang/Object; a comp_991 cookie + f Lka$b; b comp_992 finalDimensions + m ()Ljava/lang/Object; a comp_991 cookie + m ()Lka$b; b comp_992 finalDimensions + m (Ljava/lang/Object;Lka$b;)V +c alo$c net/minecraft/class_7237$class_6906 net/minecraft/server/WorldLoader$InitConfig + f Lalo$d; a comp_634 packConfig + f Leu$a; b comp_361 commandSelection + f I c comp_362 functionCompilationLevel + m ()Lalo$d; a comp_634 packConfig + m ()Leu$a; b comp_361 commandSelection + m ()I c comp_362 functionCompilationLevel + m (Lalo$d;Leu$a;I)V +c alo$d net/minecraft/class_7237$class_7238 net/minecraft/server/WorldLoader$PackConfig + f Latp; a comp_635 packRepository + f Lddr; b comp_636 initialDataConfig + f Z c comp_637 safeMode + f Z d comp_993 initMode + m ()Lcom/mojang/datafixers/util/Pair; a method_42099 createResourceManager + m ()Latp; b comp_635 packRepository + m ()Lddr; c comp_636 initialDataConfig + m ()Z d comp_637 safeMode + m ()Z e comp_993 initMode + m (Latp;Lddr;ZZ)V +c alo$e net/minecraft/class_7237$class_7239 net/minecraft/server/WorldLoader$ResultFactory +c alo$f net/minecraft/class_7237$class_6907 net/minecraft/server/WorldLoader$WorldDataSupplier +c alp net/minecraft/class_6904 net/minecraft/server/WorldStem + f Latu; a comp_356 resourceManager + f Lalc; b comp_357 dataPackResources + f Ljt; c comp_358 registries + f Lerl; d comp_359 worldData + m ()Latu; a comp_356 resourceManager + m ()Lalc; b comp_357 dataPackResources + m ()Ljt; c comp_358 registries + m ()Lerl; d comp_359 worldData + m (Latu;Lalc;Ljt;Lerl;)V +c alq net/minecraft/class_8005 net/minecraft/server/advancements/AdvancementVisibilityEvaluator + f I a field_41737 VISIBILITY_DEPTH + m (Laf;Z)Lalq$b; a method_48032 evaluateVisibilityRule + m (Lah;Lit/unimi/dsi/fastutil/Stack;Ljava/util/function/Predicate;Lalq$a;)Z a method_48030 evaluateVisibility + m (Lah;Ljava/util/function/Predicate;Lalq$a;)V a method_48031 evaluateVisibility + m (Lit/unimi/dsi/fastutil/Stack;)Z a method_48033 evaluateVisiblityForUnfinishedNode + m ()V +c alq$a net/minecraft/class_8005$class_8006 net/minecraft/server/advancements/AdvancementVisibilityEvaluator$Output +c alq$b net/minecraft/class_8005$class_8007 net/minecraft/server/advancements/AdvancementVisibilityEvaluator$VisibilityRule + f Lalq$b; a field_41738 SHOW + f Lalq$b; b field_41739 HIDE + f Lalq$b; c field_41740 NO_CHANGE + f [Lalq$b; d field_41741 $VALUES + m ()[Lalq$b; a method_48034 $values + m (Ljava/lang/String;I)V + m ()V +c alr net/minecraft/class_8008 net/minecraft/server/advancements/package-info +c als net/minecraft/class_3002 net/minecraft/server/bossevents/CustomBossEvent + f Lakr; h field_13441 id + f Ljava/util/Set; i field_13440 players + f I j field_13443 value + f I k field_13442 max + m ()Lakr; a method_12959 getTextId + m (I)V a method_12954 setValue + m (Ljava/util/Collection;)Z a method_12962 setPlayers + m (Ljava/util/UUID;)V a method_12964 addOfflinePlayer + m (Ljo$a;)Lub; a method_12963 save + m (Lub;Lakr;Ljo$a;)Lals; a method_12966 load + m (Lxw;)Lxw; a method_12958 method_12958 + m (I)V b method_12956 setMax + m ()I c method_12955 getValue + m (Laqv;)V c method_12957 onPlayerConnect + m ()I d method_12960 getMax + m (Laqv;)V d method_12961 onPlayerDisconnect + m ()Lwz; e method_12965 getDisplayName + m (Lakr;Lwz;)V +c alt net/minecraft/class_3004 net/minecraft/server/bossevents/CustomBossEvents + f Ljava/util/Map; a field_13447 events + m ()Ljava/util/Collection; a method_12968 getIds + m (Lakr;)Lals; a method_12971 get + m (Lakr;Lwz;)Lals; a method_12970 create + m (Lals;)V a method_12973 remove + m (Laqv;)V a method_12975 onPlayerConnect + m (Ljo$a;)Lub; a method_12974 save + m (Lub;Ljo$a;)V a method_12972 load + m ()Ljava/util/Collection; b method_12969 getEvents + m (Laqv;)V b method_12976 onPlayerDisconnect + m ()V +c alu net/minecraft/class_6325 net/minecraft/server/bossevents/package-info +c alv net/minecraft/class_6630 net/minecraft/server/chase/ChaseClient + f Lorg/slf4j/Logger; a field_34983 LOGGER + f I b field_34984 RECONNECT_INTERVAL_SECONDS + f Ljava/lang/String; c field_34985 serverHost + f I d field_34986 serverPort + f Lnet/minecraft/server/MinecraftServer; e field_34987 server + f Z f field_34988 wantsToRun + f Ljava/net/Socket; g field_34989 socket + f Ljava/lang/Thread; h field_34990 thread + m ()V a method_38755 start + m (Lalv$a;)V a method_38758 method_38758 + m (Ljava/lang/String;)V a method_38756 handleMessage + m (Ljava/util/Scanner;)V a method_38757 handleTeleport + m ()V b method_38759 stop + m (Ljava/lang/String;)V b method_38760 executeCommand + m (Ljava/util/Scanner;)Ljava/util/Optional; b method_38761 parseTarget + m ()V c method_38762 run + m (Ljava/lang/String;)V c method_38763 method_38763 + m (Ljava/lang/String;ILnet/minecraft/server/MinecraftServer;)V + m ()V +c alv$a net/minecraft/class_6630$class_6631 net/minecraft/server/chase/ChaseClient$TeleportTarget + f Lakq; a comp_138 level + f Lexc; b comp_139 pos + f Lexb; c comp_140 rot + m ()Lakq; a comp_138 level + m ()Lexc; b comp_139 pos + m ()Lexb; c comp_140 rot + m (Lakq;Lexc;Lexb;)V +c alw net/minecraft/class_6632 net/minecraft/server/chase/ChaseServer + f Lorg/slf4j/Logger; a field_34991 LOGGER + f Ljava/lang/String; b field_34992 serverBindAddress + f I c field_34993 serverPort + f Laur; d field_34994 playerList + f I e field_34995 broadcastIntervalMs + f Z f field_34996 wantsToRun + f Ljava/net/ServerSocket; g field_34997 serverSocket + f Ljava/util/concurrent/CopyOnWriteArrayList; h field_34998 clientSockets + m ()V a method_38764 start + m (Ljava/net/Socket;[B)V a method_38765 method_38765 + m ()V b method_38766 stop + m ()V c method_38767 runSender + m ()V d method_38768 runAcceptor + m ()Lalw$a; e method_38959 getPlayerPosition + m (Ljava/lang/String;ILaur;I)V + m ()V +c alw$a net/minecraft/class_6632$class_6668 net/minecraft/server/chase/ChaseServer$PlayerPosition + f Ljava/lang/String; a comp_160 dimensionName + f D b comp_161 x + f D c comp_162 y + f D d comp_163 z + f F e comp_164 yRot + f F f comp_165 xRot + m ()Ljava/lang/String; a comp_160 dimensionName + m ()D b comp_161 x + m ()D c comp_162 y + m ()D d comp_163 z + m ()F e comp_164 yRot + m ()F f comp_165 xRot + m ()Ljava/lang/String; g method_38960 format + m (Ljava/lang/String;DDDFF)V +c alx net/minecraft/class_6633 net/minecraft/server/chase/package-info +c aly net/minecraft/class_3008 net/minecraft/server/commands/AdvancementCommands + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_47182 ERROR_NO_ACTION_PERFORMED + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_47183 ERROR_CRITERION_NOT_FOUND + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; c field_13453 SUGGEST_ADVANCEMENTS + m (Lah;Ljava/util/List;)V a method_12990 addChildren + m (Laly$a;Ljava/lang/String;Lag;Ljava/util/Collection;)Lwz; a method_51895 method_51895 + m (Laly$a;Ljava/util/Collection;Ljava/util/Collection;)Lwz; a method_51896 method_51896 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_12980 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_12995 method_12995 + m (Lcom/mojang/brigadier/context/CommandContext;Lag;Laly$b;)Ljava/util/List; a method_12996 getAdvancements + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_12992 method_12992 + m (Let;)Z a method_12984 method_12984 + m (Let;Ljava/util/Collection;Laly$a;Lag;Ljava/lang/String;)I a method_12981 performCriterion + m (Let;Ljava/util/Collection;Laly$a;Ljava/util/Collection;)I a method_12988 perform + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_54923 method_54923 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_54924 method_54924 + m (Laly$a;Ljava/lang/String;Lag;Ljava/util/Collection;)Lwz; b method_51897 method_51897 + m (Laly$a;Ljava/util/Collection;Ljava/util/Collection;)Lwz; b method_51898 method_51898 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_12978 method_12978 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_12991 method_12991 + m (Laly$a;Ljava/util/Collection;Ljava/util/Collection;)Lwz; c method_51899 method_51899 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_12983 method_12983 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; c method_12987 method_12987 + m (Laly$a;Ljava/util/Collection;Ljava/util/Collection;)Lwz; d method_51900 method_51900 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_12989 method_12989 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_12982 method_12982 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_12979 method_12979 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_12998 method_12998 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_12993 method_12993 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_12986 method_12986 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_12997 method_12997 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_12994 method_12994 + m (Lcom/mojang/brigadier/context/CommandContext;)I l method_12985 method_12985 + m ()V + m ()V +c aly$a net/minecraft/class_3008$class_3009 net/minecraft/server/commands/AdvancementCommands$Action + f Laly$a; a field_13457 GRANT + f Laly$a; b field_13456 REVOKE + f Ljava/lang/String; c field_13454 key + f [Laly$a; d field_13455 $VALUES + m ()Ljava/lang/String; a method_13001 getKey + m (Laqv;Lag;)Z a method_13002 perform + m (Laqv;Lag;Ljava/lang/String;)Z a method_13000 performCriterion + m (Laqv;Ljava/lang/Iterable;)I a method_12999 perform + m ()[Laly$a; b method_36964 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c aly$a$1 net/minecraft/class_3008$class_3009$1 net/minecraft/server/commands/AdvancementCommands$Action$1 + m (Ljava/lang/String;ILjava/lang/String;)V +c aly$a$2 net/minecraft/class_3008$class_3009$2 net/minecraft/server/commands/AdvancementCommands$Action$2 + m (Ljava/lang/String;ILjava/lang/String;)V +c aly$b net/minecraft/class_3008$class_3010 net/minecraft/server/commands/AdvancementCommands$Mode + f Laly$b; a field_13464 ONLY + f Laly$b; b field_13462 THROUGH + f Laly$b; c field_13458 FROM + f Laly$b; d field_13465 UNTIL + f Laly$b; e field_13461 EVERYTHING + f Z f field_13460 parents + f Z g field_13459 children + f [Laly$b; h field_13463 $VALUES + m ()[Laly$b; a method_36965 $values + m (Ljava/lang/String;IZZ)V + m ()V +c alz net/minecraft/class_5252 net/minecraft/server/commands/AttributeCommand + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_24376 ERROR_NOT_LIVING_ENTITY + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_24377 ERROR_NO_SUCH_ATTRIBUTE + f Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType; c field_24378 ERROR_NO_SUCH_MODIFIER + f Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType; d field_24379 ERROR_MODIFIER_ALREADY_PRESENT + m (Lakr;Ljm;Lbsr;)Lwz; a method_51902 method_51902 + m (Lakr;Ljm;Lbsr;D)Lwz; a method_51903 method_51903 + m (Lbsr;)Lbtn; a method_27733 getLivingEntity + m (Lbsr;Ljm;)Lbus; a method_27734 getAttributeInstance + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_27735 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_27736 method_27736 + m (Let;)Z a method_27738 method_27738 + m (Let;Lbsr;Ljm;D)I a method_27739 getAttributeValue + m (Let;Lbsr;Ljm;Lakr;)I a method_27740 removeModifier + m (Let;Lbsr;Ljm;Lakr;D)I a method_27741 getAttributeModifier + m (Let;Lbsr;Ljm;Lakr;DLbuu$a;)I a method_27742 addModifier + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_27743 method_27743 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_27744 method_27744 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_27745 method_27745 + m (Ljm;)Lwz; a method_45144 getAttributeDescription + m (Ljm;Lbsr;D)Lwz; a method_51901 method_51901 + m (Lakr;Ljm;Lbsr;)Lwz; b method_51905 method_51905 + m (Lbsr;Ljm;)Lbtn; b method_27746 getEntityWithAttribute + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_27747 method_27747 + m (Let;Lbsr;Ljm;D)I b method_27748 getAttributeBase + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_27749 method_27749 + m (Ljm;Lbsr;D)Lwz; b method_51904 method_51904 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_27750 method_27750 + m (Let;Lbsr;Ljm;D)I c method_27751 setAttributeBase + m (Ljm;Lbsr;D)Lwz; c method_51906 method_51906 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_27752 method_27752 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_27753 method_27753 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_27754 method_27754 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_27755 method_27755 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_27756 method_27756 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_27757 method_27757 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_27758 method_27758 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_27759 method_27759 + m ()V + m ()V +c ama net/minecraft/class_3012 net/minecraft/server/commands/BanIpCommands + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13468 ERROR_INVALID_IP + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13467 ERROR_ALREADY_BANNED + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13008 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13010 method_13010 + m (Let;)Z a method_13011 method_13011 + m (Let;Ljava/lang/String;Lwz;)I a method_13009 banIpOrName + m (Ljava/lang/String;Laup;)Lwz; a method_51907 method_51907 + m (Ljava/util/List;)Lwz; a method_51908 method_51908 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13006 method_13006 + m (Let;Ljava/lang/String;Lwz;)I b method_13007 banIp + m ()V + m ()V +c amb net/minecraft/class_3014 net/minecraft/server/commands/BanListCommands + m ()Lwz; a method_51909 method_51909 + m (Laum;)Lwz; a method_51910 method_51910 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13014 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13017 method_13017 + m (Let;)Z a method_13018 method_13018 + m (Let;Ljava/util/Collection;)I a method_13015 showList + m (Ljava/util/Collection;)Lwz; a method_51911 method_51911 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13013 method_13013 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13016 method_13016 + m ()V +c amc net/minecraft/class_3016 net/minecraft/server/commands/BanPlayerCommands + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13473 ERROR_ALREADY_BANNED + m (Lcom/mojang/authlib/GameProfile;Lauz;)Lwz; a method_51912 method_51912 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13021 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13023 method_13023 + m (Let;)Z a method_13024 method_13024 + m (Let;Ljava/util/Collection;Lwz;)I a method_13022 banPlayers + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13020 method_13020 + m ()V + m ()V +c amd net/minecraft/class_3019 net/minecraft/server/commands/BossBarCommands + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; a field_13482 SUGGEST_BOSS_BAR + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_13478 ERROR_ALREADY_EXISTS + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_13486 ERROR_DOESNT_EXIST + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13483 ERROR_NO_PLAYER_CHANGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_13476 ERROR_NO_NAME_CHANGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; f field_13480 ERROR_NO_COLOR_CHANGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; g field_13481 ERROR_NO_STYLE_CHANGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; h field_13477 ERROR_NO_VALUE_CHANGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; i field_13484 ERROR_NO_MAX_CHANGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; j field_13479 ERROR_ALREADY_HIDDEN + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; k field_13485 ERROR_ALREADY_VISIBLE + m ()Lwz; a method_51913 method_51913 + m (Lals;)Lwz; a method_51914 method_51914 + m (Lals;I)Lwz; a method_51915 method_51915 + m (Lals;Ljava/util/Collection;)Lwz; a method_51916 method_51916 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13053 register + m (Lcom/mojang/brigadier/context/CommandContext;)Lals; a method_13054 getBossBar + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13044 method_13044 + m (Let;)I a method_13045 listBars + m (Let;Lakr;Lwz;)I a method_13049 createBar + m (Let;Lals;)I a method_13065 getValue + m (Let;Lals;I)I a method_13036 setValue + m (Let;Lals;Lbqh$a;)I a method_13028 setColor + m (Let;Lals;Lbqh$b;)I a method_13050 setStyle + m (Let;Lals;Ljava/util/Collection;)I a method_13031 setPlayers + m (Let;Lals;Lwz;)I a method_13071 setName + m (Let;Lals;Z)I a method_13068 setVisible + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13059 method_13059 + m (Ljava/util/Collection;)Lwz; a method_51917 method_51917 + m (Lals;)Lwz; b method_51918 method_51918 + m (Lals;I)Lwz; b method_51919 method_51919 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13029 method_13029 + m (Let;)Z b method_13035 method_13035 + m (Let;Lals;)I b method_13056 getMax + m (Let;Lals;I)I b method_13066 setMax + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13063 method_13063 + m (Lals;)Lwz; c method_51920 method_51920 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13033 method_13033 + m (Let;Lals;)I c method_13041 getVisible + m (Lals;)Lwz; d method_51921 method_51921 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13039 method_13039 + m (Let;Lals;)I d method_13030 getPlayers + m (Lals;)Lwz; e method_51922 method_51922 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13057 method_13057 + m (Let;Lals;)I e method_13069 removeBar + m (Lals;)Lwz; f method_51923 method_51923 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13051 method_13051 + m (Lals;)Lwz; g method_51924 method_51924 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13072 method_13072 + m (Lals;)Lwz; h method_51925 method_51925 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13067 method_13067 + m (Lals;)Lwz; i method_51926 method_51926 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_13037 method_13037 + m (Lals;)Lwz; j method_51927 method_51927 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_13047 method_13047 + m (Lals;)Lwz; k method_51928 method_51928 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_13043 method_13043 + m (Lals;)Lwz; l method_51929 method_51929 + m (Lcom/mojang/brigadier/context/CommandContext;)I l method_13060 method_13060 + m (Lals;)Lwz; m method_51930 method_51930 + m (Lcom/mojang/brigadier/context/CommandContext;)I m method_13052 method_13052 + m (Lals;)Lwz; n method_51931 method_51931 + m (Lcom/mojang/brigadier/context/CommandContext;)I n method_13058 method_13058 + m (Lcom/mojang/brigadier/context/CommandContext;)I o method_13040 method_13040 + m (Lcom/mojang/brigadier/context/CommandContext;)I p method_13046 method_13046 + m (Lcom/mojang/brigadier/context/CommandContext;)I q method_13032 method_13032 + m (Lcom/mojang/brigadier/context/CommandContext;)I r method_13034 method_13034 + m (Lcom/mojang/brigadier/context/CommandContext;)I s method_13062 method_13062 + m (Lcom/mojang/brigadier/context/CommandContext;)I t method_13055 method_13055 + m (Lcom/mojang/brigadier/context/CommandContext;)I u method_13061 method_13061 + m (Lcom/mojang/brigadier/context/CommandContext;)I v method_13048 method_13048 + m (Lcom/mojang/brigadier/context/CommandContext;)I w method_13042 method_13042 + m (Lcom/mojang/brigadier/context/CommandContext;)I x method_13038 method_13038 + m (Lcom/mojang/brigadier/context/CommandContext;)I y method_13070 method_13070 + m (Lcom/mojang/brigadier/context/CommandContext;)I z method_13064 method_13064 + m ()V + m ()V +c ame net/minecraft/class_6634 net/minecraft/server/commands/ChaseCommand + f Lcom/google/common/collect/BiMap; a field_34999 DIMENSION_NAMES + f Lorg/slf4j/Logger; b field_44981 LOGGER + f Ljava/lang/String; c field_35000 DEFAULT_CONNECT_HOST + f Ljava/lang/String; d field_35001 DEFAULT_BIND_ADDRESS + f I e field_35002 DEFAULT_PORT + f I f field_35003 BROADCAST_INTERVAL_MS + f Lalw; g field_35004 chaseServer + f Lalv; h field_35005 chaseClient + m ()Lwz; a method_51932 method_51932 + m (I)Lwz; a method_51933 method_51933 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_38770 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_38771 method_38771 + m (Let;)I a method_38772 stop + m (Let;Ljava/lang/String;I)I a method_38773 lead + m (Ljava/lang/String;I)Lwz; a method_51934 method_51934 + m ()Lwz; b method_51935 method_51935 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_38774 method_38774 + m (Let;)Z b method_38775 alreadyRunning + m (Let;Ljava/lang/String;I)I b method_38776 follow + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_38777 method_38777 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_38778 method_38778 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_38779 method_38779 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_38780 method_38780 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_38781 method_38781 + m ()V + m ()V +c amf net/minecraft/class_3020 net/minecraft/server/commands/ClearInventoryCommands + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_13487 ERROR_SINGLE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_13488 ERROR_MULTIPLE + m (ILjava/util/Collection;)Lwz; a method_51936 method_51936 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13076 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13080 method_13080 + m (Lcuq;)Z a method_13081 method_13081 + m (Let;)Z a method_13082 method_13082 + m (Let;Ljava/util/Collection;Ljava/util/function/Predicate;)I a method_58032 clearUnlimited + m (Let;Ljava/util/Collection;Ljava/util/function/Predicate;I)I a method_13077 clearInventory + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13079 method_13079 + m (ILjava/util/Collection;)Lwz; b method_51937 method_51937 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13073 method_13073 + m (Lcuq;)Z b method_13083 method_13083 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13075 method_13075 + m (ILjava/util/Collection;)Lwz; c method_51938 method_51938 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13078 method_13078 + m (ILjava/util/Collection;)Lwz; d method_51939 method_51939 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13074 method_13074 + m ()V + m ()V +c amg net/minecraft/class_3023 net/minecraft/server/commands/CloneCommands + f Ljava/util/function/Predicate; a field_13490 FILTER_AIR + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13493 ERROR_OVERLAP + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; c field_13491 ERROR_AREA_TOO_LARGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13492 ERROR_FAILED + m (I)Lwz; a method_51940 method_51940 + m (Lamg$c;Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_48035 wrapWithCloneMode + m (Lamg$c;Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)I a method_48036 method_48036 + m (Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)I a method_48037 method_48037 + m (Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)Lamg$d; a method_48038 method_48038 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13089 register + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/function/Predicate; a method_48039 method_48039 + m (Lcom/mojang/brigadier/context/CommandContext;Laqu;Ljava/lang/String;)Lamg$d; a method_48040 getLoadedDimensionAndPosition + m (Ldtg;)Z a method_48041 method_48041 + m (Lep;Lamg$c;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_48042 beginEndDestinationAndModeSuffix + m (Lep;Lamg$c;Lamg$c;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_48043 destinationAndModeSuffix + m (Let;)Z a method_13094 method_13094 + m (Let;Lamg$d;Lamg$d;Lamg$d;Ljava/util/function/Predicate;Lamg$e;)I a method_13090 clone + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13099 method_13099 + m (Lamg$c;Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)I b method_48044 method_48044 + m (Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)I b method_48045 method_48045 + m (Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)Lamg$d; b method_48046 method_48046 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/function/Predicate; b method_48047 method_48047 + m (Ldtg;)Z b method_48048 method_48048 + m (Lamg$c;Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)I c method_48049 method_48049 + m (Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)I c method_48050 method_48050 + m (Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)Lamg$d; c method_48051 method_48051 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/function/Predicate; c method_48052 method_48052 + m (Ldtg;)Z c method_48053 method_48053 + m (Lamg$c;Lamg$c;Lamg$c;Lcom/mojang/brigadier/context/CommandContext;)I d method_48054 method_48054 + m (Lcom/mojang/brigadier/context/CommandContext;)Laqu; d method_48055 method_48055 + m (Ldtg;)Z d method_13096 method_13096 + m (Lcom/mojang/brigadier/context/CommandContext;)Laqu; e method_48056 method_48056 + m (Lcom/mojang/brigadier/context/CommandContext;)Laqu; f method_48057 method_48057 + m (Lcom/mojang/brigadier/context/CommandContext;)Laqu; g method_48058 method_48058 + m ()V + m ()V +c amg$a net/minecraft/class_3023$class_9450 net/minecraft/server/commands/CloneCommands$CloneBlockEntityInfo + f Lub; a comp_2537 tag + f Lkm; b comp_2538 components + m ()Lub; a comp_2537 tag + m ()Lkm; b comp_2538 components + m (Lub;Lkm;)V +c amg$b net/minecraft/class_3023$class_3024 net/minecraft/server/commands/CloneCommands$CloneBlockInfo + f Ljd; a comp_2539 pos + f Ldtc; b comp_2540 state + f Lamg$a; c comp_2541 blockEntityInfo + m ()Ljd; a comp_2539 pos + m ()Ldtc; b comp_2540 state + m ()Lamg$a; c comp_2541 blockEntityInfo + m (Ljd;Ldtc;Lamg$a;)V +c amg$c net/minecraft/class_3023$class_8009 net/minecraft/server/commands/CloneCommands$CommandFunction +c amg$d net/minecraft/class_3023$class_8010 net/minecraft/server/commands/CloneCommands$DimensionAndPosition + f Laqu; a comp_1185 dimension + f Ljd; b comp_1186 position + m ()Laqu; a comp_1185 dimension + m ()Ljd; b comp_1186 position + m (Laqu;Ljd;)V +c amg$e net/minecraft/class_3023$class_3025 net/minecraft/server/commands/CloneCommands$Mode + f Lamg$e; a field_13497 FORCE + f Lamg$e; b field_13500 MOVE + f Lamg$e; c field_13499 NORMAL + f Z d field_13498 canOverlap + f [Lamg$e; e field_13501 $VALUES + m ()Z a method_13109 canOverlap + m ()[Lamg$e; b method_36966 $values + m (Ljava/lang/String;IZ)V + m ()V +c amh net/minecraft/class_8102 net/minecraft/server/commands/DamageCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_42238 ERROR_INVULNERABLE + m (FLbsr;)Lwz; a method_51941 method_51941 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_48748 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_48749 method_48749 + m (Let;)Z a method_48750 method_48750 + m (Let;Lbsr;FLbrk;)I a method_48751 damage + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_48752 method_48752 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_48753 method_48753 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_48754 method_48754 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_48755 method_48755 + m ()V + m ()V +c ami net/minecraft/class_3027 net/minecraft/server/commands/DataPackCommand + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_13503 ERROR_UNKNOWN_PACK + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_13504 ERROR_PACK_ALREADY_ENABLED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_13505 ERROR_PACK_ALREADY_DISABLED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_49775 ERROR_CANNOT_DISABLE_FEATURE + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; e field_39980 ERROR_PACK_FEATURES_NOT_ENABLED + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; f field_13506 SELECTED_PACKS + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; g field_13502 UNSELECTED_PACKS + m ()Lwz; a method_51942 method_51942 + m (Latm;)Lwz; a method_13134 method_13134 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13125 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13138 method_13138 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13120 method_13120 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Z)Latm; a method_13127 getPack + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Latm;)V a method_13112 method_13112 + m (Lcpl;Latm;)Z a method_45145 method_45145 + m (Let;)I a method_13121 listPacks + m (Let;Latm;)I a method_13140 disablePack + m (Let;Latm;Lami$a;)I a method_13114 enablePack + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_58142 method_58142 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_45146 method_45146 + m (Ljava/util/Collection;)Lwz; a method_51943 method_51943 + m (Ljava/util/Collection;Lcpl;Latm;)Z a method_29477 method_29477 + m (Ljava/util/Collection;Ljava/lang/String;)Z a method_29776 method_29776 + m (Ljava/util/List;)Lwz; a method_51944 method_51944 + m (Ljava/util/List;Latm;)V a method_13139 method_13139 + m ()Lwz; b method_51945 method_51945 + m (Latm;)Lwz; b method_13132 method_13132 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13111 method_13111 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_13136 method_13136 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Latm;)V b method_13133 method_13133 + m (Let;)I b method_13128 listAvailablePacks + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13131 method_13131 + m (Ljava/util/List;Latm;)V b method_13122 method_13122 + m (Latm;)Lwz; c method_51946 method_51946 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13115 method_13115 + m (Let;)I c method_13126 listEnabledPacks + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_13135 method_13135 + m (Latm;)Lwz; d method_51947 method_51947 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13118 method_13118 + m (Let;)Z d method_13119 method_13119 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_13117 method_13117 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13130 method_13130 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13123 method_13123 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13141 method_13141 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13137 method_13137 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_13116 method_13116 + m ()V + m ()V +c ami$a net/minecraft/class_3027$class_3028 net/minecraft/server/commands/DataPackCommand$Inserter +c amj net/minecraft/class_3030 net/minecraft/server/commands/DeOpCommands + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13507 ERROR_NOT_OP + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13143 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13146 method_13146 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13145 method_13145 + m (Let;)Z a method_13147 method_13147 + m (Let;Ljava/util/Collection;)I a method_13144 deopPlayers + m (Ljava/util/Collection;)Lwz; a method_51948 method_51948 + m ()V + m ()V +c amk net/minecraft/class_3032 net/minecraft/server/commands/DebugCommand + f Lorg/slf4j/Logger; a field_20283 LOGGER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13597 ERROR_NOT_RUNNING + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13596 ERROR_ALREADY_RUNNING + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_46638 NO_RECURSIVE_TRACES + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_47151 NO_RETURN_RUN + m ()Lwz; a method_51949 method_51949 + m (DLbne;D)Lwz; a method_51950 method_51950 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13156 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13154 method_13154 + m (Let;)I a method_13159 start + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_36353 method_36353 + m (Let;)I b method_13158 stop + m (Let;)Z c method_13161 method_13161 + m (Let;)Z d method_13157 method_13157 + m ()V + m ()V +c amk$a net/minecraft/class_3032$class_8829 net/minecraft/server/commands/DebugCommand$TraceCustomExecutor + m (ILjava/util/Collection;Ljava/lang/String;)Lwz; a method_54253 method_54253 + m (Let;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54256 runGuarded + m (Ljava/util/Collection;Let;ILjava/lang/String;Lhs;Lhu;)V a method_54257 method_54257 + m (ILjava/util/Collection;Ljava/lang/String;)Lwz; b method_54258 method_54258 + m ()V +c amk$a$1 net/minecraft/class_3032$class_8829$1 net/minecraft/server/commands/DebugCommand$TraceCustomExecutor$1 + f Ljava/io/PrintWriter; a field_46639 val$output + f Lig; b field_46640 val$function + m (Let;Lhs;Lhu;)V a method_54260 execute + m (Lamk$a;Lii;Leq;ZLjava/io/PrintWriter;Lig;)V +c amk$b net/minecraft/class_3032$class_6347 net/minecraft/server/commands/DebugCommand$Tracer + f I b field_33550 INDENT_OFFSET + f Ljava/io/PrintWriter; c field_33551 output + f I d field_33552 lastIndent + f Z e field_33553 waitingForResult + m (I)V a method_36355 indentAndSave + m (I)V b method_36356 printIndent + m ()V e method_36357 newLine + m (Ljava/io/PrintWriter;)V +c aml net/minecraft/class_8600 net/minecraft/server/commands/DebugConfigCommand + m (Lcom/mojang/authlib/GameProfile;)Lwz; a method_52298 method_52298 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_52299 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_52300 method_52300 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_52301 method_52301 + m (Let;)Z a method_52302 method_52302 + m (Let;Laqv;)I a method_52303 config + m (Let;Ljava/util/UUID;)I a method_52304 unconfig + m (Lnet/minecraft/server/MinecraftServer;)Ljava/lang/Iterable; a method_52305 getUuidsInConfig + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_52306 method_52306 + m ()V +c amm net/minecraft/class_6326 net/minecraft/server/commands/DebugMobSpawningCommand + m (Lbtq;Lcom/mojang/brigadier/context/CommandContext;)I a method_36183 method_36183 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_36184 register + m (Let;)Z a method_36185 method_36185 + m (Let;Lbtq;Ljd;)I a method_36186 spawnMobs + m ()V +c amn net/minecraft/class_6327 net/minecraft/server/commands/DebugPathCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_33387 ERROR_NOT_MOB + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_33388 ERROR_NO_PATH + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_33389 ERROR_NOT_COMPLETE + m ()Lwz; a method_51953 method_51953 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_36187 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_36188 method_36188 + m (Let;)Z a method_36189 method_36189 + m (Let;Ljd;)I a method_36190 fillBlocks + m ()V + m ()V +c amo net/minecraft/class_3035 net/minecraft/server/commands/DefaultGameModeCommands + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13166 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13165 method_13165 + m (Ldct;)Lwz; a method_51954 method_51954 + m (Let;)Z a method_13168 method_13168 + m (Let;Ldct;)I a method_13167 setMode + m ()V +c amp net/minecraft/class_3036 net/minecraft/server/commands/DifficultyCommand + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_13602 ERROR_ALREADY_DIFFICULT + m (Lbqo;)Lwz; a method_51955 method_51955 + m (Lbqo;Lcom/mojang/brigadier/context/CommandContext;)I a method_13174 method_13174 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13169 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13171 method_13171 + m (Let;)Z a method_13172 method_13172 + m (Let;Lbqo;)I a method_13173 setDifficulty + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13170 method_13170 + m (Lbqo;)Lwz; b method_51956 method_51956 + m ()V + m ()V +c amq net/minecraft/class_3043 net/minecraft/server/commands/EffectCommands + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13607 ERROR_GIVE_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13609 ERROR_CLEAR_EVERYTHING_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13608 ERROR_CLEAR_SPECIFIC_FAILED + m (Lbrx;Ljava/util/Collection;)Lwz; a method_51957 method_51957 + m (Lbrx;Ljava/util/Collection;I)Lwz; a method_51958 method_51958 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13229 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_48545 method_48545 + m (Let;)Z a method_13235 method_13235 + m (Let;Ljava/util/Collection;)I a method_13230 clearEffects + m (Let;Ljava/util/Collection;Ljm;)I a method_13231 clearEffect + m (Let;Ljava/util/Collection;Ljm;Ljava/lang/Integer;IZ)I a method_13227 giveEffect + m (Ljava/util/Collection;)Lwz; a method_51959 method_51959 + m (Lbrx;Ljava/util/Collection;)Lwz; b method_51960 method_51960 + m (Lbrx;Ljava/util/Collection;I)Lwz; b method_51961 method_51961 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_48546 method_48546 + m (Ljava/util/Collection;)Lwz; b method_51962 method_51962 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_48547 method_48547 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13234 method_13234 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13225 method_13225 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13233 method_13233 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13226 method_13226 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13232 method_13232 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_13228 method_13228 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_23650 method_23650 + m ()V + m ()V +c amr net/minecraft/class_3045 net/minecraft/server/commands/EmoteCommands + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13237 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13238 method_13238 + m (Lcom/mojang/brigadier/context/CommandContext;Lxp;)V a method_43645 method_43645 + m ()V +c ams net/minecraft/class_3048 net/minecraft/server/commands/EnchantCommand + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_13629 ERROR_NOT_LIVING_ENTITY + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_13631 ERROR_NO_ITEM + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_13633 ERROR_INCOMPATIBLE + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; d field_13632 ERROR_LEVEL_TOO_HIGH + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_13630 ERROR_NOTHING_HAPPENED + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13243 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13245 method_13245 + m (Let;)Z a method_13246 method_13246 + m (Let;Ljava/util/Collection;Ljm;I)I a method_13241 enchant + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13244 method_13244 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13248 method_13248 + m (Ljm;ILjava/util/Collection;)Lwz; a method_51963 method_51963 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13240 method_13240 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13242 method_13242 + m (Ljm;ILjava/util/Collection;)Lwz; b method_51964 method_51964 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_13247 method_13247 + m ()V + m ()V +c amt net/minecraft/class_3050 net/minecraft/server/commands/ExecuteCommand + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; a field_46642 ERROR_FUNCTION_CONDITION_INSTANTATION_FAILURE + f I b field_33390 MAX_TEST_AREA + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; c field_13635 ERROR_AREA_TOO_LARGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13636 ERROR_CONDITIONAL_FAILED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; e field_13637 ERROR_CONDITIONAL_FAILED_COUNT + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; f field_20852 SUGGEST_PREDICATE + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; A method_13292 method_13292 + m ()Lwz; a method_51965 method_51965 + m (I)Lwz; a method_51966 method_51966 + m (II)Z a method_13302 method_13302 + m (Lamt$b;Lcom/mojang/brigadier/context/CommandContext;)I a method_13296 method_13296 + m (Lapg;Lfl$g;)I a method_13303 checkMatchingData + m (Lapg;ZLfl$g;Ljava/util/function/IntFunction;ZI)V a method_13294 method_13294 + m (Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I a method_13317 method_13317 + m (Laph$c;ZLcom/mojang/brigadier/context/CommandContext;)Let; a method_13309 method_13309 + m (Laqu;Ljd;)Z a method_48059 isChunkLoaded + m (Laqu;Ljd;Ljd;Ljd;Z)Ljava/util/OptionalInt; a method_13261 checkRegions + m (Lbsr;)Ljava/util/stream/Stream; a method_48060 method_48060 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13271 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_58033 method_58033 + m (Lcom/mojang/brigadier/context/CommandContext;I)Luy; a method_13275 method_13275 + m (Lcom/mojang/brigadier/context/CommandContext;Lamt$e;)Z a method_13263 checkScore + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_22831 method_22831 + m (Lcom/mojang/brigadier/context/CommandContext;Ldh$d;)Z a method_13313 checkScore + m (Lcom/mojang/brigadier/context/CommandContext;Z)I a method_13306 checkIfRegions + m (Lcom/mojang/brigadier/context/CommandContext;ZZ)Ljava/util/Collection; a method_13319 expect + m (Lcom/mojang/brigadier/tree/CommandNode;Lcom/mojang/brigadier/builder/ArgumentBuilder;ZLamt$c;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13310 addConditional + m (Lcom/mojang/brigadier/tree/CommandNode;Lcom/mojang/brigadier/builder/ArgumentBuilder;ZZ)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13320 addIfBlocksConditional + m (Lcom/mojang/brigadier/tree/CommandNode;Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; a method_48061 createRelationOperations + m (Lcom/mojang/brigadier/tree/CommandNode;Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;ZLep;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13298 addConditionals + m (Lcom/mojang/brigadier/tree/CommandNode;ZLaph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13258 method_13258 + m (Lcom/mojang/brigadier/tree/LiteralCommandNode;Laph$c;ZLcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13253 method_13253 + m (Lcom/mojang/brigadier/tree/LiteralCommandNode;Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;Z)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13289 wrapStores + m (Let;)Z a method_13254 method_13254 + m (Let;Lals;ZZ)Let; a method_13297 storeValue + m (Let;Lapg;Lfl$g;Ljava/util/function/IntFunction;Z)Let; a method_13265 storeData + m (Let;Lbsr;)Ljava/util/List; a method_48062 method_48062 + m (Let;Ljava/util/Collection;Lexy;Z)Let; a method_13290 storeValue + m (Let;Ljd;Lcrr;Ljava/util/function/Predicate;)I a method_58034 countItems + m (Let;Ljm$c;)Let; a method_48756 spawnEntityAndRedirect + m (Let;Ljm;)Z a method_22829 checkCustomPredicate + m (Lev;Ljava/util/List;Ljava/util/function/Function;Ljava/util/function/IntPredicate;Lcom/mojang/brigadier/context/ContextChain;Lub;Lht;Lamt$a;Lhn;)V a method_54264 scheduleFunctionConditionsAndTest + m (Ljava/lang/Iterable;Lcrr;Ljava/util/function/Predicate;)I a method_58035 countItems + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13312 method_13312 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_54263 method_54263 + m (Ljava/util/Collection;Leyg;Lexy;ZZI)V a method_13260 method_13260 + m (Ljava/util/List;Lev;Lht;)V a method_54852 method_54852 + m (Ljava/util/OptionalInt;)Lwz; a method_51967 method_51967 + m (Ljava/util/function/Function;)Lcom/mojang/brigadier/RedirectModifier; a method_48063 expandOneToOneEntityRelation + m (Ljava/util/function/Function;Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; a method_48064 method_48064 + m (Ljava/util/function/IntPredicate;Ljava/util/List;Lev;ZI)V a method_54853 method_54853 + m (ZLamt$b;)Lcom/mojang/brigadier/Command; a method_13323 createNumericConditionalHandler + m (ZLamt$c;Lcom/mojang/brigadier/context/CommandContext;)I a method_13270 method_13270 + m (ZLaph$c;Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; a method_13301 method_13301 + m (ZLcom/mojang/brigadier/context/CommandContext;)I a method_13273 method_13273 + m (ZZLals;ZI)V a method_13277 method_13277 + m (ZZLcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; a method_13287 method_13287 + m ()Lwz; b method_51968 method_51968 + m (II)Z b method_13250 method_13250 + m (Lamt$b;Lcom/mojang/brigadier/context/CommandContext;)I b method_13305 method_13305 + m (Laph$c;ZLcom/mojang/brigadier/context/CommandContext;)Let; b method_13311 method_13311 + m (Lbsr;)Ljava/util/Optional; b method_48332 method_48332 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_58036 method_58036 + m (Lcom/mojang/brigadier/context/CommandContext;I)Luy; b method_13307 method_13307 + m (Lcom/mojang/brigadier/context/CommandContext;Z)I b method_13304 checkUnlessRegions + m (Let;)Z b method_13255 method_13255 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13316 method_13316 + m (Ljava/util/function/Function;)Lcom/mojang/brigadier/RedirectModifier; b method_48066 expandOneToManyEntityRelation + m (Ljava/util/function/Function;Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; b method_48067 method_48067 + m (ZLamt$c;Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; b method_13267 method_13267 + m (ZLcom/mojang/brigadier/context/CommandContext;)I b method_13315 method_13315 + m ()Lwz; c method_51969 method_51969 + m (II)Z c method_13299 method_13299 + m (Laph$c;ZLcom/mojang/brigadier/context/CommandContext;)Let; c method_13264 method_13264 + m (Lbsr;)Ljava/util/Optional; c method_48065 method_48065 + m (Lcom/mojang/brigadier/context/CommandContext;)Z c method_22830 method_22830 + m (Lcom/mojang/brigadier/context/CommandContext;I)Luy; c method_13276 method_13276 + m (Lcom/mojang/brigadier/context/CommandContext;Z)Ljava/util/OptionalInt; c method_13272 checkRegions + m (ZLcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; c method_58037 method_58037 + m (II)Z d method_13257 method_13257 + m (Laph$c;ZLcom/mojang/brigadier/context/CommandContext;)Let; d method_13251 method_13251 + m (Lbsr;)Ljava/util/Optional; d method_48068 method_48068 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13321 method_13321 + m (Lcom/mojang/brigadier/context/CommandContext;I)Luy; d method_13318 method_13318 + m (ZLcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; d method_58038 method_58038 + m (II)Z e method_55338 method_55338 + m (Laph$c;ZLcom/mojang/brigadier/context/CommandContext;)Let; e method_13256 method_13256 + m (Lbsr;)Ljava/util/Optional; e method_48069 method_48069 + m (Lcom/mojang/brigadier/context/CommandContext;)Z e method_13262 method_13262 + m (Lcom/mojang/brigadier/context/CommandContext;I)Luy; e method_13283 method_13283 + m (ZLcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; e method_13300 method_13300 + m (Laph$c;ZLcom/mojang/brigadier/context/CommandContext;)Let; f method_13284 method_13284 + m (Lbsr;)Ljava/util/Optional; f method_48071 method_48071 + m (Lcom/mojang/brigadier/context/CommandContext;)Z f method_13266 method_13266 + m (Lcom/mojang/brigadier/context/CommandContext;I)Luy; f method_13324 method_13324 + m (ZLcom/mojang/brigadier/context/CommandContext;)Let; f method_13285 method_13285 + m (Lbsr;)Ljava/util/Optional; g method_48072 method_48072 + m (Lcom/mojang/brigadier/context/CommandContext;)Z g method_13249 method_13249 + m (ZLcom/mojang/brigadier/context/CommandContext;)Let; g method_13322 method_13322 + m (Lbsr;)Ljava/util/Optional; h method_48073 method_48073 + m (Lcom/mojang/brigadier/context/CommandContext;)Z h method_13288 method_13288 + m (ZLcom/mojang/brigadier/context/CommandContext;)Let; h method_13269 method_13269 + m (Lbsr;)Z i method_48074 method_48074 + m (Lcom/mojang/brigadier/context/CommandContext;)Z i method_13282 method_13282 + m (Lbsr;)Z j method_48075 method_48075 + m (Lcom/mojang/brigadier/context/CommandContext;)Z j method_13280 method_13280 + m (Lcom/mojang/brigadier/context/CommandContext;)Z k method_48076 method_48076 + m (Lcom/mojang/brigadier/context/CommandContext;)Z l method_48070 method_48070 + m (Lcom/mojang/brigadier/context/CommandContext;)Z m method_47527 method_47527 + m (Lcom/mojang/brigadier/context/CommandContext;)Z n method_13274 method_13274 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; o method_48757 method_48757 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; p method_13286 method_13286 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; q method_13259 method_13259 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; r method_13252 method_13252 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; s method_13268 method_13268 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; t method_13291 method_13291 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; u method_13293 method_13293 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; v method_13308 method_13308 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; w method_49419 method_49419 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; x method_13281 method_13281 + m (Lcom/mojang/brigadier/context/CommandContext;)Let; y method_13314 method_13314 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; z method_13295 method_13295 + m ()V + m ()V +c amt$a net/minecraft/class_3050$class_8830 net/minecraft/server/commands/ExecuteCommand$CommandGetter +c amt$b net/minecraft/class_3050$class_3051 net/minecraft/server/commands/ExecuteCommand$CommandNumericPredicate +c amt$c net/minecraft/class_3050$class_3052 net/minecraft/server/commands/ExecuteCommand$CommandPredicate +c amt$d net/minecraft/class_3050$class_8831 net/minecraft/server/commands/ExecuteCommand$ExecuteIfFunctionCustomModifier + f Ljava/util/function/IntPredicate; a field_46643 check + m (I)Z a method_54268 method_54268 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/Collection; a method_54269 method_54269 + m (Let;Ljava/util/List;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54854 apply + m (I)Z b method_54271 method_54271 + m (Z)V +c amt$e net/minecraft/class_3050$class_9007 net/minecraft/server/commands/ExecuteCommand$IntBiPredicate +c amu net/minecraft/class_3054 net/minecraft/server/commands/ExperienceCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13638 ERROR_SET_POINTS_INVALID + m (Lamu$a;ILjava/util/Collection;)Lwz; a method_51970 method_51970 + m (Lamu$a;Laqv;I)Lwz; a method_51971 method_51971 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13330 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13338 method_13338 + m (Let;)Z a method_13334 method_13334 + m (Let;Laqv;Lamu$a;)I a method_13328 queryExperience + m (Let;Ljava/util/Collection;ILamu$a;)I a method_13326 addExperience + m (Lamu$a;ILjava/util/Collection;)Lwz; b method_51972 method_51972 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13327 method_13327 + m (Let;)Z b method_13335 method_13335 + m (Let;Ljava/util/Collection;ILamu$a;)I b method_13333 setExperience + m (Lamu$a;ILjava/util/Collection;)Lwz; c method_51973 method_51973 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13332 method_13332 + m (Lamu$a;ILjava/util/Collection;)Lwz; d method_51974 method_51974 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13336 method_13336 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13331 method_13331 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13329 method_13329 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13339 method_13339 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13337 method_13337 + m ()V + m ()V +c amu$a net/minecraft/class_3054$class_3055 net/minecraft/server/commands/ExperienceCommand$Type + f Lamu$a; a field_13644 POINTS + f Lamu$a; b field_13641 LEVELS + f Ljava/util/function/BiConsumer; c field_13639 add + f Ljava/util/function/BiPredicate; d field_13642 set + f Ljava/lang/String; e field_13643 name + f Ljava/util/function/ToIntFunction; f field_13645 query + f [Lamu$a; g field_13640 $VALUES + m ()[Lamu$a; a method_36967 $values + m (Laqv;)I a method_13340 method_13340 + m (Laqv;Ljava/lang/Integer;)Z a method_13342 method_13342 + m (Laqv;)I b method_13341 method_13341 + m (Laqv;Ljava/lang/Integer;)Z b method_13343 method_13343 + m (Ljava/lang/String;ILjava/lang/String;Ljava/util/function/BiConsumer;Ljava/util/function/BiPredicate;Ljava/util/function/ToIntFunction;)V + m ()V +c amv net/minecraft/class_7926 net/minecraft/server/commands/FillBiomeCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_41279 ERROR_NOT_LOADED + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_41281 ERROR_VOLUME_TOO_LARGE + m (I)I a method_47528 quantize + m (Laqu;Ljd;Ljd;Ljm;)Lcom/mojang/datafixers/util/Either; a method_55339 fill + m (Laqu;Ljd;Ljd;Ljm;Ljava/util/function/Predicate;Ljava/util/function/Consumer;)Lcom/mojang/datafixers/util/Either; a method_55340 fill + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_47529 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_47818 method_47818 + m (Lduy;Lejj;Ljava/util/function/Predicate;Lorg/apache/commons/lang3/mutable/MutableInt;Ljm;IIILdef$f;)Ljm; a method_47534 method_47534 + m (Let;)Z a method_47532 method_47532 + m (Let;Ljava/util/function/Supplier;)V a method_55341 method_55341 + m (Let;Ljd;Ljd;Ljm$c;Ljava/util/function/Predicate;)I a method_47533 fill + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_47536 method_47536 + m (Ljava/util/function/Supplier;)V a method_55343 method_55343 + m (Ljd;)Ljd; a method_47535 quantize + m (Ljm;)Z a method_55342 method_55342 + m (Lorg/apache/commons/lang3/mutable/MutableInt;Lduy;Lejj;Ljm;Ljava/util/function/Predicate;)Lddz; a method_47531 makeResolver + m (Lorg/apache/commons/lang3/mutable/MutableInt;Lejj;)Lwz; a method_51975 method_51975 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_47530 method_47530 + m (Ljm;)Z b method_47819 method_47819 + m ()V + m ()V +c amw net/minecraft/class_3057 net/minecraft/server/commands/FillCommand + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; a field_13649 ERROR_AREA_TOO_LARGE + f Lgk; b field_13648 HOLLOW_CORE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13650 ERROR_FAILED + m (I)Lwz; a method_51976 method_51976 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13347 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13355 method_13355 + m (Ldtg;)Z a method_13348 method_13348 + m (Let;)Z a method_13351 method_13351 + m (Let;Lejj;Lgk;Lamw$a;Ljava/util/function/Predicate;)I a method_13354 fillBlocks + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13352 method_13352 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13345 method_13345 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13350 method_13350 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13353 method_13353 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13349 method_13349 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13346 method_13346 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13356 method_13356 + m ()V + m ()V +c amw$a net/minecraft/class_3057$class_3058 net/minecraft/server/commands/FillCommand$Mode + f Lamw$a; a field_13655 REPLACE + f Lamw$a; b field_13652 OUTLINE + f Lamw$a; c field_13656 HOLLOW + f Lamw$a; d field_13651 DESTROY + f Laoh$a; e field_13654 filter + f [Lamw$a; f field_13653 $VALUES + m ()[Lamw$a; a method_36968 $values + m (Lejj;Ljd;Lgk;Laqu;)Lgk; a method_13360 method_13360 + m (Lejj;Ljd;Lgk;Laqu;)Lgk; b method_13361 method_13361 + m (Lejj;Ljd;Lgk;Laqu;)Lgk; c method_13359 method_13359 + m (Lejj;Ljd;Lgk;Laqu;)Lgk; d method_13358 method_13358 + m (Ljava/lang/String;ILaoh$a;)V + m ()V +c amx net/minecraft/class_3060 net/minecraft/server/commands/ForceLoadCommand + f I a field_33392 MAX_CHUNK_LIMIT + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_13657 ERROR_TOO_MANY_CHUNKS + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; c field_13659 ERROR_NOT_TICKING + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13658 ERROR_ALL_ADDED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_13660 ERROR_NONE_REMOVED + m (ILakq;Ljava/lang/String;)Lwz; a method_51977 method_51977 + m (Lakq;)Lwz; a method_51978 method_51978 + m (Lakq;Ljava/lang/String;)Lwz; a method_51979 method_51979 + m (Laqu;J)V a method_13377 method_13377 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13365 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13375 method_13375 + m (Ldcd;Lakq;)Lwz; a method_51980 method_51980 + m (Let;)I a method_13373 listForceLoad + m (Let;Laqi;)I a method_13374 queryForceLoad + m (Let;Laqi;Laqi;Z)I a method_13372 changeForceLoad + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13369 method_13369 + m (ZILakq;Ldcd;Ldcd;)Lwz; a method_51982 method_51982 + m (ZLdcd;Lakq;)Lwz; a method_51981 method_51981 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13363 method_13363 + m (Let;)I b method_13366 removeAll + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13376 method_13376 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13368 method_13368 + m (Let;)Z c method_13371 method_13371 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13370 method_13370 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13367 method_13367 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13364 method_13364 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13378 method_13378 + m ()V + m ()V +c amy net/minecraft/class_3062 net/minecraft/server/commands/FunctionCommand + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; a field_46645 ERROR_FUNCTION_INSTANTATION_FAILURE + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; b field_13662 SUGGEST_FUNCTION + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_44982 ERROR_ARGUMENT_NOT_COMPOUND + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_46644 ERROR_NO_FUNCTIONS + f Lamy$b; e field_46646 FULL_CONTEXT_CALLBACKS + m (Lamy$a;Leq;Lhs;Lhu;)V a method_54855 method_54855 + m (Lamy$a;ZI)V a method_54856 method_54856 + m (Lamy$b;Lev;Lakr;Leq;ZI)V a method_54857 method_54857 + m (Laph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_52309 method_52309 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13380 register + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13382 method_13382 + m (Let;)Let; a method_54272 modifySenderForExecution + m (Lev;Lamy$b;Lakr;Leq;)Leq; a method_54858 decorateOutputIfNeeded + m (Lfl$g;Lapg;)Lub; a method_52313 getArgumentTag + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_54273 method_54273 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_54274 method_54274 + m (Ljava/util/Collection;Lub;Lev;Lev;Lht;Lamy$b;)V a method_54859 queueFunctionsAsReturn + m (Ljava/util/Collection;Lub;Lev;Lev;Lht;Lamy$b;Lhn;)V a method_54275 queueFunctions + m (Lub;Lht;Lcom/mojang/brigadier/CommandDispatcher;Lev;Lig;Lakr;Leq;Z)V a method_54860 instantiateAndQueueFunctions + m (Let;)Z b method_13384 method_13384 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_52314 method_52314 + m (Ljava/util/Collection;Lub;Lev;Lev;Lht;Lamy$b;)V b method_54861 queueFunctionsNoReturn + m ()V + m ()V +c amy$1 net/minecraft/class_3062$1 net/minecraft/server/commands/FunctionCommand$1 + f Laph$c; a field_46647 val$provider + m (Laph$c;)V +c amy$2 net/minecraft/class_3062$2 net/minecraft/server/commands/FunctionCommand$2 + f Laph$c; a field_46648 val$provider + m (Laph$c;)V +c amy$3 net/minecraft/class_3062$3 net/minecraft/server/commands/FunctionCommand$3 + m ()V +c amy$4 net/minecraft/class_3062$4 net/minecraft/server/commands/FunctionCommand$4 + m ()V +c amy$5 net/minecraft/class_3062$5 net/minecraft/server/commands/FunctionCommand$5 + m (Lakr;I)Lwz; a method_54278 method_54278 + m (Let;Lakr;I)V a method_54279 signalResult + m ()V +c amy$a net/minecraft/class_3062$class_8932 net/minecraft/server/commands/FunctionCommand$1Accumulator + f Z a field_47152 anyResult + f I b field_47153 sum + m (I)V a method_54862 add + m ()V +c amy$b net/minecraft/class_3062$class_8832 net/minecraft/server/commands/FunctionCommand$Callbacks + m (Ljava/lang/Object;Lakr;I)V a method_54280 signalResult +c amy$c net/minecraft/class_3062$class_8833 net/minecraft/server/commands/FunctionCommand$FunctionCustomExecutor + m (Lcom/mojang/brigadier/context/CommandContext;)Lub; a method_54277 arguments + m (Let;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54283 runGuarded + m (Ljava/util/Collection;)Lwz; a method_54284 method_54284 + m (Ljava/util/Collection;)Lwz; b method_54285 method_54285 + m ()V +c amz net/minecraft/class_3064 net/minecraft/server/commands/GameModeCommand + f I a field_33393 PERMISSION_LEVEL + m (Laqv;Lwz;)Lwz; a method_51987 method_51987 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13388 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13386 method_13386 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/Collection;Ldct;)I a method_13387 setMode + m (Let;)Z a method_13389 method_13389 + m (Let;Laqv;Ldct;)V a method_13390 logGamemodeChange + m (Lwz;)Lwz; a method_51988 method_51988 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13391 method_13391 + m ()V +c ana net/minecraft/class_3065 net/minecraft/server/commands/GameRuleCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13392 register + m (Lcom/mojang/brigadier/context/CommandContext;Ldcs$e;)I a method_13394 setRule + m (Ldcs$e;Ldcs$g;)Lwz; a method_51989 method_51989 + m (Let;)Z a method_13393 method_13393 + m (Let;Ldcs$e;)I a method_13397 queryRule + m (Ldcs$e;Ldcs$g;)Lwz; b method_51990 method_51990 + m ()V +c ana$1 net/minecraft/class_3065$1 net/minecraft/server/commands/GameRuleCommand$1 + f Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; a field_19419 val$base + m (Ldcs$e;Lcom/mojang/brigadier/context/CommandContext;)I a method_20797 method_20797 + m (Ldcs$e;Lcom/mojang/brigadier/context/CommandContext;)I b method_20798 method_20798 + m (Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;)V +c anb net/minecraft/class_3068 net/minecraft/server/commands/GiveCommand + f I a field_33394 MAX_ALLOWED_ITEMSTACKS + m (ILcuq;Ljava/util/Collection;)Lwz; a method_51991 method_51991 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13402 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13403 method_13403 + m (Let;)Z a method_13404 method_13404 + m (Let;Lhd;Ljava/util/Collection;I)I a method_13401 giveItem + m (ILcuq;Ljava/util/Collection;)Lwz; b method_51992 method_51992 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13400 method_13400 + m ()V +c anc net/minecraft/class_3069 net/minecraft/server/commands/HelpCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13665 ERROR_FAILED + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13405 register + m (Lcom/mojang/brigadier/CommandDispatcher;Lcom/mojang/brigadier/context/CommandContext;)I a method_13407 method_13407 + m (Lcom/mojang/brigadier/ParseResults;Ljava/lang/String;)Lwz; a method_51993 method_51993 + m (Ljava/lang/String;)Lwz; a method_51994 method_51994 + m (Lcom/mojang/brigadier/CommandDispatcher;Lcom/mojang/brigadier/context/CommandContext;)I b method_13406 method_13406 + m ()V + m ()V +c and net/minecraft/class_5687 net/minecraft/server/commands/ItemCommands + f Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType; a field_28018 ERROR_TARGET_NOT_A_CONTAINER + f Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType; b field_28020 ERROR_SOURCE_NOT_A_CONTAINER + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_28019 ERROR_TARGET_INAPPLICABLE_SLOT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_28021 ERROR_SOURCE_INAPPLICABLE_SLOT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; e field_28022 ERROR_TARGET_NO_CHANGES + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; f field_28023 ERROR_TARGET_NO_CHANGES_KNOWN_ITEM + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; g field_28024 SUGGEST_MODIFIER + m (Lbsr;I)Lcuq; a method_32706 getEntityItem + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_32707 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_32708 method_32708 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_32709 method_32709 + m (Let;)Z a method_32710 method_32710 + m (Let;Lbsr;ILjava/util/Collection;I)I a method_32713 entityToEntities + m (Let;Lbsr;ILjava/util/Collection;ILjm;)I a method_32714 entityToEntities + m (Let;Lbsr;ILjd;I)I a method_32711 entityToBlock + m (Let;Lbsr;ILjd;ILjm;)I a method_32712 entityToBlock + m (Let;Ljava/util/Collection;ILcuq;)I a method_32724 setEntityItem + m (Let;Ljava/util/Collection;ILjm;)I a method_32725 modifyEntityItem + m (Let;Ljd;I)Lcuq; a method_32716 getBlockItem + m (Let;Ljd;ILcuq;)I a method_32717 setBlockItem + m (Let;Ljd;ILjava/util/Collection;I)I a method_32721 blockToEntities + m (Let;Ljd;ILjava/util/Collection;ILjm;)I a method_32722 blockToEntities + m (Let;Ljd;ILjd;I)I a method_32719 blockToBlock + m (Let;Ljd;ILjd;ILjm;)I a method_32720 blockToBlock + m (Let;Ljd;ILjm;)I a method_32718 modifyBlockItem + m (Let;Ljd;Lcom/mojang/brigadier/exceptions/Dynamic3CommandExceptionType;)Lbqk; a method_32723 getContainer + m (Let;Ljm;Lcuq;)Lcuq; a method_32715 applyModifier + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_32726 method_32726 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_32727 method_32727 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_32728 method_32728 + m (Ljava/util/List;Lcuq;)Lwz; a method_51996 method_51996 + m (Ljava/util/Map$Entry;)Lwz; a method_51997 method_51997 + m (Ljava/util/Map;)Lwz; a method_51998 method_51998 + m (Ljd;Lcuq;)Lwz; a method_51995 method_51995 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_32729 method_32729 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_32730 method_32730 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_32731 method_32731 + m (Ljava/util/List;Lcuq;)Lwz; b method_52000 method_52000 + m (Ljd;Lcuq;)Lwz; b method_51999 method_51999 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_32732 method_32732 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_32733 method_32733 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_32734 method_32734 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_32735 method_32735 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_32736 method_32736 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_32737 method_32737 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_32738 method_32738 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_32739 method_32739 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_32740 method_32740 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_32741 method_32741 + m (Lcom/mojang/brigadier/context/CommandContext;)I l method_32742 method_32742 + m (Lcom/mojang/brigadier/context/CommandContext;)I m method_32743 method_32743 + m (Lcom/mojang/brigadier/context/CommandContext;)I n method_32744 method_32744 + m ()V + m ()V +c ane net/minecraft/class_6607 net/minecraft/server/commands/JfrCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_34880 START_FAILED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_34881 DUMP_FAILED + m ()Lwz; a method_52001 method_52001 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_38612 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_38613 method_38613 + m (Let;)I a method_38614 startJfr + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_38615 method_38615 + m (Ljava/nio/file/Path;Lxw;)Lxw; a method_39499 method_39499 + m (Lwz;)Lwz; a method_52002 method_52002 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_38616 method_38616 + m (Let;)I b method_38617 stopJfr + m (Let;)Z c method_38618 method_38618 + m ()V + m ()V +c anf net/minecraft/class_3073 net/minecraft/server/commands/KickCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_46229 ERROR_KICKING_OWNER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_47520 ERROR_SINGLEPLAYER + m (Laqv;Lwz;)Lwz; a method_52003 method_52003 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13410 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13412 method_13412 + m (Let;)Z a method_13413 method_13413 + m (Let;Ljava/util/Collection;Lwz;)I a method_13411 kickPlayers + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13409 method_13409 + m ()V + m ()V +c ang net/minecraft/class_3075 net/minecraft/server/commands/KillCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13429 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13431 method_13431 + m (Let;)Z a method_13432 method_13432 + m (Let;Ljava/util/Collection;)I a method_13430 kill + m (Ljava/util/Collection;)Lwz; a method_52004 method_52004 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_22832 method_22832 + m (Ljava/util/Collection;)Lwz; b method_52005 method_52005 + m ()V +c anh net/minecraft/class_3078 net/minecraft/server/commands/ListPlayersCommand + m (Laqv;)Lwz; a method_30310 method_30310 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13435 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13438 method_13438 + m (Let;)I a method_13437 listPlayers + m (Let;Ljava/util/function/Function;)I a method_13434 format + m (Ljava/util/List;Laur;Lwz;)Lwz; a method_52006 method_52006 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13433 method_13433 + m (Let;)I b method_13436 listPlayersWithUuids + m ()V +c ani net/minecraft/class_3079 net/minecraft/server/commands/LocateCommand + f Lorg/slf4j/Logger; a field_41660 LOGGER + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_39245 ERROR_STRUCTURE_NOT_FOUND + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_39246 ERROR_STRUCTURE_INVALID + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_39247 ERROR_BIOME_NOT_FOUND + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; e field_39249 ERROR_POI_NOT_FOUND + f I f field_39251 MAX_STRUCTURE_SEARCH_RADIUS + f I g field_39252 MAX_BIOME_SEARCH_RADIUS + f I h field_39253 BIOME_SAMPLE_RESOLUTION_HORIZONTAL + f I i field_39254 BIOME_SAMPLE_RESOLUTION_VERTICAL + f I j field_39255 POI_SEARCH_RADIUS + m (IIII)F a method_13439 dist + m (Lakq;)Ljava/lang/String; a method_41004 method_41004 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13443 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_43904 method_43904 + m (Lcom/mojang/datafixers/util/Pair;Lawu;)Ljava/lang/String; a method_40998 method_40998 + m (Let;)Z a method_13448 method_13448 + m (Let;Lfw$c;)I a method_43912 locateBiome + m (Let;Lfw$c;Ljd;Lcom/mojang/datafixers/util/Pair;Ljava/lang/String;ZLjava/time/Duration;)I a method_45148 showLocateResult + m (Let;Lfx$c;)I a method_43905 locateStructure + m (Let;Lfx$c;Ljd;Lcom/mojang/datafixers/util/Pair;Ljava/lang/String;ZLjava/time/Duration;)I a method_24499 showLocateResult + m (Let;Ljd;Lcom/mojang/datafixers/util/Pair;Ljava/lang/String;ZLjava/lang/String;Ljava/time/Duration;)I a method_45149 showLocateResult + m (Lfw$c;Lcom/mojang/datafixers/util/Pair;Ljq$c;)Ljava/lang/String; a method_45150 method_45150 + m (Lfw$c;Ljm$c;)Ljava/lang/String; a method_45151 method_45151 + m (Lfx$c;)Lcom/mojang/brigadier/exceptions/CommandSyntaxException; a method_43906 method_43906 + m (Lfx$c;Ljz;)Ljava/util/Optional; a method_43907 getHolders + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_43913 method_43913 + m (Ljava/lang/String;Ljava/lang/String;Lwz;I)Lwz; a method_52007 method_52007 + m (Ljd;Ljava/lang/String;Lxw;)Lxw; a method_13447 method_13447 + m (Ljm;)Ljq$a; a method_43908 method_43908 + m (Ljz;Lakq;)Ljava/util/Optional; a method_43909 method_43909 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_43911 method_43911 + m (Let;Lfw$c;)I b method_43915 locatePoi + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_43917 method_43917 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_43914 method_43914 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_41002 method_41002 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_39985 method_39985 + m ()V + m ()V +c anj net/minecraft/class_3039 net/minecraft/server/commands/LootCommand + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; a field_13605 SUGGEST_LOOT_TABLE + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_13604 ERROR_NO_HELD_ITEMS + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; c field_13606 ERROR_NO_LOOT_TABLE + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I a method_13215 method_13215 + m (Laqu;Lexc;Lcuq;)V a method_13179 method_13179 + m (Lbqk;Lcuq;)Z a method_13223 distributeToContainer + m (Lbsr;Ljava/util/List;IILjava/util/List;)V a method_16139 setSlots + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13193 register + m (Lcom/mojang/brigadier/builder/ArgumentBuilder;Lanj$c;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13206 addTargets + m (Lcom/mojang/brigadier/context/CommandContext;Lbsr;Lanj$b;)I a method_13189 dropKillLoot + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13210 method_13210 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Lanj$a;)I a method_13220 method_13220 + m (Lcom/mojang/brigadier/context/CommandContext;Ljd;Lcuq;Lanj$b;)I a method_13219 dropBlockLoot + m (Lcom/mojang/brigadier/context/CommandContext;Ljm;Lanj$b;)I a method_13197 dropChestLoot + m (Lcom/mojang/brigadier/context/CommandContext;Ljm;Leru;Lanj$b;)I a method_13180 drop + m (Lcom/mojang/brigadier/context/CommandContext;Ljm;Ljd;Lcuq;Lanj$b;)I a method_13199 dropFishingLoot + m (Lcuq;)Lwz; a method_52008 method_52008 + m (Lcuq;Lakq;)Lwz; a method_52009 method_52009 + m (Lcuq;Lcuq;)Z a method_13218 canMergeItems + m (Lep;Lcom/mojang/brigadier/builder/ArgumentBuilder;Lanj$b;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13203 method_13203 + m (Let;)Z a method_13181 method_13181 + m (Let;Lakq;Ljava/util/List;)V a method_13185 method_13185 + m (Let;Lbsy;)Lcuq; a method_13178 getSourceHandItem + m (Let;Ldtc;Ljava/util/List;)V a method_13224 method_13224 + m (Let;Lexc;Ljava/util/List;Lanj$a;)I a method_13183 dropInWorld + m (Let;Ljava/util/List;)V a method_13213 callback + m (Let;Ljava/util/List;Lakq;)V a method_13212 callback + m (Let;Ljd;)Lbqk; a method_13207 getContainer + m (Let;Ljd;IILjava/util/List;Lanj$a;)I a method_13209 blockReplace + m (Let;Ljd;Ljava/util/List;Lanj$a;)I a method_13196 blockDistribute + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13217 method_13217 + m (Ljava/util/Collection;IILjava/util/List;Lanj$a;)I a method_13187 entityReplace + m (Ljava/util/Collection;Ljava/util/List;Lanj$a;)I a method_13201 playerGive + m (Ljava/util/List;)Lwz; a method_52010 method_52010 + m (Ljava/util/List;Lakq;)Lwz; a method_52011 method_52011 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I b method_13222 method_13222 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Lanj$a;)I b method_13191 method_13191 + m (Let;Ljava/util/List;)V b method_13184 method_13184 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13195 method_13195 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I c method_13204 method_13204 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Lanj$a;)I c method_13214 method_13214 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I d method_13211 method_13211 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Lanj$a;)I d method_16339 method_16339 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I e method_13198 method_13198 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Lanj$a;)I e method_13202 method_13202 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I f method_13177 method_13177 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Lanj$a;)I f method_13221 method_13221 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I g method_13188 method_13188 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/List;Lanj$a;)I g method_13182 method_13182 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I h method_13216 method_13216 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I i method_13205 method_13205 + m (Lanj$b;Lcom/mojang/brigadier/context/CommandContext;)I j method_13208 method_13208 + m ()V + m ()V +c anj$a net/minecraft/class_3039$class_3040 net/minecraft/server/commands/LootCommand$Callback +c anj$b net/minecraft/class_3039$class_3041 net/minecraft/server/commands/LootCommand$DropConsumer +c anj$c net/minecraft/class_3039$class_3042 net/minecraft/server/commands/LootCommand$TailProvider +c ank net/minecraft/class_3082 net/minecraft/server/commands/MsgCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13461 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13463 method_13463 + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/util/Collection;Lxp;)V a method_45153 method_45153 + m (Let;Ljava/util/Collection;Lxp;)V a method_13462 sendMessage + m ()V +c anl net/minecraft/class_3083 net/minecraft/server/commands/OpCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13667 ERROR_ALREADY_OP + m (Laqv;)Ljava/lang/String; a method_13469 method_13469 + m (Laur;Laqv;)Z a method_13466 method_13466 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13464 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13468 method_13468 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13467 method_13467 + m (Let;)Z a method_13470 method_13470 + m (Let;Ljava/util/Collection;)I a method_13465 opPlayers + m (Ljava/util/Collection;)Lwz; a method_52012 method_52012 + m ()V + m ()V +c anm net/minecraft/class_3086 net/minecraft/server/commands/PardonCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13669 ERROR_NOT_BANNED + m (Lcom/mojang/authlib/GameProfile;)Lwz; a method_52013 method_52013 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13472 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13475 method_13475 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13474 method_13474 + m (Let;)Z a method_13476 method_13476 + m (Let;Ljava/util/Collection;)I a method_13473 pardonPlayers + m ()V + m ()V +c ann net/minecraft/class_3088 net/minecraft/server/commands/PardonIpCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13671 ERROR_INVALID + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13672 ERROR_NOT_BANNED + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13478 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13480 method_13480 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13479 method_13479 + m (Let;)Z a method_13481 method_13481 + m (Let;Ljava/lang/String;)I a method_13482 unban + m (Ljava/lang/String;)Lwz; a method_52014 method_52014 + m ()V + m ()V +c ano net/minecraft/class_3089 net/minecraft/server/commands/ParticleCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13673 ERROR_FAILED + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13486 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13489 method_13489 + m (Let;)Z a method_13490 method_13490 + m (Let;Llk;Lexc;Lexc;FIZLjava/util/Collection;)I a method_13491 sendParticles + m (Llk;)Lwz; a method_52015 method_52015 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13483 method_13483 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13488 method_13488 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13484 method_13484 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13487 method_13487 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13485 method_13485 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13492 method_13492 + m ()V + m ()V +c anp net/minecraft/class_6413 net/minecraft/server/commands/PerfCommand + f Lorg/slf4j/Logger; a field_33985 LOGGER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_33986 ERROR_NOT_RUNNING + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_33987 ERROR_ALREADY_RUNNING + m ()Lwz; a method_52016 method_52016 + m (DI)Lwz; a method_52017 method_52017 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_37331 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_37332 method_37332 + m (Let;)I a method_37333 startProfilingDedicatedServer + m (Let;Lbne;)V a method_37334 whenStopped + m (Let;Ljava/nio/file/Path;Lnet/minecraft/server/MinecraftServer;)V a method_37335 saveResults + m (Let;Lnet/minecraft/server/MinecraftServer;Ljava/nio/file/Path;)V a method_37336 method_37336 + m (Ljava/lang/String;)Lwz; a method_52018 method_52018 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_37337 method_37337 + m (Let;)I b method_37338 stopProfilingDedicatedServer + m (Let;Lbne;)V b method_37339 method_37339 + m (Let;)Z c method_37340 method_37340 + m ()V + m ()V +c anq net/minecraft/class_6852 net/minecraft/server/commands/PlaceCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_36324 ERROR_FEATURE_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_39091 ERROR_JIGSAW_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_39092 ERROR_STRUCTURE_FAILED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; d field_39256 ERROR_TEMPLATE_INVALID + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_39257 ERROR_TEMPLATE_FAILED + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; f field_39393 SUGGEST_TEMPLATES + m (Lakr;Ljd;)Lwz; a method_52019 method_52019 + m (Laqu;Ldcd;)Z a method_43646 method_43646 + m (Laqu;Ldcd;Ldcd;)V a method_43647 checkLoaded + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_39986 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_43918 method_43918 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_44145 method_44145 + m (Lejz;Laqu;Lduz;Ldcd;)V a method_43649 method_43649 + m (Let;)Z a method_39988 method_39988 + m (Let;Lakr;Ljd;Ldmm;Ldkv;FI)I a method_43919 placeTemplate + m (Let;Ljm$c;Ljd;)I a method_39989 placeFeature + m (Let;Ljm;Lakr;ILjd;)I a method_43650 placeJigsaw + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_43920 method_43920 + m (Ljava/lang/String;Ljd;)Lwz; a method_52021 method_52021 + m (Ljd;)Lwz; a method_52020 method_52020 + m (Ljm;)Z a method_43651 method_43651 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_43921 method_43921 + m (Let;Ljm$c;Ljd;)I b method_43654 placeStructure + m (Ljava/lang/String;Ljd;)Lwz; b method_52022 method_52022 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_43922 method_43922 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_43923 method_43923 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_43924 method_43924 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_43925 method_43925 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_43648 method_43648 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_43653 method_43653 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_43655 method_43655 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_43656 method_43656 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_39987 method_39987 + m (Lcom/mojang/brigadier/context/CommandContext;)I l method_39990 method_39990 + m ()V + m ()V +c anr net/minecraft/class_3091 net/minecraft/server/commands/PlaySoundCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13678 ERROR_TOO_FAR + m (Lakr;Ljava/util/Collection;)Lwz; a method_52023 method_52023 + m (Laqv;)Ljava/util/Collection; a method_57111 getCallingPlayerAsCollection + m (Lavq;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; a method_13497 source + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I a method_13503 method_13503 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13500 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_57112 method_57112 + m (Let;)Z a method_13502 method_13502 + m (Let;Ljava/util/Collection;Lakr;Lavq;Lexc;FFF)I a method_13504 playSound + m (Lakr;Ljava/util/Collection;)Lwz; b method_52024 method_52024 + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I b method_13505 method_13505 + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I c method_13498 method_13498 + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I d method_13501 method_13501 + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I e method_13499 method_13499 + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I f method_57113 method_57113 + m ()V + m ()V +c ans net/minecraft/class_3093 net/minecraft/server/commands/PublishCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13680 ERROR_FAILED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_13679 ERROR_ALREADY_PUBLISHED + m (I)Lxn; a method_46869 getSuccessMessage + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13510 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13512 method_13512 + m (Let;)Z a method_13513 method_13513 + m (Let;IZLdct;)I a method_13509 publish + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13511 method_13511 + m (I)Lwz; b method_52025 method_52025 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_46870 method_46870 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_46871 method_46871 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13508 method_13508 + m ()V + m ()V +c ant net/minecraft/class_6329 net/minecraft/server/commands/RaidCommand + m ()Lwz; a method_52026 method_52026 + m (II)Lwz; a method_52027 method_52027 + m (Laqv;)Lcoi; a method_36191 getRaid + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_36192 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_36193 method_36193 + m (Let;)I a method_36194 glow + m (Let;I)I a method_36195 setRaidOmenLevel + m (Let;Lwz;)I a method_36196 playSound + m (Ljava/lang/StringBuilder;)Lwz; a method_52028 method_52028 + m ()Lwz; b method_52029 method_52029 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_36197 method_36197 + m (Let;)I b method_36198 spawnLeader + m (Let;I)I b method_36199 start + m (Ljava/lang/StringBuilder;)Lwz; b method_52030 method_52030 + m ()Lwz; c method_52031 method_52031 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_36200 method_36200 + m (Let;)I c method_36201 stop + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_36202 method_36202 + m (Let;)I d method_36203 check + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_36204 method_36204 + m (Let;)Z e method_36205 method_36205 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_36206 method_36206 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_36207 method_36207 + m ()V +c anu net/minecraft/class_8602 net/minecraft/server/commands/RandomCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_44983 ERROR_RANGE_TOO_LARGE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_44984 ERROR_RANGE_TOO_SMALL + m (I)Lwz; a method_52316 method_52316 + m (Lakr;)Lwz; a method_52317 method_52317 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_52318 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_52319 method_52319 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_52320 suggestRandomSequence + m (Let;)I a method_52321 resetAllSequences + m (Let;IZZ)I a method_52322 resetAllSequencesAndSetNewDefaults + m (Let;Lakr;)I a method_52323 resetSequence + m (Let;Lakr;IZZ)I a method_52324 resetSequence + m (Let;Ldh$d;Lakr;Z)I a method_52325 randomSample + m (Ljava/lang/String;Z)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; a method_52326 drawRandomValueTree + m (Ljava/util/List;Lakr;Lbqx;)V a method_52327 method_52327 + m (ZLcom/mojang/brigadier/context/CommandContext;)I a method_52328 method_52328 + m (I)Lwz; b method_52329 method_52329 + m (Lakr;)Lwz; b method_52330 method_52330 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_52331 method_52331 + m (Let;)Z b method_52332 method_52332 + m (ZLcom/mojang/brigadier/context/CommandContext;)I b method_52333 method_52333 + m (I)Lwz; c method_52334 method_52334 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_52335 method_52335 + m (Let;)Z c method_52336 method_52336 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_52337 method_52337 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_52338 method_52338 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_52339 method_52339 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_52340 method_52340 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_52341 method_52341 + m ()V + m ()V +c anv net/minecraft/class_3095 net/minecraft/server/commands/RecipeCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13681 ERROR_GIVE_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13682 ERROR_TAKE_FAILED + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13517 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13521 method_13521 + m (Let;)Z a method_13522 method_13522 + m (Let;Ljava/util/Collection;Ljava/util/Collection;)I a method_13520 giveRecipes + m (Ljava/util/Collection;Ljava/util/Collection;)Lwz; a method_52032 method_52032 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13515 method_13515 + m (Let;Ljava/util/Collection;Ljava/util/Collection;)I b method_13518 takeRecipes + m (Ljava/util/Collection;Ljava/util/Collection;)Lwz; b method_52033 method_52033 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13519 method_13519 + m (Ljava/util/Collection;Ljava/util/Collection;)Lwz; c method_52034 method_52034 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13516 method_13516 + m (Ljava/util/Collection;Ljava/util/Collection;)Lwz; d method_52035 method_52035 + m ()V + m ()V +c anw net/minecraft/class_3097 net/minecraft/server/commands/ReloadCommand + f Lorg/slf4j/Logger; a field_25343 LOGGER + m ()Lwz; a method_52036 method_52036 + m (Latp;Lerl;Ljava/util/Collection;)Ljava/util/Collection; a method_29478 discoverNewPacks + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13529 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13530 method_13530 + m (Let;)Z a method_13531 method_13531 + m (Let;Ljava/lang/Throwable;)Ljava/lang/Void; a method_29479 method_29479 + m (Ljava/util/Collection;Let;)V a method_29480 reloadPacks + m ()V + m ()V +c anx net/minecraft/class_8503 net/minecraft/server/commands/ReturnCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_51277 register + m (Lev;)Z a method_54286 method_54286 + m ()V +c anx$a net/minecraft/class_8503$class_8933 net/minecraft/server/commands/ReturnCommand$ReturnFailCustomExecutor + m (Lev;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54863 run + m ()V +c anx$b net/minecraft/class_8503$class_8834 net/minecraft/server/commands/ReturnCommand$ReturnFromCommandCustomModifier + m (Lev;Ljava/util/List;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54864 apply + m ()V +c anx$c net/minecraft/class_8503$class_8835 net/minecraft/server/commands/ReturnCommand$ReturnValueCustomExecutor + m (Lev;Lcom/mojang/brigadier/context/ContextChain;Lhn;Lht;)V a method_54289 run + m ()V +c any net/minecraft/class_8011 net/minecraft/server/commands/RideCommand + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; a field_41742 ERROR_NOT_RIDING + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; b field_41743 ERROR_ALREADY_RIDING + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; c field_41744 ERROR_MOUNT_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_41745 ERROR_MOUNTING_PLAYER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_41746 ERROR_MOUNTING_LOOP + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; f field_42239 ERROR_WRONG_DIMENSION + m (Lbsr;Lbsr;)Lwz; a method_52038 method_52038 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_48078 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_48079 method_48079 + m (Let;)Z a method_48080 method_48080 + m (Let;Lbsr;)I a method_48081 dismount + m (Let;Lbsr;Lbsr;)I a method_48082 mount + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_48083 method_48083 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_48084 method_48084 + m (Lbsr;Lbsr;)Lwz; b method_52039 method_52039 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_48085 method_48085 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_48086 method_48086 + m (Lbsr;Lbsr;)Z c method_48077 method_48077 + m ()V + m ()V +c anz net/minecraft/class_3104 net/minecraft/server/commands/SaveAllCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13701 ERROR_FAILED + m ()Lwz; a method_52040 method_52040 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13551 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13553 method_13553 + m (Let;)Z a method_13554 method_13554 + m (Let;Z)I a method_13550 saveAll + m ()Lwz; b method_52041 method_52041 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13549 method_13549 + m ()V + m ()V +c aoa net/minecraft/class_3106 net/minecraft/server/commands/SaveOffCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13703 ERROR_ALREADY_OFF + m ()Lwz; a method_52042 method_52042 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13556 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13557 method_13557 + m (Let;)Z a method_13558 method_13558 + m ()V + m ()V +c aob net/minecraft/class_3107 net/minecraft/server/commands/SaveOnCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13704 ERROR_ALREADY_ON + m ()Lwz; a method_52043 method_52043 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13559 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13560 method_13560 + m (Let;)Z a method_13561 method_13561 + m ()V + m ()V +c aoc net/minecraft/class_3110 net/minecraft/server/commands/SayCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13562 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13563 method_13563 + m (Lcom/mojang/brigadier/context/CommandContext;Lxp;)V a method_43657 method_43657 + m (Let;)Z a method_13564 method_13564 + m ()V +c aod net/minecraft/class_3112 net/minecraft/server/commands/ScheduleCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13706 ERROR_SAME_TICK + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_20853 ERROR_CANT_REMOVE + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; c field_20854 SUGGEST_SCHEDULE + m (ILjava/lang/String;)Lwz; a method_52044 method_52044 + m (Lakr;IJ)Lwz; a method_52045 method_52045 + m (Lakr;ZLewp;JLet;ILig;)V a method_13571 method_13571 + m (Lakr;ZLewp;JLet;ILjava/util/Collection;)V a method_13570 method_13570 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13567 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_22834 method_22834 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_22835 method_22835 + m (Let;)Z a method_13569 method_13569 + m (Let;Lcom/mojang/datafixers/util/Pair;IZ)I a method_13566 schedule + m (Let;Ljava/lang/String;)I a method_22833 remove + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_22836 method_22836 + m (Lakr;IJ)Lwz; b method_52046 method_52046 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_22837 method_22837 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_22838 method_22838 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13568 method_13568 + m ()V + m ()V +c aoe net/minecraft/class_3115 net/minecraft/server/commands/ScoreboardCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13712 ERROR_OBJECTIVE_ALREADY_EXISTS + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13715 ERROR_DISPLAY_SLOT_ALREADY_EMPTY + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13713 ERROR_DISPLAY_SLOT_ALREADY_SET + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13714 ERROR_TRIGGER_ALREADY_ENABLED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_13710 ERROR_NOT_TRIGGER + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; f field_13711 ERROR_NO_VALUE + m ()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; a method_13606 createRenderTypeModify + m (ILexy;Ljava/util/Collection;)Lwz; a method_52049 method_52049 + m (ILexy;Ljava/util/Collection;I)Lwz; a method_52050 method_52050 + m (Laoe$a;Lcom/mojang/brigadier/context/CommandContext;)I a method_55344 method_55344 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13595 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13610 method_13610 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13587 method_13587 + m (Lcom/mojang/brigadier/context/CommandContext;Lyp;)I a method_55346 method_55346 + m (Lep;Lcom/mojang/brigadier/builder/ArgumentBuilder;Laoe$a;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_55345 addNumberFormats + m (Let;)I a method_13589 listTrackedPlayers + m (Let;Lexx;)I a method_13592 clearDisplaySlot + m (Let;Lexx;Lexy;)I a method_13596 setDisplaySlot + m (Let;Lexy;)I a method_13602 removeObjective + m (Let;Lexy;Leyj$a;)I a method_13581 setRenderType + m (Let;Lexy;Lwz;)I a method_13576 setDisplayName + m (Let;Lexy;Lyp;)I a method_55347 setObjectiveFormat + m (Let;Lexy;Z)I a method_55348 setDisplayAutoUpdate + m (Let;Leyf;)I a method_13614 listTrackedPlayerScores + m (Let;Leyf;Lexy;)I a method_13607 getScore + m (Let;Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;)V a method_52058 method_52058 + m (Let;Ljava/lang/String;Leyj;Lwz;)I a method_13611 addObjective + m (Let;Ljava/util/Collection;)I a method_13575 resetScores + m (Let;Ljava/util/Collection;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13613 suggestTriggers + m (Let;Ljava/util/Collection;Lexy;)I a method_13609 enableTrigger + m (Let;Ljava/util/Collection;Lexy;I)I a method_13604 setScore + m (Let;Ljava/util/Collection;Lexy;Lfp$a;Ljava/util/Collection;Lexy;)I a method_13584 performOperation + m (Let;Ljava/util/Collection;Lexy;Lwz;)I a method_55349 setScoreDisplay + m (Let;Ljava/util/Collection;Lexy;Lyp;)I a method_55350 setScoreNumberFormat + m (Lexx;)Lwz; a method_52047 method_52047 + m (Lexx;Lexy;)Lwz; a method_52048 method_52048 + m (Lexy;)Lwz; a method_52051 method_52051 + m (Lexy;Ljava/util/Collection;)Lwz; a method_52052 method_52052 + m (Lexy;Ljava/util/Collection;I)Lwz; a method_52053 method_52053 + m (Leyf;)Lwz; a method_52054 method_52054 + m (Leyf;Leyc;Lexy;)Lwz; a method_52055 method_52055 + m (Leyf;Lit/unimi/dsi/fastutil/objects/Object2IntMap;)Lwz; a method_52056 method_52056 + m (Leyj$a;Lcom/mojang/brigadier/context/CommandContext;)I a method_13601 method_13601 + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;)Lwz; a method_55351 method_55351 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13605 method_13605 + m (Ljava/util/Collection;)Lwz; a method_55352 getFirstTargetName + m (Ljava/util/Collection;Lexy;)Lwz; a method_55353 method_55353 + m (Lwz;Ljava/util/Collection;Lexy;)Lwz; a method_55354 method_55354 + m ()Lwz; b method_52059 method_52059 + m (ILexy;Ljava/util/Collection;)Lwz; b method_52060 method_52060 + m (ILexy;Ljava/util/Collection;I)Lwz; b method_52061 method_52061 + m (Laoe$a;Lcom/mojang/brigadier/context/CommandContext;)I b method_55355 method_55355 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_55356 method_55356 + m (Lcom/mojang/brigadier/context/CommandContext;Lyp;)I b method_55357 method_55357 + m (Let;)I b method_13597 listObjectives + m (Let;Ljava/util/Collection;Lexy;)I b method_13586 resetScore + m (Let;Ljava/util/Collection;Lexy;I)I b method_13578 addScore + m (Lexy;)Lwz; b method_52062 method_52062 + m (Lexy;Ljava/util/Collection;)Lwz; b method_52063 method_52063 + m (Lexy;Ljava/util/Collection;I)Lwz; b method_52064 method_52064 + m (Ljava/util/Collection;)Lwz; b method_52057 method_52057 + m (Ljava/util/Collection;Lexy;)Lwz; b method_55358 method_55358 + m (Lwz;Ljava/util/Collection;Lexy;)Lwz; b method_55359 method_55359 + m ()Lwz; c method_52066 method_52066 + m (Laoe$a;Lcom/mojang/brigadier/context/CommandContext;)I c method_55360 method_55360 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_55361 method_55361 + m (Let;)Z c method_13585 method_13585 + m (Let;Ljava/util/Collection;Lexy;I)I c method_13600 removeScore + m (Lexy;)Lwz; c method_52067 method_52067 + m (Lexy;Ljava/util/Collection;)Lwz; c method_52068 method_52068 + m (Lexy;Ljava/util/Collection;I)Lwz; c method_52069 method_52069 + m (Ljava/util/Collection;)Lwz; c method_52065 method_52065 + m (Ljava/util/Collection;Lexy;)Lwz; c method_55362 method_55362 + m (Laoe$a;Lcom/mojang/brigadier/context/CommandContext;)I d method_55363 method_55363 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13574 method_13574 + m (Lexy;)Lwz; d method_55364 method_55364 + m (Lexy;Ljava/util/Collection;)Lwz; d method_52072 method_52072 + m (Ljava/util/Collection;)Lwz; d method_52070 method_52070 + m (Ljava/util/Collection;Lexy;)Lwz; d method_55365 method_55365 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13579 method_13579 + m (Lexy;)Lwz; e method_55366 method_55366 + m (Lexy;Ljava/util/Collection;)Lwz; e method_52074 method_52074 + m (Ljava/util/Collection;)Lwz; e method_52073 method_52073 + m (Ljava/util/Collection;Lexy;)Lwz; e method_55367 method_55367 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13582 method_13582 + m (Lexy;)Lwz; f method_55368 method_55368 + m (Ljava/util/Collection;Lexy;)Lwz; f method_55369 method_55369 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13598 method_13598 + m (Lexy;)Lwz; g method_55370 method_55370 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13593 method_13593 + m (Lexy;)Lwz; h method_52071 method_52071 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_13612 method_13612 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_13608 method_13608 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_13580 method_13580 + m (Lcom/mojang/brigadier/context/CommandContext;)I l method_13591 method_13591 + m (Lcom/mojang/brigadier/context/CommandContext;)I m method_13588 method_13588 + m (Lcom/mojang/brigadier/context/CommandContext;)I n method_13603 method_13603 + m (Lcom/mojang/brigadier/context/CommandContext;)I o method_13594 method_13594 + m (Lcom/mojang/brigadier/context/CommandContext;)I p method_55371 method_55371 + m (Lcom/mojang/brigadier/context/CommandContext;)I q method_13599 method_13599 + m (Lcom/mojang/brigadier/context/CommandContext;)I r method_13583 method_13583 + m (Lcom/mojang/brigadier/context/CommandContext;)I s method_13590 method_13590 + m (Lcom/mojang/brigadier/context/CommandContext;)I t method_13577 method_13577 + m ()V + m ()V +c aoe$a net/minecraft/class_3115$class_9008 net/minecraft/server/commands/ScoreboardCommand$NumberFormatCommandExecutor +c aof net/minecraft/class_3118 net/minecraft/server/commands/SeedCommand + m (Lcom/mojang/brigadier/CommandDispatcher;Z)V a method_13616 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13617 method_13617 + m (Lwz;)Lwz; a method_52075 method_52075 + m (ZLet;)Z a method_13618 method_13618 + m ()V +c aog net/minecraft/class_9027 net/minecraft/server/commands/ServerPackCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_55474 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_55475 method_55475 + m (Let;)Z a method_55476 method_55476 + m (Let;Ljava/lang/String;Ljava/util/Optional;Ljava/util/Optional;)I a method_55477 pushPack + m (Let;Ljava/util/UUID;)I a method_55478 popPack + m (Let;Lzg;)V a method_55479 sendToAllConnections + m (Ljava/lang/String;)Ljava/util/UUID; a method_55480 method_55480 + m (Lzg;Lvt;)V a method_55481 method_55481 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_55482 method_55482 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_55483 method_55483 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_55484 method_55484 + m ()V +c aoh net/minecraft/class_3119 net/minecraft/server/commands/SetBlockCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13719 ERROR_FAILED + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13623 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13626 method_13626 + m (Ldtg;)Z a method_13624 method_13624 + m (Let;)Z a method_13627 method_13627 + m (Let;Ljd;Lgk;Laoh$b;Ljava/util/function/Predicate;)I a method_13620 setBlock + m (Ljd;)Lwz; a method_52076 method_52076 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13621 method_13621 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13625 method_13625 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13622 method_13622 + m ()V + m ()V +c aoh$a net/minecraft/class_3119$class_3120 net/minecraft/server/commands/SetBlockCommand$Filter +c aoh$b net/minecraft/class_3119$class_3121 net/minecraft/server/commands/SetBlockCommand$Mode + f Laoh$b; a field_13722 REPLACE + f Laoh$b; b field_13721 DESTROY + f [Laoh$b; c field_13720 $VALUES + m ()[Laoh$b; a method_36969 $values + m (Ljava/lang/String;I)V + m ()V +c aoi net/minecraft/class_3123 net/minecraft/server/commands/SetPlayerIdleTimeoutCommand + m (I)Lwz; a method_52077 method_52077 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13631 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13632 method_13632 + m (Let;)Z a method_13633 method_13633 + m (Let;I)I a method_13630 setIdleTimeout + m ()V +c aoj net/minecraft/class_3127 net/minecraft/server/commands/SetSpawnCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13641 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_30733 method_30733 + m (Let;)Z a method_13644 method_13644 + m (Let;Ljava/util/Collection;Ljd;F)I a method_13645 setSpawn + m (Ljd;FLjava/lang/String;Ljava/util/Collection;)Lwz; a method_52078 method_52078 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13643 method_13643 + m (Ljd;FLjava/lang/String;Ljava/util/Collection;)Lwz; b method_52079 method_52079 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13640 method_13640 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13642 method_13642 + m ()V +c aok net/minecraft/class_3128 net/minecraft/server/commands/SetWorldSpawnCommand + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13647 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_30734 method_30734 + m (Let;)Z a method_13649 method_13649 + m (Let;Ljd;F)I a method_13650 setSpawn + m (Ljd;F)Lwz; a method_52080 method_52080 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13648 method_13648 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13646 method_13646 + m ()V +c aol net/minecraft/class_8044 net/minecraft/server/commands/SpawnArmorTrimsCommand + f Ljava/util/Map; a field_41885 MATERIAL_AND_SLOT_TO_ITEM + f Ljava/util/List; b field_41886 VANILLA_TRIM_PATTERNS + f Ljava/util/List; c field_41887 VANILLA_TRIM_MATERIALS + f Ljava/util/function/ToIntFunction; d field_41888 TRIM_PATTERN_ORDER + f Ljava/util/function/ToIntFunction; e field_41889 TRIM_MATERIAL_ORDER + m ()Lwz; a method_52081 method_52081 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_48333 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_48334 method_48334 + m (Let;)Z a method_48335 method_48335 + m (Let;Lcmx;)I a method_48336 spawnArmorTrims + m (Ljava/util/HashMap;)V a method_48341 method_48341 + m (Ljv;Ljz;Ljz;Lcxa;Lcwy;)V a method_48337 method_48337 + m (Ljz;Lcwy;)Ljava/lang/Integer; a method_48338 method_48338 + m (Ljz;Lcxa;)Ljava/lang/Integer; a method_48339 method_48339 + m (Ljz;Ljv;Ljz;Lcxa;)V a method_48340 method_48340 + m ()V + m ()V +c aom net/minecraft/class_4694 net/minecraft/server/commands/SpectateCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_21463 ERROR_SELF + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; b field_21464 ERROR_NOT_SPECTATOR + m ()Lwz; a method_52082 method_52082 + m (Lbsr;)Lwz; a method_52083 method_52083 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_23653 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_23654 method_23654 + m (Let;)Z a method_23651 method_23651 + m (Let;Lbsr;Laqv;)I a method_23652 spectate + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_23655 method_23655 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_23656 method_23656 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_23657 method_23657 + m ()V + m ()V +c aon net/minecraft/class_3131 net/minecraft/server/commands/SpreadPlayersCommand + f I a field_33397 MAX_ITERATION_COUNT + f Lcom/mojang/brigadier/exceptions/Dynamic4CommandExceptionType; b field_13734 ERROR_FAILED_TO_SPREAD_TEAMS + f Lcom/mojang/brigadier/exceptions/Dynamic4CommandExceptionType; c field_13735 ERROR_FAILED_TO_SPREAD_ENTITIES + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; d field_36326 ERROR_INVALID_MAX_HEIGHT + m (Layw;IDDDD)[Laon$a; a method_13653 createInitialPositions + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13654 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_29193 method_29193 + m (Let;)Z a method_13659 method_13659 + m (Let;Lexb;FFIZLjava/util/Collection;)I a method_13656 spreadPlayers + m (Lexb;DLaqu;Layw;DDDDI[Laon$a;Z)V a method_13661 spreadPositions + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_39991 method_39991 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_13660 method_13660 + m (Ljava/util/Collection;)I a method_13652 getNumberOfTeams + m (Ljava/util/Collection;Laqu;[Laon$a;IZ)D a method_13657 setPlayerPositions + m (Z[Laon$a;Lexb;D)Lwz; a method_52084 method_52084 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13658 method_13658 + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13655 method_13655 + m ()V + m ()V +c aon$a net/minecraft/class_3131$class_3132 net/minecraft/server/commands/SpreadPlayersCommand$Position + f D a field_13737 x + f D b field_13736 z + m ()V a method_13671 normalize + m (DDDD)Z a method_13666 clamp + m (Laon$a;)D a method_13665 dist + m (Layw;DDDD)V a method_13667 randomize + m (Ldcc;I)I a method_13669 getSpawnY + m ()D b method_13668 getLength + m (Laon$a;)V b method_13670 moveAway + m (Ldcc;I)Z b method_13662 isSafe + m ()V +c aoo net/minecraft/class_3134 net/minecraft/server/commands/StopCommand + m ()Lwz; a method_52085 method_52085 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13675 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13676 method_13676 + m (Let;)Z a method_13677 method_13677 + m ()V +c aop net/minecraft/class_3136 net/minecraft/server/commands/StopSoundCommand + m ()Lwz; a method_52086 method_52086 + m (Lakr;)Lwz; a method_52087 method_52087 + m (Lakr;Lavq;)Lwz; a method_52088 method_52088 + m (Lavq;)Lwz; a method_52089 method_52089 + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I a method_13684 method_13684 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13681 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13683 method_13683 + m (Let;)Z a method_13682 method_13682 + m (Let;Ljava/util/Collection;Lavq;Lakr;)I a method_13685 stopSound + m (Lavq;Lcom/mojang/brigadier/context/CommandContext;)I b method_13686 method_13686 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13680 method_13680 + m ()V +c aoq net/minecraft/class_3138 net/minecraft/server/commands/SummonCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13741 ERROR_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_26629 ERROR_DUPLICATE_UUID + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_22254 INVALID_POSITION + m (Lbsr;)Lwz; a method_52090 method_52090 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13690 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13692 method_13692 + m (Let;)Z a method_13693 method_13693 + m (Let;Ljm$c;Lexc;Lub;Z)Lbsr; a method_48758 createEntity + m (Lexc;Lbsr;)Lbsr; a method_48759 method_48759 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13689 method_13689 + m (Let;Ljm$c;Lexc;Lub;Z)I b method_13694 spawnEntity + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13691 method_13691 + m ()V + m ()V +c aor net/minecraft/class_3140 net/minecraft/server/commands/TagCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13742 ERROR_ADD_FAILED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13743 ERROR_REMOVE_FAILED + m (Lbsr;)Lwz; a method_52091 method_52091 + m (Lbsr;Ljava/util/Set;)Lwz; a method_52092 method_52092 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13698 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13704 method_13704 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13701 method_13701 + m (Let;)Z a method_13705 method_13705 + m (Let;Ljava/util/Collection;)I a method_13700 listTags + m (Let;Ljava/util/Collection;Ljava/lang/String;)I a method_13702 addTag + m (Ljava/lang/String;Ljava/util/Collection;)Lwz; a method_52093 method_52093 + m (Ljava/util/Collection;)Ljava/util/Collection; a method_13706 getTags + m (Ljava/util/Collection;Ljava/util/Set;)Lwz; a method_52094 method_52094 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13697 method_13697 + m (Let;Ljava/util/Collection;Ljava/lang/String;)I b method_13699 removeTag + m (Ljava/lang/String;Ljava/util/Collection;)Lwz; b method_52095 method_52095 + m (Ljava/util/Collection;)Lwz; b method_52096 method_52096 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13703 method_13703 + m (Ljava/lang/String;Ljava/util/Collection;)Lwz; c method_52097 method_52097 + m (Ljava/lang/String;Ljava/util/Collection;)Lwz; d method_52098 method_52098 + m ()V + m ()V +c aos net/minecraft/class_3142 net/minecraft/server/commands/TeamCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13749 ERROR_TEAM_ALREADY_EXISTS + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13751 ERROR_TEAM_ALREADY_EMPTY + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13755 ERROR_TEAM_ALREADY_NAME + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13746 ERROR_TEAM_ALREADY_COLOR + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_13753 ERROR_TEAM_ALREADY_FRIENDLYFIRE_ENABLED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; f field_13754 ERROR_TEAM_ALREADY_FRIENDLYFIRE_DISABLED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; g field_13747 ERROR_TEAM_ALREADY_FRIENDLYINVISIBLES_ENABLED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; h field_13756 ERROR_TEAM_ALREADY_FRIENDLYINVISIBLES_DISABLED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; i field_13752 ERROR_TEAM_NAMETAG_VISIBLITY_UNCHANGED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; j field_13757 ERROR_TEAM_DEATH_MESSAGE_VISIBLITY_UNCHANGED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; k field_13750 ERROR_TEAM_COLLISION_UNCHANGED + m (Lcom/mojang/brigadier/context/CommandContext;)I A method_13752 method_13752 + m ()Lwz; a method_52099 method_52099 + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13736 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13712 method_13712 + m (Let;)I a method_13728 listTeams + m (Let;Leyb;)I a method_13723 emptyTeam + m (Let;Leyb;Leyi$a;)I a method_13713 setCollision + m (Let;Leyb;Leyi$b;)I a method_13732 setNametagVisibility + m (Let;Leyb;Ljava/util/Collection;)I a method_13720 joinTeam + m (Let;Leyb;Ln;)I a method_13745 setColor + m (Let;Leyb;Lwz;)I a method_13711 setDisplayName + m (Let;Leyb;Z)I a method_13751 setFriendlySight + m (Let;Ljava/lang/String;)I a method_13757 createTeam + m (Let;Ljava/lang/String;Lwz;)I a method_13715 createTeam + m (Let;Ljava/util/Collection;)I a method_13714 leaveTeam + m (Leyb;)Lwz; a method_52100 method_52100 + m (Leyb;Leyi$a;)Lwz; a method_52101 method_52101 + m (Leyb;Leyi$b;)Lwz; a method_52102 method_52102 + m (Leyb;Ljava/util/Collection;)Lwz; a method_52103 method_52103 + m (Leyb;Ln;)Lwz; a method_52104 method_52104 + m (Ljava/util/Collection;)Lwz; a method_55372 getFirstMemberName + m (Ljava/util/Collection;Leyb;)Lwz; a method_52106 method_52106 + m (Lwz;)Lwz; a method_52107 method_52107 + m (ZLeyb;)Lwz; a method_52108 method_52108 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13717 method_13717 + m (Let;)Z b method_13719 method_13719 + m (Let;Leyb;)I b method_13747 deleteTeam + m (Let;Leyb;Leyi$b;)I b method_13735 setDeathMessageVisibility + m (Let;Leyb;Lwz;)I b method_13743 setPrefix + m (Let;Leyb;Z)I b method_13754 setFriendlyFire + m (Leyb;)Lwz; b method_52109 method_52109 + m (Leyb;Leyi$b;)Lwz; b method_52110 method_52110 + m (Ljava/util/Collection;)Lwz; b method_52105 method_52105 + m (Ljava/util/Collection;Leyb;)Lwz; b method_52112 method_52112 + m (Lwz;)Lwz; b method_52113 method_52113 + m (ZLeyb;)Lwz; b method_52114 method_52114 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13724 method_13724 + m (Let;Leyb;)I c method_13748 listMembers + m (Let;Leyb;Lwz;)I c method_13756 setSuffix + m (Leyb;)Lwz; c method_52115 method_52115 + m (Ljava/util/Collection;)Lwz; c method_52111 method_52111 + m (Ljava/util/Collection;Leyb;)Lwz; c method_52117 method_52117 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13739 method_13739 + m (Leyb;)Lwz; d method_52118 method_52118 + m (Ljava/util/Collection;)Lwz; d method_52116 method_52116 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13733 method_13733 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13755 method_13755 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13750 method_13750 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13721 method_13721 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_13730 method_13730 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_13727 method_13727 + m (Lcom/mojang/brigadier/context/CommandContext;)I k method_13742 method_13742 + m (Lcom/mojang/brigadier/context/CommandContext;)I l method_13734 method_13734 + m (Lcom/mojang/brigadier/context/CommandContext;)I m method_13740 method_13740 + m (Lcom/mojang/brigadier/context/CommandContext;)I n method_13725 method_13725 + m (Lcom/mojang/brigadier/context/CommandContext;)I o method_13729 method_13729 + m (Lcom/mojang/brigadier/context/CommandContext;)I p method_13716 method_13716 + m (Lcom/mojang/brigadier/context/CommandContext;)I q method_13718 method_13718 + m (Lcom/mojang/brigadier/context/CommandContext;)I r method_13746 method_13746 + m (Lcom/mojang/brigadier/context/CommandContext;)I s method_13738 method_13738 + m (Lcom/mojang/brigadier/context/CommandContext;)I t method_13744 method_13744 + m (Lcom/mojang/brigadier/context/CommandContext;)I u method_13731 method_13731 + m (Lcom/mojang/brigadier/context/CommandContext;)I v method_13726 method_13726 + m (Lcom/mojang/brigadier/context/CommandContext;)I w method_13722 method_13722 + m (Lcom/mojang/brigadier/context/CommandContext;)I x method_13753 method_13753 + m (Lcom/mojang/brigadier/context/CommandContext;)I y method_13749 method_13749 + m (Lcom/mojang/brigadier/context/CommandContext;)I z method_13737 method_13737 + m ()V + m ()V +c aot net/minecraft/class_3945 net/minecraft/server/commands/TeamMsgCommand + f Lxw; a field_24380 SUGGEST_STYLE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_17440 ERROR_NOT_ON_TEAM + m (Lbsr;Leyb;Laqv;)Z a method_45154 method_45154 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_17600 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_17601 method_17601 + m (Let;Lbsr;Leyb;Ljava/util/List;Lxp;)V a method_17599 sendMessage + m (Let;Lbsr;Leyb;Ljava/util/List;Lxp;)V b method_45155 method_45155 + m ()V + m ()V +c aou net/minecraft/class_3143 net/minecraft/server/commands/TeleportCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_22255 INVALID_POSITION + m (D)Ljava/lang/String; a method_36970 formatDouble + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13760 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13769 method_13769 + m (Let;)Z a method_13763 method_13763 + m (Let;Lbsr;Laqu;DDDLjava/util/Set;FFLaou$a;)V a method_13766 performTeleport + m (Let;Ljava/util/Collection;Laqu;Lgr;Lgr;Laou$a;)I a method_13765 teleportToPos + m (Let;Ljava/util/Collection;Lbsr;)I a method_13771 teleportToEntity + m (Ljava/util/Collection;Lbsr;)Lwz; a method_52119 method_52119 + m (Ljava/util/Collection;Lexc;)Lwz; a method_52120 method_52120 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13758 method_13758 + m (Let;)Z b method_13764 method_13764 + m (Ljava/util/Collection;Lbsr;)Lwz; b method_52121 method_52121 + m (Ljava/util/Collection;Lexc;)Lwz; b method_52122 method_52122 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13762 method_13762 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13767 method_13767 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13761 method_13761 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13759 method_13759 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13770 method_13770 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13768 method_13768 + m ()V + m ()V +c aou$a net/minecraft/class_3143$class_3144 net/minecraft/server/commands/TeleportCommand$LookAt + m (Let;Lbsr;)V perform method_13772 perform +c aou$b net/minecraft/class_3143$class_9251 net/minecraft/server/commands/TeleportCommand$LookAtEntity + f Lbsr; a comp_2357 entity + f Lff$a; b comp_2358 anchor + m ()Lbsr; a comp_2357 entity + m ()Lff$a; b comp_2358 anchor + m (Lbsr;Lff$a;)V +c aou$c net/minecraft/class_3143$class_9252 net/minecraft/server/commands/TeleportCommand$LookAtPosition + f Lexc; a comp_2359 position + m ()Lexc; a comp_2359 position + m (Lexc;)V +c aov net/minecraft/class_3146 net/minecraft/server/commands/TellRawCommand + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13776 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13777 method_13777 + m (Let;)Z a method_13778 method_13778 + m ()V +c aow net/minecraft/class_8916 net/minecraft/server/commands/TickCommand + f F a field_46925 MAX_TICKRATE + f Ljava/lang/String; b field_46926 DEFAULT_TICKRATE + m ()Lwz; a method_54684 method_54684 + m (I)Lwz; a method_54685 method_54685 + m (J)Ljava/lang/String; a method_54686 nanosToMilisString + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_54687 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_54688 method_54688 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_54689 method_54689 + m (Let;)I a method_54690 tickQuery + m (Let;F)I a method_54691 setTickingRate + m (Let;I)I a method_54692 sprint + m (Let;Z)I a method_54693 setFreeze + m (Ljava/lang/String;)Lwz; a method_54694 method_54694 + m (Ljava/lang/String;Ljava/lang/String;)Lwz; a method_54695 method_54695 + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lwz; a method_54696 method_54696 + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[J)Lwz; a method_54697 method_54697 + m ()Lwz; b method_54698 method_54698 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_54699 method_54699 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_54700 method_54700 + m (Let;)I b method_54701 stopStepping + m (Let;I)I b method_54702 step + m ()Lwz; c method_54703 method_54703 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_54704 method_54704 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; c method_54705 method_54705 + m (Let;)I c method_54706 stopSprinting + m ()Lwz; d method_54707 method_54707 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_54708 method_54708 + m (Let;)Z d method_54709 method_54709 + m ()Lwz; e method_54710 method_54710 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_54711 method_54711 + m ()Lwz; f method_54712 method_54712 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_54713 method_54713 + m ()Lwz; g method_55596 method_55596 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_54865 method_54865 + m ()Lwz; h method_54714 method_54714 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_54715 method_54715 + m ()Lwz; i method_54716 method_54716 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_54717 method_54717 + m ()Lwz; j method_54718 method_54718 + m ()V + m ()V +c aox net/minecraft/class_3149 net/minecraft/server/commands/TimeCommand + m (I)Lwz; a method_52123 method_52123 + m (Laqu;)I a method_13787 getDayTime + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13786 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13795 method_13795 + m (Let;)Z a method_13791 method_13791 + m (Let;I)I a method_13784 setTime + m (I)Lwz; b method_52124 method_52124 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13783 method_13783 + m (Let;I)I b method_13788 addTime + m (I)Lwz; c method_52125 method_52125 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13790 method_13790 + m (Let;I)I c method_13796 queryTime + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13793 method_13793 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13789 method_13789 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13785 method_13785 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13797 method_13797 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13794 method_13794 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_13792 method_13792 + m ()V +c aoy net/minecraft/class_3151 net/minecraft/server/commands/TitleCommand + m (Lcom/mojang/brigadier/CommandDispatcher;Lep;)V a method_13804 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13809 method_13809 + m (Let;)Z a method_13810 method_13810 + m (Let;Ljava/util/Collection;)I a method_13805 clearTitle + m (Let;Ljava/util/Collection;III)I a method_13806 setTimes + m (Let;Ljava/util/Collection;Lwz;Ljava/lang/String;Ljava/util/function/Function;)I a method_13802 showTitle + m (Ljava/lang/String;Ljava/util/Collection;)Lwz; a method_52126 method_52126 + m (Ljava/util/Collection;)Lwz; a method_52127 method_52127 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13800 method_13800 + m (Let;Ljava/util/Collection;)I b method_13799 resetTitle + m (Ljava/lang/String;Ljava/util/Collection;)Lwz; b method_52128 method_52128 + m (Ljava/util/Collection;)Lwz; b method_52129 method_52129 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13808 method_13808 + m (Ljava/util/Collection;)Lwz; c method_52130 method_52130 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13801 method_13801 + m (Ljava/util/Collection;)Lwz; d method_52131 method_52131 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13807 method_13807 + m (Ljava/util/Collection;)Lwz; e method_52132 method_52132 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13803 method_13803 + m (Ljava/util/Collection;)Lwz; f method_52133 method_52133 + m ()V +c aoz net/minecraft/class_9159 net/minecraft/server/commands/TransferCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_48710 ERROR_NO_PLAYERS + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_56522 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_56523 method_56523 + m (Let;)Z a method_56524 method_56524 + m (Let;Ljava/lang/String;ILjava/util/Collection;)I a method_56525 transfer + m (Ljava/util/Collection;Ljava/lang/String;I)Lwz; a method_56526 method_56526 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_56527 method_56527 + m (Ljava/util/Collection;Ljava/lang/String;I)Lwz; b method_56528 method_56528 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_56529 method_56529 + m ()V + m ()V +c apa net/minecraft/class_3153 net/minecraft/server/commands/TriggerCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13763 ERROR_NOT_PRIMED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13764 ERROR_INVALID_OBJECTIVE + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13813 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13816 method_13816 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13814 method_13814 + m (Let;Laqv;Lexy;)I a method_13818 simpleTrigger + m (Let;Laqv;Lexy;I)I a method_13817 addValue + m (Let;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13819 suggestObjectives + m (Lexy;)Lwz; a method_52134 method_52134 + m (Lexy;I)Lwz; a method_52135 method_52135 + m (Leyg;Leyf;Lexy;)Leye; a method_13821 getScore + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13812 method_13812 + m (Let;Laqv;Lexy;I)I b method_13820 setValue + m (Lexy;I)Lwz; b method_52136 method_52136 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13815 method_13815 + m ()V + m ()V +c apb net/minecraft/class_7240 net/minecraft/server/commands/WardenSpawnTrackerCommand + m (ILcmd;)V a method_45156 method_45156 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_42100 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_42101 method_42101 + m (Let;)Z a method_42102 method_42102 + m (Let;Ljava/util/Collection;)I a method_42103 resetTracker + m (Let;Ljava/util/Collection;I)I a method_42104 setWarningLevel + m (Ljava/util/Collection;)Lwz; a method_52137 method_52137 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_42105 method_42105 + m (Ljava/util/Collection;)Lwz; b method_52138 method_52138 + m (Ljava/util/Collection;)Lwz; c method_52139 method_52139 + m (Ljava/util/Collection;)Lwz; d method_52140 method_52140 + m ()V +c apc net/minecraft/class_3155 net/minecraft/server/commands/WeatherCommand + f I a field_33398 DEFAULT_TIME + m ()Lwz; a method_52141 method_52141 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13827 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13831 method_13831 + m (Let;)Z a method_13832 method_13832 + m (Let;I)I a method_13824 setClear + m (Let;ILbpw;)I a method_48087 getDuration + m ()Lwz; b method_52142 method_52142 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13823 method_13823 + m (Let;I)I b method_13828 setRain + m ()Lwz; c method_52143 method_52143 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13830 method_13830 + m (Let;I)I c method_13833 setThunder + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13825 method_13825 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13829 method_13829 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13826 method_13826 + m ()V +c apd net/minecraft/class_3156 net/minecraft/server/commands/WhitelistCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13767 ERROR_ALREADY_ENABLED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13770 ERROR_ALREADY_DISABLED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13768 ERROR_ALREADY_WHITELISTED + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13769 ERROR_NOT_WHITELISTED + m ()Lwz; a method_52144 method_52144 + m (Laqv;)Ljava/lang/String; a method_13844 method_13844 + m (Laur;Laqv;)Z a method_13841 method_13841 + m (Lcom/mojang/authlib/GameProfile;)Lwz; a method_52145 method_52145 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13836 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13851 method_13851 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_13849 method_13849 + m (Let;)I a method_13850 reload + m (Let;Ljava/util/Collection;)I a method_13838 addPlayers + m ([Ljava/lang/String;)Lwz; a method_52146 method_52146 + m ()Lwz; b method_52147 method_52147 + m (Lcom/mojang/authlib/GameProfile;)Lwz; b method_52148 method_52148 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13834 method_13834 + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; b method_13848 method_13848 + m (Let;)I b method_13839 enableWhitelist + m (Let;Ljava/util/Collection;)I b method_13845 removePlayers + m ()Lwz; c method_52149 method_52149 + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13843 method_13843 + m (Let;)I c method_13837 disableWhitelist + m ()Lwz; d method_52150 method_52150 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13846 method_13846 + m (Let;)I d method_13840 showList + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13842 method_13842 + m (Let;)Z e method_13847 method_13847 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13835 method_13835 + m ()V + m ()V +c ape net/minecraft/class_3158 net/minecraft/server/commands/WorldBorderCommand + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; a field_13775 ERROR_SAME_CENTER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13780 ERROR_SAME_SIZE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; c field_13776 ERROR_TOO_SMALL + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13779 ERROR_TOO_BIG + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; e field_36188 ERROR_TOO_FAR_OUT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; f field_13773 ERROR_SAME_WARNING_TIME + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; g field_13777 ERROR_SAME_WARNING_DISTANCE + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; h field_13778 ERROR_SAME_DAMAGE_BUFFER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; i field_13774 ERROR_SAME_DAMAGE_AMOUNT + m (D)Lwz; a method_52151 method_52151 + m (DJ)Lwz; a method_52152 method_52152 + m (F)Lwz; a method_52153 method_52153 + m (I)Lwz; a method_52154 method_52154 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13858 register + m (Lcom/mojang/brigadier/context/CommandContext;)I a method_13870 method_13870 + m (Let;)I a method_13868 getSize + m (Let;DJ)I a method_13854 setSize + m (Let;F)I a method_13865 setDamageBuffer + m (Let;I)I a method_13856 setWarningTime + m (Let;Lexb;)I a method_13869 setCenter + m (Lexb;)Lwz; a method_52155 method_52155 + m (D)Lwz; b method_52156 method_52156 + m (DJ)Lwz; b method_52157 method_52157 + m (F)Lwz; b method_52158 method_52158 + m (I)Lwz; b method_52159 method_52159 + m (Lcom/mojang/brigadier/context/CommandContext;)I b method_13855 method_13855 + m (Let;)Z b method_13862 method_13862 + m (Let;F)I b method_13863 setDamageAmount + m (Let;I)I b method_13859 setWarningDistance + m (Lcom/mojang/brigadier/context/CommandContext;)I c method_13861 method_13861 + m (Lcom/mojang/brigadier/context/CommandContext;)I d method_13866 method_13866 + m (Lcom/mojang/brigadier/context/CommandContext;)I e method_13860 method_13860 + m (Lcom/mojang/brigadier/context/CommandContext;)I f method_13857 method_13857 + m (Lcom/mojang/brigadier/context/CommandContext;)I g method_13872 method_13872 + m (Lcom/mojang/brigadier/context/CommandContext;)I h method_13867 method_13867 + m (Lcom/mojang/brigadier/context/CommandContext;)I i method_13864 method_13864 + m (Lcom/mojang/brigadier/context/CommandContext;)I j method_13871 method_13871 + m ()V + m ()V +c apf net/minecraft/class_3161 net/minecraft/server/commands/data/BlockDataAccessor + f Ljava/util/function/Function; a field_13786 PROVIDER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13785 ERROR_NOT_A_BLOCK_ENTITY + f Ldqh; c field_13784 entity + f Ljd; d field_13783 pos + m (Ljava/lang/String;)Laph$c; a method_13878 method_13878 + m (Ldqh;Ljd;)V + m ()V +c apf$1 net/minecraft/class_3161$1 net/minecraft/server/commands/data/BlockDataAccessor$1 + f Ljava/lang/String; a field_13787 val$argPrefix + m (Ljava/lang/String;)V +c apg net/minecraft/class_3162 net/minecraft/server/commands/data/DataAccessor + m ()Lub; a method_13881 getData + m (Lfl$g;DI)Lwz; a method_13879 getPrintSuccess + m (Lub;)V a method_13880 setData + m (Luy;)Lwz; a method_13882 getPrintSuccess + m ()Lwz; b method_13883 getModifiedSuccess +c aph net/minecraft/class_3164 net/minecraft/server/commands/data/DataCommands + f Ljava/util/List; a field_13790 ALL_PROVIDERS + f Ljava/util/List; b field_13798 TARGET_PROVIDERS + f Ljava/util/List; c field_13792 SOURCE_PROVIDERS + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; d field_13796 ERROR_MERGE_UNCHANGED + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; e field_13791 ERROR_GET_NOT_NUMBER + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; f field_13793 ERROR_GET_NON_EXISTENT + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; g field_13794 ERROR_MULTIPLE_TAGS + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; h field_13797 ERROR_EXPECTED_OBJECT + f Lcom/mojang/brigadier/exceptions/DynamicCommandExceptionType; i field_41747 ERROR_EXPECTED_VALUE + f Lcom/mojang/brigadier/exceptions/Dynamic2CommandExceptionType; j field_44916 ERROR_INVALID_SUBSTRING + m (II)I a method_51824 getOffset + m (Lapg;)Lwz; a method_52160 method_52160 + m (Lapg;Lfl$g;DI)Lwz; a method_52161 method_52161 + m (Lapg;Lub;)Lwz; a method_52162 method_52162 + m (Lapg;Luy;)Lwz; a method_52163 method_52163 + m (Laph$c;Laph$a;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13899 method_13899 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_48088 method_48088 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I a method_48089 method_48089 + m (Laph$c;Laph$a;Lcom/mojang/brigadier/context/CommandContext;)I a method_13900 method_13900 + m (Laph$c;Laph$c;Laph$a;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_48090 method_48090 + m (Laph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13923 method_13923 + m (Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I a method_13912 method_13912 + m (Lcom/mojang/brigadier/CommandDispatcher;)V a method_13905 register + m (Lcom/mojang/brigadier/builder/ArgumentBuilder;Laph$b;)V a method_13895 method_13895 + m (Lcom/mojang/brigadier/context/CommandContext;Laph$c;)Ljava/util/List; a method_48091 getSingletonSource + m (Lcom/mojang/brigadier/context/CommandContext;Laph$c;Laph$a;Ljava/util/List;)I a method_13920 manipulateData + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; a method_48092 method_48092 + m (Lcom/mojang/brigadier/context/CommandContext;Lub;Lfl$g;Ljava/util/List;)I a method_47952 method_47952 + m (Let;)Z a method_13890 method_13890 + m (Let;Lapg;)I a method_13908 getData + m (Let;Lapg;Lfl$g;)I a method_13885 removeData + m (Let;Lapg;Lfl$g;D)I a method_13903 getNumeric + m (Let;Lapg;Lub;)I a method_13901 mergeData + m (Lfl$g;Lapg;)Luy; a method_13921 getSingleTag + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_48093 method_48093 + m (Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/brigadier/Message; a method_52164 method_52164 + m (Ljava/lang/String;)Ljava/lang/String; a method_48094 method_48094 + m (Ljava/lang/String;I)Ljava/lang/String; a method_51825 substring + m (Ljava/lang/String;II)Ljava/lang/String; a method_52165 validatedSubstring + m (Ljava/util/List;Laph$d;)Ljava/util/List; a method_48095 stringifyTagList + m (Ljava/util/function/BiConsumer;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13898 decorateModification + m (Ljava/util/function/BiConsumer;Laph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13922 method_13922 + m (Ljava/util/function/Function;)Laph$c; a method_13906 method_13906 + m (Luy;)Ljava/lang/String; a method_48096 getAsText + m (Lapg;)Lwz; b method_52166 method_52166 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; b method_13893 method_13893 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I b method_48097 method_48097 + m (Laph$c;Laph$c;Laph$a;)Lcom/mojang/brigadier/builder/ArgumentBuilder; b method_13911 method_13911 + m (Laph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; b method_13889 method_13889 + m (Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I b method_13886 method_13886 + m (Lcom/mojang/brigadier/context/CommandContext;Laph$c;)Ljava/util/List; b method_48098 resolveSourcePath + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; b method_48099 method_48099 + m (Lcom/mojang/brigadier/context/CommandContext;Lub;Lfl$g;Ljava/util/List;)I b method_13888 method_13888 + m (Let;Lapg;Lfl$g;)I b method_13916 getData + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; b method_13907 method_13907 + m (Ljava/lang/String;)Ljava/lang/String; b method_48100 method_48100 + m (Ljava/lang/String;II)Ljava/lang/String; b method_51826 substring + m (Ljava/util/function/Function;)Laph$c; b method_13919 method_13919 + m (Lapg;)Lwz; c method_52167 method_52167 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I c method_48101 method_48101 + m (Laph$c;Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; c method_13896 method_13896 + m (Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I c method_13904 method_13904 + m (Lcom/mojang/brigadier/context/CommandContext;Lub;Lfl$g;Ljava/util/List;)I c method_47953 method_47953 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; c method_13892 method_13892 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I d method_48102 method_48102 + m (Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I d method_13909 method_13909 + m (Lcom/mojang/brigadier/context/CommandContext;Lub;Lfl$g;Ljava/util/List;)I d method_47954 method_47954 + m (Ljava/lang/Object;)Lcom/mojang/brigadier/Message; d method_13902 method_13902 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I e method_48103 method_48103 + m (Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I e method_13887 method_13887 + m (Lcom/mojang/brigadier/context/CommandContext;Lub;Lfl$g;Ljava/util/List;)I e method_13891 method_13891 + m (Laph$c;Laph$a;Laph$c;Lcom/mojang/brigadier/context/CommandContext;)I f method_48104 method_48104 + m ()V + m ()V +c aph$a net/minecraft/class_3164$class_3165 net/minecraft/server/commands/data/DataCommands$DataManipulator +c aph$b net/minecraft/class_3164$class_3166 net/minecraft/server/commands/data/DataCommands$DataManipulatorDecorator +c aph$c net/minecraft/class_3164$class_3167 net/minecraft/server/commands/data/DataCommands$DataProvider + m (Lcom/mojang/brigadier/builder/ArgumentBuilder;Ljava/util/function/Function;)Lcom/mojang/brigadier/builder/ArgumentBuilder; a method_13925 wrap + m (Lcom/mojang/brigadier/context/CommandContext;)Lapg; a method_13924 access +c aph$d net/minecraft/class_3164$class_8569 net/minecraft/server/commands/data/DataCommands$StringProcessor +c api net/minecraft/class_3169 net/minecraft/server/commands/data/EntityDataAccessor + f Ljava/util/function/Function; a field_13800 PROVIDER + f Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; b field_13799 ERROR_NO_PLAYERS + f Lbsr; c field_13801 entity + m (Ljava/lang/String;)Laph$c; a method_13927 method_13927 + m (Lbsr;)V + m ()V +c api$1 net/minecraft/class_3169$1 net/minecraft/server/commands/data/EntityDataAccessor$1 + f Ljava/lang/String; a field_13802 val$arg + m (Ljava/lang/String;)V +c apj net/minecraft/class_4580 net/minecraft/server/commands/data/StorageDataAccessor + f Ljava/util/function/Function; a field_20855 PROVIDER + f Lcom/mojang/brigadier/suggestion/SuggestionProvider; b field_20856 SUGGEST_STORAGE + f Leqw; c field_20857 storage + f Lakr; d field_20858 id + m (Lcom/mojang/brigadier/context/CommandContext;)Leqw; a method_22842 getGlobalTags + m (Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_22840 method_22840 + m (Ljava/lang/String;)Laph$c; a method_22841 method_22841 + m (Leqw;Lakr;)V + m ()V +c apj$1 net/minecraft/class_4580$1 net/minecraft/server/commands/data/StorageDataAccessor$1 + f Ljava/lang/String; a field_20859 val$arg + m (Ljava/lang/String;)V +c apk net/minecraft/class_5974 net/minecraft/server/commands/data/package-info +c apl net/minecraft/class_5975 net/minecraft/server/commands/package-info +c apm net/minecraft/class_3174 net/minecraft/server/dedicated/DedicatedPlayerList + f Lorg/slf4j/Logger; h field_13804 LOGGER + m ()V A method_13934 loadOps + m ()V B method_13935 saveOps + m ()V C method_13936 loadWhiteList + m ()V D method_13937 saveWhiteList + m ()Lapn; b method_13938 getServer + m ()V w method_13932 saveIpBanList + m ()V x method_13930 saveUserBanList + m ()V y method_13931 loadIpBanList + m ()V z method_13933 loadUserBanList + m (Lapn;Ljt;Leri;)V + m ()V +c apn net/minecraft/class_3176 net/minecraft/server/dedicated/DedicatedServer + f Lorg/slf4j/Logger; k field_13814 LOGGER + f I l field_29662 CONVERSION_RETRY_DELAY_MS + f I m field_29663 CONVERSION_RETRIES + f Ljava/util/List; n field_13815 consoleInput + f Lavi; o field_13816 queryThreadGs4 + f Lavf; p field_13811 rconConsoleSource + f Lavk; q field_13819 rconThread + f Lapp; r field_16799 settings + f Lapt; s field_16800 gui + f Lasa; t field_26898 textFilterClient + f Lblt; u field_48788 tickTimeLogger + f Lblq; v field_48789 debugSampleSubscriptionTracker + f Lalj; w field_52215 serverLinks + m (ILapo;)Lapo; a method_16710 method_16710 + m (Lapo;)Ljava/util/Optional; a method_60939 parseBugReportLink + m (Lapp;)Lalj; a method_60940 createServerLinks + m (Ljava/lang/String;Let;)V a method_13947 handleConsoleInput + m (Ljava/net/URI;)Lalj; a method_60941 method_60941 + m (ZLapo;)Lapo; a method_16711 method_16711 + m ()V bD method_13942 waitForRetry + m ()Ljava/lang/String; bE method_13943 method_13943 + m ()Ljava/lang/String; bF method_13946 method_13946 + m ()V br method_13941 handleConsoleInputs + m ()Lapm; bs method_13949 getPlayerList + m ()V bt method_13948 showGui + m ()Z bu method_13951 convertOldUsers + m ()J bv method_13944 getMaxTickLength + m (Ljava/lang/String;)V e method_20799 method_20799 + m (Z)V i method_16712 storeUsingWhiteList + m (Ljava/lang/Thread;Lerf$c;Latp;Lalp;Lapp;Lcom/mojang/datafixers/DataFixer;Lalm;Lare;)V + m ()V +c apn$1 net/minecraft/class_3176$1 net/minecraft/server/dedicated/DedicatedServer$1 + f Lapn; a field_13822 field_13822 + m (Lapn;Ljava/lang/String;)V +c apo net/minecraft/class_3806 net/minecraft/server/dedicated/DedicatedServerProperties + f I A field_16816 spawnProtection + f I B field_16845 opPermissionLevel + f I C field_20324 functionPermissionLevel + f J D field_16815 maxTickTime + f I E field_37275 maxChainedNeighborUpdates + f I F field_25802 rateLimitPacketsPerSecond + f I G field_16844 viewDistance + f I H field_34883 simulationDistance + f I I field_16814 maxPlayers + f I J field_16842 networkCompressionThreshold + f Z K field_16824 broadcastRconToOps + f Z L field_16802 broadcastConsoleToOps + f I M field_16812 maxWorldSize + f Z N field_23785 syncChunkWrites + f Ljava/lang/String; O field_48711 regionFileComression + f Z P field_24056 enableJmxMonitoring + f Z Q field_24453 enableStatus + f Z R field_35564 hideOnlinePlayers + f I S field_24454 entityBroadcastRangePercentage + f Ljava/lang/String; T field_26899 textFilteringConfig + f Ljava/util/Optional; U field_39093 serverResourcePackInfo + f Ldck; V field_39981 initialDataPackConfiguration + f Lapr$a; W field_16817 playerIdleTimeout + f Lapr$a; X field_16804 whiteList + f Z Y field_39018 enforceSecureProfile + f Z Z field_44985 logIPs + f Z a field_16813 onlineMode + f Ldzw; aa field_24623 worldOptions + f Z ab field_48270 acceptsTransfers + f Lorg/slf4j/Logger; ad field_37276 LOGGER + f Ljava/util/regex/Pattern; ae field_39094 SHA1 + f Lcom/google/common/base/Splitter; af field_39982 COMMA_SPLITTER + f Lapo$a; ag field_39983 worldDimensionData + f Z b field_16839 preventProxyConnections + f Ljava/lang/String; c field_16829 serverIp + f Z d field_16836 spawnAnimals + f Z e field_16809 spawnNpcs + f Z f field_16833 pvp + f Z g field_16807 allowFlight + f Ljava/lang/String; h field_16825 motd + f Ljava/lang/String; i field_51987 bugReportLink + f Z j field_16827 forceGameMode + f Z k field_16805 enforceWhitelist + f Lbqo; l field_16840 difficulty + f Ldct; m field_16841 gamemode + f Ljava/lang/String; n field_16820 levelName + f I o field_16837 serverPort + f Ljava/lang/Boolean; p field_16830 announcePlayerAchievements + f Z q field_16819 enableQuery + f I r field_16831 queryPort + f Z s field_16818 enableRcon + f I t field_16828 rconPort + f Ljava/lang/String; u field_16823 rconPassword + f Z v field_16838 hardcore + f Z w field_16811 allowNether + f Z x field_16835 spawnMonsters + f Z y field_16832 useNativeTransport + f Z z field_16806 enableCommandBlock + m (Ljava/lang/Integer;)Ljava/lang/Integer; a method_27905 method_27905 + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/util/Optional; a method_43660 getServerPackInfo + m (Ljava/nio/file/Path;)Lapo; a method_16714 fromFile + m (Lka;)Ldzt; a method_45157 createDimensions + m (Lka;Ljava/util/Properties;)Lapo; a method_16713 reload + m (Ljava/lang/Integer;)Ljava/lang/Integer; b method_16715 method_16715 + m (Ljava/lang/String;Ljava/lang/String;)Ldck; b method_45159 getDatapackConfig + m (Ljava/lang/String;)Lwz; c method_43661 parseResourcePackPrompt + m (Ljava/lang/String;)Ljava/lang/String; d method_41005 method_41005 + m (Ljava/lang/String;)Lcom/google/gson/JsonObject; e method_41186 method_41186 + m (Ljava/util/Properties;)V + m ()V +c apo$a net/minecraft/class_3806$class_7044 net/minecraft/server/dedicated/DedicatedServerProperties$WorldDimensionData + f Lcom/google/gson/JsonObject; a comp_459 generatorSettings + f Ljava/lang/String; b comp_461 levelType + f Ljava/util/Map; c field_37277 LEGACY_PRESET_NAMES + m ()Lcom/google/gson/JsonObject; a comp_459 generatorSettings + m (Lakr;)Lakq; a method_41244 method_41244 + m (Ljm$c;)Ljm$c; a method_45161 method_45161 + m (Ljz;)Ljava/util/Optional; a method_41241 method_41241 + m (Lka;)Ldzt; a method_41242 create + m ()Ljava/lang/String; b comp_461 levelType + m ()Ljava/util/Optional; c method_41245 method_41245 + m ()Ljava/lang/IllegalStateException; d method_41246 method_41246 + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)V + m ()V +c app net/minecraft/class_3807 net/minecraft/server/dedicated/DedicatedServerSettings + f Ljava/nio/file/Path; a field_16846 source + f Lapo; b field_16847 properties + m ()Lapo; a method_16717 getProperties + m (Ljava/util/function/UnaryOperator;)Lapp; a method_16718 update + m ()V b method_16719 forceSave + m (Ljava/nio/file/Path;)V +c apq net/minecraft/class_3178 net/minecraft/server/dedicated/ServerWatchdog + f Lorg/slf4j/Logger; a field_13825 LOGGER + f J b field_29664 MAX_SHUTDOWN_TIME + f I c field_29665 SHUTDOWN_STATUS + f Lapn; d field_13823 server + f J e field_46927 maxTickTimeNanos + m ()V a method_13954 exit + m (Laqu;)Ljava/lang/String; a method_31376 method_31376 + m ()Ljava/lang/String; b method_31377 method_31377 + m ()Ljava/lang/String; c method_31378 method_31378 + m (Lapn;)V + m ()V +c apq$1 net/minecraft/class_3178$1 net/minecraft/server/dedicated/ServerWatchdog$1 + m (Lapq;)V +c apr net/minecraft/class_3808 net/minecraft/server/dedicated/Settings + f Lorg/slf4j/Logger; a field_16849 LOGGER + f Ljava/util/Properties; ac field_16848 properties + m ()Ljava/util/Properties; a method_16723 cloneProperties + m (Ljava/lang/String;)Ljava/lang/String; a method_16738 getLegacyString + m (Ljava/lang/String;I)I a method_16726 get + m (Ljava/lang/String;J)J a method_16725 get + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_16732 get + m (Ljava/lang/String;Ljava/util/function/Function;)Ljava/lang/Object; a method_16742 getLegacy + m (Ljava/lang/String;Ljava/util/function/Function;Ljava/lang/Object;)Ljava/lang/Object; a method_16737 get + m (Ljava/lang/String;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/Object;)Ljava/lang/Object; a method_16741 get + m (Ljava/lang/String;Ljava/util/function/Function;Ljava/util/function/UnaryOperator;Ljava/util/function/Function;Ljava/lang/Object;)Ljava/lang/Object; a method_16735 get + m (Ljava/lang/String;Ljava/util/function/UnaryOperator;I)I a method_16720 get + m (Ljava/lang/String;Z)Z a method_16740 get + m (Ljava/util/function/Function;)Ljava/util/function/Function; a method_16721 wrapNumberDeserializer + m (Ljava/util/function/Function;Ljava/lang/String;)Ljava/lang/Number; a method_16733 method_16733 + m (Ljava/util/function/Function;Ljava/util/function/UnaryOperator;Ljava/lang/String;)Ljava/lang/Object; a method_16731 method_16731 + m (Ljava/util/function/IntFunction;Ljava/util/function/Function;)Ljava/util/function/Function; a method_16722 dispatchNumberOrString + m (Ljava/util/function/IntFunction;Ljava/util/function/Function;Ljava/lang/String;)Ljava/lang/Object; a method_16729 method_16729 + m (Ljava/lang/String;)Ljava/lang/Boolean; b method_16736 getLegacyBoolean + m (Ljava/lang/String;I)Lapr$a; b method_16743 getMutable + m (Ljava/lang/String;Ljava/util/function/Function;Ljava/lang/Object;)Lapr$a; b method_16730 getMutable + m (Ljava/lang/String;Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/Object;)Lapr$a; b method_16724 getMutable + m (Ljava/lang/String;Z)Lapr$a; b method_16744 getMutable + m (Ljava/nio/file/Path;)Ljava/util/Properties; b method_16727 loadFromFile + m (Lka;Ljava/util/Properties;)Lapr; b method_16739 reload + m (Ljava/lang/String;)Ljava/lang/String; c method_16734 getStringRaw + m (Ljava/nio/file/Path;)V c method_16728 store + m (Ljava/util/Properties;)V + m ()V +c apr$a net/minecraft/class_3808$class_3809 net/minecraft/server/dedicated/Settings$MutableValue + f Lapr; a field_16853 field_16853 + f Ljava/lang/String; b field_16852 key + f Ljava/lang/Object; c field_16850 value + f Ljava/util/function/Function; d field_16851 serializer + m (Lka;Ljava/lang/Object;)Lapr; a method_16745 update + m (Lapr;Ljava/lang/String;Ljava/lang/Object;Ljava/util/function/Function;)V +c aps net/minecraft/class_5976 net/minecraft/server/dedicated/package-info +c apt net/minecraft/class_3182 net/minecraft/server/gui/MinecraftServerGui + f Ljava/awt/Font; a field_13837 MONOSPACED + f Lorg/slf4j/Logger; b field_13840 LOGGER + f Ljava/lang/String; c field_29666 TITLE + f Ljava/lang/String; d field_29667 SHUTDOWN_TITLE + f Lapn; e field_13839 server + f Ljava/lang/Thread; f field_13838 logAppenderThread + f Ljava/util/Collection; g field_16855 finalizers + f Ljava/util/concurrent/atomic/AtomicBoolean; h field_16854 isClosing + m ()V a method_13974 start + m (Lapn;)Lapt; a method_13969 showFrameFor + m (Ljava/lang/Runnable;)V a method_16746 addFinalizer + m (Ljavax/swing/JTextArea;Ljavax/swing/JScrollPane;)V a method_13972 method_13972 + m (Ljavax/swing/JTextArea;Ljavax/swing/JScrollPane;Ljava/lang/String;)V a method_13970 print + m (Ljavax/swing/JTextField;Ljava/awt/event/ActionEvent;)V a method_13977 method_13977 + m ()V b method_16750 close + m (Ljavax/swing/JTextArea;Ljavax/swing/JScrollPane;Ljava/lang/String;)V b method_13971 method_13971 + m ()Ljavax/swing/JComponent; c method_13976 buildInfoPanel + m ()Ljavax/swing/JComponent; d method_13975 buildPlayerPanel + m ()Ljavax/swing/JComponent; e method_13973 buildChatPanel + m ()V f method_16747 runFinalizers + m (Lapn;)V + m ()V +c apt$1 net/minecraft/class_3182$1 net/minecraft/server/gui/MinecraftServerGui$1 + f Lapt; a field_16857 val$gui + f Ljavax/swing/JFrame; b field_16856 val$frame + f Lapn; c field_13841 val$server + m (Lapt;Ljavax/swing/JFrame;Lapn;)V +c apt$2 net/minecraft/class_3182$2 net/minecraft/server/gui/MinecraftServerGui$2 + m (Lapt;)V +c apu net/minecraft/class_3184 net/minecraft/server/gui/PlayerListComponent + f Lnet/minecraft/server/MinecraftServer; a field_13844 server + f I b field_13843 tickCount + m ()V a method_18700 tick + m (Lnet/minecraft/server/MinecraftServer;)V +c apv net/minecraft/class_3186 net/minecraft/server/gui/StatsComponent + f Ljava/text/DecimalFormat; a field_13846 DECIMAL_FORMAT + f [I b field_13845 values + f I c field_13848 vp + f [Ljava/lang/String; d field_13847 msgs + f Lnet/minecraft/server/MinecraftServer; e field_13849 server + f Ljavax/swing/Timer; f field_16858 timer + m ()V a method_16751 close + m (Ljava/awt/event/ActionEvent;)V a method_13983 method_13983 + m (Ljava/text/DecimalFormat;)V a method_13981 method_13981 + m ()V b method_13982 tick + m (Lnet/minecraft/server/MinecraftServer;)V + m ()V +c apw net/minecraft/class_5977 net/minecraft/server/gui/package-info +c apx net/minecraft/class_3191 net/minecraft/server/level/BlockDestructionProgress + f I a field_13859 id + f Ljd; b field_13860 pos + f I c field_13858 progress + f I d field_13857 updatedRenderTick + m ()I a method_34868 getId + m (I)V a method_13987 setProgress + m (Lapx;)I a method_23269 compareTo + m ()Ljd; b method_13991 getPos + m (I)V b method_13989 updateTick + m ()I c method_13988 getProgress + m ()I d method_13990 getUpdatedRenderTick + m (ILjd;)V +c apy net/minecraft/class_9759 net/minecraft/server/level/ChunkGenerationTask + f Ldvz; a field_51850 targetStatus + f Laqm; b field_51851 chunkMap + f Ldcd; c field_51852 pos + f Ldvz; d field_51853 scheduledStatus + f Z e field_51854 markedForCancellation + f Ljava/util/List; f field_51855 scheduledLayer + f Lazi; g field_51856 cache + f Z h field_51857 needsGeneration + m ()Ljava/util/concurrent/CompletableFuture; a method_60424 runUntilWait + m (Laqm;II)Laqn; a method_60425 method_60425 + m (Laqm;Ldvz;Ldcd;)Lapy; a method_60426 create + m (Ldvz;Z)V a method_60427 scheduleLayer + m (Ldvz;ZLaqn;)Z a method_60428 scheduleChunkInLayer + m ()V b method_60429 markForCancellation + m (Ldvz;Z)I b method_60430 getRadiusForLayer + m ()Laqn; c method_60431 getCenter + m ()V d method_60432 scheduleNextLayer + m ()V e method_60433 releaseClaim + m ()Z f method_60434 canLoadWithoutGeneration + m ()Ljava/util/concurrent/CompletableFuture; g method_60435 waitForScheduledLayer + m (Laqm;Ldvz;Ldcd;Lazi;)V +c apz net/minecraft/class_3193 net/minecraft/server/level/ChunkHolder + f Laqc; a field_16427 UNLOADED_LEVEL_CHUNK + f Ljava/util/concurrent/CompletableFuture; e field_16429 UNLOADED_LEVEL_CHUNK_FUTURE + f Ldcy; f field_26929 levelHeightAccessor + f Ljava/util/concurrent/CompletableFuture; g field_16431 fullChunkFuture + f Ljava/util/concurrent/CompletableFuture; h field_19333 tickingChunkFuture + f Ljava/util/concurrent/CompletableFuture; i field_13865 entityTickingChunkFuture + f I j field_16432 oldTicketLevel + f I k field_13862 ticketLevel + f I l field_17208 queueLevel + f Z m field_25803 hasChangedSections + f [Lit/unimi/dsi/fastutil/shorts/ShortSet; n field_25804 changedBlocksPerSection + f Ljava/util/BitSet; o field_13871 blockChangedLightSectionFilter + f Ljava/util/BitSet; p field_13870 skyChangedLightSectionFilter + f Leot; q field_13863 lightEngine + f Lapz$a; r field_17209 onLevelChange + f Lapz$b; s field_17210 playerProvider + f Z t field_19238 wasAccessibleSinceLastSave + f Ljava/util/concurrent/CompletableFuture; u field_26930 pendingFullStateConfirmation + f Ljava/util/concurrent/CompletableFuture; v field_46085 sendSync + f Ljava/util/concurrent/CompletableFuture; w field_51858 saveSync + m ()Ljava/util/concurrent/CompletableFuture; a method_16145 getTickingChunkFuture + m (I)V a method_15890 setTicketLevel + m (Laqb;Laql;)V a method_31408 demoteFullChunk + m (Laqb;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/Executor;Laql;)V a method_31409 scheduleFullChunkPromotion + m (Laqb;Ljava/util/concurrent/Executor;)V a method_14007 updateFutures + m (Lddf;I)V a method_14012 sectionLightChanged + m (Ldvi;)V a method_14006 broadcastChanges + m (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; a method_39966 method_39966 + m (Ljava/util/List;Ldcw;Ljd;)V a method_14009 broadcastBlockEntity + m (Ljava/util/List;Ldcw;Ljd;Ldtc;)V a method_30311 broadcastBlockEntityIfNeeded + m (Ljava/util/List;Lzg;)V a method_13992 broadcast + m (Ljava/util/concurrent/CompletableFuture;)V a method_53680 addSendDependency + m (Ljava/util/concurrent/CompletableFuture;Laqc;)V a method_57117 method_57117 + m (Ljava/util/concurrent/CompletableFuture;Ldvi;)V a method_31410 method_31410 + m (Ljd;)V a method_14002 blockChanged + m (Lzg;Laqv;)V a method_13996 method_13996 + m ()Ljava/util/concurrent/CompletableFuture; b method_14003 getEntityTickingChunkFuture + m (I)V b method_17207 setQueueLevel + m (Laqb;Laql;)V b method_31412 method_31412 + m (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; b method_53679 method_53679 + m (Ljava/util/List;Ldcw;Ljd;Ldtc;)V b method_30312 method_30312 + m (Ljava/util/concurrent/CompletableFuture;)V b method_39967 addSaveDependency + m ()Ljava/util/concurrent/CompletableFuture; c method_20725 getFullChunkFuture + m ()Ldvi; d method_16144 getTickingChunk + m ()Ldvi; e method_53682 getChunkToSend + m ()Ljava/util/concurrent/CompletableFuture; f method_53681 getSendSyncFuture + m ()Ljava/util/concurrent/CompletableFuture; g method_14000 getSaveSyncFuture + m ()Z h method_60436 isReadyForSaving + m ()Z k method_20384 wasAccessibleSinceLastSave + m ()V l method_20385 refreshAccessibility + m (Ldcd;ILdcy;Leot;Lapz$a;Lapz$b;)V + m ()V +c apz$a net/minecraft/class_3193$class_3896 net/minecraft/server/level/ChunkHolder$LevelChangeListener + m (Ldcd;Ljava/util/function/IntSupplier;ILjava/util/function/IntConsumer;)V onLevelChange method_17209 onLevelChange +c apz$b net/minecraft/class_3193$class_3897 net/minecraft/server/level/ChunkHolder$PlayerProvider + m (Ldcd;Z)Ljava/util/List; a method_17210 getPlayers +c aqa net/minecraft/class_8563 net/minecraft/server/level/ChunkLevel + f I a field_51859 RADIUS_AROUND_FULL_CHUNK + f I b field_44849 MAX_LEVEL + f I c field_44850 FULL_CHUNK_LEVEL + f I d field_44851 BLOCK_TICKING_LEVEL + f I e field_44852 ENTITY_TICKING_LEVEL + f Ldwc; f field_51860 FULL_CHUNK_STEP + m (I)Ldvz; a method_51827 generationStatus + m (ILdvz;)Ldvz; a method_60437 getStatusAroundFullChunk + m (Laql;)I a method_51828 byStatus + m (Ldvz;)I a method_51829 byStatus + m (I)Ldvz; b method_60438 getStatusAroundFullChunk + m (I)Laql; c method_51830 fullStatus + m (I)Z d method_51831 isEntityTicking + m (I)Z e method_51832 isBlockTicking + m (I)Z f method_51833 isLoaded + m ()V + m ()V +c aqa$1 net/minecraft/class_8563$1 net/minecraft/server/level/ChunkLevel$1 + f [I a field_44853 $SwitchMap$net$minecraft$server$level$FullChunkStatus + m ()V +c aqb net/minecraft/class_3898 net/minecraft/server/level/ChunkMap + f Z A field_17222 modified + f Laqe; B field_17223 queueSorter + f Lbpj; C field_17224 worldgenMailbox + f Lbpj; D field_17226 mainThreadMailbox + f Lard; E field_17442 progressListener + f Ldxf; F field_26931 chunkStatusListener + f Laqb$a; G field_17228 distanceManager + f Ljava/util/concurrent/atomic/AtomicInteger; H field_17230 tickingGenerated + f Ljava/lang/String; I field_17707 storageName + f Laqo; J field_18241 playerMap + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; K field_18242 entityMap + f Lit/unimi/dsi/fastutil/longs/Long2ByteMap; L field_23786 chunkTypeCache + f Lit/unimi/dsi/fastutil/longs/Long2LongMap; M field_36383 chunkSaveCooldowns + f Ljava/util/Queue; N field_19343 unloadQueue + f I O field_18243 serverViewDistance + f Ldwe; P field_51861 worldGenContext + f I a field_29675 MIN_VIEW_DISTANCE + f I b field_29669 MAX_VIEW_DISTANCE + f I c field_29670 FORCED_TICKET_LEVEL + f Laqc; f field_51862 UNLOADED_CHUNK_LIST_RESULT + f Ljava/util/concurrent/CompletableFuture; g field_51863 UNLOADED_CHUNK_LIST_FUTURE + f B h field_29671 CHUNK_TYPE_REPLACEABLE + f B i field_29672 CHUNK_TYPE_UNKNOWN + f B j field_29673 CHUNK_TYPE_FULL + f Lorg/slf4j/Logger; k field_17212 LOGGER + f I l field_29674 CHUNK_SAVED_PER_TICK + f I m field_36291 CHUNK_SAVED_EAGERLY_PER_TICK + f I n field_36384 EAGER_CHUNK_SAVE_COOLDOWN_IN_MILLIS + f Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; o field_17213 updatingChunkMap + f Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; p field_17220 visibleChunkMap + f Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; q field_18807 pendingUnloads + f Ljava/util/List; r field_51864 pendingGenerationTasks + f Laqu; s field_17214 level + f Laqx; t field_17215 lightEngine + f Lbph; u field_17216 mainThreadExecutor + f Ldzm; v field_37278 randomState + f Ldva; w field_40856 chunkGeneratorState + f Ljava/util/function/Supplier; x field_17705 overworldDataStorage + f Lces; y field_18808 poiManager + f Lit/unimi/dsi/fastutil/longs/LongSet; z field_17221 toDrop + m ()Lduz; a method_37897 generator + m (I)V a method_17214 setServerViewDistance + m (J)Lapz; a method_17255 getUpdatingChunkIfPresent + m (JILapz;I)Lapz; a method_17217 updateChunkScheduling + m (JLapz;)V a method_20458 scheduleUnload + m (Lapy;)V a method_60439 runGenerationTask + m (Lapz;)Ljava/util/concurrent/CompletableFuture; a method_17247 prepareEntityTickingChunk + m (Lapz;ILjava/util/function/IntFunction;)Ljava/util/concurrent/CompletableFuture; a method_17220 getChunkRangeFuture + m (Lapz;J)V a method_60440 method_60440 + m (Lapz;Laqc;)Laqc; a method_53683 method_53683 + m (Lapz;Ldvi;)V a method_53684 method_53684 + m (Lapz;Ljava/lang/Runnable;)V a method_20579 method_20579 + m (Lapz;Ljava/lang/Void;Ljava/lang/Throwable;)V a method_20604 method_20604 + m (Laqc;)Laqc; a method_20577 method_20577 + m (Laqc;Ljava/lang/Throwable;)Ljava/lang/Object; a method_51834 method_51834 + m (Laqv;)V a method_18713 move + m (Laqv;II)Z a method_52345 isChunkTracked + m (Laqv;Laqg;)V a method_52346 applyChunkTrackingView + m (Laqv;Ldcd;)V a method_52347 markChunkPendingToSend + m (Laqv;Ldvi;)V a method_52348 markChunkPendingToSend + m (Laqv;Ljava/util/List;)V a method_49420 method_49420 + m (Laqv;Z)V a method_18714 updatePlayerStatus + m (Lbsr;)V a method_18701 addEntity + m (Lbsr;Lzg;)V a method_18702 broadcast + m (Ldcd;)Ljava/lang/String; a method_23272 getChunkDebugData + m (Ldcd;I)V a method_53685 waitForLightBeforeSending + m (Ldcd;Laql;)V a method_31414 onFullChunkStatusChange + m (Ldcd;Lbsr;)D a method_18704 euclideanDistanceSquared + m (Ldcd;Ldwd;)B a method_27053 markPosition + m (Ldcd;Ljava/lang/Throwable;)Ljava/lang/Void; a method_57120 method_57120 + m (Ldcd;Ljava/util/Optional;)Lduy; a method_43375 method_43375 + m (Lduy;)Z a method_17228 save + m (Ldvi;)V a method_53686 onChunkReadyToSend + m (Ldvi;Ljava/lang/Object;)V a method_53687 method_53687 + m (Ldwc;)Ljava/lang/String; a method_60444 method_60444 + m (Ljava/io/Writer;)V a method_21619 dumpChunks + m (Ljava/lang/IllegalStateException;Ljava/lang/String;)Lz; a method_40067 debugFuturesAndCreateReportedException + m (Ljava/lang/StringBuilder;Lapz;)V a method_40068 method_40068 + m (Ljava/lang/StringBuilder;Lapz;Lcom/mojang/datafixers/util/Pair;)V a method_40069 method_40069 + m (Ljava/lang/Throwable;Ldcd;)Lduy; a method_43376 handleChunkLoadFailure + m (Ljava/util/List;)V a method_49421 resendBiomesForChunks + m (Ljava/util/Optional;)Ljava/util/Optional; a method_43377 method_43377 + m (Ljava/util/concurrent/CompletableFuture;)Ljava/lang/String; a method_21676 printFuture + m (Ljava/util/function/BooleanSupplier;)V a method_17233 tick + m (Lo;)V a method_60445 method_60445 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Lduy;)V a method_20578 method_20578 + m (Z)V a method_17242 saveAllChunks + m ()Ldva; b method_46641 generatorState + m (I)Ldvz; b method_17245 method_17245 + m (J)Lapz; b method_17216 getVisibleChunkIfPresent + m (Lapy;)V b method_60446 method_60446 + m (Lapz;)Ljava/util/concurrent/CompletableFuture; b method_17235 prepareTickingChunk + m (Lapz;Ljava/lang/Runnable;)V b method_19487 method_19487 + m (Laqc;)Laqc; b method_41235 method_41235 + m (Laqv;)I b method_52350 getPlayerViewDistance + m (Laqv;II)Z b method_52351 isChunkOnTrackedBorder + m (Laqv;Ldcd;)V b method_52352 dropChunk + m (Lbsr;)V b method_18716 removeEntity + m (Lbsr;Lzg;)V b method_18717 broadcastAndSend + m (Ldcd;)Z b method_38783 anyPlayerCloseEnoughForSpawning + m (Ldcd;Ljava/lang/Throwable;)Lduy; b method_43374 method_43374 + m (Ldcd;Ljava/util/Optional;)Ljava/util/Optional; b method_43378 method_43378 + m (Ldcd;Lub;)Z b method_43379 method_43379 + m (Lduy;)Ljava/util/Optional; b method_21620 method_21620 + m (Ldvi;)Ljava/lang/Integer; b method_39220 method_39220 + m (Ljava/util/List;)Ldvi; b method_31416 method_31416 + m (Ljava/util/function/BooleanSupplier;)V b method_20605 processUnloads + m (Lub;)Z b method_43380 isChunkDataValid + m ()Ldzm; c method_41247 randomState + m (I)Ldvz; c method_17254 method_17254 + m (J)Ljava/util/function/IntSupplier; c method_17604 getChunkQueueLevel + m (Lapy;)V c method_60447 method_60447 + m (Lapz;)Ljava/util/concurrent/CompletableFuture; c method_31417 prepareAccessibleChunk + m (Laqc;)Laqc; c method_17230 method_17230 + m (Laqv;)Z c method_18722 skipPlayer + m (Laqv;Ldcd;)Z c method_38782 playerIsCloseEnoughForSpawning + m (Ldcd;)Ljava/util/List; c method_37907 getPlayersCloseForSpawning + m (Lduy;)Z c method_20582 method_20582 + m (Ldvi;)Ljava/lang/Integer; c method_39221 method_39221 + m (Ljava/util/List;)Ldvi; c method_41234 method_41234 + m (Lub;)Lub; c method_43381 upgradeChunkTag + m ()Laqx; d method_17212 getLightEngine + m (Lapz;)Z d method_39925 saveChunkIfNeeded + m (Laqc;)Laqc; d method_51282 method_51282 + m (Laqv;)V d method_20726 updatePlayerPos + m (Laqv;Ldcd;)V d method_52354 method_52354 + m (Ldvi;)Ljava/lang/Integer; d method_21621 method_21621 + m (Ljava/util/List;)Ldvi; d method_17232 method_17232 + m ()Z e method_39992 hasWork + m (J)Ldvi; e method_53688 getChunkToSend + m (Lapz;)Lduy; e method_20584 method_20584 + m (Laqv;)V e method_17241 updateChunkTracking + m (Laqv;Ldcd;)V e method_52355 method_52355 + m (Ljava/util/List;)Laqc; e method_60449 method_60449 + m ()Z f method_17244 promoteChunkMap + m (J)I f method_17605 method_17605 + m (Laqv;)Ljava/util/List; f method_49422 method_49422 + m (Ldcd;)Ljava/util/concurrent/CompletableFuture; f method_20619 scheduleChunkLoad + m (Ldcd;)Lduy; g method_43382 createEmptyChunk + m ()I h method_17253 getTickingGenerated + m (Ldcd;)V h method_27054 markPositionReplaceable + m ()I i method_17260 size + m (Ldcd;)Z i method_27055 isExistingChunkFull + m ()Laqk; j method_17263 getDistanceManager + m (Ldcd;)Ljava/util/concurrent/CompletableFuture; j method_43383 readChunk + m ()Ljava/lang/Iterable; k method_17264 getChunks + m (Ldcd;)V k method_53689 method_53689 + m ()V l method_18727 tick + m ()Lces; m method_19488 getPoiManager + m ()Ljava/lang/String; n method_37476 getStorageName + m ()Z r method_20606 method_20606 + m (Laqu;Lerf$c;Lcom/mojang/datafixers/DataFixer;Lenu;Ljava/util/concurrent/Executor;Lbph;Ldvl;Lduz;Lard;Ldxf;Ljava/util/function/Supplier;IZ)V + m ()V +c aqb$a net/minecraft/class_3898$class_3216 net/minecraft/server/level/ChunkMap$DistanceManager + f Laqb; a field_17443 field_17443 + m (Laqb;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)V +c aqb$b net/minecraft/class_3898$class_3208 net/minecraft/server/level/ChunkMap$TrackedEntity + f Laqb; a field_18245 field_18245 + f Laqt; b field_18246 serverEntity + f Lbsr; c field_18247 entity + f I d field_18248 range + f Lkf; e field_18249 lastSectionPos + f Ljava/util/Set; f field_18250 seenBy + m ()V a method_18728 broadcastRemoved + m (I)I a method_27906 scaledRange + m (Laqv;)V a method_18733 removePlayer + m (Ljava/util/List;)V a method_18729 updatePlayers + m (Lzg;)V a method_18730 broadcast + m ()I b method_22844 getEffectiveRange + m (Laqv;)V b method_18736 updatePlayer + m (Lzg;)V b method_18734 broadcastAndSend + m (Laqb;Lbsr;IIZ)V +c aqc net/minecraft/class_9259 net/minecraft/server/level/ChunkResult + m ()Z a method_57122 isSuccess + m (Laqc;Ljava/lang/Object;)Ljava/lang/Object; a method_57123 orElse + m (Ljava/lang/Object;)Laqc; a method_57124 of + m (Ljava/lang/String;)Laqc; a method_57125 error + m (Ljava/util/function/Consumer;)Laqc; a method_57126 ifSuccess + m (Ljava/util/function/Function;)Laqc; a method_57127 map + m (Ljava/util/function/Supplier;)Laqc; a method_57128 error + m ()Ljava/lang/String; b method_57129 getError + m (Ljava/lang/Object;)Ljava/lang/Object; b method_57130 orElse + m (Ljava/lang/String;)Ljava/lang/String; b method_57131 method_57131 + m (Ljava/util/function/Supplier;)Ljava/lang/Object; b method_57132 orElseThrow +c aqc$a net/minecraft/class_9259$class_9260 net/minecraft/server/level/ChunkResult$Fail + f Ljava/util/function/Supplier; a comp_2367 error + m ()Ljava/util/function/Supplier; c comp_2367 error + m (Ljava/util/function/Supplier;)V +c aqc$b net/minecraft/class_9259$class_9261 net/minecraft/server/level/ChunkResult$Success + f Ljava/lang/Object; a comp_2368 value + m ()Ljava/lang/Object; c comp_2368 value + m (Ljava/lang/Object;)V +c aqd net/minecraft/class_3899 net/minecraft/server/level/ChunkTaskPriorityQueue + f I a field_17241 PRIORITY_LEVEL_COUNT + f Ljava/util/List; b field_17243 taskQueue + f I c field_17244 firstQueue + f Ljava/lang/String; d field_17247 name + f Lit/unimi/dsi/fastutil/longs/LongSet; e field_17444 acquired + f I f field_17445 maxTasks + m ()Ljava/util/stream/Stream; a method_17606 pop + m (I)Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; a method_17271 method_17271 + m (ILdcd;I)V a method_17272 resortChunkTasks + m (J)Ljava/lang/Runnable; a method_17607 acquire + m (JLjava/util/Optional;)Lcom/mojang/datafixers/util/Either; a method_17608 method_17608 + m (JZ)V a method_17609 release + m (Ljava/util/Optional;)Z a method_17610 method_17610 + m (Ljava/util/Optional;JI)V a method_17274 submit + m ()Z b method_39993 hasWork + m (J)Lcom/mojang/datafixers/util/Either; b method_17611 method_17611 + m ()Lit/unimi/dsi/fastutil/longs/LongSet; c method_21679 getAcquired + m (J)V c method_17612 method_17612 + m (J)Ljava/util/List; d method_17273 method_17273 + m (J)Ljava/util/List; e method_17277 method_17277 + m (Ljava/lang/String;I)V + m ()V +c aqe net/minecraft/class_3900 net/minecraft/server/level/ChunkTaskPriorityQueueSorter + f Lorg/slf4j/Logger; a field_17248 LOGGER + f Ljava/util/Map; b field_17249 queues + f Ljava/util/Set; c field_17250 sleeping + f Lbpk; d field_17251 mailbox + m ()Z a method_39994 hasWork + m (I)[Ljava/util/concurrent/CompletableFuture; a method_41236 method_41236 + m (ILbpj;)Laqd; a method_17613 method_17613 + m (ILdcd;ILaqd;)V a method_17280 method_17280 + m (Laqd;Lbpj;)V a method_17630 pollTask + m (Laqd;Lbpj;Ljava/lang/Void;)V a method_17631 method_17631 + m (Laqn;Ljava/lang/Runnable;)Laqe$a; a method_17629 message + m (Laqn;Ljava/util/function/Function;)Laqe$a; a method_34870 message + m (Lbpj;)Lbpj; a method_17614 getReleaseProcessor + m (Lbpj;JLjava/lang/Runnable;Z)V a method_17615 release + m (Lbpj;JZLjava/lang/Runnable;)V a method_17616 method_17616 + m (Lbpj;Laqe$b;)V a method_17621 method_17621 + m (Lbpj;Lbpj;)Lbpm$b; a method_17617 method_17617 + m (Lbpj;Lbpj;Z)V a method_17618 method_17618 + m (Lbpj;Lcom/mojang/datafixers/util/Either;)Ljava/util/concurrent/CompletableFuture; a method_17619 method_17619 + m (Lbpj;Ljava/util/function/Function;JLjava/util/function/IntSupplier;Z)V a method_17282 submit + m (Lbpj;Ljava/util/function/IntSupplier;JLjava/util/function/Function;Z)V a method_17620 method_17620 + m (Lbpj;Z)Lbpj; a method_17622 getProcessor + m (Lbpj;ZLaqe$a;)V a method_17624 method_17624 + m (Lbpj;ZLbpj;)Lbpm$b; a method_17623 method_17623 + m (Ljava/lang/Long;)Ljava/lang/String; a method_21681 method_21681 + m (Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; a method_17625 method_17625 + m (Ljava/lang/Runnable;JLjava/util/function/IntSupplier;)Laqe$a; a method_17626 message + m (Ljava/lang/Runnable;JZ)Laqe$b; a method_17627 release + m (Ljava/lang/Runnable;Lbpj;)Ljava/lang/Runnable; a method_17628 method_17628 + m (Ljava/util/Map$Entry;)Ljava/lang/String; a method_21682 method_21682 + m (Ljava/util/function/Function;JLjava/util/function/IntSupplier;)Laqe$a; a method_34871 message + m (Ljava/util/function/IntSupplier;Ldcd;ILjava/util/function/IntConsumer;)V a method_17285 method_17285 + m ()Ljava/lang/String; b method_21680 getDebugStatus + m (Laqd;Lbpj;)V b method_17635 method_17635 + m (Lbpj;)Laqd; b method_17632 getQueue + m (Lbpj;Lbpj;)V b method_17633 method_17633 + m (Ljava/lang/Runnable;Lbpj;)V b method_17634 method_17634 + m (Ljava/util/List;Ljava/util/concurrent/Executor;I)V + m ()V +c aqe$a net/minecraft/class_3900$class_3946 net/minecraft/server/level/ChunkTaskPriorityQueueSorter$Message + f Ljava/util/function/Function; a field_17446 task + f J b field_17447 pos + f Ljava/util/function/IntSupplier; c field_17448 level + m (Ljava/util/function/Function;JLjava/util/function/IntSupplier;)V +c aqe$b net/minecraft/class_3900$class_3947 net/minecraft/server/level/ChunkTaskPriorityQueueSorter$Release + f Ljava/lang/Runnable; a field_17449 task + f J b field_17450 pos + f Z c field_17451 clearQueue + m (Ljava/lang/Runnable;JZ)V +c aqf net/minecraft/class_3196 net/minecraft/server/level/ChunkTracker + m (J)I b method_14028 getLevelFromSource + m (JIZ)V b method_14027 update + m (III)V +c aqg net/minecraft/class_8603 net/minecraft/server/level/ChunkTrackingView + f Laqg; a field_44986 EMPTY + m (II)Z a method_52356 contains + m (IIIII)Z a method_52357 isInViewDistance + m (IIIIIZ)Z a method_52358 isWithinDistance + m (IIZ)Z a method_52359 contains + m (Laqg;Laqg;Ljava/util/function/Consumer;Ljava/util/function/Consumer;)V a method_52360 difference + m (Ldcd;)Z a method_52361 contains + m (Ldcd;I)Laqg; a method_52362 of + m (Ljava/util/function/Consumer;)V a method_52363 forEach + m (II)Z b method_52364 isInViewDistance + m ()V +c aqg$1 net/minecraft/class_8603$1 net/minecraft/server/level/ChunkTrackingView$1 + m ()V +c aqg$a net/minecraft/class_8603$class_8604 net/minecraft/server/level/ChunkTrackingView$Positioned + f Ldcd; b comp_1574 center + f I c comp_1575 viewDistance + m ()Ldcd; a comp_1574 center + m (Laqg$a;)Z a method_52365 squareIntersects + m ()I b comp_1575 viewDistance + m ()I c method_52366 minX + m ()I d method_52367 minZ + m ()I e method_52368 maxX + m ()I f method_52369 maxZ + m (Ldcd;I)V +c aqh net/minecraft/class_8791 net/minecraft/server/level/ClientInformation + f I a field_46155 MAX_LANGUAGE_LENGTH + f Ljava/lang/String; b comp_1951 language + f I c comp_1952 viewDistance + f Lcmv; d comp_1953 chatVisibility + f Z e comp_1954 chatColors + f I f comp_1955 modelCustomisation + f Lbtg; g comp_1956 mainHand + f Z h comp_1957 textFilteringEnabled + f Z i comp_1958 allowsListing + m ()Laqh; a method_53821 createDefault + m (Lvw;)V a method_53822 write + m ()Ljava/lang/String; b comp_1951 language + m ()I c comp_1952 viewDistance + m ()Lcmv; d comp_1953 chatVisibility + m ()Z e comp_1954 chatColors + m ()I f comp_1955 modelCustomisation + m ()Lbtg; g comp_1956 mainHand + m ()Z h comp_1957 textFilteringEnabled + m ()Z i comp_1958 allowsListing + m (Lvw;)V + m (Ljava/lang/String;ILcmv;ZILbtg;ZZ)V +c aqi net/minecraft/class_2265 net/minecraft/server/level/ColumnPos + f I a comp_638 x + f I b comp_639 z + f J c field_29757 COORD_BITS + f J d field_29758 COORD_MASK + m ()Ldcd; a method_34873 toChunkPos + m (II)J a method_34874 asLong + m (J)I a method_42106 getX + m ()J b method_34875 toLong + m (J)I b method_42107 getZ + m ()I c comp_638 x + m ()I d comp_639 z + m (II)V +c aqj net/minecraft/class_3201 net/minecraft/server/level/DemoMode + f I a field_29762 DEMO_DAYS + f I b field_29763 TOTAL_PLAY_TICKS + f Z e field_13890 displayedIntro + f Z f field_13889 demoHasEnded + f I g field_13888 demoEndedReminder + f I h field_13887 gameModeTicks + m ()V f method_14031 outputDemoReminder + m (Laqv;)V +c aqk net/minecraft/class_3204 net/minecraft/server/level/DistanceManager + f Lorg/slf4j/Logger; a field_16211 LOGGER + f I b field_17452 PLAYER_TICKET_LEVEL + f I c field_29765 INITIAL_TICKET_LIST_CAPACITY + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; d field_17453 playersPerChunk + f Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap; e field_13895 tickets + f Laqk$a; f field_18252 ticketTracker + f Laqk$b; g field_17454 naturalSpawnChunkCounter + f Lara; h field_34886 tickingTicketsTracker + f Laqk$c; i field_17455 playerTicketManager + f Ljava/util/Set; j field_16210 chunksToUpdateFutures + f Laqe; k field_17456 ticketThrottler + f Lbpj; l field_17457 ticketThrottlerInput + f Lbpj; m field_17458 ticketThrottlerReleaser + f Lit/unimi/dsi/fastutil/longs/LongSet; n field_17459 ticketsToRelease + f Ljava/util/concurrent/Executor; o field_17460 mainThreadExecutor + f J p field_13894 ticketTickCounter + f I q field_34887 simulationDistance + m ()V a method_14045 purgeStaleTickets + m (I)V a method_14049 updatePlayerTickets + m (J)Z a method_14035 isChunkToRemove + m (JILapz;I)Lapz; a method_14053 updateChunkScheduling + m (JLaqc;)V a method_17642 method_17642 + m (JLaqy;)V a method_14042 addTicket + m (Laqb;)Z a method_15892 runAllUpdates + m (Laqb;Lapz;)V a method_15891 method_15891 + m (Laqy;)Z a method_14040 method_14040 + m (Laqz;Ldcd;ILjava/lang/Object;)V a method_17290 addTicket + m (Lazg;)I a method_14046 getTicketLevelAt + m (Ldcd;Z)V a method_14036 updateChunkForced + m (Ljava/lang/String;)V a method_34876 dumpTickets + m (Lkf;Laqv;)V a method_14048 addPlayer + m ()I b method_14052 getNaturalSpawnChunkCount + m (I)V b method_38629 updateSimulationDistance + m (J)Lapz; b method_14038 getChunk + m (JLaqy;)V b method_17645 removeTicket + m (Laqb;Lapz;)V b method_60451 method_60451 + m (Laqz;Ldcd;ILjava/lang/Object;)V b method_20444 removeTicket + m (Lkf;Laqv;)V b method_14051 removePlayer + m ()Ljava/lang/String; c method_21683 getDebugStatus + m (J)Z c method_38630 inEntityTickingRange + m (Laqz;Ldcd;ILjava/lang/Object;)V c method_17291 addRegionTicket + m ()Lara; d method_38631 tickingTracker + m (J)Z d method_38632 inBlockTickingRange + m (Laqz;Ldcd;ILjava/lang/Object;)V d method_17292 removeRegionTicket + m ()V e method_39995 removeTicketsOnClosing + m (J)Ljava/lang/String; e method_21623 getTicketDebugString + m ()Z f method_39996 hasTickets + m (J)Z f method_20800 hasPlayersNearby + m ()I g method_38633 getPlayerTicketLevel + m (J)Lazg; g method_14050 getTickets + m ()V h method_17652 method_17652 + m (J)Lit/unimi/dsi/fastutil/objects/ObjectSet; h method_17655 method_17655 + m (J)Lazg; i method_14041 method_14041 + m (J)V j method_17656 method_17656 + m (Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)V + m ()V +c aqk$a net/minecraft/class_3204$class_4077 net/minecraft/server/level/DistanceManager$ChunkTicketTracker + f Laqk; a field_18255 field_18255 + f I b field_44854 MAX_LEVEL + m (I)I a method_18746 runDistanceUpdates + m (Laqk;)V + m ()V +c aqk$b net/minecraft/class_3204$class_3205 net/minecraft/server/level/DistanceManager$FixedPlayerDistanceChunkTracker + f Lit/unimi/dsi/fastutil/longs/Long2ByteMap; a field_13896 chunks + f I b field_17461 maxDistance + f Laqk; c field_17462 field_17462 + m ()V a method_14057 runAllUpdates + m (JII)V a method_17657 onLevelChange + m (Ljava/lang/String;)V a method_34878 dumpChunks + m (J)Z d method_14056 havePlayer + m (Laqk;I)V +c aqk$c net/minecraft/class_3204$class_3948 net/minecraft/server/level/DistanceManager$PlayerTicketTracker + f Laqk; d field_17463 field_17463 + f I g field_17464 viewDistance + f Lit/unimi/dsi/fastutil/longs/Long2IntMap; h field_17465 queueLevels + f Lit/unimi/dsi/fastutil/longs/LongSet; i field_17466 toUpdate + m (I)V a method_17658 updateViewDistance + m (JIZZ)V a method_17660 onLevelChange + m (JLaqy;)V a method_17661 method_17661 + m (JI)V b method_17662 method_17662 + m (JLaqy;)V b method_17663 method_17663 + m (I)Z c method_17664 haveTicketFor + m (JLaqy;)V c method_17665 method_17665 + m ()V d method_21693 method_21693 + m (I)I d method_17666 method_17666 + m (J)I d method_17659 method_17659 + m (JLaqy;)V d method_17667 method_17667 + m (Laqk;I)V +c aql net/minecraft/class_3194 net/minecraft/server/level/FullChunkStatus + f Laql; a field_19334 INACCESSIBLE + f Laql; b field_44855 FULL + f Laql; c field_44856 BLOCK_TICKING + f Laql; d field_13877 ENTITY_TICKING + f [Laql; e field_13878 $VALUES + m ()[Laql; a method_36576 $values + m (Laql;)Z a method_14014 isOrAfter + m (Ljava/lang/String;I)V + m ()V +c aqm net/minecraft/class_9760 net/minecraft/server/level/GeneratingChunkMap + m (Laqn;)V a method_60441 releaseGeneration + m (Laqn;Ldwc;Lazi;)Ljava/util/concurrent/CompletableFuture; a method_60442 applyStep + m (Ldvz;Ldcd;)Lapy; a method_60443 scheduleGenerationTask + m (J)Laqn; d method_60448 acquireGeneration + m ()V g method_60450 runGenerationTasks +c aqn net/minecraft/class_9761 net/minecraft/server/level/GenerationChunkHolder + f Ljava/util/List; a field_51865 CHUNK_STATUSES + f Laqc; b field_51866 UNLOADED_CHUNK + f Ljava/util/concurrent/CompletableFuture; c field_51867 UNLOADED_CHUNK_FUTURE + f Ldcd; d field_51868 pos + f Laqc; e field_51869 NOT_DONE_YET + f Ldvz; f field_51870 highestAllowedStatus + f Ljava/util/concurrent/atomic/AtomicReference; g field_51871 startedWork + f Ljava/util/concurrent/atomic/AtomicReferenceArray; h field_51872 futures + f Ljava/util/concurrent/atomic/AtomicReference; i field_51873 task + f Ljava/util/concurrent/atomic/AtomicInteger; j field_51874 generationRefCount + m (ILjava/util/concurrent/CompletableFuture;)V a method_60452 failAndClearPendingFuture + m (Lapy;)V a method_60453 removeTask + m (Laqb;)V a method_60454 updateHighestAllowedStatus + m (Laqb;Ldvz;)V a method_60455 rescheduleChunkTask + m (Ldvh;)V a method_60456 replaceProtoChunk + m (Ldvz;)Lduy; a method_60457 getChunkIfPresentUnchecked + m (Ldvz;Laqb;)Ljava/util/concurrent/CompletableFuture; a method_60458 scheduleChunkGenerationTask + m (Ldvz;Lduy;)V a method_60459 completeFuture + m (Ldvz;Ldvz;)V a method_60460 failAndClearPendingFuturesBetween + m (Ldwc;Laqm;Lazi;)Ljava/util/concurrent/CompletableFuture; a method_60461 applyStep + m (Ldwc;Lduy;Ljava/lang/Throwable;)Laqc; a method_60462 method_60462 + m (Ldvz;)Lduy; b method_60463 getChunkIfPresent + m (Ldvz;)Ljava/util/concurrent/CompletableFuture; c method_60464 getOrCreateFuture + m (Ldvz;)Ldvz; d method_60465 findHighestStatusWithPendingFuture + m (Ldvz;)Z e method_60466 acquireStatusBump + m (Ldvz;)Z f method_60467 isStatusDisallowed + m ()I i method_14005 getTicketLevel + m ()I j method_17208 getQueueLevel + m ()V m method_60468 increaseGenerationRefCount + m ()V n method_60469 decreaseGenerationRefCount + m ()I o method_60470 getGenerationRefCount + m ()Lduy; p method_60471 getLatestChunk + m ()Ldvz; q method_60472 getPersistedStatus + m ()Ldcd; r method_60473 getPos + m ()Laql; s method_60474 getFullStatus + m ()Ljava/util/List; t method_60475 getAllFutures + m ()Ldvz; u method_60476 getLatestStatus + m (Ldcd;)V + m ()V +c aqo net/minecraft/class_3210 net/minecraft/server/level/PlayerMap + f Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; a field_13910 players + m ()Ljava/util/Set; a method_14083 getAllPlayers + m (Laqv;)V a method_14084 removePlayer + m (Laqv;Z)V a method_14085 addPlayer + m (Laqv;)V b method_14086 ignorePlayer + m (Laqv;)V c method_14087 unIgnorePlayer + m (Laqv;)Z d method_21715 ignoredOrUnknown + m (Laqv;)Z e method_14082 ignored + m ()V +c aqp net/minecraft/class_5322 net/minecraft/server/level/PlayerRespawnLogic + m (Laqu;II)Ljd; a method_29194 getOverworldRespawnPos + m (Laqu;Ldcd;)Ljd; a method_29196 getSpawnPosInChunk + m ()V +c aqq net/minecraft/class_4079 net/minecraft/server/level/SectionTracker + m (J)I b method_18749 getLevelFromSource + m (JIZ)V b method_18750 update + m (III)V +c aqr net/minecraft/class_3213 net/minecraft/server/level/ServerBossEvent + f Ljava/util/Set; h field_13913 players + f Ljava/util/Set; i field_13914 unmodifiablePlayers + f Z j field_13912 visible + m (Laqv;)V a method_14088 addPlayer + m (Ljava/util/function/Function;)V a method_14090 broadcast + m ()V b method_14094 removeAllPlayers + m (Laqv;)V b method_14089 removePlayer + m (Z)V d method_14091 setVisible + m ()Z f method_14093 isVisible + m ()Ljava/util/Collection; g method_14092 getPlayers + m (Lwz;Lbqh$a;Lbqh$b;)V +c aqs net/minecraft/class_3215 net/minecraft/server/level/ServerChunkCache + f Laqb; a field_17254 chunkMap + f Ljava/util/List; b field_13934 CHUNK_STATUSES + f Laqk; c field_17252 distanceManager + f Laqu; d field_13945 level + f Ljava/lang/Thread; e field_17253 mainThread + f Laqx; f field_13921 lightEngine + f Laqs$b; g field_18809 mainThreadProcessor + f Leqz; h field_17708 dataStorage + f J i field_13928 lastInhabitedUpdate + f Z j field_13929 spawnEnemies + f Z k field_13941 spawnFriendlies + f I l field_29766 CACHE_SIZE + f [J m field_19335 lastChunkPos + f [Ldvz; n field_19336 lastChunkStatus + f [Lduy; o field_19337 lastChunk + f Lddh$d; p field_24455 lastSpawnState + m ()Laqx; a method_17293 getLightEngine + m (I)V a method_14144 setViewDistance + m (J)Z a method_37114 isPositionTicking + m (JLduy;Ldvz;)V a method_21738 storeInCache + m (JLjava/util/function/Consumer;)V a method_27907 getFullChunk + m (Lapz;I)Z a method_18752 chunkAbsent + m (Laqs$a;)V a method_38784 method_38784 + m (Laqv;)V a method_14096 move + m (Laqz;Ldcd;ILjava/lang/Object;)V a method_17297 addRegionTicket + m (Lbsr;)V a method_18753 removeEntity + m (Lbsr;Lzg;)V a method_18751 broadcastAndSend + m (Ldcd;)Ljava/lang/String; a method_23273 getChunkDebugData + m (Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletionStage; a method_14159 method_14159 + m (Ljd;)V a method_14128 blockChanged + m (Lkf;Lddf;)V a method_14118 method_14118 + m (Z)V a method_17298 save + m ()I b method_17301 getTickingGenerated + m (I)V b method_38634 setSimulationDistance + m (IILdvz;Z)Ljava/util/concurrent/CompletableFuture; b method_17299 getChunkFuture + m (J)Lapz; b method_14131 getVisibleChunkIfPresent + m (Laqz;Ldcd;ILjava/lang/Object;)V b method_17300 removeRegionTicket + m (Lbsr;)V b method_18755 addEntity + m (Lbsr;Lzg;)V b method_18754 broadcast + m ()Ldcw; c method_16434 getLevel + m (IILdvz;Z)Ljava/util/concurrent/CompletableFuture; c method_14134 getChunkFutureMainThread + m ()Z d method_19492 pollTask + m (IILdvz;Z)Ljava/util/concurrent/CompletableFuture; d method_14098 method_14098 + m (IILdvz;Z)Lduy; e method_20586 method_20586 + m ()I f method_21694 getPendingTasksCount + m ()Lduz; g method_12129 getGenerator + m ()Ldva; h method_46642 getGeneratorState + m ()Ldzm; i method_41248 randomState + m ()Leqz; k method_17981 getDataStorage + m ()Lces; l method_19493 getPoiManager + m ()Ldwh; m method_39777 chunkScanner + m ()Lddh$d; n method_27908 getLastSpawnState + m ()V o method_39997 removeTicketsOnClosing + m ()V r method_20587 clearCache + m ()Z s method_16155 runDistanceManagerUpdates + m ()V t method_14161 tickChunks + m (Laqu;Lerf$c;Lcom/mojang/datafixers/DataFixer;Lenu;Ljava/util/concurrent/Executor;Lduz;IIZLard;Ldxf;Ljava/util/function/Supplier;)V + m ()V +c aqs$a net/minecraft/class_3215$class_6635 net/minecraft/server/level/ServerChunkCache$ChunkAndHolder + f Ldvi; a comp_141 chunk + f Lapz; b comp_142 holder + m ()Ldvi; a comp_141 chunk + m ()Lapz; b comp_142 holder + m (Ldvi;Lapz;)V +c aqs$b net/minecraft/class_3215$class_4212 net/minecraft/server/level/ServerChunkCache$MainThreadExecutor + f Laqs; a field_18810 field_18810 + m (Ljava/util/function/BooleanSupplier;)Z a method_60477 method_60477 + m (Laqs;Ldcw;)V +c aqt net/minecraft/class_3231 net/minecraft/server/level/ServerEntity + f I a field_44987 FORCED_POS_UPDATE_PERIOD + f Lorg/slf4j/Logger; b field_14041 LOGGER + f I c field_29767 TOLERANCE_LEVEL_ROTATION + f D d field_44988 TOLERANCE_LEVEL_POSITION + f I e field_44989 FORCED_TELEPORT_PERIOD + f Laqu; f field_18258 level + f Lbsr; g field_14049 entity + f I h field_14037 updateInterval + f Z i field_14039 trackDelta + f Ljava/util/function/Consumer; j field_18259 broadcast + f Laig; k field_39019 positionCodec + f I l field_14060 lastSentYRot + f I m field_14047 lastSentXRot + f I n field_14059 lastSentYHeadRot + f Lexc; o field_18278 lastSentMovement + f I p field_14040 tickCount + f I q field_14043 teleportDelay + f Ljava/util/List; r field_14045 lastPassengers + f Z s field_14051 wasRiding + f Z t field_14036 wasOnGround + f Ljava/util/List; u field_41697 trackedDataValues + m ()V a method_18756 sendChanges + m (Laqv;)V a method_14302 removePairing + m (Laqv;Ljava/util/function/Consumer;)V a method_18757 sendPairingData + m (Lbsr;)V a method_49426 method_49426 + m (Ljava/util/List;Lbsr;)Z a method_49752 method_49752 + m (Ljava/util/List;Ljava/util/List;)Ljava/util/stream/Stream; a method_49753 removedPassengers + m (Lzg;)V a method_18758 broadcastAndSend + m ()Lexc; b method_60942 getPositionBase + m (Laqv;)V b method_18760 addPairing + m ()Lexc; c method_60943 getLastSentMovement + m ()F d method_60944 getLastSentXRot + m ()F e method_60945 getLastSentYRot + m ()F f method_60946 getLastSentYHeadRot + m ()V g method_14306 sendDirtyEntityData + m (Laqu;Lbsr;IZLjava/util/function/Consumer;)V + m ()V +c aqu net/minecraft/class_3218 net/minecraft/server/level/ServerLevel + f Lbpw; D field_41748 THUNDER_DELAY + f Lorg/slf4j/Logger; E field_13952 LOGGER + f I F field_29768 EMPTY_TIME_NO_TICK + f I G field_35441 MAX_SCHEDULED_TICKS_PER_TICK + f Ljava/util/List; H field_18261 players + f Laqs; I field_24624 chunkSource + f Lnet/minecraft/server/MinecraftServer; J field_13959 server + f Lerk; K field_24456 serverLevelData + f I L field_48271 lastSpawnChunkRadius + f Ldxm; M field_26934 entityTickList + f Ldxr; N field_26935 entityManager + f Ldya; O field_39984 gameEventDispatcher + f Lauu; P field_28859 sleepStatus + f I Q field_13948 emptyTime + f Leqd; R field_13956 portalForcer + f Leyq; S field_13949 blockTicks + f Leyq; T field_13951 fluidTicks + f Lepw; U field_49172 pathTypesByPosCache + f Ljava/util/Set; V field_26932 navigatingMobs + f Z W field_36317 isUpdatingNavigations + f Lit/unimi/dsi/fastutil/objects/ObjectLinkedOpenHashSet; X field_13950 blockEvents + f Ljava/util/List; Y field_35565 blockEventsToReschedule + f Z Z field_13953 handlingTick + f Ljd; a field_25144 END_SPAWN_POINT + f Ljava/util/List; aa field_25141 customSpawners + f Ldxb; ab field_25142 dragonFight + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; ac field_26933 dragonParts + f Lddq; ad field_23787 structureManager + f Lejs; ae field_36208 structureCheck + f Z af field_25143 tickTime + f Lbqy; ag field_44857 randomSequences + f Lbpw; b field_41749 RAIN_DELAY + f Lbpw; c field_41750 RAIN_DURATION + f Lbpw; d field_41751 THUNDER_DURATION + f Z e field_13957 noSave + f Lcok; f field_18811 raids + m ()Ljava/lang/Iterable; A method_27909 getAllEntities + m ()Z B method_28125 isFlat + m ()Ldxb; D method_29198 getDragonFight + m (Ljd;)Ljava/util/Optional; E method_31418 findLightningRod + m ()Ljava/lang/String; F method_31268 getWatchdogStats + m (Ljd;)V F method_39222 method_39222 + m (Ljd;)Ljd; G method_34679 method_34679 + m ()Lepw; H method_57133 getPathTypeCache + m (Ljd;)Z H method_34680 method_34680 + m ()Lbqy; L method_52168 getRandomSequences + m ()Lddq; a method_27056 structureManager + m (IIZ)Z a method_17988 setChunkForced + m (IIZZ)V a method_27910 setWeatherParameters + m (Lakr;)Layw; a method_51836 getRandomSequence + m (Laqv;)V a method_18213 addNewPlayer + m (Laqv;Lbsr$c;)V a method_18770 removePlayerImmediately + m (Laqv;Llk;ZDDDIDDDD)Z a method_14166 sendParticles + m (Laqv;ZDDDLzg;)Z a method_14191 sendParticles + m (Lawu;Ljd;IZ)Ljd; a method_8487 findNearestMapStructure + m (Layv;ZZ)V a method_14176 save + m (Lbrc;Lbnf;Lbsr;)V a method_31420 method_31420 + m (Lbsr;)V a method_18762 tickNonPassenger + m (Lbsr;Lbsr;)V a method_18763 tickPassenger + m (Lbtn;)Z a method_18199 method_18199 + m (Lcep;Lbsr;Lbud;)V a method_19496 onReputationEvent + m (Ldcb;)Z a method_14174 doBlockEvent + m (Ldcd;)Z a method_39998 isNaturalSpawningAllowed + m (Lduy;)V a method_39778 onStructureStartsAvailable + m (Ldvi;)V a method_18764 unload + m (Ldvi;I)V a method_18203 tickChunk + m (Ldxb;)V a method_51837 setDragonFight + m (Ldxn;Ljava/util/function/Predicate;)Ljava/util/List; a method_18198 getEntities + m (Ldxn;Ljava/util/function/Predicate;Ljava/util/List;)V a method_47538 getEntities + m (Ldxn;Ljava/util/function/Predicate;Ljava/util/List;I)V a method_47539 getEntities + m (Lejj;)V a method_23658 clearBlockEvents + m (Lejj;Ldcb;)Z a method_23659 method_23659 + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;)Ljava/lang/String; a method_31269 method_31269 + m (Ljava/io/Writer;)V a method_21626 dumpBlockEntityTickers + m (Ljava/io/Writer;Ljava/lang/Iterable;)V a method_21624 dumpEntities + m (Ljava/lang/Iterable;Ljava/util/function/Function;)Ljava/lang/String; a method_31270 getTypeCount + m (Ljava/nio/file/Path;)V a method_21625 saveDebugReport + m (Ljava/util/UUID;)Lbsr; a method_14190 getEntity + m (Ljava/util/function/BooleanSupplier;)V a method_18765 tick + m (Ljava/util/function/Predicate;)Ljava/util/List; a method_18766 getPlayers + m (Ljava/util/function/Predicate;I)Ljava/util/List; a method_47540 getPlayers + m (Ljava/util/function/Predicate;Ljava/util/List;ILbsr;)Laxa$a; a method_47541 method_47541 + m (Ljava/util/function/Predicate;Ljd;III)Lcom/mojang/datafixers/util/Pair; a method_42108 findClosestBiome3d + m (Ljava/util/stream/Stream;)V a method_31423 addLegacyChunkEntities + m (Ljd;)V a method_52370 tickPrecipitation + m (Ljd;F)V a method_8554 setDefaultSpawnPos + m (Ljd;I)Z a method_19497 isCloseToVillage + m (Ljd;Lepd;)V a method_14171 tickFluid + m (Ljd;Ljm;)V a method_19535 method_19535 + m (Ljm;)Z a method_31421 method_31421 + m (Lkf;)Z a method_20588 isVillage + m (Llk;DDDIDDDD)I a method_14199 sendParticles + m (Lnet/minecraft/server/MinecraftServer;)Leqz; a method_17985 method_17985 + m (ZZ)V a method_29202 tickCustomSpawners + m ()V as method_23660 wakeUpAllPlayers + m ()V at method_33143 announceSleepStatus + m ()V au method_39501 advanceWeatherCycle + m ()V av method_14188 saveLevelData + m ()V aw method_14192 runBlockEvents + m ()Ljava/lang/String; ax method_54438 method_54438 + m ()V b method_29203 tickTime + m (I)Lbsr; b method_31424 getEntityOrPart + m (J)V b method_29199 setDayTime + m (Laqv;)V b method_18215 addRespawnedPlayer + m (Lduy;)V b method_39926 method_39926 + m (Ldvi;)V b method_39223 startTickingChunk + m (Ljava/util/stream/Stream;)V b method_31426 addWorldGenChunkEntities + m (Ljd;)Ljd; b method_18210 findLightningTargetAround + m (Ljd;Ljm;)V b method_19499 method_19499 + m (Lkf;)I b method_19498 sectionsToVillage + m ()Z c method_14177 isHandlingTick + m (J)Z c method_37116 areEntitiesLoaded + m (Laqv;)V c method_18771 addPlayer + m (Lbsr;)Z c method_18768 addWithUUID + m (Ljd;)Z c method_19500 isVillage + m (Ljd;Ljm;)V c method_19536 method_19536 + m ()Z d method_33144 canSleepThroughNights + m (J)Z d method_37117 isPositionTickingWithEntitiesLoaded + m (Laqv;)V d method_18773 method_18773 + m (Lbsr;)V d method_18769 addDuringTeleport + m (Ljd;)Lcoi; d method_19502 getRaidAt + m (Ljd;Ldfy;)V d method_14189 tickBlock + m ()V e method_8448 updateSleepingPlayerList + m (J)Lbqy; e method_51838 method_51838 + m (Lbsr;)Z e method_30736 tryAddFreshEntityWithPassengers + m (Ljd;)Z e method_19503 isRaided + m ()Lalk; f method_14170 getScoreboard + m (Ljd;)Z f method_37118 isPositionEntityTicking + m ()V g method_14195 resetWeatherCycle + m (Ljd;)Z g method_39999 isNaturalSpawningAllowed + m ()V h method_14197 resetEmptyTime + m ()Ljava/util/List; i method_18776 getDragons + m (Lbsr;)Z i method_31430 shouldDiscardEntity + m ()Laqv; j method_18779 getRandomPlayer + m (Lbsr;)Z j method_14175 addEntity + m ()I k method_32819 getLogicalHeight + m (Lbsr;)Ljava/lang/String; k method_31431 method_31431 + m ()Laqs; l method_14178 getChunkSource + m (Lbsr;)Ljava/lang/String; l method_24310 method_24310 + m ()Leyq; m method_14196 getBlockTicks + m (Lbsr;)Ljava/lang/String; m method_18781 method_18781 + m ()Leyq; n method_14179 getFluidTicks + m ()Leqd; p method_14173 getPortalForcer + m ()Lenu; q method_14183 getStructureManager + m ()Leqz; u method_17983 getDataStorage + m ()Lit/unimi/dsi/fastutil/longs/LongSet; w method_17984 getForcedChunks + m ()Lces; y method_19494 getPoiManager + m ()Lcok; z method_19495 getRaids + m (Lnet/minecraft/server/MinecraftServer;Ljava/util/concurrent/Executor;Lerf$c;Lerk;Lakq;Ldwz;Lard;ZJLjava/util/List;ZLbqy;)V + m ()V +c aqu$a net/minecraft/class_3218$class_5526 net/minecraft/server/level/ServerLevel$EntityCallbacks + f Laqu; a field_26936 field_26936 + m (Lbsr;)V a method_31432 onCreated + m (Lbsr;)V b method_31433 onDestroyed + m (Lbsr;)V c method_31434 onTickingStart + m (Lbsr;)V d method_31435 onTickingEnd + m (Lbsr;)V e method_31436 onTrackingStart + m (Lbsr;)V f method_31437 onTrackingEnd + m (Lbsr;)V g method_43030 onSectionChange + m (Laqu;)V +c aqv net/minecraft/class_3222 net/minecraft/server/level/ServerPlayer + f D b field_47708 INTERACTION_DISTANCE_VERIFICATION_BUFFER + f I cA field_29769 NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_XZ + f I cB field_29770 NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_Y + f I cD field_46928 FLY_STAT_RECORDING_SPEED + f Lbuu; cE field_47709 CREATIVE_BLOCK_INTERACTION_RANGE_MODIFIER + f Lbuu; cF field_47710 CREATIVE_ENTITY_INTERACTION_RANGE_MODIFIER + f Lakz; cG field_13970 advancements + f Lavv; cH field_13966 stats + f F cI field_13963 lastRecordedHealthAndAbsorption + f I cJ field_13983 lastRecordedFoodLevel + f I cK field_13968 lastRecordedAirLevel + f I cL field_13982 lastRecordedArmor + f Laru; c field_13987 connection + f I cM field_13965 lastRecordedLevel + f I cN field_13980 lastRecordedExperience + f F cO field_13997 lastSentHealth + f I cP field_13979 lastSentFood + f Z cQ field_13972 lastFoodSaturationZero + f I cR field_13978 lastSentExp + f I cS field_13998 spawnInvulnerableTime + f Lcmv; cT field_13993 chatVisibility + f Z cU field_13971 canChatColor + f J cV field_13976 lastActionTime + f Lbsr; cW field_13984 camera + f Z cX field_13985 isChangingDimension + f Lavu; cY field_13996 recipeBook + f Lexc; cZ field_13992 levitationStartPos + f Lorg/slf4j/Logger; cz field_13975 LOGGER + f Lnet/minecraft/server/MinecraftServer; d field_13995 server + f I da field_13973 levitationStartTime + f Z db field_13964 disconnected + f I dc field_44990 requestedViewDistance + f Ljava/lang/String; dd field_46156 language + f Lexc; de field_35007 startingToFallPosition + f Lexc; df field_13994 enteredNetherPosition + f Lexc; dg field_35008 enteredLavaOnVehiclePosition + f Lkf; dh field_13990 lastSectionPos + f Laqg; di field_44991 chunkTrackingView + f Lakq; dj field_23191 respawnDimension + f Ljd; dk field_23192 respawnPosition + f Z dl field_23193 respawnForced + f F dm field_26353 respawnAngle + f Larz; dn field_26821 textFilter + f Z do field_28860 textFilteringEnabled + f Z dp field_35566 allowsListing + f Z dq field_49776 spawnExtraParticlesOnFall + f Lcmd; dr field_39985 wardenSpawnTracker + f Ljd; ds field_50088 raidOmenPosition + f Lexc; dt field_51875 lastKnownClientMovement + f Lcqi; du field_29180 containerSynchronizer + f Lcqh; dv field_29181 containerListener + f Lxq; dw field_39986 chatSession + f I dx field_13986 containerCounter + f Laqw; e field_13974 gameMode + f Z f field_13969 seenCredits + f Ljava/lang/Object; g field_49777 object + f Z h field_13989 wonGame + m ()Laqu; A method_51469 serverLevel + m ()Ljava/lang/String; B method_14209 getIpAddress + m ()Laqh; C method_53823 clientInformation + m ()Z D method_34879 canChatInColor + m ()Lcmv; E method_14238 getChatVisibility + m ()I F method_52371 requestedViewDistance + m ()V H method_14234 resetLastActionTime + m ()Lavv; I method_14248 getStats + m ()Lavu; J method_14253 getRecipeBook + m ()Lbsr; L method_14242 getCamera + m ()J N method_14219 getLastActionTime + m ()Lwz; O method_14206 getTabListDisplayName + m ()Z P method_14208 isChangingDimension + m ()V Q method_14240 hasChangedDimension + m ()Lakz; R method_14236 getAdvancements + m ()Ljd; S method_26280 getRespawnPosition + m ()F T method_30631 getRespawnAngle + m ()Lakq; U method_26281 getRespawnDimension + m ()Z V method_26282 isRespawnForced + m ()Lkf; W method_14232 getLastSectionPos + m ()Laqg; X method_52372 getChunkTrackingView + m ()Larz; Y method_31273 getTextFilter + m (DDDZ)V a method_14207 doCheckFallDamage + m (FFZZ)V a method_14218 setPlayerInput + m (I)V a method_14228 setExperiencePoints + m (ILeye;)V a method_14221 method_14221 + m (Lajq;)V a method_43930 sendServerStatus + m (Lakq;Ljd;FZZ)V a method_26284 setRespawnPosition + m (Laqg;)V a method_52373 setChunkTrackingView + m (Laqh;)V a method_14213 updateOptions + m (Laqu;)V a method_51468 setServerLevel + m (Laqu;DDDFF)V a method_14251 teleportTo + m (Laqu;Ljd;FZZ)Ljava/util/Optional; a method_60588 findRespawnAndUseSpawnBlock + m (Laqv;Z)V a method_14203 restoreFrom + m (Lazs;)V a method_19504 method_19504 + m (Lbtp;)V a method_29777 method_29777 + m (Lckd;)Z a method_26283 method_26283 + m (Lcmd;)V a method_45164 method_45164 + m (Lcmw;I)V a method_37412 method_37412 + m (Lcpu;)V a method_14235 initMenu + m (Ldct;)Z a method_7336 setGameMode + m (Leyf;Leyf;[Leyj;)V a method_14227 handleTeamKill + m (Leyj;I)V a method_14212 updateScoreForCriteria + m (Lff$a;Lbsr;Lff$a;)V a method_14222 lookAt + m (Ljd;Lexc;)Laqv$a; a method_60589 method_60589 + m (Ljd;Lji;)Z a method_26285 bedInRange + m (Lkf;)V a method_17668 setLastSectionPos + m (Lub;Ljava/lang/String;)Ldct; a method_32745 readPlayerMode + m (Lub;Luy;)V a method_58583 method_58583 + m (Lwz;Lxw;)Lxw; a method_14210 method_14210 + m (Lxo;ZLwv$a;)V a method_43505 sendChatMessage + m (Lxq;)V a method_46364 setChatSession + m (Z)Z a method_37413 drop + m (ZLeqc$a;)Leqc; a method_60590 findRespawnPositionAndUseSpawnBlock + m ()Z aa method_39426 allowsListing + m ()Lxq; ac method_45163 getChatSession + m ()V ae method_58584 clearRaidOmenPosition + m ()Ljd; af method_58585 getRaidOmenPosition + m (DDD)V b method_54720 checkMovementStatistics + m (I)V b method_14252 setExperienceLevels + m (ILeye;)V b method_14250 method_14250 + m (Lakr;)Ljava/util/stream/Stream; b method_54934 method_54934 + m (Laqu;)Lagd; b method_52374 createCommonSpawnInfo + m (Laqv;)V b method_60592 copyRespawnPosition + m (Lbtp;)Z b method_29778 method_29778 + m (Ldct;)Ldct; b method_32746 calculateGameModeForNewPlayer + m (Lexc;)V b method_52208 setKnownMovement + m (Ljd;Lexc;)Laqv$a; b method_60593 method_60593 + m (Ljd;Lji;)Z b method_26286 bedBlocked + m (Lub;Luy;)V b method_29205 method_29205 + m (Lwz;Z)V b method_43502 sendSystemMessage + m (Z)V b method_58143 setSpawnExtraParticlesOnFall + m (Laqu;)V c method_18783 triggerDimensionChangeTriggers + m (Laqv;)Z c method_33795 shouldFilterMessageTo + m (Ljd;)V c method_58586 setRaidOmenPosition + m (Lub;)V c method_32748 loadGameTypes + m (Lub;Luy;)V c method_45165 method_45165 + m (Lwz;)Lzg; c method_43507 method_43507 + m (Lbsr;)V d method_14224 setCamera + m (Lwz;)Lzg; d method_14223 method_14223 + m ()V gD method_55633 updatePlayerAttributes + m ()V gE method_29779 tellNeutralMobsThatIDied + m ()Z gF method_14230 isPvpAllowed + m ()V gG method_14237 nextContainerCounter + m ()Z gH method_44706 acceptsChatMessages + m ()V h method_34225 initInventoryMenu + m (Ljd;)Z i method_26287 isReachableBedBlock + m (Ljd;)V j method_58587 method_58587 + m (Lub;)V k method_32749 storeGameTypes + m ()V m method_14226 doTick + m ()V o method_38786 trackStartFallingPosition + m ()V p method_38787 trackEnteredOrExitedLavaOnVehicle + m ()V q method_60594 showEndCredits + m (DDD)V q method_54721 checkRidingStatistics + m (DDD)Z r method_54722 didNotMove + m (I)I t method_14244 getCoprime + m ()V v method_14231 disconnect + m ()Z w method_14239 hasDisconnected + m ()V x method_14217 resetSentInfo + m (Z)Z x method_44707 acceptsSystemMessages + m (Lnet/minecraft/server/MinecraftServer;Laqu;Lcom/mojang/authlib/GameProfile;Laqh;)V + m ()V +c aqv$1 net/minecraft/class_3222$1 net/minecraft/server/level/ServerPlayer$1 + f Laqv; a field_29182 field_29182 + m (Lcpu;II)V b method_34227 broadcastDataValue + m (Laqv;)V +c aqv$2 net/minecraft/class_3222$2 net/minecraft/server/level/ServerPlayer$2 + f Laqv; a field_29183 field_29183 + m (Laqv;)V +c aqv$a net/minecraft/class_3222$class_9773 net/minecraft/server/level/ServerPlayer$RespawnPosAngle + f Lexc; a comp_2811 position + f F b comp_2812 yaw + m ()Lexc; a comp_2811 position + m (Lexc;Ljd;)Laqv$a; a method_60595 of + m ()F b comp_2812 yaw + m (Lexc;Ljd;)F b method_60596 calculateLookAtYaw + m (Lexc;F)V +c aqw net/minecraft/class_3225 net/minecraft/server/level/ServerPlayerGameMode + f Lorg/slf4j/Logger; a field_20325 LOGGER + f Ldct; b field_14005 gameModeForPlayer + f Laqu; c field_14007 level + f Laqv; d field_14008 player + f Ldct; e field_25715 previousGameModeForPlayer + f Z f field_14003 isDestroyingBlock + f I g field_20326 destroyProgressStart + f Ljd; h field_20327 destroyPos + f I i field_14000 gameTicks + f Z j field_20328 hasDelayedDestroy + f Ljd; k field_20329 delayedDestroyPos + f I l field_20330 delayedTickStart + f I m field_20331 lastSentState + m ()V a method_14264 tick + m (Laqu;)V a method_14259 setLevel + m (Laqv;Ldcw;Lcuq;Lbqq;)Lbqr; a method_14256 useItem + m (Laqv;Ldcw;Lcuq;Lbqq;Lewy;)Lbqr; a method_14262 useItemOn + m (Lcul;)V a method_59904 method_59904 + m (Ldct;)Z a method_30118 changeGameModeForPlayer + m (Ldct;Ldct;)V a method_14261 setGameModeForPlayer + m (Ldtc;Ljd;I)F a method_21716 incrementDestroyProgress + m (Ljd;)Z a method_14266 destroyBlock + m (Ljd;ILjava/lang/String;)V a method_21717 destroyAndAck + m (Ljd;Lahm$a;Lji;II)V a method_14263 handleBlockBreakAction + m (Ljd;ZILjava/lang/String;)V a method_41250 debugLogging + m ()Ldct; b method_14257 getGameModeForPlayer + m ()Ldct; c method_30119 getPreviousGameModeForPlayer + m ()Z d method_14267 isSurvival + m ()Z e method_14268 isCreative + m (Laqv;)V + m ()V +c aqx net/minecraft/class_3227 net/minecraft/server/level/ThreadedLevelLightEngine + f I a field_44692 DEFAULT_BATCH_SIZE + f Lorg/slf4j/Logger; d field_14020 LOGGER + f Lbpk; e field_17255 taskMailbox + f Lit/unimi/dsi/fastutil/objects/ObjectList; f field_17256 lightTasks + f Laqb; g field_17257 chunkMap + f Lbpj; h field_17259 sorterMailbox + f I i field_17260 taskPerBatch + f Ljava/util/concurrent/atomic/AtomicBoolean; j field_18812 scheduled + m (II)Ljava/util/concurrent/CompletableFuture; a method_53694 waitForPendingTasks + m (IILaqx$a;Ljava/lang/Runnable;)V a method_17308 addTask + m (IILjava/lang/Runnable;)V a method_53695 method_53695 + m (IILjava/util/function/IntSupplier;Laqx$a;Ljava/lang/Runnable;)V a method_17307 addTask + m (Laqx$a;Ljava/lang/Runnable;)V a method_17313 method_17313 + m (Ldcd;)V a method_20386 updateChunkStatus + m (Ldcd;Ljava/lang/Runnable;)V a method_17306 method_17306 + m (Ldcd;ZLduy;)Lduy; a method_51284 method_51284 + m (Lduy;)Lduy; a method_17309 method_17309 + m (Lduy;Ldcd;)V a method_51288 method_51288 + m (Lduy;Z)Ljava/util/concurrent/CompletableFuture; a method_51285 initializeLight + m (ZLdcd;)V a method_51470 method_51470 + m ()V b method_17303 tryScheduleUpdate + m (Ldcd;Ljava/lang/Runnable;)V b method_51287 method_51287 + m (Lddf;Lkf;Ldvd;)V b method_14280 method_14280 + m (Lduy;Z)Ljava/util/concurrent/CompletableFuture; b method_17310 lightChunk + m (Ljd;)Ljava/lang/String; b method_18846 method_18846 + m (Lkf;)Ljava/lang/String; b method_18844 method_18844 + m (Lkf;Z)Ljava/lang/String; b method_18847 method_18847 + m (Ldcd;)Ljava/lang/String; c method_51286 method_51286 + m (Ldcd;Z)Ljava/lang/String; c method_18845 method_18845 + m (Ljd;)V c method_14279 method_14279 + m (Lkf;Z)V c method_14273 method_14273 + m (Ldcd;)Ljava/lang/String; d method_20624 method_20624 + m (Ldcd;Z)V d method_20626 method_20626 + m (Ldcd;)Ljava/lang/String; e method_51472 method_51472 + m (Ldcd;Z)Ljava/lang/String; e method_51473 method_51473 + m ()V f method_14277 runUpdate + m (Ldcd;)V f method_51474 method_51474 + m (Ldcd;Z)V f method_51475 method_51475 + m ()V g method_53696 method_53696 + m (Ldcd;)Ljava/lang/String; g method_20387 method_20387 + m ()V h method_19505 method_19505 + m (Ldcd;)V h method_20388 method_20388 + m ()I i method_20625 method_20625 + m ()I j method_20607 method_20607 + m ()I k method_17314 method_17314 + m ()I l method_20389 method_20389 + m (Ldvl;Laqb;ZLbpk;Lbpj;)V + m ()V +c aqx$a net/minecraft/class_3227$class_3901 net/minecraft/server/level/ThreadedLevelLightEngine$TaskType + f Laqx$a; a field_17261 PRE_UPDATE + f Laqx$a; b field_17262 POST_UPDATE + f [Laqx$a; c field_17263 $VALUES + m ()[Laqx$a; a method_36577 $values + m (Ljava/lang/String;I)V + m ()V +c aqy net/minecraft/class_3228 net/minecraft/server/level/Ticket + f Laqz; a field_14023 type + f I b field_14025 ticketLevel + f Ljava/lang/Object; c field_14022 key + f J d field_14024 createdTick + m ()Laqz; a method_14281 getType + m (J)V a method_23956 setCreatedTick + m (Laqy;)I a method_14285 compareTo + m ()I b method_14283 getTicketLevel + m (J)Z b method_20627 timedOut + m (Laqz;ILjava/lang/Object;)V +c aqz net/minecraft/class_3230 net/minecraft/server/level/TicketType + f Laqz; a field_14030 START + f Laqz; b field_17264 DRAGON + f Laqz; c field_14033 PLAYER + f Laqz; d field_14031 FORCED + f Laqz; e field_19280 PORTAL + f Laqz; f field_19347 POST_TELEPORT + f Laqz; g field_14032 UNKNOWN + f Ljava/lang/String; h field_14034 name + f Ljava/util/Comparator; i field_14029 comparator + f J j field_19348 timeout + m ()Ljava/util/Comparator; a method_14292 getComparator + m (Lazs;Lazs;)I a method_17315 method_17315 + m (Ljava/lang/String;Ljava/util/Comparator;)Laqz; a method_14291 create + m (Ljava/lang/String;Ljava/util/Comparator;I)Laqz; a method_20628 create + m ()J b method_20629 timeout + m (Lazs;Lazs;)I b method_17316 method_17316 + m (Ljava/lang/String;Ljava/util/Comparator;J)V + m ()V +c ara net/minecraft/class_6609 net/minecraft/server/level/TickingTracker + f I a field_44858 MAX_LEVEL + f Lit/unimi/dsi/fastutil/longs/Long2ByteMap; b field_34888 chunks + f I c field_34889 INITIAL_TICKET_LIST_CAPACITY + f Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap; d field_34890 tickets + m ()V a method_38635 runAllUpdates + m (I)V a method_38636 replacePlayerTicketsLevel + m (JLaqy;)V a method_38637 addTicket + m (Laqz;Ldcd;ILjava/lang/Object;)V a method_38638 addTicket + m (Lazg;)I a method_38639 getTicketLevelAt + m (Ldcd;)I a method_38640 getLevel + m (JLaqy;)V b method_38641 removeTicket + m (Laqz;Ldcd;ILjava/lang/Object;)V b method_38642 removeTicket + m (J)Ljava/lang/String; d method_38643 getTicketDebugString + m (J)Lazg; g method_38644 getTickets + m (J)Lazg; h method_38645 method_38645 + m ()V +c arb net/minecraft/class_3233 net/minecraft/server/level/WorldGenRegion + f Lorg/slf4j/Logger; a field_14092 LOGGER + f Lazi; b field_14098 cache + f Lduy; c field_28557 center + f Laqu; d field_14093 level + f J e field_14087 seed + f Lerb; f field_14097 levelData + f Layw; g field_14091 random + f Ldwy; h field_14096 dimensionType + f Leyy; i field_14099 blockTicks + f Leyy; j field_14094 fluidTicks + f Lddy; k field_20668 biomeManager + f Ldwc; l field_51876 generatingStep + f Ljava/util/function/Supplier; m field_33756 currentlyGenerating + f Ljava/util/concurrent/atomic/AtomicLong; n field_35442 subTickCount + f Lakr; o field_38683 WORLDGEN_REGION_RANDOM + m ()Ldcd; a method_33561 getCenter + m (Laqn;)Ljava/lang/String; a method_60479 method_60479 + m (Ldcd;I)Z a method_42109 isOldChunkAround + m (Ldvz;)Ljava/lang/String; a method_60480 method_60480 + m (Ljd;)V f method_14338 markPosForPostprocessing + m (Ljd;)Leyw; g method_14337 method_14337 + m (Ljd;)Leyw; k method_14340 method_14340 + m ()Ljava/lang/String; p method_60481 method_60481 + m (Laqu;Lazi;Ldwc;Lduy;)V + m ()V +c arc net/minecraft/class_5978 net/minecraft/server/level/package-info +c ard net/minecraft/class_3949 net/minecraft/server/level/progress/ChunkProgressListener + m ()V a method_17675 start + m (I)I a method_56041 calculateDiameter + m (Ldcd;)V a method_17669 updateSpawnPos + m (Ldcd;Ldvz;)V a method_17670 onStatusChange + m ()V b method_17671 stop +c are net/minecraft/class_3950 net/minecraft/server/level/progress/ChunkProgressListenerFactory +c arf net/minecraft/class_3951 net/minecraft/server/level/progress/LoggerChunkProgressListener + f Lorg/slf4j/Logger; a field_17467 LOGGER + f I b field_17468 maxCount + f I c field_17469 count + f J d field_17470 startTime + f J e field_17471 nextTickTime + m (I)Larf; b method_56042 createFromGameruleRadius + m ()Larf; c method_56043 createCompleted + m (I)Larf; c method_56044 create + m ()I d method_17672 getProgress + m (I)V + m ()V +c arg net/minecraft/class_3952 net/minecraft/server/level/progress/ProcessorChunkProgressListener + f Lard; a field_17472 delegate + f Lbpk; b field_17473 mailbox + f Z c field_48272 started + m (Lard;Ljava/util/concurrent/Executor;)Larg; a method_34228 createStarted + m (Ldcd;)V b method_17673 method_17673 + m (Ldcd;Ldvz;)V b method_17674 method_17674 + m (Lard;Ljava/util/concurrent/Executor;)V +c arh net/minecraft/class_3953 net/minecraft/server/level/progress/StoringChunkProgressListener + f Larf; a field_17474 delegate + f Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap; b field_17475 statuses + f Ldcd; c field_17476 spawnPos + f I d field_17477 fullDiameter + f I e field_17478 radius + f I f field_17479 diameter + f Z g field_17480 started + m (II)Ldvz; a method_17676 getStatus + m (I)Larh; b method_56045 createFromGameruleRadius + m ()Larh; c method_56046 createCompleted + m (I)Larh; c method_56047 create + m ()I d method_17677 getFullDiameter + m ()I e method_17678 getDiameter + m ()I f method_17679 getProgress + m (Larf;III)V +c ari net/minecraft/class_5979 net/minecraft/server/level/progress/package-info +c arj net/minecraft/class_8792 net/minecraft/server/network/CommonListenerCookie + f Lcom/mojang/authlib/GameProfile; a comp_1959 gameProfile + f I b comp_1960 latency + f Laqh; c comp_1961 clientInformation + f Z d comp_2202 transferred + m ()Lcom/mojang/authlib/GameProfile; a comp_1959 gameProfile + m (Lcom/mojang/authlib/GameProfile;Z)Larj; a method_53824 createInitial + m ()I b comp_1960 latency + m ()Laqh; c comp_1961 clientInformation + m ()Z d comp_2202 transferred + m (Lcom/mojang/authlib/GameProfile;ILaqh;Z)V +c ark net/minecraft/class_8605 net/minecraft/server/network/ConfigurationTask + m ()Lark$a; a method_52375 type + m (Ljava/util/function/Consumer;)V a method_52376 start +c ark$a net/minecraft/class_8605$class_8606 net/minecraft/server/network/ConfigurationTask$Type + f Ljava/lang/String; a comp_1576 id + m ()Ljava/lang/String; a comp_1576 id + m (Ljava/lang/String;)V +c arl net/minecraft/class_9262 net/minecraft/server/network/Filterable + f Ljava/lang/Object; a comp_2369 raw + f Ljava/util/Optional; b comp_2370 filtered + m ()Ljava/lang/Object; a comp_2369 raw + m (Larm;)Larl; a method_57134 from + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_57135 codec + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57136 method_57136 + m (Ljava/lang/Object;)Larl; a method_57137 passThrough + m (Ljava/util/function/Function;)Larl; a method_57138 map + m (Lyx;)Lyx; a method_57139 streamCodec + m (Z)Ljava/lang/Object; a method_57140 get + m ()Ljava/util/Optional; b comp_2370 filtered + m (Ljava/util/function/Function;)Ljava/util/Optional; b method_57141 resolve + m (Ljava/lang/Object;Ljava/util/Optional;)V +c arm net/minecraft/class_5837 net/minecraft/server/network/FilteredText + f Larm; a field_28863 EMPTY + f Ljava/lang/String; b comp_841 raw + f Lxd; c comp_978 mask + m ()Ljava/lang/String; a method_45059 filtered + m (Ljava/lang/String;)Larm; a method_45060 passThrough + m ()Ljava/lang/String; b method_45061 filteredOrEmpty + m (Ljava/lang/String;)Larm; b method_45062 fullyFiltered + m ()Z c method_45063 isFiltered + m ()Ljava/lang/String; d comp_841 raw + m ()Lxd; e comp_978 mask + m (Ljava/lang/String;Lxd;)V + m ()V +c arn net/minecraft/class_8607 net/minecraft/server/network/LegacyProtocolUtils + f I a field_44992 CUSTOM_PAYLOAD_PACKET_ID + f Ljava/lang/String; b field_44993 CUSTOM_PAYLOAD_PACKET_PING_CHANNEL + f I c field_44994 GET_INFO_PACKET_ID + f I d field_44995 GET_INFO_PACKET_VERSION_1 + f I e field_44996 DISCONNECT_PACKET_ID + f I f field_44997 FAKE_PROTOCOL_VERSION + m (Lio/netty/buffer/ByteBuf;)Ljava/lang/String; a method_52377 readLegacyString + m (Lio/netty/buffer/ByteBuf;Ljava/lang/String;)V a method_52378 writeLegacyString + m ()V +c aro net/minecraft/class_3238 net/minecraft/server/network/LegacyQueryHandler + f Lorg/slf4j/Logger; a field_14101 LOGGER + f Lalh; b field_44998 server + m (Lalh;)Ljava/lang/String; a method_52379 createVersion0Response + m (Lio/netty/buffer/ByteBuf;)Z a method_52380 readCustomPayloadPacket + m (Lio/netty/buffer/ByteBufAllocator;Ljava/lang/String;)Lio/netty/buffer/ByteBuf; a method_52381 createLegacyDisconnectPacket + m (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)V a method_14344 sendFlushAndClose + m (Lalh;)Ljava/lang/String; b method_52382 createVersion1Response + m (Lalh;)V + m ()V +c arp net/minecraft/class_3240 net/minecraft/server/network/MemoryServerHandshakePacketListenerImpl + f Lnet/minecraft/server/MinecraftServer; b field_14104 server + f Lvt; c field_14103 connection + m (Lnet/minecraft/server/MinecraftServer;Lvt;)V +c arq net/minecraft/class_8608 net/minecraft/server/network/PlayerChunkSender + f F a field_45000 MIN_CHUNKS_PER_TICK + f F b field_45001 MAX_CHUNKS_PER_TICK + f Lorg/slf4j/Logger; c field_45002 LOGGER + f F d field_45003 START_CHUNKS_PER_TICK + f I e field_45004 MAX_UNACKNOWLEDGED_BATCHES + f Lit/unimi/dsi/fastutil/longs/LongSet; f field_45005 pendingChunks + f Z g field_45006 memoryConnection + f F h field_45007 desiredChunksPerTick + f F i field_45008 batchQuota + f I j field_45009 unacknowledgedBatches + f I k field_45010 maxUnacknowledgedBatches + m (F)V a method_52383 onChunkBatchReceivedByClient + m (J)Z a method_52384 isPending + m (Laqb;Ldcd;)Ljava/util/List; a method_52385 collectChunksToSend + m (Laqv;)V a method_52386 sendNextChunks + m (Laqv;Ldcd;)V a method_52387 dropChunk + m (Laru;Laqu;Ldvi;)V a method_52388 sendChunk + m (Ldcd;Ldvi;)I a method_52389 method_52389 + m (Ldvi;)V a method_52390 markChunkPendingToSend + m (Z)V + m ()V +c arr net/minecraft/class_8609 net/minecraft/server/network/ServerCommonPacketListenerImpl + f I b field_45011 LATENCY_CHECK_INTERVAL + f Lwz; c field_48273 DISCONNECT_UNEXPECTED_QUERY + f Lnet/minecraft/server/MinecraftServer; d field_45012 server + f Lvt; e field_45013 connection + f Lorg/slf4j/Logger; f field_45014 LOGGER + f I g field_51342 CLOSED_LISTENER_TIMEOUT + f Lwz; h field_45015 TIMEOUT_DISCONNECTION_MESSAGE + f Z i field_48274 transferred + f J j field_45016 keepAliveTime + f Z k field_45017 keepAlivePending + f J l field_45018 keepAliveChallenge + f J m field_51343 closedListenerTime + f Z n field_51344 closed + f I o field_45019 latency + f Z p field_45715 suspendFlushingOnServerThread + m (J)Z a method_59511 checkIfClosed + m (Laqh;)Larj; a method_53825 createCookie + m (Lwz;)V a method_52396 disconnect + m (Lzg;Lwg;)V a method_52391 send + m (Lvv;)V b method_60673 disconnect + m (Lzg;)V b method_14364 send + m (Lvv;)V c method_60674 method_60674 + m (Lzg;)Ljava/lang/String; c method_52399 method_52399 + m ()V e method_52400 keepConnectionAlive + m ()V f method_53046 suspendFlushing + m ()V g method_53047 resumeFlushing + m ()Z h method_52402 isSingleplayerOwner + m ()Lcom/mojang/authlib/GameProfile; i method_52403 playerProfile + m ()Lcom/mojang/authlib/GameProfile; j method_52404 getOwner + m ()I k method_52405 latency + m ()V l method_59512 close + m (Lnet/minecraft/server/MinecraftServer;Lvt;Larj;)V + m ()V +c ars net/minecraft/class_8610 net/minecraft/server/network/ServerConfigurationPacketListenerImpl + f Lorg/slf4j/Logger; f field_45020 LOGGER + f Lwz; g field_45021 DISCONNECT_REASON_INVALID_DATA + f Lcom/mojang/authlib/GameProfile; h field_45022 gameProfile + f Ljava/util/Queue; i field_45023 configurationTasks + f Lark; j field_45024 currentTask + f Laqh; k field_46157 clientInformation + f Lasd; l field_49026 synchronizeRegistriesTask + m (Lark$a;)V a method_52406 finishCurrentTask + m (Lasq;)Ljava/util/stream/Stream; a method_56530 method_56530 + m (Lnet/minecraft/server/MinecraftServer$b;)V a method_52407 method_52407 + m ()V l method_52409 startConfiguration + m ()V m method_52410 returnToWorld + m ()V n method_52411 addOptionalTasks + m ()V o method_52412 startNextTask + m (Lnet/minecraft/server/MinecraftServer;Lvt;Larj;)V + m ()V +c art net/minecraft/class_3242 net/minecraft/server/network/ServerConnectionListener + f Ljava/util/function/Supplier; a field_14111 SERVER_EVENT_GROUP + f Ljava/util/function/Supplier; b field_14105 SERVER_EPOLL_EVENT_GROUP + f Z c field_14108 running + f Lorg/slf4j/Logger; d field_14110 LOGGER + f Lnet/minecraft/server/MinecraftServer; e field_14109 server + f Ljava/util/List; f field_14106 channels + f Ljava/util/List; g field_14107 connections + m ()Ljava/net/SocketAddress; a method_14353 startMemoryChannel + m (Ljava/net/InetAddress;I)V a method_14354 startTcpServerListener + m (Lvt;Lwz;)V a method_14352 method_14352 + m ()V b method_14356 stop + m ()V c method_14357 tick + m ()Lnet/minecraft/server/MinecraftServer; d method_14351 getServer + m ()Ljava/util/List; e method_37909 getConnections + m ()Lio/netty/channel/epoll/EpollEventLoopGroup; f method_14349 method_14349 + m ()Lio/netty/channel/nio/NioEventLoopGroup; g method_14348 method_14348 + m (Lnet/minecraft/server/MinecraftServer;)V + m ()V +c art$1 net/minecraft/class_3242$1 net/minecraft/server/network/ServerConnectionListener$1 + f Lart; a field_14112 field_14112 + m (Lart;)V +c art$2 net/minecraft/class_3242$2 net/minecraft/server/network/ServerConnectionListener$2 + f Lart; a field_14113 field_14113 + m (Lart;)V +c art$a net/minecraft/class_3242$class_5980 net/minecraft/server/network/ServerConnectionListener$LatencySimulator + f Lio/netty/util/Timer; a field_29772 TIMER + f I b field_29773 delay + f I c field_29774 jitter + f Ljava/util/List; d field_29775 queuedMessages + m (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V a method_34880 delayDownstream + m (Lio/netty/util/Timeout;)V a method_34881 onTimeout + m (II)V + m ()V +c art$a$a net/minecraft/class_3242$class_5980$class_5981 net/minecraft/server/network/ServerConnectionListener$LatencySimulator$DelayedMessage + f Lio/netty/channel/ChannelHandlerContext; a field_29776 ctx + f Ljava/lang/Object; b field_29777 msg + m (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V +c aru net/minecraft/class_3244 net/minecraft/server/network/ServerGamePacketListenerImpl + f D A field_14124 vehicleFirstGoodY + f D B field_14142 vehicleFirstGoodZ + f D C field_14122 vehicleLastGoodX + f D D field_14141 vehicleLastGoodY + f D E field_14120 vehicleLastGoodZ + f Lexc; F field_14119 awaitingPositionFromClient + f I G field_14123 awaitingTeleport + f I H field_14139 awaitingTeleportTime + f Z I field_14131 clientIsFloating + f I J field_14138 aboveGroundTickCount + f Z K field_14129 clientVehicleIsFloating + f I L field_14137 aboveGroundVehicleTickCount + f I M field_14117 receivedMovePacketCount + f I N field_14135 knownMovePacketCount + f Lxq; O field_40720 chatSession + f Lxt$b; P field_39805 signedMessageDecoder + f Lxi; Q field_39825 lastSeenMessages + f Lxm; R field_39987 messageSignatureCache + f Layc; S field_39826 chatMessageChain + f Z T field_45025 waitingForSwitchToConfig + f Laqv; f field_14140 player + f Larq; g field_45026 chunkSender + f Lorg/slf4j/Logger; h field_14121 LOGGER + f I i field_37281 NO_BLOCK_UPDATES_TO_ACK + f I j field_39989 TRACKED_MESSAGE_DISCONNECT_THRESHOLD + f I k field_49027 MAXIMUM_FLYING_TICKS + f Lwz; l field_39990 CHAT_VALIDATION_FAILED + f Lwz; m field_50089 INVALID_COMMAND_SIGNATURE + f I n field_49778 MAX_COMMAND_SUGGESTIONS + f I o field_14118 tickCount + f I p field_37282 ackBlockChangesUpTo + f I q field_14116 chatSpamTickCount + f I r field_14133 dropSpamTickCount + f D s field_14130 firstGoodX + f D t field_14146 firstGoodY + f D u field_14128 firstGoodZ + f D v field_14145 lastGoodX + f D w field_14126 lastGoodY + f D x field_14144 lastGoodZ + f Lbsr; y field_14147 lastVehicle + f D z field_14143 vehicleFirstGoodX + m (D)D a method_34882 clampHorizontal + m (DDDFF)V a method_14363 teleport + m (DDDFFLjava/util/Set;)V a method_14360 teleport + m (I)V a method_41255 ackBlockChangesUpTo + m (ILjava/util/List;)V a method_31274 method_31274 + m (Lagp;Ljava/util/Optional;)V a method_58588 method_58588 + m (Lagp;Lxg;)V a method_45010 performSignedChatCommand + m (Lagp;Lxr;Lxg;)Ljava/util/Map; a method_45006 collectSignedArguments + m (Lagq;Ljava/util/Optional;)V a method_44900 method_44900 + m (Lagq;Lxg;)Lxp; a method_45011 getSignedMessage + m (Lagu;Lcom/mojang/brigadier/suggestion/Suggestions;)V a method_14365 method_14365 + m (Lahk;Lczb;)V a method_17820 method_17820 + m (Laib;Ljava/util/List;)V a method_31282 updateSignText + m (Laqv;Lcuq;)Z a method_27913 wasBlockPlacementAttempt + m (Larm;)Larl; a method_57142 filterableFromOutgoing + m (Larm;Ljava/util/List;I)V a method_31276 signBook + m (Lbsr;)I a method_56922 getMaximumFlyingTicks + m (Ldcz;Lewx;DDD)Z a method_20630 isPlayerCollidingWithAnythingNew + m (Ler;Let;)Let; a method_45002 method_45002 + m (Ljava/lang/Object;)Ljava/lang/Object; a method_31284 method_31284 + m (Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture; a method_31275 filterTextPacket + m (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_31277 filterTextPacket + m (Ljava/lang/String;Ljava/lang/Runnable;)V a method_44337 tryHandleChat + m (Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Lxt$a; a method_58589 createSignedArgumentMismatchException + m (Ljava/util/List;)Ljava/util/concurrent/CompletableFuture; a method_31279 filterTextPacket + m (Ljava/util/List;I)V a method_31278 updateBookContents + m (Lwz;Lwv$a;)V a method_45168 sendDisguisedChatMessage + m (Lxg$b;)Ljava/util/Optional; a method_45169 unpackAndApplyLastSeen + m (Lxp;)V a method_44897 addPendingMessage + m (Lxp;Lwv$a;)V a method_45170 sendPlayerChatMessage + m (Lxp;Lwz;Larm;)V a method_45064 method_45064 + m (Lxq;)V a method_46365 resetPlayerChatState + m (Lxt$a;)V a method_45171 handleMessageDecodeFailure + m (D)D b method_34883 clampVertical + m (DDDFF)Z b method_14371 containsInvalidValues + m (ILjava/util/List;)V b method_31283 method_31283 + m (Lago;)V b method_44356 method_44356 + m (Laib;Ljava/util/List;)V b method_31285 method_31285 + m (Larm;)Larl; b method_33799 method_33799 + m (Lbsr;)Z b method_29780 noBlocksAround + m (Ljava/lang/String;)V b method_58590 performUnsignedChatCommand + m (Ljava/util/List;)Ljava/util/Map; b method_58591 collectUnsignedArguments + m (Lxp;)V b method_44155 broadcastChatMessage + m (Lxq;)V b method_54439 method_54439 + m (Ljava/lang/String;)Lcom/mojang/brigadier/ParseResults; c method_45003 parseCommand + m (Ljava/lang/String;)Z d method_43508 isChatMessageIllegal + m ()V l method_14372 resetPosition + m ()Ljava/net/SocketAddress; m method_48107 getRemoteAddress + m ()V n method_52414 switchToConfig + m ()Z p method_60947 updateAwaitingTeleport + m ()V q method_52415 removePlayerFromWorld + m ()V r method_43669 detectRateSpam + m (Lnet/minecraft/server/MinecraftServer;Lvt;Laqv;Larj;)V + m ()V +c aru$1 net/minecraft/class_3244$1 net/minecraft/server/network/ServerGamePacketListenerImpl$1 + f Laqu; a field_39991 val$level + f Lbsr; b field_28962 val$target + f Laru; c field_28963 field_28963 + m (Lbqq;Laru$a;)V a method_33897 performInteraction + m (Lexc;Laqv;Lbsr;Lbqq;)Lbqr; a method_33898 method_33898 + m (Laru;Laqu;Lbsr;)V +c aru$2 net/minecraft/class_3244$2 net/minecraft/server/network/ServerGamePacketListenerImpl$2 + f [I a field_28964 $SwitchMap$net$minecraft$world$level$block$entity$CommandBlockEntity$Mode + f [I b field_28965 $SwitchMap$net$minecraft$network$protocol$game$ServerboundPlayerActionPacket$Action + f [I c field_28966 $SwitchMap$net$minecraft$network$protocol$game$ServerboundPlayerCommandPacket$Action + f [I d field_28967 $SwitchMap$net$minecraft$network$protocol$game$ServerboundClientCommandPacket$Action + m ()V +c aru$a net/minecraft/class_3244$class_5860 net/minecraft/server/network/ServerGamePacketListenerImpl$EntityInteraction +c arv net/minecraft/class_3246 net/minecraft/server/network/ServerHandshakePacketListenerImpl + f Lwz; b field_24457 IGNORE_STATUS_REASON + f Lnet/minecraft/server/MinecraftServer; c field_14154 server + f Lvt; d field_14153 connection + m (Laij;Z)V a method_56048 beginLogin + m (Lnet/minecraft/server/MinecraftServer;Lvt;)V + m ()V +c arv$1 net/minecraft/class_3246$1 net/minecraft/server/network/ServerHandshakePacketListenerImpl$1 + f [I a field_14155 $SwitchMap$net$minecraft$network$protocol$handshake$ClientIntent + m ()V +c arw net/minecraft/class_3248 net/minecraft/server/network/ServerLoginPacketListenerImpl + f Ljava/util/concurrent/atomic/AtomicInteger; b field_14157 UNIQUE_THREAD_ID + f Lorg/slf4j/Logger; c field_14166 LOGGER + f I d field_29779 MAX_TICKS_BEFORE_LOGIN + f [B e field_14167 challenge + f Lnet/minecraft/server/MinecraftServer; f field_14162 server + f Lvt; g field_14158 connection + f Larw$a; h field_14163 state + f I i field_14156 tick + f Ljava/lang/String; j field_45028 requestedUsername + f Lcom/mojang/authlib/GameProfile; k field_45029 authenticatedProfile + f Ljava/lang/String; l field_14165 serverId + f Z m field_48275 transferred + m (Lcom/mojang/authlib/GameProfile;)Z a method_52416 isPlayerAlreadyInWorld + m (Lwz;)V a method_14380 disconnect + m (Lcom/mojang/authlib/GameProfile;)V b method_52417 startClientVerification + m (Lcom/mojang/authlib/GameProfile;)V c method_52419 verifyLoginAndFinishConnectionSetup + m (Lcom/mojang/authlib/GameProfile;)V d method_52420 finishLoginAndWaitForClient + m ()Ljava/lang/String; e method_14383 getUserName + m ()Ljava/lang/String; f method_55598 method_55598 + m ()V g method_52421 method_52421 + m (Lnet/minecraft/server/MinecraftServer;Lvt;Z)V + m ()V +c arw$1 net/minecraft/class_3248$1 net/minecraft/server/network/ServerLoginPacketListenerImpl$1 + f Ljava/lang/String; a field_26900 val$digest + f Larw; b field_14176 field_14176 + m ()Ljava/net/InetAddress; a method_14386 getAddress + m (Larw;Ljava/lang/String;Ljava/lang/String;)V +c arw$a net/minecraft/class_3248$class_3249 net/minecraft/server/network/ServerLoginPacketListenerImpl$State + f Larw$a; a field_14170 HELLO + f Larw$a; b field_14175 KEY + f Larw$a; c field_14169 AUTHENTICATING + f Larw$a; d field_14173 NEGOTIATING + f Larw$a; e field_45030 VERIFYING + f Larw$a; f field_45031 WAITING_FOR_DUPE_DISCONNECT + f Larw$a; g field_45032 PROTOCOL_SWITCHING + f Larw$a; h field_14172 ACCEPTED + f [Larw$a; i field_14174 $VALUES + m ()[Larw$a; a method_36581 $values + m (Ljava/lang/String;I)V + m ()V +c arx net/minecraft/class_5629 net/minecraft/server/network/ServerPlayerConnection + m (Lzg;)V b method_14364 send + m ()Laqv; o method_32311 getPlayer +c ary net/minecraft/class_3251 net/minecraft/server/network/ServerStatusPacketListenerImpl + f Lwz; b field_14179 DISCONNECT_REASON + f Lajq; c field_42544 status + f Lvt; d field_14178 connection + f Z e field_14177 hasRequestedStatus + m (Lajq;Lvt;)V + m ()V +c arz net/minecraft/class_5513 net/minecraft/server/network/TextFilter + f Larz; a field_28862 DUMMY + m ()V a method_31287 join + m (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_31288 processStreamMessage + m (Ljava/util/List;)Ljava/util/concurrent/CompletableFuture; a method_31289 processMessageBundle + m ()V b method_31290 leave + m ()V +c arz$1 net/minecraft/class_5513$1 net/minecraft/server/network/TextFilter$1 + m ()V +c asa net/minecraft/class_5514 net/minecraft/server/network/TextFilterClient + f Lorg/slf4j/Logger; a field_26823 LOGGER + f Ljava/util/concurrent/atomic/AtomicInteger; b field_26824 WORKER_COUNT + f Ljava/util/concurrent/ThreadFactory; c field_26825 THREAD_FACTORY + f Ljava/lang/String; d field_38055 DEFAULT_ENDPOINT + f Ljava/net/URL; e field_26826 chatEndpoint + f Lasa$c; f field_38056 chatEncoder + f Ljava/net/URL; g field_26827 joinEndpoint + f Lasa$b; h field_38057 joinEncoder + f Ljava/net/URL; i field_26828 leaveEndpoint + f Lasa$b; j field_38058 leaveEncoder + f Ljava/lang/String; k field_26829 authKey + f Lasa$a; l field_26832 chatIgnoreStrategy + f Ljava/util/concurrent/ExecutorService; m field_26833 workerPool + m (ILjava/lang/String;Ljava/lang/String;Lcom/mojang/authlib/GameProfile;Ljava/lang/String;)Lcom/google/gson/JsonObject; a method_42110 method_42110 + m (Lasa$b;Lcom/mojang/authlib/GameProfile;Ljava/net/URL;)V a method_31296 method_31296 + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_42111 getEndpointFromConfig + m (Lcom/google/gson/JsonObject;Ljava/net/URL;)Lcom/google/gson/JsonObject; a method_31295 processRequestResponse + m (Lcom/mojang/authlib/GameProfile;)Larz; a method_31297 createContext + m (Lcom/mojang/authlib/GameProfile;Ljava/lang/String;Lasa$a;)Larm; a method_31294 method_31294 + m (Lcom/mojang/authlib/GameProfile;Ljava/lang/String;Lasa$a;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_31298 requestMessageProcessing + m (Lcom/mojang/authlib/GameProfile;Ljava/net/URL;Lasa$b;Ljava/util/concurrent/Executor;)V a method_31299 processJoinOrLeave + m (Ljava/io/InputStream;)V a method_31300 drainStream + m (Ljava/lang/Runnable;)Ljava/lang/Thread; a method_31301 method_31301 + m (Ljava/lang/String;)Lasa; a method_33805 createFromConfig + m (Ljava/lang/String;Lcom/google/gson/JsonArray;Lasa$a;)Lxd; a method_45066 parseMask + m (Ljava/lang/String;Ljava/lang/String;Lcom/mojang/authlib/GameProfile;)Lcom/google/gson/JsonObject; a method_42112 method_42112 + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mojang/authlib/GameProfile;Ljava/lang/String;)Lcom/google/gson/JsonObject; a method_42113 method_42113 + m (Ljava/net/URI;Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/net/URL; a method_41206 getEndpoint + m (Lcom/google/gson/JsonObject;Ljava/net/URL;)V b method_31304 processRequest + m (Lcom/google/gson/JsonObject;Ljava/net/URL;)Ljava/net/HttpURLConnection; c method_31306 makeRequest + m (Ljava/net/URL;Lasa$c;Ljava/net/URL;Lasa$b;Ljava/net/URL;Lasa$b;Ljava/lang/String;Lasa$a;I)V + m ()V +c asa$a net/minecraft/class_5514$class_5515 net/minecraft/server/network/TextFilterClient$IgnoreStrategy + f Lasa$a; a field_26834 NEVER_IGNORE + f Lasa$a; b field_26835 IGNORE_FULLY_FILTERED + m (ILjava/lang/String;I)Z a method_33807 method_33807 + m (Ljava/lang/String;I)Z a method_31310 method_31310 + m (Ljava/lang/String;I)Z b method_31312 method_31312 + m (I)Lasa$a; ignoreOverThreshold method_33806 ignoreOverThreshold + m (I)Lasa$a; select method_33808 select + m ()V +c asa$b net/minecraft/class_5514$class_7241 net/minecraft/server/network/TextFilterClient$JoinOrLeaveEncoder +c asa$c net/minecraft/class_5514$class_7242 net/minecraft/server/network/TextFilterClient$MessageEncoder +c asa$d net/minecraft/class_5514$class_5516 net/minecraft/server/network/TextFilterClient$PlayerContext + f Lasa; b field_26836 field_26836 + f Lcom/mojang/authlib/GameProfile; c field_26837 profile + f Ljava/util/concurrent/Executor; d field_26838 streamExecutor + m (Ljava/lang/Throwable;)Ljava/util/List; a method_33809 method_33809 + m (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; b method_31315 method_31315 + m (Lasa;Lcom/mojang/authlib/GameProfile;)V +c asa$e net/minecraft/class_5514$class_5517 net/minecraft/server/network/TextFilterClient$RequestFailedException + m (Ljava/lang/String;)V +c asb net/minecraft/class_8611 net/minecraft/server/network/config/JoinWorldTask + f Lark$a; a field_45033 TYPE + m ()V + m ()V +c asc net/minecraft/class_8612 net/minecraft/server/network/config/ServerResourcePackConfigurationTask + f Lark$a; a field_45034 TYPE + f Lnet/minecraft/server/MinecraftServer$b; b field_45035 info + m (Lnet/minecraft/server/MinecraftServer$b;)V + m ()V +c asd net/minecraft/class_9223 net/minecraft/server/network/config/SynchronizeRegistriesTask + f Lark$a; a field_49028 TYPE + f Ljava/util/List; b field_49029 requestedPacks + f Ljt; c field_49030 registries + m (Ljava/util/List;Ljava/util/function/Consumer;)V a method_56923 handleResponse + m (Ljava/util/function/Consumer;Lakq;Ljava/util/List;)V a method_56924 method_56924 + m (Ljava/util/function/Consumer;Ljava/util/Set;)V a method_56925 sendRegistries + m (Ljava/util/List;Ljt;)V + m ()V +c ase net/minecraft/class_8613 net/minecraft/server/network/config/package-info +c asf net/minecraft/class_5982 net/minecraft/server/network/package-info +c asg net/minecraft/class_5983 net/minecraft/server/package-info +c ash net/minecraft/class_3255 net/minecraft/server/packs/AbstractPackResources + f Lorg/slf4j/Logger; c field_14182 LOGGER + f Lasp; d field_49031 location + m (Latd;Ljava/io/InputStream;)Ljava/lang/Object; a method_14392 getMetadataFromStream + m (Lasp;)V + m ()V +c asi net/minecraft/class_7662 net/minecraft/server/packs/BuiltInMetadata + f Lasi; a field_39994 EMPTY + f Ljava/util/Map; b field_39995 values + m ()Lasi; a method_45172 of + m (Latd;)Ljava/lang/Object; a method_45173 get + m (Latd;Ljava/lang/Object;)Lasi; a method_45174 of + m (Latd;Ljava/lang/Object;Latd;Ljava/lang/Object;)Lasi; a method_45175 of + m (Ljava/util/Map;)V + m ()V +c asj net/minecraft/class_8614 net/minecraft/server/packs/CompositePackResources + f Lasq; c field_45036 primaryPackResources + f Ljava/util/List; d field_45037 packResourcesStack + m (Lasq;Ljava/util/List;)V +c ask net/minecraft/class_9055 net/minecraft/server/packs/DownloadCacheCleaner + f Lorg/slf4j/Logger; a field_47674 LOGGER + m (Ljava/nio/file/Path;)Ljava/util/List; a method_55599 listFilesWithModificationTimes + m (Ljava/nio/file/Path;I)V a method_55600 vacuumCacheDir + m (Ljava/util/List;)Ljava/util/List; a method_55601 prioritizeFilesInDirs + m ()V + m ()V +c ask$1 net/minecraft/class_9055$1 net/minecraft/server/packs/DownloadCacheCleaner$1 + f Ljava/nio/file/Path; a field_47675 val$cacheDir + f Ljava/util/List; b field_47676 val$unsortedFiles + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult; a method_55602 visitFile + m (Ljava/nio/file/Path;Ljava/util/List;)V +c ask$a net/minecraft/class_9055$class_9056 net/minecraft/server/packs/DownloadCacheCleaner$PathAndPriority + f Ljava/util/Comparator; a field_47677 HIGHEST_PRIORITY_FIRST + f Ljava/nio/file/Path; b comp_2168 path + f I c comp_2169 removalPriority + m ()Ljava/nio/file/Path; a comp_2168 path + m ()I b comp_2169 removalPriority + m (Ljava/nio/file/Path;I)V + m ()V +c ask$b net/minecraft/class_9055$class_9057 net/minecraft/server/packs/DownloadCacheCleaner$PathAndTime + f Ljava/util/Comparator; a field_47678 NEWEST_FIRST + f Ljava/nio/file/Path; b comp_2170 path + f Ljava/nio/file/attribute/FileTime; c comp_2171 modifiedTime + m ()Ljava/nio/file/Path; a comp_2170 path + m ()Ljava/nio/file/attribute/FileTime; b comp_2171 modifiedTime + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/FileTime;)V + m ()V +c asl net/minecraft/class_9028 net/minecraft/server/packs/DownloadQueue + f Lorg/slf4j/Logger; a field_47572 LOGGER + f I b field_47679 MAX_KEPT_PACKS + f Ljava/nio/file/Path; c field_47573 cacheDir + f Lbly; d field_47574 eventLog + f Lbpk; e field_47575 tasks + m (Lasl$a;Lasl$b;Ljava/util/UUID;Lasl$c;)V a method_55485 method_55485 + m (Lasl$a;Ljava/util/Map;)Ljava/util/concurrent/CompletableFuture; a method_55486 downloadBatch + m (Ljava/nio/file/Path;)Lcom/mojang/datafixers/util/Either; a method_55487 getFileInfo + m (Lasl$a;Ljava/util/Map;)Lasl$b; b method_55488 runDownload + m (Lasl$a;Ljava/util/Map;)Lasl$b; c method_55489 method_55489 + m (Ljava/nio/file/Path;)V + m ()V +c asl$a net/minecraft/class_9028$class_9029 net/minecraft/server/packs/DownloadQueue$BatchConfig + f Lcom/google/common/hash/HashFunction; a comp_2138 hashFunction + f I b comp_2139 maxSize + f Ljava/util/Map; c comp_2140 headers + f Ljava/net/Proxy; d comp_2141 proxy + f Layf$a; e comp_2142 listener + m ()Lcom/google/common/hash/HashFunction; a comp_2138 hashFunction + m ()I b comp_2139 maxSize + m ()Ljava/util/Map; c comp_2140 headers + m ()Ljava/net/Proxy; d comp_2141 proxy + m ()Layf$a; e comp_2142 listener + m (Lcom/google/common/hash/HashFunction;ILjava/util/Map;Ljava/net/Proxy;Layf$a;)V +c asl$b net/minecraft/class_9028$class_9030 net/minecraft/server/packs/DownloadQueue$BatchResult + f Ljava/util/Map; a comp_2143 downloaded + f Ljava/util/Set; b comp_2144 failed + m ()Ljava/util/Map; a comp_2143 downloaded + m ()Ljava/util/Set; b comp_2144 failed + m ()V + m (Ljava/util/Map;Ljava/util/Set;)V +c asl$c net/minecraft/class_9028$class_9031 net/minecraft/server/packs/DownloadQueue$DownloadRequest + f Ljava/net/URL; a comp_2145 url + f Lcom/google/common/hash/HashCode; b comp_2146 hash + m ()Ljava/net/URL; a comp_2145 url + m ()Lcom/google/common/hash/HashCode; b comp_2146 hash + m (Ljava/net/URL;Lcom/google/common/hash/HashCode;)V +c asl$d net/minecraft/class_9028$class_9032 net/minecraft/server/packs/DownloadQueue$FileInfoEntry + f Lcom/mojang/serialization/Codec; a field_47576 CODEC + f Ljava/lang/String; b comp_2147 name + f J c comp_2148 size + m ()Ljava/lang/String; a comp_2147 name + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55490 method_55490 + m ()J b comp_2148 size + m (Ljava/lang/String;J)V + m ()V +c asl$e net/minecraft/class_9028$class_9033 net/minecraft/server/packs/DownloadQueue$LogEntry + f Lcom/mojang/serialization/Codec; a field_47577 CODEC + f Ljava/util/UUID; b comp_2149 id + f Ljava/lang/String; c comp_2150 url + f Ljava/time/Instant; d comp_2151 time + f Ljava/util/Optional; e comp_2152 hash + f Lcom/mojang/datafixers/util/Either; f comp_2153 errorOrFileInfo + m ()Ljava/util/UUID; a comp_2149 id + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55491 method_55491 + m ()Ljava/lang/String; b comp_2150 url + m ()Ljava/time/Instant; c comp_2151 time + m ()Ljava/util/Optional; d comp_2152 hash + m ()Lcom/mojang/datafixers/util/Either; e comp_2153 errorOrFileInfo + m (Ljava/util/UUID;Ljava/lang/String;Ljava/time/Instant;Ljava/util/Optional;Lcom/mojang/datafixers/util/Either;)V + m ()V +c asm net/minecraft/class_7663 net/minecraft/server/packs/FeatureFlagsMetadataSection + f Late; a field_39996 TYPE + f Lcpl; b comp_994 flags + f Lcom/mojang/serialization/Codec; c field_39997 CODEC + m ()Lcpl; a comp_994 flags + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_45176 method_45176 + m (Lcpl;)V + m ()V +c asn net/minecraft/class_3258 net/minecraft/server/packs/FilePackResources + f Lorg/slf4j/Logger; c field_39096 LOGGER + f Lasn$b; d field_45038 zipFileAccess + f Ljava/lang/String; e field_45039 prefix + m (Ljava/lang/String;)Ljava/lang/String; a method_52422 addPrefix + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_52423 extractNamespace + m (Lass;Lakr;)Ljava/lang/String; b method_45177 getPathFromLocation + m (Ljava/lang/String;)Latw; b method_14391 getResource + m (Lasp;Lasn$b;Ljava/lang/String;)V + m ()V +c asn$a net/minecraft/class_3258$class_8615 net/minecraft/server/packs/FilePackResources$FileResourcesSupplier + f Ljava/io/File; a field_45040 content + m (Ljava/nio/file/Path;)V + m (Ljava/io/File;)V +c asn$b net/minecraft/class_3258$class_8616 net/minecraft/server/packs/FilePackResources$SharedZipFileAccess + f Ljava/io/File; a field_45042 file + f Ljava/util/zip/ZipFile; b field_45043 zipFile + f Z c field_45044 failedToLoad + m ()Ljava/util/zip/ZipFile; a method_52426 getOrCreateZipFile + m (Ljava/io/File;)V +c aso net/minecraft/class_8617 net/minecraft/server/packs/OverlayMetadataSection + f Late; a field_45045 TYPE + f Ljava/util/List; b comp_1577 overlays + f Ljava/util/regex/Pattern; c field_45046 DIR_VALIDATOR + f Lcom/mojang/serialization/Codec; d field_45047 CODEC + m ()Ljava/util/List; a comp_1577 overlays + m (I)Ljava/util/List; a method_52427 overlaysForVersion + m (ILaso$a;)Z a method_52428 method_52428 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52429 method_52429 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_52430 validateOverlayDir + m (Ljava/lang/String;)Ljava/lang/String; b method_52431 method_52431 + m (Ljava/util/List;)V + m ()V +c aso$a net/minecraft/class_8617$class_8618 net/minecraft/server/packs/OverlayMetadataSection$OverlayEntry + f Layg; a comp_1578 format + f Ljava/lang/String; b comp_1579 overlay + f Lcom/mojang/serialization/Codec; c field_45048 CODEC + m ()Layg; a comp_1578 format + m (I)Z a method_52432 isApplicable + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52433 method_52433 + m ()Ljava/lang/String; b comp_1579 overlay + m (Layg;Ljava/lang/String;)V + m ()V +c asp net/minecraft/class_9224 net/minecraft/server/packs/PackLocationInfo + f Ljava/lang/String; a comp_2329 id + f Lwz; b comp_2330 title + f Latq; c comp_2331 source + f Ljava/util/Optional; d comp_2332 knownPackInfo + m ()Ljava/lang/String; a comp_2329 id + m (ZLwz;)Lwz; a method_56927 createChatLink + m (ZLwz;Lxw;)Lxw; a method_56928 method_56928 + m ()Lwz; b comp_2330 title + m ()Latq; c comp_2331 source + m ()Ljava/util/Optional; d comp_2332 knownPackInfo + m (Ljava/lang/String;Lwz;Latq;Ljava/util/Optional;)V +c asq net/minecraft/class_3262 net/minecraft/server/packs/PackResources + f Ljava/lang/String; a field_29780 METADATA_EXTENSION + f Ljava/lang/String; b field_29781 PACK_META + m ()Lasp; a method_56926 location + m (Lass;)Ljava/util/Set; a method_14406 getNamespaces + m (Lass;Lakr;)Latw; a method_14405 getResource + m (Lass;Ljava/lang/String;Ljava/lang/String;Lasq$a;)V a method_14408 listResources + m (Latd;)Ljava/lang/Object; a method_14407 getMetadataSection + m ([Ljava/lang/String;)Latw; a method_14410 getRootResource + m ()Ljava/lang/String; b method_14409 packId + m ()Ljava/util/Optional; c method_56929 knownPackInfo +c asq$a net/minecraft/class_3262$class_7664 net/minecraft/server/packs/PackResources$ResourceOutput +c asr net/minecraft/class_9225 net/minecraft/server/packs/PackSelectionConfig + f Z a comp_2333 required + f Latm$b; b comp_2334 defaultPosition + f Z c comp_2335 fixedPosition + m ()Z a comp_2333 required + m ()Latm$b; b comp_2334 defaultPosition + m ()Z c comp_2335 fixedPosition + m (ZLatm$b;Z)V +c ass net/minecraft/class_3264 net/minecraft/server/packs/PackType + f Lass; a field_14188 CLIENT_RESOURCES + f Lass; b field_14190 SERVER_DATA + f Ljava/lang/String; c field_14189 directory + f [Lass; d field_14191 $VALUES + m ()Ljava/lang/String; a method_14413 getDirectory + m ()[Lass; b method_36582 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ast net/minecraft/class_3259 net/minecraft/server/packs/PathPackResources + f Lorg/slf4j/Logger; c field_14187 LOGGER + f Lcom/google/common/base/Joiner; d field_40000 PATH_JOINER + f Ljava/nio/file/Path; e field_40001 root + m (Lakr;Lcom/mojang/serialization/DataResult$Error;)Latw; a method_45179 method_45179 + m (Lakr;Ljava/nio/file/Path;)Latw; a method_45180 getResource + m (Lass;Ljava/lang/String;Lasq$a;Ljava/util/List;)V a method_45181 method_45181 + m (Ljava/lang/String;Lcom/mojang/serialization/DataResult$Error;)V a method_45182 method_45182 + m (Ljava/lang/String;Ljava/nio/file/Path;Ljava/util/List;Lasq$a;)V a method_45183 listPath + m (Ljava/nio/file/Path;)Z a method_14402 validatePath + m (Ljava/nio/file/Path;Ljava/lang/String;Lasq$a;Ljava/nio/file/Path;)V a method_45184 method_45184 + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Z a method_45185 method_45185 + m (Ljava/nio/file/Path;Ljava/util/List;)Latw; a method_45186 method_45186 + m (Ljava/nio/file/Path;)Latw; b method_45187 returnFileIfExists + m (Lasp;Ljava/nio/file/Path;)V + m ()V +c ast$a net/minecraft/class_3259$class_8619 net/minecraft/server/packs/PathPackResources$PathResourcesSupplier + f Ljava/nio/file/Path; a field_45049 content + m (Ljava/nio/file/Path;)V +c asu net/minecraft/class_3268 net/minecraft/server/packs/VanillaPackResources + f Lorg/slf4j/Logger; c field_14195 LOGGER + f Lasp; d field_49032 location + f Lasi; e field_26938 metadata + f Ljava/util/Set; f field_14193 namespaces + f Ljava/util/List; g field_40002 rootPaths + f Ljava/util/Map; h field_40003 pathsForType + m (Lakr;)Ljava/util/Optional; a method_45188 method_45188 + m (Lakr;Lass;Ljava/util/List;)Latw; a method_45189 method_45189 + m (Lakr;Lass;Ljava/util/function/Consumer;Ljava/util/List;)V a method_45190 method_45190 + m (Lakr;Lcom/mojang/serialization/DataResult$Error;)Latw; a method_45191 method_45191 + m (Lasq$a;Ljava/lang/String;Ljava/nio/file/Path;Ljava/util/List;)V a method_14418 getResources + m (Lass;Lakr;Ljava/util/function/Consumer;)V a method_45192 listRawPaths + m (Lass;Lasq$a;Ljava/lang/String;Ljava/util/List;)V a method_45193 method_45193 + m (Latw;)Lauc; a method_45194 method_45194 + m (Ljava/lang/String;Lcom/mojang/serialization/DataResult$Error;)V a method_45195 method_45195 + m (Lakr;Lcom/mojang/serialization/DataResult$Error;)V b method_45196 method_45196 + m ()Lauh; d method_43032 asProvider + m (Lasp;Lasi;Ljava/util/Set;Ljava/util/List;Ljava/util/Map;)V + m ()V +c asv net/minecraft/class_7665 net/minecraft/server/packs/VanillaPackResourcesBuilder + f Ljava/util/function/Consumer; a field_40004 developmentConfig + f Lorg/slf4j/Logger; b field_40005 LOGGER + f Ljava/util/Map; c field_40006 ROOT_DIR_BY_TYPE + f Ljava/util/Set; d field_40007 rootPaths + f Ljava/util/Map; e field_40008 pathsForType + f Lasi; f field_40009 metadata + f Ljava/util/Set; g field_40010 namespaces + m ()Lasv; a method_45197 pushJarResources + m (Lasi;)Lasv; a method_45198 setMetadata + m (Lasp;)Lasu; a method_45210 build + m (Lass;)Ljava/util/Set; a method_45199 method_45199 + m (Lass;Ljava/lang/Class;)Lasv; a method_45200 pushClasspathResources + m (Lass;Ljava/nio/file/Path;)Lasv; a method_45201 pushAssetPath + m (Lasv;)V a method_45202 method_45202 + m (Ljava/net/URI;)Ljava/nio/file/Path; a method_45203 safeGetPath + m (Ljava/nio/file/Path;)Lasv; a method_45204 pushUniversalPath + m (Ljava/util/Collection;)Ljava/util/List; a method_45205 copyAndReverse + m ([Ljava/lang/String;)Lasv; a method_45206 exposeNamespace + m ()Lasv; b method_45207 applyDevelopmentConfig + m (Lass;Ljava/nio/file/Path;)V b method_45208 pushPathForType + m (Ljava/nio/file/Path;)Z b method_45209 validateDirPath + m ()Lcom/google/common/collect/ImmutableMap; c method_45213 method_45213 + m (Lass;Ljava/nio/file/Path;)V c method_45211 method_45211 + m (Ljava/nio/file/Path;)V c method_45212 pushRootPath + m ()V + m ()V +c asw net/minecraft/class_7666 net/minecraft/server/packs/linkfs/DummyFileAttributes + f Ljava/nio/file/attribute/FileTime; a field_40011 EPOCH + m ()V + m ()V +c asx net/minecraft/class_7667 net/minecraft/server/packs/linkfs/LinkFSFileStore + f Ljava/lang/String; a field_40012 name + m (Ljava/lang/String;)V +c asy net/minecraft/class_7668 net/minecraft/server/packs/linkfs/LinkFSPath + f Ljava/nio/file/attribute/BasicFileAttributes; a field_40013 DIRECTORY_ATTRIBUTES + f Ljava/nio/file/attribute/BasicFileAttributes; b field_40014 FILE_ATTRIBUTES + f Ljava/util/Comparator; c field_40015 PATH_COMPARATOR + f Ljava/lang/String; d field_40016 name + f Lata; e field_40017 fileSystem + f Lasy; f field_40018 parent + f Ljava/util/List; g field_40019 pathToRoot + f Ljava/lang/String; h field_40020 pathString + f Latb; i field_40021 pathContents + m ()Lata; a method_45214 getFileSystem + m (I)Lasy; a method_45215 getName + m (II)Lasy; a method_45216 subpath + m (Lasy;Ljava/lang/String;)Lasy; a method_45217 createRelativePath + m (Latb;)Z a method_45218 isRelativeOrMissing + m (Ljava/lang/String;)Lasy; a method_45219 resolveName + m (Ljava/nio/file/Path;)Lasy; a method_45220 resolve + m (Ljava/util/List;)Lasy; a method_45221 resolve + m ([Ljava/nio/file/LinkOption;)Lasy; a method_45222 toRealPath + m ()Lasy; b method_45223 getRoot + m (Ljava/nio/file/Path;)Lasy; b method_45224 relativize + m ()Lasy; c method_45225 getFileName + m (Ljava/nio/file/Path;)Lasy; c method_45226 toLinkPath + m ()Lasy; d method_45227 getParent + m ()Lasy; e method_45228 normalize + m ()Lasy; f method_45229 toAbsolutePath + m ()Z g method_45230 exists + m ()Ljava/nio/file/Path; h method_45231 getTargetPath + m ()Latb$a; i method_45232 getDirectoryContents + m ()Ljava/nio/file/attribute/BasicFileAttributeView; j method_45233 getBasicAttributeView + m ()Ljava/nio/file/attribute/BasicFileAttributes; k method_45234 getBasicAttributes + m ()Ljava/util/List; l method_45235 pathToRoot + m ()Z m method_45236 hasRealContents + m ()Ljava/lang/String; n method_45237 pathToString + m (Lata;Ljava/lang/String;Lasy;Latb;)V + m ()V +c asy$1 net/minecraft/class_7668$1 net/minecraft/server/packs/linkfs/LinkFSPath$1 + m ()V +c asy$2 net/minecraft/class_7668$2 net/minecraft/server/packs/linkfs/LinkFSPath$2 + m ()V +c asy$3 net/minecraft/class_7668$3 net/minecraft/server/packs/linkfs/LinkFSPath$3 + f Lasy; a field_40022 field_40022 + m (Lasy;)V +c asz net/minecraft/class_7669 net/minecraft/server/packs/linkfs/LinkFSProvider + f Ljava/lang/String; a field_40023 SCHEME + m (Ljava/nio/file/Path;)Lasy; a method_45238 toLinkPath + m ()V +c asz$1 net/minecraft/class_7669$1 net/minecraft/server/packs/linkfs/LinkFSProvider$1 + f Latb$a; a field_40024 val$directoryContents + f Ljava/nio/file/DirectoryStream$Filter; b field_40025 val$filter + m (Lasy;)Ljava/nio/file/Path; a method_45239 method_45239 + m (Ljava/nio/file/DirectoryStream$Filter;Lasy;)Z a method_45240 method_45240 + m (Lasz;Latb$a;Ljava/nio/file/DirectoryStream$Filter;)V +c asz$2 net/minecraft/class_7669$2 net/minecraft/server/packs/linkfs/LinkFSProvider$2 + f [I a field_40027 $SwitchMap$java$nio$file$AccessMode + m ()V +c ata net/minecraft/class_7670 net/minecraft/server/packs/linkfs/LinkFileSystem + f Ljava/lang/String; a field_40028 PATH_SEPARATOR + f Ljava/util/Set; b field_40029 VIEWS + f Lcom/google/common/base/Splitter; c field_40030 PATH_SPLITTER + f Ljava/nio/file/FileStore; d field_40031 store + f Ljava/nio/file/spi/FileSystemProvider; e field_40032 provider + f Lasy; f field_40033 root + m ()Ljava/nio/file/FileStore; a method_45241 store + m (Lata$b;Lata;Ljava/lang/String;Lasy;)Lasy; a method_45242 buildPath + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap;Lata;Lasy;Ljava/lang/String;Lata$b;)V a method_45243 method_45243 + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap;Lata;Lasy;Ljava/lang/String;Ljava/nio/file/Path;)V a method_45244 method_45244 + m ()Lasy; b method_45245 rootPath + m ()Lata$a; c method_45246 builder + m (Ljava/lang/String;Lata$b;)V + m ()V +c ata$a net/minecraft/class_7670$class_7671 net/minecraft/server/packs/linkfs/LinkFileSystem$Builder + f Lata$b; a field_40034 root + m (Ljava/lang/String;)Ljava/nio/file/FileSystem; a method_45247 build + m (Ljava/util/List;Ljava/lang/String;Ljava/nio/file/Path;)Lata$a; a method_45248 put + m (Ljava/util/List;Ljava/nio/file/Path;)Lata$a; a method_45249 put + m (Ljava/lang/String;)Lata$b; b method_45250 method_45250 + m ()V +c ata$b net/minecraft/class_7670$class_7672 net/minecraft/server/packs/linkfs/LinkFileSystem$DirectoryEntry + f Ljava/util/Map; a comp_995 children + f Ljava/util/Map; b comp_996 files + m ()Ljava/util/Map; a comp_995 children + m ()Ljava/util/Map; b comp_996 files + m ()V + m (Ljava/util/Map;Ljava/util/Map;)V +c atb net/minecraft/class_7673 net/minecraft/server/packs/linkfs/PathContents + f Latb; a field_40035 MISSING + f Latb; b field_40036 RELATIVE + m ()V +c atb$1 net/minecraft/class_7673$1 net/minecraft/server/packs/linkfs/PathContents$1 + m ()V +c atb$2 net/minecraft/class_7673$2 net/minecraft/server/packs/linkfs/PathContents$2 + m ()V +c atb$a net/minecraft/class_7673$class_7674 net/minecraft/server/packs/linkfs/PathContents$DirectoryContents + f Ljava/util/Map; c comp_997 children + m ()Ljava/util/Map; a comp_997 children + m (Ljava/util/Map;)V +c atb$b net/minecraft/class_7673$class_7675 net/minecraft/server/packs/linkfs/PathContents$FileContents + f Ljava/nio/file/Path; c comp_998 contents + m ()Ljava/nio/file/Path; a comp_998 contents + m (Ljava/nio/file/Path;)V +c atc net/minecraft/class_7676 net/minecraft/server/packs/linkfs/package-info +c atd net/minecraft/class_3270 net/minecraft/server/packs/metadata/MetadataSectionSerializer + m ()Ljava/lang/String; a method_14420 getMetadataSectionName + m (Lcom/google/gson/JsonObject;)Ljava/lang/Object; a method_14421 fromJson +c ate net/minecraft/class_7677 net/minecraft/server/packs/metadata/MetadataSectionType + m (Ljava/lang/Object;)Lcom/google/gson/JsonObject; a method_45251 toJson + m (Ljava/lang/String;Lcom/mojang/serialization/Codec;)Late; a method_45252 fromCodec +c ate$1 net/minecraft/class_7677$1 net/minecraft/server/packs/metadata/MetadataSectionType$1 + f Ljava/lang/String; a field_40037 val$name + f Lcom/mojang/serialization/Codec; b field_40038 val$codec + m (Ljava/lang/String;Lcom/mojang/serialization/Codec;)V +c atf net/minecraft/class_3272 net/minecraft/server/packs/metadata/pack/PackMetadataSection + f Lcom/mojang/serialization/Codec; a field_45051 CODEC + f Late; b field_14202 TYPE + f Lwz; c comp_1580 description + f I d comp_1581 packFormat + f Ljava/util/Optional; e comp_1582 supportedFormats + m ()Lwz; a comp_1580 description + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52434 method_52434 + m ()I b comp_1581 packFormat + m ()Ljava/util/Optional; c comp_1582 supportedFormats + m (Lwz;ILjava/util/Optional;)V + m ()V +c atg net/minecraft/class_5984 net/minecraft/server/packs/metadata/pack/package-info +c ath net/minecraft/class_5985 net/minecraft/server/packs/metadata/package-info +c ati net/minecraft/class_5986 net/minecraft/server/packs/package-info +c atj net/minecraft/class_7678 net/minecraft/server/packs/repository/BuiltInPackSource + f Ljava/lang/String; a field_40039 VANILLA_ID + f Latl; b field_49033 CORE_PACK_INFO + f Lorg/slf4j/Logger; c field_40040 LOGGER + f Lass; d field_40041 packType + f Lasu; e field_40042 vanillaPack + f Lakr; f field_40043 packDir + f Lews; g field_45052 validator + m ()Lasu; a method_45256 getVanillaPack + m (Lasq;)Latm; a method_45257 createVanillaPack + m (Latm$c;Ljava/lang/String;)Latm; a method_45258 method_45258 + m (Ljava/lang/String;)Lwz; a method_45259 getPackTitle + m (Ljava/lang/String;Latm$c;Lwz;)Latm; a method_45260 createBuiltinPack + m (Ljava/nio/file/Path;)Ljava/lang/String; a method_45261 pathToId + m (Ljava/nio/file/Path;Ljava/util/function/BiConsumer;)V a method_45262 discoverPacksInPath + m (Ljava/util/function/BiConsumer;)V a method_45263 populatePackList + m (Ljava/util/function/BiConsumer;Ljava/nio/file/Path;)V a method_45264 method_45264 + m (Ljava/util/function/BiConsumer;Ljava/nio/file/Path;Latm$c;)V a method_45265 method_45265 + m (Ljava/util/function/Consumer;)V a method_45267 listBundledPacks + m (Ljava/util/function/Consumer;Ljava/lang/String;Ljava/util/function/Function;)V a method_45266 method_45266 + m (Lasq;)Latm$c; b method_52435 fixedResources + m (Lass;Lasu;Lakr;Lews;)V + m ()V +c atj$1 net/minecraft/class_7678$1 net/minecraft/server/packs/repository/BuiltInPackSource$1 + f Lasq; a field_45053 val$instance + m (Lasq;)V +c atk net/minecraft/class_3279 net/minecraft/server/packs/repository/FolderRepositorySource + f Lorg/slf4j/Logger; a field_40044 LOGGER + f Lasr; b field_49034 DISCOVERED_PACK_SELECTION_CONFIG + f Ljava/nio/file/Path; c field_14218 folder + f Lass; d field_40045 packType + f Latq; e field_25345 packSource + f Lews; f field_45054 validator + m (Ljava/nio/file/Path;)Ljava/lang/String; a method_45273 nameFromPath + m (Ljava/nio/file/Path;Lews;Ljava/util/function/BiConsumer;)V a method_45271 discoverPacks + m (Ljava/util/function/Consumer;Ljava/nio/file/Path;Latm$c;)V a method_45272 method_45272 + m (Ljava/nio/file/Path;)Lasp; b method_56930 createDiscoveredFilePackInfo + m (Ljava/nio/file/Path;Lass;Latq;Lews;)V + m ()V +c atk$a net/minecraft/class_3279$class_8620 net/minecraft/server/packs/repository/FolderRepositorySource$FolderPackDetector + m (Ljava/nio/file/Path;)Latm$c; a method_52436 createZipPack + m (Ljava/nio/file/Path;)Latm$c; b method_52437 createDirectoryPack + m (Lews;)V +c atl net/minecraft/class_9226 net/minecraft/server/packs/repository/KnownPack + f Lyx; a field_49035 STREAM_CODEC + f Ljava/lang/String; b field_49036 VANILLA_NAMESPACE + f Ljava/lang/String; c comp_2336 namespace + f Ljava/lang/String; d comp_2337 id + f Ljava/lang/String; e comp_2338 version + m ()Z a method_56931 isVanilla + m (Ljava/lang/String;)Latl; a method_56932 vanilla + m ()Ljava/lang/String; b comp_2336 namespace + m ()Ljava/lang/String; c comp_2337 id + m ()Ljava/lang/String; d comp_2338 version + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + m ()V +c atm net/minecraft/class_3288 net/minecraft/server/packs/repository/Pack + f Lorg/slf4j/Logger; a field_14279 LOGGER + f Lasp; b field_49037 location + f Latm$c; c field_14273 resources + f Latm$a; d field_49038 metadata + f Lasr; e field_49039 selectionConfig + m ()Lasp; a method_56933 location + m (Lasp;Latm$c;I)Latm$a; a method_45274 readPackMetadata + m (Lasp;Latm$c;Lass;Lasr;)Latm; a method_45275 readMetaAndCreate + m (Ljava/lang/String;Latf;)Layg; a method_52440 getDeclaredPackVersions + m (Z)Lwz; a method_14461 getChatLink + m ()Lwz; b method_14457 getTitle + m ()Lwz; c method_14459 getDescription + m ()Latn; d method_14460 getCompatibility + m ()Lcpl; e method_45276 getRequestedFeatures + m ()Lasq; f method_14458 open + m ()Ljava/lang/String; g method_14463 getId + m ()Lasr; h method_56934 selectionConfig + m ()Z i method_14464 isRequired + m ()Z j method_14465 isFixedPosition + m ()Latm$b; k method_14466 getDefaultPosition + m ()Latq; l method_29483 getPackSource + m (Lasp;Latm$c;Latm$a;Lasr;)V + m ()V +c atm$a net/minecraft/class_3288$class_7679 net/minecraft/server/packs/repository/Pack$Metadata + f Lwz; a comp_999 description + f Latn; b comp_1583 compatibility + f Lcpl; c comp_1001 requestedFeatures + f Ljava/util/List; d comp_1584 overlays + m ()Lwz; a comp_999 description + m ()Latn; b comp_1583 compatibility + m ()Lcpl; c comp_1001 requestedFeatures + m ()Ljava/util/List; d comp_1584 overlays + m (Lwz;Latn;Lcpl;Ljava/util/List;)V +c atm$b net/minecraft/class_3288$class_3289 net/minecraft/server/packs/repository/Pack$Position + f Latm$b; a field_14280 TOP + f Latm$b; b field_14281 BOTTOM + f [Latm$b; c field_14282 $VALUES + m ()Latm$b; a method_14467 opposite + m (Ljava/util/List;Ljava/lang/Object;Ljava/util/function/Function;Z)I a method_14468 insert + m ()[Latm$b; b method_36583 $values + m (Ljava/lang/String;I)V + m ()V +c atm$c net/minecraft/class_3288$class_7680 net/minecraft/server/packs/repository/Pack$ResourcesSupplier + m (Lasp;)Lasq; a method_52424 openPrimary + m (Lasp;Latm$a;)Lasq; a method_52425 openFull +c atn net/minecraft/class_3281 net/minecraft/server/packs/repository/PackCompatibility + f Latn; a field_14223 TOO_OLD + f Latn; b field_14220 TOO_NEW + f Latn; c field_14224 COMPATIBLE + f Lwz; d field_14219 description + f Lwz; e field_14222 confirmation + f [Latn; f field_14221 $VALUES + m ()Z a method_14437 isCompatible + m (Layg;I)Latn; a method_14436 forVersion + m ()Lwz; b method_14439 getDescription + m ()Lwz; c method_14438 getConfirmation + m ()[Latn; d method_36584 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ato net/minecraft/class_8621 net/minecraft/server/packs/repository/PackDetector + f Lews; a field_45057 validator + m (Ljava/nio/file/Path;Ljava/util/List;)Ljava/lang/Object; a method_52441 detectPackResources + m (Ljava/nio/file/Path;)Ljava/lang/Object; c method_52438 createDirectoryPack + m (Ljava/nio/file/Path;)Ljava/lang/Object; d method_52439 createZipPack + m (Lews;)V +c atp net/minecraft/class_3283 net/minecraft/server/packs/repository/PackRepository + f Ljava/util/Set; a field_14227 sources + f Ljava/util/Map; b field_14226 available + f Ljava/util/List; c field_14225 selected + m ()V a method_14445 reload + m (Latm;)Ljava/lang/String; a method_59808 method_59808 + m (Ljava/lang/String;)Z a method_49427 addPack + m (Ljava/util/Collection;)Ljava/lang/String; a method_59809 displayPackList + m (Ljava/util/Map;Latm;)V a method_29484 method_29484 + m ()Ljava/util/Collection; b method_29206 getAvailableIds + m (Ljava/lang/String;)Z b method_49428 removePack + m (Ljava/util/Collection;)V b method_14447 setSelected + m ()Ljava/util/Collection; c method_14441 getAvailablePacks + m (Ljava/lang/String;)Latm; c method_14449 getPack + m (Ljava/util/Collection;)Ljava/util/List; c method_29208 rebuildSelected + m ()Ljava/util/Collection; d method_29210 getSelectedIds + m (Ljava/lang/String;)Z d method_29207 isAvailable + m (Ljava/util/Collection;)Ljava/util/stream/Stream; d method_29209 getAvailablePacks + m ()Lcpl; e method_45278 getRequestedFeatureFlags + m ()Ljava/util/Collection; f method_14444 getSelectedPacks + m ()Ljava/util/List; g method_29211 openAllSelected + m ()Ljava/util/Map; h method_29212 discoverAvailable + m ([Latr;)V +c atq net/minecraft/class_5352 net/minecraft/server/packs/repository/PackSource + f Ljava/util/function/UnaryOperator; a field_40047 NO_DECORATION + f Latq; b field_25347 DEFAULT + f Latq; c field_25348 BUILT_IN + f Latq; d field_40048 FEATURE + f Latq; e field_25349 WORLD + f Latq; f field_25350 SERVER + m ()Z a method_45279 shouldAddAutomatically + m (Ljava/lang/String;)Ljava/util/function/UnaryOperator; a method_45280 decorateWithSource + m (Ljava/util/function/UnaryOperator;Z)Latq; a method_45281 create + m (Lwz;)Lwz; a method_45282 decorate + m (Lwz;Lwz;)Lwz; a method_45283 method_45283 + m ()V +c atq$1 net/minecraft/class_5352$1 net/minecraft/server/packs/repository/PackSource$1 + f Ljava/util/function/UnaryOperator; g field_40049 val$decorator + f Z h field_40050 val$addAutomatically + m (Ljava/util/function/UnaryOperator;Z)V +c atr net/minecraft/class_3285 net/minecraft/server/packs/repository/RepositorySource + m (Ljava/util/function/Consumer;)V loadPacks method_14453 loadPacks +c ats net/minecraft/class_3286 net/minecraft/server/packs/repository/ServerPacksSource + f Latf; c field_40051 VERSION_METADATA_SECTION + f Lasm; d field_40052 FEATURE_FLAGS_METADATA_SECTION + f Lasi; e field_26939 BUILT_IN_METADATA + f Lasp; f field_49040 VANILLA_PACK_INFO + f Lasr; g field_49041 VANILLA_SELECTION_CONFIG + f Lasr; h field_49042 FEATURE_SELECTION_CONFIG + f Lakr; i field_40053 PACKS_DIR + m (Lerf$c;)Latp; a method_45285 createPackRepository + m (Ljava/lang/String;Lwz;)Lasp; a method_56935 createBuiltInPackLocation + m (Ljava/nio/file/Path;)Z a method_52442 method_52442 + m (Ljava/nio/file/Path;Lews;)Latp; a method_45286 createPackRepository + m ()Lasu; b method_45287 createVanillaPackSource + m ()Latp; c method_52443 createVanillaTrustedRepository + m (Lews;)V + m ()V +c att net/minecraft/class_5987 net/minecraft/server/packs/repository/package-info +c atu net/minecraft/class_6860 net/minecraft/server/packs/resources/CloseableResourceManager +c atv net/minecraft/class_3294 net/minecraft/server/packs/resources/FallbackResourceManager + f Ljava/util/List; a field_14283 fallbacks + f Lorg/slf4j/Logger; c field_14285 LOGGER + f Lass; d field_14284 type + f Ljava/lang/String; e field_21561 namespace + m (Lakr;I)Latw; a method_43035 createStackMetadataFinder + m (Lakr;Lasq;Latw;)Latw; a method_45288 wrapForDebug + m (Lasq;)V a method_24233 push + m (Lasq;Lakr;)Laug; a method_45289 method_45289 + m (Lasq;Lakr;Latw;Latw;)Lauc; a method_45290 createResource + m (Lasq;Ljava/util/function/Predicate;)V a method_41256 push + m (Latv$d;)Lasq; a method_41257 method_41257 + m (Latv$d;Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/Map;)V a method_41258 listPackResources + m (Latv$d;Ljava/util/Map;)V a method_41259 applyPackFiltersToExistingResources + m (Latw;)Latw; a method_45291 convertToMetadata + m (Latw;Lakr;Lasq;)Ljava/io/InputStream; a method_45292 method_45292 + m (Ljava/lang/String;Lasq;Ljava/util/function/Predicate;)V a method_41260 pushInternal + m (Ljava/lang/String;Ljava/util/function/Predicate;)V a method_41261 pushFilterOnly + m (Ljava/util/Map;Ljava/util/Map;Lakr;Latv$a;)V a method_45293 method_45293 + m (Ljava/util/function/Predicate;Ljava/util/Map;Lasq;ILjava/util/Map;Lakr;Latw;)V a method_45294 method_45294 + m (Ljava/util/function/Predicate;Ljava/util/Map;Lasq;Lakr;Latw;)V a method_45295 method_45295 + m (Lakr;)Z b method_45296 isMetadata + m (Lakr;I)Laug; b method_43037 method_43037 + m (Latw;)Laug; b method_45297 parseMetadata + m (Lakr;)Lakr; c method_45298 getResourceLocationFromMetadata + m (Latw;)Laug; c method_45299 method_45299 + m (Lakr;)Lakr; d method_14473 getMetadataLocation + m (Lass;Ljava/lang/String;)V + m ()V +c atv$a net/minecraft/class_3294$class_7681 net/minecraft/server/packs/resources/FallbackResourceManager$1ResourceWithSourceAndIndex + f Lasq; a comp_1002 packResources + f Latw; b comp_1003 resource + f I c comp_1004 packIndex + m ()Lasq; a comp_1002 packResources + m ()Latw; b comp_1003 resource + m ()I c comp_1004 packIndex + m (Lasq;Latw;I)V +c atv$b net/minecraft/class_3294$class_7081 net/minecraft/server/packs/resources/FallbackResourceManager$EntryStack + f Lakr; a comp_1005 fileLocation + f Lakr; b comp_527 metadataLocation + f Ljava/util/List; c comp_1006 fileSources + f Ljava/util/Map; d comp_1007 metaSources + m ()Lakr; a comp_1005 fileLocation + m ()Lakr; b comp_527 metadataLocation + m ()Ljava/util/List; c comp_1006 fileSources + m ()Ljava/util/Map; d comp_1007 metaSources + m (Lakr;)V + m (Lakr;Lakr;Ljava/util/List;Ljava/util/Map;)V +c atv$c net/minecraft/class_3294$class_3295 net/minecraft/server/packs/resources/FallbackResourceManager$LeakedResourceWarningInputStream + f Ljava/util/function/Supplier; a field_14288 message + f Z b field_14287 closed + m (Ljava/lang/Exception;Lakr;Ljava/lang/String;)Ljava/lang/String; a method_45300 method_45300 + m (Ljava/io/InputStream;Lakr;Ljava/lang/String;)V +c atv$d net/minecraft/class_3294$class_7082 net/minecraft/server/packs/resources/FallbackResourceManager$PackEntry + f Ljava/lang/String; a comp_529 name + f Lasq; b comp_530 resources + f Ljava/util/function/Predicate; c comp_531 filter + m ()Ljava/lang/String; a comp_529 name + m (Lakr;)Z a method_41269 isFiltered + m (Ljava/util/Collection;)V a method_41268 filterAll + m ()Lasq; b comp_530 resources + m ()Ljava/util/function/Predicate; c comp_531 filter + m (Ljava/lang/String;Lasq;Ljava/util/function/Predicate;)V +c atv$e net/minecraft/class_3294$class_7682 net/minecraft/server/packs/resources/FallbackResourceManager$ResourceWithSource + f Lasq; a comp_1008 source + f Latw; b comp_1009 resource + m ()Lasq; a comp_1008 source + m ()Latw; b comp_1009 resource + m (Lasq;Latw;)V +c atw net/minecraft/class_7367 net/minecraft/server/packs/resources/IoSupplier + m (Ljava/nio/file/Path;)Ljava/io/InputStream; a method_45301 method_45301 + m (Ljava/util/zip/ZipFile;Ljava/util/zip/ZipEntry;)Ljava/io/InputStream; a method_45302 method_45302 +c atx net/minecraft/class_6861 net/minecraft/server/packs/resources/MultiPackResourceManager + f Lorg/slf4j/Logger; a field_37288 LOGGER + f Ljava/util/Map; c field_36389 namespacedManagers + f Ljava/util/List; d field_36390 packs + m (Lasq;)Laud; a method_41274 getPackFilterSection + m (Lass;Lasq;)Ljava/util/stream/Stream; a method_41275 method_41275 + m (Laud;Lakr;)Z a method_41276 method_41276 + m (Ljava/lang/String;)V a method_45303 checkTrailingDirectoryPath + m (Lass;Ljava/util/List;)V + m ()V +c aty net/minecraft/class_3302 net/minecraft/server/packs/resources/PreparableReloadListener + m (Laty$a;Laue;Lbnf;Lbnf;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_25931 reload + m ()Ljava/lang/String; c method_22322 getName +c aty$a net/minecraft/class_3302$class_4045 net/minecraft/server/packs/resources/PreparableReloadListener$PreparationBarrier + m (Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture; a method_18352 wait +c atz net/minecraft/class_4010 net/minecraft/server/packs/resources/ProfiledReloadInstance + f Lorg/slf4j/Logger; c field_17918 LOGGER + f Lcom/google/common/base/Stopwatch; d field_17919 total + m (Laty;Lbmy;Lbmy;Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;Ljava/lang/Void;)Latz$a; a method_18356 method_18356 + m (Ljava/lang/Runnable;Ljava/util/concurrent/atomic/AtomicLong;)V a method_18353 method_18353 + m (Ljava/util/List;)Ljava/util/List; a method_18238 finish + m (Ljava/util/concurrent/Executor;Laty$a;Laue;Laty;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_18355 method_18355 + m (Ljava/util/concurrent/Executor;Ljava/util/concurrent/atomic/AtomicLong;Ljava/lang/Runnable;)V a method_18354 method_18354 + m (Ljava/lang/Runnable;Ljava/util/concurrent/atomic/AtomicLong;)V b method_18357 method_18357 + m (Ljava/util/concurrent/Executor;Ljava/util/concurrent/atomic/AtomicLong;Ljava/lang/Runnable;)V b method_18358 method_18358 + m ()I e method_18224 method_18224 + m ()I f method_18225 method_18225 + m (Laue;Ljava/util/List;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;)V + m ()V +c atz$a net/minecraft/class_4010$class_4046 net/minecraft/server/packs/resources/ProfiledReloadInstance$State + f Ljava/lang/String; a field_18037 name + f Lbne; b field_18038 preparationResult + f Lbne; c field_18039 reloadResult + f Ljava/util/concurrent/atomic/AtomicLong; d field_18040 preparationNanos + f Ljava/util/concurrent/atomic/AtomicLong; e field_18041 reloadNanos + m (Ljava/lang/String;Lbne;Lbne;Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;)V +c aua net/minecraft/class_4011 net/minecraft/server/packs/resources/ReloadInstance + m ()Ljava/util/concurrent/CompletableFuture; a method_18364 done + m ()F b method_18229 getActualProgress + m ()Z c method_18787 isDone + m ()V d method_18849 checkExceptions +c aub net/minecraft/class_3304 net/minecraft/server/packs/resources/ReloadableResourceManager + f Lorg/slf4j/Logger; a field_14295 LOGGER + f Latu; c field_36391 resources + f Ljava/util/List; d field_17935 listeners + f Lass; e field_14294 type + m (Laty;)V a method_14477 registerReloadListener + m (Ljava/util/List;)Ljava/lang/Object; a method_29491 method_29491 + m (Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/List;)Laua; a method_18232 createReload + m (Lass;)V + m ()V +c auc net/minecraft/class_3298 net/minecraft/server/packs/resources/Resource + f Lasq; a field_40054 source + f Latw; b field_38685 streamSupplier + f Latw; c field_38686 metadataSupplier + f Laug; d field_38687 cachedMetadata + m ()Lasq; a method_45304 source + m ()Ljava/lang/String; b method_14480 sourcePackId + m ()Ljava/util/Optional; c method_56936 knownPackInfo + m ()Ljava/io/InputStream; d method_14482 open + m ()Ljava/io/BufferedReader; e method_43039 openAsReader + m ()Laug; f method_14481 metadata + m (Lasq;Latw;Latw;)V + m (Lasq;Latw;)V +c aud net/minecraft/class_7084 net/minecraft/server/packs/resources/ResourceFilterSection + f Late; a field_40055 TYPE + f Lcom/mojang/serialization/Codec; b field_37291 CODEC + f Ljava/util/List; c field_37292 blockList + m (Laud;)Ljava/util/List; a method_41277 method_41277 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41278 method_41278 + m (Ljava/lang/String;)Z a method_41279 isNamespaceFiltered + m (Ljava/lang/String;Layx;)Z a method_41280 method_41280 + m (Ljava/lang/String;)Z b method_41281 isPathFiltered + m (Ljava/lang/String;Layx;)Z b method_41282 method_41282 + m (Ljava/util/List;)V + m ()V +c aue net/minecraft/class_3300 net/minecraft/server/packs/resources/ResourceManager + m ()Ljava/util/Set; a method_14487 getNamespaces + m (Lakr;)Ljava/util/List; a method_14489 getResourceStack + m ()Ljava/util/stream/Stream; b method_29213 listPacks + m (Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map; b method_14488 listResources + m (Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map; c method_41265 listResourceStacks +c aue$a net/minecraft/class_3300$class_5353 net/minecraft/server/packs/resources/ResourceManager$Empty + f Laue$a; a field_25351 INSTANCE + f [Laue$a; c field_25352 $VALUES + m ()[Laue$a; c method_36585 $values + m (Ljava/lang/String;I)V + m ()V +c auf net/minecraft/class_4013 net/minecraft/server/packs/resources/ResourceManagerReloadListener + m (Laue;)V a method_14491 onResourceManagerReload + m (Lbnf;Laue;)V a method_29490 method_29490 +c aug net/minecraft/class_7368 net/minecraft/server/packs/resources/ResourceMetadata + f Laug; a field_38688 EMPTY + f Latw; b field_40056 EMPTY_SUPPLIER + m ()Laug; a method_45306 method_45306 + m (Latd;)Ljava/util/Optional; a method_43041 getSection + m (Laug$a;Latd;)V a method_52444 copySection + m (Laug$a;Latd;Ljava/lang/Object;)V a method_52445 method_52445 + m (Ljava/io/InputStream;)Laug; a method_43042 fromJsonStream + m (Ljava/util/Collection;)Laug; a method_52446 copySections + m ()V +c aug$1 net/minecraft/class_7368$1 net/minecraft/server/packs/resources/ResourceMetadata$1 + m ()V +c aug$2 net/minecraft/class_7368$2 net/minecraft/server/packs/resources/ResourceMetadata$2 + f Lcom/google/gson/JsonObject; c field_38689 val$metadata + m (Lcom/google/gson/JsonObject;)V +c aug$a net/minecraft/class_7368$class_8622 net/minecraft/server/packs/resources/ResourceMetadata$Builder + f Lcom/google/common/collect/ImmutableMap$Builder; a field_45058 map + m ()Laug; a method_52447 build + m (Latd;Ljava/lang/Object;)Laug$a; a method_52448 put + m ()V +c aug$a$1 net/minecraft/class_7368$class_8622$1 net/minecraft/server/packs/resources/ResourceMetadata$Builder$1 + f Lcom/google/common/collect/ImmutableMap; c field_45059 val$map + m (Laug$a;Lcom/google/common/collect/ImmutableMap;)V +c auh net/minecraft/class_5912 net/minecraft/server/packs/resources/ResourceProvider + f Lauh; b field_49043 EMPTY + m (Ljava/util/Map;Lakr;)Ljava/util/Optional; a method_45307 method_45307 + m (Lakr;)Ljava/io/FileNotFoundException; b method_43043 method_43043 + m (Lakr;)Ljava/util/Optional; c method_56937 method_56937 + m (Lakr;)Ljava/util/Optional; getResource method_14486 getResource + m ()V +c aui net/minecraft/class_4309 net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener + f Lorg/slf4j/Logger; a field_19377 LOGGER + f Lcom/google/gson/Gson; b field_19379 gson + f Ljava/lang/String; c field_19380 directory + m (Laue;Lbnf;)Ljava/util/Map; a method_20731 prepare + m (Laue;Ljava/lang/String;Lcom/google/gson/Gson;Ljava/util/Map;)V a method_51148 scanDirectory + m (Lcom/google/gson/Gson;Ljava/lang/String;)V + m ()V +c auj net/minecraft/class_4080 net/minecraft/server/packs/resources/SimplePreparableReloadListener + m (Laue;Lbnf;)Ljava/lang/Object; a method_18791 method_18791 + m (Laue;Lbnf;Ljava/lang/Object;)V a method_18790 method_18790 + m (Ljava/lang/Object;Laue;Lbnf;)V a method_18788 apply + m (Laue;Lbnf;)Ljava/lang/Object; b method_18789 prepare + m ()V +c auk net/minecraft/class_4014 net/minecraft/server/packs/resources/SimpleReloadInstance + f Ljava/util/concurrent/CompletableFuture; a field_18042 allPreparations + f Ljava/util/concurrent/CompletableFuture; b field_18043 allDone + f I c field_29784 PREPARATION_PROGRESS_WEIGHT + f I d field_29785 EXTRA_RELOAD_PROGRESS_WEIGHT + f I e field_29786 LISTENER_PROGRESS_WEIGHT + f Ljava/util/Set; f field_18044 preparingListeners + f I g field_18045 listenerCount + f I h field_18046 startedReloads + f I i field_18047 finishedReloads + f Ljava/util/concurrent/atomic/AtomicInteger; j field_18048 startedTaskCounter + f Ljava/util/concurrent/atomic/AtomicInteger; k field_18049 doneTaskCounter + m (Laue;Ljava/util/List;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;)Lauk; a method_18369 of + m (Laue;Ljava/util/List;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Z)Laua; a method_40087 create + m (Ljava/lang/Runnable;)V a method_18365 method_18365 + m (Ljava/util/concurrent/Executor;Laty$a;Laue;Laty;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_18368 method_18368 + m (Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V a method_18367 method_18367 + m (Ljava/lang/Runnable;)V b method_18371 method_18371 + m (Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V b method_18372 method_18372 + m (Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Laue;Ljava/util/List;Lauk$a;Ljava/util/concurrent/CompletableFuture;)V +c auk$1 net/minecraft/class_4014$1 net/minecraft/server/packs/resources/SimpleReloadInstance$1 + f Ljava/util/concurrent/Executor; a field_18050 val$mainThreadExecutor + f Laty; b field_18051 val$listener + f Ljava/util/concurrent/CompletableFuture; c field_18052 val$previousTask + f Lauk; d field_18053 field_18053 + m (Laty;)V a method_18374 method_18374 + m (Ljava/lang/Object;Lazs;Ljava/lang/Object;)Ljava/lang/Object; a method_18373 method_18373 + m (Lauk;Ljava/util/concurrent/Executor;Laty;Ljava/util/concurrent/CompletableFuture;)V +c auk$a net/minecraft/class_4014$class_4047 net/minecraft/server/packs/resources/SimpleReloadInstance$StateFactory +c aul net/minecraft/class_5988 net/minecraft/server/packs/resources/package-info +c aum net/minecraft/class_3309 net/minecraft/server/players/BanListEntry + f Ljava/text/SimpleDateFormat; a field_14308 DATE_FORMAT + f Ljava/lang/String; b field_29787 EXPIRES_NEVER + f Ljava/util/Date; c field_14306 created + f Ljava/lang/String; d field_14304 source + f Ljava/util/Date; e field_14305 expires + f Ljava/lang/String; f field_14307 reason + m ()Ljava/util/Date; a method_34885 getCreated + m ()Ljava/lang/String; b method_14501 getSource + m ()Ljava/util/Date; c method_14502 getExpires + m ()Ljava/lang/String; d method_14503 getReason + m ()Lwz; e method_14504 getDisplayName + m (Ljava/lang/Object;Ljava/util/Date;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;)V + m (Ljava/lang/Object;Lcom/google/gson/JsonObject;)V + m ()V +c aun net/minecraft/class_3312 net/minecraft/server/players/GameProfileCache + f Lorg/slf4j/Logger; a field_25805 LOGGER + f I b field_29788 GAMEPROFILES_MRU_LIMIT + f I c field_29789 GAMEPROFILES_EXPIRATION_MONTHS + f Z d field_14313 usesAuthentication + f Ljava/util/Map; e field_14312 profilesByName + f Ljava/util/Map; f field_14310 profilesByUUID + f Ljava/util/Map; g field_33860 requests + f Lcom/mojang/authlib/GameProfileRepository; h field_14315 profileRepository + f Lcom/google/gson/Gson; i field_14318 gson + f Ljava/io/File; j field_14314 file + f Ljava/util/concurrent/atomic/AtomicLong; k field_25724 operationCount + f Ljava/util/concurrent/Executor; l field_33861 executor + m ()V a method_39753 clearExecutor + m (I)Ljava/util/stream/Stream; a method_14516 getTopMRUProfiles + m (Laun$a;)V a method_30164 safeAdd + m (Laun$a;Ljava/text/DateFormat;)Lcom/google/gson/JsonElement; a method_30165 writeGameProfile + m (Lcom/google/gson/JsonArray;Ljava/text/DateFormat;Laun$a;)V a method_30166 method_30166 + m (Lcom/google/gson/JsonElement;Ljava/text/DateFormat;)Ljava/util/Optional; a method_30167 readGameProfile + m (Lcom/mojang/authlib/GameProfile;)V a method_14508 add + m (Lcom/mojang/authlib/GameProfileRepository;Ljava/lang/String;)Ljava/util/Optional; a method_14509 lookupGameProfile + m (Ljava/lang/String;)Ljava/util/Optional; a method_14515 get + m (Ljava/lang/String;Ljava/util/Optional;Ljava/lang/Throwable;)V a method_37155 method_37155 + m (Ljava/text/DateFormat;Ljava/util/List;Lcom/google/gson/JsonElement;)V a method_30168 method_30168 + m (Ljava/util/UUID;)Ljava/util/Optional; a method_14512 get + m (Ljava/util/concurrent/Executor;)V a method_37157 setExecutor + m (Z)V a method_14510 setUsesAuthentication + m ()Ljava/util/List; b method_14517 load + m (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; b method_37156 getAsync + m ()V c method_14518 save + m (Ljava/lang/String;)Ljava/util/Optional; c method_53912 createUnknownProfile + m ()Z d method_14514 usesAuthentication + m (Ljava/lang/String;)Ljava/util/Optional; d method_37159 method_37159 + m ()J e method_30169 getNextOperation + m ()Ljava/text/DateFormat; f method_30170 createDateFormat + m (Lcom/mojang/authlib/GameProfileRepository;Ljava/io/File;)V + m ()V +c aun$1 net/minecraft/class_3312$1 net/minecraft/server/players/GameProfileCache$1 + f Ljava/util/concurrent/atomic/AtomicReference; a field_25725 val$result + m (Ljava/util/concurrent/atomic/AtomicReference;)V +c aun$a net/minecraft/class_3312$class_3313 net/minecraft/server/players/GameProfileCache$GameProfileInfo + f Lcom/mojang/authlib/GameProfile; a field_14321 profile + f Ljava/util/Date; b field_14319 expirationDate + f J c field_25726 lastAccess + m ()Lcom/mojang/authlib/GameProfile; a method_14519 getProfile + m (J)V a method_30171 setLastAccess + m ()Ljava/util/Date; b method_14520 getExpirationDate + m ()J c method_30172 getLastAccess + m (Lcom/mojang/authlib/GameProfile;Ljava/util/Date;)V +c auo net/minecraft/class_3317 net/minecraft/server/players/IpBanList + m (Ljava/lang/String;)Z a method_14529 isBanned + m (Ljava/net/SocketAddress;)Z a method_14527 isBanned + m (Ljava/net/SocketAddress;)Laup; b method_14528 get + m (Ljava/net/SocketAddress;)Ljava/lang/String; c method_14526 getIpFromAddress + m (Ljava/io/File;)V +c aup net/minecraft/class_3320 net/minecraft/server/players/IpBanListEntry + m (Lcom/google/gson/JsonObject;)Ljava/lang/String; b method_14532 createIpInfo + m (Ljava/lang/String;)V + m (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;)V + m (Lcom/google/gson/JsonObject;)V +c auq net/minecraft/class_3321 net/minecraft/server/players/OldUsersConverter + f Ljava/io/File; a field_14324 OLD_IPBANLIST + f Ljava/io/File; b field_14328 OLD_USERBANLIST + f Ljava/io/File; c field_14327 OLD_OPLIST + f Ljava/io/File; d field_14325 OLD_WHITELIST + f Lorg/slf4j/Logger; e field_14326 LOGGER + m ()Z a method_14541 areOldUserlistsRemoved + m (I)[Ljava/lang/String; a method_14551 method_14551 + m (Lapn;)Z a method_14550 convertPlayers + m (Ljava/io/File;)V a method_14534 ensureDirectoryExists + m (Ljava/io/File;Ljava/util/Map;)Ljava/util/List; a method_14543 readOldListFormat + m (Ljava/lang/String;)Z a method_14552 method_14552 + m (Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date; a method_14535 parseDate + m (Lnet/minecraft/server/MinecraftServer;)Z a method_14547 convertUserBanlist + m (Lnet/minecraft/server/MinecraftServer;Ljava/lang/String;)Ljava/util/UUID; a method_14546 convertMobOwnerIfNecessary + m (Lnet/minecraft/server/MinecraftServer;Ljava/util/Collection;Lcom/mojang/authlib/ProfileLookupCallback;)V a method_14538 lookupPlayers + m (Ljava/io/File;)V b method_14549 renameOldFile + m (Lnet/minecraft/server/MinecraftServer;)Z b method_14545 convertIpBanlist + m (Lnet/minecraft/server/MinecraftServer;)Z c method_14539 convertOpsList + m (Lnet/minecraft/server/MinecraftServer;)Z d method_14533 convertWhiteList + m (Lnet/minecraft/server/MinecraftServer;)Z e method_14540 serverReadyAfterUserconversion + m (Lnet/minecraft/server/MinecraftServer;)Z f method_14542 areOldPlayersConverted + m (Lnet/minecraft/server/MinecraftServer;)Ljava/io/File; g method_14536 getWorldPlayersDirectory + m ()V + m ()V +c auq$1 net/minecraft/class_3321$1 net/minecraft/server/players/OldUsersConverter$1 + f Lnet/minecraft/server/MinecraftServer; a field_14331 val$server + f Ljava/util/Map; b field_14330 val$userMap + f Lauy; c field_14329 val$bans + m (Lnet/minecraft/server/MinecraftServer;Ljava/util/Map;Lauy;)V +c auq$2 net/minecraft/class_3321$2 net/minecraft/server/players/OldUsersConverter$2 + f Lnet/minecraft/server/MinecraftServer; a field_14332 val$server + f Laus; b field_14333 val$opsList + m (Lnet/minecraft/server/MinecraftServer;Laus;)V +c auq$3 net/minecraft/class_3321$3 net/minecraft/server/players/OldUsersConverter$3 + f Lnet/minecraft/server/MinecraftServer; a field_14335 val$server + f Lava; b field_14334 val$whitelist + m (Lnet/minecraft/server/MinecraftServer;Lava;)V +c auq$4 net/minecraft/class_3321$4 net/minecraft/server/players/OldUsersConverter$4 + f Lnet/minecraft/server/MinecraftServer; a field_14336 val$server + f Ljava/util/List; b field_14337 val$profiles + m (Lnet/minecraft/server/MinecraftServer;Ljava/util/List;)V +c auq$5 net/minecraft/class_3321$5 net/minecraft/server/players/OldUsersConverter$5 + f Lapn; a field_14341 val$server + f Ljava/io/File; b field_14342 val$worldNewPlayerDirectory + f Ljava/io/File; c field_14339 val$unknownPlayerDirectory + f Ljava/io/File; d field_14338 val$worldPlayerDirectory + f [Ljava/lang/String; e field_14340 val$names + m (Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)V a method_14553 movePlayerFile + m (Ljava/lang/String;)Ljava/lang/String; a method_14554 getFileNameForProfile + m (Lapn;Ljava/io/File;Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)V +c auq$a net/minecraft/class_3321$class_3322 net/minecraft/server/players/OldUsersConverter$ConversionError + m (Ljava/lang/String;Ljava/lang/Throwable;)V + m (Ljava/lang/String;)V +c aur net/minecraft/class_3324 net/minecraft/server/players/PlayerList + f I A field_14357 sendAllPlayerInfoIn + f Ljava/io/File; a field_14355 USERBANLIST_FILE + f Ljava/io/File; b field_14364 IPBANLIST_FILE + f Ljava/io/File; c field_14348 OPLIST_FILE + f Ljava/io/File; d field_14343 WHITELIST_FILE + f Lwz; e field_39921 CHAT_FILTERED_FULL + f Lwz; f field_45061 DUPLICATE_LOGIN_DISCONNECT_MESSAGE + f I g field_14347 maxPlayers + f Lorg/slf4j/Logger; h field_14349 LOGGER + f I i field_29790 SEND_PLAYER_INFO_INTERVAL + f Ljava/text/SimpleDateFormat; j field_14356 BAN_DATE_FORMAT + f Lnet/minecraft/server/MinecraftServer; k field_14360 server + f Ljava/util/List; l field_14351 players + f Ljava/util/Map; m field_14354 playersByUUID + f Lauy; n field_14344 bans + f Lauo; o field_14345 ipBans + f Laus; p field_14353 ops + f Lava; q field_14361 whitelist + f Ljava/util/Map; r field_14362 stats + f Ljava/util/Map; s field_14346 advancements + f Leri; t field_14358 playerIo + f Z u field_14352 doWhiteList + f Ljt; v field_24626 registries + f I w field_14359 viewDistance + f I x field_34895 simulationDistance + f Z y field_14350 allowCommandsForAllPlayers + f Z z field_29791 ALLOW_LOGOUTIVATOR + m ()V a method_14599 reloadWhiteList + m (I)V a method_14608 setViewDistance + m (Lalk;Laqv;)V a method_14588 updateEntireScoreboard + m (Laqu;)V a method_14591 addWorldborderListener + m (Laqu;Lbsr;)Lbsr; a method_18241 method_18241 + m (Laqv;)Ljava/util/Optional; a method_14600 load + m (Laqv;I)V a method_14596 sendPlayerPermissionLevel + m (Laqv;Laqu;)V a method_14606 sendLevelInfo + m (Laqv;ZLbsr$c;)Laqv; a method_14556 respawn + m (Lbsr;)V a method_31441 method_31441 + m (Lbtn;Laru;)V a method_60597 sendActiveEffects + m (Lcmx;)Lavv; a method_14583 getPlayerStats + m (Lcmx;DDDDLakq;Lzg;)V a method_14605 broadcast + m (Lcmx;Lwz;)V a method_14564 broadcastSystemToTeam + m (Lcom/mojang/authlib/GameProfile;)V a method_14582 op + m (Lcom/mojang/authlib/GameProfile;Laqh;)Laqv; a method_14613 getPlayerForLogin + m (Ljava/lang/String;)Laqv; a method_14566 getPlayerByName + m (Ljava/net/SocketAddress;Lcom/mojang/authlib/GameProfile;)Lwz; a method_14586 canPlayerLogin + m (Ljava/util/UUID;)Laqv; a method_14602 getPlayer + m (Lub;)Ljava/util/Optional; a method_55634 method_55634 + m (Lvt;Laqv;Larj;)V a method_14570 placeNewPlayer + m (Lwz;Laqv;)Lwz; a method_43511 method_43511 + m (Lwz;Ljava/util/function/Function;Z)V a method_43512 broadcastSystemMessage + m (Lwz;Z)V a method_43514 broadcastSystemMessage + m (Lxp;)Z a method_44793 verifyChatTrusted + m (Lxp;Laqv;Lwv$a;)V a method_43673 broadcastChatMessage + m (Lxp;Let;Lwv$a;)V a method_44166 broadcastChatMessage + m (Lxp;Ljava/util/function/Predicate;Laqv;Lwv$a;)V a method_44791 broadcastChatMessage + m (Lzg;)V a method_14581 broadcastAll + m (Lzg;Lakq;)V a method_14589 broadcastAll + m (Z)V a method_14557 setUsingWhiteList + m (I)V b method_38650 setSimulationDistance + m (Laqv;)V b method_14577 save + m (Lcmx;Lwz;)V b method_14565 broadcastSystemToAllExceptTeam + m (Lcom/mojang/authlib/GameProfile;)V b method_14604 deop + m (Ljava/lang/String;)Ljava/util/List; b method_14559 getPlayersWithAddress + m (Z)V b method_14607 setAllowCommandsForAllPlayers + m ()Lnet/minecraft/server/MinecraftServer; c method_14561 getServer + m (Laqv;)V c method_14611 remove + m (Lcom/mojang/authlib/GameProfile;)Z c method_14587 isWhiteListed + m ()V d method_14601 tick + m (Laqv;)V d method_60598 sendActivePlayerEffects + m (Lcom/mojang/authlib/GameProfile;)Z d method_14609 canBypassPlayerLimit + m ()[Ljava/lang/String; e method_14580 getPlayerNamesArray + m (Laqv;)V e method_14576 sendPlayerPermissionLevel + m (Lcom/mojang/authlib/GameProfile;)Z e method_52449 disconnectAllPlayersWithProfile + m ()Lauy; f method_14563 getBans + m (Laqv;)V f method_14594 sendAllPlayerInfo + m (Lcom/mojang/authlib/GameProfile;)Z f method_14569 isOp + m ()Lauo; g method_14585 getIpBans + m (Laqv;)Lakz; g method_14578 getPlayerAdvancements + m ()V h method_14617 saveAll + m ()Lava; i method_14590 getWhiteList + m ()[Ljava/lang/String; j method_14560 getWhiteListNames + m ()Laus; k method_14603 getOps + m ()[Ljava/lang/String; l method_14584 getOpNames + m ()I m method_14574 getPlayerCount + m ()I n method_14592 getMaxPlayers + m ()Z o method_14614 isUsingWhitelist + m ()I p method_14568 getViewDistance + m ()I q method_38651 getSimulationDistance + m ()Lub; r method_14567 getSingleplayerData + m ()V s method_14597 removeAll + m ()Ljava/util/List; t method_14571 getPlayers + m ()V u method_14572 reloadResources + m ()Z v method_14579 isAllowCommandsForAllPlayers + m (Lnet/minecraft/server/MinecraftServer;Ljt;Leri;I)V + m ()V +c aur$1 net/minecraft/class_3324$1 net/minecraft/server/players/PlayerList$1 + f Laur; a field_14365 field_14365 + m (Laur;)V +c aus net/minecraft/class_3326 net/minecraft/server/players/ServerOpList + m (I)[Ljava/lang/String; a method_32820 method_32820 + m (Lcom/mojang/authlib/GameProfile;)Z a method_14620 canBypassPlayerLimit + m (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; b method_14619 getKeyForUser + m (Ljava/io/File;)V +c aut net/minecraft/class_3327 net/minecraft/server/players/ServerOpListEntry + f I a field_14366 level + f Z b field_14367 bypassesPlayerLimit + m ()I a method_14623 getLevel + m ()Z b method_14622 getBypassesPlayerLimit + m (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; b method_14621 createGameProfile + m (Lcom/mojang/authlib/GameProfile;IZ)V + m (Lcom/google/gson/JsonObject;)V +c auu net/minecraft/class_5838 net/minecraft/server/players/SleepStatus + f I a field_28866 activePlayers + f I b field_28867 sleepingPlayers + m ()V a method_33811 removeAllSleepers + m (I)Z a method_33812 areEnoughSleeping + m (ILjava/util/List;)Z a method_33813 areEnoughDeepSleeping + m (Ljava/util/List;)Z a method_33814 update + m ()I b method_33815 amountSleeping + m (I)I b method_33816 sleepersNeeded + m ()V +c auv net/minecraft/class_3330 net/minecraft/server/players/StoredUserEntry + f Ljava/lang/Object; a field_14368 user + m (Lcom/google/gson/JsonObject;)V a method_24896 serialize + m ()Z f method_14627 hasExpired + m ()Ljava/lang/Object; g method_14626 getUser + m (Ljava/lang/Object;)V +c auw net/minecraft/class_3331 net/minecraft/server/players/StoredUserList + f Lorg/slf4j/Logger; a field_14373 LOGGER + f Lcom/google/gson/Gson; b field_14374 GSON + f Ljava/io/File; c field_14370 file + f Ljava/util/Map; d field_14371 map + m ()[Ljava/lang/String; a method_14636 getUserList + m (Lauv;)V a method_14633 add + m (Lcom/google/gson/JsonObject;)Lauv; a method_14642 createEntry + m (Ljava/lang/Object;)Ljava/lang/String; a method_14634 getKeyForUser + m ()Ljava/io/File; b method_14643 getFile + m (Lauv;)V b method_14638 remove + m (Ljava/lang/Object;)Lauv; b method_14640 get + m ()Z c method_14641 isEmpty + m (Lauv;)Lcom/google/gson/JsonObject; c method_24897 method_24897 + m (Ljava/lang/Object;)V c method_14635 remove + m ()Ljava/util/Collection; d method_14632 getEntries + m (Ljava/lang/Object;)Z d method_14644 contains + m ()V e method_14629 save + m ()V f method_14630 load + m ()V g method_14631 removeExpired + m (Ljava/io/File;)V + m ()V +c auy net/minecraft/class_3335 net/minecraft/server/players/UserBanList + m (I)[Ljava/lang/String; a method_32821 method_32821 + m (Lcom/mojang/authlib/GameProfile;)Z a method_14650 isBanned + m (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; b method_14649 getKeyForUser + m (Ljava/io/File;)V +c auz net/minecraft/class_3336 net/minecraft/server/players/UserBanListEntry + m (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; b method_14651 createGameProfile + m (Lcom/mojang/authlib/GameProfile;)V + m (Lcom/mojang/authlib/GameProfile;Ljava/util/Date;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;)V + m (Lcom/google/gson/JsonObject;)V +c ava net/minecraft/class_3337 net/minecraft/server/players/UserWhiteList + m (I)[Ljava/lang/String; a method_32822 method_32822 + m (Lcom/mojang/authlib/GameProfile;)Z a method_14653 isWhiteListed + m (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; b method_14652 getKeyForUser + m (Ljava/io/File;)V +c avb net/minecraft/class_3340 net/minecraft/server/players/UserWhiteListEntry + m (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; b method_14656 createGameProfile + m (Lcom/mojang/authlib/GameProfile;)V + m (Lcom/google/gson/JsonObject;)V +c avc net/minecraft/class_5989 net/minecraft/server/players/package-info +c avd net/minecraft/class_3345 net/minecraft/server/rcon/NetworkDataOutputStream + f Ljava/io/ByteArrayOutputStream; a field_14395 outputStream + f Ljava/io/DataOutputStream; b field_14396 dataOutputStream + m ()[B a method_14689 toByteArray + m (F)V a method_34886 writeFloat + m (I)V a method_14692 write + m (Ljava/lang/String;)V a method_14690 writeString + m (S)V a method_14691 writeShort + m ([B)V a method_14694 writeBytes + m ()V b method_14693 reset + m (I)V b method_34887 writeInt + m (I)V +c ave net/minecraft/class_3347 net/minecraft/server/rcon/PktUtils + f I a field_29792 MAX_PACKET_SIZE + f [C b field_14398 HEX_CHAR + m (B)Ljava/lang/String; a method_14699 toHexString + m ([BI)I a method_14695 intFromByteArray + m ([BII)Ljava/lang/String; a method_14697 stringFromByteArray + m ([BII)I b method_14696 intFromByteArray + m ([BII)I c method_14698 intFromNetworkByteArray + m ()V + m ()V +c avf net/minecraft/class_3350 net/minecraft/server/rcon/RconConsoleSource + f Ljava/lang/String; b field_29793 RCON + f Lwz; c field_25146 RCON_COMPONENT + f Ljava/lang/StringBuffer; d field_14404 buffer + f Lnet/minecraft/server/MinecraftServer; e field_14405 server + m ()V e method_14702 prepareForCommand + m ()Ljava/lang/String; f method_14701 getCommandResponse + m ()Let; g method_14700 createCommandSourceStack + m (Lnet/minecraft/server/MinecraftServer;)V + m ()V +c avg net/minecraft/class_5990 net/minecraft/server/rcon/package-info +c avh net/minecraft/class_3359 net/minecraft/server/rcon/thread/GenericThread + f Z a field_14431 running + f Ljava/lang/String; b field_14424 name + f Ljava/lang/Thread; c field_14423 thread + f Lorg/slf4j/Logger; d field_14430 LOGGER + f Ljava/util/concurrent/atomic/AtomicInteger; e field_14428 UNIQUE_THREAD_ID + f I f field_29794 MAX_STOP_WAIT + m ()Z a method_14728 start + m ()V b method_18050 stop + m ()Z c method_14731 isRunning + m (Ljava/lang/String;)V + m ()V +c avi net/minecraft/class_3364 net/minecraft/server/rcon/thread/QueryThreadGs4 + f Lorg/slf4j/Logger; d field_23963 LOGGER + f Ljava/lang/String; e field_29795 GAME_TYPE + f Ljava/lang/String; f field_29796 GAME_ID + f J g field_29797 CHALLENGE_CHECK_INTERVAL + f J h field_29798 RESPONSE_CACHE_TIME + f J i field_14443 lastChallengeCheck + f I j field_14442 port + f I k field_14457 serverPort + f I l field_14456 maxPlayers + f Ljava/lang/String; m field_14445 serverName + f Ljava/lang/String; n field_14447 worldName + f Ljava/net/DatagramSocket; o field_14449 socket + f [B p field_14452 buffer + f Ljava/lang/String; q field_14444 hostIp + f Ljava/lang/String; r field_14454 serverIp + f Ljava/util/Map; s field_14453 validChallenges + f Lavd; t field_14446 rulesResponse + f J u field_14450 lastRulesResponse + f Lali; v field_23964 serverInterface + m (JLavi$a;)Z a method_27174 method_27174 + m (Lali;)Lavi; a method_30737 create + m (Ljava/lang/Exception;)V a method_14752 recoverSocketError + m (Ljava/net/DatagramPacket;)Z a method_14750 processPacket + m (Ljava/net/SocketAddress;)[B a method_14748 getIdentBytes + m ([BLjava/net/DatagramPacket;)V a method_14751 sendTo + m (Ljava/net/DatagramPacket;)[B b method_14747 buildRuleResponse + m (Ljava/net/DatagramPacket;)Ljava/lang/Boolean; c method_14753 validChallenge + m ()V d method_14746 pruneChallenges + m (Ljava/net/DatagramPacket;)V d method_14749 sendChallenge + m ()Z e method_14754 initSocket + m (Lali;I)V + m ()V +c avi$a net/minecraft/class_3364$class_3365 net/minecraft/server/rcon/thread/QueryThreadGs4$RequestChallenge + f J a field_14459 time + f I b field_14458 challenge + f [B c field_14460 identBytes + f [B d field_14461 challengeBytes + f Ljava/lang/String; e field_14462 ident + m ()I a method_14756 getChallenge + m (J)Ljava/lang/Boolean; a method_14755 before + m ()[B b method_14757 getChallengeBytes + m ()[B c method_14758 getIdentBytes + m ()Ljava/lang/String; d method_34888 getIdent + m (Ljava/net/DatagramPacket;)V +c avj net/minecraft/class_3389 net/minecraft/server/rcon/thread/RconClient + f Lorg/slf4j/Logger; d field_14491 LOGGER + f I e field_29799 SERVERDATA_AUTH + f I f field_29800 SERVERDATA_EXECCOMMAND + f I g field_29801 SERVERDATA_RESPONSE_VALUE + f I h field_29802 SERVERDATA_AUTH_RESPONSE + f I i field_29803 SERVERDATA_AUTH_FAILURE + f Z j field_14488 authed + f Ljava/net/Socket; k field_14489 client + f [B l field_14490 buf + f Ljava/lang/String; m field_14492 rconPassword + f Lali; n field_23965 serverInterface + m (IILjava/lang/String;)V a method_14790 send + m (ILjava/lang/String;)V a method_14789 sendCmdResponse + m ()V d method_14787 sendAuthFailure + m ()V e method_14788 closeSocket + m (Lali;Ljava/lang/String;Ljava/net/Socket;)V + m ()V +c avk net/minecraft/class_3408 net/minecraft/server/rcon/thread/RconThread + f Lorg/slf4j/Logger; d field_23966 LOGGER + f Ljava/net/ServerSocket; e field_14511 socket + f Ljava/lang/String; f field_14512 rconPassword + f Ljava/util/List; g field_14514 clients + f Lali; h field_23967 serverInterface + m (Lali;)Lavk; a method_30738 create + m (Lavj;)Z a method_27175 method_27175 + m (Ljava/net/ServerSocket;)V a method_27176 closeSocket + m ()V d method_14820 clearClients + m (Lali;Ljava/net/ServerSocket;Ljava/lang/String;)V + m ()V +c avl net/minecraft/class_5991 net/minecraft/server/rcon/thread/package-info +c avm net/minecraft/class_5195 net/minecraft/sounds/Music + f Lcom/mojang/serialization/Codec; a field_24627 CODEC + f Ljm; b field_24057 event + f I c field_24058 minDelay + f I d field_24059 maxDelay + f Z e field_24060 replaceCurrentMusic + m ()Ljm; a method_27279 getEvent + m (Lavm;)Ljava/lang/Boolean; a method_28127 method_28127 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28128 method_28128 + m ()I b method_27280 getMinDelay + m (Lavm;)Ljava/lang/Integer; b method_28129 method_28129 + m ()I c method_27281 getMaxDelay + m (Lavm;)Ljava/lang/Integer; c method_28130 method_28130 + m ()Z d method_27282 replaceCurrentMusic + m (Lavm;)Ljm; d method_28131 method_28131 + m (Ljm;IIZ)V + m ()V +c avn net/minecraft/class_1143 net/minecraft/sounds/Musics + f Lavm; a field_5585 MENU + f Lavm; b field_5581 CREATIVE + f Lavm; c field_5578 CREDITS + f Lavm; d field_5580 END_BOSS + f Lavm; e field_5583 END + f Lavm; f field_5576 UNDER_WATER + f Lavm; g field_5586 GAME + f I h field_29804 ONE_SECOND + f I i field_29805 THIRTY_SECONDS + f I j field_29806 TEN_MINUTES + f I k field_29807 TWENTY_MINUTES + f I l field_29808 FIVE_MINUTES + m (Ljm;)Lavm; a method_27283 createGameMusic + m ()V + m ()V +c avo net/minecraft/class_3414 net/minecraft/sounds/SoundEvent + f Lcom/mojang/serialization/Codec; a field_41698 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_41699 CODEC + f Lyx; c field_48278 DIRECT_STREAM_CODEC + f Lyx; d field_48279 STREAM_CODEC + f F e field_41661 DEFAULT_RANGE + f Lakr; f field_14533 location + f F g field_38690 range + f Z h field_38691 newSystem + m ()Lakr; a method_14833 getLocation + m (F)F a method_43044 getRange + m (Lakr;)Lavo; a method_47908 createVariableRangeEvent + m (Lakr;F)Lavo; a method_47909 createFixedRangeEvent + m (Lakr;Ljava/lang/Float;)Lavo; a method_47955 method_47955 + m (Lakr;Ljava/util/Optional;)Lavo; a method_47956 create + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_47957 method_47957 + m ()Ljava/util/Optional; b method_47959 fixedRange + m (Lakr;)Lavo; b method_47960 method_47960 + m (Lakr;FZ)V + m ()V +c avp net/minecraft/class_3417 net/minecraft/sounds/SoundEvents + f Lavo; AA field_48796 VAULT_ACTIVATE + f Lavo; AB field_48797 VAULT_AMBIENT + f Lavo; AC field_48798 VAULT_BREAK + f Lavo; AD field_48799 VAULT_CLOSE_SHUTTER + f Lavo; AE field_48800 VAULT_DEACTIVATE + f Lavo; AF field_48801 VAULT_EJECT_ITEM + f Lavo; AG field_51988 VAULT_REJECT_REWARDED_PLAYER + f Lavo; AH field_48802 VAULT_FALL + f Lavo; AI field_48790 VAULT_HIT + f Lavo; AJ field_48791 VAULT_INSERT_ITEM + f Lavo; AK field_48792 VAULT_INSERT_ITEM_FAIL + f Lavo; AL field_48793 VAULT_OPEN_SHUTTER + f Lavo; A field_15028 AMBIENT_UNDERWATER_LOOP_ADDITIONS + f Lavo; AM field_48794 VAULT_PLACE + f Lavo; AN field_48795 VAULT_STEP + f Lavo; AO field_14812 VEX_AMBIENT + f Lavo; AP field_14898 VEX_CHARGE + f Lavo; AQ field_14964 VEX_DEATH + f Lavo; AR field_15072 VEX_HURT + f Lavo; AS field_15175 VILLAGER_AMBIENT + f Lavo; AT field_19152 VILLAGER_CELEBRATE + f Lavo; AU field_15225 VILLAGER_DEATH + f Lavo; AV field_15139 VILLAGER_HURT + f Lavo; AW field_15008 VILLAGER_NO + f Lavo; AX field_14933 VILLAGER_TRADE + f Lavo; AY field_14815 VILLAGER_YES + f Lavo; AZ field_20669 VILLAGER_WORK_ARMORER + f Lavo; Aa field_46951 POLISHED_TUFF_BREAK + f Lavo; Ab field_46952 POLISHED_TUFF_FALL + f Lavo; Ac field_46953 POLISHED_TUFF_HIT + f Lavo; Ad field_46954 POLISHED_TUFF_PLACE + f Lavo; Ae field_46955 POLISHED_TUFF_STEP + f Lavo; Af field_14722 TURTLE_AMBIENT_LAND + f Lavo; Ag field_14856 TURTLE_DEATH + f Lavo; Ah field_14618 TURTLE_DEATH_BABY + f Lavo; Ai field_14687 TURTLE_EGG_BREAK + f Lavo; Aj field_15109 TURTLE_EGG_CRACK + f Lavo; Ak field_14902 TURTLE_EGG_HATCH + f Lavo; Al field_15183 TURTLE_HURT + f Lavo; Am field_15070 TURTLE_HURT_BABY + f Lavo; An field_14634 TURTLE_LAY_EGG + f Lavo; Ao field_14549 TURTLE_SHAMBLE + f Lavo; Ap field_14864 TURTLE_SHAMBLE_BABY + f Lavo; Aq field_14764 TURTLE_SWIM + f Ljm$c; Ar field_15015 UI_BUTTON_CLICK + f Lavo; As field_14920 UI_LOOM_SELECT_PATTERN + f Lavo; At field_15096 UI_LOOM_TAKE_RESULT + f Lavo; Au field_17484 UI_CARTOGRAPHY_TABLE_TAKE_RESULT + f Lavo; Av field_17710 UI_STONECUTTER_TAKE_RESULT + f Lavo; Aw field_17711 UI_STONECUTTER_SELECT_RECIPE + f Lavo; Ax field_15195 UI_TOAST_CHALLENGE_COMPLETE + f Lavo; Ay field_14561 UI_TOAST_IN + f Lavo; Az field_14641 UI_TOAST_OUT + f Lavo; BA field_18313 WANDERING_TRADER_DRINK_POTION + f Lavo; BB field_17749 WANDERING_TRADER_HURT + f Lavo; BC field_17750 WANDERING_TRADER_NO + f Lavo; BD field_18314 WANDERING_TRADER_REAPPEARED + f Lavo; BE field_17751 WANDERING_TRADER_TRADE + f Lavo; BF field_17752 WANDERING_TRADER_YES + f Lavo; BG field_38061 WARDEN_AGITATED + f Lavo; BH field_38062 WARDEN_AMBIENT + f Lavo; BI field_38063 WARDEN_ANGRY + f Lavo; BJ field_38064 WARDEN_ATTACK_IMPACT + f Lavo; BK field_38065 WARDEN_DEATH + f Lavo; BL field_38066 WARDEN_DIG + f Lavo; B field_15068 AMBIENT_UNDERWATER_LOOP_ADDITIONS_RARE + f Lavo; BM field_38067 WARDEN_EMERGE + f Lavo; BN field_38068 WARDEN_HEARTBEAT + f Lavo; BO field_38069 WARDEN_HURT + f Lavo; BP field_38070 WARDEN_LISTENING + f Lavo; BQ field_38071 WARDEN_LISTENING_ANGRY + f Lavo; BR field_38072 WARDEN_NEARBY_CLOSE + f Lavo; BS field_38073 WARDEN_NEARBY_CLOSER + f Lavo; BT field_38074 WARDEN_NEARBY_CLOSEST + f Lavo; BU field_38075 WARDEN_ROAR + f Lavo; BV field_38076 WARDEN_SNIFF + f Lavo; BW field_38830 WARDEN_SONIC_BOOM + f Lavo; BX field_38831 WARDEN_SONIC_CHARGE + f Lavo; BY field_38077 WARDEN_STEP + f Lavo; BZ field_38078 WARDEN_TENDRIL_CLICKS + f Lavo; Ba field_20670 VILLAGER_WORK_BUTCHER + f Lavo; Bb field_20671 VILLAGER_WORK_CARTOGRAPHER + f Lavo; Bc field_20672 VILLAGER_WORK_CLERIC + f Lavo; Bd field_20673 VILLAGER_WORK_FARMER + f Lavo; Be field_20674 VILLAGER_WORK_FISHERMAN + f Lavo; Bf field_20675 VILLAGER_WORK_FLETCHER + f Lavo; Bg field_20676 VILLAGER_WORK_LEATHERWORKER + f Lavo; Bh field_20677 VILLAGER_WORK_LIBRARIAN + f Lavo; Bi field_20678 VILLAGER_WORK_MASON + f Lavo; Bj field_20679 VILLAGER_WORK_SHEPHERD + f Lavo; Bk field_20680 VILLAGER_WORK_TOOLSMITH + f Lavo; Bl field_20681 VILLAGER_WORK_WEAPONSMITH + f Lavo; Bm field_14735 VINDICATOR_AMBIENT + f Lavo; Bn field_19151 VINDICATOR_CELEBRATE + f Lavo; Bo field_14642 VINDICATOR_DEATH + f Lavo; Bp field_14558 VINDICATOR_HURT + f Lavo; Bq field_28617 VINE_BREAK + f Lavo; Br field_28618 VINE_FALL + f Lavo; Bs field_28619 VINE_HIT + f Lavo; Bt field_28620 VINE_PLACE + f Lavo; Bu field_23061 VINE_STEP + f Lavo; Bv field_15173 LILY_PAD_PLACE + f Lavo; Bw field_17747 WANDERING_TRADER_AMBIENT + f Lavo; Bx field_17748 WANDERING_TRADER_DEATH + f Lavo; By field_18315 WANDERING_TRADER_DISAPPEARED + f Lavo; Bz field_18316 WANDERING_TRADER_DRINK_MILK + f Lavo; CA field_15136 WITHER_DEATH + f Lavo; CB field_14688 WITHER_HURT + f Lavo; CC field_14588 WITHER_SHOOT + f Lavo; CD field_15214 WITHER_SKELETON_AMBIENT + f Lavo; CE field_15122 WITHER_SKELETON_DEATH + f Lavo; CF field_15027 WITHER_SKELETON_HURT + f Lavo; CG field_14955 WITHER_SKELETON_STEP + f Lavo; CH field_14792 WITHER_SPAWN + f Lavo; CI field_49174 WOLF_ARMOR_BREAK + f Lavo; CJ field_49175 WOLF_ARMOR_CRACK + f Lavo; CK field_49176 WOLF_ARMOR_DAMAGE + f Lavo; CL field_49177 WOLF_ARMOR_REPAIR + f Lavo; C field_15178 AMBIENT_UNDERWATER_LOOP_ADDITIONS_ULTRA_RARE + f Lavo; CM field_14724 WOLF_AMBIENT + f Lavo; CN field_14659 WOLF_DEATH + f Lavo; CO field_14575 WOLF_GROWL + f Lavo; CP field_15117 WOLF_HOWL + f Lavo; CQ field_15218 WOLF_HURT + f Lavo; CR field_14922 WOLF_PANT + f Lavo; CS field_15042 WOLF_SHAKE + f Lavo; CT field_14772 WOLF_STEP + f Lavo; CU field_14807 WOLF_WHINE + f Lavo; CV field_14541 WOODEN_DOOR_CLOSE + f Lavo; CW field_14664 WOODEN_DOOR_OPEN + f Lavo; CX field_15080 WOODEN_TRAPDOOR_CLOSE + f Lavo; CY field_14932 WOODEN_TRAPDOOR_OPEN + f Lavo; CZ field_15105 WOODEN_BUTTON_CLICK_OFF + f Lavo; Ca field_46651 WAXED_HANGING_SIGN_INTERACT_FAIL + f Lavo; Cb field_43167 WAXED_SIGN_INTERACT_FAIL + f Lavo; Cc field_15237 WATER_AMBIENT + f Lavo; Cd field_14946 WEATHER_RAIN + f Lavo; Ce field_15020 WEATHER_RAIN_ABOVE + f Lavo; Cf field_15120 WET_GRASS_BREAK + f Lavo; Cg field_15207 WET_GRASS_FALL + f Lavo; Ch field_14953 WET_GRASS_HIT + f Lavo; Ci field_15025 WET_GRASS_PLACE + f Lavo; Cj field_14774 WET_GRASS_STEP + f Lavo; Ck field_45967 WET_SPONGE_BREAK + f Lavo; Cl field_49173 WET_SPONGE_DRIES + f Lavo; Cm field_45968 WET_SPONGE_FALL + f Lavo; Cn field_45959 WET_SPONGE_HIT + f Lavo; Co field_45960 WET_SPONGE_PLACE + f Lavo; Cp field_45961 WET_SPONGE_STEP + f Ljm$c; Cq field_49044 WIND_CHARGE_BURST + f Lavo; Cr field_49045 WIND_CHARGE_THROW + f Lavo; Cs field_14736 WITCH_AMBIENT + f Lavo; Ct field_19153 WITCH_CELEBRATE + f Lavo; Cu field_14820 WITCH_DEATH + f Lavo; Cv field_14565 WITCH_DRINK + f Lavo; Cw field_14645 WITCH_HURT + f Lavo; Cx field_15067 WITCH_THROW + f Lavo; Cy field_15163 WITHER_AMBIENT + f Lavo; Cz field_15236 WITHER_BREAK_BLOCK + f Lavo; DA field_15154 ZOMBIE_HORSE_AMBIENT + f Lavo; DB field_14543 ZOMBIE_HORSE_DEATH + f Lavo; DC field_15179 ZOMBIE_HORSE_HURT + f Lavo; DD field_15088 ZOMBIE_HURT + f Lavo; DE field_14986 ZOMBIE_INFECT + f Lavo; DF field_14926 ZOMBIFIED_PIGLIN_AMBIENT + f Lavo; DG field_14852 ZOMBIFIED_PIGLIN_ANGRY + f Lavo; DH field_14743 ZOMBIFIED_PIGLIN_DEATH + f Lavo; DI field_14710 ZOMBIFIED_PIGLIN_HURT + f Lavo; DJ field_14621 ZOMBIE_STEP + f Lavo; DK field_15056 ZOMBIE_VILLAGER_AMBIENT + f Lavo; DL field_15168 ZOMBIE_VILLAGER_CONVERTED + f Lavo; D field_26979 AMETHYST_BLOCK_BREAK + f Lavo; DM field_14905 ZOMBIE_VILLAGER_CURE + f Lavo; DN field_14996 ZOMBIE_VILLAGER_DEATH + f Lavo; DO field_14728 ZOMBIE_VILLAGER_HURT + f Lavo; DP field_14841 ZOMBIE_VILLAGER_STEP + f Lavo; DQ field_50090 APPLY_EFFECT_BAD_OMEN + f Lavo; DR field_50091 APPLY_EFFECT_TRIAL_OMEN + f Lavo; DS field_50092 APPLY_EFFECT_RAID_OMEN + f Lavo; Da field_14699 WOODEN_BUTTON_CLICK_ON + f Lavo; Db field_15002 WOODEN_PRESSURE_PLATE_CLICK_OFF + f Lavo; Dc field_14961 WOODEN_PRESSURE_PLATE_CLICK_ON + f Lavo; Dd field_15215 WOOD_BREAK + f Lavo; De field_14607 WOOD_FALL + f Lavo; Df field_14808 WOOD_HIT + f Lavo; Dg field_14718 WOOD_PLACE + f Lavo; Dh field_15053 WOOD_STEP + f Lavo; Di field_14983 WOOL_BREAK + f Lavo; Dj field_15048 WOOL_FALL + f Lavo; Dk field_14628 WOOL_HIT + f Lavo; Dl field_15226 WOOL_PLACE + f Lavo; Dm field_15181 WOOL_STEP + f Lavo; Dn field_23672 ZOGLIN_AMBIENT + f Lavo; Do field_23673 ZOGLIN_ANGRY + f Lavo; Dp field_23674 ZOGLIN_ATTACK + f Lavo; Dq field_23675 ZOGLIN_DEATH + f Lavo; Dr field_23676 ZOGLIN_HURT + f Lavo; Ds field_23677 ZOGLIN_STEP + f Lavo; Dt field_15174 ZOMBIE_AMBIENT + f Lavo; Du field_14562 ZOMBIE_ATTACK_WOODEN_DOOR + f Lavo; Dv field_14670 ZOMBIE_ATTACK_IRON_DOOR + f Lavo; Dw field_14742 ZOMBIE_BREAK_WOODEN_DOOR + f Lavo; Dx field_14850 ZOMBIE_CONVERTED_TO_DROWNED + f Lavo; Dy field_14930 ZOMBIE_DEATH + f Lavo; Dz field_15023 ZOMBIE_DESTROY_EGG + f Lavo; E field_26980 AMETHYST_BLOCK_CHIME + f Lavo; F field_26981 AMETHYST_BLOCK_FALL + f Lavo; G field_26982 AMETHYST_BLOCK_HIT + f Lavo; H field_26940 AMETHYST_BLOCK_PLACE + f Lavo; I field_43154 AMETHYST_BLOCK_RESONATE + f Lavo; J field_26941 AMETHYST_BLOCK_STEP + f Lavo; K field_26942 AMETHYST_CLUSTER_BREAK + f Lavo; L field_26943 AMETHYST_CLUSTER_FALL + f Lavo; M field_26944 AMETHYST_CLUSTER_HIT + f Lavo; N field_26945 AMETHYST_CLUSTER_PLACE + f Lavo; O field_26946 AMETHYST_CLUSTER_STEP + f Lavo; P field_21891 ANCIENT_DEBRIS_BREAK + f Lavo; Q field_21906 ANCIENT_DEBRIS_STEP + f Lavo; R field_21929 ANCIENT_DEBRIS_PLACE + f Lavo; S field_21930 ANCIENT_DEBRIS_HIT + f Lavo; T field_21936 ANCIENT_DEBRIS_FALL + f Lavo; U field_14542 ANVIL_BREAK + f Lavo; V field_14665 ANVIL_DESTROY + f Lavo; W field_14727 ANVIL_FALL + f Lavo; X field_14927 ANVIL_HIT + f Lavo; Y field_14833 ANVIL_LAND + f Lavo; Z field_14785 ANVIL_PLACE + f Lavo; aA field_15118 ARMOR_STAND_BREAK + f Lavo; aB field_15186 ARMOR_STAND_FALL + f Lavo; aC field_14897 ARMOR_STAND_HIT + f Lavo; aD field_14969 ARMOR_STAND_PLACE + f Lavo; aE field_15151 ARROW_HIT + f Lavo; aF field_15224 ARROW_HIT_PLAYER + f Lavo; aG field_14600 ARROW_SHOOT + f Lavo; aH field_14675 AXE_STRIP + f Lavo; aI field_29541 AXE_SCRAPE + f Lavo; aJ field_29542 AXE_WAX_OFF + f Lavo; aK field_28287 AXOLOTL_ATTACK + f Lavo; aL field_28288 AXOLOTL_DEATH + f Lavo; a field_38365 ALLAY_AMBIENT_WITH_ITEM + f Lavo; aM field_28289 AXOLOTL_HURT + f Lavo; aN field_28290 AXOLOTL_IDLE_AIR + f Lavo; aO field_28291 AXOLOTL_IDLE_WATER + f Lavo; aP field_28292 AXOLOTL_SPLASH + f Lavo; aQ field_28293 AXOLOTL_SWIM + f Lavo; aR field_28560 AZALEA_BREAK + f Lavo; aS field_28561 AZALEA_FALL + f Lavo; aT field_28562 AZALEA_HIT + f Lavo; aU field_28563 AZALEA_PLACE + f Lavo; aV field_28564 AZALEA_STEP + f Lavo; aW field_28565 AZALEA_LEAVES_BREAK + f Lavo; aX field_28566 AZALEA_LEAVES_FALL + f Lavo; aY field_28567 AZALEA_LEAVES_HIT + f Lavo; aZ field_28558 AZALEA_LEAVES_PLACE + f Lavo; aa field_14695 ANVIL_STEP + f Lavo; ab field_14559 ANVIL_USE + f Lavo; ac field_47711 ARMADILLO_EAT + f Lavo; ad field_47712 ARMADILLO_HURT + f Lavo; ae field_48712 ARMADILLO_HURT_REDUCED + f Lavo; af field_47713 ARMADILLO_AMBIENT + f Lavo; ag field_47714 ARMADILLO_STEP + f Lavo; ah field_47715 ARMADILLO_DEATH + f Lavo; ai field_47716 ARMADILLO_ROLL + f Lavo; aj field_47717 ARMADILLO_LAND + f Lavo; ak field_47718 ARMADILLO_SCUTE_DROP + f Lavo; al field_49046 ARMADILLO_UNROLL_FINISH + f Lavo; am field_49047 ARMADILLO_PEEK + f Lavo; an field_49048 ARMADILLO_UNROLL_START + f Lavo; ao field_47720 ARMADILLO_BRUSH + f Ljm; ap field_15191 ARMOR_EQUIP_CHAIN + f Ljm; aq field_15103 ARMOR_EQUIP_DIAMOND + f Ljm; ar field_14966 ARMOR_EQUIP_ELYTRA + f Ljm; as field_14883 ARMOR_EQUIP_GENERIC + f Ljm; at field_14761 ARMOR_EQUIP_GOLD + f Ljm; au field_14862 ARMOR_EQUIP_IRON + f Ljm; av field_14581 ARMOR_EQUIP_LEATHER + f Ljm; aw field_21866 ARMOR_EQUIP_NETHERITE + f Ljm; ax field_14684 ARMOR_EQUIP_TURTLE + f Ljm; ay field_47721 ARMOR_EQUIP_WOLF + f Lavo; az field_47722 ARMOR_UNEQUIP_WOLF + f Lavo; bA field_21867 BASALT_BREAK + f Lavo; bB field_21868 BASALT_STEP + f Lavo; bC field_21869 BASALT_PLACE + f Lavo; bD field_21870 BASALT_HIT + f Lavo; bE field_21871 BASALT_FALL + f Lavo; bF field_15009 BAT_AMBIENT + f Lavo; bG field_14911 BAT_DEATH + f Lavo; bH field_14746 BAT_HURT + f Lavo; bI field_14845 BAT_LOOP + f Lavo; bJ field_14610 BAT_TAKEOFF + f Lavo; bK field_14703 BEACON_ACTIVATE + f Lavo; bL field_15045 BEACON_AMBIENT + f Lavo; b field_38366 ALLAY_AMBIENT_WITHOUT_ITEM + f Lavo; bM field_19344 BEACON_DEACTIVATE + f Lavo; bN field_14891 BEACON_POWER_SELECT + f Lavo; bO field_20602 BEE_DEATH + f Lavo; bP field_20603 BEE_HURT + f Lavo; bQ field_20604 BEE_LOOP_AGGRESSIVE + f Lavo; bR field_20605 BEE_LOOP + f Lavo; bS field_20606 BEE_STING + f Lavo; bT field_20607 BEE_POLLINATE + f Lavo; bU field_20608 BEEHIVE_DRIP + f Lavo; bV field_20609 BEEHIVE_ENTER + f Lavo; bW field_20610 BEEHIVE_EXIT + f Lavo; bX field_20611 BEEHIVE_SHEAR + f Lavo; bY field_20612 BEEHIVE_WORK + f Lavo; bZ field_17265 BELL_BLOCK + f Lavo; ba field_28559 AZALEA_LEAVES_STEP + f Lavo; bb field_14740 BAMBOO_BREAK + f Lavo; bc field_14906 BAMBOO_FALL + f Lavo; bd field_14811 BAMBOO_HIT + f Lavo; be field_14719 BAMBOO_PLACE + f Lavo; bf field_14635 BAMBOO_STEP + f Lavo; bg field_14629 BAMBOO_SAPLING_BREAK + f Lavo; bh field_15227 BAMBOO_SAPLING_HIT + f Lavo; bi field_15125 BAMBOO_SAPLING_PLACE + f Lavo; bj field_40057 BAMBOO_WOOD_BREAK + f Lavo; bk field_40058 BAMBOO_WOOD_FALL + f Lavo; bl field_40059 BAMBOO_WOOD_HIT + f Lavo; bm field_40060 BAMBOO_WOOD_PLACE + f Lavo; bn field_40061 BAMBOO_WOOD_STEP + f Lavo; bo field_40062 BAMBOO_WOOD_DOOR_CLOSE + f Lavo; bp field_40063 BAMBOO_WOOD_DOOR_OPEN + f Lavo; bq field_40064 BAMBOO_WOOD_TRAPDOOR_CLOSE + f Lavo; br field_40065 BAMBOO_WOOD_TRAPDOOR_OPEN + f Lavo; bs field_40066 BAMBOO_WOOD_BUTTON_CLICK_OFF + f Lavo; bt field_40067 BAMBOO_WOOD_BUTTON_CLICK_ON + f Lavo; bu field_40068 BAMBOO_WOOD_PRESSURE_PLATE_CLICK_OFF + f Lavo; bv field_40069 BAMBOO_WOOD_PRESSURE_PLATE_CLICK_ON + f Lavo; bw field_40070 BAMBOO_WOOD_FENCE_GATE_CLOSE + f Lavo; bx field_40071 BAMBOO_WOOD_FENCE_GATE_OPEN + f Lavo; by field_17603 BARREL_CLOSE + f Lavo; bz field_17604 BARREL_OPEN + f Lavo; cA field_17605 BLASTFURNACE_FIRE_CRACKLE + f Lavo; cB field_14826 BOTTLE_EMPTY + f Lavo; cC field_14779 BOTTLE_FILL + f Lavo; cD field_15029 BOTTLE_FILL_DRAGONBREATH + f Lavo; cE field_47724 BREEZE_CHARGE + f Lavo; cF field_47725 BREEZE_DEFLECT + f Lavo; cG field_47192 BREEZE_INHALE + f Lavo; cH field_47193 BREEZE_IDLE_GROUND + f Lavo; cI field_47194 BREEZE_IDLE_AIR + f Lavo; cJ field_47195 BREEZE_SHOOT + f Lavo; cK field_47196 BREEZE_JUMP + f Lavo; cL field_47197 BREEZE_LAND + f Lavo; c field_38367 ALLAY_DEATH + f Lavo; cM field_47198 BREEZE_SLIDE + f Lavo; cN field_47199 BREEZE_DEATH + f Lavo; cO field_47200 BREEZE_HURT + f Lavo; cP field_47723 BREEZE_WHIRL + f Ljm$c; cQ field_49049 BREEZE_WIND_CHARGE_BURST + f Lavo; cR field_14978 BREWING_STAND_BREW + f Lavo; cS field_43155 BRUSH_GENERIC + f Lavo; cT field_43156 BRUSH_SAND + f Lavo; cU field_43157 BRUSH_GRAVEL + f Lavo; cV field_43158 BRUSH_SAND_COMPLETED + f Lavo; cW field_43159 BRUSH_GRAVEL_COMPLETED + f Lavo; cX field_15065 BUBBLE_COLUMN_BUBBLE_POP + f Lavo; cY field_15161 BUBBLE_COLUMN_UPWARDS_AMBIENT + f Lavo; cZ field_19195 BUBBLE_COLUMN_UPWARDS_INSIDE + f Lavo; ca field_19167 BELL_RESONATE + f Lavo; cb field_28568 BIG_DRIPLEAF_BREAK + f Lavo; cc field_28569 BIG_DRIPLEAF_FALL + f Lavo; cd field_28570 BIG_DRIPLEAF_HIT + f Lavo; ce field_28571 BIG_DRIPLEAF_PLACE + f Lavo; cf field_28572 BIG_DRIPLEAF_STEP + f Lavo; cg field_14991 BLAZE_AMBIENT + f Lavo; ch field_14734 BLAZE_BURN + f Lavo; ci field_14580 BLAZE_DEATH + f Lavo; cj field_14842 BLAZE_HURT + f Lavo; ck field_14970 BLAZE_SHOOT + f Lavo; cl field_14886 BOAT_PADDLE_LAND + f Lavo; cm field_15171 BOAT_PADDLE_WATER + f Lavo; cn field_49142 BOGGED_AMBIENT + f Lavo; co field_49143 BOGGED_DEATH + f Lavo; cp field_49144 BOGGED_HURT + f Lavo; cq field_49178 BOGGED_SHEAR + f Lavo; cr field_49145 BOGGED_STEP + f Lavo; cs field_21872 BONE_BLOCK_BREAK + f Lavo; ct field_21873 BONE_BLOCK_FALL + f Lavo; cu field_21874 BONE_BLOCK_HIT + f Lavo; cv field_21875 BONE_BLOCK_PLACE + f Lavo; cw field_21876 BONE_BLOCK_STEP + f Lavo; cx field_33433 BONE_MEAL_USE + f Lavo; cy field_17481 BOOK_PAGE_TURN + f Lavo; cz field_17482 BOOK_PUT + f Lavo; dA field_40075 CAMEL_DEATH + f Lavo; dB field_40076 CAMEL_EAT + f Lavo; dC field_40077 CAMEL_HURT + f Lavo; dD field_40078 CAMEL_SADDLE + f Lavo; dE field_40079 CAMEL_SIT + f Lavo; dF field_40080 CAMEL_STAND + f Lavo; dG field_40081 CAMEL_STEP + f Lavo; dH field_40082 CAMEL_STEP_SAND + f Lavo; dI field_17483 CAMPFIRE_CRACKLE + f Lavo; dJ field_26953 CANDLE_AMBIENT + f Lavo; dK field_26954 CANDLE_BREAK + f Lavo; dL field_26955 CANDLE_EXTINGUISH + f Lavo; d field_38369 ALLAY_HURT + f Lavo; dM field_26956 CANDLE_FALL + f Lavo; dN field_26957 CANDLE_HIT + f Lavo; dO field_26958 CANDLE_PLACE + f Lavo; dP field_26959 CANDLE_STEP + f Lavo; dQ field_15051 CAT_AMBIENT + f Lavo; dR field_16440 CAT_STRAY_AMBIENT + f Lavo; dS field_14971 CAT_DEATH + f Lavo; dT field_16439 CAT_EAT + f Lavo; dU field_14938 CAT_HISS + f Lavo; dV field_16438 CAT_BEG_FOR_FOOD + f Lavo; dW field_14867 CAT_HURT + f Lavo; dX field_14741 CAT_PURR + f Lavo; dY field_14589 CAT_PURREOW + f Lavo; dZ field_28576 CAVE_VINES_BREAK + f Lavo; da field_14650 BUBBLE_COLUMN_WHIRLPOOL_AMBIENT + f Lavo; db field_19196 BUBBLE_COLUMN_WHIRLPOOL_INSIDE + f Lavo; dc field_14834 BUCKET_EMPTY + f Lavo; dd field_28294 BUCKET_EMPTY_AXOLOTL + f Lavo; de field_14912 BUCKET_EMPTY_FISH + f Lavo; df field_15010 BUCKET_EMPTY_LAVA + f Lavo; dg field_27847 BUCKET_EMPTY_POWDER_SNOW + f Lavo; dh field_37300 BUCKET_EMPTY_TADPOLE + f Lavo; di field_15126 BUCKET_FILL + f Lavo; dj field_28295 BUCKET_FILL_AXOLOTL + f Lavo; dk field_14568 BUCKET_FILL_FISH + f Lavo; dl field_15202 BUCKET_FILL_LAVA + f Lavo; dm field_27846 BUCKET_FILL_POWDER_SNOW + f Lavo; dn field_37301 BUCKET_FILL_TADPOLE + f Lavo; do field_34375 BUNDLE_DROP_CONTENTS + f Lavo; dp field_34376 BUNDLE_INSERT + f Lavo; dq field_34377 BUNDLE_REMOVE_ONE + f Lavo; dr field_26947 CAKE_ADD_CANDLE + f Lavo; ds field_26948 CALCITE_BREAK + f Lavo; dt field_26949 CALCITE_STEP + f Lavo; du field_26950 CALCITE_PLACE + f Lavo; dv field_26951 CALCITE_HIT + f Lavo; dw field_26952 CALCITE_FALL + f Lavo; dx field_40072 CAMEL_AMBIENT + f Lavo; dy field_40073 CAMEL_DASH + f Lavo; dz field_40074 CAMEL_DASH_READY + f Lavo; eA field_42562 CHERRY_WOOD_HANGING_SIGN_BREAK + f Lavo; eB field_42563 CHERRY_WOOD_HANGING_SIGN_FALL + f Lavo; eC field_42564 CHERRY_WOOD_HANGING_SIGN_HIT + f Lavo; eD field_42565 CHERRY_WOOD_HANGING_SIGN_PLACE + f Lavo; eE field_42566 CHERRY_WOOD_DOOR_CLOSE + f Lavo; eF field_42567 CHERRY_WOOD_DOOR_OPEN + f Lavo; eG field_42568 CHERRY_WOOD_TRAPDOOR_CLOSE + f Lavo; eH field_42569 CHERRY_WOOD_TRAPDOOR_OPEN + f Lavo; eI field_42570 CHERRY_WOOD_BUTTON_CLICK_OFF + f Lavo; eJ field_42571 CHERRY_WOOD_BUTTON_CLICK_ON + f Lavo; eK field_42572 CHERRY_WOOD_PRESSURE_PLATE_CLICK_OFF + f Lavo; eL field_42574 CHERRY_WOOD_PRESSURE_PLATE_CLICK_ON + f Lavo; e field_38370 ALLAY_ITEM_GIVEN + f Lavo; eM field_42575 CHERRY_WOOD_FENCE_GATE_CLOSE + f Lavo; eN field_42576 CHERRY_WOOD_FENCE_GATE_OPEN + f Lavo; eO field_14823 CHEST_CLOSE + f Lavo; eP field_14731 CHEST_LOCKED + f Lavo; eQ field_14982 CHEST_OPEN + f Lavo; eR field_14871 CHICKEN_AMBIENT + f Lavo; eS field_15140 CHICKEN_DEATH + f Lavo; eT field_15219 CHICKEN_EGG + f Lavo; eU field_14601 CHICKEN_HURT + f Lavo; eV field_14685 CHICKEN_STEP + f Lavo; eW field_40967 CHISELED_BOOKSHELF_BREAK + f Lavo; eX field_40968 CHISELED_BOOKSHELF_FALL + f Lavo; eY field_40969 CHISELED_BOOKSHELF_HIT + f Lavo; eZ field_40970 CHISELED_BOOKSHELF_INSERT + f Lavo; ea field_28577 CAVE_VINES_FALL + f Lavo; eb field_28578 CAVE_VINES_HIT + f Lavo; ec field_28573 CAVE_VINES_PLACE + f Lavo; ed field_28574 CAVE_VINES_STEP + f Lavo; ee field_28575 CAVE_VINES_PICK_BERRIES + f Lavo; ef field_24065 CHAIN_BREAK + f Lavo; eg field_24061 CHAIN_FALL + f Lavo; eh field_24062 CHAIN_HIT + f Lavo; ei field_24063 CHAIN_PLACE + f Lavo; ej field_24064 CHAIN_STEP + f Lavo; ek field_42573 CHERRY_WOOD_BREAK + f Lavo; el field_42547 CHERRY_WOOD_FALL + f Lavo; em field_42548 CHERRY_WOOD_HIT + f Lavo; en field_42549 CHERRY_WOOD_PLACE + f Lavo; eo field_42550 CHERRY_WOOD_STEP + f Lavo; ep field_42551 CHERRY_SAPLING_BREAK + f Lavo; eq field_42552 CHERRY_SAPLING_FALL + f Lavo; er field_42553 CHERRY_SAPLING_HIT + f Lavo; es field_42554 CHERRY_SAPLING_PLACE + f Lavo; et field_42555 CHERRY_SAPLING_STEP + f Lavo; eu field_42556 CHERRY_LEAVES_BREAK + f Lavo; ev field_42557 CHERRY_LEAVES_FALL + f Lavo; ew field_42558 CHERRY_LEAVES_HIT + f Lavo; ex field_42559 CHERRY_LEAVES_PLACE + f Lavo; ey field_42560 CHERRY_LEAVES_STEP + f Lavo; ez field_42561 CHERRY_WOOD_HANGING_SIGN_STEP + f Lavo; fA field_14979 CONDUIT_DEACTIVATE + f Lavo; fB field_46929 COPPER_BULB_BREAK + f Lavo; fC field_46930 COPPER_BULB_STEP + f Lavo; fD field_46931 COPPER_BULB_PLACE + f Lavo; fE field_46932 COPPER_BULB_HIT + f Lavo; fF field_46933 COPPER_BULB_FALL + f Lavo; fG field_46934 COPPER_BULB_TURN_ON + f Lavo; fH field_46935 COPPER_BULB_TURN_OFF + f Lavo; fI field_26960 COPPER_BREAK + f Lavo; fJ field_26961 COPPER_STEP + f Lavo; fK field_26962 COPPER_PLACE + f Lavo; fL field_26963 COPPER_HIT + f Lavo; f field_38371 ALLAY_ITEM_TAKEN + f Lavo; fM field_26964 COPPER_FALL + f Lavo; fN field_46936 COPPER_DOOR_CLOSE + f Lavo; fO field_46937 COPPER_DOOR_OPEN + f Lavo; fP field_46938 COPPER_GRATE_BREAK + f Lavo; fQ field_46939 COPPER_GRATE_STEP + f Lavo; fR field_46940 COPPER_GRATE_PLACE + f Lavo; fS field_46941 COPPER_GRATE_HIT + f Lavo; fT field_46942 COPPER_GRATE_FALL + f Lavo; fU field_46943 COPPER_TRAPDOOR_CLOSE + f Lavo; fV field_46944 COPPER_TRAPDOOR_OPEN + f Lavo; fW field_14804 CORAL_BLOCK_BREAK + f Lavo; fX field_14551 CORAL_BLOCK_FALL + f Lavo; fY field_14672 CORAL_BLOCK_HIT + f Lavo; fZ field_15087 CORAL_BLOCK_PLACE + f Lavo; fa field_40971 CHISELED_BOOKSHELF_INSERT_ENCHANTED + f Lavo; fb field_40972 CHISELED_BOOKSHELF_STEP + f Lavo; fc field_40973 CHISELED_BOOKSHELF_PICKUP + f Lavo; fd field_40974 CHISELED_BOOKSHELF_PICKUP_ENCHANTED + f Lavo; fe field_40975 CHISELED_BOOKSHELF_PLACE + f Lavo; ff field_14739 CHORUS_FLOWER_DEATH + f Lavo; fg field_14817 CHORUS_FLOWER_GROW + f Lavo; fh field_14890 CHORUS_FRUIT_TELEPORT + f Lavo; fi field_50093 COBWEB_BREAK + f Lavo; fj field_50094 COBWEB_STEP + f Lavo; fk field_50095 COBWEB_PLACE + f Lavo; fl field_50096 COBWEB_HIT + f Lavo; fm field_50097 COBWEB_FALL + f Lavo; fn field_15083 COD_AMBIENT + f Lavo; fo field_15003 COD_DEATH + f Lavo; fp field_14918 COD_FLOP + f Lavo; fq field_14851 COD_HURT + f Lavo; fr field_14762 COMPARATOR_CLICK + f Lavo; fs field_17606 COMPOSTER_EMPTY + f Lavo; ft field_17607 COMPOSTER_FILL + f Lavo; fu field_17608 COMPOSTER_FILL_SUCCESS + f Lavo; fv field_17609 COMPOSTER_READY + f Lavo; fw field_14700 CONDUIT_ACTIVATE + f Lavo; fx field_14632 CONDUIT_AMBIENT + f Lavo; fy field_15071 CONDUIT_AMBIENT_SHORT + f Lavo; fz field_15177 CONDUIT_ATTACK_TARGET + f Lavo; gA field_42580 DECORATED_POT_STEP + f Lavo; gB field_42581 DECORATED_POT_PLACE + f Lavo; gC field_42582 DECORATED_POT_SHATTER + f Lavo; gD field_28968 DEEPSLATE_BRICKS_BREAK + f Lavo; gE field_28969 DEEPSLATE_BRICKS_FALL + f Lavo; gF field_28970 DEEPSLATE_BRICKS_HIT + f Lavo; gG field_28971 DEEPSLATE_BRICKS_PLACE + f Lavo; gH field_28972 DEEPSLATE_BRICKS_STEP + f Lavo; gI field_28973 DEEPSLATE_BREAK + f Lavo; gJ field_28974 DEEPSLATE_FALL + f Lavo; gK field_28975 DEEPSLATE_HIT + f Lavo; gL field_28976 DEEPSLATE_PLACE + f Lavo; g field_38923 ALLAY_THROW + f Lavo; gM field_28977 DEEPSLATE_STEP + f Lavo; gN field_28978 DEEPSLATE_TILES_BREAK + f Lavo; gO field_28979 DEEPSLATE_TILES_FALL + f Lavo; gP field_28980 DEEPSLATE_TILES_HIT + f Lavo; gQ field_28981 DEEPSLATE_TILES_PLACE + f Lavo; gR field_28982 DEEPSLATE_TILES_STEP + f Lavo; gS field_14611 DISPENSER_DISPENSE + f Lavo; gT field_14701 DISPENSER_FAIL + f Lavo; gU field_14711 DISPENSER_LAUNCH + f Lavo; gV field_14799 DOLPHIN_AMBIENT + f Lavo; gW field_14881 DOLPHIN_AMBIENT_WATER + f Lavo; gX field_14992 DOLPHIN_ATTACK + f Lavo; gY field_15101 DOLPHIN_DEATH + f Lavo; gZ field_14590 DOLPHIN_EAT + f Lavo; ga field_14935 CORAL_BLOCK_STEP + f Lavo; gb field_14780 COW_AMBIENT + f Lavo; gc field_14857 COW_DEATH + f Lavo; gd field_14597 COW_HURT + f Lavo; ge field_14691 COW_MILK + f Lavo; gf field_15110 COW_STEP + f Lavo; gg field_46765 CRAFTER_CRAFT + f Lavo; gh field_46766 CRAFTER_FAIL + f Lavo; gi field_14907 CREEPER_DEATH + f Lavo; gj field_15192 CREEPER_HURT + f Lavo; gk field_15057 CREEPER_PRIMED + f Lavo; gl field_17610 CROP_BREAK + f Lavo; gm field_17611 CROP_PLANTED + f Lavo; gn field_14636 CROSSBOW_HIT + f Ljm; go field_14626 CROSSBOW_LOADING_END + f Ljm; gp field_14860 CROSSBOW_LOADING_MIDDLE + f Ljm; gq field_14765 CROSSBOW_LOADING_START + f Ljm; gr field_15011 CROSSBOW_QUICK_CHARGE_1 + f Ljm; gs field_14916 CROSSBOW_QUICK_CHARGE_2 + f Ljm; gt field_15089 CROSSBOW_QUICK_CHARGE_3 + f Lavo; gu field_15187 CROSSBOW_SHOOT + f Lavo; gv field_42577 DECORATED_POT_BREAK + f Lavo; gw field_42578 DECORATED_POT_FALL + f Lavo; gx field_42579 DECORATED_POT_HIT + f Lavo; gy field_46649 DECORATED_POT_INSERT + f Lavo; gz field_46650 DECORATED_POT_INSERT_FAIL + f Lavo; hA field_28037 POINTED_DRIPSTONE_DRIP_WATER_INTO_CAULDRON + f Lavo; hB field_28579 BIG_DRIPLEAF_TILT_DOWN + f Lavo; hC field_28580 BIG_DRIPLEAF_TILT_UP + f Lavo; hD field_15030 DROWNED_AMBIENT + f Lavo; hE field_14980 DROWNED_AMBIENT_WATER + f Lavo; hF field_15066 DROWNED_DEATH + f Lavo; hG field_15162 DROWNED_DEATH_WATER + f Lavo; hH field_14571 DROWNED_HURT + f Lavo; hI field_14651 DROWNED_HURT_WATER + f Lavo; hJ field_14753 DROWNED_SHOOT + f Lavo; hK field_14835 DROWNED_STEP + f Lavo; hL field_14913 DROWNED_SWIM + f Ljm$c; h field_14564 AMBIENT_CAVE + f Lavo; hM field_28391 DYE_USE + f Lavo; hN field_15012 EGG_THROW + f Lavo; hO field_15127 ELDER_GUARDIAN_AMBIENT + f Lavo; hP field_14569 ELDER_GUARDIAN_AMBIENT_LAND + f Lavo; hQ field_15203 ELDER_GUARDIAN_CURSE + f Lavo; hR field_15052 ELDER_GUARDIAN_DEATH + f Lavo; hS field_14973 ELDER_GUARDIAN_DEATH_LAND + f Lavo; hT field_14939 ELDER_GUARDIAN_FLOP + f Lavo; hU field_14868 ELDER_GUARDIAN_HURT + f Lavo; hV field_14652 ELDER_GUARDIAN_HURT_LAND + f Lavo; hW field_14572 ELYTRA_FLYING + f Lavo; hX field_15119 ENCHANTMENT_TABLE_USE + f Lavo; hY field_15206 ENDER_CHEST_CLOSE + f Lavo; hZ field_14952 ENDER_CHEST_OPEN + f Lavo; ha field_15216 DOLPHIN_HURT + f Lavo; hb field_14707 DOLPHIN_JUMP + f Lavo; hc field_14972 DOLPHIN_PLAY + f Lavo; hd field_14887 DOLPHIN_SPLASH + f Lavo; he field_15172 DOLPHIN_SWIM + f Lavo; hf field_15094 DONKEY_AMBIENT + f Lavo; hg field_14661 DONKEY_ANGRY + f Lavo; hh field_14598 DONKEY_CHEST + f Lavo; hi field_14827 DONKEY_DEATH + f Lavo; hj field_24629 DONKEY_EAT + f Lavo; hk field_14781 DONKEY_HURT + f Lavo; hl field_49179 DONKEY_JUMP + f Lavo; hm field_28038 DRIPSTONE_BLOCK_BREAK + f Lavo; hn field_28039 DRIPSTONE_BLOCK_STEP + f Lavo; ho field_28025 DRIPSTONE_BLOCK_PLACE + f Lavo; hp field_28026 DRIPSTONE_BLOCK_HIT + f Lavo; hq field_28027 DRIPSTONE_BLOCK_FALL + f Lavo; hr field_28028 POINTED_DRIPSTONE_BREAK + f Lavo; hs field_28029 POINTED_DRIPSTONE_STEP + f Lavo; ht field_28030 POINTED_DRIPSTONE_PLACE + f Lavo; hu field_28031 POINTED_DRIPSTONE_HIT + f Lavo; hv field_28032 POINTED_DRIPSTONE_FALL + f Lavo; hw field_28033 POINTED_DRIPSTONE_LAND + f Lavo; hx field_28034 POINTED_DRIPSTONE_DRIP_LAVA + f Lavo; hy field_28035 POINTED_DRIPSTONE_DRIP_WATER + f Lavo; hz field_28036 POINTED_DRIPSTONE_DRIP_LAVA_INTO_CAULDRON + f Lavo; iA field_14599 EVOKER_DEATH + f Lavo; iB field_14692 EVOKER_FANGS_ATTACK + f Lavo; iC field_15111 EVOKER_HURT + f Lavo; iD field_14908 EVOKER_PREPARE_ATTACK + f Lavo; iE field_15193 EVOKER_PREPARE_SUMMON + f Lavo; iF field_15058 EVOKER_PREPARE_WOLOLO + f Lavo; iG field_14637 EXPERIENCE_BOTTLE_THROW + f Lavo; iH field_14627 EXPERIENCE_ORB_PICKUP + f Lavo; iI field_14861 FENCE_GATE_CLOSE + f Lavo; iJ field_14766 FENCE_GATE_OPEN + f Lavo; iK field_15013 FIRECHARGE_USE + f Lavo; iL field_14917 FIREWORK_ROCKET_BLAST + f Ljm$c; i field_23790 AMBIENT_BASALT_DELTAS_ADDITIONS + f Lavo; iM field_15090 FIREWORK_ROCKET_BLAST_FAR + f Lavo; iN field_15188 FIREWORK_ROCKET_LARGE_BLAST + f Lavo; iO field_14612 FIREWORK_ROCKET_LARGE_BLAST_FAR + f Lavo; iP field_14702 FIREWORK_ROCKET_LAUNCH + f Lavo; iQ field_14712 FIREWORK_ROCKET_SHOOT + f Lavo; iR field_14800 FIREWORK_ROCKET_TWINKLE + f Lavo; iS field_14882 FIREWORK_ROCKET_TWINKLE_FAR + f Lavo; iT field_14993 FIRE_AMBIENT + f Lavo; iU field_15102 FIRE_EXTINGUISH + f Lavo; iV field_14591 FISH_SWIM + f Lavo; iW field_15093 FISHING_BOBBER_RETRIEVE + f Lavo; iX field_14660 FISHING_BOBBER_SPLASH + f Lavo; iY field_14596 FISHING_BOBBER_THROW + f Lavo; iZ field_15145 FLINTANDSTEEL_USE + f Lavo; ia field_15024 ENDER_DRAGON_AMBIENT + f Lavo; ib field_14773 ENDER_DRAGON_DEATH + f Lavo; ic field_14803 DRAGON_FIREBALL_EXPLODE + f Lavo; id field_14550 ENDER_DRAGON_FLAP + f Lavo; ie field_14671 ENDER_DRAGON_GROWL + f Lavo; if field_15086 ENDER_DRAGON_HURT + f Lavo; ig field_14934 ENDER_DRAGON_SHOOT + f Lavo; ih field_15210 ENDER_EYE_DEATH + f Lavo; ii field_15155 ENDER_EYE_LAUNCH + f Lavo; ij field_14696 ENDERMAN_AMBIENT + f Lavo; ik field_14608 ENDERMAN_DEATH + f Lavo; il field_14797 ENDERMAN_HURT + f Lavo; im field_14713 ENDERMAN_SCREAM + f Lavo; in field_14967 ENDERMAN_STARE + f Lavo; io field_14879 ENDERMAN_TELEPORT + f Lavo; ip field_15137 ENDERMITE_AMBIENT + f Lavo; iq field_15230 ENDERMITE_DEATH + f Lavo; ir field_14582 ENDERMITE_HURT + f Lavo; is field_14678 ENDERMITE_STEP + f Lavo; it field_14757 ENDER_PEARL_THROW + f Lavo; iu field_14816 END_GATEWAY_SPAWN + f Lavo; iv field_19197 END_PORTAL_FRAME_FILL + f Lavo; iw field_14981 END_PORTAL_SPAWN + f Lavo; ix field_14782 EVOKER_AMBIENT + f Lavo; iy field_14858 EVOKER_CAST_SPELL + f Lavo; iz field_19147 EVOKER_CELEBRATE + f Lavo; jA field_37302 FROGLIGHT_BREAK + f Lavo; jB field_37303 FROGLIGHT_FALL + f Lavo; jC field_37304 FROGLIGHT_HIT + f Lavo; jD field_37305 FROGLIGHT_PLACE + f Lavo; jE field_37306 FROGLIGHT_STEP + f Lavo; jF field_37307 FROGSPAWNSTEP + f Lavo; jG field_37308 FROGSPAWN_BREAK + f Lavo; jH field_37309 FROGSPAWN_FALL + f Lavo; jI field_37310 FROGSPAWN_HATCH + f Lavo; jJ field_37311 FROGSPAWN_HIT + f Lavo; jK field_37312 FROGSPAWN_PLACE + f Lavo; jL field_37313 FROG_AMBIENT + f Ljm$c; j field_23791 AMBIENT_BASALT_DELTAS_LOOP + f Lavo; jM field_37314 FROG_DEATH + f Lavo; jN field_37315 FROG_EAT + f Lavo; jO field_37316 FROG_HURT + f Lavo; jP field_37317 FROG_LAY_SPAWN + f Lavo; jQ field_37318 FROG_LONG_JUMP + f Lavo; jR field_37319 FROG_STEP + f Lavo; jS field_37320 FROG_TONGUE + f Lavo; jT field_21877 ROOTS_BREAK + f Lavo; jU field_21878 ROOTS_STEP + f Lavo; jV field_21879 ROOTS_PLACE + f Lavo; jW field_21880 ROOTS_HIT + f Lavo; jX field_21881 ROOTS_FALL + f Lavo; jY field_15006 FURNACE_FIRE_CRACKLE + f Lavo; jZ field_14928 GENERIC_BIG_FALL + f Lavo; ja field_28581 FLOWERING_AZALEA_BREAK + f Lavo; jb field_28582 FLOWERING_AZALEA_FALL + f Lavo; jc field_28583 FLOWERING_AZALEA_HIT + f Lavo; jd field_28584 FLOWERING_AZALEA_PLACE + f Lavo; je field_28585 FLOWERING_AZALEA_STEP + f Lavo; jf field_18055 FOX_AGGRO + f Lavo; jg field_18056 FOX_AMBIENT + f Lavo; jh field_18058 FOX_BITE + f Lavo; ji field_18059 FOX_DEATH + f Lavo; jj field_18060 FOX_EAT + f Lavo; jk field_18061 FOX_HURT + f Lavo; jl field_18265 FOX_SCREECH + f Lavo; jm field_18062 FOX_SLEEP + f Lavo; jn field_18063 FOX_SNIFF + f Lavo; jo field_18054 FOX_SPIT + f Lavo; jp field_24630 FOX_TELEPORT + f Lavo; jq field_42583 SUSPICIOUS_SAND_BREAK + f Lavo; jr field_42584 SUSPICIOUS_SAND_STEP + f Lavo; js field_42585 SUSPICIOUS_SAND_PLACE + f Lavo; jt field_42586 SUSPICIOUS_SAND_HIT + f Lavo; ju field_42587 SUSPICIOUS_SAND_FALL + f Lavo; jv field_43160 SUSPICIOUS_GRAVEL_BREAK + f Lavo; jw field_43161 SUSPICIOUS_GRAVEL_STEP + f Lavo; jx field_43162 SUSPICIOUS_GRAVEL_PLACE + f Lavo; jy field_43163 SUSPICIOUS_GRAVEL_HIT + f Lavo; jz field_43164 SUSPICIOUS_GRAVEL_FALL + f Lavo; kA field_28392 GLOW_INK_SAC_USE + f Lavo; kB field_29188 GLOW_ITEM_FRAME_ADD_ITEM + f Lavo; kC field_29189 GLOW_ITEM_FRAME_BREAK + f Lavo; kD field_29190 GLOW_ITEM_FRAME_PLACE + f Lavo; kE field_29191 GLOW_ITEM_FRAME_REMOVE_ITEM + f Lavo; kF field_29192 GLOW_ITEM_FRAME_ROTATE_ITEM + f Lavo; kG field_28393 GLOW_SQUID_AMBIENT + f Lavo; kH field_28394 GLOW_SQUID_DEATH + f Lavo; kI field_28395 GLOW_SQUID_HURT + f Lavo; kJ field_28396 GLOW_SQUID_SQUIRT + f Lavo; kK field_29809 GOAT_AMBIENT + f Lavo; kL field_29810 GOAT_DEATH + f Ljm$c; k field_23792 AMBIENT_BASALT_DELTAS_MOOD + f Lavo; kM field_33437 GOAT_EAT + f Lavo; kN field_29811 GOAT_HURT + f Lavo; kO field_33438 GOAT_LONG_JUMP + f Lavo; kP field_29812 GOAT_MILK + f Lavo; kQ field_29813 GOAT_PREPARE_RAM + f Lavo; kR field_33439 GOAT_RAM_IMPACT + f Lavo; kS field_39024 GOAT_HORN_BREAK + f Lavo; kT field_39025 GOAT_HORN_PLAY + f Lavo; kU field_29814 GOAT_SCREAMING_AMBIENT + f Lavo; kV field_29815 GOAT_SCREAMING_DEATH + f Lavo; kW field_33440 GOAT_SCREAMING_EAT + f Lavo; kX field_29816 GOAT_SCREAMING_HURT + f Lavo; kY field_33434 GOAT_SCREAMING_LONG_JUMP + f Lavo; kZ field_29817 GOAT_SCREAMING_MILK + f Lavo; ka field_14821 GENERIC_BURN + f Lavo; kb field_14732 GENERIC_DEATH + f Lavo; kc field_20613 GENERIC_DRINK + f Lavo; kd field_20614 GENERIC_EAT + f Ljm$c; ke field_15152 GENERIC_EXPLODE + f Lavo; kf field_15222 GENERIC_EXTINGUISH_FIRE + f Lavo; kg field_14940 GENERIC_HURT + f Lavo; kh field_15018 GENERIC_SMALL_FALL + f Lavo; ki field_14737 GENERIC_SPLASH + f Lavo; kj field_14818 GENERIC_SWIM + f Lavo; kk field_14566 GHAST_AMBIENT + f Lavo; kl field_14648 GHAST_DEATH + f Lavo; km field_15054 GHAST_HURT + f Lavo; kn field_14958 GHAST_SCREAM + f Lavo; ko field_15231 GHAST_SHOOT + f Lavo; kp field_15130 GHAST_WARN + f Lavo; kq field_24066 GILDED_BLACKSTONE_BREAK + f Lavo; kr field_24067 GILDED_BLACKSTONE_FALL + f Lavo; ks field_24068 GILDED_BLACKSTONE_HIT + f Lavo; kt field_24069 GILDED_BLACKSTONE_PLACE + f Lavo; ku field_24070 GILDED_BLACKSTONE_STEP + f Lavo; kv field_15081 GLASS_BREAK + f Lavo; kw field_14666 GLASS_FALL + f Lavo; kx field_14583 GLASS_HIT + f Lavo; ky field_14843 GLASS_PLACE + f Lavo; kz field_14769 GLASS_STEP + f Lavo; lA field_28588 HANGING_ROOTS_HIT + f Lavo; lB field_28589 HANGING_ROOTS_PLACE + f Lavo; lC field_28590 HANGING_ROOTS_STEP + f Lavo; lD field_40083 HANGING_SIGN_STEP + f Lavo; lE field_40084 HANGING_SIGN_BREAK + f Lavo; lF field_40085 HANGING_SIGN_FALL + f Lavo; lG field_40086 HANGING_SIGN_HIT + f Lavo; lH field_40087 HANGING_SIGN_PLACE + f Lavo; lI field_49779 HEAVY_CORE_BREAK + f Lavo; lJ field_49780 HEAVY_CORE_FALL + f Lavo; lK field_49781 HEAVY_CORE_HIT + f Lavo; lL field_49782 HEAVY_CORE_PLACE + f Ljm$c; l field_22451 AMBIENT_CRIMSON_FOREST_ADDITIONS + f Lavo; lM field_49783 HEAVY_CORE_STEP + f Lavo; lN field_40976 NETHER_WOOD_HANGING_SIGN_STEP + f Lavo; lO field_40977 NETHER_WOOD_HANGING_SIGN_BREAK + f Lavo; lP field_40978 NETHER_WOOD_HANGING_SIGN_FALL + f Lavo; lQ field_40979 NETHER_WOOD_HANGING_SIGN_HIT + f Lavo; lR field_40980 NETHER_WOOD_HANGING_SIGN_PLACE + f Lavo; lS field_40981 BAMBOO_WOOD_HANGING_SIGN_STEP + f Lavo; lT field_40982 BAMBOO_WOOD_HANGING_SIGN_BREAK + f Lavo; lU field_40983 BAMBOO_WOOD_HANGING_SIGN_FALL + f Lavo; lV field_40984 BAMBOO_WOOD_HANGING_SIGN_HIT + f Lavo; lW field_40985 BAMBOO_WOOD_HANGING_SIGN_PLACE + f Lavo; lX field_47201 TRIAL_SPAWNER_BREAK + f Lavo; lY field_47202 TRIAL_SPAWNER_STEP + f Lavo; lZ field_47203 TRIAL_SPAWNER_PLACE + f Lavo; la field_33435 GOAT_SCREAMING_PREPARE_RAM + f Lavo; lb field_33436 GOAT_SCREAMING_RAM_IMPACT + f Lavo; lc field_39026 GOAT_SCREAMING_HORN_BREAK + f Lavo; ld field_29819 GOAT_STEP + f Lavo; le field_15037 GRASS_BREAK + f Lavo; lf field_14965 GRASS_FALL + f Lavo; lg field_14720 GRASS_HIT + f Lavo; lh field_14653 GRASS_PLACE + f Lavo; li field_14573 GRASS_STEP + f Lavo; lj field_15211 GRAVEL_BREAK + f Lavo; lk field_15156 GRAVEL_FALL + f Lavo; ll field_14697 GRAVEL_HIT + f Lavo; lm field_14609 GRAVEL_PLACE + f Lavo; ln field_14798 GRAVEL_STEP + f Lavo; lo field_16865 GRINDSTONE_USE + f Lavo; lp field_34896 GROWING_PLANT_CROP + f Lavo; lq field_14714 GUARDIAN_AMBIENT + f Lavo; lr field_14968 GUARDIAN_AMBIENT_LAND + f Lavo; ls field_14880 GUARDIAN_ATTACK + f Lavo; lt field_15138 GUARDIAN_DEATH + f Lavo; lu field_15232 GUARDIAN_DEATH_LAND + f Lavo; lv field_14584 GUARDIAN_FLOP + f Lavo; lw field_14679 GUARDIAN_HURT + f Lavo; lx field_14758 GUARDIAN_HURT_LAND + f Lavo; ly field_28586 HANGING_ROOTS_BREAK + f Lavo; lz field_28587 HANGING_ROOTS_FALL + f Lavo; mA field_21074 HONEY_BLOCK_SLIDE + f Lavo; mB field_21075 HONEY_BLOCK_STEP + f Lavo; mC field_29543 HONEYCOMB_WAX_ON + f Lavo; mD field_20615 HONEY_DRINK + f I mE field_39027 GOAT_HORN_VARIANT_COUNT + f Lcom/google/common/collect/ImmutableList; mF field_39028 GOAT_HORN_SOUND_VARIANTS + f Lavo; mG field_14947 HORSE_AMBIENT + f Lavo; mH field_15043 HORSE_ANGRY + f Lavo; mI field_15141 HORSE_ARMOR + f Lavo; mJ field_14556 HORSE_BREATHE + f Lavo; mK field_15166 HORSE_DEATH + f Lavo; mL field_15099 HORSE_EAT + f Ljm$c; m field_22452 AMBIENT_CRIMSON_FOREST_LOOP + f Lavo; mM field_14987 HORSE_GALLOP + f Lavo; mN field_14923 HORSE_HURT + f Lavo; mO field_14831 HORSE_JUMP + f Lavo; mP field_14783 HORSE_LAND + f Lavo; mQ field_14704 HORSE_SADDLE + f Lavo; mR field_14613 HORSE_STEP + f Lavo; mS field_15061 HORSE_STEP_WOOD + f Lavo; mT field_15157 HOSTILE_BIG_FALL + f Lavo; mU field_14899 HOSTILE_DEATH + f Lavo; mV field_14994 HOSTILE_HURT + f Lavo; mW field_14754 HOSTILE_SMALL_FALL + f Lavo; mX field_14836 HOSTILE_SPLASH + f Lavo; mY field_14630 HOSTILE_SWIM + f Lavo; mZ field_14680 HUSK_AMBIENT + f Lavo; ma field_47204 TRIAL_SPAWNER_HIT + f Lavo; mb field_47205 TRIAL_SPAWNER_FALL + f Lavo; mc field_47206 TRIAL_SPAWNER_SPAWN_MOB + f Lavo; md field_50098 TRIAL_SPAWNER_ABOUT_TO_SPAWN_ITEM + f Lavo; me field_50099 TRIAL_SPAWNER_SPAWN_ITEM + f Lavo; mf field_50100 TRIAL_SPAWNER_SPAWN_ITEM_BEGIN + f Lavo; mg field_47207 TRIAL_SPAWNER_DETECT_PLAYER + f Lavo; mh field_50101 TRIAL_SPAWNER_OMINOUS_ACTIVATE + f Lavo; mi field_47208 TRIAL_SPAWNER_AMBIENT + f Lavo; mj field_50102 TRIAL_SPAWNER_AMBIENT_OMINOUS + f Lavo; mk field_47209 TRIAL_SPAWNER_OPEN_SHUTTER + f Lavo; ml field_47210 TRIAL_SPAWNER_CLOSE_SHUTTER + f Lavo; mm field_47211 TRIAL_SPAWNER_EJECT_ITEM + f Lavo; mn field_14846 HOE_TILL + f Lavo; mo field_22256 HOGLIN_AMBIENT + f Lavo; mp field_22257 HOGLIN_ANGRY + f Lavo; mq field_22258 HOGLIN_ATTACK + f Lavo; mr field_23671 HOGLIN_CONVERTED_TO_ZOMBIFIED + f Lavo; ms field_22259 HOGLIN_DEATH + f Lavo; mt field_22260 HOGLIN_HURT + f Lavo; mu field_22261 HOGLIN_RETREAT + f Lavo; mv field_22262 HOGLIN_STEP + f Lavo; mw field_21070 HONEY_BLOCK_BREAK + f Lavo; mx field_21071 HONEY_BLOCK_FALL + f Lavo; my field_21072 HONEY_BLOCK_HIT + f Lavo; mz field_21073 HONEY_BLOCK_PLACE + f Lavo; nA field_15038 ITEM_FRAME_ROTATE_ITEM + f Lavo; nB field_15075 ITEM_BREAK + f Lavo; nC field_15197 ITEM_PICKUP + f Lavo; nD field_14546 LADDER_BREAK + f Lavo; nE field_14646 LADDER_FALL + f Lavo; nF field_14775 LADDER_HIT + f Lavo; nG field_14853 LADDER_PLACE + f Lavo; nH field_14948 LADDER_STEP + f Lavo; nI field_17745 LANTERN_BREAK + f Lavo; nJ field_17746 LANTERN_FALL + f Lavo; nK field_17742 LANTERN_HIT + f Lavo; nL field_17743 LANTERN_PLACE + f Ljm$c; n field_22453 AMBIENT_CRIMSON_FOREST_MOOD + f Lavo; nM field_17744 LANTERN_STEP + f Lavo; nN field_26966 LARGE_AMETHYST_BUD_BREAK + f Lavo; nO field_26965 LARGE_AMETHYST_BUD_PLACE + f Lavo; nP field_15021 LAVA_AMBIENT + f Lavo; nQ field_19198 LAVA_EXTINGUISH + f Lavo; nR field_14576 LAVA_POP + f Lavo; nS field_15184 LEASH_KNOT_BREAK + f Lavo; nT field_15062 LEASH_KNOT_PLACE + f Lavo; nU field_14962 LEVER_CLICK + f Lavo; nV field_14956 LIGHTNING_BOLT_IMPACT + f Lavo; nW field_14865 LIGHTNING_BOLT_THUNDER + f Lavo; nX field_14767 LINGERING_POTION_THROW + f Lavo; nY field_14682 LLAMA_AMBIENT + f Lavo; nZ field_14586 LLAMA_ANGRY + f Lavo; na field_15128 HUSK_CONVERTED_TO_ZOMBIE + f Lavo; nb field_14892 HUSK_DEATH + f Lavo; nc field_15196 HUSK_HURT + f Lavo; nd field_15046 HUSK_STEP + f Lavo; ne field_14644 ILLUSIONER_AMBIENT + f Lavo; nf field_14545 ILLUSIONER_CAST_SPELL + f Lavo; ng field_15153 ILLUSIONER_DEATH + f Lavo; nh field_15223 ILLUSIONER_HURT + f Lavo; ni field_14941 ILLUSIONER_MIRROR_MOVE + f Lavo; nj field_15019 ILLUSIONER_PREPARE_BLINDNESS + f Lavo; nk field_14738 ILLUSIONER_PREPARE_MIRROR + f Lavo; nl field_28397 INK_SAC_USE + f Lavo; nm field_14819 IRON_DOOR_CLOSE + f Lavo; nn field_14567 IRON_DOOR_OPEN + f Lavo; no field_14649 IRON_GOLEM_ATTACK + f Lavo; np field_21076 IRON_GOLEM_DAMAGE + f Lavo; nq field_15055 IRON_GOLEM_DEATH + f Lavo; nr field_14959 IRON_GOLEM_HURT + f Lavo; ns field_21077 IRON_GOLEM_REPAIR + f Lavo; nt field_15233 IRON_GOLEM_STEP + f Lavo; nu field_15131 IRON_TRAPDOOR_CLOSE + f Lavo; nv field_15082 IRON_TRAPDOOR_OPEN + f Lavo; nw field_14667 ITEM_FRAME_ADD_ITEM + f Lavo; nx field_14585 ITEM_FRAME_BREAK + f Lavo; ny field_14844 ITEM_FRAME_PLACE + f Lavo; nz field_14770 ITEM_FRAME_REMOVE_ITEM + f Lavo; oA field_37324 MANGROVE_ROOTS_PLACE + f Lavo; oB field_37325 MANGROVE_ROOTS_STEP + f Lavo; oC field_26967 MEDIUM_AMETHYST_BUD_BREAK + f Lavo; oD field_26968 MEDIUM_AMETHYST_BUD_PLACE + f Lavo; oE field_15044 METAL_BREAK + f Lavo; oF field_15142 METAL_FALL + f Lavo; oG field_14557 METAL_HIT + f Lavo; oH field_15167 METAL_PLACE + f Lavo; oI field_15100 METAL_PRESSURE_PLATE_CLICK_OFF + f Lavo; oJ field_14988 METAL_PRESSURE_PLATE_CLICK_ON + f Lavo; oK field_14924 METAL_STEP + f Lavo; oL field_26969 MINECART_INSIDE_UNDERWATER + f Ljm$c; o field_22454 AMBIENT_NETHER_WASTES_ADDITIONS + f Lavo; oM field_14832 MINECART_INSIDE + f Lavo; oN field_14784 MINECART_RIDING + f Lavo; oO field_18266 MOOSHROOM_CONVERT + f Lavo; oP field_18267 MOOSHROOM_EAT + f Lavo; oQ field_18268 MOOSHROOM_MILK + f Lavo; oR field_18269 MOOSHROOM_MILK_SUSPICIOUSLY + f Lavo; oS field_14705 MOOSHROOM_SHEAR + f Lavo; oT field_28591 MOSS_CARPET_BREAK + f Lavo; oU field_28592 MOSS_CARPET_FALL + f Lavo; oV field_28593 MOSS_CARPET_HIT + f Lavo; oW field_28594 MOSS_CARPET_PLACE + f Lavo; oX field_28595 MOSS_CARPET_STEP + f Lavo; oY field_42588 PINK_PETALS_BREAK + f Lavo; oZ field_42589 PINK_PETALS_FALL + f Lavo; oa field_15097 LLAMA_CHEST + f Lavo; ob field_15189 LLAMA_DEATH + f Lavo; oc field_14884 LLAMA_EAT + f Lavo; od field_15031 LLAMA_HURT + f Lavo; oe field_14789 LLAMA_SPIT + f Lavo; of field_14795 LLAMA_STEP + f Ljm; og field_14554 LLAMA_SWAG + f Lavo; oh field_14889 MAGMA_CUBE_DEATH_SMALL + f Lavo; oi field_23194 LODESTONE_BREAK + f Lavo; oj field_23195 LODESTONE_STEP + f Lavo; ok field_23196 LODESTONE_PLACE + f Lavo; ol field_23197 LODESTONE_HIT + f Lavo; om field_23198 LODESTONE_FALL + f Lavo; on field_23199 LODESTONE_COMPASS_LOCK + f Lavo; oo field_49784 MACE_SMASH_AIR + f Lavo; op field_49785 MACE_SMASH_GROUND + f Lavo; oq field_49924 MACE_SMASH_GROUND_HEAVY + f Lavo; or field_14662 MAGMA_CUBE_DEATH + f Lavo; os field_14747 MAGMA_CUBE_HURT + f Lavo; ot field_15005 MAGMA_CUBE_HURT_SMALL + f Lavo; ou field_14847 MAGMA_CUBE_JUMP + f Lavo; ov field_14949 MAGMA_CUBE_SQUISH + f Lavo; ow field_14749 MAGMA_CUBE_SQUISH_SMALL + f Lavo; ox field_37321 MANGROVE_ROOTS_BREAK + f Lavo; oy field_37322 MANGROVE_ROOTS_FALL + f Lavo; oz field_37323 MANGROVE_ROOTS_HIT + f Lavo; pA field_15158 MULE_DEATH + f Lavo; pB field_24632 MULE_EAT + f Lavo; pC field_14900 MULE_HURT + f Lavo; pD field_49180 MULE_JUMP + f Ljm$c; pE field_14995 MUSIC_CREATIVE + f Ljm$c; pF field_14755 MUSIC_CREDITS + f Ljm$c; pG field_38924 MUSIC_DISC_5 + f Ljm$c; pH field_14654 MUSIC_DISC_11 + f Ljm$c; pI field_14592 MUSIC_DISC_13 + f Ljm$c; pJ field_14829 MUSIC_DISC_BLOCKS + f Ljm$c; pK field_14744 MUSIC_DISC_CAT + f Ljm$c; pL field_15039 MUSIC_DISC_CHIRP + f Ljm$c; p field_22455 AMBIENT_NETHER_WASTES_LOOP + f Ljm$c; pM field_14944 MUSIC_DISC_FAR + f Ljm$c; pN field_15059 MUSIC_DISC_MALL + f Ljm$c; pO field_15169 MUSIC_DISC_MELLOHI + f Ljm$c; pP field_23968 MUSIC_DISC_PIGSTEP + f Ljm$c; pQ field_14578 MUSIC_DISC_STAL + f Ljm$c; pR field_14656 MUSIC_DISC_STRAD + f Ljm$c; pS field_14759 MUSIC_DISC_WAIT + f Ljm$c; pT field_14838 MUSIC_DISC_WARD + f Ljm$c; pU field_35343 MUSIC_DISC_OTHERSIDE + f Ljm$c; pV field_44700 MUSIC_DISC_RELIC + f Ljm$c; pW field_51524 MUSIC_DISC_CREATOR + f Ljm$c; pX field_51525 MUSIC_DISC_CREATOR_MUSIC_BOX + f Ljm$c; pY field_51526 MUSIC_DISC_PRECIPICE + f Ljm$c; pZ field_14837 MUSIC_DRAGON + f Lavo; pa field_42590 PINK_PETALS_HIT + f Lavo; pb field_42591 PINK_PETALS_PLACE + f Lavo; pc field_42592 PINK_PETALS_STEP + f Lavo; pd field_28596 MOSS_BREAK + f Lavo; pe field_28597 MOSS_FALL + f Lavo; pf field_28598 MOSS_HIT + f Lavo; pg field_28599 MOSS_PLACE + f Lavo; ph field_28600 MOSS_STEP + f Lavo; pi field_37329 MUD_BREAK + f Lavo; pj field_37330 MUD_FALL + f Lavo; pk field_37331 MUD_HIT + f Lavo; pl field_37332 MUD_PLACE + f Lavo; pm field_37333 MUD_STEP + f Lavo; pn field_37334 MUD_BRICKS_BREAK + f Lavo; po field_37335 MUD_BRICKS_FALL + f Lavo; pp field_37336 MUD_BRICKS_HIT + f Lavo; pq field_37337 MUD_BRICKS_PLACE + f Lavo; pr field_37338 MUD_BRICKS_STEP + f Lavo; ps field_37339 MUDDY_MANGROVE_ROOTS_BREAK + f Lavo; pt field_37340 MUDDY_MANGROVE_ROOTS_FALL + f Lavo; pu field_37326 MUDDY_MANGROVE_ROOTS_HIT + f Lavo; pv field_37327 MUDDY_MANGROVE_ROOTS_PLACE + f Lavo; pw field_37328 MUDDY_MANGROVE_ROOTS_STEP + f Lavo; px field_14614 MULE_AMBIENT + f Lavo; py field_24631 MULE_ANGRY + f Lavo; pz field_15063 MULE_CHEST + f Ljm$c; qA field_44699 MUSIC_BIOME_BAMBOO_JUNGLE + f Ljm$c; qB field_15198 MUSIC_UNDER_WATER + f Lavo; qC field_21882 NETHER_BRICKS_BREAK + f Lavo; qD field_21883 NETHER_BRICKS_STEP + f Lavo; qE field_21884 NETHER_BRICKS_PLACE + f Lavo; qF field_21885 NETHER_BRICKS_HIT + f Lavo; qG field_21886 NETHER_BRICKS_FALL + f Lavo; qH field_17612 NETHER_WART_BREAK + f Lavo; qI field_17613 NETHER_WART_PLANTED + f Lavo; qJ field_40097 NETHER_WOOD_BREAK + f Lavo; qK field_40098 NETHER_WOOD_FALL + f Lavo; qL field_40099 NETHER_WOOD_HIT + f Ljm$c; q field_22456 AMBIENT_NETHER_WASTES_MOOD + f Lavo; qM field_40100 NETHER_WOOD_PLACE + f Lavo; qN field_40101 NETHER_WOOD_STEP + f Lavo; qO field_40102 NETHER_WOOD_DOOR_CLOSE + f Lavo; qP field_40088 NETHER_WOOD_DOOR_OPEN + f Lavo; qQ field_40089 NETHER_WOOD_TRAPDOOR_CLOSE + f Lavo; qR field_40090 NETHER_WOOD_TRAPDOOR_OPEN + f Lavo; qS field_40091 NETHER_WOOD_BUTTON_CLICK_OFF + f Lavo; qT field_40092 NETHER_WOOD_BUTTON_CLICK_ON + f Lavo; qU field_40093 NETHER_WOOD_PRESSURE_PLATE_CLICK_OFF + f Lavo; qV field_40094 NETHER_WOOD_PRESSURE_PLATE_CLICK_ON + f Lavo; qW field_40095 NETHER_WOOD_FENCE_GATE_CLOSE + f Lavo; qX field_40096 NETHER_WOOD_FENCE_GATE_OPEN + f Lavo; qY field_42593 EMPTY + f Lavo; qZ field_37346 PACKED_MUD_BREAK + f Ljm$c; qa field_14631 MUSIC_END + f Ljm$c; qb field_14681 MUSIC_GAME + f Ljm$c; qc field_15129 MUSIC_MENU + f Ljm$c; qd field_23793 MUSIC_BIOME_BASALT_DELTAS + f Ljm$c; qe field_23796 MUSIC_BIOME_CRIMSON_FOREST + f Ljm$c; qf field_37345 MUSIC_BIOME_DEEP_DARK + f Ljm$c; qg field_35344 MUSIC_BIOME_DRIPSTONE_CAVES + f Ljm$c; qh field_35345 MUSIC_BIOME_GROVE + f Ljm$c; qi field_35346 MUSIC_BIOME_JAGGED_PEAKS + f Ljm$c; qj field_35347 MUSIC_BIOME_LUSH_CAVES + f Ljm$c; qk field_38925 MUSIC_BIOME_SWAMP + f Ljm$c; ql field_44693 MUSIC_BIOME_FOREST + f Ljm$c; qm field_38927 MUSIC_BIOME_OLD_GROWTH_TAIGA + f Ljm$c; qn field_35348 MUSIC_BIOME_MEADOW + f Ljm$c; qo field_42594 MUSIC_BIOME_CHERRY_GROVE + f Ljm$c; qp field_23794 MUSIC_BIOME_NETHER_WASTES + f Ljm$c; qq field_35349 MUSIC_BIOME_FROZEN_PEAKS + f Ljm$c; qr field_35350 MUSIC_BIOME_SNOWY_SLOPES + f Ljm$c; qs field_23795 MUSIC_BIOME_SOUL_SAND_VALLEY + f Ljm$c; qt field_35351 MUSIC_BIOME_STONY_PEAKS + f Ljm$c; qu field_23797 MUSIC_BIOME_WARPED_FOREST + f Ljm$c; qv field_44694 MUSIC_BIOME_FLOWER_FOREST + f Ljm$c; qw field_44695 MUSIC_BIOME_DESERT + f Ljm$c; qx field_44696 MUSIC_BIOME_BADLANDS + f Ljm$c; qy field_44697 MUSIC_BIOME_JUNGLE + f Ljm$c; qz field_44698 MUSIC_BIOME_SPARSE_JUNGLE + f Lavo; rA field_21911 WEEPING_VINES_PLACE + f Lavo; rB field_21912 WEEPING_VINES_HIT + f Lavo; rC field_21913 WEEPING_VINES_FALL + f Lavo; rD field_21914 WART_BLOCK_BREAK + f Lavo; rE field_21915 WART_BLOCK_STEP + f Lavo; rF field_21916 WART_BLOCK_PLACE + f Lavo; rG field_21917 WART_BLOCK_HIT + f Lavo; rH field_21918 WART_BLOCK_FALL + f Lavo; rI field_21919 NETHERITE_BLOCK_BREAK + f Lavo; rJ field_21920 NETHERITE_BLOCK_STEP + f Lavo; rK field_21921 NETHERITE_BLOCK_PLACE + f Lavo; rL field_21922 NETHERITE_BLOCK_HIT + f Ljm$c; r field_22457 AMBIENT_SOUL_SAND_VALLEY_ADDITIONS + f Lavo; rM field_21923 NETHERITE_BLOCK_FALL + f Lavo; rN field_21924 NETHERRACK_BREAK + f Lavo; rO field_21925 NETHERRACK_STEP + f Lavo; rP field_21926 NETHERRACK_PLACE + f Lavo; rQ field_21927 NETHERRACK_HIT + f Lavo; rR field_21928 NETHERRACK_FALL + f Ljm$c; rS field_15047 NOTE_BLOCK_BASEDRUM + f Ljm$c; rT field_14624 NOTE_BLOCK_BASS + f Ljm$c; rU field_14793 NOTE_BLOCK_BELL + f Ljm$c; rV field_14725 NOTE_BLOCK_CHIME + f Ljm$c; rW field_14989 NOTE_BLOCK_FLUTE + f Ljm$c; rX field_14903 NOTE_BLOCK_GUITAR + f Ljm$c; rY field_15114 NOTE_BLOCK_HARP + f Ljm$c; rZ field_15204 NOTE_BLOCK_HAT + f Lavo; ra field_37341 PACKED_MUD_FALL + f Lavo; rb field_37342 PACKED_MUD_HIT + f Lavo; rc field_37343 PACKED_MUD_PLACE + f Lavo; rd field_37344 PACKED_MUD_STEP + f Lavo; re field_21887 STEM_BREAK + f Lavo; rf field_21888 STEM_STEP + f Lavo; rg field_21889 STEM_PLACE + f Lavo; rh field_21890 STEM_HIT + f Lavo; ri field_21892 STEM_FALL + f Lavo; rj field_21893 NYLIUM_BREAK + f Lavo; rk field_21894 NYLIUM_STEP + f Lavo; rl field_21895 NYLIUM_PLACE + f Lavo; rm field_21896 NYLIUM_HIT + f Lavo; rn field_21897 NYLIUM_FALL + f Lavo; ro field_21898 NETHER_SPROUTS_BREAK + f Lavo; rp field_21899 NETHER_SPROUTS_STEP + f Lavo; rq field_21900 NETHER_SPROUTS_PLACE + f Lavo; rr field_21901 NETHER_SPROUTS_HIT + f Lavo; rs field_21902 NETHER_SPROUTS_FALL + f Lavo; rt field_21903 FUNGUS_BREAK + f Lavo; ru field_21904 FUNGUS_STEP + f Lavo; rv field_21905 FUNGUS_PLACE + f Lavo; rw field_21907 FUNGUS_HIT + f Lavo; rx field_21908 FUNGUS_FALL + f Lavo; ry field_21909 WEEPING_VINES_BREAK + f Lavo; rz field_21910 WEEPING_VINES_STEP + f Lavo; sA field_14936 PANDA_CANT_BREED + f Lavo; sB field_14801 PANDA_AGGRESSIVE_AMBIENT + f Lavo; sC field_14715 PANDA_WORRIED_AMBIENT + f Lavo; sD field_14668 PANDA_HURT + f Lavo; sE field_14552 PANDA_BITE + f Lavo; sF field_15132 PARROT_AMBIENT + f Lavo; sG field_15234 PARROT_DEATH + f Lavo; sH field_14960 PARROT_EAT + f Lavo; sI field_14925 PARROT_FLY + f Lavo; sJ field_15077 PARROT_HURT + f Lavo; sK field_15199 PARROT_IMITATE_BLAZE + f Lavo; sL field_49146 PARROT_IMITATE_BOGGED + f Ljm$c; s field_22458 AMBIENT_SOUL_SAND_VALLEY_LOOP + f Lavo; sM field_47212 PARROT_IMITATE_BREEZE + f Lavo; sN field_14547 PARROT_IMITATE_CREEPER + f Lavo; sO field_14647 PARROT_IMITATE_DROWNED + f Lavo; sP field_14777 PARROT_IMITATE_ELDER_GUARDIAN + f Lavo; sQ field_14854 PARROT_IMITATE_ENDER_DRAGON + f Lavo; sR field_15022 PARROT_IMITATE_ENDERMITE + f Lavo; sS field_15113 PARROT_IMITATE_EVOKER + f Lavo; sT field_14577 PARROT_IMITATE_GHAST + f Lavo; sU field_18813 PARROT_IMITATE_GUARDIAN + f Lavo; sV field_24634 PARROT_IMITATE_HOGLIN + f Lavo; sW field_15185 PARROT_IMITATE_HUSK + f Lavo; sX field_15064 PARROT_IMITATE_ILLUSIONER + f Lavo; sY field_14963 PARROT_IMITATE_MAGMA_CUBE + f Lavo; sZ field_14957 PARROT_IMITATE_PHANTOM + f Ljm$c; sa field_14622 NOTE_BLOCK_PLING + f Ljm$c; sb field_14708 NOTE_BLOCK_SNARE + f Ljm$c; sc field_14776 NOTE_BLOCK_XYLOPHONE + f Ljm$c; sd field_18308 NOTE_BLOCK_IRON_XYLOPHONE + f Ljm$c; se field_18309 NOTE_BLOCK_COW_BELL + f Ljm$c; sf field_18310 NOTE_BLOCK_DIDGERIDOO + f Ljm$c; sg field_18311 NOTE_BLOCK_BIT + f Ljm$c; sh field_18312 NOTE_BLOCK_BANJO + f Ljm$c; si field_41700 NOTE_BLOCK_IMITATE_ZOMBIE + f Ljm$c; sj field_41701 NOTE_BLOCK_IMITATE_SKELETON + f Ljm$c; sk field_41702 NOTE_BLOCK_IMITATE_CREEPER + f Ljm$c; sl field_41703 NOTE_BLOCK_IMITATE_ENDER_DRAGON + f Ljm$c; sm field_41704 NOTE_BLOCK_IMITATE_WITHER_SKELETON + f Ljm$c; sn field_41705 NOTE_BLOCK_IMITATE_PIGLIN + f Lavo; so field_16441 OCELOT_HURT + f Lavo; sp field_16437 OCELOT_AMBIENT + f Lavo; sq field_16442 OCELOT_DEATH + f Lavo; sr field_50103 OMINOUS_BOTTLE_DISPOSE + f Lavo; ss field_14809 PAINTING_BREAK + f Lavo; st field_14875 PAINTING_PLACE + f Lavo; su field_14997 PANDA_PRE_SNEEZE + f Lavo; sv field_15076 PANDA_SNEEZE + f Lavo; sw field_14604 PANDA_AMBIENT + f Lavo; sx field_15208 PANDA_DEATH + f Lavo; sy field_15106 PANDA_EAT + f Lavo; sz field_15035 PANDA_STEP + f Lavo; tA field_14615 PIG_AMBIENT + f Lavo; tB field_14689 PIG_DEATH + f Lavo; tC field_14750 PIG_HURT + f Lavo; tD field_14824 PIG_SADDLE + f Lavo; tE field_14894 PIG_STEP + f Lavo; tF field_22263 PIGLIN_ADMIRING_ITEM + f Lavo; tG field_22264 PIGLIN_AMBIENT + f Lavo; tH field_22265 PIGLIN_ANGRY + f Lavo; tI field_22266 PIGLIN_CELEBRATE + f Lavo; tJ field_22267 PIGLIN_DEATH + f Lavo; tK field_22268 PIGLIN_JEALOUS + f Lavo; tL field_22269 PIGLIN_HURT + f Ljm$c; t field_22459 AMBIENT_SOUL_SAND_VALLEY_MOOD + f Lavo; tM field_22270 PIGLIN_RETREAT + f Lavo; tN field_22271 PIGLIN_STEP + f Lavo; tO field_22272 PIGLIN_CONVERTED_TO_ZOMBIFIED + f Lavo; tP field_25728 PIGLIN_BRUTE_AMBIENT + f Lavo; tQ field_25729 PIGLIN_BRUTE_ANGRY + f Lavo; tR field_25730 PIGLIN_BRUTE_DEATH + f Lavo; tS field_25731 PIGLIN_BRUTE_HURT + f Lavo; tT field_25732 PIGLIN_BRUTE_STEP + f Lavo; tU field_25733 PIGLIN_BRUTE_CONVERTED_TO_ZOMBIFIED + f Lavo; tV field_14976 PILLAGER_AMBIENT + f Lavo; tW field_19150 PILLAGER_CELEBRATE + f Lavo; tX field_15049 PILLAGER_DEATH + f Lavo; tY field_15159 PILLAGER_HURT + f Lavo; tZ field_15228 PISTON_CONTRACT + f Lavo; ta field_24635 PARROT_IMITATE_PIGLIN + f Lavo; tb field_25727 PARROT_IMITATE_PIGLIN_BRUTE + f Lavo; tc field_18815 PARROT_IMITATE_PILLAGER + f Lavo; td field_18816 PARROT_IMITATE_RAVAGER + f Lavo; te field_14768 PARROT_IMITATE_SHULKER + f Lavo; tf field_14683 PARROT_IMITATE_SILVERFISH + f Lavo; tg field_14587 PARROT_IMITATE_SKELETON + f Lavo; th field_15098 PARROT_IMITATE_SLIME + f Lavo; ti field_15190 PARROT_IMITATE_SPIDER + f Lavo; tj field_14885 PARROT_IMITATE_STRAY + f Lavo; tk field_15032 PARROT_IMITATE_VEX + f Lavo; tl field_14790 PARROT_IMITATE_VINDICATOR + f Lavo; tm field_38059 PARROT_IMITATE_WARDEN + f Lavo; tn field_14796 PARROT_IMITATE_WITCH + f Lavo; to field_14555 PARROT_IMITATE_WITHER + f Lavo; tp field_15073 PARROT_IMITATE_WITHER_SKELETON + f Lavo; tq field_24633 PARROT_IMITATE_ZOGLIN + f Lavo; tr field_15220 PARROT_IMITATE_ZOMBIE + f Lavo; ts field_14676 PARROT_IMITATE_ZOMBIE_VILLAGER + f Lavo; tt field_14602 PARROT_STEP + f Lavo; tu field_14813 PHANTOM_AMBIENT + f Lavo; tv field_14729 PHANTOM_BITE + f Lavo; tw field_14974 PHANTOM_DEATH + f Lavo; tx field_14869 PHANTOM_FLAP + f Lavo; ty field_15149 PHANTOM_HURT + f Lavo; tz field_15238 PHANTOM_SWOOP + f Lavo; uA field_15036 POLAR_BEAR_STEP + f Lavo; uB field_14937 POLAR_BEAR_WARNING + f Lavo; uC field_28983 POLISHED_DEEPSLATE_BREAK + f Lavo; uD field_28984 POLISHED_DEEPSLATE_FALL + f Lavo; uE field_28985 POLISHED_DEEPSLATE_HIT + f Lavo; uF field_28986 POLISHED_DEEPSLATE_PLACE + f Lavo; uG field_28987 POLISHED_DEEPSLATE_STEP + f Lavo; uH field_14802 PORTAL_AMBIENT + f Lavo; uI field_14716 PORTAL_TRAVEL + f Lavo; uJ field_14669 PORTAL_TRIGGER + f Lavo; uK field_27848 POWDER_SNOW_BREAK + f Lavo; uL field_27849 POWDER_SNOW_FALL + f Ljm$c; u field_22460 AMBIENT_WARPED_FOREST_ADDITIONS + f Lavo; uM field_27850 POWDER_SNOW_HIT + f Lavo; uN field_27851 POWDER_SNOW_PLACE + f Lavo; uO field_27852 POWDER_SNOW_STEP + f Lavo; uP field_14553 PUFFER_FISH_AMBIENT + f Lavo; uQ field_15133 PUFFER_FISH_BLOW_OUT + f Lavo; uR field_15235 PUFFER_FISH_BLOW_UP + f Lavo; uS field_14888 PUFFER_FISH_DEATH + f Lavo; uT field_15004 PUFFER_FISH_FLOP + f Lavo; uU field_14748 PUFFER_FISH_HURT + f Lavo; uV field_14848 PUFFER_FISH_STING + f Lavo; uW field_14619 PUMPKIN_CARVE + f Lavo; uX field_14693 RABBIT_AMBIENT + f Lavo; uY field_15147 RABBIT_ATTACK + f Lavo; uZ field_14872 RABBIT_DEATH + f Lavo; ua field_15134 PISTON_EXTEND + f Lavo; ub field_15016 PLAYER_ATTACK_CRIT + f Lavo; uc field_14999 PLAYER_ATTACK_KNOCKBACK + f Lavo; ud field_14914 PLAYER_ATTACK_NODAMAGE + f Lavo; ue field_14840 PLAYER_ATTACK_STRONG + f Lavo; uf field_14706 PLAYER_ATTACK_SWEEP + f Lavo; ug field_14625 PLAYER_ATTACK_WEAK + f Lavo; uh field_14794 PLAYER_BIG_FALL + f Lavo; ui field_14726 PLAYER_BREATH + f Lavo; uj field_19149 PLAYER_BURP + f Lavo; uk field_14904 PLAYER_DEATH + f Lavo; ul field_15115 PLAYER_HURT + f Lavo; um field_15205 PLAYER_HURT_DROWN + f Lavo; un field_27853 PLAYER_HURT_FREEZE + f Lavo; uo field_14623 PLAYER_HURT_ON_FIRE + f Lavo; up field_17614 PLAYER_HURT_SWEET_BERRY_BUSH + f Lavo; uq field_14709 PLAYER_LEVELUP + f Lavo; ur field_14778 PLAYER_SMALL_FALL + f Lavo; us field_14810 PLAYER_SPLASH + f Lavo; ut field_14876 PLAYER_SPLASH_HIGH_SPEED + f Lavo; uu field_14998 PLAYER_SWIM + f Lavo; uv field_46945 PLAYER_TELEPORT + f Lavo; uw field_15078 POLAR_BEAR_AMBIENT + f Lavo; ux field_14605 POLAR_BEAR_AMBIENT_BABY + f Lavo; uy field_15209 POLAR_BEAR_DEATH + f Lavo; uz field_15107 POLAR_BEAR_HURT + f Lavo; vA field_28601 ROOTED_DIRT_BREAK + f Lavo; vB field_28602 ROOTED_DIRT_FALL + f Lavo; vC field_28603 ROOTED_DIRT_HIT + f Lavo; vD field_28604 ROOTED_DIRT_PLACE + f Lavo; vE field_28605 ROOTED_DIRT_STEP + f Lavo; vF field_15033 SALMON_AMBIENT + f Lavo; vG field_15123 SALMON_DEATH + f Lavo; vH field_14563 SALMON_FLOP + f Lavo; vI field_14638 SALMON_HURT + f Lavo; vJ field_15074 SAND_BREAK + f Lavo; vK field_14943 SAND_FALL + f Lavo; vL field_15221 SAND_HIT + f Ljm$c; v field_22461 AMBIENT_WARPED_FOREST_LOOP + f Lavo; vM field_15144 SAND_PLACE + f Lavo; vN field_14677 SAND_STEP + f Lavo; vO field_16509 SCAFFOLDING_BREAK + f Lavo; vP field_16510 SCAFFOLDING_FALL + f Lavo; vQ field_16506 SCAFFOLDING_HIT + f Lavo; vR field_16507 SCAFFOLDING_PLACE + f Lavo; vS field_16508 SCAFFOLDING_STEP + f Lavo; vT field_37357 SCULK_BLOCK_SPREAD + f Lavo; vU field_37358 SCULK_BLOCK_CHARGE + f Lavo; vV field_37359 SCULK_BLOCK_BREAK + f Lavo; vW field_37360 SCULK_BLOCK_FALL + f Lavo; vX field_37361 SCULK_BLOCK_HIT + f Lavo; vY field_37362 SCULK_BLOCK_PLACE + f Lavo; vZ field_37363 SCULK_BLOCK_STEP + f Lavo; va field_15164 RABBIT_HURT + f Lavo; vb field_15091 RABBIT_JUMP + f Ljm$c; vc field_17266 RAID_HORN + f Lavo; vd field_14639 RAVAGER_AMBIENT + f Lavo; ve field_15240 RAVAGER_ATTACK + f Lavo; vf field_19148 RAVAGER_CELEBRATE + f Lavo; vg field_15146 RAVAGER_DEATH + f Lavo; vh field_15007 RAVAGER_HURT + f Lavo; vi field_14929 RAVAGER_STEP + f Lavo; vj field_14822 RAVAGER_STUNNED + f Lavo; vk field_14733 RAVAGER_ROAR + f Lavo; vl field_24071 NETHER_GOLD_ORE_BREAK + f Lavo; vm field_24072 NETHER_GOLD_ORE_FALL + f Lavo; vn field_24073 NETHER_GOLD_ORE_HIT + f Lavo; vo field_24074 NETHER_GOLD_ORE_PLACE + f Lavo; vp field_24075 NETHER_GOLD_ORE_STEP + f Lavo; vq field_21937 NETHER_ORE_BREAK + f Lavo; vr field_21938 NETHER_ORE_FALL + f Lavo; vs field_21939 NETHER_ORE_HIT + f Lavo; vt field_21940 NETHER_ORE_PLACE + f Lavo; vu field_21941 NETHER_ORE_STEP + f Lavo; vv field_19199 REDSTONE_TORCH_BURNOUT + f Lavo; vw field_23115 RESPAWN_ANCHOR_AMBIENT + f Lavo; vx field_23116 RESPAWN_ANCHOR_CHARGE + f Ljm$c; vy field_23117 RESPAWN_ANCHOR_DEPLETE + f Lavo; vz field_23118 RESPAWN_ANCHOR_SET_SPAWN + f Lavo; wA field_14730 SHEEP_HURT + f Lavo; wB field_14975 SHEEP_SHEAR + f Lavo; wC field_14870 SHEEP_STEP + f Lavo; wD field_15150 SHIELD_BLOCK + f Lavo; wE field_15239 SHIELD_BREAK + f Lavo; wF field_21931 SHROOMLIGHT_BREAK + f Lavo; wG field_21932 SHROOMLIGHT_STEP + f Lavo; wH field_21933 SHROOMLIGHT_PLACE + f Lavo; wI field_21934 SHROOMLIGHT_HIT + f Lavo; wJ field_21935 SHROOMLIGHT_FALL + f Lavo; wK field_14616 SHOVEL_FLATTEN + f Lavo; wL field_14690 SHULKER_AMBIENT + f Ljm$c; w field_22462 AMBIENT_WARPED_FOREST_MOOD + f Lavo; wM field_14751 SHULKER_BOX_CLOSE + f Lavo; wN field_14825 SHULKER_BOX_OPEN + f Lavo; wO field_14895 SHULKER_BULLET_HIT + f Lavo; wP field_14977 SHULKER_BULLET_HURT + f Lavo; wQ field_15050 SHULKER_CLOSE + f Lavo; wR field_15160 SHULKER_DEATH + f Lavo; wS field_15229 SHULKER_HURT + f Lavo; wT field_15135 SHULKER_HURT_CLOSED + f Lavo; wU field_15017 SHULKER_OPEN + f Lavo; wV field_15000 SHULKER_SHOOT + f Lavo; wW field_14915 SHULKER_TELEPORT + f Lavo; wX field_14786 SILVERFISH_AMBIENT + f Lavo; wY field_14673 SILVERFISH_DEATH + f Lavo; wZ field_14593 SILVERFISH_HURT + f Lavo; wa field_37364 SCULK_CATALYST_BLOOM + f Lavo; wb field_37365 SCULK_CATALYST_BREAK + f Lavo; wc field_37366 SCULK_CATALYST_FALL + f Lavo; wd field_37367 SCULK_CATALYST_HIT + f Lavo; we field_37368 SCULK_CATALYST_PLACE + f Lavo; wf field_37369 SCULK_CATALYST_STEP + f Lavo; wg field_28081 SCULK_CLICKING + f Lavo; wh field_28082 SCULK_CLICKING_STOP + f Lavo; wi field_28083 SCULK_SENSOR_BREAK + f Lavo; wj field_28084 SCULK_SENSOR_FALL + f Lavo; wk field_28085 SCULK_SENSOR_HIT + f Lavo; wl field_28086 SCULK_SENSOR_PLACE + f Lavo; wm field_28087 SCULK_SENSOR_STEP + f Lavo; wn field_37347 SCULK_SHRIEKER_BREAK + f Lavo; wo field_37348 SCULK_SHRIEKER_FALL + f Lavo; wp field_37349 SCULK_SHRIEKER_HIT + f Lavo; wq field_37350 SCULK_SHRIEKER_PLACE + f Lavo; wr field_38060 SCULK_SHRIEKER_SHRIEK + f Lavo; ws field_37351 SCULK_SHRIEKER_STEP + f Lavo; wt field_37352 SCULK_VEIN_BREAK + f Lavo; wu field_37353 SCULK_VEIN_FALL + f Lavo; wv field_37354 SCULK_VEIN_HIT + f Lavo; ww field_37355 SCULK_VEIN_PLACE + f Lavo; wx field_37356 SCULK_VEIN_STEP + f Lavo; wy field_14603 SHEEP_AMBIENT + f Lavo; wz field_14814 SHEEP_DEATH + f Lavo; xA field_26971 SMALL_AMETHYST_BUD_PLACE + f Lavo; xB field_28612 SMALL_DRIPLEAF_BREAK + f Lavo; xC field_28613 SMALL_DRIPLEAF_FALL + f Lavo; xD field_28614 SMALL_DRIPLEAF_HIT + f Lavo; xE field_28615 SMALL_DRIPLEAF_PLACE + f Lavo; xF field_28616 SMALL_DRIPLEAF_STEP + f Lavo; xG field_21949 SOUL_SAND_BREAK + f Lavo; xH field_21950 SOUL_SAND_STEP + f Lavo; xI field_21951 SOUL_SAND_PLACE + f Lavo; xJ field_21942 SOUL_SAND_HIT + f Lavo; xK field_21943 SOUL_SAND_FALL + f Lavo; xL field_21944 SOUL_SOIL_BREAK + f Lavo; x field_14756 AMBIENT_UNDERWATER_ENTER + f Lavo; xM field_21945 SOUL_SOIL_STEP + f Lavo; xN field_21946 SOUL_SOIL_PLACE + f Lavo; xO field_21947 SOUL_SOIL_HIT + f Lavo; xP field_21948 SOUL_SOIL_FALL + f Ljm$c; xQ field_23060 SOUL_ESCAPE + f Lavo; xR field_28607 SPORE_BLOSSOM_BREAK + f Lavo; xS field_28608 SPORE_BLOSSOM_FALL + f Lavo; xT field_28609 SPORE_BLOSSOM_HIT + f Lavo; xU field_28610 SPORE_BLOSSOM_PLACE + f Lavo; xV field_28611 SPORE_BLOSSOM_STEP + f Lavo; xW field_23200 STRIDER_AMBIENT + f Lavo; xX field_23201 STRIDER_HAPPY + f Lavo; xY field_23202 STRIDER_RETREAT + f Lavo; xZ field_23203 STRIDER_DEATH + f Lavo; xa field_15084 SILVERFISH_STEP + f Lavo; xb field_15200 SKELETON_AMBIENT + f Lavo; xc field_28606 SKELETON_CONVERTED_TO_STRAY + f Lavo; xd field_14877 SKELETON_DEATH + f Lavo; xe field_14984 SKELETON_HORSE_AMBIENT + f Lavo; xf field_14721 SKELETON_HORSE_DEATH + f Lavo; xg field_14855 SKELETON_HORSE_HURT + f Lavo; xh field_14617 SKELETON_HORSE_SWIM + f Lavo; xi field_14686 SKELETON_HORSE_AMBIENT_WATER + f Lavo; xj field_15108 SKELETON_HORSE_GALLOP_WATER + f Lavo; xk field_14901 SKELETON_HORSE_JUMP_WATER + f Lavo; xl field_15182 SKELETON_HORSE_STEP_WATER + f Lavo; xm field_15069 SKELETON_HURT + f Lavo; xn field_14633 SKELETON_SHOOT + f Lavo; xo field_14548 SKELETON_STEP + f Lavo; xp field_14863 SLIME_ATTACK + f Lavo; xq field_14763 SLIME_DEATH + f Lavo; xr field_15014 SLIME_HURT + f Lavo; xs field_14919 SLIME_JUMP + f Lavo; xt field_15095 SLIME_SQUISH + f Lavo; xu field_15194 SLIME_BLOCK_BREAK + f Lavo; xv field_14560 SLIME_BLOCK_FALL + f Lavo; xw field_14640 SLIME_BLOCK_HIT + f Lavo; xx field_14788 SLIME_BLOCK_PLACE + f Lavo; xy field_15180 SLIME_BLOCK_STEP + f Lavo; xz field_26970 SMALL_AMETHYST_BUD_BREAK + f Lavo; yA field_14873 SNOWBALL_THROW + f Lavo; yB field_15165 SNOW_BREAK + f Lavo; yC field_15092 SNOW_FALL + f Lavo; yD field_14655 SNOW_GOLEM_AMBIENT + f Lavo; yE field_14594 SNOW_GOLEM_DEATH + f Lavo; yF field_14830 SNOW_GOLEM_HURT + f Lavo; yG field_14745 SNOW_GOLEM_SHOOT + f Lavo; yH field_22273 SNOW_GOLEM_SHEAR + f Lavo; yI field_15040 SNOW_HIT + f Lavo; yJ field_14945 SNOW_PLACE + f Lavo; yK field_15060 SNOW_STEP + f Lavo; yL field_15170 SPIDER_AMBIENT + f Lavo; y field_14828 AMBIENT_UNDERWATER_EXIT + f Lavo; yM field_14579 SPIDER_DEATH + f Lavo; yN field_14657 SPIDER_HURT + f Lavo; yO field_14760 SPIDER_STEP + f Lavo; yP field_14839 SPLASH_POTION_BREAK + f Lavo; yQ field_14910 SPLASH_POTION_THROW + f Lavo; yR field_45962 SPONGE_BREAK + f Lavo; yS field_45963 SPONGE_FALL + f Lavo; yT field_45964 SPONGE_HIT + f Lavo; yU field_45965 SPONGE_PLACE + f Lavo; yV field_45966 SPONGE_STEP + f Lavo; yW field_45062 SPONGE_ABSORB + f Lavo; yX field_26972 SPYGLASS_USE + f Lavo; yY field_26973 SPYGLASS_STOP_USING + f Lavo; yZ field_15034 SQUID_AMBIENT + f Lavo; ya field_23204 STRIDER_HURT + f Lavo; yb field_23205 STRIDER_STEP + f Lavo; yc field_23206 STRIDER_STEP_LAVA + f Lavo; yd field_23207 STRIDER_EAT + f Lavo; ye field_23798 STRIDER_SADDLE + f Lavo; yf field_14849 SLIME_DEATH_SMALL + f Lavo; yg field_14620 SLIME_HURT_SMALL + f Lavo; yh field_14694 SLIME_JUMP_SMALL + f Lavo; yi field_15148 SLIME_SQUISH_SMALL + f Lavo; yj field_22463 SMITHING_TABLE_USE + f Lavo; yk field_17618 SMOKER_SMOKE + f Lavo; yl field_42595 SNIFFER_STEP + f Lavo; ym field_42596 SNIFFER_EAT + f Lavo; yn field_42597 SNIFFER_IDLE + f Lavo; yo field_42598 SNIFFER_HURT + f Lavo; yp field_42599 SNIFFER_DEATH + f Lavo; yq field_42600 SNIFFER_DROP_SEED + f Lavo; yr field_42601 SNIFFER_SCENTING + f Lavo; ys field_42602 SNIFFER_SNIFFING + f Lavo; yt field_42603 SNIFFER_SEARCHING + f Lavo; yu field_42604 SNIFFER_DIGGING + f Lavo; yv field_42605 SNIFFER_DIGGING_STOP + f Lavo; yw field_42606 SNIFFER_HAPPY + f Lavo; yx field_44588 SNIFFER_EGG_PLOP + f Lavo; yy field_43165 SNIFFER_EGG_CRACK + f Lavo; yz field_43166 SNIFFER_EGG_HATCH + f Lavo; zA field_15213 TRIDENT_HIT + f Lavo; zB field_15104 TRIDENT_HIT_GROUND + f Lavo; zC field_14698 TRIDENT_RETURN + f Ljm; zD field_14606 TRIDENT_RIPTIDE_1 + f Ljm; zE field_14806 TRIDENT_RIPTIDE_2 + f Ljm; zF field_14717 TRIDENT_RIPTIDE_3 + f Ljm; zG field_15001 TRIDENT_THROW + f Ljm; zH field_14896 TRIDENT_THUNDER + f Lavo; zI field_14859 TRIPWIRE_ATTACH + f Lavo; zJ field_14787 TRIPWIRE_CLICK_OFF + f Lavo; zK field_14674 TRIPWIRE_CLICK_ON + f Lavo; zL field_14595 TRIPWIRE_DETACH + f Lavo; z field_14951 AMBIENT_UNDERWATER_LOOP + f Lavo; zM field_15085 TROPICAL_FISH_AMBIENT + f Lavo; zN field_15201 TROPICAL_FISH_DEATH + f Lavo; zO field_14878 TROPICAL_FISH_FLOP + f Lavo; zP field_14985 TROPICAL_FISH_HURT + f Lavo; zQ field_26974 TUFF_BREAK + f Lavo; zR field_26975 TUFF_STEP + f Lavo; zS field_26976 TUFF_PLACE + f Lavo; zT field_26977 TUFF_HIT + f Lavo; zU field_26978 TUFF_FALL + f Lavo; zV field_46946 TUFF_BRICKS_BREAK + f Lavo; zW field_46947 TUFF_BRICKS_FALL + f Lavo; zX field_46948 TUFF_BRICKS_HIT + f Lavo; zY field_46949 TUFF_BRICKS_PLACE + f Lavo; zZ field_46950 TUFF_BRICKS_STEP + f Lavo; za field_15124 SQUID_DEATH + f Lavo; zb field_15212 SQUID_HURT + f Lavo; zc field_15121 SQUID_SQUIRT + f Lavo; zd field_15026 STONE_BREAK + f Lavo; ze field_14954 STONE_BUTTON_CLICK_OFF + f Lavo; zf field_14791 STONE_BUTTON_CLICK_ON + f Lavo; zg field_14723 STONE_FALL + f Lavo; zh field_14658 STONE_HIT + f Lavo; zi field_14574 STONE_PLACE + f Lavo; zj field_15116 STONE_PRESSURE_PLATE_CLICK_OFF + f Lavo; zk field_15217 STONE_PRESSURE_PLATE_CLICK_ON + f Lavo; zl field_14921 STONE_STEP + f Lavo; zm field_15041 STRAY_AMBIENT + f Lavo; zn field_14771 STRAY_DEATH + f Lavo; zo field_14805 STRAY_HURT + f Lavo; zp field_14540 STRAY_STEP + f Lavo; zq field_17615 SWEET_BERRY_BUSH_BREAK + f Lavo; zr field_17616 SWEET_BERRY_BUSH_PLACE + f Lavo; zs field_17617 SWEET_BERRY_BUSH_PICK_BERRIES + f Lavo; zt field_37370 TADPOLE_DEATH + f Lavo; zu field_37372 TADPOLE_FLOP + f Lavo; zv field_37373 TADPOLE_GROW_UP + f Lavo; zw field_37374 TADPOLE_HURT + f Lavo; zx field_14663 THORNS_HIT + f Lavo; zy field_15079 TNT_PRIMED + f Lavo; zz field_14931 TOTEM_USE + m ()Lcom/google/common/collect/ImmutableList; a method_43516 registerGoatHornSoundVariants + m (I)Ljm$c; a method_43517 method_43517 + m (Lakr;)Lavo; a method_47962 register + m (Lakr;Lakr;)Lavo; a method_47963 register + m (Lakr;Lakr;F)Ljm; a method_43045 register + m (Ljava/lang/String;)Lavo; a method_14838 register + m (Lakr;)Ljm$c; b method_47964 registerForHolder + m (Lakr;Lakr;)Ljm$c; b method_47965 registerForHolder + m (Ljava/lang/String;)Ljm$c; b method_47966 registerForHolder + m ()V + m ()V +c avq net/minecraft/class_3419 net/minecraft/sounds/SoundSource + f Lavq; a field_15250 MASTER + f Lavq; b field_15253 MUSIC + f Lavq; c field_15247 RECORDS + f Lavq; d field_15252 WEATHER + f Lavq; e field_15245 BLOCKS + f Lavq; f field_15251 HOSTILE + f Lavq; g field_15254 NEUTRAL + f Lavq; h field_15248 PLAYERS + f Lavq; i field_15256 AMBIENT + f Lavq; j field_15246 VOICE + f Ljava/lang/String; k field_15249 name + f [Lavq; l field_15255 $VALUES + m ()Ljava/lang/String; a method_14840 getName + m ()[Lavq; b method_36586 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c avr net/minecraft/class_5992 net/minecraft/sounds/package-info +c avs net/minecraft/class_3439 net/minecraft/stats/RecipeBook + f Ljava/util/Set; a field_15300 known + f Ljava/util/Set; b field_15295 highlight + f Lavt; c field_25734 bookSettings + m ()Lavt; a method_30173 getBookSettings + m (Lakr;)V a method_14881 add + m (Lavs;)V a method_14875 copyOverData + m (Lavt;)V a method_30174 setBookSettings + m (Lcri;)Z a method_14880 isFiltering + m (Lcrj;)Z a method_14887 isOpen + m (Lcrj;Z)V a method_14884 setOpen + m (Lcrj;ZZ)V a method_30175 setBookSetting + m (Lczb;)V a method_14876 add + m (Lakr;)Z b method_22845 contains + m (Lcrj;)Z b method_30176 isFiltering + m (Lcrj;Z)V b method_30177 setFiltering + m (Lczb;)Z b method_14878 contains + m (Lakr;)V c method_14879 remove + m (Lczb;)V c method_14893 remove + m (Lakr;)V d method_14877 addHighlight + m (Lczb;)Z d method_14883 willHighlight + m (Lczb;)V e method_14886 removeHighlight + m (Lczb;)V f method_14885 addHighlight + m ()V +c avt net/minecraft/class_5411 net/minecraft/stats/RecipeBookSettings + f Ljava/util/Map; a field_25735 TAG_FIELDS + f Ljava/util/Map; b field_25736 states + m ()Lavt; a method_30178 copy + m (Lavt;)V a method_30179 replaceFrom + m (Lcrj;)Z a method_30180 isOpen + m (Lcrj;Z)V a method_30181 setOpen + m (Ljava/util/EnumMap;)V a method_30182 method_30182 + m (Lub;)Lavt; a method_30183 read + m (Lub;Lcrj;Lcom/mojang/datafixers/util/Pair;)V a method_30184 method_30184 + m (Lub;Ljava/util/Map;Lcrj;Lcom/mojang/datafixers/util/Pair;)V a method_30185 method_30185 + m (Lvw;)Lavt; a method_30186 read + m (Lcrj;)Z b method_30187 isFiltering + m (Lcrj;Z)V b method_30188 setFiltering + m (Lub;)V b method_30189 write + m (Lvw;)V b method_30190 write + m (Ljava/util/Map;)V + m ()V + m ()V +c avt$a net/minecraft/class_5411$class_5412 net/minecraft/stats/RecipeBookSettings$TypeSettings + f Z a field_25737 open + f Z b field_25738 filtering + m ()Lavt$a; a method_30191 copy + m (ZZ)V +c avu net/minecraft/class_3441 net/minecraft/stats/ServerRecipeBook + f Ljava/lang/String; c field_29820 RECIPE_BOOK_TAG + f Lorg/slf4j/Logger; d field_15303 LOGGER + m (Laee$a;Laqv;Ljava/util/List;)V a method_14899 sendRecipes + m (Laqv;)V a method_14904 sendInitialRecipeBook + m (Ljava/util/Collection;Laqv;)I a method_14903 addRecipes + m (Lub;Lczd;)V a method_14901 fromNbt + m (Luh;Ljava/util/function/Consumer;Lczd;)V a method_20732 loadRecipes + m ()Lub; b method_14902 toNbt + m (Ljava/util/Collection;Laqv;)I b method_14900 removeRecipes + m ()V + m ()V +c avv net/minecraft/class_3442 net/minecraft/stats/ServerStatsCounter + f Lorg/slf4j/Logger; b field_15309 LOGGER + f Lnet/minecraft/server/MinecraftServer; c field_15308 server + f Ljava/io/File; d field_15305 file + f Ljava/util/Set; e field_15307 dirty + m ()V a method_14912 save + m (Laqv;)V a method_14910 sendStats + m (Lavy;)Lcom/google/gson/JsonObject; a method_14913 method_14913 + m (Lavy;Ljava/lang/String;)Ljava/util/Optional; a method_14905 getStat + m (Lcom/google/gson/JsonObject;)Lub; a method_14908 fromJson + m (Lcom/mojang/datafixers/DataFixer;Ljava/lang/String;)V a method_14906 parseLocal + m (Ljava/lang/String;)V a method_17992 method_17992 + m (Lub;Ljava/lang/String;Lavw;)V a method_17990 method_17990 + m (Lub;Ljava/lang/String;Lavy;)V a method_17991 method_17991 + m ()Ljava/lang/String; b method_14911 toJson + m (Lavw;)Lakr; b method_14907 getKey + m (Ljava/lang/String;)V b method_17993 method_17993 + m ()V c method_14914 markAllDirty + m ()Ljava/util/Set; d method_14909 getDirty + m (Lnet/minecraft/server/MinecraftServer;Ljava/io/File;)V + m ()V +c avw net/minecraft/class_3445 net/minecraft/stats/Stat + f Lyx; a field_48280 STREAM_CODEC + f Lavx; o field_15319 formatter + f Ljava/lang/Object; p field_15320 value + f Lavy; q field_15321 type + m ()Lavy; a method_14949 getType + m (I)Ljava/lang/String; a method_14953 format + m (Lakr;)Ljava/lang/String; a method_14952 locationToKey + m (Lavy;Ljava/lang/Object;)Ljava/lang/String; a method_14950 buildName + m ()Ljava/lang/Object; b method_14951 getValue + m (Lavy;Ljava/lang/Object;Lavx;)V + m ()V +c avx net/minecraft/class_3446 net/minecraft/stats/StatFormatter + f Ljava/text/DecimalFormat; a field_16976 DECIMAL_FORMAT + f Lavx; b field_16975 DEFAULT + f Lavx; c field_16978 DIVIDE_BY_TEN + f Lavx; d field_16977 DISTANCE + f Lavx; e field_16979 TIME + m (I)Ljava/lang/String; a method_16819 method_16819 + m (Ljava/text/DecimalFormat;)V a method_16817 method_16817 + m (I)Ljava/lang/String; b method_16816 method_16816 + m (I)Ljava/lang/String; c method_16818 method_16818 + m ()V +c avy net/minecraft/class_3448 net/minecraft/stats/StatType + f Ljz; a field_15323 registry + f Ljava/util/Map; b field_15324 map + f Lwz; c field_26382 displayName + f Lyx; d field_48281 streamCodec + m ()Lyx; a method_56054 streamCodec + m (Lavx;Ljava/lang/Object;)Lavw; a method_14961 method_14961 + m (Ljava/lang/Object;)Z a method_14958 contains + m (Ljava/lang/Object;Lavx;)Lavw; a method_14955 get + m ()Ljz; b method_14959 getRegistry + m (Ljava/lang/Object;)Lavw; b method_14956 get + m ()Lwz; c method_30739 getDisplayName + m (Ljz;Lwz;)V +c avz net/minecraft/class_3468 net/minecraft/stats/Stats + f Lakr; A field_15396 HORSE_ONE_CM + f Lakr; B field_15374 AVIATE_ONE_CM + f Lakr; C field_15423 SWIM_ONE_CM + f Lakr; D field_24458 STRIDER_ONE_CM + f Lakr; E field_15428 JUMP + f Lakr; F field_15406 DROP + f Lakr; G field_15399 DAMAGE_DEALT + f Lakr; H field_15408 DAMAGE_DEALT_ABSORBED + f Lakr; I field_15397 DAMAGE_DEALT_RESISTED + f Lakr; J field_15388 DAMAGE_TAKEN + f Lakr; K field_15380 DAMAGE_BLOCKED_BY_SHIELD + f Lakr; L field_15365 DAMAGE_ABSORBED + f Lakr; M field_15425 DAMAGE_RESISTED + f Lakr; N field_15421 DEATHS + f Lakr; O field_15414 MOB_KILLS + f Lakr; P field_15410 ANIMALS_BRED + f Lakr; Q field_15404 PLAYER_KILLS + f Lakr; R field_15391 FISH_CAUGHT + f Lakr; S field_15384 TALKED_TO_VILLAGER + f Lakr; T field_15378 TRADED_WITH_VILLAGER + f Lakr; U field_15369 EAT_CAKE_SLICE + f Lakr; V field_15430 FILL_CAULDRON + f Lakr; W field_15373 USE_CAULDRON + f Lakr; X field_15382 CLEAN_ARMOR + f Lakr; Y field_15390 CLEAN_BANNER + f Lakr; Z field_15398 CLEAN_SHULKER_BOX + f Lakr; aA field_19256 RAID_TRIGGER + f Lakr; aB field_19257 RAID_WIN + f Lakr; aC field_21778 INTERACT_WITH_ANVIL + f Lakr; aD field_21779 INTERACT_WITH_GRINDSTONE + f Lakr; aE field_22413 TARGET_HIT + f Lakr; aF field_22464 INTERACT_WITH_SMITHING_TABLE + f Lavy; a field_15427 BLOCK_MINED + f Lakr; aa field_15407 INTERACT_WITH_BREWINGSTAND + f Lakr; ab field_15416 INTERACT_WITH_BEACON + f Lakr; ac field_15367 INSPECT_DROPPER + f Lakr; ad field_15366 INSPECT_HOPPER + f Lakr; ae field_15371 INSPECT_DISPENSER + f Lakr; af field_15385 PLAY_NOTEBLOCK + f Lakr; ag field_15393 TUNE_NOTEBLOCK + f Lakr; ah field_15412 POT_FLOWER + f Lakr; ai field_15402 TRIGGER_TRAPPED_CHEST + f Lakr; aj field_15424 OPEN_ENDERCHEST + f Lakr; ak field_15420 ENCHANT_ITEM + f Lakr; al field_15375 PLAY_RECORD + f Lakr; am field_15379 INTERACT_WITH_FURNACE + f Lakr; an field_15368 INTERACT_WITH_CRAFTING_TABLE + f Lakr; ao field_15395 OPEN_CHEST + f Lakr; ap field_15381 SLEEP_IN_BED + f Lakr; aq field_15418 OPEN_SHULKER_BOX + f Lakr; ar field_17271 OPEN_BARREL + f Lakr; as field_17272 INTERACT_WITH_BLAST_FURNACE + f Lakr; at field_17273 INTERACT_WITH_SMOKER + f Lakr; au field_17485 INTERACT_WITH_LECTERN + f Lakr; av field_17486 INTERACT_WITH_CAMPFIRE + f Lakr; aw field_19252 INTERACT_WITH_CARTOGRAPHY_TABLE + f Lakr; ax field_19253 INTERACT_WITH_LOOM + f Lakr; ay field_19254 INTERACT_WITH_STONECUTTER + f Lakr; az field_19255 BELL_RING + f Lavy; b field_15370 ITEM_CRAFTED + f Lavy; c field_15372 ITEM_USED + f Lavy; d field_15383 ITEM_BROKEN + f Lavy; e field_15392 ITEM_PICKED_UP + f Lavy; f field_15405 ITEM_DROPPED + f Lavy; g field_15403 ENTITY_KILLED + f Lavy; h field_15411 ENTITY_KILLED_BY + f Lavy; i field_15419 CUSTOM + f Lakr; j field_15389 LEAVE_GAME + f Lakr; k field_15417 PLAY_TIME + f Lakr; l field_33558 TOTAL_WORLD_TIME + f Lakr; m field_15400 TIME_SINCE_DEATH + f Lakr; n field_15429 TIME_SINCE_REST + f Lakr; o field_15422 CROUCH_TIME + f Lakr; p field_15377 WALK_ONE_CM + f Lakr; q field_15376 CROUCH_ONE_CM + f Lakr; r field_15364 SPRINT_ONE_CM + f Lakr; s field_15394 WALK_ON_WATER_ONE_CM + f Lakr; t field_15386 FALL_ONE_CM + f Lakr; u field_15413 CLIMB_ONE_CM + f Lakr; v field_15426 FLY_ONE_CM + f Lakr; w field_15401 WALK_UNDER_WATER_ONE_CM + f Lakr; x field_15409 MINECART_ONE_CM + f Lakr; y field_15415 BOAT_ONE_CM + f Lakr; z field_15387 PIG_ONE_CM + m (Ljava/lang/String;Lavx;)Lakr; a method_15021 makeCustomStat + m (Ljava/lang/String;Ljz;)Lavy; a method_15020 makeRegistryStatType + m ()V + m ()V +c awa net/minecraft/class_3469 net/minecraft/stats/StatsCounter + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; a field_15431 stats + m (Lavw;)I a method_15025 getValue + m (Lavy;Ljava/lang/Object;)I a method_15024 getValue + m (Lcmx;Lavw;I)V a method_15023 setValue + m (Lcmx;Lavw;I)V b method_15022 increment + m ()V +c awb net/minecraft/class_5993 net/minecraft/stats/package-info +c awc net/minecraft/class_7440 net/minecraft/tags/BannerPatternTags + f Lawu; a field_39097 NO_ITEM_REQUIRED + f Lawu; b field_39098 PATTERN_ITEM_FLOWER + f Lawu; c field_39099 PATTERN_ITEM_CREEPER + f Lawu; d field_39100 PATTERN_ITEM_SKULL + f Lawu; e field_39101 PATTERN_ITEM_MOJANG + f Lawu; f field_39102 PATTERN_ITEM_GLOBE + f Lawu; g field_39103 PATTERN_ITEM_PIGLIN + f Lawu; h field_49786 PATTERN_ITEM_FLOW + f Lawu; i field_49787 PATTERN_ITEM_GUSTER + m (Ljava/lang/String;)Lawu; a method_43675 create + m ()V + m ()V +c awd net/minecraft/class_6908 net/minecraft/tags/BiomeTags + f Lawu; A field_36530 HAS_RUINED_PORTAL_JUNGLE + f Lawu; B field_36531 HAS_RUINED_PORTAL_OCEAN + f Lawu; C field_36532 HAS_RUINED_PORTAL_SWAMP + f Lawu; D field_36533 HAS_RUINED_PORTAL_MOUNTAIN + f Lawu; E field_36492 HAS_RUINED_PORTAL_STANDARD + f Lawu; F field_36493 HAS_SHIPWRECK_BEACHED + f Lawu; G field_36494 HAS_SHIPWRECK + f Lawu; H field_36502 HAS_STRONGHOLD + f Lawu; I field_47213 HAS_TRIAL_CHAMBERS + f Lawu; J field_36495 HAS_SWAMP_HUT + f Lawu; K field_36496 HAS_VILLAGE_DESERT + f Lawu; L field_36497 HAS_VILLAGE_PLAINS + f Lawu; M field_36498 HAS_VILLAGE_SAVANNA + f Lawu; N field_36499 HAS_VILLAGE_SNOWY + f Lawu; O field_36500 HAS_VILLAGE_TAIGA + f Lawu; P field_43168 HAS_TRAIL_RUINS + f Lawu; Q field_36501 HAS_WOODLAND_MANSION + f Lawu; R field_36503 HAS_NETHER_FORTRESS + f Lawu; S field_36504 HAS_NETHER_FOSSIL + f Lawu; T field_36505 HAS_BASTION_REMNANT + f Lawu; U field_38372 HAS_ANCIENT_CITY + f Lawu; V field_36506 HAS_RUINED_PORTAL_NETHER + f Lawu; W field_36507 HAS_END_CITY + f Lawu; X field_37376 REQUIRED_OCEAN_MONUMENT_SURROUNDING + f Lawu; Y field_39444 MINESHAFT_BLOCKING + f Lawu; Z field_37377 PLAYS_UNDERWATER_MUSIC + f Lawu; a field_36508 IS_DEEP_OCEAN + f Lawu; aa field_37378 HAS_CLOSER_WATER_FOG + f Lawu; ab field_37379 WATER_ON_MAP_OUTLINES + f Lawu; ac field_37380 PRODUCES_CORALS_FROM_BONEMEAL + f Lawu; ad field_41752 INCREASED_FIRE_BURNOUT + f Lawu; ae field_41753 SNOW_GOLEM_MELTS + f Lawu; af field_37381 WITHOUT_ZOMBIE_SIEGES + f Lawu; ag field_37382 WITHOUT_PATROL_SPAWNS + f Lawu; ah field_37383 WITHOUT_WANDERING_TRADER_SPAWNS + f Lawu; ai field_37384 SPAWNS_COLD_VARIANT_FROGS + f Lawu; aj field_37385 SPAWNS_WARM_VARIANT_FROGS + f Lawu; ak field_41754 SPAWNS_GOLD_RABBITS + f Lawu; al field_41755 SPAWNS_WHITE_RABBITS + f Lawu; am field_37387 REDUCED_WATER_AMBIENT_SPAWNS + f Lawu; an field_37388 ALLOWS_TROPICAL_FISH_SPAWNS_AT_ANY_HEIGHT + f Lawu; ao field_37389 POLAR_BEARS_SPAWN_ON_ALTERNATE_BLOCKS + f Lawu; ap field_37390 MORE_FREQUENT_DROWNED_SPAWNS + f Lawu; aq field_37391 ALLOWS_SURFACE_SLIME_SPAWNS + f Lawu; ar field_41756 SPAWNS_SNOW_FOXES + f Lawu; b field_36509 IS_OCEAN + f Lawu; c field_36510 IS_BEACH + f Lawu; d field_36511 IS_RIVER + f Lawu; e field_36512 IS_MOUNTAIN + f Lawu; f field_36513 IS_BADLANDS + f Lawu; g field_36514 IS_HILL + f Lawu; h field_36515 IS_TAIGA + f Lawu; i field_36516 IS_JUNGLE + f Lawu; j field_36517 IS_FOREST + f Lawu; k field_37392 IS_SAVANNA + f Lawu; l field_37393 IS_OVERWORLD + f Lawu; m field_36518 IS_NETHER + f Lawu; n field_37394 IS_END + f Lawu; o field_37395 STRONGHOLD_BIASED_TO + f Lawu; p field_36519 HAS_BURIED_TREASURE + f Lawu; q field_36520 HAS_DESERT_PYRAMID + f Lawu; r field_36521 HAS_IGLOO + f Lawu; s field_36522 HAS_JUNGLE_TEMPLE + f Lawu; t field_36523 HAS_MINESHAFT + f Lawu; u field_36524 HAS_MINESHAFT_MESA + f Lawu; v field_36525 HAS_OCEAN_MONUMENT + f Lawu; w field_36526 HAS_OCEAN_RUIN_COLD + f Lawu; x field_36527 HAS_OCEAN_RUIN_WARM + f Lawu; y field_36528 HAS_PILLAGER_OUTPOST + f Lawu; z field_36529 HAS_RUINED_PORTAL_DESERT + m (Ljava/lang/String;)Lawu; a method_40434 create + m ()V + m ()V +c awe net/minecraft/class_3481 net/minecraft/tags/BlockTags + f Lawu; A field_15474 JUNGLE_LOGS + f Lawu; B field_15489 SPRUCE_LOGS + f Lawu; C field_37401 MANGROVE_LOGS + f Lawu; D field_21955 CRIMSON_STEMS + f Lawu; E field_21956 WARPED_STEMS + f Lawu; F field_40986 BAMBOO_BLOCKS + f Lawu; G field_21954 WART_BLOCKS + f Lawu; H field_15501 BANNERS + f Lawu; I field_15466 SAND + f Lawu; J field_42968 SMELTS_TO_GLASS + f Lawu; K field_15459 STAIRS + f Lawu; L field_15469 SLABS + f Lawu; M field_15504 WALLS + f Lawu; N field_15486 ANVIL + f Lawu; O field_15463 RAILS + f Lawu; P field_15503 LEAVES + f Lawu; Q field_15487 TRAPDOORS + f Lawu; R field_15480 SMALL_FLOWERS + f Lawu; S field_16443 BEDS + f Lawu; T field_16584 FENCES + f Lawu; U field_20338 TALL_FLOWERS + f Lawu; V field_20339 FLOWERS + f Lawu; W field_22465 PIGLIN_REPELLENTS + f Lawu; X field_23062 GOLD_ORES + f Lawu; Y field_28988 IRON_ORES + f Lawu; Z field_28989 DIAMOND_ORES + f Lawu; aA field_40104 WALL_HANGING_SIGNS + f Lawu; aB field_40105 ALL_HANGING_SIGNS + f Lawu; aC field_41282 ALL_SIGNS + f Lawu; aD field_17753 DRAGON_IMMUNE + f Lawu; aE field_37396 DRAGON_TRANSPARENT + f Lawu; aF field_17754 WITHER_IMMUNE + f Lawu; aG field_22274 WITHER_SUMMON_BASE_BLOCKS + f Lawu; aH field_20340 BEEHIVES + f Lawu; aI field_20341 CROPS + f Lawu; aJ field_20342 BEE_GROWABLES + f Lawu; aK field_21780 PORTALS + f Lawu; aL field_21952 FIRE + f Lawu; a field_15481 WOOL + f Lawu; aM field_21953 NYLIUM + f Lawu; aN field_22275 BEACON_BASE_BLOCKS + f Lawu; aO field_23063 SOUL_SPEED_BLOCKS + f Lawu; aP field_22276 WALL_POST_OVERRIDE + f Lawu; aQ field_22414 CLIMBABLE + f Lawu; aR field_36327 FALL_DAMAGE_RESETTING + f Lawu; aS field_21490 SHULKER_BOXES + f Lawu; aT field_22466 HOGLIN_REPELLENTS + f Lawu; aU field_23119 SOUL_FIRE_BASE_BLOCKS + f Lawu; aV field_23209 STRIDER_WARM_BLOCKS + f Lawu; aW field_23799 CAMPFIRES + f Lawu; aX field_23800 GUARDED_BY_PIGLINS + f Lawu; aY field_24459 PREVENT_MOB_SPAWNING_INSIDE + f Lawu; aZ field_25147 FENCE_GATES + f Lawu; aa field_28990 REDSTONE_ORES + f Lawu; ab field_28991 LAPIS_ORES + f Lawu; ac field_29193 COAL_ORES + f Lawu; ad field_29194 EMERALD_ORES + f Lawu; ae field_29195 COPPER_ORES + f Lawu; af field_26983 CANDLES + f Lawu; ag field_29822 DIRT + f Lawu; ah field_36265 TERRACOTTA + f Lawu; ai field_49050 BADLANDS_TERRACOTTA + f Lawu; aj field_45063 CONCRETE_POWDER + f Lawu; ak field_38834 COMPLETES_FIND_TREE_TUTORIAL + f Lawu; al field_15470 FLOWER_POTS + f Lawu; am field_15460 ENDERMAN_HOLDABLE + f Lawu; an field_15467 ICE + f Lawu; ao field_15478 VALID_SPAWN + f Lawu; ap field_15490 IMPERMEABLE + f Lawu; aq field_15496 UNDERWATER_BONEMEALS + f Lawu; ar field_15461 CORAL_BLOCKS + f Lawu; as field_15476 WALL_CORALS + f Lawu; at field_15483 CORAL_PLANTS + f Lawu; au field_15488 CORALS + f Lawu; av field_15497 BAMBOO_PLANTABLE_ON + f Lawu; aw field_15472 STANDING_SIGNS + f Lawu; ax field_15492 WALL_SIGNS + f Lawu; ay field_15500 SIGNS + f Lawu; az field_40103 CEILING_HANGING_SIGNS + f Lawu; bA field_29823 SNOW + f Lawu; bB field_33713 MINEABLE_WITH_AXE + f Lawu; bC field_33714 MINEABLE_WITH_HOE + f Lawu; bD field_33715 MINEABLE_WITH_PICKAXE + f Lawu; bE field_33716 MINEABLE_WITH_SHOVEL + f Lawu; bF field_44469 SWORD_EFFICIENT + f Lawu; bG field_33717 NEEDS_DIAMOND_TOOL + f Lawu; bH field_33718 NEEDS_IRON_TOOL + f Lawu; bI field_33719 NEEDS_STONE_TOOL + f Lawu; bJ field_49925 INCORRECT_FOR_NETHERITE_TOOL + f Lawu; bK field_49926 INCORRECT_FOR_DIAMOND_TOOL + f Lawu; bL field_49927 INCORRECT_FOR_IRON_TOOL + f Lawu; b field_15471 PLANKS + f Lawu; bM field_49928 INCORRECT_FOR_STONE_TOOL + f Lawu; bN field_49929 INCORRECT_FOR_GOLD_TOOL + f Lawu; bO field_49930 INCORRECT_FOR_WOODEN_TOOL + f Lawu; bP field_33757 FEATURES_CANNOT_REPLACE + f Lawu; bQ field_33862 LAVA_POOL_STONE_CANNOT_REPLACE + f Lawu; bR field_33863 GEODE_INVALID_BLOCKS + f Lawu; bS field_37398 FROG_PREFER_JUMP_TO + f Lawu; bT field_37399 SCULK_REPLACEABLE + f Lawu; bU field_37400 SCULK_REPLACEABLE_WORLD_GEN + f Lawu; bV field_38374 ANCIENT_CITY_REPLACEABLE + f Lawu; bW field_43169 VIBRATION_RESONATORS + f Lawu; bX field_35567 ANIMALS_SPAWNABLE_ON + f Lawu; bY field_48282 ARMADILLO_SPAWNABLE_ON + f Lawu; bZ field_35568 AXOLOTLS_SPAWNABLE_ON + f Lawu; ba field_25148 UNSTABLE_BOTTOM_CENTER + f Lawu; bb field_25739 MUSHROOM_GROW_BLOCK + f Lawu; bc field_25588 INFINIBURN_OVERWORLD + f Lawu; bd field_25589 INFINIBURN_NETHER + f Lawu; be field_25590 INFINIBURN_END + f Lawu; bf field_25806 BASE_STONE_OVERWORLD + f Lawu; bg field_28992 STONE_ORE_REPLACEABLES + f Lawu; bh field_28993 DEEPSLATE_ORE_REPLACEABLES + f Lawu; bi field_25807 BASE_STONE_NETHER + f Lawu; bj field_38832 OVERWORLD_CARVER_REPLACEABLES + f Lawu; bk field_38833 NETHER_CARVER_REPLACEABLES + f Lawu; bl field_26984 CANDLE_CAKES + f Lawu; bm field_26985 CAULDRONS + f Lawu; bn field_26986 CRYSTAL_SOUND_BLOCKS + f Lawu; bo field_28040 INSIDE_STEP_SOUND_BLOCKS + f Lawu; bp field_43170 COMBINATION_STEP_SOUND_BLOCKS + f Lawu; bq field_45064 CAMEL_SAND_STEP_SOUND_BLOCKS + f Lawu; br field_28088 OCCLUDES_VIBRATION_SIGNALS + f Lawu; bs field_38835 DAMPENS_VIBRATIONS + f Lawu; bt field_28089 DRIPSTONE_REPLACEABLE + f Lawu; bu field_28621 CAVE_VINES + f Lawu; bv field_28622 MOSS_REPLACEABLE + f Lawu; bw field_29196 LUSH_GROUND_REPLACEABLE + f Lawu; bx field_36268 AZALEA_ROOT_REPLACEABLE + f Lawu; by field_33641 SMALL_DRIPLEAF_PLACEABLE + f Lawu; bz field_35443 BIG_DRIPLEAF_PLACEABLE + f Lawu; cA field_49147 DOES_NOT_BLOCK_HOPPERS + f Lawu; cB field_51989 AIR + f Lawu; c field_15465 STONE_BRICKS + f Lawu; ca field_35569 GOATS_SPAWNABLE_ON + f Lawu; cb field_35570 MOOSHROOMS_SPAWNABLE_ON + f Lawu; cc field_35571 PARROTS_SPAWNABLE_ON + f Lawu; cd field_35572 POLAR_BEARS_SPAWNABLE_ON_ALTERNATE + f Lawu; ce field_35573 RABBITS_SPAWNABLE_ON + f Lawu; cf field_35574 FOXES_SPAWNABLE_ON + f Lawu; cg field_35575 WOLVES_SPAWNABLE_ON + f Lawu; ch field_38928 FROGS_SPAWNABLE_ON + f Lawu; ci field_36266 AZALEA_GROWS_ON + f Lawu; cj field_37397 CONVERTABLE_TO_MUD + f Lawu; ck field_38692 MANGROVE_LOGS_CAN_GROW_THROUGH + f Lawu; cl field_38693 MANGROVE_ROOTS_CAN_GROW_THROUGH + f Lawu; cm field_38694 DEAD_BUSH_MAY_PLACE_ON + f Lawu; cn field_39029 SNAPS_GOAT_HORN + f Lawu; co field_44470 REPLACEABLE_BY_TREES + f Lawu; cp field_39104 SNOW_LAYER_CANNOT_SURVIVE_ON + f Lawu; cq field_39105 SNOW_LAYER_CAN_SURVIVE_ON + f Lawu; cr field_40107 INVALID_SPAWN_INSIDE + f Lawu; cs field_42607 SNIFFER_DIGGABLE_BLOCK + f Lawu; ct field_43171 SNIFFER_EGG_HATCH_BOOST + f Lawu; cu field_43172 TRAIL_RUINS_REPLACEABLE + f Lawu; cv field_44471 REPLACEABLE + f Lawu; cw field_44472 ENCHANTMENT_POWER_PROVIDER + f Lawu; cx field_44473 ENCHANTMENT_POWER_TRANSMITTER + f Lawu; cy field_44589 MAINTAINS_FARMLAND + f Lawu; cz field_49051 BLOCKS_WIND_CHARGE_EXPLOSIONS + f Lawu; d field_15499 WOODEN_BUTTONS + f Lawu; e field_44590 STONE_BUTTONS + f Lawu; f field_15493 BUTTONS + f Lawu; g field_15479 WOOL_CARPETS + f Lawu; h field_15494 WOODEN_DOORS + f Lawu; i field_52288 MOB_INTERACTABLE_DOORS + f Lawu; j field_15502 WOODEN_STAIRS + f Lawu; k field_15468 WOODEN_SLABS + f Lawu; l field_17619 WOODEN_FENCES + f Lawu; m field_24076 PRESSURE_PLATES + f Lawu; n field_15477 WOODEN_PRESSURE_PLATES + f Lawu; o field_24077 STONE_PRESSURE_PLATES + f Lawu; p field_15491 WOODEN_TRAPDOORS + f Lawu; q field_15495 DOORS + f Lawu; r field_15462 SAPLINGS + f Lawu; s field_23210 LOGS_THAT_BURN + f Lawu; t field_39030 OVERWORLD_NATURAL_LOGS + f Lawu; u field_15475 LOGS + f Lawu; v field_15485 DARK_OAK_LOGS + f Lawu; w field_15482 OAK_LOGS + f Lawu; x field_15498 BIRCH_LOGS + f Lawu; y field_15458 ACACIA_LOGS + f Lawu; z field_42608 CHERRY_LOGS + m (Ljava/lang/String;)Lawu; a method_15069 create + m ()V + m ()V +c awf net/minecraft/class_7369 net/minecraft/tags/CatVariantTags + f Lawu; a field_38695 DEFAULT_SPAWNS + f Lawu; b field_38696 FULL_MOON_SPAWNS + m (Ljava/lang/String;)Lawu; a method_43046 create + m ()V + m ()V +c awg net/minecraft/class_8103 net/minecraft/tags/DamageTypeTags + f Lawu; A field_46211 ALWAYS_KILLS_ARMOR_STANDS + f Lawu; B field_46230 CAN_BREAK_ARMOR_STAND + f Lawu; C field_49182 BYPASSES_WOLF_ARMOR + f Lawu; D field_50104 IS_PLAYER_ATTACK + f Lawu; E field_51527 BURN_FROM_STEPPING + f Lawu; F field_51990 PANIC_CAUSES + f Lawu; G field_51991 PANIC_ENVIRONMENTAL_CAUSES + f Lawu; a field_42240 DAMAGES_HELMET + f Lawu; b field_42241 BYPASSES_ARMOR + f Lawu; c field_43116 BYPASSES_SHIELD + f Lawu; d field_42242 BYPASSES_INVULNERABILITY + f Lawu; e field_42969 BYPASSES_COOLDOWN + f Lawu; f field_42243 BYPASSES_EFFECTS + f Lawu; g field_42244 BYPASSES_RESISTANCE + f Lawu; h field_42245 BYPASSES_ENCHANTMENTS + f Lawu; i field_42246 IS_FIRE + f Lawu; j field_42247 IS_PROJECTILE + f Lawu; k field_42248 WITCH_RESISTANT_TO + f Lawu; l field_42249 IS_EXPLOSION + f Lawu; m field_42250 IS_FALL + f Lawu; n field_42251 IS_DROWNING + f Lawu; o field_42252 IS_FREEZING + f Lawu; p field_42253 IS_LIGHTNING + f Lawu; q field_42254 NO_ANGER + f Lawu; r field_42255 NO_IMPACT + f Lawu; s field_42256 ALWAYS_MOST_SIGNIFICANT_FALL + f Lawu; t field_42257 WITHER_IMMUNE_TO + f Lawu; u field_42258 IGNITES_ARMOR_STANDS + f Lawu; v field_42259 BURNS_ARMOR_STANDS + f Lawu; w field_42260 AVOIDS_GUARDIAN_THORNS + f Lawu; x field_42261 ALWAYS_TRIGGERS_SILVERFISH + f Lawu; y field_42970 ALWAYS_HURTS_ENDER_DRAGONS + f Lawu; z field_45065 NO_KNOCKBACK + m (Ljava/lang/String;)Lawu; a method_48762 create + m ()V +c awh net/minecraft/class_9636 net/minecraft/tags/EnchantmentTags + f Lawu; A field_51528 TRADES_SNOW_COMMON + f Lawu; B field_51529 TRADES_SWAMP_COMMON + f Lawu; C field_51530 TRADES_TAIGA_COMMON + f Lawu; D field_51531 TRADES_DESERT_SPECIAL + f Lawu; E field_51532 TRADES_JUNGLE_SPECIAL + f Lawu; F field_51533 TRADES_PLAINS_SPECIAL + f Lawu; G field_51534 TRADES_SAVANNA_SPECIAL + f Lawu; H field_51535 TRADES_SNOW_SPECIAL + f Lawu; I field_51536 TRADES_SWAMP_SPECIAL + f Lawu; J field_51537 TRADES_TAIGA_SPECIAL + f Lawu; a field_51362 TOOLTIP_ORDER + f Lawu; b field_51538 ARMOR_EXCLUSIVE + f Lawu; c field_51539 BOOTS_EXCLUSIVE + f Lawu; d field_51540 BOW_EXCLUSIVE + f Lawu; e field_51541 CROSSBOW_EXCLUSIVE + f Lawu; f field_51542 DAMAGE_EXCLUSIVE + f Lawu; g field_51543 MINING_EXCLUSIVE + f Lawu; h field_51544 RIPTIDE_EXCLUSIVE + f Lawu; i field_51545 TRADEABLE + f Lawu; j field_51546 DOUBLE_TRADE_PRICE + f Lawu; k field_51547 IN_ENCHANTING_TABLE + f Lawu; l field_51548 ON_MOB_SPAWN_EQUIPMENT + f Lawu; m field_51549 ON_TRADED_EQUIPMENT + f Lawu; n field_51550 ON_RANDOM_LOOT + f Lawu; o field_51551 CURSE + f Lawu; p field_51552 SMELTS_LOOT + f Lawu; q field_51553 PREVENTS_BEE_SPAWNS_WHEN_MINING + f Lawu; r field_51554 PREVENTS_DECORATED_POT_SHATTERING + f Lawu; s field_51555 PREVENTS_ICE_MELTING + f Lawu; t field_51556 PREVENTS_INFESTED_SPAWNS + f Lawu; u field_51557 TREASURE + f Lawu; v field_51558 NON_TREASURE + f Lawu; w field_51559 TRADES_DESERT_COMMON + f Lawu; x field_51560 TRADES_JUNGLE_COMMON + f Lawu; y field_51561 TRADES_PLAINS_COMMON + f Lawu; z field_51562 TRADES_SAVANNA_COMMON + m (Ljava/lang/String;)Lawu; a method_59548 create + m ()V +c awi net/minecraft/class_3483 net/minecraft/tags/EntityTypeTags + f Lawu; A field_48283 NOT_SCARY_FOR_PUFFERFISH + f Lawu; B field_48284 SENSITIVE_TO_IMPALING + f Lawu; C field_48285 SENSITIVE_TO_BANE_OF_ARTHROPODS + f Lawu; D field_49931 SENSITIVE_TO_SMITE + f Lawu; E field_48713 NO_ANGER_FROM_WIND_CHARGE + f Lawu; F field_50105 IMMUNE_TO_OOZING + f Lawu; G field_50106 IMMUNE_TO_INFESTED + f Lawu; H field_51503 REDIRECTABLE_PROJECTILE + f Lawu; a field_15507 SKELETONS + f Lawu; b field_46231 ZOMBIES + f Lawu; c field_19168 RAIDERS + f Lawu; d field_46232 UNDEAD + f Lawu; e field_20631 BEEHIVE_INHABITORS + f Lawu; f field_21508 ARROWS + f Lawu; g field_22415 IMPACT_PROJECTILES + f Lawu; h field_27855 POWDER_SNOW_WALKABLE_MOBS + f Lawu; i field_28296 AXOLOTL_ALWAYS_HOSTILES + f Lawu; j field_29824 AXOLOTL_HUNT_TARGETS + f Lawu; k field_29825 FREEZE_IMMUNE_ENTITY_TYPES + f Lawu; l field_29826 FREEZE_HURTS_EXTRA_TYPES + f Lawu; m field_46233 CAN_BREATHE_UNDER_WATER + f Lawu; n field_38697 FROG_FOOD + f Lawu; o field_42971 FALL_DAMAGE_IMMUNE + f Lawu; p field_43096 DISMOUNTS_UNDERWATER + f Lawu; q field_45066 NON_CONTROLLING_RIDER + f Lawu; r field_48286 DEFLECTS_PROJECTILES + f Lawu; s field_47578 CAN_TURN_IN_BOATS + f Lawu; t field_48287 ILLAGER + f Lawu; u field_48288 AQUATIC + f Lawu; v field_48289 ARTHROPOD + f Lawu; w field_48290 IGNORES_POISON_AND_REGEN + f Lawu; x field_48291 INVERTED_HEALING_AND_HARM + f Lawu; y field_48292 WITHER_FRIENDS + f Lawu; z field_48293 ILLAGER_FRIENDS + m (Ljava/lang/String;)Lawu; a method_15077 create + m ()V +c awj net/minecraft/class_7088 net/minecraft/tags/FlatLevelGeneratorPresetTags + f Lawu; a field_37402 VISIBLE + m (Ljava/lang/String;)Lawu; a method_41292 create + m ()V + m ()V +c awk net/minecraft/class_3486 net/minecraft/tags/FluidTags + f Lawu; a field_15517 WATER + f Lawu; b field_15518 LAVA + m (Ljava/lang/String;)Lawu; a method_15095 create + m ()V + m ()V +c awl net/minecraft/class_5698 net/minecraft/tags/GameEventTags + f Lawu; a field_28090 VIBRATIONS + f Lawu; b field_38079 WARDEN_CAN_LISTEN + f Lawu; c field_38698 SHRIEKER_CAN_LISTEN + f Lawu; d field_28091 IGNORE_VIBRATIONS_SNEAKING + f Lawu; e field_39031 ALLAY_CAN_LISTEN + m (Ljava/lang/String;)Lawu; a method_32823 create + m ()V + m ()V +c awm net/minecraft/class_7441 net/minecraft/tags/InstrumentTags + f Lawu; a field_39106 REGULAR_GOAT_HORNS + f Lawu; b field_39107 SCREAMING_GOAT_HORNS + f Lawu; c field_39108 GOAT_HORNS + m (Ljava/lang/String;)Lawu; a method_43676 create + m ()V +c awn net/minecraft/class_3489 net/minecraft/tags/ItemTags + f Lawu; A field_21957 CRIMSON_STEMS + f Lawu; B field_21958 WARPED_STEMS + f Lawu; C field_40987 BAMBOO_BLOCKS + f Lawu; D field_38837 WART_BLOCKS + f Lawu; E field_15556 BANNERS + f Lawu; F field_15532 SAND + f Lawu; G field_42972 SMELTS_TO_GLASS + f Lawu; H field_15526 STAIRS + f Lawu; I field_15535 SLABS + f Lawu; J field_15560 WALLS + f Lawu; K field_15547 ANVIL + f Lawu; L field_15529 RAILS + f Lawu; M field_15558 LEAVES + f Lawu; N field_15548 TRAPDOORS + f Lawu; O field_15543 SMALL_FLOWERS + f Lawu; P field_16444 BEDS + f Lawu; Q field_16585 FENCES + f Lawu; R field_20343 TALL_FLOWERS + f Lawu; S field_20344 FLOWERS + f Lawu; T field_23064 PIGLIN_REPELLENTS + f Lawu; U field_24481 PIGLIN_LOVED + f Lawu; V field_26987 IGNORED_BY_PIGLIN_BABIES + f Lawu; W field_49932 MEAT + f Lawu; X field_42609 SNIFFER_FOOD + f Lawu; Y field_26988 PIGLIN_FOOD + f Lawu; Z field_28624 FOX_FOOD + f Lawu; aA field_28994 IRON_ORES + f Lawu; aB field_28995 DIAMOND_ORES + f Lawu; aC field_28996 REDSTONE_ORES + f Lawu; aD field_28997 LAPIS_ORES + f Lawu; aE field_29197 COAL_ORES + f Lawu; aF field_29198 EMERALD_ORES + f Lawu; aG field_29199 COPPER_ORES + f Lawu; aH field_23211 NON_FLAMMABLE_WOOD + f Lawu; aI field_23801 SOUL_FIRE_BASE_BLOCKS + f Lawu; aJ field_26989 CANDLES + f Lawu; aK field_36269 DIRT + f Lawu; aL field_36270 TERRACOTTA + f Lawu; a field_15544 WOOL + f Lawu; aM field_38836 COMPLETES_FIND_TREE_TUTORIAL + f Lawu; aN field_15536 BOATS + f Lawu; aO field_38080 CHEST_BOATS + f Lawu; aP field_15527 FISHES + f Lawu; aQ field_15533 SIGNS + f Lawu; aR field_23969 CREEPER_DROP_MUSIC_DISCS + f Lawu; aS field_17487 COALS + f Lawu; aT field_18317 ARROWS + f Lawu; aU field_21465 LECTERN_BOOKS + f Lawu; aV field_40109 BOOKSHELF_BOOKS + f Lawu; aW field_22277 BEACON_PAYMENT_ITEMS + f Lawu; aX field_23802 STONE_TOOL_MATERIALS + f Lawu; aY field_25808 STONE_CRAFTING_MATERIALS + f Lawu; aZ field_28041 FREEZE_IMMUNE_WEARABLES + f Lawu; aa field_49933 COW_FOOD + f Lawu; ab field_49934 GOAT_FOOD + f Lawu; ac field_49935 SHEEP_FOOD + f Lawu; ad field_49936 WOLF_FOOD + f Lawu; ae field_49937 CAT_FOOD + f Lawu; af field_49938 HORSE_FOOD + f Lawu; ag field_49939 HORSE_TEMPT_ITEMS + f Lawu; ah field_49940 CAMEL_FOOD + f Lawu; ai field_49941 ARMADILLO_FOOD + f Lawu; aj field_49942 BEE_FOOD + f Lawu; ak field_49943 CHICKEN_FOOD + f Lawu; al field_49944 FROG_FOOD + f Lawu; am field_49945 HOGLIN_FOOD + f Lawu; an field_49946 LLAMA_FOOD + f Lawu; ao field_49947 LLAMA_TEMPT_ITEMS + f Lawu; ap field_49948 OCELOT_FOOD + f Lawu; aq field_49949 PANDA_FOOD + f Lawu; ar field_49950 PIG_FOOD + f Lawu; as field_49951 RABBIT_FOOD + f Lawu; at field_49952 STRIDER_FOOD + f Lawu; au field_49953 STRIDER_TEMPT_ITEMS + f Lawu; av field_49954 TURTLE_FOOD + f Lawu; aw field_49955 PARROT_FOOD + f Lawu; ax field_49956 PARROT_POISONOUS_FOOD + f Lawu; ay field_49957 AXOLOTL_FOOD + f Lawu; az field_23065 GOLD_ORES + f Lawu; bA field_48301 CHEST_ARMOR_ENCHANTABLE + f Lawu; bB field_48302 HEAD_ARMOR_ENCHANTABLE + f Lawu; bC field_48303 ARMOR_ENCHANTABLE + f Lawu; bD field_48304 SWORD_ENCHANTABLE + f Lawu; bE field_50107 FIRE_ASPECT_ENCHANTABLE + f Lawu; bF field_50108 SHARP_WEAPON_ENCHANTABLE + f Lawu; bG field_48305 WEAPON_ENCHANTABLE + f Lawu; bH field_48306 MINING_ENCHANTABLE + f Lawu; bI field_48307 MINING_LOOT_ENCHANTABLE + f Lawu; bJ field_48308 FISHING_ENCHANTABLE + f Lawu; bK field_48309 TRIDENT_ENCHANTABLE + f Lawu; bL field_48310 DURABILITY_ENCHANTABLE + f Lawu; b field_15537 PLANKS + f Lawu; bM field_48311 BOW_ENCHANTABLE + f Lawu; bN field_48312 EQUIPPABLE_ENCHANTABLE + f Lawu; bO field_48313 CROSSBOW_ENCHANTABLE + f Lawu; bP field_48314 VANISHING_ENCHANTABLE + f Lawu; bQ field_50109 MACE_ENCHANTABLE + f Lawu; ba field_28300 DAMPENS_VIBRATIONS + f Lawu; bb field_29544 CLUSTER_MAX_HARVESTABLES + f Lawu; bc field_38699 COMPASSES + f Lawu; bd field_40108 HANGING_SIGNS + f Lawu; be field_41662 CREEPER_IGNITERS + f Lawu; bf field_41757 NOTE_BLOCK_TOP_INSTRUMENTS + f Lawu; bg field_48294 FOOT_ARMOR + f Lawu; bh field_48295 LEG_ARMOR + f Lawu; bi field_48296 CHEST_ARMOR + f Lawu; bj field_48297 HEAD_ARMOR + f Lawu; bk field_48298 SKULLS + f Lawu; bl field_41890 TRIMMABLE_ARMOR + f Lawu; bm field_41891 TRIM_MATERIALS + f Lawu; bn field_41892 TRIM_TEMPLATES + f Lawu; bo field_42610 DECORATED_POT_SHERDS + f Lawu; bp field_44701 DECORATED_POT_INGREDIENTS + f Lawu; bq field_42611 SWORDS + f Lawu; br field_42612 AXES + f Lawu; bs field_42613 HOES + f Lawu; bt field_42614 PICKAXES + f Lawu; bu field_42615 SHOVELS + f Lawu; bv field_42617 BREAKS_DECORATED_POTS + f Lawu; bw field_44591 VILLAGER_PLANTABLE_SEEDS + f Lawu; bx field_48803 DYEABLE + f Lawu; by field_48299 FOOT_ARMOR_ENCHANTABLE + f Lawu; bz field_48300 LEG_ARMOR_ENCHANTABLE + f Lawu; c field_15531 STONE_BRICKS + f Lawu; d field_15555 WOODEN_BUTTONS + f Lawu; e field_44592 STONE_BUTTONS + f Lawu; f field_15551 BUTTONS + f Lawu; g field_15542 WOOL_CARPETS + f Lawu; h field_15552 WOODEN_DOORS + f Lawu; i field_15557 WOODEN_STAIRS + f Lawu; j field_15534 WOODEN_SLABS + f Lawu; k field_17620 WOODEN_FENCES + f Lawu; l field_40858 FENCE_GATES + f Lawu; m field_15540 WOODEN_PRESSURE_PLATES + f Lawu; n field_15550 WOODEN_TRAPDOORS + f Lawu; o field_15553 DOORS + f Lawu; p field_15528 SAPLINGS + f Lawu; q field_23212 LOGS_THAT_BURN + f Lawu; r field_15539 LOGS + f Lawu; s field_15546 DARK_OAK_LOGS + f Lawu; t field_15545 OAK_LOGS + f Lawu; u field_15554 BIRCH_LOGS + f Lawu; v field_15525 ACACIA_LOGS + f Lawu; w field_42618 CHERRY_LOGS + f Lawu; x field_15538 JUNGLE_LOGS + f Lawu; y field_15549 SPRUCE_LOGS + f Lawu; z field_37403 MANGROVE_LOGS + m (Ljava/lang/String;)Lawu; a method_15102 bind + m ()V + m ()V +c awo net/minecraft/class_7406 net/minecraft/tags/PaintingVariantTags + f Lawu; a field_38929 PLACEABLE + m (Ljava/lang/String;)Lawu; a method_43384 create + m ()V + m ()V +c awp net/minecraft/class_7473 net/minecraft/tags/PoiTypeTags + f Lawu; a field_39262 ACQUIRABLE_JOB_SITE + f Lawu; b field_39263 VILLAGE + f Lawu; c field_39264 BEE_HOME + m (Ljava/lang/String;)Lawu; a method_43935 create + m ()V + m ()V +c awq net/minecraft/class_7045 net/minecraft/tags/StructureTags + f Lawu; a field_37040 EYE_OF_ENDER_LOCATED + f Lawu; b field_37041 DOLPHIN_LOCATED + f Lawu; c field_37042 ON_WOODLAND_EXPLORER_MAPS + f Lawu; d field_37043 ON_OCEAN_EXPLORER_MAPS + f Lawu; e field_46158 ON_SAVANNA_VILLAGE_MAPS + f Lawu; f field_46159 ON_DESERT_VILLAGE_MAPS + f Lawu; g field_46160 ON_PLAINS_VILLAGE_MAPS + f Lawu; h field_46161 ON_TAIGA_VILLAGE_MAPS + f Lawu; i field_46162 ON_SNOWY_VILLAGE_MAPS + f Lawu; j field_46163 ON_JUNGLE_EXPLORER_MAPS + f Lawu; k field_46164 ON_SWAMP_EXPLORER_MAPS + f Lawu; l field_37044 ON_TREASURE_MAPS + f Lawu; m field_49958 ON_TRIAL_CHAMBERS_MAPS + f Lawu; n field_37404 CATS_SPAWN_IN + f Lawu; o field_37405 CATS_SPAWN_AS_BLACK + f Lawu; p field_37045 VILLAGE + f Lawu; q field_37046 MINESHAFT + f Lawu; r field_37047 SHIPWRECK + f Lawu; s field_37048 RUINED_PORTAL + f Lawu; t field_37049 OCEAN_RUIN + m (Ljava/lang/String;)Lawu; a method_41006 create + m ()V +c awr net/minecraft/class_3495 net/minecraft/tags/TagBuilder + f Ljava/util/List; a field_23688 entries + m ()Lawr; a method_26778 create + m (Lakr;)Lawr; a method_26784 addElement + m (Laws;)Lawr; a method_27064 add + m ()Ljava/util/List; b method_26782 build + m (Lakr;)Lawr; b method_34891 addOptionalElement + m (Lakr;)Lawr; c method_26787 addTag + m (Lakr;)Lawr; d method_34892 addOptionalTag + m ()V +c aws net/minecraft/class_3497 net/minecraft/tags/TagEntry + f Lcom/mojang/serialization/Codec; a field_39265 CODEC + f Lcom/mojang/serialization/Codec; b field_39266 FULL_CODEC + f Lakr; c field_15584 id + f Z d field_39267 tag + f Z e field_39268 required + m ()Laxw$c; a method_43936 elementOrTag + m (Lakr;)Laws; a method_43937 element + m (Laws$a;Ljava/util/function/Consumer;)Z a method_26790 build + m (Laws;)Lcom/mojang/datafixers/util/Either; a method_43938 method_43938 + m (Laxw$c;)Laws; a method_43939 method_43939 + m (Lcom/mojang/datafixers/util/Either;)Laws; a method_43940 method_43940 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43941 method_43941 + m (Ljava/util/function/Consumer;)V a method_32831 visitRequiredDependencies + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Z a method_32832 verifyIfPresent + m (Lakr;)Laws; b method_43942 optionalElement + m (Laws;)Laws; b method_43943 method_43943 + m (Ljava/util/function/Consumer;)V b method_43944 visitOptionalDependencies + m (Lakr;)Laws; c method_43945 tag + m (Laws;)Ljava/lang/Boolean; c method_43946 method_43946 + m (Lakr;)Laws; d method_43947 optionalTag + m (Lakr;ZZ)V + m (Laxw$c;Z)V + m ()V +c aws$a net/minecraft/class_3497$class_7474 net/minecraft/tags/TagEntry$Lookup + m (Lakr;)Ljava/lang/Object; a method_43948 element + m (Lakr;)Ljava/util/Collection; b method_43949 tag +c awt net/minecraft/class_7475 net/minecraft/tags/TagFile + f Lcom/mojang/serialization/Codec; a field_39269 CODEC + f Ljava/util/List; b comp_811 entries + f Z c comp_812 replace + m ()Ljava/util/List; a comp_811 entries + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43950 method_43950 + m ()Z b comp_812 replace + m (Ljava/util/List;Z)V + m ()V +c awu net/minecraft/class_6862 net/minecraft/tags/TagKey + f Lakq; a comp_326 registry + f Lakr; b comp_327 location + f Lcom/google/common/collect/Interner; c field_36394 VALUES + m ()Lakq; a comp_326 registry + m (Lakq;)Lcom/mojang/serialization/Codec; a method_40090 codec + m (Lakq;Lakr;)Lawu; a method_40092 create + m (Lakq;Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_40091 method_40091 + m (Lawu;)Ljava/lang/String; a method_40089 method_40089 + m ()Lakr; b comp_327 location + m (Lakq;)Lcom/mojang/serialization/Codec; b method_40093 hashedCodec + m (Lakq;Lakr;)Lawu; b method_40094 method_40094 + m ()Ljava/lang/String; c method_49429 method_49429 + m (Lakq;)Z c method_41007 isFor + m (Lakq;Lakr;)Lawu; c method_40095 method_40095 + m (Lakq;)Ljava/util/Optional; d method_41008 cast + m (Lakq;Lakr;)V + m ()V +c awv net/minecraft/class_3503 net/minecraft/tags/TagLoader + f Lorg/slf4j/Logger; a field_15607 LOGGER + f Ljava/util/function/Function; b field_15609 idToValue + f Ljava/lang/String; c field_15605 directory + m (Lakr;)Ljava/util/List; a method_43951 method_43951 + m (Lakr;Ljava/util/Collection;)V a method_33175 method_33175 + m (Laue;)Ljava/util/Map; a method_33174 load + m (Laws$a;Ljava/util/List;)Lcom/mojang/datafixers/util/Either; a method_43952 build + m (Laws$a;Ljava/util/Map;Lakr;Lawv$b;)V a method_51476 method_51476 + m (Laxs;Lakr;Ljava/util/List;)V a method_51477 method_51477 + m (Ljava/util/List;Ljava/lang/String;Laws;)V a method_43954 method_43954 + m (Ljava/util/Map;)Ljava/util/Map; a method_18242 build + m (Ljava/util/Map;Lakr;Ljava/util/Collection;)V a method_32840 method_32840 + m (Laue;)Ljava/util/Map; b method_33176 loadAndBuild + m (Ljava/util/function/Function;Ljava/lang/String;)V + m ()V +c awv$1 net/minecraft/class_3503$1 net/minecraft/tags/TagLoader$1 + f Ljava/util/Map; a field_39270 val$newTags + f Lawv; b field_39271 field_39271 + m (Lawv;Ljava/util/Map;)V +c awv$a net/minecraft/class_3503$class_5145 net/minecraft/tags/TagLoader$EntryWithSource + f Laws; a comp_324 entry + f Ljava/lang/String; b comp_325 source + m ()Laws; a comp_324 entry + m ()Ljava/lang/String; b comp_325 source + m (Laws;Ljava/lang/String;)V +c awv$b net/minecraft/class_3503$class_8522 net/minecraft/tags/TagLoader$SortingEntry + f Ljava/util/List; a comp_1486 entries + m ()Ljava/util/List; a comp_1486 entries + m (Ljava/util/function/Consumer;Lawv$a;)V a method_51479 method_51479 + m (Ljava/util/function/Consumer;Lawv$a;)V b method_51481 method_51481 + m (Ljava/util/List;)V +c aww net/minecraft/class_3505 net/minecraft/tags/TagManager + f Lka; a field_28312 registryAccess + f Ljava/util/List; b field_36396 results + m ()Ljava/util/List; a method_40096 getResult + m (I)[Ljava/util/concurrent/CompletableFuture; a method_33177 method_33177 + m (Lakq;Lawv;Laue;)Laww$a; a method_33181 method_33181 + m (Laue;Ljava/util/concurrent/Executor;Lka$d;)Ljava/util/concurrent/CompletableFuture; a method_33178 createLoader + m (Ljava/util/List;Ljava/lang/Void;)V a method_40098 method_40098 + m (Laue;Ljava/util/concurrent/Executor;Lka$d;)Ljava/util/concurrent/CompletableFuture; b method_40100 method_40100 + m (Lka;)V +c aww$a net/minecraft/class_3505$class_6863 net/minecraft/tags/TagManager$LoadResult + f Lakq; a comp_328 key + f Ljava/util/Map; b comp_329 tags + m ()Lakq; a comp_328 key + m ()Ljava/util/Map; b comp_329 tags + m (Lakq;Ljava/util/Map;)V +c awx net/minecraft/class_6864 net/minecraft/tags/TagNetworkSerialization + m (Lakq;Ljz;Lawx$a;Lawx$b;)V a method_40106 deserializeTagsFromNetwork + m (Lakq;Ljz;Lawx$b;Lakr;Lit/unimi/dsi/fastutil/ints/IntList;)V a method_40107 method_40107 + m (Lcom/mojang/datafixers/util/Pair;)Z a method_40101 method_40101 + m (Ljt;)Ljava/util/Map; a method_40105 serializeTagsToNetwork + m (Ljz;)Lawx$a; a method_40102 serializeToNetwork + m (Ljz;Ljava/util/Map;Lcom/mojang/datafixers/util/Pair;)V a method_40103 method_40103 + m (Lka$d;)Lcom/mojang/datafixers/util/Pair; a method_40104 method_40104 + m ()V +c awx$a net/minecraft/class_6864$class_5748 net/minecraft/tags/TagNetworkSerialization$NetworkPayload + f Ljava/util/Map; a field_28304 tags + m ()I a method_56531 size + m (Ljz;)V a method_56532 applyToRegistry + m (Lvw;)V a method_33159 write + m (Lvw;)Lawx$a; b method_33160 read + m (Ljava/util/Map;)V +c awx$b net/minecraft/class_6864$class_6865 net/minecraft/tags/TagNetworkSerialization$TagOutput +c awy net/minecraft/class_7089 net/minecraft/tags/WorldPresetTags + f Lawu; a field_37406 NORMAL + f Lawu; b field_37407 EXTENDED + m (Ljava/lang/String;)Lawu; a method_41293 create + m ()V + m ()V +c awz net/minecraft/class_5994 net/minecraft/tags/package-info +c axa net/minecraft/class_7927 net/minecraft/util/AbortableIterationConsumer + m (Ljava/util/function/Consumer;Ljava/lang/Object;)Laxa$a; a method_47542 method_47542 +c axa$a net/minecraft/class_7927$class_7928 net/minecraft/util/AbortableIterationConsumer$Continuation + f Laxa$a; a field_41283 CONTINUE + f Laxa$a; b field_41284 ABORT + f [Laxa$a; c field_41285 $VALUES + m ()Z a method_47543 shouldAbort + m ()[Laxa$a; b method_47544 $values + m (Ljava/lang/String;I)V + m ()V +c axb net/minecraft/class_8623 net/minecraft/util/ArrayListDeque + f I a field_45067 MIN_GROWTH + f [Ljava/lang/Object; b field_45068 contents + f I c field_45069 head + f I d field_45070 size + m ()I a method_52450 capacity + m (I)I a method_52451 getIndex + m (II)V a method_52452 verifyIndexInRange + m ([Ljava/lang/Object;I)V a method_52453 copyCount + m (I)V b method_52455 verifyIndexInRange + m ()V c method_52454 grow + m (I)Ljava/lang/Object; c method_52456 getInner + m ()V + m (I)V +c axb$a net/minecraft/class_8623$class_8624 net/minecraft/util/ArrayListDeque$DescendingIterator + f Laxb; a field_45071 field_45071 + f I b field_45072 index + m (Laxb;)V +c axb$b net/minecraft/class_8623$class_9633 net/minecraft/util/ArrayListDeque$ReversedView + f Laxb; a field_51345 field_51345 + f Laxb; b field_51346 source + m (I)I a method_59514 reverseIndex + m (Laxb;Laxb;)V +c axc net/minecraft/class_6490 net/minecraft/util/BitStorage + m ()[J a method_15212 getRaw + m (I)I a method_15211 get + m (II)I a method_15214 getAndSet + m (Ljava/util/function/IntConsumer;)V a method_21739 getAll + m ([I)V a method_39892 unpack + m ()I b method_15215 getSize + m (II)V b method_15210 set + m ()I c method_34896 getBits + m ()Laxc; d method_39939 copy +c axd net/minecraft/class_8104 net/minecraft/util/Brightness + f Lcom/mojang/serialization/Codec; a field_42262 LIGHT_VALUE_CODEC + f Lcom/mojang/serialization/Codec; b field_42263 CODEC + f Laxd; c field_42264 FULL_BRIGHT + f I d comp_1240 block + f I e comp_1241 sky + m ()I a method_48763 pack + m (I)Laxd; a method_48764 unpack + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_48765 method_48765 + m ()I b comp_1240 block + m ()I c comp_1241 sky + m (II)V + m ()V +c axe net/minecraft/class_7995 net/minecraft/util/ByIdMap + m (I[Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object; a method_47911 method_47911 + m (Ljava/util/function/IntFunction;Ljava/lang/Object;I)Ljava/lang/Object; a method_47912 method_47912 + m (Ljava/util/function/ToIntFunction;[Ljava/lang/Object;)Ljava/util/function/IntFunction; a method_47913 createMap + m (Ljava/util/function/ToIntFunction;[Ljava/lang/Object;Laxe$a;)Ljava/util/function/IntFunction; a method_47914 continuous + m (Ljava/util/function/ToIntFunction;[Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/function/IntFunction; a method_47915 sparse + m ([Ljava/lang/Object;II)Ljava/lang/Object; a method_47916 method_47916 + m (Ljava/util/function/ToIntFunction;[Ljava/lang/Object;)[Ljava/lang/Object; b method_47917 createSortedArray + m ([Ljava/lang/Object;II)Ljava/lang/Object; b method_47918 method_47918 + m ()V +c axe$a net/minecraft/class_7995$class_7996 net/minecraft/util/ByIdMap$OutOfBoundsStrategy + f Laxe$a; a field_41664 ZERO + f Laxe$a; b field_41665 WRAP + f Laxe$a; c field_41666 CLAMP + f [Laxe$a; d field_41667 $VALUES + m ()[Laxe$a; a method_47919 $values + m (Ljava/lang/String;I)V + m ()V +c axf net/minecraft/class_3509 net/minecraft/util/ClassInstanceMultiMap + f Ljava/util/Map; a field_15636 byClass + f Ljava/lang/Class; b field_15637 baseClass + f Ljava/util/List; c field_15635 allInstances + m ()Ljava/util/List; a method_34897 getAllInstances + m (Ljava/lang/Class;)Ljava/util/Collection; a method_15216 find + m (Ljava/lang/Class;)Ljava/util/List; b method_15217 method_15217 + m (Ljava/lang/Class;)V +c axg net/minecraft/class_9227 net/minecraft/util/ClassTreeIdRegistry + f I a field_49052 NO_ID_VALUE + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; b field_49053 classToLastIdCache + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)V a method_56938 method_56938 + m (Ljava/lang/Class;)I a method_56939 getLastIdFor + m (Ljava/lang/Class;)I b method_56940 getCount + m (Ljava/lang/Class;)I c method_56941 define + m ()V +c axh net/minecraft/class_8805 net/minecraft/util/ColorRGBA + f Lcom/mojang/serialization/Codec; a field_46234 CODEC + f I b comp_1971 rgba + f Ljava/lang/String; c field_46235 CUSTOM_COLOR_PREFIX + m ()I a comp_1971 rgba + m (Ljava/lang/NumberFormatException;)Ljava/lang/String; a method_53913 method_53913 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_53914 method_53914 + m ()Ljava/lang/String; b method_53915 formatValue + m (Ljava/lang/String;)Ljava/lang/String; b method_53916 method_53916 + m (I)V + m ()V +c axi net/minecraft/class_8012 net/minecraft/util/CommonColors + f I a field_42973 WHITE + f I b field_42974 BLACK + f I c field_44941 GRAY + f I d field_45073 LIGHT_GRAY + f I e field_49788 LIGHTER_GRAY + f I f field_41758 RED + f I g field_52312 GREEN + f I h field_52313 BLUE + f I i field_46652 SOFT_RED + f I j field_46767 YELLOW + f I k field_46768 SOFT_YELLOW + m ()V +c axj net/minecraft/class_8216 net/minecraft/util/CommonLinks + f Ljava/net/URI; a field_43117 GDPR + f Ljava/net/URI; b field_43118 EULA + f Ljava/net/URI; c field_45074 PRIVACY_STATEMENT + f Ljava/net/URI; d field_43119 ATTRIBUTION + f Ljava/net/URI; e field_43120 LICENSES + f Ljava/net/URI; f field_43121 BUY_MINECRAFT_JAVA + f Ljava/net/URI; g field_43122 ACCOUNT_SETTINGS + f Ljava/net/URI; h field_43123 SNAPSHOT_FEEDBACK + f Ljava/net/URI; i field_43124 RELEASE_FEEDBACK + f Ljava/net/URI; j field_43125 SNAPSHOT_BUGS_FEEDBACK + f Ljava/net/URI; k field_46769 GENERAL_HELP + f Ljava/net/URI; l field_43126 ACCESSIBILITY_HELP + f Ljava/net/URI; m field_43127 REPORTING_HELP + f Ljava/net/URI; n field_43128 SUSPENSION_HELP + f Ljava/net/URI; o field_43129 BLOCKING_HELP + f Ljava/net/URI; p field_44949 SYMLINK_HELP + f Ljava/net/URI; q field_43130 START_REALMS_TRIAL + f Ljava/net/URI; r field_43131 BUY_REALMS + f Ljava/net/URI; s field_43132 REALMS_TERMS + f Ljava/net/URI; t field_43133 REALMS_CONTENT_CREATION + m (Ljava/lang/String;Ljava/util/UUID;)Ljava/lang/String; a method_49719 extendRealms + m (Ljava/lang/String;Ljava/util/UUID;Z)Ljava/lang/String; a method_49720 extendRealms + m ()V + m ()V +c axk net/minecraft/class_3513 net/minecraft/util/CrudeIncrementalIntIdentityHashBiMap + f I b field_29828 NOT_FOUND + f Ljava/lang/Object; c field_15650 EMPTY_SLOT + f F d field_29829 LOADFACTOR + f [Ljava/lang/Object; e field_15651 keys + f [I f field_15646 values + f [Ljava/lang/Object; g field_15647 byId + f I h field_15649 nextId + f I i field_15648 size + m ()V a method_15229 clear + m (Ljava/lang/Object;I)V a method_15230 addMapping + m ()Laxk; b method_39940 copy + m (Ljava/lang/Object;)Z b method_34904 contains + m (Ljava/lang/Object;I)I b method_15232 indexOf + m (I)Laxk; c method_37913 create + m ()I d method_15226 nextId + m (I)Z d method_34903 contains + m (Ljava/lang/Object;)I d method_15225 add + m (I)I e method_15222 getValue + m (Ljava/lang/Object;)I e method_15228 hash + m (I)V f method_15224 grow + m (I)I g method_15223 findEmpty + m (I)V + m ([Ljava/lang/Object;[I[Ljava/lang/Object;II)V + m ()V +c axl net/minecraft/class_3515 net/minecraft/util/Crypt + f Ljava/lang/String; a field_39109 SIGNING_ALGORITHM + f I b field_40111 SIGNATURE_BYTES + f Ljava/lang/String; c field_39033 RSA_PUBLIC_KEY_HEADER + f Ljava/lang/String; d field_39034 MIME_LINE_SEPARATOR + f Ljava/util/Base64$Encoder; e field_39272 MIME_ENCODER + f Lcom/mojang/serialization/Codec; f field_39035 PUBLIC_KEY_CODEC + f Lcom/mojang/serialization/Codec; g field_39036 PRIVATE_KEY_CODEC + f Ljava/lang/String; h field_29830 SYMMETRIC_ALGORITHM + f I i field_29831 SYMMETRIC_BITS + f Ljava/lang/String; j field_29832 ASYMMETRIC_ALGORITHM + f I k field_29833 ASYMMETRIC_BITS + f Ljava/lang/String; l field_29834 BYTE_ENCODING + f Ljava/lang/String; m field_29835 HASH_ALGORITHM + f Ljava/lang/String; n field_39037 PEM_RSA_PRIVATE_KEY_HEADER + f Ljava/lang/String; o field_39038 PEM_RSA_PRIVATE_KEY_FOOTER + f Ljava/lang/String; p field_39039 RSA_PUBLIC_KEY_FOOTER + m ()Ljavax/crypto/SecretKey; a method_15239 generateSecretKey + m (ILjava/lang/String;Ljava/security/Key;)Ljavax/crypto/Cipher; a method_15241 setupCipher + m (ILjava/security/Key;)Ljavax/crypto/Cipher; a method_15235 getCipher + m (ILjava/security/Key;[B)[B a method_15244 cipherData + m (Ljava/lang/String;)Ljava/security/PrivateKey; a method_43519 stringToPemRsaPrivateKey + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Laxl$a;)Ljava/security/Key; a method_43520 rsaStringToKey + m (Ljava/lang/String;Ljava/security/PublicKey;Ljavax/crypto/SecretKey;)[B a method_15240 digestData + m (Ljava/security/Key;[B)[B a method_15238 encryptUsingKey + m (Ljava/security/PrivateKey;)Ljava/lang/String; a method_43521 pemRsaPrivateKeyToString + m (Ljava/security/PrivateKey;[B)Ljavax/crypto/SecretKey; a method_15234 decryptByteToSecretKey + m (Ljava/security/PublicKey;)Ljava/lang/String; a method_43522 rsaPublicKeyToString + m ([B)Ljava/security/PublicKey; a method_15242 byteToPublicKey + m ([[B)[B a method_15236 digestData + m ()Ljava/security/KeyPair; b method_15237 generateKeyPair + m (Ljava/lang/String;)Ljava/security/PublicKey; b method_43524 stringToRsaPublicKey + m (Ljava/security/Key;[B)[B b method_15243 decryptUsingKey + m ([B)Ljava/security/PrivateKey; b method_43525 byteToPrivateKey + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; c method_43526 method_43526 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; d method_43527 method_43527 + m ()V + m ()V +c axl$a net/minecraft/class_3515$class_7424 net/minecraft/util/Crypt$ByteArrayToKeyFunction +c axl$b net/minecraft/class_3515$class_7425 net/minecraft/util/Crypt$SaltSignaturePair + f Laxl$b; a field_39040 EMPTY + f J b comp_739 salt + f [B c comp_740 signature + m ()Z a method_43528 isValid + m (Lvw;Laxl$b;)V a method_43529 write + m ()[B b method_43530 saltAsBytes + m ()J c comp_739 salt + m ()[B d comp_740 signature + m (Lvw;)V + m (J[B)V + m ()V +c axl$c net/minecraft/class_3515$class_7426 net/minecraft/util/Crypt$SaltSupplier + f Ljava/security/SecureRandom; a field_39041 secureRandom + m ()J a method_43531 getLong + m ()V + m ()V +c axm net/minecraft/class_5525 net/minecraft/util/CryptException + m (Ljava/lang/Throwable;)V +c axn net/minecraft/class_4456 net/minecraft/util/CsvOutput + f Ljava/lang/String; a field_29836 LINE_SEPARATOR + f Ljava/lang/String; b field_29837 FIELD_SEPARATOR + f Ljava/io/Writer; c field_20284 output + f I d field_20285 columnCount + m ()Laxn$a; a method_21627 builder + m (Ljava/lang/Object;)Ljava/lang/String; a method_21628 getStringValue + m (Ljava/util/stream/Stream;)V a method_21629 writeLine + m ([Ljava/lang/Object;)V a method_21630 writeRow + m (Ljava/io/Writer;Ljava/util/List;)V +c axn$a net/minecraft/class_4456$class_4457 net/minecraft/util/CsvOutput$Builder + f Ljava/util/List; a field_20286 headers + m (Ljava/io/Writer;)Laxn; a method_21631 build + m (Ljava/lang/String;)Laxn$a; a method_21632 addColumn + m ()V +c axo net/minecraft/class_6491 net/minecraft/util/CubicSampler + f I a field_33222 GAUSSIAN_SAMPLE_RADIUS + f I b field_33223 GAUSSIAN_SAMPLE_BREADTH + f [D c field_22449 GAUSSIAN_SAMPLE_KERNEL + m (Lexc;Laxo$a;)Lexc; a method_24895 gaussianSampleVec3 + m ()V + m ()V +c axo$a net/minecraft/class_6491$class_4859 net/minecraft/util/CubicSampler$Vec3Fetcher +c axp net/minecraft/class_6492 net/minecraft/util/CubicSpline + m ()Ljava/lang/String; a method_39225 parityString + m (F)Laxp; a method_39427 constant + m (FLaxp;F)Laxp$a; a method_39226 method_39226 + m (Laxp$d;)Laxp; a method_41187 mapAll + m (Laxp$e;)Ljava/lang/Record; a method_39227 method_39227 + m (Laxp$e;I)Laxp$a; a method_39228 method_39228 + m (Laxp;)Lcom/mojang/datafixers/util/Either; a method_39229 method_39229 + m (Lazq;)Laxp$b; a method_37918 builder + m (Lazq;Lazq;)Laxp$b; a method_39502 builder + m (Lazq;Ljava/util/List;)Laxp$e; a method_39230 method_39230 + m (Lcom/mojang/datafixers/util/Either;)Laxp; a method_39231 method_39231 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_39232 codec + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39233 method_39233 + m (Lorg/apache/commons/lang3/mutable/MutableObject;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39234 method_39234 + m (Laxp$e;)Ljava/util/List; b method_39235 method_39235 +c axp$a net/minecraft/class_6492$class_6737 net/minecraft/util/CubicSpline$1Point + f F a comp_225 location + f Laxp; b comp_226 value + f F c comp_227 derivative + m ()F a comp_225 location + m ()Laxp; b comp_226 value + m ()F c comp_227 derivative + m (FLaxp;F)V +c axp$b net/minecraft/class_6492$class_6493 net/minecraft/util/CubicSpline$Builder + f Lazq; a field_34382 coordinate + f Lazq; b field_35661 valueTransformer + f Lit/unimi/dsi/fastutil/floats/FloatList; c field_34383 locations + f Ljava/util/List; d field_34384 values + f Lit/unimi/dsi/fastutil/floats/FloatList; e field_34385 derivatives + m ()Laxp; a method_37923 build + m (FF)Laxp$b; a method_41294 addPoint + m (FFF)Laxp$b; a method_37924 addPoint + m (FLaxp;)Laxp$b; a method_41295 addPoint + m (FLaxp;F)Laxp$b; a method_37925 addPoint + m (Lazq;)V + m (Lazq;Lazq;)V +c axp$c net/minecraft/class_6492$class_6494 net/minecraft/util/CubicSpline$Constant + f F b comp_228 value + m ()F d comp_228 value + m (F)V +c axp$d net/minecraft/class_6492$class_7073 net/minecraft/util/CubicSpline$CoordinateVisitor +c axp$e net/minecraft/class_6492$class_6738 net/minecraft/util/CubicSpline$Multipoint + f Lazq; b comp_229 coordinate + f [F c comp_230 locations + f Ljava/util/List; d comp_231 values + f [F e comp_232 derivatives + f F f comp_532 minValue + f F g comp_533 maxValue + m (D)Ljava/lang/String; a method_39236 method_39236 + m (F[FF[FI)F a method_41297 linearExtend + m (F[FI)Z a method_41298 method_41298 + m (Laxp$d;Laxp;)Laxp; a method_41188 method_41188 + m (Lazq;[FLjava/util/List;[F)Laxp$e; a method_41299 create + m ([F)Ljava/lang/String; a method_39238 toString + m ([FF)I a method_41300 findIntervalStart + m ([FI)D a method_39239 method_39239 + m ([FLjava/util/List;[F)V a method_41301 validateSizes + m ()Lazq; d comp_229 coordinate + m ()[F e comp_230 locations + m ()Ljava/util/List; f comp_231 values + m ()[F g comp_232 derivatives + m (Lazq;[FLjava/util/List;[FFF)V +c axq net/minecraft/class_5831 net/minecraft/util/DebugBuffer + f Ljava/util/concurrent/atomic/AtomicReferenceArray; a field_28810 data + f Ljava/util/concurrent/atomic/AtomicInteger; b field_28811 index + m ()Ljava/util/List; a method_33720 dump + m (Ljava/lang/Object;)V a method_33721 push + m (I)V +c axr net/minecraft/class_8941 net/minecraft/util/DelegateDataOutput + f Ljava/io/DataOutput; a field_47218 parent + m (Ljava/io/DataOutput;)V +c axs net/minecraft/class_8523 net/minecraft/util/DependencySorter + f Ljava/util/Map; a field_44702 contents + m (Lcom/google/common/collect/Multimap;Ljava/lang/Object;Laxs$a;)V a method_51482 method_51482 + m (Lcom/google/common/collect/Multimap;Ljava/lang/Object;Ljava/lang/Object;)Z a method_51483 isCyclic + m (Lcom/google/common/collect/Multimap;Ljava/util/Set;Ljava/lang/Object;Ljava/util/function/BiConsumer;)V a method_51484 visitDependenciesAndElement + m (Lcom/google/common/collect/Multimap;Ljava/util/Set;Ljava/util/function/BiConsumer;Ljava/lang/Object;)V a method_51485 method_51485 + m (Ljava/lang/Object;Laxs$a;)Laxs; a method_51486 addEntry + m (Ljava/util/function/BiConsumer;)V a method_51487 orderByDependencies + m (Lcom/google/common/collect/Multimap;Ljava/lang/Object;Laxs$a;)V b method_51488 method_51488 + m (Lcom/google/common/collect/Multimap;Ljava/lang/Object;Ljava/lang/Object;)V b method_51489 addDependencyIfNotCyclic + m (Lcom/google/common/collect/Multimap;Ljava/util/Set;Ljava/util/function/BiConsumer;Ljava/lang/Object;)V b method_51490 method_51490 + m (Lcom/google/common/collect/Multimap;Ljava/lang/Object;Ljava/lang/Object;)V c method_51491 method_51491 + m (Lcom/google/common/collect/Multimap;Ljava/lang/Object;Ljava/lang/Object;)V d method_51492 method_51492 + m (Lcom/google/common/collect/Multimap;Ljava/lang/Object;Ljava/lang/Object;)Z e method_51493 method_51493 + m ()V +c axs$a net/minecraft/class_8523$class_8524 net/minecraft/util/DependencySorter$Entry + m (Ljava/util/function/Consumer;)V a method_51478 visitRequiredDependencies + m (Ljava/util/function/Consumer;)V b method_51480 visitOptionalDependencies +c axt net/minecraft/class_5125 net/minecraft/util/DirectoryLock + f Ljava/lang/String; a field_29838 LOCK_FILE + f Ljava/nio/channels/FileChannel; b field_23692 lockFile + f Ljava/nio/channels/FileLock; c field_23693 lock + f Ljava/nio/ByteBuffer; d field_25353 DUMMY + m ()Z a method_26802 isValid + m (Ljava/nio/file/Path;)Laxt; a method_26803 create + m (Ljava/nio/file/Path;)Z b method_26804 isLocked + m (Ljava/nio/channels/FileChannel;Ljava/nio/channels/FileLock;)V + m ()V +c axt$a net/minecraft/class_5125$class_5126 net/minecraft/util/DirectoryLock$LockException + m (Ljava/nio/file/Path;)Laxt$a; a method_26805 alreadyLocked + m (Ljava/nio/file/Path;Ljava/lang/String;)V +c axu net/minecraft/class_9684 net/minecraft/util/EncoderCache + f Lcom/google/common/cache/LoadingCache; a field_51504 cache + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_59856 wrap + m (I)V +c axu$1 net/minecraft/class_9684$1 net/minecraft/util/EncoderCache$1 + m (Laxu$a;)Lcom/mojang/serialization/DataResult; a method_59857 load + m (Laxu;)V +c axu$2 net/minecraft/class_9684$2 net/minecraft/util/EncoderCache$2 + f Lcom/mojang/serialization/Codec; a field_51505 val$codec + f Laxu; b field_51506 field_51506 + m (Ljava/lang/Object;)Ljava/lang/Object; a method_59890 method_59890 + m (Laxu;Lcom/mojang/serialization/Codec;)V +c axu$a net/minecraft/class_9684$class_9685 net/minecraft/util/EncoderCache$Key + f Lcom/mojang/serialization/Codec; a comp_2658 codec + f Ljava/lang/Object; b comp_2659 value + f Lcom/mojang/serialization/DynamicOps; c comp_2660 ops + m ()Lcom/mojang/serialization/DataResult; a method_59858 resolve + m ()Lcom/mojang/serialization/Codec; b comp_2658 codec + m ()Ljava/lang/Object; c comp_2659 value + m ()Lcom/mojang/serialization/DynamicOps; d comp_2660 ops + m (Lcom/mojang/serialization/Codec;Ljava/lang/Object;Lcom/mojang/serialization/DynamicOps;)V +c axv net/minecraft/class_5127 net/minecraft/util/ExceptionCollector + f Ljava/lang/Throwable; a field_23694 result + m ()V a method_26806 throwIfPresent + m (Ljava/lang/Throwable;)V a method_26807 add + m ()V +c axw net/minecraft/class_5699 net/minecraft/util/ExtraCodecs + f Lcom/mojang/serialization/Codec; A field_45075 RESOURCE_PATH_CODEC + f Lcom/mojang/serialization/Codec; B field_40727 PROPERTY + f Lcom/mojang/serialization/MapCodec; C field_45076 GAME_PROFILE_WITHOUT_PROPERTIES + f Lcom/mojang/serialization/Codec; a field_40721 JSON + f Lcom/mojang/serialization/Codec; b field_46236 JAVA + f Lcom/mojang/serialization/Codec; c field_40723 VECTOR3F + f Lcom/mojang/serialization/Codec; d field_51364 VECTOR4F + f Lcom/mojang/serialization/Codec; e field_42265 QUATERNIONF_COMPONENTS + f Lcom/mojang/serialization/Codec; f field_42266 AXISANGLE4F + f Lcom/mojang/serialization/Codec; g field_42267 QUATERNIONF + f Lcom/mojang/serialization/Codec; h field_42268 MATRIX4F + f Lcom/mojang/serialization/Codec; i field_51365 ARGB_COLOR_CODEC + f Lcom/mojang/serialization/Codec; j field_49012 UNSIGNED_BYTE + f Lcom/mojang/serialization/Codec; k field_33441 NON_NEGATIVE_INT + f Lcom/mojang/serialization/Codec; l field_33442 POSITIVE_INT + f Lcom/mojang/serialization/Codec; m field_34387 POSITIVE_FLOAT + f Lcom/mojang/serialization/Codec; n field_37408 PATTERN + f Lcom/mojang/serialization/Codec; o field_39042 INSTANT_ISO8601 + f Lcom/mojang/serialization/Codec; p field_39273 BASE64_STRING + f Lcom/mojang/serialization/Codec; q field_46165 ESCAPED_STRING + f Lcom/mojang/serialization/Codec; r field_39274 TAG_OR_ELEMENT_ID + f Ljava/util/function/Function; s field_39395 toOptionalLong + f Ljava/util/function/Function; t field_39396 fromOptionalLong + f Lcom/mojang/serialization/Codec; u field_40724 BIT_SET + f Lcom/mojang/serialization/Codec; v field_40725 PROPERTY_MAP + f Lcom/mojang/serialization/Codec; w field_49183 PLAYER_NAME + f Lcom/mojang/serialization/Codec; x field_40726 GAME_PROFILE + f Lcom/mojang/serialization/Codec; y field_41759 NON_EMPTY_STRING + f Lcom/mojang/serialization/Codec; z field_44703 CODEPOINT + m ()Ljava/lang/String; a method_49430 method_49430 + m (FFLjava/util/function/Function;)Lcom/mojang/serialization/Codec; a method_37928 floatRangeMinExclusiveWithMessage + m (FFLjava/util/function/Function;Ljava/lang/Float;)Lcom/mojang/serialization/DataResult; a method_48108 method_48108 + m (II)Lcom/mojang/serialization/Codec; a method_48766 intRange + m (IILjava/lang/Integer;)Ljava/lang/String; a method_48767 method_48767 + m (IILjava/util/function/Function;)Lcom/mojang/serialization/Codec; a method_36241 intRangeWithMessage + m (IILjava/util/function/Function;Ljava/lang/Integer;)Lcom/mojang/serialization/DataResult; a method_48111 method_48111 + m (ILjava/util/Map;)Lcom/mojang/serialization/DataResult; a method_57149 method_57149 + m (Lakr;)Laxw$c; a method_43958 method_43958 + m (Lcom/mojang/authlib/GameProfile;Lcom/mojang/authlib/properties/PropertyMap;)Lcom/mojang/authlib/GameProfile; a method_46370 method_46370 + m (Lcom/mojang/authlib/GameProfile;Ljava/lang/String;Lcom/mojang/authlib/properties/Property;)V a method_46371 method_46371 + m (Lcom/mojang/authlib/properties/Property;)Ljava/util/Optional; a method_46372 method_46372 + m (Lcom/mojang/authlib/properties/PropertyMap;)Lcom/mojang/datafixers/util/Either; a method_46373 method_46373 + m (Lcom/mojang/authlib/properties/PropertyMap;Ljava/lang/String;Ljava/util/List;)V a method_46374 method_46374 + m (Lcom/mojang/authlib/properties/PropertyMap;Ljava/util/List;)V a method_46375 method_46375 + m (Lcom/mojang/authlib/properties/PropertyMap;Ljava/util/Map;)V a method_46376 method_46376 + m (Lcom/mojang/datafixers/util/Either;)Lcom/mojang/authlib/properties/PropertyMap; a method_46377 method_46377 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_36973 nonEmptyList + m (Lcom/mojang/serialization/Codec;I)Lcom/mojang/serialization/Codec; a method_57153 sizeLimitedMap + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_39512 orCompressed + m (Lcom/mojang/serialization/Codec;Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_37930 method_37930 + m (Lcom/mojang/serialization/Codec;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/BiFunction;Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/serialization/Codec; a method_37931 intervalCodec + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;)Lcom/mojang/serialization/Codec; a method_56942 overrideLifecycle + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/serialization/Codec; a method_39504 overrideLifecycle + m (Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/Codec; a method_53918 converter + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Dynamic;)Ljava/lang/Object; a method_53919 method_53919 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/Dynamic; a method_53920 method_53920 + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_44167 asOptionalLong + m (Lcom/mojang/serialization/MapCodec;Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_53921 orCompressed + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52459 method_52459 + m (Ljava/lang/Float;)Ljava/lang/String; a method_37932 method_37932 + m (Ljava/lang/Integer;)Ljava/lang/String; a method_36242 method_36242 + m (Ljava/lang/Object;)Lcom/mojang/serialization/Codec$ResultFunction; a method_39028 orElsePartial + m (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String; a method_49431 method_49431 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_52460 method_52460 + m (Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Codec;Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/serialization/MapCodec; a method_54941 dispatchOptionalValue + m (Ljava/lang/String;Ljava/lang/String;Ljava/util/Optional;)Lcom/mojang/authlib/properties/Property; a method_46381 method_46381 + m (Ljava/lang/String;Ljava/util/regex/PatternSyntaxException;)Ljava/lang/String; a method_49433 method_49433 + m (Ljava/time/format/DateTimeFormatter;)Lcom/mojang/serialization/Codec; a method_53700 temporalCodec + m (Ljava/time/format/DateTimeFormatter;Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_53701 method_53701 + m (Ljava/util/BitSet;)Ljava/util/stream/LongStream; a method_46382 method_46382 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_48115 method_48115 + m (Ljava/util/Map;I)Ljava/lang/String; a method_57152 method_57152 + m (Ljava/util/Optional;)Ljava/util/OptionalLong; a method_44168 method_44168 + m (Ljava/util/OptionalLong;)Ljava/util/Optional; a method_44169 method_44169 + m (Ljava/util/function/BiFunction;Lcom/mojang/datafixers/util/Either;)Lcom/mojang/serialization/DataResult; a method_37935 method_37935 + m (Ljava/util/function/BiFunction;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_37936 method_37936 + m (Ljava/util/function/BiFunction;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_37937 method_37937 + m (Ljava/util/function/BiFunction;Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_37938 method_37938 + m (Ljava/util/function/Function;)Lcom/mojang/serialization/MapCodec; a method_40110 retrieveContext + m (Ljava/util/function/Function;Ljava/lang/Float;)Ljava/lang/String; a method_49434 method_49434 + m (Ljava/util/function/Function;Ljava/lang/Integer;)Ljava/lang/String; a method_49435 method_49435 + m (Ljava/util/function/Function;Ljava/util/Collection;)Lcom/mojang/serialization/DataResult; a method_40111 method_40111 + m (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/Object;)Lcom/mojang/datafixers/util/Either; a method_37939 method_37939 + m (Ljava/util/function/IntFunction;Ljava/lang/Integer;)Lcom/mojang/serialization/DataResult; a method_39509 method_39509 + m (Ljava/util/function/ToIntFunction;ILjava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_39510 method_39510 + m (Ljava/util/function/ToIntFunction;Ljava/util/function/IntFunction;I)Lcom/mojang/serialization/Codec; a method_39511 idResolverCodec + m (Ljava/util/stream/LongStream;)Ljava/util/BitSet; a method_46384 method_46384 + m (Ljq;)Lcom/mojang/serialization/DataResult; a method_48113 method_48113 + m (Lorg/joml/AxisAngle4f;)Lorg/joml/Vector3f; a method_48768 method_48768 + m (Lorg/joml/Matrix4f;)Ljava/util/List; a method_48769 method_48769 + m (Lorg/joml/Quaternionf;)Ljava/util/List; a method_48777 method_48777 + m (Lorg/joml/Vector3f;)Ljava/util/List; a method_46385 method_46385 + m (Lorg/joml/Vector4f;)Ljava/lang/Integer; a method_59549 method_59549 + m ([B)Ljava/lang/String; a method_43960 method_43960 + m ()Ljava/lang/String; b method_49436 method_49436 + m (Lakr;)Laxw$c; b method_43961 method_43961 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; b method_40113 nonEmptyHolderSet + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/Codec;)Laxw$b; b method_53703 strictUnboundedMap + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_52462 method_52462 + m (Ljava/lang/Integer;)Ljava/lang/String; b method_36246 method_36246 + m (Ljava/lang/Object;)Ljava/lang/String; b method_49442 method_49442 + m (Ljava/lang/String;)Ljava/lang/String; b method_52464 method_52464 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; b method_48771 method_48771 + m (Ljava/util/function/BiFunction;Ljava/util/List;)Lcom/mojang/serialization/DataResult; b method_37942 method_37942 + m (Ljava/util/function/Function;)Ljava/util/function/Function; b method_40114 ensureHomogenous + m (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/Object;)Lcom/mojang/datafixers/util/Pair; b method_37943 method_37943 + m (Lorg/joml/AxisAngle4f;)Ljava/lang/Float; b method_48772 method_48772 + m (Lorg/joml/Vector4f;)Ljava/util/List; b method_59550 method_59550 + m ()Ljava/lang/String; c method_49438 method_49438 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; c method_42114 catchDecoderException + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_46388 method_46388 + m (Ljava/lang/Integer;)Lcom/mojang/serialization/DataResult; c method_39514 method_39514 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; c method_51494 method_51494 + m (Ljava/util/List;)Lorg/joml/Matrix4f; c method_48776 method_48776 + m (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/lang/Object;)Ljava/util/List; c method_37944 method_37944 + m ()Ljava/lang/String; d method_49440 method_49440 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; d method_53058 object2BooleanMap + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; d method_48775 method_48775 + m (Ljava/lang/Integer;)Ljava/lang/String; d method_49441 method_49441 + m (Ljava/lang/String;)Ljava/lang/String; d method_51495 method_51495 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; d method_59551 method_59551 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; e method_57155 optionalEmptyMap + m (Ljava/lang/Integer;)Lcom/mojang/serialization/DataResult; e method_56907 method_56907 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; e method_48114 method_48114 + m (Ljava/util/List;)Lorg/joml/Quaternionf; e method_59552 method_59552 + m (Ljava/lang/Integer;)Ljava/lang/String; f method_56908 method_56908 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; f method_57156 method_57156 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; f method_48778 method_48778 + m (Ljava/lang/String;)Ljava/lang/String; g method_57157 method_57157 + m (Ljava/util/List;)Lorg/joml/Vector4f; g method_48779 method_48779 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; h method_43959 method_43959 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; h method_46389 method_46389 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; i method_53826 method_53826 + m (Ljava/util/List;)Lorg/joml/Vector3f; i method_46391 method_46391 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; j method_43962 method_43962 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; k method_41302 method_41302 + m ()V + m ()V +c axw$1 net/minecraft/class_5699$1 net/minecraft/util/ExtraCodecs$1 + f Ljava/lang/Object; a field_35173 val$value + m (Lorg/apache/commons/lang3/mutable/MutableObject;)Ljava/lang/String; a method_49444 method_49444 + m (Ljava/lang/Object;)V +c axw$2 net/minecraft/class_5699$2 net/minecraft/util/ExtraCodecs$2 + f Lcom/mojang/serialization/Codec; a field_35662 val$compressed + f Lcom/mojang/serialization/Codec; b field_35663 val$normal + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/Codec;)V +c axw$3 net/minecraft/class_5699$3 net/minecraft/util/ExtraCodecs$3 + f Lcom/mojang/serialization/MapCodec; a field_46237 val$compressed + f Lcom/mojang/serialization/MapCodec; b field_46238 val$normal + m (Lcom/mojang/serialization/MapCodec;Lcom/mojang/serialization/MapCodec;)V +c axw$4 net/minecraft/class_5699$4 net/minecraft/util/ExtraCodecs$4 + f Ljava/util/function/Function; a field_35664 val$decodeLifecycle + f Ljava/util/function/Function; b field_35665 val$encodeLifecycle + m (Lcom/mojang/serialization/DataResult;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_39515 method_39515 + m (Ljava/util/function/Function;Ljava/util/function/Function;)V +c axw$5 net/minecraft/class_5699$5 net/minecraft/util/ExtraCodecs$5 + f Lcom/mojang/serialization/Codec; a field_38082 val$codec + m (Ljava/lang/Object;Ljava/lang/Exception;)Ljava/lang/String; a method_49445 method_49445 + m (Lcom/mojang/serialization/Codec;)V +c axw$6 net/minecraft/class_5699$6 net/minecraft/util/ExtraCodecs$6 + f Ljava/lang/String; a field_47219 val$typeKey + f Ljava/lang/String; b field_47220 val$valueKey + f Lcom/mojang/serialization/Codec; c field_47221 val$typeCodec + f Ljava/util/function/Function; d field_47222 val$valueCodec + f Ljava/util/function/Function; e field_47223 val$typeGetter + m (Lcom/mojang/serialization/Codec;Ljava/lang/Object;Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/DataResult; a method_54942 encode + m (Lcom/mojang/serialization/MapLike;Ljava/lang/String;Lcom/mojang/serialization/DynamicOps;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/DataResult; a method_54943 method_54943 + m (Ljava/lang/String;Lcom/mojang/serialization/MapLike;)Ljava/lang/String; a method_54944 method_54944 + m (Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Codec;Ljava/util/function/Function;Ljava/util/function/Function;)V +c axw$7 net/minecraft/class_5699$7 net/minecraft/util/ExtraCodecs$7 + f Lcom/mojang/serialization/Codec; a field_50110 val$codec + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_58592 method_58592 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Z a method_58593 isEmptyMap + m (Ljava/util/Optional;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_58594 encode + m (Lcom/mojang/serialization/Codec;)V +c axw$a net/minecraft/class_5699$class_6866 net/minecraft/util/ExtraCodecs$1ContextRetrievalCodec + f Ljava/util/function/Function; a field_36397 val$getter + m (Ljava/util/function/Function;)V +c axw$b net/minecraft/class_5699$class_8783 net/minecraft/util/ExtraCodecs$StrictUnboundedMapCodec + m ()Ljava/lang/String; a method_53704 method_53704 + m (Lcom/mojang/serialization/DataResult;Ljava/lang/String;)Ljava/lang/String; a method_53705 method_53705 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/MapLike;)Lcom/mojang/serialization/DataResult; a method_53706 method_53706 + m (Ljava/lang/Object;Ljava/util/Map;)Lcom/mojang/datafixers/util/Pair; a method_53707 method_53707 + m (Ljava/util/Map;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_53708 encode + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/Codec;)V +c axw$c net/minecraft/class_5699$class_7476 net/minecraft/util/ExtraCodecs$TagOrElementLocation + f Lakr; a comp_813 id + f Z b comp_814 tag + m ()Lakr; a comp_813 id + m ()Z b comp_814 tag + m ()Ljava/lang/String; c method_43963 decoratedId + m (Lakr;Z)V +c axx net/minecraft/class_6826 net/minecraft/util/FastBufferedInputStream + f I a field_36209 DEFAULT_BUFFER_SIZE + f Ljava/io/InputStream; b field_36210 in + f [B c field_36211 buffer + f I d field_36212 limit + f I e field_36213 position + m ()I a method_39779 bytesInBuffer + m ()V b method_39780 fill + m (Ljava/io/InputStream;)V + m (Ljava/io/InputStream;I)V +c axy net/minecraft/class_5253 net/minecraft/util/FastColor + m (F)I a method_59553 as8BitChannel + m ()V +c axy$a net/minecraft/class_5253$class_8045 net/minecraft/util/FastColor$ABGR32 + m (I)I a method_48342 alpha + m (II)I a method_48343 color + m (IIII)I a method_48344 color + m (I)I b method_48345 red + m (I)I c method_48346 green + m (I)I d method_48347 blue + m (I)I e method_48348 transparent + m (I)I f method_48548 opaque + m (I)I g method_60675 fromArgb32 + m ()V +c axy$b net/minecraft/class_5253$class_5254 net/minecraft/util/FastColor$ARGB32 + m (FFFF)I a method_59554 colorFromFloat + m (FII)I a method_48780 lerp + m (I)I a method_27762 alpha + m (II)I a method_27763 multiply + m (III)I a method_57173 color + m (IIII)I a method_27764 color + m (I)I b method_27765 red + m (II)I b method_58144 color + m (I)I c method_27766 green + m (II)I c method_60676 average + m (I)I d method_27767 blue + m (I)I e method_57174 opaque + m ()V +c axz net/minecraft/class_6397 net/minecraft/util/FileZipper + f Lorg/slf4j/Logger; a field_33864 LOGGER + f Ljava/nio/file/Path; b field_33865 outputFile + f Ljava/nio/file/Path; c field_33866 tempFile + f Ljava/nio/file/FileSystem; d field_33867 fs + m (Ljava/nio/file/Path;)V a method_37161 add + m (Ljava/nio/file/Path;Ljava/io/File;)V a method_37162 add + m (Ljava/nio/file/Path;Ljava/lang/String;)V a method_37163 add + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Z a method_37164 method_37164 + m (Ljava/nio/file/Path;)V + m ()V +c aya net/minecraft/class_5481 net/minecraft/util/FormattedCharSequence + f Laya; a field_26385 EMPTY + m (Laya;Laya;Layb;)Z a method_30743 method_30743 + m (Layb;)Z a method_30744 method_30744 + m (Layb;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;ILxw;I)Z a method_30746 method_30746 + m (Ljava/lang/String;Lxw;Layb;)Z a method_34907 method_34907 + m (Ljava/lang/String;Lxw;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;Layb;)Z a method_30748 method_30748 + m (Ljava/util/List;Layb;)Z a method_30750 method_30750 + m (Lxw;ILayb;)Z a method_30751 method_30751 + m (Ljava/lang/String;Lxw;Layb;)Z b method_30753 method_30753 + m (Ljava/lang/String;Lxw;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;Layb;)Z b method_34911 method_34911 + m (Ljava/lang/String;Lxw;)Laya; backward method_34910 backward + m (Ljava/lang/String;Lxw;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;)Laya; backward method_30754 backward + m (ILxw;)Laya; codepoint method_30741 codepoint + m ()Laya; composite method_34905 composite + m (Laya;)Laya; composite method_34906 composite + m (Laya;Laya;)Laya; composite method_30742 composite + m (Ljava/util/List;)Laya; composite method_30749 composite + m ([Laya;)Laya; composite method_34909 composite + m (Layb;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;)Layb; decorateOutput method_30745 decorateOutput + m (Ljava/lang/String;Lxw;)Laya; forward method_30747 forward + m (Ljava/lang/String;Lxw;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;)Laya; forward method_34908 forward + m (Ljava/util/List;)Laya; fromList method_30755 fromList + m (Laya;Laya;)Laya; fromPair method_30752 fromPair + m ()V +c ayb net/minecraft/class_5224 net/minecraft/util/FormattedCharSink +c ayc net/minecraft/class_7619 net/minecraft/util/FutureChain + f Lorg/slf4j/Logger; b field_39828 LOGGER + f Ljava/util/concurrent/CompletableFuture; c field_39829 head + f Ljava/util/concurrent/Executor; d field_39830 executor + f Z e field_40112 closed + m (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; a method_54440 method_54440 + m (Ljava/lang/Throwable;)Ljava/lang/Void; a method_44904 method_44904 + m (Ljava/util/function/Consumer;Ljava/lang/Object;)V a method_44903 method_44903 + m (Ljava/util/concurrent/Executor;)V + m ()V +c ayd net/minecraft/class_6496 net/minecraft/util/Graph + m (Ljava/util/Map;Ljava/util/Set;Ljava/util/Set;Ljava/util/function/Consumer;Ljava/lang/Object;)Z a method_37951 depthFirstSearch + m ()V +c aye net/minecraft/class_3518 net/minecraft/util/GsonHelper + f Lcom/google/gson/Gson; a field_15657 GSON + m (Lcom/google/gson/Gson;Ljava/io/Reader;Lcom/google/gson/reflect/TypeToken;)Ljava/lang/Object; a method_15297 fromJson + m (Lcom/google/gson/Gson;Ljava/io/Reader;Lcom/google/gson/reflect/TypeToken;Z)Ljava/lang/Object; a method_47992 fromNullableJson + m (Lcom/google/gson/Gson;Ljava/io/Reader;Ljava/lang/Class;)Ljava/lang/Object; a method_15276 fromJson + m (Lcom/google/gson/Gson;Ljava/io/Reader;Ljava/lang/Class;Z)Ljava/lang/Object; a method_47993 fromNullableJson + m (Lcom/google/gson/Gson;Ljava/lang/String;Lcom/google/gson/reflect/TypeToken;)Ljava/lang/Object; a method_15290 fromNullableJson + m (Lcom/google/gson/Gson;Ljava/lang/String;Lcom/google/gson/reflect/TypeToken;Z)Ljava/lang/Object; a method_15262 fromNullableJson + m (Lcom/google/gson/Gson;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; a method_15284 fromJson + m (Lcom/google/gson/Gson;Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/Object; a method_15279 fromJson + m (Lcom/google/gson/JsonElement;)Z a method_15286 isStringValue + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)Ljava/lang/String; a method_15287 convertToString + m (Lcom/google/gson/JsonElement;Ljava/lang/String;Lcom/google/gson/JsonDeserializationContext;Ljava/lang/Class;)Ljava/lang/Object; a method_15291 convertToObject + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z a method_15289 isStringValue + m (Lcom/google/gson/JsonObject;Ljava/lang/String;B)B a method_15271 getAsByte + m (Lcom/google/gson/JsonObject;Ljava/lang/String;C)C a method_34914 getAsCharacter + m (Lcom/google/gson/JsonObject;Ljava/lang/String;D)D a method_34915 getAsDouble + m (Lcom/google/gson/JsonObject;Ljava/lang/String;F)F a method_15277 getAsFloat + m (Lcom/google/gson/JsonObject;Ljava/lang/String;I)I a method_15282 getAsInt + m (Lcom/google/gson/JsonObject;Ljava/lang/String;J)J a method_15280 getAsLong + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Lcom/google/gson/JsonArray;)Lcom/google/gson/JsonArray; a method_15292 getAsJsonArray + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Lcom/google/gson/JsonDeserializationContext;Ljava/lang/Class;)Ljava/lang/Object; a method_15272 getAsObject + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Lcom/google/gson/JsonObject;)Lcom/google/gson/JsonObject; a method_15281 getAsJsonObject + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/Object;Lcom/google/gson/JsonDeserializationContext;Ljava/lang/Class;)Ljava/lang/Object; a method_15283 getAsObject + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_15253 getAsString + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/math/BigDecimal;)Ljava/math/BigDecimal; a method_34917 getAsBigDecimal + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/math/BigInteger;)Ljava/math/BigInteger; a method_34918 getAsBigInteger + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljm;)Ljm; a method_34916 getAsItem + m (Lcom/google/gson/JsonObject;Ljava/lang/String;S)S a method_34919 getAsShort + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z a method_15258 getAsBoolean + m (Lcom/google/gson/stream/JsonWriter;Lcom/google/gson/JsonElement;Ljava/util/Comparator;)V a method_43677 writeValue + m (Ljava/io/Reader;)Lcom/google/gson/JsonObject; a method_15255 parse + m (Ljava/io/Reader;Z)Lcom/google/gson/JsonObject; a method_15274 parse + m (Ljava/lang/String;)Lcom/google/gson/JsonObject; a method_15285 parse + m (Ljava/lang/String;Ljava/lang/String;)Lcom/google/gson/JsonSyntaxException; a method_17995 method_17995 + m (Ljava/lang/String;Z)Lcom/google/gson/JsonObject; a method_15298 parse + m (Ljava/util/Collection;Ljava/util/Comparator;)Ljava/util/Collection; a method_43678 sortByKeyIfNeeded + m (Lcom/google/gson/Gson;Ljava/io/Reader;Lcom/google/gson/reflect/TypeToken;Z)Ljava/lang/Object; b method_15273 fromJson + m (Lcom/google/gson/Gson;Ljava/io/Reader;Ljava/lang/Class;Z)Ljava/lang/Object; b method_15267 fromJson + m (Lcom/google/gson/Gson;Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/Object; b method_47994 fromNullableJson + m (Lcom/google/gson/JsonElement;)Z b method_15275 isNumberValue + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)Ljm; b method_15256 convertToItem + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z b method_34920 isNumberValue + m (Ljava/io/Reader;)Lcom/google/gson/JsonArray; b method_37165 parseArray + m (Ljava/lang/String;)Lcom/google/gson/JsonArray; b method_43679 parseArray + m (Lcom/google/gson/JsonElement;)Z c method_34921 isBooleanValue + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)Z c method_15268 convertToBoolean + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z c method_15254 isBooleanValue + m (Lcom/google/gson/JsonElement;)Ljava/lang/String; d method_15266 getType + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)D d method_34922 convertToDouble + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z d method_15264 isArrayNode + m (Lcom/google/gson/JsonElement;)Ljava/lang/String; e method_43680 toStableString + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)F e method_15269 convertToFloat + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z e method_34923 isObjectNode + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)J f method_15263 convertToLong + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z f method_15278 isValidPrimitive + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)I g method_15257 convertToInt + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z g method_15294 isValidNode + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)B h method_15293 convertToByte + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonElement; h method_52226 getNonNull + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)C i method_34924 convertToCharacter + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljava/lang/String; i method_15265 getAsString + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)Ljava/math/BigDecimal; j method_34925 convertToBigDecimal + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljm; j method_15288 getAsItem + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)Ljava/math/BigInteger; k method_34926 convertToBigInteger + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z k method_15270 getAsBoolean + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)S l method_34928 convertToShort + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)D l method_34927 getAsDouble + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)Lcom/google/gson/JsonObject; m method_15295 convertToJsonObject + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)F m method_15259 getAsFloat + m (Lcom/google/gson/JsonElement;Ljava/lang/String;)Lcom/google/gson/JsonArray; n method_15252 convertToJsonArray + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)J n method_22449 getAsLong + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)I o method_15260 getAsInt + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)B p method_34929 getAsByte + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)C q method_34930 getAsCharacter + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljava/math/BigDecimal; r method_34931 getAsBigDecimal + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljava/math/BigInteger; s method_34932 getAsBigInteger + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)S t method_34933 getAsShort + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; u method_15296 getAsJsonObject + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonArray; v method_15261 getAsJsonArray + m ()V + m ()V +c ayf net/minecraft/class_3521 net/minecraft/util/HttpUtil + f Lorg/slf4j/Logger; a field_15665 LOGGER + m ()I a method_15302 getAvailablePort + m (I)Z a method_46872 isPortAvailable + m (Lcom/google/common/hash/HashFunction;ILayf$a;Ljava/io/InputStream;Ljava/nio/file/Path;)Lcom/google/common/hash/HashCode; a method_55492 downloadAndHash + m (Ljava/nio/file/Path;)V a method_55603 updateModificationTime + m (Ljava/nio/file/Path;Lcom/google/common/hash/HashCode;)Ljava/nio/file/Path; a method_55493 cachedFilePath + m (Ljava/nio/file/Path;Lcom/google/common/hash/HashFunction;)Lcom/google/common/hash/HashCode; a method_55494 hashFile + m (Ljava/nio/file/Path;Lcom/google/common/hash/HashFunction;Lcom/google/common/hash/HashCode;)Z a method_55495 checkExistingFile + m (Ljava/nio/file/Path;Ljava/net/URL;Ljava/util/Map;Lcom/google/common/hash/HashFunction;Lcom/google/common/hash/HashCode;ILjava/net/Proxy;Layf$a;)Ljava/nio/file/Path; a method_55496 downloadFile + m ()V + m ()V +c ayf$a net/minecraft/class_3521$class_9034 net/minecraft/util/HttpUtil$DownloadProgressListener + m ()V a method_55497 requestStart + m (J)V a method_55498 downloadedBytes + m (Ljava/util/OptionalLong;)V a method_55499 downloadStart + m (Z)V a method_55500 requestFinished +c ayg net/minecraft/class_6497 net/minecraft/util/InclusiveRange + f Lcom/mojang/serialization/Codec; a field_34390 INT + f Ljava/lang/Comparable; b comp_1 minInclusive + f Ljava/lang/Comparable; c comp_2 maxInclusive + m ()Ljava/lang/Comparable; a comp_1 minInclusive + m (Layg;)Z a method_37952 contains + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_37953 codec + m (Lcom/mojang/serialization/Codec;Ljava/lang/Comparable;Ljava/lang/Comparable;)Lcom/mojang/serialization/Codec; a method_37954 codec + m (Ljava/lang/Comparable;)Z a method_37955 isValueInRange + m (Ljava/lang/Comparable;Layg;)Ljava/lang/String; a method_49447 method_49447 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;)Lcom/mojang/serialization/DataResult; a method_37956 create + m (Ljava/lang/Comparable;Ljava/lang/Comparable;Layg;)Lcom/mojang/serialization/DataResult; a method_37957 method_37957 + m ()Ljava/lang/Comparable; b comp_2 maxInclusive + m (Ljava/lang/Comparable;Layg;)Ljava/lang/String; b method_49448 method_49448 + m ()Ljava/lang/String; c method_49449 method_49449 + m (Ljava/lang/Comparable;Ljava/lang/Comparable;)V + m (Ljava/lang/Comparable;)V + m ()V +c ayh net/minecraft/class_7243 net/minecraft/util/KeyDispatchDataCodec + f Lcom/mojang/serialization/MapCodec; a comp_640 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_640 codec + m (Lcom/mojang/serialization/MapCodec;)Layh; a method_42116 of + m (Lcom/mojang/serialization/MapCodec;)V +c ayi net/minecraft/class_3528 net/minecraft/util/LazyLoadedValue + f Ljava/util/function/Supplier; a field_15719 factory + m ()Ljava/lang/Object; a method_15332 get + m (Ljava/util/function/Supplier;)V +c ayj net/minecraft/class_4540 net/minecraft/util/LinearCongruentialGenerator + f J a field_29842 MULTIPLIER + f J b field_29843 INCREMENT + m (JJ)J a method_22372 next + m ()V +c ayk net/minecraft/class_9634 net/minecraft/util/ListAndDeque + m ()Layk; b method_59513 reversed +c ayl net/minecraft/class_3530 net/minecraft/util/LowerCaseEnumTypeAdapterFactory + m (Ljava/lang/Object;)Ljava/lang/String; a method_15334 toLowercase + m ()V +c ayl$1 net/minecraft/class_3530$1 net/minecraft/util/LowerCaseEnumTypeAdapterFactory$1 + f Ljava/util/Map; a field_15720 val$lowercaseToConstant + f Layl; b field_15721 field_15721 + m (Layl;Ljava/util/Map;)V +c aym net/minecraft/class_6416 net/minecraft/util/MemoryReserve + f [B a field_34021 reserve + m ()V a method_37414 allocate + m ()V b method_37415 release + m ()V + m ()V +c ayn net/minecraft/class_6683 net/minecraft/util/ModCheck + f Layn$a; a comp_171 confidence + f Ljava/lang/String; b comp_172 description + m ()Z a method_39029 shouldReportAsModified + m (Layn;)Layn; a method_39030 merge + m (Ljava/lang/String;Ljava/util/function/Supplier;Ljava/lang/String;Ljava/lang/Class;)Layn; a method_39031 identify + m ()Ljava/lang/String; b method_39032 fullDescription + m ()Layn$a; c comp_171 confidence + m ()Ljava/lang/String; d comp_172 description + m (Layn$a;Ljava/lang/String;)V +c ayn$a net/minecraft/class_6683$class_6684 net/minecraft/util/ModCheck$Confidence + f Layn$a; a field_35174 PROBABLY_NOT + f Layn$a; b field_35175 VERY_LIKELY + f Layn$a; c field_35176 DEFINITELY + f Ljava/lang/String; d field_35177 description + f Z e field_35178 shouldReportAsModified + f [Layn$a; f field_35179 $VALUES + m ()[Layn$a; a method_39033 $values + m (Ljava/lang/String;ILjava/lang/String;Z)V + m ()V +c ayo net/minecraft/class_3532 net/minecraft/util/Mth + f F a field_29844 PI + f F b field_29845 HALF_PI + f F c field_29846 TWO_PI + f F d field_29847 DEG_TO_RAD + f F e field_29848 RAD_TO_DEG + f F f field_29849 EPSILON + f F g field_15724 SQRT_OF_TWO + f Lorg/joml/Vector3f; h field_46242 Y_AXIS + f Lorg/joml/Vector3f; i field_46243 X_AXIS + f Lorg/joml/Vector3f; j field_46244 Z_AXIS + f J k field_29852 UUID_VERSION + f J l field_29853 UUID_VERSION_TYPE_4 + f J m field_29854 UUID_VARIANT + f J n field_29855 UUID_VARIANT_2 + f F o field_29856 SIN_SCALE + f [F p field_15725 SIN + f Layw; q field_15726 RANDOM + f [I r field_15723 MULTIPLY_DE_BRUIJN_BIT_POSITION + f D s field_29857 ONE_SIXTH + f I t field_29858 FRAC_EXP + f I u field_29859 LUT_SIZE + f D v field_15728 FRAC_BIAS + f [D w field_15727 ASIN_TAB + f [D x field_15722 COS_TAB + m ()Ljava/util/UUID; a method_15394 createInsecureUUID + m (D)I a method_15357 floor + m (DD)D a method_15391 absMax + m (DDD)D a method_15350 clamp + m (DDDDD)D a method_32854 clampedMap + m (DDDDDD)D a method_16437 lerp2 + m (DDDDDDDDDDD)D a method_16438 lerp3 + m (DI)I a method_38961 quantize + m (F)F a method_15374 sin + m (FF)Z a method_15347 equal + m (FFF)F a method_15363 clamp + m (FFFFF)F a method_41303 catmullrom + m (FFFI)I a method_60599 hsvToArgb + m (FII)I a method_48781 lerpInt + m (I)I a method_15382 abs + m (II)I a method_48116 floorDiv + m (III)I a method_15340 clamp + m (IIII)Ljava/util/stream/IntStream; a method_42117 outFromOrigin + m (IIIII)I a method_42118 method_42118 + m (IILjava/util/function/IntPredicate;)I a method_15360 binarySearch + m (J)J a method_38652 square + m (JJJ)J a method_53062 clamp + m (Layw;)Ljava/util/UUID; a method_15378 createInsecureUUID + m (Layw;DD)D a method_15366 nextDouble + m (Layw;FF)F a method_15344 nextFloat + m (Layw;II)I a method_15395 nextInt + m (Lexc;Lexc;Lewx;)Z a method_34945 rayIntersectsAABB + m (Ljava/lang/String;I)I a method_15343 getInt + m (Lkh;)J a method_15389 getSeed + m (Lorg/apache/commons/lang3/math/Fraction;I)I a method_59515 mulAndTruncate + m (Lorg/joml/Vector3f;Lorg/joml/Quaternionf;Lorg/joml/Quaternionf;)Lorg/joml/Quaternionf; a method_53948 rotationAroundAxis + m ([F)V a method_15376 method_15376 + m (D)J b method_15372 lfloor + m (DD)Z b method_20390 equal + m (DDD)D b method_15390 clampedLerp + m (DDDDD)D b method_33722 map + m (F)F b method_15362 cos + m (FF)F b method_15341 positiveModulo + m (FFF)F b method_37166 clampedLerp + m (FFFFF)F b method_37958 clampedMap + m (FII)I b method_53063 lerpDiscrete + m (I)I b method_15392 wrapDegrees + m (II)I b method_15387 positiveModulo + m (III)J b method_15371 getSeed + m (IIII)Z b method_42119 method_42119 + m (Layw;FF)F b method_32750 randomBetween + m (Layw;II)I b method_32751 randomBetweenInclusive + m (D)I c method_15384 ceil + m (DD)D c method_15367 positiveModulo + m (DDD)D c method_15370 inverseLerp + m (F)F c method_15355 sqrt + m (FF)F c method_15381 degreesDifference + m (FFF)F c method_20306 rotateIfNecessary + m (FFFFF)F c method_37959 map + m (I)I c method_15339 smallestEncompassingPowerOfTwo + m (II)Z c method_48117 isMultipleOf + m (III)Ljava/util/stream/IntStream; c method_42120 outFromOrigin + m (Layw;FF)F c method_32855 normal + m (D)D d method_15338 wrapDegrees + m (DD)D d method_15349 atan2 + m (DDD)D d method_16436 lerp + m (F)I d method_15375 floor + m (FF)F d method_15356 degreesDifferenceAbs + m (FFF)F d method_15348 approach + m (I)Z d method_15352 isPowerOfTwo + m (II)I d method_28139 roundToward + m (D)D e method_15385 frac + m (DD)D e method_41189 lengthSquared + m (DDD)D e method_52468 rotLerp + m (F)F e method_15379 abs + m (FF)F e method_24504 triangleWave + m (FFF)F e method_15388 approachDegrees + m (I)I e method_15342 ceillog2 + m (II)I e method_38788 positiveCeilDiv + m (D)D f method_48118 invSqrt + m (DD)D f method_39241 length + m (DDD)D f method_41190 lengthSquared + m (F)I f method_15386 ceil + m (FFF)I f method_15353 color + m (I)I f method_15351 log2 + m (D)D g method_15345 fastInvSqrt + m (DDD)D g method_33825 length + m (F)F g method_15393 wrapDegrees + m (FFF)F g method_37960 inverseLerp + m (I)I g method_15354 murmurHash3Mixer + m (D)D h method_16435 smoothstep + m (F)F h method_22450 frac + m (FFF)I h method_15369 hsvToRgb + m (I)I h method_34954 square + m (D)D i method_34956 smoothstepDerivative + m (F)F i method_48119 invSqrt + m (FFF)F i method_16439 lerp + m (D)I j method_17822 sign + m (F)F j method_23278 fastInvCubeRoot + m (FFF)F j method_17821 rotLerp + m (D)D k method_33723 square + m (F)F k method_27285 square + m (FFF)F k method_60677 lengthSquared + m (D)D l method_34957 wobble + m ()V + m ()V +c ayp net/minecraft/class_6498 net/minecraft/util/NativeModuleLister + f Lorg/slf4j/Logger; a field_34391 LOGGER + f I b field_34392 LANG_MASK + f I c field_34393 DEFAULT_LANG + f I d field_34394 CODEPAGE_MASK + f I e field_34395 DEFAULT_CODEPAGE + m ()Ljava/util/List; a method_37961 listModules + m (Layp$a;)Ljava/lang/String; a method_37962 method_37962 + m (Lcom/sun/jna/Pointer;Ljava/lang/String;Lcom/sun/jna/ptr/IntByReference;)Lcom/sun/jna/Pointer; a method_37963 queryVersionValue + m (Ljava/lang/String;)Ljava/util/Optional; a method_37964 tryGetVersion + m (Ljava/lang/String;II)Ljava/lang/String; a method_37965 langTableKey + m (Lp;)V a method_37966 addCrashSection + m ([I)Ljava/util/OptionalInt; a method_37967 findLangAndCodepage + m ()Ljava/lang/String; b method_37968 method_37968 + m (Layp$a;)Ljava/lang/String; b method_37969 method_37969 + m (Lcom/sun/jna/Pointer;Ljava/lang/String;Lcom/sun/jna/ptr/IntByReference;)Ljava/lang/String; b method_37970 queryVersionString + m ()V + m ()V +c ayp$a net/minecraft/class_6498$class_6499 net/minecraft/util/NativeModuleLister$NativeModuleInfo + f Ljava/lang/String; a field_34396 name + f Ljava/util/Optional; b field_34397 version + m (Layp$b;)Ljava/lang/String; a method_37971 method_37971 + m (Ljava/lang/String;Ljava/util/Optional;)V +c ayp$b net/minecraft/class_6498$class_6500 net/minecraft/util/NativeModuleLister$NativeModuleVersion + f Ljava/lang/String; a field_34398 description + f Ljava/lang/String; b field_34399 version + f Ljava/lang/String; c field_34400 company + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +c ayq net/minecraft/class_9637 net/minecraft/util/NullOps + f Layq; a field_51366 INSTANCE + m ()Lazs; a method_59555 empty + m (B)Lazs; a method_59556 createByte + m (D)Lazs; a method_59557 createDouble + m (F)Lazs; a method_59558 createFloat + m (I)Lazs; a method_59559 createInt + m (J)Lazs; a method_59560 createLong + m (Lazs;)Lcom/mojang/serialization/DataResult; a method_59561 getNumberValue + m (Lazs;Lazs;)Lcom/mojang/serialization/DataResult; a method_59562 mergeToList + m (Lazs;Lazs;Lazs;)Lcom/mojang/serialization/DataResult; a method_59563 mergeToMap + m (Lazs;Lcom/mojang/serialization/MapLike;)Lcom/mojang/serialization/DataResult; a method_59564 mergeToMap + m (Lazs;Ljava/lang/String;)Lazs; a method_59565 remove + m (Lazs;Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_59566 mergeToList + m (Lazs;Ljava/util/Map;)Lcom/mojang/serialization/DataResult; a method_59567 mergeToMap + m (Lcom/mojang/serialization/DynamicOps;Lazs;)Ljava/lang/Object; a method_59568 convertTo + m (Ljava/lang/Number;)Lazs; a method_59569 createNumeric + m (Ljava/lang/String;)Lazs; a method_59570 createString + m (Ljava/nio/ByteBuffer;)Lazs; a method_59571 createByteList + m (Ljava/util/Map;)Lazs; a method_59572 createMap + m (Ljava/util/stream/IntStream;)Lazs; a method_59573 createIntList + m (Ljava/util/stream/LongStream;)Lazs; a method_59574 createLongList + m (Ljava/util/stream/Stream;)Lazs; a method_59575 createMap + m (S)Lazs; a method_59576 createShort + m (Z)Lazs; a method_59577 createBoolean + m ()Lazs; b method_59578 emptyMap + m (Lazs;)Lcom/mojang/serialization/DataResult; b method_59579 getBooleanValue + m (Ljava/util/stream/Stream;)Lazs; b method_59580 createList + m ()Lazs; c method_59581 emptyList + m (Lazs;)Lcom/mojang/serialization/DataResult; c method_59582 getStringValue + m ()Ljava/lang/String; d method_59583 method_59583 + m (Lazs;)Lcom/mojang/serialization/DataResult; d method_59584 getMapValues + m ()Ljava/lang/String; e method_59585 method_59585 + m (Lazs;)Lcom/mojang/serialization/DataResult; e method_59586 getMapEntries + m ()Ljava/lang/String; f method_59587 method_59587 + m (Lazs;)Lcom/mojang/serialization/DataResult; f method_59588 getMap + m ()Ljava/lang/String; g method_59589 method_59589 + m (Lazs;)Lcom/mojang/serialization/DataResult; g method_59590 getStream + m ()Ljava/lang/String; h method_59591 method_59591 + m (Lazs;)Lcom/mojang/serialization/DataResult; h method_59592 getList + m ()Ljava/lang/String; i method_59593 method_59593 + m (Lazs;)Lcom/mojang/serialization/DataResult; i method_59594 getByteBuffer + m ()Ljava/lang/String; j method_59595 method_59595 + m (Lazs;)Lcom/mojang/serialization/DataResult; j method_59596 getIntStream + m ()Ljava/lang/String; k method_59597 method_59597 + m (Lazs;)Lcom/mojang/serialization/DataResult; k method_59598 getLongStream + m ()Ljava/lang/String; l method_59599 method_59599 + m ()Ljava/lang/String; m method_59600 method_59600 + m ()Ljava/lang/String; n method_59601 method_59601 + m ()V + m ()V +c ayq$a net/minecraft/class_9637$class_9638 net/minecraft/util/NullOps$NullMapBuilder + m ()Lazs; a method_59602 initBuilder + m (Lazs;Lazs;)Lcom/mojang/serialization/DataResult; a method_59603 build + m (Lazs;Lazs;Lazs;)Lazs; a method_59604 append + m (Lcom/mojang/serialization/DynamicOps;)V +c ayr net/minecraft/class_7291 net/minecraft/util/OptionEnum + m ()I a method_7362 getId + m ()Ljava/lang/String; b method_7359 getKey + m ()Lwz; d method_42627 getCaption +c ays net/minecraft/class_5945 net/minecraft/util/ParticleUtils + m (Layw;)Lexc; a method_41306 getRandomSpeedRanges + m (Ldcw;)Lexc; a method_41304 method_41304 + m (Ldcw;Ljd;Layw;Llk;)V a method_49099 spawnParticleBelow + m (Ldcw;Ljd;Lji;Llk;Lexc;D)V a method_34681 spawnParticleOnFace + m (Ldcw;Ljd;Llk;Lbpw;)V a method_34682 spawnParticlesOnBlockFaces + m (Ldcw;Ljd;Llk;Lbpw;Lji;Ljava/util/function/Supplier;D)V a method_41305 spawnParticlesOnBlockFace + m (Ldcx;Ljd;I)V a method_58595 spawnSmashAttackParticles + m (Ldcx;Ljd;IDDZLlk;)V a method_55635 spawnParticles + m (Ldcx;Ljd;ILlk;)V a method_55636 spawnParticleInBlock + m (Lji$a;Ldcw;Ljd;DLlk;Lbqc;)V a method_34683 spawnParticlesAlongAxis + m ()V +c ayt net/minecraft/class_8800 net/minecraft/util/PngInfo + f I a comp_1965 width + f I b comp_1966 height + f J c field_46201 PNG_HEADER + f I d field_46202 IHDR_TYPE + f I e field_46203 IHDR_SIZE + m ()I a comp_1965 width + m (Ljava/io/InputStream;)Layt; a method_53877 fromStream + m (Ljava/nio/ByteBuffer;)V a method_54945 validateHeader + m ([B)Layt; a method_53878 fromBytes + m ()I b comp_1966 height + m (II)V +c ayu net/minecraft/class_8942 net/minecraft/util/ProblemReporter + m (Ljava/lang/String;)Layu; a method_54946 forChild + m (Ljava/lang/String;)V b method_54947 report +c ayu$a net/minecraft/class_8942$class_8943 net/minecraft/util/ProblemReporter$Collector + f Lcom/google/common/collect/Multimap; a field_47225 problems + f Ljava/util/function/Supplier; b field_47226 path + f Ljava/lang/String; c field_47227 pathCache + m ()Lcom/google/common/collect/Multimap; a method_54948 get + m (Ljava/util/Map$Entry;)Ljava/lang/String; a method_59905 method_59905 + m ()Ljava/util/Optional; b method_59906 getReport + m ()Ljava/lang/String; c method_54949 getPath + m (Ljava/lang/String;)Ljava/lang/String; c method_54951 method_54951 + m ()Ljava/lang/String; d method_54950 method_54950 + m ()V + m (Lcom/google/common/collect/Multimap;Ljava/util/function/Supplier;)V +c ayv net/minecraft/class_3536 net/minecraft/util/ProgressListener + m ()V a method_15411 stop + m (I)V a method_15410 progressStagePercentage + m (Lwz;)V a method_15412 progressStartNoAbort + m (Lwz;)V b method_15413 progressStart + m (Lwz;)V c method_15414 progressStage +c ayw net/minecraft/class_5819 net/minecraft/util/RandomSource + f D a field_38930 GAUSSIAN_SPREAD_FACTOR + m ()Layw; a method_43047 create + m (DD)D a method_43385 triangle + m (I)I a method_43048 nextInt + m (II)I a method_39332 nextIntBetweenInclusive + m (J)Layw; a method_43049 create + m ()Layw; b method_43050 createThreadSafe + m (I)V b method_33650 consumeCount + m (II)I b method_43051 nextInt + m (J)V b method_43052 setSeed + m ()Layw; c method_43053 createNewThreadLocalInstance + m ()Layw; d method_38420 fork + m ()Ldzl; e method_38421 forkPositional + m ()I f method_43054 nextInt + m ()J g method_43055 nextLong + m ()Z h method_43056 nextBoolean + m ()F i method_43057 nextFloat + m ()D j method_43058 nextDouble + m ()D k method_43059 nextGaussian +c ayx net/minecraft/class_7085 net/minecraft/util/ResourceLocationPattern + f Lcom/mojang/serialization/Codec; a field_37293 CODEC + f Ljava/util/Optional; b field_37294 namespacePattern + f Ljava/util/function/Predicate; c field_37295 namespacePredicate + f Ljava/util/Optional; d field_37296 pathPattern + f Ljava/util/function/Predicate; e field_37297 pathPredicate + f Ljava/util/function/Predicate; f field_41286 locationPredicate + m ()Ljava/util/function/Predicate; a method_47545 namespacePredicate + m (Lakr;)Z a method_47546 method_47546 + m (Layx;)Ljava/util/Optional; a method_41284 method_41284 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41285 method_41285 + m (Ljava/lang/String;)Z a method_41286 method_41286 + m ()Ljava/util/function/Predicate; b method_47547 pathPredicate + m (Layx;)Ljava/util/Optional; b method_41288 method_41288 + m (Ljava/lang/String;)Z b method_41289 method_41289 + m ()Ljava/util/function/Predicate; c method_47548 locationPredicate + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ayy net/minecraft/class_8013 net/minecraft/util/SegmentedAnglePrecision + f I a field_41760 mask + f I b field_41761 precision + f F c field_41762 degreeToAngle + f F d field_41763 angleToDegree + m ()I a method_48120 getMask + m (F)I a method_48121 fromDegreesWithTurns + m (I)F a method_48122 toDegreesWithTurns + m (II)Z a method_48123 isSameAxis + m (Lji;)I a method_48124 fromDirection + m (F)I b method_48125 fromDegrees + m (I)F b method_48126 toDegrees + m (I)I c method_48127 normalize + m (I)V +c ayz net/minecraft/class_8917 net/minecraft/util/SequencedPriorityIterator + f I a field_48714 MIN_PRIO + f Ljava/util/Deque; b field_48715 highestPrioQueue + f I c field_48716 highestPrio + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; d field_48717 queuesByPriority + m ()V a method_56533 switchCacheToNextHighestPrioQueue + m (I)Ljava/util/Deque; a method_54723 method_54723 + m (Ljava/lang/Object;I)V a method_54726 add + m ()V +c aza net/minecraft/class_7498 net/minecraft/util/SignatureUpdater +c aza$a net/minecraft/class_7498$class_7499 net/minecraft/util/SignatureUpdater$Output +c azb net/minecraft/class_7500 net/minecraft/util/SignatureValidator + f Lazb; a field_39397 NO_VALIDATION + f Lorg/slf4j/Logger; b field_39398 LOGGER + m (Laza;[B)Z a method_44170 method_44170 + m (Laza;[BLcom/mojang/authlib/yggdrasil/ServicesKeyInfo;)Z a method_44173 method_44173 + m (Laza;[BLjava/security/Signature;)Z a method_44171 verifySignature + m (Lcom/mojang/authlib/yggdrasil/ServicesKeySet;Lcom/mojang/authlib/yggdrasil/ServicesKeyType;)Lazb; a method_44172 from + m (Ljava/lang/String;Ljava/security/PublicKey;Laza;[B)Z a method_44174 method_44174 + m (Ljava/security/PublicKey;Ljava/lang/String;)Lazb; a method_44175 from + m (Ljava/util/Collection;Laza;[B)Z a method_51496 method_51496 + m ([BLaza$a;)V a method_44176 method_44176 + m ([B[B)Z a method_44177 validate + m ()V +c azc net/minecraft/class_7501 net/minecraft/util/Signer + f Lorg/slf4j/Logger; a field_39399 LOGGER + m (Ljava/lang/String;Ljava/security/PrivateKey;Laza;)[B a method_44178 method_44178 + m (Ljava/security/PrivateKey;Ljava/lang/String;)Lazc; a method_44179 from + m ([B)[B a method_44180 sign + m ([BLaza$a;)V a method_44181 method_44181 + m ()V +c azd net/minecraft/class_3508 net/minecraft/util/SimpleBitStorage + f [I a field_24078 MAGIC + f [J b field_15631 data + f I c field_15633 bits + f J d field_15634 mask + f I e field_15632 size + f I f field_24079 valuesPerLong + f I g field_24080 divideMul + f I h field_24081 divideAdd + f I i field_24082 divideShift + m (I)I b method_27284 cellIndex + m (II[I)V + m (II)V + m (II[J)V + m ()V +c azd$a net/minecraft/class_3508$class_6685 net/minecraft/util/SimpleBitStorage$InitializationException + m (Ljava/lang/String;)V +c aze net/minecraft/class_8105 net/minecraft/util/SingleKeyCache + f Ljava/util/function/Function; a field_42269 computeValue + f Ljava/lang/Object; b field_42270 cacheKey + f Ljava/lang/Object; c field_42271 cachedValue + m (Ljava/lang/Object;)Ljava/lang/Object; a method_48782 getValue + m (Ljava/util/function/Function;)V +c azf net/minecraft/class_3540 net/minecraft/util/SmoothDouble + f D a field_15760 targetValue + f D b field_15759 remainingValue + f D c field_15758 lastAmount + m ()V a method_15428 reset + m (DD)D a method_15429 getNewDeltaValue + m ()V +c azg net/minecraft/class_4706 net/minecraft/util/SortedArraySet + f I a field_29860 DEFAULT_INITIAL_CAPACITY + f Ljava/util/Comparator; b field_21562 comparator + f [Ljava/lang/Object; c field_21563 contents + f I d field_21564 size + m ()Lazg; a method_34958 create + m (I)Lazg; a method_23859 create + m (Ljava/lang/Object;)Ljava/lang/Object; a method_23862 addOrGet + m (Ljava/lang/Object;I)V a method_23863 addInternal + m (Ljava/util/Comparator;)Lazg; a method_34959 create + m (Ljava/util/Comparator;I)Lazg; a method_34960 create + m ([Ljava/lang/Object;)[Ljava/lang/Object; a method_23864 castRawArray + m ()Ljava/lang/Object; b method_23865 first + m (I)I b method_23866 getInsertionPosition + m (Ljava/lang/Object;)Ljava/lang/Object; b method_34961 get + m ()Ljava/lang/Object; c method_34962 last + m (I)V c method_23868 grow + m (Ljava/lang/Object;)I c method_23869 findIndex + m (I)V d method_23870 removeInternal + m (I)Ljava/lang/Object; e method_23871 getInternal + m (ILjava/util/Comparator;)V +c azg$a net/minecraft/class_4706$class_4707 net/minecraft/util/SortedArraySet$ArrayIterator + f Lazg; a field_21565 field_21565 + f I b field_21566 index + f I c field_21567 last + m (Lazg;)V +c azh net/minecraft/class_7244 net/minecraft/util/SpawnUtil + m (Laqu;ILjd$a;Lazh$a;)Z a method_42121 moveToPossibleSpawnPosition + m (Lbsx;Lbtr;Laqu;Ljd;IIILazh$a;)Ljava/util/Optional; a method_42122 trySpawnMob + m ()V +c azh$a net/minecraft/class_7244$class_7502 net/minecraft/util/SpawnUtil$Strategy + f Lazh$a; a field_39400 LEGACY_IRON_GOLEM + f Lazh$a; b field_39401 ON_TOP_OF_COLLIDER + m (Laqu;Ljd;Ldtc;Ljd;Ldtc;)Z a method_44182 method_44182 + m (Laqu;Ljd;Ldtc;Ljd;Ldtc;)Z b method_44183 method_44183 + m ()V +c azi net/minecraft/class_9762 net/minecraft/util/StaticCache2D + f I a field_51878 minX + f I b field_51879 minZ + f I c field_51880 sizeX + f I d field_51881 sizeZ + f [Ljava/lang/Object; e field_51882 cache + m (II)Ljava/lang/Object; a method_60482 get + m (IIILazi$a;)Lazi; a method_60483 create + m (Ljava/util/function/Consumer;)V a method_60484 forEach + m (II)Z b method_60485 contains + m (II)I c method_60486 getIndex + m (IIIILazi$a;)V +c azi$a net/minecraft/class_9762$class_9763 net/minecraft/util/StaticCache2D$Initializer +c azj net/minecraft/class_5223 net/minecraft/util/StringDecomposer + f C a field_29861 REPLACEMENT_CHAR + f Ljava/util/Optional; b field_24215 STOP_ITERATION + m (Layb;Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_27470 method_27470 + m (Ljava/lang/String;)Ljava/lang/String; a method_27471 filterBrokenSurrogates + m (Ljava/lang/String;ILxw;Layb;)Z a method_27472 iterateFormatted + m (Ljava/lang/String;ILxw;Lxw;Layb;)Z a method_27473 iterateFormatted + m (Ljava/lang/String;Lxw;Layb;)Z a method_27474 iterate + m (Ljava/lang/StringBuilder;ILxw;I)Z a method_31401 method_31401 + m (Lxe;)Ljava/lang/String; a method_31402 getPlainText + m (Lxe;Lxw;Layb;)Z a method_27476 iterateFormatted + m (Lxw;Layb;IC)Z a method_27477 feedChar + m (Ljava/lang/String;Lxw;Layb;)Z b method_27478 iterateBackwards + m (Ljava/lang/StringBuilder;ILxw;I)Z b method_27475 method_27475 + m (Ljava/lang/String;Lxw;Layb;)Z c method_27479 iterateFormatted + m ()V + m ()V +c azk net/minecraft/class_3542 net/minecraft/util/StringRepresentable + f I W field_38377 PRE_BUILT_MAP_THRESHOLD + m (Lazk;)Lazk; a method_53949 method_53949 + m (Ljava/lang/String;)Ljava/lang/String; a method_53950 method_53950 + m (Ljava/util/Map;Ljava/lang/String;)Lazk; a method_53951 method_53951 + m (Ljava/util/function/Function;Lazk;)Ljava/lang/String; a method_53952 method_53952 + m (Ljava/util/function/Supplier;)Lazk$a; a method_28140 fromEnum + m (Ljava/util/function/Supplier;Ljava/util/function/Function;)Lazk$a; a method_49454 fromEnumWithMapping + m ([Lazk;)Lcom/mojang/serialization/Keyable; a method_28142 keys + m ([Lazk;Ljava/util/function/Function;)Ljava/util/function/Function; a method_53953 createNameLookup + m ([Lazk;Ljava/util/function/Function;Ljava/lang/String;)Lazk; a method_53954 method_53954 + m (Ljava/lang/String;)Ljava/lang/String; b method_49451 method_49451 + m (Ljava/util/function/Supplier;)Lcom/mojang/serialization/Codec; b method_53955 fromValues + m ()Ljava/lang/String; c method_15434 getSerializedName +c azk$1 net/minecraft/class_3542$1 net/minecraft/util/StringRepresentable$1 + f [Lazk; a field_35666 val$values + m ([Lazk;)V +c azk$a net/minecraft/class_3542$class_7292 net/minecraft/util/StringRepresentable$EnumCodec + f Ljava/util/function/Function; a field_38379 resolver + m (Ljava/lang/Object;)I a method_42632 method_42632 + m (Ljava/lang/String;)Ljava/lang/Enum; a method_42633 byName + m (Ljava/lang/String;Ljava/lang/Enum;)Ljava/lang/Enum; a method_47920 byName + m ([Ljava/lang/Enum;Ljava/util/function/Function;)V +c azk$b net/minecraft/class_3542$class_8808 net/minecraft/util/StringRepresentable$StringRepresentableCodec + f Lcom/mojang/serialization/Codec; a field_46245 codec + m (Lazk;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_53956 encode + m ([Lazk;I)Lazk; a method_53957 method_53957 + m ([Lazk;Ljava/util/function/Function;Ljava/util/function/ToIntFunction;)V +c azl net/minecraft/class_3544 net/minecraft/util/StringUtil + f Ljava/util/regex/Pattern; a field_15771 STRIP_COLOR_PATTERN + f Ljava/util/regex/Pattern; b field_29204 LINE_PATTERN + f Ljava/util/regex/Pattern; c field_33559 LINE_END_PATTERN + m (C)Z a method_57175 isAllowedChatCharacter + m (I)Z a method_57176 isWhitespace + m (IF)Ljava/lang/String; a method_15439 formatTickDuration + m (Ljava/lang/String;)Ljava/lang/String; a method_15440 stripColor + m (Ljava/lang/String;IZ)Ljava/lang/String; a method_34963 truncateStringIfNecessary + m (Ljava/lang/String;Z)Ljava/lang/String; a method_57177 filterText + m (I)Z b method_57178 method_57178 + m (Ljava/lang/String;)Z b method_15438 isNullOrEmpty + m (Ljava/lang/String;)I c method_34238 lineCount + m (Ljava/lang/String;)Z d method_36358 endsWithNewLine + m (Ljava/lang/String;)Ljava/lang/String; e method_43681 trimChatMessage + m (Ljava/lang/String;)Z f method_57179 isValidPlayerName + m (Ljava/lang/String;)Ljava/lang/String; g method_57180 filterText + m (Ljava/lang/String;)Z h method_57181 isBlank + m ()V + m ()V +c azm net/minecraft/class_7620 net/minecraft/util/TaskChainer + f Lorg/slf4j/Logger; a field_39831 LOGGER + m (Ljava/lang/Runnable;Ljava/lang/Object;)V a method_54441 method_54441 + m ()V +c azm$1 net/minecraft/class_7620$1 net/minecraft/util/TaskChainer$1 + f Ljava/util/concurrent/Executor; b field_46770 val$executor + m (Ljava/lang/Throwable;)Ljava/lang/Void; a method_54442 method_54442 + m (Ljava/util/concurrent/Executor;)V +c azn net/minecraft/class_5798 net/minecraft/util/ThreadingDetector + f Lorg/slf4j/Logger; a field_36293 LOGGER + f Ljava/lang/String; b field_36294 name + f Ljava/util/concurrent/Semaphore; c field_36295 lock + f Ljava/util/concurrent/locks/Lock; d field_36296 stackTraceLock + f Ljava/lang/Thread; e field_36297 threadThatFailedToAcquire + f Lz; f field_36298 fullException + m ()V a method_39935 checkAndLock + m (Ljava/lang/String;Ljava/lang/Thread;)Lz; a method_33564 makeThreadingException + m (Ljava/lang/Thread;)Ljava/lang/String; a method_39936 stackTrace + m ()V b method_39937 checkAndUnlock + m (Ljava/lang/String;)V + m ()V +c azo net/minecraft/class_7576 net/minecraft/util/TimeSource +c azo$a net/minecraft/class_7576$class_7577 net/minecraft/util/TimeSource$NanoTimeSource +c azp net/minecraft/class_4802 net/minecraft/util/TimeUtil + f J a field_33868 NANOSECONDS_PER_SECOND + f J b field_33869 NANOSECONDS_PER_MILLISECOND + f J c field_46957 MILLISECONDS_PER_SECOND + f J d field_46958 SECONDS_PER_HOUR + f I e field_47726 SECONDS_PER_MINUTE + m (II)Lbqc; a method_24505 rangeOfSeconds + m ()V + m ()V +c azq net/minecraft/class_6501 net/minecraft/util/ToFloatFunction + f Lazq; a field_37409 IDENTITY + m (F)F a method_41307 method_41307 + m (Lit/unimi/dsi/fastutil/floats/Float2FloatFunction;)Lazq; a method_41308 createUnlimited + m (Ljava/lang/Object;)F a method_41296 apply + m (Ljava/util/function/Function;)Lazq; a method_41309 comap + m ()F b comp_532 minValue + m ()F c comp_533 maxValue + m ()V +c azq$1 net/minecraft/class_6501$1 net/minecraft/util/ToFloatFunction$1 + f Lit/unimi/dsi/fastutil/floats/Float2FloatFunction; b field_37410 val$function + m (Ljava/lang/Float;)F a method_41310 apply + m (Lit/unimi/dsi/fastutil/floats/Float2FloatFunction;)V +c azq$2 net/minecraft/class_6501$2 net/minecraft/util/ToFloatFunction$2 + f Lazq; b field_37411 val$outer + f Ljava/util/function/Function; c field_37412 val$function + m (Lazq;Lazq;Ljava/util/function/Function;)V +c azr net/minecraft/class_3545 net/minecraft/util/Tuple + f Ljava/lang/Object; a field_15772 a + f Ljava/lang/Object; b field_15773 b + m ()Ljava/lang/Object; a method_15442 getA + m (Ljava/lang/Object;)V a method_34964 setA + m ()Ljava/lang/Object; b method_15441 getB + m (Ljava/lang/Object;)V b method_34965 setB + m (Ljava/lang/Object;Ljava/lang/Object;)V +c azs net/minecraft/class_3902 net/minecraft/util/Unit + f Lazs; a field_17274 INSTANCE + f Lcom/mojang/serialization/Codec; b field_51563 CODEC + f [Lazs; c field_17275 $VALUES + m ()[Lazs; a method_36588 $values + m (Ljava/lang/String;I)V + m ()V +c azt net/minecraft/class_5996 net/minecraft/util/VisibleForDebug +c azu net/minecraft/class_6502 net/minecraft/util/ZeroBitStorage + f [J a field_34401 RAW + f I b field_34402 size + m (I)V + m ()V +c azv net/minecraft/class_8809 net/minecraft/util/datafix/ComponentDataFixUtils + f Ljava/lang/String; a field_46246 EMPTY_CONTENTS + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_53958 wrapLiteralStringAsComponent + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_53959 method_53959 + m (Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/Dynamic; a method_53960 createEmptyComponent + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_53961 createPlainTextComponent + m (Ljava/lang/String;)Ljava/util/Optional; a method_58596 extractTranslationString + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_56629 rewriteFromLenient + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; b method_53963 createTranslatableComponent + m (Ljava/lang/String;)Ljava/lang/String; b method_53962 createTextComponentJson + m ()V + m ()V +c azw net/minecraft/class_4284 net/minecraft/util/datafix/DataFixTypes + f Lazw; a field_19212 LEVEL + f Lazw; b field_19213 PLAYER + f Lazw; c field_19214 CHUNK + f Lazw; d field_19215 HOTBAR + f Lazw; e field_19216 OPTIONS + f Lazw; f field_19217 STRUCTURE + f Lazw; g field_19218 STATS + f Lazw; h field_45077 SAVED_DATA_COMMAND_STORAGE + f Lazw; i field_45078 SAVED_DATA_FORCED_CHUNKS + f Lazw; j field_45079 SAVED_DATA_MAP_DATA + f Lazw; k field_45080 SAVED_DATA_MAP_INDEX + f Lazw; l field_45081 SAVED_DATA_RAIDS + f Lazw; m field_45082 SAVED_DATA_RANDOM_SEQUENCES + f Lazw; n field_45083 SAVED_DATA_SCOREBOARD + f Lazw; o field_45084 SAVED_DATA_STRUCTURE_FEATURE_INDICES + f Lazw; p field_19220 ADVANCEMENTS + f Lazw; q field_19221 POI_CHUNK + f Lazw; r field_24640 WORLD_GEN_SETTINGS + f Lazw; s field_26990 ENTITY_CHUNK + f Ljava/util/Set; t field_42975 TYPES_FOR_LEVEL_LIST + f Lcom/mojang/datafixers/DSL$TypeReference; u field_19222 type + f [Lazw; v field_19223 $VALUES + m ()I a method_48132 currentVersion + m (Lcom/mojang/datafixers/DataFixer;Lcom/mojang/serialization/Dynamic;I)Lcom/mojang/serialization/Dynamic; a method_48128 updateToCurrentVersion + m (Lcom/mojang/datafixers/DataFixer;Lcom/mojang/serialization/Dynamic;II)Lcom/mojang/serialization/Dynamic; a method_48129 update + m (Lcom/mojang/datafixers/DataFixer;Lub;I)Lub; a method_48130 updateToCurrentVersion + m (Lcom/mojang/datafixers/DataFixer;Lub;II)Lub; a method_48131 update + m (Lcom/mojang/serialization/Codec;Lcom/mojang/datafixers/DataFixer;I)Lcom/mojang/serialization/Codec; a method_53711 wrapCodec + m ()[Lazw; b method_36589 $values + m (Ljava/lang/String;ILcom/mojang/datafixers/DSL$TypeReference;)V + m ()V +c azw$1 net/minecraft/class_4284$1 net/minecraft/util/datafix/DataFixTypes$1 + f Lcom/mojang/serialization/Codec; a field_46087 val$codec + f I b field_46088 val$defaultVersion + f Lcom/mojang/datafixers/DataFixer; c field_46089 val$dataFixer + f Lazw; d field_46090 field_46090 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_53712 method_53712 + m (Lazw;Lcom/mojang/serialization/Codec;ILcom/mojang/datafixers/DataFixer;)V +c azx net/minecraft/class_3551 net/minecraft/util/datafix/DataFixers + f I a field_38844 BLENDING_VERSION + f Ljava/util/function/BiFunction; b field_15776 SAME + f Ljava/util/function/BiFunction; c field_15775 SAME_NAMESPACED + f Lcom/mojang/datafixers/DataFixerBuilder$Result; d field_15777 DATA_FIXER + m ()Lcom/mojang/datafixers/DataFixer; a method_15450 getDataFixer + m (Lcom/google/common/collect/ImmutableMap;Ljava/lang/String;)Ljava/lang/String; a method_43060 method_43060 + m (Lcom/mojang/datafixers/DataFixerBuilder;)V a method_15451 addFixers + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_43061 method_43061 + m (Ljava/lang/String;)Ljava/lang/String; a method_51289 method_51289 + m (Ljava/lang/String;Ljava/lang/String;)Ljava/util/function/UnaryOperator; a method_30068 createRenamer + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_30069 method_30069 + m (Ljava/util/Map;)Ljava/util/function/UnaryOperator; a method_57075 createRenamerNoNamespace + m (Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String; a method_30071 method_30071 + m (Ljava/util/Set;)Ljava/util/concurrent/CompletableFuture; a method_60487 optimize + m ()Lcom/mojang/datafixers/DataFixerBuilder$Result; b method_15471 createFixerUpper + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V b method_43062 method_43062 + m (Ljava/lang/String;)Ljava/lang/String; b method_15459 method_15459 + m (Ljava/util/Map;)Ljava/util/function/UnaryOperator; b method_30070 createRenamer + m (Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String; b method_57076 method_57076 + m (Ljava/lang/String;)Ljava/lang/String; c method_15455 method_15455 + m (Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String; c method_44184 method_44184 + m (Ljava/lang/String;)Ljava/lang/String; d method_15449 method_15449 + m ()V + m ()V +c azx$1 net/minecraft/class_3551$1 net/minecraft/util/datafix/DataFixers$1 + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)V +c azx$2 net/minecraft/class_3551$2 net/minecraft/util/datafix/DataFixers$2 + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)V +c azy net/minecraft/class_9228 net/minecraft/util/datafix/ExtraDataFixUtils + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_57182 cast + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56943 fixBlockPos + m ([Ljava/util/function/Function;)Ljava/util/function/Function; a method_59907 chainAllFilters + m ([Ljava/util/function/Function;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_59908 method_59908 + m ()V +c azz net/minecraft/class_9229 net/minecraft/util/datafix/FixWolfHealth + f Ljava/lang/String; a field_49054 WOLF_ID + f Ljava/lang/String; b field_49055 WOLF_HEALTH + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56948 method_56948 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56949 method_56949 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_56950 method_56950 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_56951 method_56951 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_56952 method_56952 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c baa net/minecraft/class_5298 net/minecraft/util/datafix/PackedBitStorage + f I a field_29862 BIT_TO_LONG_SHIFT + f [J b field_24641 data + f I c field_24642 bits + f J d field_24643 mask + f I e field_24644 size + m ()[J a method_28151 getRaw + m (I)I a method_28152 get + m (II)V a method_28153 set + m ()I b method_28154 getBits + m (II)V + m (II[J)V +c bab net/minecraft/class_5946 net/minecraft/util/datafix/fixes/AbstractArrowPickupFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_34684 updateProjectiles + m (Lcom/mojang/datafixers/Typed;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/datafixers/Typed; a method_34685 updateEntity + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_34686 updatePickup + m (Ljava/util/function/Function;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_34687 method_34687 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bac net/minecraft/class_4620 net/minecraft/util/datafix/fixes/AbstractPoiSectionFix + f Ljava/lang/String; a field_39402 name + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_23302 method_23302 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_23299 cap + m (Lcom/mojang/serialization/Dynamic;Ljava/util/stream/Stream;)Lcom/mojang/serialization/Dynamic; a method_44185 method_44185 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_28243 method_28243 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_44186 processRecords + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; b method_23305 method_23305 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_44187 processSection + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_44188 processSectionRecords + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28246 method_28246 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)V +c bad net/minecraft/class_4958 net/minecraft/util/datafix/fixes/AbstractUUIDFix + f Lcom/mojang/datafixers/DSL$TypeReference; a field_23121 typeReference + m (Lcom/mojang/datafixers/Typed;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/datafixers/Typed; a method_26009 updateNamedChoice + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; a method_26002 createUUIDFromML + m (Lcom/mojang/serialization/Dynamic;JJ)Ljava/util/Optional; a method_26003 createUUIDTag + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; a method_28155 method_28155 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Ljava/util/Optional; a method_26005 createUUIDFromString + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional; a method_26006 replaceUUIDString + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28156 method_28156 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28157 method_28157 + m (Ljava/util/function/Function;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26010 method_26010 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional; b method_26011 replaceUUIDMLTag + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28158 method_28158 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional; c method_26013 replaceUUIDLeastMost + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional; d method_26014 createUUIDFromLongs + m (Lcom/mojang/datafixers/schemas/Schema;Lcom/mojang/datafixers/DSL$TypeReference;)V +c bae net/minecraft/class_6636 net/minecraft/util/datafix/fixes/AddFlagIfNotPresentFix + f Ljava/lang/String; a field_35009 name + f Z b field_35010 flagValue + f Ljava/lang/String; c field_35011 flagKey + f Lcom/mojang/datafixers/DSL$TypeReference; d field_35012 typeReference + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_38789 method_38789 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_38790 method_38790 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_38791 method_38791 + m (Lcom/mojang/datafixers/schemas/Schema;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;Z)V +c baf net/minecraft/class_3553 net/minecraft/util/datafix/fixes/AddNewChoices + f Ljava/lang/String; a field_15779 name + f Lcom/mojang/datafixers/DSL$TypeReference; b field_15780 type + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;)Lcom/mojang/datafixers/TypeRewriteRule; a method_15476 cap + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_15475 method_15475 + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_15477 method_15477 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;)V +c bag net/minecraft/class_3555 net/minecraft/util/datafix/fixes/AdvancementsFix + f Ljava/util/Map; a field_15788 RENAMES + m (Ljava/lang/String;)Ljava/lang/String; a method_24238 method_24238 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bah net/minecraft/class_4744 net/minecraft/util/datafix/fixes/AdvancementsRenameFix + f Ljava/lang/String; a field_21814 name + f Ljava/util/function/Function; b field_21815 renamer + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_24242 method_24242 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28159 method_28159 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_28160 method_28160 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28161 method_28161 + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/lang/String;Ljava/util/function/Function;)V +c bai net/minecraft/class_9263 net/minecraft/util/datafix/fixes/AreaEffectCloudPotionFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_57191 fix + m (Lcom/mojang/datafixers/schemas/Schema;)V +c baj net/minecraft/class_9785 net/minecraft/util/datafix/fixes/AttributeModifierIdFix + f Ljava/util/Map; a field_51992 ID_MAP + f Ljava/util/Map; b field_51993 NAME_MAP + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_60678 method_60678 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_60679 fixEntity + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_60680 convertModifierForEntity + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_60681 method_60681 + m (Ljava/util/Map;Lcom/mojang/serialization/Dynamic;)V a method_60682 method_60682 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_60683 fixModifiersTypeWrapper + m ([I)Ljava/util/UUID; a method_60684 uuidFromIntArray + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_60685 method_60685 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_60686 fixItemStackComponents + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; b method_60687 fixModifiers + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_60688 fixAttribute + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; c method_60689 method_60689 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_60690 method_60690 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; d method_60691 method_60691 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_60692 method_60692 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_60693 method_60693 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_60694 method_60694 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; h method_60695 method_60695 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bak net/minecraft/class_5129 net/minecraft/util/datafix/fixes/AttributesRename + f Ljava/lang/String; a field_49056 name + f Ljava/util/function/UnaryOperator; b field_23695 renames + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26809 method_26809 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26810 fixItemStackTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26808 fixName + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_28162 method_28162 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_26814 fixEntity + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28163 method_28163 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; b method_28164 method_28164 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28165 method_28165 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28166 method_28166 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_28167 method_28167 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_28168 method_28168 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_28169 method_28169 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/UnaryOperator;)V +c bal net/minecraft/class_9451 net/minecraft/util/datafix/fixes/BannerEntityCustomNameToOverrideComponentFix + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/OpticFinder;)Lcom/mojang/datafixers/Typed; a method_58597 fix + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_58598 method_58598 + m (Lcom/mojang/serialization/OptionalDynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_58599 method_58599 + m (Ljava/lang/String;)Z a method_58600 method_58600 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bam net/minecraft/class_9264 net/minecraft/util/datafix/fixes/BannerPatternFormatFix + f Ljava/util/Map; a field_49187 PATTERN_ID_MAP + m (I)Ljava/lang/String; a method_57192 fixColor + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_57193 fixTag + m (Ljava/lang/String;)Ljava/lang/String; a method_57194 method_57194 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_57195 fixLayer + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_57197 method_57197 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_57198 method_57198 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c ban net/minecraft/class_3559 net/minecraft/util/datafix/fixes/BedItemColorFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15521 method_15521 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bao net/minecraft/class_9265 net/minecraft/util/datafix/fixes/BeehiveFieldRenameFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_57199 method_57199 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_57200 method_57200 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_57201 method_57201 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_57202 method_57202 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_57203 fixBeehive + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_57204 fixBee + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bap net/minecraft/class_3561 net/minecraft/util/datafix/fixes/BiomeFix + f Ljava/util/Map; a field_15810 BIOMES + m ()V + m ()V +c baq net/minecraft/class_5196 net/minecraft/util/datafix/fixes/BitStorageAlignFix + f I a field_29863 BIT_TO_LONG_SHIFT + f I b field_29864 SECTION_WIDTH + f I c field_29865 SECTION_HEIGHT + f I d field_29866 SECTION_SIZE + f I e field_29867 HEIGHTMAP_BITS + f I f field_29868 HEIGHTMAP_SIZE + m (II[J)[J a method_27288 addPadding + m (ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28172 method_28172 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_27292 method_27292 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_27774 updateSections + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_27294 method_27294 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_27295 method_27295 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_27775 updateHeightmaps + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_27769 method_27769 + m (Lcom/mojang/serialization/Dynamic;ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28173 method_28173 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_27773 method_27773 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28174 method_28174 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;II)Lcom/mojang/serialization/Dynamic; a method_27772 updateBitStorage + m (Ljava/util/List;)Ljava/lang/Integer; a method_27296 method_27296 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_27293 method_27293 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28175 method_28175 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bar net/minecraft/class_7090 net/minecraft/util/datafix/fixes/BlendingDataFix + f Ljava/lang/String; a field_37414 name + f Ljava/util/Set; b field_37415 STATUSES_TO_SKIP_BLENDING + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_41311 method_41311 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_44685 method_44685 + m (Lcom/mojang/serialization/Dynamic;II)Lcom/mojang/serialization/Dynamic; a method_41313 updateBlendingData + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/OptionalDynamic;)Lcom/mojang/serialization/Dynamic; a method_41312 updateChunkTag + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bas net/minecraft/class_7589 net/minecraft/util/datafix/fixes/BlendingDataRemoveFromNetherEndFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_44686 method_44686 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_44687 method_44687 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/OptionalDynamic;)Lcom/mojang/serialization/Dynamic; a method_44688 updateChunkTag + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bat net/minecraft/class_3564 net/minecraft/util/datafix/fixes/BlockEntityBannerColorFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15546 fixTag + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_15545 method_15545 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28176 method_28176 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28177 method_28177 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28178 method_28178 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_28179 method_28179 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bau net/minecraft/class_3566 net/minecraft/util/datafix/fixes/BlockEntityBlockStateFix + m ()Ljava/lang/IllegalStateException; a method_15553 method_15553 + m ()Ljava/lang/IllegalStateException; b method_15554 method_15554 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bav net/minecraft/class_3567 net/minecraft/util/datafix/fixes/BlockEntityCustomNameToComponentFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15555 method_15555 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28180 method_28180 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c baw net/minecraft/class_3571 net/minecraft/util/datafix/fixes/BlockEntityIdFix + f Ljava/util/Map; a field_15824 ID_MAP + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_15576 method_15576 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_28181 method_28181 + m (Ljava/lang/String;)Ljava/lang/String; a method_15577 method_15577 + m (Ljava/util/HashMap;)V a method_15575 method_15575 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bax net/minecraft/class_3573 net/minecraft/util/datafix/fixes/BlockEntityJukeboxFix + m ()Ljava/lang/IllegalStateException; a method_15578 method_15578 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bay net/minecraft/class_3574 net/minecraft/util/datafix/fixes/BlockEntityKeepPacked + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15579 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c baz net/minecraft/class_8220 net/minecraft/util/datafix/fixes/BlockEntityRenameFix + f Ljava/lang/String; a field_43174 name + f Ljava/util/function/UnaryOperator; b field_43175 nameChangeLookup + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/UnaryOperator;)Lcom/mojang/datafixers/DataFix; a method_49756 create + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_49757 method_49757 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_49758 method_49758 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/UnaryOperator;)V +c bba net/minecraft/class_3575 net/minecraft/util/datafix/fixes/BlockEntityShulkerBoxColorFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15580 method_15580 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbb net/minecraft/class_8221 net/minecraft/util/datafix/fixes/BlockEntitySignDoubleSidedEditableTextFix + f Ljava/lang/String; a field_45085 FILTERED_CORRECT + f Ljava/lang/String; b field_45086 DEFAULT_COLOR + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_49760 fixTag + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Ljava/util/stream/Stream; a method_52469 getLines + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Optional;)Lcom/mojang/serialization/Dynamic; a method_52470 method_52470 + m (Ljava/util/List;Ljava/util/Optional;J)Lcom/mojang/serialization/Dynamic; a method_52471 method_52471 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_52472 fixFrontTextTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_52473 createDefaultText + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_52474 createEmptyLines + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/lang/String;)V +c bbc net/minecraft/class_3577 net/minecraft/util/datafix/fixes/BlockEntitySignTextStrictJsonFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15581 method_15581 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_15582 updateLine + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbd net/minecraft/class_4959 net/minecraft/util/datafix/fixes/BlockEntityUUIDFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26016 method_26016 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26015 method_26015 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_26017 updateSkull + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_26018 updateConduit + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_26019 method_26019 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bbe net/minecraft/class_3578 net/minecraft/util/datafix/fixes/BlockNameFlatteningFix + m (Lcom/mojang/datafixers/util/Either;)Ljava/lang/String; a method_15584 method_15584 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_15586 method_15586 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_15585 method_15585 + m (Ljava/lang/String;)Ljava/lang/String; a method_15587 method_15587 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbf net/minecraft/class_9230 net/minecraft/util/datafix/fixes/BlockPosFormatAndRenamesFix + f Ljava/util/List; a field_49057 PATROLLING_MOBS + m (Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;Ljava/util/Map;)Lcom/mojang/datafixers/TypeRewriteRule; a method_56953 createEntityFixer + m (Lcom/mojang/datafixers/OpticFinder;Ljava/util/Map;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56954 method_56954 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56955 method_56955 + m (Lcom/mojang/datafixers/Typed;Ljava/util/Map;)Lcom/mojang/datafixers/Typed; a method_56956 fixFields + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56957 fixMapSavedData + m (Ljava/util/List;)V a method_56958 addEntityRules + m (Ljava/util/Map;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56959 method_56959 + m (Ljava/util/Map;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56960 method_56960 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_56961 method_56961 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_56962 method_56962 + m (Ljava/util/List;)V b method_56963 addBlockEntityRules + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_56964 method_56964 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_56965 method_56965 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_56966 method_56966 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_56967 method_56967 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_56968 method_56968 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; h method_56969 method_56969 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bbg net/minecraft/class_3579 net/minecraft/util/datafix/fixes/BlockRenameFix + f Ljava/lang/String; a field_15828 name + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_55637 method_55637 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/datafixers/DataFix; a method_15589 create + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_15591 method_15591 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15588 fixBlockState + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_15590 method_15590 + m (Ljava/lang/String;)Ljava/lang/String; a method_15593 renameBlock + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_15592 method_15592 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_55638 method_55638 + m (Ljava/lang/String;)Ljava/lang/String; b method_55639 fixFlatBlockState + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)V +c bbg$1 net/minecraft/class_3579$1 net/minecraft/util/datafix/fixes/BlockRenameFix$1 + f Ljava/util/function/Function; a field_15829 val$renamer + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/Function;)V +c bbh net/minecraft/class_3580 net/minecraft/util/datafix/fixes/BlockStateData + f Ljava/lang/String; a field_29869 FILTER_ME + f Lorg/slf4j/Logger; b field_15832 LOGGER + f [Lcom/mojang/serialization/Dynamic; c field_24645 MAP + f [Lcom/mojang/serialization/Dynamic; d field_24646 BLOCK_DEFAULTS + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; e field_15831 ID_BY_OLD + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; f field_15833 ID_BY_OLD_NAME + m ()V a method_31448 bootstrap0 + m (I)Ljava/lang/String; a method_15599 upgradeBlock + m (ILjava/lang/String;[Ljava/lang/String;)V a method_15596 register + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15597 upgradeBlockStateTag + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)V a method_15595 method_15595 + m (Ljava/lang/String;)Ljava/lang/String; a method_15600 upgradeBlock + m ()V b method_31449 bootstrap1 + m (I)Lcom/mojang/serialization/Dynamic; b method_15594 getTag + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)V b method_15601 method_15601 + m (Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; b method_15598 parse + m ()V c method_31450 bootstrap2 + m ()V d method_31451 bootstrap3 + m ()V e method_31452 bootstrap4 + m ()V f method_31453 bootstrap5 + m ()V g method_31454 bootstrap6 + m ()V h method_31455 bootstrap7 + m ()V i method_31456 bootstrap8 + m ()V j method_31457 bootstrap9 + m ()V k method_31458 bootstrap10 + m ()V l method_31459 bootstrap11 + m ()V m method_31460 bootstrap12 + m ()V n method_31461 bootstrap13 + m ()V o method_31462 bootstrap14 + m ()V p method_31463 bootstrap15 + m ()V q method_22426 finalizeMaps + m ()V + m ()V +c bbi net/minecraft/class_3581 net/minecraft/util/datafix/fixes/BlockStateStructureTemplateFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15602 method_15602 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbj net/minecraft/class_3903 net/minecraft/util/datafix/fixes/CatTypeFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_17325 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbk net/minecraft/class_5528 net/minecraft/util/datafix/fixes/CauldronRenameFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_31464 method_31464 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_31465 fix + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbl net/minecraft/class_6669 net/minecraft/util/datafix/fixes/CavesAndCliffsRenames + f Lcom/google/common/collect/ImmutableMap; a field_35100 RENAMES + m ()V + m ()V +c bbm net/minecraft/class_9182 net/minecraft/util/datafix/fixes/ChestedHorsesInventoryZeroIndexingFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56630 method_56630 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56631 method_56631 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56632 method_56632 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Ljava/lang/String;)Lcom/mojang/datafixers/TypeRewriteRule; a method_56633 horseLikeInventoryIndexingFixer + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_56634 method_56634 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56635 method_56635 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; b method_56636 method_56636 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_56637 method_56637 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; c method_56638 method_56638 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bbn net/minecraft/class_3557 net/minecraft/util/datafix/fixes/ChunkBedBlockEntityInjecterFix + m ()Ljava/lang/IllegalStateException; a method_15507 method_15507 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15510 method_15510 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/templates/List$ListType;)Lcom/mojang/datafixers/TypeRewriteRule; a method_15506 cap + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_15511 method_15511 + m (Lcom/mojang/serialization/Dynamic;IIIIJ)Ljava/util/Map; a method_49456 method_49456 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_28171 method_28171 + m (Ljava/util/List;Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/Dynamic;Ljava/util/Map;)V a method_49457 method_49457 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbo net/minecraft/class_4541 net/minecraft/util/datafix/fixes/ChunkBiomeFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_22374 method_22374 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_22375 method_22375 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_22373 method_22373 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbp net/minecraft/class_7091 net/minecraft/util/datafix/fixes/ChunkDeleteIgnoredLightDataFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_41314 method_41314 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_41315 method_41315 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_41316 method_41316 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bbq net/minecraft/class_8525 net/minecraft/util/datafix/fixes/ChunkDeleteLightFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_51497 method_51497 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_51498 method_51498 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_51499 method_51499 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_51500 method_51500 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bbr net/minecraft/class_6637 net/minecraft/util/datafix/fixes/ChunkHeightAndBiomeFix + f Ljava/lang/String; a field_35444 DATAFIXER_CONTEXT_TAG + f I b field_36214 BLOCKS_PER_SECTION + f Ljava/lang/String; c field_35016 DEFAULT_BIOME + f Ljava/lang/String; d field_35017 NAME + f I e field_35018 OLD_SECTION_COUNT + f I f field_35019 NEW_SECTION_COUNT + f I g field_35020 NEW_MIN_SECTION_Y + f I h field_36215 LONGS_PER_SECTION + f I i field_35022 HEIGHTMAP_BITS + f J j field_35023 HEIGHTMAP_MASK + f I k field_35024 HEIGHTMAP_OFFSET + f [Ljava/lang/String; l field_35025 HEIGHTMAP_TYPES + f Ljava/util/Set; m field_35667 STATUS_IS_OR_AFTER_SURFACE + f Ljava/util/Set; n field_35668 STATUS_IS_OR_AFTER_NOISE + f Ljava/util/Set; o field_35669 BLOCKS_BEFORE_FEATURE_STATUS + f I p field_35026 BIOME_CONTAINER_LAYER_SIZE + f I q field_35027 BIOME_CONTAINER_SIZE + f I r field_35028 BIOME_CONTAINER_TOP_LAYER_OFFSET + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; s field_35029 BIOMES_BY_ID + m ()Ljava/lang/IllegalStateException; a method_38811 method_38811 + m (I)I a method_38793 ceillog2 + m (IILcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_38794 method_38794 + m (J)J a method_38795 method_38795 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_38796 method_38796 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_38797 method_38797 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39754 shiftUpgradeData + m (Lcom/mojang/serialization/Dynamic;II)Lcom/mojang/serialization/Dynamic; a method_38799 updateCarvingMasks + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_38802 makePalettedContainer + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;Ljava/util/List;)Lcom/mojang/serialization/Dynamic; a method_39781 padPaletteEntries + m (Lcom/mojang/serialization/Dynamic;Lit/unimi/dsi/fastutil/ints/Int2IntFunction;)Lcom/mojang/serialization/Dynamic; a method_38803 makeBiomeContainer + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/Integer;)Lcom/mojang/serialization/Dynamic; a method_38804 method_38804 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_38805 addPaddingEntries + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Set;)Lcom/mojang/serialization/Dynamic; a method_39517 predictChunkStatusBeforeSurface + m (Lcom/mojang/serialization/Dynamic;ZILorg/apache/commons/lang3/mutable/MutableBoolean;)[Lcom/mojang/serialization/Dynamic; a method_38806 getBiomeContainers + m (Lcom/mojang/serialization/Dynamic;ZZZLjava/util/function/Supplier;)Lcom/mojang/serialization/Dynamic; a method_38807 updateChunkTag + m (Ljava/util/Map;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)V a method_39755 method_39755 + m (Ljava/util/Map;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;Ljava/lang/Integer;)V a method_39756 method_39756 + m (Ljava/util/Map;Ljava/util/Map;)V a method_39757 method_39757 + m (Ljava/util/Set;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39518 method_39518 + m (Ljava/util/Set;Lcom/mojang/serialization/Dynamic;I[Lcom/mojang/serialization/Dynamic;Lit/unimi/dsi/fastutil/ints/IntSet;Lorg/apache/commons/lang3/mutable/MutableObject;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_38801 method_38801 + m (Ljava/util/Set;Lcom/mojang/serialization/Dynamic;I[Lcom/mojang/serialization/Dynamic;Lorg/apache/commons/lang3/mutable/MutableObject;Lcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_38800 method_38800 + m (Ljava/util/Set;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; a method_38817 method_38817 + m (ZLjava/util/Set;Lorg/apache/commons/lang3/mutable/MutableBoolean;Ljava/lang/String;Lorg/apache/commons/lang3/mutable/MutableObject;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_38808 method_38808 + m ([II)I a method_39519 getOldBiome + m ([III)I a method_38809 method_38809 + m ()Lbbu$a; b method_39242 method_39242 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_38798 updateHeightmaps + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_38813 makeOptimizedPalettedContainer + m ([II)I b method_38810 method_38810 + m ([III)I b method_38814 method_38814 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_38812 getFixedHeightmap + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_38819 method_38819 + m ([II)I c method_38815 method_38815 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_38816 makePalettedContainer + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_38818 method_38818 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_39758 method_39758 + m (Lcom/mojang/serialization/Dynamic;)Lbbu$a; g method_39243 method_39243 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; h method_39520 method_39520 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bbs net/minecraft/class_3755 net/minecraft/util/datafix/fixes/ChunkLightRemoveFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_16441 method_16441 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_16442 method_16442 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_16440 method_16440 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbt net/minecraft/class_3582 net/minecraft/util/datafix/fixes/ChunkPalettedStorageFix + f Ljava/util/Map; A field_15849 BED_BLOCK_MAP + f Ljava/util/Map; B field_15851 BANNER_BLOCK_MAP + f Lcom/mojang/serialization/Dynamic; C field_15843 AIR + f I D field_29870 SIZE + f I a field_29871 NORTH_WEST_MASK + f I b field_29872 WEST_MASK + f I c field_29873 SOUTH_WEST_MASK + f I d field_29874 SOUTH_MASK + f I e field_29875 SOUTH_EAST_MASK + f I f field_29876 EAST_MASK + f I g field_29877 NORTH_EAST_MASK + f I h field_29878 NORTH_MASK + f Lorg/slf4j/Logger; i field_15844 LOGGER + f Ljava/util/BitSet; j field_15842 VIRTUAL + f Ljava/util/BitSet; k field_15854 FIX + f Lcom/mojang/serialization/Dynamic; l field_15840 PUMPKIN + f Lcom/mojang/serialization/Dynamic; m field_15852 SNOWY_PODZOL + f Lcom/mojang/serialization/Dynamic; n field_15838 SNOWY_GRASS + f Lcom/mojang/serialization/Dynamic; o field_15850 SNOWY_MYCELIUM + f Lcom/mojang/serialization/Dynamic; p field_15839 UPPER_SUNFLOWER + f Lcom/mojang/serialization/Dynamic; q field_15848 UPPER_LILAC + f Lcom/mojang/serialization/Dynamic; r field_15834 UPPER_TALL_GRASS + f Lcom/mojang/serialization/Dynamic; s field_15845 UPPER_LARGE_FERN + f Lcom/mojang/serialization/Dynamic; t field_15835 UPPER_ROSE_BUSH + f Lcom/mojang/serialization/Dynamic; u field_15847 UPPER_PEONY + f Ljava/util/Map; v field_15841 FLOWER_POT_MAP + f Ljava/util/Map; w field_15853 SKULL_MAP + f Ljava/util/Map; x field_15836 DOOR_MAP + f Ljava/util/Map; y field_15846 NOTE_BLOCK_MAP + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; z field_15837 DYE_COLOR_MAP + m (Laxk;Lcom/mojang/serialization/Dynamic;)I a method_15616 idFor + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; a method_15637 getName + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Ljava/lang/String; a method_15638 getProperty + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_15603 method_15603 + m (Ljava/util/HashMap;)V a method_15608 method_15608 + m (Ljava/util/Map;ILjava/lang/String;)V a method_15636 addBeds + m (Ljava/util/Map;ILjava/lang/String;Ljava/lang/String;)V a method_15610 mapSkull + m (Ljava/util/Map;Ljava/lang/String;I)V a method_15611 mapDoor + m (ZZZZ)I a method_15615 getSideMask + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_15633 fix + m (Ljava/util/HashMap;)V b method_15626 method_15626 + m (Ljava/util/Map;ILjava/lang/String;)V b method_15605 addBanners + m (Ljava/util/HashMap;)V c method_15613 method_15613 + m (Ljava/util/HashMap;)V d method_15607 method_15607 + m (Ljava/util/HashMap;)V e method_15639 method_15639 + m (Ljava/util/HashMap;)V f method_15631 method_15631 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bbt$a net/minecraft/class_3582$class_3583 net/minecraft/util/datafix/fixes/ChunkPalettedStorageFix$DataLayer + f I a field_29879 SIZE + f I b field_29880 NIBBLE_SIZE + f [B c field_15855 data + m (I)Z a method_15641 isFirst + m (III)I a method_15640 get + m (I)I b method_15642 getPosition + m ()V + m ([B)V +c bbt$b net/minecraft/class_3582$class_3584 net/minecraft/util/datafix/fixes/ChunkPalettedStorageFix$Direction + f Lbbt$b; a field_15858 DOWN + f Lbbt$b; b field_15863 UP + f Lbbt$b; c field_15859 NORTH + f Lbbt$b; d field_15862 SOUTH + f Lbbt$b; e field_15857 WEST + f Lbbt$b; f field_15860 EAST + f Lbbt$b$a; g field_15864 axis + f Lbbt$b$b; h field_15861 axisDirection + f [Lbbt$b; i field_15865 $VALUES + m ()Lbbt$b$b; a method_15643 getAxisDirection + m ()Lbbt$b$a; b method_15644 getAxis + m ()[Lbbt$b; c method_36590 $values + m (Ljava/lang/String;ILbbt$b$b;Lbbt$b$a;)V + m ()V +c bbt$b$a net/minecraft/class_3582$class_3584$class_3585 net/minecraft/util/datafix/fixes/ChunkPalettedStorageFix$Direction$Axis + f Lbbt$b$a; a field_15869 X + f Lbbt$b$a; b field_15866 Y + f Lbbt$b$a; c field_15867 Z + f [Lbbt$b$a; d field_15868 $VALUES + m ()[Lbbt$b$a; a method_36591 $values + m (Ljava/lang/String;I)V + m ()V +c bbt$b$b net/minecraft/class_3582$class_3584$class_3586 net/minecraft/util/datafix/fixes/ChunkPalettedStorageFix$Direction$AxisDirection + f Lbbt$b$b; a field_15873 POSITIVE + f Lbbt$b$b; b field_15870 NEGATIVE + f I c field_15872 step + f [Lbbt$b$b; d field_15871 $VALUES + m ()I a method_15645 getStep + m ()[Lbbt$b$b; b method_36592 $values + m (Ljava/lang/String;II)V + m ()V +c bbt$c net/minecraft/class_3582$class_3587 net/minecraft/util/datafix/fixes/ChunkPalettedStorageFix$Section + f I a field_15879 y + f Laxk; b field_15882 palette + f Ljava/util/List; c field_15880 listTag + f Lcom/mojang/serialization/Dynamic; d field_15878 section + f Z e field_15876 hasData + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; f field_15881 toFix + f Lit/unimi/dsi/fastutil/ints/IntList; g field_15874 update + f Ljava/util/Set; h field_15875 seen + f [I i field_15877 buffer + m ()Lcom/mojang/serialization/Dynamic; a method_15651 write + m (I)Lcom/mojang/serialization/Dynamic; a method_15649 getBlock + m (II)V a method_15650 addFix + m (ILcom/mojang/serialization/Dynamic;)V a method_15647 setBlock + m (Ljava/nio/ByteBuffer;)Lbbt$a; a method_15654 method_15654 + m (I)I b method_15652 upgrade + m (Ljava/nio/ByteBuffer;)Lbbt$a; b method_15646 method_15646 + m (Lcom/mojang/serialization/Dynamic;)V +c bbt$d net/minecraft/class_3582$class_3588 net/minecraft/util/datafix/fixes/ChunkPalettedStorageFix$UpgradeChunk + f I a field_15885 sides + f [Lbbt$c; b field_15888 sections + f Lcom/mojang/serialization/Dynamic; c field_15886 level + f I d field_15884 x + f I e field_15883 z + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; f field_15887 blockEntities + m ()Lcom/mojang/serialization/Dynamic; a method_15664 write + m (I)Lcom/mojang/serialization/Dynamic; a method_15662 getBlock + m (ILbbt$b;)I a method_15663 relative + m (ILcom/mojang/serialization/Dynamic;)V a method_15657 setBlock + m (Lcom/mojang/serialization/Dynamic;)V a method_15656 method_15656 + m (Ljava/util/stream/Stream;)V a method_15661 method_15661 + m (I)Lcom/mojang/serialization/Dynamic; b method_15655 getBlockEntity + m (Lcom/mojang/serialization/Dynamic;)V b method_15665 method_15665 + m (Ljava/util/stream/Stream;)V b method_15659 method_15659 + m (I)Lcom/mojang/serialization/Dynamic; c method_15660 removeBlockEntity + m (I)Lbbt$c; d method_15658 getSection + m (Lcom/mojang/serialization/Dynamic;)V +c bbu net/minecraft/class_6740 net/minecraft/util/datafix/fixes/ChunkProtoTickListFix + f I a field_35446 SECTION_WIDTH + f Lcom/google/common/collect/ImmutableSet; b field_35447 ALWAYS_WATERLOGGED + m (BLcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39244 method_39244 + m (I)Z a method_39245 method_39245 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_39246 method_39246 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_39247 method_39247 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lorg/apache/commons/lang3/mutable/MutableInt;Lcom/mojang/datafixers/OpticFinder;Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)V a method_39248 method_39248 + m (Lcom/mojang/datafixers/OpticFinder;Lorg/apache/commons/lang3/mutable/MutableInt;Lcom/mojang/datafixers/OpticFinder;Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)V a method_39249 method_39249 + m (Lcom/mojang/datafixers/Typed;)Ljava/util/List; a method_39250 method_39250 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/OpticFinder;)Lbbu$a; a method_39251 method_39251 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; a method_39252 getBlock + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39253 method_39253 + m (Lcom/mojang/serialization/Dynamic;Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;BIILjava/lang/String;Ljava/util/function/Function;)Lcom/mojang/serialization/Dynamic; a method_39254 makeTickList + m (Lcom/mojang/serialization/Dynamic;Ljava/util/function/Supplier;IIIILjava/util/function/Function;)Lcom/mojang/serialization/Dynamic; a method_39255 createTick + m (Lcom/mojang/serialization/Dynamic;Ljava/util/function/Supplier;IIILjava/util/function/Function;I)Lcom/mojang/serialization/Dynamic; a method_39256 method_39256 + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;ILcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)V a method_39257 method_39257 + m (BLcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_39258 method_39258 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; b method_39259 getLiquid + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_39260 method_39260 + m (Lcom/mojang/serialization/Dynamic;)I c method_39261 method_39261 + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/List; d method_39262 method_39262 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_39263 method_39263 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bbu$a net/minecraft/class_6740$class_6741 net/minecraft/util/datafix/fixes/ChunkProtoTickListFix$PoorMansPalettedContainer + f J a field_35448 SIZE_BITS + f Ljava/util/List; b field_35449 palette + f [J c field_35450 data + f I d field_35451 bits + f J e field_35452 mask + f I f field_35453 valuesPerLong + m ()Ljava/util/List; a method_39264 palette + m (III)Lcom/mojang/serialization/Dynamic; a method_39265 get + m ()[J b method_39266 data + m (III)I b method_39267 getIndex + m (Ljava/util/List;[J)V +c bbv net/minecraft/class_6742 net/minecraft/util/datafix/fixes/ChunkRenamesFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_39268 method_39268 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_39269 appendChunkName + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39270 mergeRemainders + m (Lcom/mojang/datafixers/Typed;Ljava/lang/String;Ljava/lang/String;)Lcom/mojang/datafixers/Typed; a method_39271 renameField + m (Lcom/mojang/datafixers/Typed;Ljava/lang/String;Ljava/lang/String;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/Typed; a method_39272 renameFieldHelper + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39938 method_39938 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/MapLike;)Lcom/mojang/serialization/DataResult; a method_39273 method_39273 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/Dynamic; a method_39274 method_39274 + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39782 method_39782 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_39275 method_39275 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bbw net/minecraft/class_3589 net/minecraft/util/datafix/fixes/ChunkStatusFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15666 method_15666 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15667 method_15667 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bbx net/minecraft/class_3788 net/minecraft/util/datafix/fixes/ChunkStatusFix2 + f Ljava/util/Map; a field_16691 RENAMES_AND_DOWNGRADES + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_16642 method_16642 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_16643 method_16643 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bby net/minecraft/class_3590 net/minecraft/util/datafix/fixes/ChunkStructuresTemplateRenameFix + f Lcom/google/common/collect/ImmutableMap; a field_15889 RENAMES + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_49458 method_49458 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_49459 fixChildren + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15671 fixTag + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_49460 method_49460 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_49461 method_49461 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bbz net/minecraft/class_3591 net/minecraft/util/datafix/fixes/ChunkToProtochunkFix + f I a field_29881 NUM_SECTIONS + m (I)Lit/unimi/dsi/fastutil/shorts/ShortArrayList; a method_39941 method_39941 + m (III)S a method_15675 packOffsetCoordinates + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39943 fixChunkData + m (Lcom/mojang/serialization/Dynamic;I)Lcom/mojang/serialization/Dynamic; a method_39944 method_39944 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_39945 method_39945 + m (Lcom/mojang/serialization/Dynamic;Lit/unimi/dsi/fastutil/shorts/ShortList;)Lcom/mojang/serialization/Dynamic; a method_39946 method_39946 + m (Lcom/mojang/serialization/Dynamic;Ljava/nio/ByteBuffer;)Lcom/mojang/serialization/Dynamic; a method_39947 method_39947 + m (Lcom/mojang/serialization/Dynamic;Ljava/util/stream/Stream;)Lcom/mojang/serialization/Dynamic; a method_39948 method_39948 + m (Ljava/util/List;Lcom/mojang/serialization/Dynamic;)V a method_39949 method_39949 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_39951 repackBiomes + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_39952 repackTicks + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_39954 method_39954 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bca net/minecraft/class_3592 net/minecraft/util/datafix/fixes/ColorlessShulkerEntityFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15678 method_15678 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bcb net/minecraft/class_7370 net/minecraft/util/datafix/fixes/CriteriaRenameFix + f Ljava/lang/String; a field_38702 name + f Ljava/lang/String; b field_38703 advancementId + f Ljava/util/function/UnaryOperator; c field_38704 conversions + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_43063 method_43063 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_43064 method_43064 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_43065 fixAdvancements + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_43066 method_43066 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_43067 method_43067 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_43068 method_43068 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_43069 method_43069 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/UnaryOperator;)V +c bcc net/minecraft/class_8504 net/minecraft/util/datafix/fixes/DecoratedPotFieldRenameFix + f Ljava/lang/String; a field_44593 DECORATED_POT_ID + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bcd net/minecraft/class_8625 net/minecraft/util/datafix/fixes/DropInvalidSignDataFix + f [Ljava/lang/String; a field_45089 FIELDS_TO_DROP + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_52475 fix + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Z a method_52476 method_52476 + m (Ljava/util/List;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;J)Lcom/mojang/serialization/Dynamic; a method_52477 method_52477 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_52478 fixText + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/lang/String;)V + m ()V +c bce net/minecraft/class_3593 net/minecraft/util/datafix/fixes/DyeItemRenameFix + f Ljava/util/Map; a field_15890 RENAMED_IDS + m ()V + m ()V +c bcf net/minecraft/class_8079 net/minecraft/util/datafix/fixes/EffectDurationFix + f Ljava/util/Set; a field_42105 ITEM_TYPES + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_48549 method_48549 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_48550 method_48550 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_48551 fixEffect + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_48552 method_48552 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_48553 method_48553 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_48554 fix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_48555 updateEntity + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bcg net/minecraft/class_9266 net/minecraft/util/datafix/fixes/EmptyItemInHotbarFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_57205 method_57205 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_57206 method_57206 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; b method_57207 method_57207 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bch net/minecraft/class_9649 net/minecraft/util/datafix/fixes/EmptyItemInVillagerTradeFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_59626 method_59626 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bci net/minecraft/class_3594 net/minecraft/util/datafix/fixes/EntityArmorStandSilentFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15679 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bcj net/minecraft/class_3595 net/minecraft/util/datafix/fixes/EntityBlockStateFix + f Ljava/util/Map; a field_15891 MAP + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15695 updateFallingBlock + m (Lcom/mojang/datafixers/Typed;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/mojang/datafixers/Typed; a method_15687 updateBlockToBlockState + m (Lcom/mojang/datafixers/Typed;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/datafixers/Typed; a method_15682 updateEntity + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15692 method_15692 + m (Lcom/mojang/datafixers/util/Pair;)Ljava/lang/Integer; a method_15693 method_15693 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/Integer; a method_15681 method_15681 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/util/Either;)Lcom/mojang/datafixers/util/Either; a method_15690 method_15690 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/util/Unit;)Ljava/lang/Integer; a method_15694 method_15694 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_15684 method_15684 + m (Ljava/lang/Integer;)Ljava/lang/Integer; a method_15688 method_15688 + m (Ljava/lang/String;)I a method_15686 getBlockId + m (Ljava/util/HashMap;)V a method_15683 method_15683 + m (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/Function;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15691 method_15691 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_15685 method_15685 + m (Ljava/lang/Integer;)Ljava/lang/Integer; b method_15689 method_15689 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; c method_15680 method_15680 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; d method_15696 method_15696 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bck net/minecraft/class_8222 net/minecraft/util/datafix/fixes/EntityBrushableBlockFieldsRenameFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_49763 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bcl net/minecraft/class_3725 net/minecraft/util/datafix/fixes/EntityCatSplitFix + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bcm net/minecraft/class_3596 net/minecraft/util/datafix/fixes/EntityCodSalmonFix + f Ljava/util/Map; a field_15892 RENAMED_IDS + f Ljava/util/Map; b field_15893 RENAMED_EGG_IDS + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bcn net/minecraft/class_3597 net/minecraft/util/datafix/fixes/EntityCustomNameToComponentFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15698 method_15698 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15699 method_15699 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15697 fixTagCustomName + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bco net/minecraft/class_3598 net/minecraft/util/datafix/fixes/EntityElderGuardianSplitFix + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bcp net/minecraft/class_3599 net/minecraft/util/datafix/fixes/EntityEquipmentToArmorAndHandFix + m ()Ljava/lang/IllegalStateException; a method_15702 method_15702 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15700 method_15700 + m (Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/TypeRewriteRule; a method_15703 cap + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15701 method_15701 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bcq net/minecraft/class_7520 net/minecraft/util/datafix/fixes/EntityGoatMissingStateFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_44319 method_44319 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bcr net/minecraft/class_3600 net/minecraft/util/datafix/fixes/EntityHealthFix + f Ljava/util/Set; a field_15894 ENTITIES + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15705 method_15705 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15704 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bcs net/minecraft/class_3601 net/minecraft/util/datafix/fixes/EntityHorseSaddleFix + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bct net/minecraft/class_3602 net/minecraft/util/datafix/fixes/EntityHorseSplitFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15706 method_15706 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bcu net/minecraft/class_3603 net/minecraft/util/datafix/fixes/EntityIdFix + f Ljava/util/Map; a field_15895 ID_MAP + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_15709 method_15709 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_15707 method_15707 + m (Ljava/lang/String;)Ljava/lang/String; a method_15710 method_15710 + m (Ljava/util/HashMap;)V a method_15708 method_15708 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bcv net/minecraft/class_3604 net/minecraft/util/datafix/fixes/EntityItemFrameDirectionFix + m (B)B a method_15712 direction2dTo3d + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15711 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bcw net/minecraft/class_3605 net/minecraft/util/datafix/fixes/EntityMinecartIdentifiersFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_59879 method_59879 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bcx net/minecraft/class_7407 net/minecraft/util/datafix/fixes/EntityPaintingFieldsRenameFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_43386 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bcy net/minecraft/class_3606 net/minecraft/util/datafix/fixes/EntityPaintingItemFrameDirectionFix + f [[I a field_15897 DIRECTIONS + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15716 method_15716 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_15722 method_15722 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15718 method_15718 + m (Lcom/mojang/serialization/Dynamic;ZZ)Lcom/mojang/serialization/Dynamic; a method_15719 doFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_15717 method_15717 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_15720 method_15720 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_15721 method_15721 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bcz net/minecraft/class_3607 net/minecraft/util/datafix/fixes/EntityPaintingMotiveFix + f Ljava/util/Map; a field_15898 MAP + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_15723 fixTag + m (Ljava/util/HashMap;)V a method_15724 method_15724 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bda net/minecraft/class_4860 net/minecraft/util/datafix/fixes/EntityProjectileOwnerFix + m (JJ)[I a method_24898 createUUIDArray + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_24901 updateProjectiles + m (Lcom/mojang/datafixers/Typed;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/datafixers/Typed; a method_24902 updateEntity + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_24899 updateOwnerArrow + m (Lcom/mojang/serialization/Dynamic;JJ)Lcom/mojang/serialization/Dynamic; a method_24900 setUUID + m (Ljava/util/function/Function;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_24903 method_24903 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_24904 updateOwnerLlamaSpit + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_24905 updateItemPotion + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_24906 updateOwnerThrowable + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bdb net/minecraft/class_3608 net/minecraft/util/datafix/fixes/EntityPufferfishRenameFix + f Ljava/util/Map; a field_15899 RENAMED_IDS + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bdc net/minecraft/class_3983 net/minecraft/util/datafix/fixes/EntityRavagerRenameFix + f Ljava/util/Map; a field_17712 RENAMED_IDS + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bdd net/minecraft/class_1165 net/minecraft/util/datafix/fixes/EntityRedundantChanceTagsFix + f Lcom/mojang/serialization/Codec; a field_25695 FLOAT_LIST_CODEC + m (ILjava/util/List;)Ljava/lang/Boolean; a method_30072 method_30072 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_4972 method_4972 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28188 method_28188 + m (Lcom/mojang/serialization/OptionalDynamic;I)Z a method_30073 isZeroList + m (Ljava/lang/Float;)Z a method_30074 method_30074 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bde net/minecraft/class_1167 net/minecraft/util/datafix/fixes/EntityRenameFix + f Ljava/lang/String; a field_5670 name + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_4981 method_4981 + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_4984 method_4984 + m (Ljava/lang/Object;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/Typed; a method_4983 getEntity + m (Ljava/lang/String;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/util/Pair; a method_4982 fix + m (Ljava/lang/String;Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdf net/minecraft/class_1166 net/minecraft/util/datafix/fixes/EntityRidingToPassengersFix + m ()Ljava/lang/IllegalStateException; a method_4973 method_4973 + m (Lcom/mojang/datafixers/schemas/Schema;Lcom/mojang/datafixers/schemas/Schema;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/TypeRewriteRule; a method_4978 cap + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_4980 method_4980 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_4977 method_4977 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Either; a method_4979 method_4979 + m ()Ljava/lang/IllegalStateException; b method_4974 method_4974 + m ()Ljava/lang/IllegalStateException; c method_4975 method_4975 + m ()Ljava/lang/IllegalStateException; d method_4976 method_4976 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdg net/minecraft/class_1169 net/minecraft/util/datafix/fixes/EntityShulkerColorFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_4985 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdh net/minecraft/class_5277 net/minecraft/util/datafix/fixes/EntityShulkerRotationFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_27960 fixTag + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/Double; b method_27961 method_27961 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bdi net/minecraft/class_1168 net/minecraft/util/datafix/fixes/EntitySkeletonSplitFix + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdj net/minecraft/class_1171 net/minecraft/util/datafix/fixes/EntityStringUuidFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_4987 method_4987 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_4986 method_4986 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdk net/minecraft/class_1170 net/minecraft/util/datafix/fixes/EntityTheRenameningFix + f Ljava/util/Map; a field_5671 RENAMED_IDS + f Ljava/util/Map; b field_5672 RENAMED_BLOCKS + f Ljava/util/Map; c field_5673 RENAMED_ITEMS + f Ljava/lang/String; d field_29882 MINECRAFT_BRED + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bdl net/minecraft/class_1173 net/minecraft/util/datafix/fixes/EntityTippedArrowFix + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdm net/minecraft/class_4960 net/minecraft/util/datafix/fixes/EntityUUIDFix + f Lorg/slf4j/Logger; b field_36328 LOGGER + f Ljava/util/Set; c field_23122 ABSTRACT_HORSES + f Ljava/util/Set; d field_23123 TAMEABLE_ANIMALS + f Ljava/util/Set; e field_23124 ANIMALS + f Ljava/util/Set; f field_23125 MOBS + f Ljava/util/Set; g field_23126 LIVING_ENTITIES + f Ljava/util/Set; h field_23127 PROJECTILES + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26021 method_26021 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26020 method_26020 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_26037 updateLivingEntity + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_26023 method_26023 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_26039 updateEntityUUID + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28191 method_28191 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_26022 updatePiglin + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28192 method_28192 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_26024 updateEvokerFangs + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_28193 method_28193 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_26026 updateZombieVillager + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_26028 updateAreaEffectCloud + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; h method_26030 updateShulkerBullet + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; i method_26031 updateItem + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; j method_26032 updateFox + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; k method_26033 updateHurtBy + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; l method_26034 updateAnimalOwner + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; m method_26035 updateAnimal + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; n method_26036 updateMob + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; o method_26038 updateProjectile + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; p method_26040 method_26040 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; q method_26041 method_26041 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; r method_26042 method_26042 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; s method_28194 method_28194 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; t method_28195 method_28195 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; u method_28196 method_28196 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; v method_28197 method_28197 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; w method_28198 method_28198 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; x method_28199 method_28199 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bdn net/minecraft/class_7371 net/minecraft/util/datafix/fixes/EntityVariantFix + f Ljava/lang/String; a field_38705 fieldName + f Ljava/util/function/IntFunction; b field_38706 idConversions + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_43070 method_43070 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/Number;)Lcom/mojang/serialization/Dynamic; a method_43071 method_43071 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/serialization/Dynamic; a method_43072 updateAndRename + m (Lcom/mojang/serialization/Dynamic;Ljava/util/function/Function;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; a method_43073 method_43073 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;Ljava/lang/String;Ljava/util/function/Function;Ljava/lang/Object;)Ljava/lang/Object; a method_43074 method_43074 + m (Ljava/util/function/Function;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Ljava/lang/Object; a method_43075 method_43075 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_43076 method_43076 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/IntFunction;)V +c bdo net/minecraft/class_1172 net/minecraft/util/datafix/fixes/EntityWolfColorFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_4988 fixTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_4989 method_4989 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdp net/minecraft/class_1175 net/minecraft/util/datafix/fixes/EntityZombieSplitFix + f Ljava/util/function/Supplier; b field_51480 zombieVillagerType + m ()Lcom/mojang/datafixers/types/Type; a method_59810 method_59810 + m (ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_59811 method_59811 + m (Lcom/mojang/datafixers/Typed;I)Lcom/mojang/datafixers/Typed; a method_59812 changeSchemaToZombieVillager + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_59813 method_59813 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bdq net/minecraft/class_1174 net/minecraft/util/datafix/fixes/EntityZombieVillagerTypeFix + f I a field_29883 PROFESSION_MAX + m (I)I a method_4991 getVillagerProfession + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_4990 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdr net/minecraft/class_4846 net/minecraft/util/datafix/fixes/EntityZombifiedPiglinRenameFix + f Ljava/util/Map; a field_22416 RENAMED_IDS + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bds net/minecraft/class_8223 net/minecraft/util/datafix/fixes/FeatureFlagRemoveFix + f Ljava/lang/String; a field_43176 name + f Ljava/util/Set; b field_43177 flagsToRemove + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_49766 method_49766 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_49767 fixTag + m (Ljava/util/List;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_49768 method_49768 + m (Ljava/util/List;Lcom/mojang/serialization/Dynamic;Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_49769 method_49769 + m (Ljava/util/List;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Z b method_49770 method_49770 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/Set;)V +c bdt net/minecraft/class_7503 net/minecraft/util/datafix/fixes/FilteredBooksFix + m (Ljava/lang/String;)Z a method_44189 method_44189 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bdu net/minecraft/class_7504 net/minecraft/util/datafix/fixes/FilteredSignsFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_44190 method_44190 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bdv net/minecraft/class_8918 net/minecraft/util/datafix/fixes/FixProjectileStoredItem + f Ljava/lang/String; a field_46959 EMPTY_POTION + m (Lbdv$a;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_54727 method_54727 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lbdv$a;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_54728 method_54728 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/Typed; a method_54729 fixArrow + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; a method_54730 getArrowType + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_54731 createItemStack + m (Ljava/lang/String;Lbdv$a;)Ljava/util/function/Function; a method_54733 fixChoice + m (Ljava/lang/String;Lbdv$a;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;)Ljava/util/function/Function; a method_54734 fixChoiceCap + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/Typed; b method_54737 fixSpectralArrow + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_54738 method_54738 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/Typed; c method_54740 castUnchecked + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_54741 method_54741 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bdv$a net/minecraft/class_8918$class_8919 net/minecraft/util/datafix/fixes/FixProjectileStoredItem$SubFixer +c bdw net/minecraft/class_4731 net/minecraft/util/datafix/fixes/ForcePoiRebuild + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_24159 method_24159 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_24157 cap + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_24158 method_24158 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; b method_24161 method_24161 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_24160 method_24160 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_24162 method_24162 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdx net/minecraft/class_4752 net/minecraft/util/datafix/fixes/FurnaceRecipeFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_24312 method_24312 + m (Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/TypeRewriteRule; a method_24313 cap + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_24314 updateFurnaceContents + m (Lcom/mojang/datafixers/types/Type;Ljava/util/List;ILcom/mojang/serialization/Dynamic;)V a method_24315 method_24315 + m (Ljava/util/List;ILcom/mojang/datafixers/util/Pair;)V a method_24316 method_24316 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_24317 method_24317 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; c method_24318 method_24318 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; d method_24319 method_24319 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bdy net/minecraft/class_7442 net/minecraft/util/datafix/fixes/GoatHornIdFix + f [Ljava/lang/String; a field_39110 INSTRUMENTS + m (Ljava/lang/String;)Z a method_44191 method_44191 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bdz net/minecraft/class_4976 net/minecraft/util/datafix/fixes/GossipUUIDFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26289 method_26289 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_26290 method_26290 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28200 method_28200 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28201 method_28201 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)V +c bea net/minecraft/class_1177 net/minecraft/util/datafix/fixes/HeightmapRenamingFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_4999 method_4999 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5000 method_5000 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_4998 fix + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c beb net/minecraft/class_9183 net/minecraft/util/datafix/fixes/HorseBodyArmorItemFix + f Ljava/lang/String; a field_48805 previousBodyArmorTag + f Z b field_51519 clearArmorItems + m (Lcom/mojang/serialization/Dynamic;J)Lcom/mojang/serialization/Dynamic; a method_59885 method_59885 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_59886 method_59886 + m (Lcom/mojang/serialization/Dynamic;J)Lcom/mojang/serialization/Dynamic; b method_59887 method_59887 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_59888 method_59888 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/lang/String;Z)V +c bec net/minecraft/class_1176 net/minecraft/util/datafix/fixes/IglooMetadataRemovalFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_49462 method_49462 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_4993 fixTag + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_4992 method_4992 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_4996 removeIglooPieces + m (Ljava/util/stream/Stream;)Ljava/lang/Boolean; b method_4995 method_4995 + m (Lcom/mojang/serialization/Dynamic;)Z c method_4997 isIglooPiece + m (Lcom/mojang/serialization/Dynamic;)Z d method_4994 method_4994 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bed net/minecraft/class_1179 net/minecraft/util/datafix/fixes/ItemBannerColorFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5004 method_5004 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bee net/minecraft/class_1178 net/minecraft/util/datafix/fixes/ItemCustomNameToComponentFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5002 method_5002 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5003 method_5003 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5001 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bef net/minecraft/class_1181 net/minecraft/util/datafix/fixes/ItemIdFix + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a field_5675 ITEM_NAMES + m (I)Ljava/lang/String; a method_5018 getItem + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5013 method_5013 + m (Lcom/mojang/datafixers/util/Either;)Lcom/mojang/datafixers/util/Pair; a method_5014 method_5014 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_5017 method_5017 + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_5015 method_5015 + m (Ljava/lang/Integer;)Lcom/mojang/datafixers/util/Pair; a method_5016 method_5016 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c beg net/minecraft/class_1180 net/minecraft/util/datafix/fixes/ItemLoreFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5007 method_5007 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5011 method_5011 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28202 method_28202 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_5005 fixLoreList + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28203 method_28203 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28204 method_28204 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c beh net/minecraft/class_1183 net/minecraft/util/datafix/fixes/ItemPotionFix + f Ljava/lang/String; a field_29884 DEFAULT + f I b field_29885 SPLASH + f [Ljava/lang/String; c field_5678 POTIONS + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5024 method_5024 + m ([Ljava/lang/String;)V a method_5023 method_5023 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bei net/minecraft/class_7641 net/minecraft/util/datafix/fixes/ItemRemoveBlockEntityTagFix + f Ljava/util/Set; a field_39900 items + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_45014 method_45014 + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/util/Set;)V +c bej net/minecraft/class_1182 net/minecraft/util/datafix/fixes/ItemRenameFix + f Ljava/lang/String; a field_5676 name + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/datafixers/DataFix; a method_5019 create + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_5021 method_5021 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_5020 method_5020 + m (Ljava/lang/String;)Ljava/lang/String; a method_5022 fixItem + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)V +c bej$1 net/minecraft/class_1182$1 net/minecraft/util/datafix/fixes/ItemRenameFix$1 + f Ljava/util/function/Function; a field_5677 val$fixItem + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/Function;)V +c bek net/minecraft/class_1185 net/minecraft/util/datafix/fixes/ItemShulkerBoxColorFix + f [Ljava/lang/String; a field_5680 NAMES_BY_COLOR + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5031 method_5031 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bel net/minecraft/class_1184 net/minecraft/util/datafix/fixes/ItemSpawnEggFix + f [Ljava/lang/String; a field_5679 ID_TO_ENTITY + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5027 method_5027 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Ljava/util/Optional; a method_5028 method_5028 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28205 method_28205 + m ([Ljava/lang/String;)V a method_5029 method_5029 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Ljava/util/Optional; b method_5030 method_5030 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Ljava/util/Optional; c method_5025 method_5025 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bem net/minecraft/class_9342 net/minecraft/util/datafix/fixes/ItemStackComponentRemainderFix + f Ljava/lang/String; a field_49714 name + f Ljava/lang/String; b field_49715 componentId + f Ljava/lang/String; c field_49716 newComponentId + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_58043 method_58043 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_58044 method_58044 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_58045 fixComponent + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_58046 method_58046 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/lang/String;)V + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +c ben net/minecraft/class_9267 net/minecraft/util/datafix/fixes/ItemStackComponentizationFix + f I a field_49188 HIDE_ENCHANTMENTS + f I b field_49189 HIDE_MODIFIERS + f I c field_49190 HIDE_UNBREAKABLE + f I d field_49191 HIDE_CAN_DESTROY + f I e field_49192 HIDE_CAN_PLACE + f I f field_49193 HIDE_ADDITIONAL + f I g field_49194 HIDE_DYE + f I h field_49195 HIDE_UPGRADES + f Ljava/util/Set; i field_49196 POTION_HOLDER_IDS + f Ljava/util/Set; j field_49197 BUCKETED_MOB_IDS + f Ljava/util/List; k field_49198 BUCKETED_MOB_TAGS + f Ljava/util/Set; l field_51347 BOOLEAN_BLOCK_STATE_PROPERTIES + f Lcom/google/common/base/Splitter; m field_49199 PROPERTY_SPLITTER + m (I)Ljava/lang/String; a method_57208 fixMapDecorationType + m (Lben$a;)V a method_57209 fixFireworkStar + m (Lben$a;ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_57210 method_57210 + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V a method_57211 fixItemStack + m (Lben$a;Lcom/mojang/serialization/Dynamic;I)Lcom/mojang/serialization/Dynamic; a method_57212 fixDisplay + m (Lben$a;Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_57213 fixBlockEntityTag + m (Lben$a;Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;Z)V a method_57214 fixEnchantments + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/Dynamic; a method_59516 method_59516 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_57236 fixProfile + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_58047 method_58047 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_57216 fixBlockStatePredicate + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/util/Optional;)Lcom/mojang/serialization/Dynamic; a method_57217 createFilteredText + m (Lcom/mojang/serialization/OptionalDynamic;)Lcom/mojang/serialization/Dynamic; a method_57218 fixProfileProperties + m (Lcom/mojang/serialization/OptionalDynamic;Ljava/util/Map$Entry;)Ljava/util/stream/Stream; a method_57219 method_57219 + m (Lcom/mojang/serialization/OptionalDynamic;Ljava/util/Map$Entry;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/Dynamic; a method_57220 method_57220 + m (Ljava/lang/String;)Z a method_58048 isValidPlayerName + m (Ljava/lang/String;Ljava/lang/Number;)Lcom/mojang/datafixers/util/Pair; a method_57222 method_57222 + m (Ljava/util/stream/Stream;)Ljava/util/Map; a method_59517 method_59517 + m (I)Z b method_58049 method_58049 + m (Lben$a;)V b method_57223 fixFireworkRocket + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V b method_57224 fixPotionContents + m (Lben$a;Lcom/mojang/serialization/Dynamic;I)V b method_57225 fixAdventureModeChecks + m (Lben$a;Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;Z)V b method_57226 fixBlockStatePredicates + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_58050 fixBlockStateTag + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; b method_57228 method_57228 + m (Ljava/lang/String;)Z b method_57221 method_57221 + m (Lben$a;)Lcom/mojang/serialization/Dynamic; c method_57229 method_57229 + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V c method_57230 fixWritableBook + m (Lben$a;Lcom/mojang/serialization/Dynamic;I)V c method_57231 fixAttributeModifiers + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; c method_57215 parseEnchantment + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V d method_57233 fixWrittenBook + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_57227 fixAttributeModifier + m (Lben$a;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_57235 fixBookPages + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/datafixers/util/Pair; e method_57232 fixMapDecoration + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V f method_57237 fixBucketedMobData + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_57234 fixFireworkExplosion + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V g method_57239 fixLodestoneTracker + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_57238 method_57238 + m (Lben$a;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; h method_57241 method_57241 + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/List; h method_57240 method_57240 + m (Lben$a;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; i method_57243 method_57243 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/datafixers/util/Pair; i method_57242 method_57242 + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V j method_57245 method_57245 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; j method_57244 method_57244 + m (Lben$a;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; k method_57247 method_57247 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; k method_57248 method_57248 + m (Lben$a;Lcom/mojang/serialization/Dynamic;)V l method_58051 method_58051 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; l method_57249 method_57249 + m (Lcom/mojang/serialization/Dynamic;)Ljava/lang/String; m method_57250 method_57250 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; n method_57251 method_57251 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; o method_57252 method_57252 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; p method_57253 method_57253 + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/stream/Stream; q method_57254 method_57254 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; r method_57255 method_57255 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c ben$a net/minecraft/class_9267$class_9268 net/minecraft/util/datafix/fixes/ItemStackComponentizationFix$ItemStackData + f Ljava/lang/String; a field_49200 item + f I b field_49201 count + f Lcom/mojang/serialization/Dynamic; c field_49202 components + f Lcom/mojang/serialization/Dynamic; d field_49203 remainder + f Lcom/mojang/serialization/Dynamic; e field_49204 tag + m ()Lcom/mojang/serialization/Dynamic; a method_57256 write + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; a method_57257 read + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_57258 mergeRemainder + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/Number;)Lben$a; a method_57259 method_57259 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/MapLike;)Lcom/mojang/serialization/DataResult; a method_57260 method_57260 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/Dynamic; a method_57261 method_57261 + m (Ljava/lang/String;)Lcom/mojang/serialization/OptionalDynamic; a method_57262 removeTag + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)V a method_57263 setComponent + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_57264 moveTagInto + m (Ljava/lang/String;Lcom/mojang/serialization/OptionalDynamic;)V a method_57265 setComponent + m (Ljava/lang/String;Ljava/lang/String;)V a method_57266 moveTagToComponent + m (Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)V a method_57267 moveTagToComponent + m (Ljava/lang/String;ZLjava/util/function/UnaryOperator;)V a method_57268 fixSubTag + m (Ljava/util/Set;)Z a method_57269 is + m (Ljava/lang/String;)Z b method_57270 is + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)V b method_57271 method_57271 + m (Ljava/lang/String;)Z c method_58054 hasComponent + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)V c method_57272 method_57272 + m (Ljava/lang/String;ILcom/mojang/serialization/Dynamic;)V +c beo net/minecraft/class_9452 net/minecraft/util/datafix/fixes/ItemStackCustomNameToOverrideComponentFix + f Ljava/util/Set; a field_50111 MAP_NAMES + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_58601 method_58601 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_58602 method_58602 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_58603 fixMap + m (Lcom/mojang/serialization/Dynamic;Ljava/util/function/Predicate;)Lcom/mojang/serialization/Dynamic; a method_58604 fixCustomName + m (Ljava/lang/String;)Z a method_58605 method_58605 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_58606 method_58606 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_58607 fixBanner + m (Ljava/lang/String;)Z b method_58608 method_58608 + m (Ljava/lang/String;)Z c method_58609 method_58609 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bep net/minecraft/class_1187 net/minecraft/util/datafix/fixes/ItemStackEnchantmentNamesFix + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a field_5681 MAP + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5036 method_5036 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5041 method_5041 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5035 fixTag + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_5033 method_5033 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_5034 method_5034 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28206 method_28206 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; b method_5037 method_5037 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28207 method_28207 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28208 method_28208 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c beq net/minecraft/class_1186 net/minecraft/util/datafix/fixes/ItemStackMapIdFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5032 method_5032 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c ber net/minecraft/class_1189 net/minecraft/util/datafix/fixes/ItemStackSpawnEggFix + f Ljava/lang/String; a field_41287 itemType + f Ljava/util/Map; b field_5685 MAP + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5046 method_5046 + m (Ljava/util/HashMap;)V a method_5047 method_5047 + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/lang/String;)V + m ()V +c bes net/minecraft/class_7505 net/minecraft/util/datafix/fixes/ItemStackTagFix + f Ljava/lang/String; a field_39403 name + f Ljava/util/function/Predicate; b field_39404 idFilter + m (Lcom/mojang/datafixers/OpticFinder;Ljava/util/function/Predicate;Lcom/mojang/datafixers/OpticFinder;Ljava/util/function/UnaryOperator;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56970 method_56970 + m (Lcom/mojang/datafixers/types/Type;Ljava/util/function/Predicate;Ljava/util/function/UnaryOperator;)Ljava/util/function/UnaryOperator; a method_56971 createFixer + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_20445 fixItemStackTag + m (Ljava/util/function/UnaryOperator;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56972 method_56972 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/Predicate;)V +c bet net/minecraft/class_1188 net/minecraft/util/datafix/fixes/ItemStackTheFlatteningFix + f Ljava/util/Map; a field_5684 MAP + f Ljava/util/Set; b field_5683 IDS + f Ljava/util/Set; c field_5682 DAMAGE_IDS + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5044 method_5044 + m (Ljava/lang/String;)Ljava/lang/String; a method_5045 method_5045 + m (Ljava/lang/String;I)Ljava/lang/String; a method_5042 updateItem + m (Ljava/util/HashMap;)V a method_5043 method_5043 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c beu net/minecraft/class_4961 net/minecraft/util/datafix/fixes/ItemStackUUIDFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26294 method_26294 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26296 method_26296 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26295 method_26295 + m (Lcom/mojang/datafixers/util/Pair;)Ljava/lang/Boolean; a method_26051 method_26051 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26293 method_26293 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_26297 updateAttributeModifiers + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_26298 updateSkullOwner + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_26053 method_26053 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_26299 method_26299 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bev net/minecraft/class_1190 net/minecraft/util/datafix/fixes/ItemWaterPotionFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5048 method_5048 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bew net/minecraft/class_1194 net/minecraft/util/datafix/fixes/ItemWrittenBookPagesStrictJsonFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5086 method_5086 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5088 method_5088 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5085 fixTag + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5089 method_5089 + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_5084 method_5084 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bex net/minecraft/class_4977 net/minecraft/util/datafix/fixes/JigsawPropertiesFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26300 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bey net/minecraft/class_4978 net/minecraft/util/datafix/fixes/JigsawRotationFix + f Ljava/util/Map; a field_23213 RENAMES + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26302 method_26302 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_26301 fix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_26303 method_26303 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bez net/minecraft/class_9786 net/minecraft/util/datafix/fixes/JukeboxTicksSinceSongStartedFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_60696 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bfa net/minecraft/class_1191 net/minecraft/util/datafix/fixes/LeavesFix + f I a field_29886 NORTH_WEST_MASK + f I b field_29887 WEST_MASK + f I c field_29888 SOUTH_WEST_MASK + f I d field_29889 SOUTH_MASK + f I e field_29890 SOUTH_EAST_MASK + f I f field_29891 EAST_MASK + f I g field_29892 NORTH_EAST_MASK + f I h field_29893 NORTH_MASK + f [[I i field_5687 DIRECTIONS + f I j field_29894 DECAY_DISTANCE + f I k field_29895 SIZE_BITS + f I l field_29896 SIZE + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; m field_5688 LEAVES + f Ljava/util/Set; n field_5686 LOGS + m (I)I a method_5052 getX + m (III)I a method_5051 getIndex + m (Lbfa$a;)Lbfa$a; a method_5049 method_5049 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5056 method_5056 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5054 method_5054 + m (Lcom/mojang/datafixers/OpticFinder;[ILcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5063 method_5063 + m (Lcom/mojang/datafixers/Typed;)Lbfa$a; a method_5057 method_5057 + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5058 method_5058 + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)V a method_5055 method_5055 + m (ZZZZ)I a method_5061 getSideMask + m ([ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5059 method_5059 + m (I)I b method_5062 getY + m (I)I c method_5050 getZ + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bfa$a net/minecraft/class_1191$class_1192 net/minecraft/util/datafix/fixes/LeavesFix$LeavesSection + f Ljava/lang/String; h field_29897 PERSISTENT + f Ljava/lang/String; i field_29898 DECAYABLE + f Ljava/lang/String; j field_29899 DISTANCE + f Lit/unimi/dsi/fastutil/ints/IntSet; k field_5689 leaveIds + f Lit/unimi/dsi/fastutil/ints/IntSet; l field_5691 logIds + f Lit/unimi/dsi/fastutil/ints/Int2IntMap; m field_5690 stateToIdMap + m (I)Z a method_5068 isLog + m (III)V a method_5070 setDistance + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;ZI)Lcom/mojang/serialization/Dynamic; a method_5072 makeLeafTag + m (I)Z b method_5071 isLeaf + m (I)I d method_5065 getDistance + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/schemas/Schema;)V +c bfa$b net/minecraft/class_1191$class_1193 net/minecraft/util/datafix/fixes/LeavesFix$Section + f Ljava/lang/String; a field_29900 BLOCK_STATES_TAG + f Ljava/lang/String; b field_29901 NAME_TAG + f Ljava/lang/String; c field_29902 PROPERTIES_TAG + f Lcom/mojang/datafixers/OpticFinder; d field_5693 paletteFinder + f Ljava/util/List; e field_5692 palette + f I f field_5694 index + f Lbaa; g field_5696 storage + f Lcom/mojang/datafixers/types/Type; h field_5695 blockStateType + m ()Z a method_5076 skippable + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5083 write + m (Lcom/mojang/serialization/Dynamic;)V a method_5074 readStorage + m (Ljava/lang/String;ZI)I a method_5082 getStateId + m (Ljava/util/List;)Ljava/util/List; a method_5081 method_5081 + m ()Z b method_5079 isSkippable + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/datafixers/util/Pair; b method_5078 method_5078 + m ()I c method_5077 getIndex + m (I)I c method_5075 getBlock + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_5080 method_5080 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/schemas/Schema;)V +c bfb net/minecraft/class_8575 net/minecraft/util/datafix/fixes/LegacyDragonFightFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_52227 method_52227 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56973 fixDragonFight + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_52228 method_52228 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bfc net/minecraft/class_1196 net/minecraft/util/datafix/fixes/LevelDataGeneratorOptionsFix + f Ljava/util/Map; a field_5702 MAP + f Ljava/lang/String; b field_29903 GENERATOR_OPTIONS + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5096 method_5096 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28209 method_28209 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/util/Pair;)Ljava/lang/Object; a method_5098 method_5098 + m (Lcom/mojang/serialization/DynamicOps;Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_5095 method_5095 + m (Ljava/lang/String;)Lcom/mojang/datafixers/util/Pair; a method_5099 getLayerInfoFromString + m (Ljava/lang/String;Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/Dynamic; a method_5100 convert + m (Ljava/util/HashMap;)V a method_5101 method_5101 + m (Lcom/mojang/serialization/DynamicOps;Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; b method_28210 method_28210 + m (Ljava/lang/String;)Ljava/util/List; b method_5103 getLayersInfoFromString + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bfd net/minecraft/class_1195 net/minecraft/util/datafix/fixes/LevelFlatGeneratorInfoFix + f Ljava/lang/String; a field_29904 DEFAULT + f Ljava/lang/String; b field_29905 GENERATOR_OPTIONS + f Lcom/google/common/base/Splitter; c field_5700 SPLITTER + f Lcom/google/common/base/Splitter; d field_5701 LAYER_SPLITTER + f Lcom/google/common/base/Splitter; e field_5699 OLD_AMOUNT_SPLITTER + f Lcom/google/common/base/Splitter; f field_5698 AMOUNT_SPLITTER + f Lcom/google/common/base/Splitter; g field_5697 BLOCK_SPLITTER + m (Lcom/google/common/base/Splitter;ILjava/lang/String;)Ljava/lang/String; a method_5091 method_5091 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5093 method_5093 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5090 fix + m (Ljava/lang/String;)Ljava/lang/String; a method_5094 fixString + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_5092 method_5092 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bfe net/minecraft/class_8876 net/minecraft/util/datafix/fixes/LevelLegacyWorldGenSettingsFix + f Ljava/lang/String; a field_46771 WORLD_GEN_SETTINGS + f Ljava/util/List; b field_46772 OLD_SETTINGS_KEYS + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_54443 method_54443 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_54444 method_54444 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bff net/minecraft/class_4962 net/minecraft/util/datafix/fixes/LevelUUIDFix + f Lorg/slf4j/Logger; b field_36329 LOGGER + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26055 method_26055 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_28211 method_28211 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28212 method_28212 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_26058 method_26058 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; b method_28213 method_28213 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_26057 updateWanderingTrader + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_26060 updateDragonFight + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_26061 updateCustomBossEvents + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_28214 method_28214 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_28215 method_28215 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_28216 method_28216 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; h method_28217 method_28217 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; i method_28218 method_28218 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; j method_28219 method_28219 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; k method_28220 method_28220 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; l method_28221 method_28221 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bfg net/minecraft/class_9343 net/minecraft/util/datafix/fixes/LodestoneCompassComponentFix + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bfh net/minecraft/class_9231 net/minecraft/util/datafix/fixes/MapBannerBlockPosFormatFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56974 method_56974 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56975 fixMapSavedData + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_56976 method_56976 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_56977 method_56977 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_56978 method_56978 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bfi net/minecraft/class_3970 net/minecraft/util/datafix/fixes/MapIdFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_17828 method_17828 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28222 method_28222 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfj net/minecraft/class_4803 net/minecraft/util/datafix/fixes/MemoryExpiryDataFix + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_24507 updateMemoryEntry + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_24506 fixTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_24508 updateBrain + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_24509 updateMemories + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_24510 wrapMemoryValue + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)V +c bfk net/minecraft/class_5396 net/minecraft/util/datafix/fixes/MissingDimensionFix + m (Lcom/mojang/datafixers/FieldFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/templates/CompoundList$CompoundListType;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_29909 method_29909 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/types/templates/CompoundList$CompoundListType;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_29910 method_29910 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/types/templates/CompoundList$CompoundListType;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_29911 method_29911 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/Type; a method_38820 flatType + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_29912 recreateSettings + m (Ljava/lang/String;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/types/Type; a method_29913 fields + m (Ljava/lang/String;Lcom/mojang/datafixers/types/Type;Ljava/lang/String;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/types/Type; a method_29914 optionalFields + m (Ljava/lang/String;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/types/Type; b method_29915 optionalFields + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfl net/minecraft/class_8744 net/minecraft/util/datafix/fixes/MobEffectIdFix + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a field_45725 ID_MAP + f Ljava/util/Set; b field_45726 MOB_EFFECT_INSTANCE_CARRIER_ITEMS + m ()Lcom/mojang/datafixers/TypeRewriteRule; a method_53078 blockEntityFixer + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_53079 method_53079 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_53080 method_53080 + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/datafixers/Typed; a method_53081 updateNamedChoice + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_53082 updateMobEffectInstance + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_53083 updateSuspiciousStewEntry + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Ljava/util/Optional; a method_53084 getAndConvertMobEffectId + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_53085 updateMobEffectIdField + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_53096 updateMobEffectIdField + m (Lcom/mojang/serialization/Dynamic;Ljava/util/stream/Stream;)Lcom/mojang/serialization/Dynamic; a method_53089 method_53089 + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_53090 method_53090 + m (Ljava/lang/Number;)Ljava/lang/String; a method_53091 method_53091 + m (Ljava/util/function/Function;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_53092 method_53092 + m ()Lcom/mojang/datafixers/TypeRewriteRule; b method_53093 entityFixer + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_53094 method_53094 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_53095 updateSuspiciousStewEntry + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; b method_53101 updateMobEffectInstanceList + m (Lcom/mojang/serialization/Dynamic;Ljava/util/stream/Stream;)Lcom/mojang/serialization/Dynamic; b method_53097 method_53097 + m ()Lcom/mojang/datafixers/TypeRewriteRule; c method_53713 playerFixer + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; c method_53714 method_53714 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_53100 fixMooshroomTag + m ()Lcom/mojang/datafixers/TypeRewriteRule; d method_53098 itemStackFixer + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; d method_53099 method_53099 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_53103 fixArrowTag + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; e method_53102 method_53102 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_53104 fixAreaEffectCloudTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_53105 updateLivingEntityTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_53106 fixSuspiciousStewTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; h method_53107 method_53107 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; i method_53108 method_53108 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bfm net/minecraft/class_1198 net/minecraft/util/datafix/fixes/MobSpawnerEntityIdentifiersFix + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5107 method_5107 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5106 fix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_5108 method_5108 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfn net/minecraft/class_1197 net/minecraft/util/datafix/fixes/NamedEntityFix + f Ljava/lang/String; a field_5703 name + f Ljava/lang/String; b field_5705 entityName + f Lcom/mojang/datafixers/DSL$TypeReference; c field_5704 type + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5104 method_5104 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5105 fix + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)V +c bfo net/minecraft/class_8877 net/minecraft/util/datafix/fixes/NamedEntityWriteReadFix + f Ljava/lang/String; a field_46773 name + f Ljava/lang/String; b field_46774 entityName + f Lcom/mojang/datafixers/DSL$TypeReference; c field_46775 type + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_56639 method_56639 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/TypeRewriteRule; a method_56640 typePatcher + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;)Lcom/mojang/datafixers/TypeRewriteRule; a method_56641 fix + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;Ljava/lang/Object;)Ljava/lang/Object; a method_56642 method_56642 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/types/Type;Ljava/lang/Object;)Ljava/lang/Object; a method_56643 method_56643 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_54447 fix + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_56644 method_56644 + m (Ljava/lang/Object;)Ljava/lang/Object; a method_56645 method_56645 + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)V +c bfp net/minecraft/class_7293 net/minecraft/util/datafix/fixes/NamespacedTypeRenameFix + f Ljava/lang/String; a field_38381 name + f Lcom/mojang/datafixers/DSL$TypeReference; b field_38383 type + f Ljava/util/function/UnaryOperator; c field_43178 renamer + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_49771 method_49771 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_42638 method_42638 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/util/function/UnaryOperator;)V +c bfq net/minecraft/class_3904 net/minecraft/util/datafix/fixes/NewVillageFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_17329 method_17329 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_17330 method_17330 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_17331 method_17331 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_17332 method_17332 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_17333 method_17333 + m (Lcom/mojang/datafixers/types/templates/CompoundList$CompoundListType;)Lcom/mojang/datafixers/TypeRewriteRule; a method_17334 cap + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_17335 method_17335 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28223 method_28223 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28224 method_28224 + m (Ljava/lang/String;)Ljava/lang/String; a method_17336 method_17336 + m (Ljava/util/List;)Ljava/util/List; a method_17337 method_17337 + m (Lcom/mojang/datafixers/util/Pair;)Z b method_17339 method_17339 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28225 method_28225 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28226 method_28226 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28227 method_28227 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfr net/minecraft/class_1200 net/minecraft/util/datafix/fixes/ObjectiveDisplayNameFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_37372 method_37372 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_37373 method_37373 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfs net/minecraft/class_1199 net/minecraft/util/datafix/fixes/ObjectiveRenderTypeFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_37376 method_37376 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_37377 method_37377 + m (Ljava/lang/String;)Ljava/lang/String; a method_5112 getRenderType + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bft net/minecraft/class_4299 net/minecraft/util/datafix/fixes/OminousBannerBlockEntityRenameFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_20481 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfu net/minecraft/class_4294 net/minecraft/util/datafix/fixes/OminousBannerRenameFix + m (Ljava/lang/String;)Z a method_44194 method_44194 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bfv net/minecraft/class_8014 net/minecraft/util/datafix/fixes/OptionsAccessibilityOnboardFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_48133 method_48133 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_48134 method_48134 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bfw net/minecraft/class_4092 net/minecraft/util/datafix/fixes/OptionsAddTextBackgroundFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_18852 method_18852 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28233 method_28233 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_28234 method_28234 + m (Ljava/lang/String;)D a method_18853 calculateBackground + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfx net/minecraft/class_8004 net/minecraft/util/datafix/fixes/OptionsAmbientOcclusionFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_47995 method_47995 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_47996 method_47996 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_47997 method_47997 + m (Ljava/lang/String;)Ljava/lang/String; a method_47998 updateValue + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bfy net/minecraft/class_1202 net/minecraft/util/datafix/fixes/OptionsForceVBOFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5124 method_5124 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5123 method_5123 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bfz net/minecraft/class_1201 net/minecraft/util/datafix/fixes/OptionsKeyLwjgl3Fix + f Ljava/lang/String; a field_29906 KEY_UNKNOWN + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; b field_5706 MAP + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5121 method_5121 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28235 method_28235 + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Map;)Lcom/mojang/serialization/Dynamic; a method_28236 method_28236 + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_5118 method_5118 + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_5122 method_5122 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bga net/minecraft/class_1204 net/minecraft/util/datafix/fixes/OptionsKeyTranslationFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5130 method_5130 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28237 method_28237 + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_28238 method_28238 + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Map;)Lcom/mojang/serialization/Dynamic; a method_28239 method_28239 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bgb net/minecraft/class_1203 net/minecraft/util/datafix/fixes/OptionsLowerCaseLanguageFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5126 method_5126 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5125 method_5125 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bgc net/minecraft/class_9774 net/minecraft/util/datafix/fixes/OptionsMenuBlurrinessFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_60600 method_60600 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_60601 method_60601 + m (Ljava/lang/String;)I a method_60602 convertToIntRange + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_60603 method_60603 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgd net/minecraft/class_7683 net/minecraft/util/datafix/fixes/OptionsProgrammerArtFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_45313 method_45313 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_45314 fixList + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_45315 method_45315 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_45316 method_45316 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bge net/minecraft/class_5404 net/minecraft/util/datafix/fixes/OptionsRenameFieldFix + f Ljava/lang/String; a field_25665 fixName + f Ljava/lang/String; b field_25666 fieldFrom + f Ljava/lang/String; c field_25667 fieldTo + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_30019 method_30019 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_30020 method_30020 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_30021 method_30021 + m (Lcom/mojang/datafixers/schemas/Schema;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +c bgf net/minecraft/class_6909 net/minecraft/util/datafix/fixes/OverreachingTickFix + m (IILcom/mojang/serialization/Dynamic;)Z a method_40437 method_40437 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_40438 method_40438 + m (Lcom/mojang/serialization/Dynamic;IILjava/util/Optional;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_40439 extractOverreachingTicks + m (Ljava/util/Optional;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_40440 method_40440 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgg net/minecraft/class_9650 net/minecraft/util/datafix/fixes/ParticleUnflatteningFix + f Lorg/slf4j/Logger; a field_51367 LOGGER + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_59627 fix + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/brigadier/StringReader;)Lcom/mojang/serialization/Dynamic; a method_59628 readVector + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_59629 updateItem + m (Ljava/lang/String;)Lub; a method_59630 parseTag + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; b method_59631 updateBlock + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Ljava/util/Map; c method_59632 parseBlockProperties + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; d method_59633 updateDust + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; e method_59634 updateDustTransition + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; f method_59635 updateSculkCharge + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; g method_59636 updateVibration + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; h method_59637 updateShriek + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bgh net/minecraft/class_9344 net/minecraft/util/datafix/fixes/PlayerHeadBlockProfileFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_58055 fix + m (Ljava/util/Optional;)Ljava/util/Optional; a method_58056 method_58056 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgi net/minecraft/class_4963 net/minecraft/util/datafix/fixes/PlayerUUIDFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26070 method_26070 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_26072 method_26072 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28240 method_28240 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28241 method_28241 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgj net/minecraft/class_7506 net/minecraft/util/datafix/fixes/PoiTypeRemoveFix + f Ljava/util/function/Predicate; a field_39405 typesToKeep + m (Lcom/mojang/serialization/Dynamic;)Z a method_44195 shouldKeepRecord + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/Predicate;)V +c bgk net/minecraft/class_7507 net/minecraft/util/datafix/fixes/PoiTypeRenameFix + f Ljava/util/function/Function; a field_39406 renamer + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_44196 method_44196 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_44197 method_44197 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/Function;)V +c bgl net/minecraft/class_8878 net/minecraft/util/datafix/fixes/PrimedTntBlockStateFixer + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_54449 renameFuse + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_54450 insertBlockState + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgm net/minecraft/class_9689 net/minecraft/util/datafix/fixes/ProjectileStoredWeaponFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_59909 method_59909 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_59910 method_59910 + m (Ljava/lang/String;)Ljava/util/function/Function; a method_59911 fixChoice + m (Ljava/lang/String;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/types/Type;)Ljava/util/function/Function; a method_59912 fixChoiceCap + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgn net/minecraft/class_8626 net/minecraft/util/datafix/fixes/RandomSequenceSettingsFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_52479 method_52479 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_52480 method_52480 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_52481 method_52481 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgo net/minecraft/class_1206 net/minecraft/util/datafix/fixes/RecipesFix + f Ljava/util/Map; a field_5708 RECIPES + m ()V + m ()V +c bgp net/minecraft/class_1205 net/minecraft/util/datafix/fixes/RecipesRenameningFix + f Ljava/util/Map; a field_5707 RECIPES + m ()V + m ()V +c bgq net/minecraft/class_5255 net/minecraft/util/datafix/fixes/RedstoneWireConnectionsFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_27779 method_27779 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_27778 updateRedstoneConnections + m (Ljava/lang/String;)Z a method_27780 isConnected + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28249 method_28249 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28250 method_28250 + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28251 method_28251 + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28252 method_28252 + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28253 method_28253 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgr net/minecraft/class_1208 net/minecraft/util/datafix/fixes/References + f Lcom/mojang/datafixers/DSL$TypeReference; A field_5723 ENTITY_TREE + f Lcom/mojang/datafixers/DSL$TypeReference; B field_5729 ENTITY + f Lcom/mojang/datafixers/DSL$TypeReference; C field_5731 BLOCK_NAME + f Lcom/mojang/datafixers/DSL$TypeReference; D field_5713 ITEM_NAME + f Lcom/mojang/datafixers/DSL$TypeReference; E field_38380 GAME_EVENT_NAME + f Lcom/mojang/datafixers/DSL$TypeReference; F field_5718 UNTAGGED_SPAWNER + f Lcom/mojang/datafixers/DSL$TypeReference; G field_5724 STRUCTURE_FEATURE + f Lcom/mojang/datafixers/DSL$TypeReference; H field_5721 OBJECTIVE + f Lcom/mojang/datafixers/DSL$TypeReference; I field_5714 TEAM + f Lcom/mojang/datafixers/DSL$TypeReference; J field_5711 RECIPE + f Lcom/mojang/datafixers/DSL$TypeReference; K field_5728 BIOME + f Lcom/mojang/datafixers/DSL$TypeReference; L field_43179 MULTI_NOISE_BIOME_SOURCE_PARAMETER_LIST + f Lcom/mojang/datafixers/DSL$TypeReference; M field_23067 WORLD_GEN_SETTINGS + f Lcom/mojang/datafixers/DSL$TypeReference; a field_5710 LEVEL + f Lcom/mojang/datafixers/DSL$TypeReference; b field_5715 PLAYER + f Lcom/mojang/datafixers/DSL$TypeReference; c field_5726 CHUNK + f Lcom/mojang/datafixers/DSL$TypeReference; d field_5722 HOTBAR + f Lcom/mojang/datafixers/DSL$TypeReference; e field_5717 OPTIONS + f Lcom/mojang/datafixers/DSL$TypeReference; f field_5716 STRUCTURE + f Lcom/mojang/datafixers/DSL$TypeReference; g field_5730 STATS + f Lcom/mojang/datafixers/DSL$TypeReference; h field_45090 SAVED_DATA_COMMAND_STORAGE + f Lcom/mojang/datafixers/DSL$TypeReference; i field_45091 SAVED_DATA_FORCED_CHUNKS + f Lcom/mojang/datafixers/DSL$TypeReference; j field_45092 SAVED_DATA_MAP_DATA + f Lcom/mojang/datafixers/DSL$TypeReference; k field_45093 SAVED_DATA_MAP_INDEX + f Lcom/mojang/datafixers/DSL$TypeReference; l field_45094 SAVED_DATA_RAIDS + f Lcom/mojang/datafixers/DSL$TypeReference; m field_45095 SAVED_DATA_RANDOM_SEQUENCES + f Lcom/mojang/datafixers/DSL$TypeReference; n field_45096 SAVED_DATA_STRUCTURE_FEATURE_INDICES + f Lcom/mojang/datafixers/DSL$TypeReference; o field_45097 SAVED_DATA_SCOREBOARD + f Lcom/mojang/datafixers/DSL$TypeReference; p field_5725 ADVANCEMENTS + f Lcom/mojang/datafixers/DSL$TypeReference; q field_19224 POI_CHUNK + f Lcom/mojang/datafixers/DSL$TypeReference; r field_26993 ENTITY_CHUNK + f Lcom/mojang/datafixers/DSL$TypeReference; s field_5727 BLOCK_ENTITY + f Lcom/mojang/datafixers/DSL$TypeReference; t field_5712 ITEM_STACK + f Lcom/mojang/datafixers/DSL$TypeReference; u field_5720 BLOCK_STATE + f Lcom/mojang/datafixers/DSL$TypeReference; v field_47727 FLAT_BLOCK_STATE + f Lcom/mojang/datafixers/DSL$TypeReference; w field_49205 DATA_COMPONENTS + f Lcom/mojang/datafixers/DSL$TypeReference; x field_51368 VILLAGER_TRADE + f Lcom/mojang/datafixers/DSL$TypeReference; y field_51369 PARTICLE + f Lcom/mojang/datafixers/DSL$TypeReference; z field_5719 ENTITY_NAME + m (Ljava/lang/String;)Lcom/mojang/datafixers/DSL$TypeReference; a method_59518 reference + m ()V + m ()V +c bgr$1 net/minecraft/class_1208$1 net/minecraft/util/datafix/fixes/References$1 + f Ljava/lang/String; a field_51348 val$id + m (Ljava/lang/String;)V +c bgs net/minecraft/class_8505 net/minecraft/util/datafix/fixes/RemapChunkStatusFix + f Ljava/lang/String; a field_44594 name + f Ljava/util/function/UnaryOperator; b field_44595 mapper + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_51290 method_51290 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_51291 fixStatus + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_51292 method_51292 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_51501 method_51501 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/function/UnaryOperator;)V +c bgt net/minecraft/class_9687 net/minecraft/util/datafix/fixes/RemoveEmptyItemInBrushableBlockFix + m (Lcom/mojang/serialization/Dynamic;)Z b method_59889 isEmptyStack + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bgu net/minecraft/class_5429 net/minecraft/util/datafix/fixes/RemoveGolemGossipFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_30326 fixValue + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_30327 method_30327 + m (Lcom/mojang/serialization/Dynamic;)Z b method_30328 method_30328 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bgv net/minecraft/class_9106 net/minecraft/util/datafix/fixes/RenameEnchantmentsFix + f Ljava/lang/String; a field_48315 name + f Ljava/util/Map; b field_48316 renames + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56055 method_56055 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_56056 method_56056 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56057 fixTag + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/DataResult$Error;)Lcom/mojang/serialization/Dynamic; a method_56058 method_56058 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_56059 method_56059 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_56060 fixEnchantmentList + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_56061 method_56061 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_56062 method_56062 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/DataResult$Error;)Lcom/mojang/serialization/Dynamic; b method_56063 method_56063 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; b method_56064 method_56064 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_56065 method_56065 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/Map;)V +c bgw net/minecraft/class_1207 net/minecraft/util/datafix/fixes/RenamedCoralFansFix + f Ljava/util/Map; a field_5709 RENAMED_IDS + m ()V + m ()V +c bgx net/minecraft/class_1210 net/minecraft/util/datafix/fixes/RenamedCoralFix + f Ljava/util/Map; a field_5733 RENAMED_IDS + m ()V + m ()V +c bgy net/minecraft/class_4285 net/minecraft/util/datafix/fixes/ReorganizePoi + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_20342 method_20342 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_20340 cap + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_20341 method_20341 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bgz net/minecraft/class_5947 net/minecraft/util/datafix/fixes/SavedDataFeaturePoolElementFix + f Ljava/util/regex/Pattern; a field_29545 INDEX_PATTERN + f Ljava/util/Set; b field_29546 PIECE_TYPE + f Ljava/util/Set; c field_29547 FEATURES + m (I)Ljava/lang/String; a method_49463 method_49463 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_34688 fixFeature + m (Lcom/mojang/serialization/Dynamic;[Ljava/lang/String;)Lcom/mojang/serialization/OptionalDynamic; a method_34689 get + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional; a method_34690 getReplacement + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_34691 updateChildren + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_34692 fixTag + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_34693 updateChildren + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_34694 method_34694 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_34695 method_34695 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bha net/minecraft/class_4964 net/minecraft/util/datafix/fixes/SavedDataUUIDFix + f Lorg/slf4j/Logger; b field_36330 LOGGER + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_26073 method_26073 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_26075 method_26075 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28254 method_28254 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_28255 method_28255 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_28256 method_28256 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_28257 method_28257 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; g method_28258 method_28258 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; h method_28259 method_28259 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bhb net/minecraft/class_8627 net/minecraft/util/datafix/fixes/ScoreboardDisplaySlotFix + f Ljava/util/Map; a field_45098 SLOT_RENAMES + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_52489 method_52489 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_52490 method_52490 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_52491 method_52491 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_52492 method_52492 + m (Ljava/lang/String;)Ljava/lang/String; a method_52493 rename + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_52494 method_52494 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_52495 method_52495 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bhc net/minecraft/class_1212 net/minecraft/util/datafix/fixes/SimpleEntityRenameFix + m (Ljava/lang/String;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/datafixers/util/Pair; a method_5164 getNewNameAndTag + m (Ljava/lang/String;Lcom/mojang/datafixers/schemas/Schema;Z)V +c bhd net/minecraft/class_1211 net/minecraft/util/datafix/fixes/SimplestEntityRenameFix + f Ljava/lang/String; a field_5734 name + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_5160 method_5160 + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_5159 method_5159 + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Ljava/lang/String;)Ljava/lang/String; a method_5161 method_5161 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_5162 method_5162 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_5158 method_5158 + m (Ljava/lang/String;)Ljava/lang/String; a method_5163 rename + m (Ljava/lang/String;Lcom/mojang/datafixers/schemas/Schema;Z)V +c bhe net/minecraft/class_6503 net/minecraft/util/datafix/fixes/SpawnerDataFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_37973 method_37973 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_37974 wrapEntityToSpawnData + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/datafixers/util/Pair; a method_37975 method_37975 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_37976 wrapSpawnPotentialsToWeightedEntries + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; c method_37977 method_37977 + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; d method_37978 method_37978 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhf net/minecraft/class_1214 net/minecraft/util/datafix/fixes/StatsCounterFix + f Ljava/util/Set; a field_45099 SPECIAL_OBJECTIVE_CRITERIA + f Ljava/util/Set; b field_5739 SKIP + f Ljava/util/Map; c field_5737 CUSTOM_MAP + f Ljava/lang/String; d field_29907 BLOCK_KEY + f Ljava/lang/String; e field_29908 NEW_BLOCK_KEY + f Ljava/util/Map; f field_5738 ITEM_KEYS + f Ljava/util/Map; g field_5736 ENTITY_KEYS + f Ljava/util/Map; h field_5735 ENTITIES + f Ljava/lang/String; i field_29909 NEW_CUSTOM_KEY + m ()Lcom/mojang/datafixers/TypeRewriteRule; a method_52496 makeStatFixer + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_52497 method_52497 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_52498 method_52498 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_52499 method_52499 + m (Ljava/lang/String;)Lbhf$a; a method_52500 unpackLegacyKey + m ()Lcom/mojang/datafixers/TypeRewriteRule; b method_52501 makeObjectiveFixer + m (Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_52502 method_52502 + m (Ljava/lang/String;)Ljava/lang/String; b method_5172 upgradeItem + m (Ljava/lang/String;)Ljava/lang/String; c method_5173 upgradeBlock + m (Ljava/lang/String;)Ljava/lang/String; d method_52505 method_52505 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bhf$a net/minecraft/class_1214$class_8628 net/minecraft/util/datafix/fixes/StatsCounterFix$StatType + f Ljava/lang/String; a comp_1585 type + f Ljava/lang/String; b comp_1586 typeKey + m ()Ljava/lang/String; a comp_1585 type + m ()Ljava/lang/String; b comp_1586 typeKey + m (Ljava/lang/String;Ljava/lang/String;)V +c bhg net/minecraft/class_1213 net/minecraft/util/datafix/fixes/StatsRenameFix + f Ljava/lang/String; a field_33560 name + f Ljava/util/Map; b field_33561 renames + m ()Lcom/mojang/datafixers/TypeRewriteRule; a method_37378 createCriteriaRule + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_37379 method_37379 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_37380 method_37380 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_37381 method_37381 + m (Ljava/lang/String;)Ljava/lang/String; a method_37382 method_37382 + m ()Lcom/mojang/datafixers/TypeRewriteRule; b method_37383 createStatRule + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_37384 method_37384 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_37385 method_37385 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_37386 method_37386 + m (Ljava/lang/String;)Ljava/lang/String; b method_37387 method_37387 + m ()Ljava/lang/IllegalStateException; c method_37388 method_37388 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Ljava/util/Map;)V +c bhh net/minecraft/class_5256 net/minecraft/util/datafix/fixes/StriderGravityFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_27789 fixTag + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bhi net/minecraft/class_4695 net/minecraft/util/datafix/fixes/StructureReferenceCountFix + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_23662 method_23662 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_23661 setCountToAtLeastOne + m (Ljava/lang/Integer;)Z a method_23663 method_23663 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_23664 method_23664 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bhj net/minecraft/class_6867 net/minecraft/util/datafix/fixes/StructureSettingsFlattenFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_40115 method_40115 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_40116 fixDimension + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_40117 fixStructures + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_40118 method_40118 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_40119 method_40119 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_40441 method_40441 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_40120 method_40120 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_40121 method_40121 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_40122 method_40122 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_54960 method_54960 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhk net/minecraft/class_7046 net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix + f Lorg/slf4j/Logger; a field_51349 LOGGER + f Ljava/util/Map; b field_37050 CONVERSION_MAP + m (Lbhk$a;Lit/unimi/dsi/fastutil/objects/Object2IntArrayMap;Lcom/mojang/serialization/Dynamic;)V a method_41009 method_41009 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_41012 fix + m (Lcom/mojang/serialization/Dynamic;Lbhk$a;)Ljava/util/Optional; a method_41013 guessConfiguration + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_41015 updateStarts + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_59519 method_59519 + m (Lcom/mojang/serialization/Dynamic;Ljava/util/HashMap;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)V a method_59520 method_59520 + m (Lbhk$a;Lit/unimi/dsi/fastutil/objects/Object2IntArrayMap;Lcom/mojang/serialization/Dynamic;)V b method_41017 method_41017 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_41020 updateReferences + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_59521 method_59521 + m (Lcom/mojang/serialization/Dynamic;Ljava/util/HashMap;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)V b method_59522 method_59522 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_41022 findUpdatedStructureType + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_41023 method_41023 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; e method_41024 method_41024 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; f method_41025 method_41025 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bhk$a net/minecraft/class_7046$class_7047 net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix$Conversion + f Ljava/util/Map; a comp_462 biomeMapping + f Ljava/lang/String; b comp_463 fallback + m ()Ljava/util/Map; a comp_462 biomeMapping + m (Lcom/google/common/collect/ImmutableMap$Builder;Ljava/util/Map$Entry;Ljava/lang/String;)V a method_41026 method_41026 + m (Ljava/lang/String;)Lbhk$a; a method_41027 trivial + m (Ljava/util/Map;)Ljava/util/Map; a method_41028 unpack + m (Ljava/util/Map;Ljava/lang/String;)Lbhk$a; a method_41029 biomeMapped + m ()Ljava/lang/String; b comp_463 fallback + m (Ljava/util/Map;Ljava/lang/String;)V +c bhl net/minecraft/class_1217 net/minecraft/util/datafix/fixes/TeamDisplayNameFix + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_5183 method_5183 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28260 method_28260 + m (Lcom/mojang/serialization/DynamicOps;)Ljava/util/function/Function; a method_28262 method_28262 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bhm net/minecraft/class_9269 net/minecraft/util/datafix/fixes/TippedArrowPotionToItemFix + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_57274 method_57274 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhn net/minecraft/class_1215 net/minecraft/util/datafix/fixes/TrappedChestBlockEntityFix + f Lorg/slf4j/Logger; a field_5740 LOGGER + f I b field_29910 SIZE + f S c field_29911 SIZE_BITS + m (IILit/unimi/dsi/fastutil/ints/IntSet;Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5174 method_5174 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5177 method_5177 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5175 method_5175 + m (Lcom/mojang/datafixers/types/templates/TaggedChoice$TaggedChoiceType;IILit/unimi/dsi/fastutil/ints/IntSet;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5176 method_5176 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_5178 method_5178 + m (Ljava/lang/String;)Ljava/lang/String; a method_5179 method_5179 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bhn$a net/minecraft/class_1215$class_1216 net/minecraft/util/datafix/fixes/TrappedChestBlockEntityFix$TrappedChestSection + f Lit/unimi/dsi/fastutil/ints/IntSet; h field_5741 chestIds + m (I)Z a method_5180 isTrappedChest + m (Lcom/mojang/datafixers/Typed;Lcom/mojang/datafixers/schemas/Schema;)V +c bho net/minecraft/class_9453 net/minecraft/util/datafix/fixes/TrialSpawnerConfigFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_58610 moveToConfigTag + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhp net/minecraft/class_7508 net/minecraft/util/datafix/fixes/VariantRenameFix + f Ljava/util/Map; a field_39407 renames + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_44198 method_44198 + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_44199 method_44199 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_44200 method_44200 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;Ljava/util/Map;)V +c bhq net/minecraft/class_3845 net/minecraft/util/datafix/fixes/VillagerDataFix + m (II)Ljava/lang/String; a method_16897 upgradeData + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)V +c bhr net/minecraft/class_5273 net/minecraft/util/datafix/fixes/VillagerFollowRangeFix + f D a field_29912 ORIGINAL_VALUE + f D b field_29913 NEW_BASE_VALUE + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_27914 fixValue + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28263 method_28263 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28264 method_28264 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhs net/minecraft/class_4300 net/minecraft/util/datafix/fixes/VillagerRebuildLevelAndXpFix + f I a field_29914 TRADES_PER_LEVEL + f [I b field_19285 LEVEL_XP_THRESHOLDS + m (I)I a method_20482 getMinXpPerLevel + m (ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28265 method_28265 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_20484 method_20484 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Ljava/lang/Integer; a method_20485 method_20485 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_20486 method_20486 + m (Lcom/mojang/datafixers/Typed;I)Lcom/mojang/datafixers/Typed; a method_20487 addLevel + m (ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_28266 method_28266 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Ljava/util/Optional; b method_20489 method_20489 + m (Lcom/mojang/datafixers/Typed;I)Lcom/mojang/datafixers/Typed; b method_20490 addXpFromLevel + m (ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28267 method_28267 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bht net/minecraft/class_1219 net/minecraft/util/datafix/fixes/VillagerTradeFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_5187 updateItemStack + m (Lcom/mojang/datafixers/OpticFinder;Ljava/util/function/Function;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_59638 method_59638 + m (Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/datafixers/util/Pair; a method_5190 method_5190 + m (Ljava/lang/String;)Ljava/lang/String; a method_5192 method_5192 + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; b method_59639 method_59639 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhu net/minecraft/class_4754 net/minecraft/util/datafix/fixes/WallPropertyFix + f Ljava/util/Set; a field_21960 WALL_BLOCKS + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_24325 method_24325 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_24323 upgradeBlockStateTag + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic; a method_24324 fixWallProperty + m (Ljava/lang/String;)Ljava/lang/String; a method_24326 mapProperty + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_24327 method_24327 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_24328 method_24328 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V + m ()V +c bhv net/minecraft/class_6858 net/minecraft/util/datafix/fixes/WeaponSmithChestLootTableFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_40070 method_40070 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bhw net/minecraft/class_6638 net/minecraft/util/datafix/fixes/WorldGenSettingsDisallowOldCustomWorldsFix + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_38821 method_38821 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_38822 method_38822 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/DataResult; a method_38823 method_38823 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)V a method_38824 method_38824 + m (Ljava/util/Map;)Ljava/util/Map; a method_38825 method_38825 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhx net/minecraft/class_5299 net/minecraft/util/datafix/fixes/WorldGenSettingsFix + f Ljava/lang/String; a field_29915 VILLAGE + f Ljava/lang/String; b field_29916 DESERT_PYRAMID + f Ljava/lang/String; c field_29917 IGLOO + f Ljava/lang/String; d field_29918 JUNGLE_TEMPLE + f Ljava/lang/String; e field_29919 SWAMP_HUT + f Ljava/lang/String; f field_29920 PILLAGER_OUTPOST + f Ljava/lang/String; g field_29921 END_CITY + f Ljava/lang/String; h field_29922 WOODLAND_MANSION + f Ljava/lang/String; i field_29923 OCEAN_MONUMENT + f Lcom/google/common/collect/ImmutableMap; j field_24647 DEFAULTS + m (JLcom/mojang/serialization/DynamicLike;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28268 noise + m (Lcom/google/common/collect/ImmutableMap$Builder;Lcom/mojang/serialization/DynamicOps;Ljava/lang/String;)V a method_28269 method_28269 + m (Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_28270 method_28270 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_28271 fix + m (Lcom/mojang/serialization/Dynamic;J)Lcom/mojang/serialization/Dynamic; a method_29916 defaultOverworld + m (Lcom/mojang/serialization/Dynamic;JLcom/mojang/serialization/Dynamic;Z)Ljava/lang/Object; a method_29917 vanillaLevels + m (Lcom/mojang/serialization/Dynamic;JZZ)Lcom/mojang/serialization/Dynamic; a method_28272 vanillaBiomeSource + m (Lcom/mojang/serialization/Dynamic;Lorg/apache/commons/lang3/mutable/MutableBoolean;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Ljava/util/Map;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)V a method_28273 method_28273 + m (Lcom/mojang/serialization/Dynamic;Lorg/apache/commons/lang3/mutable/MutableBoolean;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Ljava/util/Map;Ljava/util/Map;)V a method_28274 method_28274 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/OptionalDynamic;)Ljava/util/Map; a method_28275 fixFlatStructures + m (Lcom/mojang/serialization/DynamicOps;Ljava/util/Map$Entry;)Lcom/mojang/serialization/Dynamic; a method_28276 method_28276 + m (Lcom/mojang/serialization/OptionalDynamic;Ljava/util/Map$Entry;)Lcom/mojang/serialization/Dynamic; a method_28277 method_28277 + m (Ljava/lang/String;)Ljava/lang/String; a method_28278 method_28278 + m (Ljava/lang/String;I)I a method_28279 getInt + m (Ljava/lang/String;II)I a method_28280 getInt + m (Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;I)V a method_28281 setSpacing + m (Ljava/util/Optional;Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; a method_28282 method_28282 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Ljava/util/Map;Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)V a method_28283 method_28283 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableInt;Ljava/util/Map;Ljava/util/Map;)V a method_28284 method_28284 + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; b method_28285 method_28285 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_28286 method_28286 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_30075 method_30075 + m (Lcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bhx$a net/minecraft/class_5299$class_5300 net/minecraft/util/datafix/fixes/WorldGenSettingsFix$StructureFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24648 CODEC + f I b field_24649 spacing + f I c field_24650 separation + f I d field_24651 salt + m (Lbhx$a;)Ljava/lang/Integer; a method_28292 method_28292 + m (Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/Dynamic; a method_28288 serialize + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28289 method_28289 + m (Lbhx$a;)Ljava/lang/Integer; b method_28293 method_28293 + m (Lbhx$a;)Ljava/lang/Integer; c method_28294 method_28294 + m (III)V + m ()V +c bhy net/minecraft/class_6639 net/minecraft/util/datafix/fixes/WorldGenSettingsHeightAndBiomeFix + f Ljava/lang/String; a field_35030 WAS_PREVIOUSLY_INCREASED_KEY + f Ljava/lang/String; b field_35031 NAME + m (Lcom/mojang/datafixers/OpticFinder;Lcom/mojang/datafixers/types/Type;Lcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_38827 method_38827 + m (Lcom/mojang/datafixers/types/Type;ZZLcom/mojang/datafixers/Typed;)Lcom/mojang/datafixers/Typed; a method_54967 method_54967 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_38828 updateLayers + m (ZLorg/apache/commons/lang3/mutable/MutableBoolean;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_54968 method_54968 + m (ZZLcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_38831 method_38831 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_54969 method_54969 + m (ZZLcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_38834 method_38834 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_54970 method_54970 + m (ZZLcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; c method_54971 method_54971 + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; d method_38836 method_38836 + m (Lcom/mojang/datafixers/schemas/Schema;)V +c bhz net/minecraft/class_1218 net/minecraft/util/datafix/fixes/WriteAndReadFix + f Ljava/lang/String; a field_5742 name + f Lcom/mojang/datafixers/DSL$TypeReference; b field_5743 type + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;Lcom/mojang/datafixers/DSL$TypeReference;)V +c bia net/minecraft/class_4301 net/minecraft/util/datafix/fixes/ZombieVillagerRebuildXpFix + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_20492 method_20492 + m (Lcom/mojang/datafixers/schemas/Schema;Z)V +c bib net/minecraft/class_5997 net/minecraft/util/datafix/fixes/package-info +c bic net/minecraft/class_5998 net/minecraft/util/datafix/package-info +c bid net/minecraft/class_1220 net/minecraft/util/datafix/schemas/NamespacedSchema + f Lcom/mojang/serialization/codecs/PrimitiveCodec; a field_24652 NAMESPACED_STRING_CODEC + f Lcom/mojang/datafixers/types/Type; b field_24653 NAMESPACED_STRING + m ()Lcom/mojang/datafixers/types/Type; a method_28295 namespacedString + m (Ljava/lang/String;)Ljava/lang/String; a method_5193 ensureNamespaced + m (ILcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bid$1 net/minecraft/class_1220$1 net/minecraft/util/datafix/schemas/NamespacedSchema$1 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/String;)Ljava/lang/Object; a method_28296 write + m ()V +c bie net/minecraft/class_1222 net/minecraft/util/datafix/schemas/V100 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5196 equipment + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59640 method_59640 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5195 registerMob + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5201 method_5201 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5199 method_5199 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5200 method_5200 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5197 method_5197 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_5198 method_5198 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bif net/minecraft/class_1221 net/minecraft/util/datafix/schemas/V102 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5194 method_5194 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c big net/minecraft/class_1224 net/minecraft/util/datafix/schemas/V1022 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5204 method_5204 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5203 method_5203 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5205 method_5205 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bih net/minecraft/class_1223 net/minecraft/util/datafix/schemas/V106 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5202 method_5202 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bii net/minecraft/class_1226 net/minecraft/util/datafix/schemas/V107 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bij net/minecraft/class_1225 net/minecraft/util/datafix/schemas/V1125 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5206 method_5206 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5208 method_5208 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5207 method_5207 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bik net/minecraft/class_1228 net/minecraft/util/datafix/schemas/V135 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5209 method_5209 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5210 method_5210 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bil net/minecraft/class_1227 net/minecraft/util/datafix/schemas/V143 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bim net/minecraft/class_1230 net/minecraft/util/datafix/schemas/V1451 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5212 method_5212 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bin net/minecraft/class_1229 net/minecraft/util/datafix/schemas/V1451_1 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5211 method_5211 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bio net/minecraft/class_1232 net/minecraft/util/datafix/schemas/V1451_2 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5225 method_5225 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bip net/minecraft/class_1231 net/minecraft/util/datafix/schemas/V1451_3 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5221 method_5221 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5217 method_5217 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5224 method_5224 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5216 method_5216 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_5222 method_5222 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5223 method_5223 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_5218 method_5218 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_5219 method_5219 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; h method_5214 method_5214 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; i method_5213 method_5213 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; j method_5220 method_5220 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; k method_5215 method_5215 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c biq net/minecraft/class_1234 net/minecraft/util/datafix/schemas/V1451_4 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5226 method_5226 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bir net/minecraft/class_1233 net/minecraft/util/datafix/schemas/V1451_5 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bis net/minecraft/class_1236 net/minecraft/util/datafix/schemas/V1451_6 + f Ljava/lang/String; b field_34013 SPECIAL_OBJECTIVE_MARKER + f Lcom/mojang/datafixers/types/templates/Hook$HookFunction; c field_34014 UNPACK_OBJECTIVE_ID + f Lcom/mojang/datafixers/types/templates/Hook$HookFunction; d field_34015 REPACK_OBJECTIVE_ID + m (Lcom/mojang/datafixers/schemas/Schema;)Ljava/util/Map; a method_37389 createCriterionTypes + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/function/Supplier;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5229 method_5229 + m (Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_37390 method_37390 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_37391 method_37391 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_37392 method_37392 + m (Ljava/lang/String;)Ljava/lang/String; b method_52506 packNamespacedWithDot + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_37393 method_37393 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_37394 method_37394 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_37395 method_37395 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5228 method_5228 + m (ILcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bis$1 net/minecraft/class_1236$1 net/minecraft/util/datafix/schemas/V1451_6$1 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/datafixers/util/Pair;)Lcom/mojang/serialization/Dynamic; a method_37396 method_37396 + m (Ljava/lang/String;)Lcom/mojang/datafixers/util/Pair; a method_37397 method_37397 + m ()V +c bis$2 net/minecraft/class_1236$2 net/minecraft/util/datafix/schemas/V1451_6$2 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_37398 method_37398 + m (Lcom/mojang/serialization/Dynamic;Lcom/mojang/serialization/Dynamic;)Ljava/util/Optional; b method_37400 method_37400 + m ()V +c bit net/minecraft/class_1238 net/minecraft/util/datafix/schemas/V1460 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; A method_59641 method_59641 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59642 method_59642 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5270 method_5270 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5261 method_5261 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5232 registerMob + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/function/Supplier;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5235 method_5235 + m (Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_37401 method_37401 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_59643 method_59643 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_31467 method_31467 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5250 method_5250 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V b method_5273 registerInventory + m (Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5236 method_5236 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5251 method_5251 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_37402 method_37402 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5241 method_5241 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_5248 method_5248 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_5240 method_5240 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_59644 method_59644 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5257 method_5257 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_52507 method_52507 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5271 method_5271 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_5274 method_5274 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_5243 method_5243 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_5256 method_5256 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_5268 method_5268 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_5253 method_5253 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_5244 method_5244 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; h method_5276 method_5276 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; h method_5277 method_5277 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; i method_5237 method_5237 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; i method_5262 method_5262 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; j method_5259 method_5259 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; j method_5247 method_5247 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; k method_5266 method_5266 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; k method_5279 method_5279 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; l method_5239 method_5239 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; l method_5249 method_5249 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; m method_5260 method_5260 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; m method_5263 method_5263 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; n method_5267 method_5267 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; n method_5278 method_5278 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; o method_5242 method_5242 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; o method_5245 method_5245 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; p method_5258 method_5258 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; q method_5272 method_5272 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; r method_5238 method_5238 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; s method_5252 method_5252 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; t method_5275 method_5275 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; u method_5233 method_5233 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; v method_5255 method_5255 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; w method_5264 method_5264 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; x method_5234 method_5234 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; y method_5246 method_5246 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; z method_5265 method_5265 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c biu net/minecraft/class_1237 net/minecraft/util/datafix/schemas/V1466 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5231 method_5231 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c biv net/minecraft/class_1240 net/minecraft/util/datafix/schemas/V1470 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5281 method_5281 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5282 method_5282 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5280 registerMob + m (ILcom/mojang/datafixers/schemas/Schema;)V +c biw net/minecraft/class_1239 net/minecraft/util/datafix/schemas/V1481 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bix net/minecraft/class_1242 net/minecraft/util/datafix/schemas/V1483 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c biy net/minecraft/class_1241 net/minecraft/util/datafix/schemas/V1486 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c biz net/minecraft/class_1243 net/minecraft/util/datafix/schemas/V1510 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bja net/minecraft/class_1245 net/minecraft/util/datafix/schemas/V1800 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48135 method_48135 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5287 method_5287 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjb net/minecraft/class_1244 net/minecraft/util/datafix/schemas/V1801 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48136 method_48136 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjc net/minecraft/class_3686 net/minecraft/util/datafix/schemas/V1904 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48137 method_48137 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjd net/minecraft/class_3687 net/minecraft/util/datafix/schemas/V1906 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_16053 method_16053 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_16054 method_16054 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_16052 registerInventory + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bje net/minecraft/class_3743 net/minecraft/util/datafix/schemas/V1909 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_55641 method_55641 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjf net/minecraft/class_3905 net/minecraft/util/datafix/schemas/V1920 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_17342 method_17342 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_17343 registerInventory + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjg net/minecraft/class_3984 net/minecraft/util/datafix/schemas/V1928 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_17999 method_17999 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_17998 registerMob + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjh net/minecraft/class_3985 net/minecraft/util/datafix/schemas/V1929 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_18000 method_18000 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_18001 method_18001 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bji net/minecraft/class_4016 net/minecraft/util/datafix/schemas/V1931 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48138 method_48138 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjj net/minecraft/class_4465 net/minecraft/util/datafix/schemas/V2100 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_21745 method_21745 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_21746 registerMob + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_21747 method_21747 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjk net/minecraft/class_4755 net/minecraft/util/datafix/schemas/V2501 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_24329 method_24329 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_24330 registerFurnace + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjl net/minecraft/class_4756 net/minecraft/util/datafix/schemas/V2502 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48139 method_48139 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjm net/minecraft/class_4804 net/minecraft/util/datafix/schemas/V2505 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48140 method_48140 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjn net/minecraft/class_4847 net/minecraft/util/datafix/schemas/V2509 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48141 method_48141 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjo net/minecraft/class_4979 net/minecraft/util/datafix/schemas/V2519 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48142 method_48142 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjp net/minecraft/class_5130 net/minecraft/util/datafix/schemas/V2522 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48143 method_48143 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjq net/minecraft/class_5301 net/minecraft/util/datafix/schemas/V2551 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_28297 method_28297 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_28298 method_28298 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_28299 method_28299 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_28300 method_28300 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_28301 method_28301 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_28302 method_28302 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjr net/minecraft/class_5416 net/minecraft/util/datafix/schemas/V2568 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48144 method_48144 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjs net/minecraft/class_5999 net/minecraft/util/datafix/schemas/V2571 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48145 method_48145 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjt net/minecraft/class_5701 net/minecraft/util/datafix/schemas/V2684 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_42640 method_42640 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_42641 method_42641 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bju net/minecraft/class_5752 net/minecraft/util/datafix/schemas/V2686 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48146 method_48146 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjv net/minecraft/class_5775 net/minecraft/util/datafix/schemas/V2688 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48147 method_48147 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48148 method_48148 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjw net/minecraft/class_6000 net/minecraft/util/datafix/schemas/V2704 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48149 method_48149 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjx net/minecraft/class_6332 net/minecraft/util/datafix/schemas/V2707 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjy net/minecraft/class_6504 net/minecraft/util/datafix/schemas/V2831 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_37979 method_37979 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bjz net/minecraft/class_6640 net/minecraft/util/datafix/schemas/V2832 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_38837 method_38837 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_49773 method_49773 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_38838 method_38838 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_38839 method_38839 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_38840 method_38840 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_38841 method_38841 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_38842 method_38842 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_38843 method_38843 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bka net/minecraft/class_6743 net/minecraft/util/datafix/schemas/V2842 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_39276 method_39276 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkb net/minecraft/class_7092 net/minecraft/util/datafix/schemas/V3076 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkc net/minecraft/class_7093 net/minecraft/util/datafix/schemas/V3078 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_42642 method_42642 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_41318 registerMob + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_41317 method_41317 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkd net/minecraft/class_7245 net/minecraft/util/datafix/schemas/V3081 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48150 method_48150 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bke net/minecraft/class_7246 net/minecraft/util/datafix/schemas/V3082 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_42125 method_42125 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkf net/minecraft/class_7294 net/minecraft/util/datafix/schemas/V3083 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_57275 method_57275 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkg net/minecraft/class_7684 net/minecraft/util/datafix/schemas/V3202 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkh net/minecraft/class_7685 net/minecraft/util/datafix/schemas/V3203 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48151 method_48151 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bki net/minecraft/class_7686 net/minecraft/util/datafix/schemas/V3204 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48152 method_48152 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkj net/minecraft/class_8106 net/minecraft/util/datafix/schemas/V3325 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48783 method_48783 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_48784 method_48784 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkk net/minecraft/class_8146 net/minecraft/util/datafix/schemas/V3326 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_49100 method_49100 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkl net/minecraft/class_8147 net/minecraft/util/datafix/schemas/V3327 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_49101 method_49101 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_49102 method_49102 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkm net/minecraft/class_8148 net/minecraft/util/datafix/schemas/V3328 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkn net/minecraft/class_8224 net/minecraft/util/datafix/schemas/V3438 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bko net/minecraft/class_8506 net/minecraft/util/datafix/schemas/V3448 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_51293 method_51293 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkp net/minecraft/class_8879 net/minecraft/util/datafix/schemas/V3682 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_54451 method_54451 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkq net/minecraft/class_8880 net/minecraft/util/datafix/schemas/V3683 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_54452 method_54452 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkr net/minecraft/class_8920 net/minecraft/util/datafix/schemas/V3685 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_54742 abstractArrow + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_54743 method_54743 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_54744 method_54744 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_54745 method_54745 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bks net/minecraft/class_8945 net/minecraft/util/datafix/schemas/V3689 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_54974 method_54974 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_54975 method_54975 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkt net/minecraft/class_9061 net/minecraft/util/datafix/schemas/V3799 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_55642 method_55642 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bku net/minecraft/class_9184 net/minecraft/util/datafix/schemas/V3807 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_56646 method_56646 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkv net/minecraft/class_9185 net/minecraft/util/datafix/schemas/V3808 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_56647 method_56647 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkw net/minecraft/class_9186 net/minecraft/util/datafix/schemas/V3808_1 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_56648 method_56648 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkx net/minecraft/class_9688 net/minecraft/util/datafix/schemas/V3808_2 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59893 method_59893 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bky net/minecraft/class_9253 net/minecraft/util/datafix/schemas/V3816 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_57077 method_57077 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bkz net/minecraft/class_9270 net/minecraft/util/datafix/schemas/V3818 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_57276 method_57276 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bla net/minecraft/class_9271 net/minecraft/util/datafix/schemas/V3818_3 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_57277 method_57277 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c blb net/minecraft/class_9272 net/minecraft/util/datafix/schemas/V3818_4 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_57278 method_57278 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c blc net/minecraft/class_9651 net/minecraft/util/datafix/schemas/V3818_5 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59645 method_59645 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bld net/minecraft/class_9454 net/minecraft/util/datafix/schemas/V3825 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_58611 method_58611 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c ble net/minecraft/class_9690 net/minecraft/util/datafix/schemas/V3938 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59913 abstractArrow + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_59914 method_59914 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_59915 method_59915 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c blf net/minecraft/class_1247 net/minecraft/util/datafix/schemas/V501 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48153 method_48153 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c blg net/minecraft/class_1246 net/minecraft/util/datafix/schemas/V700 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_48154 method_48154 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c blh net/minecraft/class_1249 net/minecraft/util/datafix/schemas/V701 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5295 method_5295 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5294 registerMob + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bli net/minecraft/class_1248 net/minecraft/util/datafix/schemas/V702 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59814 method_59814 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59815 method_59815 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c blj net/minecraft/class_1251 net/minecraft/util/datafix/schemas/V703 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5304 method_5304 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5308 method_5308 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5306 method_5306 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_5305 method_5305 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5307 method_5307 + m (ILcom/mojang/datafixers/schemas/Schema;)V +c blk net/minecraft/class_1250 net/minecraft/util/datafix/schemas/V704 + f Ljava/util/Map; a field_5744 ITEM_TO_BLOCKENTITY + f Lcom/mojang/datafixers/types/templates/Hook$HookFunction; b field_5745 ADD_NAMES + m ()Lcom/google/common/collect/ImmutableMap; a method_5297 method_5297 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5300 method_5300 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5298 method_5298 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59523 method_59523 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5296 registerInventory + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5303 method_5303 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5301 method_5301 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5302 method_5302 + m (ILcom/mojang/datafixers/schemas/Schema;)V + m ()V +c blk$1 net/minecraft/class_1250$1 net/minecraft/util/datafix/schemas/V704$1 + m ()V +c bll net/minecraft/class_1253 net/minecraft/util/datafix/schemas/V705 + f Lcom/mojang/datafixers/types/templates/Hook$HookFunction; b field_5746 ADD_NAMES + f Ljava/util/Map; c field_49717 ITEM_TO_ENTITY + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5319 method_5319 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5326 method_5326 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5311 registerMob + m (Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5315 method_5315 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5336 method_5336 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_59646 method_59646 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V b method_5330 registerThrowableProjectile + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5329 method_5329 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5332 method_5332 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_5320 method_5320 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5327 method_5327 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_5312 method_5312 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_5322 method_5322 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; h method_5333 method_5333 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; i method_5316 method_5316 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; j method_5324 method_5324 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; k method_5337 method_5337 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; l method_5325 method_5325 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; m method_5318 method_5318 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; n method_5335 method_5335 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; o method_5323 method_5323 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; p method_5313 method_5313 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; q method_5328 method_5328 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; r method_5317 method_5317 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; s method_5334 method_5334 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; t method_5331 method_5331 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; u method_5314 method_5314 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; v method_5338 method_5338 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; w method_5321 method_5321 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; x method_59647 method_59647 + m (ILcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bll$1 net/minecraft/class_1253$1 net/minecraft/util/datafix/schemas/V705$1 + m ()V +c blm net/minecraft/class_1252 net/minecraft/util/datafix/schemas/V808 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5310 method_5310 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5309 registerInventory + m (ILcom/mojang/datafixers/schemas/Schema;)V +c bln net/minecraft/class_1254 net/minecraft/util/datafix/schemas/V99 + f Ljava/util/Map; a field_49718 ITEM_TO_ENTITY + f Lcom/mojang/datafixers/types/templates/Hook$HookFunction; b field_5747 ADD_NAMES + f Lorg/slf4j/Logger; c field_5749 LOGGER + f Ljava/util/Map; d field_5748 ITEM_TO_BLOCKENTITY + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_59648 method_59648 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5353 equipment + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5365 method_5365 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5347 method_5347 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V a method_5339 registerMob + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Map;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5371 method_5371 + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Map;Ljava/util/Map;)Ljava/lang/Object; a method_5359 addNames + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Map;Ljava/util/Map;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_5357 method_5357 + m (Ljava/util/HashMap;)V a method_5344 method_5344 + m (Ljava/util/Map;)Lcom/mojang/datafixers/types/templates/TypeTemplate; a method_5348 method_5348 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5373 method_5373 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_59649 method_59649 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; b method_5372 method_5372 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V b method_5368 registerThrowableProjectile + m (Lcom/mojang/serialization/Dynamic;Ljava/util/Map;Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_5375 method_5375 + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5341 method_5341 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_31468 method_31468 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; c method_5354 method_5354 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V c method_5377 registerMinecart + m ()Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_5369 method_5369 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_52508 method_52508 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; d method_59650 method_59650 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/util/Map;Ljava/lang/String;)V d method_5346 registerInventory + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5379 method_5379 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; e method_5366 method_5366 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_5364 method_5364 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; f method_5340 method_5340 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_5355 method_5355 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; g method_5356 method_5356 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; h method_5378 method_5378 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; h method_5374 method_5374 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; i method_5370 method_5370 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; i method_5349 method_5349 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; j method_5350 method_5350 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; j method_5362 method_5362 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; k method_5343 method_5343 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; k method_5381 method_5381 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; l method_5360 method_5360 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; l method_5363 method_5363 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; m method_5352 method_5352 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; m method_5351 method_5351 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; n method_5345 method_5345 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; n method_5376 method_5376 + m (Lcom/mojang/datafixers/schemas/Schema;)Lcom/mojang/datafixers/types/templates/TypeTemplate; o method_5361 method_5361 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; o method_5358 method_5358 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; p method_5342 method_5342 + m (Lcom/mojang/datafixers/schemas/Schema;Ljava/lang/String;)Lcom/mojang/datafixers/types/templates/TypeTemplate; q method_5367 method_5367 + m (ILcom/mojang/datafixers/schemas/Schema;)V + m ()V +c bln$1 net/minecraft/class_1254$1 net/minecraft/util/datafix/schemas/V99$1 + m ()V +c blo net/minecraft/class_6001 net/minecraft/util/datafix/schemas/package-info +c blp net/minecraft/class_9187 net/minecraft/util/debugchart/AbstractSampleLogger + f [J a field_48806 defaults + f [J b field_48807 sample + m ()V a method_56649 useSample + m ()V b method_56651 resetSample + m (I[J)V +c blq net/minecraft/class_9188 net/minecraft/util/debugchart/DebugSampleSubscriptionTracker + f I a field_48808 STOP_SENDING_AFTER_TICKS + f I b field_48809 STOP_SENDING_AFTER_MS + f Laur; c field_48810 playerList + f Ljava/util/EnumMap; d field_48811 subscriptions + f Ljava/util/Queue; e field_48812 subscriptionRequestQueue + m (I)V a method_56652 tick + m (IJLjava/util/Map$Entry;)Z a method_56653 method_56653 + m (JI)V a method_56654 handleSubscriptions + m (Lacv;)V a method_56655 broadcast + m (Laqv;Lbls;)V a method_56656 subscribe + m (Lbls;)Z a method_56657 shouldLogSamples + m (JI)V b method_56658 handleUnsubscriptions + m (Laur;)V +c blq$a net/minecraft/class_9188$class_9189 net/minecraft/util/debugchart/DebugSampleSubscriptionTracker$SubscriptionRequest + f Laqv; a comp_2288 player + f Lbls; b comp_2289 sampleType + m ()Laqv; a comp_2288 player + m ()Lbls; b comp_2289 sampleType + m (Laqv;Lbls;)V +c blq$b net/minecraft/class_9188$class_9190 net/minecraft/util/debugchart/DebugSampleSubscriptionTracker$SubscriptionStartedAt + f J a comp_2290 millis + f I b comp_2291 tick + m ()J a comp_2290 millis + m ()I b comp_2291 tick + m (JI)V +c blr net/minecraft/class_9191 net/minecraft/util/debugchart/LocalSampleLogger + f I c field_48813 CAPACITY + f [[J d field_48814 samples + f I e field_48815 start + f I f field_48816 size + m (I)I b method_56661 wrapIndex + m (I)V + m (I[J)V +c bls net/minecraft/class_9192 net/minecraft/util/debugchart/RemoteDebugSampleType + f Lbls; a field_48817 TICK_TIME + f [Lbls; b field_48818 $VALUES + m ()[Lbls; a method_56665 $values + m (Ljava/lang/String;I)V + m ()V +c blt net/minecraft/class_9193 net/minecraft/util/debugchart/RemoteSampleLogger + f Lblq; c field_48819 subscriptionTracker + f Lbls; d field_48820 sampleType + m (ILblq;Lbls;)V + m (ILblq;Lbls;[J)V +c blu net/minecraft/class_8743 net/minecraft/util/debugchart/SampleLogger + m (J)V a method_53066 logSample + m (JI)V a method_56535 logPartialSample + m ([J)V a method_56650 logFullSample +c blv net/minecraft/class_9194 net/minecraft/util/debugchart/SampleStorage + m (I)J a method_56659 get + m (II)J a method_56660 get + m ()I c method_56662 capacity + m ()I d method_56663 size + m ()V e method_56664 reset +c blw net/minecraft/class_9160 net/minecraft/util/debugchart/TpsDebugDimensions + f Lblw; a field_48718 FULL_TICK + f Lblw; b field_48719 TICK_SERVER_METHOD + f Lblw; c field_48720 SCHEDULED_TASKS + f Lblw; d field_48721 IDLE + f [Lblw; e field_48722 $VALUES + m ()[Lblw; a method_56536 $values + m (Ljava/lang/String;I)V + m ()V +c blx net/minecraft/class_7929 net/minecraft/util/eventlog/EventLogDirectory + f Lorg/slf4j/Logger; a field_41288 LOGGER + f I b field_41289 COMPRESS_BUFFER_SIZE + f Ljava/lang/String; c field_41290 COMPRESSED_EXTENSION + f Ljava/nio/file/Path; d field_41291 root + f Ljava/lang/String; e field_41292 extension + m ()Lblx$d; a method_47549 listFiles + m (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/file/Path;)V a method_47550 writeCompressed + m (Ljava/nio/file/Path;)Lblx$b; a method_47551 parseFile + m (Ljava/nio/file/Path;Ljava/lang/String;)Lblx; a method_47552 open + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)V a method_47553 tryCompress + m (Ljava/time/LocalDate;)Lblx$e; a method_47554 createNewFile + m (Ljava/nio/file/Path;)Z b method_47555 method_47555 + m (Ljava/nio/file/Path;Ljava/lang/String;)V + m ()V +c blx$a net/minecraft/class_7929$class_7930 net/minecraft/util/eventlog/EventLogDirectory$CompressedFile + f Ljava/nio/file/Path; a comp_1156 path + f Lblx$c; b comp_1157 id + m (Ljava/nio/file/Path;Lblx$c;)V +c blx$b net/minecraft/class_7929$class_7931 net/minecraft/util/eventlog/EventLogDirectory$File + m ()Ljava/io/Reader; a method_47556 openReader + m ()Lblx$a; b method_47557 compress + m ()Ljava/nio/file/Path; c comp_1156 path + m ()Lblx$c; d comp_1157 id +c blx$c net/minecraft/class_7929$class_7932 net/minecraft/util/eventlog/EventLogDirectory$FileId + f Ljava/time/LocalDate; a comp_1158 date + f I b comp_1159 index + f Ljava/time/format/DateTimeFormatter; c field_41293 DATE_FORMATTER + m ()Ljava/time/LocalDate; a comp_1158 date + m (Ljava/lang/String;)Lblx$c; a method_47558 parse + m ()I b comp_1159 index + m (Ljava/lang/String;)Ljava/lang/String; b method_47559 toFileName + m (Ljava/time/LocalDate;I)V + m ()V +c blx$d net/minecraft/class_7929$class_7933 net/minecraft/util/eventlog/EventLogDirectory$FileList + f Ljava/util/List; a field_41294 files + m ()Lblx$d; a method_47560 compressAll + m (ILjava/time/LocalDate;Lblx$b;)Z a method_47561 method_47561 + m (Ljava/time/LocalDate;I)Lblx$d; a method_47562 prune + m ()Ljava/util/stream/Stream; b method_47563 stream + m ()Ljava/util/Set; c method_47564 ids + m (Ljava/util/List;)V +c blx$e net/minecraft/class_7929$class_7934 net/minecraft/util/eventlog/EventLogDirectory$RawFile + f Ljava/nio/file/Path; a comp_1156 path + f Lblx$c; b comp_1157 id + m ()Ljava/nio/channels/FileChannel; e method_47565 openChannel + m (Ljava/nio/file/Path;Lblx$c;)V +c bly net/minecraft/class_7935 net/minecraft/util/eventlog/JsonEventLog + f Lcom/google/gson/Gson; a field_41295 GSON + f Lcom/mojang/serialization/Codec; b field_41296 codec + f Ljava/nio/channels/FileChannel; c field_41297 channel + f Ljava/util/concurrent/atomic/AtomicInteger; d field_41298 referenceCount + m ()Lblz; a method_47566 openReader + m (Lcom/mojang/serialization/Codec;Ljava/nio/file/Path;)Lbly; a method_47567 open + m (Ljava/lang/Object;)V a method_47568 write + m ()V b method_47569 releaseReference + m (Lcom/mojang/serialization/Codec;Ljava/nio/channels/FileChannel;)V + m ()V +c bly$1 net/minecraft/class_7935$1 net/minecraft/util/eventlog/JsonEventLog$1 + f Lblz; a field_41299 val$reader + f Lbly; b field_41300 field_41300 + f J c field_41301 position + m (Lbly;Lblz;)V +c blz net/minecraft/class_7936 net/minecraft/util/eventlog/JsonEventLogReader + m ()Ljava/lang/Object; a method_47570 next + m (Lcom/mojang/serialization/Codec;Ljava/io/Reader;)Lblz; a method_47571 create +c blz$1 net/minecraft/class_7936$1 net/minecraft/util/eventlog/JsonEventLogReader$1 + f Lcom/google/gson/stream/JsonReader; a field_41302 val$jsonReader + f Lcom/mojang/serialization/Codec; b field_41303 val$codec + m (Lcom/google/gson/stream/JsonReader;Lcom/mojang/serialization/Codec;)V +c bma net/minecraft/class_7937 net/minecraft/util/eventlog/package-info +c bmb net/minecraft/class_5169 net/minecraft/util/monitoring/jmx/MinecraftServerStatistics + f Lorg/slf4j/Logger; a field_23970 LOGGER + f Lnet/minecraft/server/MinecraftServer; b field_23971 server + f Ljavax/management/MBeanInfo; c field_23972 mBeanInfo + f Ljava/util/Map; d field_23973 attributeDescriptionByName + m ()F a method_27177 getAverageTickTime + m (I)[Ljavax/management/MBeanAttributeInfo; a method_27178 method_27178 + m (Lbmb$a;)Ljavax/management/Attribute; a method_27179 method_27179 + m (Lnet/minecraft/server/MinecraftServer;)V a method_27181 registerJmxMonitoring + m ()[J b method_27182 getTickTimes + m (Lbmb$a;)Ljava/lang/String; b method_27183 method_27183 + m (Lnet/minecraft/server/MinecraftServer;)V + m ()V +c bmb$a net/minecraft/class_5169$class_5170 net/minecraft/util/monitoring/jmx/MinecraftServerStatistics$AttributeDescription + f Ljava/lang/String; a field_23974 name + f Ljava/util/function/Supplier; b field_23975 getter + f Ljava/lang/String; c field_23976 description + f Ljava/lang/Class; d field_23977 type + m ()Ljavax/management/MBeanAttributeInfo; a method_27184 asMBeanAttributeInfo + m (Ljava/lang/String;Ljava/util/function/Supplier;Ljava/lang/String;Ljava/lang/Class;)V +c bmc net/minecraft/class_6641 net/minecraft/util/monitoring/jmx/package-info +c bmd net/minecraft/class_6002 net/minecraft/util/package-info +c bme net/minecraft/class_9386 net/minecraft/util/parsing/package-info +c bmf net/minecraft/class_9387 net/minecraft/util/parsing/packrat/Atom + f Ljava/lang/String; a comp_2468 name + m ()Ljava/lang/String; a comp_2468 name + m (Ljava/lang/String;)Lbmf; a method_58298 of + m (Ljava/lang/String;)V +c bmg net/minecraft/class_9388 net/minecraft/util/parsing/packrat/Control + f Lbmg; a field_49959 UNBOUND + m ()V a method_58299 method_58299 + m ()V +c bmh net/minecraft/class_9389 net/minecraft/util/parsing/packrat/Dictionary + f Ljava/util/Map; a field_49960 terms + m (Lbmf;)Lbml; a method_58300 get + m (Lbmf;Lbml;)V a method_58301 put + m (Lbmf;Lbmo;Lbml$a;)V a method_58302 put + m (Lbmf;Lbmo;Lbml$b;)V a method_58303 put + m ()V +c bmi net/minecraft/class_9390 net/minecraft/util/parsing/packrat/ErrorCollector + m (I)V a method_58304 finish + m (ILbmn;Ljava/lang/Object;)V a method_58305 store + m (ILjava/lang/Object;)V a method_58306 store +c bmi$a net/minecraft/class_9390$class_9391 net/minecraft/util/parsing/packrat/ErrorCollector$LongestOnly + f Ljava/util/List; a field_49961 entries + f I b field_49962 lastCursor + m ()Ljava/util/List; a method_58307 entries + m ()I b method_58308 cursor + m (I)V b method_58309 discardErrorsFromShorterParse + m ()V +c bmj net/minecraft/class_9392 net/minecraft/util/parsing/packrat/ErrorEntry + f I a comp_2469 cursor + f Lbmn; b comp_2470 suggestions + f Ljava/lang/Object; c comp_2471 reason + m ()I a comp_2469 cursor + m ()Lbmn; b comp_2470 suggestions + m ()Ljava/lang/Object; c comp_2471 reason + m (ILbmn;Ljava/lang/Object;)V +c bmk net/minecraft/class_9393 net/minecraft/util/parsing/packrat/ParseState + f Ljava/util/Map; a field_49963 ruleCache + f Lbmh; b field_49964 dictionary + f Lbmi; c field_49965 errorCollector + m ()Lbmi; a method_58310 errorCollector + m (I)V a method_58311 restore + m (Lbmf;)Ljava/util/Optional; a method_58312 parseTopRule + m (Lbmk$b;)Lbmk$a; a method_58313 lookupInCache + m (Lbmk$b;Ljava/util/Optional;)V a method_58314 storeInCache + m ()Ljava/lang/Object; b method_58315 input + m (Lbmf;)Ljava/util/Optional; b method_58316 parse + m ()I c method_58317 mark + m (Lbmh;Lbmi;)V +c bmk$a net/minecraft/class_9393$class_9394 net/minecraft/util/parsing/packrat/ParseState$CacheEntry + f Ljava/util/Optional; a comp_2472 value + f I b comp_2473 mark + m ()Ljava/util/Optional; a comp_2472 value + m ()I b comp_2473 mark + m (Ljava/util/Optional;I)V +c bmk$b net/minecraft/class_9393$class_9395 net/minecraft/util/parsing/packrat/ParseState$CacheKey + f Lbmf; a comp_2474 name + f I b comp_2475 mark + m ()Lbmf; a comp_2474 name + m ()I b comp_2475 mark + m (Lbmf;I)V +c bml net/minecraft/class_9396 net/minecraft/util/parsing/packrat/Rule + m (Lbmk;)Ljava/util/Optional; a method_58318 parse + m (Lbml$b;Lbmk;Lbmm;)Ljava/util/Optional; a method_58319 method_58319 + m (Lbmo;Lbml$a;)Lbml; a method_58320 fromTerm + m (Lbmo;Lbml$b;)Lbml; a method_58321 fromTerm +c bml$a net/minecraft/class_9396$class_9397 net/minecraft/util/parsing/packrat/Rule$RuleAction +c bml$b net/minecraft/class_9396$class_9398 net/minecraft/util/parsing/packrat/Rule$SimpleRuleAction +c bml$c net/minecraft/class_9396$class_9399 net/minecraft/util/parsing/packrat/Rule$WrappedTerm + f Lbml$a; a comp_2476 action + f Lbmo; b comp_2477 child + m ()Lbml$a; a comp_2476 action + m ()Lbmo; b comp_2477 child + m (Lbml$a;Lbmo;)V +c bmm net/minecraft/class_9400 net/minecraft/util/parsing/packrat/Scope + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; a field_49966 values + m (Lbmf;)Ljava/lang/Object; a method_58322 get + m (Lbmf;Ljava/lang/Object;)V a method_58323 put + m (Lbmm;)V a method_58324 putAll + m ([Lbmf;)Ljava/lang/Object; a method_58325 getAny + m (Lbmf;)Ljava/lang/Object; b method_58326 getOrThrow + m (Lbmf;Ljava/lang/Object;)Ljava/lang/Object; b method_58327 getOrDefault + m ([Lbmf;)Ljava/lang/Object; b method_58328 getAnyOrThrow + m ()V +c bmn net/minecraft/class_9401 net/minecraft/util/parsing/packrat/SuggestionSupplier + m ()Lbmn; b method_58329 empty + m (Lbmk;)Ljava/util/stream/Stream; b method_58330 method_58330 +c bmo net/minecraft/class_9402 net/minecraft/util/parsing/packrat/Term + m ()Lbmo; a method_58331 cut + m (Lbmf;)Lbmo; a method_58332 named + m (Lbmf;Ljava/lang/Object;)Lbmo; a method_58333 marker + m (Lbmk;Lbmm;Lbmg;)Z a method_58334 parse + m (Lbmo;)Lbmo; a method_58335 optional + m ([Lbmo;)Lbmo; a method_58336 sequence + m ()Lbmo; b method_58337 empty + m ([Lbmo;)Lbmo; b method_58338 alternative +c bmo$1 net/minecraft/class_9402$1 net/minecraft/util/parsing/packrat/Term$1 + m ()V +c bmo$2 net/minecraft/class_9402$2 net/minecraft/util/parsing/packrat/Term$2 + m ()V +c bmo$a net/minecraft/class_9402$class_9403 net/minecraft/util/parsing/packrat/Term$Alternative + f Ljava/util/List; a comp_2478 elements + m ()Ljava/util/List; c comp_2478 elements + m (Ljava/util/List;)V +c bmo$b net/minecraft/class_9402$class_9404 net/minecraft/util/parsing/packrat/Term$Marker + f Lbmf; a comp_2479 name + f Ljava/lang/Object; b comp_2480 value + m ()Lbmf; c comp_2479 name + m ()Ljava/lang/Object; d comp_2480 value + m (Lbmf;Ljava/lang/Object;)V +c bmo$c net/minecraft/class_9402$class_9405 net/minecraft/util/parsing/packrat/Term$Maybe + f Lbmo; a comp_2481 term + m ()Lbmo; c comp_2481 term + m (Lbmo;)V +c bmo$d net/minecraft/class_9402$class_9406 net/minecraft/util/parsing/packrat/Term$Reference + f Lbmf; a comp_2482 name + m ()Lbmf; c comp_2482 name + m (Lbmf;)V +c bmo$e net/minecraft/class_9402$class_9407 net/minecraft/util/parsing/packrat/Term$Sequence + f Ljava/util/List; a comp_2483 elements + m ()Ljava/util/List; c comp_2483 elements + m (Ljava/util/List;)V +c bmp net/minecraft/class_9408 net/minecraft/util/parsing/packrat/commands/Grammar + f Lbmh; a comp_2484 rules + f Lbmf; b comp_2485 top + m ()Lbmh; a comp_2484 rules + m (Lbmj;Ljava/util/function/Consumer;)V a method_58339 method_58339 + m (Lbmk;)Ljava/util/Optional; a method_58340 parse + m (Lcom/mojang/brigadier/StringReader;)Ljava/lang/Object; a method_58341 parseForCommands + m (Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture; a method_58342 parseForSuggestions + m ()Lbmf; b comp_2485 top + m (Lbmh;Lbmf;)V +c bmq net/minecraft/class_9409 net/minecraft/util/parsing/packrat/commands/ResourceLocationParseRule + f Lbml; a field_49967 INSTANCE + m ()V + m ()V +c bmr net/minecraft/class_9410 net/minecraft/util/parsing/packrat/commands/ResourceLookupRule + f Ljava/lang/Object; a field_49968 context + f Lbmf; b field_49969 idParser + m (Lcom/mojang/brigadier/ImmutableStringReader;Lakr;)Ljava/lang/Object; a method_58343 validateElement + m (Lbmf;Ljava/lang/Object;)V +c bms net/minecraft/class_9411 net/minecraft/util/parsing/packrat/commands/ResourceSuggestion + m ()Ljava/util/stream/Stream; a method_58344 possibleResources +c bmt net/minecraft/class_9412 net/minecraft/util/parsing/packrat/commands/StringReaderParserState + f Lcom/mojang/brigadier/StringReader; a field_49970 input + m ()Lcom/mojang/brigadier/StringReader; d method_58345 input + m (Lbmh;Lbmi;Lcom/mojang/brigadier/StringReader;)V +c bmu net/minecraft/class_9413 net/minecraft/util/parsing/packrat/commands/StringReaderTerms + m (C)Lbmo; a method_58346 character + m (Ljava/lang/String;)Lbmo; a method_58347 word +c bmu$a net/minecraft/class_9413$class_9414 net/minecraft/util/parsing/packrat/commands/StringReaderTerms$TerminalCharacter + f C a comp_2486 value + m (Lbmk;)Ljava/util/stream/Stream; a method_58348 method_58348 + m ()C c comp_2486 value + m (C)V +c bmu$b net/minecraft/class_9413$class_9415 net/minecraft/util/parsing/packrat/commands/StringReaderTerms$TerminalWord + f Ljava/lang/String; a comp_2487 value + m (Lbmk;)Ljava/util/stream/Stream; a method_58349 method_58349 + m ()Ljava/lang/String; c comp_2487 value + m (Ljava/lang/String;)V +c bmv net/minecraft/class_9416 net/minecraft/util/parsing/packrat/commands/TagParseRule + f Lbml; a field_49971 INSTANCE + m ()V + m ()V +c bmw net/minecraft/class_9417 net/minecraft/util/parsing/packrat/commands/package-info +c bmx net/minecraft/class_9418 net/minecraft/util/parsing/packrat/package-info +c bmy net/minecraft/class_3533 net/minecraft/util/profiling/ActiveProfiler + f J a field_16267 WARNING_TIME_NANOS + f Lorg/slf4j/Logger; c field_15735 LOGGER + f Ljava/util/List; d field_15736 paths + f Lit/unimi/dsi/fastutil/longs/LongList; e field_15730 startTimes + f Ljava/util/Map; f field_21818 entries + f Ljava/util/function/IntSupplier; g field_16266 getTickTime + f Ljava/util/function/LongSupplier; h field_21961 getRealTime + f J i field_15732 startTimeNano + f I j field_15729 startTimeTicks + f Ljava/lang/String; k field_15734 path + f Z l field_15733 started + f Lbmy$a; m field_21819 currentEntry + f Z n field_20345 warn + f Ljava/util/Set; o field_33873 chartedPaths + m (J)Ljava/lang/Object; a method_21718 method_21718 + m (Ljava/lang/String;)Lbmy$a; e method_24245 method_24245 + m ()Lbmy$a; f method_24246 getCurrentEntry + m ()Ljava/lang/Object; g method_21719 method_21719 + m ()Ljava/lang/Object; h method_21720 method_21720 + m (Ljava/util/function/LongSupplier;Ljava/util/function/IntSupplier;Z)V + m ()V +c bmy$a net/minecraft/class_3533$class_4746 net/minecraft/util/profiling/ActiveProfiler$PathEntry + f J a field_33874 maxDuration + f J b field_33875 minDuration + f J c field_21820 accumulatedDuration + f J d field_21821 count + f Lit/unimi/dsi/fastutil/objects/Object2LongOpenHashMap; e field_21822 counters + m ()V +c bmz net/minecraft/class_4757 net/minecraft/util/profiling/ContinuousProfiler + f Ljava/util/function/LongSupplier; a field_21962 realTime + f Ljava/util/function/IntSupplier; b field_21963 tickCount + f Lbnd; c field_21964 profiler + m ()Z a method_24333 isEnabled + m ()V b method_24334 disable + m ()V c method_24335 enable + m ()Lbnf; d method_24336 getFiller + m ()Lbne; e method_24337 getResults + m (Ljava/util/function/LongSupplier;Ljava/util/function/IntSupplier;)V +c bna net/minecraft/class_3688 net/minecraft/util/profiling/EmptyProfileResults + f Lbna; a field_16265 EMPTY + m ()V + m ()V +c bnb net/minecraft/class_3692 net/minecraft/util/profiling/FilledProfileResults + f Lorg/slf4j/Logger; a field_16279 LOGGER + f Lbng; b field_21823 EMPTY + f Lcom/google/common/base/Splitter; c field_21824 SPLITTER + f Ljava/util/Comparator; e field_21825 COUNTER_ENTRY_COMPARATOR + f Ljava/util/Map; f field_21826 entries + f J g field_16278 startTimeNano + f I h field_16275 startTimeTicks + f J i field_16276 endTimeNano + f I j field_16274 endTimeTicks + f I k field_19383 tickDuration + m (IILjava/lang/StringBuilder;Ljava/util/Map$Entry;)V a method_24252 method_24252 + m (ILjava/lang/String;Lbnb$a;ILjava/lang/StringBuilder;)V a method_24253 appendCounterResults + m (ILjava/lang/String;Ljava/lang/StringBuilder;)V a method_16061 appendProfilerResults + m (JI)Ljava/lang/String; a method_16063 getProfilerResults + m (Lbnb$a;)J a method_24254 method_24254 + m (Ljava/lang/String;Ljava/lang/String;)Z a method_24255 isDirectChild + m (Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder; a method_24256 indentLine + m (Ljava/lang/StringBuilder;ILjava/lang/String;Lbnb$a;)V a method_24257 method_24257 + m (Ljava/lang/StringBuilder;ILjava/lang/String;Ljava/lang/Long;)V a method_24258 method_24258 + m (Ljava/util/Map;Ljava/lang/String;Lbng;)V a method_24259 method_24259 + m (Ljava/util/Map;Ljava/lang/StringBuilder;I)V a method_24260 appendCounters + m (Ljava/util/Map;Ljava/util/List;Ljava/lang/String;Ljava/lang/Long;)V a method_24261 method_24261 + m (Ljava/lang/String;)Lbng; c method_24262 getEntry + m (Ljava/lang/String;)Lbnb$a; d method_24263 method_24263 + m ()Ljava/util/Map; h method_24264 getCounterValues + m (Ljava/util/Map;JIJI)V + m ()V +c bnb$1 net/minecraft/class_3692$1 net/minecraft/util/profiling/FilledProfileResults$1 + m ()V +c bnb$a net/minecraft/class_3692$class_4747 net/minecraft/util/profiling/FilledProfileResults$CounterCollector + f J a field_21827 selfValue + f J b field_21828 totalValue + f Ljava/util/Map; c field_21829 children + m (Ljava/lang/String;)Lbnb$a; a method_24266 method_24266 + m (Ljava/util/Iterator;J)V a method_24267 addValue + m ()V +c bnc net/minecraft/class_3694 net/minecraft/util/profiling/InactiveProfiler + f Lbnc; a field_16280 INSTANCE + m ()V + m ()V +c bnd net/minecraft/class_3693 net/minecraft/util/profiling/ProfileCollector + m (Ljava/lang/String;)Lbmy$a; c method_34696 getEntry + m ()Lbne; d method_16064 getResults + m ()Ljava/util/Set; e method_37168 getChartedPaths +c bne net/minecraft/class_3696 net/minecraft/util/profiling/ProfileResults + f C d field_29924 PATH_SEPARATOR + m ()J a method_16068 getStartTimeNano + m (Ljava/lang/String;)Ljava/util/List; a method_16067 getTimes + m (Ljava/nio/file/Path;)Z a method_16069 saveResults + m ()I b method_16072 getStartTimeTicks + m (Ljava/lang/String;)Ljava/lang/String; b method_21721 demanglePath + m ()J c method_16073 getEndTimeNano + m ()I d method_16070 getEndTimeTicks + m ()Ljava/lang/String; e method_34970 getProfilerResults + m ()I f method_16074 getTickDuration + m ()J g method_16071 getNanoDuration +c bnf net/minecraft/class_3695 net/minecraft/util/profiling/ProfilerFiller + f Ljava/lang/String; b field_29925 ROOT + m ()V a method_16065 startTick + m (Lbnf;Lbnf;)Lbnf; a method_24338 tee + m (Lbol;)V a method_37167 markForCharting + m (Ljava/lang/String;)V a method_15396 push + m (Ljava/lang/String;I)V a method_24270 incrementCounter + m (Ljava/util/function/Supplier;)V a method_15400 push + m (Ljava/util/function/Supplier;I)V a method_24271 incrementCounter + m ()V b method_16066 endTick + m (Ljava/lang/String;)V b method_15405 popPush + m (Ljava/util/function/Supplier;)V b method_15403 popPush + m ()V c method_15407 pop + m (Ljava/util/function/Supplier;)V c method_39277 incrementCounter + m (Ljava/lang/String;)V d method_39278 incrementCounter +c bnf$1 net/minecraft/class_3695$1 net/minecraft/util/profiling/ProfilerFiller$1 + f Lbnf; a field_21965 val$first + f Lbnf; c field_21966 val$second + m (Lbnf;Lbnf;)V +c bng net/minecraft/class_4748 net/minecraft/util/profiling/ProfilerPathEntry + m ()J a method_24272 getDuration + m ()J b method_37169 getMaxDuration + m ()J c method_24273 getCount + m ()Lit/unimi/dsi/fastutil/objects/Object2LongMap; d method_24274 getCounters +c bnh net/minecraft/class_3534 net/minecraft/util/profiling/ResultField + f D a field_15739 percentage + f D b field_15737 globalPercentage + f J c field_19384 count + f Ljava/lang/String; d field_15738 name + m ()I a method_15409 getColor + m (Lbnh;)I a method_15408 compareTo + m (Ljava/lang/String;DDJ)V +c bni net/minecraft/class_4758 net/minecraft/util/profiling/SingleTickProfiler + f Lorg/slf4j/Logger; a field_21967 LOGGER + f Ljava/util/function/LongSupplier; b field_21968 realTime + f J c field_21969 saveThreshold + f I d field_21970 tick + f Ljava/io/File; e field_21971 location + f Lbnd; f field_21972 profiler + m ()Lbnf; a method_24339 startTick + m (Lbnf;Lbni;)Lbnf; a method_24340 decorateFiller + m (Ljava/lang/String;)Lbni; a method_24341 createTickProfiler + m ()V b method_24342 endTick + m ()I c method_24343 method_24343 + m (Ljava/util/function/LongSupplier;Ljava/lang/String;J)V + m ()V +c bnj net/minecraft/class_6506 net/minecraft/util/profiling/jfr/Environment + f Lbnj; a field_34412 CLIENT + f Lbnj; b field_34413 SERVER + f Ljava/lang/String; c field_34414 description + f [Lbnj; d field_34415 $VALUES + m ()Ljava/lang/String; a method_37986 getDescription + m (Lnet/minecraft/server/MinecraftServer;)Lbnj; a method_37987 from + m ()[Lbnj; b method_37988 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c bnk net/minecraft/class_6505 net/minecraft/util/profiling/jfr/JfrProfiler + f Ljava/lang/String; a field_34403 ROOT_CATEGORY + f Ljava/lang/String; b field_34404 WORLD_GEN_CATEGORY + f Ljava/lang/String; c field_34405 TICK_CATEGORY + f Ljava/lang/String; d field_34406 NETWORK_CATEGORY + f Ljava/lang/String; e field_49058 STORAGE_CATEGORY + f Lorg/slf4j/Logger; g field_34408 LOGGER + f Ljava/util/List; h field_34407 CUSTOM_EVENTS + f Ljava/lang/String; i field_34409 FLIGHT_RECORDER_CONFIG + f Ljava/time/format/DateTimeFormatter; j field_34410 DATE_TIME_FORMATTER + f Lbnk; k field_35576 INSTANCE + f Ljdk/jfr/Recording; l field_34411 recording + f F m field_35577 currentAverageTickTime + f Ljava/util/Map; n field_35578 networkTrafficByAddress + m ()Lbnk; a method_39428 getInstance + m (Lbnj;Ljava/lang/String;Ljdk/jfr/Recording;)V a method_37982 method_37982 + m (Ljava/io/Reader;Lbnj;)Z a method_37983 start + m (Ljava/net/SocketAddress;)Lnet/minecraft/util/profiling/jfr/event/NetworkSummaryEvent$b; a method_39429 networkStatFor + m ()V f method_38660 setupSummaryListener + m ()V g method_39430 method_39430 + m ()V h method_39431 method_39431 + m ()V + m ()V +c bnk$1 net/minecraft/class_6505$1 net/minecraft/util/profiling/jfr/JfrProfiler$1 + f Lbnn; a field_34921 summaryReporter + f Lbnk; b field_34922 field_34922 + m ()V a method_38661 method_38661 + m (Lbnk;)V +c bnl net/minecraft/class_6611 net/minecraft/util/profiling/jfr/JvmProfiler + f Lbnl; f field_34923 INSTANCE + m (F)V a method_38654 onServerTick + m (Lbnj;)Z a method_37981 start + m (Ldcd;Lakq;Ljava/lang/String;)Lbno; a method_38655 onChunkGenerate + m (Ldws;Ldcd;Ldwr;I)V a method_56979 onRegionFileRead + m (Lvu;Lzi;Ljava/net/SocketAddress;I)V a method_38656 onPacketReceived + m ()Ljava/nio/file/Path; b method_37980 stop + m (Ldws;Ldcd;Ldwr;I)V b method_56980 onRegionFileWrite + m (Lvu;Lzi;Ljava/net/SocketAddress;I)V b method_38657 onPacketSent + m ()Z c method_37984 isRunning + m ()Z d method_38658 isAvailable + m ()Lbno; e method_38659 onWorldLoadedStarted + m ()V +c bnl$a net/minecraft/class_6611$class_6612 net/minecraft/util/profiling/jfr/JvmProfiler$NoOpProfiler + f Lbno; a field_34925 noOpCommit + f Lorg/slf4j/Logger; b field_34924 LOGGER + m ()V a method_38662 method_38662 + m ()V + m ()V +c bnm net/minecraft/class_6508 net/minecraft/util/profiling/jfr/Percentiles + f Lcom/google/common/math/Quantiles$ScaleAndIndexes; a field_34418 DEFAULT_INDEXES + m (Ljava/util/Map;)Ljava/util/Map; a method_37996 sorted + m (Ljava/util/Map;Lit/unimi/dsi/fastutil/ints/Int2DoubleRBTreeMap;)V a method_37997 method_37997 + m ([D)Ljava/util/Map; a method_37998 evaluate + m ([J)Ljava/util/Map; a method_37999 evaluate + m ()V + m ()V +c bnn net/minecraft/class_6507 net/minecraft/util/profiling/jfr/SummaryReporter + f Lorg/slf4j/Logger; a field_34926 LOGGER + f Ljava/lang/Runnable; b field_34417 onDeregistration + m ()Ljava/lang/String; a method_37993 method_37993 + m (Ljava/nio/file/Path;)V a method_38663 recordingStopped + m (Ljava/util/function/Supplier;)V a method_37991 infoWithFallback + m (Ljava/util/function/Supplier;Ljava/lang/Throwable;)V a method_37992 warnWithFallback + m ()Ljava/lang/String; b method_37995 method_37995 + m (Ljava/nio/file/Path;)Ljava/lang/String; b method_37990 method_37990 + m (Ljava/nio/file/Path;)Ljava/lang/String; c method_37994 method_37994 + m (Ljava/lang/Runnable;)V + m ()V +c bno net/minecraft/class_6613 net/minecraft/util/profiling/jfr/callback/ProfiledDuration +c bnp net/minecraft/class_6614 net/minecraft/util/profiling/jfr/callback/package-info +c bnq net/minecraft/class_9232 net/minecraft/util/profiling/jfr/event/ChunkRegionIoEvent + m (Ldws;Ldcd;Ldwr;I)V +c bnq$a net/minecraft/class_9232$class_9233 net/minecraft/util/profiling/jfr/event/ChunkRegionIoEvent$Fields + f Ljava/lang/String; a field_49059 REGION_POS_X + f Ljava/lang/String; b field_49060 REGION_POS_Z + f Ljava/lang/String; c field_49061 LOCAL_POS_X + f Ljava/lang/String; d field_49062 LOCAL_POS_Z + f Ljava/lang/String; e field_49063 CHUNK_POS_X + f Ljava/lang/String; f field_49064 CHUNK_POS_Z + f Ljava/lang/String; g field_49065 LEVEL + f Ljava/lang/String; h field_49066 DIMENSION + f Ljava/lang/String; i field_49067 TYPE + f Ljava/lang/String; j field_49068 COMPRESSION + f Ljava/lang/String; k field_49069 BYTES + m ()V +c bnr net/minecraft/class_6509 net/minecraft/util/profiling/jfr/event/PacketEvent + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/SocketAddress;I)V +c bnr$a net/minecraft/class_6509$class_6510 net/minecraft/util/profiling/jfr/event/PacketEvent$Fields + f Ljava/lang/String; a field_34419 REMOTE_ADDRESS + f Ljava/lang/String; b field_35579 PROTOCOL_ID + f Ljava/lang/String; c field_48318 PACKET_DIRECTION + f Ljava/lang/String; d field_35580 PACKET_ID + f Ljava/lang/String; e field_34421 BYTES + m ()V +c bns net/minecraft/class_6512 net/minecraft/util/profiling/jfr/event/package-info +c bnt net/minecraft/class_6515 net/minecraft/util/profiling/jfr/package-info +c bnu net/minecraft/class_6516 net/minecraft/util/profiling/jfr/parse/JfrStatsParser + f Ljava/time/Instant; a field_34422 recordingStarted + f Ljava/time/Instant; b field_34423 recordingEnded + f Ljava/util/List; c field_34424 chunkGenStats + f Ljava/util/List; d field_34425 cpuLoadStat + f Ljava/util/Map; e field_34426 receivedPackets + f Ljava/util/Map; f field_34427 sentPackets + f Ljava/util/Map; g field_49070 readChunks + f Ljava/util/Map; h field_49071 writtenChunks + f Ljava/util/List; i field_34428 fileWrites + f Ljava/util/List; j field_34429 fileReads + f I k field_34430 garbageCollections + f Ljava/time/Duration; l field_34431 gcTotalDuration + f Ljava/util/List; m field_34432 gcHeapStats + f Ljava/util/List; n field_34433 threadAllocationStats + f Ljava/util/List; o field_34434 tickTimes + f Ljava/time/Duration; p field_34435 worldCreationDuration + m ()Lbnv; a method_38000 results + m (Lboa;)Lbnu$a; a method_56981 method_56981 + m (Lbof;)Lbnu$a; a method_39432 method_39432 + m (Ljava/nio/file/Path;)Lbnv; a method_38001 parse + m (Ljava/time/Duration;Ljava/util/Map;)Lboe; a method_39433 collectIoStats + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_39434 method_39434 + m (Ljava/util/stream/Stream;)V a method_38002 capture + m (Ljdk/jfr/consumer/RecordedEvent;)V a method_38003 method_38003 + m (Ljdk/jfr/consumer/RecordedEvent;ILjava/util/Map;)V a method_39435 incrementPacket + m (Ljdk/jfr/consumer/RecordedEvent;Ljava/util/List;Ljava/lang/String;)V a method_38004 appendFileIO + m (Ljdk/jfr/consumer/RecordedEvent;ILjava/util/Map;)V b method_56982 incrementChunk + m (Ljava/util/stream/Stream;)V +c bnu$1 net/minecraft/class_6516$1 net/minecraft/util/profiling/jfr/parse/JfrStatsParser$1 + f Ljdk/jfr/consumer/RecordingFile; a field_34436 val$recordingFile + m ()Ljdk/jfr/consumer/RecordedEvent; a method_38005 next + m (Ljdk/jfr/consumer/RecordingFile;)V +c bnu$a net/minecraft/class_6516$class_6766 net/minecraft/util/profiling/jfr/parse/JfrStatsParser$MutableCountAndSize + f J a field_35581 count + f J b field_35582 totalSize + m ()Lboe$a; a method_39436 toCountAndSize + m (I)V a method_39437 increment + m ()V +c bnv net/minecraft/class_6517 net/minecraft/util/profiling/jfr/parse/JfrStatsResult + f Ljava/time/Instant; a comp_3 recordingStarted + f Ljava/time/Instant; b comp_4 recordingEnded + f Ljava/time/Duration; c comp_5 recordingDuration + f Ljava/time/Duration; d comp_6 worldCreationDuration + f Ljava/util/List; e comp_7 tickTimes + f Ljava/util/List; f comp_8 cpuLoadStats + f Lbod$a; g comp_9 heapSummary + f Lbog$a; h comp_10 threadAllocationSummary + f Lboe; i comp_11 receivedPacketsSummary + f Lboe; j comp_12 sentPacketsSummary + f Lboe; k comp_2339 writtenChunks + f Lboe; l comp_2340 readChunks + f Lboc$a; m comp_13 fileWrites + f Lboc$a; n comp_14 fileReads + f Ljava/util/List; o comp_15 chunkGenStats + m ()Ljava/util/List; a method_38006 chunkGenSummary + m (Lcom/mojang/datafixers/util/Pair;)Ljava/time/Duration; a method_38007 method_38007 + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_38008 method_38008 + m ()Ljava/lang/String; b method_38009 asJson + m ()Ljava/time/Instant; c comp_3 recordingStarted + m ()Ljava/time/Instant; d comp_4 recordingEnded + m ()Ljava/time/Duration; e comp_5 recordingDuration + m ()Ljava/time/Duration; f comp_6 worldCreationDuration + m ()Ljava/util/List; g comp_7 tickTimes + m ()Ljava/util/List; h comp_8 cpuLoadStats + m ()Lbod$a; i comp_9 heapSummary + m ()Lbog$a; j comp_10 threadAllocationSummary + m ()Lboe; k comp_11 receivedPacketsSummary + m ()Lboe; l comp_12 sentPacketsSummary + m ()Lboe; m comp_2339 writtenChunks + m ()Lboe; n comp_2340 readChunks + m ()Lboc$a; o comp_13 fileWrites + m ()Lboc$a; p comp_14 fileReads + m ()Ljava/util/List; q comp_15 chunkGenStats + m (Ljava/time/Instant;Ljava/time/Instant;Ljava/time/Duration;Ljava/time/Duration;Ljava/util/List;Ljava/util/List;Lbod$a;Lbog$a;Lboe;Lboe;Lboe;Lboe;Lboc$a;Lboc$a;Ljava/util/List;)V +c bnw net/minecraft/class_6518 net/minecraft/util/profiling/jfr/parse/package-info +c bnx net/minecraft/class_6519 net/minecraft/util/profiling/jfr/serialize/JfrResultJsonSerializer + f Lcom/google/gson/Gson; a field_34437 gson + f Ljava/lang/String; b field_34438 BYTES_PER_SECOND + f Ljava/lang/String; c field_34439 COUNT + f Ljava/lang/String; d field_34440 DURATION_NANOS_TOTAL + f Ljava/lang/String; e field_34441 TOTAL_BYTES + f Ljava/lang/String; f field_34442 COUNT_PER_SECOND + m (Lbnv;)Ljava/lang/String; a method_38010 format + m (Lbnz;)Lcom/google/gson/JsonElement; a method_38011 method_38011 + m (Lboa;Lcom/google/gson/JsonObject;)V a method_56983 serializeChunkId + m (Lboc$a;)Lcom/google/gson/JsonElement; a method_38012 fileIoSummary + m (Lbod$a;)Lcom/google/gson/JsonElement; a method_38013 heap + m (Lboe;Ljava/util/function/BiConsumer;)Lcom/google/gson/JsonElement; a method_38014 ioSummary + m (Lbof;Lcom/google/gson/JsonObject;)V a method_56984 serializePacketId + m (Lbog$a;)Lcom/google/gson/JsonElement; a method_38015 threadAllocations + m (Lboh;)D a method_38664 method_38664 + m (Lcom/google/gson/JsonArray;Lcom/mojang/datafixers/util/Pair;)V a method_38026 method_38026 + m (Lcom/google/gson/JsonArray;Ljava/lang/String;Ljava/lang/Double;)V a method_38017 method_38017 + m (Lcom/google/gson/JsonArray;Ljava/util/function/BiConsumer;Lcom/mojang/datafixers/util/Pair;)V a method_38016 method_38016 + m (Lcom/google/gson/JsonObject;Lcom/google/gson/JsonArray;)V a method_38018 method_38018 + m (Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;)V a method_38019 method_38019 + m (Lcom/google/gson/JsonObject;Ljava/lang/Integer;Ljava/lang/Double;)V a method_38020 method_38020 + m (Lcom/mojang/datafixers/util/Pair;)D a method_38021 method_38021 + m (Ljava/lang/String;Ljava/lang/Double;Lcom/google/gson/JsonObject;)V a method_38022 method_38022 + m (Ljava/util/List;)Lcom/google/gson/JsonElement; a method_38023 chunkGen + m (Ljava/util/List;Ljava/util/function/ToDoubleFunction;)Lcom/google/gson/JsonObject; a method_38024 method_38024 + m (Lbnv;)Lcom/google/gson/JsonElement; b method_38025 fileIO + m (Lcom/google/gson/JsonObject;Ljava/lang/Integer;Ljava/lang/Double;)V b method_38027 method_38027 + m (Ljava/util/List;)Lcom/google/gson/JsonElement; b method_38028 serverTicks + m (Lbnv;)Lcom/google/gson/JsonElement; c method_38029 network + m (Ljava/util/List;)Lcom/google/gson/JsonElement; c method_38030 cpu + m ()V +c bny net/minecraft/class_6520 net/minecraft/util/profiling/jfr/serialize/package-info +c bnz net/minecraft/class_6521 net/minecraft/util/profiling/jfr/stats/ChunkGenStat + f Ljava/time/Duration; a comp_16 duration + f Ldcd; b comp_17 chunkPos + f Laqi; c comp_18 worldPos + f Ldvz; d comp_19 status + f Ljava/lang/String; e comp_21 level + m (Ljdk/jfr/consumer/RecordedEvent;)Lbnz; a method_38031 from + m ()Ldcd; b comp_17 chunkPos + m ()Laqi; c comp_18 worldPos + m ()Ldvz; d comp_19 status + m ()Ljava/lang/String; e comp_21 level + m (Ljava/time/Duration;Ldcd;Laqi;Ldvz;Ljava/lang/String;)V +c boa net/minecraft/class_9234 net/minecraft/util/profiling/jfr/stats/ChunkIdentification + f Ljava/lang/String; a comp_2341 level + f Ljava/lang/String; b comp_2342 dimension + f I c comp_2343 x + f I d comp_2344 z + m ()Ljava/lang/String; a comp_2341 level + m (Ljdk/jfr/consumer/RecordedEvent;)Lboa; a method_56985 from + m ()Ljava/lang/String; b comp_2342 dimension + m ()I c comp_2343 x + m ()I d comp_2344 z + m (Ljava/lang/String;Ljava/lang/String;II)V +c bob net/minecraft/class_6522 net/minecraft/util/profiling/jfr/stats/CpuLoadStat + f D a comp_22 jvm + f D b comp_23 userJvm + f D c comp_24 system + m ()D a comp_22 jvm + m (Ljdk/jfr/consumer/RecordedEvent;)Lbob; a method_38032 from + m ()D b comp_23 userJvm + m ()D c comp_24 system + m (DDD)V +c boc net/minecraft/class_6523 net/minecraft/util/profiling/jfr/stats/FileIOStat + f Ljava/time/Duration; a comp_25 duration + f Ljava/lang/String; b comp_26 path + f J c comp_27 bytes + m ()Ljava/time/Duration; a comp_25 duration + m (Lboc;)J a method_38033 method_38033 + m (Ljava/time/Duration;Ljava/util/List;)Lboc$a; a method_38034 summary + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_38035 method_38035 + m ()Ljava/lang/String; b comp_26 path + m (Lboc;)Ljava/lang/String; b method_38036 method_38036 + m ()J c comp_27 bytes + m (Lboc;)Z c method_38037 method_38037 + m (Lboc;)J d method_38038 method_38038 + m (Ljava/time/Duration;Ljava/lang/String;J)V +c boc$a net/minecraft/class_6523$class_6524 net/minecraft/util/profiling/jfr/stats/FileIOStat$Summary + f J a comp_28 totalBytes + f D b comp_29 bytesPerSecond + f J c comp_30 counts + f D d comp_31 countsPerSecond + f Ljava/time/Duration; e comp_32 timeSpentInIO + f Ljava/util/List; f comp_33 topTenContributorsByTotalBytes + m ()J a comp_28 totalBytes + m ()D b comp_29 bytesPerSecond + m ()J c comp_30 counts + m ()D d comp_31 countsPerSecond + m ()Ljava/time/Duration; e comp_32 timeSpentInIO + m ()Ljava/util/List; f comp_33 topTenContributorsByTotalBytes + m (JDJDLjava/time/Duration;Ljava/util/List;)V +c bod net/minecraft/class_6525 net/minecraft/util/profiling/jfr/stats/GcHeapStat + f Ljava/time/Instant; a comp_34 timestamp + f J b comp_35 heapUsed + f Lbod$b; c comp_36 timing + m ()Ljava/time/Instant; a comp_34 timestamp + m (Lbod;)Lbod$b; a method_38039 method_38039 + m (Ljava/time/Duration;Ljava/util/List;Ljava/time/Duration;I)Lbod$a; a method_38040 summary + m (Ljava/util/List;)D a method_38041 calculateAllocationRatePerSecond + m (Ljdk/jfr/consumer/RecordedEvent;)Lbod; a method_38042 from + m ()J b comp_35 heapUsed + m ()Lbod$b; c comp_36 timing + m (Ljava/time/Instant;JLbod$b;)V +c bod$a net/minecraft/class_6525$class_6526 net/minecraft/util/profiling/jfr/stats/GcHeapStat$Summary + f Ljava/time/Duration; a comp_37 duration + f Ljava/time/Duration; b comp_38 gcTotalDuration + f I c comp_39 totalGCs + f D d comp_40 allocationRateBytesPerSecond + m ()F a method_38043 gcOverHead + m ()Ljava/time/Duration; b comp_37 duration + m ()Ljava/time/Duration; c comp_38 gcTotalDuration + m ()I d comp_39 totalGCs + m ()D e comp_40 allocationRateBytesPerSecond + m (Ljava/time/Duration;Ljava/time/Duration;ID)V +c bod$b net/minecraft/class_6525$class_6527 net/minecraft/util/profiling/jfr/stats/GcHeapStat$Timing + f Lbod$b; a field_34443 BEFORE_GC + f Lbod$b; b field_34444 AFTER_GC + f [Lbod$b; c field_34445 $VALUES + m ()[Lbod$b; a method_38044 $values + m (Ljava/lang/String;I)V + m ()V +c boe net/minecraft/class_6767 net/minecraft/util/profiling/jfr/stats/IoSummary + f Lboe$a; a field_35583 totalCountAndSize + f Ljava/util/List; b field_35584 largestSizeContributors + f Ljava/time/Duration; c field_35585 recordingDuration + m ()D a method_39438 getCountsPerSecond + m ()D b method_39439 getSizePerSecond + m ()J c method_39440 getTotalCount + m ()J d method_39441 getTotalSize + m ()Ljava/util/List; e method_39442 largestSizeContributors + m (Ljava/time/Duration;Ljava/util/List;)V +c boe$a net/minecraft/class_6767$class_6768 net/minecraft/util/profiling/jfr/stats/IoSummary$CountAndSize + f J a comp_257 totalCount + f J b comp_258 totalSize + f Ljava/util/Comparator; c field_35586 SIZE_THEN_COUNT + m ()F a method_56986 averageSize + m (Lboe$a;)Lboe$a; a method_39444 add + m ()J b comp_257 totalCount + m ()J c comp_258 totalSize + m (JJ)V + m ()V +c bof net/minecraft/class_6769 net/minecraft/util/profiling/jfr/stats/PacketIdentification + f Ljava/lang/String; a comp_259 direction + f Ljava/lang/String; b comp_260 protocolId + f Ljava/lang/String; c comp_261 packetId + m ()Ljava/lang/String; a comp_259 direction + m (Ljdk/jfr/consumer/RecordedEvent;)Lbof; a method_39447 from + m ()Ljava/lang/String; b comp_260 protocolId + m ()Ljava/lang/String; c comp_261 packetId + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +c bog net/minecraft/class_6530 net/minecraft/util/profiling/jfr/stats/ThreadAllocationStat + f Ljava/time/Instant; a comp_48 timestamp + f Ljava/lang/String; b comp_49 threadName + f J c comp_50 totalBytes + f Ljava/lang/String; d field_34446 UNKNOWN_THREAD + m ()Ljava/time/Instant; a comp_48 timestamp + m (Lbog;)Ljava/lang/String; a method_38054 method_38054 + m (Ljava/util/List;)Lbog$a; a method_38055 summary + m (Ljava/util/Map;Ljava/lang/String;Ljava/util/List;)V a method_38056 method_38056 + m (Ljdk/jfr/consumer/RecordedEvent;)Lbog; a method_38057 from + m ()Ljava/lang/String; b comp_49 threadName + m ()J c comp_50 totalBytes + m (Ljava/time/Instant;Ljava/lang/String;J)V +c bog$a net/minecraft/class_6530$class_6531 net/minecraft/util/profiling/jfr/stats/ThreadAllocationStat$Summary + f Ljava/util/Map; a comp_51 allocationsPerSecondByThread + m ()Ljava/util/Map; a comp_51 allocationsPerSecondByThread + m (Ljava/util/Map;)V +c boh net/minecraft/class_6532 net/minecraft/util/profiling/jfr/stats/TickTimeStat + f Ljava/time/Instant; a comp_52 timestamp + f Ljava/time/Duration; b comp_53 currentAverage + m ()Ljava/time/Instant; a comp_52 timestamp + m (Ljdk/jfr/consumer/RecordedEvent;)Lboh; a method_38058 from + m ()Ljava/time/Duration; b comp_53 currentAverage + m (Ljava/time/Instant;Ljava/time/Duration;)V +c boi net/minecraft/class_6534 net/minecraft/util/profiling/jfr/stats/TimedStat + m ()Ljava/time/Duration; a comp_16 duration +c boj net/minecraft/class_6535 net/minecraft/util/profiling/jfr/stats/TimedStatSummary + f Lboi; a comp_54 fastest + f Lboi; b comp_55 slowest + f Lboi; c comp_56 secondSlowest + f I d comp_57 count + f Ljava/util/Map; e comp_58 percentilesNanos + f Ljava/time/Duration; f comp_59 totalDuration + m ()Lboi; a comp_54 fastest + m (Lboi;)J a method_38059 method_38059 + m (Ljava/util/List;)Lboj; a method_38060 summary + m ()Lboi; b comp_55 slowest + m ()Lboi; c comp_56 secondSlowest + m ()I d comp_57 count + m ()Ljava/util/Map; e comp_58 percentilesNanos + m ()Ljava/time/Duration; f comp_59 totalDuration + m (Lboi;Lboi;Lboi;ILjava/util/Map;Ljava/time/Duration;)V +c bok net/minecraft/class_6536 net/minecraft/util/profiling/jfr/stats/package-info +c bol net/minecraft/class_5949 net/minecraft/util/profiling/metrics/MetricCategory + f Lbol; a field_33876 PATH_FINDING + f Lbol; b field_29551 EVENT_LOOPS + f Lbol; c field_29552 MAIL_BOXES + f Lbol; d field_33877 TICK_LOOP + f Lbol; e field_33878 JVM + f Lbol; f field_33879 CHUNK_RENDERING + f Lbol; g field_33880 CHUNK_RENDERING_DISPATCHING + f Lbol; h field_33881 CPU + f Lbol; i field_37416 GPU + f Ljava/lang/String; j field_29553 description + f [Lbol; k field_29554 $VALUES + m ()Ljava/lang/String; a method_34700 getDescription + m ()[Lbol; b method_36594 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c bom net/minecraft/class_5965 net/minecraft/util/profiling/metrics/MetricSampler + f Lbom$c; a field_29603 thresholdTest + f Ljava/lang/String; b field_33882 name + f Lbol; c field_29598 category + f Ljava/util/function/DoubleSupplier; d field_29599 sampler + f Lio/netty/buffer/ByteBuf; e field_33883 ticks + f Lio/netty/buffer/ByteBuf; f field_29600 values + f Z g field_29601 isRunning + f Ljava/lang/Runnable; h field_29602 beforeTick + f D i field_33884 currentValue + m ()V a method_34780 onStartTick + m (I)V a method_34781 onEndTick + m (Ljava/lang/String;Lbol;Ljava/lang/Object;Ljava/util/function/ToDoubleFunction;)Lbom; a method_34778 create + m (Ljava/lang/String;Lbol;Ljava/util/function/DoubleSupplier;)Lbom; a method_34776 create + m (Ljava/lang/String;Lbol;Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;)Lbom$a; a method_34779 builder + m ()V b method_34782 onFinished + m ()Ljava/util/function/DoubleSupplier; c method_37170 getSampler + m ()Ljava/lang/String; d method_37171 getName + m ()Lbol; e method_37172 getCategory + m ()Lbom$b; f method_37173 result + m ()Z g method_37174 triggersThreshold + m ()V h method_34786 verifyRunning + m (Ljava/lang/String;Lbol;Ljava/util/function/DoubleSupplier;Ljava/lang/Runnable;Lbom$c;)V +c bom$a net/minecraft/class_5965$class_5966 net/minecraft/util/profiling/metrics/MetricSampler$MetricSamplerBuilder + f Ljava/lang/String; a field_33885 name + f Lbol; b field_33886 category + f Ljava/util/function/DoubleSupplier; c field_29605 sampler + f Ljava/lang/Object; d field_29606 context + f Ljava/lang/Runnable; e field_29607 beforeTick + f Lbom$c; f field_29608 thresholdTest + m ()Lbom; a method_34787 build + m (Lbom$c;)Lbom$a; a method_34788 withThresholdAlert + m (Ljava/util/function/Consumer;)Lbom$a; a method_34789 withBeforeTick + m (Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;)D a method_34790 method_34790 + m (Ljava/util/function/Consumer;)V b method_34791 method_34791 + m (Ljava/lang/String;Lbol;Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;)V +c bom$b net/minecraft/class_5965$class_6398 net/minecraft/util/profiling/metrics/MetricSampler$SamplerResult + f Lit/unimi/dsi/fastutil/ints/Int2DoubleMap; a field_33887 recording + f I b field_33888 firstTick + f I c field_33889 lastTick + m ()I a method_37175 getFirstTick + m (I)D a method_37176 valueAtTick + m ()I b method_37177 getLastTick + m (IILit/unimi/dsi/fastutil/ints/Int2DoubleMap;)V +c bom$c net/minecraft/class_5965$class_5967 net/minecraft/util/profiling/metrics/MetricSampler$ThresholdTest + m (D)Z test method_34792 test +c bom$d net/minecraft/class_5965$class_5968 net/minecraft/util/profiling/metrics/MetricSampler$ValueIncreasedByPercentage + f F a field_29609 percentageIncreaseThreshold + f D b field_29611 previousValue + m (F)V +c bon net/minecraft/class_5950 net/minecraft/util/profiling/metrics/MetricsRegistry + f Lbon; a field_29555 INSTANCE + f Ljava/util/WeakHashMap; b field_29556 measuredInstances + m ()Ljava/util/List; a method_37178 getRegisteredSamplers + m (Lbop;)V a method_34702 add + m (Ljava/util/Map$Entry;)Lbom; a method_37179 method_37179 + m (Ljava/util/Map;)Ljava/util/List; a method_37180 aggregateDuplicates + m (Lbop;)Ljava/util/stream/Stream; b method_37181 method_37181 + m ()V + m ()V +c bon$a net/minecraft/class_5950$class_6399 net/minecraft/util/profiling/metrics/MetricsRegistry$AggregatedMetricSampler + f Ljava/util/List; b field_33890 delegates + m (DLbom;)Z a method_37182 method_37182 + m (Ljava/util/List;)Lbom$c; a method_37183 thresholdTest + m (Ljava/util/List;D)Z a method_37184 method_37184 + m (Ljava/util/List;)V b method_37185 beforeTick + m (Ljava/util/List;)D c method_37186 averageValueFromDelegates + m (Ljava/util/List;)V d method_37187 method_37187 + m (Ljava/util/List;)D e method_37188 method_37188 + m (Ljava/lang/String;Ljava/util/List;)V +c boo net/minecraft/class_6400 net/minecraft/util/profiling/metrics/MetricsSamplerProvider + m (Ljava/util/function/Supplier;)Ljava/util/Set; a method_37189 samplers +c bop net/minecraft/class_5952 net/minecraft/util/profiling/metrics/ProfilerMeasured + m ()Ljava/util/List; bw method_34705 profiledMetrics +c boq net/minecraft/class_6243 net/minecraft/util/profiling/metrics/package-info +c bor net/minecraft/class_5961 net/minecraft/util/profiling/metrics/profiling/ActiveMetricsRecorder + f I a field_32676 PROFILING_MAX_DURATION_SECONDS + f Ljava/util/function/Consumer; b field_29579 globalOnReportFinished + f Ljava/util/Map; c field_33891 deviationsBySampler + f Lbmz; d field_29581 taskProfiler + f Ljava/util/concurrent/Executor; e field_29582 ioExecutor + f Lbox; f field_29583 metricsPersister + f Ljava/util/function/Consumer; g field_29584 onProfilingEnd + f Ljava/util/function/Consumer; h field_29585 onReportFinished + f Lboo; i field_33892 metricsSamplerProvider + f Ljava/util/function/LongSupplier; j field_29586 wallTimeSource + f J k field_29588 deadlineNano + f I l field_29589 currentTick + f Lbnd; m field_29590 singleTickProfiler + f Z n field_29591 killSwitch + f Ljava/util/Set; o field_33893 thisTickSamplers + m (Lbne;)V a method_34763 scheduleSaveResults + m (Lbom;)Ljava/util/List; a method_37190 method_37190 + m (Lboo;Ljava/util/function/LongSupplier;Ljava/util/concurrent/Executor;Lbox;Ljava/util/function/Consumer;Ljava/util/function/Consumer;)Lbor; a method_37191 createStarted + m (Ljava/util/Collection;)V a method_41319 cleanup + m (Ljava/util/HashSet;Lbne;)V a method_37192 method_37192 + m (Ljava/util/function/Consumer;)V a method_35762 registerGlobalCompletionCallback + m ()V g method_34762 verifyStarted + m ()I h method_34765 method_34765 + m ()Lbnd; i method_37193 method_37193 + m ()I j method_34768 method_34768 + m ()I k method_34769 method_34769 + m (Lboo;Ljava/util/function/LongSupplier;Ljava/util/concurrent/Executor;Lbox;Ljava/util/function/Consumer;Ljava/util/function/Consumer;)V + m ()V +c bos net/minecraft/class_5963 net/minecraft/util/profiling/metrics/profiling/InactiveMetricsRecorder + f Lbot; a field_29594 INSTANCE + m ()V + m ()V +c bot net/minecraft/class_5962 net/minecraft/util/profiling/metrics/profiling/MetricsRecorder + m ()V a method_34770 end + m ()V b method_41320 cancel + m ()V c method_34771 startTick + m ()V d method_34772 endTick + m ()Z e method_34773 isRecording + m ()Lbnf; f method_34774 getProfiler +c bou net/minecraft/class_6401 net/minecraft/util/profiling/metrics/profiling/ProfilerSamplerAdapter + f Ljava/util/Set; a field_33894 previouslyFoundSamplerNames + m (Ljava/util/function/Supplier;)Ljava/util/Set; a method_37194 newSamplersFoundInProfiler + m (Ljava/util/function/Supplier;Ljava/lang/String;)D a method_37195 method_37195 + m (Ljava/util/function/Supplier;Ljava/lang/String;Lbol;)Lbom; a method_37196 samplerForProfilingPath + m (Ljava/util/function/Supplier;Lorg/apache/commons/lang3/tuple/Pair;)Lbom; a method_37197 method_37197 + m (Lorg/apache/commons/lang3/tuple/Pair;)Z a method_37198 method_37198 + m ()V +c bov net/minecraft/class_6402 net/minecraft/util/profiling/metrics/profiling/ServerMetricsSamplersProvider + f Lorg/slf4j/Logger; a field_33988 LOGGER + f Ljava/util/Set; b field_33895 samplers + f Lbou; c field_33896 samplerFactory + m ()Ljava/util/Set; a method_37199 runtimeIndependentSamplers + m (Lbov$a;I)Lbom; a method_37200 method_37200 + m (Lcom/google/common/base/Stopwatch;)D a method_37201 method_37201 + m (Ljava/util/function/LongSupplier;)Lbom; a method_37202 tickTimeSampler + m ()D b method_37203 method_37203 + m (Lbov$a;I)D b method_37204 method_37204 + m (Ljava/util/function/LongSupplier;Z)V + m ()V +c bov$1 net/minecraft/class_6402$1 net/minecraft/util/profiling/metrics/profiling/ServerMetricsSamplersProvider$1 + f Ljava/util/function/LongSupplier; a field_29592 val$timeSource + m (Ljava/util/function/LongSupplier;)V +c bov$a net/minecraft/class_6402$class_6403 net/minecraft/util/profiling/metrics/profiling/ServerMetricsSamplersProvider$CpuStats + f I a field_33897 nrOfCpus + f Loshi/SystemInfo; b field_33898 systemInfo + f Loshi/hardware/CentralProcessor; c field_33899 processor + f [[J d field_33900 previousCpuLoadTick + f [D e field_33901 currentLoad + f J f field_33902 lastPollMs + m (I)D a method_37205 loadForCpu + m ()V +c bow net/minecraft/class_6004 net/minecraft/util/profiling/metrics/profiling/package-info +c box net/minecraft/class_5971 net/minecraft/util/profiling/metrics/storage/MetricsPersister + f Ljava/nio/file/Path; a field_29616 PROFILING_RESULTS_DIR + f Ljava/lang/String; b field_32677 METRICS_DIR_NAME + f Ljava/lang/String; c field_32678 DEVIATIONS_DIR_NAME + f Ljava/lang/String; d field_32679 PROFILING_RESULT_FILENAME + f Lorg/slf4j/Logger; e field_29618 LOGGER + f Ljava/lang/String; f field_33903 rootFolderName + m (I)[Ljava/lang/String; a method_37206 method_37206 + m (ILbom$b;)Ljava/lang/String; a method_37207 method_37207 + m (Lbne;Ljava/nio/file/Path;)V a method_34802 saveProfilingTaskExecutionResult + m (Lbol;Ljava/util/List;Ljava/nio/file/Path;)V a method_37208 saveCategory + m (Ljava/nio/file/Path;Lbol;Ljava/util/List;)V a method_37209 method_37209 + m (Ljava/time/format/DateTimeFormatter;Ljava/nio/file/Path;Lbom;Lboy;)V a method_37210 method_37210 + m (Ljava/time/format/DateTimeFormatter;Ljava/nio/file/Path;Lbom;Ljava/util/List;)V a method_37211 method_37211 + m (Ljava/util/Map;Ljava/nio/file/Path;)V a method_37212 saveDeviations + m (Ljava/util/Set;Ljava/nio/file/Path;)V a method_34803 saveMetrics + m (Ljava/util/Set;Ljava/util/Map;Lbne;)Ljava/nio/file/Path; a method_34807 saveReports + m (Ljava/lang/String;)V + m ()V +c boy net/minecraft/class_5964 net/minecraft/util/profiling/metrics/storage/RecordedDeviation + f Ljava/time/Instant; a field_29595 timestamp + f I b field_29596 tick + f Lbne; c field_29597 profilerResultAtTick + m (Ljava/time/Instant;ILbne;)V +c boz net/minecraft/class_6245 net/minecraft/util/profiling/metrics/storage/package-info +c bpa net/minecraft/class_6003 net/minecraft/util/profiling/package-info +c bpb net/minecraft/class_6005 net/minecraft/util/random/SimpleWeightedRandomList + m ()Lbpb$a; a method_34971 builder + m (Layw;)Ljava/util/Optional; a method_34973 getRandomValue + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_39521 wrappedCodecAllowingEmpty + m (Ljava/lang/Object;)Lbpb; a method_38061 single + m ()Lbpb; b method_38062 empty + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; b method_34972 wrappedCodec + m (Ljava/util/List;)V +c bpb$a net/minecraft/class_6005$class_6006 net/minecraft/util/random/SimpleWeightedRandomList$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_29926 result + m ()Lbpb; a method_34974 build + m (Ljava/lang/Object;)Lbpb$a; a method_54453 add + m (Ljava/lang/Object;I)Lbpb$a; a method_34975 add + m ()V +c bpc net/minecraft/class_6007 net/minecraft/util/random/Weight + f Lcom/mojang/serialization/Codec; a field_29927 CODEC + f Lbpc; b field_29928 ONE + f Lorg/slf4j/Logger; c field_29929 LOGGER + f I d field_29930 value + m ()I a method_34976 asInt + m (I)Lbpc; a method_34977 of + m (I)V b method_34978 validateWeight + m (I)V + m ()V +c bpd net/minecraft/class_6008 net/minecraft/util/random/WeightedEntry + m ()Lbpc; a method_34979 getWeight + m (Ljava/lang/Object;I)Lbpd$b; a method_34980 wrap +c bpd$a net/minecraft/class_6008$class_6009 net/minecraft/util/random/WeightedEntry$IntrusiveBase + f Lbpc; a field_29931 weight + m (I)V + m (Lbpc;)V +c bpd$b net/minecraft/class_6008$class_6010 net/minecraft/util/random/WeightedEntry$Wrapper + f Ljava/lang/Object; a comp_2542 data + f Lbpc; b comp_2543 weight + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_34981 codec + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34982 method_34982 + m ()Ljava/lang/Object; b comp_2542 data + m ()Lbpc; c comp_2543 weight + m (Ljava/lang/Object;Lbpc;)V +c bpe net/minecraft/class_6011 net/minecraft/util/random/WeightedRandom + m (Layw;Ljava/util/List;)Ljava/util/Optional; a method_34986 getRandomItem + m (Layw;Ljava/util/List;I)Ljava/util/Optional; a method_34987 getRandomItem + m (Ljava/util/List;)I a method_34984 getTotalWeight + m (Ljava/util/List;I)Ljava/util/Optional; a method_34985 getWeightedItem + m ()V +c bpf net/minecraft/class_6012 net/minecraft/util/random/WeightedRandomList + f I a field_29934 totalWeight + f Lcom/google/common/collect/ImmutableList; b field_29935 items + m (Ljava/util/List;)Lbpf; a method_34988 create + m ([Lbpd;)Lbpf; a method_34989 create + m (Layw;)Ljava/util/Optional; b method_34992 getRandom + m ()Lbpf; c method_34990 create + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; c method_34991 codec + m ()Z d method_34993 isEmpty + m ()Ljava/util/List; e method_34994 unwrap + m (Ljava/util/List;)V +c bpg net/minecraft/class_6013 net/minecraft/util/random/package-info +c bph net/minecraft/class_1255 net/minecraft/util/thread/BlockableEventLoop + f Ljava/lang/String; b field_18318 name + f Lorg/slf4j/Logger; c field_5751 LOGGER + f Ljava/util/Queue; d field_5750 pendingRunnables + f I e field_18319 blockingCount + m ()V A method_20813 waitForTasks + m ()Z B method_16075 pollTask + m (Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; a method_5382 submitAsync + m (Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture; a method_5385 submit + m ()Z ay method_5384 scheduleExecutables + m ()Ljava/lang/Thread; az method_3777 getRunningThread + m (Ljava/lang/Runnable;)Ljava/lang/Void; b method_5386 method_5386 + m (Ljava/util/function/BooleanSupplier;)V b method_18857 managedBlock + m ()V bA method_18855 dropAllTasks + m ()V bB method_5383 runAllTasks + m ()Z bx method_18854 isSameThread + m ()I by method_21684 getPendingTasksCount + m (Ljava/lang/Runnable;)V c method_40000 executeIfPossible + m (Ljava/lang/Runnable;)V d method_18859 doRunTask + m (Ljava/lang/Runnable;)Z e method_18856 shouldRun + m (Ljava/lang/Runnable;)Ljava/lang/Runnable; f method_16211 wrapRunnable + m (Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; g method_20493 submit + m (Ljava/lang/Runnable;)V h method_19537 executeBlocking + m (Ljava/lang/Runnable;)V i method_18858 tell + m (Ljava/lang/String;)V + m ()V +c bpi net/minecraft/class_6014 net/minecraft/util/thread/NamedThreadFactory + f Lorg/slf4j/Logger; a field_29936 LOGGER + f Ljava/lang/ThreadGroup; b field_29937 group + f Ljava/util/concurrent/atomic/AtomicInteger; c field_29938 threadNumber + f Ljava/lang/String; d field_29939 namePrefix + m (Ljava/lang/Runnable;Ljava/lang/Thread;Ljava/lang/Throwable;)V a method_34995 method_34995 + m (Ljava/lang/String;)V + m ()V +c bpj net/minecraft/class_3906 net/minecraft/util/thread/ProcessorHandle + m (Ljava/lang/Object;)V a method_16901 tell + m (Ljava/lang/String;Ljava/util/function/Consumer;)Lbpj; a method_17344 of + m (Ljava/util/concurrent/CompletableFuture;Lcom/mojang/datafixers/util/Either;)V a method_27917 method_27917 + m (Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; b method_17345 ask + m ()Ljava/lang/String; bz method_16898 name + m (Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; c method_27918 askEither +c bpj$1 net/minecraft/class_3906$1 net/minecraft/util/thread/ProcessorHandle$1 + f Ljava/lang/String; a field_17276 val$name + f Ljava/util/function/Consumer; b field_17277 val$tell + m (Ljava/lang/String;Ljava/util/function/Consumer;)V +c bpk net/minecraft/class_3846 net/minecraft/util/thread/ProcessorMailbox + f Lorg/slf4j/Logger; a field_17040 LOGGER + f I b field_29940 CLOSED_BIT + f I c field_29941 SCHEDULED_BIT + f Ljava/util/concurrent/atomic/AtomicInteger; d field_17041 status + f Lbpm; e field_17039 queue + f Ljava/util/concurrent/Executor; f field_17042 dispatcher + f Ljava/lang/String; g field_17043 name + m ()V a method_37477 runAll + m (I)Z a method_37478 method_37478 + m (Lit/unimi/dsi/fastutil/ints/Int2BooleanFunction;)I a method_16900 pollUntil + m (Ljava/util/concurrent/Executor;Ljava/lang/String;)Lbpk; a method_16902 create + m ()I b method_34996 size + m (I)Z b method_16899 method_16899 + m ()Z c method_40001 hasWork + m ()Z d method_16903 setAsScheduled + m ()V e method_16904 setAsIdle + m ()Z f method_16905 canBeScheduled + m ()Z g method_16906 shouldProcess + m ()Z h method_16907 pollTask + m ()V i method_16908 registerForExecution + m (Lbpm;Ljava/util/concurrent/Executor;Ljava/lang/String;)V + m ()V +c bpl net/minecraft/class_4093 net/minecraft/util/thread/ReentrantBlockableEventLoop + f I b field_18320 reentrantCount + m ()Z bC method_18860 runningTask + m (Ljava/lang/String;)V +c bpm net/minecraft/class_3847 net/minecraft/util/thread/StrictQueue + m ()Ljava/lang/Object; a method_16909 pop + m (Ljava/lang/Object;)Z a method_16910 push + m ()Z b method_16911 isEmpty + m ()I c method_34706 size +c bpm$a net/minecraft/class_3847$class_3848 net/minecraft/util/thread/StrictQueue$FixedPriorityQueue + f [Ljava/util/Queue; a field_35032 queues + f Ljava/util/concurrent/atomic/AtomicInteger; b field_35033 size + m (Lbpm$b;)Z a method_16913 push + m ()Ljava/lang/Runnable; d method_17346 pop + m (I)V +c bpm$b net/minecraft/class_3847$class_3907 net/minecraft/util/thread/StrictQueue$IntRunnable + f I a field_17278 priority + f Ljava/lang/Runnable; b field_17279 task + m ()I a method_17347 getPriority + m (ILjava/lang/Runnable;)V +c bpm$c net/minecraft/class_3847$class_3849 net/minecraft/util/thread/StrictQueue$QueueStrictQueue + f Ljava/util/Queue; a field_17045 queue + m (Ljava/util/Queue;)V +c bpn net/minecraft/class_6015 net/minecraft/util/thread/package-info +c bpo net/minecraft/class_6333 net/minecraft/util/valueproviders/BiasedToBottomInt + f Lcom/mojang/serialization/MapCodec; a field_33443 CODEC + f I b field_33444 minInclusive + f I f field_33445 maxInclusive + m (II)Lbpo; a method_36249 of + m (Lbpo;)Lcom/mojang/serialization/DataResult; a method_36250 method_36250 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_36251 method_36251 + m (Lbpo;)Ljava/lang/String; b method_49464 method_49464 + m (Lbpo;)Ljava/lang/Integer; c method_36252 method_36252 + m (Lbpo;)Ljava/lang/Integer; d method_36253 method_36253 + m (II)V + m ()V +c bpp net/minecraft/class_6334 net/minecraft/util/valueproviders/ClampedInt + f Lcom/mojang/serialization/MapCodec; a field_33446 CODEC + f Lbpw; b field_33447 source + f I f field_33448 minInclusive + f I g field_33449 maxInclusive + m (Lbpp;)Lcom/mojang/serialization/DataResult; a method_36254 method_36254 + m (Lbpw;II)Lbpp; a method_36255 of + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_36256 method_36256 + m (Lbpp;)Ljava/lang/String; b method_49465 method_49465 + m (Lbpp;)Ljava/lang/Integer; c method_36257 method_36257 + m (Lbpp;)Ljava/lang/Integer; d method_36258 method_36258 + m (Lbpp;)Lbpw; e method_36259 method_36259 + m (Lbpw;II)V + m ()V +c bpq net/minecraft/class_5861 net/minecraft/util/valueproviders/ClampedNormalFloat + f Lcom/mojang/serialization/MapCodec; a field_28998 CODEC + f F b field_28999 mean + f F d field_29000 deviation + f F e field_29001 min + f F f field_29002 max + m (FFFF)Lbpq; a method_33900 of + m (Layw;FFFF)F a method_33903 sample + m (Lbpq;)Lcom/mojang/serialization/DataResult; a method_33901 method_33901 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33902 method_33902 + m (Lbpq;)Ljava/lang/String; b method_49466 method_49466 + m (Lbpq;)Ljava/lang/Float; c method_33904 method_33904 + m (Lbpq;)Ljava/lang/Float; d method_33905 method_33905 + m (Lbpq;)Ljava/lang/Float; e method_33906 method_33906 + m (Lbpq;)Ljava/lang/Float; f method_33907 method_33907 + m (FFFF)V + m ()V +c bpr net/minecraft/class_6728 net/minecraft/util/valueproviders/ClampedNormalInt + f Lcom/mojang/serialization/MapCodec; a field_35352 CODEC + f F b field_35353 mean + f F f field_35354 deviation + f I g field_35355 minInclusive + f I h field_35356 maxInclusive + m (FFII)Lbpr; a method_39156 of + m (Layw;FFFF)I a method_39159 sample + m (Lbpr;)Lcom/mojang/serialization/DataResult; a method_39157 method_39157 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39158 method_39158 + m (Lbpr;)Ljava/lang/String; b method_49467 method_49467 + m (Lbpr;)Ljava/lang/Integer; c method_39160 method_39160 + m (Lbpr;)Ljava/lang/Integer; d method_39161 method_39161 + m (Lbpr;)Ljava/lang/Float; e method_39162 method_39162 + m (Lbpr;)Ljava/lang/Float; f method_39163 method_39163 + m (FFII)V + m ()V +c bps net/minecraft/class_5862 net/minecraft/util/valueproviders/ConstantFloat + f Lbps; a field_29003 ZERO + f Lcom/mojang/serialization/MapCodec; b field_29004 CODEC + f F d field_29005 value + m (F)Lbps; a method_33908 of + m ()F d method_33914 getValue + m (F)V + m ()V +c bpt net/minecraft/class_6016 net/minecraft/util/valueproviders/ConstantInt + f Lbpt; a field_29942 ZERO + f Lcom/mojang/serialization/MapCodec; b field_29943 CODEC + f I f field_29944 value + m (I)Lbpt; a method_34998 of + m ()I d method_34997 getValue + m (I)V + m ()V +c bpu net/minecraft/class_5863 net/minecraft/util/valueproviders/FloatProvider + f Lcom/mojang/serialization/Codec; a field_29006 CONSTANT_OR_DISPATCH_CODEC + f Lcom/mojang/serialization/Codec; c field_29007 CODEC + m ()F a method_33915 getMinValue + m (FF)Lcom/mojang/serialization/Codec; a method_33916 codec + m (FFLbpu;)Lcom/mojang/serialization/DataResult; a method_33917 method_33917 + m (FLbpu;)Ljava/lang/String; a method_49468 method_49468 + m (Lbpu;)Lcom/mojang/datafixers/util/Either; a method_33918 method_33918 + m (Lcom/mojang/datafixers/util/Either;)Lbpu; a method_33919 method_33919 + m ()F b method_33921 getMaxValue + m (FLbpu;)Ljava/lang/String; b method_49469 method_49469 + m (Lbpu;)Lbpu; b method_33922 method_33922 + m ()Lbpv; c method_33923 getType + m ()V + m ()V +c bpv net/minecraft/class_5864 net/minecraft/util/valueproviders/FloatProviderType + f Lbpv; a field_29008 CONSTANT + f Lbpv; b field_29009 UNIFORM + f Lbpv; c field_29010 CLAMPED_NORMAL + f Lbpv; d field_29011 TRAPEZOID + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_33924 method_33924 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lbpv; a method_33925 register + m ()V +c bpw net/minecraft/class_6017 net/minecraft/util/valueproviders/IntProvider + f Lcom/mojang/serialization/Codec; a field_29945 CONSTANT_OR_DISPATCH_CODEC + f Lcom/mojang/serialization/Codec; c field_29946 CODEC + f Lcom/mojang/serialization/Codec; d field_33450 NON_NEGATIVE_CODEC + f Lcom/mojang/serialization/Codec; e field_33451 POSITIVE_CODEC + m ()I a method_35009 getMinValue + m (IILbpw;)Lcom/mojang/serialization/DataResult; a method_58612 validate + m (IILcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_49103 validateCodec + m (ILbpw;)Ljava/lang/String; a method_49470 method_49470 + m (Layw;)I a method_35008 sample + m (Lbpw;)Lcom/mojang/datafixers/util/Either; a method_35006 method_35006 + m (Lcom/mojang/datafixers/util/Either;)Lbpw; a method_35007 method_35007 + m ()I b method_35011 getMaxValue + m (II)Lcom/mojang/serialization/Codec; b method_35004 codec + m (IILbpw;)Lcom/mojang/serialization/DataResult; b method_35005 method_35005 + m (ILbpw;)Ljava/lang/String; b method_49471 method_49471 + m (Lbpw;)Lbpw; b method_35010 method_35010 + m ()Lbpx; c method_35012 getType + m ()V + m ()V +c bpx net/minecraft/class_6018 net/minecraft/util/valueproviders/IntProviderType + f Lbpx; a field_29947 CONSTANT + f Lbpx; b field_29948 UNIFORM + f Lbpx; c field_33452 BIASED_TO_BOTTOM + f Lbpx; d field_33453 CLAMPED + f Lbpx; e field_35034 WEIGHTED_LIST + f Lbpx; f field_35357 CLAMPED_NORMAL + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_35013 method_35013 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lbpx; a method_35014 register + m ()V +c bpy net/minecraft/class_7372 net/minecraft/util/valueproviders/MultipliedFloats + f [Lbpz; a field_38707 values + m ([Lbpz;)V +c bpz net/minecraft/class_7373 net/minecraft/util/valueproviders/SampledFloat + m (Layw;)F a method_33920 sample +c bqa net/minecraft/class_5865 net/minecraft/util/valueproviders/TrapezoidFloat + f Lcom/mojang/serialization/MapCodec; a field_29012 CODEC + f F b field_29013 min + f F d field_29014 max + f F e field_29015 plateau + m (FFF)Lbqa; a method_33926 of + m (Lbqa;)Lcom/mojang/serialization/DataResult; a method_33927 method_33927 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33928 method_33928 + m (Lbqa;)Ljava/lang/String; b method_49472 method_49472 + m (Lbqa;)Ljava/lang/String; c method_49473 method_49473 + m (Lbqa;)Ljava/lang/Float; d method_33929 method_33929 + m (Lbqa;)Ljava/lang/Float; e method_33930 method_33930 + m (Lbqa;)Ljava/lang/Float; f method_33931 method_33931 + m (FFF)V + m ()V +c bqb net/minecraft/class_5866 net/minecraft/util/valueproviders/UniformFloat + f Lcom/mojang/serialization/MapCodec; a field_29016 CODEC + f F b field_29017 minInclusive + f F d field_29018 maxExclusive + m (Lbqb;)Lcom/mojang/serialization/DataResult; a method_33932 method_33932 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33933 method_33933 + m (FF)Lbqb; b method_33934 of + m (Lbqb;)Ljava/lang/String; b method_49474 method_49474 + m (Lbqb;)Ljava/lang/Float; c method_33935 method_33935 + m (Lbqb;)Ljava/lang/Float; d method_33936 method_33936 + m (FF)V + m ()V +c bqc net/minecraft/class_6019 net/minecraft/util/valueproviders/UniformInt + f Lcom/mojang/serialization/MapCodec; a field_29949 CODEC + f I b field_29950 minInclusive + f I f field_29951 maxInclusive + m (II)Lbqc; a method_35017 of + m (Lbqc;)Lcom/mojang/serialization/DataResult; a method_35015 method_35015 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_35016 method_35016 + m (Lbqc;)Ljava/lang/String; b method_49475 method_49475 + m (Lbqc;)Ljava/lang/Integer; c method_35018 method_35018 + m (Lbqc;)Ljava/lang/Integer; d method_35019 method_35019 + m (II)V + m ()V +c bqd net/minecraft/class_6642 net/minecraft/util/valueproviders/WeightedListInt + f Lcom/mojang/serialization/MapCodec; a field_35035 CODEC + f Lbpb; b field_35036 distribution + f I f field_35037 minValue + f I g field_35038 maxValue + m (Lbqd;)Lbpb; a method_38844 method_38844 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38845 method_38845 + m (Lbpb;)V + m ()V +c bqe net/minecraft/class_6020 net/minecraft/util/valueproviders/package-info +c bqf net/minecraft/class_1257 net/minecraft/util/worldupdate/WorldUpgrader + f Leqz; A field_5755 overworldDataStorage + f Lorg/slf4j/Logger; a field_5756 LOGGER + f Ljava/util/concurrent/ThreadFactory; b field_5757 THREAD_FACTORY + f Ljava/lang/String; c field_48723 NEW_DIRECTORY_PREFIX + f Lxn; d field_48724 STATUS_UPGRADING_POI + f Lxn; e field_48725 STATUS_FINISHED_POI + f Lxn; f field_48726 STATUS_UPGRADING_ENTITIES + f Lxn; g field_48727 STATUS_FINISHED_ENTITIES + f Lxn; h field_48728 STATUS_UPGRADING_CHUNKS + f Lxn; i field_48729 STATUS_FINISHED_CHUNKS + f Ljz; j field_40113 dimensions + f Ljava/util/Set; k field_40114 levels + f Z l field_19225 eraseCache + f Z m field_48730 recreateRegionFiles + f Lerf$c; n field_24083 levelStorage + f Ljava/lang/Thread; o field_5767 thread + f Lcom/mojang/datafixers/DataFixer; p field_24084 dataFixer + f Z q field_5760 running + f Z r field_5759 finished + f F s field_5763 progress + f I t field_5768 totalChunks + f I u field_48731 totalFiles + f I v field_5766 converted + f I w field_5764 skipped + f Lit/unimi/dsi/fastutil/objects/Reference2FloatMap; x field_5762 progressMap + f Lwz; y field_5765 status + f Ljava/util/regex/Pattern; z field_17622 REGEX + m ()V a method_5402 cancel + m (Lakq;)F a method_5393 dimensionProgress + m (Ljava/lang/Thread;Ljava/lang/Throwable;)V a method_5398 method_5398 + m (Ljava/nio/file/Path;)Ljava/nio/file/Path; a method_56987 resolveRecreateDirectory + m ()Z b method_5403 isFinished + m ()Ljava/util/Set; c method_28304 levels + m ()F d method_5401 getProgress + m ()I e method_5397 getTotalChunks + m ()I f method_5400 getConverted + m ()I g method_5399 getSkipped + m ()Lwz; h method_5394 getStatus + m ()V i method_5404 work + m (Lerf$c;Lcom/mojang/datafixers/DataFixer;Lka;ZZ)V + m ()V +c bqf$a net/minecraft/class_1257$class_9161 net/minecraft/util/worldupdate/WorldUpgrader$AbstractUpgrader + f Ljava/util/concurrent/CompletableFuture; a field_48732 previousWriteFuture + f Lazw; b field_48733 dataFixType + f Lbqf; c field_48734 field_48734 + f Lxn; d field_48735 upgradingStatus + f Lxn; e field_48736 finishedStatus + f Ljava/lang/String; f field_49072 type + f Ljava/lang/String; g field_48737 folderName + m ()V a method_56537 upgrade + m (Lakq;Ljava/lang/AutoCloseable;Ldcd;)Z a method_56538 processOnePosition + m (Lbqf$e;)I a method_56540 method_56540 + m (Ldwp;)V a method_56541 onFileFinished + m (Ldws;Ljava/nio/file/Path;)Ljava/lang/AutoCloseable; a method_56546 createStorage + m (Ljava/io/File;Ljava/lang/String;)Z a method_56542 method_56542 + m (Ljava/lang/AutoCloseable;Ldcd;Lakq;)Z a method_56543 tryProcessOnePosition + m ()Ljava/util/List; b method_56544 getDimensionsToUpgrade + m (Ldws;Ljava/nio/file/Path;)Ljava/util/ListIterator; b method_56545 getFilesToProcess + m (Ldws;Ljava/nio/file/Path;)Ljava/util/List; c method_56539 getAllChunkPositions + m (Lbqf;Lazw;Ljava/lang/String;Ljava/lang/String;Lxn;Lxn;)V +c bqf$b net/minecraft/class_1257$class_9162 net/minecraft/util/worldupdate/WorldUpgrader$ChunkUpgrader + f Lbqf; d field_48738 field_48738 + m (Ldwj;Ldcd;Lakq;)Z a method_56547 tryProcessOnePosition + m ()Leqz; b method_56548 method_56548 + m (Ldws;Ljava/nio/file/Path;)Ldwj; b method_56549 createStorage + m (Lbqf;)V +c bqf$c net/minecraft/class_1257$class_9163 net/minecraft/util/worldupdate/WorldUpgrader$DimensionToUpgrade + f Lakq; a comp_2248 dimensionKey + f Ljava/lang/Object; b comp_2249 storage + f Ljava/util/ListIterator; c comp_2250 files + m ()Lakq; a comp_2248 dimensionKey + m ()Ljava/lang/Object; b comp_2249 storage + m ()Ljava/util/ListIterator; c comp_2250 files + m (Lakq;Ljava/lang/Object;Ljava/util/ListIterator;)V +c bqf$d net/minecraft/class_1257$class_9164 net/minecraft/util/worldupdate/WorldUpgrader$EntityUpgrader + m (Lbqf;)V +c bqf$e net/minecraft/class_1257$class_9165 net/minecraft/util/worldupdate/WorldUpgrader$FileToUpgrade + f Ldwp; a comp_2251 file + f Ljava/util/List; b comp_2252 chunksToUpgrade + m ()Ldwp; a comp_2251 file + m ()Ljava/util/List; b comp_2252 chunksToUpgrade + m (Ldwp;Ljava/util/List;)V +c bqf$f net/minecraft/class_1257$class_9166 net/minecraft/util/worldupdate/WorldUpgrader$PoiUpgrader + m (Lbqf;)V +c bqf$g net/minecraft/class_1257$class_9167 net/minecraft/util/worldupdate/WorldUpgrader$SimpleRegionStorageUpgrader + f Lbqf; d field_48741 field_48741 + m (Ldwu;Ldcd;Lakq;)Z a method_56551 tryProcessOnePosition + m (Ldwu;Lub;)Lub; a method_56550 upgradeTag + m (Ldws;Ljava/nio/file/Path;)Ldwu; b method_56552 createStorage + m (Lbqf;Lazw;Ljava/lang/String;Lxn;Lxn;)V +c bqg net/minecraft/class_6021 net/minecraft/util/worldupdate/package-info +c bqh net/minecraft/class_1259 net/minecraft/world/BossEvent + f Lwz; a field_5777 name + f F b field_5774 progress + f Lbqh$a; c field_5778 color + f Lbqh$b; d field_5779 overlay + f Z e field_5776 darkenScreen + f Z f field_5775 playBossMusic + f Z g field_5773 createWorldFog + f Ljava/util/UUID; h field_5772 id + m (F)V a method_5408 setProgress + m (Lbqh$a;)V a method_5416 setColor + m (Lbqh$b;)V a method_5409 setOverlay + m (Lwz;)V a method_5413 setName + m (Z)Lbqh; a method_5406 setDarkenScreen + m (Z)Lbqh; b method_5410 setPlayBossMusic + m (Z)Lbqh; c method_5411 setCreateWorldFog + m ()Ljava/util/UUID; h method_5407 getId + m ()Lwz; i method_5414 getName + m ()F j method_5412 getProgress + m ()Lbqh$a; k method_5420 getColor + m ()Lbqh$b; l method_5415 getOverlay + m ()Z m method_5417 shouldDarkenScreen + m ()Z n method_5418 shouldPlayBossMusic + m ()Z o method_5419 shouldCreateWorldFog + m (Ljava/util/UUID;Lwz;Lbqh$a;Lbqh$b;)V +c bqh$a net/minecraft/class_1259$class_1260 net/minecraft/world/BossEvent$BossBarColor + f Lbqh$a; a field_5788 PINK + f Lbqh$a; b field_5780 BLUE + f Lbqh$a; c field_5784 RED + f Lbqh$a; d field_5785 GREEN + f Lbqh$a; e field_5782 YELLOW + f Lbqh$a; f field_5783 PURPLE + f Lbqh$a; g field_5786 WHITE + f Ljava/lang/String; h field_5781 name + f Ln; i field_5787 formatting + f [Lbqh$a; j field_5789 $VALUES + m ()Ln; a method_5423 getFormatting + m (Ljava/lang/String;)Lbqh$a; a method_5422 byName + m ()Ljava/lang/String; b method_5421 getName + m ()[Lbqh$a; c method_36595 $values + m (Ljava/lang/String;ILjava/lang/String;Ln;)V + m ()V +c bqh$b net/minecraft/class_1259$class_1261 net/minecraft/world/BossEvent$BossBarOverlay + f Lbqh$b; a field_5795 PROGRESS + f Lbqh$b; b field_5796 NOTCHED_6 + f Lbqh$b; c field_5791 NOTCHED_10 + f Lbqh$b; d field_5793 NOTCHED_12 + f Lbqh$b; e field_5790 NOTCHED_20 + f Ljava/lang/String; f field_5794 name + f [Lbqh$b; g field_5792 $VALUES + m ()Ljava/lang/String; a method_5425 getName + m (Ljava/lang/String;)Lbqh$b; a method_5424 byName + m ()[Lbqh$b; b method_36596 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c bqi net/minecraft/class_3829 net/minecraft/world/Clearable + m ()V a method_5448 clearContent + m (Ljava/lang/Object;)V a_ method_16825 tryClear +c bqj net/minecraft/class_1258 net/minecraft/world/CompoundContainer + f Lbqk; b field_5769 container1 + f Lbqk; c field_5771 container2 + m (Lbqk;)Z a method_5405 contains + m (Lbqk;Lbqk;)V +c bqk net/minecraft/class_1263 net/minecraft/world/Container + f F p_ field_48319 DEFAULT_DISTANCE_BUFFER + m (I)Lcuq; a method_5438 getItem + m (II)Lcuq; a method_5434 removeItem + m (ILcuq;)V a method_5447 setItem + m (Lbqk;ILcuq;)Z a method_49104 canTakeItem + m (Lcmx;)Z a method_5443 stillValid + m (Ldqh;Lcmx;)Z a method_49105 stillValidBlockEntity + m (Ldqh;Lcmx;F)Z a method_49106 stillValidBlockEntity + m (Ljava/util/Set;)Z a method_18862 hasAnyOf + m (Ljava/util/Set;Lcuq;)Z a method_43255 method_43255 + m (Lcul;)I a_ method_18861 countItem + m (Ljava/util/function/Predicate;)Z a_ method_43256 hasAnyMatching + m ()I al_ method_5444 getMaxStackSize + m ()I b method_5439 getContainerSize + m (I)Lcuq; b method_5441 removeItemNoUpdate + m (ILcuq;)Z b method_5437 canPlaceItem + m ()Z c method_5442 isEmpty + m (Lcmx;)V c method_5432 stopOpen + m (Lcmx;)V d_ method_5435 startOpen + m ()V e method_5431 setChanged + m (Lcuq;)I e_ method_58350 getMaxStackSize +c bql net/minecraft/class_1262 net/minecraft/world/ContainerHelper + f Ljava/lang/String; a field_49719 TAG_ITEMS + m (Lbqk;Ljava/util/function/Predicate;IZ)I a method_29234 clearOrCountMatchingItems + m (Lcuq;Ljava/util/function/Predicate;IZ)I a method_29235 clearOrCountMatchingItems + m (Ljava/util/List;I)Lcuq; a method_5428 takeItem + m (Ljava/util/List;II)Lcuq; a method_5430 removeItem + m (Lub;Ljv;Ljo$a;)Lub; a method_5426 saveAllItems + m (Lub;Ljv;ZLjo$a;)Lub; a method_5427 saveAllItems + m (Lub;Ljv;Ljo$a;)V b method_5429 loadAllItems + m ()V +c bqm net/minecraft/class_1265 net/minecraft/world/ContainerListener + m (Lbqk;)V a method_5453 containerChanged +c bqn net/minecraft/class_1264 net/minecraft/world/Containers + m (Ldcw;DDDLbqk;)V a method_5450 dropContents + m (Ldcw;DDDLcuq;)V a method_5449 dropItemStack + m (Ldcw;Lbsr;Lbqk;)V a method_5452 dropContents + m (Ldcw;Ljd;Lbqk;)V a method_5451 dropContents + m (Ldcw;Ljd;Lcuq;)V a method_17348 method_17348 + m (Ldcw;Ljd;Ljv;)V a method_17349 dropContents + m (Ldtc;Ldtc;Ldcw;Ljd;)V a method_54291 dropContentsOnDestroy + m ()V +c bqo net/minecraft/class_1267 net/minecraft/world/Difficulty + f Lbqo; a field_5801 PEACEFUL + f Lbqo; b field_5805 EASY + f Lbqo; c field_5802 NORMAL + f Lbqo; d field_5807 HARD + f Lazk$a; e field_41668 CODEC + f Ljava/util/function/IntFunction; f field_5800 BY_ID + f I g field_5803 id + f Ljava/lang/String; h field_5806 key + f [Lbqo; i field_5804 $VALUES + m ()I a method_5461 getId + m (I)Lbqo; a method_5462 byId + m (Ljava/lang/String;)Lbqo; a method_16691 byName + m ()Lwz; b method_5463 getDisplayName + m ()Lwz; d method_48556 getInfo + m ()Ljava/lang/String; e method_5460 getKey + m ()[Lbqo; f method_36597 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c bqp net/minecraft/class_1266 net/minecraft/world/DifficultyInstance + f F a field_29953 DIFFICULTY_TIME_GLOBAL_OFFSET + f F b field_29954 MAX_DIFFICULTY_TIME_GLOBAL + f F c field_29955 MAX_DIFFICULTY_TIME_LOCAL + f Lbqo; d field_5798 base + f F e field_5799 effectiveDifficulty + m ()Lbqo; a method_5454 getDifficulty + m (F)Z a method_5455 isHarderThan + m (Lbqo;JJF)F a method_5456 calculateDifficulty + m ()F b method_5457 getEffectiveDifficulty + m ()Z c method_35020 isHard + m ()F d method_5458 getSpecialMultiplier + m (Lbqo;JJF)V +c bqq net/minecraft/class_1268 net/minecraft/world/InteractionHand + f Lbqq; a field_5808 MAIN_HAND + f Lbqq; b field_5810 OFF_HAND + f [Lbqq; c field_5809 $VALUES + m ()[Lbqq; a method_36598 $values + m (Ljava/lang/String;I)V + m ()V +c bqr net/minecraft/class_1269 net/minecraft/world/InteractionResult + f Lbqr; a field_5812 SUCCESS + f Lbqr; b field_51370 SUCCESS_NO_ITEM_USED + f Lbqr; c field_21466 CONSUME + f Lbqr; d field_33562 CONSUME_PARTIAL + f Lbqr; e field_5811 PASS + f Lbqr; f field_5814 FAIL + f [Lbqr; g field_5813 $VALUES + m ()Z a method_23665 consumesAction + m (Z)Lbqr; a method_29236 sidedSuccess + m ()Z b method_23666 shouldSwing + m ()Z c method_36360 indicateItemUse + m ()[Lbqr; d method_36599 $values + m (Ljava/lang/String;I)V + m ()V +c bqs net/minecraft/class_1271 net/minecraft/world/InteractionResultHolder + f Lbqr; a field_5815 result + f Ljava/lang/Object; b field_5816 object + m ()Lbqr; a method_5467 getResult + m (Ljava/lang/Object;)Lbqs; a method_22427 success + m (Ljava/lang/Object;Z)Lbqs; a method_29237 sidedSuccess + m ()Ljava/lang/Object; b method_5466 getObject + m (Ljava/lang/Object;)Lbqs; b method_22428 consume + m (Ljava/lang/Object;)Lbqs; c method_22430 pass + m (Ljava/lang/Object;)Lbqs; d method_22431 fail + m (Lbqr;Ljava/lang/Object;)V +c bqt net/minecraft/class_9062 net/minecraft/world/ItemInteractionResult + f Lbqt; a field_47728 SUCCESS + f Lbqt; b field_47729 CONSUME + f Lbqt; c field_47730 CONSUME_PARTIAL + f Lbqt; d field_47731 PASS_TO_DEFAULT_BLOCK_INTERACTION + f Lbqt; e field_47732 SKIP_DEFAULT_BLOCK_INTERACTION + f Lbqt; f field_47733 FAIL + f [Lbqt; g field_47734 $VALUES + m ()Z a method_55643 consumesAction + m (Z)Lbqt; a method_55644 sidedSuccess + m ()Lbqr; b method_55645 result + m ()[Lbqt; c method_55646 $values + m (Ljava/lang/String;I)V + m ()V +c bqu net/minecraft/class_1273 net/minecraft/world/LockCode + f Lbqu; a field_5817 NO_LOCK + f Lcom/mojang/serialization/Codec; b field_49206 CODEC + f Ljava/lang/String; c field_29956 TAG_LOCK + f Ljava/lang/String; d comp_2371 key + m ()Ljava/lang/String; a comp_2371 key + m (Lcuq;)Z a method_5472 unlocksWith + m (Lub;)V a method_5474 addToTag + m (Lub;)Lbqu; b method_5473 fromTag + m (Ljava/lang/String;)V + m ()V +c bqv net/minecraft/class_3908 net/minecraft/world/MenuProvider + m ()Lwz; S_ method_5476 getDisplayName +c bqw net/minecraft/class_1275 net/minecraft/world/Nameable + m ()Lwz; S_ method_5476 getDisplayName + m ()Lwz; ah method_5477 getName + m ()Z ai method_16914 hasCustomName + m ()Lwz; aj method_5797 getCustomName +c bqx net/minecraft/class_8564 net/minecraft/world/RandomSequence + f Lcom/mojang/serialization/Codec; a field_44859 CODEC + f Ldzz; b field_44860 source + m ()Layw; a method_51839 random + m (JLjava/util/Optional;)Ldzz; a method_52189 createSequence + m (Lakr;)Ldzn$a; a method_52171 seedForKey + m (Lbqx;)Ldzz; a method_51840 method_51840 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51841 method_51841 + m (Ldzz;)V + m (JLakr;)V + m (JLjava/util/Optional;)V + m ()V +c bqy net/minecraft/class_8565 net/minecraft/world/RandomSequences + f Lorg/slf4j/Logger; a field_44861 LOGGER + f J b field_44862 worldSeed + f I c field_45100 salt + f Z d field_45101 includeWorldSeed + f Z e field_45102 includeSequenceId + f Ljava/util/Map; f field_44863 sequences + m ()I a method_52509 clear + m (IZZ)V a method_52510 setSeedDefaults + m (J)Leql$a; a method_52511 factory + m (JLub;)Lbqy; a method_51842 load + m (JLub;Ljo$a;)Lbqy; a method_52516 method_52516 + m (Lakr;)Layw; a method_51843 get + m (Lakr;IZZ)V a method_52512 reset + m (Ljava/util/function/BiConsumer;)V a method_52513 forAllSequences + m (Lub;Lakr;Lbqx;)V a method_51844 method_51844 + m (Lub;Ljava/lang/String;Z)Z a method_52514 getBooleanWithDefault + m (J)Lbqy; b method_52515 method_52515 + m (Lakr;)V b method_52517 reset + m (Lakr;IZZ)Lbqx; b method_52518 createSequence + m (Lakr;)Lbqx; c method_52519 createSequence + m (J)V + m ()V +c bqy$a net/minecraft/class_8565$class_8629 net/minecraft/world/RandomSequences$DirtyMarkingRandomSource + f Lbqy; b field_44865 field_44865 + f Layw; c field_44864 random + m (Lbqy;Layw;)V +c bqz net/minecraft/class_8934 net/minecraft/world/RandomizableContainer + f Ljava/lang/String; b field_47154 LOOT_TABLE_TAG + f Ljava/lang/String; c field_47155 LOOT_TABLE_SEED_TAG + m (J)V a method_54866 setLootTableSeed + m (Lakq;)V a method_11285 setLootTable + m (Lakq;J)V a method_54867 setLootTable + m (Ldcc;Layw;Ljd;Lakq;)V a method_54868 setBlockEntityLootTable + m ()Lakq; aB_ method_54869 getLootTable + m ()J aC_ method_54870 getLootTableSeed + m ()Ljd; aD_ method_11016 getBlockPos + m (Lub;)Z b_ method_54871 tryLoadLootTable + m (Lub;)Z c_ method_54872 trySaveLootTable + m (Lcmx;)V e_ method_54873 unpackLootTable + m ()Ldcw; i method_10997 getLevel +c bra net/minecraft/class_1277 net/minecraft/world/SimpleContainer + f I b field_5831 size + f Ljv; c field_5828 items + f Ljava/util/List; d field_5829 listeners + m (Lbqm;)V a method_5489 addListener + m (Lcul;I)Lcuq; a method_20631 removeItemType + m (Lcuq;Lcuq;)V a method_20632 moveItemsBetweenStacks + m (Ljo$a;)Luh; a method_7660 createTag + m (Luh;Ljo$a;)V a method_7659 fromTag + m (Lbqm;)V b method_5488 removeListener + m (Lcuq;)Lcuq; b method_5491 addItem + m (Lcuq;)Z c method_27070 canAddItem + m (Lcuq;)V d method_20633 moveItemToEmptySlots + m (Lcuq;)V e method_20634 moveItemToOccupiedSlotsWithSameType + m ()Ljava/util/List; f method_24514 removeAllItems + m (Lcuq;)Z f method_20635 method_20635 + m ()Ljv; g method_54454 getItems + m (Lcuq;)Z g method_24513 method_24513 + m (I)V + m ([Lcuq;)V +c brb net/minecraft/class_747 net/minecraft/world/SimpleMenuProvider + f Lwz; a field_3947 title + f Lcrb; b field_17280 menuConstructor + m (Lcrb;Lwz;)V +c brc net/minecraft/class_8921 net/minecraft/world/TickRateManager + f F a field_46960 MIN_TICKRATE + f F b field_46961 tickrate + f J c field_46962 nanosecondsPerTick + f I d field_46963 frozenTicksToRun + f Z e field_46964 runGameElements + f Z f field_46965 isFrozen + m (F)V a method_54671 setTickRate + m (Lbsr;)Z a method_54746 isEntityFrozen + m (Z)V a method_54675 setFrozen + m (I)V c method_54747 setFrozenTicksToRun + m ()F f method_54748 tickrate + m ()F g method_54749 millisecondsPerTick + m ()J h method_54750 nanosecondsPerTick + m ()Z i method_54751 runsNormally + m ()Z j method_54752 isSteppingForward + m ()I k method_54753 frozenTicksToRun + m ()Z l method_54754 isFrozen + m ()V m method_54755 tick + m ()V +c brd net/minecraft/class_1278 net/minecraft/world/WorldlyContainer + m (ILcuq;Lji;)Z a method_5492 canPlaceItemThroughFace + m (Lji;)[I a method_5494 getSlotsForFace + m (ILcuq;Lji;)Z b method_5493 canTakeItemThroughFace +c bre net/minecraft/class_3954 net/minecraft/world/WorldlyContainerHolder + m (Ldtc;Ldcx;Ljd;)Lbrd; a method_17680 getContainer +c brf net/minecraft/class_1281 net/minecraft/world/damagesource/CombatEntry + f Lbrk; a comp_1535 source + f F b comp_1536 damage + f Lbrp; c comp_1537 fallLocation + f F d comp_1538 fallDistance + m ()Lbrk; a comp_1535 source + m ()F b comp_1536 damage + m ()Lbrp; c comp_1537 fallLocation + m ()F d comp_1538 fallDistance + m (Lbrk;FLbrp;F)V +c brg net/minecraft/class_1280 net/minecraft/world/damagesource/CombatRules + f F a field_29962 MAX_ARMOR + f F b field_29963 ARMOR_PROTECTION_DIVIDER + f F c field_29964 BASE_ARMOR_TOUGHNESS + f F d field_29965 MIN_ARMOR_RATIO + f I e field_29966 NUM_ARMOR_ITEMS + m (FF)F a method_5497 getDamageAfterMagicAbsorb + m (Lbtn;FLbrk;FF)F a method_5496 getDamageAfterAbsorb + m ()V +c brh net/minecraft/class_1283 net/minecraft/world/damagesource/CombatTracker + f I a field_29967 RESET_DAMAGE_STATUS_TIME + f I b field_29968 RESET_COMBAT_STATUS_TIME + f Lxw; c field_42274 INTENTIONAL_GAME_DESIGN_STYLE + f Ljava/util/List; d field_5870 entries + f Lbtn; e field_5877 mob + f I f field_5876 lastDamageTime + f I g field_5875 combatStartTime + f I h field_5873 combatEndTime + f Z i field_5874 inCombat + f Z j field_5872 takingDamage + m ()Lwz; a method_5548 getDeathMessage + m (Lbrf;Lbsr;)Lwz; a method_52190 getFallMessage + m (Lbrk;)Z a method_52191 shouldEnterCombat + m (Lbrk;F)V a method_5547 recordDamage + m (Lbsr;)Lwz; a method_52192 getDisplayName + m (Lbsr;Lwz;Ljava/lang/String;Ljava/lang/String;)Lwz; a method_52193 getMessageForAssistedFall + m ()I b method_5546 getCombatDuration + m ()V c method_5539 recheckStatus + m ()Lbrf; d method_5544 getMostSignificantFall + m (Lbtn;)V + m ()V +c bri net/minecraft/class_8107 net/minecraft/world/damagesource/DamageEffects + f Lbri; a field_42275 HURT + f Lbri; b field_42276 THORNS + f Lbri; c field_42277 DROWNING + f Lbri; d field_42278 BURNING + f Lbri; e field_42279 POKING + f Lbri; f field_42280 FREEZING + f Lcom/mojang/serialization/Codec; g field_42281 CODEC + f Ljava/lang/String; h field_42282 id + f Lavo; i field_42283 sound + f [Lbri; j field_42284 $VALUES + m ()Lavo; a method_48786 sound + m ()[Lbri; b method_48787 $values + m (Ljava/lang/String;ILjava/lang/String;Lavo;)V + m ()V +c brj net/minecraft/class_8108 net/minecraft/world/damagesource/DamageScaling + f Lbrj; a field_42285 NEVER + f Lbrj; b field_42286 WHEN_CAUSED_BY_LIVING_NON_PLAYER + f Lbrj; c field_42287 ALWAYS + f Lcom/mojang/serialization/Codec; d field_42288 CODEC + f Ljava/lang/String; e field_42289 id + f [Lbrj; f field_42290 $VALUES + m ()[Lbrj; a method_48788 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c brk net/minecraft/class_1282 net/minecraft/world/damagesource/DamageSource + f Ljm; a field_42291 type + f Lbsr; b field_42292 causingEntity + f Lbsr; c field_42293 directEntity + f Lexc; d field_42294 damageSourcePosition + m ()F a method_5528 getFoodExhaustion + m (Lakq;)Z a method_49708 is + m (Lawu;)Z a method_48789 is + m (Lbtn;)Lwz; a method_5506 getLocalizedDeathMessage + m ()Z b method_60489 isDirect + m ()Lbsr; c method_5526 getDirectEntity + m ()Lbsr; d method_5529 getEntity + m ()Lcuq; e method_60948 getWeaponItem + m ()Ljava/lang/String; f method_5525 getMsgId + m ()Z g method_5514 scalesWithDifficulty + m ()Z h method_5530 isCreativePlayer + m ()Lexc; i method_5510 getSourcePosition + m ()Lexc; j method_48791 sourcePositionRaw + m ()Lbrm; k method_48792 type + m ()Ljm; l method_48793 typeHolder + m (Ljm;Lbsr;Lbsr;Lexc;)V + m (Ljm;Lbsr;Lbsr;)V + m (Ljm;Lexc;)V + m (Ljm;Lbsr;)V + m (Ljm;)V +c brk$1 net/minecraft/class_1282$1 net/minecraft/world/damagesource/DamageSource$1 + f [I a field_42295 $SwitchMap$net$minecraft$world$damagesource$DamageScaling + m ()V +c brl net/minecraft/class_8109 net/minecraft/world/damagesource/DamageSources + f Ljz; a field_42296 damageTypes + f Lbrk; b field_42297 inFire + f Lbrk; c field_51564 campfire + f Lbrk; d field_42298 lightningBolt + f Lbrk; e field_42299 onFire + f Lbrk; f field_42300 lava + f Lbrk; g field_42301 hotFloor + f Lbrk; h field_42302 inWall + f Lbrk; i field_42303 cramming + f Lbrk; j field_42304 drown + f Lbrk; k field_42305 starve + f Lbrk; l field_42306 cactus + f Lbrk; m field_42307 fall + f Lbrk; n field_42308 flyIntoWall + f Lbrk; o field_42309 fellOutOfWorld + f Lbrk; p field_42310 generic + f Lbrk; q field_42311 magic + f Lbrk; r field_42312 wither + f Lbrk; s field_42313 dragonBreath + f Lbrk; t field_42314 dryOut + f Lbrk; u field_42315 sweetBerryBush + f Lbrk; v field_42316 freeze + f Lbrk; w field_42317 stalagmite + f Lbrk; x field_44866 outsideBorder + f Lbrk; y field_44867 genericKill + m ()Lbrk; a method_48794 inFire + m (Lakq;)Lbrk; a method_48795 source + m (Lakq;Lbsr;)Lbrk; a method_48796 source + m (Lakq;Lbsr;Lbsr;)Lbrk; a method_48797 source + m (Lbsr;)Lbrk; a method_48798 fallingBlock + m (Lbsr;Lbsr;)Lbrk; a method_48799 trident + m (Lbsr;Lbtn;)Lbrk; a method_48800 mobProjectile + m (Lbtn;)Lbrk; a method_48801 sting + m (Lcmx;)Lbrk; a method_48802 playerAttack + m (Lcnd;Lbsr;)Lbrk; a method_48803 arrow + m (Lcnj;Lbsr;)Lbrk; a method_48804 fireball + m (Lcnk;Lbsr;)Lbrk; a method_48805 fireworks + m (Lcod;Lbsr;)Lbrk; a method_48806 witherSkull + m (Ldco;)Lbrk; a method_48807 explosion + m (Lexc;)Lbrk; a method_48808 badRespawnPointExplosion + m ()Lbrk; b method_59917 campfire + m (Lbsr;)Lbrk; b method_48810 anvil + m (Lbsr;Lbsr;)Lbrk; b method_48811 thrown + m (Lbsr;Lbtn;)Lbrk; b method_55647 spit + m (Lbtn;)Lbrk; b method_48812 mobAttack + m ()Lbrk; c method_48809 lightningBolt + m (Lbsr;)Lbrk; c method_48814 fallingStalactite + m (Lbsr;Lbsr;)Lbrk; c method_48815 indirectMagic + m (Lbsr;Lbtn;)Lbrk; c method_55648 windCharge + m (Lbtn;)Lbrk; c method_48816 noAggroMobAttack + m ()Lbrk; d method_48813 onFire + m (Lbsr;)Lbrk; d method_48818 thorns + m (Lbsr;Lbsr;)Lbrk; d method_48819 explosion + m ()Lbrk; e method_48817 lava + m (Lbsr;)Lbrk; e method_48821 sonicBoom + m ()Lbrk; f method_48820 hotFloor + m ()Lbrk; g method_48822 inWall + m ()Lbrk; h method_48823 cramming + m ()Lbrk; i method_48824 drown + m ()Lbrk; j method_48825 starve + m ()Lbrk; k method_48826 cactus + m ()Lbrk; l method_48827 fall + m ()Lbrk; m method_48828 flyIntoWall + m ()Lbrk; n method_48829 fellOutOfWorld + m ()Lbrk; o method_48830 generic + m ()Lbrk; p method_48831 magic + m ()Lbrk; q method_48832 wither + m ()Lbrk; r method_48833 dragonBreath + m ()Lbrk; s method_48834 dryOut + m ()Lbrk; t method_48835 sweetBerryBush + m ()Lbrk; u method_48836 freeze + m ()Lbrk; v method_48837 stalagmite + m ()Lbrk; w method_51846 outOfBorder + m ()Lbrk; x method_51847 genericKill + m (Lka;)V +c brm net/minecraft/class_8110 net/minecraft/world/damagesource/DamageType + f Lcom/mojang/serialization/Codec; a field_42318 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_51565 CODEC + f Lyx; c field_51932 STREAM_CODEC + f Ljava/lang/String; d comp_1242 msgId + f Lbrj; e comp_1243 scaling + f F f comp_1244 exhaustion + f Lbri; g comp_1245 effects + f Lbro; h comp_1246 deathMessageType + m ()Ljava/lang/String; a comp_1242 msgId + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_48838 method_48838 + m ()Lbrj; b comp_1243 scaling + m ()F c comp_1244 exhaustion + m ()Lbri; d comp_1245 effects + m ()Lbro; e comp_1246 deathMessageType + m (Ljava/lang/String;Lbrj;F)V + m (Ljava/lang/String;Lbrj;FLbri;)V + m (Ljava/lang/String;FLbri;)V + m (Ljava/lang/String;F)V + m (Ljava/lang/String;Lbrj;FLbri;Lbro;)V + m ()V +c brn net/minecraft/class_8111 net/minecraft/world/damagesource/DamageTypes + f Lakq; A field_42360 MOB_ATTACK + f Lakq; B field_42319 MOB_ATTACK_NO_AGGRO + f Lakq; C field_42320 PLAYER_ATTACK + f Lakq; D field_42321 ARROW + f Lakq; E field_42322 TRIDENT + f Lakq; F field_42323 MOB_PROJECTILE + f Lakq; G field_47736 SPIT + f Lakq; H field_47737 WIND_CHARGE + f Lakq; I field_42324 FIREWORKS + f Lakq; J field_42325 FIREBALL + f Lakq; K field_42326 UNATTRIBUTED_FIREBALL + f Lakq; L field_42327 WITHER_SKULL + f Lakq; M field_42328 THROWN + f Lakq; N field_42329 INDIRECT_MAGIC + f Lakq; O field_42330 THORNS + f Lakq; P field_42331 EXPLOSION + f Lakq; Q field_42332 PLAYER_EXPLOSION + f Lakq; R field_42333 SONIC_BOOM + f Lakq; S field_42334 BAD_RESPAWN_POINT + f Lakq; T field_44868 OUTSIDE_BORDER + f Lakq; U field_44869 GENERIC_KILL + f Lakq; a field_42335 IN_FIRE + f Lakq; b field_51566 CAMPFIRE + f Lakq; c field_42336 LIGHTNING_BOLT + f Lakq; d field_42337 ON_FIRE + f Lakq; e field_42338 LAVA + f Lakq; f field_42339 HOT_FLOOR + f Lakq; g field_42340 IN_WALL + f Lakq; h field_42341 CRAMMING + f Lakq; i field_42342 DROWN + f Lakq; j field_42343 STARVE + f Lakq; k field_42344 CACTUS + f Lakq; l field_42345 FALL + f Lakq; m field_42346 FLY_INTO_WALL + f Lakq; n field_42347 FELL_OUT_OF_WORLD + f Lakq; o field_42348 GENERIC + f Lakq; p field_42349 MAGIC + f Lakq; q field_42350 WITHER + f Lakq; r field_42351 DRAGON_BREATH + f Lakq; s field_42352 DRY_OUT + f Lakq; t field_42353 SWEET_BERRY_BUSH + f Lakq; u field_42354 FREEZE + f Lakq; v field_42355 STALAGMITE + f Lakq; w field_42356 FALLING_BLOCK + f Lakq; x field_42357 FALLING_ANVIL + f Lakq; y field_42358 FALLING_STALACTITE + f Lakq; z field_42359 STING + m (Lqq;)V a method_48839 bootstrap + m ()V +c bro net/minecraft/class_8112 net/minecraft/world/damagesource/DeathMessageType + f Lbro; a field_42361 DEFAULT + f Lbro; b field_42362 FALL_VARIANTS + f Lbro; c field_42363 INTENTIONAL_GAME_DESIGN + f Lcom/mojang/serialization/Codec; d field_42364 CODEC + f Ljava/lang/String; e field_42365 id + f [Lbro; f field_42366 $VALUES + m ()[Lbro; a method_48840 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c brp net/minecraft/class_8572 net/minecraft/world/damagesource/FallLocation + f Lbrp; a field_44923 GENERIC + f Lbrp; b field_44924 LADDER + f Lbrp; c field_44925 VINES + f Lbrp; d field_44926 WEEPING_VINES + f Lbrp; e field_44927 TWISTING_VINES + f Lbrp; f field_44928 SCAFFOLDING + f Lbrp; g field_44929 OTHER_CLIMBABLE + f Lbrp; h field_44930 WATER + f Ljava/lang/String; i comp_1539 id + m ()Ljava/lang/String; a method_52194 languageKey + m (Lbtn;)Lbrp; a method_52195 getCurrentFallLocation + m (Ldtc;)Lbrp; a method_52196 blockToFallLocation + m ()Ljava/lang/String; b comp_1539 id + m (Ljava/lang/String;)V + m ()V +c brq net/minecraft/class_6022 net/minecraft/world/damagesource/package-info +c brr net/minecraft/class_1288 net/minecraft/world/effect/AbsorptionMobEffect + m (Lbry;I)V +c brs net/minecraft/class_8631 net/minecraft/world/effect/BadOmenMobEffect + m (Lbry;I)V +c brt net/minecraft/class_8632 net/minecraft/world/effect/HealOrHarmMobEffect + f Z c field_45103 isHarm + m (Lbry;IZ)V +c bru net/minecraft/class_8633 net/minecraft/world/effect/HungerMobEffect + m (Lbry;I)V +c brv net/minecraft/class_9455 net/minecraft/world/effect/InfestedMobEffect + f F c field_50112 chanceToSpawn + f Ljava/util/function/ToIntFunction; d field_50113 spawnedCount + m (Ldcw;Lbtn;DDD)V a method_58615 spawnSilverfish + m (Lbry;IFLjava/util/function/ToIntFunction;)V +c brw net/minecraft/class_1289 net/minecraft/world/effect/InstantenousMobEffect + m (Lbry;I)V +c brx net/minecraft/class_1291 net/minecraft/world/effect/MobEffect + f Lcom/mojang/serialization/Codec; a field_51933 CODEC + f Lyx; b field_51934 STREAM_CODEC + f I c field_49789 AMBIENT_ALPHA + f Ljava/util/Map; d field_5885 attributeModifiers + f Lbry; e field_18270 category + f I f field_5886 color + f Ljava/util/function/Function; g field_49790 particleFactory + f Ljava/lang/String; h field_5883 descriptionId + f I i field_47738 blendDurationTicks + f Ljava/util/Optional; j field_50114 soundOnAdded + f Lcpl; k field_50115 requiredFeatures + m ()Z a method_5561 isInstantenous + m (I)Lbrx; a method_55649 setBlendDuration + m (II)Z a method_5552 shouldApplyEffectTickThisTick + m (ILbrz;)Llk; a method_58145 method_58145 + m (ILjava/util/function/BiConsumer;)V a method_55650 createModifiers + m (Lavo;)Lbrx; a method_58616 withSoundOnAdded + m (Lbrz;)Llk; a method_58146 createParticleOptions + m (Lbsr;Lbsr;Lbtn;ID)V a method_5564 applyInstantenousEffect + m (Lbtn;I)Z a method_5572 applyEffectTick + m (Lbtn;ILbrk;F)V a method_58614 onMobHurt + m (Lbtn;ILbsr$c;)V a method_58617 onMobRemoved + m (Lbtn;Lavo;)V a method_58618 method_58618 + m (Lbut;)V a method_5562 removeAttributeModifiers + m (Lbut;I)V a method_5555 addAttributeModifiers + m (Ljava/util/function/BiConsumer;ILjm;Lbrx$a;)V a method_55651 method_55651 + m (Ljm;Lakr;DLbuu$a;)Lbrx; a method_5566 addAttributeModifier + m (Llk;Lbrz;)Llk; a method_58147 method_58147 + m ([Lcpj;)Lbrx; a method_58619 requiredFeatures + m ()I b method_55652 getBlendDurationTicks + m (Lbtn;I)V b method_52520 onEffectStarted + m ()Ljava/lang/String; c method_5559 getOrCreateDescriptionId + m (Lbtn;I)V c method_58620 onEffectAdded + m ()Ljava/lang/String; d method_5567 getDescriptionId + m ()Lwz; e method_5560 getDisplayName + m ()Lbry; f method_18792 getCategory + m ()I g method_5556 getColor + m ()Z h method_5573 isBeneficial + m (Lbry;I)V + m (Lbry;ILlk;)V + m ()V +c brx$a net/minecraft/class_1291$class_8634 net/minecraft/world/effect/MobEffect$AttributeTemplate + f Lakr; a comp_2182 id + f D b comp_2183 amount + f Lbuu$a; c comp_2184 operation + m ()Lakr; a comp_2182 id + m (I)Lbuu; a method_52522 create + m ()D b comp_2183 amount + m ()Lbuu$a; c comp_2184 operation + m (Lakr;DLbuu$a;)V +c bry net/minecraft/class_4081 net/minecraft/world/effect/MobEffectCategory + f Lbry; a field_18271 BENEFICIAL + f Lbry; b field_18272 HARMFUL + f Lbry; c field_18273 NEUTRAL + f Ln; d field_18274 tooltipFormatting + f [Lbry; e field_18275 $VALUES + m ()Ln; a method_18793 getTooltipFormatting + m ()[Lbry; b method_36600 $values + m (Ljava/lang/String;ILn;)V + m ()V +c brz net/minecraft/class_1293 net/minecraft/world/effect/MobEffectInstance + f I a field_42106 INFINITE_DURATION + f I b field_49014 MIN_AMPLIFIER + f I c field_49015 MAX_AMPLIFIER + f Lcom/mojang/serialization/Codec; d field_48821 CODEC + f Lyx; e field_49207 STREAM_CODEC + f Lorg/slf4j/Logger; f field_5897 LOGGER + f Ljm; g field_5896 effect + f I h field_5895 duration + f I i field_5893 amplifier + f Z j field_5892 ambient + f Z k field_5890 visible + f Z l field_5889 showIcon + f Lbrz; m field_21830 hiddenEffect + f Lbrz$a; n field_47739 blendState + m ()Llk; a method_58148 getParticleOptions + m (I)Z a method_48557 endsWithin + m (Lbrz;)V a method_24276 setDetailsFrom + m (Lbtn;)V a method_52523 onEffectStarted + m (Lbtn;F)F a method_55653 getBlendFactor + m (Lbtn;Lbrk;F)V a method_58621 onMobHurt + m (Lbtn;Lbsr$c;)V a method_58622 onMobRemoved + m (Lbtn;Ljava/lang/Runnable;)Z a method_5585 tick + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56666 method_56666 + m (Lit/unimi/dsi/fastutil/ints/Int2IntFunction;)I a method_48558 mapDuration + m (Ljm;)Z a method_55654 is + m (Ljm;Lbrz$b;)Lbrz; a method_56667 method_56667 + m (Lub;)Lbrz; a method_5583 load + m ()Z b method_48559 isInfiniteDuration + m (I)I b method_48560 method_48560 + m (Lbrz;)Z b method_5590 update + m (Lbtn;)V b method_58623 onEffectAdded + m ()Ljm; c method_5579 getEffect + m (Lbrz;)I c method_5587 compareTo + m ()I d method_5584 getDuration + m (Lbrz;)V d method_55656 copyBlendState + m ()I e method_5578 getAmplifier + m (Lbrz;)Z e method_48561 isShorterDurationThan + m ()Z f method_5591 isAmbient + m ()Z g method_5581 isVisible + m ()Z h method_5592 showIcon + m ()Ljava/lang/String; i method_5586 getDescriptionId + m ()Luy; j method_5582 save + m ()V k method_55657 skipBlending + m ()Lbrz$b; l method_56668 asDetails + m ()Z m method_48562 hasRemainingDuration + m ()I n method_5588 tickDownDuration + m ()Ljava/lang/String; o method_48563 describeDuration + m (Ljm;)V + m (Ljm;I)V + m (Ljm;II)V + m (Ljm;IIZZ)V + m (Ljm;IIZZZ)V + m (Ljm;IIZZZLbrz;)V + m (Lbrz;)V + m (Ljm;Lbrz$b;)V + m ()V +c brz$a net/minecraft/class_1293$class_9063 net/minecraft/world/effect/MobEffectInstance$BlendState + f F a field_47740 factor + f F b field_47741 factorPreviousFrame + m (Lbrz$a;)V a method_55658 copyFrom + m (Lbrz;)V a method_55659 setImmediate + m (Lbtn;F)F a method_55660 getFactor + m (Lbrz;)V b method_55661 tick + m (Lbrz;)F c method_55662 computeTarget + m (Lbrz;)I d method_55663 getBlendDuration + m ()V +c brz$b net/minecraft/class_1293$class_9195 net/minecraft/world/effect/MobEffectInstance$Details + f Lcom/mojang/serialization/MapCodec; a field_48822 MAP_CODEC + f Lyx; b field_49208 STREAM_CODEC + f I c comp_2292 amplifier + f I d comp_2293 duration + f Z e comp_2294 ambient + f Z f comp_2295 showParticles + f Z g comp_2296 showIcon + f Ljava/util/Optional; h comp_2297 hiddenEffect + m ()I a comp_2292 amplifier + m (IIZZLjava/util/Optional;Ljava/util/Optional;)Lbrz$b; a method_56669 create + m (Lbrz$b;)Ljava/util/Optional; a method_56670 method_56670 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/MapCodec; a method_56671 method_56671 + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56672 method_56672 + m (Lyx;)Lyx; a method_57279 method_57279 + m ()I b comp_2293 duration + m ()Z c comp_2294 ambient + m ()Z d comp_2295 showParticles + m ()Z e comp_2296 showIcon + m ()Ljava/util/Optional; f comp_2297 hiddenEffect + m (IIZZZLjava/util/Optional;)V + m ()V +c bsa net/minecraft/class_1292 net/minecraft/world/effect/MobEffectUtil + m (Laqu;Lbsr;Lexc;DLbrz;I)Ljava/util/List; a method_42143 addEffectToPlayersAround + m (Lbrz;FF)Lwz; a method_5577 formatDuration + m (Lbrz;Lbsr;Laqv;)V a method_42144 method_42144 + m (Lbsr;Lexc;DLjm;Lbrz;ILaqv;)Z a method_42145 method_42145 + m (Lbtn;)Z a method_5576 hasDigSpeed + m (Lbtn;)I b method_5575 getDigSpeedAmplification + m (Lbtn;)Z c method_5574 hasWaterBreathing + m ()V +c bsb net/minecraft/class_1294 net/minecraft/world/effect/MobEffects + f Ljm; A field_5908 UNLUCK + f Ljm; B field_5906 SLOW_FALLING + f Ljm; C field_5927 CONDUIT_POWER + f Ljm; D field_5900 DOLPHINS_GRACE + f Ljm; E field_16595 BAD_OMEN + f Ljm; F field_18980 HERO_OF_THE_VILLAGE + f Ljm; G field_38092 DARKNESS + f Ljm; H field_50116 TRIAL_OMEN + f Ljm; I field_50117 RAID_OMEN + f Ljm; J field_50118 WIND_CHARGED + f Ljm; K field_50119 WEAVING + f Ljm; L field_50120 OOZING + f Ljm; M field_50121 INFESTED + f I N field_38093 DARKNESS_EFFECT_FACTOR_PADDING_DURATION_TICKS + f Ljm; a field_5904 MOVEMENT_SPEED + f Ljm; b field_5909 MOVEMENT_SLOWDOWN + f Ljm; c field_5917 DIG_SPEED + f Ljm; d field_5901 DIG_SLOWDOWN + f Ljm; e field_5910 DAMAGE_BOOST + f Ljm; f field_5915 HEAL + f Ljm; g field_5921 HARM + f Ljm; h field_5913 JUMP + f Ljm; i field_5916 CONFUSION + f Ljm; j field_5924 REGENERATION + f Ljm; k field_5907 DAMAGE_RESISTANCE + f Ljm; l field_5918 FIRE_RESISTANCE + f Ljm; m field_5923 WATER_BREATHING + f Ljm; n field_5905 INVISIBILITY + f Ljm; o field_5919 BLINDNESS + f Ljm; p field_5925 NIGHT_VISION + f Ljm; q field_5903 HUNGER + f Ljm; r field_5911 WEAKNESS + f Ljm; s field_5899 POISON + f Ljm; t field_5920 WITHER + f Ljm; u field_5914 HEALTH_BOOST + f Ljm; v field_5898 ABSORPTION + f Ljm; w field_5922 SATURATION + f Ljm; x field_5912 GLOWING + f Ljm; y field_5902 LEVITATION + f Ljm; z field_5926 LUCK + m (Layw;)I a method_58624 method_58624 + m (Ljava/lang/String;Lbrx;)Ljm; a method_5594 register + m (Ljz;)Ljm; a method_55664 bootstrap + m (Layw;)I b method_58625 method_58625 + m (Layw;)I c method_58626 method_58626 + m ()V + m ()V +c bsc net/minecraft/class_9456 net/minecraft/world/effect/OozingMobEffect + f I c field_51372 SLIME_SIZE + f I d field_51373 RADIUS_TO_CHECK_SLIMES + f Ljava/util/function/ToIntFunction; e field_50122 spawnedCount + m (ILbsc$a;I)I a method_59652 numberOfSlimesToSpawn + m (Ldcw;DDD)V a method_58627 spawnSlimeOffspring + m (Lbry;ILjava/util/function/ToIntFunction;)V +c bsc$a net/minecraft/class_9456$class_9775 net/minecraft/world/effect/OozingMobEffect$NearbySlimes + m (Lbtn;)Lbsc$a; a method_60604 closeTo + m (Lbtn;I)I a method_60605 method_60605 + m (Lbtn;Lckm;)Z a method_60606 method_60606 +c bsd net/minecraft/class_8635 net/minecraft/world/effect/PoisonMobEffect + m (Lbry;I)V +c bse net/minecraft/class_9457 net/minecraft/world/effect/RaidOmenMobEffect + m (Lbry;ILlk;)V +c bsf net/minecraft/class_8636 net/minecraft/world/effect/RegenerationMobEffect + m (Lbry;I)V +c bsg net/minecraft/class_8637 net/minecraft/world/effect/SaturationMobEffect + m (Lbry;I)V +c bsh net/minecraft/class_9458 net/minecraft/world/effect/WeavingMobEffect + f Ljava/util/function/ToIntFunction; c field_50123 maxCobwebs + m (Ldcw;Layw;Ljd;)V a method_58628 spawnCobwebsRandomlyAround + m (Lbry;ILjava/util/function/ToIntFunction;)V +c bsi net/minecraft/class_9459 net/minecraft/world/effect/WindChargedMobEffect + m (Lbry;I)V +c bsj net/minecraft/class_8638 net/minecraft/world/effect/WitherMobEffect + m (Lbry;I)V +c bsk net/minecraft/class_6023 net/minecraft/world/effect/package-info +c bsl net/minecraft/class_1296 net/minecraft/world/entity/AgeableMob + f I b field_29969 BABY_START_AGE + f I c field_5950 age + f Lajw; cc field_5949 DATA_BABY_ID + f I cd field_29970 FORCED_AGE_PARTICLE_TICKS + f I d field_5948 forcedAge + f I e field_5947 forcedAgeTimer + m (IZ)V a method_5620 ageUp + m (Laqu;Lbsl;)Lbsl; a method_5613 getBreedOffspring + m ()Z ab_ method_19184 canBreed + m (I)V b_ method_5615 ageUp + m (I)V c_ method_5614 setAge + m (I)I d_ method_41321 getSpeedUpSecondsWhenFeeding + m ()I g method_5618 getAge + m ()V k method_5619 ageBoundaryReached + m (Lbsx;Ldcw;)V + m ()V +c bsl$a net/minecraft/class_1296$class_4697 net/minecraft/world/entity/AgeableMob$AgeableMobGroupData + f I a field_20684 groupSize + f Z b field_20685 shouldSpawnBaby + f F c field_20686 babySpawnChance + m ()I a method_22432 getGroupSize + m ()V b method_22435 increaseGroupSizeByOne + m ()Z c method_22436 isShouldSpawnBaby + m ()F d method_22437 getBabySpawnChance + m (ZF)V + m (Z)V + m (F)V +c bsm net/minecraft/class_7094 net/minecraft/world/entity/AnimationState + f J a field_37417 STOPPED + f J b field_37418 lastTime + f J c field_39112 accumulatedTime + m ()V a method_41325 stop + m (FF)V a method_43686 updateTime + m (I)V a method_41322 start + m (IF)V a method_56988 fastForward + m (Ljava/util/function/Consumer;)V a method_41323 ifStarted + m (ZI)V a method_45317 animateWhen + m ()J b method_43687 getAccumulatedTime + m (I)V b method_41324 startIfStopped + m ()Z c method_41327 isStarted + m ()V +c bsn net/minecraft/class_1295 net/minecraft/world/entity/AreaEffectCloud + f F b field_40732 DEFAULT_WIDTH + f F c field_40733 HEIGHT + f Lorg/slf4j/Logger; d field_5935 LOGGER + f I e field_29972 TIME_BETWEEN_APPLICATIONS + f Lajw; f field_5938 DATA_RADIUS + f Lajw; g field_5944 DATA_WAITING + f Lajw; h field_5931 DATA_PARTICLE + f F i field_29971 MAX_RADIUS + f F j field_40730 MINIMAL_RADIUS + f F k field_40731 DEFAULT_RADIUS + f Lcwu; l field_49209 potionContents + f Ljava/util/Map; m field_5942 victims + f I n field_5939 duration + f I o field_5941 waitTime + f I p field_5937 reapplicationDelay + f I q field_5932 durationOnUse + f F r field_5929 radiusOnUse + f F s field_5930 radiusPerTick + f Lbtn; t field_5943 owner + f Ljava/util/UUID; u field_5940 ownerUUID + m (F)V a method_5603 setRadius + m (I)V a method_5604 setDuration + m (Lbrz;)V a method_5610 addEffect + m (Lbtn;)V a method_5607 setOwner + m (Lcwu;)V a method_57280 setPotionContents + m (Ljava/util/Map$Entry;)Z a method_32874 method_32874 + m (Llk;)V a method_5608 setParticle + m (Z)V a method_5598 setWaiting + m (F)V b method_5609 setRadiusOnUse + m (I)V b method_35043 setDurationOnUse + m (F)V c method_5596 setRadiusPerTick + m (I)V c method_5595 setWaitTime + m (I)I d method_48564 method_48564 + m (Ljava/lang/String;)V d method_57281 method_57281 + m (Ljava/lang/String;)V e method_59654 method_59654 + m ()F g method_5599 getRadius + m ()Llk; h method_5600 getParticle + m ()Z i method_5611 isWaiting + m ()I j method_5605 getDuration + m ()F k method_35044 getRadiusOnUse + m ()F m method_35045 getRadiusPerTick + m ()I o method_35046 getDurationOnUse + m ()I p method_35047 getWaitTime + m ()Lbtn; q method_5601 getOwner + m ()V t method_5597 updateColor + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V + m ()V +c bso net/minecraft/class_8149 net/minecraft/world/entity/Attackable + m ()Lbtn; Y_ method_49107 getLastAttacker +c bsp net/minecraft/class_9273 net/minecraft/world/entity/Crackiness + f Lbsp; a field_49210 GOLEM + f Lbsp; b field_49211 WOLF_ARMOR + f F c field_49212 fractionLow + f F d field_49213 fractionMedium + f F e field_49214 fractionHigh + m (F)Lbsp$a; a method_57282 byFraction + m (II)Lbsp$a; a method_57283 byDamage + m (Lcuq;)Lbsp$a; a method_57284 byDamage + m (FFF)V + m ()V +c bsp$a net/minecraft/class_9273$class_4621 net/minecraft/world/entity/Crackiness$Level + f Lbsp$a; a field_21081 NONE + f Lbsp$a; b field_21082 LOW + f Lbsp$a; c field_21083 MEDIUM + f Lbsp$a; d field_21084 HIGH + f [Lbsp$a; e field_21085 $VALUES + m ()[Lbsp$a; a method_36638 $values + m (Ljava/lang/String;I)V + m ()V +c bsq net/minecraft/class_8113 net/minecraft/world/entity/Display + f Lajw; aD field_42367 DATA_RIGHT_ROTATION_ID + f Lajw; aE field_42368 DATA_BILLBOARD_RENDER_CONSTRAINTS_ID + f Lajw; aF field_42369 DATA_BRIGHTNESS_OVERRIDE_ID + f Lajw; aG field_42370 DATA_VIEW_RANGE_ID + f Lajw; aH field_42371 DATA_SHADOW_RADIUS_ID + f Lajw; aI field_42372 DATA_SHADOW_STRENGTH_ID + f Lajw; aJ field_42373 DATA_WIDTH_ID + f Lajw; aK field_42374 DATA_HEIGHT_ID + f Lajw; aL field_42375 DATA_GLOW_COLOR_OVERRIDE_ID + f Lit/unimi/dsi/fastutil/ints/IntSet; aM field_43180 RENDER_STATE_IDS + f F aN field_42376 INITIAL_SHADOW_RADIUS + f F aO field_42377 INITIAL_SHADOW_STRENGTH + f I aP field_42378 NO_GLOW_COLOR_OVERRIDE + f J aQ field_42620 interpolationStartClientTick + f I aR field_43181 interpolationDuration + f F aS field_43135 lastProgress + f Lewx; aT field_42383 cullingBoundingBox + f Z aU field_43182 updateStartTick + f Z aV field_43183 updateInterpolationDuration + f Lbsq$k; aW field_43184 renderState + f Lbsq$j; aX field_45108 posRotInterpolationTarget + f I b field_42384 NO_BRIGHTNESS_OVERRIDE + f Ljava/lang/String; c field_45109 TAG_POS_ROT_INTERPOLATION_DURATION + f Ljava/lang/String; d field_45110 TAG_TRANSFORMATION_INTERPOLATION_DURATION + f Ljava/lang/String; e field_45111 TAG_TRANSFORMATION_START_INTERPOLATION + f Ljava/lang/String; f field_42387 TAG_TRANSFORMATION + f Ljava/lang/String; g field_42388 TAG_BILLBOARD + f Ljava/lang/String; h field_42389 TAG_BRIGHTNESS + f Ljava/lang/String; i field_42390 TAG_VIEW_RANGE + f Ljava/lang/String; j field_42391 TAG_SHADOW_RADIUS + f Ljava/lang/String; k field_42392 TAG_SHADOW_STRENGTH + f Ljava/lang/String; l field_42393 TAG_WIDTH + f Ljava/lang/String; m field_42394 TAG_HEIGHT + f Ljava/lang/String; n field_42395 TAG_GLOW_COLOR_OVERRIDE + f Z o field_43185 updateRenderState + f Lorg/slf4j/Logger; p field_42397 LOGGER + f Lajw; q field_45112 DATA_TRANSFORMATION_INTERPOLATION_START_DELTA_TICKS_ID + f Lajw; r field_45113 DATA_TRANSFORMATION_INTERPOLATION_DURATION_ID + f Lajw; s field_45114 DATA_POS_ROT_INTERPOLATION_DURATION_ID + f Lajw; t field_42401 DATA_TRANSLATION_ID + f Lajw; u field_42402 DATA_SCALE_ID + f Lajw; v field_42403 DATA_LEFT_ROTATION_ID + m ()F A method_48870 getShadowRadius + m ()F B method_48871 getShadowStrength + m ()F C method_48874 getWidth + m ()I D method_48876 getGlowColorOverride + m ()F E method_48877 getHeight + m ()V F method_48878 updateCulling + m ()Lbsq$k; H method_49774 createFreshRenderState + m (F)F a method_48844 calculateInterpolationProgress + m (Laka;)Lj; a method_48845 createTransformation + m (Laxd;)V a method_48846 setBrightnessOverride + m (Lbsq$a;)V a method_48847 setBillboardConstraints + m (Lbsq$k;F)Lbsq$k; a method_49775 createInterpolatedRenderState + m (Lcom/mojang/datafixers/util/Pair;)V a method_48848 method_48848 + m (Lj;)V a method_48849 setTransformation + m (Lub;Luy;)V a method_48851 method_48851 + m (ZF)V a method_49776 updateRenderSubState + m (F)V b method_48861 setViewRange + m (I)V b method_52524 setTransformationInterpolationDuration + m (Lcom/mojang/datafixers/util/Pair;)V b method_48855 method_48855 + m (Lub;Luy;)V b method_48856 method_48856 + m (F)V c method_48862 setShadowRadius + m (I)V c method_52525 setTransformationInterpolationDelay + m (Lcom/mojang/datafixers/util/Pair;)V c method_48859 method_48859 + m (Lub;Luy;)V c method_48860 method_48860 + m (I)V d method_52526 setPosRotInterpolationDuration + m (I)V m method_48858 setGlowColorOverride + m ()Lbsq$k; p method_49777 renderState + m ()I s method_52527 getTransformationInterpolationDuration + m ()I t method_52528 getTransformationInterpolationDelay + m ()I v method_52529 getPosRotInterpolationDuration + m (F)V v method_48872 setShadowStrength + m ()Lbsq$a; w method_48864 getBillboardConstraints + m (F)V w method_48873 setWidth + m ()Laxd; x method_48868 getBrightnessOverride + m (F)V x method_48875 setHeight + m ()I y method_48865 getPackedBrightnessOverride + m ()F z method_48869 getViewRange + m (Lbsx;Ldcw;)V + m ()V +c bsq$a net/minecraft/class_8113$class_8114 net/minecraft/world/entity/Display$BillboardConstraints + f Lbsq$a; a field_42406 FIXED + f Lbsq$a; b field_42407 VERTICAL + f Lbsq$a; c field_42408 HORIZONTAL + f Lbsq$a; d field_42409 CENTER + f Lcom/mojang/serialization/Codec; e field_42410 CODEC + f Ljava/util/function/IntFunction; f field_42411 BY_ID + f B g field_42412 id + f Ljava/lang/String; h field_42413 name + f [Lbsq$a; i field_42414 $VALUES + m ()B a method_48881 getId + m ()[Lbsq$a; b method_48882 $values + m (Ljava/lang/String;IBLjava/lang/String;)V + m ()V +c bsq$b net/minecraft/class_8113$class_8115 net/minecraft/world/entity/Display$BlockDisplay + f Ljava/lang/String; p field_42415 TAG_BLOCK_STATE + f Lajw; q field_42416 DATA_BLOCK_STATE_ID + f Lbsq$b$a; r field_43186 blockRenderState + m (Ldtc;)V c method_48883 setBlockState + m ()Lbsq$b$a; s method_49778 blockRenderState + m ()Ldtc; t method_48884 getBlockState + m (Lbsx;Ldcw;)V + m ()V +c bsq$b$a net/minecraft/class_8113$class_8115$class_8225 net/minecraft/world/entity/Display$BlockDisplay$BlockRenderState + f Ldtc; a comp_1319 blockState + m ()Ldtc; a comp_1319 blockState + m (Ldtc;)V +c bsq$c net/minecraft/class_8113$class_8116 net/minecraft/world/entity/Display$ColorInterpolator + f I a comp_1320 previous + f I b comp_1321 current + m ()I a comp_1320 previous + m ()I b comp_1321 current + m (II)V +c bsq$d net/minecraft/class_8113$class_8117 net/minecraft/world/entity/Display$FloatInterpolator + m (FF)F a method_49779 method_49779 + m (F)F get method_48886 get +c bsq$e net/minecraft/class_8113$class_8118 net/minecraft/world/entity/Display$GenericInterpolator + m (Ljava/lang/Object;F)Ljava/lang/Object; a method_49780 method_49780 + m (F)Ljava/lang/Object; get method_48888 get +c bsq$f net/minecraft/class_8113$class_8119 net/minecraft/world/entity/Display$IntInterpolator + m (IF)I a method_49781 method_49781 + m (F)I get method_48889 get +c bsq$g net/minecraft/class_8113$class_8122 net/minecraft/world/entity/Display$ItemDisplay + f Ljava/lang/String; p field_42421 TAG_ITEM + f Ljava/lang/String; q field_42422 TAG_ITEM_DISPLAY + f Lajw; r field_42423 DATA_ITEM_STACK_ID + f Lajw; s field_42424 DATA_ITEM_DISPLAY_ID + f Lbug; t field_42425 slot + f Lbsq$g$a; u field_43187 itemRenderState + m (Lcom/mojang/datafixers/util/Pair;)V a method_48898 method_48898 + m (Lcun;)V a method_48896 setItemTransform + m (Lcuq;)V a method_48897 setItemStack + m (Lub;Luy;)V a method_48899 method_48899 + m ()Lbsq$g$a; s method_49782 itemRenderState + m ()Lcuq; t method_48900 getItemStack + m ()Lcun; v method_48901 getItemTransform + m (Lbsx;Ldcw;)V + m ()V +c bsq$g$a net/minecraft/class_8113$class_8122$class_8226 net/minecraft/world/entity/Display$ItemDisplay$ItemRenderState + f Lcuq; a comp_1322 itemStack + f Lcun; b comp_1323 itemTransform + m ()Lcuq; a comp_1322 itemStack + m ()Lcun; b comp_1323 itemTransform + m (Lcuq;Lcun;)V +c bsq$h net/minecraft/class_8113$class_8227 net/minecraft/world/entity/Display$LinearFloatInterpolator + f F a comp_1324 previous + f F b comp_1325 current + m ()F a comp_1324 previous + m ()F b comp_1325 current + m (FF)V +c bsq$i net/minecraft/class_8113$class_8228 net/minecraft/world/entity/Display$LinearIntInterpolator + f I a comp_1326 previous + f I b comp_1327 current + m ()I a comp_1326 previous + m ()I b comp_1327 current + m (II)V +c bsq$j net/minecraft/class_8113$class_8639 net/minecraft/world/entity/Display$PosRotInterpolationTarget + f I a field_45115 steps + f D b field_45116 targetX + f D c field_45117 targetY + f D d field_45118 targetZ + f D e field_45119 targetYRot + f D f field_45120 targetXRot + m (Lbsr;)V a method_52530 applyTargetPosAndRot + m (Lbsr;)V b method_52531 applyLerpStep + m (IDDDDD)V +c bsq$k net/minecraft/class_8113$class_8229 net/minecraft/world/entity/Display$RenderState + f Lbsq$e; a comp_1328 transformation + f Lbsq$a; b comp_1329 billboardConstraints + f I c comp_1330 brightnessOverride + f Lbsq$d; d comp_1331 shadowRadius + f Lbsq$d; e comp_1332 shadowStrength + f I f comp_1333 glowColorOverride + m ()Lbsq$e; a comp_1328 transformation + m ()Lbsq$a; b comp_1329 billboardConstraints + m ()I c comp_1330 brightnessOverride + m ()Lbsq$d; d comp_1331 shadowRadius + m ()Lbsq$d; e comp_1332 shadowStrength + m ()I f comp_1333 glowColorOverride + m (Lbsq$e;Lbsq$a;ILbsq$d;Lbsq$d;I)V +c bsq$l net/minecraft/class_8113$class_8123 net/minecraft/world/entity/Display$TextDisplay + f Ljava/lang/String; aD field_42427 TAG_LINE_WIDTH + f Ljava/lang/String; aE field_42428 TAG_TEXT_OPACITY + f Ljava/lang/String; aF field_42429 TAG_BACKGROUND_COLOR + f Ljava/lang/String; aG field_42430 TAG_SHADOW + f Ljava/lang/String; aH field_42431 TAG_SEE_THROUGH + f Ljava/lang/String; aI field_42432 TAG_USE_DEFAULT_BACKGROUND + f Ljava/lang/String; aJ field_42433 TAG_ALIGNMENT + f B aK field_42434 INITIAL_TEXT_OPACITY + f Lajw; aL field_42435 DATA_TEXT_ID + f Lajw; aM field_42436 DATA_LINE_WIDTH_ID + f Lajw; aN field_42437 DATA_BACKGROUND_COLOR_ID + f Lajw; aO field_42438 DATA_TEXT_OPACITY_ID + f Lajw; aP field_42439 DATA_STYLE_FLAGS_ID + f Lit/unimi/dsi/fastutil/ints/IntSet; aQ field_43188 TEXT_RENDER_STATE_IDS + f Lbsq$l$b; aR field_42442 clientDisplayCache + f Lbsq$l$e; aS field_43189 textRenderState + f Ljava/lang/String; p field_42443 TAG_TEXT + f B q field_42444 FLAG_SHADOW + f B r field_42445 FLAG_SEE_THROUGH + f B s field_42446 FLAG_USE_DEFAULT_BACKGROUND + f B t field_42447 FLAG_ALIGN_LEFT + f B u field_42448 FLAG_ALIGN_RIGHT + f I v field_42449 INITIAL_BACKGROUND + m (B)Lbsq$l$a; a method_48902 getAlign + m (BLub;Ljava/lang/String;B)B a method_48903 loadFlag + m (Lbsq$l$d;)Lbsq$l$b; a method_48905 cacheDisplay + m (Lbsq$l$e;F)Lbsq$l$e; a method_49783 createInterpolatedTextRenderState + m (Lub;Luy;)V a method_48906 method_48906 + m (BLub;Ljava/lang/String;B)V b method_48907 storeFlag + m (I)V b method_48908 setLineWidth + m (B)V c method_48909 setTextOpacity + m (I)V c method_48910 setBackgroundColor + m (Lwz;)V c method_48911 setText + m (B)V d method_48912 setFlags + m ()Lbsq$l$e; s method_49784 textRenderState + m ()Lwz; t method_48915 getText + m ()I v method_48916 getLineWidth + m ()B w method_48918 getTextOpacity + m ()I x method_48919 getBackgroundColor + m ()B y method_48917 getFlags + m ()Lbsq$l$e; z method_49785 createFreshTextRenderState + m (Lbsx;Ldcw;)V + m ()V +c bsq$l$a net/minecraft/class_8113$class_8123$class_8124 net/minecraft/world/entity/Display$TextDisplay$Align + f Lbsq$l$a; a field_42450 CENTER + f Lbsq$l$a; b field_42451 LEFT + f Lbsq$l$a; c field_42452 RIGHT + f Lcom/mojang/serialization/Codec; d field_42453 CODEC + f Ljava/lang/String; e field_42454 name + f [Lbsq$l$a; f field_42455 $VALUES + m ()[Lbsq$l$a; a method_48920 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c bsq$l$b net/minecraft/class_8113$class_8123$class_8125 net/minecraft/world/entity/Display$TextDisplay$CachedInfo + f Ljava/util/List; a comp_1247 lines + f I b comp_1248 width + m ()Ljava/util/List; a comp_1247 lines + m ()I b comp_1248 width + m (Ljava/util/List;I)V +c bsq$l$c net/minecraft/class_8113$class_8123$class_8126 net/minecraft/world/entity/Display$TextDisplay$CachedLine + f Laya; a comp_1249 contents + f I b comp_1250 width + m ()Laya; a comp_1249 contents + m ()I b comp_1250 width + m (Laya;I)V +c bsq$l$d net/minecraft/class_8113$class_8123$class_8127 net/minecraft/world/entity/Display$TextDisplay$LineSplitter +c bsq$l$e net/minecraft/class_8113$class_8123$class_8230 net/minecraft/world/entity/Display$TextDisplay$TextRenderState + f Lwz; a comp_1334 text + f I b comp_1335 lineWidth + f Lbsq$f; c comp_1336 textOpacity + f Lbsq$f; d comp_1337 backgroundColor + f B e comp_1338 flags + m ()Lwz; a comp_1334 text + m ()I b comp_1335 lineWidth + m ()Lbsq$f; c comp_1336 textOpacity + m ()Lbsq$f; d comp_1337 backgroundColor + m ()B e comp_1338 flags + m (Lwz;ILbsq$f;Lbsq$f;B)V +c bsq$m net/minecraft/class_8113$class_8231 net/minecraft/world/entity/Display$TransformationInterpolator + f Lj; a comp_1339 previous + f Lj; b comp_1340 current + m ()Lj; a comp_1339 previous + m (F)Lj; a method_49786 get + m ()Lj; b comp_1340 current + m (Lj;Lj;)V +c bsr net/minecraft/class_1297 net/minecraft/world/entity/Entity + f I A field_29988 TOTAL_AIR_SUPPLY + f I B field_29989 MAX_ENTITY_TAG_COUNT + f F C field_44870 DELTA_AFFECTED_BY_BLOCKS_BELOW_0_2 + f D D field_44871 DELTA_AFFECTED_BY_BLOCKS_BELOW_0_5 + f D E field_44872 DELTA_AFFECTED_BY_BLOCKS_BELOW_1_0 + f I F field_29992 BASE_TICKS_REQUIRED_TO_FREEZE + f I G field_29993 FREEZE_HURT_FREQUENCY + f I H field_49073 BASE_SAFE_FALL_DISTANCE + f Ljava/lang/String; I field_29994 UUID_TAG + f Z J field_23807 blocksBuilding + f I K field_5951 boardingCooldown + f D L field_6014 xo + f D M field_6036 yo + f D N field_5969 zo + f F O field_5982 yRotO + f F P field_6004 xRotO + f Z Q field_5976 horizontalCollision + f Z R field_5992 verticalCollision + f Z S field_36331 verticalCollisionBelow + f Z T field_34927 minorHorizontalCollision + f Z U field_6037 hurtMarked + f Lexc; V field_17046 stuckSpeedMultiplier + f F W field_29973 DEFAULT_BB_WIDTH + f F X field_29974 DEFAULT_BB_HEIGHT + f F Y field_6039 walkDistO + f F Z field_5973 walkDist + f Z aA field_28628 wasInPowderSnow + f Z aB field_28629 wasOnFire + f Ljava/util/Optional; aC field_44784 mainSupportingBlockPos + f F aD field_6031 yRot + f F aE field_5965 xRot + f Lewx; aF field_6005 bb + f Z aG field_5952 onGround + f Lbsr$c; aH field_26995 removalReason + f F aI field_6003 nextStep + f I aJ field_5956 remainingFireTicks + f Ljava/util/Set; aK field_25599 fluidOnEyes + f I aL field_29975 FLAG_SHIFT_KEY_DOWN + f I aM field_29976 FLAG_SPRINTING + f I aN field_29977 FLAG_SWIMMING + f I aO field_29978 FLAG_INVISIBLE + f Lajw; aP field_6032 DATA_AIR_SUPPLY_ID + f Lajw; aQ field_6027 DATA_CUSTOM_NAME + f Lajw; aR field_5975 DATA_CUSTOM_NAME_VISIBLE + f Lajw; aS field_5962 DATA_SILENT + f Lajw; aT field_5995 DATA_NO_GRAVITY + f Lajw; aU field_27858 DATA_TICKS_FROZEN + f Ldxh; aV field_26996 levelCallback + f Laig; aW field_38931 packetPositionCodec + f I aX field_6018 portalCooldown + f Z aY field_6009 invulnerable + f Z aZ field_5958 hasGlowingTag + f F aa field_5994 moveDist + f F ab field_28627 flyDist + f F ac field_6017 fallDistance + f D ad field_6038 xOld + f D ae field_5971 yOld + f D af field_5989 zOld + f Z ag field_5960 noPhysics + f Layw; ah field_5974 random + f I ai field_6012 tickCount + f Z aj field_5957 wasTouchingWater + f Lit/unimi/dsi/fastutil/objects/Object2DoubleMap; ak field_5964 fluidHeight + f Z al field_6000 wasEyeInWater + f I am field_6008 invulnerableTime + f Z an field_5953 firstTick + f Laka; ao field_6011 entityData + f Lajw; ap field_5990 DATA_SHARED_FLAGS_ID + f I aq field_29979 FLAG_ONFIRE + f I ar field_29980 FLAG_GLOWING + f I as field_29981 FLAG_FALL_FLYING + f Lajw; at field_18064 DATA_POSE + f Z au field_5985 noCulling + f Z av field_6007 hasImpulse + f Lbtz; aw field_51994 portalProcess + f Ljava/util/UUID; ax field_6021 uuid + f Ljava/lang/String; ay field_5981 stringUUID + f Z az field_27857 isInPowderSnow + f Lorg/slf4j/Logger; b field_5955 LOGGER + f Ljava/util/Set; ba field_6029 tags + f [D bb field_5993 pistonDeltas + f J bc field_5996 pistonDeltasGameTime + f Lbsu; bd field_18065 dimensions + f F be field_18066 eyeHeight + f Z bf field_44873 onGroundNoBlocks + f F bg field_26997 crystalSoundIntensity + f I bh field_26994 lastCrystalSoundPlayTick + f Z bi field_33758 hasVisualFire + f Ldtc; bj field_47742 inBlockState + f Ljava/util/concurrent/atomic/AtomicInteger; c field_5978 ENTITY_COUNTER + f Lewx; d field_6025 INITIAL_AABB + f D e field_29984 WATER_FLOW_SCALE + f D k field_29982 LAVA_FAST_FLOW_SCALE + f D l field_29983 LAVA_SLOW_FLOW_SCALE + f D m field_5999 viewScale + f Lbsx; n field_5961 type + f I o field_5986 id + f Lcom/google/common/collect/ImmutableList; p field_5979 passengers + f Lbsr; q field_6034 vehicle + f Ldcw; r field_6002 level + f Lexc; s field_22467 position + f Ljd; t field_22468 blockPosition + f Ldcd; u field_35101 chunkPosition + f Lexc; v field_18276 deltaMovement + f Ljava/lang/String; w field_29985 ID_TAG + f Ljava/lang/String; x field_29986 PASSENGERS_TAG + f I y field_49791 CONTENTS_SLOT_INDEX + f I z field_29987 BOARDING_COOLDOWN + m (Lbsr;)Z A method_37217 method_37217 + m ()Z F method_5798 isInBubbleColumn + m ()I G method_5691 getPermissionLevel + m ()V H method_5630 updateFluidOnEyes + m ()V I method_49792 teleportPassengers + m ()Ljava/util/stream/Stream; J method_31484 getIndirectPassengersStream + m ()Ljava/util/Iterator; K method_31485 method_31485 + m ()Ljava/lang/String; L method_5849 method_5849 + m ()V M method_5760 processPortalCooldown + m ()Ljava/lang/String; N method_5766 method_5766 + m ()Ljava/lang/String; O method_5689 method_5689 + m ()Ljava/lang/String; P method_5761 method_5761 + m ()D P_ method_53828 lerpTargetZ + m ()F Q_ method_53829 lerpTargetXRot + m ()Z R_ method_7325 isSpectator + m (D)Z a method_5640 shouldRenderAtSqrDistance + m (DDD)V a method_33567 dismountTo + m (DDDFF)V a method_5641 absMoveTo + m (DDDFFI)V a method_5759 lerpTo + m (DDF)Lexc; a method_24826 getCollisionHorizontalEscapeVector + m (DFZ)Lexa; a method_5745 pick + m (DZLdtc;Ljd;)V a method_5623 checkFallDamage + m (FF)V a method_5710 setRot + m (FFLbrk;)Z a method_5747 causeFallDamage + m (FI)V a method_5683 lerpHeadTo + m (FLexc;)V a method_5724 moveRelative + m (IDDDDD)V a method_52532 lerpPositionAndRotationStep + m (Labv;)V a method_31471 recreateFromPacket + m (Laka$a;)V a method_5693 defineSynchedData + m (Laqt;)Lzg; a method_18002 getAddEntityPacket + m (Laqu;DDDLjava/util/Set;FF)Z a method_48105 teleportTo + m (Laqu;Lbtm;)V a method_5800 thunderHit + m (Laqu;Lbtn;)Z a method_5874 killedEntity + m (Laqu;Ljd;)Ljd; a method_14245 adjustSpawnLocation + m (Laqv;)Z a method_5680 broadcastToPlayer + m (Lavo;)V a method_43077 playSound + m (Lavo;FF)V a method_5783 playSound + m (Lawu;)Z a method_5777 isEyeInFluid + m (Lawu;D)Z a method_5692 updateFluidHeightAndDoFluidPushing + m (Lbrk;F)Z a method_5643 hurt + m (Lbsr$c;)V a method_5650 remove + m (Lbsr;)V a method_56918 onExplosionHit + m (Lbsr;D)Z a method_24516 closerThan + m (Lbsr;DD)Z a method_43259 closerThan + m (Lbsr;ILbrk;)V a method_5716 awardKillScore + m (Lbsr;Lbsr$a;)V a method_5865 positionRider + m (Lbsr;Lbsr;)Z a method_31475 method_31475 + m (Lbsr;Lbsr;Lbst;)Lexc; a method_55665 getDefaultPassengerAttachmentPoint + m (Lbsr;Lbsu;F)Lexc; a method_52533 getPassengerAttachmentPoint + m (Lbsr;Ldcw;Ljava/util/List;Lewx;)Ljava/util/List; a method_59920 collectColliders + m (Lbsr;Lexc;Lewx;Ldcw;Ljava/util/List;)Lexc; a method_20736 collideBoundingBox + m (Lbsr;Z)Z a method_5873 startRiding + m (Lbsu;)Z a method_60490 fudgePositionAfterSizeChange + m (Lbts;Lexc;)V a method_5784 move + m (Lbua;)Lbsu; a method_18377 getDimensions + m (Lcmx;Lbqq;)Lbqr; a method_5688 interact + m (Lcmx;Lexc;Lbqq;)Lbqr; a method_5664 interactAt + m (Lcnp;)Lcnq; a method_56071 deflection + m (Lcul;)Lexc; a method_40123 getHandHoldingItemAngle + m (Lcuq;F)Lcjh; a method_5699 spawnAtLocation + m (Ldco;)Z a method_5659 ignoreExplosion + m (Ldco;Ldcc;Ljd;Ldtc;F)Z a method_5853 shouldBlockExplode + m (Ldco;Ldcc;Ljd;Ldtc;Lepe;F)F a method_5774 getBlockExplosionResistance + m (Ldcv;)Lcjh; a method_5706 spawnAtLocation + m (Ldcv;I)Lcjh; a method_5870 spawnAtLocation + m (Ldcw;)V a method_51502 setLevel + m (Ldcw;Ldcw;)Z a method_61113 canChangeDimensions + m (Ldcw;Ljd;)Z a method_36971 mayInteract + m (Ldkv;)F a method_5763 mirror + m (Ldlr;Ljd;)V a method_60697 setAsInsidePortal + m (Ldmm;)F a method_5832 rotate + m (Ldtc;)V a method_5622 onInsideBlock + m (Ldtc;Ldtc;)V a method_49787 playCombinationStepSounds + m (Ldtc;Lexc;)V a method_5844 makeStuckInBlock + m (Leqc;)Lbsr; a method_5731 changeDimension + m (Lewx;)V a method_5857 setBoundingBox + m (Lewx;Ljava/util/List;FF)[F a method_59921 collectCandidateStepUpHeights + m (Lewx;Ljd;)Z a method_30022 method_30022 + m (Lexc;)Lexc; a method_17835 collide + m (Lexc;FF)V a method_60949 moveTo + m (Lexc;Lbts;)Lexc; a method_18796 maybeBackOffFromEdge + m (Lexc;Lewx;Ljava/util/List;)Lexc; a method_20737 collideWithShapes + m (Leyi;)Z a method_5645 isAlliedTo + m (Lff$a;Lexc;)V a method_5702 lookAt + m (Ljava/lang/String;)Z a method_5780 addTag + m (Ljava/util/function/BiConsumer;)V a method_42147 updateDynamicGameEventListener + m (Ljava/util/function/Predicate;)Z a method_5703 hasPassenger + m (Ljd;)Ldtc; a method_51700 method_51700 + m (Ljd;FF)V a method_5725 moveTo + m (Ljd;Ldtc;)Z a method_30632 isColliding + m (Ljd;Ldtc;ZZLexc;)Z a method_51701 vibrationAndSoundEffectsFromBlock + m (Lji$a;D)D a method_18797 applyPistonMovementRestriction + m (Lji$a;Ll$a;)Lexc; a method_30633 getRelativePortalPosition + m (Ljm;)V a method_32876 gameEvent + m (Ljm;Lbsr;)V a method_32875 gameEvent + m (Lp;)V a method_5819 fillCrashReportCategory + m (Lub;)V a method_5749 readAdditionalSaveData + m (Lxw;)Lxw; a method_5813 method_5813 + m (ZLexc;)V a method_60607 setOnGroundWithMovement + m ([D)Luh; a method_5846 newDoubleList + m ([F)Luh; a method_5726 newFloatList + m ()Z aA method_30230 isOnPortalCooldown + m ()V aB method_5730 lavaHurt + m ()I aC method_20802 getRemainingFireTicks + m ()V aD method_5646 clearFire + m ()V aE method_5825 onBelowWorld + m ()Z aF method_24828 onGround + m ()V aG method_36974 tryCheckInsideBlocks + m ()V aH method_36975 playEntityOnFireExtinguishedSound + m ()V aI method_46395 extinguishFire + m ()V aJ method_33573 processFlappingMovement + m ()Ljd; aK method_43260 getOnPosLegacy + m ()Ljd; aL method_23314 getBlockPosBelowThatAffectsMyMovement + m ()Ljd; aM method_23312 getOnPos + m ()F aN method_23313 getBlockJumpFactor + m ()F aO method_23326 getBlockSpeedFactor + m ()F aP method_5867 nextStep + m ()Lavo; aQ method_5737 getSwimSound + m ()Lavo; aR method_5625 getSwimSplashSound + m ()Lavo; aS method_5672 getSwimHighSpeedSplashSound + m ()V aT method_5852 checkInsideBlocks + m ()V aU method_51295 waterSwimSound + m ()V aV method_5801 onFlap + m ()Z aW method_5776 isFlapping + m ()Z aX method_5701 isSilent + m ()Z aY method_5740 isNoGravity + m ()D aZ method_7490 getDefaultGravity + m (DDD)V a_ method_5814 setPos + m (I)Lbug; a_ method_32318 getSlot + m (Ljava/util/UUID;)V a_ method_5826 setUUID + m ()V ad method_5848 stopRiding + m ()Lexc; ag method_60478 getKnownMovement + m ()V ak method_18375 unRide + m ()Laig; al method_43389 getPositionCodec + m ()Lbsx; am method_5864 getType + m ()Ljava/util/Set; ao method_5752 getTags + m ()V ap method_5768 kill + m ()V aq method_31472 discard + m ()Laka; ar method_5841 getEntityData + m ()V as method_36209 onClientRemoval + m ()Lbua; at method_18376 getPose + m ()Lewx; au method_33332 makeBoundingBox + m ()V av method_23311 reapplyPosition + m ()V aw method_5670 baseTick + m ()V ax method_31473 checkBelowWorld + m ()V ay method_30229 setPortalCooldown + m ()I az method_51848 getPortalCooldown + m (B)V b method_5711 handleEntityEvent + m (D)V b method_5840 setViewScale + m (DD)V b method_5872 turn + m (DDDFF)V b method_5808 moveTo + m (FF)V b method_60608 absRotateTo + m (IZ)V b method_5729 setSharedFlag + m (Lawu;)D b method_5861 getFluidHeight + m (Lbrk;)Z b method_5679 isInvulnerableTo + m (Lbtn;)Lexc; b method_24829 getDismountLocationForPassenger + m (Lbua;)V b method_18380 setPose + m (Lcuq;)Lcjh; b method_5775 spawnAtLocation + m (Ldtc;)V b method_51296 playMuffledStepSound + m (Lewx;)Z b method_5629 isFree + m (Lexc;FF)Lexc; b method_18795 getInputVector + m (Ljava/lang/String;)Z b method_5738 removeTag + m (Ljd;Ldtc;)V b method_5712 playStepSound + m (Lub;)V b method_5652 addAdditionalSaveData + m (Lwz;)V b method_5665 setCustomName + m (ZLexc;)V b method_51703 checkSupportingBlock + m ()Z bA method_5863 isPickable + m ()Z bB method_5810 isPushable + m ()Z bC method_5638 repositionEntityAfterLoad + m ()Ljava/lang/String; bD method_5653 getEncodeId + m ()Z bE method_5805 isAlive + m ()Z bF method_5757 isInWall + m ()Z bG method_30948 canBeCollidedWith + m ()Z bH method_5709 showVehicleHealth + m ()V bI method_5772 ejectPassengers + m ()V bJ method_29239 removeVehicle + m ()Z bK method_48921 couldAcceptPassenger + m ()F bL method_5871 getPickRadius + m ()Lexc; bM method_5720 getLookAngle + m ()Lexb; bN method_5802 getRotationVector + m ()Lexc; bO method_5663 getForward + m ()V bP method_60698 handlePortal + m ()I bQ method_5806 getDimensionChangingDelay + m ()Z bR method_5809 isOnFire + m ()Z bS method_5765 isPassenger + m ()Z bT method_5782 isVehicle + m ()Z bU method_49693 dismountsUnderwater + m ()Z bV method_52534 canControlVehicle + m ()Z bW method_5715 isShiftKeyDown + m ()Z bX method_21749 isSteppingCarefully + m ()Z bY method_21750 isSuppressingBounce + m ()Z bZ method_21751 isDiscrete + m (Lcmx;)V b_ method_5694 playerTouch + m ()D ba method_56989 getGravity + m ()V bb method_56990 applyGravity + m ()Lbsr$b; bc method_33570 getMovementEmission + m ()Z bd method_33189 dampensVibrations + m ()Z be method_5753 fireImmune + m ()Z bf method_5799 isInWater + m ()Z bg method_5721 isInWaterOrRain + m ()Z bh method_5637 isInWaterRainOrBubble + m ()Z bi method_5816 isInWaterOrBubble + m ()Z bj method_52535 isInLiquid + m ()Z bk method_5869 isUnderWater + m ()V bl method_5790 updateSwimming + m ()Z bm method_5876 updateInWaterStateAndDoFluidPushing + m ()V bn method_5713 updateInWaterStateAndDoWaterCurrentPushing + m ()V bo method_5746 doWaterSplashEffect + m ()Ldtc; bp method_43261 getBlockStateOnLegacy + m ()Ldtc; bq method_25936 getBlockStateOn + m ()Z br method_27298 canSpawnSprintParticle + m ()V bs method_5839 spawnSprintParticle + m ()Z bt method_5771 isInLava + m ()F bu method_5718 getLightLevelDependentMagicValue + m ()V bv method_22862 setOldPosAndRot + m ()V bw method_5785 markHurt + m ()Lji; bx method_58149 getNearestViewDirection + m ()Lexc; by method_33571 getEyePosition + m ()Z bz method_49108 canBeHitByProjectile + m (D)D c method_23316 getX + m (DDD)V c method_5859 teleportTo + m (FF)Lexc; c method_5631 calculateViewVector + m (Lbrk;)V c method_48922 handleDamageEvent + m (Lbsr;)Z c method_54756 method_54756 + m (Lbua;)Z c method_41328 hasPose + m (Ldtc;)Z c method_51702 isStateClimbable + m (Lexc;)V c method_33574 setPos + m (Ljd;Ldtc;)V c method_51297 walkingStepSound + m (Lwz;)Lwz; c method_5856 removeAction + m (Z)V c method_33572 setSharedFlagOnFire + m ()Ljava/lang/String; cA method_5845 getStringUUID + m ()Z cC method_5675 isPushedByFluid + m ()D cD method_5824 getViewScale + m ()Z cE method_5807 isCustomNameVisible + m ()Z cF method_5733 shouldShowName + m ()V cG method_46396 fixupDimensions + m ()Lji; cH method_5735 getDirection + m ()Lji; cI method_5755 getMotionDirection + m ()Lxf; cJ method_5769 createHoverEvent + m ()F cL method_5751 getEyeHeight + m ()Lexc; cM method_29919 getLeashOffset + m ()Ldcw; cN method_5770 getCommandSenderWorld + m ()Lnet/minecraft/server/MinecraftServer; cO method_5682 getServer + m ()Z cP method_5833 onlyOpCanSetNbt + m ()Lbtn; cQ method_5642 getControllingPassenger + m ()Z cR method_42148 hasControllingPassenger + m ()Ljava/util/List; cS method_5685 getPassengers + m ()Lbsr; cT method_31483 getFirstPassenger + m ()Ljava/lang/Iterable; cW method_5736 getIndirectPassengers + m ()I cX method_54757 countPlayerPassengers + m ()Z cY method_5817 hasExactlyOnePlayerPassenger + m ()Lbsr; cZ method_5668 getRootVehicle + m ()D c_ method_53830 lerpTargetX + m ()Z ca method_21752 isDescending + m ()Z cb method_18276 isCrouching + m ()Z cc method_5624 isSprinting + m ()Z cd method_5681 isSwimming + m ()Z ce method_20232 isVisuallySwimming + m ()Z cf method_20448 isVisuallyCrawling + m ()Z cg method_36361 hasGlowingTag + m ()Z ch method_5851 isCurrentlyGlowing + m ()Z ci method_5767 isInvisible + m ()Z cj method_52172 isOnRails + m ()Leyb; ck method_5781 getTeam + m ()I cl method_5748 getMaxAirSupply + m ()I cm method_5669 getAirSupply + m ()I cn method_32312 getTicksFrozen + m ()F co method_32313 getPercentFrozen + m ()Z cp method_32314 isFullyFrozen + m ()I cq method_32315 getTicksRequiredToFreeze + m ()V cr method_45318 checkSlowFallDistance + m ()Lwz; cs method_23315 getTypeName + m ()F ct method_5791 getYHeadRot + m ()Z cu method_5732 isAttackable + m ()Z cv method_5655 isInvulnerable + m ()V cw method_30076 removeAfterChangingDimensions + m ()I cx method_5850 getMaxFallDistance + m ()Z cy method_5862 displayFireAnimation + m (D)D d method_23322 getRandomX + m (DDD)V d method_45166 teleportRelative + m (F)V d method_5639 igniteForSeconds + m (FF)Lexc; d method_18863 calculateUpVector + m (Laqv;)V d method_5837 startSeenByPlayer + m (Lbsr;)V d method_49789 method_49789 + m (Lbua;)F d method_18381 getEyeHeight + m (Lcmx;)Z d method_5756 isInvisibleTo + m (Ldtc;)Z d method_49790 shouldPlayAmethystStepSound + m (Lexc;)Z d method_39759 isHorizontalCollisionMinor + m (Ljd;)Z d method_51849 isSupportedBy + m (Lub;)Z d method_5786 saveAsPassenger + m (Z)V d method_24830 setOnGround + m ()V dA method_5982 checkDespawn + m ()Lcuq; dB method_31480 getPickResult + m ()Z dC method_32316 canFreeze + m ()Z dD method_40071 isFreezing + m ()F dE method_36454 getYRot + m ()F dF method_43078 getVisualRotationYInDegrees + m ()F dG method_36455 getXRot + m ()Z dH method_48155 canSprint + m ()F dI method_49476 maxUpStep + m ()Z dJ method_31481 isRemoved + m ()Lbsr$c; dK method_35049 getRemovalReason + m ()V dL method_31482 unsetRemoved + m ()Ldcw; dO method_37908 level + m ()Lbrl; dP method_48923 damageSources + m ()Lka; dQ method_56673 registryAccess + m ()Layw; dR method_59922 getRandom + m ()Lcuq; dS method_59958 getWeaponItem + m ()D d_ method_53827 lerpTargetY + m ()Z da method_5787 isControlledByLocalInstance + m ()Z db method_6034 isEffectiveAi + m ()Lbsr; dc method_5854 getVehicle + m ()Lbsr; dd method_49694 getControlledVehicle + m ()Lavq; de method_5634 getSoundSource + m ()I df method_5676 getFireImmuneTicks + m ()Let; dg method_5671 createCommandSourceStack + m ()Z dh method_33724 touchingUnloadedChunk + m ()D di method_29241 getFluidJumpThreshold + m ()F dj method_17681 getBbWidth + m ()F dk method_17682 getBbHeight + m ()Lbst; dl method_56072 getAttachments + m ()Lexc; dm method_19538 position + m ()Lexc; dn method_43390 trackingPosition + m ()Ldtc; dp method_55667 getInBlockState + m ()Ldcd; dq method_31476 chunkPosition + m ()Lexc; dr method_18798 getDeltaMovement + m ()I ds method_31477 getBlockX + m ()D dt method_23317 getX + m ()I du method_31478 getBlockY + m ()D dv method_23318 getY + m ()D dw method_23319 getRandomY + m ()D dx method_23320 getEyeY + m ()I dy method_31479 getBlockZ + m ()D dz method_23321 getZ + m (D)D e method_23323 getY + m (DDD)V e method_24203 moveTo + m (F)Ljd; e method_43258 getOnPos + m (I)V e method_5838 setId + m (Laqv;)V e method_5742 stopSeenByPlayer + m (Lbsr;)V e method_37216 method_37216 + m (Ldtc;)Z e method_29494 method_29494 + m (Lexc;)Lexc; e method_18794 limitPistonMovement + m (Ljd;)Ljd; e method_49788 getPrimaryStepSoundBlockPos + m (Lub;)Z e method_5662 save + m (Z)V e method_5803 setSilent + m ()F e_ method_53831 lerpTargetYRot + m (D)D f method_23324 getZ + m (DDD)V f method_43391 syncPacketPositionCodec + m (F)V f method_5734 playSwimSound + m (I)V f method_51850 setPortalCooldown + m (Lbsr;)F f method_5739 distanceTo + m (Lexc;)V f method_29495 moveTo + m (Ljd;)V f method_60950 placePortalTicket + m (Lub;)Lub; f method_5647 saveWithoutId + m (Z)V f method_5875 setNoGravity + m (D)D g method_23325 getRandomZ + m (DDD)Z g method_5654 isFree + m (F)Lexc; g method_5828 getViewVector + m (I)V g method_56073 igniteForTicks + m (Lbsr;)D g method_5858 distanceToSqr + m (Lexc;)D g method_5707 distanceToSqr + m (Lub;)V g method_5651 load + m (Z)V g method_5660 setShiftKeyDown + m (DDD)V h method_30634 absMoveTo + m (F)F h method_5695 getViewXRot + m (I)V h method_20803 setRemainingFireTicks + m (Lbsr;)V h method_5697 push + m (Lexc;)V h method_60491 push + m (Z)V h method_5728 setSprinting + m ()Lewx; h_ method_5830 getBoundingBoxForCulling + m (DDD)D i method_5649 distanceToSqr + m (F)F i method_5705 getViewYRot + m (I)Z i method_5795 getSharedFlag + m (Lbsr;)Z i method_30949 canCollideWith + m (Lexc;)V i method_18799 setDeltaMovement + m (Z)V i method_5796 setSwimming + m ()V i_ method_18382 refreshDimensions + m (DDD)V j method_5762 push + m (F)Lexc; j method_18864 getUpVector + m (I)V j method_5855 setAirSupply + m (Lbsr;)V j method_24201 positionRider + m (Lexc;)V j method_45319 addDeltaMovement + m (Z)V j method_5834 setGlowingTag + m ()Lepj; j_ method_5657 getPistonPushReaction + m (DDD)Z k method_5727 shouldRender + m (F)Lexc; k method_5836 getEyePosition + m (I)V k method_32317 setTicksFrozen + m (Lbsr;)V k method_5644 onPassengerTurned + m (Z)V k method_5648 setInvisible + m ()V l method_5773 tick + m (DDD)V l method_5750 lerpMotion + m (F)Lexc; l method_31166 getLightProbePosition + m (I)Z l method_5687 hasPermissions + m (Lbsr;)Lexc; l method_55668 getVehicleAttachmentPoint + m (Z)V l method_5700 onAboveBubbleCol + m (DDD)V m method_5632 moveTowardsClosestSpace + m (F)Lexc; m method_30950 getPosition + m (Lbsr;)Lexc; m method_52538 getPassengerRidingPosition + m (Z)V m method_5764 onInsideBubbleColumn + m ()V n method_38785 resetFallDistance + m (DDD)V n method_18800 setDeltaMovement + m (F)V n method_5879 animateHurt + m (Lbsr;)Z n method_5804 startRiding + m (Z)V n method_5684 setInvulnerable + m (DDD)V o method_23327 setPosRaw + m (F)V o method_5847 setYHeadRot + m (Lbsr;)Z o method_5860 canRide + m (Z)Z o method_5822 canUsePortal + m (F)V p method_5636 setYBodyRot + m (Lbsr;)V p method_5627 addPassenger + m (Z)V p method_5880 setCustomNameVisible + m (F)Lexc; q method_45321 getLeashOffset + m (Lbsr;)V q method_5793 removePassenger + m (Z)V q method_32319 setIsInPowderSnow + m ()I q_ method_22861 getTeamColor + m (F)F r method_60951 getPreciseBodyRotation + m (Lbsr;)Z r method_5818 canAddPassenger + m ()Z r_ method_5696 isIgnoringBlockTriggers + m (F)Lexc; s method_30951 getRopeHoldPosition + m (Lbsr;)Z s method_5722 isAlliedTo + m (F)V t method_36456 setYRot + m (Lbsr;)Z t method_5779 is + m ()V u method_5842 rideTick + m (F)V u method_36457 setXRot + m (Lbsr;)Z u method_5698 skipAttackInteraction + m ()V v method_37215 playAmethystStepSound + m (Lbsr;)V v method_5719 copyPosition + m ()Z w method_5778 isInRain + m (Lbsr;)V w method_5878 restoreFrom + m (Lbsr;)Z x method_5626 hasPassenger + m (Lbsr;)Z y method_5794 isPassengerOfSameVehicle + m (Lbsr;)Z z method_5821 hasIndirectPassenger + m (Lbsx;Ldcw;)V + m ()V +c bsr$1 net/minecraft/class_1297$1 net/minecraft/world/entity/Entity$1 + f [I a field_6041 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_6040 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c bsr$a net/minecraft/class_1297$class_4738 net/minecraft/world/entity/Entity$MoveFunction +c bsr$b net/minecraft/class_1297$class_5799 net/minecraft/world/entity/Entity$MovementEmission + f Lbsr$b; a field_28630 NONE + f Lbsr$b; b field_28631 SOUNDS + f Lbsr$b; c field_28632 EVENTS + f Lbsr$b; d field_28633 ALL + f Z e field_28634 sounds + f Z f field_28635 events + f [Lbsr$b; g field_28636 $VALUES + m ()Z a method_33576 emitsAnything + m ()Z b method_33577 emitsEvents + m ()Z c method_33578 emitsSounds + m ()[Lbsr$b; d method_36602 $values + m (Ljava/lang/String;IZZ)V + m ()V +c bsr$c net/minecraft/class_1297$class_5529 net/minecraft/world/entity/Entity$RemovalReason + f Lbsr$c; a field_26998 KILLED + f Lbsr$c; b field_26999 DISCARDED + f Lbsr$c; c field_27000 UNLOADED_TO_CHUNK + f Lbsr$c; d field_27001 UNLOADED_WITH_PLAYER + f Lbsr$c; e field_27002 CHANGED_DIMENSION + f Z f field_27003 destroy + f Z g field_27004 save + f [Lbsr$c; h field_27005 $VALUES + m ()Z a method_31486 shouldDestroy + m ()Z b method_31487 shouldSave + m ()[Lbsr$c; c method_36603 $values + m (Ljava/lang/String;IZZ)V + m ()V +c bss net/minecraft/class_9064 net/minecraft/world/entity/EntityAttachment + f Lbss; a field_47743 PASSENGER + f Lbss; b field_47744 VEHICLE + f Lbss; c field_47745 NAME_TAG + f Lbss; d field_48320 WARDEN_CHEST + f Lbss$a; e field_47746 fallback + f [Lbss; f field_47747 $VALUES + m ()[Lbss; a method_55669 $values + m (FF)Ljava/util/List; a method_55670 createFallbackPoints + m (Ljava/lang/String;ILbss$a;)V + m ()V +c bss$a net/minecraft/class_9064$class_9065 net/minecraft/world/entity/EntityAttachment$Fallback + f Ljava/util/List; a field_47748 ZERO + f Lbss$a; b field_47749 AT_FEET + f Lbss$a; c field_47750 AT_HEIGHT + f Lbss$a; d field_48321 AT_CENTER + m (FF)Ljava/util/List; a method_56074 method_56074 + m (FF)Ljava/util/List; b method_55671 method_55671 + m (FF)Ljava/util/List; c method_55672 method_55672 + m ()V +c bst net/minecraft/class_9066 net/minecraft/world/entity/EntityAttachments + f Ljava/util/Map; a field_47752 attachments + m ()Lbst$a; a method_55673 builder + m (FF)Lbst; a method_55844 createDefault + m (FFF)Lbst; a method_55674 scale + m (Lbss;IF)Lexc; a method_55675 getNullable + m (Lexc;F)Lexc; a method_55676 transformPoint + m (Ljava/util/List;FFF)Ljava/util/List; a method_55677 scalePoints + m (Lbss;IF)Lexc; b method_55678 get + m (Lbss;IF)Lexc; c method_55679 getClamped + m (Ljava/util/Map;)V +c bst$a net/minecraft/class_9066$class_9067 net/minecraft/world/entity/EntityAttachments$Builder + f Ljava/util/Map; a field_47753 attachments + m (FF)Lbst; a method_55680 build + m (Lbss;)Ljava/util/List; a method_55681 method_55681 + m (Lbss;FFF)Lbst$a; a method_55682 attach + m (Lbss;Lexc;)Lbst$a; a method_55683 attach + m ()V +c bsu net/minecraft/class_4048 net/minecraft/world/entity/EntityDimensions + f F a comp_2185 width + f F b comp_2186 height + f F c comp_2187 eyeHeight + f Lbst; d comp_2188 attachments + f Z e comp_2189 fixed + m ()F a comp_2185 width + m (DDD)Lewx; a method_30231 makeBoundingBox + m (F)Lbsu; a method_18383 scale + m (FF)Lbsu; a method_19539 scale + m (Lbst$a;)Lbsu; a method_55684 withAttachments + m (Lexc;)Lewx; a method_30757 makeBoundingBox + m ()F b comp_2186 height + m (F)Lbsu; b method_55685 withEyeHeight + m (FF)Lbsu; b method_18384 scalable + m ()F c comp_2187 eyeHeight + m (F)F c method_55686 defaultEyeHeight + m (FF)Lbsu; c method_18385 fixed + m ()Lbst; d comp_2188 attachments + m ()Z e comp_2189 fixed + m (FFZ)V + m (FFFLbst;Z)V +c bsv net/minecraft/class_6024 net/minecraft/world/entity/EntityEvent + f B A field_29996 PERMISSION_LEVEL_OWNERS + f B B field_29997 ATTACK_BLOCKED + f B C field_29998 SHIELD_DISABLED + f B D field_29999 FISHING_ROD_REEL_IN + f B E field_30000 ARMORSTAND_WOBBLE + f B F field_30002 STOP_OFFER_FLOWER + f B G field_30003 TALISMAN_ACTIVATE + f B H field_30006 DOLPHIN_LOOKING_FOR_TREASURE + f B I field_30007 RAVAGER_STUNNED + f B J field_30008 TRUSTING_FAILED + f B K field_30009 TRUSTING_SUCCEEDED + f B L field_30010 VILLAGER_SWEAT + f B M field_30013 FOX_EAT + f B N field_30014 TELEPORT + f B O field_30015 MAINHAND_BREAK + f B P field_30016 OFFHAND_BREAK + f B Q field_30017 HEAD_BREAK + f B R field_30018 CHEST_BREAK + f B S field_30019 LEGS_BREAK + f B T field_30020 FEET_BREAK + f B U field_30022 HONEY_SLIDE + f B V field_30023 HONEY_JUMP + f B W field_30024 SWAP_HANDS + f B X field_30025 CANCEL_SHAKE_WETNESS + f B Y field_33454 START_RAM + f B Z field_33455 END_RAM + f B a field_30021 JUMP + f B aa field_33691 POOF + f B ab field_38094 TENDRILS_SHIVER + f B ac field_38847 SONIC_CHARGE + f B ad field_42621 SNIFFER_DIGGING_SOUND + f B ae field_49074 ARMADILLO_PEEK + f B af field_49215 BODY_BREAK + f B b field_30028 DEATH + f B c field_30029 START_ATTACKING + f B d field_30030 STOP_ATTACKING + f B e field_30031 TAMING_FAILED + f B f field_30032 TAMING_SUCCEEDED + f B g field_30033 SHAKE_WETNESS + f B h field_30034 USE_ITEM_COMPLETE + f B i field_30035 EAT_GRASS + f B j field_30036 OFFER_FLOWER + f B k field_30037 LOVE_HEARTS + f B l field_30038 VILLAGER_ANGRY + f B m field_30039 VILLAGER_HAPPY + f B n field_30040 WITCH_HAT_MAGIC + f B o field_30041 ZOMBIE_CONVERTING + f B p field_30042 FIREWORKS_EXPLODE + f B q field_30043 IN_LOVE_HEARTS + f B r field_30044 SQUID_ANIM_SYNCH + f B s field_30045 SILVERFISH_MERGE_ANIM + f B t field_30046 GUARDIAN_ATTACK_SOUND + f B u field_30047 REDUCED_DEBUG_INFO + f B v field_30048 FULL_DEBUG_INFO + f B w field_30049 PERMISSION_LEVEL_ALL + f B x field_30050 PERMISSION_LEVEL_MODERATORS + f B y field_30051 PERMISSION_LEVEL_GAMEMASTERS + f B z field_29995 PERMISSION_LEVEL_ADMINS + m ()V +c bsw net/minecraft/class_1301 net/minecraft/world/entity/EntitySelector + f Ljava/util/function/Predicate; a field_6154 ENTITY_STILL_ALIVE + f Ljava/util/function/Predicate; b field_6157 LIVING_ENTITY_STILL_ALIVE + f Ljava/util/function/Predicate; c field_6153 ENTITY_NOT_BEING_RIDDEN + f Ljava/util/function/Predicate; d field_6152 CONTAINER_ENTITY_SELECTOR + f Ljava/util/function/Predicate; e field_6156 NO_CREATIVE_OR_SPECTATOR + f Ljava/util/function/Predicate; f field_6155 NO_SPECTATORS + f Ljava/util/function/Predicate; g field_35589 CAN_BE_COLLIDED_WITH + m (DDDD)Ljava/util/function/Predicate; a method_5909 withinDistance + m (DDDDLbsr;)Z a method_5912 method_5912 + m (Lbsr;)Ljava/util/function/Predicate; a method_5911 pushableBy + m (Lbsr;Lbsr;)Z a method_5906 method_5906 + m (Lbsr;Leyi;Leyi$a;Lbsr;)Z a method_5915 method_5915 + m (Lbsr;)Ljava/util/function/Predicate; b method_5913 notRiding + m (Lbsr;)Z c method_24517 method_24517 + m (Lbsr;)Z d method_5910 method_5910 + m (Lbsr;)Z e method_5914 method_5914 + m (Lbsr;)Z f method_5908 method_5908 + m (Lbsr;)Z g method_32878 method_32878 + m ()V + m ()V +c bsw$a net/minecraft/class_1301$class_1302 net/minecraft/world/entity/EntitySelector$MobCanWearArmorEntitySelector + f Lcuq; a field_6158 itemStack + m (Lbsr;)Z a method_5916 test + m (Lcuq;)V +c bsx net/minecraft/class_1299 net/minecraft/world/entity/EntityType + f Lbsx; A field_6129 DRAGON_FIREBALL + f Lbsx; B field_6123 DROWNED + f Lbsx; C field_6144 EGG + f Lbsx; D field_6086 ELDER_GUARDIAN + f Lbsx; E field_6110 END_CRYSTAL + f Lbsx; F field_6116 ENDER_DRAGON + f Lbsx; G field_6082 ENDER_PEARL + f Lbsx; H field_6091 ENDERMAN + f Lbsx; I field_6128 ENDERMITE + f Lbsx; J field_6090 EVOKER + f Lbsx; K field_6060 EVOKER_FANGS + f Lbsx; L field_6064 EXPERIENCE_BOTTLE + f Lbsx; M field_6044 EXPERIENCE_ORB + f Lbsx; N field_6061 EYE_OF_ENDER + f Lbsx; O field_6089 FALLING_BLOCK + f Lbsx; P field_6133 FIREWORK_ROCKET + f Lbsx; Q field_17943 FOX + f Lbsx; R field_37419 FROG + f Lbsx; S field_6080 FURNACE_MINECART + f Lbsx; T field_6107 GHAST + f Lbsx; U field_6095 GIANT + f Lbsx; V field_28401 GLOW_ITEM_FRAME + f Lbsx; W field_28402 GLOW_SQUID + f Lbsx; X field_30052 GOAT + f Lbsx; Y field_6118 GUARDIAN + f Lbsx; Z field_21973 HOGLIN + f Lbsx; aA field_22281 PIGLIN + f Lbsx; aB field_25751 PIGLIN_BRUTE + f Lbsx; aC field_6105 PILLAGER + f Lbsx; aD field_6042 POLAR_BEAR + f Lbsx; aE field_6045 POTION + f Lbsx; aF field_6062 PUFFERFISH + f Lbsx; aG field_6140 RABBIT + f Lbsx; aH field_6134 RAVAGER + f Lbsx; aI field_6073 SALMON + f Lbsx; aJ field_6115 SHEEP + f Lbsx; aK field_6109 SHULKER + f Lbsx; aL field_6100 SHULKER_BULLET + f Lbsx; a field_38384 ALLAY + f Lbsx; aM field_6125 SILVERFISH + f Lbsx; aN field_6137 SKELETON + f Lbsx; aO field_6075 SKELETON_HORSE + f Lbsx; aP field_6069 SLIME + f Lbsx; aQ field_6049 SMALL_FIREBALL + f Lbsx; aR field_42622 SNIFFER + f Lbsx; aS field_6047 SNOW_GOLEM + f Lbsx; aT field_6068 SNOWBALL + f Lbsx; aU field_6142 SPAWNER_MINECART + f Lbsx; aV field_6135 SPECTRAL_ARROW + f Lbsx; aW field_6079 SPIDER + f Lbsx; aX field_6114 SQUID + f Lbsx; aY field_6098 STRAY + f Lbsx; aZ field_23214 STRIDER + f Lbsx; aa field_6058 HOPPER_MINECART + f Lbsx; ab field_6139 HORSE + f Lbsx; ac field_6071 HUSK + f Lbsx; ad field_6065 ILLUSIONER + f Lbsx; ae field_42623 INTERACTION + f Lbsx; af field_6147 IRON_GOLEM + f Lbsx; ag field_6052 ITEM + f Lbsx; ah field_42456 ITEM_DISPLAY + f Lbsx; ai field_6043 ITEM_FRAME + f Lbsx; aj field_50124 OMINOUS_ITEM_SPAWNER + f Lbsx; ak field_6066 FIREBALL + f Lbsx; al field_6138 LEASH_KNOT + f Lbsx; am field_6112 LIGHTNING_BOLT + f Lbsx; an field_6074 LLAMA + f Lbsx; ao field_6124 LLAMA_SPIT + f Lbsx; ap field_6102 MAGMA_CUBE + f Lbsx; aq field_33456 MARKER + f Lbsx; ar field_6096 MINECART + f Lbsx; as field_6143 MOOSHROOM + f Lbsx; at field_6057 MULE + f Lbsx; au field_6081 OCELOT + f Lbsx; av field_6120 PAINTING + f Lbsx; aw field_6146 PANDA + f Lbsx; ax field_6104 PARROT + f Lbsx; ay field_6078 PHANTOM + f Lbsx; az field_6093 PIG + f Lorg/slf4j/Logger; bB field_6088 LOGGER + f Ljm$c; bC field_36398 builtInRegistryHolder + f F bD field_30054 MAGIC_HORSE_WIDTH + f I bE field_42459 DISPLAY_TRACKING_RANGE + f Lbsx$b; bF field_6101 factory + f Lbtq; bG field_6094 category + f Lcom/google/common/collect/ImmutableSet; bH field_25355 immuneTo + f Z bI field_6056 serialize + f Z bJ field_6072 summon + f Z bK field_18981 fireImmune + f Z bL field_19423 canSpawnFarFromPlayer + f Lbsx; b field_6083 AREA_EFFECT_CLOUD + f I bM field_24085 clientTrackingRange + f I bN field_24086 updateInterval + f Ljava/lang/String; bO field_6106 descriptionId + f Lwz; bP field_6092 description + f Lakq; bQ field_16526 lootTable + f Lbsu; bR field_18070 dimensions + f F bS field_50125 spawnDimensionsScale + f Lcpl; bT field_40115 requiredFeatures + f Lbsx; ba field_37420 TADPOLE + f Lbsx; bb field_42457 TEXT_DISPLAY + f Lbsx; bc field_6063 TNT + f Lbsx; bd field_6053 TNT_MINECART + f Lbsx; be field_17714 TRADER_LLAMA + f Lbsx; bf field_6127 TRIDENT + f Lbsx; bg field_6111 TROPICAL_FISH + f Lbsx; bh field_6113 TURTLE + f Lbsx; bi field_6059 VEX + f Lbsx; bj field_6077 VILLAGER + f Lbsx; bk field_6117 VINDICATOR + f Lbsx; bl field_17713 WANDERING_TRADER + f Lbsx; bm field_38095 WARDEN + f Lbsx; bn field_47243 WIND_CHARGE + f Lbsx; bo field_6145 WITCH + f Lbsx; bp field_6119 WITHER + f Lbsx; bq field_6076 WITHER_SKELETON + f Lbsx; br field_6130 WITHER_SKULL + f Lbsx; bs field_6055 WOLF + f Lbsx; bt field_23696 ZOGLIN + f Lbsx; bu field_6051 ZOMBIE + f Lbsx; bv field_6048 ZOMBIE_HORSE + f Lbsx; bw field_6054 ZOMBIE_VILLAGER + f Lbsx; bx field_6050 ZOMBIFIED_PIGLIN + f Lbsx; by field_6097 PLAYER + f Lbsx; bz field_6103 FISHING_BOBBER + f Lbsx; c field_47754 ARMADILLO + f Lbsx; d field_6131 ARMOR_STAND + f Lbsx; e field_6122 ARROW + f Lbsx; f field_28315 AXOLOTL + f Lbsx; g field_6108 BAT + f Lbsx; h field_20346 BEE + f Lbsx; i field_6099 BLAZE + f Lbsx; j field_42460 BLOCK_DISPLAY + f Lbsx; k field_6121 BOAT + f Lbsx; l field_49148 BOGGED + f Lbsx; m field_47244 BREEZE + f Lbsx; n field_49075 BREEZE_WIND_CHARGE + f Lbsx; o field_40116 CAMEL + f Lbsx; p field_16281 CAT + f Lbsx; q field_6084 CAVE_SPIDER + f Lbsx; r field_38096 CHEST_BOAT + f Lbsx; s field_6126 CHEST_MINECART + f Lbsx; t field_6132 CHICKEN + f Lbsx; u field_6070 COD + f Lbsx; v field_6136 COMMAND_BLOCK_MINECART + f Lbsx; w field_6085 COW + f Lbsx; x field_6046 CREEPER + f Lbsx; y field_6087 DOLPHIN + f Lbsx; z field_6067 DONKEY + m (DDD)Lewx; a method_58629 getSpawnAABB + m (Laqu;Lcmx;Lcxh;Lbsr;)V a method_48008 method_48008 + m (Laqu;Lcuq;Lcmx;)Ljava/util/function/Consumer; a method_48009 createDefaultStackConfig + m (Laqu;Lcuq;Lcmx;Ljd;Lbtr;ZZ)Lbsr; a method_5894 spawn + m (Laqu;Ljava/util/function/Consumer;Ljd;Lbtr;ZZ)Lbsr; a method_5899 spawn + m (Laqu;Ljd;Lbtr;)Lbsr; a method_47821 spawn + m (Lawu;)Z a method_20210 is + m (Lbsr;)Lbsr; a method_31488 tryCast + m (Lbsx;)Lakr; a method_5890 getKey + m (Ldcw;)Lbsr; a method_5883 create + m (Ldcw;Lbsx;)Lbsr; a method_17846 method_17846 + m (Ldcw;Lcmx;Lbsr;Lcxh;)V a method_5881 updateCustomEntityTag + m (Ldcz;Ljd;ZLewx;)D a method_5884 getYOffset + m (Ldtc;)Z a method_29496 isBlockDangerous + m (Ljava/lang/String;)Ljava/util/Optional; a method_5898 byString + m (Ljava/lang/String;Lbsx$a;)Lbsx; a method_5895 register + m (Ljava/util/List;Ldcw;)Ljava/util/stream/Stream; a method_31489 loadEntitiesRecursive + m (Ljava/util/function/Consumer;Laqu;Lcuq;Lcmx;)Ljava/util/function/Consumer; a method_48156 appendDefaultStackConfig + m (Ljava/util/function/Consumer;Lcuq;)Ljava/util/function/Consumer; a method_48012 appendCustomNameConfig + m (Ljq;)Z a method_53125 is + m (Lub;)Ljava/util/Optional; a method_17684 by + m (Lub;Lbsr;)V a method_17839 method_17839 + m (Lub;Ldcw;)Ljava/util/Optional; a method_5892 create + m (Lub;Ldcw;Ljava/util/function/Function;)Lbsr; a method_17842 loadEntityRecursive + m (Lub;Ldcw;Ljava/util/function/Function;Lbsr;)Lbsr; a method_17843 method_17843 + m (Lwz;Lbsr;)V a method_48010 method_48010 + m ()Z b method_5893 canSerialize + m (Laqu;Ljava/util/function/Consumer;Ljd;Lbtr;ZZ)Lbsr; b method_5888 create + m (Lbsr;)V b method_48013 method_48013 + m (Ljava/util/function/Consumer;Laqu;Lcuq;Lcmx;)Ljava/util/function/Consumer; b method_48011 appendCustomEntityStackConfig + m (Lub;)V b method_17847 method_17847 + m (Lub;Ldcw;)Ljava/util/Optional; b method_17848 loadStaticEntity + m ()Z c method_5896 canSummon + m (Lbsr;)V c method_47823 method_47823 + m ()Z d method_19946 fireImmune + m ()Z e method_20814 canSpawnFarFromPlayer + m ()Lbtq; f method_5891 getCategory + m ()Ljava/lang/String; g method_5882 getDescriptionId + m ()Lwz; h method_5897 getDescription + m ()Ljava/lang/String; j method_35050 toShortString + m ()Lakq; k method_16351 getDefaultLootTable + m ()F l method_17685 getWidth + m ()F m method_17686 getHeight + m ()Lbsu; n method_18386 getDimensions + m ()I o method_18387 clientTrackingRange + m ()I p method_18388 updateInterval + m ()Z q method_18389 trackDeltas + m ()Ljm$c; r method_40124 builtInRegistryHolder + m (Lbsx$b;Lbtq;ZZZZLcom/google/common/collect/ImmutableSet;Lbsu;FIILcpl;)V + m ()V +c bsx$1 net/minecraft/class_1299$1 net/minecraft/world/entity/EntityType$1 + f Ljava/util/Spliterator; a field_27006 val$tagSpliterator + f Ldcw; b field_27007 val$level + f Ljava/util/List; c field_27008 val$entities + m (Ldcw;Ljava/util/function/Consumer;Luy;)V a method_31490 method_31490 + m (Ljava/util/function/Consumer;Lbsr;)Lbsr; a method_31491 method_31491 + m (Ljava/util/Spliterator;Ldcw;Ljava/util/List;)V +c bsx$a net/minecraft/class_1299$class_1300 net/minecraft/world/entity/EntityType$Builder + f Lbsx$b; a field_6148 factory + f Lbtq; b field_6149 category + f Lcom/google/common/collect/ImmutableSet; c field_25356 immuneTo + f Z d field_6151 serialize + f Z e field_6150 summon + f Z f field_18982 fireImmune + f Z g field_19424 canSpawnFarFromPlayer + f I h field_24087 clientTrackingRange + f I i field_24088 updateInterval + f Lbsu; j field_18071 dimensions + f F k field_50126 spawnDimensionsScale + f Lbst$a; l field_47755 attachments + f Lcpl; m field_40117 requiredFeatures + m ()Lbsx$a; a method_5901 noSummon + m (F)Lbsx$a; a method_58630 spawnDimensionsScale + m (FF)Lbsx$a; a method_17687 sized + m (I)Lbsx$a; a method_27299 clientTrackingRange + m (Lbss;FFF)Lbsx$a; a method_56075 attach + m (Lbss;Lexc;)Lbsx$a; a method_56076 attach + m (Lbsx$b;Lbtq;)Lbsx$a; a method_5903 of + m (Lbsx;Ldcw;)Lbsr; a method_5900 method_5900 + m (Lbtq;)Lbsx$a; a method_5902 createNothing + m (Lexc;)Lbsx$a; a method_55688 vehicleAttachment + m (Ljava/lang/String;)Lbsx; a method_5905 build + m ([F)Lbsx$a; a method_55689 passengerAttachments + m ([Lcpj;)Lbsx$a; a method_45323 requiredFeatures + m ([Ldfy;)Lbsx$a; a method_29497 immuneTo + m ([Lexc;)Lbsx$a; a method_55690 passengerAttachments + m ()Lbsx$a; b method_5904 noSave + m (F)Lbsx$a; b method_55687 eyeHeight + m (I)Lbsx$a; b method_27300 updateInterval + m ()Lbsx$a; c method_19947 fireImmune + m (F)Lbsx$a; c method_55691 ridingOffset + m ()Lbsx$a; d method_20815 canSpawnFarFromPlayer + m (F)Lbsx$a; d method_55692 nameTagOffset + m (Lbsx$b;Lbtq;)V +c bsx$b net/minecraft/class_1299$class_4049 net/minecraft/world/entity/EntityType$EntityFactory +c bsy net/minecraft/class_1304 net/minecraft/world/entity/EquipmentSlot + f Lbsy; a field_6173 MAINHAND + f Lbsy; b field_6171 OFFHAND + f Lbsy; c field_6166 FEET + f Lbsy; d field_6172 LEGS + f Lbsy; e field_6174 CHEST + f Lbsy; f field_6169 HEAD + f Lbsy; g field_48824 BODY + f I h field_51935 NO_COUNT_LIMIT + f Lazk$a; i field_45739 CODEC + f Lbsy$a; j field_6170 type + f I k field_6168 index + f I l field_51936 countLimit + f I m field_6167 filterFlag + f Ljava/lang/String; n field_6175 name + f [Lbsy; o field_6176 $VALUES + m ()Lbsy$a; a method_5925 getType + m (I)I a method_32320 getIndex + m (Lcuq;)Lcuq; a method_60610 limit + m (Ljava/lang/String;)Lbsy; a method_5924 byName + m ()I b method_5927 getIndex + m ()I d method_5926 getFilterFlag + m ()Ljava/lang/String; e method_5923 getName + m ()Z f method_46643 isArmor + m ()[Lbsy; g method_36604 $values + m (Ljava/lang/String;ILbsy$a;IIILjava/lang/String;)V + m (Ljava/lang/String;ILbsy$a;IILjava/lang/String;)V + m ()V +c bsy$a net/minecraft/class_1304$class_1305 net/minecraft/world/entity/EquipmentSlot$Type + f Lbsy$a; a field_6177 HAND + f Lbsy$a; b field_6178 HUMANOID_ARMOR + f Lbsy$a; c field_48825 ANIMAL_ARMOR + f [Lbsy$a; d field_6179 $VALUES + m ()[Lbsy$a; a method_36605 $values + m (Ljava/lang/String;I)V + m ()V +c bsz net/minecraft/class_9274 net/minecraft/world/entity/EquipmentSlotGroup + f Lbsz; a field_49216 ANY + f Lbsz; b field_49217 MAINHAND + f Lbsz; c field_49218 OFFHAND + f Lbsz; d field_49219 HAND + f Lbsz; e field_49220 FEET + f Lbsz; f field_49221 LEGS + f Lbsz; g field_49222 CHEST + f Lbsz; h field_49223 HEAD + f Lbsz; i field_49224 ARMOR + f Lbsz; j field_50127 BODY + f Ljava/util/function/IntFunction; k field_49225 BY_ID + f Lcom/mojang/serialization/Codec; l field_49226 CODEC + f Lyx; m field_49227 STREAM_CODEC + f I n field_49228 id + f Ljava/lang/String; o field_49229 key + f Ljava/util/function/Predicate; p field_49230 predicate + f [Lbsz; q field_49231 $VALUES + m ()[Lbsz; a method_57285 $values + m (Lbsy;)Lbsz; a method_59524 bySlot + m (Lbsy;Lbsy;)Z a method_57287 method_57287 + m (Lbsz;)I a method_57288 method_57288 + m (Lbsy;)Z b method_57286 test + m (Lbsz;)I b method_57290 method_57290 + m (Lbsy;)Z c method_57289 method_57289 + m (Lbsy;)Z d method_57291 method_57291 + m (Ljava/lang/String;IILjava/lang/String;Ljava/util/function/Predicate;)V + m (Ljava/lang/String;IILjava/lang/String;Lbsy;)V + m ()V +c bsz$1 net/minecraft/class_9274$1 net/minecraft/world/entity/EquipmentSlotGroup$1 + f [I a field_51350 $SwitchMap$net$minecraft$world$entity$EquipmentSlot + m ()V +c bta net/minecraft/class_9652 net/minecraft/world/entity/EquipmentTable + f Lcom/mojang/serialization/Codec; a field_51374 DROP_CHANCES_CODEC + f Lcom/mojang/serialization/Codec; b field_51375 CODEC + f Lakq; c comp_2621 lootTable + f Ljava/util/Map; d comp_2622 slotDropChances + m ()Lakq; a comp_2621 lootTable + m (F)Ljava/util/Map; a method_59658 createForAllSlots + m (Lcom/mojang/datafixers/util/Either;)Ljava/util/Map; a method_59659 method_59659 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59660 method_59660 + m (Ljava/util/List;F)Ljava/util/Map; a method_59661 createForAllSlots + m (Ljava/util/Map;)Lcom/mojang/datafixers/util/Either; a method_59662 method_59662 + m ()Ljava/util/Map; b comp_2622 slotDropChances + m (Lakq;Ljava/util/Map;)V + m ()V +c btb net/minecraft/class_9460 net/minecraft/world/entity/EquipmentUser + m (Lakq;Leru;JLjava/util/Map;)V a method_58632 equip + m (Lakq;Leru;Ljava/util/Map;)V a method_59663 equip + m (Lbsy;)Lcuq; a method_6118 getItemBySlot + m (Lbsy;F)V a method_5946 setDropChance + m (Lbsy;Lcuq;)V a method_5673 setItemSlot + m (Lbta;Leru;)V a method_58631 equip + m (Lcuq;Ljava/util/List;)Lbsy; a method_58633 resolveSlot +c btc net/minecraft/class_1303 net/minecraft/world/entity/ExperienceOrb + f I b field_30055 LIFETIME + f I c field_30056 ENTITY_SCAN_PERIOD + f I d field_30057 MAX_FOLLOW_DIST + f I e field_30058 ORB_GROUPS_PER_AREA + f D f field_30059 ORB_MERGE_DISTANCE + f I g field_6164 age + f I h field_6161 health + f I i field_6159 value + f I j field_27009 count + f Lcmx; k field_6162 followingPlayer + m (IILbtc;)Z a method_31492 method_31492 + m (Laqu;Lexc;I)V a method_31493 award + m (Laqv;I)I a method_35051 repairPlayerItems + m (Lbtc;)Z a method_31494 canMerge + m (Lbtc;II)Z a method_31495 canMerge + m (I)I b method_5918 getExperienceValue + m (Laqu;Lexc;I)Z b method_31496 tryMergeToExisting + m (Lbtc;)V b method_31497 merge + m ()I p method_5919 getValue + m ()I s method_5920 getIcon + m ()V t method_31498 scanForEntities + m ()V v method_5921 setUnderwaterMovement + m (Ldcw;DDDI)V + m (Lbsx;Ldcw;)V +c btd net/minecraft/class_1307 net/minecraft/world/entity/FlyingMob + m (Lbsx;Ldcw;)V +c bte net/minecraft/class_5776 net/minecraft/world/entity/GlowSquid + f Lajw; cg field_28403 DATA_DARK_TICKS_REMAINING + m (Lbsx;Lddl;Lbtr;Ljd;Layw;)Z a method_38962 checkGlowSquidSpawnRules + m (I)V c method_33333 setDarkTicks + m ()I x method_33334 getDarkTicksRemaining + m (Lbsx;Ldcw;)V + m ()V +c btf net/minecraft/class_7248 net/minecraft/world/entity/HasCustomInventoryScreen + m (Lcmx;)V b method_6722 openCustomInventoryScreen +c btg net/minecraft/class_1306 net/minecraft/world/entity/HumanoidArm + f Lbtg; a field_6182 LEFT + f Lbtg; b field_6183 RIGHT + f Lcom/mojang/serialization/Codec; c field_45121 CODEC + f Ljava/util/function/IntFunction; d field_46166 BY_ID + f I e field_38385 id + f Ljava/lang/String; f field_6181 name + f Ljava/lang/String; g field_45122 translationKey + f [Lbtg; h field_6180 $VALUES + m ()Lbtg; e method_5928 getOpposite + m ()[Lbtg; f method_36606 $values + m (Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V + m ()V +c bth net/minecraft/class_8150 net/minecraft/world/entity/Interaction + f Lorg/slf4j/Logger; b field_42624 LOGGER + f Lajw; c field_42625 DATA_WIDTH_ID + f Lajw; d field_42626 DATA_HEIGHT_ID + f Lajw; e field_42627 DATA_RESPONSE_ID + f Ljava/lang/String; f field_42628 TAG_WIDTH + f Ljava/lang/String; g field_42629 TAG_HEIGHT + f Ljava/lang/String; h field_42630 TAG_ATTACK + f Ljava/lang/String; i field_42631 TAG_INTERACTION + f Ljava/lang/String; j field_42632 TAG_RESPONSE + f Lbth$a; k field_42633 attack + f Lbth$a; l field_42634 interaction + m (F)V a method_49109 setWidth + m (Lcom/mojang/datafixers/util/Pair;)V a method_49110 method_49110 + m (Lub;Luy;)V a method_49111 method_49111 + m (Z)V a method_49112 setResponse + m (F)V b method_49113 setHeight + m (Lcom/mojang/datafixers/util/Pair;)V b method_49114 method_49114 + m (Lub;Luy;)V b method_49115 method_49115 + m ()F s method_49116 getWidth + m ()F t method_49117 getHeight + m ()Z v method_49118 getResponse + m ()Lbsu; w method_49119 getDimensions + m (Lbsx;Ldcw;)V + m ()V +c bth$a net/minecraft/class_8150$class_8151 net/minecraft/world/entity/Interaction$PlayerAction + f Lcom/mojang/serialization/Codec; a field_42635 CODEC + f Ljava/util/UUID; b comp_1284 player + f J c comp_1285 timestamp + m ()Ljava/util/UUID; a comp_1284 player + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49120 method_49120 + m ()J b comp_1285 timestamp + m (Ljava/util/UUID;J)V + m ()V +c bti net/minecraft/class_4980 net/minecraft/world/entity/ItemBasedSteering + f I a field_30060 MIN_BOOST_TIME + f I b field_30061 MAX_BOOST_TIME + f Laka; c field_23218 entityData + f Lajw; d field_23219 boostTimeAccessor + f Lajw; e field_23220 hasSaddleAccessor + f Z f field_23215 boosting + f I g field_23216 boostTime + m ()V a method_26307 onSynced + m (Layw;)Z a method_26308 boost + m (Lub;)V a method_26309 addAdditionalSaveData + m (Z)V a method_26310 setSaddle + m ()V b method_49478 tickBoost + m (Lub;)V b method_26312 readAdditionalSaveData + m ()F c method_49479 boostFactor + m ()Z d method_26311 hasSaddle + m ()I e method_49480 boostTimeTotal + m (Laka;Lajw;Lajw;)V +c btj net/minecraft/class_4981 net/minecraft/world/entity/ItemSteerable + m ()Z a method_6577 boost +c btk net/minecraft/class_9817 net/minecraft/world/entity/Leashable + f Ljava/lang/String; b_ field_52216 LEASH_TAG + f D q_ field_52314 LEASH_TOO_FAR_DIST + f D r_ field_52315 LEASH_ELASTIC_DIST + m ()Lbsr; A method_60952 getLeashHolder + m ()Z N_ method_60953 isLeashed + m ()Z O_ method_60954 mayBeLeashed + m ()Lbtk$a; X_ method_60955 getLeashData + m (Lbsr;F)Z a method_60956 handleLeashAtDistance + m (Lbsr;Lbsr;F)V a method_61161 legacyElasticRangeLeashBehaviour + m (Lbsr;Lbsr;Z)V a method_60957 setLeashedTo + m (Lbsr;Lbtk$a;)V a method_60958 restoreLeashFromSave + m (Lbsr;ZZ)V a method_60959 dropLeash + m (Lbtk$a;)V a method_60960 setLeashData + m (Ljava/util/UUID;)Luy; a method_60961 method_60961 + m (Lub;Lbtk$a;)V a method_60962 writeLeashData + m (ZZ)V a method_5932 dropLeash + m (Lbsr;)V b method_60963 closeRangeLeashBehaviour + m (Lbsr;F)V b method_61162 elasticRangeLeashBehaviour + m (Lbsr;Z)V b method_60964 setLeashedTo + m (Lbsr;)V b_ method_60965 tickLeash + m (Lbsr;)Lbsr; c method_60966 getLeashHolder + m (Lub;)Lbtk$a; c method_60967 readLeashData + m (I)V h_ method_60968 setDelayedLeashHolderId + m ()Z q method_60969 canHaveALeashAttachedToIt + m ()Z y method_5931 canBeLeashed + m ()V z method_60970 leashTooFarBehaviour +c btk$a net/minecraft/class_9817$class_9818 net/minecraft/world/entity/Leashable$LeashData + f Lbsr; a field_52217 leashHolder + f Lcom/mojang/datafixers/util/Either; b field_52218 delayedLeashInfo + f I c field_52219 delayedLeashHolderId + m (Lbsr;)V a method_60971 setLeashHolder + m (Lcom/mojang/datafixers/util/Either;)V + m (Lbsr;)V + m (I)V +c btl net/minecraft/class_6375 net/minecraft/world/entity/LerpingModel + m ()Ljava/util/Map; a method_36976 getModelRotationValues +c btm net/minecraft/class_1538 net/minecraft/world/entity/LightningBolt + f J b field_7186 seed + f I c field_30062 START_LIFE + f D d field_33906 DAMAGE_RADIUS + f D e field_33907 DETECTION_RADIUS + f I f field_7185 life + f I g field_7183 flashes + f Z h field_7184 visualOnly + f Laqv; i field_7182 cause + f Ljava/util/Set; j field_33904 hitEntities + f I k field_33905 blocksSetOnFire + m (Ldcw;Ljd;Ldtc;)V a method_34708 method_34708 + m (Ldcw;Ljd;Ljd$a;I)V a method_34709 randomWalkCleaningCopper + m (Z)V a method_29498 setVisualOnly + m (I)V b method_6960 spawnFire + m (Laqv;)V b method_6961 setCause + m (Lbsr;)Z b method_37218 method_37218 + m (Ldcw;Ljd;)V b method_34707 clearCopperOnLightningStrike + m (Laqv;)Z c method_37219 method_37219 + m (Ldcw;Ljd;)Ljava/util/Optional; c method_34710 randomStepCleaningCopper + m ()Laqv; p method_35052 getCause + m ()I s method_37220 getBlocksSetOnFire + m ()Ljava/util/stream/Stream; t method_37221 getHitEntities + m ()V v method_31499 powerLightningRod + m ()Ljd; w method_36607 getStrikePosition + m (Lbsx;Ldcw;)V +c btn net/minecraft/class_1309 net/minecraft/world/entity/LivingEntity + f I aD field_30066 LIVING_ENTITY_FLAG_SPIN_ATTACK + f Lajw; aE field_6257 DATA_LIVING_ENTITY_FLAGS + f Lbsu; aF field_18072 SLEEPING_DIMENSIONS + f F aG field_30068 EXTRA_RENDER_CULLING_SIZE_WITH_BIG_HAT + f F aH field_47756 DEFAULT_BABY_SCALE + f Ljava/lang/String; aI field_51995 ATTRIBUTES_FIELD + f Z aJ field_6252 swinging + f Lbqq; aK field_6266 swingingArm + f I aL field_6279 swingTime + f I aM field_6218 removeArrowTime + f I aN field_20347 removeStingerTime + f I aO field_6235 hurtTime + f I aP field_6254 hurtDuration + f I aQ field_6213 deathTime + f F aR field_6229 oAttackAnim + f F aS field_6251 attackAnim + f I aT field_6273 attackStrengthTicker + f Lbup; aU field_42108 walkAnimation + f I aV field_6269 invulnerableDuration + f F aW field_6244 timeOffs + f F aX field_6262 rotA + f F aY field_6283 yBodyRot + f F aZ field_6220 yBodyRotO + f I bA field_6222 useItemRemaining + f I bB field_6239 fallFlyTicks + f I bC field_6261 autoSpinAttackTicks + f F bD field_51569 autoSpinAttackDmg + f Lcuq; bE field_51570 autoSpinAttackItemStack + f Lbuq; bF field_18321 brain + f F bG field_47757 appliedScale + f Lbuu; bH field_6231 SPEED_MODIFIER_SPRINTING + f I bI field_30078 DAMAGE_SOURCE_TIMEOUT + f I bJ field_30080 TICKS_PER_ELYTRA_FREE_FALL_EVENT + f I bK field_30081 FREE_FALL_EVENTS_PER_ELYTRA_BREAK + f D bL field_33908 MAX_LINE_OF_SIGHT_TEST_RANGE + f Lorg/slf4j/Logger; b field_36332 LOGGER + f Lajw; bM field_6247 DATA_HEALTH_ID + f Lajw; bN field_49792 DATA_EFFECT_PARTICLES + f Lajw; bO field_6214 DATA_EFFECT_AMBIENCE_ID + f Lajw; bP field_6219 DATA_ARROW_COUNT_ID + f Lajw; bQ field_20348 DATA_STINGER_COUNT_ID + f Lajw; bR field_18073 SLEEPING_POS_ID + f I bS field_49793 PARTICLE_FREQUENCY_WHEN_INVISIBLE + f F bT field_49972 ITEM_USE_EFFECT_START_FRACTION + f Lbut; bU field_6260 attributes + f Lbrh; bV field_6256 combatTracker + f Ljava/util/Map; bW field_6280 activeEffects + f Ljv; bX field_6234 lastHandItemStacks + f Ljv; bY field_6248 lastArmorItemStacks + f Lcuq; bZ field_48826 lastBodyItemStack + f F ba field_6241 yHeadRot + f F bb field_6259 yHeadRotO + f Lcmx; bc field_6258 lastHurtByPlayer + f I bd field_6238 lastHurtByPlayerTime + f Z be field_6272 dead + f I bf field_6278 noActionTime + f F bg field_6217 oRun + f F bh field_6233 run + f F bi field_6255 animStep + f F bj field_6275 animStepO + f F bk field_6215 rotOffs + f I bl field_6232 deathScore + f F bm field_6253 lastHurt + f Z bn field_6282 jumping + f F bo field_6212 xxa + f F bp field_6227 yya + f F bq field_6250 zza + f I br field_6210 lerpSteps + f D bs field_6224 lerpX + f D bt field_6245 lerpY + f D bu field_6263 lerpZ + f D bv field_6284 lerpYRot + f D bw field_6221 lerpXRot + f D bx field_45123 lerpYHeadRot + f I by field_6265 lerpHeadSteps + f Lcuq; bz field_6277 useItem + f Ljava/lang/String; c field_45740 TAG_ACTIVE_EFFECTS + f Z ca field_30082 discardFriction + f Z cb field_6285 effectsDirty + f Lbtn; cc field_6274 lastHurtByMob + f I cd field_6230 lastHurtByMobTimestamp + f Lbtn; ce field_6236 lastHurtMob + f I cf field_6270 lastHurtMobTimestamp + f F cg field_6287 speed + f I ch field_6228 noJumpDelay + f F ci field_6246 absorptionAmount + f Ljd; cj field_6268 lastPos + f Ljava/util/Optional; ck field_22418 lastClimbablePos + f Lbrk; cl field_6276 lastDamageSource + f J cm field_6226 lastDamageStamp + f F cn field_6243 swimAmount + f F co field_6264 swimAmountO + f Z cp field_37421 skipDropExperience + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; cq field_51571 activeLocationDependentEnchantments + f Lakr; d field_27859 SPEED_MODIFIER_POWDER_SNOW_ID + f Lakr; e field_51996 SPRINTING_MODIFIER_ID + f I i field_30069 HAND_SLOTS + f I j field_30070 ARMOR_SLOTS + f I k field_30071 EQUIPMENT_SLOT_OFFSET + f I l field_30072 ARMOR_SLOT_OFFSET + f I m field_48827 BODY_ARMOR_OFFSET + f I n field_30073 SWING_DURATION + f I o field_30074 PLAYER_HURT_EXPERIENCE_TIME + f D p field_30075 MIN_MOVEMENT_DISTANCE + f D q field_30076 DEFAULT_BASE_GRAVITY + f I r field_30077 DEATH_DURATION + f I s field_30063 USE_ITEM_INTERVAL + f F t field_44874 BASE_JUMP_POWER + f I u field_30064 LIVING_ENTITY_FLAG_IS_USING + f I v field_30065 LIVING_ENTITY_FLAG_OFF_HAND + m (F)V A method_6125 setSpeed + m (Lbsr;)V A method_6114 setLastHurtMob + m ()V B method_52543 refreshDirtyAttributes + m (F)F B method_6055 getAttackAnim + m (Lbsr;)D B method_18390 getVisibilityPercent + m ()I C method_6028 getCurrentSwingDuration + m (F)V C method_6073 setAbsorptionAmount + m (Lbsr;)V C method_23883 dropExperience + m ()V D method_36549 makePoofParticles + m (F)V D method_52544 internalSetAbsorptionAmount + m (Lbsr;)Z D method_6121 doHurtTarget + m ()V E method_30127 swapHandItems + m (F)F E method_18802 getFrictionInfluencedSpeed + m (Lbsr;)V E method_6087 doPush + m ()V F method_30128 detectEquipmentUpdates + m (Lbsr;)Z F method_6057 hasLineOfSight + m ()Ljava/util/Map; H method_30129 collectEquipmentChanges + m ()V I method_6053 updateFallFlying + m ()V J method_6076 updatingUsingItem + m ()V K method_6027 updateInvisibilityStatus + m ()Z L method_22382 shouldTriggerItemUseEffects + m ()V L_ method_6040 completeUsingItem + m ()V N method_6072 updateSwimAmount + m ()Z O method_18406 checkBedExists + m (DD)V a method_48761 indicateDamage + m (DZLexc;)Lexc; a method_26317 getFluidFallingAdjustedMovement + m (F)F a method_6024 getSwimAmount + m (ID)V a method_52539 lerpHeadRotationStep + m (Laqu;Lbrk;)V a method_16080 dropAllDeathLoot + m (Laqu;Lbrk;Z)V a method_6099 dropCustomDeathLoot + m (Laqu;Lbsr;)I a method_59923 getExperienceReward + m (Lbqq;)V a method_6104 swing + m (Lbqq;Lcuq;)V a method_6122 setItemInHand + m (Lbqq;Z)V a method_23667 swing + m (Lbrk;)V a method_6078 die + m (Lbrk;F[Lbsy;)V a method_57292 doHurtEquipment + m (Lbrk;Z)V a method_16077 dropFromLootTable + m (Lbrz;)V a method_6129 onEffectRemoved + m (Lbrz;Lbsr;)V a method_6020 onEffectAdded + m (Lbrz;ZLbsr;)V a method_6009 onEffectUpdated + m (Lbsr;I)V a method_6103 take + m (Lbsr;Lbrk;)F a method_59924 getKnockback + m (Lbsx;)Z a method_5973 canAttackType + m (Lbsy;)Lcuq; a method_6118 getItemBySlot + m (Lbsy;Lcuq;)V a method_5673 setItemSlot + m (Lbsy;Lcuq;Lcuq;)V a method_6116 onEquipItem + m (Lbtn;)V a method_6015 setLastHurtByMob + m (Lbtn;Lbsy;)Lbug; a method_32321 createEquipmentSlotAccess + m (Lbtn;Lbsy;Lcuq;)Z a method_32323 method_32323 + m (Lbtn;Lcef;)Z a method_18391 canAttack + m (Lbut;Lcuq;Lbsy;Ljm;Lbuu;)V a method_57294 method_57294 + m (Lcjh;)V a method_29499 onItemPickup + m (Lcmx;Lexc;)V a method_49481 tickRidden + m (Lcom/mojang/serialization/Dynamic;)Lbuq; a method_18867 makeBrain + m (Lcpr;)V a method_18865 addEatEffect + m (Lcul;Lbsy;)V a method_20235 onEquippedItemBroken + m (Lcul;Lcuq;)Z a method_24519 method_24519 + m (Lcuq;)V a method_37119 updateUsingItem + m (Lcuq;I)V a method_6037 spawnItemParticles + m (Lcuq;Lbsy;Ljm;Lbuu;)V a method_57293 method_57293 + m (Lcuq;Lcuq;)Z a method_45324 equipmentHasChanged + m (Ldcw;Lcuq;)Lcuq; a method_60492 eat + m (Ldcw;Lcuq;Lcpr;)Lcuq; a method_18866 eat + m (Lepe;)Z a method_26319 canStandOnFluid + m (Lewx;Lewx;)V a method_6035 checkAutoSpinAttack + m (Lexc;)V a method_6091 travel + m (Lexc;F)Lexc; a method_26318 handleRelativeFrictionAndCalculateMovement + m (Ljava/util/List;Lbsy;Lcuq;)V a method_30120 method_30120 + m (Ljava/util/Map;)V a method_30121 handleHandSwap + m (Ljd;)V a method_18392 setPosToBed + m (Ljd;Z)V a method_6006 setRecordPlayingNearby + m (Lub;Ljd;)V a method_18393 method_18393 + m (Lub;Luy;)V a method_28305 method_28305 + m (DDDZ)Z b method_6082 randomTeleport + m (F)F b method_56077 sanitizeScale + m (Laqu;Ljd;)V b method_6126 onChangedBlock + m (Lavo;)V b method_56078 makeSound + m (Lbqq;)Lcuq; b method_5998 getItemInHand + m (Lbrk;F)V b method_6105 hurtArmor + m (Lbrz;)Z b method_6092 addEffect + m (Lbrz;Lbsr;)Z b method_37222 addEffect + m (Lbsy;)Z b method_44201 doesEmitEquipEvent + m (Lbsy;Lcuq;)V b method_30122 setLastArmorItem + m (Lcmx;Lexc;)Lexc; b method_49482 getRiddenInput + m (Lcul;)Z b method_24518 isHolding + m (Lcuq;I)V b method_6098 triggerItemUseEffects + m (Lexc;)Lexc; b method_18801 handleOnClimbable + m (Ljava/util/Map;)V b method_30123 handleEquipmentChanges + m (Ljava/util/function/Predicate;)Z b method_24520 isHolding + m (Ljd;)V b method_18403 startSleeping + m (Ljm;)Z b method_6059 hasEffect + m (F)V c method_6025 heal + m (IZ)V c method_6085 setLivingEntityFlag + m (Lawu;)V c method_6010 jumpInLiquid + m (Lbqq;)V c method_6019 startUsingItem + m (Lbrk;F)V c method_36977 hurtHelmet + m (Lbrz;)Z c method_6049 canBeAffected + m (Lbrz;Lbsr;)V c method_26082 forceAddEffect + m (Lbsr$c;)V c method_60699 triggerOnDeathMobEffects + m (Lbsy;)Z c method_6084 hasItemInSlot + m (Lbsy;Lcuq;)V c method_30124 setLastHandItem + m (Lbtn;)Z c method_18395 canAttack + m (Lcmx;)V c method_29505 setLastHurtByPlayer + m (Lcmx;Lexc;)V c method_49483 travelRidden + m (Lcuq;)Lavo; c method_18807 getDrinkingSound + m (Ljava/util/Collection;)Z c method_6089 areAllEffectsAmbient + m (Ljd;)V c method_18404 method_18404 + m (Ljd;Ldtc;)Z c method_6077 trapdoorUsableAsLadder + m (Ljm;)Lbrz; c method_6112 getEffect + m (Lbqq;)Lbsy; d method_56079 getSlotForHand + m (Lbrk;)Lavo; d method_6011 getHurtSound + m (Lbrk;F)F d method_6132 getDamageAfterArmorAbsorb + m (Lbrz;)V d method_52197 sendEffectToPassengers + m (Lbsr;)V d method_6038 dismountVehicle + m (Lbsy;)Z d method_56991 canUseSlot + m (Lbtn;)V d method_6090 blockUsingShield + m (Lcuq;)Lavo; d method_18869 getEatingSound + m (Ljm;)Lbrz; d method_6111 removeEffectNoUpdate + m ()Lbuq; dT method_18868 getBrain + m ()Lbuq$b; dU method_28306 brainProvider + m ()Lbuv$a; dV method_26827 createLivingAttributes + m ()Z dW method_6094 canBreatheUnderwater + m ()Z dX method_59925 hasLandedInLiquid + m ()V dY method_32324 removeFrost + m ()V dZ method_32325 tryAddFrost + m (FF)I e method_23329 calculateFallDamage + m (Lbrk;)V e method_6013 playHurtSound + m (Lbrk;F)F e method_6036 getDamageAfterMagicAbsorb + m (Lbrz;)V e method_24311 method_24311 + m (Lbsy;)Lcuq; e method_30125 getLastArmorItem + m (Lbtn;)V e method_6060 blockedByShield + m (Lbua;)Lbsu; e method_55694 getDefaultDimensions + m (Lcmx;)F e method_49485 getRiddenSpeed + m (Lcuq;)V e method_37410 verifyEquippedItem + m (Ljm;)Z e method_6016 removeEffect + m ()Lakq; eA method_5989 getLootTable + m ()J eB method_51851 getLootTableSeed + m ()V eC method_41329 skipDropExperience + m ()Z eD method_41330 wasExperienceConsumed + m ()F eE method_48157 getHurtDir + m ()Lewx; eF method_53510 getHitbox + m ()Ljava/util/Map; eG method_59926 activeLocationDependentEnchantments + m ()Lbtn$a; eH method_39760 getFallSounds + m ()Ljava/util/Optional; eI method_24832 getLastClimbablePos + m ()V eJ method_23328 playBlockFallSound + m ()I eK method_6096 getArmorValue + m ()Lbrh; eL method_6066 getCombatTracker + m ()Lbtn; eM method_6124 getKillCredit + m ()F eN method_6063 getMaxHealth + m ()F eO method_52541 getMaxAbsorption + m ()I eP method_6022 getArrowCount + m ()I eQ method_21753 getStingerCount + m ()V eR method_6119 updateSwingTime + m ()Lbut; eS method_6127 getAttributes + m ()Lcuq; eT method_6047 getMainHandItem + m ()Lcuq; eU method_6079 getOffhandItem + m ()Ljava/lang/Iterable; eV method_5661 getArmorSlots + m ()Ljava/lang/Iterable; eW method_5877 getHandSlots + m ()Ljava/lang/Iterable; eX method_56674 getArmorAndBodyArmorSlots + m ()Ljava/lang/Iterable; eY method_56675 getAllSlots + m ()F eZ method_18396 getArmorCoverPercentage + m ()F ea method_17825 getAgeScale + m ()F eb method_55693 getScale + m ()Z ec method_29920 isAffectedByFluids + m ()V ed method_6108 tickDeath + m ()Z ee method_6054 shouldDropExperience + m ()Z ef method_27071 shouldDropLoot + m ()I eg method_6110 getBaseExperienceReward + m ()Z eh method_6071 isAlwaysExperienceDropper + m ()Lbtn; ei method_6065 getLastHurtByMob + m ()I ej method_6117 getLastHurtByMobTimestamp + m ()Lbtn; ek method_6052 getLastHurtMob + m ()I el method_6083 getLastHurtMobTimestamp + m ()I em method_6131 getNoActionTime + m ()Z en method_35053 shouldDiscardFriction + m ()V eo method_6050 tickEffects + m ()Z ep method_33190 canBeSeenAsEnemy + m ()Z eq method_36608 canBeSeenByAnyone + m ()V er method_6069 removeEffectParticles + m ()Z es method_6012 removeAllEffects + m ()Ljava/util/Collection; et method_6026 getActiveEffects + m ()Ljava/util/Map; eu method_6088 getActiveEffectsMap + m ()Z ev method_5999 isInvertedHealAndHarm + m ()F ew method_6032 getHealth + m ()Z ex method_29504 isDeadOrDying + m ()Lbrk; ey method_6081 getLastDamageSource + m ()V ez method_16078 dropEquipment + m (FF)F f method_6031 tickHeadTurn + m (Lbrk;)Z f method_6061 isDamageSourceBlocked + m (Lbrk;F)V f method_6074 actuallyHurt + m (Lbsy;)Lcuq; f method_30126 getLastHandItem + m (Lbtn;)V f method_23733 createWitherRose + m (Lbua;)Lewx; f method_24833 getLocalBoundsForPose + m (Lcuq;)Z f method_18397 canTakeItem + m (Ljm;)Lbus; f method_5996 getAttribute + m ()Z fA method_6128 isFallFlying + m ()I fB method_6003 getFallFlyingTicks + m ()Z fC method_6086 isAffectedByPotions + m ()Z fD method_6102 attackable + m ()Lcom/google/common/collect/ImmutableList; fE method_24831 getDismountPoses + m ()Ljava/util/Optional; fF method_18398 getSleepingPos + m ()V fG method_18399 clearSleepingPos + m ()Z fH method_6113 isSleeping + m ()V fI method_18400 stopSleeping + m ()Lji; fJ method_18401 getBedOrientation + m ()Z fK method_42149 canDisableShield + m ()Z fL method_56992 hasInfiniteMaterials + m ()V f_ method_6000 onEnterCombat + m ()F fa method_6107 getSoundVolume + m ()F fb method_6017 getVoicePitch + m ()Z fc method_6062 isImmobile + m ()F fd method_6106 getJumpPower + m ()F fe method_37416 getJumpBoostPower + m ()V ff method_6043 jumpFromGround + m ()V fg method_6093 goDownInWater + m ()F fh method_6120 getWaterSlowDown + m ()F fi method_49484 getFlyingSpeed + m ()F fj method_6029 getSpeed + m ()F fk method_53964 getMaxHeadRotationRelativeToBody + m ()Z fl method_29503 isSensitiveToWater + m ()V fm method_6023 serverAiStep + m ()Z fn method_6123 isAutoSpinAttack + m ()F fo method_6067 getAbsorptionAmount + m ()V fp method_6008 updateEffectVisibility + m ()Lbtg; fq method_6068 getMainArm + m ()Z fr method_6115 isUsingItem + m ()Lbqq; fs method_6058 getUsedItemHand + m ()Lcuq; ft method_6030 getUseItem + m ()I fu method_6014 getUseItemRemainingTicks + m ()I fv method_6048 getTicksUsingItem + m ()V fw method_6075 releaseUsingItem + m ()V fx method_6021 stopUsingItem + m ()Z fy method_6039 isBlocking + m ()Z fz method_21754 isSuppressingSlidingDownLadder + m (Lbrk;)Z g method_6095 checkTotemDeathProtection + m (Lbsy;)B g method_20237 entityEventForEquipmentBreak + m (Lbtn;)V g method_5997 doAutoAttackOnTouch + m (Lbua;)Z g method_52542 wouldNotSuffocateAtTargetPose + m (Lcuq;)Lcuq; g method_18808 getProjectile + m (Ljd;)V g method_18402 setSleepingPos + m (Ljm;)D g method_45325 getAttributeValue + m ()V g_ method_6044 onLeaveCombat + m (Lcuq;)Lbsy; h method_32326 getEquipmentSlotForItem + m (Ljd;)Lexc; h method_20477 method_20477 + m (Ljm;)D h method_45326 getAttributeBaseValue + m (Lcuq;)V i method_6045 breakItem + m (Ljd;)Ljava/lang/Boolean; i method_18405 method_18405 + m (Ljm;)V i method_52540 onAttributeUpdated + m (Lexc;)Lexc; k method_31079 resetForwardDirectionOfRelativePortalPosition + m (I)I m method_6130 decreaseAirSupply + m ()V m_ method_6007 aiStep + m (I)I n method_6064 increaseAirSupply + m ()Lavo; n_ method_6002 getDeathSound + m (I)V o method_16826 setNoActionTime + m ()Z o_ method_6109 isBaby + m (DDD)V p method_6005 knockback + m (I)V p method_6097 setArrowCount + m ()Z p_ method_6101 onClimbable + m (I)V q method_21755 setStingerCount + m ()V r method_6070 pushEntities + m (I)Lavo; r method_6041 getFallDamageSound + m (Z)V r method_35054 setDiscardFriction + m ()V s method_58150 updateSynchronizedMobEffectParticles + m (I)Lbsy; s method_32322 getEquipmentSlot + m (Z)V s method_29242 calculateEntityAnimation + m (Z)V t method_6100 setJumping + m ()V v method_36362 updateGlowingStatus + m (F)V v method_6033 setHealth + m (F)I w method_56993 getComfortableFallDistance + m (F)V x method_6056 hurtCurrentlyUsedShield + m (F)F y method_56994 getJumpPower + m (F)V z method_48565 updateWalkAnimation + m (Lbsx;Ldcw;)V + m ()V +c btn$1 net/minecraft/class_1309$1 net/minecraft/world/entity/LivingEntity$1 + f [I a field_6288 $SwitchMap$net$minecraft$world$entity$EquipmentSlot$Type + f [I b field_19169 $SwitchMap$net$minecraft$world$entity$EquipmentSlot + m ()V +c btn$a net/minecraft/class_1309$class_6823 net/minecraft/world/entity/LivingEntity$Fallsounds + f Lavo; a comp_301 small + f Lavo; b comp_302 big + m ()Lavo; a comp_301 small + m ()Lavo; b comp_302 big + m (Lavo;Lavo;)V +c bto net/minecraft/class_6335 net/minecraft/world/entity/Marker + f Ljava/lang/String; b field_33457 DATA_TAG + f Lub; c field_33458 data + m (Lbsx;Ldcw;)V +c btp net/minecraft/class_1308 net/minecraft/world/entity/Mob + f F bH field_30091 MAX_WEARING_ARMOR_CHANCE + f F bI field_30083 MAX_PICKUP_LOOT_CHANCE + f F bJ field_30084 MAX_ENCHANTED_ARMOR_CHANCE + f F bK field_30085 MAX_ENCHANTED_WEAPON_CHANCE + f F bL field_34043 DEFAULT_EQUIPMENT_DROP_CHANCE + f Lajw; b field_6193 DATA_MOB_FLAGS_ID + f F bM field_52220 PRESERVE_ITEM_DROP_CHANCE_THRESHOLD + f I bN field_38932 PRESERVE_ITEM_DROP_CHANCE + f I bO field_35039 UPDATE_GOAL_SELECTOR_EVERY_N_TICKS + f Lakr; bP field_51997 RANDOM_SPAWN_BONUS_ID + f I bQ field_6191 ambientSoundTime + f I bR field_6194 xpReward + f Lbzo; bS field_6206 lookControl + f Lbzp; bT field_6207 moveControl + f Lbzn; bU field_6204 jumpControl + f Lcda; bV field_6189 navigation + f Lcan; bW field_6201 goalSelector + f Lcan; bX field_6185 targetSelector + f [F bY field_6187 handDropChances + f [F bZ field_6186 armorDropChances + f I c field_30088 MOB_FLAG_NO_AI + f F ca field_48828 bodyArmorDropChance + f Lkh; cb field_38386 ITEM_PICKUP_REACH + f D cc field_45969 DEFAULT_ATTACK_REACH + f Lbzk; cd field_6188 bodyRotationControl + f Lbtn; ce field_6199 target + f Lcdx; cf field_6190 sensing + f Ljv; cg field_6195 handItems + f Ljv; ch field_6205 armorItems + f Lcuq; ci field_48829 bodyArmorItem + f Z cj field_6203 canPickUpLoot + f Z ck field_6200 persistenceRequired + f Ljava/util/Map; cl field_6196 pathfindingMalus + f Lakq; cm field_6198 lootTable + f J cn field_6184 lootTableSeed + f Lbtk$a; co field_52221 leashData + f Ljd; cp field_18074 restrictCenter + f F cq field_18075 restrictRadius + f I d field_30089 MOB_FLAG_LEFTHANDED + f I e field_30090 MOB_FLAG_AGGRESSIVE + f I h field_30087 PICKUP_REACH + m ()V B method_5959 registerGoals + m ()Lbuv$a; C method_26828 createMobAttributes + m ()Z D method_26323 shouldPassengersInheritMalus + m ()V E method_51504 onPathfindingStart + m (F)V E method_5930 setZza + m ()V F method_51503 onPathfindingDone + m (F)V F method_5976 setYya + m (F)V G method_5938 setXxa + m ()Lbzk; H method_5963 createBodyControl + m ()Lbzo; I method_5988 getLookControl + m ()Lbzp; J method_5962 getMoveControl + m ()Lbzn; L method_5993 getJumpControl + m ()Lcda; N method_5942 getNavigation + m ()Lcdx; O method_5985 getSensing + m ()Lbtn; P method_59664 getTargetFromBrain + m ()V Q method_5983 ate + m ()I R method_5970 getAmbientSoundInterval + m ()V S method_5966 playAmbientSound + m ()V T method_5990 spawnAnim + m ()V U method_20417 updateControlFlags + m ()Lakq; V method_5991 getDefaultLootTable + m ()V W method_55695 stopInPlace + m ()Lkh; X method_42646 getPickupReach + m ()Z Y method_17326 requiresCustomPersistence + m ()Z Z method_23734 shouldDespawnInPeaceful + m (FFF)F a method_5960 rotlerp + m (Lakq;Ljava/util/Map;)V a method_59665 equip + m (Laqu;)Leru; a method_58635 createEquipmentParams + m (Layw;Lbqp;)V a method_5964 populateDefaultEquipmentSlots + m (Lbsr;FF)V a method_5951 lookAt + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z a method_20636 checkMobSpawnRules + m (Lbsx;Z)Lbtp; a method_29243 convertTo + m (Lbsy;I)Lcul; a method_5948 getEquipmentForSlot + m (Lbta;)V a method_58634 equip + m (Lcam;)Z a method_47824 method_47824 + m (Lcmx;Lbtp;)V a method_18249 onOffspringSpawnedFromEgg + m (Lcvn;)Z a method_25938 canFireProjectileWeapon + m (Ldcx;Lbtr;)Z a method_5979 checkSpawnRules + m (Ldcz;)Z a method_5957 checkSpawnObstruction + m (Lddl;Layw;Lbqp;)V a method_5984 populateDefaultEquipmentEnchantments + m (Lddl;Layw;Lbsy;Lbqp;)V a method_30758 enchantSpawnedArmor + m (Lddl;Lbqp;Lbtr;Lbuh;)Lbuh; a method_5943 finalizeSpawn + m (Lddl;Lbsy;Layw;FLbqp;)V a method_59927 enchantSpawnedEquipment + m (Lepv;)F a method_5944 getPathfindingMalus + m (Lepv;F)V a method_5941 setPathfindingMalus + m (Ljd;)Z a method_18407 isWithinRestriction + m (Ljd;I)V a method_18408 restrictTo + m (Z)V a method_7217 setBaby + m (Z)V a_ method_5952 setCanPickUpLoot + m ()V aa method_18409 sendDebugPackets + m ()V ab method_5958 customServerAiStep + m ()I ac method_5978 getMaxHeadXRot + m ()I ae method_5986 getMaxHeadYRot + m ()V af method_56080 clampHeadRotationToBody + m (Lbsy;Lcuq;)V b method_24834 setItemSlotAndDropWhenKilled + m (Lcjh;)V b method_5949 pickUpItem + m (Lcmx;Lbqq;)Lbqr; b method_5992 mobInteract + m (Lcmx;Lbtp;)V b method_24522 method_24522 + m (Lcuq;Lcuq;)Z b method_5955 canReplaceCurrentItem + m (Ldcw;)Lcda; b method_5965 createNavigation + m (Lddl;Layw;Lbqp;)V b method_30759 enchantSpawnedWeapon + m (Lcmx;Lbqq;)Lbqr; c method_29506 checkAndHandleImportantInteractions + m (Lcuq;Lcuq;)Z c method_26320 canReplaceEqualItem + m (Ljava/util/function/Predicate;)Ljava/util/Set; c method_60972 dropPreservedEquipment + m (Ljava/util/function/Predicate;)V d method_47825 removeAllGoals + m (Lbsy;)V e method_25939 setGuaranteedDrop + m (Lbsy;)F f method_5929 getEquipmentDropChance + m ()I fM method_20240 getHeadRotSpeed + m ()I fN method_5945 getMaxSpawnClusterSize + m ()Lcuq; fO method_56676 getBodyArmorItem + m ()Z fP method_56677 isWearingBodyArmor + m ()V fQ method_60973 dropPreservedEquipment + m ()V fR method_5971 setPersistenceRequired + m ()Z fS method_5936 canPickUpLoot + m ()Z fT method_5947 isPersistenceRequired + m ()Z fU method_18411 isWithinRestriction + m ()Ljd; fV method_18412 getRestrictCenter + m ()F fW method_18413 getRestrictRadius + m ()V fX method_35055 clearRestriction + m ()Z fY method_18410 hasRestriction + m ()Z fZ method_5987 isNoAi + m ()Z ga method_5961 isLeftHanded + m ()Z gb method_6510 isAggressive + m ()Lewx; gc method_53511 getAttackBoundingBox + m ()V gd method_59928 playAttackSound + m ()Z ge method_5972 isSunBurnTick + m ()V gf method_35056 removeFreeWill + m (D)Z h method_5974 removeWhenFarAway + m (Lbtn;)V h method_5980 setTarget + m (Lbtn;)Z i method_42150 isWithinMeleeAttackRange + m (Lcuq;)Lcuq; i method_24523 equipItemIfPossible + m (Lcuq;)Z j method_5939 canHoldItem + m (Lcuq;)Z k method_20820 wantsToPickUp + m (Lcuq;)Z l method_6773 isBodyArmorItem + m (Lcuq;)V m method_56678 setBodyArmorItem + m (Lcuq;)D o method_57295 getApproximateAttackDamageWithItem + m (Lcuq;)Z p method_57296 hasAnyComponentExceptDamage + m (Lcuq;)V q method_37341 method_37341 + m (I)Z r method_5969 isMaxGroupSizeReached + m (Lcuq;)Z r method_60974 method_60974 + m ()V s method_5975 resetAmbientSoundTime + m (Z)V u method_5977 setNoAi + m ()Lavo; v method_5994 getAmbientSound + m (Z)V v method_5937 setLeftHanded + m (Z)V w method_19540 setAggressive + m (Lbsx;Ldcw;)V + m ()V +c btp$1 net/minecraft/class_1308$1 net/minecraft/world/entity/Mob$1 + f [I a field_6209 $SwitchMap$net$minecraft$world$entity$EquipmentSlot$Type + f [I b field_6208 $SwitchMap$net$minecraft$world$entity$EquipmentSlot + m ()V +c btq net/minecraft/class_1311 net/minecraft/world/entity/MobCategory + f Lbtq; a field_6302 MONSTER + f Lbtq; b field_6294 CREATURE + f Lbtq; c field_6303 AMBIENT + f Lbtq; d field_34447 AXOLOTLS + f Lbtq; e field_30092 UNDERGROUND_WATER_CREATURE + f Lbtq; f field_6300 WATER_CREATURE + f Lbtq; g field_24460 WATER_AMBIENT + f Lbtq; h field_17715 MISC + f Lcom/mojang/serialization/Codec; i field_24655 CODEC + f I j field_6297 max + f Z k field_6298 isFriendly + f Z l field_6295 isPersistent + f Ljava/lang/String; m field_6304 name + f I n field_24461 noDespawnDistance + f I o field_24462 despawnDistance + f [Lbtq; p field_6301 $VALUES + m ()Ljava/lang/String; a method_6133 getName + m ()I b method_6134 getMaxInstancesPerChunk + m ()Z d method_6136 isFriendly + m ()Z e method_6135 isPersistent + m ()I f method_27919 getDespawnDistance + m ()I g method_27920 getNoDespawnDistance + m ()[Lbtq; h method_36609 $values + m (Ljava/lang/String;ILjava/lang/String;IZZI)V + m ()V +c btr net/minecraft/class_3730 net/minecraft/world/entity/MobSpawnType + f Lbtr; a field_16459 NATURAL + f Lbtr; b field_16472 CHUNK_GENERATION + f Lbtr; c field_16469 SPAWNER + f Lbtr; d field_16474 STRUCTURE + f Lbtr; e field_16466 BREEDING + f Lbtr; f field_16471 MOB_SUMMONED + f Lbtr; g field_16460 JOCKEY + f Lbtr; h field_16467 EVENT + f Lbtr; i field_16468 CONVERSION + f Lbtr; j field_16463 REINFORCEMENT + f Lbtr; k field_16461 TRIGGERED + f Lbtr; l field_16473 BUCKET + f Lbtr; m field_16465 SPAWN_EGG + f Lbtr; n field_16462 COMMAND + f Lbtr; o field_16470 DISPENSER + f Lbtr; p field_16527 PATROL + f Lbtr; q field_47245 TRIAL_SPAWNER + f [Lbtr; r field_16464 $VALUES + m ()[Lbtr; a method_36610 $values + m (Lbtr;)Z a method_54986 isSpawner + m (Lbtr;)Z b method_54987 ignoresLightRequirements + m (Ljava/lang/String;I)V + m ()V +c bts net/minecraft/class_1313 net/minecraft/world/entity/MoverType + f Lbts; a field_6308 SELF + f Lbts; b field_6305 PLAYER + f Lbts; c field_6310 PISTON + f Lbts; d field_6306 SHULKER_BOX + f Lbts; e field_6309 SHULKER + f [Lbts; f field_6307 $VALUES + m ()[Lbts; a method_36611 $values + m (Ljava/lang/String;I)V + m ()V +c btt net/minecraft/class_5354 net/minecraft/world/entity/NeutralMob + f Ljava/lang/String; c_ field_30093 TAG_ANGER_TIME + f Ljava/lang/String; d_ field_30094 TAG_ANGRY_AT + m ()V Z_ method_29922 stopBeingAngry + m ()I a method_29507 getRemainingPersistentAngerTime + m (I)V a method_29514 setRemainingPersistentAngerTime + m (Laqu;Z)V a method_29510 updatePersistentAnger + m (Lbtn;)V a method_6015 setLastHurtByMob + m (Ldcw;Lub;)V a method_29512 readPersistentAngerSaveData + m (Ljava/util/UUID;)V a method_29513 setPersistentAngerTarget + m (Lbtn;)Z a_ method_29515 isAngryAt + m (Lcmx;)V a_ method_29516 playerDied + m (Ldcw;)Z a_ method_29923 isAngryAtAllPlayers + m (Lub;)V a_ method_29517 addPersistentAngerSaveData + m ()Z ad_ method_29511 isAngry + m ()V ae_ method_29921 forgetCurrentTargetAndRefreshUniversalAnger + m ()Ljava/util/UUID; b method_29508 getPersistentAngerTarget + m ()V c method_29509 startPersistentAngerTimer + m (Lbtn;)Z c method_18395 canAttack + m (Lcmx;)V c method_29505 setLastHurtByPlayer + m ()Lbtn; ei method_6065 getLastHurtByMob + m (Lbtn;)V h method_5980 setTarget + m ()Lbtn; p method_5968 getTarget +c btu net/minecraft/class_9461 net/minecraft/world/entity/OminousItemSpawner + f I b field_50128 TICKS_BEFORE_ABOUT_TO_SPAWN_SOUND + f I c field_50129 SPAWN_ITEM_DELAY_MIN + f I d field_50130 SPAWN_ITEM_DELAY_MAX + f Ljava/lang/String; e field_50131 TAG_SPAWN_ITEM_AFTER_TICKS + f Ljava/lang/String; f field_50132 TAG_ITEM + f Lajw; g field_50133 DATA_ITEM + f J h field_50134 spawnItemAfterTicks + m (Lcuq;)V a method_58636 setItem + m (Ldcw;I)V a method_58637 method_58637 + m (Ldcw;Lcuq;)Lbtu; a method_58638 create + m ()V p method_58639 addParticles + m ()Lcuq; s method_58640 getItem + m ()V t method_58641 tickServer + m ()V v method_58642 tickClient + m ()V w method_58643 spawnItem + m (Lbsx;Ldcw;)V + m ()V +c btv net/minecraft/class_6025 net/minecraft/world/entity/OwnableEntity + m ()Lbtn; T_ method_35057 getOwner + m ()Ljava/util/UUID; aa_ method_6139 getOwnerUUID + m ()Ldcn; e method_48926 level +c btw net/minecraft/class_1314 net/minecraft/world/entity/PathfinderMob + f F cb field_35670 DEFAULT_WALK_TARGET_VALUE + m (Ljd;Ldcz;)F a method_6144 getWalkTargetValue + m (Ljd;)F c method_6149 getWalkTargetValue + m ()Z gg method_6150 isPathFinding + m ()Z gh method_52546 isPanicking + m ()Z gi method_43689 shouldStayCloseToLeashHolder + m ()D gj method_6148 followLeashSpeed + m (Lbsx;Ldcw;)V +c btx net/minecraft/class_6026 net/minecraft/world/entity/PlayerRideable +c bty net/minecraft/class_1316 net/minecraft/world/entity/PlayerRideableJumping + m ()Z a method_6153 canJump + m ()V b method_6156 handleStopJump + m (I)V b method_6154 onPlayerJump + m ()I c method_45327 getJumpCooldown + m (I)V c method_6155 handleStartJump +c btz net/minecraft/class_9787 net/minecraft/world/entity/PortalProcessor + f Ldlr; a field_51998 portal + f Ljd; b field_51999 entryPosition + f I c field_52000 portalTime + f Z d field_52001 insidePortalThisTick + m ()Ldlr$a; a method_60700 getPortalLocalTransition + m (Laqu;Lbsr;)Leqc; a method_60701 getPortalDestination + m (Laqu;Lbsr;Z)Z a method_60702 processPortalTeleportation + m (Ldlr;)Z a method_60703 isSamePortal + m (Ljd;)V a method_60704 updateEntryPosition + m (Z)V a method_60705 setAsInsidePortalThisTick + m ()Z b method_60706 hasExpired + m ()Ljd; c method_60707 getEntryPosition + m ()I d method_60708 getPortalTime + m ()Z e method_60709 isInsidePortalThisTick + m ()V f method_60710 decayTick + m (Ldlr;Ljd;)V +c bua net/minecraft/class_4050 net/minecraft/world/entity/Pose + f Lbua; a field_18076 STANDING + f Lbua; b field_18077 FALL_FLYING + f Lbua; c field_18078 SLEEPING + f Lbua; d field_18079 SWIMMING + f Lbua; e field_18080 SPIN_ATTACK + f Lbua; f field_18081 CROUCHING + f Lbua; g field_30095 LONG_JUMPING + f Lbua; h field_18082 DYING + f Lbua; i field_37422 CROAKING + f Lbua; j field_37423 USING_TONGUE + f Lbua; k field_40118 SITTING + f Lbua; l field_38097 ROARING + f Lbua; m field_38098 SNIFFING + f Lbua; n field_38099 EMERGING + f Lbua; o field_38100 DIGGING + f Lbua; p field_47246 SLIDING + f Lbua; q field_47247 SHOOTING + f Lbua; r field_47248 INHALING + f Ljava/util/function/IntFunction; s field_48322 BY_ID + f Lyx; t field_48323 STREAM_CODEC + f I u field_48324 id + f [Lbua; v field_18083 $VALUES + m ()I a method_56081 id + m ()[Lbua; b method_36612 $values + m (Ljava/lang/String;II)V + m ()V +c bub net/minecraft/class_4582 net/minecraft/world/entity/PowerableMob + m ()Z a method_6872 isPowered +c buc net/minecraft/class_2709 net/minecraft/world/entity/RelativeMovement + f Lbuc; a field_12400 X + f Lbuc; b field_12398 Y + f Lbuc; c field_12403 Z + f Lbuc; d field_12401 Y_ROT + f Lbuc; e field_12397 X_ROT + f Ljava/util/Set; f field_40710 ALL + f Ljava/util/Set; g field_40711 ROTATION + f I h field_12399 bit + f [Lbuc; i field_12402 $VALUES + m ()I a method_11742 getMask + m (I)Ljava/util/Set; a method_11744 unpack + m (Ljava/util/Set;)I a method_11741 pack + m ()[Lbuc; b method_36952 $values + m (I)Z b method_11743 isSet + m (Ljava/lang/String;II)V + m ()V +c bud net/minecraft/class_4094 net/minecraft/world/entity/ReputationEventHandler + m (Lcep;Lbsr;)V a method_18870 onReputationEventFrom +c bue net/minecraft/class_5146 net/minecraft/world/entity/Saddleable + m (Lcuq;Lavq;)V a method_6576 equipSaddle + m ()Lavo; ac_ method_45328 getSaddleSoundEvent + m ()Z f method_6765 isSaddleable + m ()Z i method_6725 isSaddled +c buf net/minecraft/class_5147 net/minecraft/world/entity/Shearable + m ()Z a method_27072 readyForShearing + m (Lavq;)V a method_6636 shear +c bug net/minecraft/class_5630 net/minecraft/world/entity/SlotAccess + f Lbug; a field_27860 NULL + m ()Lcuq; a method_32327 get + m (Lbqk;I)Lbug; a method_32328 forContainer + m (Lbqk;ILjava/util/function/Predicate;)Lbug; a method_32329 forContainer + m (Lbtn;Lbsy;)Lbug; a method_32330 forEquipmentSlot + m (Lbtn;Lbsy;Ljava/util/function/Predicate;)Lbug; a method_32331 forEquipmentSlot + m (Lcuq;)Z a method_32332 set + m (Ljava/util/function/Supplier;Ljava/util/function/Consumer;)Lbug; a method_59666 of + m (Lcuq;)Z b method_32333 method_32333 + m (Lcuq;)Z c method_32334 method_32334 + m ()V +c bug$1 net/minecraft/class_5630$1 net/minecraft/world/entity/SlotAccess$1 + m ()V +c bug$2 net/minecraft/class_5630$2 net/minecraft/world/entity/SlotAccess$2 + f Ljava/util/function/Supplier; b field_51376 val$getter + f Ljava/util/function/Consumer; c field_51377 val$setter + m (Ljava/util/function/Supplier;Ljava/util/function/Consumer;)V +c bug$3 net/minecraft/class_5630$3 net/minecraft/world/entity/SlotAccess$3 + f Lbqk; b field_27861 val$inventory + f I c field_27862 val$id + f Ljava/util/function/Predicate; d field_27863 val$validator + m (Lbqk;ILjava/util/function/Predicate;)V +c bug$4 net/minecraft/class_5630$4 net/minecraft/world/entity/SlotAccess$4 + f Lbtn; b field_27864 val$entity + f Lbsy; c field_27865 val$slot + f Ljava/util/function/Predicate; d field_27866 val$validator + m (Lbtn;Lbsy;Ljava/util/function/Predicate;)V +c buh net/minecraft/class_1315 net/minecraft/world/entity/SpawnGroupData +c bui net/minecraft/class_9168 net/minecraft/world/entity/SpawnPlacementType + m (Ldcz;Ljd;)Ljd; a method_56553 adjustSpawnPosition +c buj net/minecraft/class_9169 net/minecraft/world/entity/SpawnPlacementTypes + f Lbui; a field_48742 NO_RESTRICTIONS + f Lbui; b field_48743 IN_WATER + f Lbui; c field_48744 IN_LAVA + f Lbui; d field_48745 ON_GROUND + m (Ldcz;Ljd;Lbsx;)Z a method_56554 method_56554 + m (Ldcz;Ljd;Lbsx;)Z b method_56555 method_56555 + m (Ldcz;Ljd;Lbsx;)Z c method_56556 method_56556 + m ()V +c buj$1 net/minecraft/class_9169$1 net/minecraft/world/entity/SpawnPlacementTypes$1 + m (Ldcz;Ljd;Lbsx;)Z a method_56557 isValidEmptySpawnBlock + m ()V +c buk net/minecraft/class_1317 net/minecraft/world/entity/SpawnPlacements + f Ljava/util/Map; a field_6313 DATA_BY_TYPE + m (Lbsx;)Lbui; a method_6159 getPlacementType + m (Lbsx;Lbui;Ldyy$a;Lbuk$b;)V a method_20637 register + m (Lbsx;Ldcz;Ljd;)Z a method_56558 isSpawnPositionOk + m (Lbsx;Lddl;Lbtr;Ljd;Layw;)Z a method_20638 checkSpawnRules + m (Lbsx;)Ldyy$a; b method_6160 getHeightmapType + m ()V + m ()V +c buk$a net/minecraft/class_1317$class_1318 net/minecraft/world/entity/SpawnPlacements$Data + f Ldyy$a; a comp_2253 heightMap + f Lbui; b comp_2254 placement + f Lbuk$b; c comp_2255 predicate + m ()Ldyy$a; a comp_2253 heightMap + m ()Lbui; b comp_2254 placement + m ()Lbuk$b; c comp_2255 predicate + m (Ldyy$a;Lbui;Lbuk$b;)V +c buk$b net/minecraft/class_1317$class_4306 net/minecraft/world/entity/SpawnPlacements$SpawnPredicate +c bul net/minecraft/class_1321 net/minecraft/world/entity/TamableAnimal + f I cc field_52002 TELEPORT_WHEN_DISTANCE_IS_SQ + f Lajw; cd field_6322 DATA_FLAGS_ID + f Lajw; ce field_6320 DATA_OWNERUUID_ID + f I cg field_52003 MIN_HORIZONTAL_DISTANCE_FROM_TARGET_AFTER_TELEPORTING + f I ch field_52004 MAX_HORIZONTAL_DISTANCE_FROM_TARGET_AFTER_TELEPORTING + f I ci field_52005 MAX_VERTICAL_DISTANCE_FROM_TARGET_AFTER_TELEPORTING + f Z cj field_21974 orderedToSit + m (III)Z a method_60711 maybeTeleportTo + m (Lbtn;Lbtn;)Z a method_6178 wantsToAttack + m (Lcmx;)V a method_6170 tame + m (Ljava/util/UUID;)V b method_6174 setOwnerUUID + m (ZZ)V b method_6173 setTame + m ()Z gk method_24345 isOrderedToSit + m ()V gl method_60713 tryToTeleportToOwner + m ()Z gm method_60714 shouldTryTeleportToOwner + m ()Z gn method_60715 unableToMoveToOwner + m ()Z go method_60716 canFlyToOwner + m (Ljd;)V h method_60712 teleportToAroundBlockPos + m (Ljd;)Z i method_60717 canTeleportTo + m (Lbtn;)Z j method_6171 isOwnedBy + m ()Z s method_6181 isTame + m ()V t method_56996 applyTamingSideEffects + m ()Z x method_6172 isInSittingPose + m (Z)V x method_6180 spawnTamingParticles + m (Z)V y method_6179 setInSittingPose + m (Z)V z method_24346 setOrderedToSit + m (Lbsx;Ldcw;)V + m ()V +c bul$a net/minecraft/class_1321$class_9788 net/minecraft/world/entity/TamableAnimal$TamableAnimalPanicGoal + f Lbul; a field_52006 field_52006 + m (Lbul;DLawu;)V + m (Lbul;D)V +c bum net/minecraft/class_8152 net/minecraft/world/entity/Targeting + m ()Lbtn; p method_5968 getTarget +c bun net/minecraft/class_8046 net/minecraft/world/entity/TraceableEntity + m ()Lbsr; s method_24921 getOwner +c buo net/minecraft/class_7988 net/minecraft/world/entity/VariantHolder + m (Ljava/lang/Object;)V a method_47826 setVariant + m ()Ljava/lang/Object; d method_47827 getVariant +c bup net/minecraft/class_8080 net/minecraft/world/entity/WalkAnimationState + f F a field_42109 speedOld + f F b field_42110 speed + f F c field_42111 position + m ()F a method_48566 speed + m (F)V a method_48567 setSpeed + m (FF)V a method_48568 update + m ()F b method_48569 position + m (F)F b method_48570 speed + m ()Z c method_48571 isMoving + m (F)F c method_48572 position + m ()V +c buq net/minecraft/class_4095 net/minecraft/world/entity/ai/Brain + f Lorg/slf4j/Logger; a field_24656 LOGGER + f Ljava/util/function/Supplier; b field_24657 codec + f I c field_30096 SCHEDULE_UPDATE_DELAY + f Ljava/util/Map; d field_18322 memories + f Ljava/util/Map; e field_18323 sensors + f Ljava/util/Map; f field_18324 availableBehaviorsByPriority + f Lcop; g field_18325 schedule + f Ljava/util/Map; h field_18326 activityRequirements + f Ljava/util/Map; i field_22282 activityMemoriesToEraseWhenStopped + f Ljava/util/Set; j field_18327 coreActivities + f Ljava/util/Set; k field_18328 activeActivities + f Lcom; l field_18329 defaultActivity + f J m field_18853 lastScheduleUpdate + m ()V a method_49709 clearMemories + m (ILcom/google/common/collect/ImmutableList;)Lcom/google/common/collect/ImmutableList; a method_24524 createPriorityPairs + m (JJ)V a method_18871 updateActivityFromSchedule + m (Laqu;Lbtn;)V a method_19542 tick + m (Lccs;)Z a method_18896 hasMemoryValue + m (Lccs;Lcct;)Z a method_18876 checkMemory + m (Lccs;Ljava/lang/Object;)V a method_18878 setMemory + m (Lccs;Ljava/lang/Object;J)V a method_24525 setMemoryWithExpiry + m (Lccs;Ljava/util/Optional;)V a method_18879 setMemory + m (Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/DataResult; a method_28310 serializeStart + m (Lcom;)V a method_24526 setActiveActivityIfPossible + m (Lcom;ILcom/google/common/collect/ImmutableList;)V a method_18882 addActivity + m (Lcom;ILcom/google/common/collect/ImmutableList;Lccs;)V a method_24527 addActivityAndRemoveMemoryWhenStopped + m (Lcom;Lcom/google/common/collect/ImmutableList;)V a method_18881 addActivity + m (Lcom;Lcom/google/common/collect/ImmutableList;Ljava/util/Set;)V a method_24529 addActivityWithConditions + m (Lcom;Lcom/google/common/collect/ImmutableList;Ljava/util/Set;Ljava/util/Set;)V a method_24530 addActivityAndRemoveMemoriesWhenStopped + m (Lcop;)V a method_18884 setSchedule + m (Ljava/lang/Integer;)Ljava/util/Map; a method_18887 method_18887 + m (Ljava/lang/Object;)Z a method_19948 isEmptyCollection + m (Ljava/lang/Object;Ljava/lang/Object;)Z a method_29518 method_29518 + m (Ljava/util/Collection;Ljava/util/Collection;)Lbuq$b; a method_28311 provider + m (Ljava/util/List;)V a method_24531 setActiveActivityToFirstValid + m (Ljava/util/Map$Entry;)Lbuq$a; a method_28312 method_28312 + m (Ljava/util/Set;)V a method_18890 setCoreActivities + m ()Ljava/util/Map; b method_35058 getMemories + m (Laqu;Lbtn;)V b method_18900 stopAll + m (Lccs;)V b method_18875 eraseMemory + m (Lccs;Ljava/lang/Object;)Z b method_29519 isMemoryValue + m (Lccs;Ljava/util/Optional;)V b method_24535 setMemoryInternal + m (Lcom;)V b method_18897 setDefaultActivity + m (Ljava/util/Collection;Ljava/util/Collection;)Lcom/mojang/serialization/Codec; b method_28313 codec + m ()Lcop; c method_18894 getSchedule + m (Laqu;Lbtn;)V c method_27073 tickSensors + m (Lccs;)Ljava/util/Optional; c method_18904 getMemory + m (Lcom;)Z c method_18906 isActive + m ()Ljava/util/Set; d method_35059 getActiveActivities + m (Laqu;Lbtn;)V d method_18891 startEachNonRunningBehavior + m (Lccs;)Ljava/util/Optional; d method_46873 getMemoryInternal + m (Lcom;)V d method_18880 setActiveActivity + m ()Ljava/util/List; e method_27074 getRunningBehaviors + m (Laqu;Lbtn;)V e method_19545 tickEachRunningBehavior + m (Lccs;)J e method_36978 getTimeUntilExpiry + m (Lcom;)V e method_24537 eraseMemoriesForOtherActivitesThan + m ()V f method_24536 useDefaultActivity + m (Lccs;)V f method_49710 method_49710 + m (Lcom;)Z f method_18874 activityRequirementsAreMet + m ()Ljava/util/Optional; g method_24538 getActiveNonCoreActivity + m (Lcom;)Ljava/util/Set; g method_18910 method_18910 + m ()V h method_35060 removeAllBehaviors + m ()Lbuq; i method_18911 copyWithoutBehaviors + m ()Ljava/util/stream/Stream; j method_28315 memories + m ()V k method_27075 forgetOutdatedMemories + m (Ljava/util/Collection;Ljava/util/Collection;Lcom/google/common/collect/ImmutableList;Ljava/util/function/Supplier;)V + m ()V +c buq$1 net/minecraft/class_4095$1 net/minecraft/world/entity/ai/Brain$1 + f Ljava/util/Collection; a field_24658 val$memoryTypes + f Ljava/util/Collection; b field_24659 val$sensorTypes + f Lorg/apache/commons/lang3/mutable/MutableObject; c field_24660 val$codecReference + m (Lbuq;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/RecordBuilder;)Lcom/mojang/serialization/RecordBuilder; a method_28316 encode + m (Lccs;)Lcom/mojang/serialization/DataResult; a method_28317 method_28317 + m (Lccs;Lccr;)Lbuq$a; a method_28318 method_28318 + m (Lccs;Lcom/mojang/serialization/Codec;)Lakr; a method_28319 method_28319 + m (Lccs;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_28320 captureRead + m (Lcom/mojang/serialization/DynamicOps;Lakr;)Ljava/lang/Object; a method_28325 method_28325 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/datafixers/util/Pair;Lccs;)Lcom/mojang/serialization/DataResult; a method_28321 method_28321 + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/RecordBuilder;Lbuq$a;)V a method_28322 method_28322 + m (Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/DataResult; a method_28323 method_28323 + m (Lcom/mojang/serialization/DynamicOps;Lorg/apache/commons/lang3/mutable/MutableObject;Lcom/mojang/datafixers/util/Pair;)V a method_28324 method_28324 + m (Lccs;)Ljava/lang/String; b method_49486 method_49486 + m (Lccs;)Ljava/util/stream/Stream; c method_28326 method_28326 + m (Ljava/util/Collection;Ljava/util/Collection;Lorg/apache/commons/lang3/mutable/MutableObject;)V +c buq$a net/minecraft/class_4095$class_5302 net/minecraft/world/entity/ai/Brain$MemoryValue + f Lccs; a field_24661 type + f Ljava/util/Optional; b field_24662 value + m (Lbuq;)V a method_28328 setMemoryInternal + m (Lccs;Ljava/util/Optional;)Lbuq$a; a method_28333 createUnchecked + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/RecordBuilder;)V a method_28330 serialize + m (Lcom/mojang/serialization/RecordBuilder;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;)V a method_28331 method_28331 + m (Lcom/mojang/serialization/RecordBuilder;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;Lccr;)V a method_28332 method_28332 + m (Lccs;Ljava/util/Optional;)V +c buq$b net/minecraft/class_4095$class_5303 net/minecraft/world/entity/ai/Brain$Provider + f Ljava/util/Collection; a field_24663 memoryTypes + f Ljava/util/Collection; b field_24664 sensorTypes + f Lcom/mojang/serialization/Codec; c field_24665 codec + m ()Lbuq; a method_28334 method_28334 + m (Lcom/mojang/serialization/Dynamic;)Lbuq; a method_28335 makeBrain + m ()Lcom/mojang/serialization/Codec; b method_28336 method_28336 + m (Ljava/util/Collection;Ljava/util/Collection;)V +c bur net/minecraft/class_1320 net/minecraft/world/entity/ai/attributes/Attribute + f Lcom/mojang/serialization/Codec; a field_51575 CODEC + f Lyx; b field_51940 STREAM_CODEC + f D c field_23697 defaultValue + f Z d field_23698 syncable + f Ljava/lang/String; e field_23699 descriptionId + f Lbur$a; f field_51884 sentiment + m ()D a method_6169 getDefaultValue + m (D)D a method_6165 sanitizeValue + m (Lbur$a;)Lbur; a method_60493 setSentiment + m (Z)Lbur; a method_26829 setSyncable + m ()Z b method_6168 isClientSyncable + m (Z)Ln; b method_60494 getStyle + m ()Ljava/lang/String; c method_26830 getDescriptionId + m (Ljava/lang/String;D)V + m ()V +c bur$a net/minecraft/class_1320$class_9764 net/minecraft/world/entity/ai/attributes/Attribute$Sentiment + f Lbur$a; a field_51885 POSITIVE + f Lbur$a; b field_51886 NEUTRAL + f Lbur$a; c field_51887 NEGATIVE + f [Lbur$a; d field_51888 $VALUES + m ()[Lbur$a; a method_60495 $values + m (Z)Ln; a method_60496 getStyle + m (Ljava/lang/String;I)V + m ()V +c bus net/minecraft/class_1324 net/minecraft/world/entity/ai/attributes/AttributeInstance + f Ljava/lang/String; a field_52007 ID_FIELD + f Ljava/lang/String; b field_52008 BASE_FIELD + f Ljava/lang/String; c field_52009 MODIFIERS_FIELD + f Ljm; d field_23700 attribute + f Ljava/util/Map; e field_23701 modifiersByOperation + f Ljava/util/Map; f field_23702 modifierById + f Ljava/util/Map; g field_23703 permanentModifiers + f D h field_23704 baseValue + f Z i field_23705 dirty + f D j field_23706 cachedValue + f Ljava/util/function/Consumer; k field_23707 onDirty + m ()Ljm; a method_6198 getAttribute + m (D)V a method_6192 setBaseValue + m (Lakr;)Lbuu; a method_6199 getModifier + m (Lbus;)V a method_26831 replaceFrom + m (Lbuu$a;)Ljava/util/Map; a method_6193 getModifiers + m (Lbuu$a;Ljava/util/Map;)V a method_26832 method_26832 + m (Lbuu;)V a method_55696 addOrUpdateTransientModifier + m (Lub;)V a method_26833 load + m ()D b method_6201 getBaseValue + m (Lakr;)Z b method_6196 hasModifier + m (Lbuu$a;)Ljava/util/Collection; b method_26834 getModifiersOrEmpty + m (Lbuu;)V b method_26835 addTransientModifier + m ()Ljava/util/Set; c method_6195 getModifiers + m (Lakr;)Z c method_6200 removeModifier + m (Lbuu$a;)Ljava/util/Map; c method_26836 method_26836 + m (Lbuu;)V c method_61163 addOrReplacePermanentModifier + m ()V d method_26838 setDirty + m (Lbuu;)V d method_26837 addPermanentModifier + m ()V e method_6203 removeModifiers + m (Lbuu;)V e method_6202 removeModifier + m ()D f method_6194 getValue + m (Lbuu;)V f method_6197 addModifier + m ()Lub; g method_26839 save + m ()D h method_26840 calculateValue + m ()Ljava/lang/IllegalStateException; i method_55697 method_55697 + m (Ljm;Ljava/util/function/Consumer;)V +c but net/minecraft/class_5131 net/minecraft/world/entity/ai/attributes/AttributeMap + f Lorg/slf4j/Logger; a field_23708 LOGGER + f Ljava/util/Map; b field_23709 attributes + f Ljava/util/Set; c field_51889 attributesToSync + f Ljava/util/Set; d field_51890 attributesToUpdate + f Lbuv; e field_23711 supplier + m ()Ljava/util/Set; a method_60497 getAttributesToSync + m (Lakr;)V a method_26848 method_26848 + m (Lbus;)V a method_26845 onAttributeModified + m (Lbus;Lbuu;)V a method_59931 method_59931 + m (Lbut;)V a method_26846 assignAllValues + m (Lcom/google/common/collect/Multimap;)V a method_59932 addTransientAttributeModifiers + m (Ljm;)Lbus; a method_45329 getInstance + m (Ljm;Lakr;)Z a method_45330 hasModifier + m (Ljm;Lbuu;)V a method_59933 method_59933 + m (Ljm;Ljava/util/Collection;)V a method_59934 method_59934 + m (Lub;Ljm$c;)V a method_26849 method_26849 + m (Luh;)V a method_26850 load + m ()Ljava/util/Set; b method_60498 getAttributesToUpdate + m (Lbus;)V b method_60613 method_60613 + m (Lbut;)V b method_60614 assignBaseValues + m (Lcom/google/common/collect/Multimap;)V b method_59935 removeAttributeModifiers + m (Ljm;)Z b method_45331 hasAttribute + m (Ljm;Lakr;)D b method_45332 getModifierValue + m ()Ljava/util/Collection; c method_26851 getSyncableAttributes + m (Lbus;)V c method_26853 method_26853 + m (Ljm;)D c method_26852 getValue + m ()Luh; d method_26855 save + m (Lbus;)Z d method_26857 method_26857 + m (Ljm;)D d method_26856 getBaseValue + m (Ljm;)Lbus; e method_55698 method_55698 + m (Lbuv;)V + m ()V +c buu net/minecraft/class_1322 net/minecraft/world/entity/ai/attributes/AttributeModifier + f Lcom/mojang/serialization/MapCodec; a field_49232 MAP_CODEC + f Lcom/mojang/serialization/Codec; b field_46247 CODEC + f Lyx; c field_49233 STREAM_CODEC + f Lakr; d comp_2447 id + f D e comp_2449 amount + f Lbuu$a; f comp_2450 operation + f Lorg/slf4j/Logger; g field_23712 LOGGER + m ()Lub; a method_26860 save + m (Lakr;)Z a method_60718 is + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60719 method_60719 + m (Lub;)Lbuu; a method_26859 load + m ()Lakr; b comp_2447 id + m ()D c comp_2449 amount + m ()Lbuu$a; d comp_2450 operation + m (Lakr;DLbuu$a;)V + m ()V +c buu$a net/minecraft/class_1322$class_1323 net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation + f Lbuu$a; a field_6328 ADD_VALUE + f Lbuu$a; b field_6330 ADD_MULTIPLIED_BASE + f Lbuu$a; c field_6331 ADD_MULTIPLIED_TOTAL + f Ljava/util/function/IntFunction; d field_48325 BY_ID + f Lyx; e field_48326 STREAM_CODEC + f Lcom/mojang/serialization/Codec; f field_45742 CODEC + f Ljava/lang/String; g field_45743 name + f I h field_6329 id + f [Lbuu$a; i field_6333 $VALUES + m ()I a method_56082 id + m ()[Lbuu$a; b method_36614 $values + m (Ljava/lang/String;ILjava/lang/String;I)V + m ()V +c buv net/minecraft/class_5132 net/minecraft/world/entity/ai/attributes/AttributeSupplier + f Ljava/util/Map; a field_23713 instances + m ()Lbuv$a; a method_26861 builder + m (Ljava/util/function/Consumer;Ljm;)Lbus; a method_26863 createInstance + m (Ljm;)D a method_26862 getValue + m (Ljm;Lakr;)D a method_27308 getModifierValue + m (Ljm;)D b method_26864 getBaseValue + m (Ljm;Lakr;)Z b method_27309 hasModifier + m (Ljm;)Z c method_27310 hasAttribute + m (Ljm;)Lbus; d method_26865 getAttributeInstance + m (Ljava/util/Map;)V +c buv$a net/minecraft/class_5132$class_5133 net/minecraft/world/entity/ai/attributes/AttributeSupplier$Builder + f Lcom/google/common/collect/ImmutableMap$Builder; a field_23714 builder + f Z b field_23715 instanceFrozen + m ()Lbuv; a method_26866 build + m (Ljm;)Lbuv$a; a method_26867 add + m (Ljm;D)Lbuv$a; a method_26868 add + m (Ljm;Lbus;)V a method_26869 method_26869 + m (Ljm;)Lbus; b method_26870 create + m ()V +c buw net/minecraft/class_5134 net/minecraft/world/entity/ai/attributes/Attributes + f Ljm; A field_23727 SPAWN_REINFORCEMENTS_CHANCE + f Ljm; B field_47761 STEP_HEIGHT + f Ljm; C field_51576 SUBMERGED_MINING_SPEED + f Ljm; D field_51577 SWEEPING_DAMAGE_RATIO + f Ljm; E field_51578 WATER_MOVEMENT_EFFICIENCY + f Ljm; a field_23724 ARMOR + f Ljm; b field_23725 ARMOR_TOUGHNESS + f Ljm; c field_23721 ATTACK_DAMAGE + f Ljm; d field_23722 ATTACK_KNOCKBACK + f Ljm; e field_23723 ATTACK_SPEED + f Ljm; f field_49076 BLOCK_BREAK_SPEED + f Ljm; g field_47758 BLOCK_INTERACTION_RANGE + f Ljm; h field_51579 BURNING_TIME + f Ljm; i field_51580 EXPLOSION_KNOCKBACK_RESISTANCE + f Ljm; j field_47759 ENTITY_INTERACTION_RANGE + f Ljm; k field_49077 FALL_DAMAGE_MULTIPLIER + f Ljm; l field_23720 FLYING_SPEED + f Ljm; m field_23717 FOLLOW_RANGE + f Ljm; n field_49078 GRAVITY + f Ljm; o field_23728 JUMP_STRENGTH + f Ljm; p field_23718 KNOCKBACK_RESISTANCE + f Ljm; q field_23726 LUCK + f Ljm; r field_45124 MAX_ABSORPTION + f Ljm; s field_23716 MAX_HEALTH + f Ljm; t field_51581 MINING_EFFICIENCY + f Ljm; u field_51582 MOVEMENT_EFFICIENCY + f Ljm; v field_23719 MOVEMENT_SPEED + f Ljm; w field_51583 OXYGEN_BONUS + f Ljm; x field_49079 SAFE_FALL_DISTANCE + f Ljm; y field_47760 SCALE + f Ljm; z field_51584 SNEAKING_SPEED + m (Ljava/lang/String;Lbur;)Ljm; a method_26871 register + m (Ljz;)Ljm; a method_55699 bootstrap + m ()V + m ()V +c bux net/minecraft/class_5135 net/minecraft/world/entity/ai/attributes/DefaultAttributes + f Lorg/slf4j/Logger; a field_23729 LOGGER + f Ljava/util/Map; b field_23730 SUPPLIERS + m ()V a method_26872 validate + m (Lakr;)V a method_26874 method_26874 + m (Lbsx;)Lbuv; a method_26873 getSupplier + m (Lbsx;)Z b method_26875 hasSupplier + m (Lbsx;)Z c method_26876 method_26876 + m (Lbsx;)Z d method_26877 method_26877 + m ()V + m ()V +c buy net/minecraft/class_1329 net/minecraft/world/entity/ai/attributes/RangedAttribute + f D c field_6353 minValue + f D d field_6351 maxValue + m ()D d method_35061 getMinValue + m ()D e method_35062 getMaxValue + m (Ljava/lang/String;DDD)V +c buz net/minecraft/class_6027 net/minecraft/world/entity/ai/attributes/package-info +c bva net/minecraft/class_4096 net/minecraft/world/entity/ai/behavior/AcquirePoi + f I a field_30098 SCAN_RANGE + m (JLit/unimi/dsi/fastutil/longs/Long2ObjectMap$Entry;)Z a method_46874 method_46874 + m (Laqu;JJ)Lbva$a; a method_46875 method_46875 + m (Laqu;Lbtw;Ljava/lang/Byte;)V a method_46876 method_46876 + m (Lbtp;Ljava/util/Set;)Leps; a method_43965 findPathToPois + m (Lbws;Lbyv;)Lbyx; a method_46877 method_46877 + m (Lccs;Lbws;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46878 method_46878 + m (Lccs;ZLorg/apache/commons/lang3/mutable/MutableLong;Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;Ljava/util/function/Predicate;Ljava/util/Optional;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46879 method_46879 + m (Lces;Ljava/util/function/Predicate;Ljd;Lbyv;Laqu;Ljava/util/Optional;Lbtw;Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;Ljm;)V a method_46880 method_46880 + m (Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;JLjd;)Z a method_46882 method_46882 + m (Ljava/util/function/Predicate;Lccs;Lccs;ZLjava/util/Optional;)Lbvi; a method_46883 create + m (Ljava/util/function/Predicate;Lccs;ZLjava/util/Optional;)Lbvi; a method_46884 create + m (Ljd;Ljm;Ljd;)Z a method_46881 method_46881 + m (ZLorg/apache/commons/lang3/mutable/MutableLong;Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;Ljava/util/function/Predicate;Lbyv;Ljava/util/Optional;Laqu;Lbtw;J)Z a method_46885 method_46885 + m (ZLorg/apache/commons/lang3/mutable/MutableLong;Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;Ljava/util/function/Predicate;Ljava/util/Optional;Lbyv;)Lbyx; a method_46886 method_46886 + m ()V +c bva$a net/minecraft/class_4096$class_5397 net/minecraft/world/entity/ai/behavior/AcquirePoi$JitteredLinearRetry + f I a field_30101 MIN_INTERVAL_INCREASE + f I b field_30102 MAX_INTERVAL_INCREASE + f I c field_30103 MAX_RETRY_PATHFINDING_INTERVAL + f Layw; d field_25600 random + f J e field_25601 previousAttemptTimestamp + f J f field_25602 nextScheduledAttemptTimestamp + f I g field_25603 currentDelay + m (J)V a method_29926 markAttempt + m (J)Z b method_29927 isStillValid + m (J)Z c method_29928 shouldRetry + m (Layw;J)V +c bvb net/minecraft/class_4806 net/minecraft/world/entity/ai/behavior/AnimalMakeLove + f I c field_30104 BREED_RANGE + f I d field_30105 MIN_DURATION + f I e field_30106 MAX_DURATION + f Lbsx; f field_22283 partnerType + f F g field_23129 speedModifier + f I h field_48327 closeEnoughDistance + f I i field_48328 DEFAULT_CLOSE_ENOUGH_DISTANCE + f J j field_22284 spawnChildAtTime + m (Laqu;Lcfe;)Z a method_24543 checkExtraStartConditions + m (Laqu;Lcfe;J)V a method_24544 start + m (Lcfe;)Lcfe; a method_24542 getBreedTarget + m (Lcfe;Lbtn;)Z a method_24545 method_24545 + m (Laqu;Lcfe;J)Z b method_24547 canStillUse + m (Lcfe;)Z b method_24546 hasBreedTargetOfRightType + m (Laqu;Lcfe;J)V c method_24549 tick + m (Lcfe;)Ljava/util/Optional; c method_24548 findValidBreedPartner + m (Laqu;Lcfe;J)V d method_24550 stop + m (Lbsx;)V + m (Lbsx;FI)V +c bvc net/minecraft/class_6028 net/minecraft/world/entity/ai/behavior/AnimalPanic + f I c field_30107 PANIC_MIN_DURATION + f I d field_30108 PANIC_MAX_DURATION + f I e field_30109 PANIC_DISTANCE_HORIZONTAL + f I f field_30110 PANIC_DISTANCE_VERTICAL + f F g field_30111 speedMultiplier + f Ljava/util/function/Function; h field_52010 panicCausingDamageTypes + m (Laqu;Lbtw;)Z a method_49487 checkExtraStartConditions + m (Laqu;Lbtw;J)Z a method_35063 canStillUse + m (Lbtw;)Lawu; a method_60720 method_60720 + m (Lbtw;Laqu;)Lexc; a method_39761 getPanicPos + m (Lbtw;Lbrk;)Ljava/lang/Boolean; a method_60721 method_60721 + m (Ldcc;Lbsr;)Ljava/util/Optional; a method_39762 lookForWater + m (Ldcc;Ljd;)Z a method_39763 method_39763 + m (Laqu;Lbtw;J)V b method_35064 start + m (Ldcc;Ljd;)Z b method_51505 method_51505 + m (Laqu;Lbtw;J)V c method_44203 stop + m (Ldcc;Ljd;)Z c method_51506 method_51506 + m (Laqu;Lbtw;J)V d method_35065 tick + m (F)V + m (FLjava/util/function/Function;)V +c bvd net/minecraft/class_4114 net/minecraft/world/entity/ai/behavior/AssignProfessionFromJobSite + m ()Lbvi; a method_46887 create + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46888 method_46888 + m (Lbyu$b;Lbyv;Lbyv;)Lbyx; a method_46889 method_46889 + m (Lbyu$b;Lbyv;Lbyv;Laqu;Lcmk;J)Z a method_46890 method_46890 + m (Lcmk;Laqu;Lcmn;)V a method_46891 method_46891 + m (Ljl;Laqu;)Ljava/util/Optional; a method_46892 method_46892 + m (Ljm;)Ljava/util/Optional; a method_46893 method_46893 + m (Ljm;Lcmn;)Z a method_46894 method_46894 + m ()V +c bve net/minecraft/class_5355 net/minecraft/world/entity/ai/behavior/BabyFollowAdult + m (FLbtn;)Ljava/lang/Float; a method_46895 method_46895 + m (Lbqc;F)Lbws; a method_46896 create + m (Lbqc;Ljava/util/function/Function;)Lbws; a method_46897 create + m (Lbqc;Ljava/util/function/Function;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46898 method_46898 + m (Lbyu$b;Lbqc;Ljava/util/function/Function;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46899 method_46899 + m (Lbyu$b;Lbyv;Lbqc;Ljava/util/function/Function;Lbyv;Lbyv;Laqu;Lbsl;J)Z a method_46900 method_46900 + m ()V +c bvf net/minecraft/class_4807 net/minecraft/world/entity/ai/behavior/BackUpIfTooClose + m (IF)Lbws; a method_46901 create + m (IFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46902 method_46902 + m (Lbyu$b;IFLbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46903 method_46903 + m (Lbyu$b;Lbyv;ILbyv;Lbyv;FLaqu;Lbtp;J)Z a method_46904 method_46904 + m ()V +c bvg net/minecraft/class_4808 net/minecraft/world/entity/ai/behavior/BecomePassiveIfMemoryPresent + m (ILbyv;Lbyv;Lbyv;)Lbyx; a method_46905 method_46905 + m (Lbyv;ILbyv;Laqu;Lbtn;J)Z a method_46906 method_46906 + m (Lccs;)Ljava/lang/String; a method_46907 method_46907 + m (Lccs;I)Lbvi; a method_46908 create + m (Lccs;ILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46909 method_46909 + m ()V +c bvh net/minecraft/class_4097 net/minecraft/world/entity/ai/behavior/Behavior + f I a field_30112 DEFAULT_DURATION + f Ljava/util/Map; b field_19291 entryCondition + f Lbvh$a; c field_18333 status + f J d field_18334 endTimestamp + f I e field_18335 minDuration + f I f field_18336 maxDuration + m (J)Z a method_18915 timedOut + m (Laqu;Lbtn;)Z a method_18919 checkExtraStartConditions + m (Laqu;Lbtn;J)Z a method_18927 canStillUse + m (Lbtn;)Z a method_19546 hasRequiredMemories + m (Laqu;Lbtn;J)V b method_18926 stop + m (Laqu;Lbtn;J)V c method_18924 tick + m (Laqu;Lbtn;J)V d method_18920 start + m (Ljava/util/Map;)V + m (Ljava/util/Map;I)V + m (Ljava/util/Map;II)V +c bvh$a net/minecraft/class_4097$class_4098 net/minecraft/world/entity/ai/behavior/Behavior$Status + f Lbvh$a; a field_18337 STOPPED + f Lbvh$a; b field_18338 RUNNING + f [Lbvh$a; c field_18339 $VALUES + m ()[Lbvh$a; a method_36615 $values + m (Ljava/lang/String;I)V + m ()V +c bvi net/minecraft/class_7893 net/minecraft/world/entity/ai/behavior/BehaviorControl + m ()Lbvh$a; a method_18921 getStatus + m ()Ljava/lang/String; b method_46910 debugString + m (Laqu;Lbtn;J)Z e method_18922 tryStart + m (Laqu;Lbtn;J)V f method_18923 tickOrStop + m (Laqu;Lbtn;J)V g method_18925 doStop +c bvj net/minecraft/class_4215 net/minecraft/world/entity/ai/behavior/BehaviorUtils + m (Laqu;ILkf;)Z a method_20418 method_20418 + m (Laqu;Lkf;I)Lkf; a method_20419 findSectionClosestToVillage + m (Lbsr;)Lbtn; a method_31500 method_31500 + m (Lbsx;Lbtn;)Z a method_19547 method_19547 + m (Lbtn;)Z a method_41331 isBreeding + m (Lbtn;Lbsr;FI)V a method_24557 setWalkAndLookTargetMemories + m (Lbtn;Lbtn;)V a method_19554 lookAtEntity + m (Lbtn;Lbtn;D)Z a method_24558 isOtherTargetMuchFurtherAwayThanCurrentAttackTarget + m (Lbtn;Lbtn;FI)V a method_19548 lockGazeAndWalkToEachOther + m (Lbtn;Lbtn;Lbtn;)Lbtn; a method_24559 getTargetNearestMe + m (Lbtn;Lbwv;FI)V a method_42647 setWalkAndLookTargetMemories + m (Lbtn;Lccs;)Ljava/util/Optional; a method_24560 getLivingEntityFromUUIDMemory + m (Lbtn;Lcuq;Lexc;)V a method_19949 throwItem + m (Lbtn;Lcuq;Lexc;Lexc;F)V a method_43392 throwItem + m (Lbtn;Ljava/util/Optional;Lbtn;)Lbtn; a method_24562 getNearestTarget + m (Lbtn;Ljava/util/UUID;)Lbsr; a method_24563 method_24563 + m (Lbtn;Ljd;FI)V a method_24561 setWalkAndLookTargetMemories + m (Lbtp;Lbtn;I)Z a method_25940 isWithinAttackRange + m (Lbtw;II)Lexc; a method_33193 getRandomSwimmablePos + m (Lbuq;Lbtn;)Z a method_19550 entityIsVisible + m (Lbuq;Lccs;Lbsx;)Z a method_19551 targetIsValid + m (Lbuq;Lccs;Ljava/util/function/Predicate;)Z a method_24564 targetIsValid + m (Lbtn;Lbtn;)Z b method_24565 canSee + m (Lbtn;Lbtn;FI)V b method_19555 setWalkAndLookTargetMemoriesToEachOther + m (Lbuq;Lbtn;)Z b method_19553 method_19553 + m (Lbtn;Lbtn;)V c method_19552 lookAtEachOther + m ()V +c bvk net/minecraft/class_4099 net/minecraft/world/entity/ai/behavior/BlockPosTracker + f Ljd; a field_18340 blockPos + f Lexc; b field_18341 centerPosition + m (Ljd;)V + m (Lexc;)V +c bvl net/minecraft/class_4242 net/minecraft/world/entity/ai/behavior/CelebrateVillagersSurvivedRaid + f Lcoi; c field_18983 currentRaid + m (Laqu;Lcmk;)Z a method_19951 checkExtraStartConditions + m (Laqu;Lcmk;J)Z a method_19952 canStillUse + m (Lcti;I)Lcuq; a method_19950 getFirework + m (Laqu;Lcmk;J)V b method_19953 stop + m (Laqu;Lcmk;J)V c method_19954 tick + m (II)V +c bvm net/minecraft/class_4809 net/minecraft/world/entity/ai/behavior/CopyMemoryWithExpiry + m (Lccs;Lccs;Ljava/util/function/Predicate;Lbqc;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46911 method_46911 + m (Ljava/util/function/Predicate;Lbyu$b;Lbqc;Lbyv;Lbyv;)Lbyx; a method_46912 method_46912 + m (Ljava/util/function/Predicate;Lbyv;Lbyu$b;Lbyv;Lbqc;Laqu;Lbtn;J)Z a method_46913 method_46913 + m (Ljava/util/function/Predicate;Lccs;Lccs;Lbqc;)Lbvi; a method_46914 create + m ()V +c bvn net/minecraft/class_5753 net/minecraft/world/entity/ai/behavior/CountDownCooldownTicks + f Lccs; c field_30113 cooldownTicks + m (Lbtn;)Ljava/util/Optional; b method_33194 getCooldownTickMemory + m (Lccs;)V +c bvo net/minecraft/class_7095 net/minecraft/world/entity/ai/behavior/Croak + f I c field_37424 CROAK_TICKS + f I d field_37425 TIME_OUT_DURATION + f I e field_37426 croakCounter + m (Laqu;Lcgy;)Z a method_42648 checkExtraStartConditions + m (Laqu;Lcgy;J)Z a method_41332 canStillUse + m (Laqu;Lcgy;J)V b method_41333 start + m (Laqu;Lcgy;J)V c method_41334 stop + m (Laqu;Lcgy;J)V d method_41335 tick + m ()V +c bvp net/minecraft/class_4810 net/minecraft/world/entity/ai/behavior/CrossbowAttack + f I c field_30114 TIMEOUT + f I d field_22293 attackDelay + f Lbvp$a; e field_22294 crossbowState + m (Laqu;Lbtp;)Z a method_24570 checkExtraStartConditions + m (Laqu;Lbtp;J)Z a method_24571 canStillUse + m (Lbtp;Lbtn;)V a method_24569 crossbowAttack + m (Laqu;Lbtp;J)V b method_24573 tick + m (Lbtn;)Lbtn; b method_24568 getAttackTarget + m (Lbtp;Lbtn;)V b method_24572 lookAtTarget + m (Laqu;Lbtp;J)V c method_24574 stop + m ()V +c bvp$a net/minecraft/class_4810$class_4811 net/minecraft/world/entity/ai/behavior/CrossbowAttack$CrossbowState + f Lbvp$a; a field_22295 UNCHARGED + f Lbvp$a; b field_22296 CHARGING + f Lbvp$a; c field_22297 CHARGED + f Lbvp$a; d field_22298 READY_TO_ATTACK + f [Lbvp$a; e field_22299 $VALUES + m ()[Lbvp$a; a method_36616 $values + m (Ljava/lang/String;I)V + m ()V +c bvq net/minecraft/class_4812 net/minecraft/world/entity/ai/behavior/DismountOrSkipMounting + m (ILjava/util/function/BiPredicate;)Lbvi; a method_46915 create + m (ILjava/util/function/BiPredicate;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46916 method_46916 + m (Lbtn;Lbsr;I)Z a method_24575 isVehicleValid + m (Lbyu$b;ILjava/util/function/BiPredicate;Lbyv;)Lbyx; a method_46917 method_46917 + m (Lbyu$b;Lbyv;ILjava/util/function/BiPredicate;Laqu;Lbtn;J)Z a method_46918 method_46918 + m ()V +c bvr net/minecraft/class_4101 net/minecraft/world/entity/ai/behavior/DoNothing + f I a field_40988 minDuration + f I b field_40989 maxDuration + f Lbvh$a; c field_40990 status + f J d field_40991 endTimestamp + m (II)V +c bvs net/minecraft/class_4102 net/minecraft/world/entity/ai/behavior/EntityTracker + f Lbsr; a field_18342 entity + f Z b field_24382 trackEyeHeight + m ()Lbsr; c method_35066 getEntity + m (Lbsr;Z)V +c bvt net/minecraft/class_4813 net/minecraft/world/entity/ai/behavior/EraseMemoryIf + m (Lccs;Ljava/util/function/Predicate;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46919 method_46919 + m (Ljava/util/function/Predicate;Lbyv;)Lbyx; a method_46920 method_46920 + m (Ljava/util/function/Predicate;Lbyv;Laqu;Lbtn;J)Z a method_46921 method_46921 + m (Ljava/util/function/Predicate;Lccs;)Lbvi; a method_46922 create + m ()V +c bvu net/minecraft/class_5754 net/minecraft/world/entity/ai/behavior/FollowTemptation + f I c field_30115 TEMPTATION_COOLDOWN + f D d field_45125 DEFAULT_CLOSE_ENOUGH_DIST + f D e field_45126 BACKED_UP_CLOSE_ENOUGH_DIST + f Ljava/util/function/Function; f field_28316 speedModifier + f Ljava/util/function/Function; g field_44704 closeEnoughDistance + m (Laqu;Lbtw;J)Z a method_33195 canStillUse + m (Lbtw;)F a method_33196 getSpeedModifier + m (Laqu;Lbtw;J)V b method_33197 start + m (Lbtn;)Ljava/lang/Double; b method_52173 method_52173 + m (Lbtw;)Ljava/util/Optional; b method_33198 getTemptingPlayer + m ()Lcom/google/common/collect/ImmutableMap; c method_51507 method_51507 + m (Laqu;Lbtw;J)V c method_33199 stop + m (Laqu;Lbtw;J)V d method_33200 tick + m (Ljava/util/function/Function;)V + m (Ljava/util/function/Function;Ljava/util/function/Function;)V +c bvv net/minecraft/class_4103 net/minecraft/world/entity/ai/behavior/GateBehavior + f Ljava/util/Map; a field_40992 entryCondition + f Ljava/util/Set; b field_18344 exitErasedMemories + f Lbvv$a; c field_18345 orderPolicy + f Lbvv$b; d field_18346 runningPolicy + f Lbxq; e field_18347 behaviors + f Lbvh$a; f field_40993 status + m (Laqu;Lbtn;JLbvi;)V a method_46923 method_46923 + m (Lbtn;)Z a method_46924 hasRequiredMemories + m (Lbvi;)Z a method_46925 method_46925 + m (Lcom/mojang/datafixers/util/Pair;)V a method_18929 method_18929 + m (Laqu;Lbtn;JLbvi;)V b method_46926 method_46926 + m (Lbvi;)Z b method_46927 method_46927 + m (Lbvi;)Z c method_46928 method_46928 + m (Lbvi;)Z d method_46929 method_46929 + m (Ljava/util/Map;Ljava/util/Set;Lbvv$a;Lbvv$b;Ljava/util/List;)V +c bvv$a net/minecraft/class_4103$class_4104 net/minecraft/world/entity/ai/behavior/GateBehavior$OrderPolicy + f Lbvv$a; a field_18348 ORDERED + f Lbvv$a; b field_18349 SHUFFLED + f Ljava/util/function/Consumer; c field_18350 consumer + f [Lbvv$a; d field_18351 $VALUES + m ()[Lbvv$a; a method_36617 $values + m (Lbxq;)V a method_18939 apply + m (Lbxq;)V b method_18940 method_18940 + m (Ljava/lang/String;ILjava/util/function/Consumer;)V + m ()V +c bvv$b net/minecraft/class_4103$class_4216 net/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy + f Lbvv$b; a field_18855 RUN_ONE + f Lbvv$b; b field_18856 TRY_ALL + f [Lbvv$b; c field_18857 $VALUES + m ()[Lbvv$b; a method_36618 $values + m (Ljava/util/stream/Stream;Laqu;Lbtn;J)V a method_19559 apply + m (Ljava/lang/String;I)V + m ()V +c bvv$b$1 net/minecraft/class_4103$class_4216$1 net/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy$1 + m (Laqu;Lbtn;JLbvi;)Z a method_46930 method_46930 + m (Lbvi;)Z a method_46931 method_46931 + m (Ljava/lang/String;I)V +c bvv$b$2 net/minecraft/class_4103$class_4216$2 net/minecraft/world/entity/ai/behavior/GateBehavior$RunningPolicy$2 + m (Laqu;Lbtn;JLbvi;)V a method_46932 method_46932 + m (Lbvi;)Z a method_46933 method_46933 + m (Ljava/lang/String;I)V +c bvw net/minecraft/class_4243 net/minecraft/world/entity/ai/behavior/GiveGiftToHero + f I c field_30117 THROW_GIFT_AT_DISTANCE + f I d field_30118 MIN_TIME_BETWEEN_GIFTS + f I e field_30119 MAX_TIME_BETWEEN_GIFTS + f I f field_30120 TIME_TO_DELAY_FOR_HEAD_TO_FINISH_TURNING + f Ljava/util/Map; g field_18984 GIFTS + f F h field_30121 SPEED_MODIFIER + f I i field_18985 timeUntilNextGift + f Z j field_18986 giftGivenDuringThisRun + f J k field_18987 timeSinceStart + m (Laqu;)I a method_19961 calculateTimeUntilNextGift + m (Laqu;Lcmk;)Z a method_19962 checkExtraStartConditions + m (Laqu;Lcmk;J)V a method_19963 start + m (Lcmk;)Ljava/util/List; a method_19956 getItemToThrow + m (Lcmk;Lbtn;)V a method_19957 throwGift + m (Lcmk;Lcmx;)Z a method_19958 isWithinThrowingDistance + m (Lcmx;)Z a method_19959 isHero + m (Ljava/util/HashMap;)V a method_19960 method_19960 + m (Laqu;Lcmk;J)Z b method_19965 canStillUse + m (Lcmk;)Z b method_19964 isHeroVisible + m (Laqu;Lcmk;J)V c method_19967 tick + m (Lcmk;)Ljava/util/Optional; c method_19966 getNearestTargetableHero + m (Laqu;Lcmk;J)V d method_19968 stop + m (I)V + m ()V +c bvx net/minecraft/class_7296 net/minecraft/world/entity/ai/behavior/GoAndGiveItemsToTarget + f I c field_38387 CLOSE_ENOUGH_DISTANCE_TO_TARGET + f I d field_38388 ITEM_PICKUP_COOLDOWN_AFTER_THROWING + f Ljava/util/function/Function; e field_38389 targetPositionGetter + f F f field_38390 speedModifier + m (Lbtn;Lbwv;)V a method_42650 method_42650 + m (Lbtn;Lcuq;Lexc;)V a method_43393 throwItem + m (Lbwv;)Lexc; a method_42651 getThrowPosition + m (Lbwv;Lcuq;Laqv;)V a method_43079 triggerDropItemOnBlock + m (Lbtn;)Z b method_42649 canThrowItemToTarget + m (Lbwv;Lcuq;Laqv;)V b method_43080 method_43080 + m (Ljava/util/function/Function;FI)V +c bvy net/minecraft/class_4458 net/minecraft/world/entity/ai/behavior/GoToClosestVillage + m (FI)Lbvi; a method_46934 create + m (FILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46935 method_46935 + m (FILbyv;)Lbyx; a method_46936 method_46936 + m (Lbyv;FILaqu;Lcmk;J)Z a method_46937 method_46937 + m (Lces;Ljd;)D a method_46938 method_46938 + m ()V +c bvz net/minecraft/class_5325 net/minecraft/world/entity/ai/behavior/GoToPotentialJobSite + f F c field_25155 speedModifier + f I d field_30122 TICKS_UNTIL_TIMEOUT + m (Laqu;Lcmk;)Z a method_29251 checkExtraStartConditions + m (Laqu;Lcmk;J)Z a method_29523 canStillUse + m (Laqu;Ljl;)V a method_29524 method_29524 + m (Lcom;)Ljava/lang/Boolean; a method_29250 method_29250 + m (Ljm;)Z a method_29783 method_29783 + m (Laqu;Lcmk;J)V b method_29252 tick + m (Laqu;Lcmk;J)V c method_29525 stop + m (F)V +c bwa net/minecraft/class_4814 net/minecraft/world/entity/ai/behavior/GoToTargetLocation + m (Layw;)I a method_24578 getRandomOffset + m (Lbtp;Ljd;)Ljd; a method_24577 getNearbyPos + m (Lbyu$b;IFLbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46939 method_46939 + m (Lbyu$b;Lbyv;IFLaqu;Lbtp;J)Z a method_46940 method_46940 + m (Lccs;IF)Lbws; a method_46941 create + m (Lccs;IFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46942 method_46942 + m ()V +c bwb net/minecraft/class_4815 net/minecraft/world/entity/ai/behavior/GoToWantedItem + m (FZI)Lbvi; a method_46943 create + m (Lbtn;)Z a method_46944 method_46944 + m (Lbyu$b;Lbyv;Lbyv;Ljava/util/function/Predicate;IFLbyv;Lbyv;Laqu;Lbtn;J)Z a method_46945 method_46945 + m (Lbyu$b;Ljava/util/function/Predicate;IFLbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46946 method_46946 + m (Ljava/util/function/Predicate;FZI)Lbvi; a method_46947 create + m (ZLjava/util/function/Predicate;IFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46948 method_46948 + m ()V +c bwc net/minecraft/class_4217 net/minecraft/world/entity/ai/behavior/HarvestFarmland + f F c field_30123 SPEED_MODIFIER + f I d field_30124 HARVEST_DURATION + f Ljd; e field_18858 aboveFarmlandPos + f J f field_18861 nextOkStartTime + f I g field_19239 timeWorkedSoFar + f Ljava/util/List; h field_19351 validFarmlandAroundVillager + m (Laqu;)Ljd; a method_20641 getValidFarmland + m (Laqu;Lcmk;)Z a method_19564 checkExtraStartConditions + m (Laqu;Lcmk;J)V a method_20392 start + m (Ljd;Laqu;)Z a method_20640 validPos + m (Laqu;Lcmk;J)V b method_19566 stop + m (Laqu;Lcmk;J)V c method_19565 tick + m (Laqu;Lcmk;J)Z d method_20394 canStillUse + m ()V +c bwd net/minecraft/class_4289 net/minecraft/world/entity/ai/behavior/InsideBrownianWalk + m (F)Lbvi; a method_46949 create + m (FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46950 method_46950 + m (FLbyv;)Lbyx; a method_46951 method_46951 + m (Laqu;Lbtw;Ljd;)Z a method_46952 method_46952 + m (Laqu;Ljd;)Z a method_46953 method_46953 + m (Lbyv;FLaqu;Lbtw;J)Z a method_46954 method_46954 + m (Lbyv;FLjd;)V a method_46955 method_46955 + m (Laqu;Lbtw;Ljd;)Z b method_46956 method_46956 + m ()V +c bwe net/minecraft/class_4106 net/minecraft/world/entity/ai/behavior/InteractWith + m (Lbsx;ILccs;FI)Lbvi; a method_18941 of + m (Lbsx;ILjava/util/function/Predicate;Ljava/util/function/Predicate;Lccs;FI)Lbvi; a method_46957 of + m (Lbsx;Ljava/util/function/Predicate;Lbtn;)Z a method_46958 method_46958 + m (Lbtn;)Z a method_18948 method_18948 + m (Lbtn;ILjava/util/function/Predicate;Lbtn;)Z a method_46959 method_46959 + m (Lbyu$b;Lbyv;Ljava/util/function/Predicate;Ljava/util/function/Predicate;ILbyv;Lbyv;Lbyv;FILaqu;Lbtn;J)Z a method_46960 method_46960 + m (Lbyu$b;Ljava/util/function/Predicate;Ljava/util/function/Predicate;IFILbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46961 method_46961 + m (Lbyv;Lbyv;Lbyv;FILbtn;)V a method_46962 method_46962 + m (Lccs;Ljava/util/function/Predicate;Ljava/util/function/Predicate;IFILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46963 method_46963 + m (Lbtn;)Z b method_18949 method_18949 + m ()V +c bwf net/minecraft/class_4107 net/minecraft/world/entity/ai/behavior/InteractWithDoor + f I a field_30125 COOLDOWN_BEFORE_RERUNNING_IN_SAME_NODE + f D b field_30126 SKIP_CLOSING_DOOR_IF_FURTHER_AWAY_THAN + f D c field_30127 MAX_DISTANCE_TO_HOLD_DOOR_OPEN_FOR_OTHER_MOBS + m ()Lbvi; a method_46964 create + m (Laqu;Lbtn;Lepq;Lepq;Lbyu$b;Lbyv;Ljava/util/Set;)V a method_46965 method_46965 + m (Laqu;Lbtn;Lepq;Lepq;Ljava/util/Set;Ljava/util/Optional;)V a method_30760 closeDoorsThatIHaveOpenedOrPassedThrough + m (Laqu;Lbtn;Ljl;)Z a method_30762 isDoorTooFarAway + m (Lbtn;Lbtn;)Z a method_30764 method_30764 + m (Lbtn;Ljd;Ljava/util/Optional;)Z a method_30761 areOtherMobsComingThroughDoor + m (Lbuq;Ljd;)Z a method_30766 isMobComingThroughDoor + m (Lbyu$b;Lbyv;Lbyv;Lorg/apache/commons/lang3/mutable/MutableObject;Lorg/apache/commons/lang3/mutable/MutableInt;Lbyv;Laqu;Lbtn;J)Z a method_46966 method_46966 + m (Lbyu$b;Lorg/apache/commons/lang3/mutable/MutableObject;Lorg/apache/commons/lang3/mutable/MutableInt;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46967 method_46967 + m (Lbyv;Ljava/util/Optional;Laqu;Ljd;)Ljava/util/Optional; a method_46969 rememberDoorToClose + m (Ldtb$a;)Z a method_40002 method_40002 + m (Ljd;Lbtn;)Z a method_46970 method_46970 + m (Ljl;Lbyv;)Ljava/util/Set; a method_46968 method_46968 + m (Ljl;Ljava/util/Set;)Ljava/util/Set; a method_46971 method_46971 + m (Lorg/apache/commons/lang3/mutable/MutableObject;Lorg/apache/commons/lang3/mutable/MutableInt;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46972 method_46972 + m (Ldtb$a;)Z b method_46973 method_46973 + m (Ljd;Lbtn;)Z b method_30765 method_30765 + m (Ldtb$a;)Z c method_46974 method_46974 + m ()V +c bwg net/minecraft/class_4245 net/minecraft/world/entity/ai/behavior/JumpOnBed + f I c field_30128 MAX_TIME_TO_REACH_BED + f I d field_30129 MIN_JUMPS + f I e field_30130 MAX_JUMPS + f I f field_30131 COOLDOWN_BETWEEN_JUMPS + f F g field_18988 speedModifier + f Ljd; h field_18989 targetBed + f I i field_18990 remainingTimeToReachBed + f I j field_18991 remainingJumps + f I k field_18992 remainingCooldownUntilNextJump + m (Laqu;Lbtp;)Z a method_19971 checkExtraStartConditions + m (Laqu;Lbtp;J)V a method_19972 start + m (Laqu;Lbtp;Ljd;)V a method_19973 method_19973 + m (Laqu;Ljd;)Z a method_19974 isBed + m (Lbtp;)Ljava/util/Optional; a method_19969 getNearestBed + m (Lbtp;Ljd;)V a method_19970 startWalkingTowardsBed + m (Laqu;Lbtp;)Z b method_19975 nearBed + m (Laqu;Lbtp;J)V b method_19976 stop + m (Laqu;Lbtp;)Z c method_19977 onOrOverBed + m (Laqu;Lbtp;J)Z c method_19978 canStillUse + m (Laqu;Lbtp;)Z d method_19979 onBedSurface + m (Laqu;Lbtp;J)V d method_19980 tick + m (Laqu;Lbtp;)Z e method_19981 tiredOfWalking + m (Laqu;Lbtp;)Z f method_19982 tiredOfJumping + m (F)V +c bwh net/minecraft/class_4246 net/minecraft/world/entity/ai/behavior/LocateHidingPlace + m (IFI)Lbws; a method_46975 create + m (IIFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46976 method_46976 + m (IILbyu$b;FLbyv;Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46977 method_46977 + m (IILbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;FLaqu;Lbtn;J)Z a method_46978 method_46978 + m (Laqu;Lbtn;I)Ljava/util/Optional; a method_46979 method_46979 + m (Lbtn;ILjd;)Z a method_46980 method_46980 + m (Lbyu$b;Lbyv;)Ljava/util/Optional; a method_46981 method_46981 + m (Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;Laqu;Lbtn;ILbyv;FLjd;)V a method_46982 method_46982 + m (Ljd;)Z a method_46983 method_46983 + m (Ljm;)Z a method_46984 method_46984 + m (Ljd;)Z b method_46985 method_46985 + m (Ljm;)Z b method_46986 method_46986 + m ()V +c bwi net/minecraft/class_6029 net/minecraft/world/entity/ai/behavior/LongJumpMidJump + f I c field_30132 TIME_OUT_DURATION + f Lbqc; d field_30133 timeBetweenLongJumps + f Lavo; e field_33459 landingSound + m (Laqu;Lbtp;J)Z a method_35073 canStillUse + m (Laqu;Lbtp;J)V b method_35074 start + m (Laqu;Lbtp;J)V c method_35075 stop + m (Lbqc;Lavo;)V +c bwj net/minecraft/class_7096 net/minecraft/world/entity/ai/behavior/LongJumpToPreferredBlock + f Lawu; m field_37427 preferredBlockTag + f F n field_37428 preferredBlocksChance + f Ljava/util/List; o field_37429 notPrefferedJumpCandidates + f Z p field_37430 currentlyWantingPreferredOnes + m (Lbqc;IIFLjava/util/function/Function;Lawu;FLjava/util/function/BiPredicate;)V +c bwk net/minecraft/class_6030 net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos + f I c field_30135 FIND_JUMP_TRIES + f I d field_30137 MIN_PATHFIND_DISTANCE_TO_VALID_JUMP + f I e field_30139 maxLongJumpHeight + f I f field_30140 maxLongJumpWidth + f F g field_30141 maxJumpVelocityMultiplier + f Ljava/util/List; h field_30142 jumpCandidates + f Ljava/util/Optional; i field_30143 initialPosition + f Lexc; j field_30144 chosenJump + f I k field_30145 findJumpTries + f J l field_30146 prepareJumpStart + f I m field_30136 PREPARE_JUMP_DURATION + f I n field_30134 TIME_OUT_DURATION + f Ljava/util/List; o field_37431 ALLOWED_ANGLES + f Lbqc; p field_30138 timeBetweenLongJumps + f Ljava/util/function/Function; q field_33460 getJumpSound + f Ljava/util/function/BiPredicate; r field_37432 acceptableLandingSpot + m (Laqu;)Ljava/util/Optional; a method_41336 getJumpCandidate + m (Laqu;Lbtp;)Z a method_35076 checkExtraStartConditions + m (Laqu;Lbtp;J)V a method_35082 start + m (Laqu;Lbtp;Ljd;)Z a method_41337 isAcceptableLandingPosition + m (Lbtp;Lexc;)Lexc; a method_35078 calculateOptimalJumpVector + m (Lbtp;Ljd;)Z a method_45333 defaultAcceptableLandingSpot + m (Ljd;Ljd;)Lbwk$a; a method_41340 method_41340 + m (Laqu;Lbtp;J)Z b method_35077 canStillUse + m (Ljd;Ljd;)Z b method_41341 method_41341 + m (Laqu;Lbtp;J)V c method_35083 tick + m (Laqu;Lbtp;J)V d method_41342 pickCandidate + m (Lbqc;IIFLjava/util/function/Function;)V + m (Lbqc;IIFLjava/util/function/Function;Ljava/util/function/BiPredicate;)V + m ()V +c bwk$a net/minecraft/class_6030$class_6031 net/minecraft/world/entity/ai/behavior/LongJumpToRandomPos$PossibleJump + f Ljd; a field_30147 jumpTarget + m ()Ljd; b method_35084 getJumpTarget + m (Ljd;I)V +c bwl net/minecraft/class_8946 net/minecraft/world/entity/ai/behavior/LongJumpUtil + m (Lbtp;Lbsu;Lexc;Lexc;)Z a method_54989 isClearTransition + m (Lbtp;Lexc;FIZ)Ljava/util/Optional; a method_54990 calculateJumpVectorForAngle + m ()V +c bwm net/minecraft/class_4108 net/minecraft/world/entity/ai/behavior/LookAndFollowTradingPlayerSink + f F c field_18362 speedModifier + m (Laqu;Lcmk;)Z a method_18954 checkExtraStartConditions + m (Laqu;Lcmk;J)Z a method_18955 canStillUse + m (Lcmk;)V a method_18953 followPlayer + m (Laqu;Lcmk;J)V b method_18956 start + m (Laqu;Lcmk;J)V c method_18957 stop + m (Laqu;Lcmk;J)V d method_18958 tick + m (F)V +c bwn net/minecraft/class_4110 net/minecraft/world/entity/ai/behavior/LookAtTargetSink + m (Laqu;Lbtp;J)Z a method_18967 canStillUse + m (Lbtp;Lbwv;)V a method_18966 method_18966 + m (Laqu;Lbtp;J)V b method_18968 stop + m (Lbtp;Lbwv;)Z b method_19569 method_19569 + m (Laqu;Lbtp;J)V c method_18969 tick + m (II)V +c bwo net/minecraft/class_4816 net/minecraft/world/entity/ai/behavior/MeleeAttack + m (I)Lbws; a method_46987 create + m (ILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46988 method_46988 + m (Lbtp;)Z a method_25942 isHoldingUsableProjectileWeapon + m (Lbtp;Lcuq;)Z a method_25943 method_25943 + m (Lbyu$b;ILbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_46989 method_46989 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;ILaqu;Lbtp;J)Z a method_46990 method_46990 + m ()V +c bwp net/minecraft/class_4817 net/minecraft/world/entity/ai/behavior/Mount + f I a field_30149 CLOSE_ENOUGH_TO_START_RIDING_DIST + m (F)Lbvi; a method_46991 create + m (FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46992 method_46992 + m (Lbyu$b;FLbyv;Lbyv;Lbyv;)Lbyx; a method_46993 method_46993 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;FLaqu;Lbtn;J)Z a method_46994 method_46994 + m ()V +c bwq net/minecraft/class_4248 net/minecraft/world/entity/ai/behavior/MoveToSkySeeingSpot + m (F)Lbws; a method_46995 create + m (FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_46996 method_46996 + m (FLbyv;)Lbyx; a method_46997 method_46997 + m (Laqu;Lbtn;)Lexc; a method_19987 getOutdoorPosition + m (Laqu;Lbtn;Ljd;)Z a method_20497 hasNoBlocksAbove + m (Lbyv;FLaqu;Lbtn;J)Z a method_46998 method_46998 + m (Lbyv;FLexc;)V a method_46999 method_46999 + m ()V +c bwr net/minecraft/class_4112 net/minecraft/world/entity/ai/behavior/MoveToTargetSink + f I c field_30150 MAX_COOLDOWN_BEFORE_RETRYING + f I d field_18964 remainingCooldown + f Leps; e field_18369 path + f Ljd; f field_18370 lastTargetPos + f F g field_18371 speedModifier + m (Laqu;Lbtp;)Z a method_18978 checkExtraStartConditions + m (Laqu;Lbtp;J)Z a method_18979 canStillUse + m (Lbtp;Lccv;)Z a method_18980 reachedTarget + m (Lbtp;Lccv;J)Z a method_18977 tryComputePath + m (Lccv;)Z a method_49793 isWalkTargetSpectator + m (Laqu;Lbtp;J)V b method_18981 stop + m (Laqu;Lbtp;J)V c method_18982 start + m (Laqu;Lbtp;J)V d method_18983 tick + m ()V + m (II)V +c bws net/minecraft/class_7894 net/minecraft/world/entity/ai/behavior/OneShot + f Lbvh$a; a field_40994 status + m ()V +c bwt net/minecraft/class_4218 net/minecraft/world/entity/ai/behavior/PlayTagWithOtherKids + f I a field_30151 MAX_FLEE_XZ_DIST + f I b field_30152 MAX_FLEE_Y_DIST + f F c field_30153 FLEE_SPEED_MODIFIER + f F d field_30154 CHASE_SPEED_MODIFIER + f I e field_30155 MAX_CHASERS_PER_TARGET + f I f field_30156 AVERAGE_WAIT_TIME_BETWEEN_RUNS + m ()Lbvi; a method_47000 create + m (Lbtn;)Lbtn; a method_19576 whoAreYouChasing + m (Lbtn;Lbtn;)Z a method_19577 isFriendChasingMe + m (Lbtn;Ljava/lang/Integer;)Ljava/lang/Integer; a method_19578 method_19578 + m (Lbtw;Lbtn;)Z a method_47001 method_47001 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47002 method_47002 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47003 method_47003 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;Laqu;Lbtw;J)Z a method_47004 method_47004 + m (Lbyv;Lbyv;Lbyv;Lbtn;)V a method_19580 chaseKid + m (Ljava/util/List;)Ljava/util/Optional; a method_19588 findSomeoneBeingChased + m (Ljava/util/Map$Entry;)Z a method_19581 method_19581 + m (Ljava/util/Map;Lbtn;)V a method_19582 method_19582 + m (Lbtn;)Z b method_19593 isChasingSomeone + m (Lbtn;Lbtn;)Z b method_19587 method_19587 + m (Lbyv;Lbyv;Lbyv;Lbtn;)V b method_47005 method_47005 + m (Ljava/util/List;)Ljava/util/Map; b method_19592 checkHowManyChasersEachFriendHas + m ()V +c bwu net/minecraft/class_5326 net/minecraft/world/entity/ai/behavior/PoiCompetitorScan + m ()Lbvi; a method_47006 create + m (Lbtn;)Lcmk; a method_47007 method_47007 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47008 method_47008 + m (Lbyu$b;Lbyv;Lbyv;)Lbyx; a method_47009 method_47009 + m (Lbyu$b;Lbyv;Lbyv;Laqu;Lcmk;J)Z a method_47010 method_47010 + m (Lbyu$b;Lbyv;Lcmk;Ljl;Ljm;)V a method_47011 method_47011 + m (Lcmk;Lbtn;)Z a method_47012 method_47012 + m (Lcmk;Lcmk;)Lcmk; a method_29255 selectWinner + m (Ljl;Ljm;Lcmk;)Z a method_29257 competesForSameJobsite + m (Ljm;Lcmn;)Z a method_29253 hasMatchingProfession + m (Ljl;Ljm;Lcmk;)Z b method_47013 method_47013 + m ()V +c bwv net/minecraft/class_4115 net/minecraft/world/entity/ai/behavior/PositionTracker + m ()Lexc; a method_18991 currentPosition + m (Lbtn;)Z a method_18990 isVisibleBy + m ()Ljd; b method_18989 currentBlockPosition +c bww net/minecraft/class_6336 net/minecraft/world/entity/ai/behavior/PrepareRamNearestTarget + f I c field_33461 TIME_OUT_DURATION + f Ljava/util/function/ToIntFunction; d field_33462 getCooldownOnFail + f I e field_33463 minRamDistance + f I f field_33464 maxRamDistance + f F g field_33465 walkSpeed + f Lcef; h field_33466 ramTargeting + f I i field_33467 ramPrepareTime + f Ljava/util/function/Function; j field_33468 getPrepareRamSound + f Ljava/util/Optional; k field_33469 reachedRamPositionTimestamp + f Ljava/util/Optional; l field_33470 ramCandidate + m (Laqu;Lbtw;J)V a method_36260 start + m (Lbtn;Ljd;)Lbww$a; a method_36261 method_36261 + m (Lbtw;Lbtn;)Ljava/util/Optional; a method_36262 calculateRammingStartPosition + m (Lbtw;Lccu;)Ljava/util/Optional; a method_36264 method_36264 + m (Lbtw;Ljd;)Z a method_36263 isWalkableBlock + m (Lcda;Ljd;)Z a method_36265 method_36265 + m (Ljd;Ljd;)Lexc; a method_36266 getEdgeOfBlock + m (Laqu;Lbtw;J)V b method_36267 stop + m (Lbtw;Lbtn;)V b method_36268 chooseRamPosition + m (Laqu;Lbtw;J)Z c method_36269 canStillUse + m (Lbtw;Lbtn;)V c method_36270 method_36270 + m (Laqu;Lbtw;J)V d method_36271 tick + m (Lbtw;Lbtn;)Z d method_36272 method_36272 + m (Ljava/util/function/ToIntFunction;IIFLcef;ILjava/util/function/Function;)V +c bww$a net/minecraft/class_6336$class_6337 net/minecraft/world/entity/ai/behavior/PrepareRamNearestTarget$RamCandidate + f Ljd; a field_33471 startPosition + f Ljd; b field_33472 targetPosition + f Lbtn; c field_33473 target + m ()Ljd; a method_36273 getStartPosition + m ()Ljd; b method_36275 getTargetPosition + m ()Lbtn; c method_36276 getTarget + m (Ljd;Ljd;Lbtn;)V +c bwx net/minecraft/class_6338 net/minecraft/world/entity/ai/behavior/RamTarget + f I c field_33474 TIME_OUT_DURATION + f F d field_33475 RAM_SPEED_FORCE_FACTOR + f Ljava/util/function/Function; e field_33476 getTimeBetweenRams + f Lcef; f field_33477 ramTargeting + f F g field_33479 speed + f Ljava/util/function/ToDoubleFunction; h field_33480 getKnockbackForce + f Lexc; i field_33481 ramDirection + f Ljava/util/function/Function; j field_33482 getImpactSound + f Ljava/util/function/Function; k field_39044 getHornBreakSound + m (Laqu;Lche;)Z a method_36277 checkExtraStartConditions + m (Laqu;Lche;J)Z a method_36278 canStillUse + m (Laqu;Lche;)V b method_36279 finishRam + m (Laqu;Lche;J)V b method_36280 start + m (Laqu;Lche;)Z c method_43535 hasRammedHornBreakingBlock + m (Laqu;Lche;J)V c method_36281 tick + m (Ljava/util/function/Function;Lcef;FLjava/util/function/ToDoubleFunction;Ljava/util/function/Function;Ljava/util/function/Function;)V +c bwy net/minecraft/class_7687 net/minecraft/world/entity/ai/behavior/RandomLookAround + f Lbpw; c field_40119 interval + f F d field_40120 maxYaw + f F e field_40121 minPitch + f F f field_40122 pitchRange + m (Laqu;Lbtp;J)V a method_45334 start + m (Lbpw;FFF)V +c bwz net/minecraft/class_4818 net/minecraft/world/entity/ai/behavior/RandomStroll + f I a field_30157 MAX_XZ_DIST + f I b field_30158 MAX_Y_DIST + f [[I c field_40995 SWIM_XY_DISTANCE_TIERS + m (F)Lbws; a method_47014 stroll + m (FII)Lbvi; a method_47015 stroll + m (FLexc;)Lccv; a method_47016 method_47016 + m (FLjava/util/function/Function;Ljava/util/function/Predicate;)Lbws; a method_47017 strollFlyOrSwim + m (FZ)Lbws; a method_47018 stroll + m (IILbtw;)Lexc; a method_47019 method_47019 + m (Lbtw;)Lexc; a method_47020 getTargetSwimPos + m (Lbtw;II)Lexc; a method_47021 getTargetFlyPos + m (Ljava/util/function/Predicate;Ljava/util/function/Function;FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47022 method_47022 + m (Ljava/util/function/Predicate;Ljava/util/function/Function;FLbyv;)Lbyx; a method_47023 method_47023 + m (Ljava/util/function/Predicate;Ljava/util/function/Function;Lbyv;FLaqu;Lbtw;J)Z a method_47024 method_47024 + m (F)Lbvi; b method_47025 fly + m (Lbtw;)Z b method_47026 method_47026 + m (F)Lbvi; c method_47027 swim + m (Lbtw;)Lexc; c method_47028 method_47028 + m (Lbtw;)Z d method_47029 method_47029 + m (Lbtw;)Z e method_47030 method_47030 + m (Lbtw;)Z f method_47031 method_47031 + m (Lbtw;)Lexc; g method_47032 method_47032 + m ()V + m ()V +c bxa net/minecraft/class_4249 net/minecraft/world/entity/ai/behavior/ReactToBell + m ()Lbvi; a method_47033 create + m (Laqu;Lbtn;J)Z a method_47034 method_47034 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47035 method_47035 + m (Lbyv;)Lbyx; a method_47036 method_47036 + m ()V +c bxb net/minecraft/class_4295 net/minecraft/world/entity/ai/behavior/ResetProfession + m ()Lbvi; a method_47037 create + m (Laqu;Lcmk;J)Z a method_47038 method_47038 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47039 method_47039 + m (Lbyv;)Lbyx; a method_47040 method_47040 + m ()V +c bxc net/minecraft/class_4250 net/minecraft/world/entity/ai/behavior/ResetRaidStatus + m ()Lbvi; a method_47041 create + m (Laqu;Lbtn;J)Z a method_47042 method_47042 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47043 method_47043 + m ()V +c bxd net/minecraft/class_4251 net/minecraft/world/entity/ai/behavior/RingBell + f I a field_30159 RING_BELL_FROM_DISTANCE + f F b field_30160 BELL_RING_CHANCE + m ()Lbvi; a method_47044 create + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47045 method_47045 + m (Lbyu$b;Lbyv;)Lbyx; a method_47046 method_47046 + m (Lbyu$b;Lbyv;Laqu;Lbtn;J)Z a method_47047 method_47047 + m ()V +c bxe net/minecraft/class_4118 net/minecraft/world/entity/ai/behavior/RunOne + m (Ljava/util/List;)V + m (Ljava/util/Map;Ljava/util/List;)V +c bxf net/minecraft/class_4290 net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget + f I a field_30161 CACHE_TIMEOUT + f I b field_30162 BATCH_SIZE + f I c field_30163 RATE + f I d field_30164 OK_DISTANCE_SQR + m (F)Lbvi; a method_47048 create + m (Lit/unimi/dsi/fastutil/longs/Long2LongMap;Lorg/apache/commons/lang3/mutable/MutableInt;Lorg/apache/commons/lang3/mutable/MutableLong;Ljd;)Z a method_47050 method_47050 + m (Ljm;)Z a method_47049 method_47049 + m (Lorg/apache/commons/lang3/mutable/MutableLong;Lit/unimi/dsi/fastutil/longs/Long2LongMap$Entry;)Z a method_47051 method_47051 + m (Lorg/apache/commons/lang3/mutable/MutableLong;Lit/unimi/dsi/fastutil/longs/Long2LongMap;FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47052 method_47052 + m (Lorg/apache/commons/lang3/mutable/MutableLong;Lit/unimi/dsi/fastutil/longs/Long2LongMap;FLbyv;Lbyv;)Lbyx; a method_47053 method_47053 + m (Lorg/apache/commons/lang3/mutable/MutableLong;Lit/unimi/dsi/fastutil/longs/Long2LongMap;Lbyv;FLaqu;Lbtw;J)Z a method_47054 method_47054 + m (Ljm;)Z b method_47055 method_47055 + m ()V +c bxg net/minecraft/class_4119 net/minecraft/world/entity/ai/behavior/SetEntityLookTarget + m (F)Lbws; a method_47056 create + m (Lbsx;F)Lbws; a method_47057 create + m (Lbsx;Lbtn;)Z a method_47058 method_47058 + m (Lbtn;)Z a method_47059 method_47059 + m (Lbtn;FLbtn;)Z a method_47060 method_47060 + m (Lbtq;F)Lbvi; a method_47061 create + m (Lbtq;Lbtn;)Z a method_47062 method_47062 + m (Lbyu$b;Lbyv;Ljava/util/function/Predicate;FLbyv;Laqu;Lbtn;J)Z a method_47063 method_47063 + m (Lbyu$b;Ljava/util/function/Predicate;FLbyv;Lbyv;)Lbyx; a method_47064 method_47064 + m (Ljava/util/function/Predicate;F)Lbws; a method_47065 create + m (Ljava/util/function/Predicate;FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47066 method_47066 + m ()V +c bxh net/minecraft/class_7895 net/minecraft/world/entity/ai/behavior/SetEntityLookTargetSometimes + m (FLbqc;)Lbvi; a method_47067 create + m (FLbqc;Ljava/util/function/Predicate;)Lbvi; a method_47068 create + m (Lbsx;FLbqc;)Lbvi; a method_47069 create + m (Lbsx;Lbtn;)Z a method_47070 method_47070 + m (Lbtn;)Z a method_47071 method_47071 + m (Lbtn;FLbtn;)Z a method_47072 method_47072 + m (Lbyu$b;Lbyv;Ljava/util/function/Predicate;FLbxh$a;Lbyv;Laqu;Lbtn;J)Z a method_47073 method_47073 + m (Lbyu$b;Ljava/util/function/Predicate;FLbxh$a;Lbyv;Lbyv;)Lbyx; a method_47074 method_47074 + m (Ljava/util/function/Predicate;FLbxh$a;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47075 method_47075 + m ()V +c bxh$a net/minecraft/class_7895$class_7896 net/minecraft/world/entity/ai/behavior/SetEntityLookTargetSometimes$Ticker + f Lbqc; a field_40996 interval + f I b field_40997 ticksUntilNextStart + m (Layw;)Z a method_47076 tickDownAndCheck + m (Lbqc;)V +c bxi net/minecraft/class_4252 net/minecraft/world/entity/ai/behavior/SetHiddenState + f I a field_30165 HIDE_TIMEOUT + m (II)Lbvi; a method_47077 create + m (Lbyu$b;Lbyv;Lorg/apache/commons/lang3/mutable/MutableInt;ILbyv;ILaqu;Lbtn;J)Z a method_47078 method_47078 + m (Lbyu$b;Lorg/apache/commons/lang3/mutable/MutableInt;IILbyv;Lbyv;)Lbyx; a method_47079 method_47079 + m (Lorg/apache/commons/lang3/mutable/MutableInt;IILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47080 method_47080 + m ()V +c bxj net/minecraft/class_4109 net/minecraft/world/entity/ai/behavior/SetLookAndInteract + m (ILbsx;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47081 method_47081 + m (Lbsx;I)Lbvi; a method_47082 create + m (Lbtn;ILbsx;Lbtn;)Z a method_47083 method_47083 + m (Lbyu$b;ILbsx;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47084 method_47084 + m (Lbyu$b;Lbyv;ILbsx;Lbyv;Lbyv;Laqu;Lbtn;J)Z a method_47085 method_47085 + m ()V +c bxk net/minecraft/class_4253 net/minecraft/world/entity/ai/behavior/SetRaidStatus + m ()Lbvi; a method_47086 create + m (Laqu;Lbtn;J)Z a method_47087 method_47087 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47088 method_47088 + m ()V +c bxl net/minecraft/class_4121 net/minecraft/world/entity/ai/behavior/SetWalkTargetAwayFrom + m (Lbyu$b;Lbyv;ZLjava/util/function/Function;Lbyv;IFLaqu;Lbtw;J)Z a method_47089 method_47089 + m (Lbyu$b;ZLjava/util/function/Function;IFLbyv;Lbyv;)Lbyx; a method_47090 method_47090 + m (Lccs;FIZ)Lbvi; a method_47091 pos + m (Lccs;FIZLjava/util/function/Function;)Lbws; a method_47092 create + m (Lccs;ZLjava/util/function/Function;IFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47093 method_47093 + m (Lccs;FIZ)Lbws; b method_24603 entity + m ()V +c bxm net/minecraft/class_4822 net/minecraft/world/entity/ai/behavior/SetWalkTargetFromAttackTargetIfTargetOutOfReach + f I a field_30166 PROJECTILE_ATTACK_RANGE_BUFFER + m (F)Lbvi; a method_47094 create + m (FLbtn;)Ljava/lang/Float; a method_47095 method_47095 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;Ljava/util/function/Function;Laqu;Lbtp;J)Z a method_47096 method_47096 + m (Lbyu$b;Ljava/util/function/Function;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47097 method_47097 + m (Ljava/util/function/Function;)Lbvi; a method_47098 create + m (Ljava/util/function/Function;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47099 method_47099 + m ()V +c bxn net/minecraft/class_4122 net/minecraft/world/entity/ai/behavior/SetWalkTargetFromBlockMemory + m (Lbyu$b;ILccs;IFILbyv;Lbyv;Lbyv;)Lbyx; a method_47100 method_47100 + m (Lbyu$b;Lbyv;Lbyv;ILccs;ILbyv;FILaqu;Lcmk;J)Z a method_47101 method_47101 + m (Lccs;FIII)Lbws; a method_47102 create + m (Lccs;IIFILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47103 method_47103 + m ()V +c bxo net/minecraft/class_4120 net/minecraft/world/entity/ai/behavior/SetWalkTargetFromLookTarget + m (FI)Lbws; a method_47104 create + m (FLbtn;)Ljava/lang/Float; a method_47105 method_47105 + m (Lbtn;)Z a method_47106 method_47106 + m (Ljava/util/function/Predicate;Lbyu$b;Ljava/util/function/Function;ILbyv;Lbyv;)Lbyx; a method_47107 method_47107 + m (Ljava/util/function/Predicate;Lbyv;Lbyu$b;Lbyv;Ljava/util/function/Function;ILaqu;Lbtn;J)Z a method_47108 method_47108 + m (Ljava/util/function/Predicate;Ljava/util/function/Function;I)Lbws; a method_47109 create + m (Ljava/util/function/Predicate;Ljava/util/function/Function;ILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47110 method_47110 + m ()V +c bxp net/minecraft/class_4130 net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer + f I c field_30167 MAX_LOOK_TIME + f I d field_30168 STARTING_LOOK_TIME + f Lcuq; e field_18392 playerItemStack + f Ljava/util/List; f field_18393 displayItems + f I g field_18394 cycleCounter + f I h field_18395 displayIndex + f I i field_18396 lookTime + m (Laqu;Lcmk;)Z a method_19599 checkExtraStartConditions + m (Laqu;Lcmk;J)Z a method_19600 canStillUse + m (Lbtn;Lcmk;)V a method_19027 findItemsToDisplay + m (Lcmk;)V a method_19598 displayFirstItem + m (Lcmk;Lcuq;)V a method_37447 displayAsHeldItem + m (Ldbu;)Z a method_19028 playerItemStackMatchesCostOfOffer + m (Laqu;Lcmk;J)V b method_19602 start + m (Lcmk;)V b method_19601 updateDisplayItems + m (Laqu;Lcmk;J)V c method_19604 tick + m (Lcmk;)V c method_37448 clearHeldItem + m (Laqu;Lcmk;J)V d method_19605 stop + m (Lcmk;)Lbtn; d method_19603 lookAtTarget + m (Lcmk;)V e method_19026 displayCyclingItems + m (II)V +c bxq net/minecraft/class_6032 net/minecraft/world/entity/ai/behavior/ShufflingList + f Ljava/util/List; a field_30169 entries + f Layw; b field_30170 random + m ()Lbxq; a method_35088 shuffle + m (Lbxq$a;)V a method_35089 method_35089 + m (Lbxq;)Ljava/util/List; a method_35090 method_35090 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_35091 codec + m (Ljava/lang/Object;I)Lbxq; a method_35093 add + m ()Ljava/util/stream/Stream; b method_35094 stream + m ()V + m (Ljava/util/List;)V +c bxq$a net/minecraft/class_6032$class_6033 net/minecraft/world/entity/ai/behavior/ShufflingList$WeightedEntry + f Ljava/lang/Object; a field_30171 data + f I b field_30172 weight + f D c field_30173 randWeight + m ()Ljava/lang/Object; a method_35095 getData + m (F)V a method_35096 setRandom + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_35099 codec + m ()I b method_35100 getWeight + m ()D c method_35102 getRandWeight + m (Ljava/lang/Object;I)V +c bxq$a$1 net/minecraft/class_6032$class_6033$1 net/minecraft/world/entity/ai/behavior/ShufflingList$WeightedEntry$1 + f Lcom/mojang/serialization/Codec; a field_30174 val$elementCodec + m (Lbxq$a;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_35104 encode + m (Lcom/mojang/serialization/Dynamic;Ljava/lang/Object;)Lbxq$a; a method_35105 method_35105 + m (Lcom/mojang/serialization/DynamicOps;Lbxq$a;)Lcom/mojang/datafixers/util/Pair; a method_35106 method_35106 + m (Lcom/mojang/serialization/Codec;)V +c bxr net/minecraft/class_4123 net/minecraft/world/entity/ai/behavior/SleepInBed + f I c field_30175 COOLDOWN_AFTER_BEING_WOKEN + f J d field_18848 nextOkStartTime + m ()V +c bxs net/minecraft/class_4124 net/minecraft/world/entity/ai/behavior/SocializeAtBell + f F a field_30176 SPEED_MODIFIER + m ()Lbws; a method_47111 create + m (Lbtn;)Z a method_47112 method_47112 + m (Lbtn;Lbtn;)Z a method_47113 method_47113 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47114 method_47114 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47115 method_47115 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;Laqu;Lbtn;J)Z a method_47116 method_47116 + m (Lbyv;Lbyv;Lbyv;Lbtn;)V a method_47117 method_47117 + m ()V +c bxt net/minecraft/class_4824 net/minecraft/world/entity/ai/behavior/StartAttacking + m (Lbtp;)Z a method_47118 method_47118 + m (Ljava/util/function/Function;)Lbvi; a method_47119 create + m (Ljava/util/function/Predicate;Ljava/util/function/Function;)Lbvi; a method_47120 create + m (Ljava/util/function/Predicate;Ljava/util/function/Function;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47121 method_47121 + m (Ljava/util/function/Predicate;Ljava/util/function/Function;Lbyv;Lbyv;)Lbyx; a method_47122 method_47122 + m (Ljava/util/function/Predicate;Ljava/util/function/Function;Lbyv;Lbyv;Laqu;Lbtp;J)Z a method_47123 method_47123 + m ()V +c bxu net/minecraft/class_4825 net/minecraft/world/entity/ai/behavior/StartCelebratingIfTargetDead + m (ILjava/util/function/BiPredicate;)Lbvi; a method_47124 create + m (Lbyu$b;Lbyv;Ljava/util/function/BiPredicate;Lbyv;ILbyv;Lbyv;Laqu;Lbtn;J)Z a method_47125 method_47125 + m (Lbyu$b;Ljava/util/function/BiPredicate;ILbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47126 method_47126 + m (Ljava/util/function/BiPredicate;ILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47127 method_47127 + m ()V +c bxv net/minecraft/class_7297 net/minecraft/world/entity/ai/behavior/StayCloseToTarget + m (Ljava/util/function/Function;Ljava/util/function/Predicate;IFILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47128 method_47128 + m (Ljava/util/function/Function;Ljava/util/function/Predicate;IFILbyv;Lbyv;)Lbyx; a method_47129 method_47129 + m (Ljava/util/function/Function;Ljava/util/function/Predicate;IIF)Lbvi; a method_47130 create + m (Ljava/util/function/Function;Ljava/util/function/Predicate;ILbyv;Lbyv;FILaqu;Lbtn;J)Z a method_47131 method_47131 + m ()V +c bxw net/minecraft/class_4828 net/minecraft/world/entity/ai/behavior/StopAttackingIfTargetInvalid + f I a field_30177 TIMEOUT_TO_GET_WITHIN_ATTACK_RANGE + m ()Lbvi; a method_47132 create + m (Lbtn;)Z a method_47133 method_47133 + m (Lbtn;Ljava/util/Optional;)Z a method_24621 isTiredOfTryingToReachTarget + m (Lbtp;Lbtn;)V a method_47134 method_47134 + m (Lbyu$b;Lbyv;ZLbyv;Ljava/util/function/Predicate;Ljava/util/function/BiConsumer;Laqu;Lbtp;J)Z a method_47135 method_47135 + m (Lbyu$b;ZLjava/util/function/Predicate;Ljava/util/function/BiConsumer;Lbyv;Lbyv;)Lbyx; a method_47136 method_47136 + m (Ljava/util/function/BiConsumer;)Lbvi; a method_47137 create + m (Ljava/util/function/Predicate;)Lbvi; a method_47138 create + m (Ljava/util/function/Predicate;Ljava/util/function/BiConsumer;Z)Lbvi; a method_47139 create + m (ZLjava/util/function/Predicate;Ljava/util/function/BiConsumer;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47140 method_47140 + m (Lbtn;)Z b method_47141 method_47141 + m (Lbtp;Lbtn;)V b method_47142 method_47142 + m ()V +c bxx net/minecraft/class_4829 net/minecraft/world/entity/ai/behavior/StopBeingAngryIfTargetDead + m ()Lbvi; a method_47143 create + m (Laqu;Lbtn;)Z a method_47144 method_47144 + m (Lbsr;)Lbtn; a method_47145 method_47145 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47146 method_47146 + m (Lbyu$b;Lbyv;)Lbyx; a method_47147 method_47147 + m (Lbyu$b;Lbyv;Laqu;Lbtn;J)Z a method_47148 method_47148 + m (Lbyv;Lbtn;)V a method_47149 method_47149 + m ()V +c bxy net/minecraft/class_4116 net/minecraft/world/entity/ai/behavior/StrollAroundPoi + f I a field_30179 MIN_TIME_BETWEEN_STROLLS + f I b field_30180 STROLL_MAX_XZ_DIST + f I c field_30181 STROLL_MAX_Y_DIST + m (FLexc;)Lccv; a method_47150 method_47150 + m (Lbyu$b;ILorg/apache/commons/lang3/mutable/MutableLong;FLbyv;Lbyv;)Lbyx; a method_47151 method_47151 + m (Lbyu$b;Lbyv;ILorg/apache/commons/lang3/mutable/MutableLong;Lbyv;FLaqu;Lbtw;J)Z a method_47152 method_47152 + m (Lccs;FI)Lbws; a method_47153 create + m (Lccs;ILorg/apache/commons/lang3/mutable/MutableLong;FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47154 method_47154 + m ()V +c bxz net/minecraft/class_4219 net/minecraft/world/entity/ai/behavior/StrollToPoi + m (Lbyu$b;ILorg/apache/commons/lang3/mutable/MutableLong;FILbyv;Lbyv;)Lbyx; a method_47155 method_47155 + m (Lbyu$b;Lbyv;ILorg/apache/commons/lang3/mutable/MutableLong;Lbyv;FILaqu;Lbtw;J)Z a method_47156 method_47156 + m (Lccs;FII)Lbvi; a method_47157 create + m (Lccs;ILorg/apache/commons/lang3/mutable/MutableLong;FILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47158 method_47158 + m ()V +c bya net/minecraft/class_4220 net/minecraft/world/entity/ai/behavior/StrollToPoiList + m (Lbyu$b;ILorg/apache/commons/lang3/mutable/MutableLong;FILbyv;Lbyv;Lbyv;)Lbyx; a method_47159 method_47159 + m (Lbyu$b;Lbyv;Lbyv;ILorg/apache/commons/lang3/mutable/MutableLong;Lbyv;FILaqu;Lcmk;J)Z a method_47160 method_47160 + m (Lccs;FIILccs;)Lbvi; a method_47161 create + m (Lccs;Lccs;ILorg/apache/commons/lang3/mutable/MutableLong;FILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47162 method_47162 + m ()V +c byb net/minecraft/class_4125 net/minecraft/world/entity/ai/behavior/Swim + f F c field_18387 chance + m (Laqu;Lbtp;)Z a method_19010 checkExtraStartConditions + m (Laqu;Lbtp;J)Z a method_19011 canStillUse + m (Lbtp;)Z a method_55700 shouldSwim + m (Laqu;Lbtp;J)V b method_19012 tick + m (F)V +c byc net/minecraft/class_4126 net/minecraft/world/entity/ai/behavior/TradeWithVillager + f Ljava/util/Set; c field_18389 trades + m (Laqu;Lcmk;)Z a method_19015 checkExtraStartConditions + m (Laqu;Lcmk;J)Z a method_19016 canStillUse + m (Lcmk;Lcmk;)Ljava/util/Set; a method_19611 figureOutWhatIAmWillingToTrade + m (Lcmk;Ljava/util/Set;Lbtn;)V a method_19013 throwHalfStack + m (Lcom/google/common/collect/ImmutableSet;Lcul;)Z a method_19014 method_19014 + m (Laqu;Lcmk;J)V b method_19017 start + m (Laqu;Lcmk;J)V c method_19018 tick + m (Laqu;Lcmk;J)V d method_19019 stop + m ()V +c byd net/minecraft/class_7897 net/minecraft/world/entity/ai/behavior/TriggerGate + m (Lbvv$a;Lbxq;Lbvv$b;Laqu;Lbtn;J)Z a method_47163 method_47163 + m (Lbvv$a;Lbxq;Lbvv$b;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47164 method_47164 + m (Lbxq;Lcom/mojang/datafixers/util/Pair;)V a method_47165 method_47165 + m (Ljava/util/List;)Lbws; a method_47166 triggerOneShuffled + m (Ljava/util/List;Lbvv$a;Lbvv$b;)Lbws; a method_47167 triggerGate + m ()V +c bye net/minecraft/class_7097 net/minecraft/world/entity/ai/behavior/TryFindLand + f I a field_37433 COOLDOWN_TICKS + m (IF)Lbvi; a method_47168 create + m (Lorg/apache/commons/lang3/mutable/MutableLong;IFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47169 method_47169 + m (Lorg/apache/commons/lang3/mutable/MutableLong;IFLbyv;Lbyv;Lbyv;)Lbyx; a method_47170 method_47170 + m (Lorg/apache/commons/lang3/mutable/MutableLong;ILbyv;Lbyv;FLaqu;Lbtw;J)Z a method_47171 method_47171 + m ()V +c byf net/minecraft/class_7098 net/minecraft/world/entity/ai/behavior/TryFindLandNearWater + m (IF)Lbvi; a method_47172 create + m (Lorg/apache/commons/lang3/mutable/MutableLong;IFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47173 method_47173 + m (Lorg/apache/commons/lang3/mutable/MutableLong;IFLbyv;Lbyv;Lbyv;)Lbyx; a method_47174 method_47174 + m (Lorg/apache/commons/lang3/mutable/MutableLong;ILbyv;Lbyv;FLaqu;Lbtw;J)Z a method_47175 method_47175 + m ()V +c byg net/minecraft/class_5756 net/minecraft/world/entity/ai/behavior/TryFindWater + m (IF)Lbvi; a method_47176 create + m (Lorg/apache/commons/lang3/mutable/MutableLong;IFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47177 method_47177 + m (Lorg/apache/commons/lang3/mutable/MutableLong;IFLbyv;Lbyv;Lbyv;)Lbyx; a method_47178 method_47178 + m (Lorg/apache/commons/lang3/mutable/MutableLong;ILbyv;Lbyv;FLaqu;Lbtw;J)Z a method_47179 method_47179 + m ()V +c byh net/minecraft/class_7099 net/minecraft/world/entity/ai/behavior/TryLaySpawnOnWaterNearLand + m (Ldfy;)Lbvi; a method_47180 create + m (Ldfy;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47181 method_47181 + m (Ldfy;Lbyv;Laqu;Lbtn;J)Z a method_47182 method_47182 + m (Ldfy;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47183 method_47183 + m ()V +c byi net/minecraft/class_4127 net/minecraft/world/entity/ai/behavior/UpdateActivityFromSchedule + m ()Lbvi; a method_47184 create + m (Laqu;Lbtn;J)Z a method_47185 method_47185 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47186 method_47186 + m ()V +c byj net/minecraft/class_4982 net/minecraft/world/entity/ai/behavior/UseBonemeal + f I c field_30184 BONEMEALING_DURATION + f J d field_23222 nextWorkCycleTime + f J e field_23223 lastBonemealingSession + f I f field_23224 timeWorkedSoFar + f Ljava/util/Optional; g field_23225 cropPos + m (Laqu;Lcmk;)Z a method_26327 checkExtraStartConditions + m (Laqu;Lcmk;J)Z a method_26328 canStillUse + m (Lcmk;)V a method_26324 setCurrentCropAsTarget + m (Lcmk;Ljd;)V a method_26325 method_26325 + m (Ljd;Laqu;)Z a method_26326 validPos + m (Laqu;Lcmk;)Ljava/util/Optional; b method_26329 pickNextTarget + m (Laqu;Lcmk;J)V b method_26330 start + m (Laqu;Lcmk;J)V c method_26331 stop + m (Laqu;Lcmk;J)V d method_26332 tick + m ()V +c byk net/minecraft/class_4128 net/minecraft/world/entity/ai/behavior/ValidateNearbyPoi + f I a field_30185 MAX_DISTANCE + m (Laqu;Ljd;Lbtn;)Z a method_20500 bedIsOccupied + m (Lbyu$b;Lbyv;Ljava/util/function/Predicate;Laqu;Lbtn;J)Z a method_47187 method_47187 + m (Lbyu$b;Ljava/util/function/Predicate;Lbyv;)Lbyx; a method_47188 method_47188 + m (Lccs;Ljava/util/function/Predicate;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47189 method_47189 + m (Ljava/util/function/Predicate;Lccs;)Lbvi; a method_47190 create + m ()V +c byl net/minecraft/class_4117 net/minecraft/world/entity/ai/behavior/VillageBoundRandomStroll + f I a field_30186 MAX_XZ_DIST + f I b field_30187 MAX_Y_DIST + m (F)Lbws; a method_47191 create + m (FII)Lbws; a method_47192 create + m (FLexc;)Lccv; a method_47193 method_47193 + m (IIFLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47194 method_47194 + m (IIFLbyv;)Lbyx; a method_47195 method_47195 + m (IILbyv;FLaqu;Lbtw;J)Z a method_47196 method_47196 + m ()V +c bym net/minecraft/class_4100 net/minecraft/world/entity/ai/behavior/VillagerCalmDown + f I a field_30188 SAFE_DISTANCE_FROM_DANGER + m ()Lbvi; a method_47197 create + m (Lbtn;Lbtn;)Z a method_47198 method_47198 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47199 method_47199 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47200 method_47200 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Laqu;Lbtn;J)Z a method_47201 method_47201 + m ()V +c byn net/minecraft/class_4129 net/minecraft/world/entity/ai/behavior/VillagerGoalPackages + f I a field_48329 INTERACT_DIST_SQR + f I b field_48330 INTERACT_WALKUP_DIST + f F c field_48331 INTERACT_SPEED_MODIFIER + f F d field_30189 STROLL_SPEED_MODIFIER + m ()Lcom/mojang/datafixers/util/Pair; a method_20241 getFullLookBehavior + m (F)Lcom/google/common/collect/ImmutableList; a method_19990 getPlayPackage + m (Laqu;Lbtn;)Z a method_47202 raidExistsAndActive + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; a method_19020 getCorePackage + m (Ljm;)Z a method_43968 method_43968 + m ()Lcom/mojang/datafixers/util/Pair; b method_20242 getMinimalLookBehavior + m (Laqu;Lbtn;)Z b method_47203 raidExistsAndNotVictory + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; b method_19021 getWorkPackage + m (Ljm;)Z b method_43969 method_43969 + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; c method_19022 getRestPackage + m (Ljm;)Z c method_43970 method_43970 + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; d method_19023 getMeetPackage + m (Ljm;)Z d method_43971 method_43971 + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; e method_19024 getIdlePackage + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; f method_19025 getPanicPackage + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; g method_19991 getPreRaidPackage + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; h method_19992 getRaidPackage + m (Lcmn;F)Lcom/google/common/collect/ImmutableList; i method_19993 getHidePackage + m ()V +c byo net/minecraft/class_4111 net/minecraft/world/entity/ai/behavior/VillagerMakeLove + f J c field_18368 birthTimestamp + m (Laqu;Lcmk;)Z a method_19571 checkExtraStartConditions + m (Laqu;Lcmk;J)Z a method_18973 canStillUse + m (Laqu;Lcmk;Lcmk;)V a method_20643 tryToGiveBirth + m (Laqu;Lcmk;Ljd;)V a method_19572 giveBedToChild + m (Lbsl;)Z a method_24631 method_24631 + m (Lcmk;)Z a method_18972 isBreedingPossible + m (Lcmk;Ljd;Ljm;)Z a method_20642 canReach + m (Lcmk;Ljm;Ljd;)Z a method_20644 method_20644 + m (Ljm;)Z a method_43972 method_43972 + m (Laqu;Lcmk;)Ljava/util/Optional; b method_19573 takeVacantBed + m (Laqu;Lcmk;J)V b method_18974 start + m (Laqu;Lcmk;Lcmk;)Ljava/util/Optional; b method_18970 breed + m (Laqu;Lcmk;J)V c method_18975 tick + m (Laqu;Lcmk;J)V d method_18976 stop + m ()V +c byp net/minecraft/class_4113 net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger + m (Laqu;Lcmk;J)Z a method_20646 canStillUse + m (Laqu;Lcmk;J)V b method_20647 start + m (Lbtn;)Z b method_19574 hasHostile + m (Laqu;Lcmk;J)V c method_20648 tick + m (Lbtn;)Z c method_19575 isHurt + m ()V +c byq net/minecraft/class_4214 net/minecraft/world/entity/ai/behavior/WakeUp + m ()Lbvi; a method_47204 create + m (Laqu;Lbtn;J)Z a method_47205 method_47205 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47206 method_47206 + m ()V +c byr net/minecraft/class_4983 net/minecraft/world/entity/ai/behavior/WorkAtComposter + f Ljava/util/List; c field_23226 COMPOSTABLE_ITEMS + m (Laqu;Lcmk;Ljl;Ldtc;)V a method_26334 compostItems + m (Laqu;Ldtc;Ljd;Ldtc;)V a method_30232 spawnComposterFillEffects + m (Lcmk;)V a method_26333 makeBread + m ()V + m ()V +c bys net/minecraft/class_4133 net/minecraft/world/entity/ai/behavior/WorkAtPoi + f I c field_30192 CHECK_COOLDOWN + f D d field_30193 DISTANCE + f J e field_19426 lastCheck + m (Laqu;Lcmk;)V a method_26335 useWorkstation + m (Laqu;Lcmk;J)V a method_21642 start + m (Lbuq;Ljl;)V a method_19613 method_19613 + m (Laqu;Lcmk;)Z b method_21641 checkExtraStartConditions + m (Laqu;Lcmk;J)Z b method_26336 canStillUse + m ()V +c byt net/minecraft/class_5327 net/minecraft/world/entity/ai/behavior/YieldJobSite + m (F)Lbvi; a method_47207 create + m (FLbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47208 method_47208 + m (Lbtn;)Lcmk; a method_47209 method_47209 + m (Lbtw;Ljd;Lcev;)Z a method_29262 canReachPos + m (Lbyu$b;FLbyv;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47210 method_47210 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;FLaqu;Lcmk;J)Z a method_47211 method_47211 + m (Lbyv;Lbyv;Lbyv;Ljd;FLaqu;Lcmk;)V a method_47212 method_47212 + m (Lcmk;Lbtn;)Z a method_47213 method_47213 + m (Ljava/util/Optional;Ljd;Lcmk;)Z a method_47214 method_47214 + m (Ljm;Lcmk;Ljd;)Z a method_29260 nearbyWantsJobsite + m ()V +c byu net/minecraft/class_7898 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder + f Lbyu$e; a field_40998 trigger + m ()Lbyu$b; a method_47215 instance + m (Lbyu$e;)Lbyu; a method_47216 create + m (Lbyx;Lbyx;)Lbws; a method_47217 sequence + m (Lbyx;Lbyx;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47218 method_47218 + m (Lbyx;Lcom/mojang/datafixers/util/Unit;)Lbyx; a method_47219 method_47219 + m (Lcom/mojang/datafixers/kinds/App;)Lbyu; a method_47220 unbox + m (Ljava/util/function/BiPredicate;)Lbws; a method_47221 triggerIf + m (Ljava/util/function/BiPredicate;Laqu;Lbtn;J)Z a method_47222 method_47222 + m (Ljava/util/function/BiPredicate;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47223 method_47223 + m (Ljava/util/function/Function;)Lbws; a method_47224 create + m (Ljava/util/function/Predicate;)Lbws; a method_47225 triggerIf + m (Ljava/util/function/Predicate;Laqu;Lbtn;J)Z a method_47226 method_47226 + m (Ljava/util/function/Predicate;Lbws;)Lbws; a method_47227 triggerIf + m (Ljava/util/function/Predicate;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47228 method_47228 + m (Lcom/mojang/datafixers/kinds/App;)Lbyu$e; b method_47229 get + m (Lbyu$e;)V +c byu$1 net/minecraft/class_7898$1 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$1 + f Lbyu$e; a field_40999 val$resolvedBuilder + m (Lbyu$e;)V +c byu$a net/minecraft/class_7898$class_7899 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Constant + m (Ljava/lang/Object;)Ljava/lang/String; a method_47230 method_47230 + m (Ljava/lang/Object;)V + m (Ljava/lang/Object;Ljava/util/function/Supplier;)V +c byu$a$1 net/minecraft/class_7898$class_7899$1 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Constant$1 + f Ljava/lang/Object; a field_41000 val$a + f Ljava/util/function/Supplier; b field_41001 val$debugString + m (Ljava/lang/Object;Ljava/util/function/Supplier;)V +c byu$b net/minecraft/class_7898$class_7900 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Instance + m (Lbyv;)Ljava/util/Optional; a method_47233 tryGet + m (Lbyx;)Lbyu; a method_47234 ifTriggered + m (Lccs;)Lbyu; a method_47235 registered + m (Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;)Lcom/mojang/datafixers/kinds/App; a method_47236 method_47236 + m (Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;)Lbyu; a method_47237 ap2 + m (Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;)Lbyu; a method_47238 ap3 + m (Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;Lcom/mojang/datafixers/kinds/App;)Lbyu; a method_47239 ap4 + m (Ljava/lang/Object;)Lbyu; a method_47240 point + m (Ljava/util/function/Function;Lcom/mojang/datafixers/kinds/App;)Lbyu; a method_47241 map + m (Ljava/util/function/Supplier;Ljava/lang/Object;)Lbyu; a method_47242 point + m (Lbyv;)Ljava/lang/Object; b method_47243 get + m (Lccs;)Lbyu; b method_47244 present + m (Lccs;)Lbyu; c method_47245 absent + m ()V +c byu$b$1 net/minecraft/class_7898$class_7900$1 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Instance$1 + f Lbyu$e; a field_41002 val$aTrigger + f Lbyu$e; b field_41003 val$fTrigger + m (Lbyu$b;Lbyu$e;Lbyu$e;)V +c byu$b$2 net/minecraft/class_7898$class_7900$2 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Instance$2 + f Lbyu$e; a field_41005 val$tTrigger + f Ljava/util/function/Function; b field_41006 val$func + m (Lbyu$b;Lbyu$e;Ljava/util/function/Function;)V +c byu$b$3 net/minecraft/class_7898$class_7900$3 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Instance$3 + f Lbyu$e; a field_41008 val$aTrigger + f Lbyu$e; b field_41009 val$bTrigger + f Lbyu$e; c field_41010 val$fTrigger + m (Lbyu$b;Lbyu$e;Lbyu$e;Lbyu$e;)V +c byu$b$4 net/minecraft/class_7898$class_7900$4 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Instance$4 + f Lbyu$e; a field_41012 val$t1Trigger + f Lbyu$e; b field_41013 val$t2Trigger + f Lbyu$e; c field_41014 val$t3Trigger + f Lbyu$e; d field_41015 val$fTrigger + m (Lbyu$b;Lbyu$e;Lbyu$e;Lbyu$e;Lbyu$e;)V +c byu$b$5 net/minecraft/class_7898$class_7900$5 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Instance$5 + f Lbyu$e; a field_41017 val$t1Trigger + f Lbyu$e; b field_41018 val$t2Trigger + f Lbyu$e; c field_41019 val$t3Trigger + f Lbyu$e; d field_41020 val$t4Trigger + f Lbyu$e; e field_41021 val$fTrigger + m (Lbyu$b;Lbyu$e;Lbyu$e;Lbyu$e;Lbyu$e;Lbyu$e;)V +c byu$b$a net/minecraft/class_7898$class_7900$class_7901 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Instance$Mu + m ()V +c byu$c net/minecraft/class_7898$class_7902 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$Mu + m ()V +c byu$d net/minecraft/class_7898$class_7903 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$PureMemory + m (Lbyw;)V +c byu$d$1 net/minecraft/class_7898$class_7903$1 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$PureMemory$1 + f Lbyw; a field_41023 val$condition + m (Laqu;Lbtn;J)Lbyv; b method_47246 tryTrigger + m (Lbyw;)V +c byu$e net/minecraft/class_7898$class_7904 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$TriggerWithResult + m ()Ljava/lang/String; a method_47231 debugString + m (Laqu;Lbtn;J)Ljava/lang/Object; a method_47232 tryTrigger +c byu$f net/minecraft/class_7898$class_7905 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$TriggerWrapper + m (Lbyx;)V +c byu$f$1 net/minecraft/class_7898$class_7905$1 net/minecraft/world/entity/ai/behavior/declarative/BehaviorBuilder$TriggerWrapper$1 + f Lbyx; a field_41024 val$dependentTrigger + m (Laqu;Lbtn;J)Lcom/mojang/datafixers/util/Unit; b method_47247 tryTrigger + m (Lbyx;)V +c byv net/minecraft/class_7906 net/minecraft/world/entity/ai/behavior/declarative/MemoryAccessor + f Lbuq; a field_41025 brain + f Lccs; b field_41026 memoryType + f Lcom/mojang/datafixers/kinds/App; c field_41027 value + m ()Lcom/mojang/datafixers/kinds/App; a method_47248 value + m (Ljava/lang/Object;)V a method_47249 set + m (Ljava/lang/Object;J)V a method_47250 setWithExpiry + m (Ljava/util/Optional;)V a method_47251 setOrErase + m ()V b method_47252 erase + m (Lbuq;Lccs;Lcom/mojang/datafixers/kinds/App;)V +c byw net/minecraft/class_7907 net/minecraft/world/entity/ai/behavior/declarative/MemoryCondition + m ()Lccs; a comp_1151 memory + m (Lbuq;Ljava/util/Optional;)Lbyv; a method_47253 createAccessor + m ()Lcct; b method_47254 condition +c byw$a net/minecraft/class_7907$class_7908 net/minecraft/world/entity/ai/behavior/declarative/MemoryCondition$Absent + f Lccs; a comp_1151 memory + m (Lccs;)V +c byw$b net/minecraft/class_7907$class_7909 net/minecraft/world/entity/ai/behavior/declarative/MemoryCondition$Present + f Lccs; a comp_1151 memory + m (Lccs;)V +c byw$c net/minecraft/class_7907$class_7910 net/minecraft/world/entity/ai/behavior/declarative/MemoryCondition$Registered + f Lccs; a comp_1151 memory + m (Lccs;)V +c byx net/minecraft/class_7911 net/minecraft/world/entity/ai/behavior/declarative/Trigger +c byy net/minecraft/class_7912 net/minecraft/world/entity/ai/behavior/declarative/package-info +c byz net/minecraft/class_6034 net/minecraft/world/entity/ai/behavior/package-info +c bza net/minecraft/class_7249 net/minecraft/world/entity/ai/behavior/warden/Digging + m (Laqu;Lcmb;)Z a method_42151 checkExtraStartConditions + m (Laqu;Lcmb;J)Z a method_42152 canStillUse + m (Laqu;Lcmb;J)V b method_42153 start + m (Laqu;Lcmb;J)V c method_42154 stop + m (I)V +c bzb net/minecraft/class_7250 net/minecraft/world/entity/ai/behavior/warden/Emerging + m (Laqu;Lcmb;J)Z a method_42155 canStillUse + m (Laqu;Lcmb;J)V b method_42156 start + m (Laqu;Lcmb;J)V c method_42157 stop + m (I)V +c bzc net/minecraft/class_7521 net/minecraft/world/entity/ai/behavior/warden/ForceUnmount + m ()V +c bzd net/minecraft/class_7255 net/minecraft/world/entity/ai/behavior/warden/Roar + f I c field_38131 TICKS_BEFORE_PLAYING_ROAR_SOUND + f I d field_39276 ROAR_ANGER_INCREASE + m (Laqu;Lcmb;J)V a method_42189 start + m (Laqu;Lcmb;J)Z b method_42190 canStillUse + m (Laqu;Lcmb;J)V c method_42191 tick + m (Laqu;Lcmb;J)V d method_42192 stop + m ()V +c bze net/minecraft/class_7256 net/minecraft/world/entity/ai/behavior/warden/SetRoarTarget + m (Ljava/util/function/Function;)Lbvi; a method_47255 create + m (Ljava/util/function/Function;Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47256 method_47256 + m (Ljava/util/function/Function;Lbyv;Lbyv;Laqu;Lcmb;J)Z a method_47257 method_47257 + m (Ljava/util/function/Function;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47258 method_47258 + m ()V +c bzf net/minecraft/class_7257 net/minecraft/world/entity/ai/behavior/warden/SetWardenLookTarget + m ()Lbvi; a method_47259 create + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47260 method_47260 + m (Lbyu$b;Lbyv;)Ljava/util/Optional; a method_47261 method_47261 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Laqu;Lbtn;J)Z a method_47262 method_47262 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47263 method_47263 + m ()V +c bzg net/minecraft/class_7251 net/minecraft/world/entity/ai/behavior/warden/Sniffing + f D c field_38708 ANGER_FROM_SNIFFING_MAX_DISTANCE_XZ + f D d field_38848 ANGER_FROM_SNIFFING_MAX_DISTANCE_Y + m (Laqu;Lcmb;J)Z a method_42158 canStillUse + m (Lcmb;Lbtn;)V a method_42159 method_42159 + m (Laqu;Lcmb;J)V b method_42160 start + m (Laqu;Lcmb;J)V c method_42161 stop + m (I)V +c bzh net/minecraft/class_7396 net/minecraft/world/entity/ai/behavior/warden/SonicBoom + f I c field_38849 COOLDOWN + f I d field_38850 DISTANCE_XZ + f I e field_38851 DISTANCE_Y + f D f field_38852 KNOCKBACK_VERTICAL + f D g field_38853 KNOCKBACK_HORIZONTAL + f I h field_38854 TICKS_BEFORE_PLAYING_SOUND + f I i field_38855 DURATION + m (Laqu;Lcmb;)Z a method_43262 checkExtraStartConditions + m (Laqu;Lcmb;J)Z a method_43263 canStillUse + m (Lbtn;I)V a method_43264 setCooldown + m (Lcmb;Laqu;Lbtn;)V a method_43265 method_43265 + m (Lcmb;Lbtn;)Z a method_43266 method_43266 + m (Laqu;Lcmb;J)V b method_43267 start + m (Lcmb;Lbtn;)V b method_43973 method_43973 + m (Laqu;Lcmb;J)V c method_43268 tick + m (Laqu;Lcmb;J)V d method_43269 stop + m ()V + m ()V +c bzi net/minecraft/class_7259 net/minecraft/world/entity/ai/behavior/warden/TryToSniff + f Lbpw; a field_38133 SNIFF_COOLDOWN + m ()Lbvi; a method_47264 create + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47265 method_47265 + m (Lbyv;Lbyv;Lbyv;Laqu;Lbtn;J)Z a method_47266 method_47266 + m (Lbyv;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47267 method_47267 + m ()V + m ()V +c bzj net/minecraft/class_7374 net/minecraft/world/entity/ai/behavior/warden/package-info +c bzk net/minecraft/class_1330 net/minecraft/world/entity/ai/control/BodyRotationControl + f Lbtp; a field_6356 mob + f I b field_30194 HEAD_STABLE_ANGLE + f I c field_30195 DELAY_UNTIL_STARTING_TO_FACE_FORWARD + f I d field_30196 HOW_LONG_IT_TAKES_TO_FACE_FORWARD + f I e field_6355 headStableTime + f F f field_6354 lastStableYHeadRot + m ()V a method_6224 clientTick + m ()V b method_20243 rotateBodyIfNecessary + m ()V c method_20244 rotateHeadIfNecessary + m ()V d method_20245 rotateHeadTowardsFront + m ()Z e method_20246 notCarryingMobPassengers + m ()Z f method_20247 isMoving + m (Lbtp;)V +c bzl net/minecraft/class_6035 net/minecraft/world/entity/ai/control/Control +c bzm net/minecraft/class_1331 net/minecraft/world/entity/ai/control/FlyingMoveControl + f I l field_20349 maxTurn + f Z m field_20350 hoversInPlace + m (Lbtp;IZ)V +c bzn net/minecraft/class_1334 net/minecraft/world/entity/ai/control/JumpControl + f Z a field_6365 jump + f Lbtp; b field_6366 mob + m ()V a method_6233 jump + m ()V b method_6234 tick + m (Lbtp;)V +c bzo net/minecraft/class_1333 net/minecraft/world/entity/ai/control/LookControl + f Lbtp; a field_6361 mob + f F b field_6359 yMaxRotSpeed + f F c field_6358 xMaxRotAngle + f I d field_35103 lookAtCooldown + f D e field_6364 wantedX + f D f field_6363 wantedY + f D g field_6362 wantedZ + m ()V a method_6231 tick + m (DDD)V a method_20248 setLookAt + m (DDDFF)V a method_6230 setLookAt + m (FFF)F a method_6229 rotateTowards + m (Lbsr;)V a method_35111 setLookAt + m (Lbsr;FF)V a method_6226 setLookAt + m (Lexc;)V a method_19615 setLookAt + m (Ljava/lang/Float;)V a method_37355 method_37355 + m ()V b method_36980 clampHeadRotationToBody + m (Lbsr;)D b method_20249 getWantedY + m (Ljava/lang/Float;)V b method_37356 method_37356 + m ()Z c method_20433 resetXRotOnTick + m ()Z d method_38970 isLookingAtTarget + m ()D e method_6225 getWantedX + m ()D f method_6227 getWantedY + m ()D g method_6228 getWantedZ + m ()Ljava/util/Optional; h method_20250 getXRotD + m ()Ljava/util/Optional; i method_20251 getYRotD + m (Lbtp;)V +c bzp net/minecraft/class_1335 net/minecraft/world/entity/ai/control/MoveControl + f F a field_30197 MIN_SPEED + f F b field_30198 MIN_SPEED_SQR + f I c field_30199 MAX_TURN + f Lbtp; d field_6371 mob + f D e field_6370 wantedX + f D f field_6369 wantedY + f D g field_6367 wantedZ + f D h field_6372 speedModifier + f F i field_6368 strafeForwards + f F j field_6373 strafeRight + f Lbzp$a; k field_6374 operation + m ()V a method_6240 tick + m (DDDD)V a method_6239 setWantedPosition + m (FF)V a method_6243 strafe + m (FFF)F a method_6238 rotlerp + m ()Z b method_6241 hasWanted + m (FF)Z b method_25946 isWalkable + m ()D c method_6242 getSpeedModifier + m ()D d method_6236 getWantedX + m ()D e method_6235 getWantedY + m ()D f method_6237 getWantedZ + m (Lbtp;)V +c bzp$a net/minecraft/class_1335$class_1336 net/minecraft/world/entity/ai/control/MoveControl$Operation + f Lbzp$a; a field_6377 WAIT + f Lbzp$a; b field_6378 MOVE_TO + f Lbzp$a; c field_6376 STRAFE + f Lbzp$a; d field_6379 JUMPING + f [Lbzp$a; e field_6375 $VALUES + m ()[Lbzp$a; a method_36619 $values + m (Ljava/lang/String;I)V + m ()V +c bzq net/minecraft/class_1332 net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl + f I h field_6357 maxYRotFromCenter + f I i field_30200 HEAD_TILT_X + f I j field_30201 HEAD_TILT_Y + m (Ljava/lang/Float;)V a method_37357 method_37357 + m (Ljava/lang/Float;)V b method_37358 method_37358 + m (Lbtp;I)V +c bzr net/minecraft/class_5757 net/minecraft/world/entity/ai/control/SmoothSwimmingMoveControl + f F l field_40123 FULL_SPEED_TURN_THRESHOLD + f F m field_40124 STOP_TURN_THRESHOLD + f I n field_28319 maxTurnX + f I o field_28320 maxTurnY + f F p field_28321 inWaterSpeedModifier + f F q field_28322 outsideWaterSpeedModifier + f Z r field_28323 applyGravity + m (F)F a method_45335 getTurningSpeedFactor + m (Lbtp;IIFFZ)V +c bzs net/minecraft/class_6036 net/minecraft/world/entity/ai/control/package-info +c bzt net/minecraft/class_1338 net/minecraft/world/entity/ai/goal/AvoidEntityGoal + f Lbtw; a field_6391 mob + f Lbtn; b field_6390 toAvoid + f F c field_6386 maxDist + f Leps; d field_6387 path + f Lcda; e field_6394 pathNav + f Ljava/lang/Class; f field_6392 avoidClass + f Ljava/util/function/Predicate; g field_6393 avoidPredicate + f Ljava/util/function/Predicate; h field_6388 predicateOnAvoidEntity + f D i field_6385 walkSpeedModifier + f D j field_6395 sprintSpeedModifier + f Lcef; k field_18084 avoidEntityTargeting + m (Lbtn;)Z a method_31501 method_31501 + m (Lbtn;)Z b method_6245 method_6245 + m (Lbtn;)Z c method_6246 method_6246 + m (Lbtw;Ljava/lang/Class;FDD)V + m (Lbtw;Ljava/lang/Class;Ljava/util/function/Predicate;FDDLjava/util/function/Predicate;)V + m (Lbtw;Ljava/lang/Class;FDDLjava/util/function/Predicate;)V +c bzu net/minecraft/class_1337 net/minecraft/world/entity/ai/goal/BegGoal + f Lcgh; a field_6384 wolf + f Lcmx; b field_6383 player + f Ldcw; c field_6381 level + f F d field_6380 lookDistance + f I e field_6382 lookTime + f Lcef; f field_18085 begTargeting + m (Lcmx;)Z a method_6244 playerHoldingInteresting + m (Lcgh;F)V +c bzv net/minecraft/class_1340 net/minecraft/world/entity/ai/goal/BoatGoals + f Lbzv; a field_6401 GO_TO_BOAT + f Lbzv; b field_6400 GO_IN_BOAT_DIRECTION + f [Lbzv; c field_6399 $VALUES + m ()[Lbzv; a method_36620 $values + m (Ljava/lang/String;I)V + m ()V +c bzw net/minecraft/class_1339 net/minecraft/world/entity/ai/goal/BreakDoorGoal + f I a field_6398 breakTime + f I b field_6397 lastBreakProgress + f I c field_16596 doorBreakTime + f I g field_30202 DEFAULT_DOOR_BREAK_TIME + f Ljava/util/function/Predicate; h field_19003 validDifficulties + m (Lbqo;)Z a method_19994 isValidDifficulty + m ()I f method_16462 getDoorBreakTime + m (Lbtp;Ljava/util/function/Predicate;)V + m (Lbtp;ILjava/util/function/Predicate;)V +c bzx net/minecraft/class_1342 net/minecraft/world/entity/ai/goal/BreathAirGoal + f Lbtw; a field_6408 mob + m (Ldcz;Ljd;)Z a method_6253 givesAir + m ()V h method_6252 findAirPosition + m (Lbtw;)V +c bzy net/minecraft/class_1341 net/minecraft/world/entity/ai/goal/BreedGoal + f Lcfe; a field_6404 animal + f Ldcw; b field_6405 level + f Lcfe; c field_6406 partner + f Lcef; d field_18086 PARTNER_TARGETING + f Ljava/lang/Class; e field_6403 partnerClass + f I f field_6402 loveTime + f D g field_6407 speedModifier + m ()V g method_6249 breed + m ()Lcfe; h method_6250 getFreePartner + m (Lcfe;D)V + m (Lcfe;DLjava/lang/Class;)V + m ()V +c bzz net/minecraft/class_3697 net/minecraft/world/entity/ai/goal/CatLieOnBedGoal + f Lcfh; g field_16282 cat + m (Lcfh;DI)V +c caa net/minecraft/class_1373 net/minecraft/world/entity/ai/goal/CatSitOnBlockGoal + f Lcfh; g field_6545 cat + m (Ldtb$a;)Z a method_27793 method_27793 + m (Ldtp;)Ljava/lang/Boolean; a method_27794 method_27794 + m (Lcfh;D)V +c cab net/minecraft/class_6868 net/minecraft/world/entity/ai/goal/ClimbOnTopOfPowderSnowGoal + f Lbtp; a field_36399 mob + f Ldcw; b field_36400 level + m (Lbtp;Ldcw;)V +c cac net/minecraft/class_1357 net/minecraft/world/entity/ai/goal/DolphinJumpGoal + f [I a field_6474 STEPS_TO_CHECK + f Lcfm; b field_6471 dolphin + f I c field_6472 interval + f Z d field_6473 breached + m (Ljd;III)Z a method_6284 waterIsClear + m (Ljd;III)Z b method_6282 surfaceIsClear + m (Lcfm;I)V + m ()V +c cad net/minecraft/class_1343 net/minecraft/world/entity/ai/goal/DoorInteractGoal + f Z a field_6411 passed + f F b field_6410 doorOpenDirX + f F c field_6409 doorOpenDirZ + f Lbtp; d field_6413 mob + f Ljd; e field_6414 doorPos + f Z f field_6412 hasDoor + m (Z)V a method_19995 setOpen + m ()Z h method_6256 isOpen + m (Lbtp;)V +c cae net/minecraft/class_1345 net/minecraft/world/entity/ai/goal/EatBlockGoal + f I a field_30203 EAT_ANIMATION_TICKS + f Ljava/util/function/Predicate; b field_6423 IS_TALL_GRASS + f Lbtp; c field_6424 mob + f Ldcw; d field_6421 level + f I e field_6422 eatAnimationTick + m ()I h method_6258 getEatAnimationTick + m (Lbtp;)V + m ()V +c caf net/minecraft/class_1344 net/minecraft/world/entity/ai/goal/FleeSunGoal + f Lbtw; a field_6419 mob + f D b field_6417 wantedX + f D c field_6416 wantedY + f D d field_6415 wantedZ + f D e field_6420 speedModifier + f Ldcw; f field_6418 level + m ()Z h method_18250 setWantedPos + m ()Lexc; i method_6257 getHidePos + m (Lbtw;D)V +c cag net/minecraft/class_1347 net/minecraft/world/entity/ai/goal/FloatGoal + f Lbtp; a field_6429 mob + m (Lbtp;)V +c cah net/minecraft/class_1346 net/minecraft/world/entity/ai/goal/FollowBoatGoal + f I a field_6428 timeToRecalcPath + f Lbtw; b field_6426 mob + f Lcmx; c field_6427 following + f Lbzv; d field_6425 currentGoal + m (Lbtw;)V +c cai net/minecraft/class_1349 net/minecraft/world/entity/ai/goal/FollowFlockLeaderGoal + f I a field_30204 INTERVAL_TICKS + f Lcfd; b field_6441 mob + f I c field_6440 timeToRecalcPath + f I d field_6439 nextStartTick + m (Lcfd;)I a method_6261 nextStartTick + m (Lcfd;)Z b method_6260 method_6260 + m (Lcfd;)Z c method_6262 method_6262 + m (Lcfd;)V +c caj net/minecraft/class_1348 net/minecraft/world/entity/ai/goal/FollowMobGoal + f Lbtp; a field_6432 mob + f Ljava/util/function/Predicate; b field_6436 followPredicate + f Lbtp; c field_6433 followingMob + f D d field_6430 speedModifier + f Lcda; e field_6434 navigation + f I f field_6431 timeToRecalcPath + f F g field_6438 stopDistance + f F h field_6437 oldWaterCost + f F i field_6435 areaSize + m (Lbtp;Lbtp;)Z a method_6259 method_6259 + m (Lbtp;DFF)V +c cak net/minecraft/class_1350 net/minecraft/world/entity/ai/goal/FollowOwnerGoal + f Lbul; a field_6448 tamable + f Lbtn; b field_6444 owner + f D c field_6442 speedModifier + f Lcda; d field_6446 navigation + f I e field_6443 timeToRecalcPath + f F f field_6450 stopDistance + f F g field_6449 startDistance + f F h field_6447 oldWaterCost + m (Lbul;DFF)V +c cal net/minecraft/class_1353 net/minecraft/world/entity/ai/goal/FollowParentGoal + f I a field_30209 HORIZONTAL_SCAN_RANGE + f I b field_30210 VERTICAL_SCAN_RANGE + f I c field_30211 DONT_FOLLOW_IF_CLOSER_THAN + f Lcfe; d field_6455 animal + f Lcfe; e field_6452 parent + f D f field_6453 speedModifier + f I g field_6454 timeToRecalcPath + m (Lcfe;D)V +c cam net/minecraft/class_1352 net/minecraft/world/entity/ai/goal/Goal + f Ljava/util/EnumSet; a field_6451 flags + m ()Z U_ method_6267 isInterruptable + m ()Z V_ method_38846 requiresUpdateEveryTick + m ()V a method_6268 tick + m (I)I a method_38847 adjustedTickDelay + m (Ljava/util/EnumSet;)V a method_6265 setFlags + m ()Z b method_6264 canUse + m (I)I b method_38848 reducedTickDelay + m ()Z c method_6266 canContinueToUse + m ()V d method_6269 start + m ()V e method_6270 stop + m ()Ljava/util/EnumSet; j method_6271 getFlags + m ()V +c cam$a net/minecraft/class_1352$class_4134 net/minecraft/world/entity/ai/goal/Goal$Flag + f Lcam$a; a field_18405 MOVE + f Lcam$a; b field_18406 LOOK + f Lcam$a; c field_18407 JUMP + f Lcam$a; d field_18408 TARGET + f [Lcam$a; e field_18409 $VALUES + m ()[Lcam$a; a method_36621 $values + m (Ljava/lang/String;I)V + m ()V +c can net/minecraft/class_1355 net/minecraft/world/entity/ai/goal/GoalSelector + f Lcca; a field_18410 NO_GOAL + f Ljava/util/Map; b field_18411 lockedFlags + f Ljava/util/Set; c field_6461 availableGoals + f Ljava/util/function/Supplier; d field_6463 profiler + f Ljava/util/EnumSet; e field_6462 disabledFlags + m ()V a method_6275 tick + m (ILcam;)V a method_6277 addGoal + m (Lcam$a;)V a method_6274 disableControlFlag + m (Lcam$a;Z)V a method_6276 setControlFlag + m (Lcam;)V a method_6280 removeGoal + m (Lcam;Lcca;)Z a method_20650 method_20650 + m (Lcca;Ljava/util/EnumSet;)Z a method_38063 goalContainsAnyFlags + m (Lcca;Ljava/util/Map;)Z a method_38064 goalCanBeReplacedForAllFlags + m (Ljava/util/Map$Entry;)Z a method_55701 method_55701 + m (Ljava/util/function/Predicate;)V a method_35113 removeAllGoals + m (Ljava/util/function/Predicate;Lcca;)Z a method_47828 method_47828 + m (Z)V a method_38849 tickRunningGoals + m ()Ljava/util/Set; b method_35115 getAvailableGoals + m (Lcam$a;)V b method_6273 enableControlFlag + m (Ljava/util/function/Supplier;)V + m ()V +c can$1 net/minecraft/class_1355$1 net/minecraft/world/entity/ai/goal/GoalSelector$1 + m ()V +c can$2 net/minecraft/class_1355$2 net/minecraft/world/entity/ai/goal/GoalSelector$2 + m (ILcam;)V +c cao net/minecraft/class_5274 net/minecraft/world/entity/ai/goal/GolemRandomStrollInVillageGoal + f I i field_30213 POI_SECTION_SCAN_RADIUS + f I j field_30214 VILLAGER_SCAN_RADIUS + f I k field_30215 RANDOM_POS_XY_DISTANCE + f I l field_30216 RANDOM_POS_Y_DISTANCE + m (Laqu;Lkf;)Z a method_27924 method_27924 + m (Lcmk;)Z a method_27922 doesVillagerWantGolem + m (Ljm;)Z a method_27921 method_27921 + m (Lkf;)Ljd; a method_27923 getRandomPoiWithinSection + m ()Lexc; k method_27925 getPositionTowardsAnywhere + m ()Lexc; l method_27926 getPositionTowardsVillagerWhoWantsGolem + m ()Lexc; m method_27927 getPositionTowardsPoi + m ()Lkf; n method_27928 getRandomVillageSection + m (Lbtw;D)V +c cap net/minecraft/class_1358 net/minecraft/world/entity/ai/goal/InteractGoal + m (Lbtp;Ljava/lang/Class;F)V + m (Lbtp;Ljava/lang/Class;FF)V +c caq net/minecraft/class_4017 net/minecraft/world/entity/ai/goal/JumpGoal + m ()V +c car net/minecraft/class_1360 net/minecraft/world/entity/ai/goal/LandOnOwnersShoulderGoal + f Lcgb; a field_6478 entity + f Laqv; b field_6479 owner + f Z c field_6480 isSittingOnShoulder + m (Lcgb;)V +c cas net/minecraft/class_1359 net/minecraft/world/entity/ai/goal/LeapAtTargetGoal + f Lbtp; a field_6476 mob + f Lbtn; b field_6477 target + f F c field_6475 yd + m (Lbtp;F)V +c cat net/minecraft/class_1362 net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal + f Lchl; a field_6488 llama + f D b field_6487 speedModifier + f I c field_30217 CARAVAN_LIMIT + f I d field_6489 distCheckCounter + m (Lbsr;)Z a method_19616 method_19616 + m (Lchl;I)Z a method_6285 firstIsLeashed + m (Lchl;D)V +c cau net/minecraft/class_1361 net/minecraft/world/entity/ai/goal/LookAtPlayerGoal + f F a field_33760 DEFAULT_PROBABILITY + f Lbtp; b field_6486 mob + f Lbsr; c field_6484 lookAt + f F d field_6482 lookDistance + f F e field_6481 probability + f Ljava/lang/Class; f field_6485 lookAtType + f Lcef; g field_18087 lookAtContext + f I h field_6483 lookTime + f Z i field_33761 onlyHorizontal + m (Lbtn;)Z a method_31502 method_31502 + m (Lbtp;Lbtn;)Z a method_18414 method_18414 + m (Lbtp;Ljava/lang/Class;F)V + m (Lbtp;Ljava/lang/Class;FF)V + m (Lbtp;Ljava/lang/Class;FFZ)V +c cav net/minecraft/class_1364 net/minecraft/world/entity/ai/goal/LookAtTradingPlayerGoal + f Lcmf; h field_6495 villager + m (Lcmf;)V +c caw net/minecraft/class_1366 net/minecraft/world/entity/ai/goal/MeleeAttackGoal + f Lbtw; a field_6503 mob + f D b field_6500 speedModifier + f Z c field_6502 followingTargetEvenIfNotSeen + f Leps; d field_6509 path + f D e field_6508 pathedTargetX + f D f field_6507 pathedTargetY + f D g field_6506 pathedTargetZ + f I h field_6501 ticksUntilNextPathRecalculation + f I i field_24667 ticksUntilNextAttack + f I j field_6504 attackInterval + f J k field_19200 lastCanUseCheck + f J l field_30218 COOLDOWN_BETWEEN_CAN_USE_CHECKS + m (Lbtn;)V a method_6288 checkAndPerformAttack + m (Lbtn;)Z b method_53715 canPerformAttack + m ()V h method_28346 resetAttackCooldown + m ()Z i method_28347 isTimeToAttack + m ()I k method_28348 getTicksUntilNextAttack + m ()I l method_28349 getAttackInterval + m (Lbtw;DZ)V +c cax net/minecraft/class_4291 net/minecraft/world/entity/ai/goal/MoveBackToVillageGoal + f I i field_30219 MAX_XZ_DIST + f I j field_30220 MAX_Y_DIST + m (Lbtw;DZ)V +c cay net/minecraft/class_1368 net/minecraft/world/entity/ai/goal/MoveThroughVillageGoal + f Lbtw; a field_6525 mob + f D b field_6520 speedModifier + f Leps; c field_6523 path + f Ljd; d field_18412 poiPos + f Z e field_6524 onlyAtNight + f Ljava/util/List; f field_18413 visited + f I g field_18414 distanceToPoi + f Ljava/util/function/BooleanSupplier; h field_18415 canDealWithDoors + m (Laqu;Ljd;Ljd;)D a method_19053 method_19053 + m (Ljd;)Z a method_19052 hasNotVisited + m (Ljd;Ljd;)Ljava/lang/Double; a method_43974 method_43974 + m (Ljm;)Z a method_43975 method_43975 + m (Ljm;)Z b method_43976 method_43976 + m ()V h method_6297 updateVisited + m (Lbtw;DZILjava/util/function/BooleanSupplier;)V +c caz net/minecraft/class_1367 net/minecraft/world/entity/ai/goal/MoveToBlockGoal + f Lbtw; a field_6516 mob + f D b field_6514 speedModifier + f I c field_6518 nextStartTick + f I d field_6517 tryTicks + f Ljd; e field_6512 blockPos + f I f field_6515 verticalSearchStart + f I g field_30221 GIVE_UP_TICKS + f I h field_30222 STAY_TICKS + f I i field_30223 INTERVAL_TICKS + f I j field_6511 maxStayTicks + f Z k field_6513 reachedTarget + f I l field_6510 searchRange + f I m field_6519 verticalSearchRange + m (Lbtw;)I a method_6293 nextStartTick + m (Ldcz;Ljd;)Z a method_6296 isValidTarget + m ()V h method_6290 moveMobToBlock + m ()D i method_6291 acceptedDistance + m ()Ljd; k method_30953 getMoveToTarget + m ()Z l method_6294 shouldRecalculatePath + m ()Z m method_6295 isReachedTarget + m ()Z n method_6292 findNearestBlock + m (Lbtw;DI)V + m (Lbtw;DII)V +c cba net/minecraft/class_1370 net/minecraft/world/entity/ai/goal/MoveTowardsRestrictionGoal + f Lbtw; a field_6536 mob + f D b field_6535 wantedX + f D c field_6534 wantedY + f D d field_6533 wantedZ + f D e field_6537 speedModifier + m (Lbtw;D)V +c cbb net/minecraft/class_1369 net/minecraft/world/entity/ai/goal/MoveTowardsTargetGoal + f Lbtw; a field_6528 mob + f Lbtn; b field_6529 target + f D c field_6527 wantedX + f D d field_6526 wantedY + f D e field_6531 wantedZ + f D f field_6530 speedModifier + f F g field_6532 within + m (Lbtw;DF)V +c cbc net/minecraft/class_1371 net/minecraft/world/entity/ai/goal/OcelotAttackGoal + f Lbtp; a field_6541 mob + f Lbtn; b field_6539 target + f I c field_6540 attackTime + m (Lbtp;)V +c cbd net/minecraft/class_1372 net/minecraft/world/entity/ai/goal/OfferFlowerGoal + f I a field_30224 OFFER_TICKS + f Lcef; b field_18089 OFFER_TARGER_CONTEXT + f Lcfq; c field_6542 golem + f Lcmk; d field_6544 villager + f I e field_6543 tick + m (Lcfq;)V + m ()V +c cbe net/minecraft/class_4255 net/minecraft/world/entity/ai/goal/OpenDoorGoal + f Z a field_19004 closeDoor + f I b field_19005 forgetTime + m (Lbtp;Z)V +c cbf net/minecraft/class_1374 net/minecraft/world/entity/ai/goal/PanicGoal + f Ljava/util/function/Function; a field_52011 panicCausingDamageTypes + f I b field_36271 WATER_CHECK_DISTANCE_VERTICAL + f Lbtw; c field_6549 mob + f D d field_6548 speedModifier + f D e field_6547 posX + f D f field_6546 posY + f D g field_6550 posZ + f Z h field_23227 isRunning + m (Lawu;Lbtw;)Lawu; a method_60722 method_60722 + m (Ldcc;Lbsr;I)Ljd; a method_6300 lookForWater + m (Ldcc;Ljd;)Z a method_39764 method_39764 + m ()Z h method_40072 shouldPanic + m ()Z i method_6301 findRandomPosition + m ()Z k method_26337 isRunning + m (Lbtw;D)V + m (Lbtw;DLawu;)V + m (Lbtw;DLjava/util/function/Function;)V +c cbg net/minecraft/class_3759 net/minecraft/world/entity/ai/goal/PathfindToRaidGoal + f I a field_36302 RECRUITMENT_SEARCH_TICK_DELAY + f F b field_30225 SPEED_MODIFIER + f Lcoj; c field_16597 mob + f I d field_36303 recruitmentTick + m (Lcoi;)V a method_16465 recruitNearby + m (Lcoi;Lcoj;)Z a method_16466 method_16466 + m (Lcoj;)V +c cbh net/minecraft/class_1376 net/minecraft/world/entity/ai/goal/RandomLookAroundGoal + f Lbtp; a field_6556 mob + f D b field_6554 relX + f D c field_6553 relZ + f I d field_6555 lookTime + m (Lbtp;)V +c cbi net/minecraft/class_7688 net/minecraft/world/entity/ai/goal/RandomStandGoal + f Lchi; a field_40125 horse + f I b field_40126 nextStand + m (Lchi;)V a method_45336 resetStandInterval + m ()V h method_45337 playStandSound + m (Lchi;)V +c cbj net/minecraft/class_1379 net/minecraft/world/entity/ai/goal/RandomStrollGoal + f I a field_30226 DEFAULT_INTERVAL + f Lbtw; b field_6566 mob + f D c field_6563 wantedX + f D d field_6562 wantedY + f D e field_6561 wantedZ + f D f field_6567 speedModifier + f I g field_6564 interval + f Z h field_6565 forceTrigger + f Z i field_24463 checkNoActionTime + m (I)V c method_6303 setInterval + m ()Lexc; h method_6302 getPosition + m ()V i method_6304 trigger + m (Lbtw;D)V + m (Lbtw;DI)V + m (Lbtw;DIZ)V +c cbk net/minecraft/class_1378 net/minecraft/world/entity/ai/goal/RandomSwimmingGoal + m (Lbtw;DI)V +c cbl net/minecraft/class_1381 net/minecraft/world/entity/ai/goal/RangedAttackGoal + f Lbtp; a field_6583 mob + f Lckh; b field_6582 rangedAttackMob + f Lbtn; c field_6580 target + f I d field_6581 attackTime + f D e field_6586 speedModifier + f I f field_6579 seeTime + f I g field_6578 attackIntervalMin + f I h field_6577 attackIntervalMax + f F i field_6585 attackRadius + f F j field_6584 attackRadiusSqr + m (Lckh;DIF)V + m (Lckh;DIIF)V +c cbm net/minecraft/class_1380 net/minecraft/world/entity/ai/goal/RangedBowAttackGoal + f Lckd; a field_6576 mob + f D b field_6569 speedModifier + f I c field_6575 attackIntervalMin + f F d field_6570 attackRadiusSqr + f I e field_6574 attackTime + f I f field_6572 seeTime + f Z g field_6573 strafingClockwise + f Z h field_6571 strafingBackwards + f I i field_6568 strafingTime + m (I)V c method_6305 setMinAttackInterval + m ()Z h method_6306 isHoldingBow + m (Lckd;DIF)V +c cbn net/minecraft/class_1383 net/minecraft/world/entity/ai/goal/RangedCrossbowAttackGoal + f Lbqc; a field_25696 PATHFINDING_DELAY_RANGE + f Lckd; b field_6593 mob + f Lcbn$a; c field_16528 crossbowState + f D d field_6590 speedModifier + f F e field_6591 attackRadiusSqr + f I f field_6592 seeTime + f I g field_16529 attackDelay + f I h field_25697 updatePathDelay + m ()Z h method_6310 isHoldingCrossbow + m ()Z i method_19996 isValidTarget + m ()Z k method_16352 canRun + m (Lckd;DF)V + m ()V +c cbn$a net/minecraft/class_1383$class_3744 net/minecraft/world/entity/ai/goal/RangedCrossbowAttackGoal$CrossbowState + f Lcbn$a; a field_16534 UNCHARGED + f Lcbn$a; b field_16530 CHARGING + f Lcbn$a; c field_16532 CHARGED + f Lcbn$a; d field_16533 READY_TO_ATTACK + f [Lcbn$a; e field_16531 $VALUES + m ()[Lcbn$a; a method_36622 $values + m (Ljava/lang/String;I)V + m ()V +c cbo net/minecraft/class_1382 net/minecraft/world/entity/ai/goal/RemoveBlockGoal + f Ldfy; g field_6587 blockToRemove + f Lbtp; h field_6589 removerMob + f I i field_6588 ticksSinceReachedGoal + f I j field_30227 WAIT_AFTER_BLOCK_FOUND + m (Ldcw;Ljd;)V a method_6309 playBreakSound + m (Ldcx;Ljd;)V a method_6307 playDestroyProgressSound + m (Ljd;Ldcc;)Ljd; a method_6308 getPosWithBlock + m (Ldfy;Lbtw;DI)V +c cbp net/minecraft/class_1384 net/minecraft/world/entity/ai/goal/RestrictSunGoal + f Lbtw; a field_6594 mob + m (Lbtw;)V +c cbq net/minecraft/class_1387 net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal + f Lchi; a field_6602 horse + f D b field_6601 speedModifier + f D c field_6600 posX + f D d field_6599 posY + f D e field_6603 posZ + m (Lchi;D)V +c cbr net/minecraft/class_1386 net/minecraft/world/entity/ai/goal/SitWhenOrderedToGoal + f Lbul; a field_6597 mob + m (Lbul;)V +c cbs net/minecraft/class_4018 net/minecraft/world/entity/ai/goal/StrollThroughVillageGoal + f I a field_30228 DISTANCE_THRESHOLD + f Lbtw; b field_17944 mob + f I c field_17945 interval + f Ljd; d field_17947 wantedPos + m (Laqu;Ljd;)D a method_19054 method_19054 + m ()V h method_18252 moveRandomly + m (Lbtw;I)V +c cbt net/minecraft/class_1389 net/minecraft/world/entity/ai/goal/SwellGoal + f Lcjp; a field_6608 creeper + f Lbtn; b field_6609 target + m (Lcjp;)V +c cbu net/minecraft/class_1391 net/minecraft/world/entity/ai/goal/TemptGoal + f Lbtw; a field_6616 mob + f Lcmx; b field_6617 player + f Lcef; c field_18090 TEMP_TARGETING + f Lcef; d field_28404 targetingConditions + f D e field_6615 speedModifier + f D f field_6614 px + f D g field_6611 py + f D h field_6621 pz + f D i field_6619 pRotX + f D j field_6618 pRotY + f I k field_6612 calmDown + f Z l field_6613 isRunning + f Ljava/util/function/Predicate; m field_6622 items + f Z n field_6620 canScare + m (Lbtn;)Z a method_6312 shouldFollow + m ()Z h method_16081 canScare + m ()Z i method_6313 isRunning + m (Lbtw;DLjava/util/function/Predicate;Z)V + m ()V +c cbv net/minecraft/class_1390 net/minecraft/world/entity/ai/goal/TradeWithPlayerGoal + f Lcmf; a field_6610 mob + m (Lcmf;)V +c cbw net/minecraft/class_1393 net/minecraft/world/entity/ai/goal/TryFindWaterGoal + f Lbtw; a field_6625 mob + m (Lbtw;)V +c cbx net/minecraft/class_3993 net/minecraft/world/entity/ai/goal/UseItemGoal + f Lbtp; a field_17755 mob + f Lcuq; b field_17756 item + f Ljava/util/function/Predicate; c field_17757 canUseSelector + f Lavo; d field_18280 finishUsingSound + m (Lbtp;Lcuq;Lavo;Ljava/util/function/Predicate;)V +c cby net/minecraft/class_1395 net/minecraft/world/entity/ai/goal/WaterAvoidingRandomFlyingGoal + m (Lbtw;D)V +c cbz net/minecraft/class_1394 net/minecraft/world/entity/ai/goal/WaterAvoidingRandomStrollGoal + f F i field_30229 PROBABILITY + f F j field_6626 probability + m (Lbtw;D)V + m (Lbtw;DF)V +c cca net/minecraft/class_4135 net/minecraft/world/entity/ai/goal/WrappedGoal + f Lcam; a field_18416 goal + f I b field_18417 priority + f Z c field_18418 isRunning + m (Lcca;)Z a method_19055 canBeReplacedBy + m ()Z h method_19056 isRunning + m ()I i method_19057 getPriority + m ()Lcam; k method_19058 getGoal + m (ILcam;)V +c ccb net/minecraft/class_1396 net/minecraft/world/entity/ai/goal/ZombieAttackGoal + f Lckw; b field_6628 zombie + f I c field_6627 raiseArmTicks + m (Lckw;DZ)V +c ccc net/minecraft/class_6038 net/minecraft/world/entity/ai/goal/package-info +c ccd net/minecraft/class_1397 net/minecraft/world/entity/ai/goal/target/DefendVillageTargetGoal + f Lcfq; a field_6629 golem + f Lbtn; b field_6630 potentialTarget + f Lcef; c field_19340 attackTargeting + m (Lcfq;)V +c cce net/minecraft/class_1399 net/minecraft/world/entity/ai/goal/target/HurtByTargetGoal + f Lcef; a field_18091 HURT_BY_TARGETING + f I b field_30230 ALERT_RANGE_Y + f Z c field_6639 alertSameType + f I d field_6638 timestamp + f [Ljava/lang/Class; i field_6637 toIgnoreDamage + f [Ljava/lang/Class; j field_6640 toIgnoreAlert + m (Lbtp;Lbtn;)V a method_6319 alertOther + m ([Ljava/lang/Class;)Lcce; a method_6318 setAlertOthers + m ()V h method_6317 alertOthers + m (Lbtw;[Ljava/lang/Class;)V + m ()V +c ccf net/minecraft/class_1400 net/minecraft/world/entity/ai/goal/target/NearestAttackableTargetGoal + f Ljava/lang/Class; a field_6643 targetType + f I b field_6641 randomInterval + f Lbtn; c field_6644 target + f Lcef; d field_6642 targetConditions + f I i field_36304 DEFAULT_RANDOM_INTERVAL + m (D)Lewx; a method_6321 getTargetSearchArea + m (Lbtn;)V a method_24632 setTarget + m (Lbtn;)Z b method_31503 method_31503 + m ()V h method_18415 findTarget + m (Lbtp;Ljava/lang/Class;Z)V + m (Lbtp;Ljava/lang/Class;ZLjava/util/function/Predicate;)V + m (Lbtp;Ljava/lang/Class;ZZ)V + m (Lbtp;Ljava/lang/Class;IZZLjava/util/function/Predicate;)V +c ccg net/minecraft/class_3760 net/minecraft/world/entity/ai/goal/target/NearestAttackableWitchTargetGoal + f Z i field_17281 canAttack + m (Z)V a method_17351 setCanAttack + m (Lcoj;Ljava/lang/Class;IZZLjava/util/function/Predicate;)V +c cch net/minecraft/class_3909 net/minecraft/world/entity/ai/goal/target/NearestHealableRaiderTargetGoal + f I i field_30231 DEFAULT_COOLDOWN + f I j field_17282 cooldown + m ()I i method_17352 getCooldown + m ()V k method_17353 decrementCooldown + m (Lcoj;Ljava/lang/Class;ZLjava/util/function/Predicate;)V +c cci net/minecraft/class_1404 net/minecraft/world/entity/ai/goal/target/NonTameRandomTargetGoal + f Lbul; i field_6656 tamableMob + m (Lbul;Ljava/lang/Class;ZLjava/util/function/Predicate;)V +c ccj net/minecraft/class_1403 net/minecraft/world/entity/ai/goal/target/OwnerHurtByTargetGoal + f Lbul; a field_6654 tameAnimal + f Lbtn; b field_6655 ownerLastHurtBy + f I c field_6653 timestamp + m (Lbul;)V +c cck net/minecraft/class_1406 net/minecraft/world/entity/ai/goal/target/OwnerHurtTargetGoal + f Lbul; a field_6666 tameAnimal + f Lbtn; b field_6667 ownerLastHurt + f I c field_6665 timestamp + m (Lbul;)V +c ccl net/minecraft/class_5398 net/minecraft/world/entity/ai/goal/target/ResetUniversalAngerTargetGoal + f I a field_30232 ALERT_RANGE_Y + f Lbtp; b field_25604 mob + f Z c field_25605 alertOthersOfSameType + f I d field_25606 lastHurtByPlayerTimestamp + m (Lbtp;)Lbtt; a method_29930 method_29930 + m (Lbtp;)Z b method_29931 method_29931 + m ()Z h method_29932 wasHurtByPlayer + m ()Ljava/util/List; i method_29933 getNearbyMobsOfSameType + m (Lbtp;Z)V +c ccm net/minecraft/class_1405 net/minecraft/world/entity/ai/goal/target/TargetGoal + f I a field_30233 EMPTY_REACH_CACHE + f I b field_30234 CAN_REACH_CACHE + f I c field_30235 CANT_REACH_CACHE + f Z d field_6663 mustReach + f Lbtp; e field_6660 mob + f Z f field_6658 mustSee + f Lbtn; g field_6664 targetMob + f I h field_6657 unseenMemoryTicks + f I i field_6662 reachCache + f I j field_6661 reachCacheTime + f I k field_6659 unseenTicks + m (Lbtn;)Z a method_6329 canReach + m (Lbtn;Lcef;)Z a method_6328 canAttack + m (I)Lccm; c method_6330 setUnseenMemoryTicks + m ()D l method_6326 getFollowDistance + m (Lbtp;Z)V + m (Lbtp;ZZ)V +c ccn net/minecraft/class_6039 net/minecraft/world/entity/ai/goal/target/package-info +c cco net/minecraft/class_4136 net/minecraft/world/entity/ai/gossip/GossipContainer + f I a field_30236 DISCARD_THRESHOLD + f Lorg/slf4j/Logger; b field_41669 LOGGER + f Ljava/util/Map; c field_18419 gossips + m ()Ljava/util/Map; a method_35120 getGossipEntries + m (II)I a method_19059 mergeValuesForTransfer + m (Layw;I)Ljava/util/Collection; a method_19070 selectGossipsForTransfer + m (Lcco$b;)V a method_19060 method_19060 + m (Lcco;Layw;I)V a method_19061 transferFrom + m (Lccp;)V a method_35121 remove + m (Lccp;II)I a method_19063 mergeValuesForAddition + m (Lccp;Ljava/util/function/DoublePredicate;)J a method_35122 getCountForType + m (Lcom/mojang/datafixers/util/Pair;)Ljava/util/stream/Stream; a method_47924 method_47924 + m (Lcom/mojang/serialization/Dynamic;)V a method_19066 update + m (Lcom/mojang/serialization/DynamicOps;)Ljava/lang/Object; a method_19067 store + m (Ljava/lang/String;)V a method_47925 method_47925 + m (Ljava/util/Map$Entry;)Ljava/util/stream/Stream; a method_19069 method_19069 + m (Ljava/util/Map;Ljava/util/UUID;)V a method_35123 method_35123 + m (Ljava/util/UUID;)Lcco$a; a method_19071 getOrCreate + m (Ljava/util/UUID;Lccp;)V a method_35124 remove + m (Ljava/util/UUID;Lccp;I)V a method_19072 add + m (Ljava/util/UUID;Ljava/util/function/Predicate;)I a method_19073 getReputation + m (Ljava/util/function/DoublePredicate;Lccp;Lcco$a;)Z a method_35125 method_35125 + m ()V b method_20651 decay + m (Lcco$b;)V b method_19075 method_19075 + m (Lccp;II)I b method_19065 method_19065 + m (Ljava/lang/String;)V b method_47926 method_47926 + m (Ljava/util/UUID;)Lcco$a; b method_19076 method_19076 + m (Ljava/util/UUID;Lccp;I)V b method_35126 remove + m ()Ljava/util/stream/Stream; c method_19074 unpack + m ()V + m ()V +c cco$a net/minecraft/class_4136$class_4137 net/minecraft/world/entity/ai/gossip/GossipContainer$EntityGossips + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; a field_18420 entries + m ()V a method_20652 decay + m (Lccp;)V a method_20653 makeSureValueIsntTooLowOrTooHigh + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;)I a method_19078 method_19078 + m (Ljava/util/UUID;)Ljava/util/stream/Stream; a method_19079 unpack + m (Ljava/util/UUID;Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;)Lcco$b; a method_19080 method_19080 + m (Ljava/util/function/Predicate;)I a method_19081 weightedValue + m (Ljava/util/function/Predicate;Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;)Z a method_19082 method_19082 + m ()Z b method_20654 isEmpty + m (Lccp;)V b method_20655 remove + m ()V +c cco$b net/minecraft/class_4136$class_4138 net/minecraft/world/entity/ai/gossip/GossipContainer$GossipEntry + f Lcom/mojang/serialization/Codec; a field_41670 CODEC + f Lcom/mojang/serialization/Codec; b field_41671 LIST_CODEC + f Ljava/util/UUID; c comp_1180 target + f Lccp; d comp_1181 type + f I e comp_1182 value + m ()I a method_19083 weightedValue + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_47927 method_47927 + m ()Ljava/util/UUID; b comp_1180 target + m ()Lccp; c comp_1181 type + m ()I d comp_1182 value + m (Ljava/util/UUID;Lccp;I)V + m ()V +c ccp net/minecraft/class_4139 net/minecraft/world/entity/ai/gossip/GossipType + f Lccp; a field_18424 MAJOR_NEGATIVE + f Lccp; b field_18425 MINOR_NEGATIVE + f Lccp; c field_18426 MINOR_POSITIVE + f Lccp; d field_18427 MAJOR_POSITIVE + f Lccp; e field_18428 TRADING + f I f field_30240 REPUTATION_CHANGE_PER_EVENT + f I g field_30241 REPUTATION_CHANGE_PER_EVERLASTING_MEMORY + f I h field_30242 REPUTATION_CHANGE_PER_TRADE + f Ljava/lang/String; i field_18430 id + f I j field_18431 weight + f I k field_18432 max + f I l field_19354 decayPerDay + f I m field_18434 decayPerTransfer + f Lcom/mojang/serialization/Codec; n field_41672 CODEC + f [Lccp; o field_18436 $VALUES + m ()[Lccp; a method_36623 $values + m (Ljava/lang/String;ILjava/lang/String;IIII)V + m ()V +c ccq net/minecraft/class_6040 net/minecraft/world/entity/ai/gossip/package-info +c ccr net/minecraft/class_4831 net/minecraft/world/entity/ai/memory/ExpirableValue + f Ljava/lang/Object; a field_22330 value + f J b field_22331 timeToLive + m ()V a method_24913 tick + m (Lccr;)Ljava/util/Optional; a method_28352 method_28352 + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_28353 codec + m (Lcom/mojang/serialization/Codec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28354 method_28354 + m (Ljava/lang/Object;)Lccr; a method_28355 of + m (Ljava/lang/Object;J)Lccr; a method_24636 of + m (Ljava/lang/Object;Ljava/util/Optional;)Lccr; a method_28356 method_28356 + m ()J b method_35127 getTimeToLive + m (Lccr;)Ljava/lang/Object; b method_28357 method_28357 + m ()Ljava/lang/Object; c method_24637 getValue + m ()Z d method_24634 hasExpired + m ()Z e method_24914 canExpire + m (Ljava/lang/Object;J)V +c ccs net/minecraft/class_4140 net/minecraft/world/entity/ai/memory/MemoryModuleType + f Lccs; A field_18453 NEAREST_HOSTILE + f Lccs; B field_30243 NEAREST_ATTACKABLE + f Lccs; C field_19008 HIDING_PLACE + f Lccs; D field_19009 HEARD_BELL_TIME + f Lccs; E field_19293 CANT_REACH_WALK_TARGET_SINCE + f Lccs; F field_25754 GOLEM_DETECTED_RECENTLY + f Lccs; G field_47762 DANGER_DETECTED_RECENTLY + f Lccs; H field_19385 LAST_SLEPT + f Lccs; I field_20616 LAST_WOKEN + f Lccs; J field_19386 LAST_WORKED_AT_POI + f Lccs; K field_25359 NEAREST_VISIBLE_ADULT + f Lccs; L field_22332 NEAREST_VISIBLE_WANTED_ITEM + f Lccs; M field_25360 NEAREST_VISIBLE_NEMESIS + f Lccs; N field_28324 PLAY_DEAD_TICKS + f Lccs; O field_28325 TEMPTING_PLAYER + f Lccs; P field_28326 TEMPTATION_COOLDOWN_TICKS + f Lccs; Q field_40127 GAZE_COOLDOWN_TICKS + f Lccs; R field_28327 IS_TEMPTED + f Lccs; S field_30244 LONG_JUMP_COOLDOWN_TICKS + f Lccs; T field_30245 LONG_JUMP_MID_JUMP + f Lccs; U field_30246 HAS_HUNTING_COOLDOWN + f Lccs; V field_33483 RAM_COOLDOWN_TICKS + f Lccs; W field_33484 RAM_TARGET + f Lccs; X field_37442 IS_IN_WATER + f Lccs; Y field_37443 IS_PREGNANT + f Lccs; Z field_39408 IS_PANICKING + f Lccs; aA field_38110 RECENT_PROJECTILE + f Lccs; aB field_38111 IS_SNIFFING + f Lccs; aC field_38112 IS_EMERGING + f Lccs; aD field_38113 ROAR_SOUND_DELAY + f Lccs; aE field_38103 DIG_COOLDOWN + f Lccs; aF field_38104 ROAR_SOUND_COOLDOWN + f Lccs; aG field_38105 SNIFF_COOLDOWN + f Lccs; aH field_38106 TOUCH_COOLDOWN + f Lccs; aI field_38107 VIBRATION_COOLDOWN + f Lccs; aJ field_38856 SONIC_BOOM_COOLDOWN + f Lccs; aK field_38857 SONIC_BOOM_SOUND_COOLDOWN + f Lccs; aL field_38858 SONIC_BOOM_SOUND_DELAY + f Lccs; a field_18437 DUMMY + f Lccs; aM field_38394 LIKED_PLAYER + f Lccs; aN field_38395 LIKED_NOTEBLOCK_POSITION + f Lccs; aO field_38396 LIKED_NOTEBLOCK_COOLDOWN_TICKS + f Lccs; aP field_38397 ITEM_PICKUP_COOLDOWN_TICKS + f Lccs; aQ field_42637 SNIFFER_EXPLORED_POSITIONS + f Lccs; aR field_42638 SNIFFER_SNIFFING_TARGET + f Lccs; aS field_42639 SNIFFER_DIGGING + f Lccs; aT field_42640 SNIFFER_HAPPY + f Lccs; aU field_47252 BREEZE_JUMP_COOLDOWN + f Lccs; aV field_47253 BREEZE_SHOOT + f Lccs; aW field_47254 BREEZE_SHOOT_CHARGING + f Lccs; aX field_47255 BREEZE_SHOOT_RECOVERING + f Lccs; aY field_47256 BREEZE_SHOOT_COOLDOWN + f Lccs; aZ field_47257 BREEZE_JUMP_INHALING + f Lccs; aa field_39450 UNREACHABLE_TONGUE_TARGETS + f Lccs; ab field_22333 ANGRY_AT + f Lccs; ac field_25361 UNIVERSAL_ANGER + f Lccs; ad field_22334 ADMIRING_ITEM + f Lccs; ae field_25813 TIME_TRYING_TO_REACH_ADMIRE_ITEM + f Lccs; af field_25814 DISABLE_WALK_TO_ADMIRE_ITEM + f Lccs; ag field_22473 ADMIRING_DISABLED + f Lccs; ah field_22336 HUNTED_RECENTLY + f Lccs; ai field_22337 CELEBRATE_LOCATION + f Lccs; aj field_25159 DANCING + f Lccs; ak field_22339 NEAREST_VISIBLE_HUNTABLE_HOGLIN + f Lccs; al field_22340 NEAREST_VISIBLE_BABY_HOGLIN + f Lccs; am field_22342 NEAREST_TARGETABLE_PLAYER_NOT_WEARING_GOLD + f Lccs; an field_25755 NEARBY_ADULT_PIGLINS + f Lccs; ao field_22343 NEAREST_VISIBLE_ADULT_PIGLINS + f Lccs; ap field_22344 NEAREST_VISIBLE_ADULT_HOGLINS + f Lccs; aq field_22345 NEAREST_VISIBLE_ADULT_PIGLIN + f Lccs; ar field_22346 NEAREST_VISIBLE_ZOMBIFIED + f Lccs; as field_22347 VISIBLE_ADULT_PIGLIN_COUNT + f Lccs; at field_22348 VISIBLE_ADULT_HOGLIN_COUNT + f Lccs; au field_22349 NEAREST_PLAYER_HOLDING_WANTED_ITEM + f Lccs; av field_22350 ATE_RECENTLY + f Lccs; aw field_22474 NEAREST_REPELLENT + f Lccs; ax field_22353 PACIFIED + f Lccs; ay field_38108 ROAR_TARGET + f Lccs; az field_38109 DISTURBANCE_LOCATION + f Lccs; b field_18438 HOME + f Lccs; ba field_47258 BREEZE_JUMP_TARGET + f Lccs; bb field_47763 BREEZE_LEAVING_WATER + f Ljava/util/Optional; bc field_24668 codec + f Lccs; c field_18439 JOB_SITE + f Lccs; d field_25160 POTENTIAL_JOB_SITE + f Lccs; e field_18440 MEETING_POINT + f Lccs; f field_18873 SECONDARY_JOB_SITE + f Lccs; g field_18441 NEAREST_LIVING_ENTITIES + f Lccs; h field_18442 NEAREST_VISIBLE_LIVING_ENTITIES + f Lccs; i field_19006 VISIBLE_VILLAGER_BABIES + f Lccs; j field_18443 NEAREST_PLAYERS + f Lccs; k field_18444 NEAREST_VISIBLE_PLAYER + f Lccs; l field_22354 NEAREST_VISIBLE_ATTACKABLE_PLAYER + f Lccs; m field_18445 WALK_TARGET + f Lccs; n field_18446 LOOK_TARGET + f Lccs; o field_22355 ATTACK_TARGET + f Lccs; p field_22475 ATTACK_COOLING_DOWN + f Lccs; q field_18447 INTERACTION_TARGET + f Lccs; r field_18448 BREED_TARGET + f Lccs; s field_22356 RIDE_TARGET + f Lccs; t field_18449 PATH + f Lccs; u field_18450 INTERACTABLE_DOORS + f Lccs; v field_26389 DOORS_TO_CLOSE + f Lccs; w field_19007 NEAREST_BED + f Lccs; x field_18451 HURT_BY + f Lccs; y field_18452 HURT_BY_ENTITY + f Lccs; z field_22357 AVOID_TARGET + m ()Ljava/util/Optional; a method_19093 getCodec + m (Ljava/lang/String;)Lccs; a method_20738 register + m (Ljava/lang/String;Lcom/mojang/serialization/Codec;)Lccs; a method_19092 register + m (Ljava/util/Optional;)V + m ()V +c cct net/minecraft/class_4141 net/minecraft/world/entity/ai/memory/MemoryStatus + f Lcct; a field_18456 VALUE_PRESENT + f Lcct; b field_18457 VALUE_ABSENT + f Lcct; c field_18458 REGISTERED + f [Lcct; d field_18459 $VALUES + m ()[Lcct; a method_36624 $values + m (Ljava/lang/String;I)V + m ()V +c ccu net/minecraft/class_6670 net/minecraft/world/entity/ai/memory/NearestVisibleLivingEntities + f Lccu; a field_35104 EMPTY + f Ljava/util/List; b field_35105 nearbyEntities + f Ljava/util/function/Predicate; c field_35106 lineOfSightTest + m ()Lccu; a method_38971 empty + m (Lbtn;)Z a method_38972 contains + m (Lbtn;Lbtn;)Z a method_38973 method_38973 + m (Lit/unimi/dsi/fastutil/objects/Object2BooleanOpenHashMap;Ljava/util/function/Predicate;Lbtn;)Z a method_38974 method_38974 + m (Ljava/util/function/Predicate;)Ljava/util/Optional; a method_38975 findClosest + m (Ljava/util/function/Predicate;Lbtn;)Z a method_38976 method_38976 + m (Lbtn;)Z b method_38977 method_38977 + m (Ljava/util/function/Predicate;)Ljava/lang/Iterable; b method_38978 findAll + m (Ljava/util/function/Predicate;Lbtn;)Z b method_38979 method_38979 + m (Ljava/util/function/Predicate;)Ljava/util/stream/Stream; c method_38980 find + m (Ljava/util/function/Predicate;)Z d method_38981 contains + m ()V + m (Lbtn;Ljava/util/List;)V + m ()V +c ccv net/minecraft/class_4142 net/minecraft/world/entity/ai/memory/WalkTarget + f Lbwv; a field_18460 target + f F b field_18461 speedModifier + f I c field_18462 closeEnoughDist + m ()Lbwv; a method_19094 getTarget + m ()F b method_19095 getSpeedModifier + m ()I c method_19096 getCloseEnoughDist + m (Ljd;FI)V + m (Lexc;FI)V + m (Lbsr;FI)V + m (Lbwv;FI)V +c ccw net/minecraft/class_6041 net/minecraft/world/entity/ai/memory/package-info +c ccx net/minecraft/class_5766 net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation + m (Lbtp;Ldcw;)V +c ccy net/minecraft/class_1407 net/minecraft/world/entity/ai/navigation/FlyingPathNavigation + m (Z)V b method_6332 setCanOpenDoors + m (Z)V c method_6331 setCanPassDoors + m ()Z d method_35128 canPassDoors + m ()Z e method_35129 canOpenDoors + m (Lbtp;Ldcw;)V +c ccz net/minecraft/class_1409 net/minecraft/world/entity/ai/navigation/GroundPathNavigation + f Z p field_6686 avoidSun + m (Lepv;)Z a method_26338 hasValidPathType + m (Z)V b method_6363 setCanOpenDoors + m (Z)V c method_35139 setCanPassDoors + m (Z)V d method_6361 setAvoidSun + m ()Z e method_35140 canPassDoors + m (Z)V e method_46645 setCanWalkOverFences + m ()Z f method_6366 canOpenDoors + m ()I s method_6362 getSurfaceY + m (Lbtp;Ldcw;)V +c cda net/minecraft/class_1408 net/minecraft/world/entity/ai/navigation/PathNavigation + f Lbtp; a field_6684 mob + f Ldcw; b field_6677 level + f Leps; c field_6681 path + f D d field_6668 speedModifier + f I e field_6675 tick + f I f field_6674 lastStuckCheck + f Lexc; g field_6672 lastStuckCheckPos + f Lkh; h field_6680 timeoutCachedNode + f J i field_6670 timeoutTimer + f J j field_6669 lastTimeoutCheck + f D k field_6682 timeoutLimit + f F l field_6683 maxDistanceToWaypoint + f Z m field_6679 hasDelayedRecomputation + f J n field_6685 timeLastRecompute + f Lepr; o field_6678 nodeEvaluator + f I p field_30247 MAX_TIME_RECOMPUTE + f I q field_41545 STUCK_CHECK_INTERVAL + f F r field_41546 STUCK_THRESHOLD_DISTANCE_FACTOR + f Ljd; s field_20293 targetPos + f I t field_20294 reachRange + f F u field_21642 maxVisitedNodesMultiplier + f Lepu; v field_6673 pathFinder + f Z w field_26820 isStuck + m ()V W_ method_6359 trimPath + m ()Z a method_6358 canUpdatePath + m (D)V a method_6344 setSpeedModifier + m (DDDD)Z a method_6337 moveTo + m (DDDI)Leps; a method_6352 createPath + m (DDDID)Z a method_58160 moveTo + m (F)V a method_23964 setMaxVisitedNodesMultiplier + m (I)Lepu; a method_6336 createPathFinder + m (Lbsr;D)Z a method_6335 moveTo + m (Lbsr;I)Leps; a method_6349 createPath + m (Lbtp;Lexc;Lexc;Z)Z a method_43394 isClearForMovementBetween + m (Leps;D)Z a method_6334 moveTo + m (Lexc;)D a method_38065 getGroundY + m (Lexc;Lexc;)Z a method_6341 canMoveDirectly + m (Ljava/util/Set;I)Leps; a method_29934 createPath + m (Ljava/util/Set;IZI)Leps; a method_35142 createPath + m (Ljava/util/Set;IZIF)Leps; a method_18416 createPath + m (Ljava/util/stream/Stream;I)Leps; a method_21643 createPath + m (Ljd;)Z a method_6333 isStableDestination + m (Ljd;I)Leps; a method_6348 createPath + m (Ljd;II)Leps; a method_35141 createPath + m (Z)V a method_6354 setCanFloat + m ()Lexc; b method_6347 getTempMobPos + m (Lepv;)Z b method_48158 canCutCorner + m (Lexc;)V b method_6346 doStuckDetection + m (Ljd;)Z b method_18053 shouldRecomputePath + m ()V c method_6360 tick + m (Lexc;)Z c method_27799 shouldTargetNextNodeInDirection + m ()V e method_31266 timeoutPath + m ()V f method_26085 resetStuckTimeout + m ()V g method_23965 resetMaxVisitedNodesMultiplier + m ()Ljd; h method_6355 getTargetPos + m ()V i method_6356 recomputePath + m ()Leps; j method_6345 getPath + m ()V k method_6339 followThePath + m ()Z l method_6357 isDone + m ()Z m method_23966 isInProgress + m ()V n method_6340 stop + m ()Lepr; o method_6342 getNodeEvaluator + m ()Z p method_6350 canFloat + m ()F q method_35143 getMaxDistanceToWaypoint + m ()Z r method_31267 isStuck + m (Lbtp;Ldcw;)V +c cdb net/minecraft/class_1410 net/minecraft/world/entity/ai/navigation/WallClimberNavigation + f Ljd; p field_6687 pathToPosition + m (Lbtp;Ldcw;)V +c cdc net/minecraft/class_1412 net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation + f Z p field_6689 allowBreaching + m (Lbtp;Ldcw;)V +c cdd net/minecraft/class_6042 net/minecraft/world/entity/ai/navigation/package-info +c cde net/minecraft/class_6043 net/minecraft/world/entity/ai/package-info +c cdf net/minecraft/class_5356 net/minecraft/world/entity/ai/sensing/AdultSensor + m (Laqu;Lbsl;)V a method_29531 doTick + m (Lbsl;Lbtn;)Z a method_29528 method_29528 + m (Lbsl;Lccu;)V a method_29529 setNearestVisibleAdult + m (Lbsl;Lccu;)V b method_29532 method_29532 + m ()V +c cdg net/minecraft/class_6044 net/minecraft/world/entity/ai/sensing/AxolotlAttackablesSensor + f F a field_30248 TARGET_DETECTION_DISTANCE + m (Lbtn;)Z b method_35145 isHostileTarget + m (Lbtn;Lbtn;)Z e method_35144 isHuntTarget + m (Lbtn;Lbtn;)Z f method_35146 isClose + m ()V +c cdh net/minecraft/class_8947 net/minecraft/world/entity/ai/sensing/BreezeAttackEntitySensor + f I a field_47260 BREEZE_SENSOR_RADIUS + m (Laqu;Lckz;)V a method_54993 doTick + m (Lckz;)V a method_54994 method_54994 + m (Lckz;Lbtn;)V a method_54995 method_54995 + m (Lckz;Lbtn;)Z b method_54996 method_54996 + m ()V +c cdi net/minecraft/class_4143 net/minecraft/world/entity/ai/sensing/DummySensor + m ()V +c cdj net/minecraft/class_7100 net/minecraft/world/entity/ai/sensing/FrogAttackablesSensor + f F a field_37444 TARGET_DETECTION_DISTANCE + m (Lbtn;Lbtn;)Z e method_44331 isUnreachableAttackTarget + m ()V +c cdk net/minecraft/class_4307 net/minecraft/world/entity/ai/sensing/GolemSensor + f I a field_30249 GOLEM_SCAN_RATE + f I c field_30250 MEMORY_TIME_TO_LIVE + m (Lbtn;)V a method_20656 checkForNearbyGolem + m (Lbtn;)V b method_30233 golemDetected + m (Lbtn;)Z c method_20657 method_20657 + m ()V + m (I)V +c cdl net/minecraft/class_4832 net/minecraft/world/entity/ai/sensing/HoglinSpecificSensor + m (Laqu;Lclh;)V a method_24639 doTick + m (Laqu;Ljd;)Z a method_24640 method_24640 + m (Lbtn;)Z a method_38982 method_38982 + m (Laqu;Lclh;)Ljava/util/Optional; b method_24641 findNearestRepellent + m ()V +c cdm net/minecraft/class_4144 net/minecraft/world/entity/ai/sensing/HurtBySensor + m (Laqu;Lbuq;Lbtn;)V a method_24642 method_24642 + m ()V +c cdn net/minecraft/class_7101 net/minecraft/world/entity/ai/sensing/IsInWaterSensor + m ()V +c cdo net/minecraft/class_9068 net/minecraft/world/entity/ai/sensing/MobSensor + f Ljava/util/function/BiPredicate; a field_47764 mobTest + f Ljava/util/function/Predicate; c field_47765 readyTest + f Lccs; d field_47766 toSet + f I e field_47767 memoryTimeToLive + m (Lbtn;)V a method_55702 checkForMobsNearby + m (Lbtn;Lbtn;)Z a method_55703 method_55703 + m (Lbtn;)V b method_55704 mobDetected + m (Lbtn;)V c method_55705 clearMemory + m (ILjava/util/function/BiPredicate;Ljava/util/function/Predicate;Lccs;I)V +c cdp net/minecraft/class_4256 net/minecraft/world/entity/ai/sensing/NearestBedSensor + f I a field_30251 CACHE_TIMEOUT + f I c field_30252 BATCH_SIZE + f I d field_30253 RATE + f Lit/unimi/dsi/fastutil/longs/Long2LongMap; e field_20295 batchCache + f I f field_20296 triedCount + f J g field_20297 lastUpdate + m (Laqu;Lbtp;)V a method_21646 doTick + m (Lit/unimi/dsi/fastutil/longs/Long2LongMap$Entry;)Z a method_21645 method_21645 + m (Ljd;)Z a method_21644 method_21644 + m (Ljm;)Z a method_43977 method_43977 + m ()V +c cdq net/minecraft/class_4833 net/minecraft/world/entity/ai/sensing/NearestItemSensor + f I a field_30254 MAX_DISTANCE_TO_WANTED_ITEM + f J c field_30255 XZ_RANGE + f J d field_30256 Y_RANGE + m (Laqu;Lbtp;)V a method_24645 doTick + m (Lbtp;Lcjh;)Z a method_24643 method_24643 + m (Lcjh;)Z a method_24644 method_24644 + m (Lbtp;Lcjh;)Z b method_24646 method_24646 + m ()V +c cdr net/minecraft/class_4146 net/minecraft/world/entity/ai/sensing/NearestLivingEntitySensor + m (Lbtn;Lbtn;)Z a method_19097 method_19097 + m ()I b method_43081 radiusXZ + m ()I c method_43082 radiusY + m ()V +c cds net/minecraft/class_6045 net/minecraft/world/entity/ai/sensing/NearestVisibleLivingEntitySensor + m (Lbtn;)Ljava/util/Optional; a method_35147 getVisibleEntities + m (Lbtn;Lbtn;)Z a method_35148 isMatchingEntity + m (Lbtn;Lccu;)Ljava/util/Optional; a method_35149 method_35149 + m ()Lccs; b method_35150 getMemory + m (Lbtn;)Ljava/util/Optional; b method_35151 getNearestEntity + m (Lbtn;Lbtn;)Z e method_35152 method_35152 + m ()V +c cdt net/minecraft/class_5417 net/minecraft/world/entity/ai/sensing/PiglinBruteSpecificSensor + m (Lbtn;)Z a method_38983 method_38983 + m ()V +c cdu net/minecraft/class_4834 net/minecraft/world/entity/ai/sensing/PiglinSpecificSensor + m (Laqu;Ljd;)Z a method_24648 isValidRepellent + m (Lbtn;)Z a method_38984 method_38984 + m (Laqu;Ljd;)Z b method_30077 method_30077 + m (Laqu;Lbtn;)Ljava/util/Optional; c method_24649 findNearestRepellent + m ()V +c cdv net/minecraft/class_4147 net/minecraft/world/entity/ai/sensing/PlayerSensor + m (Lbtn;Laqv;)Z a method_19098 method_19098 + m (Lbtn;Lcmx;)Z a method_36981 method_36981 + m (Lbtn;Lcmx;)Z b method_29268 method_29268 + m ()V +c cdw net/minecraft/class_4221 net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor + f I a field_30257 SCAN_RATE + m (Laqu;Lcmk;)V a method_19617 doTick + m ()V +c cdx net/minecraft/class_1413 net/minecraft/world/entity/ai/sensing/Sensing + f Lbtp; a field_6691 mob + f Lit/unimi/dsi/fastutil/ints/IntSet; b field_6692 seen + f Lit/unimi/dsi/fastutil/ints/IntSet; c field_6690 unseen + m ()V a method_6370 tick + m (Lbsr;)Z a method_6369 hasLineOfSight + m (Lbtp;)V +c cdy net/minecraft/class_4148 net/minecraft/world/entity/ai/sensing/Sensor + f Layw; a field_19294 RANDOM + f I b field_30258 TARGETING_RANGE + f I c field_30259 DEFAULT_SCAN_RATE + f Lcef; d field_26630 TARGET_CONDITIONS + f Lcef; e field_26631 TARGET_CONDITIONS_IGNORE_INVISIBILITY_TESTING + f Lcef; f field_33762 ATTACK_TARGET_CONDITIONS + f Lcef; g field_33763 ATTACK_TARGET_CONDITIONS_IGNORE_INVISIBILITY_TESTING + f Lcef; h field_34050 ATTACK_TARGET_CONDITIONS_IGNORE_LINE_OF_SIGHT + f Lcef; i field_34051 ATTACK_TARGET_CONDITIONS_IGNORE_INVISIBILITY_AND_LINE_OF_SIGHT + f I j field_18464 scanRate + f J k field_18463 timeToTick + m ()Ljava/util/Set; a method_19099 requires + m (Laqu;Lbtn;)V a method_19101 doTick + m (Laqu;Lbtn;)V b method_19100 tick + m (Lbtn;Lbtn;)Z b method_30954 isEntityTargetable + m (Lbtn;Lbtn;)Z c method_36982 isEntityAttackable + m (Lbtn;Lbtn;)Z d method_37456 isEntityAttackableIgnoringLineOfSight + m (I)V + m ()V + m ()V +c cdz net/minecraft/class_4149 net/minecraft/world/entity/ai/sensing/SensorType + f Ljava/util/function/Supplier; A field_18471 factory + f Lcdz; a field_18465 DUMMY + f Lcdz; b field_22358 NEAREST_ITEMS + f Lcdz; c field_18466 NEAREST_LIVING_ENTITIES + f Lcdz; d field_18467 NEAREST_PLAYERS + f Lcdz; e field_19010 NEAREST_BED + f Lcdz; f field_18469 HURT_BY + f Lcdz; g field_18470 VILLAGER_HOSTILES + f Lcdz; h field_19011 VILLAGER_BABIES + f Lcdz; i field_18875 SECONDARY_POIS + f Lcdz; j field_25756 GOLEM_DETECTED + f Lcdz; k field_47768 ARMADILLO_SCARE_DETECTED + f Lcdz; l field_22359 PIGLIN_SPECIFIC_SENSOR + f Lcdz; m field_25757 PIGLIN_BRUTE_SPECIFIC_SENSOR + f Lcdz; n field_22360 HOGLIN_SPECIFIC_SENSOR + f Lcdz; o field_25362 NEAREST_ADULT + f Lcdz; p field_30260 AXOLOTL_ATTACKABLES + f Lcdz; q field_28329 AXOLOTL_TEMPTATIONS + f Lcdz; r field_30261 GOAT_TEMPTATIONS + f Lcdz; s field_37445 FROG_TEMPTATIONS + f Lcdz; t field_40128 CAMEL_TEMPTATIONS + f Lcdz; u field_47769 ARMADILLO_TEMPTATIONS + f Lcdz; v field_37446 FROG_ATTACKABLES + f Lcdz; w field_37447 IS_IN_WATER + f Lcdz; x field_38114 WARDEN_ENTITY_SENSOR + f Lcdz; y field_44475 SNIFFER_TEMPTATIONS + f Lcdz; z field_47261 BREEZE_ATTACK_ENTITY_SENSOR + m ()Lcdy; a method_19102 create + m (Ljava/lang/String;Ljava/util/function/Supplier;)Lcdz; a method_19103 register + m ()Lcea; b method_51153 method_51153 + m ()Lcea; c method_55706 method_55706 + m ()Lcea; d method_45338 method_45338 + m ()Lcea; e method_41351 method_41351 + m ()Lcea; f method_35153 method_35153 + m ()Lcea; g method_33212 method_33212 + m ()Lcdo; h method_55707 method_55707 + m (Ljava/util/function/Supplier;)V + m ()V +c cea net/minecraft/class_5760 net/minecraft/world/entity/ai/sensing/TemptingSensor + f I a field_30262 TEMPTATION_RANGE + f Lcef; c field_28330 TEMPT_TARGETING + f Ljava/util/function/Predicate; d field_28331 temptations + m (Laqu;Lbtw;)V a method_33213 doTick + m (Lbtw;Laqv;)Z a method_45339 method_45339 + m (Lcmx;)Z a method_33215 playerHoldingTemptation + m (Lcuq;)Z a method_33216 isTemptation + m (Lbtw;Laqv;)Z b method_33214 method_33214 + m (Lbtw;Laqv;)Z c method_33217 method_33217 + m (Ljava/util/function/Predicate;)V + m ()V +c ceb net/minecraft/class_4257 net/minecraft/world/entity/ai/sensing/VillagerBabiesSensor + m (Lbtn;)Ljava/util/List; a method_20000 getNearestVillagerBabies + m (Lbtn;)Z b method_20001 isVillagerBaby + m (Lbtn;)Lccu; c method_20002 getVisibleEntities + m ()V +c cec net/minecraft/class_4150 net/minecraft/world/entity/ai/sensing/VillagerHostilesSensor + f Lcom/google/common/collect/ImmutableMap; a field_18473 ACCEPTABLE_DISTANCE_FROM_HOSTILES + m (Lbtn;)Z b method_19104 isHostile + m (Lbtn;Lbtn;)Z e method_19105 isClose + m ()V + m ()V +c ced net/minecraft/class_7252 net/minecraft/world/entity/ai/sensing/WardenEntitySensor + m (Laqu;Lcmb;)V a method_43083 doTick + m (Lbtn;)Z a method_43084 method_43084 + m (Lcmb;)V a method_43085 method_43085 + m (Lcmb;Lbtn;)V a method_42164 method_42164 + m (Lcmb;Ljava/util/function/Predicate;)Ljava/util/Optional; a method_43086 getClosest + m (Lbtn;)Z b method_42166 method_42166 + m (Lcmb;)Ljava/util/Optional; b method_43087 method_43087 + m ()V +c cee net/minecraft/class_6046 net/minecraft/world/entity/ai/sensing/package-info +c cef net/minecraft/class_4051 net/minecraft/world/entity/ai/targeting/TargetingConditions + f Lcef; a field_18092 DEFAULT + f D b field_30263 MIN_VISIBILITY_DISTANCE_FOR_INVISIBLE_TARGET + f Z c field_33720 isCombat + f D d field_18093 range + f Z e field_33721 checkLineOfSight + f Z f field_18098 testInvisible + f Ljava/util/function/Predicate; g field_28405 selector + m ()Lcef; a method_36625 forCombat + m (D)Lcef; a method_18418 range + m (Lbtn;Lbtn;)Z a method_18419 test + m (Ljava/util/function/Predicate;)Lcef; a method_18420 selector + m ()Lcef; b method_36626 forNonCombat + m ()Lcef; c method_33335 copy + m ()Lcef; d method_36627 ignoreLineOfSight + m ()Lcef; e method_18424 ignoreInvisibilityTesting + m (Z)V + m ()V +c ceg net/minecraft/class_6047 net/minecraft/world/entity/ai/targeting/package-info +c ceh net/minecraft/class_5530 net/minecraft/world/entity/ai/util/AirAndWaterRandomPos + m (Lbtw;IIIDDD)Lexc; a method_31504 getPos + m (Lbtw;IIIDDDZ)Ljd; a method_31505 generateRandomPos + m (Lbtw;Ljd;)Z a method_31506 method_31506 + m (Lbtw;IIIDDDZ)Ljd; b method_31507 method_31507 + m ()V +c cei net/minecraft/class_5531 net/minecraft/world/entity/ai/util/AirRandomPos + m (Lbtw;IIILexc;D)Lexc; a method_31508 getPosTowards + m (Lbtw;IIILexc;DZ)Ljd; a method_31509 method_31509 + m ()V +c cej net/minecraft/class_5532 net/minecraft/world/entity/ai/util/DefaultRandomPos + m (Lbtw;II)Lexc; a method_31510 getPos + m (Lbtw;IILexc;)Lexc; a method_31511 getPosAway + m (Lbtw;IILexc;D)Lexc; a method_31512 getPosTowards + m (Lbtw;IILexc;DZ)Ljd; a method_31513 method_31513 + m (Lbtw;IILexc;Z)Ljd; a method_31514 method_31514 + m (Lbtw;IIZ)Ljd; a method_31515 method_31515 + m (Lbtw;IZLjd;)Ljd; a method_31516 generateRandomPosTowardDirection + m ()V +c cek net/minecraft/class_5493 net/minecraft/world/entity/ai/util/GoalUtils + m (Lbtp;)Z a method_30955 hasGroundPathNavigation + m (Lbtw;I)Z a method_31517 mobRestricted + m (Lbtw;Ljd;)Z a method_31518 isWater + m (Lcda;Ljd;)Z a method_31519 isNotStable + m (Ljd;Lbtw;)Z a method_31520 isOutsideLimits + m (ZLbtw;Ljd;)Z a method_31521 isRestricted + m (Lbtw;Ljd;)Z b method_31522 hasMalus + m (Lbtw;Ljd;)Z c method_31523 isSolid + m ()V +c cel net/minecraft/class_5533 net/minecraft/world/entity/ai/util/HoverRandomPos + m (Lbtw;IIDDFII)Lexc; a method_31524 getPos + m (Lbtw;IIDDFZII)Ljd; a method_31525 method_31525 + m (Lbtw;Ljd;)Z a method_31526 method_31526 + m ()V +c cem net/minecraft/class_5534 net/minecraft/world/entity/ai/util/LandRandomPos + m (Lbtw;II)Lexc; a method_31527 getPos + m (Lbtw;IILexc;)Lexc; a method_31528 getPosTowards + m (Lbtw;IILexc;Z)Lexc; a method_31529 getPosInDirection + m (Lbtw;IILjava/util/function/ToDoubleFunction;)Lexc; a method_31530 getPos + m (Lbtw;IIZ)Ljd; a method_31531 method_31531 + m (Lbtw;IZLjd;)Ljd; a method_31532 generateRandomPosTowardDirection + m (Lbtw;Ljd;)Ljd; a method_31533 movePosUpOutOfSolid + m (Lbtw;IILexc;)Lexc; b method_31534 getPosAway + m (Lbtw;IILexc;Z)Ljd; b method_31535 method_31535 + m (Lbtw;Ljd;)Z b method_31536 method_31536 + m ()V +c cen net/minecraft/class_5535 net/minecraft/world/entity/ai/util/RandomPos + f I a field_30264 RANDOM_POS_ATTEMPTS + m (Layw;II)Ljd; a method_31541 generateRandomDirection + m (Layw;IIIDDD)Ljd; a method_31542 generateRandomDirectionWithinRadians + m (Lbtw;ILayw;Ljd;)Ljd; a method_31537 generateRandomPosTowardDirection + m (Lbtw;Ljava/util/function/Supplier;)Lexc; a method_31538 generateRandomPos + m (Ljava/util/function/Supplier;Ljava/util/function/ToDoubleFunction;)Lexc; a method_31543 generateRandomPos + m (Ljd;IILjava/util/function/Predicate;)Ljd; a method_31539 moveUpToAboveSolid + m (Ljd;ILjava/util/function/Predicate;)Ljd; a method_31540 moveUpOutOfSolid + m ()V +c ceo net/minecraft/class_6048 net/minecraft/world/entity/ai/util/package-info +c cep net/minecraft/class_4151 net/minecraft/world/entity/ai/village/ReputationEventType + f Lcep; a field_18474 ZOMBIE_VILLAGER_CURED + f Lcep; b field_18475 GOLEM_KILLED + f Lcep; c field_18476 VILLAGER_HURT + f Lcep; d field_18477 VILLAGER_KILLED + f Lcep; e field_18478 TRADE + m (Ljava/lang/String;)Lcep; a method_19109 register + m ()V +c cep$1 net/minecraft/class_4151$1 net/minecraft/world/entity/ai/village/ReputationEventType$1 + f Ljava/lang/String; f field_17066 val$name + m (Ljava/lang/String;)V +c ceq net/minecraft/class_1419 net/minecraft/world/entity/ai/village/VillageSiege + f Lorg/slf4j/Logger; a field_26390 LOGGER + f Z b field_6725 hasSetupSiege + f Lceq$a; c field_18479 siegeState + f I d field_6723 zombiesToSpawn + f I e field_6722 nextSpawnTime + f I f field_6721 spawnX + f I g field_6720 spawnY + f I h field_6719 spawnZ + m (Laqu;)Z a method_6446 tryToSetupSiege + m (Laqu;Ljd;)Lexc; a method_6448 findRandomSpawnPos + m (Laqu;)V b method_6447 trySpawn + m ()V + m ()V +c ceq$a net/minecraft/class_1419$class_4152 net/minecraft/world/entity/ai/village/VillageSiege$State + f Lceq$a; a field_18480 SIEGE_CAN_ACTIVATE + f Lceq$a; b field_18481 SIEGE_TONIGHT + f Lceq$a; c field_18482 SIEGE_DONE + f [Lceq$a; d field_18483 $VALUES + m ()[Lceq$a; a method_36628 $values + m (Ljava/lang/String;I)V + m ()V +c cer net/minecraft/class_6049 net/minecraft/world/entity/ai/village/package-info +c ces net/minecraft/class_4153 net/minecraft/world/entity/ai/village/poi/PoiManager + f I a field_30265 MAX_VILLAGE_DISTANCE + f I b field_30266 VILLAGE_SECTION_SIZE + f Lces$a; d field_18484 distanceTracker + f Lit/unimi/dsi/fastutil/longs/LongSet; e field_20688 loadedChunks + m (Lakq;Ljd;)Z a method_26339 existsAtPosition + m (Lakq;Ljm;)Z a method_43978 method_43978 + m (Lcet;)Ljd; a method_19128 method_19128 + m (Lceu;)Ljava/lang/Boolean; a method_20592 method_20592 + m (Lcom/mojang/datafixers/util/Pair;)Ldcd; a method_22440 method_22440 + m (Ldcd;Ljava/lang/Integer;)Ljava/util/Optional; a method_19124 method_19124 + m (Ldcz;Ldcd;)V a method_22438 method_22438 + m (Ldcz;Ljd;I)V a method_22439 ensureLoadedAndValid + m (Ldvj;)Z a method_20345 mayHavePoi + m (Ldvj;Ljava/util/function/BiConsumer;Ljd;)V a method_19511 method_19511 + m (Ldvj;Lkf;)V a method_20347 method_20347 + m (Ldvj;Lkf;Lceu;)V a method_20346 method_20346 + m (Ldvj;Lkf;Ljava/util/function/BiConsumer;)V a method_20348 updateFromSection + m (Ljava/util/function/BiConsumer;Ljd;Ljm;)V a method_19512 method_19512 + m (Ljava/util/function/BiPredicate;Lcet;)Z a method_19130 method_19130 + m (Ljava/util/function/Predicate;Lces$b;Ldcd;)Ljava/util/stream/Stream; a method_19121 method_19121 + m (Ljava/util/function/Predicate;Lces$b;Ljava/util/Optional;)Ljava/util/stream/Stream; a method_19120 method_19120 + m (Ljava/util/function/Predicate;Lcet;)Z a method_20004 method_20004 + m (Ljava/util/function/Predicate;Ldcd;Lces$b;)Ljava/util/stream/Stream; a method_19123 getInChunk + m (Ljava/util/function/Predicate;Ljava/util/function/BiPredicate;Ljd;I)Ljava/util/Optional; a method_19126 take + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lces$b;Ljd;ILayw;)Ljava/util/Optional; a method_20005 getRandom + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/stream/Stream; a method_21647 findAll + m (Ljava/util/function/Predicate;Ljd;ILces$b;)J a method_20252 getCountInRange + m (Ljd;)V a method_19112 remove + m (Ljd;ILcet;)Z a method_19113 method_19113 + m (Ljd;Lcet;)D a method_43979 method_43979 + m (Ljd;Lceu;)Ljava/lang/Integer; a method_35154 method_35154 + m (Ljd;Lcom/mojang/datafixers/util/Pair;)D a method_30956 method_30956 + m (Ljd;Ljava/util/function/Predicate;)Z a method_19116 exists + m (Ljd;Ljava/util/function/Predicate;Lceu;)Ljava/lang/Boolean; a method_19117 method_19117 + m (Ljd;Ljd;)D a method_34711 method_34711 + m (Ljd;Ljm;)V a method_19115 add + m (Ljm;)Z a method_43980 method_43980 + m (Lkf;)I a method_19118 sectionsToVillage + m (Lkf;Ldvj;)V a method_19510 checkConsistencyWithBlocks + m (Lcet;)Lcom/mojang/datafixers/util/Pair; b method_43981 method_43981 + m (Lcom/mojang/datafixers/util/Pair;)Z b method_22442 method_22442 + m (Ldcd;)Z b method_22441 method_22441 + m (Ldvj;Lkf;Ljava/util/function/BiConsumer;)V b method_20349 method_20349 + m (Ljava/util/function/Predicate;Lcet;)Z b method_43982 method_43982 + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/stream/Stream; b method_43983 findAllWithType + m (Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/stream/Stream; b method_22383 getInSquare + m (Ljd;)Z b method_19129 release + m (Ljd;ILcet;)Z b method_30335 method_30335 + m (Ljd;Lceu;)Ljava/util/Optional; b method_33580 method_33580 + m (Ljd;Ljd;)D b method_20003 method_20003 + m (Lkf;)Lcom/mojang/datafixers/util/Pair; b method_22443 method_22443 + m (Lcet;)Lcom/mojang/datafixers/util/Pair; c method_43984 method_43984 + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/stream/Stream; c method_30957 findAllClosestFirstWithType + m (Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/stream/Stream; c method_19125 getInRange + m (Ljd;)Ljava/util/Optional; c method_19132 getType + m (Ljd;Lceu;)Ljava/lang/Boolean; c method_33581 method_33581 + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/Optional; d method_19127 find + m (Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/Optional; d method_20006 findClosest + m (Ljd;)I d method_35155 getFreeTickets + m (Ljd;Lceu;)V d method_33582 method_33582 + m (Ljava/util/function/Predicate;Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/Optional; e method_34712 findClosest + m (Ljava/util/function/Predicate;Ljd;ILces$b;)Ljava/util/Optional; e method_43985 findClosestWithType + m (Ljd;)Ljava/lang/IllegalStateException; e method_33583 method_33583 + m (J)Z g method_19133 isVillageCenter + m (Ldws;Ljava/nio/file/Path;Lcom/mojang/datafixers/DataFixer;ZLka;Ldwg;Ldcy;)V +c ces$a net/minecraft/class_4153$class_4154 net/minecraft/world/entity/ai/village/poi/PoiManager$DistanceTracker + f Lces; a field_18485 field_18485 + f Lit/unimi/dsi/fastutil/longs/Long2ByteMap; b field_18486 levels + m ()V a method_19134 runAllUpdates + m (Lces;)V +c ces$b net/minecraft/class_4153$class_4155 net/minecraft/world/entity/ai/village/poi/PoiManager$Occupancy + f Lces$b; a field_18487 HAS_SPACE + f Lces$b; b field_18488 IS_OCCUPIED + f Lces$b; c field_18489 ANY + f Ljava/util/function/Predicate; d field_18490 test + f [Lces$b; e field_18491 $VALUES + m ()Ljava/util/function/Predicate; a method_19135 getTest + m (Lcet;)Z a method_19136 method_19136 + m ()[Lces$b; b method_36629 $values + m (Ljava/lang/String;ILjava/util/function/Predicate;)V + m ()V +c cet net/minecraft/class_4156 net/minecraft/world/entity/ai/village/poi/PoiRecord + f Ljd; a field_18492 pos + f Ljm; b field_18493 poiType + f I c field_18494 freeTickets + f Ljava/lang/Runnable; d field_18495 setDirty + m ()I a method_35156 getFreeTickets + m (Lcet;)Ljava/lang/Integer; a method_28358 method_28358 + m (Ljava/lang/Runnable;)Lcom/mojang/serialization/Codec; a method_28359 codec + m (Ljava/lang/Runnable;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28360 method_28360 + m ()Z b method_19137 acquireTicket + m (Lcet;)Ljm; b method_28361 method_28361 + m ()Z c method_19138 releaseTicket + m (Lcet;)Ljd; c method_28362 method_28362 + m ()Z d method_19139 hasSpace + m ()Z e method_19140 isOccupied + m ()Ljd; f method_19141 getPos + m ()Ljm; g method_19142 getPoiType + m (Ljd;Ljm;ILjava/lang/Runnable;)V + m (Ljd;Ljm;Ljava/lang/Runnable;)V +c ceu net/minecraft/class_4157 net/minecraft/world/entity/ai/village/poi/PoiSection + f Lorg/slf4j/Logger; a field_18496 LOGGER + f Lit/unimi/dsi/fastutil/shorts/Short2ObjectMap; b field_18497 records + f Ljava/util/Map; c field_18498 byType + f Ljava/lang/Runnable; d field_18499 setDirty + f Z e field_19226 isValid + m ()Z a method_22444 isValid + m (Lcet;)Z a method_20350 add + m (Lceu;)Ljava/util/List; a method_28363 method_28363 + m (Lit/unimi/dsi/fastutil/shorts/Short2ObjectMap;Ljd;Ljm;)V a method_20352 method_20352 + m (Ljava/lang/Runnable;)Lcom/mojang/serialization/Codec; a method_28364 codec + m (Ljava/lang/Runnable;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28365 method_28365 + m (Ljava/util/Map$Entry;)Ljava/util/stream/Stream; a method_19149 method_19149 + m (Ljava/util/function/Consumer;)V a method_20353 refresh + m (Ljava/util/function/Predicate;Lces$b;)Ljava/util/stream/Stream; a method_19150 getRecords + m (Ljava/util/function/Predicate;Ljava/util/Map$Entry;)Z a method_19151 method_19151 + m (Ljd;)V a method_19145 remove + m (Ljd;Ljava/util/function/Predicate;)Z a method_19147 exists + m (Ljd;Ljm;)V a method_19146 add + m (Ljd;Ljm;S)Lcet; a method_20351 method_20351 + m (Ljm;)Ljava/util/Set; a method_19143 method_19143 + m ()V b method_20395 clear + m (Lceu;)Ljava/lang/Boolean; b method_28366 method_28366 + m (Ljava/lang/Runnable;)Lceu; b method_28367 method_28367 + m (Ljd;)I b method_35157 getFreeTickets + m (Ljd;)Z c method_19153 release + m (Ljd;)Ljava/util/Optional; d method_19154 getType + m (Ljd;)Ljava/util/Optional; e method_33584 getPoiRecord + m (Ljava/lang/Runnable;)V + m (Ljava/lang/Runnable;ZLjava/util/List;)V + m ()V +c cev net/minecraft/class_4158 net/minecraft/world/entity/ai/village/poi/PoiType + f Ljava/util/function/Predicate; a field_39277 NONE + f Ljava/util/Set; b comp_815 matchingStates + f I c comp_816 maxTickets + f I d comp_817 validRange + m ()Ljava/util/Set; a comp_815 matchingStates + m (Ldtc;)Z a method_35159 is + m (Ljm;)Z a method_43987 method_43987 + m ()I b comp_816 maxTickets + m ()I c comp_817 validRange + m (Ljava/util/Set;II)V + m ()V +c cew net/minecraft/class_7477 net/minecraft/world/entity/ai/village/poi/PoiTypes + f Lakq; a field_39278 ARMORER + f Lakq; b field_39279 BUTCHER + f Lakq; c field_39280 CARTOGRAPHER + f Lakq; d field_39281 CLERIC + f Lakq; e field_39282 FARMER + f Lakq; f field_39283 FISHERMAN + f Lakq; g field_39284 FLETCHER + f Lakq; h field_39285 LEATHERWORKER + f Lakq; i field_39286 LIBRARIAN + f Lakq; j field_39287 MASON + f Lakq; k field_39288 SHEPHERD + f Lakq; l field_39289 TOOLSMITH + f Lakq; m field_39290 WEAPONSMITH + f Lakq; n field_39291 HOME + f Lakq; o field_39292 MEETING + f Lakq; p field_39293 BEEHIVE + f Lakq; q field_39294 BEE_NEST + f Lakq; r field_39295 NETHER_PORTAL + f Lakq; s field_39296 LODESTONE + f Lakq; t field_39297 LIGHTNING_ROD + f Ljava/util/Set; u field_39299 BEDS + f Ljava/util/Set; v field_39300 CAULDRONS + f Ljava/util/Map; w field_39301 TYPE_BY_STATE + m (Ldfy;)Ljava/util/Set; a method_43988 getBlockStates + m (Ldtc;)Ljava/util/Optional; a method_43989 forState + m (Ljava/lang/String;)Lakq; a method_43994 createKey + m (Ljm;Ldtc;)V a method_43991 method_43991 + m (Ljm;Ljava/util/Set;)V a method_43990 registerBlockStates + m (Ljz;)Lcev; a method_43992 bootstrap + m (Ljz;Lakq;Ljava/util/Set;II)Lcev; a method_43993 register + m (Ldfy;)Ljava/util/stream/Stream; b method_43995 method_43995 + m (Ldtc;)Z b method_46397 hasPoi + m (Ldfy;)Ljava/util/stream/Stream; c method_43997 method_43997 + m (Ldtc;)Z c method_43996 method_43996 + m ()V + m ()V +c cex net/minecraft/class_6050 net/minecraft/world/entity/ai/village/poi/package-info +c cey net/minecraft/class_1421 net/minecraft/world/entity/ambient/AmbientCreature + m (Lbsx;Ldcw;)V +c cez net/minecraft/class_1420 net/minecraft/world/entity/ambient/Bat + f F b field_46966 FLAP_LENGTH_SECONDS + f F c field_46967 TICKS_PER_FLAP + f Lajw; cb field_6728 DATA_ID_FLAGS + f I cc field_30269 FLAG_RESTING + f Lcef; cd field_18100 BAT_RESTING_TARGETING + f Ljd; ce field_6729 targetPosition + f Lbsm; d field_46968 flyAnimationState + f Lbsm; e field_46969 restAnimationState + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20661 checkBatSpawnRules + m ()V gg method_54758 setupAnimationStates + m ()Lbuv$a; s method_26878 createAttributes + m ()Z t method_6450 isResting + m ()Z x method_6451 isHalloween + m (Z)V x method_6449 setResting + m (Lbsx;Ldcw;)V + m ()V +c cfa net/minecraft/class_6051 net/minecraft/world/entity/ambient/package-info +c cfb net/minecraft/class_1422 net/minecraft/world/entity/animal/AbstractFish + f Lajw; b field_6730 FROM_BUCKET + m ()Z gk method_6456 canRandomSwim + m ()Lavo; gl method_6457 getFlopSound + m ()Lbuv$a; s method_26879 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c cfb$a net/minecraft/class_1422$class_1423 net/minecraft/world/entity/animal/AbstractFish$FishMoveControl + f Lcfb; l field_6731 fish + m (Lcfb;)V +c cfb$b net/minecraft/class_1422$class_1424 net/minecraft/world/entity/animal/AbstractFish$FishSwimGoal + f Lcfb; i field_6732 fish + m (Lcfb;)V +c cfc net/minecraft/class_1427 net/minecraft/world/entity/animal/AbstractGolem + m (Lbsx;Ldcw;)V +c cfd net/minecraft/class_1425 net/minecraft/world/entity/animal/AbstractSchoolingFish + f Lcfd; b field_6734 leader + f I c field_6733 schoolSize + m (Lcfd;)Lcfd; a method_6461 startFollowing + m (Ljava/util/stream/Stream;)V a method_6468 addFollowers + m (Lcfd;)V b method_6458 method_6458 + m (Lcfd;)Z c method_6460 method_6460 + m ()I gm method_6465 getMaxSchoolSize + m ()Z gn method_6470 isFollower + m ()V go method_6466 stopFollowing + m ()Z gp method_6469 canBeFollowed + m ()Z gq method_6467 hasFollowers + m ()Z gr method_6464 inRangeOfLeader + m ()V gs method_6463 pathToLeader + m ()V gt method_6462 addFollower + m ()V gu method_6459 removeFollower + m (Lbsx;Ldcw;)V +c cfd$a net/minecraft/class_1425$class_1426 net/minecraft/world/entity/animal/AbstractSchoolingFish$SchoolSpawnGroupData + f Lcfd; a field_6735 leader + m (Lcfd;)V +c cfe net/minecraft/class_1429 net/minecraft/world/entity/animal/Animal + f I cc field_6745 inLove + f Ljava/util/UUID; cd field_6744 loveCause + f I cf field_30270 PARENT_AGE_AFTER_BREEDING + m (Laqu;Lcfe;)V a method_24650 spawnChildFromBreeding + m (Laqu;Lcfe;Lbsl;)V a method_49794 finalizeSpawnChildFromBreeding + m (Lcfe;)Z a method_6474 canMate + m (Lcfe;Lbsl;Laqv;)V a method_49795 method_49795 + m (Lcmx;Lbqq;Lcuq;)V a method_6475 usePlayerItem + m (Ldbz;Ljd;)Z a method_39448 isBrightEnoughToSpawn + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20663 checkAnimalSpawnRules + m (Lcfe;)Ljava/util/Optional; b method_49796 method_49796 + m (Lcmx;)V f method_6480 setInLove + m ()Z gp method_6482 canFallInLove + m ()I gq method_29270 getInLoveTime + m ()Laqv; gr method_6478 getLoveCause + m ()Z gs method_6479 isInLove + m ()V gt method_6477 resetLove + m (Lcuq;)Z o method_6481 isFood + m (I)V s method_6476 setInLoveTime + m (Lbsx;Ldcw;)V +c cff net/minecraft/class_4466 net/minecraft/world/entity/animal/Bee + f I cA field_30293 PATHFIND_TO_HIVE_WHEN_CLOSER_THAN + f I cB field_30294 HIVE_SEARCH_DISTANCE + f Lbqc; cD field_25363 PERSISTENT_ANGER_TIME + f Ljava/util/UUID; cE field_25364 persistentAngerTarget + f F cF field_20356 rollAmount + f F cG field_20357 rollAmountO + f I cH field_20358 timeSinceSting + f I cI field_20359 ticksWithoutNectarSinceExitingHive + f I cJ field_20360 stayOutOfHiveCountdown + f I cK field_20361 numCropsGrownSincePollination + f I cL field_30274 COOLDOWN_BEFORE_LOCATING_NEW_HIVE + f I cM field_21643 remainingCooldownBeforeLocatingNewHive + f I cN field_30275 COOLDOWN_BEFORE_LOCATING_NEW_FLOWER + f I cO field_21644 remainingCooldownBeforeLocatingNewFlower + f Ljd; cP field_20362 savedFlowerPos + f Ljd; cQ field_20363 hivePos + f Lcff$k; cR field_21079 beePollinateGoal + f Lcff$e; cS field_21645 goToHiveGoal + f Lcff$f; cT field_21646 goToKnownFlowerGoal + f I cU field_21509 underWaterTicks + f F cc field_30271 FLAP_DEGREES_PER_TICK + f I cd field_28638 TICKS_PER_FLAP + f Ljava/lang/String; ce field_30272 TAG_CROPS_GROWN_SINCE_POLLINATION + f Ljava/lang/String; cg field_30273 TAG_CANNOT_ENTER_HIVE_TICKS + f Ljava/lang/String; ch field_30276 TAG_TICKS_SINCE_POLLINATION + f Ljava/lang/String; ci field_30277 TAG_HAS_STUNG + f Ljava/lang/String; cj field_30278 TAG_HAS_NECTAR + f Ljava/lang/String; ck field_30279 TAG_FLOWER_POS + f Ljava/lang/String; cl field_30280 TAG_HIVE_POS + f Lajw; cm field_20353 DATA_FLAGS_ID + f Lajw; cn field_20354 DATA_REMAINING_ANGER_TIME + f I co field_30281 FLAG_ROLL + f I cp field_30282 FLAG_HAS_STUNG + f I cq field_30283 FLAG_HAS_NECTAR + f I cr field_30284 STING_DEATH_COUNTDOWN + f I cs field_30285 TICKS_BEFORE_GOING_TO_KNOWN_FLOWER + f I ct field_30286 TICKS_WITHOUT_NECTAR_BEFORE_GOING_HOME + f I cu field_30287 MIN_ATTACK_DIST + f I cv field_30288 MAX_CROPS_GROWABLE + f I cw field_30289 POISON_SECONDS_NORMAL + f I cx field_30290 POISON_SECONDS_HARD + f I cy field_30291 TOO_FAR_DISTANCE + f I cz field_30292 HIVE_CLOSE_ENOUGH_DISTANCE + m (Lcff;)Layw; A method_21801 method_21801 + m (Lcff;)Layw; B method_21803 method_21803 + m (Lcff;)Layw; C method_36630 method_36630 + m (F)F H method_21811 getRollAmount + m (Lcff;)Lcda; a method_36631 method_36631 + m (Ldcw;DDDDDLlk;)V a method_21769 spawnFluidParticle + m (Laqu;Lbsl;)Lcff; b method_21771 getBreedOffspring + m (Lcff;)Layw; b method_21765 method_21765 + m (Ljd;I)Z b method_23979 closerThan + m (Lcff;)Lcda; c method_36632 method_36632 + m (IZ)V d method_21775 setFlag + m (Lcff;)Lcda; d method_36633 method_36633 + m (Lcff;)Lcda; e method_36634 method_36634 + m (Lcff;)Lcda; f method_23989 method_23989 + m (Lcff;)Lcda; g method_23991 method_23991 + m ()Z gA method_21789 wantsToEnterHive + m ()V gB method_21790 updateRollAmount + m ()Z gC method_23984 isHiveNearFire + m ()I gD method_21792 getCropsGrownSincePollination + m ()V gE method_21783 resetNumCropsGrownSincePollination + m ()V gF method_21793 incrementNumCropsGrownSincePollination + m ()Z gG method_21794 isHiveValid + m ()Z gH method_21786 isRolling + m ()Ljava/util/List; gk method_35162 getBlacklistedHives + m ()V gl method_21780 resetTicksWithoutNectarSinceExitingHive + m ()Z gm method_21791 hasHive + m ()Ljd; gn method_23884 getHivePos + m ()Lcan; go method_35163 getGoalSelector + m ()Z gu method_21784 hasNectar + m ()Z gv method_21785 hasStung + m ()Lbuv$a; gw method_26880 createAttributes + m ()V gy method_21788 dropOffNectar + m ()Z gz method_23983 isTiredOfLookingForNectar + m (Lcff;)Lcda; h method_36635 method_36635 + m (Ljd;)V h method_21797 setSavedFlowerPos + m (Lcff;)Lcda; i method_23994 method_23994 + m (Ljd;)V i method_57301 setHivePos + m (Lcff;)Lcda; j method_23976 method_23976 + m (Ljd;)V j method_23987 pathfindRandomlyTowards + m (Lcff;)Lcda; k method_23999 method_23999 + m (Ljd;)Z k method_23988 doesHiveHaveSpace + m (Lcff;)Lcda; l method_23980 method_23980 + m (Ljd;)Z l method_23990 isTooFarAway + m (Lcff;)Lcda; m method_23982 method_23982 + m (Ljd;)Z m method_23992 isFlowerValid + m (Lcff;)Lcda; n method_23985 method_23985 + m (Lcuq;)Z n method_58363 method_58363 + m (Lcff;)Lcda; o method_24000 method_24000 + m (Lcff;)Lcda; p method_24001 method_24001 + m (Lcff;)Lcda; q method_24002 method_24002 + m (Lcff;)Lcda; r method_24003 method_24003 + m ()Ljd; s method_21778 getSavedFlowerPos + m (Lcff;)Lcda; s method_23967 method_23967 + m ()Z t method_21779 hasSavedFlowerPos + m (I)V t method_21807 setStayOutOfHiveCountdown + m (Lcff;)Layw; t method_21795 method_21795 + m (I)Z u method_21812 getFlag + m (Lcff;)Layw; u method_21796 method_21796 + m (Lcff;)Lcda; v method_23993 method_23993 + m (Lcff;)Layw; w method_23739 method_23739 + m ()I x method_35161 getTravellingTicks + m (Lcff;)Lcda; x method_23995 method_23995 + m (Z)V x method_21805 setHasNectar + m (Lcff;)Layw; y method_21798 method_21798 + m (Z)V y method_21806 setHasStung + m (Lcff;)Layw; z method_23740 method_23740 + m (Z)V z method_21808 setRolling + m (Lbsx;Ldcw;)V + m ()V +c cff$1 net/minecraft/class_4466$1 net/minecraft/world/entity/animal/Bee$1 + f Lcff; p field_20364 field_20364 + m (Lcff;Lbtp;Ldcw;)V +c cff$a net/minecraft/class_4466$class_4467 net/minecraft/world/entity/animal/Bee$BaseBeeGoal + f Lcff; a field_20365 field_20365 + m ()Z h method_21814 canBeeUse + m ()Z i method_21815 canBeeContinueToUse + m (Lcff;)V +c cff$b net/minecraft/class_4466$class_4468 net/minecraft/world/entity/animal/Bee$BeeAttackGoal + f Lcff; b field_20366 field_20366 + m (Lcff;Lbtw;DZ)V +c cff$c net/minecraft/class_4466$class_4469 net/minecraft/world/entity/animal/Bee$BeeBecomeAngryTargetGoal + m ()Z i method_21816 beeCanTarget + m (Lcff;)V +c cff$d net/minecraft/class_4466$class_4470 net/minecraft/world/entity/animal/Bee$BeeEnterHiveGoal + f Lcff; b field_20367 field_20367 + m (Lcff;)V +c cff$e net/minecraft/class_4466$class_4472 net/minecraft/world/entity/animal/Bee$BeeGoToHiveGoal + f I b field_30295 MAX_TRAVELLING_TICKS + f Lcff; c field_20371 field_20371 + f I d field_21647 travellingTicks + f I e field_30296 MAX_BLACKLISTED_TARGETS + f Ljava/util/List; f field_21648 blacklistedTargets + f Leps; g field_21649 lastPath + f I h field_30297 TICKS_BEFORE_HIVE_DROP + f I i field_23133 ticksStuck + m (Ljd;)Z a method_24006 pathfindDirectlyTowards + m (Ljd;)Z b method_24007 isTargetBlacklisted + m (Ljd;)V c method_24009 blacklistTarget + m (Ljd;)Z d method_24010 hasReachedTarget + m ()V k method_24011 clearBlacklist + m ()V l method_24012 dropAndBlacklistHive + m ()V m method_23885 dropHive + m (Lcff;)V +c cff$f net/minecraft/class_4466$class_4473 net/minecraft/world/entity/animal/Bee$BeeGoToKnownFlowerGoal + f Lcff; b field_20372 field_20372 + f I c field_30298 MAX_TRAVELLING_TICKS + f I d field_21650 travellingTicks + m ()Z k method_24013 wantsToGoToKnownFlower + m (Lcff;)V +c cff$g net/minecraft/class_4466$class_4474 net/minecraft/world/entity/animal/Bee$BeeGrowCropGoal + f I b field_30299 GROW_CHANCE + f Lcff; c field_20373 field_20373 + m (Lcff;)V +c cff$h net/minecraft/class_4466$class_4475 net/minecraft/world/entity/animal/Bee$BeeHurtByOtherGoal + f Lcff; a field_20374 field_20374 + m (Lcff;Lcff;)V +c cff$i net/minecraft/class_4466$class_4476 net/minecraft/world/entity/animal/Bee$BeeLocateHiveGoal + f Lcff; b field_20375 field_20375 + m (Ljd;Ljd;)D a method_24015 method_24015 + m (Ljm;)Z a method_23743 method_23743 + m ()Ljava/util/List; k method_23742 findNearbyHivesWithSpace + m (Lcff;)V +c cff$j net/minecraft/class_4466$class_4477 net/minecraft/world/entity/animal/Bee$BeeLookControl + f Lcff; h field_20376 field_20376 + m (Lcff;Lbtp;)V +c cff$k net/minecraft/class_4466$class_4478 net/minecraft/world/entity/animal/Bee$BeePollinateGoal + f Lcff; b field_20377 field_20377 + f I c field_30300 MIN_POLLINATION_TICKS + f I d field_30301 MIN_FIND_FLOWER_RETRY_COOLDOWN + f I e field_30302 MAX_FIND_FLOWER_RETRY_COOLDOWN + f Ljava/util/function/Predicate; f field_20617 VALID_POLLINATION_BLOCKS + f D g field_30303 ARRIVAL_THRESHOLD + f I h field_30304 POSITION_CHANGE_CHANCE + f F i field_30305 SPEED_MODIFIER + f F j field_30306 HOVER_HEIGHT_WITHIN_FLOWER + f F k field_30307 HOVER_POS_OFFSET + f I l field_20378 successfulPollinatingTicks + f I m field_20379 lastSoundPlayedTick + f Z n field_21080 pollinating + f Lexc; o field_21511 hoverPos + f I p field_21651 pollinatingTicks + f I q field_30308 MAX_POLLINATING_TICKS + m (Ldtc;)Z a method_21819 method_21819 + m (Ljava/util/function/Predicate;D)Ljava/util/Optional; a method_22326 findNearestBlock + m ()Z k method_21820 hasPollinatedLongEnough + m ()Z l method_23346 isPollinating + m ()V m method_23748 stopPollinating + m ()V n method_23749 setWantedPos + m ()F o method_23750 getOffset + m ()Ljava/util/Optional; p method_21821 findNearbyFlower + m (Lcff;)V +c cff$l net/minecraft/class_4466$class_4479 net/minecraft/world/entity/animal/Bee$BeeWanderGoal + f Lcff; a field_20380 field_20380 + f I b field_30309 WANDER_THRESHOLD + m ()Lexc; h method_21822 findPos + m (Lcff;)V +c cfg net/minecraft/class_5761 net/minecraft/world/entity/animal/Bucketable + m (Lbtp;Lcuq;)V a method_35167 saveDefaultDataToBucketTag + m (Lbtp;Lub;)V a method_35168 loadDefaultDataFromBucketTag + m (Lcmx;Lbqq;Lbtn;)Ljava/util/Optional; a method_35169 bucketMobPickup + m ()Lcuq; b method_6452 getBucketItemStack + m (Lbtp;Lub;)V b method_57302 method_57302 + m (Lub;)V h method_35170 loadFromBucketTag + m (Lcuq;)V n method_6455 saveToBucketTag + m ()Z t method_6453 fromBucket + m ()Lavo; x method_35171 getPickupSound + m (Z)V x method_6454 setFromBucket +c cfh net/minecraft/class_1451 net/minecraft/world/entity/animal/Cat + f D cg field_30310 TEMPT_SPEED_MOD + f D ch field_30311 WALK_SPEED_MOD + f D ci field_30312 SPRINT_SPEED_MOD + f Lajw; cj field_6811 DATA_VARIANT_ID + f Lajw; ck field_16284 IS_LYING + f Lajw; cl field_16292 RELAX_STATE_ONE + f Lajw; cm field_16285 DATA_COLLAR_COLOR + f Lakq; cn field_49979 DEFAULT_VARIANT + f Lcfh$a; co field_6808 avoidPlayersGoal + f Lcbu; cp field_6810 temptGoal + f F cq field_16290 lieDownAmount + f F cr field_16291 lieDownAmountO + f F cs field_16288 lieDownAmountTail + f F ct field_16289 lieDownAmountOTail + f F cu field_16286 relaxStateOneAmount + f F cv field_16287 relaxStateOneAmountO + m (Z)V A method_16088 setLying + m (Z)V B method_16087 setRelaxStateOne + m (F)F H method_16082 getLieDownAmount + m (F)F I method_16091 getLieDownAmountTail + m (F)F J method_16095 getRelaxStateOneAmount + m (Lakr;)Lakq; a method_58364 method_58364 + m (Lcti;)V a method_16094 setCollarColor + m (Laqu;Lbsl;)Lcfh; b method_6573 getBreedOffspring + m (Lcmx;)V g method_58168 tryToTame + m ()V gA method_6175 reassessTameGoals + m ()Z gB method_16093 isRelaxStateOne + m ()V gC method_16085 handleLieDown + m ()V gD method_16090 updateLieDownAmount + m ()V gE method_16084 updateRelaxStateOneAmount + m ()Lakr; gu method_16092 getTextureId + m ()Ljm; gv method_47843 getVariant + m ()Z gw method_16086 isLying + m ()Lcti; gx method_16096 getCollarColor + m ()V gy method_16089 hiss + m ()Lbuv$a; gz method_26881 createAttributes + m (Ljm;)V i method_47842 setVariant + m (Lcuq;)Z n method_58365 method_58365 + m (Lbsx;Ldcw;)V + m ()V +c cfh$a net/minecraft/class_1451$class_3698 net/minecraft/world/entity/animal/Cat$CatAvoidEntityGoal + f Lcfh; i field_16293 cat + m (Lcfh;Ljava/lang/Class;FDD)V +c cfh$b net/minecraft/class_1451$class_3699 net/minecraft/world/entity/animal/Cat$CatRelaxOnOwnerGoal + f Lcfh; a field_16297 cat + f Lcmx; b field_16295 ownerPlayer + f Ljd; c field_16294 goalPos + f I d field_16296 onBedTicks + m (Ljd;)Ljd; a method_27800 method_27800 + m (Ljd;Lji;)Ljd; a method_27801 method_27801 + m ()Z h method_16098 spaceIsOccupied + m ()V i method_16097 giveMorningGift + m (Lcfh;)V +c cfh$c net/minecraft/class_1451$class_3700 net/minecraft/world/entity/animal/Cat$CatTemptGoal + f Lcmx; c field_16298 selectedPlayer + f Lcfh; d field_17948 cat + m (Lcfh;DLjava/util/function/Predicate;Z)V +c cfi net/minecraft/class_7375 net/minecraft/world/entity/animal/CatVariant + f Lyx; a field_51941 STREAM_CODEC + f Lakq; b field_38709 TABBY + f Lakq; c field_38710 BLACK + f Lakq; d field_38711 RED + f Lakq; e field_38712 SIAMESE + f Lakq; f field_38713 BRITISH_SHORTHAIR + f Lakq; g field_38714 CALICO + f Lakq; h field_38715 PERSIAN + f Lakq; i field_38716 RAGDOLL + f Lakq; j field_38717 WHITE + f Lakq; k field_38718 JELLIE + f Lakq; l field_38719 ALL_BLACK + f Lakr; m comp_706 texture + m ()Lakr; a comp_706 texture + m (Ljava/lang/String;)Lakq; a method_46647 createKey + m (Ljz;)Lcfi; a method_46646 bootstrap + m (Ljz;Lakq;Ljava/lang/String;)Lcfi; a method_43090 register + m (Lakr;)V + m ()V +c cfj net/minecraft/class_1428 net/minecraft/world/entity/animal/Chicken + f F cc field_6741 flap + f F cd field_6743 flapSpeed + f F ce field_6738 oFlapSpeed + f F cg field_6736 oFlap + f F ch field_6737 flapping + f I ci field_6739 eggTime + f Z cj field_6740 isChickenJockey + f Lbsu; ck field_47770 BABY_DIMENSIONS + f F cl field_28639 nextFlap + m (Laqu;Lbsl;)Lcfj; b method_6471 getBreedOffspring + m (Lcuq;)Z n method_58366 method_58366 + m ()Lbuv$a; s method_26882 createAttributes + m ()Z t method_6472 isChickenJockey + m (Z)V x method_6473 setChickenJockey + m (Lbsx;Ldcw;)V + m ()V +c cfk net/minecraft/class_1431 net/minecraft/world/entity/animal/Cod + m (Lbsx;Ldcw;)V +c cfl net/minecraft/class_1430 net/minecraft/world/entity/animal/Cow + f Lbsu; cc field_47771 BABY_DIMENSIONS + m (Laqu;Lbsl;)Lcfl; b method_6483 getBreedOffspring + m (Lcuq;)Z n method_58367 method_58367 + m ()Lbuv$a; s method_26883 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c cfm net/minecraft/class_1433 net/minecraft/world/entity/animal/Dolphin + f I b field_30326 TOTAL_AIR_SUPPLY + f Ljava/util/function/Predicate; c field_6748 ALLOWED_ITEMS + f Lajw; cc field_6749 MOISTNESS_LEVEL + f Lcef; cd field_18101 SWIM_WITH_PLAYER_TARGETING + f I ce field_30327 TOTAL_MOISTNESS_LEVEL + f Lajw; d field_6747 TREASURE_POS + f Lajw; e field_6750 GOT_FISH + m (Lcfm;)Layw; a method_18055 method_18055 + m (Llk;)V a method_6492 addParticlesAroundSelf + m (Lcfm;)Layw; b method_6488 method_6488 + m (I)V c method_6489 setMoisntessLevel + m (Lcfm;)Layw; c method_18054 method_18054 + m (Lcjh;)Z c method_6485 method_6485 + m ()Lbuv$a; gk method_26884 createAttributes + m ()Z gl method_6484 closeToNextPos + m (Ljd;)V h method_6493 setTreasurePos + m ()Ljd; s method_6494 getTreasurePos + m ()Z t method_6487 gotFish + m ()I x method_6491 getMoistnessLevel + m (Z)V x method_6486 setGotFish + m (Lbsx;Ldcw;)V + m ()V +c cfm$a net/minecraft/class_1433$class_1435 net/minecraft/world/entity/animal/Dolphin$DolphinSwimToTreasureGoal + f Lcfm; a field_6752 dolphin + f Z b field_6753 stuck + m (Lcfm;)V +c cfm$b net/minecraft/class_1433$class_1436 net/minecraft/world/entity/animal/Dolphin$DolphinSwimWithPlayerGoal + f Lcfm; a field_6755 dolphin + f D b field_6754 speedModifier + f Lcmx; c field_6756 player + m (Lcfm;D)V +c cfm$c net/minecraft/class_1433$class_1437 net/minecraft/world/entity/animal/Dolphin$PlayWithItemsGoal + f Lcfm; a field_6757 field_6757 + f I b field_6758 cooldown + m (Lcuq;)V a method_18056 drop + m (Lcfm;)V +c cfn net/minecraft/class_1432 net/minecraft/world/entity/animal/FlyingAnimal + m ()Z gx method_6581 isFlying +c cfo net/minecraft/class_4019 net/minecraft/world/entity/animal/Fox + f F cA field_17963 crouchAmountO + f I cB field_17964 ticksSinceEaten + f I cc field_30328 FLAG_CROUCHING + f I cd field_30329 FLAG_INTERESTED + f I ce field_30330 FLAG_POUNCING + f Lajw; cg field_17949 DATA_TYPE_ID + f Lajw; ch field_17950 DATA_FLAGS_ID + f I ci field_30331 FLAG_SITTING + f I cj field_30332 FLAG_SLEEPING + f I ck field_30333 FLAG_FACEPLANTED + f I cl field_30334 FLAG_DEFENDING + f Lajw; cm field_17951 DATA_TRUSTED_ID_0 + f Lajw; cn field_17952 DATA_TRUSTED_ID_1 + f Ljava/util/function/Predicate; co field_17953 ALLOWED_ITEMS + f Ljava/util/function/Predicate; cp field_17954 TRUSTED_TARGET_SELECTOR + f Ljava/util/function/Predicate; cq field_17955 STALKABLE_PREY + f Ljava/util/function/Predicate; cr field_17956 AVOID_PLAYERS + f I cs field_30335 MIN_TICKS_BEFORE_EAT + f Lbsu; ct field_47772 BABY_DIMENSIONS + f Lcam; cu field_17957 landTargetGoal + f Lcam; cv field_17958 turtleEggTargetGoal + f Lcam; cw field_17959 fishTargetGoal + f F cx field_17960 interestedAngle + f F cy field_17961 interestedAngleO + f F cz field_17962 crouchAmount + m (Z)V A method_18299 setIsInterested + m (Z)V B method_18295 setFaceplanted + m (Z)V C method_18301 setDefending + m (Z)V D method_18302 setSleeping + m (F)F H method_18298 getHeadRollAngle + m (F)F I method_18300 getCrouchAmount + m (Lcfo$v;)V a method_47844 setVariant + m (Lcfo;)Z a method_36636 method_36636 + m (Lcfo;Lbtn;)Z a method_18257 isPathClear + m (Laqu;Lbsl;)Lcfo; b method_18260 getBreedOffspring + m (Lcfo;)Layw; b method_18287 method_18287 + m (Ljava/util/UUID;)V b method_18266 addTrustedUUID + m (Lbsr;)Z c method_18253 method_18253 + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_39449 checkFoxSpawnRules + m (Lcfo;)Layw; c method_18288 method_18288 + m (Lcjh;)Z c method_18265 method_18265 + m (Ljava/util/UUID;)Z c method_18428 trusts + m (IZ)V d method_18269 setFlag + m (Lbsr;)Z d method_18261 method_18261 + m (Lcfo;)Layw; d method_18290 method_18290 + m (Lbsr;)Z e method_18267 method_18267 + m ()Z gk method_18273 isFaceplanted + m ()Z gl method_18274 isPouncing + m ()Z gm method_35172 isJumping + m ()Z gn method_18275 isFullyCrouched + m ()Z go method_18277 isInterested + m ()V gu method_18280 setTargetGoals + m ()Ljava/util/List; gv method_18281 getTrustedUUIDs + m ()Z gw method_18282 isDefending + m ()V gx method_18283 wakeUp + m ()V gy method_18284 clearStates + m ()Z gz method_18285 canMove + m (Lbtn;)Z j method_18429 method_18429 + m (Lbtn;)Z k method_24347 method_24347 + m (Lbtn;)Z l method_20451 method_20451 + m (Lbtn;)Z m method_18431 method_18431 + m (Lbtn;)Z n method_18254 method_18254 + m (Lcuq;)Z n method_18430 canEat + m (Lbtn;)Z o method_18262 method_18262 + m (Lcuq;)V p method_18289 spitOutItem + m (Lcuq;)V q method_18291 dropItemStack + m ()Lbuv$a; s method_26885 createAttributes + m ()Lcfo$v; t method_47845 getVariant + m (I)Z t method_18293 getFlag + m ()Z x method_18272 isSitting + m (Z)V x method_18294 setSitting + m (Z)V y method_18296 setIsPouncing + m (Z)V z method_18297 setIsCrouching + m (Lbsx;Ldcw;)V + m ()V +c cfo$a net/minecraft/class_4019$class_4020 net/minecraft/world/entity/animal/Fox$DefendTrustedTargetGoal + f Lcfo; i field_17965 field_17965 + f Lbtn; j field_17966 trustedLastHurtBy + f Lbtn; k field_17967 trustedLastHurt + f I l field_17968 timestamp + m (Lcfo;Ljava/lang/Class;ZZLjava/util/function/Predicate;)V +c cfo$b net/minecraft/class_4019$class_4021 net/minecraft/world/entity/animal/Fox$FaceplantGoal + f I a field_17969 countdown + f Lcfo; b field_17970 field_17970 + m (Lcfo;)V +c cfo$c net/minecraft/class_4019$class_4022 net/minecraft/world/entity/animal/Fox$FoxAlertableEntitiesSelector + f Lcfo; a field_17971 field_17971 + m (Lbtn;)Z a method_18303 test + m (Lcfo;)V +c cfo$d net/minecraft/class_4019$class_4023 net/minecraft/world/entity/animal/Fox$FoxBehaviorGoal + f Lcfo; a field_17972 field_17972 + f Lcef; b field_18102 alertableTargeting + m ()Z h method_18305 hasShelter + m ()Z i method_18306 alertable + m (Lcfo;)V +c cfo$e net/minecraft/class_4019$class_4024 net/minecraft/world/entity/animal/Fox$FoxBreedGoal + m (Lcfo;D)V +c cfo$f net/minecraft/class_4019$class_4025 net/minecraft/world/entity/animal/Fox$FoxEatBerriesGoal + f I g field_17974 ticksWaited + f Lcfo; h field_17975 field_17975 + f I i field_30336 WAIT_TICKS + m (Ldtc;)V a method_33586 pickGlowBerry + m (Ldtc;)V b method_33587 pickSweetBerries + m ()V o method_18307 onReachedTarget + m (Lcfo;DII)V +c cfo$g net/minecraft/class_4019$class_4026 net/minecraft/world/entity/animal/Fox$FoxFloatGoal + f Lcfo; a field_17976 field_17976 + m (Lcfo;)V +c cfo$h net/minecraft/class_4019$class_4052 net/minecraft/world/entity/animal/Fox$FoxFollowParentGoal + f Lcfo; d field_18104 fox + m (Lcfo;Lcfo;D)V +c cfo$i net/minecraft/class_4019$class_4027 net/minecraft/world/entity/animal/Fox$FoxGroupData + f Lcfo$v; a field_17977 type + m (Lcfo$v;)V +c cfo$j net/minecraft/class_4019$class_4292 net/minecraft/world/entity/animal/Fox$FoxLookAtPlayerGoal + f Lcfo; h field_19261 field_19261 + m (Lcfo;Lbtp;Ljava/lang/Class;F)V +c cfo$k net/minecraft/class_4019$class_4028 net/minecraft/world/entity/animal/Fox$FoxLookControl + f Lcfo; h field_17979 field_17979 + m (Lcfo;)V +c cfo$l net/minecraft/class_4019$class_4029 net/minecraft/world/entity/animal/Fox$FoxMeleeAttackGoal + f Lcfo; b field_17980 field_17980 + m (Lcfo;DZ)V +c cfo$m net/minecraft/class_4019$class_4030 net/minecraft/world/entity/animal/Fox$FoxMoveControl + f Lcfo; l field_17981 field_17981 + m (Lcfo;)V +c cfo$n net/minecraft/class_4019$class_4032 net/minecraft/world/entity/animal/Fox$FoxPanicGoal + f Lcfo; a field_17983 field_17983 + m (Lcfo;D)V +c cfo$o net/minecraft/class_4019$class_4033 net/minecraft/world/entity/animal/Fox$FoxPounceGoal + f Lcfo; a field_17984 field_17984 + m (Lcfo;)V +c cfo$p net/minecraft/class_4019$class_4034 net/minecraft/world/entity/animal/Fox$FoxSearchForItemsGoal + f Lcfo; a field_17985 field_17985 + m (Lcfo;)V +c cfo$q net/minecraft/class_4019$class_4031 net/minecraft/world/entity/animal/Fox$FoxStrollThroughVillageGoal + f Lcfo; a field_17982 field_17982 + m ()Z h method_18308 canFoxMove + m (Lcfo;II)V +c cfo$r net/minecraft/class_4019$class_4035 net/minecraft/world/entity/animal/Fox$PerchAndSearchGoal + f Lcfo; b field_17986 field_17986 + f D c field_17987 relX + f D d field_17988 relZ + f I e field_17989 lookTime + f I f field_17990 looksRemaining + m ()V k method_18309 resetLook + m (Lcfo;)V +c cfo$s net/minecraft/class_4019$class_4036 net/minecraft/world/entity/animal/Fox$SeekShelterGoal + f Lcfo; b field_17991 field_17991 + f I c field_17992 interval + m (Lcfo;D)V +c cfo$t net/minecraft/class_4019$class_4037 net/minecraft/world/entity/animal/Fox$SleepGoal + f Lcfo; b field_17993 field_17993 + f I c field_30337 WAIT_TIME_BEFORE_SLEEP + f I d field_17994 countdown + m ()Z k method_18432 canSleep + m (Lcfo;)V + m ()V +c cfo$u net/minecraft/class_4019$class_4038 net/minecraft/world/entity/animal/Fox$StalkPreyGoal + f Lcfo; a field_17995 field_17995 + m (Lcfo;)V +c cfo$v net/minecraft/class_4019$class_4039 net/minecraft/world/entity/animal/Fox$Type + f Lcfo$v; a field_17996 RED + f Lcfo$v; b field_17997 SNOW + f Lazk$a; c field_41548 CODEC + f Ljava/util/function/IntFunction; d field_17998 BY_ID + f I e field_18000 id + f Ljava/lang/String; f field_18001 name + f [Lcfo$v; g field_18003 $VALUES + m ()I a method_18317 getId + m (I)Lcfo$v; a method_18311 byId + m (Ljava/lang/String;)Lcfo$v; a method_18314 byName + m (Ljm;)Lcfo$v; a method_18313 byBiome + m ()[Lcfo$v; b method_36637 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c cfp net/minecraft/class_7106 net/minecraft/world/entity/animal/FrogVariant + f Lyx; a field_51942 STREAM_CODEC + f Lakq; b field_37462 TEMPERATE + f Lakq; c field_37463 WARM + f Lakq; d field_37464 COLD + f Lakr; e comp_707 texture + m ()Lakr; a comp_707 texture + m (Ljava/lang/String;)Lakq; a method_58368 createKey + m (Ljz;)Lcfp; a method_58369 bootstrap + m (Ljz;Lakq;Ljava/lang/String;)Lcfp; a method_43091 register + m (Lakr;)V + m ()V +c cfq net/minecraft/class_1439 net/minecraft/world/entity/animal/IronGolem + f Lajw; c field_6763 DATA_FLAGS_ID + f I cc field_6759 offerFlowerTick + f Lbqc; cd field_25365 PERSISTENT_ANGER_TIME + f I ce field_25366 remainingPersistentAngerTime + f Ljava/util/UUID; cf field_25367 persistentAngerTarget + f I d field_30338 IRON_INGOT_HEAL_AMOUNT + f I e field_6762 attackAnimationTick + m ()I gk method_6502 getOfferFlowerTick + m ()Z gl method_6496 isPlayerCreated + m ()F gm method_22328 getAttackDamage + m (Lbtn;)Z j method_6498 method_6498 + m ()Lbuv$a; s method_26886 createAttributes + m ()Lbsp$a; t method_23347 getCrackiness + m ()I x method_6501 getAttackAnimationTick + m (Z)V x method_6497 offerFlower + m (Z)V y method_6499 setPlayerCreated + m (Lbsx;Ldcw;)V + m ()V +c cfr net/minecraft/class_1438 net/minecraft/world/entity/animal/MushroomCow + f Lajw; cc field_18105 DATA_TYPE + f I cd field_30339 MUTATE_CHANCE + f Ljava/lang/String; ce field_45751 TAG_STEW_EFFECTS + f Lcxw; cg field_45752 stewEffects + f Ljava/util/UUID; ch field_18108 lastLightningBoltUUID + m (Lcfr$a;)V a method_47846 setVariant + m (Lcfr;)Lcfr$a; a method_18434 getOffspringType + m (Lcxw;)V a method_53155 method_53155 + m (Lub;Luy;)V a method_53154 method_53154 + m (Laqu;Lbsl;)Lcfr; c method_6495 getBreedOffspring + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20665 checkMushroomSpawnRules + m (Lcuq;)Ljava/util/Optional; n method_18436 getEffectsFromItemStack + m ()Lcfr$a; t method_47847 getVariant + m (Lbsx;Ldcw;)V + m ()V +c cfr$a net/minecraft/class_1438$class_4053 net/minecraft/world/entity/animal/MushroomCow$MushroomType + f Lcfr$a; a field_18109 RED + f Lcfr$a; b field_18110 BROWN + f Lazk$a; c field_41549 CODEC + f Ljava/lang/String; d field_18111 type + f Ldtc; e field_18112 blockState + f [Lcfr$a; f field_18113 $VALUES + m ()Ldtc; a method_18437 getBlockState + m (Ljava/lang/String;)Lcfr$a; a method_18441 byType + m ()[Lcfr$a; b method_36639 $values + m (Ljava/lang/String;ILjava/lang/String;Ldtc;)V + m ()V +c cfs net/minecraft/class_3701 net/minecraft/world/entity/animal/Ocelot + f D cc field_30340 CROUCH_SPEED_MOD + f D cd field_30341 WALK_SPEED_MOD + f D ce field_30342 SPRINT_SPEED_MOD + f Lajw; cg field_16301 DATA_TRUSTING + f Lcfs$a; ch field_16300 ocelotAvoidPlayersGoal + f Lcfs$b; ci field_16302 temptGoal + m (Laqu;Lbsl;)Lcfs; b method_16104 getBreedOffspring + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20666 checkOcelotSpawnRules + m (Lcuq;)Z n method_58370 method_58370 + m ()Lbuv$a; s method_26887 createAttributes + m ()V t method_16103 reassessTrustingGoals + m ()Z x method_16099 isTrusting + m (Z)V x method_16102 setTrusting + m (Z)V y method_16100 spawnTrustingParticles + m (Lbsx;Ldcw;)V + m ()V +c cfs$a net/minecraft/class_3701$class_3702 net/minecraft/world/entity/animal/Ocelot$OcelotAvoidEntityGoal + f Lcfs; i field_16303 ocelot + m (Lcfs;Ljava/lang/Class;FDD)V +c cfs$b net/minecraft/class_3701$class_3703 net/minecraft/world/entity/animal/Ocelot$OcelotTemptGoal + f Lcfs; c field_16304 ocelot + m (Lcfs;DLjava/util/function/Predicate;Z)V +c cft net/minecraft/class_1440 net/minecraft/world/entity/animal/Panda + f F cA field_6772 rollAmount + f F cB field_6773 rollAmountO + f Lcft$g; cD field_21804 lookAtPlayerGoal + f Ljava/util/function/Predicate; cE field_6765 PANDA_ITEMS + f I cc field_30343 TOTAL_ROLL_STEPS + f I cd field_6767 rollCounter + f Lajw; ce field_6764 UNHAPPY_COUNTER + f Lajw; cg field_6771 SNEEZE_COUNTER + f Lajw; ch field_6780 EAT_COUNTER + f Lajw; ci field_6766 MAIN_GENE_ID + f Lajw; cj field_6781 HIDDEN_GENE_ID + f Lajw; ck field_6768 DATA_ID_FLAGS + f Lcef; cl field_21803 BREED_TARGETING + f Lbsu; cm field_47773 BABY_DIMENSIONS + f I cn field_30344 FLAG_SNEEZE + f I co field_30345 FLAG_ROLL + f I cp field_30346 FLAG_SIT + f I cq field_30347 FLAG_ON_BACK + f I cr field_30348 EAT_TICK_INTERVAL + f I cs field_30349 TOTAL_UNHAPPY_TIME + f Z ct field_6769 gotBamboo + f Z cu field_6770 didBite + f Lexc; cv field_18277 rollDelta + f F cw field_6777 sitAmount + f F cx field_6779 sitAmountO + f F cy field_6774 onBackAmount + f F cz field_6775 onBackAmountO + m (Z)V A method_6546 sneeze + m (Z)V B method_6541 roll + m (F)F H method_6534 getSitAmount + m (F)F I method_6555 getLieOnBackAmount + m (F)F J method_6560 getRollAmount + m (Lcft$a;)V a method_6529 setMainGene + m (Lcft;)Layw; a method_36640 method_36640 + m (Lcft;Lcft;)V a method_6515 setGeneFromParents + m (Lcft$a;)V b method_6547 setHiddenGene + m (Lcft;)Layw; b method_24838 method_24838 + m (Lcft;)Layw; c method_6551 method_6551 + m (Lcjh;)Z c method_6504 method_6504 + m (IZ)V d method_6557 setFlag + m (Lcft;)Layw; d method_6556 method_6556 + m (Lcft;)Layw; e method_6559 method_6559 + m (Lcft;)Layw; f method_6507 method_6507 + m (Lcft;)Layw; g method_36641 method_36641 + m ()Z gA method_35173 isBrown + m ()Z gB method_6550 isWeak + m ()Z gC method_6524 isScared + m ()V gD method_6538 setAttributes + m ()Z gE method_18442 canPerformAction + m ()I gF method_6528 getEatCounter + m ()V gG method_6536 handleEating + m ()V gH method_6512 addEatingParticles + m ()V gI method_6544 updateSitAmount + m ()V gJ method_6503 updateOnBackAnimation + m ()V gK method_6523 updateRollAmount + m ()V gL method_6537 handleRoll + m ()V gM method_6548 afterSneeze + m ()Lcft$a; gN method_6519 getOneOfGenesRandomly + m ()V gO method_18057 tryToSit + m ()Z gk method_6514 isOnBack + m ()Z gl method_6527 isEating + m ()I gm method_6532 getSneezeCounter + m ()Lcft$a; gn method_6525 getMainGene + m ()Lcft$a; go method_6508 getHiddenGene + m ()Z gu method_6526 isRolling + m ()Lbuv$a; gv method_26888 createAttributes + m ()Lcft$a; gw method_6554 getVariant + m ()Z gx method_6549 isLazy + m ()Z gy method_6509 isWorried + m ()Z gz method_6522 isPlayful + m (Lcft;)Layw; h method_6542 method_6542 + m (Lcft;)Layw; i method_6511 method_6511 + m (Lcft;)Layw; j method_6531 method_6531 + m (Lcft;)Layw; k method_6506 method_6506 + m (Lcuq;)Z n method_16106 isFoodOrCake + m (Lcuq;)Z p method_58371 method_58371 + m ()I s method_6521 getUnhappyCounter + m ()Z t method_6545 isSneezing + m (I)V t method_6517 setUnhappyCounter + m (I)V u method_6539 setSneezeCounter + m (I)V v method_6558 setEatCounter + m (I)Z w method_6533 getFlag + m ()Z x method_6535 isSitting + m (Z)V x method_6513 sit + m (Z)V y method_6505 setOnBack + m (Z)V z method_6552 eat + m (Lbsx;Ldcw;)V + m ()V +c cft$a net/minecraft/class_1440$class_1443 net/minecraft/world/entity/animal/Panda$Gene + f Lcft$a; a field_6788 NORMAL + f Lcft$a; b field_6794 LAZY + f Lcft$a; c field_6795 WORRIED + f Lcft$a; d field_6791 PLAYFUL + f Lcft$a; e field_6792 BROWN + f Lcft$a; f field_6793 WEAK + f Lcft$a; g field_6789 AGGRESSIVE + f Lazk$a; h field_41673 CODEC + f Ljava/util/function/IntFunction; i field_6786 BY_ID + f I j field_30350 MAX_GENE + f I k field_6785 id + f Ljava/lang/String; l field_6797 name + f Z m field_6790 isRecessive + f [Lcft$a; n field_6796 $VALUES + m ()I a method_6564 getId + m (I)Lcft$a; a method_6566 byId + m (Layw;)Lcft$a; a method_17688 getRandom + m (Lcft$a;Lcft$a;)Lcft$a; a method_6569 getVariantFromGenes + m (Ljava/lang/String;)Lcft$a; a method_6567 byName + m ()Z b method_6568 isRecessive + m ()[Lcft$a; d method_36642 $values + m (Ljava/lang/String;IILjava/lang/String;Z)V + m ()V +c cft$b net/minecraft/class_1440$class_4054 net/minecraft/world/entity/animal/Panda$PandaAttackGoal + f Lcft; b field_18114 panda + m (Lcft;DZ)V +c cft$c net/minecraft/class_1440$class_1441 net/minecraft/world/entity/animal/Panda$PandaAvoidGoal + f Lcft; i field_6782 panda + m (Lcft;Ljava/lang/Class;FDD)V +c cft$d net/minecraft/class_1440$class_1442 net/minecraft/world/entity/animal/Panda$PandaBreedGoal + f Lcft; d field_6784 panda + f I e field_6783 unhappyCooldown + m ()Z h method_6561 canFindBamboo + m (Lcft;D)V +c cft$e net/minecraft/class_1440$class_1444 net/minecraft/world/entity/animal/Panda$PandaHurtByTargetGoal + f Lcft; a field_6798 panda + m (Lcft;[Ljava/lang/Class;)V +c cft$f net/minecraft/class_1440$class_1445 net/minecraft/world/entity/animal/Panda$PandaLieOnBackGoal + f Lcft; a field_6800 panda + f I b field_6799 cooldown + m (Lcft;)V +c cft$g net/minecraft/class_1440$class_4056 net/minecraft/world/entity/animal/Panda$PandaLookAtPlayerGoal + f Lcft; h field_18116 panda + m (Lbtn;)V a method_24217 setTarget + m (Lbtn;)Z b method_31545 method_31545 + m (Lcft;Ljava/lang/Class;F)V +c cft$h net/minecraft/class_1440$class_1446 net/minecraft/world/entity/animal/Panda$PandaMoveControl + f Lcft; l field_6801 panda + m (Lcft;)V +c cft$i net/minecraft/class_1440$class_1447 net/minecraft/world/entity/animal/Panda$PandaPanicGoal + f Lcft; a field_6802 panda + m (Lcft;D)V +c cft$j net/minecraft/class_1440$class_1448 net/minecraft/world/entity/animal/Panda$PandaRollGoal + f Lcft; a field_6803 panda + m (Lcft;)V +c cft$k net/minecraft/class_1440$class_1449 net/minecraft/world/entity/animal/Panda$PandaSitGoal + f Lcft; a field_6805 field_6805 + f I b field_6804 cooldown + m (Lcft;)V +c cft$l net/minecraft/class_1440$class_1450 net/minecraft/world/entity/animal/Panda$PandaSneezeGoal + f Lcft; a field_6806 panda + m (Lcft;)V +c cfu net/minecraft/class_1453 net/minecraft/world/entity/animal/Parrot + f F cg field_6818 flap + f F ch field_6819 flapSpeed + f F ci field_6827 oFlapSpeed + f F cj field_6829 oFlap + f Lajw; ck field_6826 DATA_VARIANT_ID + f Ljava/util/function/Predicate; cl field_6821 NOT_PARROT_PREDICATE + f Ljava/util/Map; cm field_6822 MOB_SOUND_MAP + f F cn field_6824 flapping + f F co field_28640 nextFlap + f Z cp field_6823 partyParrot + f Ljd; cq field_6820 jukebox + m (Layw;)F a method_6580 getPitch + m (Lcfu$b;)V a method_47848 setVariant + m (Ldcw;Layw;)Lavo; a method_6583 getAmbient + m (Ldcw;Lbsr;)Z a method_6587 imitateNearbyMobs + m (Ljava/util/HashMap;)V a method_6579 method_6579 + m (Lbsx;)Lavo; b method_6586 getImitatedSound + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20667 checkParrotSpawnRules + m ()Lbuv$a; gu method_26889 createAttributes + m ()Z gv method_6582 isPartyParrot + m ()Lcfu$b; gw method_6584 getVariant + m ()V gz method_6578 calculateFlapping + m (Lbsx;Ldcw;)V + m ()V +c cfu$1 net/minecraft/class_1453$1 net/minecraft/world/entity/animal/Parrot$1 + m (Lbtp;)Z a method_6590 test + m ()V +c cfu$a net/minecraft/class_1453$class_6537 net/minecraft/world/entity/animal/Parrot$ParrotWanderGoal + m ()Lexc; k method_38066 getTreePos + m (Lbtw;D)V +c cfu$b net/minecraft/class_1453$class_7989 net/minecraft/world/entity/animal/Parrot$Variant + f Lcfu$b; a field_41550 RED_BLUE + f Lcfu$b; b field_41551 BLUE + f Lcfu$b; c field_41552 GREEN + f Lcfu$b; d field_41553 YELLOW_BLUE + f Lcfu$b; e field_41554 GRAY + f Lcom/mojang/serialization/Codec; f field_41555 CODEC + f Ljava/util/function/IntFunction; g field_41556 BY_ID + f I h field_41557 id + f Ljava/lang/String; i field_41558 name + f [Lcfu$b; j field_41559 $VALUES + m ()I a method_47849 getId + m (I)Lcfu$b; a method_47850 byId + m ()[Lcfu$b; b method_47851 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c cfv net/minecraft/class_1452 net/minecraft/world/entity/animal/Pig + f Lajw; cc field_6816 DATA_SADDLE_ID + f Lajw; cd field_6815 DATA_BOOST_TIME + f Lbti; ce field_23230 steering + m (Laqu;Lbsl;)Lcfv; b method_6574 getBreedOffspring + m (Lcuq;)Z n method_58372 method_58372 + m (Lcuq;)Z p method_58373 method_58373 + m ()Lbuv$a; s method_26890 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c cfw net/minecraft/class_1456 net/minecraft/world/entity/animal/PolarBear + f Lajw; cc field_6840 DATA_STANDING_ID + f F cd field_30352 STAND_ANIMATION_TICKS + f F ce field_6838 clientSideStandAnimationO + f F cg field_6837 clientSideStandAnimation + f I ch field_6839 warningSoundTicks + f Lbqc; ci field_25369 PERSISTENT_ANGER_TIME + f I cj field_25370 remainingPersistentAngerTime + f Ljava/util/UUID; ck field_25368 persistentAngerTarget + m (F)F H method_6601 getStandingAnimationScale + m (Lbtw;)Lawu; a method_60725 method_60725 + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20668 checkPolarBearSpawnRules + m ()Lbuv$a; s method_26891 createAttributes + m ()V t method_6602 playWarningSound + m ()Z x method_6600 isStanding + m (Z)V x method_6603 setStanding + m (Lbsx;Ldcw;)V + m ()V +c cfw$a net/minecraft/class_1456$class_1457 net/minecraft/world/entity/animal/PolarBear$PolarBearAttackPlayersGoal + f Lcfw; i field_6841 field_6841 + m (Lcfw;)V +c cfw$b net/minecraft/class_1456$class_1459 net/minecraft/world/entity/animal/PolarBear$PolarBearHurtByTargetGoal + f Lcfw; a field_6843 field_6843 + m (Lcfw;)V +c cfw$c net/minecraft/class_1456$class_1460 net/minecraft/world/entity/animal/PolarBear$PolarBearMeleeAttackGoal + f Lcfw; b field_6844 field_6844 + m (Lcfw;)V +c cfx net/minecraft/class_1454 net/minecraft/world/entity/animal/Pufferfish + f I b field_30353 STATE_SMALL + f I c field_30354 STATE_MID + f I cc field_6833 inflateCounter + f I cd field_6832 deflateTimer + f Ljava/util/function/Predicate; ce field_6834 SCARY_MOB + f Lcef; cf field_33692 targetingConditions + f I d field_30355 STATE_FULL + f Lajw; e field_6835 PUFF_STATE + m (Lbtp;)V a method_6593 touch + m (Lbtp;)Z b method_36550 method_36550 + m (I)V c method_6596 setPuffState + m ()I gm method_6594 getPuffState + m (Lbtn;)Z j method_6591 method_6591 + m (I)F s method_6592 getScale + m (Lbsx;Ldcw;)V + m ()V +c cfx$a net/minecraft/class_1454$class_1455 net/minecraft/world/entity/animal/Pufferfish$PufferfishPuffGoal + f Lcfx; a field_6836 fish + m (Lbtn;)Z a method_36552 method_36552 + m (Lcfx;)V +c cfy net/minecraft/class_1463 net/minecraft/world/entity/animal/Rabbit + f D cc field_30356 STROLL_SPEED_MOD + f D cd field_30357 BREED_SPEED_MOD + f D ce field_30358 FOLLOW_SPEED_MOD + f D cg field_30359 FLEE_SPEED_MOD + f D ch field_30360 ATTACK_SPEED_MOD + f Lajw; ci field_6852 DATA_TYPE_ID + f Lakr; cj field_6846 KILLER_BUNNY + f I ck field_51585 DEFAULT_ATTACK_POWER + f I cl field_51586 EVIL_ATTACK_POWER_INCREMENT + f Lakr; cm field_51587 EVIL_ATTACK_POWER_MODIFIER + f I cn field_30369 EVIL_ARMOR_VALUE + f I co field_30370 MORE_CARROTS_DELAY + f I cp field_6851 jumpTicks + f I cq field_6849 jumpDuration + f Z cr field_6850 wasOnGround + f I cs field_6848 jumpDelayTicks + f I ct field_6847 moreCarrotTicks + m (F)F H method_6605 getJumpCompletion + m (Lcfy$g;)V a method_47853 setVariant + m (Lcfy;)Z a method_24839 method_24839 + m (Ldcx;Ljd;)Lcfy$g; a method_47854 getRandomRabbitVariant + m (Laqu;Lbsl;)Lcfy; b method_6620 getBreedOffspring + m (Lcfy;)Lbzn; b method_6604 method_6604 + m (DD)V c method_6616 facePoint + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20669 checkRabbitSpawnRules + m ()Lcfy$g; gk method_47855 getVariant + m ()V gl method_6611 enableJumpControl + m ()V gm method_6621 disableJumpControl + m ()V gn method_6608 setLandingDelay + m ()V go method_6619 checkLandingDelay + m ()Z gu method_6607 wantsMoreFood + m (D)V i method_6606 setSpeedModifier + m (Lcuq;)Z n method_58374 method_58374 + m ()V s method_6618 startJumping + m ()Lbuv$a; t method_26892 createAttributes + m ()Lavo; x method_6615 getJumpSound + m (Lbsx;Ldcw;)V + m ()V +c cfy$a net/minecraft/class_1463$class_1465 net/minecraft/world/entity/animal/Rabbit$RabbitAvoidEntityGoal + f Lcfy; i field_6853 rabbit + m (Lcfy;Ljava/lang/Class;FDD)V +c cfy$b net/minecraft/class_1463$class_1466 net/minecraft/world/entity/animal/Rabbit$RabbitGroupData + f Lcfy$g; a field_41560 variant + m (Lcfy$g;)V +c cfy$c net/minecraft/class_1463$class_5197 net/minecraft/world/entity/animal/Rabbit$RabbitJumpControl + f Lcfy; b field_24090 rabbit + f Z c field_24091 canJump + m (Z)V a method_27311 setCanJump + m ()Z c method_27312 wantJump + m ()Z d method_27313 canJump + m (Lcfy;)V +c cfy$d net/minecraft/class_1463$class_1468 net/minecraft/world/entity/animal/Rabbit$RabbitMoveControl + f Lcfy; l field_6859 rabbit + f D m field_6858 nextJumpSpeed + m (Lcfy;)V +c cfy$e net/minecraft/class_1463$class_1469 net/minecraft/world/entity/animal/Rabbit$RabbitPanicGoal + f Lcfy; a field_6860 rabbit + m (Lcfy;D)V +c cfy$f net/minecraft/class_1463$class_1470 net/minecraft/world/entity/animal/Rabbit$RaidGardenGoal + f Lcfy; g field_6863 rabbit + f Z h field_6862 wantsToRaid + f Z i field_6861 canRaid + m (Lcfy;)V +c cfy$g net/minecraft/class_1463$class_7990 net/minecraft/world/entity/animal/Rabbit$Variant + f Lcfy$g; a field_41561 BROWN + f Lcfy$g; b field_41562 WHITE + f Lcfy$g; c field_41563 BLACK + f Lcfy$g; d field_41564 WHITE_SPLOTCHED + f Lcfy$g; e field_41565 GOLD + f Lcfy$g; f field_41566 SALT + f Lcfy$g; g field_41567 EVIL + f Lcom/mojang/serialization/Codec; h field_41568 CODEC + f Ljava/util/function/IntFunction; i field_41569 BY_ID + f I j field_41570 id + f Ljava/lang/String; k field_41571 name + f [Lcfy$g; l field_41572 $VALUES + m ()I a method_47856 id + m (I)Lcfy$g; a method_47857 byId + m ()[Lcfy$g; b method_47859 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c cfz net/minecraft/class_1462 net/minecraft/world/entity/animal/Salmon + m (Lbsx;Ldcw;)V +c cga net/minecraft/class_1472 net/minecraft/world/entity/animal/Sheep + f I cc field_30371 EAT_ANIMATION_TICKS + f Lajw; cd field_6870 DATA_WOOL_ID + f Ljava/util/Map; ce field_6868 ITEM_BY_DYE + f Ljava/util/Map; cg field_6867 COLOR_BY_DYE + f I ch field_6865 eatAnimationTick + f Lcae; ci field_6869 eatBlockGoal + m (F)F H method_6628 getHeadEatPositionScale + m (F)F I method_6641 getHeadEatAngleScale + m (Layw;)Lcti; a method_6632 getRandomSheepColor + m (Lcfe;Lcfe;)Lcti; a method_6639 getOffspringColor + m (Lcti;)I a method_6634 getColor + m (Lcti;Lcti;)Lcyp; a method_59936 makeCraftInput + m (Lcyp;Lczb;)Lcuq; a method_17689 method_17689 + m (Ljava/util/EnumMap;)V a method_6637 method_6637 + m (Laqu;Lbsl;)Lcga; b method_6640 getBreedOffspring + m (Lcti;)V b method_6631 setColor + m (Lcti;Lcti;)Lcti; b method_17691 method_17691 + m (Lcti;)I c method_6630 createSheepColor + m (Lcti;)Lcti; d method_6638 method_6638 + m (Lcuq;)Z n method_58375 method_58375 + m ()Lbuv$a; s method_26893 createAttributes + m ()Lcti; t method_6633 getColor + m ()Z x method_6629 isSheared + m (Z)V x method_6635 setSheared + m (Lbsx;Ldcw;)V + m ()V +c cga$1 net/minecraft/class_1472$1 net/minecraft/world/entity/animal/Sheep$1 + f [I a field_6872 $SwitchMap$net$minecraft$world$item$DyeColor + m ()V +c cgb net/minecraft/class_1471 net/minecraft/world/entity/animal/ShoulderRidingEntity + f I cg field_30372 RIDE_COOLDOWN + f I ch field_6864 rideCooldownCounter + m (Laqv;)Z b method_6627 setEntityOnShoulder + m ()Z gy method_6626 canSitOnShoulder + m (Lbsx;Ldcw;)V +c cgc net/minecraft/class_1473 net/minecraft/world/entity/animal/SnowGolem + f Lajw; b field_6873 DATA_PUMPKIN_ID + f B c field_30373 PUMPKIN_FLAG + m (Lbtn;)Z j method_18443 method_18443 + m ()Lbuv$a; s method_26894 createAttributes + m ()Z t method_6643 hasPumpkin + m (Z)V x method_6642 setPumpkin + m (Lbsx;Ldcw;)V + m ()V +c cgd net/minecraft/class_1477 net/minecraft/world/entity/animal/Squid + f F b field_6907 xBodyRot + f F c field_6905 xBodyRotO + f F cc field_6908 tentacleMovement + f F cd field_6902 oldTentacleMovement + f F ce field_6904 tentacleAngle + f F cf field_6900 oldTentacleAngle + f F cg field_6901 speed + f F ch field_6912 tentacleSpeed + f F ci field_6913 rotateSpeed + f F cj field_6910 tx + f F ck field_6911 ty + f F cl field_6909 tz + f F d field_6903 zBodyRot + f F e field_6906 zBodyRotO + m (FFF)V a method_6670 setMovementVector + m (Lcgd;)Z a method_6668 method_6668 + m (Lexc;)Lexc; b method_6671 rotateVector + m ()Lbuv$a; gk method_26895 createAttributes + m ()Z gl method_6672 hasMovementVector + m ()Llk; s method_33336 getInkParticle + m ()Lavo; t method_33337 getSquirtSound + m ()V x method_6669 spawnInk + m (Lbsx;Ldcw;)V +c cgd$a net/minecraft/class_1477$class_1478 net/minecraft/world/entity/animal/Squid$SquidFleeGoal + f Lcgd; a field_6914 field_6914 + f F b field_30375 SQUID_FLEE_SPEED + f F c field_30376 SQUID_FLEE_MIN_DISTANCE + f F d field_30377 SQUID_FLEE_MAX_DISTANCE + f I e field_6915 fleeTicks + m (Lcgd;)V +c cgd$b net/minecraft/class_1477$class_1479 net/minecraft/world/entity/animal/Squid$SquidRandomMovementGoal + f Lcgd; a field_6917 squid + m (Lcgd;Lcgd;)V +c cge net/minecraft/class_1474 net/minecraft/world/entity/animal/TropicalFish + f Ljava/lang/String; b field_30378 BUCKET_VARIANT_TAG + f Ljava/util/List; c field_41573 COMMON_VARIANTS + f Lajw; d field_6874 DATA_ID_TYPE_VARIANT + f Z e field_6877 isSchool + m (Lcge$b;)V a method_47860 setVariant + m (Lcge$b;Lcti;Lcti;)I a method_47861 packVariant + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_38985 checkTropicalFishSpawnRules + m (I)Ljava/lang/String; c method_6649 getPredefinedName + m ()Lcti; gt method_6658 getBaseColor + m ()Lcti; gu method_6655 getPatternColor + m ()Lcge$b; gv method_47862 getVariant + m ()I gw method_47863 getPackedVariant + m (Lub;)V i method_57303 method_57303 + m (I)Lcti; s method_6652 getBaseColor + m (I)Lcti; t method_6651 getPatternColor + m (I)Lcge$b; u method_47864 getPattern + m (I)V v method_47865 setPackedVariant + m (Lbsx;Ldcw;)V + m ()V +c cge$a net/minecraft/class_1474$class_7991 net/minecraft/world/entity/animal/TropicalFish$Base + f Lcge$a; a field_41574 SMALL + f Lcge$a; b field_41575 LARGE + f I c field_41576 id + f [Lcge$a; d field_41577 $VALUES + m ()[Lcge$a; a method_47866 $values + m (Ljava/lang/String;II)V + m ()V +c cge$b net/minecraft/class_1474$class_1475 net/minecraft/world/entity/animal/TropicalFish$Pattern + f Lcge$b; a field_6881 KOB + f Lcge$b; b field_6880 SUNSTREAK + f Lcge$b; c field_6882 SNOOPER + f Lcge$b; d field_6890 DASHER + f Lcge$b; e field_6891 BRINELY + f Lcge$b; f field_6892 SPOTTY + f Lcge$b; g field_6893 FLOPPER + f Lcge$b; h field_6887 STRIPEY + f Lcge$b; i field_6883 GLITTER + f Lcge$b; j field_6884 BLOCKFISH + f Lcge$b; k field_6888 BETTY + f Lcge$b; l field_6889 CLAYFISH + f Lcom/mojang/serialization/Codec; m field_41578 CODEC + f Ljava/util/function/IntFunction; n field_41579 BY_ID + f Ljava/lang/String; o field_41580 name + f Lwz; p field_41581 displayName + f Lcge$a; q field_41582 base + f I r field_41583 packedId + f [Lcge$b; s field_6886 $VALUES + m ()Lcge$a; a method_47867 base + m (I)Lcge$b; a method_47868 byId + m ()I b method_47870 getPackedId + m ()Lwz; d method_47871 displayName + m ()[Lcge$b; e method_36643 $values + m (Ljava/lang/String;ILjava/lang/String;Lcge$a;I)V + m ()V +c cge$c net/minecraft/class_1474$class_1476 net/minecraft/world/entity/animal/TropicalFish$TropicalFishGroupData + f Lcge$d; b field_41584 variant + m (Lcge;Lcge$d;)V +c cge$d net/minecraft/class_1474$class_7992 net/minecraft/world/entity/animal/TropicalFish$Variant + f Lcom/mojang/serialization/Codec; a field_49236 CODEC + f Lcge$b; b comp_1177 pattern + f Lcti; c comp_1178 baseColor + f Lcti; d comp_1179 patternColor + m ()I a method_47872 getPackedId + m ()Lcge$b; b comp_1177 pattern + m ()Lcti; c comp_1178 baseColor + m ()Lcti; d comp_1179 patternColor + m (I)V + m (Lcge$b;Lcti;Lcti;)V + m ()V +c cgf net/minecraft/class_1481 net/minecraft/world/entity/animal/Turtle + f Ljava/util/function/Predicate; cc field_6921 BABY_ON_LAND_SELECTOR + f Lajw; cd field_6920 HOME_POS + f Lajw; ce field_6919 HAS_EGG + f Lajw; cg field_6923 LAYING_EGG + f Lajw; ch field_6922 TRAVEL_POS + f Lajw; ci field_6924 GOING_HOME + f Lajw; cj field_6925 TRAVELLING + f F ck field_47774 BABY_SCALE + f Lbsu; cl field_47775 BABY_DIMENSIONS + f I cm field_6918 layEggCounter + m (Z)V A method_6696 setTravelling + m (Lcgf;)Layw; a method_6685 method_6685 + m (Lcgf;)Layw; b method_6677 method_6677 + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20671 checkTurtleSpawnRules + m ()Ljd; gk method_6693 getHomePos + m ()Ljd; gl method_6687 getTravelPos + m ()Z gm method_6684 isGoingHome + m ()Z gn method_6691 isTravelling + m (Ljd;)V h method_6683 setHomePos + m (Ljd;)V i method_6699 setTravelPos + m (Lbtn;)Z j method_6688 method_6688 + m (Lcuq;)Z n method_58376 method_58376 + m ()Z s method_6679 hasEgg + m ()Z t method_6695 isLayingEgg + m ()Lbuv$a; x method_26896 createAttributes + m (Z)V x method_6680 setHasEgg + m (Z)V y method_6676 setLayingEgg + m (Z)V z method_6697 setGoingHome + m (Lbsx;Ldcw;)V + m ()V +c cgf$a net/minecraft/class_1481$class_1482 net/minecraft/world/entity/animal/Turtle$TurtleBreedGoal + f Lcgf; d field_6926 turtle + m (Lcgf;D)V +c cgf$b net/minecraft/class_1481$class_1483 net/minecraft/world/entity/animal/Turtle$TurtleGoHomeGoal + f Lcgf; a field_6930 turtle + f D b field_6927 speedModifier + f Z c field_6929 stuck + f I d field_6928 closeToHomeTryTicks + f I e field_30384 GIVE_UP_TICKS + m (Lcgf;D)V +c cgf$c net/minecraft/class_1481$class_1484 net/minecraft/world/entity/animal/Turtle$TurtleGoToWaterGoal + f I g field_30385 GIVE_UP_TICKS + f Lcgf; h field_6931 turtle + m (Lcgf;D)V +c cgf$d net/minecraft/class_1481$class_1485 net/minecraft/world/entity/animal/Turtle$TurtleLayEggGoal + f Lcgf; g field_6932 turtle + m (Lcgf;D)V +c cgf$e net/minecraft/class_1481$class_1486 net/minecraft/world/entity/animal/Turtle$TurtleMoveControl + f Lcgf; l field_6933 turtle + m ()V g method_6700 updateSpeed + m (Lcgf;)V +c cgf$f net/minecraft/class_1481$class_1487 net/minecraft/world/entity/animal/Turtle$TurtlePanicGoal + m (Lcgf;D)V +c cgf$g net/minecraft/class_1481$class_1488 net/minecraft/world/entity/animal/Turtle$TurtlePathNavigation + m (Lcgf;Ldcw;)V +c cgf$h net/minecraft/class_1481$class_1489 net/minecraft/world/entity/animal/Turtle$TurtleRandomStrollGoal + f Lcgf; i field_6934 turtle + m (Lcgf;DI)V +c cgf$i net/minecraft/class_1481$class_1491 net/minecraft/world/entity/animal/Turtle$TurtleTravelGoal + f Lcgf; a field_6942 turtle + f D b field_6940 speedModifier + f Z c field_6941 stuck + m (Lcgf;D)V +c cgg net/minecraft/class_1480 net/minecraft/world/entity/animal/WaterAnimal + m (I)V b method_6673 handleAirSupply + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_38986 checkSurfaceWaterAnimalSpawnRules + m (Lbsx;Ldcw;)V +c cgh net/minecraft/class_1493 net/minecraft/world/entity/animal/Wolf + f Ljava/util/function/Predicate; cg field_18004 PREY_SELECTOR + f Lajw; ch field_6946 DATA_INTERESTED_ID + f Lajw; ci field_6950 DATA_COLLAR_COLOR + f Lajw; cj field_25373 DATA_REMAINING_ANGER_TIME + f Lajw; ck field_49722 DATA_VARIANT_ID + f F cl field_30386 START_HEALTH + f F cm field_30387 TAME_HEALTH + f F cn field_49237 ARMOR_REPAIR_UNIT + f F co field_6952 interestedAngle + f F cp field_6949 interestedAngleO + f Z cq field_6944 isWet + f Z cr field_6951 isShaking + f F cs field_6947 shakeAnim + f F ct field_6945 shakeAnimO + f Lbqc; cu field_25371 PERSISTENT_ANGER_TIME + f Ljava/util/UUID; cv field_25372 persistentAngerTarget + m (Z)V A method_6712 setIsInterested + m (F)F H method_6707 getWetShade + m (F)F I method_6719 getHeadRollAngle + m (Lakq;)Ljava/util/Optional; a method_58059 method_58059 + m (Lakr;)Lakq; a method_58060 method_58060 + m (Lcgh;)Layw; a method_6716 method_6716 + m (Lcti;)V a method_6708 setCollarColor + m (Lub;Lakq;)V a method_59937 method_59937 + m (Laqu;Lbsl;)Lcgh; b method_6717 getBreedOffspring + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_39450 checkWolfSpawnRules + m (FF)F g method_6715 getBodyRollAngle + m (Lbrk;)Z g method_57304 canArmorAbsorb + m (Lcmx;)V g method_58169 tryToTame + m ()Z gA method_55710 hasArmor + m ()Z gB method_6710 isInterested + m ()V gC method_31167 cancelShake + m ()Lakr; gu method_58061 getTexture + m ()Ljm; gv method_58062 getVariant + m ()Lbuv$a; gw method_26897 createAttributes + m ()Z gx method_6711 isWet + m ()F gy method_6714 getTailAngle + m ()Lcti; gz method_6713 getCollarColor + m (Ljm;)V i method_58063 setVariant + m (Lbtn;)Z k method_18444 method_18444 + m (Lbsx;Ldcw;)V + m ()V +c cgh$a net/minecraft/class_1493$class_1494 net/minecraft/world/entity/animal/Wolf$WolfAvoidEntityGoal + f Lcgh; i field_6953 field_6953 + f Lcgh; j field_6954 wolf + m (Lchl;)Z a method_6720 avoidLlama + m (Lcgh;Lcgh;Ljava/lang/Class;FDD)V +c cgh$b net/minecraft/class_1493$class_9345 net/minecraft/world/entity/animal/Wolf$WolfPackData + f Ljm; a field_49723 type + m (Ljm;)V +c cgi net/minecraft/class_9346 net/minecraft/world/entity/animal/WolfVariant + f Lcom/mojang/serialization/Codec; a field_49724 DIRECT_CODEC + f Lyx; b field_51943 DIRECT_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_49980 CODEC + f Lyx; d field_51944 STREAM_CODEC + f Lakr; e field_49981 wildTexture + f Lakr; f field_49982 tameTexture + f Lakr; g field_49983 angryTexture + f Lakr; h field_49984 wildTextureFull + f Lakr; i field_49985 tameTextureFull + f Lakr; j field_49986 angryTextureFull + f Ljq; k field_49987 biomes + m ()Lakr; a method_58377 wildTexture + m (Lakr;)Lakr; a method_58378 fullTextureId + m (Lcgi;)Lakr; a method_58379 method_58379 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58064 method_58064 + m (Ljava/lang/String;)Ljava/lang/String; a method_58380 method_58380 + m ()Lakr; b method_58381 tameTexture + m (Lcgi;)Lakr; b method_58382 method_58382 + m ()Lakr; c method_58383 angryTexture + m (Lcgi;)Lakr; c method_58384 method_58384 + m ()Ljq; d method_58385 biomes + m (Lakr;Lakr;Lakr;Ljq;)V + m ()V +c cgj net/minecraft/class_9347 net/minecraft/world/entity/animal/WolfVariants + f Lakq; a field_49725 PALE + f Lakq; b field_49726 SPOTTED + f Lakq; c field_49727 SNOWY + f Lakq; d field_49728 BLACK + f Lakq; e field_49729 ASHEN + f Lakq; f field_49730 RUSTY + f Lakq; g field_49731 WOODS + f Lakq; h field_49732 CHESTNUT + f Lakq; i field_49733 STRIPED + f Lakq; j field_51588 DEFAULT + m (Ljava/lang/String;)Lakq; a method_58066 createKey + m (Ljm;Ljm$c;)Z a method_58065 method_58065 + m (Ljz;)Ljava/util/Optional; a method_59938 method_59938 + m (Lka;Ljm;)Ljm; a method_58067 getSpawnVariant + m (Lqq;)V a method_58068 bootstrap + m (Lqq;Lakq;Ljava/lang/String;Lakq;)V a method_58069 register + m (Lqq;Lakq;Ljava/lang/String;Lawu;)V a method_58170 register + m (Lqq;Lakq;Ljava/lang/String;Ljq;)V a method_58171 register + m ()V + m ()V +c cgk net/minecraft/class_7298 net/minecraft/world/entity/animal/allay/Allay + f Lcom/google/common/collect/ImmutableList; b field_38398 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; c field_38403 MEMORY_TYPES + f Lkh; cc field_38399 ITEM_PICKUP_REACH + f I cd field_39461 LIFTING_ITEM_ANIMATION_DURATION + f F ce field_39462 DANCING_LOOP_DURATION + f F cf field_39463 SPINNING_ANIMATION_DURATION + f Lcyw; cg field_39464 DUPLICATION_ITEM + f I ch field_39465 DUPLICATION_COOLDOWN_TICKS + f I ci field_39679 NUM_OF_DUPLICATION_HEARTS + f Lajw; cj field_39466 DATA_DANCING + f Lajw; ck field_39467 DATA_CAN_DUPLICATE + f Ldxw; cl field_38401 dynamicVibrationListener + f Ldyi$a; cm field_44596 vibrationData + f Ldyi$d; cn field_39468 vibrationUser + f Ldxw; co field_39469 dynamicJukeboxListener + f Lbra; cp field_38402 inventory + f Ljd; cq field_39470 jukeboxPos + f J cr field_39471 duplicationCooldown + f F cs field_38935 holdingItemAnimationTicks + f F ct field_38936 holdingItemAnimationTicks0 + f F cu field_39472 dancingAnimationTicks + f F cv field_39473 spinningAnimationTicks + f F cw field_39474 spinningAnimationTicks0 + f Lcom/google/common/collect/ImmutableList; d field_38937 THROW_SOUND_PITCHES + f Lorg/slf4j/Logger; e field_39045 LOGGER + m (F)F H method_43397 getHoldingItemAnimationProgress + m (F)F I method_44368 getSpinningProgress + m (Lcmx;Lcuq;)V a method_44357 removeInteractionItem + m (Ldyi$a;)V a method_43536 method_43536 + m (Lub;Luy;)V a method_43537 method_43537 + m (Ljd;Z)V b method_44358 setJukeboxPlaying + m (Lcuq;Lcuq;)Z d method_45340 allayConsidersItemEqual + m (Ljava/lang/String;)V d method_60975 method_60975 + m (Lcuq;Lcuq;)Z e method_45341 hasNonMatchingPotion + m (Ljava/lang/String;)V e method_60976 method_60976 + m ()Z gk method_44359 isDancing + m ()Z gl method_44360 isSpinning + m ()Z go method_42654 isOnPickupCooldown + m ()Z gp method_44361 shouldStopDancing + m ()V gq method_44362 updateDuplicationCooldown + m ()V gr method_44363 duplicateAllay + m ()V gs method_44364 resetDuplicationCooldown + m ()Z gt method_44365 canDuplicate + m ()V gu method_44608 spawnHeartParticle + m (Lcuq;)Z n method_44366 isDuplicationItem + m ()Lbuv$a; s method_42655 createAttributes + m ()Z t method_43396 hasItemInHand + m (Z)V x method_44367 setDancing + m (Lbsx;Ldcw;)V + m ()V +c cgk$a net/minecraft/class_7298$class_7525 net/minecraft/world/entity/animal/allay/Allay$JukeboxListener + f Lcgk; a field_39477 field_39477 + f Ldyd; b field_39478 listenerSource + f I c field_39479 listenerRadius + m (Lcgk;Ldyd;I)V +c cgk$b net/minecraft/class_7298$class_7524 net/minecraft/world/entity/animal/allay/Allay$VibrationUser + f Lcgk; a field_39476 field_39476 + f I b field_43190 VIBRATION_EVENT_LISTENER_RANGE + f Ldyd; c field_44597 positionSource + m (Lcgk;)V +c cgl net/minecraft/class_7299 net/minecraft/world/entity/animal/allay/AllayAi + f F a field_38406 SPEED_MULTIPLIER_WHEN_IDLING + f F b field_38407 SPEED_MULTIPLIER_WHEN_FOLLOWING_DEPOSIT_TARGET + f F c field_38408 SPEED_MULTIPLIER_WHEN_RETRIEVING_ITEM + f F d field_39113 SPEED_MULTIPLIER_WHEN_PANICKING + f I e field_38938 CLOSE_ENOUGH_TO_TARGET + f I f field_38939 TOO_FAR_FROM_TARGET + f I g field_38410 MAX_LOOK_DISTANCE + f I h field_38411 MIN_WAIT_DURATION + f I i field_38412 MAX_WAIT_DURATION + f I j field_38413 TIME_TO_FORGET_NOTEBLOCK + f I k field_38940 DISTANCE_TO_WANTED_ITEM + f I l field_40130 GIVE_ITEM_TIMEOUT_DURATION + m (Laqv;)Lbwv; a method_43092 method_43092 + m (Lbtn;)Ljava/util/Optional; a method_43093 getLikedPlayer + m (Lbtn;Lbuq;Ljl;)Z a method_42658 shouldDepositItemsAtLikedNoteblock + m (Lbtn;Ljd;)V a method_42659 hearNoteblock + m (Lbuq;)Lbuq; a method_42660 makeBrain + m (Lcgk;)V a method_42661 updateActivity + m (Lbtn;)Ljava/util/Optional; b method_42657 getItemDepositPosition + m (Lbuq;)V b method_42663 initCoreActivity + m (Lcgk;)Z b method_42664 method_42664 + m (Lbtn;)Z c method_49122 hasWantedItem + m (Lbuq;)V c method_42666 initIdleActivity + m (Lbtn;)Ljava/util/Optional; d method_42662 getLikedPlayerPositionTracker + m ()V +c cgm net/minecraft/class_7300 net/minecraft/world/entity/animal/allay/package-info +c cgn net/minecraft/class_9069 net/minecraft/world/entity/animal/armadillo/Armadillo + f F cc field_47778 BABY_SCALE + f F cd field_48332 MAX_HEAD_ROTATION_EXTENT + f I ce field_47779 SCARE_CHECK_INTERVAL + f Lbsm; cg field_49080 rollOutAnimationState + f Lbsm; ch field_49081 rollUpAnimationState + f Lbsm; ci field_49082 peekAnimationState + f D cj field_48333 SCARE_DISTANCE_HORIZONTAL + f D ck field_48334 SCARE_DISTANCE_VERTICAL + f Lajw; cl field_47785 ARMADILLO_STATE + f J cm field_47786 inStateTicks + f I cn field_47787 scuteTime + f Z co field_49083 peekReceivedClient + m (Lcgn$a;)V a method_55713 switchToState + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_56083 checkArmadilloSpawnRules + m ()Z gk method_55714 shouldSwitchToScaredState + m ()Lcgn$a; gl method_55718 getState + m ()V gm method_55715 rollUp + m ()V gn method_55724 rollOut + m ()Z go method_55716 brushOffScute + m ()Z gu method_55717 canStayRolledUp + m ()I gv method_55719 pickNextScuteDropTime + m ()V gw method_55720 setupAnimationStates + m (Lbtn;)Z j method_55721 isScaredBy + m ()Lbuv$a; s method_55722 createAttributes + m ()Z t method_55723 isScared + m ()Z x method_55711 shouldHideInShell + m (Lbsx;Ldcw;)V + m ()V +c cgn$1 net/minecraft/class_9069$1 net/minecraft/world/entity/animal/armadillo/Armadillo$1 + f Lcgn; a field_47788 field_47788 + m (Lcgn;Lbtp;)V +c cgn$a net/minecraft/class_9069$class_9070 net/minecraft/world/entity/animal/armadillo/Armadillo$ArmadilloState + f Lcgn$a; a field_47790 IDLE + f Lcgn$a; b field_47791 ROLLING + f Lcgn$a; c field_47792 SCARED + f Lcgn$a; d field_49084 UNROLLING + f Lyx; e field_48335 STREAM_CODEC + f Lazk$a; f field_47794 CODEC + f Ljava/util/function/IntFunction; g field_48336 BY_ID + f Ljava/lang/String; h field_47793 name + f Z i field_49085 isThreatened + f I j field_49086 animationDuration + f I k field_48337 id + f [Lcgn$a; l field_47795 $VALUES + m ()Z a method_56998 isThreatened + m (J)Z a method_56999 shouldHideInShell + m (Ljava/lang/String;)Lcgn$a; a method_55727 fromName + m ()I b method_57000 animationDuration + m ()I d method_56084 id + m ()[Lcgn$a; e method_55726 $values + m (Ljava/lang/String;ILjava/lang/String;ZII)V + m ()V +c cgn$a$1 net/minecraft/class_9069$class_9070$1 net/minecraft/world/entity/animal/armadillo/Armadillo$ArmadilloState$1 + m (Ljava/lang/String;ILjava/lang/String;ZII)V +c cgn$a$2 net/minecraft/class_9069$class_9070$2 net/minecraft/world/entity/animal/armadillo/Armadillo$ArmadilloState$2 + m (Ljava/lang/String;ILjava/lang/String;ZII)V +c cgn$a$3 net/minecraft/class_9069$class_9070$3 net/minecraft/world/entity/animal/armadillo/Armadillo$ArmadilloState$3 + m (Ljava/lang/String;ILjava/lang/String;ZII)V +c cgn$a$4 net/minecraft/class_9069$class_9070$4 net/minecraft/world/entity/animal/armadillo/Armadillo$ArmadilloState$4 + m (Ljava/lang/String;ILjava/lang/String;ZII)V +c cgo net/minecraft/class_9071 net/minecraft/world/entity/animal/armadillo/ArmadilloAi + f F a field_47797 SPEED_MULTIPLIER_WHEN_PANICKING + f F b field_47798 SPEED_MULTIPLIER_WHEN_IDLING + f F c field_47799 SPEED_MULTIPLIER_WHEN_TEMPTED + f F d field_47800 SPEED_MULTIPLIER_WHEN_FOLLOWING_ADULT + f F e field_47801 SPEED_MULTIPLIER_WHEN_MAKING_LOVE + f D f field_48338 DEFAULT_CLOSE_ENOUGH_DIST + f D g field_48339 BABY_CLOSE_ENOUGH_DIST + f Lbqc; h field_47802 ADULT_FOLLOW_RANGE + f Lcom/google/common/collect/ImmutableList; i field_47803 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; j field_47804 MEMORY_TYPES + f Lbws; k field_47805 ARMADILLO_ROLLING_OUT + m ()Lbuq$b; a method_55728 brainProvider + m (Laqu;Lcgn;J)Z a method_55729 method_55729 + m (Lbtn;)Ljava/lang/Double; a method_55730 method_55730 + m (Lbuq;)Lbuq; a method_55731 makeBrain + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_55732 method_55732 + m (Lbyv;)Lbyx; a method_55733 method_55733 + m (Lcgn;)V a method_55734 updateActivity + m (Lcuq;)Z a method_58386 method_58386 + m ()Ljava/util/function/Predicate; b method_55735 getTemptations + m (Lbtn;)Ljava/lang/Float; b method_55736 method_55736 + m (Lbuq;)V b method_55737 initCoreActivity + m (Lbuq;)V c method_55738 initIdleActivity + m (Lbuq;)V d method_55739 initScaredActivity + m ()V + m ()V +c cgo$1 net/minecraft/class_9071$1 net/minecraft/world/entity/animal/armadillo/ArmadilloAi$1 + m ()V +c cgo$a net/minecraft/class_9071$class_9072 net/minecraft/world/entity/animal/armadillo/ArmadilloAi$ArmadilloBallUp + f I c field_49087 BALL_UP_STAY_IN_STATE + f I d field_49088 TICKS_DELAY_TO_DETERMINE_IF_DANGER_IS_STILL_AROUND + f I e field_49089 DANGER_DETECTED_RECENTLY_DANGER_THRESHOLD + f I f field_49090 nextPeekTimer + f Z g field_49091 dangerWasAround + m (Laqu;Lcgn;)Z a method_55740 checkExtraStartConditions + m (Laqu;Lcgn;J)V a method_55741 tick + m (Lcgn;)I a method_57001 pickNextPeekTimer + m (Laqu;Lcgn;J)Z b method_55742 canStillUse + m (Laqu;Lcgn;J)V c method_55743 start + m (Laqu;Lcgn;J)V d method_55744 stop + m ()V + m ()V +c cgo$b net/minecraft/class_9071$class_9073 net/minecraft/world/entity/animal/armadillo/ArmadilloAi$ArmadilloPanic + m (Laqu;Lcgn;J)V a method_57002 start + m (Lbtw;)Lawu; a method_60726 method_60726 + m (F)V +c cgp net/minecraft/class_9074 net/minecraft/world/entity/animal/armadillo/package-info +c cgq net/minecraft/class_5762 net/minecraft/world/entity/animal/axolotl/Axolotl + f I cc field_30388 TOTAL_PLAYDEAD_TIME + f Lcom/google/common/collect/ImmutableList; cd field_28333 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; ce field_28334 MEMORY_TYPES + f D cg field_30389 PLAYER_REGEN_DETECTION_RANGE + f I ch field_30390 RARE_VARIANT_CHANCE + f Ljava/lang/String; ci field_30391 VARIANT_TAG + f Lajw; cj field_28335 DATA_VARIANT + f Lajw; ck field_28336 DATA_PLAYING_DEAD + f Lajw; cl field_28337 FROM_BUCKET + f I cm field_30392 AXOLOTL_TOTAL_AIR_SUPPLY + f I cn field_33485 REHYDRATE_AIR_SUPPLY + f I co field_34005 REGEN_BUFF_MAX_DURATION + f Ljava/util/Map; cp field_33764 modelRotationValues + f I cq field_30393 REGEN_BUFF_BASE_DURATION + m (Layw;)Z a method_33221 useRareVariant + m (Lbsx;Lddl;Lbtr;Ljd;Layw;)Z a method_38987 checkAxolotlSpawnRules + m (Lcgq$d;)V a method_33219 setVariant + m (Lcgq;Lbtn;)V a method_35175 onStopAttacking + m (Lcmx;)V a method_33223 applySupportingEffects + m ()Lcgq$d; gk method_33225 getVariant + m ()Z gl method_33226 isPlayingDead + m ()Lbuv$a; gm method_33227 createAttributes + m (Lub;)V i method_57305 method_57305 + m ()V s method_36282 rehydrate + m (I)V t method_33230 handleAirSupply + m (Z)V y method_33231 setPlayingDead + m (Lbsx;Ldcw;)V + m ()V +c cgq$a net/minecraft/class_5762$class_5763 net/minecraft/world/entity/animal/axolotl/Axolotl$AxolotlGroupData + f [Lcgq$d; a field_28338 types + m (Layw;)Lcgq$d; a method_33232 getVariant + m ([Lcgq$d;)V +c cgq$b net/minecraft/class_5762$class_5764 net/minecraft/world/entity/animal/axolotl/Axolotl$AxolotlLookControl + f Lcgq; h field_28339 field_28339 + m (Lcgq;Lcgq;I)V +c cgq$c net/minecraft/class_5762$class_5765 net/minecraft/world/entity/animal/axolotl/Axolotl$AxolotlMoveControl + f Lcgq; l field_28340 axolotl + m (Lcgq;)V +c cgq$d net/minecraft/class_5762$class_5767 net/minecraft/world/entity/animal/axolotl/Axolotl$Variant + f Lcgq$d; a field_28341 LUCY + f Lcgq$d; b field_28342 WILD + f Lcgq$d; c field_28343 GOLD + f Lcgq$d; d field_28344 CYAN + f Lcgq$d; e field_28345 BLUE + f Lcom/mojang/serialization/Codec; f field_41585 CODEC + f Ljava/util/function/IntFunction; g field_28346 BY_ID + f I h field_28347 id + f Ljava/lang/String; i field_28348 name + f Z j field_28349 common + f [Lcgq$d; k field_28350 $VALUES + m ()I a method_33233 getId + m (I)Lcgq$d; a method_47928 byId + m (Layw;)Lcgq$d; a method_33235 getCommonSpawnVariant + m (Layw;Z)Lcgq$d; a method_33236 getSpawnVariant + m (ZLcgq$d;)Z a method_33237 method_33237 + m ()Ljava/lang/String; b method_33238 getName + m (I)[Lcgq$d; b method_33234 method_33234 + m (Layw;)Lcgq$d; b method_33240 getRareSpawnVariant + m ()[Lcgq$d; d method_36644 $values + m (Ljava/lang/String;IILjava/lang/String;Z)V + m ()V +c cgr net/minecraft/class_5768 net/minecraft/world/entity/animal/axolotl/AxolotlAi + f Lbqc; a field_28351 ADULT_FOLLOW_RANGE + f F b field_30394 SPEED_MULTIPLIER_WHEN_MAKING_LOVE + f F c field_30395 SPEED_MULTIPLIER_ON_LAND + f F d field_30396 SPEED_MULTIPLIER_WHEN_IDLING_IN_WATER + f F e field_30397 SPEED_MULTIPLIER_WHEN_CHASING_IN_WATER + f F f field_30398 SPEED_MULTIPLIER_WHEN_FOLLOWING_ADULT_IN_WATER + m ()Ljava/util/function/Predicate; a method_33241 getTemptations + m (Lbtn;)Z a method_37457 canSetWalkTargetFromLookTarget + m (Lbuq;)Lbuq; a method_33243 makeBrain + m (Lcgq;)V a method_33244 updateActivity + m (Lcuq;)Z a method_58387 method_58387 + m (Lbtn;)F b method_33242 getSpeedModifierChasing + m (Lbuq;)V b method_33246 initPlayDeadActivity + m (Lcgq;)Ljava/util/Optional; b method_33247 findNearestValidAttackTarget + m (Lbtn;)F c method_33245 getSpeedModifierFollowingAdult + m (Lbuq;)V c method_33249 initFightActivity + m (Lbtn;)F d method_33248 getSpeedModifier + m (Lbuq;)V d method_33251 initCoreActivity + m (Lbuq;)V e method_33252 initIdleActivity + m ()V + m ()V +c cgs net/minecraft/class_5769 net/minecraft/world/entity/animal/axolotl/PlayDead + m (Laqu;Lcgq;)Z a method_33253 checkExtraStartConditions + m (Laqu;Lcgq;J)Z a method_33254 canStillUse + m (Laqu;Lcgq;J)V b method_33255 start + m ()V +c cgt net/minecraft/class_5770 net/minecraft/world/entity/animal/axolotl/ValidatePlayDead + m ()Lbvi; a method_47268 create + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47269 method_47269 + m (Lbyu$b;Lbyv;Lbyv;)Lbyx; a method_47270 method_47270 + m (Lbyu$b;Lbyv;Lbyv;Laqu;Lbtn;J)Z a method_47271 method_47271 + m ()V +c cgu net/minecraft/class_6052 net/minecraft/world/entity/animal/axolotl/package-info +c cgv net/minecraft/class_7689 net/minecraft/world/entity/animal/camel/Camel + f F cD field_40146 RUNNING_SPEED_BONUS + f F cE field_40147 DASH_VERTICAL_MOMENTUM + f F cF field_40148 DASH_HORIZONTAL_MOMENTUM + f I cG field_43388 DASH_MINIMUM_DURATION_TICKS + f I cH field_40149 SITDOWN_DURATION_TICKS + f I cI field_40133 STANDUP_DURATION_TICKS + f I cJ field_40134 IDLE_MINIMAL_DURATION_TICKS + f F cK field_40135 SITTING_HEIGHT_DIFFERENCE + f Lbsu; cL field_40136 SITTING_DIMENSIONS + f I cM field_40137 dashCooldown + f I cN field_40138 idleAnimationTimeout + f F cc field_45127 BABY_SCALE + f I cd field_40132 DASH_COOLDOWN_TICKS + f I ce field_41764 MAX_HEAD_Y_ROT + f Lajw; cg field_40139 DASH + f Lajw; ch field_40140 LAST_POSE_CHANGE_TICK + f Lbsm; ci field_40142 sitAnimationState + f Lbsm; cj field_40734 sitPoseAnimationState + f Lbsm; ck field_40143 sitUpAnimationState + f Lbsm; cl field_40144 idleAnimationState + f Lbsm; cm field_40145 dashAnimationState + m (J)V a method_45344 resetLastPoseChangeTick + m (ZFLbsu;F)D a method_45346 getBodyAnchorAnimationYOffset + m (J)V b method_48160 resetLastPoseChangeTickToFullStand + m (Laqu;Lbsl;)Lcgv; b method_45347 getBreedOffspring + m ()V gV method_45356 setupAnimationStates + m ()Z gW method_46398 isVisuallySittingDown + m ()Z gk method_52548 canCamelChangePose + m ()Z gn method_45350 isCamelSitting + m ()Z go method_48573 isCamelVisuallySitting + m ()Z gu method_45351 isInPoseTransition + m ()V gv method_45352 sitDown + m ()V gw method_45353 standUp + m ()V gx method_45354 standUpInstantly + m ()J gy method_45355 getPoseTime + m ()Lbuv$a; s method_45360 createAttributes + m ()Z t method_45357 refuseToMove + m ()Z x method_45361 isDashing + m (Z)V x method_45362 setDashing + m (Lbsx;Ldcw;)V + m ()V +c cgv$a net/minecraft/class_7689$class_7690 net/minecraft/world/entity/animal/camel/Camel$CamelBodyRotationControl + f Lcgv; a field_40151 field_40151 + m (Lcgv;Lcgv;)V +c cgv$b net/minecraft/class_7689$class_8784 net/minecraft/world/entity/animal/camel/Camel$CamelLookControl + f Lcgv; h field_46091 field_46091 + m (Lcgv;)V +c cgv$c net/minecraft/class_7689$class_8196 net/minecraft/world/entity/animal/camel/Camel$CamelMoveControl + f Lcgv; l field_42978 field_42978 + m (Lcgv;)V +c cgw net/minecraft/class_7691 net/minecraft/world/entity/animal/camel/CamelAi + f F a field_40152 SPEED_MULTIPLIER_WHEN_PANICKING + f F b field_40153 SPEED_MULTIPLIER_WHEN_IDLING + f F c field_40154 SPEED_MULTIPLIER_WHEN_TEMPTED + f F d field_40155 SPEED_MULTIPLIER_WHEN_FOLLOWING_ADULT + f F e field_40156 SPEED_MULTIPLIER_WHEN_MAKING_LOVE + f Lbqc; f field_40157 ADULT_FOLLOW_RANGE + f Lcom/google/common/collect/ImmutableList; g field_40158 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; h field_40159 MEMORY_TYPES + m ()Lbuq$b; a method_45363 brainProvider + m (Lbtn;)Ljava/lang/Double; a method_52549 method_52549 + m (Lbuq;)Lbuq; a method_45365 makeBrain + m (Lcgv;)V a method_45366 updateActivity + m (Lcgv;Layw;)V a method_45367 initMemories + m (Lcuq;)Z a method_58388 method_58388 + m ()Ljava/util/function/Predicate; b method_45368 getTemptations + m (Lbtn;)Ljava/lang/Float; b method_45364 method_45364 + m (Lbuq;)V b method_45369 initCoreActivity + m (Lbuq;)V c method_45370 initIdleActivity + m ()V + m ()V +c cgw$a net/minecraft/class_7691$class_7692 net/minecraft/world/entity/animal/camel/CamelAi$CamelPanic + m (Laqu;Lcgv;J)V a method_57003 start + m (F)V +c cgw$b net/minecraft/class_7691$class_7693 net/minecraft/world/entity/animal/camel/CamelAi$RandomSitting + f I c field_40160 minimalPoseTicks + m (Laqu;Lcgv;)Z a method_45371 checkExtraStartConditions + m (Laqu;Lcgv;J)V a method_45372 start + m (I)V +c cgx net/minecraft/class_7694 net/minecraft/world/entity/animal/camel/package-info +c cgy net/minecraft/class_7102 net/minecraft/world/entity/animal/frog/Frog + f Lcom/google/common/collect/ImmutableList; cc field_37449 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; cd field_37450 MEMORY_TYPES + f Ljava/lang/String; ce field_38720 VARIANT_KEY + f Lbsm; cg field_37451 jumpAnimationState + f Lbsm; ch field_37452 croakAnimationState + f Lbsm; ci field_37453 tongueAnimationState + f Lbsm; cj field_37456 swimIdleAnimationState + f Lajw; ck field_37457 DATA_VARIANT_ID + f Lajw; cl field_37458 DATA_TONGUE_TARGET_ID + f I cm field_37459 FROG_FALL_DAMAGE_REDUCTION + f Lakq; cn field_49988 DEFAULT_VARIANT + m (Lakr;)Lakq; a method_58389 method_58389 + m (Lbsr;)V c method_41352 setTongueTarget + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_43398 checkFrogSpawnRules + m ()Lbuv$a; gk method_41355 createAttributes + m (Ljm;)V i method_41353 setVariant + m (Lbtn;)Z j method_41358 canEat + m ()V s method_41359 eraseTongueTarget + m ()Ljava/util/Optional; t method_41360 getTongueTarget + m ()Ljm; x method_41354 getVariant + m (Lbsx;Ldcw;)V + m ()V +c cgy$a net/minecraft/class_7102$class_7103 net/minecraft/world/entity/animal/frog/Frog$FrogLookControl + f Lcgy; h field_37460 field_37460 + m (Lcgy;Lbtp;)V +c cgy$b net/minecraft/class_7102$class_7104 net/minecraft/world/entity/animal/frog/Frog$FrogNodeEvaluator + f Ljd$a; l field_37461 belowPos + m (Z)V +c cgy$c net/minecraft/class_7102$class_7105 net/minecraft/world/entity/animal/frog/Frog$FrogPathNavigation + m (Lcgy;Ldcw;)V +c cgz net/minecraft/class_7107 net/minecraft/world/entity/animal/frog/FrogAi + f F a field_37469 SPEED_MULTIPLIER_WHEN_PANICKING + f F b field_37471 SPEED_MULTIPLIER_WHEN_IDLING + f F c field_37472 SPEED_MULTIPLIER_ON_LAND + f F d field_37473 SPEED_MULTIPLIER_IN_WATER + f Lbqc; e field_37474 TIME_BETWEEN_LONG_JUMPS + f I f field_37475 MAX_LONG_JUMP_HEIGHT + f I g field_37476 MAX_LONG_JUMP_WIDTH + f F h field_49092 MAX_JUMP_VELOCITY_MULTIPLIER + f F i field_37478 SPEED_MULTIPLIER_WHEN_TEMPTED + m ()Ljava/util/function/Predicate; a method_41366 getTemptations + m (Lbtn;)Ljava/lang/Float; a method_41367 method_41367 + m (Lbtp;Ljd;)Z a method_45373 isAcceptableLandingSpot + m (Lbuq;)Lbuq; a method_41368 makeBrain + m (Lcgy;)V a method_41373 updateActivity + m (Lcgy;Layw;)V a method_41369 initMemories + m (Lcuq;)Z a method_58390 method_58390 + m (Lbtn;)Ljava/lang/Float; b method_41371 method_41371 + m (Lbuq;)V b method_41372 initCoreActivity + m (Lcgy;)Z b method_41375 canAttack + m (Lbuq;)V c method_41374 initIdleActivity + m (Lcgy;)Lavo; c method_41377 method_41377 + m (Lbuq;)V d method_41376 initSwimActivity + m (Lcgy;)Ljava/util/Optional; d method_41379 method_41379 + m (Lbuq;)V e method_41378 initLaySpawnActivity + m (Lcgy;)Ljava/util/Optional; e method_41381 method_41381 + m (Lbuq;)V f method_41380 initJumpActivity + m (Lcgy;)Ljava/util/Optional; f method_41383 method_41383 + m (Lbuq;)V g method_41382 initTongueActivity + m ()V + m ()V +c cha net/minecraft/class_7108 net/minecraft/world/entity/animal/frog/ShootTongue + f I c field_37479 TIME_OUT_DURATION + f I d field_38414 CATCH_ANIMATION_DURATION + f I e field_37480 TONGUE_ANIMATION_DURATION + f I f field_39452 UNREACHABLE_TONGUE_TARGETS_COOLDOWN_DURATION + f I g field_39453 MAX_UNREACHBLE_TONGUE_TARGETS_IN_MEMORY + f F h field_37481 EATING_DISTANCE + f F i field_37482 EATING_MOVEMENT_FACTOR + f I j field_37483 eatAnimationTimer + f I k field_37484 calculatePathCounter + f Lavo; l field_37485 tongueSound + f Lavo; m field_37486 eatSound + f Lexc; n field_37487 itemSpawnPos + f Lcha$a; o field_37489 state + m (Laqu;Lcgy;)Z a method_41384 checkExtraStartConditions + m (Laqu;Lcgy;J)Z a method_41385 canStillUse + m (Lcgy;Lbtn;)Z a method_44332 canPathfindToTarget + m (Laqu;Lcgy;)V b method_42667 eatEntity + m (Laqu;Lcgy;J)V b method_41387 start + m (Lcgy;Lbtn;)V b method_44333 addUnreachableTargetToMemory + m (Laqu;Lcgy;J)V c method_41388 stop + m (Laqu;Lcgy;J)V d method_41389 tick + m (Lavo;Lavo;)V +c cha$a net/minecraft/class_7108$class_7109 net/minecraft/world/entity/animal/frog/ShootTongue$State + f Lcha$a; a field_37492 MOVE_TO_TARGET + f Lcha$a; b field_38415 CATCH_ANIMATION + f Lcha$a; c field_37493 EAT_ANIMATION + f Lcha$a; d field_37494 DONE + f [Lcha$a; e field_37495 $VALUES + m ()[Lcha$a; a method_41390 $values + m (Ljava/lang/String;I)V + m ()V +c chb net/minecraft/class_7110 net/minecraft/world/entity/animal/frog/Tadpole + f I b field_37496 ticksToBeFrog + f F c field_39302 HITBOX_WIDTH + f Lcom/google/common/collect/ImmutableList; cc field_37498 MEMORY_TYPES + f I cd field_37499 age + f F d field_39303 HITBOX_HEIGHT + f Lcom/google/common/collect/ImmutableList; e field_37497 SENSOR_TYPES + m (Lcmx;Lcuq;)V a method_41391 feed + m (Lcmx;Lcuq;)V b method_41393 usePlayerItem + m (I)V c method_41392 ageUp + m ()Lbuv$a; gm method_41395 createAttributes + m ()I gn method_41396 getAge + m ()V go method_41397 ageUp + m ()I gp method_41398 getTicksLeftUntilAdult + m (Lub;)V i method_57306 method_57306 + m (Lcuq;)Z o method_41399 isFood + m (I)V s method_41394 setAge + m (Lbsx;Ldcw;)V + m ()V +c chc net/minecraft/class_7111 net/minecraft/world/entity/animal/frog/TadpoleAi + f F a field_37500 SPEED_MULTIPLIER_WHEN_PANICKING + f F b field_37502 SPEED_MULTIPLIER_WHEN_IDLING_IN_WATER + f F c field_39409 SPEED_MULTIPLIER_WHEN_TEMPTED + m (Lbtn;)Ljava/lang/Float; a method_44204 method_44204 + m (Lbuq;)Lbuq; a method_41400 makeBrain + m (Lchb;)V a method_41401 updateActivity + m (Lbuq;)V b method_41402 initCoreActivity + m (Lbuq;)V c method_41403 initIdleActivity + m ()V +c chd net/minecraft/class_7112 net/minecraft/world/entity/animal/frog/package-info +c che net/minecraft/class_6053 net/minecraft/world/entity/animal/goat/Goat + f Lbsu; cc field_30399 LONG_JUMPING_DIMENSIONS + f Lcom/google/common/collect/ImmutableList; cd field_30400 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; ce field_30401 MEMORY_TYPES + f I cg field_30402 GOAT_FALL_DAMAGE_REDUCTION + f D ch field_30403 GOAT_SCREAMING_CHANCE + f D ci field_39046 UNIHORN_CHANCE + f I cj field_34022 ADULT_ATTACK_DAMAGE + f I ck field_34023 BABY_ATTACK_DAMAGE + f Lajw; cl field_33486 DATA_IS_SCREAMING_GOAT + f Lajw; cm field_39047 DATA_HAS_LEFT_HORN + f Lajw; cn field_39048 DATA_HAS_RIGHT_HORN + f Z co field_33487 isLoweringHead + f I cp field_33488 lowerHeadTick + m (Laqu;Lbsl;)Lche; b method_35177 getBreedOffspring + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_38067 checkGoatSpawnRules + m ()Z gk method_43538 hasLeftHorn + m ()Z gl method_43539 hasRightHorn + m ()Z gm method_43540 dropHorn + m ()V gn method_43541 addHorns + m ()V go method_43542 removeHorns + m ()Z gu method_35178 isScreamingGoat + m ()F gv method_36283 getRammingXHeadRot + m ()Lcuq; s method_43690 createHorn + m ()Lbuv$a; t method_35179 createAttributes + m ()Lavo; x method_35180 getMilkingSound + m (Z)V x method_36284 setScreamingGoat + m (Lbsx;Ldcw;)V + m ()V +c chf net/minecraft/class_6054 net/minecraft/world/entity/animal/goat/GoatAi + f I a field_33490 RAM_PREPARE_TIME + f I b field_33491 RAM_MAX_DISTANCE + f I c field_33492 MAX_LONG_JUMP_HEIGHT + f I d field_33493 MAX_LONG_JUMP_WIDTH + f F e field_49093 MAX_JUMP_VELOCITY_MULTIPLIER + f I f field_33495 RAM_MIN_DISTANCE + f F g field_33496 ADULT_RAM_KNOCKBACK_FORCE + f F h field_33497 BABY_RAM_KNOCKBACK_FORCE + f Lbqc; i field_30407 ADULT_FOLLOW_RANGE + f F j field_30406 SPEED_MULTIPLIER_WHEN_IDLING + f F k field_30408 SPEED_MULTIPLIER_WHEN_FOLLOWING_ADULT + f F l field_30409 SPEED_MULTIPLIER_WHEN_TEMPTED + f F m field_30410 SPEED_MULTIPLIER_WHEN_PANICKING + f F n field_33498 SPEED_MULTIPLIER_WHEN_PREPARING_TO_RAM + f Lbqc; o field_30411 TIME_BETWEEN_LONG_JUMPS + f Lbqc; p field_33499 TIME_BETWEEN_RAMS + f Lbqc; q field_33693 TIME_BETWEEN_RAMS_SCREAMER + f Lcef; r field_33500 RAM_TARGET_CONDITIONS + f F s field_33501 SPEED_MULTIPLIER_WHEN_RAMMING + m ()Ljava/util/function/Predicate; a method_35181 getTemptations + m (Lbtn;)Ljava/lang/Float; a method_35182 method_35182 + m (Lbuq;)Lbuq; a method_35183 makeBrain + m (Lche;)V a method_35186 updateActivity + m (Lche;Layw;)V a method_35184 initMemories + m (Lcuq;)Z a method_58391 method_58391 + m (Lbtn;)Z b method_36285 method_36285 + m (Lbuq;)V b method_35185 initCoreActivity + m (Lche;)Lavo; b method_36287 method_36287 + m (Lbuq;)V c method_35187 initIdleActivity + m (Lche;)I c method_36553 method_36553 + m (Lbuq;)V d method_35188 initLongJumpActivity + m (Lche;)Lavo; d method_43543 method_43543 + m (Lbuq;)V e method_36288 initRamActivity + m (Lche;)Lavo; e method_36286 method_36286 + m (Lche;)D f method_36289 method_36289 + m (Lche;)Lbqc; g method_36290 method_36290 + m (Lche;)Lavo; h method_36291 method_36291 + m ()V + m ()V +c chg net/minecraft/class_6055 net/minecraft/world/entity/animal/goat/package-info +c chh net/minecraft/class_1492 net/minecraft/world/entity/animal/horse/AbstractChestedHorse + f Lajw; cc field_6943 DATA_ID_CHEST + f Lbsu; cd field_47806 babyDimensions + m (Lcmx;Lcuq;)V d method_45374 equipChest + m ()Lbuv$a; s method_26898 createBaseChestedHorseAttributes + m ()Z t method_6703 hasChest + m ()V x method_6705 playChestEquipsSound + m (Z)V x method_6704 setChest + m (Lbsx;Ldcw;)V + m ()V +c chh$1 net/minecraft/class_1492$1 net/minecraft/world/entity/animal/horse/AbstractChestedHorse$1 + f Lchh; b field_27867 field_27867 + m (Lchh;)V +c chi net/minecraft/class_1496 net/minecraft/world/entity/animal/horse/AbstractHorse + f Z cA field_6964 canGallop + f I cB field_6975 gallopSoundCounter + f Lajw; cD field_6959 DATA_ID_FLAGS + f I cE field_30419 FLAG_TAME + f I cF field_30420 FLAG_SADDLE + f I cG field_30421 FLAG_BRED + f I cH field_30422 FLAG_EATING + f I cI field_30423 FLAG_STANDING + f I cJ field_30424 FLAG_OPEN_MOUTH + f I cK field_6971 eatingCounter + f I cL field_6973 mouthCounter + f I cM field_6970 standCounter + f F cN field_6969 eatAnim + f F cO field_6966 eatAnimO + f F cP field_6967 standAnim + f F cQ field_6963 standAnimO + f F cR field_6965 mouthAnim + f F cS field_6961 mouthAnimO + f Ljava/util/UUID; cT field_42462 owner + f Lbqk; cU field_48830 bodyArmorAccess + f F cc field_42641 MIN_MOVEMENT_SPEED + f F cd field_42642 MAX_MOVEMENT_SPEED + f F ce field_42643 MIN_JUMP_STRENGTH + f F cg field_42644 MAX_JUMP_STRENGTH + f F ch field_42645 MIN_HEALTH + f F ci field_42646 MAX_HEALTH + f F cj field_42979 BACKWARDS_MOVE_SPEED_FACTOR + f F ck field_42980 SIDEWAYS_MOVE_SPEED_FACTOR + f Ljava/util/function/Predicate; cl field_6956 PARENT_HORSE_SELECTOR + f Lcef; cm field_18118 MOMMY_TARGETING + f I cn field_30413 EQUIPMENT_SLOT_OFFSET + f I co field_30414 CHEST_SLOT_OFFSET + f I cp field_30415 INVENTORY_SLOT_OFFSET + f D cq field_42647 BREEDING_CROSS_FACTOR + f I cr field_30416 INV_SLOT_SADDLE + f I cs field_30418 INV_BASE_COUNT + f I ct field_6957 tailCounter + f I cu field_6958 sprintCounter + f Z cv field_6968 isJumping + f Lbra; cw field_6962 inventory + f I cx field_6955 temper + f F cy field_6976 playerJumpPendingScale + f Z cz field_6960 allowStandSliding + m (Z)V A method_6751 setBred + m (Z)V B method_6740 setEating + m (Z)V C method_6737 setStanding + m (Z)V D method_6760 spawnTamingParticles + m (F)F H method_6739 getEatAnim + m (F)F I method_6767 getStandAnim + m (F)F J method_6772 getMouthAnim + m (DDDDLayw;)D a method_49123 createOffspringAttribute + m (Layw;)V a method_6001 randomizeAttributes + m (Lbsl;Lchi;)V a method_6743 setOffspringAttributes + m (Lbsl;Lchi;Ljm;DD)V a method_49124 setOffspringAttribute + m (Lcmx;)V a method_6726 doPlayerRide + m (Lcmx;Lcuq;)Z a method_6742 handleEating + m (Ldnm;)V a method_6761 playGallopSound + m (Lexc;Lbtn;)Lexc; a method_27930 getDismountLocationInDirection + m (Ljava/util/function/DoubleSupplier;)D a method_6774 generateJumpStrength + m (Ljava/util/function/IntUnaryOperator;)F a method_6754 generateMaxHealth + m ()I af_ method_6702 getInventoryColumns + m (FLexc;)V b method_45343 executeRidersJump + m (Lbqk;)Z b method_33338 hasInventoryChanged + m (Lcmx;Lcuq;)V b method_45375 equipBodyArmor + m (Ldnm;)Z b method_49996 isWoodSoundType + m (Ljava/util/UUID;)V b method_6732 setOwnerUUID + m (Ljava/util/function/DoubleSupplier;)D b method_6728 generateSpeed + m (Lcmx;Lcuq;)Lbqr; c method_30009 fedFood + m (IZ)V d method_6769 setFlag + m (Lcmx;)Z g method_6752 tameWithName + m ()V gA method_6764 addBehaviourGoals + m ()Z gB method_6763 isJumping + m ()Z gC method_6724 isEating + m ()Z gD method_6736 isStanding + m ()Z gE method_6744 isBred + m ()I gF method_6729 getTemper + m ()I gG method_6750 getInventorySize + m ()V gH method_6721 createInventory + m ()V gI method_56679 syncSaddleToClients + m ()Lavo; gJ method_6747 getAngrySound + m ()Lbuv$a; gK method_26899 createBaseHorseAttributes + m ()I gL method_6755 getMaxTemper + m ()V gM method_6746 followMommy + m ()Z gN method_6762 canEatGrass + m ()Lavo; gO method_45376 getAmbientStandSound + m ()V gP method_6748 standIfPossible + m ()V gQ method_6757 makeMad + m ()V gR method_6723 playJumpSound + m ()Z gS method_6734 canParent + m ()I gT method_45377 getAmbientStandInterval + m ()Lbqk; gU method_56680 getBodyArmorAccess + m ()Z gl method_45349 canPerformRearing + m ()Lavo; gm method_28368 getEatingSound + m ()D gn method_49125 method_49125 + m ()D go method_49126 method_49126 + m ()D gu method_49127 method_49127 + m ()D gv method_49128 method_49128 + m ()Z gz method_6727 isTamed + m (Lbtn;)Lexb; j method_49489 getRiddenRotation + m (Lbtn;)Z k method_6741 method_6741 + m (Lcuq;)Z n method_58392 method_58392 + m ()V s method_6733 eating + m ()V t method_6759 moveTail + m (I)Z t method_6730 getFlag + m (I)V u method_6749 setTemper + m (I)I v method_6745 modifyTemper + m (I)I w method_60977 getInventorySize + m ()V x method_6738 openMouth + m (I)I x method_49129 method_49129 + m (I)I y method_49130 method_49130 + m (Z)V y method_6766 setTamed + m (Z)V z method_6758 setIsJumping + m (Lbsx;Ldcw;)V + m ()V +c chi$1 net/minecraft/class_1496$1 net/minecraft/world/entity/animal/horse/AbstractHorse$1 + f Lchi; b field_48831 field_48831 + m (Lchi;)V +c chi$2 net/minecraft/class_1496$2 net/minecraft/world/entity/animal/horse/AbstractHorse$2 + f Lchi; b field_48832 field_48832 + m (Lchi;)V +c chj net/minecraft/class_1495 net/minecraft/world/entity/animal/horse/Donkey + m (Lbsx;Ldcw;)V +c chk net/minecraft/class_1498 net/minecraft/world/entity/animal/horse/Horse + f Lajw; cc field_6990 DATA_ID_TYPE_VARIANT + f Lbsu; cd field_47807 BABY_DIMENSIONS + m (Lchr;)V a method_47873 setVariant + m (Lchr;Lchm;)V a method_27076 setVariantAndMarkings + m ()Lchr; s method_27077 getVariant + m ()Lchm; t method_27078 getMarkings + m ()I x method_6788 getTypeVariant + m (I)V x method_6783 setTypeVariant + m (Lbsx;Ldcw;)V + m ()V +c chk$a net/minecraft/class_1498$class_1499 net/minecraft/world/entity/animal/horse/Horse$HorseGroupData + f Lchr; a field_6994 variant + m (Lchr;)V +c chl net/minecraft/class_1501 net/minecraft/world/entity/animal/horse/Llama + f I cc field_30425 MAX_STRENGTH + f Lajw; cd field_6998 DATA_STRENGTH_ID + f Lajw; ce field_6996 DATA_VARIANT_ID + f Lbsu; cg field_47808 BABY_DIMENSIONS + f Z ch field_6999 didSpit + f Lchl; ci field_7000 caravanHead + f Lchl; cj field_6997 caravanTail + m (Z)V E method_6808 setDidSpit + m (Lchl$d;)V a method_47874 setVariant + m (Lchl;)V a method_6791 joinCaravan + m (Laqu;Lbsl;)Lchl; b method_6804 getBreedOffspring + m (Layw;)V b method_6796 setRandomStrength + m ()Z gV method_6793 hasCaravanTail + m ()Z gW method_6805 inCaravan + m ()Lchl; gX method_6806 getCaravanHead + m ()Z gn method_6807 isTraderLlama + m ()I go method_6803 getStrength + m ()Lbuv$a; gu method_26900 createAttributes + m ()Lchl$d; gv method_6809 getVariant + m ()Lcti; gw method_6800 getSwag + m ()Lchl; gx method_18004 makeNewLlama + m ()V gy method_6797 leaveCaravan + m (Lbtn;)V k method_6792 spit + m (Lcuq;)Lcti; n method_6794 getDyeColor + m (Lcuq;)Z p method_58393 method_58393 + m (I)V x method_6802 setStrength + m (Lbsx;Ldcw;)V + m ()V +c chl$a net/minecraft/class_1501$class_1502 net/minecraft/world/entity/animal/horse/Llama$LlamaAttackWolfGoal + m (Lbtn;)Z b method_18446 method_18446 + m (Lchl;)V +c chl$b net/minecraft/class_1501$class_1503 net/minecraft/world/entity/animal/horse/Llama$LlamaGroupData + f Lchl$d; a field_7001 variant + m (Lchl$d;)V +c chl$c net/minecraft/class_1501$class_1504 net/minecraft/world/entity/animal/horse/Llama$LlamaHurtByTargetGoal + m (Lchl;)V +c chl$d net/minecraft/class_1501$class_7993 net/minecraft/world/entity/animal/horse/Llama$Variant + f Lchl$d; a field_41586 CREAMY + f Lchl$d; b field_41587 WHITE + f Lchl$d; c field_41588 BROWN + f Lchl$d; d field_41589 GRAY + f Lcom/mojang/serialization/Codec; e field_41590 CODEC + f Ljava/util/function/IntFunction; f field_41591 BY_ID + f I g field_41592 id + f Ljava/lang/String; h field_41593 name + f [Lchl$d; i field_41594 $VALUES + m ()I a method_47875 getId + m (I)Lchl$d; a method_47876 byId + m ()[Lchl$d; b method_47877 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c chm net/minecraft/class_5148 net/minecraft/world/entity/animal/horse/Markings + f Lchm; a field_23808 NONE + f Lchm; b field_23809 WHITE + f Lchm; c field_23810 WHITE_FIELD + f Lchm; d field_23811 WHITE_DOTS + f Lchm; e field_23812 BLACK_DOTS + f Ljava/util/function/IntFunction; f field_23813 BY_ID + f I g field_23814 id + f [Lchm; h field_23815 $VALUES + m ()I a method_27079 getId + m (I)Lchm; a method_27080 byId + m ()[Lchm; b method_36645 $values + m (Ljava/lang/String;II)V + m ()V +c chn net/minecraft/class_1500 net/minecraft/world/entity/animal/horse/Mule + m (Lbsx;Ldcw;)V +c cho net/minecraft/class_1506 net/minecraft/world/entity/animal/horse/SkeletonHorse + f Lchp; cc field_7003 skeletonTrapGoal + f I cd field_30427 TRAP_MAX_LIFE + f Lbsu; ce field_47809 BABY_DIMENSIONS + f Z cg field_7005 isTrap + f I ch field_7004 trapTime + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_55001 checkSkeletonHorseSpawnRules + m ()Lbuv$a; s method_26901 createAttributes + m ()Z t method_6812 isTrap + m (Z)V x method_6813 setTrap + m (Lbsx;Ldcw;)V + m ()V +c chp net/minecraft/class_1505 net/minecraft/world/entity/animal/horse/SkeletonTrapGoal + f Lcho; a field_7002 horse + m (Lbqp;)Lchi; a method_6810 createHorse + m (Lbqp;Lchi;)Lckl; a method_6811 createSkeleton + m (Lckl;Lbsy;Lbqp;)V a method_59939 enchant + m (Lcho;)V +c chq net/minecraft/class_3986 net/minecraft/world/entity/animal/horse/TraderLlama + f I cc field_17716 despawnDelay + m ()V gZ method_20501 maybeDespawn + m ()Z ha method_20502 canDespawn + m ()Z hb method_20503 isLeashedToWanderingTrader + m ()Z hc method_20504 isLeashedToSomethingOtherThanTheWanderingTrader + m (I)V x method_35189 setDespawnDelay + m (Lbsx;Ldcw;)V +c chq$a net/minecraft/class_3986$class_3987 net/minecraft/world/entity/animal/horse/TraderLlama$TraderLlamaDefendWanderingTraderGoal + f Lchl; a field_17718 llama + f Lbtn; b field_17719 ownerLastHurtBy + f I c field_17720 timestamp + m (Lchl;)V +c chr net/minecraft/class_5149 net/minecraft/world/entity/animal/horse/Variant + f Lchr; a field_23816 WHITE + f Lchr; b field_23817 CREAMY + f Lchr; c field_23818 CHESTNUT + f Lchr; d field_23819 BROWN + f Lchr; e field_23820 BLACK + f Lchr; f field_23821 GRAY + f Lchr; g field_23822 DARK_BROWN + f Lcom/mojang/serialization/Codec; h field_41595 CODEC + f Ljava/util/function/IntFunction; i field_23823 BY_ID + f I j field_23824 id + f Ljava/lang/String; k field_41596 name + f [Lchr; l field_23825 $VALUES + m ()I a method_27082 getId + m (I)Lchr; a method_27083 byId + m ()[Lchr; b method_36646 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c chs net/minecraft/class_1507 net/minecraft/world/entity/animal/horse/ZombieHorse + f Lbsu; cc field_47810 BABY_DIMENSIONS + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_55002 checkZombieHorseSpawnRules + m ()Lbuv$a; s method_26902 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c cht net/minecraft/class_6056 net/minecraft/world/entity/animal/horse/package-info +c chu net/minecraft/class_6057 net/minecraft/world/entity/animal/package-info +c chv net/minecraft/class_8153 net/minecraft/world/entity/animal/sniffer/Sniffer + f Lbsm; cc field_42650 feelingHappyAnimationState + f Lbsm; cd field_42651 scentingAnimationState + f Lbsm; ce field_42652 sniffingAnimationState + f Lbsm; cg field_42654 diggingAnimationState + f Lbsm; ch field_42655 risingAnimationState + f I ci field_42656 DIGGING_PARTICLES_DELAY_TICKS + f I cj field_42657 DIGGING_PARTICLES_DURATION_TICKS + f I ck field_42658 DIGGING_PARTICLES_AMOUNT + f I cl field_42659 DIGGING_DROP_SEED_OFFSET_TICKS + f I cm field_42661 SNIFFER_BABY_AGE_TICKS + f F cn field_44785 DIGGING_BB_HEIGHT_OFFSET + f Lbsu; co field_44786 DIGGING_DIMENSIONS + f Lajw; cp field_42662 DATA_STATE + f Lajw; cq field_42663 DATA_DROP_SEED_AT_TICK + m (Lbsm;)Lchv; a method_49131 emitDiggingParticles + m (Lchv$a;)Lchv; a method_49132 transitionTo + m (Ljd;Ljl;)Z a method_51154 method_51154 + m (Lchv$a;)Lchv; b method_49133 setState + m ()Ljava/util/stream/Stream; gA method_49143 getExploredPositions + m ()V gB method_49144 playSearchingSound + m ()Z gk method_51155 canSniff + m ()Z gl method_49150 canPlayDiggingSound + m ()Ljava/util/Optional; gm method_49134 calculateDigPosition + m ()Z gn method_49135 canDig + m ()Ljd; go method_51508 getHeadBlock + m ()Lexc; gu method_49137 getHeadPosition + m ()Lchv$a; gv method_49138 getState + m ()V gw method_49139 resetAnimations + m ()Lchv; gx method_51156 onScentingStart + m ()Lchv; gy method_49141 onDiggingStart + m ()V gz method_49142 dropSeed + m (Ljd;)Z h method_49140 canDig + m (Ljd;)Lchv; i method_49145 storeExploredPosition + m (Ljd;)Z j method_51157 method_51157 + m ()Lbuv$a; s method_49146 createAttributes + m ()Z t method_51301 isSearching + m (I)Lexc; t method_49148 method_49148 + m ()Z x method_51158 isTempted + m (Z)Lchv; x method_49149 onDiggingComplete + m (Lbsx;Ldcw;)V + m ()V +c chv$a net/minecraft/class_8153$class_8154 net/minecraft/world/entity/animal/sniffer/Sniffer$State + f Lchv$a; a field_42665 IDLING + f Lchv$a; b field_42666 FEELING_HAPPY + f Lchv$a; c field_42667 SCENTING + f Lchv$a; d field_42668 SNIFFING + f Lchv$a; e field_42669 SEARCHING + f Lchv$a; f field_42670 DIGGING + f Lchv$a; g field_42671 RISING + f Ljava/util/function/IntFunction; h field_48340 BY_ID + f Lyx; i field_48341 STREAM_CODEC + f I j field_48342 id + f [Lchv$a; k field_42672 $VALUES + m ()I a method_56085 id + m ()[Lchv$a; b method_49151 $values + m (Ljava/lang/String;II)V + m ()V +c chw net/minecraft/class_8155 net/minecraft/world/entity/animal/sniffer/SnifferAi + f Ljava/util/List; a field_42673 SENSOR_TYPES + f Ljava/util/List; b field_42674 MEMORY_TYPES + f Lorg/slf4j/Logger; c field_42675 LOGGER + f I d field_42676 MAX_LOOK_DISTANCE + f I e field_42677 SNIFFING_COOLDOWN_TICKS + f F f field_42678 SPEED_MULTIPLIER_WHEN_IDLING + f F g field_42679 SPEED_MULTIPLIER_WHEN_PANICKING + f F h field_42680 SPEED_MULTIPLIER_WHEN_SNIFFING + f F i field_44476 SPEED_MULTIPLIER_WHEN_TEMPTED + m ()Ljava/util/function/Predicate; a method_51159 getTemptations + m (Lbtn;)Ljava/lang/Double; a method_52174 method_52174 + m (Lbuq;)Lbuq; a method_49152 makeBrain + m (Lchv;)V a method_49153 updateActivity + m (Lcuq;)Z a method_58394 method_58394 + m (Lbtn;)Ljava/lang/Float; b method_51160 method_51160 + m (Lbuq;)V b method_49154 initCoreActivity + m (Lchv;)Lchv; b method_51161 resetSniffing + m (Lbuq;)V c method_49155 initSniffingActivity + m (Lbuq;)V d method_49156 initDigActivity + m (Lbuq;)V e method_49157 initIdleActivity + m ()V + m ()V +c chw$1 net/minecraft/class_8155$1 net/minecraft/world/entity/animal/sniffer/SnifferAi$1 + m (Laqu;Lchv;J)V a method_57004 start + m (F)V +c chw$2 net/minecraft/class_8155$2 net/minecraft/world/entity/animal/sniffer/SnifferAi$2 + m (Lbsx;)V +c chw$3 net/minecraft/class_8155$3 net/minecraft/world/entity/animal/sniffer/SnifferAi$3 + m (Ljava/util/function/Function;Ljava/util/function/Function;)V +c chw$a net/minecraft/class_8155$class_8156 net/minecraft/world/entity/animal/sniffer/SnifferAi$Digging + m (Laqu;Lchv;)Z a method_49158 checkExtraStartConditions + m (Laqu;Lchv;J)Z a method_49159 canStillUse + m (Laqu;Lchv;J)V b method_49160 start + m (Laqu;Lchv;J)V c method_49161 stop + m (II)V +c chw$b net/minecraft/class_8155$class_8157 net/minecraft/world/entity/animal/sniffer/SnifferAi$FeelingHappy + m (Laqu;Lchv;J)Z a method_49162 canStillUse + m (Laqu;Lchv;J)V b method_49163 start + m (Laqu;Lchv;J)V c method_49164 stop + m (II)V +c chw$c net/minecraft/class_8155$class_8158 net/minecraft/world/entity/animal/sniffer/SnifferAi$FinishedDigging + m (Laqu;Lchv;)Z a method_49165 checkExtraStartConditions + m (Laqu;Lchv;J)Z a method_49166 canStillUse + m (Laqu;Lchv;J)V b method_49167 start + m (Laqu;Lchv;J)V c method_49168 stop + m (I)V +c chw$d net/minecraft/class_8155$class_8159 net/minecraft/world/entity/animal/sniffer/SnifferAi$Scenting + m (Laqu;Lchv;)Z a method_51162 checkExtraStartConditions + m (Laqu;Lchv;J)Z a method_49169 canStillUse + m (Laqu;Lchv;J)V b method_49170 start + m (Laqu;Lchv;J)V c method_49171 stop + m (II)V +c chw$e net/minecraft/class_8155$class_8160 net/minecraft/world/entity/animal/sniffer/SnifferAi$Searching + m (Laqu;Lchv;)Z a method_49172 checkExtraStartConditions + m (Laqu;Lchv;J)Z a method_49173 canStillUse + m (Laqu;Lchv;J)V b method_49174 start + m (Laqu;Lchv;J)V c method_49175 stop + m ()V +c chw$f net/minecraft/class_8155$class_8161 net/minecraft/world/entity/animal/sniffer/SnifferAi$Sniffing + m (Laqu;Lchv;)Z a method_49176 checkExtraStartConditions + m (Laqu;Lchv;J)Z a method_49177 canStillUse + m (Lchv;Ljd;)V a method_49178 method_49178 + m (Laqu;Lchv;J)V b method_49179 start + m (Laqu;Lchv;J)V c method_49180 stop + m (II)V +c chx net/minecraft/class_9235 net/minecraft/world/entity/animal/sniffer/package-info +c chy net/minecraft/class_1508 net/minecraft/world/entity/boss/EnderDragonPart + f Lcia; b field_7007 parentMob + f Ljava/lang/String; c field_7006 name + f Lbsu; d field_18119 size + m (Lcia;Ljava/lang/String;FF)V +c chz net/minecraft/class_1511 net/minecraft/world/entity/boss/enderdragon/EndCrystal + f I b field_7034 time + f Lajw; c field_7033 DATA_BEAM_TARGET + f Lajw; d field_7035 DATA_SHOW_BOTTOM + m (Lbrk;)V a method_6835 onDestroyedBy + m (Ljd;)V a method_6837 setBeamTarget + m (Z)V a method_6839 setShowBottom + m ()Ljd; p method_6838 getBeamTarget + m ()Z s method_6836 showsBottom + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V + m ()V +c cia net/minecraft/class_1510 net/minecraft/world/entity/boss/enderdragon/EnderDragon + f Lajw; b field_7013 DATA_PHASE + f F cA field_7029 sittingDamageReceived + f [Lepq; cB field_7012 nodes + f [I cD field_7025 nodeAdjacency + f Lepo; cE field_7008 openSet + f [[D c field_7026 positions + f F cb field_7019 oFlapTime + f F cc field_7030 flapTime + f Z cd field_7027 inWall + f I ce field_7031 dragonDeathTime + f F cf field_20865 yRotA + f Lchz; cg field_7024 nearestCrystal + f Lorg/slf4j/Logger; ch field_7021 LOGGER + f Lcef; ci field_18120 CRYSTAL_DESTROY_TARGETING + f I cj field_30428 GROWL_INTERVAL_MIN + f I ck field_30429 GROWL_INTERVAL_MAX + f F cl field_30430 SITTING_ALLOWED_DAMAGE_PERCENTAGE + f Ljava/lang/String; cm field_33910 DRAGON_DEATH_TIME_KEY + f Ljava/lang/String; cn field_33911 DRAGON_PHASE_KEY + f [Lchy; co field_7032 subEntities + f Lchy; cp field_7011 neck + f Lchy; cq field_7023 body + f Lchy; cr field_7020 tail1 + f Lchy; cs field_7009 tail2 + f Lchy; ct field_7022 tail3 + f Lchy; cu field_7015 wing1 + f Lchy; cv field_7014 wing2 + f Ldxb; cw field_7016 dragonFight + f Ljd; cx field_44875 fightOrigin + f Lcir; cy field_7028 phaseManager + f I cz field_7018 growlTime + f I d field_7010 posPointer + f Lchy; e field_7017 head + m (F)Lexc; H method_6834 getHeadLookVector + m (IF)[D a method_6817 getLatencyPos + m (IILepq;)Leps; a method_6833 findPath + m (I[D[D)F a method_6823 getHeadPartYOffset + m (Laqu;Ljava/util/List;)V a method_6825 knockBack + m (Lchy;DDD)V a method_22863 tickPart + m (Lchy;Lbrk;F)Z a method_6816 hurt + m (Lchz;Ljd;Lbrk;)V a method_6828 onCrystalDestroyed + m (Ldxb;)V a method_51852 setDragonFight + m (Lepq;Lepq;)Leps; a method_6826 reconstructPath + m (Lewx;)Z b method_6821 checkWalls + m (Ljava/util/List;)V b method_6827 hurt + m (Ljd;)V c method_51853 setFightOrigin + m (Lbrk;F)Z g method_6819 reallyHurt + m ()[Lchy; gg method_5690 getSubEntities + m ()Lcir; gh method_6831 getPhaseManager + m ()Ldxb; gi method_6829 getDragonFight + m ()F gj method_6820 getHeadYOffset + m ()V gk method_6830 checkCrystals + m (D)F i method_6832 rotWrap + m (DDD)I q method_6822 findClosestNode + m ()Ljd; s method_51854 getFightOrigin + m ()Lbuv$a; t method_26903 createAttributes + m ()I x method_6818 findClosestNode + m (Lbsx;Ldcw;)V + m ()V +c cib net/minecraft/class_6058 net/minecraft/world/entity/boss/enderdragon/package-info +c cic net/minecraft/class_1512 net/minecraft/world/entity/boss/enderdragon/phases/AbstractDragonPhaseInstance + f Lcia; a field_7036 dragon + m (Lcia;)V +c cid net/minecraft/class_1514 net/minecraft/world/entity/boss/enderdragon/phases/AbstractDragonSittingPhase + m (Lcia;)V +c cie net/minecraft/class_1513 net/minecraft/world/entity/boss/enderdragon/phases/DragonChargePlayerPhase + f Lorg/slf4j/Logger; b field_7039 LOGGER + f I c field_30431 CHARGE_RECOVERY_TIME + f Lexc; d field_7038 targetLocation + f I e field_7037 timeSinceCharge + m (Lexc;)V a method_6840 setTarget + m (Lcia;)V + m ()V +c cif net/minecraft/class_1515 net/minecraft/world/entity/boss/enderdragon/phases/DragonDeathPhase + f Lexc; b field_7041 targetLocation + f I c field_7040 time + m (Lcia;)V +c cig net/minecraft/class_1517 net/minecraft/world/entity/boss/enderdragon/phases/DragonHoldingPatternPhase + f Lcef; b field_18121 NEW_TARGET_TARGETING + f Leps; c field_7043 currentPath + f Lexc; d field_7045 targetLocation + f Z e field_7044 clockwise + m (Lcmx;)V a method_6843 strafePlayer + m ()V j method_6841 findNewTarget + m ()V k method_6842 navigateToNextPathNode + m (Lcia;)V + m ()V +c cih net/minecraft/class_1516 net/minecraft/world/entity/boss/enderdragon/phases/DragonHoverPhase + f Lexc; b field_7042 targetLocation + m (Lcia;)V +c cii net/minecraft/class_1519 net/minecraft/world/entity/boss/enderdragon/phases/DragonLandingApproachPhase + f Lcef; b field_18122 NEAR_EGG_TARGETING + f Leps; c field_7047 currentPath + f Lexc; d field_7048 targetLocation + m ()V j method_6844 findNewTarget + m ()V k method_6845 navigateToNextPathNode + m (Lcia;)V + m ()V +c cij net/minecraft/class_1518 net/minecraft/world/entity/boss/enderdragon/phases/DragonLandingPhase + f Lexc; b field_7046 targetLocation + m (Lcia;)V +c cik net/minecraft/class_1521 net/minecraft/world/entity/boss/enderdragon/phases/DragonPhaseInstance + m ()Z a method_6848 isSitting + m (Lbrk;F)F a method_6852 onHurt + m (Lchz;Ljd;Lbrk;Lcmx;)V a method_6850 onCrystalDestroyed + m ()V b method_6853 doClientTick + m ()V c method_6855 doServerTick + m ()V d method_6856 begin + m ()V e method_6854 end + m ()F f method_6846 getFlySpeed + m ()Lexc; g method_6851 getFlyTargetLocation + m ()F h method_6847 getTurnSpeed + m ()Lciq; i method_6849 getPhase +c cil net/minecraft/class_1520 net/minecraft/world/entity/boss/enderdragon/phases/DragonSittingAttackingPhase + f I b field_30432 ROAR_DURATION + f I c field_7049 attackingTicks + m (Lcia;)V +c cim net/minecraft/class_1523 net/minecraft/world/entity/boss/enderdragon/phases/DragonSittingFlamingPhase + f I b field_30433 FLAME_DURATION + f I c field_30434 SITTING_FLAME_ATTACKS_COUNT + f I d field_30435 WARMUP_TIME + f I e field_7053 flameTicks + f I f field_7052 flameCount + f Lbsn; g field_7051 flame + m ()V j method_6857 resetFlameCount + m (Lcia;)V +c cin net/minecraft/class_1522 net/minecraft/world/entity/boss/enderdragon/phases/DragonSittingScanningPhase + f I b field_30436 SITTING_SCANNING_IDLE_TICKS + f I c field_30437 SITTING_ATTACK_Y_VIEW_RANGE + f I d field_30438 SITTING_ATTACK_VIEW_RANGE + f I e field_30439 SITTING_CHARGE_VIEW_RANGE + f Lcef; f field_18123 CHARGE_TARGETING + f Lcef; g field_18124 scanTargeting + f I h field_7050 scanningTime + m (Lcia;Lbtn;)Z a method_18447 method_18447 + m (Lcia;)V + m ()V +c cio net/minecraft/class_1525 net/minecraft/world/entity/boss/enderdragon/phases/DragonStrafePlayerPhase + f Lorg/slf4j/Logger; b field_7061 LOGGER + f I c field_30440 FIREBALL_CHARGE_AMOUNT + f I d field_7060 fireballCharge + f Leps; e field_7059 currentPath + f Lexc; f field_7057 targetLocation + f Lbtn; g field_7062 attackTarget + f Z h field_7058 holdingPatternClockwise + m (Lbtn;)V a method_6862 setTarget + m ()V j method_6860 findNewTarget + m ()V k method_6861 navigateToNextPathNode + m (Lcia;)V + m ()V +c cip net/minecraft/class_1524 net/minecraft/world/entity/boss/enderdragon/phases/DragonTakeoffPhase + f Z b field_7056 firstTick + f Leps; c field_7054 currentPath + f Lexc; d field_7055 targetLocation + m ()V j method_6858 findNewTarget + m ()V k method_6859 navigateToNextPathNode + m (Lcia;)V +c ciq net/minecraft/class_1527 net/minecraft/world/entity/boss/enderdragon/phases/EnderDragonPhase + f Lciq; a field_7069 HOLDING_PATTERN + f Lciq; b field_7076 STRAFE_PLAYER + f Lciq; c field_7071 LANDING_APPROACH + f Lciq; d field_7067 LANDING + f Lciq; e field_7077 TAKEOFF + f Lciq; f field_7072 SITTING_FLAMING + f Lciq; g field_7081 SITTING_SCANNING + f Lciq; h field_7073 SITTING_ATTACKING + f Lciq; i field_7078 CHARGING_PLAYER + f Lciq; j field_7068 DYING + f Lciq; k field_7075 HOVERING + f [Lciq; l field_7080 phases + f Ljava/lang/Class; m field_7074 instanceClass + f I n field_7079 id + f Ljava/lang/String; o field_7070 name + m ()Ljava/lang/reflect/Constructor; a method_6867 getConstructor + m (I)Lciq; a method_6868 getById + m (Lcia;)Lcik; a method_6866 createInstance + m (Ljava/lang/Class;Ljava/lang/String;)Lciq; a method_6870 create + m ()I b method_6871 getId + m ()I c method_6869 getCount + m (ILjava/lang/Class;Ljava/lang/String;)V + m ()V +c cir net/minecraft/class_1526 net/minecraft/world/entity/boss/enderdragon/phases/EnderDragonPhaseManager + f Lorg/slf4j/Logger; a field_7066 LOGGER + f Lcia; b field_7065 dragon + f [Lcik; c field_7064 phases + f Lcik; d field_7063 currentPhase + m ()Lcik; a method_6864 getCurrentPhase + m (Lciq;)V a method_6863 setPhase + m (Lciq;)Lcik; b method_6865 getPhase + m (Lcia;)V + m ()V +c cis net/minecraft/class_6059 net/minecraft/world/entity/boss/enderdragon/phases/package-info +c cit net/minecraft/class_6060 net/minecraft/world/entity/boss/package-info +c ciu net/minecraft/class_1528 net/minecraft/world/entity/boss/wither/WitherBoss + f Lajw; b field_7088 DATA_TARGET_A + f Lajw; c field_7090 DATA_TARGET_B + f Lajw; cc field_7085 DATA_ID_INV + f I cd field_30441 INVULNERABLE_TICKS + f [F ce field_7084 xRotHeads + f [F cf field_7083 yRotHeads + f [F cg field_7095 xRotOHeads + f [F ch field_7094 yRotOHeads + f [I ci field_7091 nextHeadUpdate + f [I cj field_7092 idleHeadUpdates + f I ck field_7082 destroyBlocksTick + f Laqr; cl field_7093 bossEvent + f Ljava/util/function/Predicate; cm field_7086 LIVING_ENTITY_SELECTOR + f Lcef; cn field_18125 TARGETING_CONDITIONS + f Lajw; d field_7089 DATA_TARGET_C + f Ljava/util/List; e field_7087 DATA_TARGETS + m (FFF)F a method_6886 rotlerp + m (IDDDZ)V a method_6877 performRangedAttack + m (II)V a method_6876 setAlternativeTarget + m (ILbtn;)V a method_6878 performRangedAttack + m (I)F b method_6879 getHeadYRot + m (I)F c method_6887 getHeadXRot + m (Ldtc;)Z c method_6883 canDestroy + m (Lbtn;)Z j method_6873 method_6873 + m ()V s method_6885 makeInvulnerable + m (I)V s method_6875 setInvulnerableTicks + m ()Lbuv$a; t method_26904 createAttributes + m (I)I t method_6882 getAlternativeTarget + m (I)D u method_6874 getHeadX + m (I)D v method_6880 getHeadY + m (I)D w method_6881 getHeadZ + m ()I x method_6884 getInvulnerableTicks + m (Lbsx;Ldcw;)V + m ()V +c ciu$a net/minecraft/class_1528$class_1529 net/minecraft/world/entity/boss/wither/WitherBoss$WitherDoNothingGoal + f Lciu; a field_7096 field_7096 + m (Lciu;)V +c civ net/minecraft/class_6061 net/minecraft/world/entity/boss/wither/package-info +c ciw net/minecraft/class_1531 net/minecraft/world/entity/decoration/ArmorStand + f Lajw; bH field_7107 DATA_CLIENT_FLAGS + f I b field_30443 WOBBLE_TIME + f Lajw; bI field_7123 DATA_HEAD_POSE + f Lajw; bJ field_7122 DATA_BODY_POSE + f Lajw; bK field_7116 DATA_LEFT_ARM_POSE + f Lajw; bL field_7105 DATA_RIGHT_ARM_POSE + f Lajw; bM field_7127 DATA_LEFT_LEG_POSE + f Lajw; bN field_7125 DATA_RIGHT_LEG_POSE + f J bO field_7112 lastHit + f Z bP field_30445 ENABLE_ARMS + f Lke; bQ field_7113 DEFAULT_HEAD_POSE + f Lke; bR field_7119 DEFAULT_BODY_POSE + f Lke; bS field_7124 DEFAULT_LEFT_ARM_POSE + f Lke; bT field_7115 DEFAULT_RIGHT_ARM_POSE + f Lke; bU field_7121 DEFAULT_LEFT_LEG_POSE + f Lke; bV field_7117 DEFAULT_RIGHT_LEG_POSE + f Lbsu; bW field_26745 MARKER_DIMENSIONS + f Lbsu; bX field_26746 BABY_DIMENSIONS + f D bY field_30447 FEET_OFFSET + f D bZ field_30448 CHEST_OFFSET + f I c field_30446 DISABLE_TAKING_OFFSET + f D ca field_30449 LEGS_OFFSET + f D cb field_30450 HEAD_OFFSET + f Ljava/util/function/Predicate; cc field_7102 RIDABLE_MINECARTS + f Ljv; cd field_7114 handItems + f Ljv; ce field_7108 armorItems + f Z cf field_7111 invisible + f I cg field_7118 disabledSlots + f Lke; ch field_7104 headPose + f Lke; ci field_7106 bodyPose + f Lke; cj field_7126 leftArmPose + f Lke; ck field_7120 rightArmPose + f Lke; cl field_7110 leftLegPose + f Lke; cm field_7103 rightLegPose + f I d field_30451 DISABLE_PUTTING_OFFSET + f I e field_30452 CLIENT_FLAG_SMALL + f I f field_30453 CLIENT_FLAG_SHOW_ARMS + f I g field_30442 CLIENT_FLAG_NO_BASEPLATE + f I h field_30444 CLIENT_FLAG_MARKER + m ()Lke; A method_6921 getHeadPose + m ()Lke; B method_6923 getBodyPose + m ()Lke; C method_6930 getLeftArmPose + m ()Lke; D method_6903 getRightArmPose + m ()Lke; E method_6917 getLeftLegPose + m ()Lke; F method_6900 getRightLegPose + m ()Z H method_18059 hasPhysics + m ()Lub; I method_6911 writePose + m ()V J method_6898 showBreakingParticles + m ()V L method_6920 playBrokenSound + m (BIZ)B a method_6906 setBit + m (Laqu;Lbrk;F)V a method_6905 causeDamage + m (Lcmx;Lbsy;Lcuq;Lbqq;)Z a method_6904 swapItem + m (Lke;)V a method_6919 setHeadPose + m (Z)V a method_6913 setShowArms + m (Laqu;Lbrk;)V b method_6924 brokenByPlayer + m (Lbsr;)Z b method_6918 method_6918 + m (Lexc;)Lbsy; b method_6916 getClickedSlot + m (Lke;)V b method_6927 setBodyPose + m (Z)V b method_6907 setNoBasePlate + m (Laqu;Lbrk;)V c method_6908 brokenByAnything + m (Lke;)V c method_6910 setLeftArmPose + m (Lub;)V c method_6928 readPose + m (Lke;)V d method_6925 setRightArmPose + m (Lbsy;)Z e method_6915 isDisabled + m (Lke;)V e method_6909 setLeftLegPose + m (Lke;)V f method_6926 setRightLegPose + m ()Lbuv$a; s method_55745 createAttributes + m ()Z t method_6914 isSmall + m (Z)V u method_6922 setSmall + m ()Z v method_6929 isShowArms + m (Z)V v method_6902 setMarker + m (Z)Lbsu; w method_31168 getDimensionsMarker + m ()Z x method_6901 isNoBasePlate + m ()Z z method_6912 isMarker + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V + m ()V +c ciw$1 net/minecraft/class_1531$1 net/minecraft/world/entity/decoration/ArmorStand$1 + f [I a field_7128 $SwitchMap$net$minecraft$world$entity$EquipmentSlot$Type + m ()V +c cix net/minecraft/class_9691 net/minecraft/world/entity/decoration/BlockAttachedEntity + f Ljd; b field_51589 pos + f Lorg/slf4j/Logger; c field_51590 LOGGER + f I d field_51591 checkInterval + m (Lbsr;)V b method_6889 dropItem + m ()V p method_6895 recalculateBoundingBox + m ()Z s method_6888 survives + m ()Ljd; t method_59940 getPos + m (Lbsx;Ldcw;)V + m (Lbsx;Ldcw;Ljd;)V + m ()V +c ciy net/minecraft/class_5915 net/minecraft/world/entity/decoration/GlowItemFrame + m (Lbsx;Ldcw;)V + m (Ldcw;Ljd;Lji;)V +c ciz net/minecraft/class_1530 net/minecraft/world/entity/decoration/HangingEntity + f Ljava/util/function/Predicate; c field_7098 HANGING_ENTITY + f Lji; d field_7099 direction + m ()Lewx; B method_59941 calculateSupportBox + m ()V C method_6894 playPlacementSound + m (Ljd;)Z a method_59942 method_59942 + m (Ljd;Lji;)Lewx; a method_59943 calculateBoundingBox + m (Lji;)V a method_6892 setDirection + m (Lbsr;)Z c method_6890 method_6890 + m (Lbsx;Ldcw;)V + m (Lbsx;Ldcw;Ljd;)V + m ()V +c ciz$1 net/minecraft/class_1530$1 net/minecraft/world/entity/decoration/HangingEntity$1 + f [I a field_7101 $SwitchMap$net$minecraft$world$level$block$Rotation + m ()V +c cja net/minecraft/class_1533 net/minecraft/world/entity/decoration/ItemFrame + f I e field_30454 NUM_ROTATIONS + f Lajw; f field_7130 DATA_ITEM + f Lajw; g field_7132 DATA_ROTATION + f F h field_51592 DEPTH + f F i field_51593 WIDTH + f F j field_51594 HEIGHT + f F k field_7129 dropChance + f Z l field_22476 fixed + m ()Lcuq; A method_33340 getFrameItemStack + m ()Lcuq; D method_6940 getItem + m ()Z E method_43273 hasFramedMap + m ()I F method_6934 getRotation + m ()I H method_6938 getAnalogOutput + m (IZ)V a method_6941 setRotation + m (Lcuq;)Leqr; a method_43272 getFramedMapId + m (Lcuq;Z)V a method_6933 setItem + m (I)V b method_6939 setRotation + m (Lbsr;Z)V b method_6936 dropItem + m (Lcuq;)V c method_6935 setItem + m (Lcuq;)V d method_6937 removeFramedMap + m (Lcuq;)V e method_43271 onItemChanged + m ()Lavo; v method_34240 getRemoveItemSound + m ()Lavo; w method_34241 getBreakSound + m ()Lavo; x method_34242 getPlaceSound + m ()Lavo; y method_34243 getAddItemSound + m ()Lavo; z method_34244 getRotateItemSound + m (Lbsx;Ldcw;)V + m (Ldcw;Ljd;Lji;)V + m (Lbsx;Ldcw;Ljd;Lji;)V + m ()V +c cjb net/minecraft/class_1532 net/minecraft/world/entity/decoration/LeashFenceKnotEntity + f D c field_30455 OFFSET_Y + m (Lcmx;Lbtk;)Z a method_61164 method_61164 + m (Ldcw;Ljd;)Lcjb; b method_6932 getOrCreateKnot + m ()V v method_59944 playPlacementSound + m (Lbsx;Ldcw;)V + m (Ldcw;Ljd;)V +c cjc net/minecraft/class_1534 net/minecraft/world/entity/decoration/Painting + f Lcom/mojang/serialization/MapCodec; e field_49238 VARIANT_MAP_CODEC + f Lcom/mojang/serialization/Codec; f field_49239 VARIANT_CODEC + f F g field_51595 DEPTH + f Lajw; h field_38941 DATA_PAINTING_VARIANT_ID + m (ILjm;)Z a method_43399 method_43399 + m (Lcjc;Ljm;)Z a method_43400 method_43400 + m (Ldcw;Ljd;Lji;)Ljava/util/Optional; a method_43401 create + m (Lub;Luy;)V a method_59945 method_59945 + m (I)D b method_59946 offsetForPaintingSize + m (Ljm;)V b method_43402 setVariant + m (Ljm;)I c method_43403 variantArea + m ()Ljm; v method_43404 getVariant + m (Lbsx;Ldcw;)V + m (Ldcw;Ljd;)V + m (Ldcw;Ljd;Lji;Ljm;)V + m ()V +c cjd net/minecraft/class_1535 net/minecraft/world/entity/decoration/PaintingVariant + f Lcom/mojang/serialization/Codec; a field_51596 DIRECT_CODEC + f Lyx; b field_51945 DIRECT_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_51597 CODEC + f Lyx; d field_51946 STREAM_CODEC + f I e comp_2670 width + f I f comp_2671 height + f Lakr; g comp_2672 assetId + m ()I a method_59947 area + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59948 method_59948 + m ()I b comp_2670 width + m ()I c comp_2671 height + m ()Lakr; d comp_2672 assetId + m (IILakr;)V + m ()V +c cje net/minecraft/class_7408 net/minecraft/world/entity/decoration/PaintingVariants + f Lakq; A field_38943 EARTH + f Lakq; B field_38944 WIND + f Lakq; C field_38945 WATER + f Lakq; D field_38946 FIRE + f Lakq; E field_51598 BAROQUE + f Lakq; F field_51599 HUMBLE + f Lakq; G field_51600 MEDITATIVE + f Lakq; H field_51601 PRAIRIE_RIDE + f Lakq; I field_51602 UNPACKED + f Lakq; J field_51603 BACKYARD + f Lakq; K field_51604 BOUQUET + f Lakq; L field_51605 CAVEBIRD + f Lakq; M field_51606 CHANGING + f Lakq; N field_51607 COTAN + f Lakq; O field_51608 ENDBOSS + f Lakq; P field_51609 FERN + f Lakq; Q field_51610 FINDING + f Lakq; R field_51611 LOWMIST + f Lakq; S field_51612 ORB + f Lakq; T field_51613 OWLEMONS + f Lakq; U field_51614 PASSAGE + f Lakq; V field_51615 POND + f Lakq; W field_51616 SUNFLOWERS + f Lakq; X field_51617 TIDES + f Lakq; a field_38947 KEBAB + f Lakq; b field_38948 AZTEC + f Lakq; c field_38949 ALBAN + f Lakq; d field_38950 AZTEC2 + f Lakq; e field_38951 BOMB + f Lakq; f field_38952 PLANT + f Lakq; g field_38953 WASTELAND + f Lakq; h field_38954 POOL + f Lakq; i field_38955 COURBET + f Lakq; j field_38956 SEA + f Lakq; k field_38957 SUNSET + f Lakq; l field_38958 CREEBET + f Lakq; m field_38959 WANDERER + f Lakq; n field_38960 GRAHAM + f Lakq; o field_38961 MATCH + f Lakq; p field_38962 BUST + f Lakq; q field_38963 STAGE + f Lakq; r field_38964 VOID + f Lakq; s field_38965 SKULL_AND_ROSES + f Lakq; t field_38966 WITHER + f Lakq; u field_38967 FIGHTERS + f Lakq; v field_38968 POINTER + f Lakq; w field_38969 PIGSCENE + f Lakq; x field_38970 BURNING_SKULL + f Lakq; y field_38971 SKELETON + f Lakq; z field_38972 DONKEY_KONG + m (Ljava/lang/String;)Lakq; a method_43407 create + m (Lqq;)V a method_43406 bootstrap + m (Lqq;Lakq;II)V a method_59949 register + m ()V + m ()V +c cjf net/minecraft/class_6062 net/minecraft/world/entity/decoration/package-info +c cjg net/minecraft/class_1540 net/minecraft/world/entity/item/FallingBlockEntity + f I b field_7192 time + f Z c field_7193 dropItem + f Lub; d field_7194 blockData + f Z e field_52015 forceTickAfterTeleportToDuplicate + f Lajw; f field_7195 DATA_START_POS + f Lorg/slf4j/Logger; g field_36333 LOGGER + f Ldtc; h field_7188 blockState + f Z i field_7189 cancelDrop + f Z j field_7191 hurtEntities + f I k field_7190 fallDamageMax + f F l field_7187 fallDamagePerDistance + m (Lbrk;FLbsr;)V a method_32879 method_32879 + m (Ldcw;Ljd;Ldtc;)Lcjg; a method_40005 fall + m (Ldfy;Ljd;)V a method_32752 callOnBrokenAfterFall + m (Ljd;)V a method_6963 setStartPos + m (FI)V b method_6965 setHurtsEntities + m ()Ljd; p method_6964 getStartPos + m ()V s method_49181 disableDrop + m ()Ldtc; t method_6962 getBlockState + m (Lbsx;Ldcw;)V + m (Ldcw;DDDLdtc;)V + m ()V +c cjh net/minecraft/class_1542 net/minecraft/world/entity/item/ItemEntity + f F b field_48702 EYE_HEIGHT + f F c field_7203 bobOffs + f Lajw; d field_7199 DATA_ITEM + f F e field_48703 FLOAT_HEIGHT + f I f field_30456 LIFETIME + f I g field_30457 INFINITE_PICKUP_DELAY + f I h field_30458 INFINITE_LIFETIME + f I i field_7204 age + f I j field_7202 pickupDelay + f I k field_7201 health + f Ljava/util/UUID; l field_7200 thrower + f Lbsr; m field_46653 cachedThrower + f Ljava/util/UUID; n field_41893 target + m ()V A method_6976 setExtendedLifetime + m ()V B method_6987 makeFakeItem + m ()Lcjh; C method_29271 copy + m ()V D method_6974 setUnderwaterMovement + m ()V E method_24348 setUnderLavaMovement + m ()V F method_6973 mergeWithNeighbours + m ()Z H method_20397 isMergable + m (F)F a method_27314 getSpin + m (Lcjh;)V a method_6972 tryToMerge + m (Lcjh;Lcuq;Lcjh;Lcuq;)V a method_18006 merge + m (Lcjh;Lcuq;Lcuq;)V a method_24016 merge + m (Lcuq;)V a method_6979 setItem + m (Lcuq;Lcuq;)Z a method_24017 areMergable + m (Lcuq;Lcuq;I)Lcuq; a method_24018 merge + m (I)V b method_6982 setPickUpDelay + m (Lbsr;)V b method_6981 setThrower + m (Lcjh;)Z b method_20396 method_20396 + m (Ljava/util/UUID;)V b method_48349 setTarget + m ()Lcuq; p method_6983 getItem + m ()I t method_6985 getAge + m ()V v method_6988 setDefaultPickUpDelay + m ()V w method_6975 setNoPickUpDelay + m ()V x method_6989 setNeverPickUp + m ()Z y method_6977 hasPickUpDelay + m ()V z method_35190 setUnlimitedLifetime + m (Lbsx;Ldcw;)V + m (Ldcw;DDDLcuq;)V + m (Ldcw;DDDLcuq;DDD)V + m (Lcjh;)V + m ()V +c cji net/minecraft/class_1541 net/minecraft/world/entity/item/PrimedTnt + f Ljava/lang/String; b field_46776 TAG_FUSE + f Lajw; c field_7197 DATA_FUSE_ID + f Lajw; d field_46777 DATA_BLOCK_STATE_ID + f I e field_30459 DEFAULT_FUSE_TIME + f Ljava/lang/String; f field_46778 TAG_BLOCK_STATE + f Ldcp; g field_52317 USED_PORTAL_DAMAGE_CALCULATOR + f Lbtn; h field_7198 owner + f Z i field_52318 usedPortal + m (Z)V a method_61174 setUsedPortal + m (I)V b method_6967 setFuse + m (Ldtc;)V c method_54455 setBlockState + m ()Lbtn; p method_6970 getOwner + m ()I t method_6969 getFuse + m ()Ldtc; v method_54456 getBlockState + m ()V w method_6971 explode + m (Lbsx;Ldcw;)V + m (Ldcw;DDDLbtn;)V + m ()V +c cji$1 net/minecraft/class_1541$1 net/minecraft/world/entity/item/PrimedTnt$1 + m ()V +c cjj net/minecraft/class_6063 net/minecraft/world/entity/item/package-info +c cjk net/minecraft/class_1543 net/minecraft/world/entity/monster/AbstractIllager + m ()Lcjk$a; s method_6990 getArmPose + m (Lbsx;Ldcw;)V +c cjk$a net/minecraft/class_1543$class_1544 net/minecraft/world/entity/monster/AbstractIllager$IllagerArmPose + f Lcjk$a; a field_7207 CROSSED + f Lcjk$a; b field_7211 ATTACKING + f Lcjk$a; c field_7212 SPELLCASTING + f Lcjk$a; d field_7208 BOW_AND_ARROW + f Lcjk$a; e field_7213 CROSSBOW_HOLD + f Lcjk$a; f field_7210 CROSSBOW_CHARGE + f Lcjk$a; g field_19012 CELEBRATING + f Lcjk$a; h field_21512 NEUTRAL + f [Lcjk$a; i field_7209 $VALUES + m ()[Lcjk$a; a method_36647 $values + m (Ljava/lang/String;I)V + m ()V +c cjk$b net/minecraft/class_1543$class_4258 net/minecraft/world/entity/monster/AbstractIllager$RaiderOpenDoorGoal + f Lcjk; a field_19013 field_19013 + m (Lcjk;Lcoj;)V +c cjl net/minecraft/class_1547 net/minecraft/world/entity/monster/AbstractSkeleton + f I b field_49149 HARD_ATTACK_INTERVAL + f I c field_49150 NORMAL_ATTACK_INTERVAL + f Lcbm; d field_7220 bowGoal + f Lcaw; e field_7221 meleeGoal + m (Lcuq;FLcuq;)Lcnd; a method_6996 getArrow + m ()I gk method_57078 getHardAttackInterval + m ()I gl method_57079 getAttackInterval + m ()Z gm method_35191 isShaking + m ()Lbuv$a; s method_26905 createAttributes + m ()Lavo; t method_6998 getStepSound + m ()V x method_6997 reassessWeaponGoal + m (Lbsx;Ldcw;)V +c cjl$1 net/minecraft/class_1547$1 net/minecraft/world/entity/monster/AbstractSkeleton$1 + f Lcjl; b field_7223 field_7223 + m (Lcjl;Lbtw;DZ)V +c cjm net/minecraft/class_1545 net/minecraft/world/entity/monster/Blaze + f F b field_7214 allowedHeightOffset + f I c field_7215 nextHeightOffsetChangeTick + f Lajw; d field_7216 DATA_FLAGS_ID + m ()Lbuv$a; s method_26906 createAttributes + m ()Z t method_6994 isCharged + m (Z)V x method_6993 setCharged + m (Lbsx;Ldcw;)V + m ()V +c cjm$a net/minecraft/class_1545$class_1546 net/minecraft/world/entity/monster/Blaze$BlazeAttackGoal + f Lcjm; a field_7219 blaze + f I b field_7218 attackStep + f I c field_7217 attackTime + f I d field_19420 lastSeen + m ()D h method_6995 getFollowDistance + m (Lcjm;)V +c cjn net/minecraft/class_9254 net/minecraft/world/entity/monster/Bogged + f Ljava/lang/String; b field_49240 SHEARED_TAG_NAME + f I c field_49151 HARD_ATTACK_INTERVAL + f I d field_49152 NORMAL_ATTACK_INTERVAL + f Lajw; e field_49241 DATA_SHEARED + m ()Lbuv$a; gn method_57080 createAttributes + m ()Z go method_57308 isSheared + m ()V gr method_57309 spawnShearedMushrooms + m (Z)V x method_57310 setSheared + m (Lbsx;Ldcw;)V + m ()V +c cjo net/minecraft/class_1549 net/minecraft/world/entity/monster/CaveSpider + m ()Lbuv$a; s method_26907 createCaveSpider + m (Lbsx;Ldcw;)V +c cjp net/minecraft/class_1548 net/minecraft/world/entity/monster/Creeper + f Lajw; b field_7230 DATA_SWELL_DIR + f Lajw; c field_7224 DATA_IS_POWERED + f I cc field_7227 swell + f I cd field_7228 maxSwell + f I ce field_7225 explosionRadius + f I cf field_7226 droppedSkulls + f Lajw; d field_7231 DATA_IS_IGNITED + f I e field_7229 oldSwell + m (F)F H method_7003 getSwelling + m (I)V b method_7005 setSwellDir + m ()V gk method_7004 ignite + m ()Z gl method_7008 canDropMobsSkull + m ()V gm method_7002 increaseDroppedSkulls + m ()V gn method_7006 explodeCreeper + m ()V go method_7001 spawnLingeringCloud + m ()Lbuv$a; s method_26908 createAttributes + m ()I t method_7007 getSwellDir + m ()Z x method_7000 isIgnited + m (Lbsx;Ldcw;)V + m ()V +c cjq net/minecraft/class_3745 net/minecraft/world/entity/monster/CrossbowAttackMob + m ()V a method_24651 onCrossbowAttackPerformed + m (Lbtn;F)V b method_24654 performCrossbowAttack + m (Z)V b method_7110 setChargingCrossbow + m ()Lbtn; p method_5968 getTarget +c cjr net/minecraft/class_1551 net/minecraft/world/entity/monster/Drowned + f F b field_30460 NAUTILUS_SHELL_CHANCE + f Lcdc; c field_7234 waterNavigation + f Z cf field_7233 searchingForLand + f Lccz; d field_7232 groundNavigation + m (Lbsx;Lddl;Lbtr;Ljd;Layw;)Z a method_20673 checkDrownedSpawnRules + m (Lcjr;Lcda;)Lcda; a method_7017 method_7017 + m (Ldcx;Ljd;)Z a method_20672 isDeepEnoughToSpawn + m ()Z gn method_7016 closeToNextPos + m ()Z gu method_7018 wantsToSwim + m (Lbtn;)Z j method_7012 okTarget + m ()Lbuv$a; s method_55746 createAttributes + m (Z)V x method_7013 setSearchingForLand + m (Lbsx;Ldcw;)V +c cjr$a net/minecraft/class_1551$class_1552 net/minecraft/world/entity/monster/Drowned$DrownedAttackGoal + f Lcjr; b field_7235 drowned + m (Lcjr;DZ)V +c cjr$b net/minecraft/class_1551$class_1554 net/minecraft/world/entity/monster/Drowned$DrownedGoToBeachGoal + f Lcjr; g field_7237 drowned + m (Lcjr;D)V +c cjr$c net/minecraft/class_1551$class_1555 net/minecraft/world/entity/monster/Drowned$DrownedGoToWaterGoal + f Lbtw; a field_7242 mob + f D b field_7240 wantedX + f D c field_7239 wantedY + f D d field_7238 wantedZ + f D e field_7243 speedModifier + f Ldcw; f field_7241 level + m ()Lexc; h method_7021 getWaterPos + m (Lbtw;D)V +c cjr$d net/minecraft/class_1551$class_1556 net/minecraft/world/entity/monster/Drowned$DrownedMoveControl + f Lcjr; l field_7244 drowned + m (Lcjr;)V +c cjr$e net/minecraft/class_1551$class_1557 net/minecraft/world/entity/monster/Drowned$DrownedSwimUpGoal + f Lcjr; a field_7246 drowned + f D b field_7245 speedModifier + f I c field_7247 seaLevel + f Z d field_7248 stuck + m (Lcjr;DI)V +c cjr$f net/minecraft/class_1551$class_1558 net/minecraft/world/entity/monster/Drowned$DrownedTridentAttackGoal + f Lcjr; a field_7249 drowned + m (Lckh;DIF)V +c cjs net/minecraft/class_1550 net/minecraft/world/entity/monster/ElderGuardian + f F b field_17492 ELDER_SIZE_SCALE + f I cc field_38115 EFFECT_RADIUS + f I cd field_38116 EFFECT_DURATION + f I ce field_38117 EFFECT_AMPLIFIER + f I cf field_38118 EFFECT_DISPLAY_LIMIT + f I e field_38119 EFFECT_INTERVAL + m (Laqv;)V b method_7011 method_7011 + m ()Lbuv$a; s method_26909 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c cjt net/minecraft/class_1560 net/minecraft/world/entity/monster/EnderMan + f Lakr; c field_7256 SPEED_MODIFIER_ATTACKING_ID + f I cc field_30461 MIN_DEAGGRESSION_TIME + f Lajw; cd field_7257 DATA_CARRY_STATE + f Lajw; ce field_7255 DATA_CREEPY + f Lajw; cf field_20618 DATA_STARED_AT + f I cg field_7253 lastStareSound + f I ch field_7254 targetChangeTime + f Lbqc; ci field_25378 PERSISTENT_ANGER_TIME + f I cj field_25376 remainingPersistentAngerTime + f Ljava/util/UUID; ck field_25377 persistentAngerTarget + f Lbuu; d field_7252 SPEED_MODIFIER_ATTACKING + f I e field_30462 DELAY_BETWEEN_CREEPY_STARE_SOUND + m (Lbrk;Lcob;F)Z a method_38068 hurtWithCleanWater + m (Lbsr;)Z c method_7025 teleportTowards + m (Ldtc;)V c method_7032 setCarriedBlock + m (Lcmx;)Z f method_7026 isLookingAtMe + m ()Ldtc; gk method_7027 getCarriedBlock + m ()Z gl method_7028 isCreepy + m ()Z gm method_22330 hasBeenStaredAt + m ()V gn method_22331 setBeingStaredAt + m (DDD)Z q method_7024 teleport + m ()Lbuv$a; s method_26910 createAttributes + m ()V t method_7030 playStareSound + m ()Z x method_7029 teleport + m (Lbsx;Ldcw;)V + m ()V +c cjt$a net/minecraft/class_1560$class_4159 net/minecraft/world/entity/monster/EnderMan$EndermanFreezeWhenLookedAt + f Lcjt; a field_18524 enderman + f Lbtn; b field_21513 target + m (Lcjt;)V +c cjt$b net/minecraft/class_1560$class_1561 net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal + f Lcjt; a field_7258 enderman + m (Ldcw;Ljd;Ldtc;Ldtc;Ldtc;Ljd;)Z a method_7033 canPlaceBlock + m (Lcjt;)V +c cjt$c net/minecraft/class_1560$class_1562 net/minecraft/world/entity/monster/EnderMan$EndermanLookForPlayerGoal + f Lcjt; i field_7260 enderman + f Lcmx; j field_7259 pendingTarget + f I k field_7262 aggroTime + f I l field_7261 teleportTime + f Lcef; m field_18127 startAggroTargetConditions + f Lcef; n field_18876 continueAggroTargetConditions + f Ljava/util/function/Predicate; o field_40735 isAngerInducing + m (Lcjt;Lbtn;)Z a method_18449 method_18449 + m (Lcjt;Ljava/util/function/Predicate;)V +c cjt$d net/minecraft/class_1560$class_1563 net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal + f Lcjt; a field_7263 enderman + m (Lcjt;)V +c cju net/minecraft/class_1559 net/minecraft/world/entity/monster/Endermite + f I b field_30463 MAX_LIFE + f I c field_7250 life + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20674 checkEndermiteSpawnRules + m ()Lbuv$a; s method_26911 createAttributes + m (Lbsx;Ldcw;)V +c cjv net/minecraft/class_1569 net/minecraft/world/entity/monster/Enemy + f I i_ field_30464 XP_REWARD_NONE + f I j_ field_30465 XP_REWARD_SMALL + f I k_ field_30466 XP_REWARD_MEDIUM + f I l_ field_30467 XP_REWARD_LARGE + f I m_ field_30468 XP_REWARD_HUGE + f I n_ field_30469 XP_REWARD_BOSS +c cjw net/minecraft/class_1564 net/minecraft/world/entity/monster/Evoker + f Lcga; e field_7264 wololoTarget + m (Lcga;)V a method_7036 setWololoTarget + m (Lcjw;)Layw; a method_7038 method_7038 + m (Lcjw;)Layw; b method_7037 method_7037 + m (Lcjw;)Layw; c method_7043 method_7043 + m (Lcjw;)Layw; d method_7041 method_7041 + m (Lcjw;)Layw; e method_7040 method_7040 + m ()Lcga; gF method_7039 getWololoTarget + m ()Lbuv$a; t method_26912 createAttributes + m (Lbsx;Ldcw;)V +c cjw$a net/minecraft/class_1564$class_1565 net/minecraft/world/entity/monster/Evoker$EvokerAttackSpellGoal + f Lcjw; a field_7265 field_7265 + m (DDDDFI)V a method_7044 createSpellEntity + m (Lcjw;)V +c cjw$b net/minecraft/class_1564$class_1566 net/minecraft/world/entity/monster/Evoker$EvokerCastingSpellGoal + f Lcjw; a field_7266 field_7266 + m (Lcjw;)V +c cjw$c net/minecraft/class_1564$class_1567 net/minecraft/world/entity/monster/Evoker$EvokerSummonSpellGoal + f Lcjw; a field_7267 field_7267 + f Lcef; e field_18129 vexCountTargeting + m (Lcjw;)V +c cjw$d net/minecraft/class_1564$class_1568 net/minecraft/world/entity/monster/Evoker$EvokerWololoSpellGoal + f Lcjw; a field_7268 field_7268 + f Lcef; e field_7269 wololoTargeting + m (Lbtn;)Z a method_7045 method_7045 + m (Lcjw;)V +c cjx net/minecraft/class_1571 net/minecraft/world/entity/monster/Ghast + f Lajw; b field_7273 DATA_IS_CHARGING + f I c field_7272 explosionPower + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20675 checkGhastSpawnRules + m (Lbrk;)Z g method_44320 isReflectedFireball + m (Lbtn;)Z j method_18450 method_18450 + m ()Z s method_7050 isCharging + m ()I t method_7049 getExplosionPower + m ()Lbuv$a; x method_26913 createAttributes + m (Z)V x method_7048 setCharging + m (Lbsx;Ldcw;)V + m ()V +c cjx$a net/minecraft/class_1571$class_1572 net/minecraft/world/entity/monster/Ghast$GhastLookGoal + f Lcjx; a field_7274 ghast + m (Lcjx;)V +c cjx$b net/minecraft/class_1571$class_1573 net/minecraft/world/entity/monster/Ghast$GhastMoveControl + f Lcjx; l field_7275 ghast + f I m field_7276 floatDuration + m (Lexc;I)Z a method_7051 canReach + m (Lcjx;)V +c cjx$c net/minecraft/class_1571$class_1574 net/minecraft/world/entity/monster/Ghast$GhastShootFireballGoal + f I a field_7278 chargeTime + f Lcjx; b field_7277 ghast + m (Lcjx;)V +c cjx$d net/minecraft/class_1571$class_1575 net/minecraft/world/entity/monster/Ghast$RandomFloatAroundGoal + f Lcjx; a field_7279 ghast + m (Lcjx;)V +c cjy net/minecraft/class_1570 net/minecraft/world/entity/monster/Giant + m ()Lbuv$a; s method_26914 createAttributes + m (Lbsx;Ldcw;)V +c cjz net/minecraft/class_1577 net/minecraft/world/entity/monster/Guardian + f Lajw; b field_7280 DATA_ID_MOVING + f I c field_30470 ATTACK_TIME + f F cc field_7286 clientSideTailAnimation + f F cd field_7284 clientSideTailAnimationO + f F ce field_7281 clientSideTailAnimationSpeed + f F cf field_7285 clientSideSpikesAnimation + f F cg field_7287 clientSideSpikesAnimationO + f Lbtn; ch field_7288 clientSideCachedAttackTarget + f I ci field_7282 clientSideAttackTime + f Z cj field_7283 clientSideTouchedGround + f Lcbj; d field_7289 randomStrollGoal + f Lajw; e field_7290 DATA_ID_ATTACK_TARGET + m (F)F H method_7057 getTailAnimation + m (F)F I method_7053 getSpikesAnimation + m (F)F J method_7061 getAttackAnimationScale + m (I)V b method_7060 setActiveAttackTarget + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20676 checkGuardianSpawnRules + m ()Lbuv$a; gk method_26915 createAttributes + m ()Z gl method_7058 isMoving + m ()Z gm method_7063 hasActiveAttackTarget + m ()Lbtn; gn method_7052 getActiveAttackTarget + m ()F go method_48161 getClientSideAttackTime + m ()I t method_7055 getAttackDuration + m ()Lavo; x method_7062 getFlopSound + m (Z)V x method_7054 setMoving + m (Lbsx;Ldcw;)V + m ()V +c cjz$a net/minecraft/class_1577$class_1578 net/minecraft/world/entity/monster/Guardian$GuardianAttackGoal + f Lcjz; a field_7293 guardian + f I b field_7291 attackTime + f Z c field_7292 elder + m (Lcjz;)V +c cjz$b net/minecraft/class_1577$class_1579 net/minecraft/world/entity/monster/Guardian$GuardianAttackSelector + f Lcjz; a field_7294 guardian + m (Lbtn;)Z a method_7064 test + m (Lcjz;)V +c cjz$c net/minecraft/class_1577$class_1580 net/minecraft/world/entity/monster/Guardian$GuardianMoveControl + f Lcjz; l field_7295 guardian + m (Lcjz;)V +c cka net/minecraft/class_1576 net/minecraft/world/entity/monster/Husk + m (Lbsx;Lddl;Lbtr;Ljd;Layw;)Z a method_20677 checkHuskSpawnRules + m (Lbsx;Ldcw;)V +c ckb net/minecraft/class_1581 net/minecraft/world/entity/monster/Illusioner + f I cc field_30471 ILLUSION_TRANSITION_TICKS + f I cd field_30472 ILLUSION_SPREAD + f I ce field_7296 clientSideIllusionTicks + f [[Lexc; cf field_7297 clientSideIllusionOffsets + f I e field_30473 NUM_ILLUSIONS + m (F)[Lexc; H method_7065 getIllusionOffsets + m ()Lbuv$a; t method_26916 createAttributes + m (Lbsx;Ldcw;)V +c ckb$a net/minecraft/class_1581$class_1582 net/minecraft/world/entity/monster/Illusioner$IllusionerBlindnessSpellGoal + f Lckb; a field_7299 field_7299 + f I e field_7298 lastTargetId + m (Lckb;)V +c ckb$b net/minecraft/class_1581$class_1583 net/minecraft/world/entity/monster/Illusioner$IllusionerMirrorSpellGoal + f Lckb; a field_7300 field_7300 + m (Lckb;)V +c ckc net/minecraft/class_1589 net/minecraft/world/entity/monster/MagmaCube + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20678 checkMagmaCubeSpawnRules + m ()Lbuv$a; s method_26917 createAttributes + m (Lbsx;Ldcw;)V +c ckd net/minecraft/class_1588 net/minecraft/world/entity/monster/Monster + m (Lcmx;)Z a method_7076 isPreventingPlayerRest + m (Lddl;Ljd;Layw;)Z a method_20679 isDarkEnoughToSpawn + m (Lbsx;Lddl;Lbtr;Ljd;Layw;)Z b method_20680 checkMonsterSpawnRules + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20681 checkAnyLightMonsterSpawnRules + m ()V gp method_16827 updateNoActionTime + m ()Lbuv$a; gq method_26918 createMonsterAttributes + m (Lbsx;Ldcw;)V +c cke net/minecraft/class_3732 net/minecraft/world/entity/monster/PatrollingMonster + f Ljd; b field_16478 patrolTarget + f Z c field_16479 patrolLeader + f Z d field_16477 patrolling + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20739 checkPatrollingMonsterSpawnRules + m ()Z gl method_16485 canBeLeader + m ()Ljd; gm method_16215 getPatrolTarget + m ()Z gn method_16220 hasPatrolTarget + m ()Z go method_16219 isPatrolLeader + m ()Z gr method_16472 canJoinPatrol + m ()V gs method_16218 findPatrolTarget + m ()Z gt method_16915 isPatrolling + m (Ljd;)V h method_16216 setPatrolTarget + m (Ljd;)V i method_57005 method_57005 + m (Z)V x method_16217 setPatrolLeader + m (Z)V y method_22332 setPatrolling + m (Lbsx;Ldcw;)V +c cke$a net/minecraft/class_3732$class_3733 net/minecraft/world/entity/monster/PatrollingMonster$LongDistancePatrolGoal + f I a field_30474 NAVIGATION_FAILED_COOLDOWN + f Lcke; b field_16481 mob + f D c field_16480 speedModifier + f D d field_16535 leaderSpeedModifier + f J e field_20701 cooldownUntil + m (Lcke;)Z a method_16223 method_16223 + m ()Ljava/util/List; h method_22333 findPatrolCompanions + m ()Z i method_16222 moveRandomly + m (Lcke;DD)V +c ckf net/minecraft/class_1593 net/minecraft/world/entity/monster/Phantom + f F b field_30475 FLAP_DEGREES_PER_TICK + f I c field_28641 TICKS_PER_FLAP + f Ljd; cb field_7312 anchorPoint + f Lckf$a; cc field_7315 attackPhase + f Lajw; d field_7313 ID_SIZE + f Lexc; e field_7314 moveTargetPoint + m (Lckf;)Layw; a method_36649 method_36649 + m (I)V b method_7091 setPhantomSize + m (Lckf;)Layw; b method_36650 method_36650 + m (Lckf;)Layw; c method_36651 method_36651 + m (Lckf;)Layw; d method_7090 method_7090 + m (Lckf;)Layw; e method_7086 method_7086 + m (Lckf;)Layw; f method_36652 method_36652 + m (Lckf;)Layw; g method_7080 method_7080 + m (Lckf;)Layw; h method_7098 method_7098 + m (Lckf;)Layw; i method_7099 method_7099 + m (Lckf;)Layw; j method_7096 method_7096 + m (Lckf;)Layw; k method_7093 method_7093 + m (Lckf;)Layw; l method_7092 method_7092 + m ()I s method_7084 getPhantomSize + m ()I t method_33588 getUniqueFlapTickOffset + m ()V x method_7097 updatePhantomSizeInfo + m (Lbsx;Ldcw;)V + m ()V +c ckf$a net/minecraft/class_1593$class_1594 net/minecraft/world/entity/monster/Phantom$AttackPhase + f Lckf$a; a field_7318 CIRCLE + f Lckf$a; b field_7317 SWOOP + f [Lckf$a; c field_7316 $VALUES + m ()[Lckf$a; a method_36653 $values + m (Ljava/lang/String;I)V + m ()V +c ckf$b net/minecraft/class_1593$class_1595 net/minecraft/world/entity/monster/Phantom$PhantomAttackPlayerTargetGoal + f Lckf; a field_7319 field_7319 + f Lcef; b field_18130 attackTargeting + f I c field_7320 nextScanTick + m (Lckf;)V +c ckf$c net/minecraft/class_1593$class_1596 net/minecraft/world/entity/monster/Phantom$PhantomAttackStrategyGoal + f Lckf; a field_7321 field_7321 + f I b field_7322 nextSweepTick + m ()V h method_7102 setAnchorAboveTarget + m (Lckf;)V +c ckf$d net/minecraft/class_1593$class_1597 net/minecraft/world/entity/monster/Phantom$PhantomBodyRotationControl + f Lckf; a field_7323 field_7323 + m (Lckf;Lbtp;)V +c ckf$e net/minecraft/class_1593$class_1598 net/minecraft/world/entity/monster/Phantom$PhantomCircleAroundAnchorGoal + f Lckf; a field_7325 field_7325 + f F c field_7328 angle + f F d field_7327 distance + f F e field_7326 height + f F f field_7324 clockwise + m ()V i method_7103 selectNext + m (Lckf;)V +c ckf$f net/minecraft/class_1593$class_1599 net/minecraft/world/entity/monster/Phantom$PhantomLookControl + m (Lckf;Lbtp;)V +c ckf$g net/minecraft/class_1593$class_1600 net/minecraft/world/entity/monster/Phantom$PhantomMoveControl + f Lckf; l field_7330 field_7330 + f F m field_7331 speed + m (Lckf;Lbtp;)V +c ckf$h net/minecraft/class_1593$class_1601 net/minecraft/world/entity/monster/Phantom$PhantomMoveTargetGoal + f Lckf; b field_7332 field_7332 + m ()Z h method_7104 touchingTarget + m (Lckf;)V +c ckf$i net/minecraft/class_1593$class_1602 net/minecraft/world/entity/monster/Phantom$PhantomSweepAttackGoal + f Lckf; a field_7333 field_7333 + f I c field_36305 CAT_SEARCH_TICK_DELAY + f Z d field_36306 isScaredOfCat + f I e field_36307 catSearchTick + m (Lckf;)V +c ckg net/minecraft/class_1604 net/minecraft/world/entity/monster/Pillager + f Lajw; b field_7334 IS_CHARGING_CROSSBOW + f I cc field_30476 SLOT_OFFSET + f Lbra; cd field_7335 inventory + f I e field_30478 INVENTORY_SIZE + m ()Z gk method_7108 isChargingCrossbow + m (Lcuq;)Z n method_7111 wantsItem + m ()Lbuv$a; t method_26919 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c ckh net/minecraft/class_1603 net/minecraft/world/entity/monster/RangedAttackMob + m (Lbtn;F)V a method_7105 performRangedAttack +c cki net/minecraft/class_1584 net/minecraft/world/entity/monster/Ravager + f I b field_30479 STUN_DURATION + f D cc field_30480 BASE_MOVEMENT_SPEED + f D cd field_30481 ATTACK_MOVEMENT_SPEED + f I ce field_30482 STUNNED_COLOR + f F cf field_30483 STUNNED_COLOR_BLUE + f F cg field_30484 STUNNED_COLOR_GREEN + f F ch field_30485 STUNNED_COLOR_RED + f I ci field_30486 ATTACK_DURATION + f I cj field_7303 attackTick + f I ck field_7302 stunnedTick + f I cl field_7305 roarTick + f Ljava/util/function/Predicate; e field_7301 NO_RAVAGER_AND_ALIVE + m (Lbsr;)V c method_7068 strongKnockback + m (Lbsr;)Z d method_7069 method_7069 + m ()I gk method_7074 getStunnedTick + m ()I gu method_7072 getRoarTick + m ()V gv method_7073 stunEffect + m ()V gw method_7071 roar + m (Lbtn;)Z j method_39955 method_39955 + m ()Lbuv$a; s method_26920 createAttributes + m ()I t method_7070 getAttackTick + m (Lbsx;Ldcw;)V + m ()V +c ckj net/minecraft/class_1606 net/minecraft/world/entity/monster/Shulker + f Lajw; b field_7344 DATA_ATTACH_FACE_ID + f Lajw; c field_7346 DATA_PEEK_ID + f Lbuu; cc field_7342 COVERED_ARMOR_MODIFIER + f I cd field_30487 TELEPORT_STEPS + f B ce field_30488 NO_COLOR + f B cf field_30489 DEFAULT_COLOR + f I cg field_30490 MAX_TELEPORT_DISTANCE + f I ch field_30491 OTHER_SHULKER_SCAN_RADIUS + f I ci field_30492 OTHER_SHULKER_LIMIT + f F cj field_30493 PEEK_PER_TICK + f Lorg/joml/Vector3f; ck field_33765 FORWARD + f F cl field_48343 MAX_SCALE + f F cm field_7339 currentPeekAmountO + f F cn field_7337 currentPeekAmount + f Ljd; co field_7345 clientOldAttachPosition + f I cp field_7340 clientSideTeleportInterpolation + f F cq field_30494 MAX_LID_OPEN + f Lajw; d field_7343 DATA_COLOR_ID + f Lakr; e field_7341 COVERED_ARMOR_MODIFIER_ID + m (F)F H method_7116 getClientPeekAmount + m (F)Ljava/util/Optional; I method_33352 getRenderPosition + m (F)F J method_33342 getPhysicalPeek + m (FLji;F)Lewx; a method_33346 getProgressAabb + m (FLji;FF)Lewx; a method_33347 getProgressDeltaAabb + m (Lckj;)Layw; a method_36654 method_36654 + m (Lcti;)Ljava/lang/Byte; a method_47879 method_47879 + m (Ljava/util/Optional;)V a method_47880 setVariant + m (Ljd;Lji;)Z a method_24350 canStayAt + m (Lji;)V a method_35192 setAttachFace + m (I)V b method_7122 setRawPeekAmount + m (Lckj;)Layw; b method_7118 method_7118 + m (Lbsr;)Z c method_33343 method_33343 + m (Lckj;)Layw; c method_36655 method_36655 + m (Lckj;)Layw; d method_7112 method_7112 + m (Lckj;)Layw; e method_36656 method_36656 + m ()Ljava/util/Optional; gk method_47881 getVariant + m ()Lcti; gl method_7121 getColor + m ()V gm method_33348 findNewAttachment + m ()Z gn method_33349 updatePeekAmount + m ()V go method_33350 onPeekAmountChange + m ()Z gp method_7124 isClosed + m ()V gq method_31547 hitByShulkerBullet + m ()I gr method_7115 getRawPeekAmount + m ()Lorg/joml/Vector3f; gs method_36983 method_36983 + m (Ljd;)Lji; h method_24351 findAttachableSurface + m (Ljd;)Z i method_33351 isPositionBlocked + m ()Lbuv$a; s method_26921 createAttributes + m ()Z t method_7127 teleportSomewhere + m ()Lji; x method_7119 getAttachFace + m (Lbsx;Ldcw;)V + m ()V +c ckj$a net/minecraft/class_1606$class_1607 net/minecraft/world/entity/monster/Shulker$ShulkerAttackGoal + f Lckj; a field_7348 field_7348 + f I b field_7347 attackTime + m (Lckj;)V +c ckj$b net/minecraft/class_1606$class_1608 net/minecraft/world/entity/monster/Shulker$ShulkerBodyRotationControl + m (Lbtp;)V +c ckj$c net/minecraft/class_1606$class_1609 net/minecraft/world/entity/monster/Shulker$ShulkerDefenseAttackGoal + m (Lbtn;)Z b method_7129 method_7129 + m (Lckj;)V +c ckj$d net/minecraft/class_1606$class_6376 net/minecraft/world/entity/monster/Shulker$ShulkerLookControl + f Lckj; h field_33766 field_33766 + m (Lckj;Lbtp;)V +c ckj$e net/minecraft/class_1606$class_1610 net/minecraft/world/entity/monster/Shulker$ShulkerNearestAttackGoal + f Lckj; i field_7351 field_7351 + m (Lckj;Lckj;)V +c ckj$f net/minecraft/class_1606$class_1611 net/minecraft/world/entity/monster/Shulker$ShulkerPeekGoal + f Lckj; a field_7353 field_7353 + f I b field_7352 peekTime + m (Lckj;)V +c ckk net/minecraft/class_1614 net/minecraft/world/entity/monster/Silverfish + f Lckk$b; b field_7366 friendsGoal + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20684 checkSilverfishSpawnRules + m ()Lbuv$a; s method_26922 createAttributes + m (Lbsx;Ldcw;)V +c ckk$a net/minecraft/class_1614$class_1615 net/minecraft/world/entity/monster/Silverfish$SilverfishMergeWithStoneGoal + f Lji; i field_7368 selectedDirection + f Z j field_7367 doMerge + m (Lckk;)V +c ckk$b net/minecraft/class_1614$class_1616 net/minecraft/world/entity/monster/Silverfish$SilverfishWakeUpFriendsGoal + f Lckk; a field_7370 silverfish + f I b field_7369 lookForFriends + m ()V h method_7136 notifyHurt + m (Lckk;)V +c ckl net/minecraft/class_1613 net/minecraft/world/entity/monster/Skeleton + f Ljava/lang/String; b field_30495 CONVERSION_TAG + f I c field_41714 TOTAL_CONVERSION_TIME + f I cc field_28644 conversionTime + f Lajw; d field_28642 DATA_STRAY_CONVERSION_ID + f I e field_28643 inPowderSnowTime + m (I)V b method_33589 startFreezeConversion + m ()Z gn method_33590 isFreezeConverting + m ()V go method_33591 doFreezeConversion + m (Z)V x method_35193 setFreezeConverting + m (Lbsx;Ldcw;)V + m ()V +c ckm net/minecraft/class_1621 net/minecraft/world/entity/monster/Slime + f I b field_30496 MIN_SIZE + f I c field_30497 MAX_SIZE + f F cb field_7388 squish + f F cc field_7387 oSquish + f Lajw; cd field_7390 ID_SIZE + f Z ce field_7391 wasOnGround + f I d field_50136 MAX_NATURAL_SIZE + f F e field_7389 targetSquish + m (IZ)V a method_7161 setSize + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_20685 checkSlimeSpawnRules + m ()V gg method_7156 decreaseSquish + m ()Z gh method_7163 isDealsDamage + m ()F gi method_7158 getAttackDamage + m ()Lavo; gj method_7160 getSquishSound + m ()Lavo; gk method_7153 getJumpSound + m ()I gl method_7152 getSize + m ()Z gm method_7157 isTiny + m ()Z gn method_7159 doPlayJumpSound + m (Lbtn;)V j method_7155 dealDamage + m (Lbtn;)Z k method_18451 method_18451 + m ()F s method_24353 getSoundPitch + m ()Llk; t method_7162 getParticleType + m ()I x method_7154 getJumpDelay + m (Lbsx;Ldcw;)V + m ()V +c ckm$a net/minecraft/class_1621$class_1622 net/minecraft/world/entity/monster/Slime$SlimeAttackGoal + f Lckm; a field_7393 slime + f I b field_7392 growTiredTimer + m (Lckm;)V +c ckm$b net/minecraft/class_1621$class_1623 net/minecraft/world/entity/monster/Slime$SlimeFloatGoal + f Lckm; a field_7394 slime + m (Lckm;)V +c ckm$c net/minecraft/class_1621$class_1624 net/minecraft/world/entity/monster/Slime$SlimeKeepOnJumpingGoal + f Lckm; a field_7395 slime + m (Lckm;)V +c ckm$d net/minecraft/class_1621$class_1625 net/minecraft/world/entity/monster/Slime$SlimeMoveControl + f F l field_7397 yRot + f I m field_7399 jumpDelay + f Lckm; n field_7396 slime + f Z o field_7398 isAggressive + m (D)V a method_7164 setWantedMovement + m (FZ)V a method_7165 setDirection + m (Lckm;)V +c ckm$e net/minecraft/class_1621$class_1626 net/minecraft/world/entity/monster/Slime$SlimeRandomDirectionGoal + f Lckm; a field_7402 slime + f F b field_7400 chosenDegrees + f I c field_7401 nextRandomizeTime + m (Lckm;)V +c ckn net/minecraft/class_1617 net/minecraft/world/entity/monster/SpellcasterIllager + f I b field_7372 spellCastingTickCount + f Lckn$a; cc field_7371 currentSpell + f Lajw; e field_7373 DATA_SPELL_CASTING_ID + m (Lckn$a;)V a method_7138 setIsCastingSpell + m (Lckn;)Lcda; a method_7141 method_7141 + m ()Lavo; gk method_7142 getCastingSoundEvent + m ()Z gu method_7137 isCastingSpell + m ()Lckn$a; gv method_7140 getCurrentSpell + m ()I gw method_7139 getSpellCastingTime + m (Lbsx;Ldcw;)V + m ()V +c ckn$a net/minecraft/class_1617$class_1618 net/minecraft/world/entity/monster/SpellcasterIllager$IllagerSpell + f Lckn$a; a field_7377 NONE + f Lckn$a; b field_7379 SUMMON_VEX + f Lckn$a; c field_7380 FANGS + f Lckn$a; d field_7381 WOLOLO + f Lckn$a; e field_7382 DISAPPEAR + f Lckn$a; f field_7378 BLINDNESS + f Ljava/util/function/IntFunction; g field_41674 BY_ID + f I h field_7375 id + f [D i field_7374 spellColor + f [Lckn$a; j field_7376 $VALUES + m ()[Lckn$a; a method_36658 $values + m (I)Lckn$a; a method_7144 byId + m (Lckn$a;)I a method_47929 method_47929 + m (Ljava/lang/String;IIDDD)V + m ()V +c ckn$b net/minecraft/class_1617$class_1619 net/minecraft/world/entity/monster/SpellcasterIllager$SpellcasterCastingSpellGoal + f Lckn; b field_7383 field_7383 + m (Lckn;)V +c ckn$c net/minecraft/class_1617$class_1620 net/minecraft/world/entity/monster/SpellcasterIllager$SpellcasterUseSpellGoal + f I b field_7385 attackWarmupDelay + f I c field_7384 nextAttackTickCount + f Lckn; d field_7386 field_7386 + m ()I h method_7149 getCastingTime + m ()I i method_7151 getCastingInterval + m ()V k method_7148 performSpellCasting + m ()Lavo; l method_7150 getSpellPrepareSound + m ()Lckn$a; m method_7147 getSpell + m ()I n method_7146 getCastWarmupTime + m (Lckn;)V +c cko net/minecraft/class_1628 net/minecraft/world/entity/monster/Spider + f Lajw; b field_7403 DATA_FLAGS_ID + f F c field_30498 SPIDER_SPECIAL_EFFECT_CHANCE + m (Lbtn;)Z j method_56086 method_56086 + m ()Lbuv$a; t method_26923 createAttributes + m ()Z x method_7167 isClimbing + m (Z)V x method_7166 setClimbing + m (Lbsx;Ldcw;)V + m ()V +c cko$a net/minecraft/class_1628$class_1629 net/minecraft/world/entity/monster/Spider$SpiderAttackGoal + m (Lcko;)V +c cko$b net/minecraft/class_1628$class_1630 net/minecraft/world/entity/monster/Spider$SpiderEffectsGroupData + f Ljm; a field_7404 effect + m (Layw;)V a method_7168 setRandomEffect + m ()V +c cko$c net/minecraft/class_1628$class_1631 net/minecraft/world/entity/monster/Spider$SpiderTargetGoal + m (Lcko;Ljava/lang/Class;)V +c ckp net/minecraft/class_1627 net/minecraft/world/entity/monster/Stray + m (Lbsx;Lddl;Lbtr;Ljd;Layw;)Z a method_20686 checkStraySpawnRules + m (Lbsx;Ldcw;)V +c ckq net/minecraft/class_4985 net/minecraft/world/entity/monster/Strider + f Lakr; cc field_42981 SUFFOCATING_MODIFIER_ID + f Lbuu; cd field_42982 SUFFOCATING_MODIFIER + f F ce field_30499 SUFFOCATE_STEERING_MODIFIER + f F cg field_30501 STEERING_MODIFIER + f Lajw; ch field_23245 DATA_BOOST_TIME + f Lajw; ci field_23246 DATA_SUFFOCATING + f Lajw; cj field_23247 DATA_SADDLE_ID + f Lbti; ck field_23240 steering + f Lcbu; cl field_23241 temptGoal + m (Lddl;Lbqp;Lbtp;Lbuh;)Lbuh; a method_30336 spawnJockey + m (Laqu;Lbsl;)Lckq; b method_26343 getBreedOffspring + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_26344 checkStriderSpawnRules + m ()V gk method_26347 floatStrider + m (Lcuq;)Z n method_58395 method_58395 + m ()Z s method_26348 isSuffocating + m ()Lbuv$a; t method_26924 createAttributes + m ()Z x method_30079 isBeingTempted + m (Z)V x method_26349 setSuffocating + m (Lbsx;Ldcw;)V + m ()V +c ckq$a net/minecraft/class_4985$class_5494 net/minecraft/world/entity/monster/Strider$StriderGoToLavaGoal + f Lckq; g field_26632 strider + m (Lckq;D)V +c ckq$b net/minecraft/class_4985$class_4988 net/minecraft/world/entity/monster/Strider$StriderPathNavigation + m (Lckq;Ldcw;)V +c ckr net/minecraft/class_1634 net/minecraft/world/entity/monster/Vex + f F b field_30502 FLAP_DEGREES_PER_TICK + f I c field_28645 TICKS_PER_FLAP + f Lbtp; cc field_7411 owner + f Ljd; cd field_7407 boundOrigin + f Z ce field_7409 hasLimitedLife + f I cf field_7408 limitedLifeTicks + f Lajw; d field_7410 DATA_FLAGS_ID + f I e field_30503 FLAG_IS_CHARGING + m (IZ)V a method_7189 setVexFlag + m (Lbtp;)V a method_7178 setOwner + m (Lckr;)Layw; a method_7183 method_7183 + m (I)V b method_7181 setLimitedLife + m (Lckr;)Lbzp; b method_7174 method_7174 + m (I)Z c method_7184 getVexFlag + m (Lckr;)Lbzp; c method_7175 method_7175 + m (Lckr;)Layw; d method_7190 method_7190 + m (Lckr;)Layw; e method_7187 method_7187 + m (Lckr;)Layw; f method_7179 method_7179 + m (Lckr;)Layw; g method_7180 method_7180 + m ()Ljd; gk method_7186 getBoundOrigin + m ()Z gl method_7176 isCharging + m (Lckr;)Lbzp; h method_7191 method_7191 + m (Ljd;)V h method_7188 setBoundOrigin + m ()Lbuv$a; t method_26925 createAttributes + m ()Lbtp; x method_7182 getOwner + m (Z)V x method_7177 setIsCharging + m (Lbsx;Ldcw;)V + m ()V +c ckr$a net/minecraft/class_1634$class_1635 net/minecraft/world/entity/monster/Vex$VexChargeAttackGoal + f Lckr; a field_7412 field_7412 + m (Lckr;)V +c ckr$b net/minecraft/class_1634$class_1636 net/minecraft/world/entity/monster/Vex$VexCopyOwnerTargetGoal + f Lckr; a field_7413 field_7413 + f Lcef; b field_18132 copyOwnerTargeting + m (Lckr;Lbtw;)V +c ckr$c net/minecraft/class_1634$class_1637 net/minecraft/world/entity/monster/Vex$VexMoveControl + f Lckr; l field_7414 field_7414 + m (Lckr;Lckr;)V +c ckr$d net/minecraft/class_1634$class_1638 net/minecraft/world/entity/monster/Vex$VexRandomMoveGoal + f Lckr; a field_7415 field_7415 + m (Lckr;)V +c cks net/minecraft/class_1632 net/minecraft/world/entity/monster/Vindicator + f Ljava/lang/String; b field_30504 TAG_JOHNNY + f Z cc field_7406 isJohnny + f Ljava/util/function/Predicate; e field_19014 DOOR_BREAKING_PREDICATE + m (Lbqo;)Z a method_20007 method_20007 + m (Lcks;)Layw; a method_20257 method_20257 + m ()Lbuv$a; t method_26926 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c cks$a net/minecraft/class_1632$class_3761 net/minecraft/world/entity/monster/Vindicator$VindicatorBreakDoorGoal + m (Lbtp;)V +c cks$b net/minecraft/class_1632$class_1633 net/minecraft/world/entity/monster/Vindicator$VindicatorJohnnyAttackGoal + m (Lcks;)V +c ckt net/minecraft/class_1640 net/minecraft/world/entity/monster/Witch + f Lakr; b field_7418 SPEED_MODIFIER_DRINKING_ID + f Lajw; cc field_7419 DATA_USING_ITEM + f I cd field_7417 usingTime + f Lcch; ce field_17283 healRaidersGoal + f Lccg; cf field_17284 attackPlayersGoal + f Lbuu; e field_7416 SPEED_MODIFIER_DRINKING + m (Lbtn;)Z j method_16474 method_16474 + m ()Z s method_7193 isDrinkingPotion + m ()Lbuv$a; t method_26927 createAttributes + m (Z)V z method_7192 setUsingItem + m (Lbsx;Ldcw;)V + m ()V +c cku net/minecraft/class_1639 net/minecraft/world/entity/monster/WitherSkeleton + m (Lbsx;Ldcw;)V +c ckv net/minecraft/class_5136 net/minecraft/world/entity/monster/Zoglin + f Lcom/google/common/collect/ImmutableList; b field_23731 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; c field_23733 MEMORY_TYPES + f I cc field_30505 ATTACK_KNOCKBACK + f F cd field_30506 KNOCKBACK_RESISTANCE + f I ce field_30507 ATTACK_DAMAGE + f F cf field_30508 BABY_ATTACK_DAMAGE + f I cg field_30509 ATTACK_INTERVAL + f I ch field_30510 BABY_ATTACK_INTERVAL + f I ci field_30511 ATTACK_DURATION + f F cj field_30512 MOVEMENT_SPEED_WHEN_FIGHTING + f F ck field_30513 SPEED_MULTIPLIER_WHEN_IDLING + f I cl field_23732 attackAnimationRemainingTicks + f Lajw; d field_23734 DATA_BABY_ID + f I e field_30514 MAX_HEALTH + m (Lbuq;)V a method_26928 initCoreActivity + m (Lbuq;)V b method_26929 initIdleActivity + m (Lbuq;)V c method_26930 initFightActivity + m ()V gl method_26933 playAngrySound + m ()Ljava/util/Optional; gm method_26934 findNearestValidAttackTarget + m (Lbtn;)Z j method_26936 isTargetable + m (Lbtn;)V k method_26938 setAttackTarget + m ()Lbuv$a; s method_26937 createAttributes + m ()Z t method_26939 isAdult + m ()V x method_26931 updateActivity + m (Lbsx;Ldcw;)V + m ()V +c ckw net/minecraft/class_1642 net/minecraft/world/entity/monster/Zombie + f Lakr; b field_7429 SPEED_MODIFIER_BABY_ID + f Lbuu; c field_7430 SPEED_MODIFIER_BABY + f I cc field_30515 REINFORCEMENT_ATTEMPTS + f I cd field_30516 REINFORCEMENT_RANGE_MAX + f I ce field_30517 REINFORCEMENT_RANGE_MIN + f Lbuu; cf field_52016 ZOMBIE_REINFORCEMENT_CALLEE_CHARGE + f Lakr; cg field_52017 LEADER_ZOMBIE_BONUS_ID + f Lakr; ch field_52193 ZOMBIE_RANDOM_SPAWN_BONUS_ID + f Lajw; ci field_7434 DATA_BABY_ID + f Lajw; cj field_7427 DATA_SPECIAL_TYPE_ID + f Lajw; ck field_7425 DATA_DROWNED_CONVERSION_ID + f Lbsu; cl field_47811 BABY_DIMENSIONS + f F cm field_30518 BREAK_DOOR_CHANCE + f Ljava/util/function/Predicate; cn field_19015 DOOR_BREAKING_PREDICATE + f Lbzw; co field_7433 breakDoorGoal + f Z cp field_7432 canBreakDoors + f I cq field_7426 inWaterTime + f I cr field_7424 conversionTime + f Lakr; d field_52018 REINFORCEMENT_CALLER_CHARGE_ID + f F e field_30519 ZOMBIE_LEADER_CHANCE + m (F)V H method_7205 handleAttributes + m (Layw;)Z a method_29936 getSpawnAsBabyOdds + m (Lbqo;)Z a method_20009 method_20009 + m (Lckw;)Layw; a method_7210 method_7210 + m ()V ag_ method_7218 doUnderWaterConversion + m ()Z ah_ method_7216 isSunSensitive + m (I)V b method_7213 startUnderWaterConversion + m (Lbsx;)V b method_7200 convertToZombieType + m ()Lavo; gk method_7207 getStepSound + m ()Lcuq; gl method_7215 getSkull + m ()Z gm method_7209 convertsInWater + m ()Lbuv$a; go method_26940 createAttributes + m ()Z gr method_7206 isUnderWaterConverting + m ()Z gs method_7211 canBreakDoors + m ()V gt method_6001 randomizeReinforcementsChance + m ()V t method_7208 addBehaviourGoals + m ()Z x method_7212 supportsBreakDoorGoal + m (Z)V y method_7201 setCanBreakDoors + m (Lbsx;Ldcw;)V + m (Ldcw;)V + m ()V +c ckw$a net/minecraft/class_1642$class_1643 net/minecraft/world/entity/monster/Zombie$ZombieAttackTurtleEggGoal + f Lckw; g field_7437 field_7437 + m (Lckw;Lbtw;DI)V +c ckw$b net/minecraft/class_1642$class_1644 net/minecraft/world/entity/monster/Zombie$ZombieGroupData + f Z a field_7439 isBaby + f Z b field_25607 canSpawnJockey + m (ZZ)V +c ckx net/minecraft/class_1641 net/minecraft/world/entity/monster/ZombieVillager + f Lorg/slf4j/Logger; b field_36334 LOGGER + f Lajw; c field_7423 DATA_CONVERTING_ID + f I cf field_30523 VILLAGER_CONVERSION_WAIT_MIN + f I cg field_30520 VILLAGER_CONVERSION_WAIT_MAX + f I ch field_30521 MAX_SPECIAL_BLOCKS_COUNT + f I ci field_30522 SPECIAL_BLOCK_RADIUS + f I cj field_7422 villagerConversionTime + f Ljava/util/UUID; ck field_7421 conversionStarter + f Luy; cl field_20299 gossips + f Ldbv; cm field_17047 tradeOffers + f I cn field_18877 villagerXp + f Lajw; d field_7420 DATA_VILLAGER_DATA + m (Laqu;)V a method_7197 finishConversion + m (Ldbv;)V a method_16916 setTradeOffers + m (Ljava/util/UUID;I)V a method_7199 startConverting + m (Ljm$c;)V a method_40125 method_40125 + m (Lub;Luy;)V a method_28369 method_28369 + m (Luy;)V a method_21649 setGossips + m (I)V b method_19622 setVillagerXp + m (Ldbv;)V b method_56681 method_56681 + m ()Z gu method_7198 isConverting + m ()I gw method_35194 getVillagerXp + m ()I gx method_7194 getConversionProgress + m (Lcuq;)Z n method_60978 method_60978 + m (Lbsx;Ldcw;)V + m ()V +c cky net/minecraft/class_1590 net/minecraft/world/entity/monster/ZombifiedPiglin + f Lbsu; c field_47812 BABY_DIMENSIONS + f Lbuu; cf field_7307 SPEED_MODIFIER_ATTACKING + f Lbqc; cg field_25382 FIRST_ANGER_SOUND_DELAY + f I ch field_7308 playFirstAngerSoundIn + f Lbqc; ci field_25379 PERSISTENT_ANGER_TIME + f I cj field_25380 remainingPersistentAngerTime + f Ljava/util/UUID; ck field_25381 persistentAngerTarget + f I cl field_30524 ALERT_RANGE_Y + f Lbqc; cm field_25609 ALERT_INTERVAL + f I cn field_25608 ticksUntilNextAlert + f Lakr; d field_7311 SPEED_MODIFIER_ATTACKING_ID + m (Lcky;)V a method_29937 method_29937 + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_20682 checkZombifiedPiglinSpawnRules + m (Lcky;)Z b method_29938 method_29938 + m (Lcky;)Z c method_29939 method_29939 + m (Lcky;)Z d method_29940 method_29940 + m ()Lbuv$a; gu method_26941 createAttributes + m ()V gv method_30080 maybePlayFirstAngerSound + m ()V gw method_29941 maybeAlertOthers + m ()V gx method_29942 alertOthers + m ()V gy method_29533 playAngerSound + m (Lbsx;Ldcw;)V + m ()V +c ckz net/minecraft/class_8949 net/minecraft/world/entity/monster/breeze/Breeze + f Lbsm; b field_47269 idle + f Lbsm; c field_47277 slide + f Lbsm; cc field_47281 shoot + f Lbsm; cd field_47270 inhale + f I ce field_47271 SLIDE_PARTICLES_AMOUNT + f I cf field_47272 IDLE_PARTICLES_AMOUNT + f I cg field_47273 JUMP_DUST_PARTICLES_AMOUNT + f I ch field_47274 JUMP_TRAIL_PARTICLES_AMOUNT + f I ci field_47275 JUMP_TRAIL_DURATION_TICKS + f I cj field_47276 JUMP_CIRCLE_DISTANCE_Y + f F ck field_47278 FALL_DISTANCE_SOUND_TRIGGER_THRESHOLD + f I cl field_47813 WHIRL_SOUND_FREQUENCY_MIN + f I cm field_47814 WHIRL_SOUND_FREQUENCY_MAX + f I cn field_47279 jumpTrailStartedTick + f I co field_47815 soundTick + f Lcnq; cp field_48344 PROJECTILE_DEFLECTION + f Lbsm; d field_47816 slideBack + f Lbsm; e field_47280 longJump + m (Lcnp;Lbsr;Layw;)V a method_56087 method_56087 + m (I)V b method_55007 emitGroundParticles + m (Lexc;)Z b method_55013 withinInnerCircleRange + m (Lbsr;)Lbtn; c method_56560 method_56560 + m (Lbsr;)Z d method_56561 method_56561 + m ()V gk method_55747 playWhirlSound + m ()Ljava/util/Optional; gl method_56562 getHurtBy + m ()D gm method_55009 getSnoutYPosition + m ()V gn method_55010 resetAnimations + m ()Lbuv$a; s method_55014 createAttributes + m ()Lckz; t method_55015 resetJumpTrail + m ()V x method_55008 emitJumpTrailParticles + m (Lbsx;Ldcw;)V + m ()V +c ckz$1 net/minecraft/class_8949$1 net/minecraft/world/entity/monster/breeze/Breeze$1 + f [I a field_47282 $SwitchMap$net$minecraft$world$entity$Pose + m ()V +c cla net/minecraft/class_8950 net/minecraft/world/entity/monster/breeze/BreezeAi + f F a field_47283 SPEED_MULTIPLIER_WHEN_SLIDING + f F b field_47284 JUMP_CIRCLE_INNER_RADIUS + f F c field_47285 JUMP_CIRCLE_MIDDLE_RADIUS + f F d field_47286 JUMP_CIRCLE_OUTER_RADIUS + f Ljava/util/List; e field_47287 SENSOR_TYPES + f Ljava/util/List; f field_47288 MEMORY_TYPES + m (Lbuq;)V a method_55018 initCoreActivity + m (Lckz;)V a method_55748 updateActivity + m (Lckz;Lbtn;)Z a method_60727 method_60727 + m (Lckz;Lbuq;)Lbuq; a method_55016 makeBrain + m (Lbuq;)V b method_55750 initIdleActivity + m (Lckz;)Ljava/util/Optional; b method_55749 method_55749 + m (Lckz;Lbuq;)V b method_55019 initFightActivity + m ()V + m ()V +c cla$a net/minecraft/class_8950$class_8951 net/minecraft/world/entity/monster/breeze/BreezeAi$SlideToTargetSink + m (II)V +c clb net/minecraft/class_9075 net/minecraft/world/entity/monster/breeze/BreezeUtil + f D a field_47817 MAX_LINE_OF_SIGHT_TEST_RANGE + m (Lbtn;Layw;)Lexc; a method_55751 randomPointBehindTarget + m (Lckz;Lexc;)Z a method_55752 hasLineOfSight + m ()V +c clc net/minecraft/class_8952 net/minecraft/world/entity/monster/breeze/LongJump + f I c field_47289 REQUIRED_AIR_BLOCKS_ABOVE + f I d field_47291 JUMP_COOLDOWN_TICKS + f I e field_47292 JUMP_COOLDOWN_WHEN_HURT_TICKS + f I f field_47293 INHALING_DURATION_TICKS + f F g field_47294 MAX_JUMP_VELOCITY + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; h field_47295 ALLOWED_ANGLES + m (Laqu;Lckz;)Z a method_58644 canRun + m (Laqu;Lckz;J)Z a method_55021 canStillUse + m (Lbtn;Lexc;)Ljd; a method_55023 snapToSurface + m (Lckz;)Z a method_55024 isFinishedInhaling + m (Lckz;Layw;Lexc;)Ljava/util/Optional; a method_55025 calculateOptimalJumpVector + m (Lckz;Lbtn;)Z a method_55026 outOfAggroRange + m (Lckz;Ljd;)Ljava/util/Optional; a method_55028 method_55028 + m (Laqu;Lckz;)Z b method_55020 checkExtraStartConditions + m (Laqu;Lckz;J)V b method_55030 start + m (Lckz;)Z b method_55031 isFinishedJumping + m (Lckz;Lbtn;)Z b method_55032 tooCloseForJump + m (Lckz;Ljd;)V b method_55033 method_55033 + m (Laqu;Lckz;)Z c method_55029 canJumpFromCurrentPosition + m (Laqu;Lckz;J)V c method_55034 tick + m (Laqu;Lckz;J)V d method_55035 stop + m ()V + m ()V +c cld net/minecraft/class_8953 net/minecraft/world/entity/monster/breeze/Shoot + f I c field_47296 ATTACK_RANGE_MIN_SQRT + f I d field_47297 ATTACK_RANGE_MAX_SQRT + f I e field_47298 UNCERTAINTY_BASE + f I f field_47299 UNCERTAINTY_MULTIPLIER + f F g field_47300 PROJECTILE_MOVEMENT_SCALE + f I h field_47301 SHOOT_INITIAL_DELAY_TICKS + f I i field_47302 SHOOT_RECOVER_DELAY_TICKS + f I j field_47303 SHOOT_COOLDOWN_TICKS + m (Laqu;Lckz;)Z a method_55036 checkExtraStartConditions + m (Laqu;Lckz;J)Z a method_55037 canStillUse + m (Lckz;Lbtn;)Z a method_55038 isFacingTarget + m (Lckz;Ljava/lang/Boolean;)Ljava/lang/Boolean; a method_55039 method_55039 + m (Laqu;Lckz;J)V b method_55040 start + m (Lckz;Lbtn;)Z b method_55041 isTargetWithinRange + m (Laqu;Lckz;J)V c method_55042 stop + m (Lckz;Lbtn;)V c method_55043 method_55043 + m (Laqu;Lckz;J)V d method_55044 tick + m (Lckz;Lbtn;)Ljava/lang/Boolean; d method_55045 method_55045 + m ()V + m ()V +c cle net/minecraft/class_9035 net/minecraft/world/entity/monster/breeze/ShootWhenStuck + m (Laqu;Lckz;)Z a method_55501 checkExtraStartConditions + m (Laqu;Lckz;J)Z a method_55502 canStillUse + m (Laqu;Lckz;J)V b method_55503 start + m ()V +c clf net/minecraft/class_8954 net/minecraft/world/entity/monster/breeze/Slide + m (Laqu;Lckz;)Z a method_55046 checkExtraStartConditions + m (Laqu;Lckz;J)V a method_55047 start + m (Lckz;Lbtn;)Lexc; a method_55048 randomPointInMiddleCircle + m ()V +c clg net/minecraft/class_8955 net/minecraft/world/entity/monster/breeze/package-info +c clh net/minecraft/class_4760 net/minecraft/world/entity/monster/hoglin/Hoglin + f Lcom/google/common/collect/ImmutableList; cc field_22365 SENSOR_TYPES + f Lcom/google/common/collect/ImmutableList; cd field_22366 MEMORY_TYPES + f Lajw; ce field_23737 DATA_IMMUNE_TO_ZOMBIFICATION + f F cg field_30525 PROBABILITY_OF_SPAWNING_AS_BABY + f I ch field_30526 MAX_HEALTH + f F ci field_30527 MOVEMENT_SPEED_WHEN_FIGHTING + f I cj field_30528 ATTACK_KNOCKBACK + f F ck field_30529 KNOCKBACK_RESISTANCE + f I cl field_30530 ATTACK_DAMAGE + f F cm field_30531 BABY_ATTACK_DAMAGE + f I cn field_30532 CONVERSION_TIME + f I co field_22368 attackAnimationRemainingTicks + f I cp field_23735 timeInOverworld + f Z cq field_23736 cannotBeHunted + m (Laqu;)V a method_26942 finishConversion + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z c method_24349 checkHoglinSpawnRules + m ()Z gl method_26945 canBeHunted + m ()Z gm method_26946 isImmuneToZombification + m ()Lbuv$a; s method_26943 createAttributes + m ()Z t method_24658 isAdult + m ()Z x method_26944 isConverting + m (Z)V x method_26948 setImmuneToZombification + m (Z)V y method_26949 setCannotBeHunted + m (Lbsx;Ldcw;)V + m ()V +c cli net/minecraft/class_4835 net/minecraft/world/entity/monster/hoglin/HoglinAi + f I a field_30533 REPELLENT_DETECTION_RANGE_HORIZONTAL + f I b field_30534 REPELLENT_DETECTION_RANGE_VERTICAL + f Lbqc; c field_22369 RETREAT_DURATION + f I d field_30535 ATTACK_DURATION + f I e field_30536 DESIRED_DISTANCE_FROM_PIGLIN_WHEN_IDLING + f I f field_30537 DESIRED_DISTANCE_FROM_PIGLIN_WHEN_RETREATING + f I g field_30538 ATTACK_INTERVAL + f I h field_30539 BABY_ATTACK_INTERVAL + f I i field_30540 REPELLENT_PACIFY_TIME + f Lbqc; j field_25383 ADULT_FOLLOW_RANGE + f F k field_30541 SPEED_MULTIPLIER_WHEN_AVOIDING_REPELLENT + f F l field_30542 SPEED_MULTIPLIER_WHEN_RETREATING + f F m field_30543 SPEED_MULTIPLIER_WHEN_MAKING_LOVE + f F n field_30544 SPEED_MULTIPLIER_WHEN_IDLING + f F o field_30545 SPEED_MULTIPLIER_WHEN_FOLLOWING_ADULT + m ()Lbxe; a method_24662 createIdleMovementBehaviors + m (Lbtn;Lclh;)V a method_24663 method_24663 + m (Lbuq;)Lbuq; a method_24668 makeBrain + m (Lclh;)V a method_24664 updateActivity + m (Lclh;Lbtn;)V a method_24665 onHitTarget + m (Lclh;Lcom;)Lavo; a method_30082 getSoundForActivity + m (Lclh;Ljd;)Z a method_24669 isPosNearNearestRepellent + m (Lbtn;Lclh;)V b method_24670 method_24670 + m (Lbuq;)V b method_24666 initCoreActivity + m (Lclh;)Ljava/util/Optional; b method_30083 getSoundForCurrentActivity + m (Lclh;Lbtn;)V b method_24672 wasHurtBy + m (Lclh;Lcom;)Lavo; b method_30084 method_30084 + m (Lbuq;)V c method_24673 initIdleActivity + m (Lclh;)Z c method_24677 isPacified + m (Lclh;Lbtn;)V c method_24675 broadcastRetreat + m (Lbuq;)V d method_24676 initFightActivity + m (Lclh;)Ljava/util/Optional; d method_24684 findNearestValidAttackTarget + m (Lclh;Lbtn;)V d method_24678 retreatFromNearestTarget + m (Lbuq;)V e method_24679 initRetreatActivity + m (Lclh;)Z e method_25947 wantsToStopFleeing + m (Lclh;Lbtn;)V e method_24681 setAvoidTarget + m (Lclh;)Z f method_24686 piglinsOutnumberHoglins + m (Lclh;Lbtn;)V f method_24683 maybeRetaliate + m (Lclh;)Ljava/util/List; g method_24690 getVisibleAdultHoglins + m (Lclh;Lbtn;)V g method_24685 setAttackTarget + m (Lclh;)Z h method_30085 isNearRepellent + m (Lclh;Lbtn;)V h method_24687 broadcastAttackTarget + m (Lclh;)Z i method_24691 isBreeding + m (Lclh;Lbtn;)V i method_24689 setAttackTargetIfCloserThanCurrent + m ()V + m ()V +c clj net/minecraft/class_5137 net/minecraft/world/entity/monster/hoglin/HoglinBase + f I o_ field_30546 ATTACK_ANIMATION_DURATION + m (Lbtn;Lbtn;)Z a method_26950 hurtAndThrowTarget + m (Lbtn;Lbtn;)V b method_26951 throwTarget + m ()I gk method_24657 getAttackAnimationRemainingTicks +c clk net/minecraft/class_6064 net/minecraft/world/entity/monster/hoglin/package-info +c cll net/minecraft/class_6065 net/minecraft/world/entity/monster/package-info +c clm net/minecraft/class_5418 net/minecraft/world/entity/monster/piglin/AbstractPiglin + f Lajw; b field_25758 DATA_IMMUNE_TO_ZOMBIFICATION + f I c field_30547 CONVERSION_TIME + f I d field_25759 timeInOverworld + m (Laqu;)V a method_24694 finishConversion + m ()Z gk method_30235 isConverting + m ()Z gl method_30236 isAdult + m ()Lclp; gm method_24705 getArmPose + m ()Z gn method_30237 isHoldingMeleeWeapon + m ()V go method_30238 playConvertedSound + m ()Z s method_26952 canHunt + m ()Z t method_30234 isImmuneToZombification + m ()V x method_30239 applyOpenDoorsAbility + m (Z)V x method_30240 setImmuneToZombification + m (Lbsx;Ldcw;)V + m ()V +c cln net/minecraft/class_4836 net/minecraft/world/entity/monster/piglin/Piglin + f Lcom/google/common/collect/ImmutableList; cc field_22381 MEMORY_TYPES + f Lajw; cd field_22377 DATA_BABY_ID + f Lajw; ce field_22378 DATA_IS_CHARGING_CROSSBOW + f Lajw; cf field_25164 DATA_IS_DANCING + f Lakr; cg field_22379 SPEED_MODIFIER_BABY_ID + f Lbuu; ch field_22380 SPEED_MODIFIER_BABY + f I ci field_30548 MAX_HEALTH + f F cj field_30549 MOVEMENT_SPEED_WHEN_FIGHTING + f I ck field_30550 ATTACK_DAMAGE + f F cl field_30552 CHANCE_OF_WEARING_EACH_ARMOUR_ITEM + f I cm field_30553 MAX_PASSENGERS_ON_ONE_HOGLIN + f F cn field_30554 PROBABILITY_OF_SPAWNING_AS_BABY + f Lbsu; co field_47818 BABY_DIMENSIONS + f D cp field_30556 PROBABILITY_OF_SPAWNING_WITH_CROSSBOW_INSTEAD_OF_SWORD + f Lbra; cq field_22371 inventory + f Z cr field_23738 cannotHunt + f Lcom/google/common/collect/ImmutableList; e field_22376 SENSOR_TYPES + m (Lbsy;Lcuq;Layw;)V a method_24696 maybeWearArmor + m (Lbsr;I)Lbsr; b method_26089 getTopPassenger + m (Lbsx;Ldcx;Lbtr;Ljd;Layw;)Z b method_24695 checkPiglinSpawnRules + m ()Lbuv$a; gr method_26953 createAttributes + m ()Z gs method_29272 isDancing + m ()Lcuq; gt method_24702 createSpawnWeapon + m ()Z gu method_24703 isChargingCrossbow + m (Lcuq;)Lcuq; n method_24711 addToInventory + m (Lcuq;)Z o method_27085 canAddToInventory + m (Lcuq;)V p method_24844 holdInMainHand + m (Lcuq;)V q method_24845 holdInOffHand + m (Lcuq;)Z r method_24846 canReplaceCurrentItem + m (Z)V y method_29274 setDancing + m (Z)V z method_26954 setCannotHunt + m (Lbsx;Ldcw;)V + m ()V +c clo net/minecraft/class_4838 net/minecraft/world/entity/monster/piglin/PiglinAi + f Lbqc; A field_25384 AVOID_ZOMBIFIED_DURATION + f Lbqc; B field_25698 BABY_AVOID_NEMESIS_DURATION + f F C field_30557 PROBABILITY_OF_CELEBRATION_DANCE + f F D field_30558 SPEED_MULTIPLIER_WHEN_AVOIDING + f F E field_30559 SPEED_MULTIPLIER_WHEN_RETREATING + f F F field_30560 SPEED_MULTIPLIER_WHEN_MOUNTING + f F G field_30561 SPEED_MULTIPLIER_WHEN_GOING_TO_WANTED_ITEM + f F H field_30562 SPEED_MULTIPLIER_WHEN_GOING_TO_CELEBRATE_LOCATION + f F I field_30563 SPEED_MULTIPLIER_WHEN_DANCING + f F J field_30564 SPEED_MULTIPLIER_WHEN_IDLING + f I a field_30565 REPELLENT_DETECTION_RANGE_HORIZONTAL + f I b field_30566 REPELLENT_DETECTION_RANGE_VERTICAL + f Lcul; c field_23826 BARTERING_ITEM + f Lbqc; d field_22388 TIME_BETWEEN_HUNTS + f I e field_30567 PLAYER_ANGER_RANGE + f I f field_30568 ANGER_DURATION + f I g field_30569 ADMIRE_DURATION + f I h field_30570 MAX_DISTANCE_TO_WALK_TO_ITEM + f I i field_30571 MAX_TIME_TO_WALK_TO_ITEM + f I j field_30572 HOW_LONG_TIME_TO_DISABLE_ADMIRE_WALKING_IF_CANT_REACH_ITEM + f I k field_30573 CELEBRATION_TIME + f I l field_30574 BABY_FLEE_DURATION_AFTER_GETTING_HIT + f I m field_30575 HIT_BY_PLAYER_MEMORY_TIMEOUT + f I n field_30576 MAX_WALK_DISTANCE_TO_START_RIDING + f Lbqc; o field_22389 RIDE_START_INTERVAL + f Lbqc; p field_22390 RIDE_DURATION + f Lbqc; q field_22391 RETREAT_DURATION + f I r field_30577 MELEE_ATTACK_COOLDOWN + f I s field_30578 EAT_COOLDOWN + f I t field_30579 DESIRED_DISTANCE_FROM_ENTITY_WHEN_AVOIDING + f I u field_30580 MAX_LOOK_DIST + f I v field_30581 MAX_LOOK_DIST_FOR_PLAYER_HOLDING_LOVED_ITEM + f I w field_30582 INTERACTION_RANGE + f I x field_30583 MIN_DESIRED_DIST_FROM_TARGET_WHEN_HOLDING_CROSSBOW + f F y field_30584 SPEED_WHEN_STRAFING_BACK_FROM_TARGET + f I z field_30585 DESIRED_DISTANCE_FROM_ZOMBIFIED + m ()Lcom/google/common/collect/ImmutableList; a method_47272 createLookBehaviors + m (Lbsx;)Z a method_29534 isZombified + m (Lbtn;)Z a method_24719 isWearingGold + m (Lbtn;Lbtn;)Z a method_29276 wantsToDance + m (Lbtn;Lbuq;Lbtn;)V a method_29535 method_29535 + m (Lbtn;Lclm;)V a method_24721 method_24721 + m (Lbuq;)V a method_24725 initCoreActivity + m (Lbxh$a;Lbtn;)Z a method_47273 method_47273 + m (Lcjh;)Lcuq; a method_24848 removeOneItemFromItemEntity + m (Lclm;)V a method_29945 broadcastUniversalAnger + m (Lclm;Lbtn;)V a method_24759 maybeRetaliate + m (Lclm;Lcmx;)V a method_29944 method_29944 + m (Lcln;)V a method_24722 updateActivity + m (Lcln;Layw;)V a method_24736 initMemories + m (Lcln;Lbsr;)Z a method_24723 wantsToStopRiding + m (Lcln;Lbtn;)V a method_24724 wasHurtBy + m (Lcln;Lbuq;)Lbuq; a method_24732 makeBrain + m (Lcln;Lcjh;)V a method_24726 pickUpItem + m (Lcln;Lcmx;Lbqq;)Lbqr; a method_24728 mobInteract + m (Lcln;Lcmx;Ljava/util/List;)V a method_24727 throwItemsTowardPlayer + m (Lcln;Lcom;)Lavo; a method_30087 getSoundForActivity + m (Lcln;Lcuq;)Z a method_24730 wantsToPickup + m (Lcln;Ljava/util/List;)V a method_24772 throwItems + m (Lcln;Ljava/util/List;Lexc;)V a method_24731 throwItemsTowardPos + m (Lcln;Z)V a method_24741 stopHoldingOffHandItem + m (Lcmx;Lcln;)V a method_24734 method_24734 + m (Lcmx;Z)V a method_24733 angerNearbyPiglins + m (Lcuq;)Z a method_24735 isLovedItem + m (ZLcmx;Lcln;)Z a method_24745 method_24745 + m ()Lbxe; b method_24717 createIdleLookBehaviors + m (Lbtn;)Z b method_24739 isPlayerHoldingLovedItem + m (Lbtn;Lbtn;)Z b method_24720 method_24720 + m (Lbtn;Lclm;)V b method_24740 method_24740 + m (Lbuq;)V b method_24743 initIdleActivity + m (Lclm;)Ljava/util/Optional; b method_29947 getNearestVisibleTargetablePlayer + m (Lclm;Lbtn;)V b method_24742 broadcastAngerTarget + m (Lcln;)V b method_25948 cancelAdmiring + m (Lcln;Lbtn;)Z b method_24755 isNearestValidAttackTarget + m (Lcln;Lbuq;)V b method_24751 initFightActivity + m (Lcln;Lcom;)Lavo; b method_30088 method_30088 + m (Lcln;Lcuq;)Z b method_27086 canAdmire + m (Lcln;Ljava/util/List;)V b method_24774 throwItemsTowardRandomPos + m (Lcuq;)Z b method_24746 isBarterCurrency + m ()Lbxe; c method_24718 createIdleMovementBehaviors + m (Lbtn;)Z c method_24748 hasCrossbow + m (Lbuq;)V c method_24756 initCelebrateActivity + m (Lclm;)V c method_24762 dontKillAnyMoreHoglinsForAWhile + m (Lclm;Lbtn;)V c method_24750 setAngerTarget + m (Lcln;)Ljava/util/Optional; c method_30091 getSoundForCurrentActivity + m (Lcln;Lbtn;)V c method_24767 broadcastRetreat + m (Lcln;Lcuq;)V c method_30089 holdInOffhand + m (Lcuq;)Z c method_24752 isFood + m ()Lbvi; d method_24738 avoidRepellent + m (Lbtn;)V d method_24753 admireGoldItem + m (Lbuq;)V d method_24760 initAdmireItemActivity + m (Lclm;)Z d method_24766 isIdle + m (Lclm;Lbtn;)V d method_29946 setAngerTargetToNearestTargetablePlayerIfFound + m (Lcln;)Ljava/util/List; d method_24780 getVisibleAdultPiglins + m (Lcln;Lbtn;)V d method_24771 retreatFromNearestTarget + m (Lcln;Lcuq;)V d method_24849 putInInventory + m ()Lbvi; e method_30090 babyAvoidNemesis + m (Lbtn;)Z e method_24761 seesPlayerHoldingLovedItem + m (Lbuq;)V e method_24764 initRetreatActivity + m (Lclm;)Ljava/util/List; e method_26350 getAdultPiglins + m (Lclm;Lbtn;)V e method_24763 setAngerTargetIfCloserThanCurrent + m (Lcln;)Ljava/util/Optional; e method_29536 getAvoidTarget + m (Lcln;Lbtn;)V e method_24773 setAvoidTargetAndDontHuntForAWhile + m ()Lbvi; f method_24747 avoidZombified + m (Lbtn;)Z f method_24765 doesntSeeAnyPlayerHoldingLovedItem + m (Lbuq;)V f method_24768 initRideHoglinActivity + m (Lclm;)Ljava/util/Optional; f method_24782 getAngerTarget + m (Lcln;)Z f method_29277 isBabyRidingBaby + m (Lcln;Lbtn;)Z f method_24775 method_24775 + m ()Lbvi; g method_24737 babySometimesRideBabyHoglin + m (Lbtn;)Z g method_24769 wasHurtRecently + m (Lclm;)Z g method_30241 method_30241 + m (Lcln;)Ljava/util/List; g method_24776 getBarterResponseItems + m (Lclm;)V h method_29943 method_29943 + m (Lcln;)Z h method_29537 isNearZombified + m (Lcln;)Ljava/util/Optional; i method_24777 findNearestValidAttackTarget + m (Lcln;)Z j method_29538 isNearAvoidTarget + m (Lcln;)V k method_24781 stopWalking + m (Lcln;)Z l method_24783 wantsToStopFleeing + m (Lcln;)Z m method_24784 piglinsEqualOrOutnumberHoglins + m (Lcln;)Z n method_24785 hoglinsOutnumberPiglins + m (Lcln;)V o method_24787 eat + m (Lcln;)Lexc; p method_24788 getRandomNearbyPos + m (Lcln;)Z q method_24789 hasEatenRecently + m (Lcln;)Z r method_24790 isAdmiringItem + m (Lcln;)Z s method_24791 isNearRepellent + m (Lcln;)Z t method_24714 isAdmiringDisabled + m (Lcln;)Z u method_24917 isHoldingItemInOffHand + m (Lcln;)Z v method_24850 isNotHoldingLovedItemInOffHand + m (Lcln;)Z w method_47274 method_47274 + m (Lcln;)Z x method_29275 method_29275 + m ()V + m ()V +c clp net/minecraft/class_4837 net/minecraft/world/entity/monster/piglin/PiglinArmPose + f Lclp; a field_25165 ATTACKING_WITH_MELEE_WEAPON + f Lclp; b field_22383 CROSSBOW_HOLD + f Lclp; c field_22384 CROSSBOW_CHARGE + f Lclp; d field_22385 ADMIRING_ITEM + f Lclp; e field_25166 DANCING + f Lclp; f field_22386 DEFAULT + f [Lclp; g field_22387 $VALUES + m ()[Lclp; a method_36659 $values + m (Ljava/lang/String;I)V + m ()V +c clq net/minecraft/class_5419 net/minecraft/world/entity/monster/piglin/PiglinBrute + f Lcom/google/common/collect/ImmutableList; cc field_25760 MEMORY_TYPES + f I cd field_30586 MAX_HEALTH + f F ce field_30587 MOVEMENT_SPEED_WHEN_FIGHTING + f I cf field_30588 ATTACK_DAMAGE + f Lcom/google/common/collect/ImmutableList; e field_25761 SENSOR_TYPES + m ()V gr method_30243 playAngrySound + m ()Lbuv$a; x method_30242 createAttributes + m (Lbsx;Ldcw;)V + m ()V +c clr net/minecraft/class_5420 net/minecraft/world/entity/monster/piglin/PiglinBruteAi + f I a field_30589 ANGER_DURATION + f I b field_30590 MELEE_ATTACK_COOLDOWN + f D c field_30591 ACTIVITY_SOUND_LIKELIHOOD_PER_TICK + f I d field_30592 MAX_LOOK_DIST + f I e field_30593 INTERACTION_RANGE + f D f field_30594 TARGETING_RANGE + f F g field_30595 SPEED_MULTIPLIER_WHEN_IDLING + f I h field_30596 HOME_CLOSE_ENOUGH_DISTANCE + f I i field_30597 HOME_TOO_FAR_DISTANCE + f I j field_30598 HOME_STROLL_AROUND_DISTANCE + m ()Lbxe; a method_30244 createIdleLookBehaviors + m (Lbtn;Lbtn;)Z a method_30246 method_30246 + m (Lclm;)Ljava/util/Optional; a method_30247 findNearestValidAttackTarget + m (Lclm;Lbtn;)Z a method_30248 isNearestValidAttackTarget + m (Lclm;Lccs;)Ljava/util/Optional; a method_30249 getTargetIfWithinRange + m (Lclq;)V a method_30250 initMemories + m (Lclq;Lbtn;)V a method_30251 wasHurtBy + m (Lclq;Lbuq;)Lbuq; a method_30252 makeBrain + m (Lclq;Lcom;)V a method_30253 method_30253 + m ()Lbxe; b method_30254 createIdleMovementBehaviors + m (Lclm;Lbtn;)Z b method_30255 method_30255 + m (Lclq;)V b method_30256 updateActivity + m (Lclq;Lbtn;)V b method_35198 setAngerTarget + m (Lclq;Lbuq;)V b method_30257 initCoreActivity + m (Lclq;)V c method_30258 maybePlayActivitySound + m (Lclq;Lbtn;)Z c method_30259 method_30259 + m (Lclq;Lbuq;)V c method_30260 initIdleActivity + m (Lclq;)V d method_30261 playActivitySound + m (Lclq;Lbuq;)V d method_30262 initFightActivity + m ()V +c cls net/minecraft/class_4819 net/minecraft/world/entity/monster/piglin/RememberIfHoglinWasKilled + m ()Lbvi; a method_47275 create + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47276 method_47276 + m (Lbyu$b;Lbyv;Lbyv;)Lbyx; a method_47277 method_47277 + m (Lbyu$b;Lbyv;Lbyv;Laqu;Lbtn;J)Z a method_47278 method_47278 + m ()V +c clt net/minecraft/class_4823 net/minecraft/world/entity/monster/piglin/StartAdmiringItemIfSeen + m (I)Lbvi; a method_47279 create + m (ILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47280 method_47280 + m (Lbyu$b;ILbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47281 method_47281 + m (Lbyu$b;Lbyv;Lbyv;ILaqu;Lbtn;J)Z a method_47282 method_47282 + m ()V +c clu net/minecraft/class_4826 net/minecraft/world/entity/monster/piglin/StartHuntingHoglin + m ()Lbws; a method_47283 create + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47284 method_47284 + m (Lbyu$b;Lbyv;Lbyv;Laqu;Lcln;J)Z a method_47285 method_47285 + m (Lbyu$b;Lbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47286 method_47286 + m (Lclm;)Z a method_47287 hasHuntedRecently + m (Ljava/util/List;)V a method_47288 method_47288 + m (Ljava/util/List;)Ljava/lang/Boolean; b method_47289 method_47289 + m ()V +c clv net/minecraft/class_4827 net/minecraft/world/entity/monster/piglin/StopAdmiringIfItemTooFarAway + m (I)Lbvi; a method_47290 create + m (ILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47291 method_47291 + m (Lbyu$b;ILbyv;Lbyv;)Lbyx; a method_47292 method_47292 + m (Lbyu$b;Lbyv;ILbyv;Laqu;Lbtn;J)Z a method_47293 method_47293 + m ()V +c clw net/minecraft/class_5430 net/minecraft/world/entity/monster/piglin/StopAdmiringIfTiredOfTryingToReachItem + m (II)Lbvi; a method_47294 create + m (IILbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47295 method_47295 + m (Lbyu$b;IILbyv;Lbyv;Lbyv;Lbyv;)Lbyx; a method_47296 method_47296 + m (Lbyu$b;Lbyv;ILbyv;Lbyv;ILaqu;Lbtn;J)Z a method_47297 method_47297 + m ()V +c clx net/minecraft/class_4830 net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring + m ()Lbvi; a method_47298 create + m (Laqu;Lcln;J)Z a method_47299 method_47299 + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47300 method_47300 + m (Lbyv;)Lbyx; a method_47301 method_47301 + m ()V +c cly net/minecraft/class_6066 net/minecraft/world/entity/monster/piglin/package-info +c clz net/minecraft/class_7253 net/minecraft/world/entity/monster/warden/AngerLevel + f Lclz; a field_38120 CALM + f Lclz; b field_38121 AGITATED + f Lclz; c field_38122 ANGRY + f [Lclz; d field_38123 SORTED_LEVELS + f I e field_38124 minimumAnger + f Lavo; f field_38125 ambientSound + f Lavo; g field_38732 listeningSound + f [Lclz; h field_38126 $VALUES + m ()I a method_42170 getMinimumAnger + m (I)Lclz; a method_42171 byAnger + m (Lclz;Lclz;)I a method_42172 method_42172 + m ([Lclz;)V a method_42173 method_42173 + m ()Lavo; b method_42174 getAmbientSound + m ()Lavo; c method_43103 getListeningSound + m ()Z d method_43691 isAngry + m ()[Lclz; e method_42175 $values + m (Ljava/lang/String;IILavo;Lavo;)V + m ()V +c cma net/minecraft/class_7254 net/minecraft/world/entity/monster/warden/AngerManagement + f I a field_38733 CONVERSION_DELAY + f I b field_38128 MAX_ANGER + f Ljava/util/ArrayList; c field_38734 suspects + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; d field_38130 angerBySuspect + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; e field_38735 angerByUuid + f I f field_38129 DEFAULT_ANGER_DECREASE + f I g field_38736 conversionDelay + f I h field_39304 highestAnger + f Lcom/mojang/serialization/Codec; i field_38737 SUSPECT_ANGER_PAIR + f Ljava/util/function/Predicate; j field_39114 filter + f Lcma$a; k field_39115 suspectSorter + m ()Ljava/util/Optional; a method_42181 getActiveEntity + m (ILbsr;Ljava/lang/Integer;)Ljava/lang/Integer; a method_42177 method_42177 + m (Laqu;)V a method_43104 convertFromUuids + m (Laqu;Ljava/util/function/Predicate;)V a method_42176 tick + m (Lbsr;)V a method_42178 clearAnger + m (Lbsr;I)I a method_42179 increaseAnger + m (Lcom/mojang/datafixers/util/Pair;)V a method_43105 method_43105 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43107 method_43107 + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;)Lcom/mojang/datafixers/util/Pair; a method_43106 method_43106 + m (Ljava/util/function/Predicate;)Lcom/mojang/serialization/Codec; a method_43692 codec + m (Ljava/util/function/Predicate;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43693 method_43693 + m (Ljava/util/function/Predicate;Ljava/util/List;)Lcma; a method_43694 method_43694 + m ()Ljava/util/List; b method_43108 createUuidAngerPairs + m (Lbsr;)I b method_42185 getActiveAnger + m ()V c method_43998 sortAndUpdateHighestAnger + m (Lbsr;)Lbtn; c method_42186 method_42186 + m ()Lbsr; d method_42187 getTopSuspect + m (Lbsr;)Z d method_42188 method_42188 + m (Lbsr;)Lcom/mojang/datafixers/util/Pair; e method_43109 method_43109 + m (Ljava/util/function/Predicate;Ljava/util/List;)V + m ()V +c cma$1 net/minecraft/class_7254$1 net/minecraft/world/entity/monster/warden/AngerManagement$1 + f [I a field_39116 $SwitchMap$net$minecraft$world$entity$Entity$RemovalReason + m ()V +c cma$a net/minecraft/class_7254$class_7379 net/minecraft/world/entity/monster/warden/AngerManagement$Sorter + f Lcma; a comp_708 angerManagement + m ()Lcma; a comp_708 angerManagement + m (Lbsr;Lbsr;)I a method_43110 compare + m (Lcma;)V +c cmb net/minecraft/class_7260 net/minecraft/world/entity/monster/warden/Warden + f Lbsm; b field_38168 roarAnimationState + f I cA field_39305 PROJECTILE_ANGER_DISTANCE + f I cB field_38162 tendrilAnimation + f I cD field_38163 tendrilAnimationO + f I cE field_38164 heartAnimation + f I cF field_38165 heartAnimationO + f Ldxw; cG field_38166 dynamicGameEventListener + f Ldyi$d; cH field_44598 vibrationUser + f Ldyi$a; cI field_44599 vibrationData + f Lcma; cJ field_38141 angerManagement + f Lbsm; c field_38169 sniffAnimationState + f Lbsm; cc field_38137 attackAnimationState + f Lbsm; cd field_38859 sonicBoomAnimationState + f Lorg/slf4j/Logger; ce field_38138 LOGGER + f I cf field_38142 VIBRATION_COOLDOWN_TICKS + f I cg field_38860 TIME_TO_USE_MELEE_UNTIL_SONIC_BOOM + f I ch field_38143 MAX_HEALTH + f F ci field_38144 MOVEMENT_SPEED_WHEN_FIGHTING + f F cj field_38145 KNOCKBACK_RESISTANCE + f F ck field_38146 ATTACK_KNOCKBACK + f I cl field_38147 ATTACK_DAMAGE + f Lajw; cm field_38148 CLIENT_ANGER_LEVEL + f I cn field_38149 DARKNESS_DISPLAY_LIMIT + f I co field_38150 DARKNESS_DURATION + f I cp field_38151 DARKNESS_RADIUS + f I cq field_38152 DARKNESS_INTERVAL + f I cr field_38153 ANGERMANAGEMENT_TICK_DELAY + f I cs field_38155 DEFAULT_ANGER + f I ct field_38156 PROJECTILE_ANGER + f I cu field_39117 ON_HURT_ANGER_BOOST + f I cv field_38157 RECENT_PROJECTILE_TICK_THRESHOLD + f I cw field_38158 TOUCH_COOLDOWN_TICKS + f I cx field_38159 DIGGING_PARTICLES_AMOUNT + f F cy field_38160 DIGGING_PARTICLES_DURATION + f F cz field_38161 DIGGING_PARTICLES_OFFSET + f Lbsm; d field_38135 emergeAnimationState + f Lbsm; e field_38136 diggingAnimationState + m (F)F H method_42223 getTendrilAnimation + m (F)F I method_42202 getHeartAnimation + m (Laqu;Lexc;Lbsr;I)V a method_42204 applyDarknessAround + m (Lbsm;)V a method_42205 clientDiggingParticles + m (Lbsr;IZ)V a method_42212 increaseAngerAt + m (Lcma;)V a method_42208 method_42208 + m (Lcmb;)Lbuq; a method_51302 method_51302 + m (Ldyi$a;)V a method_51303 method_51303 + m (Lub;Luy;)V a method_42669 method_42669 + m (Lub;Luy;)V b method_42209 method_42209 + m (Lbsr;)Z c method_42206 canTargetEntity + m (Lbsr;)V d method_42211 clearAnger + m (Ljava/lang/String;)V d method_60979 method_60979 + m (Lbsr;)V e method_42213 increaseAngerAt + m (Ljava/lang/String;)V e method_60980 method_60980 + m (Ljava/lang/String;)V f method_60981 method_60981 + m (Ljava/lang/String;)V g method_60982 method_60982 + m ()Ljava/util/Optional; gk method_42215 getEntityAngryAt + m ()Lcma; gl method_42216 getAngerManagement + m ()Z go method_43113 isDiggingOrEmerging + m ()V gr method_42217 syncClientAngerLevel + m ()I gs method_42218 getHeartBeatDelay + m ()V gt method_42219 playListeningSound + m ()I gu method_43999 getActiveAnger + m (Lbtn;)V j method_43274 setAttackTarget + m ()Lbuv$a; s method_42221 createAttributes + m ()I t method_42222 getClientAngerLevel + m ()Lclz; x method_42214 getAngerLevel + m (Lbsx;Ldcw;)V + m ()V +c cmb$1 net/minecraft/class_7260$1 net/minecraft/world/entity/monster/warden/Warden$1 + m (Lcmb;Lbtp;Ldcw;)V +c cmb$1$1 net/minecraft/class_7260$1$1 net/minecraft/world/entity/monster/warden/Warden$1$1 + m (Lcmb$1;Lepr;I)V +c cmb$2 net/minecraft/class_7260$2 net/minecraft/world/entity/monster/warden/Warden$2 + f [I a field_38170 $SwitchMap$net$minecraft$world$entity$Pose + m ()V +c cmb$a net/minecraft/class_7260$class_8507 net/minecraft/world/entity/monster/warden/Warden$VibrationUser + f Lcmb; a field_44600 field_44600 + f I b field_44601 GAME_EVENT_LISTENER_RANGE + f Ldyd; c field_44602 positionSource + m (Lcmb;)V +c cmc net/minecraft/class_7261 net/minecraft/world/entity/monster/warden/WardenAi + f I a field_38171 EMERGE_DURATION + f I b field_38172 ROAR_DURATION + f I c field_38173 DIGGING_COOLDOWN + f F d field_38175 SPEED_MULTIPLIER_WHEN_IDLING + f F e field_38176 SPEED_MULTIPLIER_WHEN_INVESTIGATING + f F f field_38177 SPEED_MULTIPLIER_WHEN_FIGHTING + f I g field_38178 MELEE_ATTACK_COOLDOWN + f I h field_38179 DIGGING_DURATION + f I i field_38180 SNIFFING_DURATION + f I j field_38181 DISTURBANCE_LOCATION_EXPIRY_TIME + f Ljava/util/List; k field_38416 SENSOR_TYPES + f Ljava/util/List; l field_38417 MEMORY_TYPES + f Lbvi; m field_38182 DIG_COOLDOWN_SETTER + m (Lbtn;)V a method_42225 setDigCooldown + m (Lbtn;Lbtn;)Z a method_42232 method_42232 + m (Lbuq;)V a method_42227 initCoreActivity + m (Lbyu$b;)Lcom/mojang/datafixers/kinds/App; a method_47302 method_47302 + m (Lbyu$b;Lbyv;)Lbyx; a method_47303 method_47303 + m (Lbyu$b;Lbyv;Laqu;Lcmb;J)Z a method_47304 method_47304 + m (Lcmb;)V a method_42228 updateActivity + m (Lcmb;Lbtn;)Z a method_42229 isTarget + m (Lcmb;Lbuq;)V a method_42236 initFightActivity + m (Lcmb;Lcom/mojang/serialization/Dynamic;)Lbuq; a method_42230 makeBrain + m (Lcmb;Ljd;)V a method_42231 setDisturbanceLocation + m (Lbuq;)V b method_42233 initEmergeActivity + m (Lcmb;Lbtn;)V b method_42235 onTargetInvalid + m (Lbuq;)V c method_42237 initDiggingActivity + m (Lcmb;Lbtn;)Z c method_42241 method_42241 + m (Lbuq;)V d method_42240 initIdleActivity + m (Lcmb;Lbtn;)Z d method_42243 method_42243 + m (Lbuq;)V e method_42242 initInvestigateActivity + m (Lbuq;)V f method_42244 initSniffingActivity + m (Lbuq;)V g method_42245 initRoarActivity + m ()V + m ()V +c cmd net/minecraft/class_7262 net/minecraft/world/entity/monster/warden/WardenSpawnTracker + f Lcom/mojang/serialization/Codec; a field_38183 CODEC + f I b field_38184 MAX_WARNING_LEVEL + f D c field_38738 PLAYER_SEARCH_RADIUS + f I d field_38186 WARNING_CHECK_DIAMETER + f I e field_38187 DECREASE_WARNING_LEVEL_EVERY_INTERVAL + f I f field_38188 WARNING_LEVEL_INCREASE_COOLDOWN + f I g field_38194 ticksSinceLastWarning + f I h field_38195 warningLevel + f I i field_38196 cooldownTicks + m ()V a method_42247 tick + m (I)V a method_42248 setWarningLevel + m (Laqu;Ljd;)Z a method_42259 hasNearbyWarden + m (Laqu;Ljd;Laqv;)Ljava/util/OptionalInt; a method_42250 tryWarn + m (Laqv;)Ljava/util/stream/Stream; a method_45380 method_45380 + m (Lcmd;)V a method_42252 copyData + m (Lcmd;Laqv;)V a method_44002 method_44002 + m (Lcmd;Lcmd;)V a method_45381 method_45381 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42254 method_42254 + m (Lexc;Laqv;)Z a method_42255 method_42255 + m ()V b method_42258 reset + m (Laqu;Ljd;)Ljava/util/List; b method_42265 getNearbyPlayers + m (Laqv;)Z b method_44001 method_44001 + m (Lcmd;)Ljava/lang/Integer; b method_42263 method_42263 + m ()I c method_42267 getWarningLevel + m (Lcmd;)Ljava/lang/Integer; c method_42266 method_42266 + m ()Z d method_44003 onCooldown + m (Lcmd;)Ljava/lang/Integer; d method_42269 method_42269 + m ()V e method_42261 increaseWarningLevel + m ()V f method_42264 decreaseWarningLevel + m (III)V + m ()V +c cme net/minecraft/class_7263 net/minecraft/world/entity/monster/warden/package-info +c cmf net/minecraft/class_3988 net/minecraft/world/entity/npc/AbstractVillager + f I cc field_30599 VILLAGER_SLOT_OFFSET + f Ldbv; cd field_17721 offers + f Lajw; ce field_19295 DATA_UNHAPPY_COUNTER + f Lorg/slf4j/Logger; cf field_48833 LOGGER + f I cg field_30600 VILLAGER_INVENTORY_SIZE + f Lcmx; ch field_17722 tradingPlayer + f Lbra; ci field_17723 inventory + m (Ldbv;[Lcmo$g;I)V a method_19170 addOffersFromItemListings + m (Llk;)V a method_18007 addParticlesAroundSelf + m (Ldbu;)V b method_18008 rewardTradeXp + m (Ldbv;)V b method_56682 method_56682 + m ()Z gl method_18009 isTrading + m ()V gp method_20010 playCelebrateSound + m ()V gq method_19181 stopTrading + m ()V gr method_7237 updateTrades + m ()I s method_20506 getUnhappyCounter + m (I)V s method_20507 setUnhappyCounter + m (Z)Lavo; x method_18012 getTradeUpdatedSound + m (Lbsx;Ldcw;)V + m ()V +c cmg net/minecraft/class_4274 net/minecraft/world/entity/npc/CatSpawner + f I a field_30601 TICK_DELAY + f I b field_19171 nextTick + m (Laqu;Ljd;)I a method_20263 spawnInVillage + m (Ljd;Laqu;)I a method_20262 spawnCat + m (Ljm;)Z a method_44004 method_44004 + m (Laqu;Ljd;)I b method_20260 spawnInHut + m ()V +c cmh net/minecraft/class_1645 net/minecraft/world/entity/npc/ClientSideMerchant + f Lcmx; a field_7441 source + f Ldbv; b field_7442 offers + f I c field_18525 xp + m (Lcmx;)V +c cmi net/minecraft/class_6067 net/minecraft/world/entity/npc/InventoryCarrier + f Ljava/lang/String; e_ field_40736 TAG_INVENTORY + m (Lbtp;Lcmi;Lcjh;)V a method_43544 pickUpItem + m (Lub;Ljo$a;)V a method_46400 readInventoryFromTag + m (Lub;Ljo$a;)V b method_46399 writeInventoryToTag + m ()Lbra; x method_35199 getInventory +c cmj net/minecraft/class_1655 net/minecraft/world/entity/npc/Npc +c cmk net/minecraft/class_1646 net/minecraft/world/entity/npc/Villager + f J cA field_19357 lastGossipDecayTime + f I cB field_18536 villagerXp + f J cD field_18537 lastRestockGameTime + f I cE field_19427 numberOfRestocksToday + f J cF field_20332 lastRestockCheckDayTime + f Z cG field_25167 assignProfessionWhenSpawned + f Lcom/google/common/collect/ImmutableList; cH field_18538 MEMORY_TYPES + f Lcom/google/common/collect/ImmutableList; cI field_18539 SENSOR_TYPES + f I ce field_30602 BREEDING_FOOD_THRESHOLD + f Ljava/util/Map; cf field_18526 FOOD_POINTS + f F cg field_30603 SPEED_MODIFIER + f Ljava/util/Map; ch field_18851 POI_MEMORIES + f Lorg/slf4j/Logger; ci field_36335 LOGGER + f Lajw; cj field_7445 DATA_VILLAGER_DATA + f I ck field_30604 TRADES_PER_LEVEL + f Ljava/util/Set; cl field_18527 WANTED_ITEMS + f I cm field_30605 MAX_GOSSIP_TOPICS + f I cn field_30606 GOSSIP_COOLDOWN + f I co field_30607 GOSSIP_DECAY_INTERVAL + f I cp field_30608 REPUTATION_CHANGE_PER_EVENT + f I cq field_30609 HOW_FAR_AWAY_TO_TALK_TO_OTHER_VILLAGERS_ABOUT_GOLEMS + f I cr field_30610 HOW_MANY_VILLAGERS_NEED_TO_AGREE_TO_SPAWN_A_GOLEM + f J cs field_30611 TIME_SINCE_SLEEPING_FOR_GOLEM_SPAWNING + f I ct field_18528 updateMerchantTimer + f Z cu field_18529 increaseProfessionLevelOnUpdate + f Lcmx; cv field_18530 lastTradedPlayer + f Z cw field_30612 chasing + f I cx field_18533 foodLevel + f Lcco; cy field_18534 gossips + f J cz field_18535 lastGossipTime + m (J)Z a method_20687 wantsToSpawnGolem + m (JLcmk;)Z a method_20693 method_20693 + m (Laqu;)V a method_19179 refreshBrain + m (Laqu;JI)V a method_20688 spawnGolemIfNeeded + m (Laqu;Lbsr;Lbtn;)V a method_20699 method_20699 + m (Laqu;Lcmk;J)V a method_19177 gossip + m (Lbra;Ljava/util/Map$Entry;)I a method_19172 method_19172 + m (Lbuq;)V a method_19174 registerBrainGoals + m (Lccp;)Z a method_20593 method_20593 + m (Lccs;)V a method_19176 releasePoi + m (Lcmk;Ljm;)Z a method_19520 method_19520 + m (Lnet/minecraft/server/MinecraftServer;Lccs;Ljl;)V a method_19178 method_19178 + m (Lub;Luy;)V a method_28370 method_28370 + m (Luy;)V a method_21650 setGossips + m (J)Z b method_20741 golemSpawnConditionsMet + m (Laqu;Lbsl;)Lcmk; b method_7225 getBreedOffspring + m (Lcmk;Ljm;)Z b method_29278 method_29278 + m (Lcml;)V b method_56683 method_56683 + m (Ldbv;)V b method_16917 setOffers + m (Lbsr;)V c method_20690 tellWitnessesThatIWasMurdered + m (Lcmk;Ljm;)Z c method_19521 method_19521 + m (Lcmk;Ljm;)Z d method_19522 method_19522 + m (Lcmx;)I f method_20594 getPlayerReputation + m (Lcmx;)V g method_19191 startTrading + m ()Z gA method_35200 isChasing + m ()V gB method_20697 eatAndDigestFood + m ()Z gC method_7234 hasExcessFood + m ()Z gD method_7239 wantsMoreFood + m ()Z gE method_19623 hasFarmSeeds + m ()Lcco; gF method_21651 getGossips + m ()V gG method_20264 setUnhappy + m ()V gH method_19187 resetSpecialPrices + m ()V gI method_49695 resendOffersToTradingPlayer + m ()Z gJ method_20823 needsToRestock + m ()Z gK method_20824 allowedToRestock + m ()V gL method_21723 catchUpDemand + m ()V gM method_21724 updateDemand + m ()V gN method_30958 releaseAllPois + m ()Z gO method_20698 hungry + m ()V gP method_19185 eatUntilFull + m ()Z gQ method_19188 shouldIncreaseLevel + m ()V gR method_16918 increaseMerchantCareer + m ()I gS method_19189 countFoodPointsInInventory + m ()V gT method_20696 maybeDecayGossip + m ()V gU method_20821 resetNumberOfRestocks + m ()Lbuv$a; gt method_26955 createAttributes + m ()Z gu method_29279 assignProfessionWhenSpawned + m ()V gx method_19182 restock + m ()Z gy method_20822 shouldRestock + m ()V gz method_19183 playWorkSound + m (Lcmx;)V h method_19192 updateSpecialPrices + m (Lcuq;)Z o method_51304 method_51304 + m (I)V u method_19625 setVillagerXp + m (I)V v method_19193 digestFood + m (Z)V y method_35201 setChasing + m (Lbsx;Ldcw;)V + m (Lbsx;Ldcw;Lcmp;)V + m ()V +c cml net/minecraft/class_3850 net/minecraft/world/entity/npc/VillagerData + f I a field_30613 MIN_VILLAGER_LEVEL + f I b field_30614 MAX_VILLAGER_LEVEL + f Lcom/mojang/serialization/Codec; c field_24669 CODEC + f Lyx; d field_48345 STREAM_CODEC + f [I e field_18540 NEXT_LEVEL_XP_THRESHOLDS + f Lcmp; f field_17048 type + f Lcmn; g field_17049 profession + f I h field_17050 level + m ()Lcmp; a method_16919 getType + m (I)Lcml; a method_16920 setLevel + m (Lcml;)Ljava/lang/Integer; a method_56089 method_56089 + m (Lcmn;)Lcml; a method_16921 setProfession + m (Lcmp;)Lcml; a method_16922 setType + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28372 method_28372 + m ()Lcmn; b method_16924 getProfession + m (I)I b method_19194 getMinXpPerLevel + m (Lcml;)Lcmn; b method_56090 method_56090 + m ()I c method_16925 getLevel + m (I)I c method_19195 getMaxXpPerLevel + m (Lcml;)Lcmp; c method_56091 method_56091 + m ()Lcmn; d method_29948 method_29948 + m (I)Z d method_19196 canLevelUp + m (Lcml;)Ljava/lang/Integer; d method_28371 method_28371 + m ()Lcmp; e method_29949 method_29949 + m (Lcml;)Lcmn; e method_28373 method_28373 + m (Lcml;)Lcmp; f method_28374 method_28374 + m (Lcmp;Lcmn;I)V + m ()V +c cmm net/minecraft/class_3851 net/minecraft/world/entity/npc/VillagerDataHolder + m ()Lcmp; a method_47882 getVariant + m (Lcml;)V a method_7195 setVillagerData + m (Lcmp;)V a method_47883 setVariant + m ()Lcml; gv method_7231 getVillagerData +c cmn net/minecraft/class_3852 net/minecraft/world/entity/npc/VillagerProfession + f Ljava/util/function/Predicate; a field_39308 ALL_ACQUIRABLE_JOBS + f Lcmn; b field_17051 NONE + f Lcmn; c field_17052 ARMORER + f Lcmn; d field_17053 BUTCHER + f Lcmn; e field_17054 CARTOGRAPHER + f Lcmn; f field_17055 CLERIC + f Lcmn; g field_17056 FARMER + f Lcmn; h field_17057 FISHERMAN + f Lcmn; i field_17058 FLETCHER + f Lcmn; j field_17059 LEATHERWORKER + f Lcmn; k field_17060 LIBRARIAN + f Lcmn; l field_17061 MASON + f Lcmn; m field_17062 NITWIT + f Lcmn; n field_17063 SHEPHERD + f Lcmn; o field_17064 TOOLSMITH + f Lcmn; p field_17065 WEAPONSMITH + f Ljava/lang/String; q comp_818 name + f Ljava/util/function/Predicate; r comp_819 heldJobSite + f Ljava/util/function/Predicate; s comp_820 acquirableJobSite + f Lcom/google/common/collect/ImmutableSet; t comp_821 requestedItems + f Lcom/google/common/collect/ImmutableSet; u comp_822 secondaryPoi + f Lavo; v comp_823 workSound + m ()Ljava/lang/String; a comp_818 name + m (Lakq;Ljm;)Z a method_44321 method_44321 + m (Ljava/lang/String;Lakq;Lavo;)Lcmn; a method_16926 register + m (Ljava/lang/String;Lakq;Lcom/google/common/collect/ImmutableSet;Lcom/google/common/collect/ImmutableSet;Lavo;)Lcmn; a method_19197 register + m (Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lavo;)Lcmn; a method_44007 register + m (Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lcom/google/common/collect/ImmutableSet;Lcom/google/common/collect/ImmutableSet;Lavo;)Lcmn; a method_44008 register + m (Ljm;)Z a method_44006 method_44006 + m ()Ljava/util/function/Predicate; b comp_819 heldJobSite + m (Lakq;Ljm;)Z b method_44005 method_44005 + m ()Ljava/util/function/Predicate; c comp_820 acquirableJobSite + m (Lakq;Ljm;)Z c method_44322 method_44322 + m ()Lcom/google/common/collect/ImmutableSet; d comp_821 requestedItems + m (Lakq;Ljm;)Z d method_44009 method_44009 + m ()Lcom/google/common/collect/ImmutableSet; e comp_822 secondaryPoi + m ()Lavo; f comp_823 workSound + m (Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/function/Predicate;Lcom/google/common/collect/ImmutableSet;Lcom/google/common/collect/ImmutableSet;Lavo;)V + m ()V +c cmo net/minecraft/class_3853 net/minecraft/world/entity/npc/VillagerTrades + f Ljava/util/Map; a field_17067 TRADES + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; b field_17724 WANDERING_TRADER_TRADES + f Ljava/util/Map; c field_45128 EXPERIMENTAL_TRADES + f Ljava/util/List; d field_45129 EXPERIMENTAL_WANDERING_TRADER_TRADES + f I e field_30615 DEFAULT_SUPPLY + f I f field_30616 COMMON_ITEMS_SUPPLY + f I g field_30617 UNCOMMON_ITEMS_SUPPLY + f I h field_30618 XP_LEVEL_1_SELL + f I i field_30619 XP_LEVEL_1_BUY + f I j field_30620 XP_LEVEL_2_SELL + f I k field_30621 XP_LEVEL_2_BUY + f I l field_30622 XP_LEVEL_3_SELL + f I m field_30623 XP_LEVEL_3_BUY + f I n field_30624 XP_LEVEL_4_SELL + f I o field_30625 XP_LEVEL_4_BUY + f I p field_30626 XP_LEVEL_5_TRADE + f F q field_30627 LOW_TIER_PRICE_MULTIPLIER + f F r field_30628 HIGH_TIER_PRICE_MULTIPLIER + f Lcmo$l; s field_46167 DESERT_MAP + f Lcmo$l; t field_46168 SAVANNA_MAP + f Lcmo$l; u field_46169 PLAINS_MAP + f Lcmo$l; v field_46170 TAIGA_MAP + f Lcmo$l; w field_46171 SNOWY_MAP + f Lcmo$l; x field_46172 JUNGLE_MAP + f Lcmo$l; y field_46173 SWAMP_MAP + m ()Lcmo$g; a method_52551 specialBooks + m (I)Lcmo$g; a method_52552 commonBooks + m (Lcom/google/common/collect/ImmutableMap;)Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a method_16928 toIntMap + m (Ljava/util/HashMap;)V a method_16929 method_16929 + m (Ljm;)Ldbs; a method_57311 potionCost + m (Ljm;Lko$a;)Lko$a; a method_57312 method_57312 + m (Ljm;)Lcuq; b method_52553 potion + m ()V + m ()V +c cmo$a net/minecraft/class_3853$class_4160 net/minecraft/world/entity/npc/VillagerTrades$DyedArmorForEmeralds + f Lcul; a field_18544 item + f I b field_18545 value + f I c field_18546 maxUses + f I d field_18547 villagerXp + m (Layw;)Lctj; a method_19200 getRandomDye + m (Lcul;I)V + m (Lcul;III)V +c cmo$b net/minecraft/class_3853$class_4161 net/minecraft/world/entity/npc/VillagerTrades$EmeraldForItems + f Ldbs; a field_45130 itemStack + f I b field_18550 maxUses + f I c field_18551 villagerXp + f I d field_18549 emeraldAmount + f F e field_18552 priceMultiplier + m (Ldcv;III)V + m (Ldcv;IIII)V + m (Ldbs;III)V +c cmo$c net/minecraft/class_3853$class_4162 net/minecraft/world/entity/npc/VillagerTrades$EmeraldsForVillagerTypeItem + f Ljava/util/Map; a field_18553 trades + f I b field_18554 cost + f I c field_18555 maxUses + f I d field_18556 villagerXp + m (Lcmp;)V a method_19201 method_19201 + m (Ljava/util/Map;Lcmp;)Z a method_19202 method_19202 + m (IIILjava/util/Map;)V +c cmo$d net/minecraft/class_3853$class_1648 net/minecraft/world/entity/npc/VillagerTrades$EnchantBookForEmeralds + f I a field_18557 villagerXp + f Lawu; b field_45131 tradeableEnchantments + f I c field_45132 minLevel + f I d field_45133 maxLevel + m (ILawu;)V + m (IIILawu;)V +c cmo$e net/minecraft/class_3853$class_4163 net/minecraft/world/entity/npc/VillagerTrades$EnchantedItemForEmeralds + f Lcuq; a field_18558 itemStack + f I b field_18559 baseEmeraldCost + f I c field_18560 maxUses + f I d field_18561 villagerXp + f F e field_18562 priceMultiplier + m (Lcul;III)V + m (Lcul;IIIF)V +c cmo$f net/minecraft/class_3853$class_8793 net/minecraft/world/entity/npc/VillagerTrades$FailureItemListing + m ()V +c cmo$g net/minecraft/class_3853$class_1652 net/minecraft/world/entity/npc/VillagerTrades$ItemListing + m (Lbsr;Layw;)Ldbu; a method_7246 getOffer +c cmo$h net/minecraft/class_3853$class_4164 net/minecraft/world/entity/npc/VillagerTrades$ItemsAndEmeraldsToItems + f Ldbs; a field_18563 fromItem + f I b field_18565 emeraldCost + f Lcuq; c field_18566 toItem + f I d field_18568 maxUses + f I e field_18569 villagerXp + f F f field_18570 priceMultiplier + f Ljava/util/Optional; g field_51618 enchantmentProvider + m (Lcuq;Ldcw;Lbsr;Layw;Lakq;)V a method_59950 method_59950 + m (Ldcv;IILcul;IIIF)V + m (Ldcv;IILcuq;IIIF)V + m (Ldcv;IILdcv;IIIFLakq;)V + m (Ldbs;ILcuq;IIFLjava/util/Optional;)V +c cmo$i net/minecraft/class_3853$class_4165 net/minecraft/world/entity/npc/VillagerTrades$ItemsForEmeralds + f Lcuq; a field_18571 itemStack + f I b field_18572 emeraldCost + f I c field_18574 maxUses + f I d field_18575 villagerXp + f F e field_18576 priceMultiplier + f Ljava/util/Optional; f field_51619 enchantmentProvider + m (Lcuq;Ldcw;Lbsr;Layw;Lakq;)V a method_59951 method_59951 + m (Ldfy;IIII)V + m (Lcul;III)V + m (Lcul;IIII)V + m (Lcuq;IIII)V + m (Lcul;IIIIF)V + m (Lcul;IIIIFLakq;)V + m (Lcuq;IIIIF)V + m (Lcuq;IIIIFLjava/util/Optional;)V +c cmo$j net/minecraft/class_3853$class_4166 net/minecraft/world/entity/npc/VillagerTrades$SuspiciousStewForEmerald + f Lcxw; a field_45756 effects + f I b field_18579 xp + f F c field_18580 priceMultiplier + m (Ljm;II)V + m (Lcxw;IF)V +c cmo$k net/minecraft/class_3853$class_4167 net/minecraft/world/entity/npc/VillagerTrades$TippedArrowForItemsAndEmeralds + f Lcuq; a field_18581 toItem + f I b field_18582 toCount + f I c field_18583 emeraldCost + f I d field_18584 maxUses + f I e field_18585 villagerXp + f Lcul; f field_18586 fromItem + f I g field_18587 fromCount + f F h field_18588 priceMultiplier + m (Lbsr;Ljm$c;)Z a method_19203 method_19203 + m (Lcul;ILcul;IIII)V +c cmo$l net/minecraft/class_3853$class_1654 net/minecraft/world/entity/npc/VillagerTrades$TreasureMapForEmeralds + f I a field_18589 emeraldCost + f Lawu; b field_7474 destination + f Ljava/lang/String; c field_37051 displayName + f Ljm; d field_7473 destinationType + f I e field_18590 maxUses + f I f field_18591 villagerXp + m (ILawu;Ljava/lang/String;Ljm;II)V +c cmo$m net/minecraft/class_3853$class_8640 net/minecraft/world/entity/npc/VillagerTrades$TypeSpecificTrade + f Ljava/util/Map; a comp_1962 trades + m ()Ljava/util/Map; a comp_1962 trades + m (Lcmo$g;Lcmp;)Lcmo$g; a method_53833 method_53833 + m (Lcmo$g;[Lcmp;)Lcmo$m; a method_53834 oneTradeInBiomes + m (Lcmp;)Lcmp; a method_53835 method_53835 + m (Ljava/util/Map;)V +c cmp net/minecraft/class_3854 net/minecraft/world/entity/npc/VillagerType + f Lcmp; a field_17071 DESERT + f Lcmp; b field_17072 JUNGLE + f Lcmp; c field_17073 PLAINS + f Lcmp; d field_17074 SAVANNA + f Lcmp; e field_17075 SNOW + f Lcmp; f field_17076 SWAMP + f Lcmp; g field_17077 TAIGA + f Ljava/lang/String; h field_26690 name + f Ljava/util/Map; i field_17078 BY_BIOME + m (Ljava/lang/String;)Lcmp; a method_16931 register + m (Ljava/util/HashMap;)V a method_16932 method_16932 + m (Ljm;)Lcmp; a method_16930 byBiome + m (Ljava/lang/String;)V + m ()V +c cmq net/minecraft/class_3989 net/minecraft/world/entity/npc/WanderingTrader + f I ce field_30629 NUMBER_OF_TRADE_OFFERS + f Ljd; cf field_17758 wanderTarget + f I cg field_17725 despawnDelay + m (Lcmq;)Lcda; a method_18061 method_18061 + m (Lcmq;)Lcda; b method_18066 method_18066 + m (Lcmq;)Lcda; c method_18063 method_18063 + m (Lcmq;)Lcda; d method_18064 method_18064 + m (Lcmq;)Z e method_18067 method_18067 + m (Lcmq;)Z f method_18068 method_18068 + m ()I gt method_18014 getDespawnDelay + m ()V gu method_52557 experimentalUpdateTrades + m ()V gv method_20508 maybeDespawn + m ()Ljd; gx method_18065 getWanderTarget + m (Ljd;)V h method_18069 setWanderTarget + m (Ljd;)V i method_57006 method_57006 + m (I)V u method_18013 setDespawnDelay + m (Lbsx;Ldcw;)V +c cmq$a net/minecraft/class_3989$class_3994 net/minecraft/world/entity/npc/WanderingTrader$WanderToPositionGoal + f Lcmq; a field_17759 trader + f D b field_17760 stopDistance + f D c field_17761 speedModifier + f Lcmq; d field_17762 field_17762 + m (Ljd;D)Z a method_18070 isTooFarAway + m (Lcmq;Lcmq;DD)V +c cmr net/minecraft/class_3990 net/minecraft/world/entity/npc/WanderingTraderSpawner + f I a field_30630 DEFAULT_SPAWN_DELAY + f I b field_30631 DEFAULT_TICK_DELAY + f I c field_30632 MIN_SPAWN_CHANCE + f I d field_30633 MAX_SPAWN_CHANCE + f I e field_30634 SPAWN_CHANCE_INCREASE + f I f field_30635 SPAWN_ONE_IN_X_CHANCE + f I g field_30636 NUMBER_OF_SPAWN_ATTEMPTS + f Layw; h field_17726 random + f Lerk; i field_24387 serverLevelData + f I j field_17728 tickDelay + f I k field_17729 spawnDelay + f I l field_17730 spawnChance + m (Laqu;)Z a method_18018 spawn + m (Laqu;Lcmq;I)V a method_18016 tryToSpawnLlamaFor + m (Ldcc;Ljd;)Z a method_23279 hasEnoughSpace + m (Ldcz;Ljd;I)Ljd; a method_18017 findSpawnPositionNear + m (Ljd;)Z a method_19631 method_19631 + m (Ljm;)Z a method_44010 method_44010 + m (Lerk;)V +c cms net/minecraft/class_6068 net/minecraft/world/entity/npc/package-info +c cmt net/minecraft/class_6069 net/minecraft/world/entity/package-info +c cmu net/minecraft/class_1656 net/minecraft/world/entity/player/Abilities + f Z a field_7480 invulnerable + f Z b field_7479 flying + f Z c field_7478 mayfly + f Z d field_7477 instabuild + f Z e field_7476 mayBuild + f F f field_7481 flyingSpeed + f F g field_7482 walkingSpeed + m ()F a method_7252 getFlyingSpeed + m (F)V a method_7248 setFlyingSpeed + m (Lub;)V a method_7251 addSaveData + m ()F b method_7253 getWalkingSpeed + m (F)V b method_7250 setWalkingSpeed + m (Lub;)V b method_7249 loadSaveData + m ()V +c cmv net/minecraft/class_1659 net/minecraft/world/entity/player/ChatVisiblity + f Lcmv; a field_7538 FULL + f Lcmv; b field_7539 SYSTEM + f Lcmv; c field_7536 HIDDEN + f Ljava/util/function/IntFunction; d field_7534 BY_ID + f I e field_7535 id + f Ljava/lang/String; f field_7540 key + f [Lcmv; g field_7537 $VALUES + m (I)Lcmv; a method_7360 byId + m ()[Lcmv; c method_36660 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c cmw net/minecraft/class_1661 net/minecraft/world/entity/player/Inventory + f I b field_30637 POP_TIME_DURATION + f I c field_30638 INVENTORY_SIZE + f I d field_30639 SLOT_OFFHAND + f I e field_30640 NOT_FOUND_INDEX + f [I f field_33767 ALL_ARMOR_SLOTS + f [I g field_33768 HELMET_SLOT_ONLY + f Ljv; h field_7547 items + f Ljv; i field_7548 armor + f Ljv; j field_7544 offhand + f I k field_7545 selected + f Lcmx; l field_7546 player + f I m field_30641 SELECTION_SIZE + f Ljava/util/List; n field_7543 compartments + f I o field_7542 timesChanged + m (D)V a method_7373 swapPaint + m (Lawu;)Z a method_7382 contains + m (Lcmw;)V a method_7377 replaceWith + m (Lcnb;)V a method_7387 fillStackedContents + m (Lcuq;Lcuq;)Z a method_7393 hasRemainingSpaceForItem + m (Lcuq;Z)V a method_32338 placeItemBackInInventory + m (Ldtc;)F a method_7370 getDestroySpeed + m (Ljava/util/function/Predicate;ILbqk;)I a method_29280 clearOrCountMatchingItems + m (Luh;)Luh; a method_7384 save + m (Z)Lcuq; a method_37417 removeFromSelected + m (Lcuq;)V b method_7374 setPickedItem + m (Ljava/util/function/Predicate;)Z b method_55753 contains + m (Luh;)V b method_7397 load + m (I)V c method_7365 pickSlot + m (ILcuq;)Z c method_7367 add + m (Lcuq;)I c method_7395 findSlotMatchingItem + m (I)Z d method_7380 isHotbarSlot + m (ILcuq;)I d method_7385 addResource + m (Lcuq;)I d method_7371 findSlotMatchingUnusedItem + m (I)Lcuq; e method_7372 getArmor + m (Lcuq;)I e method_7390 getSlotWithRemainingSpace + m ()Lcuq; f method_7391 getSelected + m (Lcuq;)Z f method_7394 add + m ()I g method_7368 getSelectionSize + m (Lcuq;)V g method_7398 placeItemBackInInventory + m ()I h method_7376 getFreeSlot + m (Lcuq;)V h method_7378 removeItem + m ()I i method_7386 getSuitableHotbarSlot + m (Lcuq;)Z i method_7379 contains + m ()V j method_7381 tick + m (Lcuq;)I j method_7366 addResource + m ()V k method_7388 dropAll + m (Lcuq;)Ljava/lang/String; k method_7389 method_7389 + m ()I l method_7364 getTimesChanged + m (Lcmx;)V + m ()V +c cmx net/minecraft/class_1657 net/minecraft/world/entity/player/Player + f Lbtg; bH field_46174 DEFAULT_MAIN_HAND + f I bI field_46175 DEFAULT_MODEL_CUSTOMIZATION + f I bJ field_30644 MAX_HEALTH + f I bK field_30645 SLEEP_DURATION + f I bL field_30646 WAKE_UP_DURATION + f Lorg/slf4j/Logger; b field_38197 LOGGER + f I bM field_30647 ENDER_SLOT_OFFSET + f I bN field_49734 HELD_ITEM_SLOT + f I bO field_49735 CRAFTING_SLOT_OFFSET + f F bP field_47819 DEFAULT_BLOCK_INTERACTION_RANGE + f F bQ field_47820 DEFAULT_ENTITY_INTERACTION_RANGE + f F bR field_30648 CROUCH_BB_HEIGHT + f F bS field_30649 SWIMMING_BB_WIDTH + f F bT field_30650 SWIMMING_BB_HEIGHT + f F bU field_30651 DEFAULT_EYE_HEIGHT + f Lexc; bV field_47821 DEFAULT_VEHICLE_ATTACHMENT + f Lbsu; bW field_18135 STANDING_DIMENSIONS + f Lajw; bX field_7518 DATA_PLAYER_MODE_CUSTOMISATION + f Lajw; bY field_7488 DATA_PLAYER_MAIN_HAND + f Lajw; bZ field_7496 DATA_SHOULDER_LEFT + f Lcmu; cA field_7503 abilities + f I cB field_7508 lastLevelUpTime + f Lcom/mojang/authlib/GameProfile; cD field_7507 gameProfile + f Z cE field_7523 reducedDebugInfo + f Lcuq; cF field_7525 lastItemInMainHand + f Lcum; cG field_7484 cooldowns + f Ljava/util/Optional; cH field_39445 lastDeathLocation + f I c field_52222 CURRENT_IMPULSE_CONTEXT_RESET_GRACE_TIME_TICKS + f Z cI field_49991 ignoreFallDamageFromCurrentImpulse + f I cJ field_52223 currentImpulseContextResetGraceTime + f Lajw; ca field_7506 DATA_SHOULDER_RIGHT + f Lcrh; cb field_7486 enderChestInventory + f Lcqw; cc field_7498 inventoryMenu + f Lcpu; cd field_7512 containerMenu + f Lcpq; ce field_7493 foodData + f I cf field_7489 jumpTriggerTime + f F cg field_7505 oBob + f F ch field_7483 bob + f I ci field_7504 takeXpDelay + f D cj field_7524 xCloakO + f D ck field_7502 yCloakO + f D cl field_7522 zCloakO + f D cm field_7500 xCloak + f D cn field_7521 yCloak + f D co field_7499 zCloak + f Z cp field_7490 wasUnderwater + f I cq field_7520 experienceLevel + f I cr field_7495 totalExperience + f F cs field_7510 experienceProgress + f I ct field_7494 enchantmentSeed + f F cu field_7509 defaultFlySpeed + f Lcnl; cv field_7513 fishing + f F cw field_41765 hurtDir + f Lexc; cx field_49989 currentImpulseImpactPos + f Lbsr; cy field_49990 currentExplosionCause + f I cz field_7487 sleepCounter + f Ljava/util/Map; d field_18134 POSES + f Lajw; e field_7491 DATA_PLAYER_ABSORPTION_ID + f Lajw; f field_7511 DATA_SCORE_ID + f J g field_19428 timeEntitySatOnShoulder + f Lcmw; h field_7514 inventory + m (F)V E method_7322 causeFoodExhaustion + m (F)F F method_7261 getAttackStrengthScale + m (F)Z G method_30263 isAboveGround + m (Lbsr;)V G method_17853 method_17853 + m ()Z Z method_33793 isTextFilteringEnabled + m (IFLcuq;)V a method_40126 startAutoSpinAttack + m (ILdbv;IIZZ)V a method_17354 sendMerchantOffers + m (Lakr;)V a method_7281 awardStat + m (Lakr;I)V a method_7339 awardStat + m (Lavo;Lavq;FF)V a method_17356 playNotifySound + m (Lavw;)V a method_7266 resetStat + m (Lavw;I)V a method_7342 awardStat + m (Lbqv;)Ljava/util/OptionalInt; a method_17355 openMenu + m (Lbsr;FLbrk;)F a method_59903 getEnchantedDamage + m (Lbsr;Lbqq;)Lbqr; a method_7287 interactOn + m (Lbtg;)V a method_7283 setMainArm + m (Lchi;Lbqk;)V a method_7291 openHorseInventory + m (Lcmx;)Z a method_7256 canHarmPlayer + m (Lcmy;)Z a method_7348 isModelPartShown + m (Lcuq;I)V a method_7286 onEnchantmentPerformed + m (Lcuq;Lbqq;)V a method_7315 openItemGui + m (Lcuq;Lcuq;Lcqd;)V a method_33592 updateTutorialInventoryAction + m (Lcuq;Z)Lcjh; a method_7328 drop + m (Lcuq;ZZ)Lcjh; a method_7329 drop + m (Lczb;Ljava/util/List;)V a method_51283 triggerRecipeCrafted + m (Ldbx;)V a method_7257 openMinecartCommandBlock + m (Ldcw;Ljd;Ldct;)Z a method_21701 blockActionRestricted + m (Ldqr;)V a method_7323 openCommandBlock + m (Ldri;)V a method_16354 openJigsawBlock + m (Ldrs;Z)V a method_7311 openTextEdit + m (Ldrx;)V a method_7303 openStructureBlock + m (Lewx;D)Z a method_56092 canInteractWithEntity + m (Ljava/lang/String;Lxw;)Lxw; a method_7321 method_7321 + m (Ljava/util/Collection;)I a method_7254 awardRecipes + m (Ljava/util/Optional;)V a method_43120 setLastDeathLocation + m (Ljd;)Lcom/mojang/datafixers/util/Either; a method_7269 startSleepInBed + m (Ljd;D)Z a method_56093 canInteractWithBlock + m (Ljd;Lji;Lcuq;)Z a method_7343 mayUseItemAt + m (Ljl;)Ljava/util/Optional; a method_43119 method_43119 + m (Lub;Luy;)V a method_43121 method_43121 + m (Lwz;Z)V a method_7353 displayClientMessage + m (Lxn;)Lxn; a method_7299 decorateDisplayNameComponent + m (ZZ)V a method_7358 stopSleepInBed + m ()Ljava/util/Optional; ab method_42272 getWardenSpawnTracker + m (DDF)Z b method_59818 canFallAtLeast + m (Lavw;)V b method_7259 awardStat + m (Lbsr;)V b method_7277 crit + m (Lbsr;D)Z b method_56094 canInteractWithEntity + m (Lbsx;)V b method_17851 method_17851 + m (Lexc;)V b method_58397 method_58397 + m (Ljava/util/Collection;)I b method_7333 resetRecipes + m (Ljava/util/List;)V b method_7335 awardRecipesByKey + m (I)V c method_7316 giveExperienceLevels + m (Lbsr;)V c method_7304 magicCrit + m (Lbsx;)Z c method_17852 method_17852 + m (Ldtc;)F c method_7351 getDestroySpeed + m (Lub;)V c method_7267 playShoulderEntityAmbientSound + m (I)V d method_7255 giveExperiencePoints + m (Lbsr;)V d method_7341 touch + m (Ldtc;)Z d method_7305 hasCorrectToolForDrops + m (Lbsr;)V e method_7324 attack + m ()Z f method_7337 isCreative + m ()Lbuv$a; fM method_26956 createAttributes + m ()Z fN method_21823 isSecondaryUseActive + m ()Z fO method_21824 wantsToStopRiding + m ()Z fP method_21825 isStayingOnGroundSurface + m ()Z fQ method_7295 updateIsUnderwater + m ()V fR method_7318 updatePlayerPose + m ()I fS method_7272 getScore + m ()V fT method_7293 destroyVanishingCursedItems + m ()V fU method_7284 disableShield + m ()V fV method_7263 sweepAttack + m ()V fW method_7331 respawn + m ()Lcom/mojang/authlib/GameProfile; fX method_7334 getGameProfile + m ()Lcmw; fY method_31548 getInventory + m ()Lcmu; fZ method_31549 getAbilities + m ()Z g method_7340 isLocalPlayer + m ()Z gA method_61165 isIgnoringFallDamageFromCurrentImpulse + m ()V gB method_60983 tryResetCurrentImpulseContext + m ()V gC method_58396 resetCurrentImpulseContext + m ()Z ga method_45015 hasContainerOpen + m ()Z gb method_7276 isSleepingLongEnough + m ()I gc method_7297 getSleepTimer + m ()Z gd method_23668 tryToStartFallFlying + m ()V ge method_23669 startFallFlying + m ()V gf method_23670 stopFallFlying + m ()I gg method_7278 getEnchantmentSeed + m ()I gh method_7349 getXpNeededForNextLevel + m ()Lcpq; gi method_7344 getFoodData + m ()Z gj method_7317 isHurt + m ()Z gk method_7294 mayBuild + m ()Lcrh; gl method_7274 getEnderChestInventory + m ()V gm method_7262 removeEntitiesOnShoulder + m ()Leyg; gn method_7327 getScoreboard + m ()Z go method_7302 isReducedDebugInfo + m ()Lub; gp method_7356 getShoulderEntityLeft + m ()Lub; gq method_7308 getShoulderEntityRight + m ()F gr method_7279 getCurrentItemAttackStrengthDelay + m ()V gs method_7350 resetAttackStrengthTicker + m ()Lcum; gt method_7357 getCooldowns + m ()F gu method_7292 getLuck + m ()Z gv method_7338 canUseGameMasterBlocks + m ()Z gw method_31550 isScoping + m ()Ljava/util/Optional; gx method_43122 getLastDeathLocation + m ()D gy method_55754 blockInteractionRange + m ()D gz method_55755 entityInteractionRange + m (Lbua;)Z h method_52558 canPlayerFitWithinBlocksAndEntitiesWhen + m (Ljd;)Z h method_7326 freeAt + m (Lub;)Z h method_7298 setEntityOnShoulder + m (Lcuq;)Z i method_7270 addItem + m (Lub;)V i method_7273 setShoulderEntityLeft + m (Lub;)V j method_7345 setShoulderEntityRight + m ()Lcum; k method_7265 createItemCooldowns + m (Lub;)V k method_7296 respawnEntityOnShoulder + m (I)V r method_7320 setScore + m ()V s method_7346 closeContainer + m (I)V s method_7285 increaseScore + m ()V t method_14247 doCloseContainer + m (Z)Z u method_7332 canEat + m ()V v method_7330 turtleHelmetTick + m (Z)V v method_7268 setReducedDebugInfo + m (Z)V w method_60984 setIgnoreFallDamageFromCurrentImpulse + m ()V x method_7313 moveCloak + m ()V z method_7355 onUpdateAbilities + m (Ldcw;Ljd;FLcom/mojang/authlib/GameProfile;)V + m ()V +c cmx$1 net/minecraft/class_1657$1 net/minecraft/world/entity/player/Player$1 + f Lcmx; b field_49736 field_49736 + m (Lcmx;)V +c cmx$2 net/minecraft/class_1657$2 net/minecraft/world/entity/player/Player$2 + f I b field_49737 val$craftSlot + f Lcmx; c field_49738 field_49738 + m (Lcmx;I)V +c cmx$a net/minecraft/class_1657$class_1658 net/minecraft/world/entity/player/Player$BedSleepingProblem + f Lcmx$a; a field_7528 NOT_POSSIBLE_HERE + f Lcmx$a; b field_7529 NOT_POSSIBLE_NOW + f Lcmx$a; c field_7530 TOO_FAR_AWAY + f Lcmx$a; d field_18592 OBSTRUCTED + f Lcmx$a; e field_7531 OTHER_PROBLEM + f Lcmx$a; f field_7532 NOT_SAFE + f Lwz; g field_18593 message + f [Lcmx$a; h field_7526 $VALUES + m ()Lwz; a method_19206 getMessage + m ()[Lcmx$a; b method_36661 $values + m (Ljava/lang/String;I)V + m (Ljava/lang/String;ILwz;)V + m ()V +c cmy net/minecraft/class_1664 net/minecraft/world/entity/player/PlayerModelPart + f Lcmy; a field_7559 CAPE + f Lcmy; b field_7564 JACKET + f Lcmy; c field_7568 LEFT_SLEEVE + f Lcmy; d field_7570 RIGHT_SLEEVE + f Lcmy; e field_7566 LEFT_PANTS_LEG + f Lcmy; f field_7565 RIGHT_PANTS_LEG + f Lcmy; g field_7563 HAT + f I h field_7561 bit + f I i field_7560 mask + f Ljava/lang/String; j field_7569 id + f Lwz; k field_7567 name + f [Lcmy; l field_7562 $VALUES + m ()I a method_7430 getMask + m ()I b method_35206 getBit + m ()Ljava/lang/String; c method_7429 getId + m ()Lwz; d method_7428 getName + m ()[Lcmy; e method_36662 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c cmz net/minecraft/class_7427 net/minecraft/world/entity/player/ProfileKeyPair + f Lcom/mojang/serialization/Codec; a field_39049 CODEC + f Ljava/security/PrivateKey; b comp_741 privateKey + f Lcna; c comp_742 publicKey + f Ljava/time/Instant; d comp_743 refreshedAfter + m ()Z a method_43546 dueRefresh + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43547 method_43547 + m ()Ljava/security/PrivateKey; b comp_741 privateKey + m ()Lcna; c comp_742 publicKey + m ()Ljava/time/Instant; d comp_743 refreshedAfter + m (Ljava/security/PrivateKey;Lcna;Ljava/time/Instant;)V + m ()V +c cna net/minecraft/class_7428 net/minecraft/world/entity/player/ProfilePublicKey + f Lwz; a field_39954 EXPIRED_PROFILE_PUBLIC_KEY + f Ljava/time/Duration; b field_39955 EXPIRY_GRACE_PERIOD + f Lcom/mojang/serialization/Codec; c field_39050 TRUSTED_CODEC + f Lcna$a; d comp_767 data + f Lwz; e field_39956 INVALID_SIGNATURE + m ()Lazb; a method_43697 createSignatureValidator + m (Lazb;Ljava/util/UUID;Lcna$a;)Lcna; a method_43550 createValidated + m ()Lcna$a; b comp_767 data + m (Lcna$a;)V + m ()V +c cna$a net/minecraft/class_7428$class_7443 net/minecraft/world/entity/player/ProfilePublicKey$Data + f Lcom/mojang/serialization/Codec; a field_39119 CODEC + f Ljava/time/Instant; b comp_769 expiresAt + f Ljava/security/PublicKey; c comp_770 key + f [B d comp_771 keySignature + f I e field_39309 MAX_KEY_SIGNATURE_SIZE + m ()Z a method_43704 hasExpired + m (Lazb;Ljava/util/UUID;)Z a method_44205 validateSignature + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43701 method_43701 + m (Ljava/time/Duration;)Z a method_45103 hasExpired + m (Ljava/util/UUID;)[B a method_43702 signedPayload + m (Lvw;)V a method_44011 write + m ()Ljava/time/Instant; b comp_769 expiresAt + m ()Ljava/security/PublicKey; c comp_770 key + m ()[B d comp_771 keySignature + m (Lvw;)V + m (Ljava/time/Instant;Ljava/security/PublicKey;[B)V + m ()V +c cna$b net/minecraft/class_7428$class_7652 net/minecraft/world/entity/player/ProfilePublicKey$ValidationException + m (Lwz;)V +c cnb net/minecraft/class_1662 net/minecraft/world/entity/player/StackedContents + f Lit/unimi/dsi/fastutil/ints/Int2IntMap; a field_7550 contents + f I b field_30653 EMPTY + m ()V a method_7409 clear + m (I)Lcuq; a method_7405 fromStackingIndex + m (II)I a method_7411 take + m (Lcuq;)V a method_7404 accountSimpleStack + m (Lcuq;I)V a method_20478 accountStack + m (Lcyz;Lit/unimi/dsi/fastutil/ints/IntList;)Z a method_7402 canCraft + m (Lcyz;Lit/unimi/dsi/fastutil/ints/IntList;I)Z a method_7406 canCraft + m (Lczb;ILit/unimi/dsi/fastutil/ints/IntList;)I a method_7403 getBiggestCraftableStack + m (Lczb;Lit/unimi/dsi/fastutil/ints/IntList;)I a method_7407 getBiggestCraftableStack + m (I)Z b method_7410 has + m (II)V b method_7401 put + m (Lcuq;)V b method_7400 accountStack + m (Lcuq;)I c method_7408 getStackingIndex + m ()V +c cnb$a net/minecraft/class_1662$class_1663 net/minecraft/world/entity/player/StackedContents$RecipePicker + f Lcnb; a field_7554 field_7554 + f Lcyz; b field_7555 recipe + f Ljava/util/List; c field_7552 ingredients + f I d field_7556 ingredientCount + f [I e field_7551 items + f I f field_7553 itemCount + f Ljava/util/BitSet; g field_7558 data + f Lit/unimi/dsi/fastutil/ints/IntList; h field_7557 path + m ()[I a method_7422 getUniqueAvailableIngredientItems + m (I)Z a method_7423 dfs + m (ILit/unimi/dsi/fastutil/ints/IntList;)Z a method_7417 tryPick + m (ZI)V a method_7413 visit + m (ZII)Z a method_7418 hasConnection + m ()I b method_7415 getMinIngredientCount + m (I)Z b method_7416 isSatisfied + m (ILit/unimi/dsi/fastutil/ints/IntList;)I b method_7427 tryPickAll + m (ZI)Z b method_7426 hasVisited + m (ZII)Z b method_7425 hasResidual + m (I)V c method_7421 setSatisfied + m (ZI)I c method_7424 getVisitedIndex + m (ZII)V c method_7414 toggleResidual + m (I)I d method_7419 getSatisfiedIndex + m (ZII)I d method_7420 getIndex + m (Lcnb;Lcyz;)V +c cnc net/minecraft/class_6070 net/minecraft/world/entity/player/package-info +c cnd net/minecraft/class_1665 net/minecraft/world/entity/projectile/AbstractArrow + f Z b field_7588 inGround + f I c field_7576 inGroundTime + f Lcnd$a; d field_7572 pickup + f I e field_7574 shakeTime + f D f field_30657 ARROW_BASE_DAMAGE + f Lajw; g field_7573 ID_FLAGS + f Lajw; h field_7589 PIERCE_LEVEL + f I i field_30654 FLAG_CRIT + f I j field_30655 FLAG_NOPHYSICS + f Ldtc; k field_7586 lastState + f I l field_7578 life + f D m field_7571 baseDamage + f Lavo; n field_7584 soundEvent + f Lit/unimi/dsi/fastutil/ints/IntOpenHashSet; o field_7590 piercingIgnoreEntityIds + f Ljava/util/List; p field_7579 piercedAndKilledEntities + f Lcuq; q field_46970 pickupItemStack + f Lcuq; r field_51620 firedFromWeapon + m ()Z A method_7443 isCritArrow + m ()Z B method_7456 shotFromCrossbow + m ()B C method_7447 getPierceLevel + m ()F D method_7436 getWaterInertia + m ()Z E method_7441 isNoPhysics + m ()Z F method_26351 shouldFall + m ()V J method_26352 startFalling + m ()V K method_7453 resetPiercedEntities + m (B)V a method_7451 setPierceLevel + m (F)V a method_59955 setBaseDamageFromMob + m (IZ)V a method_7455 setFlag + m (Laqu;Lewy;Lcuq;)V a method_59956 hitBlockEnchantmentEffects + m (Lbtn;)V a method_7450 doPostHurtEffects + m (Lbtn;Lbrk;)V a method_59957 doKnockback + m (Lcmx;)Z a method_34713 tryPickup + m (Lcuq;)V a method_57313 setPickupItemStack + m (Lexc;Lexc;)Lewz; a method_7434 findHitEntity + m (Z)V a method_7439 setCritArrow + m (Lavo;)V b method_7444 setSoundEvent + m (Lcul;)V b method_59953 method_59953 + m (Z)V b method_7433 setNoPhysics + m (Lcul;)V c method_59954 method_59954 + m (D)V h method_7438 setBaseDamage + m ()V p method_7446 tickDespawn + m ()Lavo; t method_7440 getDefaultHitGroundSoundEvent + m ()Lavo; v method_20011 getHitGroundSoundEvent + m ()Lcuq; w method_7445 getPickupItem + m ()Lcuq; x method_57314 getDefaultPickupItem + m ()Lcuq; y method_54759 getPickupItemStackOrigin + m ()D z method_7448 getBaseDamage + m (Lbsx;Ldcw;)V + m (Lbsx;DDDLdcw;Lcuq;Lcuq;)V + m (Lbsx;Lbtn;Ldcw;Lcuq;Lcuq;)V + m ()V +c cnd$a net/minecraft/class_1665$class_1666 net/minecraft/world/entity/projectile/AbstractArrow$Pickup + f Lcnd$a; a field_7592 DISALLOWED + f Lcnd$a; b field_7593 ALLOWED + f Lcnd$a; c field_7594 CREATIVE_ONLY + f [Lcnd$a; d field_7591 $VALUES + m ()[Lcnd$a; a method_36663 $values + m (I)Lcnd$a; a method_7458 byOrdinal + m (Ljava/lang/String;I)V + m ()V +c cne net/minecraft/class_1668 net/minecraft/world/entity/projectile/AbstractHurtingProjectile + f D b field_51891 INITAL_ACCELERATION_POWER + f D c field_51892 DEFLECTION_SCALE + f D d field_51893 accelerationPower + m (Lexc;D)V a method_60499 assignDirectionalMovement + m ()Ldcf$a; aj_ method_55053 getClipType + m ()Z t method_7468 shouldBurn + m ()Llk; v method_7467 getTrailParticle + m ()F w method_7466 getInertia + m ()F x method_55583 getLiquidInertia + m (Lbsx;Ldcw;)V + m (Lbsx;DDDLdcw;)V + m (Lbsx;DDDLexc;Ldcw;)V + m (Lbsx;Lbtn;Lexc;Ldcw;)V +c cnf net/minecraft/class_1667 net/minecraft/world/entity/projectile/Arrow + f I f field_30660 EXPOSED_POTION_DECAY_TIME + f I g field_30658 NO_EFFECT_COLOR + f Lajw; h field_7595 ID_EFFECT_COLOR + f B i field_30659 EVENT_POTION_PUFF + m ()I F method_7460 getColor + m ()Lcwu; J method_57315 getPotionContents + m ()V K method_7462 updateColor + m (Lbrz;)V a method_7463 addEffect + m (Lcwu;)V a method_57316 setPotionContents + m (I)V b method_7461 makeParticle + m (I)I c method_48574 method_48574 + m (Lbsx;Ldcw;)V + m (Ldcw;DDDLcuq;Lcuq;)V + m (Ldcw;Lbtn;Lcuq;Lcuq;)V + m ()V +c cng net/minecraft/class_1670 net/minecraft/world/entity/projectile/DragonFireball + f F e field_30661 SPLASH_RANGE + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;Lexc;)V +c cnh net/minecraft/class_1669 net/minecraft/world/entity/projectile/EvokerFangs + f I b field_30662 ATTACK_DURATION + f I c field_30663 LIFE_OFFSET + f I d field_30664 ATTACK_TRIGGER_TICKS + f I e field_7609 warmupDelayTicks + f Z f field_7610 sentSpikeEvent + f I g field_7607 lifeTicks + f Z h field_7608 clientSideAttackStarted + f Lbtn; i field_7605 owner + f Ljava/util/UUID; j field_7606 ownerUUID + m (F)F a method_7472 getAnimationProgress + m (Lbtn;)V a method_7473 setOwner + m (Lbtn;)V c method_7471 dealDamageTo + m ()Lbtn; p method_7470 getOwner + m (Lbsx;Ldcw;)V + m (Ldcw;DDDFILbtn;)V +c cni net/minecraft/class_1672 net/minecraft/world/entity/projectile/EyeOfEnder + f Lajw; b field_17080 DATA_ITEM_STACK + f D c field_7619 tx + f D d field_7618 ty + f D e field_7617 tz + f I f field_7620 life + f Z g field_7621 surviveAfterDeath + m (Lcuq;)V a method_16933 setItem + m (Ljd;)V a method_7478 signalTo + m ()Lcuq; s method_56684 getDefaultItem + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V + m ()V +c cnj net/minecraft/class_3855 net/minecraft/world/entity/projectile/Fireball + f Lajw; e field_17081 DATA_ITEM_STACK + m (Lcuq;)V a method_16936 setItem + m ()Lcuq; y method_56685 getDefaultItem + m (Lbsx;Ldcw;)V + m (Lbsx;DDDLexc;Ldcw;)V + m (Lbsx;Lbtn;Lexc;Ldcw;)V + m ()V +c cnk net/minecraft/class_1671 net/minecraft/world/entity/projectile/FireworkRocketEntity + f Lajw; b field_7614 DATA_ID_FIREWORKS_ITEM + f Lajw; c field_7611 DATA_ATTACHED_TO_TARGET + f Lajw; d field_7615 DATA_SHOT_AT_ANGLE + f I e field_7613 life + f I f field_7612 lifetime + f Lbtn; g field_7616 attachedToEntity + m ()Lcuq; A method_57317 getDefaultItem + m (I)V b method_18072 method_18072 + m ()Z t method_7477 isShotAtAngle + m ()V v method_16830 explode + m ()Z w method_20308 hasExplosion + m ()V x method_7475 dealExplosionDamage + m ()Z y method_7476 isAttachedToEntity + m ()Ljava/util/List; z method_57318 getExplosions + m (Lbsx;Ldcw;)V + m (Ldcw;DDDLcuq;)V + m (Ldcw;Lbsr;DDDLcuq;)V + m (Ldcw;Lcuq;Lbtn;)V + m (Ldcw;Lcuq;DDDZ)V + m (Ldcw;Lcuq;Lbsr;DDDZ)V + m ()V +c cnl net/minecraft/class_1536 net/minecraft/world/entity/projectile/FishingHook + f Lorg/slf4j/Logger; b field_36336 LOGGER + f Layw; c field_23231 syncronizedRandom + f Z d field_23232 biting + f I e field_23233 outOfWaterTime + f I f field_30665 MAX_OUT_OF_WATER_TIME + f Lajw; g field_7170 DATA_HOOKED_ENTITY + f Lajw; h field_23234 DATA_BITING + f I i field_7167 life + f I j field_7173 nibble + f I k field_7174 timeUntilLured + f I l field_7172 timeUntilHooked + f F m field_7169 fishAngle + f Z n field_23134 openWater + f Lbsr; o field_7165 hookedIn + f Lcnl$a; p field_7175 currentState + f I q field_7171 luck + f I r field_7168 lureSpeed + m (Lbsr;)V A method_6951 setHookedEntity + m (Lcmx;)Z a method_6959 shouldStopFishing + m (Lcnl$b;Lcnl$b;)Lcnl$b; a method_26340 method_26340 + m (Lcnl;)V a method_36210 updateOwnerInfo + m (Lcuq;)I a method_6957 retrieve + m (Ljd;)V a method_6949 catchingFish + m (Ljd;Ljd;)Lcnl$b; a method_26341 getOpenWaterTypeForArea + m (Ljd;)Z b method_26086 calculateOpenWater + m (Ljd;)Lcnl$b; c method_26342 getOpenWaterTypeForBlock + m (Lbsr;)V d method_6954 pullEntity + m ()Z p method_26088 isOpenWaterFishing + m ()Lcmx; t method_6947 getPlayerOwner + m ()Lbsr; v method_26957 getHookedIn + m ()V w method_6958 checkCollision + m (Lbsx;Ldcw;II)V + m (Lbsx;Ldcw;)V + m (Lcmx;Ldcw;II)V + m ()V +c cnl$a net/minecraft/class_1536$class_1537 net/minecraft/world/entity/projectile/FishingHook$FishHookState + f Lcnl$a; a field_7180 FLYING + f Lcnl$a; b field_7178 HOOKED_IN_ENTITY + f Lcnl$a; c field_7179 BOBBING + f [Lcnl$a; d field_7181 $VALUES + m ()[Lcnl$a; a method_36664 $values + m (Ljava/lang/String;I)V + m ()V +c cnl$b net/minecraft/class_1536$class_4984 net/minecraft/world/entity/projectile/FishingHook$OpenWaterType + f Lcnl$b; a field_23236 ABOVE_WATER + f Lcnl$b; b field_23237 INSIDE_WATER + f Lcnl$b; c field_23238 INVALID + f [Lcnl$b; d field_23239 $VALUES + m ()[Lcnl$b; a method_36665 $values + m (Ljava/lang/String;I)V + m ()V +c cnm net/minecraft/class_3856 net/minecraft/world/entity/projectile/ItemSupplier + m ()Lcuq; p method_7495 getItem +c cnn net/minecraft/class_1674 net/minecraft/world/entity/projectile/LargeFireball + f I e field_7624 explosionPower + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;Lexc;I)V +c cno net/minecraft/class_1673 net/minecraft/world/entity/projectile/LlamaSpit + m (Lbsx;Ldcw;)V + m (Ldcw;Lchl;)V +c cnp net/minecraft/class_1676 net/minecraft/world/entity/projectile/Projectile + f Ljava/util/UUID; b field_22478 ownerUUID + f Lbsr; c field_33399 cachedOwner + f Z d field_23740 leftOwner + f Z e field_28646 hasBeenShot + f Lbsr; f field_51621 lastDeflectedBy + m ()Lbsr; H method_37225 getEffectSource + m ()V I method_26962 updateRotation + m (Lbsr;FFFFF)V a method_24919 shootFromRotation + m (Lcnq;Lbsr;Lbsr;Z)Z a method_59859 deflect + m (Lewy;)V a method_24920 onHitBlock + m (Lewz;)V a method_7454 onHitEntity + m (Lexa;)V a method_7488 onHit + m (Lbtn;Lbrk;)Lit/unimi/dsi/fastutil/doubles/DoubleDoubleImmutablePair; a_ method_59959 calculateHorizontalHurtKnockbackDirection + m (Lbsr;)Z b method_26958 canHitEntity + m (Lbsr;Z)V b method_59525 onDeflection + m (Ldcw;)Z b method_54457 mayBreak + m (Lexa;)Lcnq; b method_59860 hitTargetOrDeflectSelf + m (DDDFF)V c method_7485 shoot + m (Lbsr;)V c method_7432 setOwner + m (DDDFF)Lexc; d method_58645 getMovementToShoot + m (Lbsr;)Z d method_26959 method_26959 + m (FF)F e method_26960 lerpRotation + m (Lbsr;)Z e method_34714 ownedBy + m ()Z t method_26961 checkLeftOwner + m (Lbsx;Ldcw;)V +c cnq net/minecraft/class_9109 net/minecraft/world/entity/projectile/ProjectileDeflection + f Lcnq; a field_48347 NONE + f Lcnq; b field_48348 REVERSE + f Lcnq; c field_51509 AIM_DEFLECT + f Lcnq; d field_51510 MOMENTUM_DEFLECT + m (Lcnp;Lbsr;Layw;)V a method_59861 method_59861 + m (Lcnp;Lbsr;Layw;)V b method_59862 method_59862 + m (Lcnp;Lbsr;Layw;)V c method_56095 method_56095 + m (Lcnp;Lbsr;Layw;)V d method_56096 method_56096 + m ()V +c cnr net/minecraft/class_1675 net/minecraft/world/entity/projectile/ProjectileUtil + f F a field_46654 DEFAULT_ENTITY_HIT_RESULT_MARGIN + m (Lbsr;F)V a method_7484 rotateTowardsMovement + m (Lbsr;Lexc;Lexc;Lewx;Ljava/util/function/Predicate;D)Lewz; a method_18075 getEntityHitResult + m (Lbsr;Ljava/util/function/Predicate;)Lexa; a method_49997 getHitResultOnMoveVector + m (Lbsr;Ljava/util/function/Predicate;D)Lexa; a method_49998 getHitResultOnViewVector + m (Lbsr;Ljava/util/function/Predicate;Ldcf$a;)Lexa; a method_55054 getHitResultOnMoveVector + m (Lbtn;Lcul;)Lbqq; a method_18812 getWeaponHoldingHand + m (Lbtn;Lcuq;FLcuq;)Lcnd; a method_18813 getMobArrow + m (Ldcw;Lbsr;Lexc;Lexc;Lewx;Ljava/util/function/Predicate;)Lewz; a method_18077 getEntityHitResult + m (Ldcw;Lbsr;Lexc;Lexc;Lewx;Ljava/util/function/Predicate;F)Lewz; a method_37226 getEntityHitResult + m (Lexc;Lbsr;Ljava/util/function/Predicate;Lexc;Ldcw;FLdcf$a;)Lexa; a method_18074 getHitResult + m ()V +c cns net/minecraft/class_1678 net/minecraft/world/entity/projectile/ShulkerBullet + f D b field_30666 SPEED + f Lbsr; c field_7626 finalTarget + f Lji; d field_7628 currentMoveDirection + f I e field_7627 flightSteps + f D f field_7635 targetDeltaX + f D g field_7633 targetDeltaY + f D h field_7625 targetDeltaZ + f Ljava/util/UUID; i field_7632 targetId + m (Lji$a;)V a method_7486 selectNextMoveDirection + m (Lji;)V a method_7487 setMoveDirection + m ()Lji; p method_35208 getMoveDirection + m ()V t method_49723 destroy + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;Lbsr;Lji$a;)V +c cnt net/minecraft/class_1677 net/minecraft/world/entity/projectile/SmallFireball + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;Lexc;)V + m (Ldcw;DDDLexc;)V +c cnu net/minecraft/class_1680 net/minecraft/world/entity/projectile/Snowball + m ()Llk; v method_16939 getParticle + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;)V + m (Ldcw;DDD)V +c cnv net/minecraft/class_1679 net/minecraft/world/entity/projectile/SpectralArrow + f I f field_7636 duration + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;Lcuq;Lcuq;)V + m (Ldcw;DDDLcuq;Lcuq;)V +c cnw net/minecraft/class_3857 net/minecraft/world/entity/projectile/ThrowableItemProjectile + f Lajw; b field_17082 DATA_ITEM_STACK + m (Lcuq;)V a method_16940 setItem + m ()Lcul; t method_16942 getDefaultItem + m ()Lcuq; v method_57319 method_57319 + m (Lbsx;Ldcw;)V + m (Lbsx;DDDLdcw;)V + m (Lbsx;Lbtn;Ldcw;)V + m ()V +c cnx net/minecraft/class_1682 net/minecraft/world/entity/projectile/ThrowableProjectile + m (Lbsx;Ldcw;)V + m (Lbsx;DDDLdcw;)V + m (Lbsx;Lbtn;Ldcw;)V +c cny net/minecraft/class_1681 net/minecraft/world/entity/projectile/ThrownEgg + f Lbsu; b field_51894 ZERO_SIZED_DIMENSIONS + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;)V + m (Ldcw;DDD)V + m ()V +c cnz net/minecraft/class_1684 net/minecraft/world/entity/projectile/ThrownEnderpearl + m (Lbsr;Ldcw;)Z a method_60985 isAllowedToTeleportOwner + m (Ldcw;Lexc;)V a method_60729 playSound + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;)V +c coa net/minecraft/class_1683 net/minecraft/world/entity/projectile/ThrownExperienceBottle + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;)V + m (Ldcw;DDD)V +c cob net/minecraft/class_1686 net/minecraft/world/entity/projectile/ThrownPotion + f D b field_30667 SPLASH_RANGE + f Ljava/util/function/Predicate; c field_40737 WATER_SENSITIVE_OR_ON_FIRE + f D d field_30668 SPLASH_RANGE_SQ + m (DI)I a method_48575 method_48575 + m (Lbtn;)Z a method_46401 method_46401 + m (Lcwu;)V a method_7497 makeAreaOfEffectCloud + m (Ljava/lang/Iterable;Lbsr;)V a method_7498 applySplash + m (Ljd;)V a method_7499 dowseFire + m ()V v method_7500 applyWater + m ()Z w method_7501 isLingering + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;)V + m (Ldcw;DDD)V + m ()V +c coc net/minecraft/class_1685 net/minecraft/world/entity/projectile/ThrownTrident + f I f field_7649 clientSideReturnTridentTickCount + f Lajw; g field_7647 ID_LOYALTY + f Lajw; h field_21514 ID_FOIL + f Z i field_7648 dealtDamage + m ()Z F method_23751 isFoil + m ()Z J method_7493 isAcceptibleReturnOwner + m (Lcul;)V b method_60616 method_60616 + m (Lcuq;)B c method_59960 getLoyaltyFromItem + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;Lcuq;)V + m (Ldcw;DDDLcuq;)V + m ()V +c cod net/minecraft/class_1687 net/minecraft/world/entity/projectile/WitherSkull + f Lajw; e field_7654 DATA_DANGEROUS + m (Z)V a method_7502 setDangerous + m ()Z y method_7503 isDangerous + m (Lbsx;Ldcw;)V + m (Ldcw;Lbtn;Lexc;)V + m ()V +c coe net/minecraft/class_6071 net/minecraft/world/entity/projectile/package-info +c cof net/minecraft/class_9236 net/minecraft/world/entity/projectile/windcharge/AbstractWindCharge + f Ldcp; e field_50137 EXPLOSION_DAMAGE_CALCULATOR + f D f field_52224 JUMP_SCALE + m (Lexc;)V a method_55055 explode + m (Lbsx;Ldcw;)V + m (Lbsx;Ldcw;Lbsr;DDD)V + m (Lbsx;DDDLexc;Ldcw;)V + m ()V +c cog net/minecraft/class_9238 net/minecraft/world/entity/projectile/windcharge/BreezeWindCharge + f F g field_49242 RADIUS + m (Lbsx;Ldcw;)V + m (Lckz;Ldcw;)V +c coh net/minecraft/class_8956 net/minecraft/world/entity/projectile/windcharge/WindCharge + f Ldcp; g field_47579 EXPLOSION_DAMAGE_CALCULATOR + f F h field_49243 RADIUS + f I i field_52019 noDeflectTicks + m (Lbsx;Ldcw;)V + m (Lcmx;Ldcw;DDD)V + m (Ldcw;DDDLexc;)V + m ()V +c coi net/minecraft/class_3765 net/minecraft/world/entity/raid/Raid + f Ljava/util/Set; A field_19021 heroesOfTheVillage + f J B field_16605 ticksActive + f Ljd; C field_16613 center + f Laqu; D field_16619 level + f Z E field_16611 started + f I F field_16625 id + f F G field_16620 totalHealth + f I H field_16623 raidOmenLevel + f Z I field_16606 active + f I J field_16621 groupsSpawned + f Laqr; K field_16607 raidEvent + f I L field_16616 postRaidTicks + f I M field_16614 raidCooldownTicks + f Layw; N field_16608 random + f I O field_19022 numGroups + f Lcoi$a; P field_19023 status + f I Q field_19024 celebrationTicks + f Ljava/util/Optional; R field_19172 waveSpawnPos + f I a field_30669 VILLAGE_RADIUS_BUFFER + f I b field_30670 MAX_NO_ACTION_TIME + f I c field_30671 MAX_CELEBRATION_TICKS + f I d field_30672 TICKS_PER_DAY + f I e field_30673 DEFAULT_MAX_RAID_OMEN_LEVEL + f I f field_30674 VALID_RAID_RADIUS_SQR + f I g field_30675 RAID_REMOVAL_THRESHOLD_SQR + f I h field_30676 SECTION_RADIUS_FOR_FINDING_NEW_VILLAGE_CENTER + f I i field_30677 ATTEMPT_RAID_FARTHEST + f I j field_30678 ATTEMPT_RAID_CLOSE + f I k field_30679 ATTEMPT_RAID_INSIDE + f I l field_30680 VILLAGE_SEARCH_RADIUS + f I m field_30681 RAID_TIMEOUT_TICKS + f I n field_30682 NUM_SPAWN_ATTEMPTS + f Lwz; o field_30683 OMINOUS_BANNER_PATTERN_NAME + f Ljava/lang/String; p field_30684 RAIDERS_REMAINING + f I q field_30685 POST_RAID_TICK_LIMIT + f I r field_30686 DEFAULT_PRE_RAID_TICKS + f I s field_30687 OUTSIDE_RAID_BOUNDS_TIMEOUT + f I t field_30688 LOW_MOB_THRESHOLD + f Lwz; u field_19016 RAID_NAME_COMPONENT + f Lwz; v field_19019 RAID_BAR_VICTORY_COMPONENT + f Lwz; w field_19020 RAID_BAR_DEFEAT_COMPONENT + f I x field_30689 HERO_OF_THE_VILLAGE_DURATION + f Ljava/util/Map; y field_16615 groupToLeaderMap + f Ljava/util/Map; z field_16618 groupRaiderMap + m ()Z A method_20012 isFinalWave + m ()Z B method_20013 hasBonusWave + m ()Z C method_20014 hasSpawnedBonusWave + m ()Z D method_20015 shouldSpawnBonusGroup + m ()V E method_16834 updateRaiders + m ()Z F method_16519 shouldSpawnGroup + m ()V G method_16520 setDirty + m ()Z a method_16832 isOver + m (I)V a method_35211 setRaidOmenLevel + m (II)Ljd; a method_16525 findRandomSpawnPos + m (ILcoj;)V a method_16491 setLeader + m (ILcoj;Ljd;Z)V a method_16516 joinRaid + m (ILcoj;Z)Z a method_16487 addWaveMob + m (Laqv;)Z a method_16518 absorbRaidOmen + m (Lbqo;)I a method_20016 getNumGroups + m (Lbsr;)V a method_20017 addHeroOfTheVillage + m (Lcoi$b;IZ)I a method_20018 getDefaultNumSpawns + m (Lcoi$b;Layw;ILbqp;Z)I a method_20019 getPotentialBonusSpawns + m (Lcoj;Z)V a method_16510 removeFromRaid + m (Ljava/lang/Integer;)Ljava/util/Set; a method_16508 method_16508 + m (Ljd;)V a method_16521 playSound + m (Ljn;)Lcuq; a method_16515 getLeaderBannerInstance + m (Lub;)Lub; a method_16502 save + m ()Z b method_20020 isBetweenWaves + m (I)Lcoj; b method_16496 getLeader + m (ILcoj;)Z b method_16505 addWaveMob + m (Laqv;)Z b method_19208 method_19208 + m (Ljd;)V b method_16522 spawnGroup + m ()Z c method_20021 hasFirstWaveSpawned + m (I)V c method_16500 removeLeader + m (Ljd;)V c method_20509 setCenter + m ()Z d method_20022 isStopped + m (I)Ljava/util/Optional; d method_20267 getValidSpawnPos + m (Ljd;)D d method_20510 method_20510 + m ()Z e method_20023 isVictory + m ()Z f method_20024 isLoss + m ()F g method_35212 getTotalHealth + m ()Ljava/util/Set; h method_35213 getAllRaiders + m ()Ldcw; i method_16831 getLevel + m ()Z j method_16524 isStarted + m ()I k method_16490 getGroupsSpawned + m ()I l method_16514 getMaxRaidOmenLevel + m ()I m method_16493 getRaidOmenLevel + m ()V n method_16506 stop + m ()V o method_16509 tick + m ()V p method_16523 updateBossbar + m ()F q method_16513 getHealthOfLivingRaiders + m ()I r method_16517 getTotalRaidersAlive + m ()Ljd; s method_16495 getCenter + m ()I t method_16494 getId + m ()Z u method_16504 isActive + m ()F v method_20025 getEnchantOdds + m ()Ljava/util/function/Predicate; w method_16501 validPlayer + m ()V x method_16499 updatePlayers + m ()V y method_20511 moveRaidCenterToNearbyVillageSection + m ()Z z method_16833 hasMoreWaves + m (ILaqu;Ljd;)V + m (Laqu;Lub;)V + m ()V +c coi$1 net/minecraft/class_3765$1 net/minecraft/world/entity/raid/Raid$1 + f [I a field_16626 $SwitchMap$net$minecraft$world$Difficulty + m ()V +c coi$a net/minecraft/class_3765$class_4259 net/minecraft/world/entity/raid/Raid$RaidStatus + f Lcoi$a; a field_19026 ONGOING + f Lcoi$a; b field_19027 VICTORY + f Lcoi$a; c field_19028 LOSS + f Lcoi$a; d field_19029 STOPPED + f [Lcoi$a; e field_19030 VALUES + f [Lcoi$a; f field_19031 $VALUES + m ()Ljava/lang/String; a method_20026 getName + m (Ljava/lang/String;)Lcoi$a; a method_20028 getByName + m ()[Lcoi$a; b method_36666 $values + m (Ljava/lang/String;I)V + m ()V +c coi$b net/minecraft/class_3765$class_3766 net/minecraft/world/entity/raid/Raid$RaiderType + f Lcoi$b; a field_16631 VINDICATOR + f Lcoi$b; b field_16634 EVOKER + f Lcoi$b; c field_16633 PILLAGER + f Lcoi$b; d field_16635 WITCH + f Lcoi$b; e field_16630 RAVAGER + f [Lcoi$b; f field_16636 VALUES + f Lbsx; g field_16629 entityType + f [I h field_16628 spawnsPerWaveBeforeBonus + f [Lcoi$b; i field_16632 $VALUES + m ()[Lcoi$b; a method_36667 $values + m (Ljava/lang/String;ILbsx;[I)V + m ()V +c coj net/minecraft/class_3763 net/minecraft/world/entity/raid/Raider + f Ljava/util/function/Predicate; b field_16600 ALLOWED_ITEMS + f Lajw; c field_19032 IS_CELEBRATING + f Z cc field_16602 canJoinRaid + f I cd field_16997 ticksOutsideRaid + f Lcoi; d field_16599 raid + f I e field_16601 wave + m (Z)V A method_16480 setCanJoinRaid + m (Z)V B method_20036 setCelebrating + m (Laqu;IZ)V a method_16484 applyRaidBuffs + m (Lcoi;)V a method_16476 setCurrentRaid + m (Lcoj;)Layw; a method_20029 method_20029 + m ()Lavo; ai_ method_20033 getCelebrateSound + m (I)V b method_16477 setWave + m (Lcoj;)Layw; b method_20032 method_20032 + m (I)V c method_16835 setTicksOutsideRaid + m (Lcjh;)Z c method_16483 method_16483 + m (Lcoj;)Z c method_19632 method_19632 + m (Lcoj;)Layw; d method_20035 method_20035 + m (Lcoj;)Layw; e method_36668 method_36668 + m ()Z gA method_58647 hasRaid + m ()Z gB method_16482 hasActiveRaid + m ()I gC method_16486 getWave + m ()Z gD method_20034 isCelebrating + m ()I gE method_16836 getTicksOutsideRaid + m ()Z gx method_16481 canJoinRaid + m ()Lcoi; gy method_16478 getCurrentRaid + m ()Z gz method_58646 isCaptain + m (Lbsx;Ldcw;)V + m ()V +c coj$a net/minecraft/class_3763$class_4223 net/minecraft/world/entity/raid/Raider$HoldGroundAttackGoal + f Lcef; a field_18881 shoutTargeting + f Lcoj; b field_18883 mob + f F c field_18884 hostileRadiusSqr + m (Lcoj;Lcjk;F)V +c coj$b net/minecraft/class_3763$class_3764 net/minecraft/world/entity/raid/Raider$ObtainRaidLeaderBannerGoal + f Lcoj; a field_16603 mob + m (Lcoj;Lcoj;)V +c coj$c net/minecraft/class_3763$class_4260 net/minecraft/world/entity/raid/Raider$RaiderCelebration + f Lcoj; a field_19033 field_19033 + f Lcoj; b field_19034 mob + m (Lcoj;Lcoj;)V +c coj$d net/minecraft/class_3763$class_4261 net/minecraft/world/entity/raid/Raider$RaiderMoveThroughVillageGoal + f Lcoj; a field_19035 raider + f D b field_19036 speedModifier + f Ljd; c field_19037 poiPos + f Ljava/util/List; d field_19038 visited + f I e field_19039 distanceToPoi + f Z f field_19040 stuck + m (Ljd;)Z a method_20038 hasNotVisited + m (Ljm;)Z a method_20037 method_20037 + m ()Z h method_20039 isValidRaid + m ()Z i method_20040 hasSuitablePoi + m ()V k method_20041 updateVisited + m (Lcoj;DI)V +c cok net/minecraft/class_3767 net/minecraft/world/entity/raid/Raids + f Ljava/lang/String; a field_30690 RAID_FILE_ID + f Ljava/util/Map; b field_16639 raidMap + f Laqu; c field_16641 level + f I d field_16638 nextAvailableID + f I e field_16637 tick + m ()V a method_16539 tick + m (I)Lcoi; a method_16541 get + m (Laqu;)Leql$a; a method_52559 factory + m (Laqu;Ljd;)Lcoi; a method_16532 getOrCreateRaid + m (Laqu;Lub;)Lcok; a method_77 load + m (Laqu;Lub;Ljo$a;)Lcok; a method_52561 method_52561 + m (Laqv;Ljd;)Lcoi; a method_16540 createOrExtendRaid + m (Lcoj;Lcoi;)Z a method_16838 canJoinRaid + m (Ljd;I)Lcoi; a method_19209 getNearbyRaid + m (Ljm;)Ljava/lang/String; a method_16533 getFileId + m ()I b method_16534 getUniqueId + m (Laqu;)Lcok; b method_52560 method_52560 + m (Ljm;)Z b method_44012 method_44012 + m (Laqu;)V +c col net/minecraft/class_6072 net/minecraft/world/entity/raid/package-info +c com net/minecraft/class_4168 net/minecraft/world/entity/schedule/Activity + f Ljava/lang/String; A field_18600 name + f I B field_23827 hashCode + f Lcom; a field_18594 CORE + f Lcom; b field_18595 IDLE + f Lcom; c field_18596 WORK + f Lcom; d field_18885 PLAY + f Lcom; e field_18597 REST + f Lcom; f field_18598 MEET + f Lcom; g field_18599 PANIC + f Lcom; h field_19041 RAID + f Lcom; i field_19042 PRE_RAID + f Lcom; j field_19043 HIDE + f Lcom; k field_22396 FIGHT + f Lcom; l field_22397 CELEBRATE + f Lcom; m field_22398 ADMIRE_ITEM + f Lcom; n field_22399 AVOID + f Lcom; o field_22400 RIDE + f Lcom; p field_28352 PLAY_DEAD + f Lcom; q field_30691 LONG_JUMP + f Lcom; r field_33504 RAM + f Lcom; s field_37503 TONGUE + f Lcom; t field_37504 SWIM + f Lcom; u field_37505 LAY_SPAWN + f Lcom; v field_38199 SNIFF + f Lcom; w field_38200 INVESTIGATE + f Lcom; x field_38201 ROAR + f Lcom; y field_38202 EMERGE + f Lcom; z field_38203 DIG + m ()Ljava/lang/String; a method_19634 getName + m (Ljava/lang/String;)Lcom; a method_19210 register + m (Ljava/lang/String;)V + m ()V +c coo net/minecraft/class_4169 net/minecraft/world/entity/schedule/Keyframe + f I a field_18601 timeStamp + f F b field_18602 value + m ()I a method_19211 getTimeStamp + m ()F b method_19212 getValue + m (IF)V +c cop net/minecraft/class_4170 net/minecraft/world/entity/schedule/Schedule + f I a field_30692 WORK_START_TIME + f I b field_30693 TOTAL_WORK_TIME + f Lcop; c field_18603 EMPTY + f Lcop; d field_18604 SIMPLE + f Lcop; e field_18605 VILLAGER_BABY + f Lcop; f field_18606 VILLAGER_DEFAULT + f Ljava/util/Map; g field_18607 timelines + m (I)Lcom; a method_19213 getActivityAt + m (ILjava/util/Map$Entry;)D a method_19214 method_19214 + m (Lcom;)V a method_19215 ensureTimelineExistsFor + m (Lcom;Ljava/util/Map$Entry;)Z a method_19216 method_19216 + m (Ljava/lang/String;)Lcoq; a method_19217 register + m (Lcom;)Lcor; b method_19218 getTimelineFor + m (Lcom;)Ljava/util/List; c method_19219 getAllTimelinesExceptFor + m ()V + m ()V +c coq net/minecraft/class_4171 net/minecraft/world/entity/schedule/ScheduleBuilder + f Lcop; a field_18608 schedule + f Ljava/util/List; b field_18609 transitions + m ()Lcop; a method_19220 build + m (ILcom;)Lcoq; a method_19221 changeActivityAt + m (Lcoq$a;)V a method_19222 method_19222 + m (Lcoq$a;Lcor;)V a method_19223 method_19223 + m (Lcop;)V +c coq$a net/minecraft/class_4171$class_4172 net/minecraft/world/entity/schedule/ScheduleBuilder$ActivityTransition + f I a field_18610 time + f Lcom; b field_18611 activity + m ()I a method_19224 getTime + m ()Lcom; b method_19225 getActivity + m (ILcom;)V +c cor net/minecraft/class_4173 net/minecraft/world/entity/schedule/Timeline + f Ljava/util/List; a field_18612 keyframes + f I b field_18613 previousIndex + m ()Lcom/google/common/collect/ImmutableList; a method_35214 getKeyframes + m (I)F a method_19226 getValueAt + m (IF)Lcor; a method_19227 addKeyframe + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectSortedMap;Lcoo;)V a method_19228 method_19228 + m (Ljava/util/Collection;)Lcor; a method_35215 addKeyframes + m ()V b method_19229 sortAndDeduplicateKeyframes + m ()V +c cos net/minecraft/class_6073 net/minecraft/world/entity/schedule/package-info +c cot net/minecraft/class_1688 net/minecraft/world/entity/vehicle/AbstractMinecart + f F b field_30694 WATER_SLOWDOWN_FACTOR + f Lexc; c field_47822 LOWERED_PASSENGER_ATTACHMENT + f Lajw; d field_7671 DATA_ID_DISPLAY_BLOCK + f Lajw; e field_7661 DATA_ID_DISPLAY_OFFSET + f Lajw; i field_7670 DATA_ID_CUSTOM_DISPLAY + f Lcom/google/common/collect/ImmutableMap; j field_24464 POSE_DISMOUNT_HEIGHTS + f Z k field_7660 flipped + f Z l field_44917 onRails + f I m field_45135 lerpSteps + f D n field_45136 lerpX + f D o field_45137 lerpY + f D p field_45138 lerpZ + f D q field_45139 lerpYRot + f D r field_45140 lerpXRot + f Lexc; s field_45141 targetDeltaMovement + f Ljava/util/Map; t field_7664 EXITS + m ()Z A method_7510 hasCustomDisplay + m (DDDD)Lexc; a method_7505 getPosOffs + m (IIIZ)V a method_7506 activateMinecart + m (Laqu;DDDLcot$a;Lcuq;Lcmx;)Lcot; a method_7523 createMinecart + m (Ldug;)Lcom/mojang/datafixers/util/Pair; a method_22864 exits + m (Ljava/util/EnumMap;)V a method_22865 method_22865 + m (Ljd$a;)Lexv; a method_30339 method_30339 + m (Ljd;)Z a method_18803 isRedstoneConductor + m (Z)V a method_7511 setCustomDisplay + m (Ljd;)Lexv; b method_30340 method_30340 + m (I)V c method_7515 setDisplayOffset + m (Ldtc;)V c method_7527 setDisplayBlockState + m (Ljd;Ldtc;)V c method_7513 moveAlongTrack + m ()D p method_7504 getMaxSpeed + m (DDD)Lexc; p method_7508 getPos + m ()V s method_7512 comeOffTrack + m ()V t method_7525 applyNaturalSlowdown + m ()Lcot$a; v method_7518 getMinecartType + m ()Ldtc; w method_7519 getDisplayBlockState + m ()Ldtc; x method_7517 getDefaultDisplayBlockState + m ()I y method_7514 getDisplayOffset + m ()I z method_7526 getDefaultDisplayOffset + m (Lbsx;Ldcw;)V + m (Lbsx;Ldcw;DDD)V + m ()V +c cot$1 net/minecraft/class_1688$1 net/minecraft/world/entity/vehicle/AbstractMinecart$1 + f [I a field_7682 $SwitchMap$net$minecraft$world$level$block$state$properties$RailShape + m ()V +c cot$a net/minecraft/class_1688$class_1689 net/minecraft/world/entity/vehicle/AbstractMinecart$Type + f Lcot$a; a field_7674 RIDEABLE + f Lcot$a; b field_7678 CHEST + f Lcot$a; c field_7679 FURNACE + f Lcot$a; d field_7675 TNT + f Lcot$a; e field_7680 SPAWNER + f Lcot$a; f field_7677 HOPPER + f Lcot$a; g field_7681 COMMAND_BLOCK + f [Lcot$a; h field_7673 $VALUES + m ()[Lcot$a; a method_36669 $values + m (Ljava/lang/String;I)V + m ()V +c cou net/minecraft/class_1693 net/minecraft/world/entity/vehicle/AbstractMinecartContainer + f Ljv; c field_7735 itemStacks + f Lakq; d field_7734 lootTable + f J e field_7732 lootTableSeed + m (ILcmw;)Lcpu; a method_17357 createMenu + m (Lakq;J)V a method_7562 setLootTable + m (Lbsx;Ldcw;)V + m (Lbsx;DDDLdcw;)V +c cov net/minecraft/class_1690 net/minecraft/world/entity/vehicle/Boat + f D aD field_7699 lerpYRot + f D aE field_7684 lerpXRot + f Z aF field_7710 inputLeft + f Z aG field_7695 inputRight + f Z aH field_7709 inputUp + f Z aI field_7693 inputDown + f D aJ field_7697 waterLevel + f F aK field_7714 landFriction + f Lcov$a; aL field_7702 status + f Lcov$a; aM field_7701 oldStatus + f D aN field_7696 lastYd + f Z aO field_7689 isAboveBubbleColumn + f Z aP field_7703 bubbleColumnDirectionIsDown + f F aQ field_7712 bubbleMultiplier + f F aR field_7694 bubbleAngle + f F aS field_7711 bubbleAngleO + f Lbtk$a; aT field_52225 leashData + f I b field_30697 PADDLE_LEFT + f I c field_30698 PADDLE_RIGHT + f D d field_30699 PADDLE_SOUND_TIME + f I e field_30700 BUBBLE_TIME + f Lajw; i field_7698 DATA_ID_TYPE + f Lajw; j field_7687 DATA_ID_PADDLE_LEFT + f Lajw; k field_7713 DATA_ID_PADDLE_RIGHT + f Lajw; l field_7691 DATA_ID_BUBBLE_TIME + f I m field_30695 TIME_TO_EJECT + f F n field_30696 PADDLE_SPEED + f [F o field_7704 paddlePositions + f F p field_7692 invFriction + f F q field_7706 outOfControlTicks + f F r field_7690 deltaRotation + f I s field_7708 lerpSteps + f D t field_7686 lerpX + f D u field_7700 lerpY + f D v field_7685 lerpZ + m ()V B method_7550 tickBubbleColumn + m ()V C method_7555 tickLerp + m ()Lcov$a; D method_7552 getStatus + m ()Z E method_7545 checkInWater + m ()I F method_42281 getMaxPassengers + m ()Lcov$a; H method_7532 isUnderwater + m ()V I method_7534 floatBoat + m ()V J method_7549 controlBoat + m ()I K method_7539 getBubbleTime + m (F)F a method_7547 getBubbleAngle + m (IF)F a method_7551 getRowingTime + m (Lbsr;Lbsr;)Z a method_30959 canVehicleCollide + m (Lcov$b;)V a method_47884 setVariant + m (ZZZZ)V a method_7535 setInput + m (I)V b method_7531 setBubbleTime + m (ZZ)V b method_7538 setPaddleState + m (I)Z c method_7556 getPaddleState + m (Lbsr;)Z c method_49182 hasEnoughSpaceFor + m (Lbsr;)V d method_7546 clampRotation + m (Lbsr;)Z e method_31552 method_31552 + m ()Lavo; s method_7537 getPaddleSound + m ()F t method_7544 getWaterLevelAbove + m ()F v method_7548 getGroundFriction + m ()F w method_42280 getSinglePassengerXOffset + m ()Lcov$b; x method_47885 getVariant + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V + m ()V +c cov$a net/minecraft/class_1690$class_1691 net/minecraft/world/entity/vehicle/Boat$Status + f Lcov$a; a field_7718 IN_WATER + f Lcov$a; b field_7717 UNDER_WATER + f Lcov$a; c field_7716 UNDER_FLOWING_WATER + f Lcov$a; d field_7719 ON_LAND + f Lcov$a; e field_7720 IN_AIR + f [Lcov$a; f field_7715 $VALUES + m ()[Lcov$a; a method_36670 $values + m (Ljava/lang/String;I)V + m ()V +c cov$b net/minecraft/class_1690$class_1692 net/minecraft/world/entity/vehicle/Boat$Type + f Lcov$b; a field_7727 OAK + f Lcov$b; b field_7728 SPRUCE + f Lcov$b; c field_7729 BIRCH + f Lcov$b; d field_7730 JUNGLE + f Lcov$b; e field_7725 ACACIA + f Lcov$b; f field_42681 CHERRY + f Lcov$b; g field_7723 DARK_OAK + f Lcov$b; h field_37506 MANGROVE + f Lcov$b; i field_40161 BAMBOO + f Lazk$a; j field_41599 CODEC + f Ljava/lang/String; k field_7726 name + f Ldfy; l field_7731 planks + f Ljava/util/function/IntFunction; m field_41675 BY_ID + f [Lcov$b; n field_7724 $VALUES + m ()Ljava/lang/String; a method_7559 getName + m (I)Lcov$b; a method_7558 byId + m (Ljava/lang/String;)Lcov$b; a method_7561 byName + m ()Ldfy; b method_7560 getPlanks + m ()[Lcov$b; d method_36671 $values + m (Ljava/lang/String;ILdfy;Ljava/lang/String;)V + m ()V +c cow net/minecraft/class_7264 net/minecraft/world/entity/vehicle/ChestBoat + f I i field_38207 CONTAINER_SIZE + f Ljv; j field_38204 itemStacks + f Lakq; k field_38205 lootTable + f J l field_38206 lootTableSeed + m (Lcmx;)V e method_42282 unpackLootTable + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V +c cow$1 net/minecraft/class_7264$1 net/minecraft/world/entity/vehicle/ChestBoat$1 + f [I a field_38208 $SwitchMap$net$minecraft$world$entity$vehicle$Boat$Type + m ()V +c cox net/minecraft/class_7265 net/minecraft/world/entity/vehicle/ContainerEntity + m ()Lakq; B method_42276 getLootTable + m ()J C method_42277 getLootTableSeed + m ()Ljv; D method_42278 getItemStacks + m ()V E method_42273 clearItemStacks + m (J)V a method_42274 setLootTableSeed + m (Lakq;)V a method_42275 setLootTable + m (Lbrk;Ldcw;Lbsr;)V a method_42283 chestVehicleDestroyed + m (Lub;Ljo$a;)V a method_42288 addChestVehicleSaveData + m (II)Lcuq; b method_42286 removeChestVehicleItem + m (Lub;Ljo$a;)V b method_42285 readChestVehicleSaveData + m (ILcuq;)V c method_42287 setChestVehicleItem + m ()Lewx; cK method_5829 getBoundingBox + m (Lcmx;)Lbqr; c_ method_42284 interactWithContainerVehicle + m ()Z dJ method_31481 isRemoved + m ()Ldcw; dO method_37908 level + m ()Lexc; dm method_19538 position + m (I)Lcuq; e_ method_42289 removeChestVehicleItemNoUpdate + m ()V f method_42293 clearChestVehicleContent + m (Lcmx;)V f method_42291 unpackChestVehicleLootTable + m (I)Lcuq; f_ method_42290 getChestVehicleItem + m ()Z g method_42295 isChestVehicleEmpty + m (Lcmx;)Z g method_42294 isChestVehicleStillValid + m (I)Lbug; g_ method_42292 getChestVehicleSlot +c cox$1 net/minecraft/class_7265$1 net/minecraft/world/entity/vehicle/ContainerEntity$1 + f I b field_38209 val$slot + f Lcox; c field_38210 field_38210 + m (Lcox;I)V +c coy net/minecraft/class_5275 net/minecraft/world/entity/vehicle/DismountHelper + m (D)Z a method_27932 isBlockFloorValid + m (Lbsx;Ldcg;Ljd;Z)Lexc; a method_30769 findSafeDismountLocation + m (Ldcc;Ljd;)Lexv; a method_30341 nonClimbableShape + m (Ldcg;Lbtn;Lewx;)Z a method_27933 canDismountTo + m (Ldcg;Lexc;Lbtn;Lbua;)Z a method_33353 canDismountTo + m (Ldcg;Ljd;)Lexv; a method_30770 method_30770 + m (Ljd;ILjava/util/function/Function;)D a method_30343 findCeilingFrom + m (Lji;)[[I a method_27934 offsetsForDirection + m ()V +c coz net/minecraft/class_1695 net/minecraft/world/entity/vehicle/Minecart + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V +c cpa net/minecraft/class_1694 net/minecraft/world/entity/vehicle/MinecartChest + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V +c cpb net/minecraft/class_1697 net/minecraft/world/entity/vehicle/MinecartCommandBlock + f Lajw; c field_7743 DATA_ID_COMMAND_NAME + f Lajw; d field_7741 DATA_ID_LAST_OUTPUT + f Ldbx; e field_7744 commandBlock + f I i field_30701 ACTIVATION_DELAY + f I j field_7742 lastActivated + m ()Ldbx; B method_7567 getCommandBlock + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V + m ()V +c cpb$a net/minecraft/class_1697$class_1698 net/minecraft/world/entity/vehicle/MinecartCommandBlock$MinecartCommandBase + f Lcpb; b field_7745 field_7745 + m ()Lcpb; h method_7569 getMinecart + m (Lcpb;)V +c cpc net/minecraft/class_1696 net/minecraft/world/entity/vehicle/MinecartFurnace + f D c field_7737 xPush + f D d field_7736 zPush + f Lajw; e field_7740 DATA_ID_FUEL + f I i field_7739 fuel + f Lcyw; j field_7738 INGREDIENT + m ()Z B method_7565 hasFuel + m (Z)V b method_7564 setHasFuel + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V + m ()V +c cpd net/minecraft/class_1700 net/minecraft/world/entity/vehicle/MinecartHopper + f Z c field_7749 enabled + m ()Z F method_7572 isEnabled + m ()Z L method_7574 suckInItems + m (Z)V b method_7570 setEnabled + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V +c cpe net/minecraft/class_1699 net/minecraft/world/entity/vehicle/MinecartSpawner + f Ldby; c field_7746 spawner + f Ljava/lang/Runnable; d field_27012 ticker + m ()Ldby; B method_35216 getSpawner + m (Ldcw;)Ljava/lang/Runnable; b method_31553 createTicker + m (Ldcw;)V c method_31554 method_31554 + m (Ldcw;)V d method_31555 method_31555 + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V +c cpe$1 net/minecraft/class_1699$1 net/minecraft/world/entity/vehicle/MinecartSpawner$1 + f Lcpe; a field_7747 field_7747 + m (Lcpe;)V +c cpf net/minecraft/class_1701 net/minecraft/world/entity/vehicle/MinecartTNT + f B c field_30703 EVENT_PRIME + f I d field_7751 fuse + m ()V B method_7575 primeFuse + m ()I C method_7577 getFuse + m ()Z D method_7578 isPrimed + m (Lbrk;D)V a method_7576 explode + m (Lbrk;)Z e method_55057 damageSourceIgnitesTnt + m (D)V h method_47305 explode + m (Lbsx;Ldcw;)V + m (Ldcw;DDD)V +c cpg net/minecraft/class_8836 net/minecraft/world/entity/vehicle/VehicleEntity + f Lajw; f field_46655 DATA_ID_HURT + f Lajw; g field_46656 DATA_ID_HURTDIR + f Lajw; h field_46657 DATA_ID_DAMAGE + m ()F N method_54294 getDamage + m ()I O method_54295 getHurtTime + m ()I P method_54296 getHurtDir + m (Lbrk;)V a method_7516 destroy + m ()Lcul; ak_ method_7557 getDropItem + m (F)V b method_54297 setDamage + m (Lcul;)V b method_54298 destroy + m (I)V d method_54299 setHurtTime + m (Lbrk;)Z d method_55056 shouldSourceDestroy + m (I)V m method_54300 setHurtDir + m (Lbsx;Ldcw;)V + m ()V +c cph net/minecraft/class_6074 net/minecraft/world/entity/vehicle/package-info +c cpi net/minecraft/class_7695 net/minecraft/world/flag/FeatureElement + f Ljava/util/Set; bA field_40162 FILTERED_REGISTRIES + m (Lcpl;)Z a method_45382 isEnabled + m ()Lcpl; i method_45322 requiredFeatures + m ()V +c cpj net/minecraft/class_7696 net/minecraft/world/flag/FeatureFlag + f Lcpm; a field_40163 universe + f J b field_40164 mask + m (Lcpm;I)V +c cpk net/minecraft/class_7697 net/minecraft/world/flag/FeatureFlagRegistry + f Lorg/slf4j/Logger; a field_40165 LOGGER + f Lcpm; b field_40166 universe + f Ljava/util/Map; c field_40167 names + f Lcpl; d field_40168 allFlags + m ()Lcpl; a method_45383 allFlags + m (Lakr;)V a method_45384 method_45384 + m (Lcpl;)Z a method_45385 isSubset + m (Lcpl;Ljava/util/Set;Lakr;Lcpj;)V a method_45386 method_45386 + m (Ljava/lang/Iterable;)Lcpl; a method_45387 fromNames + m (Ljava/lang/Iterable;Ljava/util/function/Consumer;)Lcpl; a method_45388 fromNames + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_45389 method_45389 + m (Ljava/util/Set;)Ljava/lang/String; a method_49492 method_49492 + m ([Lcpj;)Lcpl; a method_45390 subset + m ()Lcom/mojang/serialization/Codec; b method_45391 codec + m (Lcpl;)Ljava/util/Set; b method_45392 toNames + m (Lcpl;)Ljava/util/List; c method_45393 method_45393 + m (Lcpm;Lcpl;Ljava/util/Map;)V + m ()V +c cpk$a net/minecraft/class_7697$class_7698 net/minecraft/world/flag/FeatureFlagRegistry$Builder + f Lcpm; a field_40169 universe + f I b field_40170 id + f Ljava/util/Map; c field_40171 flags + m ()Lcpk; a method_45394 build + m (Lakr;)Lcpj; a method_45395 create + m (Ljava/lang/String;)Lcpj; a method_45396 createVanilla + m (Ljava/lang/String;)V +c cpl net/minecraft/class_7699 net/minecraft/world/flag/FeatureFlagSet + f I a field_40172 MAX_CONTAINER_SIZE + f Lcpl; b field_40173 EMPTY + f Lcpm; c field_40174 universe + f J d field_40175 mask + m ()Lcpl; a method_45397 of + m (Lcpj;)Lcpl; a method_45398 of + m (Lcpj;[Lcpj;)Lcpl; a method_45399 of + m (Lcpl;)Z a method_45400 isSubsetOf + m (Lcpm;JLjava/lang/Iterable;)J a method_45401 computeMask + m (Lcpm;Ljava/util/Collection;)Lcpl; a method_45402 create + m ()Z b method_58398 isEmpty + m (Lcpj;)Z b method_45403 contains + m (Lcpl;)Z b method_59819 intersects + m (Lcpl;)Lcpl; c method_45404 join + m (Lcpl;)Lcpl; d method_59820 subtract + m (Lcpm;J)V + m ()V +c cpm net/minecraft/class_7700 net/minecraft/world/flag/FeatureFlagUniverse + f Ljava/lang/String; a field_40176 id + m (Ljava/lang/String;)V +c cpn net/minecraft/class_7701 net/minecraft/world/flag/FeatureFlags + f Lcpj; a field_40177 VANILLA + f Lcpj; b field_40178 BUNDLE + f Lcpj; c field_45142 TRADE_REBALANCE + f Lcpk; d field_40180 REGISTRY + f Lcom/mojang/serialization/Codec; e field_40181 CODEC + f Lcpl; f field_40182 VANILLA_SET + f Lcpl; g field_40183 DEFAULT_FLAGS + m (Lcpk;Lcpl;Lcpl;)Ljava/lang/String; a method_45405 printMissingFlags + m (Lcpl;)Z a method_45406 isExperimental + m (Lcpl;Lcpl;)Ljava/lang/String; a method_45407 printMissingFlags + m (Ljava/util/Set;Lakr;)Z a method_45408 method_45408 + m ()V + m ()V +c cpo net/minecraft/class_7702 net/minecraft/world/flag/package-info +c cpp net/minecraft/class_6075 net/minecraft/world/food/FoodConstants + f I a field_30704 MAX_FOOD + f F b field_30705 MAX_SATURATION + f F c field_30706 START_SATURATION + f F d field_30707 SATURATION_FLOOR + f F e field_30708 EXHAUSTION_DROP + f I f field_30709 HEALTH_TICK_COUNT + f I g field_30710 HEALTH_TICK_COUNT_SATURATED + f I h field_30711 HEAL_LEVEL + f I i field_30712 SPRINT_LEVEL + f I j field_30713 STARVE_LEVEL + f F k field_30714 FOOD_SATURATION_POOR + f F l field_30715 FOOD_SATURATION_LOW + f F m field_30716 FOOD_SATURATION_NORMAL + f F n field_30717 FOOD_SATURATION_GOOD + f F o field_30718 FOOD_SATURATION_MAX + f F p field_30719 FOOD_SATURATION_SUPERNATURAL + f F q field_30720 EXHAUSTION_HEAL + f F r field_30721 EXHAUSTION_JUMP + f F s field_30722 EXHAUSTION_SPRINT_JUMP + f F t field_30723 EXHAUSTION_MINE + f F u field_30724 EXHAUSTION_ATTACK + f F v field_30726 EXHAUSTION_WALK + f F w field_30727 EXHAUSTION_CROUCH + f F x field_30728 EXHAUSTION_SPRINT + f F y field_30729 EXHAUSTION_SWIM + m (IF)F a method_59683 saturationByModifier + m ()V +c cpq net/minecraft/class_1702 net/minecraft/world/food/FoodData + f I a field_7756 foodLevel + f F b field_7753 saturationLevel + f F c field_7752 exhaustionLevel + f I d field_7755 tickTimer + f I e field_7754 lastFoodLevel + m ()I a method_7586 getFoodLevel + m (F)V a method_7583 addExhaustion + m (I)V a method_7580 setFoodLevel + m (IF)V a method_7585 eat + m (Lcmx;)V a method_7588 tick + m (Lcpr;)V a method_7579 eat + m (Lub;)V a method_7584 readAdditionalSaveData + m ()I b method_35217 getLastFoodLevel + m (F)V b method_7581 setSaturation + m (IF)V b method_59684 add + m (Lub;)V b method_7582 addAdditionalSaveData + m ()Z c method_7587 needsFood + m (F)V c method_35218 setExhaustion + m ()F d method_35219 getExhaustionLevel + m ()F e method_7589 getSaturationLevel + m ()V +c cpr net/minecraft/class_4174 net/minecraft/world/food/FoodProperties + f Lcom/mojang/serialization/Codec; a field_49992 DIRECT_CODEC + f Lyx; b field_49993 DIRECT_STREAM_CODEC + f I c comp_2491 nutrition + f F d comp_2492 saturation + f Z e comp_2493 canAlwaysEat + f F f comp_2494 eatSeconds + f Ljava/util/Optional; g comp_2794 usingConvertsTo + f Ljava/util/List; h comp_2495 effects + f F i field_49994 DEFAULT_EAT_SECONDS + m ()I a method_58399 eatDurationTicks + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58400 method_58400 + m ()I b comp_2491 nutrition + m ()F c comp_2492 saturation + m ()Z d comp_2493 canAlwaysEat + m ()F e comp_2494 eatSeconds + m ()Ljava/util/Optional; f comp_2794 usingConvertsTo + m ()Ljava/util/List; g comp_2495 effects + m (IFZFLjava/util/Optional;Ljava/util/List;)V + m ()V +c cpr$a net/minecraft/class_4174$class_4175 net/minecraft/world/food/FoodProperties$Builder + f I a field_18620 nutrition + f F b field_18621 saturationModifier + f Z c field_18623 canAlwaysEat + f F d field_49995 eatSeconds + f Ljava/util/Optional; e field_51895 usingConvertsTo + f Lcom/google/common/collect/ImmutableList$Builder; f field_18625 effects + m ()Lcpr$a; a method_19240 alwaysEdible + m (F)Lcpr$a; a method_19237 saturationModifier + m (I)Lcpr$a; a method_19238 nutrition + m (Lbrz;F)Lcpr$a; a method_19239 effect + m (Ldcv;)Lcpr$a; a method_60500 usingConvertsTo + m ()Lcpr$a; b method_19241 fast + m ()Lcpr; c method_19242 build + m ()V +c cpr$b net/minecraft/class_4174$class_9423 net/minecraft/world/food/FoodProperties$PossibleEffect + f Lcom/mojang/serialization/Codec; a field_49996 CODEC + f Lyx; b field_49997 STREAM_CODEC + f Lbrz; c comp_2496 effect + f F d comp_2497 probability + m ()Lbrz; a comp_2496 effect + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58401 method_58401 + m ()F b comp_2497 probability + m (Lbrz;F)V + m ()V +c cps net/minecraft/class_4176 net/minecraft/world/food/Foods + f Lcpr; A field_18663 POISONOUS_POTATO + f Lcpr; B field_18626 PORKCHOP + f Lcpr; C field_18627 POTATO + f Lcpr; D field_18628 PUFFERFISH + f Lcpr; E field_18629 PUMPKIN_PIE + f Lcpr; F field_18630 RABBIT + f Lcpr; G field_18631 RABBIT_STEW + f Lcpr; H field_18632 ROTTEN_FLESH + f Lcpr; I field_18633 SALMON + f Lcpr; J field_18634 SPIDER_EYE + f Lcpr; K field_18635 SUSPICIOUS_STEW + f Lcpr; L field_18636 SWEET_BERRIES + f Lcpr; M field_28647 GLOW_BERRIES + f Lcpr; N field_18637 TROPICAL_FISH + f Lcpr; O field_50138 OMINOUS_BOTTLE + f Lcpr; a field_18638 APPLE + f Lcpr; b field_18639 BAKED_POTATO + f Lcpr; c field_18640 BEEF + f Lcpr; d field_18641 BEETROOT + f Lcpr; e field_18642 BEETROOT_SOUP + f Lcpr; f field_18643 BREAD + f Lcpr; g field_18644 CARROT + f Lcpr; h field_18645 CHICKEN + f Lcpr; i field_18646 CHORUS_FRUIT + f Lcpr; j field_18647 COD + f Lcpr; k field_18648 COOKED_BEEF + f Lcpr; l field_18649 COOKED_CHICKEN + f Lcpr; m field_18650 COOKED_COD + f Lcpr; n field_18651 COOKED_MUTTON + f Lcpr; o field_18652 COOKED_PORKCHOP + f Lcpr; p field_18653 COOKED_RABBIT + f Lcpr; q field_18654 COOKED_SALMON + f Lcpr; r field_18655 COOKIE + f Lcpr; s field_18656 DRIED_KELP + f Lcpr; t field_18657 ENCHANTED_GOLDEN_APPLE + f Lcpr; u field_18658 GOLDEN_APPLE + f Lcpr; v field_18659 GOLDEN_CARROT + f Lcpr; w field_20381 HONEY_BOTTLE + f Lcpr; x field_18660 MELON_SLICE + f Lcpr; y field_18661 MUSHROOM_STEW + f Lcpr; z field_18662 MUTTON + m (I)Lcpr$a; a method_19243 stew + m ()V + m ()V +c cpt net/minecraft/class_6076 net/minecraft/world/food/package-info +c cpu net/minecraft/class_1703 net/minecraft/world/inventory/AbstractContainerMenu + f I a field_30730 SLOT_CLICKED_OUTSIDE + f I b field_30731 QUICKCRAFT_TYPE_CHARITABLE + f I c field_30732 QUICKCRAFT_TYPE_GREEDY + f I d field_30733 QUICKCRAFT_TYPE_CLONE + f I e field_30734 QUICKCRAFT_HEADER_START + f I f field_30735 QUICKCRAFT_HEADER_CONTINUE + f I g field_30736 QUICKCRAFT_HEADER_END + f I h field_30737 CARRIED_SLOT_SIZE + f Ljv; i field_7761 slots + f I j field_7763 containerId + f Lorg/slf4j/Logger; k field_36534 LOGGER + f Ljv; l field_7764 lastSlots + f Ljava/util/List; m field_17285 dataSlots + f Lcuq; n field_29205 carried + f Ljv; o field_29206 remoteSlots + f Lit/unimi/dsi/fastutil/ints/IntList; p field_29559 remoteDataSlots + f Lcuq; q field_29207 remoteCarried + f I r field_34024 stateId + f Lcrc; s field_17493 menuType + f I t field_7762 quickcraftType + f I u field_7759 quickcraftStatus + f Ljava/util/Set; v field_7757 quickcraftSlots + f Ljava/util/List; w field_7765 containerListeners + f Lcqi; x field_29208 synchronizer + f Z y field_29209 suppressRemoteUpdates + m ()Lcrc; a method_17358 getType + m (I)Z a method_40442 isValidSlotIndex + m (II)V a method_7606 setData + m (IILcqe;Lcmx;)V a method_7593 clicked + m (IILcuq;)V a method_7619 setItem + m (ILcmx;)Z a method_7600 isValidQuickcraftType + m (ILcuq;)V a method_34245 setRemoteSlot + m (ILcuq;Ljava/util/function/Supplier;)V a method_34246 triggerSlotListeners + m (ILjava/util/List;Lcuq;)V a method_7610 initializeContents + m (Lbqk;)V a method_7609 slotsChanged + m (Lbqk;I)V a method_17359 checkContainerSize + m (Lcmx;)V a method_7595 removed + m (Lcmx;I)Z a method_7604 clickMenuButton + m (Lcmx;Lbqk;)V a method_7607 clearContainer + m (Lcmx;Lcqd;Lcrq;Lcuq;Lcuq;)Z a method_45409 tryItemClickBehaviourOverride + m (Lcpu;)V a method_34247 transferState + m (Lcqf;)V a method_17360 addDataSlots + m (Lcqf;I)V a method_17361 checkContainerDataCount + m (Lcqg;Lcmx;Ldfy;)Z a method_17695 stillValid + m (Lcqh;)V a method_7596 addSlotListener + m (Lcqi;)V a method_34248 setSynchronizer + m (Lcqn;)Lcqn; a method_17362 addDataSlot + m (Lcrq;)Lcrq; a method_7621 addSlot + m (Lcrq;Lcmx;Lcuq;)V a method_34249 method_34249 + m (Lcrq;Lcuq;Z)Z a method_7592 canItemQuickReplace + m (Lcuq;)V a method_34250 setRemoteCarried + m (Lcuq;IIZ)Z a method_7616 moveItemStackTo + m (Lcuq;Lcrq;)Z a method_7613 canTakeItemForPickAll + m (Lcuq;Lcrq;Lcmx;Lcuq;)V a method_34251 method_34251 + m (Ldfy;Lcmx;Ldcw;Ljd;)Ljava/lang/Boolean; a method_17696 method_17696 + m (Ldqh;)I a method_7608 getRedstoneSignalFromBlockEntity + m (Ljava/util/Set;ILcuq;)I a method_7617 getQuickCraftPlaceCount + m ()V b method_34252 sendAllDataToRemote + m (I)Lcrq; b method_7611 getSlot + m (II)I b method_7591 getQuickcraftMask + m (IILcqe;Lcmx;)V b method_30010 doClick + m (ILcuq;)V b method_37449 setRemoteSlotNoCopy + m (ILcuq;Ljava/util/function/Supplier;)V b method_34253 synchronizeSlotToRemote + m (Lbqk;)I b method_7618 getRedstoneSignalFromContainer + m (Lbqk;I)Ljava/util/OptionalInt; b method_37418 findSlot + m (Lcmx;)Z b method_7597 stillValid + m (Lcmx;I)Lcuq; b method_7601 quickMoveStack + m (Lcqh;)V b method_7603 removeSlotListener + m (Lcrq;)Z b method_7615 canDragTo + m (Lcuq;)V b method_34254 setCarried + m ()Ljv; c method_7602 getItems + m (I)I c method_7620 getQuickcraftType + m (II)V c method_37419 updateDataSlotListeners + m ()V d method_7623 broadcastChanges + m (I)I d method_7594 getQuickcraftHeader + m (II)V d method_34715 synchronizeDataSlotToRemote + m ()V e method_37420 broadcastFullState + m ()V f method_7605 resetQuickCraft + m ()Lcuq; g method_34255 getCarried + m ()V h method_34256 suppressRemoteUpdates + m ()V i method_34257 resumeRemoteUpdates + m ()I j method_37421 getStateId + m ()I k method_37422 incrementStateId + m ()V l method_34258 synchronizeCarriedToRemote + m ()Lbug; m method_34259 createCarriedSlotAccess + m ()Ljava/lang/String; n method_30024 method_30024 + m ()Ljava/lang/String; o method_30011 method_30011 + m (Lcrc;I)V + m ()V +c cpu$1 net/minecraft/class_1703$1 net/minecraft/world/inventory/AbstractContainerMenu$1 + f Lcpu; b field_29210 field_29210 + m (Lcpu;)V +c cpv net/minecraft/class_1720 net/minecraft/world/inventory/AbstractFurnaceMenu + f I k field_30738 INGREDIENT_SLOT + f I l field_30739 FUEL_SLOT + f I m field_30740 RESULT_SLOT + f I n field_30741 SLOT_COUNT + f I o field_30742 DATA_COUNT + f Ldcw; p field_7822 level + f I q field_30743 INV_SLOT_START + f I r field_30744 INV_SLOT_END + f I s field_30745 USE_ROW_SLOT_START + f I t field_30746 USE_ROW_SLOT_END + f Lbqk; u field_7824 container + f Lcqf; v field_17286 data + f Lczf; w field_17494 recipeType + f Lcrj; x field_25762 recipeBookType + m (Lcuq;)Z c method_7640 canSmelt + m (Lcuq;)Z d method_16945 isFuel + m ()F q method_17363 getBurnProgress + m ()F r method_17364 getLitProgress + m ()Z s method_17365 isLit + m (Lcrc;Lczf;Lcrj;ILcmw;)V + m (Lcrc;Lczf;Lcrj;ILcmw;Lbqk;Lcqf;)V +c cpw net/minecraft/class_1706 net/minecraft/world/inventory/AnvilMenu + f I A field_30747 COST_REPAIR_MATERIAL + f I B field_30748 COST_REPAIR_SACRIFICE + f I C field_30749 COST_INCOMPATIBLE_PENALTY + f I D field_30750 COST_RENAME + f I E field_41894 INPUT_SLOT_X_PLACEMENT + f I F field_41895 ADDITIONAL_SLOT_X_PLACEMENT + f I G field_41896 RESULT_SLOT_X_PLACEMENT + f I H field_41897 SLOT_Y_PLACEMENT + f I k field_41898 INPUT_SLOT + f I l field_41899 ADDITIONAL_SLOT + f I m field_41900 RESULT_SLOT + f I n field_30751 MAX_NAME_LENGTH + f Lorg/slf4j/Logger; s field_7771 LOGGER + f Z t field_30752 DEBUG_COST + f I u field_7776 repairItemCountCost + f Ljava/lang/String; v field_7774 itemName + f Lcqn; w field_7770 cost + f I x field_30753 COST_FAIL + f I y field_30754 COST_BASE + f I z field_30755 COST_ADDED_BASE + m (Lcmx;Ldcw;Ljd;)V a method_24922 method_24922 + m (Ljava/lang/String;)Z a method_7625 setItemName + m (Ljava/lang/String;)Ljava/lang/String; b method_52176 validateName + m (I)I e method_20398 calculateIncreasedRepairCost + m (Lcuq;)Z e method_48350 method_48350 + m (Lcuq;)Z f method_48351 method_48351 + m ()I n method_17369 getCost + m (ILcmw;)V + m (ILcmw;Lcqg;)V + m ()V +c cpx net/minecraft/class_9692 net/minecraft/world/inventory/ArmorSlot + f Lbtn; a field_51622 owner + f Lbsy; b field_51623 slot + f Lakr; g field_51624 emptyIcon + m (Lbqk;Lbtn;Lbsy;IIILakr;)V +c cpy net/minecraft/class_1704 net/minecraft/world/inventory/BeaconMenu + f I k field_30756 PAYMENT_SLOT + f I l field_30757 SLOT_COUNT + f I m field_30758 DATA_COUNT + f I n field_30759 INV_SLOT_START + f I o field_30760 INV_SLOT_END + f I p field_30761 USE_ROW_SLOT_START + f I q field_30762 USE_ROW_SLOT_END + f I r field_45758 NO_EFFECT + f Lbqk; s field_17287 beacon + f Lcpy$a; t field_17288 paymentSlot + f Lcqg; u field_17289 access + f Lcqf; v field_17290 beaconData + m (Ljava/util/Optional;Ljava/util/Optional;)V a method_17372 updateEffects + m (Ljm;)I a method_53173 encodeEffect + m (I)Ljm; e method_53174 decodeEffect + m ()I l method_17373 getLevels + m ()Ljm; m method_17374 getPrimaryEffect + m ()Ljm; n method_17375 getSecondaryEffect + m ()Z o method_17376 hasPayment + m (ILbqk;)V + m (ILbqk;Lcqf;Lcqg;)V +c cpy$1 net/minecraft/class_1704$1 net/minecraft/world/inventory/BeaconMenu$1 + m (Lcpy;I)V +c cpy$a net/minecraft/class_1704$class_1705 net/minecraft/world/inventory/BeaconMenu$PaymentSlot + m (Lcpy;Lbqk;III)V +c cpz net/minecraft/class_3705 net/minecraft/world/inventory/BlastFurnaceMenu + m (ILcmw;)V + m (ILcmw;Lbqk;Lcqf;)V +c cqa net/minecraft/class_1708 net/minecraft/world/inventory/BrewingStandMenu + f I k field_30763 BOTTLE_SLOT_START + f I l field_30764 BOTTLE_SLOT_END + f I m field_30765 INGREDIENT_SLOT + f I n field_30766 FUEL_SLOT + f I o field_30767 SLOT_COUNT + f I p field_30768 DATA_COUNT + f I q field_30769 INV_SLOT_START + f I r field_30770 INV_SLOT_END + f I s field_30771 USE_ROW_SLOT_START + f I t field_30772 USE_ROW_SLOT_END + f Lbqk; u field_7788 brewingStand + f Lcqf; v field_17292 brewingStandData + f Lcrq; w field_7787 ingredientSlot + m ()I l method_17377 getFuel + m ()I m method_17378 getBrewingTicks + m (ILcmw;)V + m (ILcmw;Lbqk;Lcqf;)V +c cqa$a net/minecraft/class_1708$class_1709 net/minecraft/world/inventory/BrewingStandMenu$FuelSlot + m (Lcuq;)Z b method_7630 mayPlaceItem + m (Lbqk;III)V +c cqa$b net/minecraft/class_1708$class_1710 net/minecraft/world/inventory/BrewingStandMenu$IngredientsSlot + f Lcwt; a field_51385 potionBrewing + m (Lcwt;Lbqk;III)V +c cqa$c net/minecraft/class_1708$class_1711 net/minecraft/world/inventory/BrewingStandMenu$PotionSlot + m (Lcuq;)Z b method_7631 mayPlaceItem + m (Lbqk;III)V +c cqb net/minecraft/class_3910 net/minecraft/world/inventory/CartographyTableMenu + f I k field_30773 MAP_SLOT + f I l field_30774 ADDITIONAL_SLOT + f I m field_30775 RESULT_SLOT + f Lbqk; n field_17293 container + f I o field_30776 INV_SLOT_START + f I p field_30777 INV_SLOT_END + f I q field_30778 USE_ROW_SLOT_START + f I r field_30779 USE_ROW_SLOT_END + f Lcqg; s field_17294 access + f J t field_20382 lastSoundTime + f Lcrl; u field_19272 resultContainer + m (Lcmx;Ldcw;Ljd;)V a method_17379 method_17379 + m (Lcuq;Lcuq;Lcuq;)V a method_17381 setupResultSlot + m (Lcuq;Lcuq;Lcuq;Ldcw;Ljd;)V a method_17382 method_17382 + m (ILcmw;)V + m (ILcmw;Lcqg;)V +c cqb$1 net/minecraft/class_3910$1 net/minecraft/world/inventory/CartographyTableMenu$1 + f Lcqb; b field_17298 field_17298 + m (Lcqb;I)V +c cqb$2 net/minecraft/class_3910$2 net/minecraft/world/inventory/CartographyTableMenu$2 + f Lcqb; b field_19273 field_19273 + m (Lcqb;)V +c cqb$3 net/minecraft/class_3910$3 net/minecraft/world/inventory/CartographyTableMenu$3 + m (Lcqb;Lbqk;III)V +c cqb$4 net/minecraft/class_3910$4 net/minecraft/world/inventory/CartographyTableMenu$4 + m (Lcqb;Lbqk;III)V +c cqb$5 net/minecraft/class_3910$5 net/minecraft/world/inventory/CartographyTableMenu$5 + f Lcqg; a field_17301 val$access + f Lcqb; b field_17303 field_17303 + m (Ldcw;Ljd;)V a method_17387 method_17387 + m (Lcqb;Lbqk;IIILcqg;)V +c cqc net/minecraft/class_1707 net/minecraft/world/inventory/ChestMenu + f I k field_30780 SLOTS_PER_ROW + f Lbqk; l field_17495 container + f I m field_17496 containerRows + m (ILcmw;)Lcqc; a method_19244 oneRow + m (ILcmw;Lbqk;)Lcqc; a method_19245 threeRows + m (ILcmw;)Lcqc; b method_19246 twoRows + m (ILcmw;Lbqk;)Lcqc; b method_19247 sixRows + m (ILcmw;)Lcqc; c method_19248 threeRows + m (ILcmw;)Lcqc; d method_19249 fourRows + m (ILcmw;)Lcqc; e method_19250 fiveRows + m (ILcmw;)Lcqc; f method_19251 sixRows + m ()Lbqk; l method_7629 getContainer + m ()I m method_17388 getRowCount + m (Lcrc;ILcmw;I)V + m (Lcrc;ILcmw;Lbqk;I)V +c cqd net/minecraft/class_5536 net/minecraft/world/inventory/ClickAction + f Lcqd; a field_27013 PRIMARY + f Lcqd; b field_27014 SECONDARY + f [Lcqd; c field_27015 $VALUES + m ()[Lcqd; a method_36672 $values + m (Ljava/lang/String;I)V + m ()V +c cqe net/minecraft/class_1713 net/minecraft/world/inventory/ClickType + f Lcqe; a field_7790 PICKUP + f Lcqe; b field_7794 QUICK_MOVE + f Lcqe; c field_7791 SWAP + f Lcqe; d field_7796 CLONE + f Lcqe; e field_7795 THROW + f Lcqe; f field_7789 QUICK_CRAFT + f Lcqe; g field_7793 PICKUP_ALL + f [Lcqe; h field_7792 $VALUES + m ()[Lcqe; a method_36673 $values + m (Ljava/lang/String;I)V + m ()V +c cqf net/minecraft/class_3913 net/minecraft/world/inventory/ContainerData + m ()I a method_17389 getCount + m (I)I a method_17390 get + m (II)V a method_17391 set +c cqg net/minecraft/class_3914 net/minecraft/world/inventory/ContainerLevelAccess + f Lcqg; a field_17304 NULL + m (Ldcw;Ljd;)Lcqg; a method_17392 create + m (Ljava/util/function/BiConsumer;)V a method_17393 execute + m (Ljava/util/function/BiConsumer;Ldcw;Ljd;)Ljava/util/Optional; a method_17394 method_17394 + m (Ljava/util/function/BiFunction;)Ljava/util/Optional; a method_17395 evaluate + m (Ljava/util/function/BiFunction;Ljava/lang/Object;)Ljava/lang/Object; a method_17396 evaluate + m ()V +c cqg$1 net/minecraft/class_3914$1 net/minecraft/world/inventory/ContainerLevelAccess$1 + m ()V +c cqg$2 net/minecraft/class_3914$2 net/minecraft/world/inventory/ContainerLevelAccess$2 + f Ldcw; b field_17305 val$level + f Ljd; c field_17306 val$pos + m (Ldcw;Ljd;)V +c cqh net/minecraft/class_1712 net/minecraft/world/inventory/ContainerListener + m (Lcpu;II)V a method_7633 dataChanged + m (Lcpu;ILcuq;)V a method_7635 slotChanged +c cqi net/minecraft/class_5916 net/minecraft/world/inventory/ContainerSynchronizer + m (Lcpu;II)V a method_34260 sendDataChange + m (Lcpu;ILcuq;)V a method_34261 sendSlotChange + m (Lcpu;Lcuq;)V a method_34262 sendCarriedChange + m (Lcpu;Ljv;Lcuq;[I)V a method_34263 sendInitialData +c cqj net/minecraft/class_8881 net/minecraft/world/inventory/CrafterMenu + f I k field_46781 SLOT_COUNT + f I l field_46782 INV_SLOT_START + f I m field_46783 INV_SLOT_END + f I n field_46784 USE_ROW_SLOT_START + f I o field_46785 USE_ROW_SLOT_END + f Lcrl; p field_46780 resultContainer + f Lcqf; q field_46786 containerData + f Lcmx; r field_46787 player + f Lcql; s field_46788 container + m (IZ)V a method_54458 setSlotState + m (Lcmw;)V a method_54459 addSlots + m (Lcyp;Ldcw;Lczb;)Lcuq; a method_54460 method_54460 + m (I)Z e method_54461 isSlotDisabled + m ()Z l method_54462 isPowered + m ()Lbqk; m method_54463 getContainer + m ()V n method_54464 refreshRecipeResult + m (ILcmw;)V + m (ILcmw;Lcql;Lcqf;)V +c cqk net/minecraft/class_8882 net/minecraft/world/inventory/CrafterSlot + f Lcqj; a field_46789 menu + m (Lbqk;IIILcqj;)V +c cql net/minecraft/class_8566 net/minecraft/world/inventory/CraftingContainer + m ()Lcyp; aE_ method_59961 asCraftInput + m ()Lcyp$a; aF_ method_60501 asPositionedCraftInput + m ()I f method_17398 getWidth + m ()I g method_17397 getHeight + m ()Ljava/util/List; h method_51305 getItems +c cqm net/minecraft/class_1714 net/minecraft/world/inventory/CraftingMenu + f I k field_30781 RESULT_SLOT + f I l field_30782 CRAFT_SLOT_START + f I m field_30783 CRAFT_SLOT_END + f I n field_30784 INV_SLOT_START + f I o field_30785 INV_SLOT_END + f I p field_30786 USE_ROW_SLOT_START + f I q field_30787 USE_ROW_SLOT_END + f Lcql; r field_7801 craftSlots + f Lcrl; s field_7800 resultSlots + f Lcqg; t field_7799 access + f Lcmx; u field_7797 player + f Z v field_51625 placingRecipe + m (Lcmx;Ldcw;Ljd;)V a method_17402 method_17402 + m (Lcpu;Ldcw;Lcmx;Lcql;Lcrl;Lczb;)V a method_17399 slotChangedCraftingGrid + m (Lcuq;Lcmx;Ldcw;Ljd;)V a method_17400 method_17400 + m (Lczb;Ldcw;Ljd;)V a method_59962 method_59962 + m (Ldcw;Ljd;)V a method_17401 method_17401 + m (ILcmw;)V + m (ILcmw;Lcqg;)V +c cqn net/minecraft/class_3915 net/minecraft/world/inventory/DataSlot + f I a field_17307 prevValue + m ()Lcqn; a method_17403 standalone + m (I)V a method_17404 set + m (Lcqf;I)Lcqn; a method_17405 forContainer + m ([II)Lcqn; a method_17406 shared + m ()I b method_17407 get + m ()Z c method_17408 checkAndClearUpdateFlag + m ()V +c cqn$1 net/minecraft/class_3915$1 net/minecraft/world/inventory/DataSlot$1 + f Lcqf; a field_17308 val$container + f I b field_17309 val$dataId + m (Lcqf;I)V +c cqn$2 net/minecraft/class_3915$2 net/minecraft/world/inventory/DataSlot$2 + f [I a field_17310 val$storage + f I b field_17311 val$index + m ([II)V +c cqn$3 net/minecraft/class_3915$3 net/minecraft/world/inventory/DataSlot$3 + f I a field_17312 value + m ()V +c cqo net/minecraft/class_1716 net/minecraft/world/inventory/DispenserMenu + f I k field_30788 SLOT_COUNT + f I l field_30789 INV_SLOT_START + f I m field_30790 INV_SLOT_END + f I n field_30791 USE_ROW_SLOT_START + f I o field_30792 USE_ROW_SLOT_END + f Lbqk; p field_7806 dispenser + m (ILcmw;)V + m (ILcmw;Lbqk;)V +c cqp net/minecraft/class_1718 net/minecraft/world/inventory/EnchantmentMenu + f [I k field_7808 costs + f [I l field_7812 enchantClue + f [I m field_7810 levelClue + f Lakr; n field_45143 EMPTY_SLOT_LAPIS_LAZULI + f Lbqk; o field_7809 enchantSlots + f Lcqg; p field_7813 access + f Layw; q field_7811 random + f Lcqn; r field_7814 enchantmentSeed + m (Lcmx;Ldcw;Ljd;)V a method_17412 method_17412 + m (Lcuq;ILcmx;ILcuq;Ldcw;Ljd;)V a method_17410 method_17410 + m (Lcuq;Ldcw;Ljd;)V a method_17411 method_17411 + m (Lka;Lcuq;II)Ljava/util/List; a method_7637 getEnchantmentList + m ()I l method_7638 getGoldCount + m ()I m method_17413 getEnchantmentSeed + m (ILcmw;)V + m (ILcmw;Lcqg;)V + m ()V +c cqp$1 net/minecraft/class_1718$1 net/minecraft/world/inventory/EnchantmentMenu$1 + f Lcqp; b field_7815 field_7815 + m (Lcqp;I)V +c cqp$2 net/minecraft/class_1718$2 net/minecraft/world/inventory/EnchantmentMenu$2 + m (Lcqp;Lbqk;III)V +c cqp$3 net/minecraft/class_1718$3 net/minecraft/world/inventory/EnchantmentMenu$3 + m (Lcqp;Lbqk;III)V +c cqq net/minecraft/class_1717 net/minecraft/world/inventory/FurnaceFuelSlot + f Lcpv; a field_17083 menu + m (Lcuq;)Z c method_7636 isBucket + m (Lcpv;Lbqk;III)V +c cqr net/minecraft/class_3858 net/minecraft/world/inventory/FurnaceMenu + m (ILcmw;)V + m (ILcmw;Lbqk;Lcqf;)V +c cqs net/minecraft/class_1719 net/minecraft/world/inventory/FurnaceResultSlot + f Lcmx; a field_7818 player + f I b field_7819 removeCount + m (Lcmx;Lbqk;III)V +c cqt net/minecraft/class_3803 net/minecraft/world/inventory/GrindstoneMenu + f I k field_30793 MAX_NAME_LENGTH + f I l field_30794 INPUT_SLOT + f I m field_30795 ADDITIONAL_SLOT + f I n field_30796 RESULT_SLOT + f I o field_30797 INV_SLOT_START + f I p field_30798 INV_SLOT_END + f I q field_30799 USE_ROW_SLOT_START + f I r field_30800 USE_ROW_SLOT_END + f Lbqk; s field_16773 resultSlots + f Lbqk; t field_16772 repairSlots + f Lcqg; u field_16775 access + m (Lcmx;Ldcw;Ljd;)V a method_17415 method_17415 + m (Lcuq;Lcuq;)Lcuq; a method_58070 computeResult + m (Lcuq;Ldai$a;)V a method_58071 method_58071 + m (Ldai$a;)V a method_58072 method_58072 + m (Ljm;)Z a method_58073 method_58073 + m (Lcuq;Lcuq;)Lcuq; b method_58074 mergeItems + m (Lcuq;)Lcuq; c method_16693 removeNonCursesFrom + m (Lcuq;Lcuq;)V c method_20268 mergeEnchantsFrom + m ()V l method_16695 createResult + m (ILcmw;)V + m (ILcmw;Lcqg;)V +c cqt$1 net/minecraft/class_3803$1 net/minecraft/world/inventory/GrindstoneMenu$1 + f Lcqt; b field_16776 field_16776 + m (Lcqt;I)V +c cqt$2 net/minecraft/class_3803$2 net/minecraft/world/inventory/GrindstoneMenu$2 + m (Lcqt;Lbqk;III)V +c cqt$3 net/minecraft/class_3803$3 net/minecraft/world/inventory/GrindstoneMenu$3 + m (Lcqt;Lbqk;III)V +c cqt$4 net/minecraft/class_3803$4 net/minecraft/world/inventory/GrindstoneMenu$4 + f Lcqg; a field_16779 val$access + f Lcqt; b field_16780 field_16780 + m (Ldcw;)I a method_17416 getExperienceAmount + m (Ldcw;Ljd;)V a method_17417 method_17417 + m (Lcuq;)I g method_16696 getExperienceFromItem + m (Lcqt;Lbqk;IIILcqg;)V +c cqu net/minecraft/class_1722 net/minecraft/world/inventory/HopperMenu + f I k field_30801 CONTAINER_SIZE + f Lbqk; l field_7826 hopper + m (ILcmw;)V + m (ILcmw;Lbqk;)V +c cqv net/minecraft/class_1724 net/minecraft/world/inventory/HorseInventoryMenu + f Lbqk; k field_7836 horseContainer + f Lbqk; l field_48834 armorContainer + f Lchi; m field_7837 horse + f I n field_48835 SLOT_BODY_ARMOR + f I o field_48836 SLOT_HORSE_INVENTORY_START + m (ILcmw;Lbqk;Lchi;I)V +c cqv$1 net/minecraft/class_1724$1 net/minecraft/world/inventory/HorseInventoryMenu$1 + f Lchi; a field_7838 val$horse + m (Lcqv;Lbqk;IIILchi;)V +c cqv$2 net/minecraft/class_1724$2 net/minecraft/world/inventory/HorseInventoryMenu$2 + f Lchi; a field_7840 val$horse + m (Lcqv;Lbqk;Lbtn;Lbsy;IIILakr;Lchi;)V +c cqw net/minecraft/class_1723 net/minecraft/world/inventory/InventoryMenu + f Lakr; A field_21671 EMPTY_ARMOR_SLOT_LEGGINGS + f Lakr; B field_21672 EMPTY_ARMOR_SLOT_BOOTS + f Lakr; C field_21673 EMPTY_ARMOR_SLOT_SHIELD + f Z D field_7827 active + f Ljava/util/Map; E field_7829 TEXTURE_EMPTY_SLOTS + f [Lbsy; F field_7832 SLOT_IDS + f Lcql; G field_7831 craftSlots + f Lcrl; H field_7830 resultSlots + f Lcmx; I field_7828 owner + f I k field_30802 CONTAINER_ID + f I l field_30803 RESULT_SLOT + f I m field_30804 CRAFT_SLOT_START + f I n field_49739 CRAFT_SLOT_COUNT + f I o field_30805 CRAFT_SLOT_END + f I p field_30806 ARMOR_SLOT_START + f I q field_49740 ARMOR_SLOT_COUNT + f I r field_30807 ARMOR_SLOT_END + f I s field_30808 INV_SLOT_START + f I t field_30809 INV_SLOT_END + f I u field_30810 USE_ROW_SLOT_START + f I v field_30811 USE_ROW_SLOT_END + f I w field_30812 SHIELD_SLOT + f Lakr; x field_21668 BLOCK_ATLAS + f Lakr; y field_21669 EMPTY_ARMOR_SLOT_HELMET + f Lakr; z field_21670 EMPTY_ARMOR_SLOT_CHESTPLATE + m (I)Z f method_36211 isHotbarSlot + m ()Lcql; r method_29281 getCraftSlots + m (Lcmw;ZLcmx;)V + m ()V +c cqw$1 net/minecraft/class_1723$1 net/minecraft/world/inventory/InventoryMenu$1 + f Lcmx; a field_39410 val$owner + m (Lcqw;Lbqk;IIILcmx;)V +c cqx net/minecraft/class_4861 net/minecraft/world/inventory/ItemCombinerMenu + f I k field_41901 INVENTORY_SLOTS_PER_ROW + f I l field_41902 INVENTORY_SLOTS_PER_COLUMN + f Ljava/util/List; m field_41903 inputSlotIndexes + f I n field_41904 resultSlotIndex + f Lcqg; o field_22481 access + f Lcmx; p field_22482 player + f Lbqk; q field_22480 inputSlots + f Lcrl; r field_22479 resultSlots + m (Lcmw;)V a method_48353 createInventorySlots + m (Lcmx;Lcuq;)V a method_24923 onTake + m (Lcmx;Ldcw;Ljd;)Ljava/lang/Boolean; a method_24924 method_24924 + m (Lcmx;Z)Z a method_24927 mayPickup + m (Lcqy;)V a method_48354 createInputSlots + m (Ldtc;)Z a method_24925 isValidBlock + m (Lcmx;Ldcw;Ljd;)V b method_24926 method_24926 + m (Lcqy;)V b method_48355 createResultSlot + m (Lcuq;)Z c method_48356 canMoveIntoInputSlots + m (Lcuq;)I d method_48357 getSlotToQuickMoveTo + m (I)Lbra; e method_48358 createContainer + m ()Lcqy; l method_48352 createInputSlotDefinitions + m ()V m method_24928 createResult + m ()I n method_48359 getInventorySlotStart + m ()I o method_48360 getResultSlot + m ()I p method_48361 getInventorySlotEnd + m ()I q method_48362 getUseRowStart + m ()I r method_48363 getUseRowEnd + m (Lcrc;ILcmw;Lcqg;)V +c cqx$1 net/minecraft/class_4861$1 net/minecraft/world/inventory/ItemCombinerMenu$1 + f Lcqy$b; a field_41905 val$slot + m (Lcqx;Lbqk;IIILcqy$b;)V +c cqx$2 net/minecraft/class_4861$2 net/minecraft/world/inventory/ItemCombinerMenu$2 + f Lcqx; a field_22483 field_22483 + m (Lcqx;Lbqk;III)V +c cqx$3 net/minecraft/class_4861$3 net/minecraft/world/inventory/ItemCombinerMenu$3 + f Lcqx; b field_7778 field_7778 + m (Lcqx;I)V +c cqy net/minecraft/class_8047 net/minecraft/world/inventory/ItemCombinerMenuSlotDefinition + f Ljava/util/List; a field_41907 slots + f Lcqy$b; b field_41908 resultSlot + m ()Lcqy$a; a method_48364 create + m (I)Z a method_48365 hasSlot + m ()Lcqy$b; b method_48366 getResultSlot + m (I)Lcqy$b; b method_48367 getSlot + m ()Ljava/util/List; c method_48368 getSlots + m ()I d method_48369 getNumOfInputSlots + m ()I e method_48370 getResultSlotIndex + m ()Ljava/util/List; f method_48371 getInputSlotIndexes + m (Ljava/util/List;Lcqy$b;)V +c cqy$a net/minecraft/class_8047$class_8048 net/minecraft/world/inventory/ItemCombinerMenuSlotDefinition$Builder + f Ljava/util/List; a field_41909 slots + f Lcqy$b; b field_41910 resultSlot + m ()Lcqy; a method_48372 build + m (III)Lcqy$a; a method_48373 withResultSlot + m (IIILjava/util/function/Predicate;)Lcqy$a; a method_48374 withSlot + m (Lcuq;)Z a method_48375 method_48375 + m ()V +c cqy$b net/minecraft/class_8047$class_8049 net/minecraft/world/inventory/ItemCombinerMenuSlotDefinition$SlotDefinition + f I a comp_1204 slotIndex + f I b comp_1205 x + f I c comp_1206 y + f Ljava/util/function/Predicate; d comp_1207 mayPlace + f Lcqy$b; e field_41911 EMPTY + m ()I a comp_1204 slotIndex + m (Lcuq;)Z a method_48376 method_48376 + m ()I b comp_1205 x + m ()I c comp_1206 y + m ()Ljava/util/function/Predicate; d comp_1207 mayPlace + m (IIILjava/util/function/Predicate;)V + m ()V +c cqz net/minecraft/class_3916 net/minecraft/world/inventory/LecternMenu + f I k field_30820 BUTTON_PREV_PAGE + f I l field_30821 BUTTON_NEXT_PAGE + f I m field_30822 BUTTON_TAKE_BOOK + f I n field_30823 BUTTON_PAGE_JUMP_RANGE_START + f I o field_30824 DATA_COUNT + f I p field_30825 SLOT_COUNT + f Lbqk; q field_17313 lectern + f Lcqf; r field_17314 lecternData + m ()Lcuq; l method_17418 getBook + m ()I m method_17419 getPage + m (I)V + m (ILbqk;Lcqf;)V +c cqz$1 net/minecraft/class_3916$1 net/minecraft/world/inventory/LecternMenu$1 + f Lcqz; a field_17315 field_17315 + m (Lcqz;Lbqk;III)V +c cra net/minecraft/class_1726 net/minecraft/world/inventory/LoomMenu + f Lbqk; A field_17323 outputContainer + f I k field_39120 PATTERN_NOT_SET + f I l field_30826 INV_SLOT_START + f I m field_30827 INV_SLOT_END + f I n field_30828 USE_ROW_SLOT_START + f I o field_30829 USE_ROW_SLOT_END + f Lcqg; p field_17316 access + f Lcqn; q field_17317 selectedBannerPatternIndex + f Ljava/util/List; r field_39121 selectablePatterns + f Ljava/lang/Runnable; s field_17318 slotUpdateListener + f Ljn; t field_49741 patternGetter + f Lcrq; u field_17319 bannerSlot + f Lcrq; v field_17320 dyeSlot + f Lcrq; w field_17321 patternSlot + f Lcrq; x field_17322 resultSlot + f J y field_20383 lastSoundTime + f Lbqk; z field_7850 inputContainer + m (Lcmx;Ldcw;Ljd;)V a method_17420 method_17420 + m (Ljava/lang/Runnable;)V a method_17423 registerUpdateListener + m (Ljm;)V a method_7648 setupResultSlot + m (Ljm;Lcti;Ldpy;)Ldpy; a method_57322 method_57322 + m (Lcuq;)Ljava/util/List; c method_43705 getSelectablePatterns + m (I)Z e method_45016 isValidPatternIndex + m ()Ljava/util/List; l method_43706 getSelectablePatterns + m ()I m method_7647 getSelectedBannerPatternIndex + m ()Lcrq; n method_17428 getBannerSlot + m ()Lcrq; o method_17429 getDyeSlot + m ()Lcrq; p method_17430 getPatternSlot + m ()Lcrq; q method_17431 getResultSlot + m ()V r method_17432 method_17432 + m (ILcmw;)V + m (ILcmw;Lcqg;)V +c cra$1 net/minecraft/class_1726$1 net/minecraft/world/inventory/LoomMenu$1 + f Lcra; b field_7851 field_7851 + m (Lcra;I)V +c cra$2 net/minecraft/class_1726$2 net/minecraft/world/inventory/LoomMenu$2 + f Lcra; b field_17324 field_17324 + m (Lcra;I)V +c cra$3 net/minecraft/class_1726$3 net/minecraft/world/inventory/LoomMenu$3 + m (Lcra;Lbqk;III)V +c cra$4 net/minecraft/class_1726$4 net/minecraft/world/inventory/LoomMenu$4 + m (Lcra;Lbqk;III)V +c cra$5 net/minecraft/class_1726$5 net/minecraft/world/inventory/LoomMenu$5 + m (Lcra;Lbqk;III)V +c cra$6 net/minecraft/class_1726$6 net/minecraft/world/inventory/LoomMenu$6 + f Lcqg; a field_17325 val$access + f Lcra; b field_7855 field_7855 + m (Ldcw;Ljd;)V a method_17433 method_17433 + m (Lcra;Lbqk;IIILcqg;)V +c crb net/minecraft/class_1270 net/minecraft/world/inventory/MenuConstructor +c crc net/minecraft/class_3917 net/minecraft/world/inventory/MenuType + f Lcrc$a; A field_17344 constructor + f Lcrc; a field_18664 GENERIC_9x1 + f Lcrc; b field_18665 GENERIC_9x2 + f Lcrc; c field_17326 GENERIC_9x3 + f Lcrc; d field_18666 GENERIC_9x4 + f Lcrc; e field_18667 GENERIC_9x5 + f Lcrc; f field_17327 GENERIC_9x6 + f Lcrc; g field_17328 GENERIC_3x3 + f Lcrc; h field_46790 CRAFTER_3x3 + f Lcrc; i field_17329 ANVIL + f Lcrc; j field_17330 BEACON + f Lcrc; k field_17331 BLAST_FURNACE + f Lcrc; l field_17332 BREWING_STAND + f Lcrc; m field_17333 CRAFTING + f Lcrc; n field_17334 ENCHANTMENT + f Lcrc; o field_17335 FURNACE + f Lcrc; p field_17336 GRINDSTONE + f Lcrc; q field_17337 HOPPER + f Lcrc; r field_17338 LECTERN + f Lcrc; s field_17339 LOOM + f Lcrc; t field_17340 MERCHANT + f Lcrc; u field_17341 SHULKER_BOX + f Lcrc; v field_22484 SMITHING + f Lcrc; w field_17342 SMOKER + f Lcrc; x field_17343 CARTOGRAPHY_TABLE + f Lcrc; y field_17625 STONECUTTER + f Lcpl; z field_41923 requiredFeatures + m (ILcmw;)Lcpu; a method_17434 create + m (Ljava/lang/String;Lcrc$a;)Lcrc; a method_17435 register + m (Ljava/lang/String;Lcrc$a;[Lcpj;)Lcrc; a method_48387 register + m (ILcmw;)Lcqz; b method_17436 method_17436 + m (Lcrc$a;Lcpl;)V + m ()V +c crc$a net/minecraft/class_3917$class_3918 net/minecraft/world/inventory/MenuType$MenuSupplier +c crd net/minecraft/class_1725 net/minecraft/world/inventory/MerchantContainer + f Ldbt; b field_7844 merchant + f Ljv; c field_7845 itemStacks + f Ldbu; d field_7843 activeOffer + f I e field_7842 selectionHint + f I f field_18668 futureXp + m (I)V c method_7643 setSelectionHint + m (I)Z d method_7644 isPaymentSlot + m ()V f method_7645 updateSellItem + m ()Ldbu; g method_7642 getActiveOffer + m ()I h method_19252 getFutureXp + m (Ldbt;)V +c cre net/minecraft/class_1728 net/minecraft/world/inventory/MerchantMenu + f I k field_30830 PAYMENT1_SLOT + f I l field_30831 PAYMENT2_SLOT + f I m field_30832 RESULT_SLOT + f I n field_30833 INV_SLOT_START + f I o field_30834 INV_SLOT_END + f I p field_30835 USE_ROW_SLOT_START + f I q field_30836 USE_ROW_SLOT_END + f I r field_30837 SELLSLOT1_X + f I s field_30838 SELLSLOT2_X + f I t field_30839 BUYSLOT_X + f I u field_30840 ROW_Y + f Ldbt; v field_7863 trader + f Lcrd; w field_7861 tradeContainer + f I x field_18669 merchantLevel + f Z y field_18670 showProgressBar + f Z z field_19358 canRestock + m (ILdbs;)V a method_20214 moveFromInventoryToPaymentSlot + m (Ldbs;)V a method_57323 method_57323 + m (Ldbv;)V a method_17437 setOffers + m (Z)V a method_19253 setShowProgressBar + m (Z)V b method_20700 setCanRestock + m (I)V e method_7650 setSelectionHint + m (I)V f method_19255 setXp + m (I)V g method_19257 setMerchantLevel + m (I)V h method_20215 tryMoveItems + m ()I l method_19254 getTraderXp + m ()I m method_19256 getFutureTraderXp + m ()I n method_19258 getTraderLevel + m ()Z o method_20701 canRestock + m ()Ldbv; p method_17438 getOffers + m ()Z q method_19259 showProgressBar + m ()V r method_20595 playTradeSound + m (ILcmw;)V + m (ILcmw;Ldbt;)V +c crf net/minecraft/class_1727 net/minecraft/world/inventory/MerchantResultSlot + f Lcrd; a field_7860 slots + f Lcmx; b field_7857 player + f I g field_7859 removeCount + f Ldbt; h field_7858 merchant + m (Lcmx;Ldbt;Lcrd;III)V +c crg net/minecraft/class_8883 net/minecraft/world/inventory/NonInteractiveResultSlot + m (Lbqk;III)V +c crh net/minecraft/class_1730 net/minecraft/world/inventory/PlayerEnderChestContainer + f Ldrd; b field_7864 activeChest + m (Ldrd;)V a method_7661 setActiveChest + m (Ldrd;)Z b method_31556 isActiveChest + m ()V +c cri net/minecraft/class_1729 net/minecraft/world/inventory/RecipeBookMenu + m (Lcnb;)V a method_7654 fillCraftSlotsStackedContents + m (Lczb;)Z a method_7652 recipeMatches + m (ZLczb;Laqv;)V a method_17697 handlePlacement + m ()V an_ method_59963 beginPlacingRecipe + m (Lczb;)V b method_59964 finishPlacingRecipe + m (I)Z e method_32339 shouldMoveToInventory + m ()V l method_7657 clearCraftingContent + m ()I m method_7655 getResultSlotIndex + m ()I n method_7653 getGridWidth + m ()I o method_7656 getGridHeight + m ()I p method_7658 getSize + m ()Lcrj; t method_30264 getRecipeBookType + m (Lcrc;I)V +c crj net/minecraft/class_5421 net/minecraft/world/inventory/RecipeBookType + f Lcrj; a field_25763 CRAFTING + f Lcrj; b field_25764 FURNACE + f Lcrj; c field_25765 BLAST_FURNACE + f Lcrj; d field_25766 SMOKER + f [Lcrj; e field_25767 $VALUES + m ()[Lcrj; a method_36674 $values + m (Ljava/lang/String;I)V + m ()V +c crk net/minecraft/class_1732 net/minecraft/world/inventory/RecipeCraftingHolder + m (Lcmx;Ljava/util/List;)V a method_7664 awardUsedRecipes + m (Lczb;)V a method_7662 setRecipeUsed + m (Ldcw;Laqv;Lczb;)Z a method_7665 setRecipeUsed + m ()Lczb; d method_7663 getRecipeUsed +c crl net/minecraft/class_1731 net/minecraft/world/inventory/ResultContainer + f Ljv; b field_7866 itemStacks + f Lczb; c field_7865 recipeUsed + m ()V +c crm net/minecraft/class_1734 net/minecraft/world/inventory/ResultSlot + f Lcql; a field_7870 craftSlots + f Lcmx; b field_7868 player + f I g field_7869 removeCount + m (Lcmx;Lcql;Lbqk;III)V +c crn net/minecraft/class_1733 net/minecraft/world/inventory/ShulkerBoxMenu + f I k field_30841 CONTAINER_SIZE + f Lbqk; l field_7867 container + m (ILcmw;)V + m (ILcmw;Lbqk;)V +c cro net/minecraft/class_1736 net/minecraft/world/inventory/ShulkerBoxSlot + m (Lbqk;III)V +c crp net/minecraft/class_3919 net/minecraft/world/inventory/SimpleContainerData + f [I a field_17345 ints + m (I)V +c crq net/minecraft/class_1735 net/minecraft/world/inventory/Slot + f I a field_7875 slot + f Lbqk; c field_7871 container + f I d field_7874 index + f I e field_7873 x + f I f field_7872 y + m ()I a method_7675 getMaxStackSize + m (I)Lcuq; a method_7671 remove + m (IILcmx;)Ljava/util/Optional; a method_34264 tryRemove + m (Lcmx;)Z a method_7674 mayPickup + m (Lcmx;Lcuq;)V a method_7667 onTake + m (Lcuq;)Z a method_7680 mayPlace + m (Lcuq;I)V a method_7678 onQuickCraft + m (Lcuq;Lcuq;)V a method_48931 setByPlayer + m (Lcuq;)I a_ method_7676 getMaxStackSize + m ()Lcom/mojang/datafixers/util/Pair; b method_7679 getNoItemIcon + m (I)V b method_7672 onSwapCraft + m (IILcmx;)Lcuq; b method_32753 safeTake + m (Lcmx;)Z b method_32754 allowModification + m (Lcmx;Lcuq;)V b method_34265 method_34265 + m (Lcuq;I)Lcuq; b method_32755 safeInsert + m (Lcuq;Lcuq;)V b method_7670 onQuickCraft + m (Lcuq;)V b_ method_7669 checkTakeAchievements + m ()V c method_7668 setChanged + m ()Z d method_7682 isActive + m (Lcuq;)Lcuq; d method_32756 safeInsert + m ()Z e method_51306 isHighlightable + m (Lcuq;)V e method_53512 setByPlayer + m ()Z f method_55059 isFake + m (Lcuq;)V f method_7673 set + m ()Lcuq; g method_7677 getItem + m ()Z h method_7681 hasItem + m ()I i method_34266 getContainerSlot + m (Lbqk;III)V +c crr net/minecraft/class_9348 net/minecraft/world/inventory/SlotRange + m ()Lit/unimi/dsi/fastutil/ints/IntList; a method_58075 slots + m (Ljava/lang/String;Lit/unimi/dsi/fastutil/ints/IntList;)Lcrr; a method_58076 of + m ()I b method_58077 size +c crr$1 net/minecraft/class_9348$1 net/minecraft/world/inventory/SlotRange$1 + f Lit/unimi/dsi/fastutil/ints/IntList; a field_49742 val$slots + f Ljava/lang/String; b field_49743 val$name + m (Lit/unimi/dsi/fastutil/ints/IntList;Ljava/lang/String;)V +c crs net/minecraft/class_9349 net/minecraft/world/inventory/SlotRanges + f Lcom/mojang/serialization/Codec; a field_49744 CODEC + f Ljava/util/List; b field_49745 SLOTS + f Ljava/util/function/Function; c field_49746 NAME_LOOKUP + m ()Ljava/util/stream/Stream; a method_58078 allNames + m (Lcrr;)Z a method_58079 method_58079 + m (Ljava/lang/String;)Lcrr; a method_58080 nameToIds + m (Ljava/lang/String;I)Lcrr; a method_58081 create + m (Ljava/lang/String;Lit/unimi/dsi/fastutil/ints/IntList;)Lcrr; a method_58082 create + m (Ljava/lang/String;[I)Lcrr; a method_58083 create + m (Ljava/util/ArrayList;)V a method_58084 method_58084 + m (Ljava/util/List;Ljava/lang/String;I)V a method_58085 addSingleSlot + m (Ljava/util/List;Ljava/lang/String;II)V a method_58086 addSlotRange + m (Ljava/util/List;Ljava/lang/String;[I)V a method_58087 addSlots + m ()Ljava/util/stream/Stream; b method_58088 singleSlotNames + m (Ljava/lang/String;)Ljava/lang/String; b method_58089 method_58089 + m ()[Lcrr; c method_58090 method_58090 + m ()V + m ()V +c crt net/minecraft/class_4862 net/minecraft/world/inventory/SmithingMenu + f I k field_41924 TEMPLATE_SLOT + f I l field_41925 BASE_SLOT + f I m field_41926 ADDITIONAL_SLOT + f I n field_41927 RESULT_SLOT + f I s field_41928 TEMPLATE_SLOT_X_PLACEMENT + f I t field_41929 BASE_SLOT_X_PLACEMENT + f I u field_41930 ADDITIONAL_SLOT_X_PLACEMENT + f I v field_41931 SLOT_Y_PLACEMENT + f I w field_41932 RESULT_SLOT_X_PLACEMENT + f Ldcw; x field_25385 level + f Lczb; y field_25386 selectedRecipe + f Ljava/util/List; z field_25668 recipes + m (Lcuq;Lczb;)Ljava/util/stream/IntStream; a method_52562 method_52562 + m (Lczr;Lcuq;)Ljava/util/OptionalInt; a method_48389 findSlotMatchingIngredient + m (Ldcw;Ljd;)V a method_24929 method_24929 + m (Lcuq;Lczb;)Z b method_51713 method_51713 + m (Lcuq;Lczb;)Z c method_51714 method_51714 + m (Lcuq;Lczb;)Z d method_48394 method_48394 + m (I)V e method_29539 shrinkStackInSlot + m (Lcuq;)Ljava/util/OptionalInt; e method_52563 findSlotToQuickMoveTo + m (I)Z f method_52564 method_52564 + m (Lcuq;)Z f method_48393 method_48393 + m (Lcuq;)Z g method_48395 method_48395 + m (Lcuq;)Z h method_48396 method_48396 + m ()Ljava/util/List; n method_51307 getRelevantItems + m ()Lczs; p method_59965 createRecipeInput + m (ILcmw;)V + m (ILcmw;Lcqg;)V +c cru net/minecraft/class_3706 net/minecraft/world/inventory/SmokerMenu + m (ILcmw;)V + m (ILcmw;Lbqk;Lcqf;)V +c crv net/minecraft/class_1737 net/minecraft/world/inventory/StackedContentsCompatible + m (Lcnb;)V a method_7683 fillStackedContents +c crw net/minecraft/class_3971 net/minecraft/world/inventory/StonecutterMenu + f Lcrl; A field_19173 resultContainer + f I k field_30842 INPUT_SLOT + f I l field_30843 RESULT_SLOT + f Lcrq; m field_17627 inputSlot + f Lcrq; n field_17628 resultSlot + f Lbqk; o field_17629 container + f I p field_30844 INV_SLOT_START + f I q field_30845 INV_SLOT_END + f I r field_30846 USE_ROW_SLOT_START + f I s field_30847 USE_ROW_SLOT_END + f Lcqg; t field_17630 access + f Lcqn; u field_17631 selectedRecipeIndex + f Ldcw; v field_17632 level + f Ljava/util/List; w field_17633 recipes + f Lcuq; x field_17634 input + f J y field_17635 lastSoundTime + f Ljava/lang/Runnable; z field_17636 slotUpdateListener + m (Lbqk;Lcuq;)V a method_17855 setupRecipeList + m (Lcmx;Ldcw;Ljd;)V a method_17856 method_17856 + m (Ljava/lang/Runnable;)V a method_17859 registerUpdateListener + m (Lbqk;)Lczp; c method_59966 createRecipeInput + m (I)Z e method_30160 isValidRecipeIndex + m ()I l method_17862 getSelectedRecipeIndex + m ()Ljava/util/List; m method_17863 getRecipes + m ()I n method_17864 getNumRecipes + m ()Z o method_17865 hasInputItem + m ()V p method_17866 setupResultSlot + m ()V q method_17867 method_17867 + m (ILcmw;)V + m (ILcmw;Lcqg;)V +c crw$1 net/minecraft/class_3971$1 net/minecraft/world/inventory/StonecutterMenu$1 + f Lcrw; b field_17637 field_17637 + m (Lcrw;I)V +c crw$2 net/minecraft/class_3971$2 net/minecraft/world/inventory/StonecutterMenu$2 + f Lcqg; a field_17638 val$access + f Lcrw; b field_17639 field_17639 + m (Ldcw;Ljd;)V a method_17868 method_17868 + m ()Ljava/util/List; j method_51308 getRelevantItems + m (Lcrw;Lbqk;IIILcqg;)V +c crx net/minecraft/class_1715 net/minecraft/world/inventory/TransientCraftingContainer + f Ljv; b field_7805 items + f I c field_7804 width + f I d field_7803 height + f Lcpu; e field_7802 menu + m (Lcpu;II)V + m (Lcpu;IILjv;)V +c cry net/minecraft/class_6077 net/minecraft/world/inventory/package-info +c crz net/minecraft/class_5631 net/minecraft/world/inventory/tooltip/BundleTooltip + f Lcxf; a comp_2377 contents + m ()Lcxf; a comp_2377 contents + m (Lcxf;)V +c csa net/minecraft/class_5632 net/minecraft/world/inventory/tooltip/TooltipComponent +c csb net/minecraft/class_6078 net/minecraft/world/inventory/tooltip/package-info +c csc net/minecraft/class_6538 net/minecraft/world/item/AdventureModePredicate + f Lcom/mojang/serialization/Codec; a field_49245 CODEC + f Lyx; b field_49246 STREAM_CODEC + f Lwz; c field_49247 CAN_BREAK_HEADER + f Lwz; d field_49248 CAN_PLACE_HEADER + f Lcom/mojang/serialization/Codec; e field_49249 SIMPLE_CODEC + f Lcom/mojang/serialization/Codec; f field_49250 FULL_CODEC + f Lwz; g field_49251 UNKNOWN_USE + f Ljava/util/List; h field_49252 predicates + f Z i field_49253 showInTooltip + f Ljava/util/List; j field_49254 tooltip + f Ldtg; k field_34450 lastCheckedBlock + f Z l field_34451 lastResult + f Z m field_34452 checksBlockEntity + m ()Z a method_57324 showInTooltip + m (Law;)Ljava/util/stream/Stream; a method_57325 method_57325 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57326 method_57326 + m (Lcsc;)Ljava/util/List; a method_57327 method_57327 + m (Ldtg;)Z a method_38070 test + m (Ldtg;Ldtg;Z)Z a method_38071 areSameBlocks + m (Ljava/util/List;)Ljava/util/List; a method_57329 computeTooltip + m (Ljava/util/function/Consumer;)V a method_57330 addToTooltip + m (Ljm;)Lwz; a method_57328 method_57328 + m (Z)Lcsc; a method_58402 withTooltip + m ()Ljava/lang/String; b method_57331 method_57331 + m (Law;)Lcsc; b method_57332 method_57332 + m (Lcsc;)Ljava/util/List; b method_57333 method_57333 + m (Lcsc;)Lcom/mojang/serialization/DataResult; c method_57334 method_57334 + m (Ljava/util/List;ZLjava/util/List;)V + m (Ljava/util/List;Z)V + m ()V +c csd net/minecraft/class_1739 net/minecraft/world/item/AirItem + f Ldfy; a field_7882 block + m (Ldfy;Lcul$a;)V +c cse net/minecraft/class_4059 net/minecraft/world/item/AnimalArmorItem + f Lakr; j field_47823 textureLocation + f Lakr; k field_49255 overlayTextureLocation + f Lcse$a; l field_47824 bodyType + m ()Lakr; b method_18454 getTexture + m ()Lakr; c method_57335 getOverlayTexture + m ()Lcse$a; d method_55756 getBodyType + m (Ljm;Lcse$a;ZLcul$a;)V +c cse$a net/minecraft/class_4059$class_9076 net/minecraft/world/item/AnimalArmorItem$BodyType + f Lcse$a; a field_47825 EQUESTRIAN + f Lcse$a; b field_47826 CANINE + f Ljava/util/function/Function; c field_47827 textureLocator + f Lavo; d field_49256 breakingSound + f [Lcse$a; e field_47828 $VALUES + m ()[Lcse$a; a method_55757 $values + m (Lakr;)Lakr; a method_56686 method_56686 + m (Ljava/lang/String;)Ljava/lang/String; a method_56687 method_56687 + m (Lakr;)Lakr; b method_56688 method_56688 + m (Ljava/lang/String;ILjava/util/function/Function;Lavo;)V + m ()V +c csf net/minecraft/class_1738 net/minecraft/world/item/ArmorItem + f Lkx; a field_7879 DISPENSE_ITEM_BEHAVIOR + f Lcsf$a; b field_41933 type + f Ljm; c field_7881 material + f Ljava/util/function/Supplier; j field_23741 defaultModifiers + m (Ljm;Lcsf$a;)Lcxn; a method_56689 method_56689 + m (Lku;Lcuq;)Z a method_7684 dispenseArmor + m ()Lcsf$a; f method_48398 getType + m ()Ljm; h method_7686 getMaterial + m ()I k method_7687 getDefense + m ()F l method_26353 getToughness + m (Ljm;Lcsf$a;Lcul$a;)V + m ()V +c csf$1 net/minecraft/class_1738$1 net/minecraft/world/item/ArmorItem$1 + m ()V +c csf$a net/minecraft/class_1738$class_8051 net/minecraft/world/item/ArmorItem$Type + f Lcsf$a; a field_41934 HELMET + f Lcsf$a; b field_41935 CHESTPLATE + f Lcsf$a; c field_41936 LEGGINGS + f Lcsf$a; d field_41937 BOOTS + f Lcsf$a; e field_48838 BODY + f Lcom/mojang/serialization/Codec; f field_48839 CODEC + f Lbsy; g field_41938 slot + f Ljava/lang/String; h field_41939 name + f I i field_49257 durability + f [Lcsf$a; j field_41940 $VALUES + m ()Lbsy; a method_48399 getSlot + m (I)I a method_56690 getDurability + m ()Ljava/lang/String; b method_48400 getName + m ()Z d method_56691 hasTrims + m ()[Lcsf$a; e method_48401 $values + m (Ljava/lang/String;ILbsy;ILjava/lang/String;)V + m ()V +c csg net/minecraft/class_1741 net/minecraft/world/item/ArmorMaterial + f Lcom/mojang/serialization/Codec; a field_48840 CODEC + f Ljava/util/Map; b comp_2298 defense + f I c comp_2299 enchantmentValue + f Ljm; d comp_2300 equipSound + f Ljava/util/function/Supplier; e comp_2301 repairIngredient + f Ljava/util/List; f comp_2302 layers + f F g comp_2303 toughness + f F h comp_2304 knockbackResistance + m ()Ljava/util/Map; a comp_2298 defense + m (Lcsf$a;)I a method_48403 getDefense + m ()I b comp_2299 enchantmentValue + m ()Ljm; c comp_2300 equipSound + m ()Ljava/util/function/Supplier; d comp_2301 repairIngredient + m ()Ljava/util/List; e comp_2302 layers + m ()F f comp_2303 toughness + m ()F g comp_2304 knockbackResistance + m (Ljava/util/Map;ILjm;Ljava/util/function/Supplier;Ljava/util/List;FF)V + m ()V +c csg$a net/minecraft/class_1741$class_9196 net/minecraft/world/item/ArmorMaterial$Layer + f Lakr; a field_48841 assetName + f Ljava/lang/String; b field_48842 suffix + f Z c field_48843 dyeable + f Lakr; d field_48844 innerTexture + f Lakr; e field_48845 outerTexture + m ()Z a method_56692 dyeable + m (Z)Lakr; a method_56693 texture + m (ZLjava/lang/String;)Ljava/lang/String; a method_56694 method_56694 + m (Z)Lakr; b method_56695 resolveTexture + m (Lakr;Ljava/lang/String;Z)V + m (Lakr;)V +c csh net/minecraft/class_1740 net/minecraft/world/item/ArmorMaterials + f Ljm; a field_7897 LEATHER + f Ljm; b field_7887 CHAIN + f Ljm; c field_7892 IRON + f Ljm; d field_7895 GOLD + f Ljm; e field_7889 DIAMOND + f Ljm; f field_7890 TURTLE + f Ljm; g field_21977 NETHERITE + f Ljm; h field_48846 ARMADILLO + m ()Lcyw; a method_56696 method_56696 + m (Ljava/lang/String;Ljava/util/EnumMap;ILjm;FFLjava/util/function/Supplier;)Ljm; a method_56698 register + m (Ljava/lang/String;Ljava/util/EnumMap;ILjm;FFLjava/util/function/Supplier;Ljava/util/List;)Ljm; a method_56699 register + m (Ljava/util/EnumMap;)V a method_48405 method_48405 + m (Ljz;)Ljm; a method_56697 bootstrap + m ()Lcyw; b method_24356 method_24356 + m (Ljava/util/EnumMap;)V b method_48406 method_48406 + m ()Lcyw; c method_7693 method_7693 + m (Ljava/util/EnumMap;)V c method_48407 method_48407 + m ()Lcyw; d method_7692 method_7692 + m (Ljava/util/EnumMap;)V d method_48408 method_48408 + m ()Lcyw; e method_7691 method_7691 + m (Ljava/util/EnumMap;)V e method_48409 method_48409 + m ()Lcyw; f method_7689 method_7689 + m (Ljava/util/EnumMap;)V f method_48410 method_48410 + m ()Lcyw; g method_7690 method_7690 + m (Ljava/util/EnumMap;)V g method_48411 method_48411 + m ()Lcyw; h method_7688 method_7688 + m (Ljava/util/EnumMap;)V h method_48412 method_48412 + m ()V + m ()V +c csi net/minecraft/class_1742 net/minecraft/world/item/ArmorStandItem + m (Lcul$a;)V +c csj net/minecraft/class_1744 net/minecraft/world/item/ArrowItem + m (Ldcw;Lcuq;Lbtn;Lcuq;)Lcnd; a method_7702 createArrow + m (Lcul$a;)V +c csk net/minecraft/class_1743 net/minecraft/world/item/AxeItem + f Ljava/util/Map; a field_7898 STRIPPABLES + m (Ldcw;Ljd;Lcmx;Ldtc;)Ljava/util/Optional; a method_54760 evaluateNewBlockState + m (Ldtc;)Ljava/util/Optional; a method_34716 getStripped + m (Ldtc;Ldfy;)Ldtc; a method_34717 method_34717 + m (Lcyf;)Z b method_59967 playerHasShieldUseIntent + m (Ldtc;Ldfy;)Ldtc; b method_54761 method_54761 + m (Lcwi;Lcul$a;)V + m ()V +c csl net/minecraft/class_1746 net/minecraft/world/item/BannerItem + m (Lcuq;Ljava/util/List;)V a method_7705 appendHoverTextFromBannerBlockEntityTag + m ()Lcti; b method_7706 getColor + m (Ldfy;Ldfy;Lcul$a;)V +c csm net/minecraft/class_1745 net/minecraft/world/item/BannerPatternItem + f Lawu; a field_7900 bannerPattern + m ()Lawu; b method_7704 getBannerPattern + m ()Lxn; c method_7703 getDisplayName + m (Lawu;Lcul$a;)V +c csn net/minecraft/class_1748 net/minecraft/world/item/BedItem + m (Ldfy;Lcul$a;)V +c cso net/minecraft/class_1747 net/minecraft/world/item/BlockItem + f Ldfy; a field_7901 block + m (Lcuq;Ldqj;Lub;)V a method_57338 setBlockEntityData + m (Lcyd;)Lbqr; a method_7712 place + m (Lcyd;Ldtc;)Z a method_7708 placeBlock + m (Ldcw;Lcmx;Ljd;Lcuq;)Z a method_7714 updateCustomBlockEntityTag + m (Ldcw;Ljd;Lcuq;)V a method_57339 updateBlockEntityComponents + m (Ldtc;)Lavo; a method_19260 getPlaceSound + m (Ljava/util/Map;Lcul;)V a method_7713 registerBlocks + m (Ljd;Ldcw;Lcmx;Lcuq;Ldtc;)Z a method_7710 updateCustomBlockEntityTag + m (Ljd;Ldcw;Lcuq;Ldtc;)Ldtc; a method_18084 updateBlockStateFromTag + m (Lcyd;)Lcyd; b method_16356 updatePlacementContext + m (Lcyd;Ldtc;)Z b method_7709 canPlace + m ()Z c method_20360 mustSurvive + m (Lcyd;)Ldtc; c method_7707 getPlacementState + m ()Ldfy; d method_7711 getBlock + m (Ldfy;Lcul$a;)V +c csp net/minecraft/class_1749 net/minecraft/world/item/BoatItem + f Ljava/util/function/Predicate; a field_17497 ENTITY_PREDICATE + f Lcov$b; b field_7902 type + f Z c field_38211 hasChest + m (Ldcw;Lexa;Lcuq;Lcmx;)Lcov; a method_42296 getBoat + m (ZLcov$b;Lcul$a;)V + m ()V +c csq net/minecraft/class_1752 net/minecraft/world/item/BoneMealItem + f I a field_30851 GRASS_SPREAD_WIDTH + f I b field_30852 GRASS_SPREAD_HEIGHT + f I c field_30853 GRASS_COUNT_MULTIPLIER + m (Lcuq;Ldcw;Ljd;)Z a method_7720 growCrop + m (Lcuq;Ldcw;Ljd;Lji;)Z a method_7719 growWaterPlant + m (Ldcx;Ljd;I)V a method_7721 addGrowthParticles + m (Ldtb$a;)Z a method_40006 method_40006 + m (Ljm;)Ldtc; a method_40128 method_40128 + m (Ljm;)Ldtc; b method_40130 method_40130 + m (Lcul$a;)V +c csq$1 net/minecraft/class_1752$1 net/minecraft/world/item/BoneMealItem$1 + f [I a field_47829 $SwitchMap$net$minecraft$world$level$block$BonemealableBlock$Type + m ()V +c csr net/minecraft/class_1751 net/minecraft/world/item/BookItem + m (Lcul$a;)V +c css net/minecraft/class_1754 net/minecraft/world/item/BottleItem + m (Lbsn;)Z a method_7726 method_7726 + m (Lcuq;Lcmx;Lcuq;)Lcuq; a method_7725 turnBottleIntoItem + m (Lcul$a;)V +c cst net/minecraft/class_1753 net/minecraft/world/item/BowItem + f I a field_30855 MAX_DRAW_DURATION + f I b field_30856 DEFAULT_RANGE + m (I)F a method_7722 getPowerForTime + m (Lcul$a;)V +c csu net/minecraft/class_8162 net/minecraft/world/item/BrushItem + f I a field_43390 ANIMATION_DURATION + f I b field_42683 USE_DURATION + m (Lbsr;)Z a method_51309 method_51309 + m (Lcmx;)Lexa; a method_49999 calculateHitResult + m (Ldcw;Lewy;Ldtc;Lexc;Lbtg;)V a method_49184 spawnDustParticles + m (Lcul$a;)V +c csu$1 net/minecraft/class_8162$1 net/minecraft/world/item/BrushItem$1 + f [I a field_42684 $SwitchMap$net$minecraft$core$Direction + m ()V +c csu$a net/minecraft/class_8162$class_8163 net/minecraft/world/item/BrushItem$DustParticlesDelta + f D a comp_1286 xd + f D b comp_1287 yd + f D c comp_1288 zd + f D d field_42685 ALONG_SIDE_DELTA + f D e field_42686 OUT_FROM_SIDE_DELTA + m ()D a comp_1286 xd + m (Lexc;Lji;)Lcsu$a; a method_49185 fromDirection + m ()D b comp_1287 yd + m ()D c comp_1288 zd + m (DDD)V +c csv net/minecraft/class_1755 net/minecraft/world/item/BucketItem + f Lepd; a field_7905 content + m (Lcmx;Lavo;)V a method_32342 method_32342 + m (Lcmx;Ldcx;Ljd;)V a method_7727 playEmptySound + m (Lcuq;Lcmx;)Lcuq; a method_7732 getEmptySuccessItem + m (Lepd;Lcul$a;)V +c csw net/minecraft/class_5537 net/minecraft/world/item/BundleItem + f I a field_27016 BAR_COLOR + f I b field_51352 TOOLTIP_MAX_WEIGHT + m (Lbsr;)V a method_38074 playRemoveOneSound + m (Lcmx;Lcuq;)V a method_57341 method_57341 + m (Lcuq;Lcmx;)Z a method_32757 dropContents + m (Lbsr;)V b method_38076 playInsertSound + m (Lbsr;)V c method_38077 playDropContentsSound + m (Lcuq;)F c method_31561 getFullnessDisplay + m (Lcul$a;)V + m ()V +c csx net/minecraft/class_1757 net/minecraft/world/item/ChorusFruitItem + m (Lcul$a;)V +c csy net/minecraft/class_1759 net/minecraft/world/item/CompassItem + m (Ldcw;)Ljl; a method_43123 getSpawnPosition + m (Lcul$a;)V +c csz net/minecraft/class_1762 net/minecraft/world/item/ComplexItem + m (Lcuq;Ldcw;Lcmx;)Lzg; a method_7757 getUpdatePacket + m (Lcul$a;)V +c cta net/minecraft/class_1761 net/minecraft/world/item/CreativeModeTab + f Lakr; a field_52021 DEFAULT_BACKGROUND + f Lwz; b field_26391 displayName + f Lakr; c field_7919 backgroundTexture + f Z d field_7920 canScroll + f Z e field_7917 showTitle + f Z f field_41031 alignedRight + f Lcta$f; g field_41032 row + f I h field_41033 column + f Lcta$h; i field_41034 type + f Lcuq; j field_7934 iconItemStack + f Ljava/util/Collection; k field_40859 displayItems + f Ljava/util/Set; l field_40860 displayItemsSearchTab + f Ljava/util/function/Supplier; m field_41036 iconGenerator + f Lcta$b; n field_41037 displayItemsGenerator + m ()Lwz; a method_7737 getDisplayName + m (Lcta$d;)V a method_47306 buildContents + m (Lcta$f;I)Lcta$a; a method_47307 builder + m (Lcuq;)Z a method_45412 contains + m (Ljava/lang/String;)Lakr; a method_60733 createTextureLocation + m ()Lcuq; b method_7747 getIconItem + m ()Lakr; c method_7742 getBackgroundTexture + m ()Z d method_7754 showTitle + m ()Z e method_7756 canScroll + m ()I f method_7743 column + m ()Lcta$f; g method_47309 row + m ()Z h method_47310 hasAnyItems + m ()Z i method_47311 shouldDisplay + m ()Z j method_7752 isAlignedRight + m ()Lcta$h; k method_47312 getType + m ()Ljava/util/Collection; l method_47313 getDisplayItems + m ()Ljava/util/Collection; m method_45414 getSearchTabDisplayItems + m ()Ljava/lang/IllegalStateException; n method_51310 method_51310 + m (Lcta$f;ILcta$h;Lwz;Ljava/util/function/Supplier;Lcta$b;)V + m ()V +c cta$a net/minecraft/class_1761$class_7913 net/minecraft/world/item/CreativeModeTab$Builder + f Lcta$b; a field_41038 EMPTY_GENERATOR + f Lcta$f; b field_41039 row + f I c field_41040 column + f Lwz; d field_41041 displayName + f Ljava/util/function/Supplier; e field_41042 iconGenerator + f Lcta$b; f field_41043 displayItemsGenerator + f Z g field_41044 canScroll + f Z h field_41045 showTitle + f Z i field_41046 alignedRight + f Lcta$h; j field_41047 type + f Lakr; k field_41048 backgroundTexture + m ()Lcta$a; a method_47315 alignedRight + m (Lakr;)Lcta$a; a method_47319 backgroundTexture + m (Lcta$b;)Lcta$a; a method_47317 displayItems + m (Lcta$d;Lcta$e;)V a method_47316 method_47316 + m (Lcta$h;)Lcta$a; a method_47318 type + m (Ljava/util/function/Supplier;)Lcta$a; a method_47320 icon + m (Lwz;)Lcta$a; a method_47321 title + m ()Lcta$a; b method_47322 hideTitle + m ()Lcta$a; c method_47323 noScrollBar + m ()Lcta; d method_47324 build + m ()Lcuq; e method_47325 method_47325 + m (Lcta$f;I)V + m ()V +c cta$b net/minecraft/class_1761$class_7914 net/minecraft/world/item/CreativeModeTab$DisplayItemsGenerator +c cta$c net/minecraft/class_1761$class_7703 net/minecraft/world/item/CreativeModeTab$ItemDisplayBuilder + f Ljava/util/Collection; a field_40187 tabContents + f Ljava/util/Set; b field_40188 searchTabContents + f Lcta; c field_40189 tab + f Lcpl; d field_40190 featureFlagSet + m (Lcta;Lcpl;)V +c cta$d net/minecraft/class_1761$class_8128 net/minecraft/world/item/CreativeModeTab$ItemDisplayParameters + f Lcpl; a comp_1251 enabledFeatures + f Z b comp_1252 hasPermissions + f Ljo$a; c comp_1253 holders + m ()Lcpl; a comp_1251 enabledFeatures + m (Lcpl;ZLjo$a;)Z a method_48932 needsUpdate + m ()Z b comp_1252 hasPermissions + m ()Ljo$a; c comp_1253 holders + m (Lcpl;ZLjo$a;)V +c cta$e net/minecraft/class_1761$class_7704 net/minecraft/world/item/CreativeModeTab$Output + m (Lcta$g;Lcuq;)V a method_45419 method_45419 + m (Lcuq;)V a method_45420 accept + m (Lcuq;Lcta$g;)V a method_45417 accept + m (Ldcv;)V a method_45421 accept + m (Ldcv;Lcta$g;)V a method_45422 accept + m (Ljava/util/Collection;)V a method_45423 acceptAll + m (Ljava/util/Collection;Lcta$g;)V a method_45424 acceptAll +c cta$f net/minecraft/class_1761$class_7915 net/minecraft/world/item/CreativeModeTab$Row + f Lcta$f; a field_41049 TOP + f Lcta$f; b field_41050 BOTTOM + f [Lcta$f; c field_41051 $VALUES + m ()[Lcta$f; a method_47326 $values + m (Ljava/lang/String;I)V + m ()V +c cta$g net/minecraft/class_1761$class_7705 net/minecraft/world/item/CreativeModeTab$TabVisibility + f Lcta$g; a field_40191 PARENT_AND_SEARCH_TABS + f Lcta$g; b field_40192 PARENT_TAB_ONLY + f Lcta$g; c field_40193 SEARCH_TAB_ONLY + f [Lcta$g; d field_40194 $VALUES + m ()[Lcta$g; a method_45425 $values + m (Ljava/lang/String;I)V + m ()V +c cta$h net/minecraft/class_1761$class_7916 net/minecraft/world/item/CreativeModeTab$Type + f Lcta$h; a field_41052 CATEGORY + f Lcta$h; b field_41053 INVENTORY + f Lcta$h; c field_41054 HOTBAR + f Lcta$h; d field_41055 SEARCH + f [Lcta$h; e field_41056 $VALUES + m ()[Lcta$h; a method_47327 $values + m (Ljava/lang/String;I)V + m ()V +c ctb net/minecraft/class_7706 net/minecraft/world/item/CreativeModeTabs + f Lakr; a field_52022 INVENTORY_BACKGROUND + f Lakr; b field_52023 SEARCH_BACKGROUND + f Lakq; c field_40195 BUILDING_BLOCKS + f Lakq; d field_41059 COLORED_BLOCKS + f Lakq; e field_40743 NATURAL_BLOCKS + f Lakq; f field_40197 FUNCTIONAL_BLOCKS + f Lakq; g field_40198 REDSTONE_BLOCKS + f Lakq; h field_40199 HOTBAR + f Lakq; i field_40200 SEARCH + f Lakq; j field_41060 TOOLS_AND_UTILITIES + f Lakq; k field_40202 COMBAT + f Lakq; l field_41061 FOOD_AND_DRINKS + f Lakq; m field_41062 INGREDIENTS + f Lakq; n field_40205 SPAWN_EGGS + f Lakq; o field_41063 OP_BLOCKS + f Lakq; p field_40206 INVENTORY + f Ljava/util/Comparator; q field_42465 PAINTING_COMPARATOR + f Lcta$d; r field_42466 CACHED_PARAMETERS + m ()V a method_47334 validate + m (Lakp;Lcta$e;Lcta$g;Ljm$c;)V a method_48935 method_48935 + m (Lcpl;Ljm$c;)Z a method_58650 method_58650 + m (Lcpl;ZLjo$a;)Z a method_47330 tryRebuildTabContents + m (Lcta$d;)V a method_47337 buildAllTabContents + m (Lcta$d;Lcta$e;)V a method_51311 method_51311 + m (Lcta$d;Lcta;)V a method_47331 method_47331 + m (Lcta$e;Lcta$d;Ljo$b;)V a method_51312 method_51312 + m (Lcta$e;Lcta$g;)V a method_47332 generateSuspiciousStews + m (Lcta$e;Lcta$g;Lcuq;)V a method_48934 method_48934 + m (Lcta$e;Ljo$a;Ljo$b;Ljava/util/function/Predicate;Lcta$g;)V a method_48937 generatePresetPaintings + m (Lcta$e;Ljo$b;)V a method_51313 method_51313 + m (Lcta$e;Ljo;Lcta$g;)V a method_45428 generateEnchantmentBookTypesOnlyMaxLevel + m (Lcta$e;Ljo;Lcul;Lawu;Lcta$g;)V a method_45426 generateInstrumentTypes + m (Lcta$e;Ljo;Lcul;Lcta$g;Lcpl;)V a method_45427 generatePotionEffectTypes + m (Lcta;)Z a method_47333 method_47333 + m (Lcul;Lcta$e;Lcta$g;Ljq$c;)V a method_48939 method_48939 + m (Lcul;Ljm$c;)Lcuq; a method_48940 method_48940 + m (Lcul;Ljm;)Lcuq; a method_48941 method_48941 + m (Ljava/lang/String;)Lakq; a method_51317 createKey + m (Ljm$c;)Ljava/util/stream/Stream; a method_59969 method_59969 + m (Ljm$c;I)Lcuq; a method_59970 method_59970 + m (Ljm;)Z a method_51314 method_51314 + m (Ljz;)Lcta; a method_51315 bootstrap + m (Ljz;Lcta$d;Lcta$e;)V a method_51316 method_51316 + m (Lub;)V a method_58091 method_58091 + m ()Lcta; b method_47328 getDefaultTab + m (Lcta$d;Lcta$e;)V b method_51318 method_51318 + m (Lcta$d;Lcta;)V b method_47338 method_47338 + m (Lcta$e;Lcta$d;Ljo$b;)V b method_51319 method_51319 + m (Lcta$e;Lcta$g;)V b method_58652 generateOminousVials + m (Lcta$e;Lcta$g;Lcuq;)V b method_48947 method_48947 + m (Lcta$e;Ljo$b;)V b method_51324 method_51324 + m (Lcta$e;Ljo;Lcta$g;)V b method_45430 generateEnchantmentBookTypesAllLevels + m (Lcta;)Z b method_47340 method_47340 + m (Ljm$c;)Lcuq; b method_59972 method_59972 + m (Ljm;)Z b method_51320 method_51320 + m ()Ljava/util/List; c method_47335 tabs + m (Lcta$d;Lcta$e;)V c method_51321 method_51321 + m (Lcta$e;Lcta$d;Ljo$b;)V c method_51322 method_51322 + m (Lcta$e;Lcta$g;)V c method_47339 generateFireworksAllDurations + m (Lcta$e;Lcta$g;Lcuq;)V c method_48952 method_48952 + m ()Ljava/util/List; d method_47341 allTabs + m (Lcta$d;Lcta$e;)V d method_51323 method_51323 + m (Lcta$e;Lcta$d;Ljo$b;)V d method_51326 method_51326 + m (Lcta$e;Lcta$g;Lcuq;)V d method_48954 method_48954 + m ()Lcta; e method_47344 searchTab + m (Lcta$d;Lcta$e;)V e method_51325 method_51325 + m ()Ljava/util/stream/Stream; f method_51327 streamAllTabs + m (Lcta$d;Lcta$e;)V f method_51328 method_51328 + m ()Lcuq; g method_51329 method_51329 + m (Lcta$d;Lcta$e;)V g method_51330 method_51330 + m ()Lcuq; h method_51331 method_51331 + m (Lcta$d;Lcta$e;)V h method_51332 method_51332 + m ()Lcuq; i method_51333 method_51333 + m (Lcta$d;Lcta$e;)V i method_51334 method_51334 + m ()Lcuq; j method_51335 method_51335 + m (Lcta$d;Lcta$e;)V j method_51336 method_51336 + m ()Lcuq; k method_51337 method_51337 + m (Lcta$d;Lcta$e;)V k method_51338 method_51338 + m ()Lcuq; l method_51339 method_51339 + m ()Lcuq; m method_51340 method_51340 + m ()Lcuq; n method_51341 method_51341 + m ()Lcuq; o method_51342 method_51342 + m ()Lcuq; p method_51343 method_51343 + m ()Lcuq; q method_51344 method_51344 + m ()Lcuq; r method_51345 method_51345 + m ()Lcuq; s method_51346 method_51346 + m ()Lcuq; t method_51347 method_51347 + m ()V + m ()V +c ctc net/minecraft/class_1764 net/minecraft/world/item/CrossbowItem + f I a field_30863 DEFAULT_RANGE + f F b field_49258 MOB_ARROW_POWER + f F k field_30866 MAX_CHARGE_DURATION + f Z l field_7937 startSoundPlayed + f Z m field_7936 midLoadSoundPlayed + f F n field_30867 START_SOUND_PERCENT + f F o field_30868 MID_SOUND_PERCENT + f F p field_30869 ARROW_POWER + f F q field_30870 FIREWORK_POWER + f Lctc$a; r field_51626 DEFAULT_SOUNDS + m (ILcuq;Lbtn;)F a method_7770 getPowerForTime + m (Layw;I)F a method_57342 getShotPitch + m (Lbtn;Lcuq;)Z a method_7767 tryLoadProjectiles + m (Lbtn;Lexc;F)Lorg/joml/Vector3f; a method_57343 getProjectileShotVector + m (Lcxg;)F a method_20309 getShootingPower + m (Ldcw;Lbtn;Lbqq;Lcuq;FFLbtn;)V a method_7777 performShooting + m (Ldcw;Lbtn;Ljm;)V a method_59973 method_59973 + m (ZLayw;)F a method_7784 getRandomShotPitch + m (Lcuq;Lbtn;)I b method_7775 getChargeDuration + m (Ldcw;Lbtn;Ljm;)V b method_59974 method_59974 + m (Ldcw;Lbtn;Ljm;)V c method_59975 method_59975 + m (Lcuq;)Z i method_7781 isCharged + m (Lcuq;)Lctc$a; k method_59976 getChargingSounds + m (Lcul$a;)V + m ()V +c ctc$a net/minecraft/class_1764$class_9693 net/minecraft/world/item/CrossbowItem$ChargingSounds + f Lcom/mojang/serialization/Codec; a field_51627 CODEC + f Ljava/util/Optional; b comp_2673 start + f Ljava/util/Optional; c comp_2674 mid + f Ljava/util/Optional; d comp_2675 end + m ()Ljava/util/Optional; a comp_2673 start + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59977 method_59977 + m ()Ljava/util/Optional; b comp_2674 mid + m ()Ljava/util/Optional; c comp_2675 end + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ctd net/minecraft/class_1763 net/minecraft/world/item/DebugStickItem + m (Lcmx;Ldtc;Ldcx;Ljd;ZLcuq;)Z a method_7759 handleInteraction + m (Lcmx;Lwz;)V a method_7762 message + m (Ldtc;Lduf;)Ljava/lang/String; a method_7761 getNameHelper + m (Ldtc;Lduf;Z)Ldtc; a method_7758 cycleState + m (Ljava/lang/Iterable;Ljava/lang/Object;Z)Ljava/lang/Object; a method_7760 getRelative + m (Lcul$a;)V +c cte net/minecraft/class_1766 net/minecraft/world/item/DiggerItem + m (Lcwi;FF)Lcxn; a method_57346 createAttributes + m (Lcwi;Lawu;Lcul$a;)V +c ctf net/minecraft/class_7409 net/minecraft/world/item/DiscFragmentItem + m ()Lxn; c method_43408 getDisplayName + m (Lcul$a;)V +c ctg net/minecraft/class_5633 net/minecraft/world/item/DispensibleContainerItem + m (Lcmx;Ldcw;Lcuq;Ljd;)V a method_7728 checkExtraContent + m (Lcmx;Ldcw;Ljd;Lewy;)Z a method_7731 emptyContents +c cth net/minecraft/class_1765 net/minecraft/world/item/DoubleHighBlockItem + m (Ldfy;Lcul$a;)V +c cti net/minecraft/class_1767 net/minecraft/world/item/DyeColor + f [Lcti; A field_7953 $VALUES + f Lcti; a field_7952 WHITE + f Lcti; b field_7946 ORANGE + f Lcti; c field_7958 MAGENTA + f Lcti; d field_7951 LIGHT_BLUE + f Lcti; e field_7947 YELLOW + f Lcti; f field_7961 LIME + f Lcti; g field_7954 PINK + f Lcti; h field_7944 GRAY + f Lcti; i field_7967 LIGHT_GRAY + f Lcti; j field_7955 CYAN + f Lcti; k field_7945 PURPLE + f Lcti; l field_7966 BLUE + f Lcti; m field_7957 BROWN + f Lcti; n field_7942 GREEN + f Lcti; o field_7964 RED + f Lcti; p field_7963 BLACK + f Lazk$a; q field_41600 CODEC + f Lyx; r field_49259 STREAM_CODEC + f Ljava/util/function/IntFunction; s field_7959 BY_ID + f Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap; t field_7950 BY_FIREWORK_COLOR + f I u field_7965 id + f Ljava/lang/String; v field_7948 name + f Lepi; w field_7956 mapColor + f I x field_7943 textureDiffuseColor + f I y field_7960 fireworkColor + f I z field_16537 textColor + m ()I a method_7789 getId + m (I)Lcti; a method_7791 byId + m (Lcti;)Lcti; a method_7797 method_7797 + m (Ljava/lang/String;Lcti;)Lcti; a method_7793 byName + m ()Ljava/lang/String; b method_7792 getName + m (I)Lcti; b method_7786 byFireworkColor + m (Lcti;)Ljava/lang/Integer; b method_7795 method_7795 + m ()I d method_7787 getTextureDiffuseColor + m ()Lepi; e method_7794 getMapColor + m ()I f method_7790 getFireworkColor + m ()I g method_16357 getTextColor + m ()[Lcti; h method_36676 $values + m (Ljava/lang/String;IILjava/lang/String;ILepi;II)V + m ()V +c ctj net/minecraft/class_1769 net/minecraft/world/item/DyeItem + f Ljava/util/Map; a field_7968 ITEM_BY_COLOR + f Lcti; b field_7969 dyeColor + m (Lcti;)Lctj; a method_7803 byColor + m (Ldrt;)Ldrt; a method_49799 method_49799 + m ()Lcti; c method_7802 getDyeColor + m (Lcti;Lcul$a;)V + m ()V +c ctk net/minecraft/class_1771 net/minecraft/world/item/EggItem + m (Lcul$a;)V +c ctl net/minecraft/class_9791 net/minecraft/world/item/EitherHolder + f Ljava/util/Optional; a comp_2831 holder + f Lakq; b comp_2832 key + m ()Lcom/mojang/datafixers/util/Either; a method_60734 asEither + m (Lakq;)Lcom/mojang/serialization/DataResult; a method_60735 method_60735 + m (Lakq;Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_60736 codec + m (Lakq;Lyx;)Lyx; a method_60737 streamCodec + m (Lcom/mojang/datafixers/util/Either;)Lctl; a method_60738 fromEither + m (Ljo$a;)Ljava/util/Optional; a method_60739 unwrap + m (Ljz;)Ljava/util/Optional; a method_60740 unwrap + m ()Ljava/util/Optional; b comp_2831 holder + m (Ljo$a;)Ljava/util/Optional; b method_60741 method_60741 + m (Ljz;)Ljava/util/Optional; b method_60742 method_60742 + m ()Lakq; c comp_2832 key + m ()Lcom/mojang/datafixers/util/Either; d method_60743 method_60743 + m ()Ljava/lang/String; e method_60744 method_60744 + m (Ljm;)V + m (Lakq;)V + m (Ljava/util/Optional;Lakq;)V +c ctm net/minecraft/class_1770 net/minecraft/world/item/ElytraItem + m (Lcuq;)Z i method_7804 isFlyEnabled + m (Lcul$a;)V +c ctn net/minecraft/class_1773 net/minecraft/world/item/EmptyMapItem + m (Lcul$a;)V +c cto net/minecraft/class_1772 net/minecraft/world/item/EnchantedBookItem + m (Ldaf;)Lcuq; a method_7808 createForEnchantment + m (Lcul$a;)V +c ctp net/minecraft/class_1774 net/minecraft/world/item/EndCrystalItem + m (Lcul$a;)V +c ctq net/minecraft/class_1777 net/minecraft/world/item/EnderEyeItem + m (Lcul$a;)V +c ctr net/minecraft/class_1776 net/minecraft/world/item/EnderpearlItem + m (Lcul$a;)V +c cts net/minecraft/class_5151 net/minecraft/world/item/Equipable + m (Lcul;Ldcw;Lcmx;Lbqq;)Lbqs; a method_48576 swapWithEquipmentSlot + m (Lcuq;)Lcts; c_ method_48957 get + m ()Lbsy; m method_7685 getEquipmentSlot + m ()Ljm; n method_31570 getEquipSound +c ctt net/minecraft/class_1779 net/minecraft/world/item/ExperienceBottleItem + m (Lcul$a;)V +c ctu net/minecraft/class_1778 net/minecraft/world/item/FireChargeItem + m (Ldcw;Ljd;)V a method_18453 playSound + m (Lku;Lji;)Ljw; a method_58655 method_58655 + m (Lcul$a;)V +c ctv net/minecraft/class_1781 net/minecraft/world/item/FireworkRocketItem + f [B a field_41064 CRAFTABLE_DURATIONS + f D b field_30884 ROCKET_PLACEMENT_OFFSET + m (Lku;Lji;)Lexc; a method_58656 getEntityPokingOutOfBlockPos + m (Lcul$a;)V + m ()V +c ctw net/minecraft/class_1780 net/minecraft/world/item/FireworkStarItem + m (Lcul$a;)V +c ctx net/minecraft/class_1787 net/minecraft/world/item/FishingRodItem + m (Lcul$a;)V +c cty net/minecraft/class_1786 net/minecraft/world/item/FlintAndSteelItem + m (Lcul$a;)V +c ctz net/minecraft/class_1758 net/minecraft/world/item/FoodOnAStickItem + f Lbsx; a field_23253 canInteractWith + f I b field_23743 consumeItemDamage + m (Lcul$a;Lbsx;I)V +c cua net/minecraft/class_1788 net/minecraft/world/item/GameMasterBlockItem + m (Ldfy;Lcul$a;)V +c cub net/minecraft/class_8232 net/minecraft/world/item/GlowInkSacItem + m (Ldrt;)Ldrt; a method_49800 method_49800 + m (Lcul$a;)V +c cuc net/minecraft/class_1790 net/minecraft/world/item/HangingEntityItem + f Lwz; a field_42467 TOOLTIP_RANDOM_VARIANT + f Lbsx; b field_7999 type + m (Lcmx;Lji;Lcuq;Ljd;)Z a method_7834 mayPlace + m (Ljava/util/List;)V a method_48958 method_48958 + m (Ljava/util/List;Lakq;)V a method_48959 method_48959 + m (Ljava/util/List;Ljm;)V a method_48960 method_48960 + m (Lbsx;Lcul$a;)V + m ()V +c cud net/minecraft/class_7707 net/minecraft/world/item/HangingSignItem + m (Ldfy;Ldfy;Lcul$a;)V +c cue net/minecraft/class_1794 net/minecraft/world/item/HoeItem + f Ljava/util/Map; a field_8023 TILLABLES + m (Ldtc;)Ljava/util/function/Consumer; a method_36988 changeIntoState + m (Ldtc;Lcyf;)V a method_36984 method_36984 + m (Ldtc;Ldcv;)Ljava/util/function/Consumer; a method_36985 changeIntoStateAndDropItem + m (Ldtc;Ldcv;Lcyf;)V a method_36986 method_36986 + m (Lcyf;)Z b method_36987 onlyIfAirAbove + m (Lcyf;)Z c method_36989 method_36989 + m (Lcwi;Lcul$a;)V + m ()V +c cuf net/minecraft/class_4480 net/minecraft/world/item/HoneyBottleItem + f I a field_30885 DRINK_DURATION + m (Lcul$a;)V +c cug net/minecraft/class_5953 net/minecraft/world/item/HoneycombItem + f Ljava/util/function/Supplier; a field_29560 WAXABLES + f Ljava/util/function/Supplier; b field_29561 WAX_OFF_BY_BLOCK + m (Lcyf;Ljd;Ldcw;Ldtc;)Lbqr; a method_34719 method_34719 + m (Ldtc;)Ljava/util/Optional; a method_34720 getWaxed + m (Ldtc;Ldfy;)Ldtc; a method_34721 method_34721 + m ()Lcom/google/common/collect/BiMap; h method_34722 method_34722 + m ()Lcom/google/common/collect/BiMap; k method_34723 method_34723 + m (Lcul$a;)V + m ()V +c cuh net/minecraft/class_8233 net/minecraft/world/item/InkSacItem + m (Ldrt;)Ldrt; a method_49802 method_49802 + m (Lcul$a;)V +c cui net/minecraft/class_7444 net/minecraft/world/item/Instrument + f Lcom/mojang/serialization/Codec; a field_49260 DIRECT_CODEC + f Lyx; b field_49261 DIRECT_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_39122 CODEC + f Lyx; d field_49262 STREAM_CODEC + f Ljm; e comp_772 soundEvent + f I f comp_773 useDuration + f F g comp_774 range + m ()Ljm; a comp_772 soundEvent + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43709 method_43709 + m ()I b comp_773 useDuration + m ()F c comp_774 range + m (Ljm;IF)V + m ()V +c cuj net/minecraft/class_7430 net/minecraft/world/item/InstrumentItem + f Lawu; a field_39123 instruments + m (Lcul;Ljm;)Lcuq; a method_43558 create + m (Lcuq;Lawu;Layw;)V a method_43562 setRandom + m (Lcuq;Ljm;)V a method_45433 method_45433 + m (Ldcw;Lcmx;Lcui;)V a method_43563 play + m (Ljm;)Ljava/lang/Integer; a method_45432 method_45432 + m (Lcuq;)Ljava/util/Optional; i method_43711 getInstrument + m (Lcul$a;Lawu;)V +c cuk net/minecraft/class_7445 net/minecraft/world/item/Instruments + f I a field_39124 GOAT_HORN_RANGE_BLOCKS + f I b field_39125 GOAT_HORN_DURATION + f Lakq; c field_39126 PONDER_GOAT_HORN + f Lakq; d field_39127 SING_GOAT_HORN + f Lakq; e field_39128 SEEK_GOAT_HORN + f Lakq; f field_39129 FEEL_GOAT_HORN + f Lakq; g field_39130 ADMIRE_GOAT_HORN + f Lakq; h field_39131 CALL_GOAT_HORN + f Lakq; i field_39132 YEARN_GOAT_HORN + f Lakq; j field_39133 DREAM_GOAT_HORN + m (Ljava/lang/String;)Lakq; a method_43714 create + m (Ljz;)Lcui; a method_43713 bootstrap + m ()V +c cul net/minecraft/class_1792 net/minecraft/world/item/Item + f Lorg/slf4j/Logger; a field_27017 LOGGER + f Ljm$c; b field_36401 builtInRegistryHolder + f Lkm; c field_49263 components + f Ljava/util/Map; d field_8003 BY_BLOCK + f Lakr; e field_8006 BASE_ATTACK_DAMAGE_ID + f Lakr; f field_8001 BASE_ATTACK_SPEED_ID + f I g field_30887 DEFAULT_MAX_STACK_SIZE + f I h field_49998 ABSOLUTE_MAX_STACK_SIZE + f I i field_30889 MAX_BAR_WIDTH + f Lcul; j field_8008 craftingRemainingItem + f Ljava/lang/String; k field_8014 descriptionId + f Lcpl; l field_40209 requiredFeatures + m ()Ljava/lang/String; a method_7876 getDescriptionId + m (Lbsr;FLbrk;)F a method_58403 getAttackDamageBonus + m (Lcjh;)V a method_33261 onDestroyed + m (Lcul;)I a method_7880 getId + m (Lcuq;)Z a method_7870 isEnchantable + m (Lcuq;Lbtn;)I a method_7881 getUseDuration + m (Lcuq;Lbtn;Lbtn;)Z a method_7873 hurtEnemy + m (Lcuq;Lcmx;Lbtn;Lbqq;)Lbqr; a method_7847 interactLivingEntity + m (Lcuq;Lcrq;Lcqd;Lcmx;)Z a method_31565 overrideStackedOnOther + m (Lcuq;Lcul$b;Ljava/util/List;Lcwm;)V a method_7851 appendHoverText + m (Lcuq;Lcuq;)Z a method_7878 isValidRepairItem + m (Lcuq;Lcuq;Lcrq;Lcqd;Lcmx;Lbug;)Z a method_31566 overrideOtherStackedOnMe + m (Lcuq;Ldcw;)V a method_7843 onCraftedPostProcess + m (Lcuq;Ldcw;Lbsr;IZ)V a method_7888 inventoryTick + m (Lcuq;Ldcw;Lbtn;)Lcuq; a method_7861 finishUsingItem + m (Lcuq;Ldcw;Lbtn;I)V a method_7840 releaseUsing + m (Lcuq;Ldcw;Ldtc;Ljd;Lbtn;)Z a method_7879 mineBlock + m (Lcuq;Ldtc;)F a method_58404 getDestroySpeed + m (Lcyf;)Lbqr; a method_7884 useOn + m (Ldcw;Lbtn;Lcuq;I)V a method_7852 onUseTick + m (Ldcw;Lcmx;Lbqq;)Lbqs; a method_7836 use + m (Ldcw;Lcmx;Ldcf$b;)Lewy; a method_7872 getPlayerPOVHitResult + m (Ldfy;)Lcul; a method_7867 byBlock + m (Ldtc;Ldcw;Ljd;Lcmx;)Z a method_7885 canAttackBlock + m ()Z ao_ method_16698 isComplex + m ()Lavo; ap_ method_21831 getDrinkingSound + m ()Lavo; aq_ method_21830 getEatingSound + m ()Z ar_ method_31568 canFitInsideContainerItems + m (I)Lcul; b method_7875 byId + m (Lcuq;)Lcwo; b method_7853 getUseAnimation + m (Lcuq;Lbtn;Lbtn;)V b method_59978 postHurtEnemy + m (Lcuq;Ldcw;Lcmx;)V b method_54465 onCraftedBy + m (Lcuq;Ldtc;)Z b method_58405 isCorrectToolForDrops + m (Lcuq;)Z d method_31567 isBarVisible + m (Lcuq;)Z d_ method_7886 isFoil + m ()Lavo; e method_57336 getBreakingSound + m (Lcuq;)I e method_31569 getBarWidth + m (Lcuq;)I f method_31571 getBarColor + m ()I g method_7837 getEnchantmentValue + m (Lcuq;)Ljava/util/Optional; g method_32346 getTooltipImage + m (Lcuq;)Ljava/lang/String; h method_7866 getDescriptionId + m ()Lcxn; j method_7844 getDefaultAttributeModifiers + m (Lcuq;)Z l method_7838 useOnRelease + m (Lcuq;)V m method_7860 verifyComponentsAfterLoad + m (Lcuq;)Lwz; n method_7864 getName + m ()Ljm$c; o method_40131 builtInRegistryHolder + m ()Lkm; p method_57347 components + m ()I q method_7882 getDefaultMaxStackSize + m ()Lwz; s method_7848 getDescription + m ()Ljava/lang/String; t method_7869 getOrCreateDescriptionId + m ()Lcul; u method_7858 getCraftingRemainingItem + m ()Z v method_7857 hasCraftingRemainingItem + m ()Lcuq; w method_7854 getDefaultInstance + m (Lcul$a;)V + m ()V +c cul$a net/minecraft/class_1792$class_1793 net/minecraft/world/item/Item$Properties + f Lcom/google/common/collect/Interner; a field_49264 COMPONENT_INTERNER + f Lkm$a; b field_49265 components + f Lcul; c field_8018 craftingRemainingItem + f Lcpl; d field_40210 requiredFeatures + m ()Lcul$a; a method_24359 fireResistant + m (I)Lcul$a; a method_7889 stacksTo + m (Lakq;)Lcul$a; a method_60745 jukeboxPlayable + m (Lcpr;)Lcul$a; a method_19265 food + m (Lcul;)Lcul$a; a method_7896 craftRemainder + m (Lcvo;)Lcul$a; a method_7894 rarity + m (Lcxn;)Lcul$a; a method_57348 attributes + m (Lkp;Ljava/lang/Object;)Lcul$a; a method_57349 component + m ([Lcpj;)Lcul$a; a method_45434 requiredFeatures + m ()Lkm; b method_58406 buildAndValidateComponents + m (I)Lcul$a; b method_7895 durability + m ()Lkm; c method_57350 buildComponents + m ()V + m ()V +c cul$b net/minecraft/class_1792$class_9635 net/minecraft/world/item/Item$TooltipContext + f Lcul$b; a field_51353 EMPTY + m ()Ljo$a; a method_59527 registries + m (Ldcw;)Lcul$b; a method_59528 of + m (Leqr;)Leqt; a method_59529 mapData + m (Ljo$a;)Lcul$b; a method_59530 of + m ()F b method_59531 tickRate + m ()V +c cul$b$1 net/minecraft/class_1792$class_9635$1 net/minecraft/world/item/Item$TooltipContext$1 + m ()V +c cul$b$2 net/minecraft/class_1792$class_9635$2 net/minecraft/world/item/Item$TooltipContext$2 + f Ldcw; b field_51354 val$level + m (Ldcw;)V +c cul$b$3 net/minecraft/class_1792$class_9635$3 net/minecraft/world/item/Item$TooltipContext$3 + f Ljo$a; b field_51355 val$registries + m (Ljo$a;)V +c cum net/minecraft/class_1796 net/minecraft/world/item/ItemCooldowns + f Ljava/util/Map; a field_8024 cooldowns + f I b field_8025 tickCount + m ()V a method_7903 tick + m (Lcul;)Z a method_7904 isOnCooldown + m (Lcul;F)F a method_7905 getCooldownPercent + m (Lcul;I)V a method_7906 addCooldown + m (Lcul;)V b method_7900 removeCooldown + m (Lcul;I)V b method_7902 onCooldownStarted + m (Lcul;)V c method_7901 onCooldownEnded + m ()V +c cum$a net/minecraft/class_1796$class_1797 net/minecraft/world/item/ItemCooldowns$CooldownInstance + f I a field_8028 startTime + f I b field_8027 endTime + m (II)V +c cun net/minecraft/class_811 net/minecraft/world/item/ItemDisplayContext + f Lcun; a field_4315 NONE + f Lcun; b field_4323 THIRD_PERSON_LEFT_HAND + f Lcun; c field_4320 THIRD_PERSON_RIGHT_HAND + f Lcun; d field_4321 FIRST_PERSON_LEFT_HAND + f Lcun; e field_4322 FIRST_PERSON_RIGHT_HAND + f Lcun; f field_4316 HEAD + f Lcun; g field_4317 GUI + f Lcun; h field_4318 GROUND + f Lcun; i field_4319 FIXED + f Lcom/mojang/serialization/Codec; j field_42468 CODEC + f Ljava/util/function/IntFunction; k field_42469 BY_ID + f B l field_42470 id + f Ljava/lang/String; m field_42471 name + f [Lcun; n field_4314 $VALUES + m ()B a method_48961 getId + m ()Z b method_29998 firstPerson + m ()[Lcun; d method_36922 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c cuo net/minecraft/class_1795 net/minecraft/world/item/ItemFrameItem + m (Lbsx;Lcul$a;)V +c cup net/minecraft/class_1798 net/minecraft/world/item/ItemNameBlockItem + m (Ldfy;Lcul$a;)V +c cuq net/minecraft/class_1799 net/minecraft/world/item/ItemStack + f Lcom/mojang/serialization/Codec; a field_47312 ITEM_NON_AIR_CODEC + f Lcom/mojang/serialization/Codec; b field_24671 CODEC + f Lcom/mojang/serialization/Codec; c field_49747 SINGLE_ITEM_CODEC + f Lcom/mojang/serialization/Codec; d field_51397 STRICT_CODEC + f Lcom/mojang/serialization/Codec; e field_51398 STRICT_SINGLE_ITEM_CODEC + f Lcom/mojang/serialization/Codec; f field_49266 OPTIONAL_CODEC + f Lcom/mojang/serialization/Codec; g field_49267 SIMPLE_ITEM_CODEC + f Lyx; h field_49268 OPTIONAL_STREAM_CODEC + f Lyx; i field_48349 STREAM_CODEC + f Lyx; j field_49269 OPTIONAL_LIST_STREAM_CODEC + f Lyx; k field_48350 LIST_STREAM_CODEC + f Lcuq; l field_8037 EMPTY + f Lorg/slf4j/Logger; m field_8033 LOGGER + f Lwz; n field_40211 DISABLED_ITEM_TOOLTIP + f I o field_8031 count + f I p field_8030 popTime + f Lcul; q field_8038 item + f Lkr; r field_49270 components + f Lbsr; s field_24093 entityRepresentation + m ()Z A method_7942 isEnchanted + m ()Ldai; B method_58657 getEnchantments + m ()Z C method_7961 isFramed + m ()Lcja; D method_7945 getFrame + m ()Lbsr; E method_27319 getEntityRepresentation + m ()Lwz; F method_7954 getDisplayName + m ()I G method_7965 getPopTime + m ()I H method_7947 getCount + m ()Lavo; I method_21832 getDrinkingSound + m ()Lavo; J method_21833 getEatingSound + m ()Lavo; K method_57351 getBreakingSound + m ()Ljava/lang/String; L method_59690 method_59690 + m ()Lcom/mojang/serialization/Codec; M method_55066 method_55066 + m ()Lcom/mojang/serialization/Codec; N method_57352 method_57352 + m ()Ljava/lang/String; O method_55061 method_55061 + m (I)Lcuq; a method_7971 split + m (II)Ljava/lang/String; a method_60502 method_60502 + m (ILaqu;Laqv;Ljava/util/function/Consumer;)V a method_7956 hurtAndBreak + m (ILbtn;)V a method_57008 consume + m (ILbtn;Lbsy;)V a method_7970 hurtAndBreak + m (ILdcv;Lbtn;Lbsy;)Lcuq; a method_60986 hurtAndConvertOnBreak + m (Lawu;)Z a method_31573 is + m (Lbrk;)Z a method_58407 canBeHurtBy + m (Lbsr;)V a method_27320 setEntityRepresentation + m (Lbsy;Ljava/util/function/BiConsumer;)V a method_57354 forEachModifier + m (Lbsz;Ljava/util/function/BiConsumer;)V a method_60617 forEachModifier + m (Lbtn;)I a method_7935 getUseDuration + m (Lbtn;Lbsy;Lcul;)V a method_56097 method_56097 + m (Lbtn;Lcmx;)Z a method_7979 hurtEnemy + m (Lcjh;)V a method_33262 onDestroyed + m (Lcmx;Lbtn;Lbqq;)Lbqr; a method_7920 interactLivingEntity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58092 method_58092 + m (Lcpl;)Z a method_45435 isItemEnabled + m (Lcrq;Lcqd;Lcmx;)Z a method_31575 overrideStackedOnOther + m (Lcul$b;Lcmx;Lcwm;)Ljava/util/List; a method_7950 getTooltipLines + m (Lcul;)Z a method_31574 is + m (Lcuq;)I a method_57355 hashItemAndComponents + m (Lcuq;Lazs;)Lcuq; a method_57383 method_57383 + m (Lcuq;Lcrq;Lcqd;Lcmx;Lbug;)Z a method_31576 overrideOtherStackedOnMe + m (Lcuq;Lcuq;)Z a method_7973 matches + m (Lcyf;)Lbqr; a method_7981 useOn + m (Ldcv;)Lcuq; a method_60503 transmuteCopy + m (Ldcv;I)Lcuq; a method_56701 transmuteCopy + m (Ldcw;)V a method_54466 onCraftedBySystem + m (Ldcw;Lbsr;IZ)V a method_7917 inventoryTick + m (Ldcw;Lbtn;)Lcuq; a method_7910 finishUsingItem + m (Ldcw;Lbtn;I)V a method_7930 releaseUsing + m (Ldcw;Lcmx;I)V a method_7982 onCraftedBy + m (Ldcw;Lcmx;Lbqq;)Lbqs; a method_7913 use + m (Ldcw;Ldtc;Ljd;Lcmx;)V a method_7952 mineBlock + m (Ldtc;)F a method_7924 getDestroySpeed + m (Ldtg;)Z a method_57357 canPlaceOnBlockInAdventureMode + m (Ljava/lang/String;)Lcom/mojang/serialization/MapCodec; a method_56702 lenientOptionalFieldOf + m (Ljava/util/List;)I a method_57361 hashStackList + m (Ljava/util/List;Ljava/util/List;)Z a method_57362 listMatches + m (Ljava/util/Optional;)Lcuq; a method_56703 method_56703 + m (Ljava/util/function/Consumer;Lcmx;)V a method_57363 addAttributeTooltips + m (Ljava/util/function/Consumer;Lcmx;Ljm;Lbuu;)V a method_57364 addModifierTooltip + m (Ljava/util/function/Predicate;)Z a method_41407 is + m (Ljm;)Z a method_41406 is + m (Ljm;I)V a method_7978 enchant + m (Ljm;ILdai$a;)V a method_57356 method_57356 + m (Ljm;Lkn;)Lcuq; a method_58093 method_58093 + m (Ljo$a;)Luy; a method_57358 save + m (Ljo$a;Lub;)Lcuq; a method_57359 parseOptional + m (Ljo$a;Luy;)Ljava/util/Optional; a method_57360 parse + m (Ljq;)Z a method_53187 is + m (Lkm;)Lcom/mojang/serialization/DataResult; a method_59691 validateComponents + m (Lkn;)V a method_59692 applyComponentsAndValidate + m (Lkp;Lcul$b;Ljava/util/function/Consumer;Lcwm;)V a method_57369 addToTooltip + m (Lkp;Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object; a method_57367 update + m (Lkp;Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/lang/Object; a method_57368 update + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Ljava/util/function/Consumer;Lbsz;Lcmx;Ljm;Lbuu;)V a method_57370 method_57370 + m (Lxw;)Lxw; a method_7966 method_7966 + m (Lyx;)Lyx; a method_59693 validatedStreamCodec + m ()Ljava/util/Optional; b method_32347 getTooltipImage + m (I)V b method_7974 setDamageValue + m (ILbtn;)Lcuq; b method_60504 consumeAndReturn + m (Lbtn;Lcmx;)V b method_59979 postHurtEnemy + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_57371 method_57371 + m (Lcuq;)Lcom/mojang/serialization/DataResult; b method_57372 validateStrict + m (Lcuq;Lcuq;)Z b method_7984 isSameItem + m (Ldcv;I)Lcuq; b method_56704 transmuteCopyIgnoreEmpty + m (Ldcw;Lbtn;I)V b method_7949 onUseTick + m (Ldtc;)Z b method_7951 isCorrectToolForDrops + m (Ldtg;)Z b method_57373 canBreakBlockInAdventureMode + m (Ljava/lang/String;)V b method_57377 method_57377 + m (Ljava/util/Optional;)Lcuq; b method_57378 method_57378 + m (Ljm;)Lcom/mojang/serialization/DataResult; b method_57374 method_57374 + m (Ljo$a;)Luy; b method_57375 saveOptional + m (Ljo$a;Luy;)Luy; b method_57376 save + m (Lkm;)V b method_57365 applyComponents + m (Lkn;)V b method_57366 applyComponents + m (Lkp;Ljava/lang/Object;)Ljava/lang/Object; b method_57379 set + m ()Lkm; c method_58658 getPrototype + m (I)Lcuq; c method_46651 copyWithCount + m (Lcuq;)Ljava/util/Optional; c method_56700 method_56700 + m (Lcuq;Lcuq;)Z c method_31577 isSameItemSameComponents + m (Lkp;)Ljava/lang/Object; c method_57381 remove + m ()Lkn; d method_57380 getComponentsPatch + m (I)V d method_7912 setPopTime + m (Lcuq;)Ljava/util/Optional; d method_57382 method_57382 + m ()Z e method_7960 isEmpty + m (I)V e method_7939 setCount + m (Lcuq;)Ljava/lang/String; e method_57384 method_57384 + m ()Lcuq; f method_51164 copyAndClear + m (I)V f method_58408 limitSize + m (Lcuq;)Lkn; f method_58094 method_58094 + m ()Lcul; g method_7909 getItem + m (I)V g method_7933 grow + m (Lcuq;)Lkn; g method_57385 method_57385 + m ()Ljm; h method_41409 getItemHolder + m (I)V h method_7934 shrink + m ()Ljava/util/stream/Stream; i method_40133 getTags + m ()I j method_7914 getMaxStackSize + m ()Z k method_7946 isStackable + m ()Z l method_7963 isDamageableItem + m ()Z m method_7986 isDamaged + m ()I n method_7919 getDamageValue + m ()I o method_7936 getMaxDamage + m ()Z p method_31578 isBarVisible + m ()I q method_31579 getBarWidth + m ()I r method_31580 getBarColor + m ()Lcuq; s method_7972 copy + m ()Ljava/lang/String; t method_7922 getDescriptionId + m ()Lcwo; u method_7976 getUseAnimation + m ()Z v method_7967 useOnRelease + m ()Lwz; w method_7964 getHoverName + m ()Z x method_7958 hasFoil + m ()Lcvo; y method_7932 getRarity + m ()Z z method_7923 isEnchantable + m (Ldcv;)V + m (Ljm;)V + m (Ljm;ILkn;)V + m (Ljm;I)V + m (Ldcv;I)V + m (Ldcv;ILkr;)V + m (Ljava/lang/Void;)V + m ()V +c cuq$1 net/minecraft/class_1799$1 net/minecraft/world/item/ItemStack$1 + f Lyx; a field_48351 ITEM_STREAM_CODEC + m (Lwk;)Lcuq; a method_56099 decode + m (Lwk;Lcuq;)V a method_56100 encode + m ()V + m ()V +c cuq$2 net/minecraft/class_1799$2 net/minecraft/world/item/ItemStack$2 + m (Lwk;)Lcuq; a method_57386 decode + m (Lwk;Lcuq;)V a method_57387 encode + m ()V +c cuq$3 net/minecraft/class_1799$3 net/minecraft/world/item/ItemStack$3 + f Lyx; a field_51399 val$codec + m (Lwk;)Lcuq; a method_59694 decode + m (Lwk;Lcuq;)V a method_59695 encode + m (Lyx;)V +c cuq$4 net/minecraft/class_1799$4 net/minecraft/world/item/ItemStack$4 + f [I a field_8021 $SwitchMap$net$minecraft$world$item$Rarity + m ()V +c cur net/minecraft/class_7708 net/minecraft/world/item/ItemStackLinkedSet + f Lit/unimi/dsi/fastutil/Hash$Strategy; a field_40212 TYPE_AND_TAG + m ()Ljava/util/Set; a method_47572 createTypeAndComponentsSet + m ()V + m ()V +c cur$1 net/minecraft/class_7708$1 net/minecraft/world/item/ItemStackLinkedSet$1 + m (Lcuq;)I a method_45436 hashCode + m (Lcuq;Lcuq;)Z a method_45437 equals + m ()V +c cus net/minecraft/class_5328 net/minecraft/world/item/ItemUtils + m (Lcjh;Ljava/lang/Iterable;)V a method_33263 onContainerDestroyed + m (Lcuq;Lcmx;Lcuq;)Lcuq; a method_30012 createFilledResult + m (Lcuq;Lcmx;Lcuq;Z)Lcuq; a method_30270 createFilledResult + m (Ldcw;Lcjh;Lcuq;)V a method_33265 method_33265 + m (Ldcw;Lcmx;Lbqq;)Lbqs; a method_29282 startUsingInstantly + m ()V +c cut net/minecraft/class_1802 net/minecraft/world/item/Items + f Lcul; A field_28043 DRIPSTONE_BLOCK + f Lcul; B field_8270 GRASS_BLOCK + f Lcul; C field_8831 DIRT + f Lcul; D field_8460 COARSE_DIRT + f Lcul; E field_8382 PODZOL + f Lcul; F field_28655 ROOTED_DIRT + f Lcul; G field_37537 MUD + f Lcul; H field_22013 CRIMSON_NYLIUM + f Lcul; I field_22015 WARPED_NYLIUM + f Lcul; J field_20412 COBBLESTONE + f Lcul; K field_8118 OAK_PLANKS + f Lcul; L field_8113 SPRUCE_PLANKS + f Lcul; M field_8191 BIRCH_PLANKS + f Lcul; N field_8842 JUNGLE_PLANKS + f Lcul; O field_8651 ACACIA_PLANKS + f Lcul; P field_42687 CHERRY_PLANKS + f Lcul; Q field_8404 DARK_OAK_PLANKS + f Lcul; R field_37507 MANGROVE_PLANKS + f Lcul; S field_40213 BAMBOO_PLANKS + f Lcul; T field_22031 CRIMSON_PLANKS + f Lcul; U field_22032 WARPED_PLANKS + f Lcul; V field_40214 BAMBOO_MOSAIC + f Lcul; W field_17535 OAK_SAPLING + f Lcul; X field_17536 SPRUCE_SAPLING + f Lcul; Y field_17537 BIRCH_SAPLING + f Lcul; Z field_17538 JUNGLE_SAPLING + f Lcul; aA field_23140 NETHER_GOLD_ORE + f Lcul; aB field_8702 NETHER_QUARTZ_ORE + f Lcul; aC field_22019 ANCIENT_DEBRIS + f Lcul; aD field_8797 COAL_BLOCK + f Lcul; aE field_33505 RAW_IRON_BLOCK + f Lcul; aF field_33506 RAW_COPPER_BLOCK + f Lcul; aG field_33507 RAW_GOLD_BLOCK + f Lcul; aH field_49813 HEAVY_CORE + f Lcul; aI field_27064 AMETHYST_BLOCK + f Lcul; aJ field_27065 BUDDING_AMETHYST + f Lcul; aK field_8773 IRON_BLOCK + f Lcul; aL field_27071 COPPER_BLOCK + f Lcul; a field_8162 AIR + f Lcul; aM field_8494 GOLD_BLOCK + f Lcul; aN field_8603 DIAMOND_BLOCK + f Lcul; aO field_22018 NETHERITE_BLOCK + f Lcul; aP field_27072 EXPOSED_COPPER + f Lcul; aQ field_27073 WEATHERED_COPPER + f Lcul; aR field_27074 OXIDIZED_COPPER + f Lcul; aS field_46974 CHISELED_COPPER + f Lcul; aT field_46975 EXPOSED_CHISELED_COPPER + f Lcul; aU field_46976 WEATHERED_CHISELED_COPPER + f Lcul; aV field_46977 OXIDIZED_CHISELED_COPPER + f Lcul; aW field_27075 CUT_COPPER + f Lcul; aX field_27076 EXPOSED_CUT_COPPER + f Lcul; aY field_27077 WEATHERED_CUT_COPPER + f Lcul; aZ field_27030 OXIDIZED_CUT_COPPER + f Lcul; aa field_17539 ACACIA_SAPLING + f Lcul; ab field_42688 CHERRY_SAPLING + f Lcul; ac field_17540 DARK_OAK_SAPLING + f Lcul; ad field_37508 MANGROVE_PROPAGULE + f Lcul; ae field_8542 BEDROCK + f Lcul; af field_8858 SAND + f Lcul; ag field_42689 SUSPICIOUS_SAND + f Lcul; ah field_43191 SUSPICIOUS_GRAVEL + f Lcul; ai field_8200 RED_SAND + f Lcul; aj field_8110 GRAVEL + f Lcul; ak field_8476 COAL_ORE + f Lcul; al field_29212 DEEPSLATE_COAL_ORE + f Lcul; am field_8599 IRON_ORE + f Lcul; an field_29020 DEEPSLATE_IRON_ORE + f Lcul; ao field_27018 COPPER_ORE + f Lcul; ap field_29211 DEEPSLATE_COPPER_ORE + f Lcul; aq field_8775 GOLD_ORE + f Lcul; ar field_29019 DEEPSLATE_GOLD_ORE + f Lcul; as field_8604 REDSTONE_ORE + f Lcul; at field_29023 DEEPSLATE_REDSTONE_ORE + f Lcul; au field_8837 EMERALD_ORE + f Lcul; av field_29216 DEEPSLATE_EMERALD_ORE + f Lcul; aw field_8809 LAPIS_ORE + f Lcul; ax field_29021 DEEPSLATE_LAPIS_ORE + f Lcul; ay field_8787 DIAMOND_ORE + f Lcul; az field_29022 DEEPSLATE_DIAMOND_ORE + f Lcul; bA field_27050 WAXED_WEATHERED_CUT_COPPER_SLAB + f Lcul; bB field_33406 WAXED_OXIDIZED_CUT_COPPER_SLAB + f Lcul; bC field_8583 OAK_LOG + f Lcul; bD field_8684 SPRUCE_LOG + f Lcul; bE field_8170 BIRCH_LOG + f Lcul; bF field_8125 JUNGLE_LOG + f Lcul; bG field_8820 ACACIA_LOG + f Lcul; bH field_42692 CHERRY_LOG + f Lcul; bI field_8652 DARK_OAK_LOG + f Lcul; bJ field_37512 MANGROVE_LOG + f Lcul; bK field_37513 MANGROVE_ROOTS + f Lcul; bL field_37514 MUDDY_MANGROVE_ROOTS + f Lcul; b field_20391 STONE + f Lcul; bM field_21981 CRIMSON_STEM + f Lcul; bN field_21982 WARPED_STEM + f Lcul; bO field_41066 BAMBOO_BLOCK + f Lcul; bP field_8415 STRIPPED_OAK_LOG + f Lcul; bQ field_8624 STRIPPED_SPRUCE_LOG + f Lcul; bR field_8767 STRIPPED_BIRCH_LOG + f Lcul; bS field_8334 STRIPPED_JUNGLE_LOG + f Lcul; bT field_8072 STRIPPED_ACACIA_LOG + f Lcul; bU field_42693 STRIPPED_CHERRY_LOG + f Lcul; bV field_8808 STRIPPED_DARK_OAK_LOG + f Lcul; bW field_37515 STRIPPED_MANGROVE_LOG + f Lcul; bX field_21983 STRIPPED_CRIMSON_STEM + f Lcul; bY field_21984 STRIPPED_WARPED_STEM + f Lcul; bZ field_8248 STRIPPED_OAK_WOOD + f Lcul; ba field_27031 CUT_COPPER_STAIRS + f Lcul; bb field_27032 EXPOSED_CUT_COPPER_STAIRS + f Lcul; bc field_27033 WEATHERED_CUT_COPPER_STAIRS + f Lcul; bd field_27034 OXIDIZED_CUT_COPPER_STAIRS + f Lcul; be field_27035 CUT_COPPER_SLAB + f Lcul; bf field_27036 EXPOSED_CUT_COPPER_SLAB + f Lcul; bg field_27037 WEATHERED_CUT_COPPER_SLAB + f Lcul; bh field_27038 OXIDIZED_CUT_COPPER_SLAB + f Lcul; bi field_27039 WAXED_COPPER_BLOCK + f Lcul; bj field_27040 WAXED_EXPOSED_COPPER + f Lcul; bk field_27041 WAXED_WEATHERED_COPPER + f Lcul; bl field_33403 WAXED_OXIDIZED_COPPER + f Lcul; bm field_46978 WAXED_CHISELED_COPPER + f Lcul; bn field_46979 WAXED_EXPOSED_CHISELED_COPPER + f Lcul; bo field_46980 WAXED_WEATHERED_CHISELED_COPPER + f Lcul; bp field_46981 WAXED_OXIDIZED_CHISELED_COPPER + f Lcul; bq field_27042 WAXED_CUT_COPPER + f Lcul; br field_27043 WAXED_EXPOSED_CUT_COPPER + f Lcul; bs field_27044 WAXED_WEATHERED_CUT_COPPER + f Lcul; bt field_33404 WAXED_OXIDIZED_CUT_COPPER + f Lcul; bu field_27045 WAXED_CUT_COPPER_STAIRS + f Lcul; bv field_27046 WAXED_EXPOSED_CUT_COPPER_STAIRS + f Lcul; bw field_27047 WAXED_WEATHERED_CUT_COPPER_STAIRS + f Lcul; bx field_33405 WAXED_OXIDIZED_CUT_COPPER_STAIRS + f Lcul; by field_27048 WAXED_CUT_COPPER_SLAB + f Lcul; bz field_27049 WAXED_EXPOSED_CUT_COPPER_SLAB + f Lcul; cA field_17508 DARK_OAK_LEAVES + f Lcul; cB field_37511 MANGROVE_LEAVES + f Lcul; cC field_28648 AZALEA_LEAVES + f Lcul; cD field_28649 FLOWERING_AZALEA_LEAVES + f Lcul; cE field_8535 SPONGE + f Lcul; cF field_8554 WET_SPONGE + f Lcul; cG field_8280 GLASS + f Lcul; cH field_27019 TINTED_GLASS + f Lcul; cI field_8055 LAPIS_BLOCK + f Lcul; cJ field_20384 SANDSTONE + f Lcul; cK field_8552 CHISELED_SANDSTONE + f Lcul; cL field_20385 CUT_SANDSTONE + f Lcul; c field_20394 GRANITE + f Lcul; cM field_8786 COBWEB + f Lcul; cN field_8602 SHORT_GRASS + f Lcul; cO field_8471 FERN + f Lcul; cP field_28650 AZALEA + f Lcul; cQ field_28651 FLOWERING_AZALEA + f Lcul; cR field_8689 DEAD_BUSH + f Lcul; cS field_8158 SEAGRASS + f Lcul; cT field_17498 SEA_PICKLE + f Lcul; cU field_19044 WHITE_WOOL + f Lcul; cV field_19045 ORANGE_WOOL + f Lcul; cW field_19046 MAGENTA_WOOL + f Lcul; cX field_19047 LIGHT_BLUE_WOOL + f Lcul; cY field_19048 YELLOW_WOOL + f Lcul; cZ field_19049 LIME_WOOL + f Lcul; ca field_8362 STRIPPED_SPRUCE_WOOD + f Lcul; cb field_8472 STRIPPED_BIRCH_WOOD + f Lcul; cc field_8785 STRIPPED_JUNGLE_WOOD + f Lcul; cd field_8284 STRIPPED_ACACIA_WOOD + f Lcul; ce field_42690 STRIPPED_CHERRY_WOOD + f Lcul; cf field_8219 STRIPPED_DARK_OAK_WOOD + f Lcul; cg field_37509 STRIPPED_MANGROVE_WOOD + f Lcul; ch field_22487 STRIPPED_CRIMSON_HYPHAE + f Lcul; ci field_22488 STRIPPED_WARPED_HYPHAE + f Lcul; cj field_41065 STRIPPED_BAMBOO_BLOCK + f Lcul; ck field_8888 OAK_WOOD + f Lcul; cl field_8210 SPRUCE_WOOD + f Lcul; cm field_8201 BIRCH_WOOD + f Lcul; cn field_8439 JUNGLE_WOOD + f Lcul; co field_8587 ACACIA_WOOD + f Lcul; cp field_42691 CHERRY_WOOD + f Lcul; cq field_8458 DARK_OAK_WOOD + f Lcul; cr field_37510 MANGROVE_WOOD + f Lcul; cs field_22489 CRIMSON_HYPHAE + f Lcul; ct field_22490 WARPED_HYPHAE + f Lcul; cu field_17503 OAK_LEAVES + f Lcul; cv field_17504 SPRUCE_LEAVES + f Lcul; cw field_17505 BIRCH_LEAVES + f Lcul; cx field_17506 JUNGLE_LEAVES + f Lcul; cy field_17507 ACACIA_LEAVES + f Lcul; cz field_42694 CHERRY_LEAVES + f Lcul; dA field_17516 BROWN_MUSHROOM + f Lcul; dB field_17517 RED_MUSHROOM + f Lcul; dC field_21987 CRIMSON_FUNGUS + f Lcul; dD field_21988 WARPED_FUNGUS + f Lcul; dE field_21989 CRIMSON_ROOTS + f Lcul; dF field_21990 WARPED_ROOTS + f Lcul; dG field_21991 NETHER_SPROUTS + f Lcul; dH field_21992 WEEPING_VINES + f Lcul; dI field_23070 TWISTING_VINES + f Lcul; dJ field_17531 SUGAR_CANE + f Lcul; dK field_17532 KELP + f Lcul; dL field_28653 MOSS_CARPET + f Lcul; d field_20397 POLISHED_GRANITE + f Lcul; dM field_42696 PINK_PETALS + f Lcul; dN field_28654 MOSS_BLOCK + f Lcul; dO field_28656 HANGING_ROOTS + f Lcul; dP field_28657 BIG_DRIPLEAF + f Lcul; dQ field_28658 SMALL_DRIPLEAF + f Lcul; dR field_8648 BAMBOO + f Lcul; dS field_8320 OAK_SLAB + f Lcul; dT field_8189 SPRUCE_SLAB + f Lcul; dU field_8843 BIRCH_SLAB + f Lcul; dV field_8224 JUNGLE_SLAB + f Lcul; dW field_8400 ACACIA_SLAB + f Lcul; dX field_42697 CHERRY_SLAB + f Lcul; dY field_8540 DARK_OAK_SLAB + f Lcul; dZ field_37516 MANGROVE_SLAB + f Lcul; da field_19050 PINK_WOOL + f Lcul; db field_19051 GRAY_WOOL + f Lcul; dc field_19052 LIGHT_GRAY_WOOL + f Lcul; dd field_19053 CYAN_WOOL + f Lcul; de field_19054 PURPLE_WOOL + f Lcul; df field_19055 BLUE_WOOL + f Lcul; dg field_19056 BROWN_WOOL + f Lcul; dh field_19057 GREEN_WOOL + f Lcul; di field_19058 RED_WOOL + f Lcul; dj field_19059 BLACK_WOOL + f Lcul; dk field_8491 DANDELION + f Lcul; dl field_8880 POPPY + f Lcul; dm field_17499 BLUE_ORCHID + f Lcul; dn field_17500 ALLIUM + f Lcul; do field_17501 AZURE_BLUET + f Lcul; dp field_17502 RED_TULIP + f Lcul; dq field_17509 ORANGE_TULIP + f Lcul; dr field_17510 WHITE_TULIP + f Lcul; ds field_17511 PINK_TULIP + f Lcul; dt field_17512 OXEYE_DAISY + f Lcul; du field_17513 CORNFLOWER + f Lcul; dv field_17514 LILY_OF_THE_VALLEY + f Lcul; dw field_17515 WITHER_ROSE + f Lcul; dx field_42695 TORCHFLOWER + f Lcul; dy field_43192 PITCHER_PLANT + f Lcul; dz field_28652 SPORE_BLOSSOM + f Lcul; eA field_8536 BOOKSHELF + f Lcul; eB field_40215 CHISELED_BOOKSHELF + f Lcul; eC field_42699 DECORATED_POT + f Lcul; eD field_20392 MOSSY_COBBLESTONE + f Lcul; eE field_8281 OBSIDIAN + f Lcul; eF field_8810 TORCH + f Lcul; eG field_8056 END_ROD + f Lcul; eH field_8358 CHORUS_PLANT + f Lcul; eI field_8710 CHORUS_FLOWER + f Lcul; eJ field_20393 PURPUR_BLOCK + f Lcul; eK field_8490 PURPUR_PILLAR + f Lcul; eL field_8644 PURPUR_STAIRS + f Lcul; e field_20401 DIORITE + f Lcul; eM field_8849 SPAWNER + f Lcul; eN field_8106 CHEST + f Lcul; eO field_8465 CRAFTING_TABLE + f Lcul; eP field_8365 FARMLAND + f Lcul; eQ field_8732 FURNACE + f Lcul; eR field_8121 LADDER + f Lcul; eS field_8310 COBBLESTONE_STAIRS + f Lcul; eT field_8749 SNOW + f Lcul; eU field_8426 ICE + f Lcul; eV field_8246 SNOW_BLOCK + f Lcul; eW field_17520 CACTUS + f Lcul; eX field_19060 CLAY + f Lcul; eY field_8565 JUKEBOX + f Lcul; eZ field_8792 OAK_FENCE + f Lcul; ea field_40216 BAMBOO_SLAB + f Lcul; eb field_40217 BAMBOO_MOSAIC_SLAB + f Lcul; ec field_21985 CRIMSON_SLAB + f Lcul; ed field_21986 WARPED_SLAB + f Lcul; ee field_8595 STONE_SLAB + f Lcul; ef field_8291 SMOOTH_STONE_SLAB + f Lcul; eg field_18888 SANDSTONE_SLAB + f Lcul; eh field_18889 CUT_STANDSTONE_SLAB + f Lcul; ei field_8060 PETRIFIED_OAK_SLAB + f Lcul; ej field_8194 COBBLESTONE_SLAB + f Lcul; ek field_8342 BRICK_SLAB + f Lcul; el field_8524 STONE_BRICK_SLAB + f Lcul; em field_37517 MUD_BRICK_SLAB + f Lcul; en field_8505 NETHER_BRICK_SLAB + f Lcul; eo field_8412 QUARTZ_SLAB + f Lcul; ep field_18886 RED_SANDSTONE_SLAB + f Lcul; eq field_18887 CUT_RED_SANDSTONE_SLAB + f Lcul; er field_8202 PURPUR_SLAB + f Lcul; es field_8440 PRISMARINE_SLAB + f Lcul; et field_8588 PRISMARINE_BRICK_SLAB + f Lcul; eu field_8459 DARK_PRISMARINE_SLAB + f Lcul; ev field_20386 SMOOTH_QUARTZ + f Lcul; ew field_20387 SMOOTH_RED_SANDSTONE + f Lcul; ex field_20388 SMOOTH_SANDSTONE + f Lcul; ey field_20389 SMOOTH_STONE + f Lcul; ez field_20390 BRICKS + f Lcul; fA field_8148 INFESTED_CHISELED_STONE_BRICKS + f Lcul; fB field_29213 INFESTED_DEEPSLATE + f Lcul; fC field_20395 STONE_BRICKS + f Lcul; fD field_20396 MOSSY_STONE_BRICKS + f Lcul; fE field_8343 CRACKED_STONE_BRICKS + f Lcul; fF field_8525 CHISELED_STONE_BRICKS + f Lcul; fG field_37518 PACKED_MUD + f Lcul; fH field_37519 MUD_BRICKS + f Lcul; fI field_28859 DEEPSLATE_BRICKS + f Lcul; fJ field_29214 CRACKED_DEEPSLATE_BRICKS + f Lcul; fK field_28860 DEEPSLATE_TILES + f Lcul; fL field_29215 CRACKED_DEEPSLATE_TILES + f Lcul; f field_20403 POLISHED_DIORITE + f Lcul; fM field_28861 CHISELED_DEEPSLATE + f Lcul; fN field_38418 REINFORCED_DEEPSLATE + f Lcul; fO field_8506 BROWN_MUSHROOM_BLOCK + f Lcul; fP field_8682 RED_MUSHROOM_BLOCK + f Lcul; fQ field_17521 MUSHROOM_STEM + f Lcul; fR field_8076 IRON_BARS + f Lcul; fS field_23983 CHAIN + f Lcul; fT field_8141 GLASS_PANE + f Lcul; fU field_17522 MELON + f Lcul; fV field_17523 VINE + f Lcul; fW field_28409 GLOW_LICHEN + f Lcul; fX field_8663 BRICK_STAIRS + f Lcul; fY field_8481 STONE_BRICK_STAIRS + f Lcul; fZ field_37522 MUD_BRICK_STAIRS + f Lcul; fa field_8701 SPRUCE_FENCE + f Lcul; fb field_8457 BIRCH_FENCE + f Lcul; fc field_8823 JUNGLE_FENCE + f Lcul; fd field_8646 ACACIA_FENCE + f Lcul; fe field_42698 CHERRY_FENCE + f Lcul; ff field_8454 DARK_OAK_FENCE + f Lcul; fg field_37520 MANGROVE_FENCE + f Lcul; fh field_40218 BAMBOO_FENCE + f Lcul; fi field_21995 CRIMSON_FENCE + f Lcul; fj field_21996 WARPED_FENCE + f Lcul; fk field_17518 PUMPKIN + f Lcul; fl field_17519 CARVED_PUMPKIN + f Lcul; fm field_8693 JACK_O_LANTERN + f Lcul; fn field_8328 NETHERRACK + f Lcul; fo field_8067 SOUL_SAND + f Lcul; fp field_21999 SOUL_SOIL + f Lcul; fq field_22000 BASALT + f Lcul; fr field_23069 POLISHED_BASALT + f Lcul; fs field_29024 SMOOTH_BASALT + f Lcul; ft field_22001 SOUL_TORCH + f Lcul; fu field_8801 GLOWSTONE + f Lcul; fv field_8225 INFESTED_STONE + f Lcul; fw field_8401 INFESTED_COBBLESTONE + f Lcul; fx field_8541 INFESTED_STONE_BRICKS + f Lcul; fy field_8596 INFESTED_MOSSY_STONE_BRICKS + f Lcul; fz field_8292 INFESTED_CRACKED_STONE_BRICKS + f Lcul; gA field_37526 MANGROVE_STAIRS + f Lcul; gB field_40219 BAMBOO_STAIRS + f Lcul; gC field_40220 BAMBOO_MOSAIC_STAIRS + f Lcul; gD field_22006 CRIMSON_STAIRS + f Lcul; gE field_22007 WARPED_STAIRS + f Lcul; gF field_8866 COMMAND_BLOCK + f Lcul; gG field_8668 BEACON + f Lcul; gH field_8392 COBBLESTONE_WALL + f Lcul; gI field_8708 MOSSY_COBBLESTONE_WALL + f Lcul; gJ field_8804 BRICK_WALL + f Lcul; gK field_8057 PRISMARINE_WALL + f Lcul; gL field_8359 RED_SANDSTONE_WALL + f Lcul; g field_20407 ANDESITE + f Lcul; gM field_8811 MOSSY_STONE_BRICK_WALL + f Lcul; gN field_8488 GRANITE_WALL + f Lcul; gO field_8337 STONE_BRICK_WALL + f Lcul; gP field_37521 MUD_BRICK_WALL + f Lcul; gQ field_8765 NETHER_BRICK_WALL + f Lcul; gR field_8206 ANDESITE_WALL + f Lcul; gS field_8419 RED_NETHER_BRICK_WALL + f Lcul; gT field_8223 SANDSTONE_WALL + f Lcul; gU field_8819 END_STONE_BRICK_WALL + f Lcul; gV field_8559 DIORITE_WALL + f Lcul; gW field_23846 BLACKSTONE_WALL + f Lcul; gX field_23833 POLISHED_BLACKSTONE_WALL + f Lcul; gY field_23840 POLISHED_BLACKSTONE_BRICK_WALL + f Lcul; gZ field_28862 COBBLED_DEEPSLATE_WALL + f Lcul; ga field_8610 MYCELIUM + f Lcul; gb field_17524 LILY_PAD + f Lcul; gc field_20398 NETHER_BRICKS + f Lcul; gd field_23828 CRACKED_NETHER_BRICKS + f Lcul; ge field_23829 CHISELED_NETHER_BRICKS + f Lcul; gf field_8080 NETHER_BRICK_FENCE + f Lcul; gg field_8444 NETHER_BRICK_STAIRS + f Lcul; gh field_37523 SCULK + f Lcul; gi field_37524 SCULK_VEIN + f Lcul; gj field_37525 SCULK_CATALYST + f Lcul; gk field_37538 SCULK_SHRIEKER + f Lcul; gl field_8657 ENCHANTING_TABLE + f Lcul; gm field_8827 END_PORTAL_FRAME + f Lcul; gn field_20399 END_STONE + f Lcul; go field_20400 END_STONE_BRICKS + f Lcul; gp field_8840 DRAGON_EGG + f Lcul; gq field_8443 SANDSTONE_STAIRS + f Lcul; gr field_8466 ENDER_CHEST + f Lcul; gs field_8733 EMERALD_BLOCK + f Lcul; gt field_8212 OAK_STAIRS + f Lcul; gu field_8122 SPRUCE_STAIRS + f Lcul; gv field_8130 BIRCH_STAIRS + f Lcul; gw field_8311 JUNGLE_STAIRS + f Lcul; gx field_8445 ACACIA_STAIRS + f Lcul; gy field_42700 CHERRY_STAIRS + f Lcul; gz field_8658 DARK_OAK_STAIRS + f Lcul; hA field_8181 BLACK_TERRACOTTA + f Lcul; hB field_8077 BARRIER + f Lcul; hC field_30904 LIGHT + f Lcul; hD field_17528 HAY_BLOCK + f Lcul; hE field_8850 WHITE_CARPET + f Lcul; hF field_8683 ORANGE_CARPET + f Lcul; hG field_8384 MAGENTA_CARPET + f Lcul; hH field_8078 LIGHT_BLUE_CARPET + f Lcul; hI field_8142 YELLOW_CARPET + f Lcul; hJ field_8253 LIME_CARPET + f Lcul; hK field_8580 PINK_CARPET + f Lcul; hL field_8875 GRAY_CARPET + f Lcul; h field_20411 POLISHED_ANDESITE + f Lcul; hM field_8654 LIGHT_GRAY_CARPET + f Lcul; hN field_8290 CYAN_CARPET + f Lcul; hO field_8098 PURPLE_CARPET + f Lcul; hP field_8115 BLUE_CARPET + f Lcul; hQ field_8294 BROWN_CARPET + f Lcul; hR field_8664 GREEN_CARPET + f Lcul; hS field_8482 RED_CARPET + f Lcul; hT field_8611 BLACK_CARPET + f Lcul; hU field_8260 TERRACOTTA + f Lcul; hV field_8081 PACKED_ICE + f Lcul; hW field_8519 DIRT_PATH + f Lcul; hX field_17525 SUNFLOWER + f Lcul; hY field_17526 LILAC + f Lcul; hZ field_17527 ROSE_BUSH + f Lcul; ha field_28863 POLISHED_DEEPSLATE_WALL + f Lcul; hb field_28865 DEEPSLATE_BRICK_WALL + f Lcul; hc field_28864 DEEPSLATE_TILE_WALL + f Lcul; hd field_8782 ANVIL + f Lcul; he field_8750 CHIPPED_ANVIL + f Lcul; hf field_8427 DAMAGED_ANVIL + f Lcul; hg field_8084 CHISELED_QUARTZ_BLOCK + f Lcul; hh field_20402 QUARTZ_BLOCK + f Lcul; hi field_23830 QUARTZ_BRICKS + f Lcul; hj field_8746 QUARTZ_PILLAR + f Lcul; hk field_8499 QUARTZ_STAIRS + f Lcul; hl field_8156 WHITE_TERRACOTTA + f Lcul; hm field_8043 ORANGE_TERRACOTTA + f Lcul; hn field_8783 MAGENTA_TERRACOTTA + f Lcul; ho field_8717 LIGHT_BLUE_TERRACOTTA + f Lcul; hp field_8385 YELLOW_TERRACOTTA + f Lcul; hq field_8672 LIME_TERRACOTTA + f Lcul; hr field_8853 PINK_TERRACOTTA + f Lcul; hs field_8304 GRAY_TERRACOTTA + f Lcul; ht field_8133 LIGHT_GRAY_TERRACOTTA + f Lcul; hu field_8821 CYAN_TERRACOTTA + f Lcul; hv field_8715 PURPLE_TERRACOTTA + f Lcul; hw field_8455 BLUE_TERRACOTTA + f Lcul; hx field_8467 BROWN_TERRACOTTA + f Lcul; hy field_8798 GREEN_TERRACOTTA + f Lcul; hz field_8353 RED_TERRACOTTA + f Lcul; iA field_8871 GRAY_STAINED_GLASS_PANE + f Lcul; iB field_8240 LIGHT_GRAY_STAINED_GLASS_PANE + f Lcul; iC field_8085 CYAN_STAINED_GLASS_PANE + f Lcul; iD field_8739 PURPLE_STAINED_GLASS_PANE + f Lcul; iE field_8747 BLUE_STAINED_GLASS_PANE + f Lcul; iF field_8501 BROWN_STAINED_GLASS_PANE + f Lcul; iG field_8656 GREEN_STAINED_GLASS_PANE + f Lcul; iH field_8879 RED_STAINED_GLASS_PANE + f Lcul; iI field_8157 BLACK_STAINED_GLASS_PANE + f Lcul; iJ field_20404 PRISMARINE + f Lcul; iK field_20405 PRISMARINE_BRICKS + f Lcul; iL field_20406 DARK_PRISMARINE + f Lcul; i field_28866 DEEPSLATE + f Lcul; iM field_8386 PRISMARINE_STAIRS + f Lcul; iN field_8673 PRISMARINE_BRICK_STAIRS + f Lcul; iO field_8854 DARK_PRISMARINE_STAIRS + f Lcul; iP field_8305 SEA_LANTERN + f Lcul; iQ field_20408 RED_SANDSTONE + f Lcul; iR field_8822 CHISELED_RED_SANDSTONE + f Lcul; iS field_20409 CUT_RED_SANDSTONE + f Lcul; iT field_8456 RED_SANDSTONE_STAIRS + f Lcul; iU field_8468 REPEATING_COMMAND_BLOCK + f Lcul; iV field_8799 CHAIN_COMMAND_BLOCK + f Lcul; iW field_8354 MAGMA_BLOCK + f Lcul; iX field_8182 NETHER_WART_BLOCK + f Lcul; iY field_22008 WARPED_WART_BLOCK + f Lcul; iZ field_20410 RED_NETHER_BRICKS + f Lcul; ia field_17529 PEONY + f Lcul; ib field_8256 TALL_GRASS + f Lcul; ic field_8561 LARGE_FERN + f Lcul; id field_8483 WHITE_STAINED_GLASS + f Lcul; ie field_8393 ORANGE_STAINED_GLASS + f Lcul; if field_8243 MAGENTA_STAINED_GLASS + f Lcul; ig field_8869 LIGHT_BLUE_STAINED_GLASS + f Lcul; ih field_8095 YELLOW_STAINED_GLASS + f Lcul; ii field_8340 LIME_STAINED_GLASS + f Lcul; ij field_8770 PINK_STAINED_GLASS + f Lcul; ik field_8507 GRAY_STAINED_GLASS + f Lcul; il field_8363 LIGHT_GRAY_STAINED_GLASS + f Lcul; im field_8685 CYAN_STAINED_GLASS + f Lcul; in field_8838 PURPLE_STAINED_GLASS + f Lcul; io field_8126 BLUE_STAINED_GLASS + f Lcul; ip field_8332 BROWN_STAINED_GLASS + f Lcul; iq field_8734 GREEN_STAINED_GLASS + f Lcul; ir field_8636 RED_STAINED_GLASS + f Lcul; is field_8410 BLACK_STAINED_GLASS + f Lcul; it field_8736 WHITE_STAINED_GLASS_PANE + f Lcul; iu field_8761 ORANGE_STAINED_GLASS_PANE + f Lcul; iv field_8119 MAGENTA_STAINED_GLASS_PANE + f Lcul; iw field_8196 LIGHT_BLUE_STAINED_GLASS_PANE + f Lcul; ix field_8703 YELLOW_STAINED_GLASS_PANE + f Lcul; iy field_8581 LIME_STAINED_GLASS_PANE + f Lcul; iz field_8500 PINK_STAINED_GLASS_PANE + f Lcul; jA field_8885 GRAY_GLAZED_TERRACOTTA + f Lcul; jB field_8172 LIGHT_GRAY_GLAZED_TERRACOTTA + f Lcul; jC field_8257 CYAN_GLAZED_TERRACOTTA + f Lcul; jD field_8562 PURPLE_GLAZED_TERRACOTTA + f Lcul; jE field_8484 BLUE_GLAZED_TERRACOTTA + f Lcul; jF field_8394 BROWN_GLAZED_TERRACOTTA + f Lcul; jG field_8244 GREEN_GLAZED_TERRACOTTA + f Lcul; jH field_8870 RED_GLAZED_TERRACOTTA + f Lcul; jI field_8096 BLACK_GLAZED_TERRACOTTA + f Lcul; jJ field_8341 WHITE_CONCRETE + f Lcul; jK field_8771 ORANGE_CONCRETE + f Lcul; jL field_8508 MAGENTA_CONCRETE + f Lcul; j field_29025 COBBLED_DEEPSLATE + f Lcul; jM field_8364 LIGHT_BLUE_CONCRETE + f Lcul; jN field_8686 YELLOW_CONCRETE + f Lcul; jO field_8839 LIME_CONCRETE + f Lcul; jP field_8127 PINK_CONCRETE + f Lcul; jQ field_8333 GRAY_CONCRETE + f Lcul; jR field_8735 LIGHT_GRAY_CONCRETE + f Lcul; jS field_8637 CYAN_CONCRETE + f Lcul; jT field_8411 PURPLE_CONCRETE + f Lcul; jU field_8737 BLUE_CONCRETE + f Lcul; jV field_8762 BROWN_CONCRETE + f Lcul; jW field_8120 GREEN_CONCRETE + f Lcul; jX field_8197 RED_CONCRETE + f Lcul; jY field_8704 BLACK_CONCRETE + f Lcul; jZ field_8582 WHITE_CONCRETE_POWDER + f Lcul; ja field_8242 BONE_BLOCK + f Lcul; jb field_8615 STRUCTURE_VOID + f Lcul; jc field_8545 SHULKER_BOX + f Lcul; jd field_8722 WHITE_SHULKER_BOX + f Lcul; je field_8380 ORANGE_SHULKER_BOX + f Lcul; jf field_8050 MAGENTA_SHULKER_BOX + f Lcul; jg field_8829 LIGHT_BLUE_SHULKER_BOX + f Lcul; jh field_8271 YELLOW_SHULKER_BOX + f Lcul; ji field_8548 LIME_SHULKER_BOX + f Lcul; jj field_8520 PINK_SHULKER_BOX + f Lcul; jk field_8627 GRAY_SHULKER_BOX + f Lcul; jl field_8451 LIGHT_GRAY_SHULKER_BOX + f Lcul; jm field_8213 CYAN_SHULKER_BOX + f Lcul; jn field_8816 PURPLE_SHULKER_BOX + f Lcul; jo field_8350 BLUE_SHULKER_BOX + f Lcul; jp field_8584 BROWN_SHULKER_BOX + f Lcul; jq field_8461 GREEN_SHULKER_BOX + f Lcul; jr field_8676 RED_SHULKER_BOX + f Lcul; js field_8268 BLACK_SHULKER_BOX + f Lcul; jt field_8177 WHITE_GLAZED_TERRACOTTA + f Lcul; ju field_8139 ORANGE_GLAZED_TERRACOTTA + f Lcul; jv field_8318 MAGENTA_GLAZED_TERRACOTTA + f Lcul; jw field_8640 LIGHT_BLUE_GLAZED_TERRACOTTA + f Lcul; jx field_8889 YELLOW_GLAZED_TERRACOTTA + f Lcul; jy field_8649 LIME_GLAZED_TERRACOTTA + f Lcul; jz field_8277 PINK_GLAZED_TERRACOTTA + f Lcul; kA field_8104 HORN_CORAL_BLOCK + f Lcul; kB field_8847 TUBE_CORAL + f Lcul; kC field_8616 BRAIN_CORAL + f Lcul; kD field_8538 BUBBLE_CORAL + f Lcul; kE field_8546 FIRE_CORAL + f Lcul; kF field_8723 HORN_CORAL + f Lcul; kG field_8381 DEAD_BRAIN_CORAL + f Lcul; kH field_8051 DEAD_BUBBLE_CORAL + f Lcul; kI field_8830 DEAD_FIRE_CORAL + f Lcul; kJ field_8272 DEAD_HORN_CORAL + f Lcul; kK field_8549 DEAD_TUBE_CORAL + f Lcul; kL field_8521 TUBE_CORAL_FAN + f Lcul; k field_28871 POLISHED_DEEPSLATE + f Lcul; kM field_8628 BRAIN_CORAL_FAN + f Lcul; kN field_8452 BUBBLE_CORAL_FAN + f Lcul; kO field_8214 FIRE_CORAL_FAN + f Lcul; kP field_8817 HORN_CORAL_FAN + f Lcul; kQ field_8351 DEAD_TUBE_CORAL_FAN + f Lcul; kR field_8585 DEAD_BRAIN_CORAL_FAN + f Lcul; kS field_8462 DEAD_BUBBLE_CORAL_FAN + f Lcul; kT field_8677 DEAD_FIRE_CORAL_FAN + f Lcul; kU field_8269 DEAD_HORN_CORAL_FAN + f Lcul; kV field_8178 BLUE_ICE + f Lcul; kW field_8140 CONDUIT + f Lcul; kX field_8319 POLISHED_GRANITE_STAIRS + f Lcul; kY field_8641 SMOOTH_RED_SANDSTONE_STAIRS + f Lcul; kZ field_8890 MOSSY_STONE_BRICK_STAIRS + f Lcul; ka field_8487 ORANGE_CONCRETE_POWDER + f Lcul; kb field_8336 MAGENTA_CONCRETE_POWDER + f Lcul; kc field_8764 LIGHT_BLUE_CONCRETE_POWDER + f Lcul; kd field_8205 YELLOW_CONCRETE_POWDER + f Lcul; ke field_8418 LIME_CONCRETE_POWDER + f Lcul; kf field_8222 PINK_CONCRETE_POWDER + f Lcul; kg field_8818 GRAY_CONCRETE_POWDER + f Lcul; kh field_8558 LIGHT_GRAY_CONCRETE_POWDER + f Lcul; ki field_8593 CYAN_CONCRETE_POWDER + f Lcul; kj field_8690 PURPLE_CONCRETE_POWDER + f Lcul; kk field_8164 BLUE_CONCRETE_POWDER + f Lcul; kl field_8437 BROWN_CONCRETE_POWDER + f Lcul; km field_8198 GREEN_CONCRETE_POWDER + f Lcul; kn field_8757 RED_CONCRETE_POWDER + f Lcul; ko field_8516 BLACK_CONCRETE_POWDER + f Lcul; kp field_8618 TURTLE_EGG + f Lcul; kq field_43193 SNIFFER_EGG + f Lcul; kr field_8856 DEAD_TUBE_CORAL_BLOCK + f Lcul; ks field_8237 DEAD_BRAIN_CORAL_BLOCK + f Lcul; kt field_8089 DEAD_BUBBLE_CORAL_BLOCK + f Lcul; ku field_8160 DEAD_FIRE_CORAL_BLOCK + f Lcul; kv field_8698 DEAD_HORN_CORAL_BLOCK + f Lcul; kw field_8402 TUBE_CORAL_BLOCK + f Lcul; kx field_8474 BRAIN_CORAL_BLOCK + f Lcul; ky field_8883 BUBBLE_CORAL_BLOCK + f Lcul; kz field_8278 FIRE_CORAL_BLOCK + f Lcul; lA field_8395 POLISHED_ANDESITE_SLAB + f Lcul; lB field_8659 DIORITE_SLAB + f Lcul; lC field_28873 COBBLED_DEEPSLATE_SLAB + f Lcul; lD field_28872 POLISHED_DEEPSLATE_SLAB + f Lcul; lE field_28875 DEEPSLATE_BRICK_SLAB + f Lcul; lF field_28874 DEEPSLATE_TILE_SLAB + f Lcul; lG field_16482 SCAFFOLDING + f Lcul; lH field_8725 REDSTONE + f Lcul; lI field_8530 REDSTONE_TORCH + f Lcul; lJ field_8793 REDSTONE_BLOCK + f Lcul; lK field_8619 REPEATER + f Lcul; lL field_8857 COMPARATOR + f Lcul; l field_27020 CALCITE + f Lcul; lM field_8249 PISTON + f Lcul; lN field_8105 STICKY_PISTON + f Lcul; lO field_8828 SLIME_BLOCK + f Lcul; lP field_21086 HONEY_BLOCK + f Lcul; lQ field_8537 OBSERVER + f Lcul; lR field_8239 HOPPER + f Lcul; lS field_8357 DISPENSER + f Lcul; lT field_8878 DROPPER + f Lcul; lU field_16312 LECTERN + f Lcul; lV field_22420 TARGET + f Lcul; lW field_8865 LEVER + f Lcul; lX field_27051 LIGHTNING_ROD + f Lcul; lY field_8566 DAYLIGHT_DETECTOR + f Lcul; lZ field_28101 SCULK_SENSOR + f Lcul; la field_8650 POLISHED_DIORITE_STAIRS + f Lcul; lb field_8275 MOSSY_COBBLESTONE_STAIRS + f Lcul; lc field_8152 END_STONE_BRICK_STAIRS + f Lcul; ld field_8053 STONE_STAIRS + f Lcul; le field_8166 SMOOTH_SANDSTONE_STAIRS + f Lcul; lf field_8430 SMOOTH_QUARTZ_STAIRS + f Lcul; lg field_8608 GRANITE_STAIRS + f Lcul; lh field_8526 ANDESITE_STAIRS + f Lcul; li field_8302 RED_NETHER_BRICK_STAIRS + f Lcul; lj field_8316 POLISHED_ANDESITE_STAIRS + f Lcul; lk field_8860 DIORITE_STAIRS + f Lcul; ll field_28867 COBBLED_DEEPSLATE_STAIRS + f Lcul; lm field_28868 POLISHED_DEEPSLATE_STAIRS + f Lcul; ln field_28870 DEEPSLATE_BRICK_STAIRS + f Lcul; lo field_28869 DEEPSLATE_TILE_STAIRS + f Lcul; lp field_8228 POLISHED_GRANITE_SLAB + f Lcul; lq field_8266 SMOOTH_RED_SANDSTONE_SLAB + f Lcul; lr field_8576 MOSSY_STONE_BRICK_SLAB + f Lcul; ls field_8569 POLISHED_DIORITE_SLAB + f Lcul; lt field_8369 MOSSY_COBBLESTONE_SLAB + f Lcul; lu field_8282 END_STONE_BRICK_SLAB + f Lcul; lv field_8872 SMOOTH_SANDSTONE_SLAB + f Lcul; lw field_8217 SMOOTH_QUARTZ_SLAB + f Lcul; lx field_8312 GRANITE_SLAB + f Lcul; ly field_8742 ANDESITE_SLAB + f Lcul; lz field_8522 RED_NETHER_BRICK_SLAB + f Lcul; mA field_8047 JUNGLE_PRESSURE_PLATE + f Lcul; mB field_8173 ACACIA_PRESSURE_PLATE + f Lcul; mC field_42704 CHERRY_PRESSURE_PLATE + f Lcul; mD field_8886 DARK_OAK_PRESSURE_PLATE + f Lcul; mE field_37527 MANGROVE_PRESSURE_PLATE + f Lcul; mF field_40221 BAMBOO_PRESSURE_PLATE + f Lcul; mG field_21993 CRIMSON_PRESSURE_PLATE + f Lcul; mH field_21994 WARPED_PRESSURE_PLATE + f Lcul; mI field_8594 IRON_DOOR + f Lcul; mJ field_8691 OAK_DOOR + f Lcul; mK field_8165 SPRUCE_DOOR + f Lcul; mL field_8438 BIRCH_DOOR + f Lcul; m field_27021 TUFF + f Lcul; mM field_8199 JUNGLE_DOOR + f Lcul; mN field_8758 ACACIA_DOOR + f Lcul; mO field_42705 CHERRY_DOOR + f Lcul; mP field_8517 DARK_OAK_DOOR + f Lcul; mQ field_37528 MANGROVE_DOOR + f Lcul; mR field_40222 BAMBOO_DOOR + f Lcul; mS field_22010 CRIMSON_DOOR + f Lcul; mT field_22009 WARPED_DOOR + f Lcul; mU field_46982 COPPER_DOOR + f Lcul; mV field_46983 EXPOSED_COPPER_DOOR + f Lcul; mW field_46984 WEATHERED_COPPER_DOOR + f Lcul; mX field_46985 OXIDIZED_COPPER_DOOR + f Lcul; mY field_46986 WAXED_COPPER_DOOR + f Lcul; mZ field_46987 WAXED_EXPOSED_COPPER_DOOR + f Lcul; ma field_43194 CALIBRATED_SCULK_SENSOR + f Lcul; mb field_8366 TRIPWIRE_HOOK + f Lcul; mc field_8247 TRAPPED_CHEST + f Lcul; md field_8626 TNT + f Lcul; me field_8230 REDSTONE_LAMP + f Lcul; mf field_8643 NOTE_BLOCK + f Lcul; mg field_8781 STONE_BUTTON + f Lcul; mh field_23834 POLISHED_BLACKSTONE_BUTTON + f Lcul; mi field_8780 OAK_BUTTON + f Lcul; mj field_8048 SPRUCE_BUTTON + f Lcul; mk field_8174 BIRCH_BUTTON + f Lcul; ml field_8887 JUNGLE_BUTTON + f Lcul; mm field_8605 ACACIA_BUTTON + f Lcul; mn field_42701 CHERRY_BUTTON + f Lcul; mo field_8531 DARK_OAK_BUTTON + f Lcul; mp field_37530 MANGROVE_BUTTON + f Lcul; mq field_40223 BAMBOO_BUTTON + f Lcul; mr field_22004 CRIMSON_BUTTON + f Lcul; ms field_22005 WARPED_BUTTON + f Lcul; mt field_8667 STONE_PRESSURE_PLATE + f Lcul; mu field_23835 POLISHED_BLACKSTONE_PRESSURE_PLATE + f Lcul; mv field_8721 LIGHT_WEIGHTED_PRESSURE_PLATE + f Lcul; mw field_8592 HEAVY_WEIGHTED_PRESSURE_PLATE + f Lcul; mx field_8391 OAK_PRESSURE_PLATE + f Lcul; my field_8707 SPRUCE_PRESSURE_PLATE + f Lcul; mz field_8779 BIRCH_PRESSURE_PLATE + f Lcul; nA field_8114 ACACIA_FENCE_GATE + f Lcul; nB field_42703 CHERRY_FENCE_GATE + f Lcul; nC field_8293 DARK_OAK_FENCE_GATE + f Lcul; nD field_37532 MANGROVE_FENCE_GATE + f Lcul; nE field_40227 BAMBOO_FENCE_GATE + f Lcul; nF field_21997 CRIMSON_FENCE_GATE + f Lcul; nG field_21998 WARPED_FENCE_GATE + f Lcul; nH field_8848 POWERED_RAIL + f Lcul; nI field_8211 DETECTOR_RAIL + f Lcul; nJ field_8129 RAIL + f Lcul; nK field_8655 ACTIVATOR_RAIL + f Lcul; nL field_8175 SADDLE + f Lcul; n field_46989 TUFF_SLAB + f Lcul; nM field_8045 MINECART + f Lcul; nN field_8388 CHEST_MINECART + f Lcul; nO field_8063 FURNACE_MINECART + f Lcul; nP field_8069 TNT_MINECART + f Lcul; nQ field_8836 HOPPER_MINECART + f Lcul; nR field_8184 CARROT_ON_A_STICK + f Lcul; nS field_23254 WARPED_FUNGUS_ON_A_STICK + f Lcul; nT field_8833 ELYTRA + f Lcul; nU field_8533 OAK_BOAT + f Lcul; nV field_38216 OAK_CHEST_BOAT + f Lcul; nW field_8486 SPRUCE_BOAT + f Lcul; nX field_38217 SPRUCE_CHEST_BOAT + f Lcul; nY field_8442 BIRCH_BOAT + f Lcul; nZ field_38218 BIRCH_CHEST_BOAT + f Lcul; na field_46988 WAXED_WEATHERED_COPPER_DOOR + f Lcul; nb field_46990 WAXED_OXIDIZED_COPPER_DOOR + f Lcul; nc field_8241 IRON_TRAPDOOR + f Lcul; nd field_8376 OAK_TRAPDOOR + f Lcul; ne field_8495 SPRUCE_TRAPDOOR + f Lcul; nf field_8774 BIRCH_TRAPDOOR + f Lcul; ng field_8321 JUNGLE_TRAPDOOR + f Lcul; nh field_8190 ACACIA_TRAPDOOR + f Lcul; ni field_42702 CHERRY_TRAPDOOR + f Lcul; nj field_8844 DARK_OAK_TRAPDOOR + f Lcul; nk field_37529 MANGROVE_TRAPDOOR + f Lcul; nl field_40226 BAMBOO_TRAPDOOR + f Lcul; nm field_22002 CRIMSON_TRAPDOOR + f Lcul; nn field_22003 WARPED_TRAPDOOR + f Lcul; no field_46991 COPPER_TRAPDOOR + f Lcul; np field_46992 EXPOSED_COPPER_TRAPDOOR + f Lcul; nq field_46993 WEATHERED_COPPER_TRAPDOOR + f Lcul; nr field_46994 OXIDIZED_COPPER_TRAPDOOR + f Lcul; ns field_46995 WAXED_COPPER_TRAPDOOR + f Lcul; nt field_46996 WAXED_EXPOSED_COPPER_TRAPDOOR + f Lcul; nu field_46997 WAXED_WEATHERED_COPPER_TRAPDOOR + f Lcul; nv field_46998 WAXED_OXIDIZED_COPPER_TRAPDOOR + f Lcul; nw field_8874 OAK_FENCE_GATE + f Lcul; nx field_8653 SPRUCE_FENCE_GATE + f Lcul; ny field_8289 BIRCH_FENCE_GATE + f Lcul; nz field_8097 JUNGLE_FENCE_GATE + f Lcul; oA field_8687 EMERALD + f Lcul; oB field_8759 LAPIS_LAZULI + f Lcul; oC field_8155 QUARTZ + f Lcul; oD field_27063 AMETHYST_SHARD + f Lcul; oE field_33400 RAW_IRON + f Lcul; oF field_8620 IRON_INGOT + f Lcul; oG field_33401 RAW_COPPER + f Lcul; oH field_27022 COPPER_INGOT + f Lcul; oI field_33402 RAW_GOLD + f Lcul; oJ field_8695 GOLD_INGOT + f Lcul; oK field_22020 NETHERITE_INGOT + f Lcul; oL field_22021 NETHERITE_SCRAP + f Lcul; o field_46999 TUFF_STAIRS + f Lcul; oM field_8091 WOODEN_SWORD + f Lcul; oN field_8876 WOODEN_SHOVEL + f Lcul; oO field_8647 WOODEN_PICKAXE + f Lcul; oP field_8406 WOODEN_AXE + f Lcul; oQ field_8167 WOODEN_HOE + f Lcul; oR field_8528 STONE_SWORD + f Lcul; oS field_8776 STONE_SHOVEL + f Lcul; oT field_8387 STONE_PICKAXE + f Lcul; oU field_8062 STONE_AXE + f Lcul; oV field_8431 STONE_HOE + f Lcul; oW field_8845 GOLDEN_SWORD + f Lcul; oX field_8322 GOLDEN_SHOVEL + f Lcul; oY field_8335 GOLDEN_PICKAXE + f Lcul; oZ field_8825 GOLDEN_AXE + f Lcul; oa field_8730 JUNGLE_BOAT + f Lcul; ob field_38212 JUNGLE_CHEST_BOAT + f Lcul; oc field_8094 ACACIA_BOAT + f Lcul; od field_38213 ACACIA_CHEST_BOAT + f Lcul; oe field_42706 CHERRY_BOAT + f Lcul; of field_42707 CHERRY_CHEST_BOAT + f Lcul; og field_8138 DARK_OAK_BOAT + f Lcul; oh field_38214 DARK_OAK_CHEST_BOAT + f Lcul; oi field_37531 MANGROVE_BOAT + f Lcul; oj field_38215 MANGROVE_CHEST_BOAT + f Lcul; ok field_40224 BAMBOO_RAFT + f Lcul; ol field_40225 BAMBOO_CHEST_RAFT + f Lcul; om field_8238 STRUCTURE_BLOCK + f Lcul; on field_16538 JIGSAW + f Lcul; oo field_8090 TURTLE_HELMET + f Lcul; op field_8161 TURTLE_SCUTE + f Lcul; oq field_47830 ARMADILLO_SCUTE + f Lcul; or field_47831 WOLF_ARMOR + f Lcul; os field_8884 FLINT_AND_STEEL + f Lcul; ot field_8428 BOWL + f Lcul; ou field_8279 APPLE + f Lcul; ov field_8102 BOW + f Lcul; ow field_8107 ARROW + f Lcul; ox field_8713 COAL + f Lcul; oy field_8665 CHARCOAL + f Lcul; oz field_8477 DIAMOND + f Lcul; pA field_8570 LEATHER_LEGGINGS + f Lcul; pB field_8370 LEATHER_BOOTS + f Lcul; pC field_8283 CHAINMAIL_HELMET + f Lcul; pD field_8873 CHAINMAIL_CHESTPLATE + f Lcul; pE field_8218 CHAINMAIL_LEGGINGS + f Lcul; pF field_8313 CHAINMAIL_BOOTS + f Lcul; pG field_8743 IRON_HELMET + f Lcul; pH field_8523 IRON_CHESTPLATE + f Lcul; pI field_8396 IRON_LEGGINGS + f Lcul; pJ field_8660 IRON_BOOTS + f Lcul; pK field_8805 DIAMOND_HELMET + f Lcul; pL field_8058 DIAMOND_CHESTPLATE + f Lcul; p field_47000 TUFF_WALL + f Lcul; pM field_8348 DIAMOND_LEGGINGS + f Lcul; pN field_8285 DIAMOND_BOOTS + f Lcul; pO field_8862 GOLDEN_HELMET + f Lcul; pP field_8678 GOLDEN_CHESTPLATE + f Lcul; pQ field_8416 GOLDEN_LEGGINGS + f Lcul; pR field_8753 GOLDEN_BOOTS + f Lcul; pS field_22027 NETHERITE_HELMET + f Lcul; pT field_22028 NETHERITE_CHESTPLATE + f Lcul; pU field_22029 NETHERITE_LEGGINGS + f Lcul; pV field_22030 NETHERITE_BOOTS + f Lcul; pW field_8145 FLINT + f Lcul; pX field_8389 PORKCHOP + f Lcul; pY field_8261 COOKED_PORKCHOP + f Lcul; pZ field_8892 PAINTING + f Lcul; pa field_8303 GOLDEN_HOE + f Lcul; pb field_8371 IRON_SWORD + f Lcul; pc field_8699 IRON_SHOVEL + f Lcul; pd field_8403 IRON_PICKAXE + f Lcul; pe field_8475 IRON_AXE + f Lcul; pf field_8609 IRON_HOE + f Lcul; pg field_8802 DIAMOND_SWORD + f Lcul; ph field_8250 DIAMOND_SHOVEL + f Lcul; pi field_8377 DIAMOND_PICKAXE + f Lcul; pj field_8556 DIAMOND_AXE + f Lcul; pk field_8527 DIAMOND_HOE + f Lcul; pl field_22022 NETHERITE_SWORD + f Lcul; pm field_22023 NETHERITE_SHOVEL + f Lcul; pn field_22024 NETHERITE_PICKAXE + f Lcul; po field_22025 NETHERITE_AXE + f Lcul; pp field_22026 NETHERITE_HOE + f Lcul; pq field_8600 STICK + f Lcul; pr field_8208 MUSHROOM_STEW + f Lcul; ps field_8276 STRING + f Lcul; pt field_8153 FEATHER + f Lcul; pu field_8054 GUNPOWDER + f Lcul; pv field_8317 WHEAT_SEEDS + f Lcul; pw field_8861 WHEAT + f Lcul; px field_8229 BREAD + f Lcul; py field_8267 LEATHER_HELMET + f Lcul; pz field_8577 LEATHER_CHESTPLATE + f Lcul; qA field_8187 LAVA_BUCKET + f Lcul; qB field_27876 POWDER_SNOW_BUCKET + f Lcul; qC field_8543 SNOWBALL + f Lcul; qD field_8745 LEATHER + f Lcul; qE field_8103 MILK_BUCKET + f Lcul; qF field_8108 PUFFERFISH_BUCKET + f Lcul; qG field_8714 SALMON_BUCKET + f Lcul; qH field_8666 COD_BUCKET + f Lcul; qI field_8478 TROPICAL_FISH_BUCKET + f Lcul; qJ field_28354 AXOLOTL_BUCKET + f Lcul; qK field_37533 TADPOLE_BUCKET + f Lcul; qL field_8621 BRICK + f Lcul; q field_47001 CHISELED_TUFF + f Lcul; qM field_8696 CLAY_BALL + f Lcul; qN field_17533 DRIED_KELP_BLOCK + f Lcul; qO field_8407 PAPER + f Lcul; qP field_8529 BOOK + f Lcul; qQ field_8777 SLIME_BALL + f Lcul; qR field_8803 EGG + f Lcul; qS field_8251 COMPASS + f Lcul; qT field_38747 RECOVERY_COMPASS + f Lcul; qU field_27023 BUNDLE + f Lcul; qV field_8378 FISHING_ROD + f Lcul; qW field_8557 CLOCK + f Lcul; qX field_27070 SPYGLASS + f Lcul; qY field_8601 GLOWSTONE_DUST + f Lcul; qZ field_8429 COD + f Lcul; qa field_8463 GOLDEN_APPLE + f Lcul; qb field_8367 ENCHANTED_GOLDEN_APPLE + f Lcul; qc field_8788 OAK_SIGN + f Lcul; qd field_8111 SPRUCE_SIGN + f Lcul; qe field_8422 BIRCH_SIGN + f Lcul; qf field_8867 JUNGLE_SIGN + f Lcul; qg field_8203 ACACIA_SIGN + f Lcul; qh field_42709 CHERRY_SIGN + f Lcul; qi field_8496 DARK_OAK_SIGN + f Lcul; qj field_37534 MANGROVE_SIGN + f Lcul; qk field_40228 BAMBOO_SIGN + f Lcul; ql field_22011 CRIMSON_SIGN + f Lcul; qm field_22012 WARPED_SIGN + f Lcul; qn field_40229 OAK_HANGING_SIGN + f Lcul; qo field_40230 SPRUCE_HANGING_SIGN + f Lcul; qp field_40231 BIRCH_HANGING_SIGN + f Lcul; qq field_40232 JUNGLE_HANGING_SIGN + f Lcul; qr field_40233 ACACIA_HANGING_SIGN + f Lcul; qs field_42708 CHERRY_HANGING_SIGN + f Lcul; qt field_40234 DARK_OAK_HANGING_SIGN + f Lcul; qu field_40235 MANGROVE_HANGING_SIGN + f Lcul; qv field_40236 BAMBOO_HANGING_SIGN + f Lcul; qw field_40237 CRIMSON_HANGING_SIGN + f Lcul; qx field_40238 WARPED_HANGING_SIGN + f Lcul; qy field_8550 BUCKET + f Lcul; qz field_8705 WATER_BUCKET + f Lcul; rA field_8479 SUGAR + f Lcul; rB field_17534 CAKE + f Lcul; rC field_8258 WHITE_BED + f Lcul; rD field_8059 ORANGE_BED + f Lcul; rE field_8349 MAGENTA_BED + f Lcul; rF field_8286 LIGHT_BLUE_BED + f Lcul; rG field_8863 YELLOW_BED + f Lcul; rH field_8679 LIME_BED + f Lcul; rI field_8417 PINK_BED + f Lcul; rJ field_8754 GRAY_BED + f Lcul; rK field_8146 LIGHT_GRAY_BED + f Lcul; rL field_8390 CYAN_BED + f Lcul; r field_47002 POLISHED_TUFF + f Lcul; rM field_8262 PURPLE_BED + f Lcul; rN field_8893 BLUE_BED + f Lcul; rO field_8464 BROWN_BED + f Lcul; rP field_8368 GREEN_BED + f Lcul; rQ field_8789 RED_BED + f Lcul; rR field_8112 BLACK_BED + f Lcul; rS field_8423 COOKIE + f Lcul; rT field_46791 CRAFTER + f Lcul; rU field_8204 FILLED_MAP + f Lcul; rV field_8868 SHEARS + f Lcul; rW field_8497 MELON_SLICE + f Lcul; rX field_8551 DRIED_KELP + f Lcul; rY field_46249 PUMPKIN_SEEDS + f Lcul; rZ field_46250 MELON_SEEDS + f Lcul; ra field_8209 SALMON + f Lcul; rb field_8846 TROPICAL_FISH + f Lcul; rc field_8323 PUFFERFISH + f Lcul; rd field_8373 COOKED_COD + f Lcul; re field_8509 COOKED_SALMON + f Lcul; rf field_8794 INK_SAC + f Lcul; rg field_28410 GLOW_INK_SAC + f Lcul; rh field_8116 COCOA_BEANS + f Lcul; ri field_8446 WHITE_DYE + f Lcul; rj field_8492 ORANGE_DYE + f Lcul; rk field_8669 MAGENTA_DYE + f Lcul; rl field_8273 LIGHT_BLUE_DYE + f Lcul; rm field_8192 YELLOW_DYE + f Lcul; rn field_8131 LIME_DYE + f Lcul; ro field_8330 PINK_DYE + f Lcul; rp field_8298 GRAY_DYE + f Lcul; rq field_8851 LIGHT_GRAY_DYE + f Lcul; rr field_8632 CYAN_DYE + f Lcul; rs field_8296 PURPLE_DYE + f Lcul; rt field_8345 BLUE_DYE + f Lcul; ru field_8099 BROWN_DYE + f Lcul; rv field_8408 GREEN_DYE + f Lcul; rw field_8264 RED_DYE + f Lcul; rx field_8226 BLACK_DYE + f Lcul; ry field_8324 BONE_MEAL + f Lcul; rz field_8606 BONE + f Lcul; sA field_49153 BOGGED_SPAWN_EGG + f Lcul; sB field_47313 BREEZE_SPAWN_EGG + f Lcul; sC field_16314 CAT_SPAWN_EGG + f Lcul; sD field_40239 CAMEL_SPAWN_EGG + f Lcul; sE field_8068 CAVE_SPIDER_SPAWN_EGG + f Lcul; sF field_8835 CHICKEN_SPAWN_EGG + f Lcul; sG field_8661 COD_SPAWN_EGG + f Lcul; sH field_8433 COW_SPAWN_EGG + f Lcul; sI field_8503 CREEPER_SPAWN_EGG + f Lcul; sJ field_8751 DOLPHIN_SPAWN_EGG + f Lcul; sK field_8306 DONKEY_SPAWN_EGG + f Lcul; sL field_8083 DROWNED_SPAWN_EGG + f Lcul; s field_47003 POLISHED_TUFF_SLAB + f Lcul; sM field_8769 ELDER_GUARDIAN_SPAWN_EGG + f Lcul; sN field_40865 ENDER_DRAGON_SPAWN_EGG + f Lcul; sO field_8374 ENDERMAN_SPAWN_EGG + f Lcul; sP field_8510 ENDERMITE_SPAWN_EGG + f Lcul; sQ field_8795 EVOKER_SPAWN_EGG + f Lcul; sR field_18005 FOX_SPAWN_EGG + f Lcul; sS field_37535 FROG_SPAWN_EGG + f Lcul; sT field_8265 GHAST_SPAWN_EGG + f Lcul; sU field_28407 GLOW_SQUID_SPAWN_EGG + f Lcul; sV field_30905 GOAT_SPAWN_EGG + f Lcul; sW field_8409 GUARDIAN_SPAWN_EGG + f Lcul; sX field_22014 HOGLIN_SPAWN_EGG + f Lcul; sY field_8117 HORSE_SPAWN_EGG + f Lcul; sZ field_8760 HUSK_SPAWN_EGG + f Lcul; sa field_8046 BEEF + f Lcul; sb field_8176 COOKED_BEEF + f Lcul; sc field_8726 CHICKEN + f Lcul; sd field_8544 COOKED_CHICKEN + f Lcul; se field_8511 ROTTEN_FLESH + f Lcul; sf field_8634 ENDER_PEARL + f Lcul; sg field_8894 BLAZE_ROD + f Lcul; sh field_8070 GHAST_TEAR + f Lcul; si field_8397 GOLD_NUGGET + f Lcul; sj field_8790 NETHER_WART + f Lcul; sk field_8574 POTION + f Lcul; sl field_8469 GLASS_BOTTLE + f Lcul; sm field_8680 SPIDER_EYE + f Lcul; sn field_8711 FERMENTED_SPIDER_EYE + f Lcul; so field_8183 BLAZE_POWDER + f Lcul; sp field_8135 MAGMA_CREAM + f Lcul; sq field_8740 BREWING_STAND + f Lcul; sr field_8638 CAULDRON + f Lcul; ss field_8449 ENDER_EYE + f Lcul; st field_8597 GLISTERING_MELON_SLICE + f Lcul; su field_47832 ARMADILLO_SPAWN_EGG + f Lcul; sv field_38419 ALLAY_SPAWN_EGG + f Lcul; sw field_28355 AXOLOTL_SPAWN_EGG + f Lcul; sx field_8727 BAT_SPAWN_EGG + f Lcul; sy field_20413 BEE_SPAWN_EGG + f Lcul; sz field_8154 BLAZE_SPAWN_EGG + f Lcul; tA field_8185 SPIDER_SPAWN_EGG + f Lcul; tB field_8307 SQUID_SPAWN_EGG + f Lcul; tC field_8514 STRAY_SPAWN_EGG + f Lcul; tD field_23255 STRIDER_SPAWN_EGG + f Lcul; tE field_37536 TADPOLE_SPAWN_EGG + f Lcul; tF field_17731 TRADER_LLAMA_SPAWN_EGG + f Lcul; tG field_8612 TROPICAL_FISH_SPAWN_EGG + f Lcul; tH field_8435 TURTLE_SPAWN_EGG + f Lcul; tI field_8235 VEX_SPAWN_EGG + f Lcul; tJ field_8086 VILLAGER_SPAWN_EGG + f Lcul; tK field_8149 VINDICATOR_SPAWN_EGG + f Lcul; tL field_17732 WANDERING_TRADER_SPAWN_EGG + f Lcul; t field_47004 POLISHED_TUFF_STAIRS + f Lcul; tM field_38219 WARDEN_SPAWN_EGG + f Lcul; tN field_8254 WITCH_SPAWN_EGG + f Lcul; tO field_40867 WITHER_SPAWN_EGG + f Lcul; tP field_8832 WITHER_SKELETON_SPAWN_EGG + f Lcul; tQ field_8485 WOLF_SPAWN_EGG + f Lcul; tR field_23744 ZOGLIN_SPAWN_EGG + f Lcul; tS field_8441 ZOMBIE_SPAWN_EGG + f Lcul; tT field_8728 ZOMBIE_HORSE_SPAWN_EGG + f Lcul; tU field_8136 ZOMBIE_VILLAGER_SPAWN_EGG + f Lcul; tV field_8093 ZOMBIFIED_PIGLIN_SPAWN_EGG + f Lcul; tW field_8287 EXPERIENCE_BOTTLE + f Lcul; tX field_8814 FIRE_CHARGE + f Lcul; tY field_49098 WIND_CHARGE + f Lcul; tZ field_8674 WRITABLE_BOOK + f Lcul; ta field_40864 IRON_GOLEM_SPAWN_EGG + f Lcul; tb field_8633 LLAMA_SPAWN_EGG + f Lcul; tc field_8852 MAGMA_CUBE_SPAWN_EGG + f Lcul; td field_8299 MOOSHROOM_SPAWN_EGG + f Lcul; te field_8331 MULE_SPAWN_EGG + f Lcul; tf field_8132 OCELOT_SPAWN_EGG + f Lcul; tg field_8193 PANDA_SPAWN_EGG + f Lcul; th field_8274 PARROT_SPAWN_EGG + f Lcul; ti field_8670 PHANTOM_SPAWN_EGG + f Lcul; tj field_8493 PIG_SPAWN_EGG + f Lcul; tk field_22401 PIGLIN_SPAWN_EGG + f Lcul; tl field_25777 PIGLIN_BRUTE_SPAWN_EGG + f Lcul; tm field_8325 PILLAGER_SPAWN_EGG + f Lcul; tn field_8346 POLAR_BEAR_SPAWN_EGG + f Lcul; to field_8100 PUFFERFISH_SPAWN_EGG + f Lcul; tp field_8227 RABBIT_SPAWN_EGG + f Lcul; tq field_8297 RAVAGER_SPAWN_EGG + f Lcul; tr field_8447 SALMON_SPAWN_EGG + f Lcul; ts field_8607 SHEEP_SPAWN_EGG + f Lcul; tt field_8480 SHULKER_SPAWN_EGG + f Lcul; tu field_8564 SILVERFISH_SPAWN_EGG + f Lcul; tv field_8300 SKELETON_SPAWN_EGG + f Lcul; tw field_8232 SKELETON_HORSE_SPAWN_EGG + f Lcul; tx field_8881 SLIME_SPAWN_EGG + f Lcul; ty field_42710 SNIFFER_SPAWN_EGG + f Lcul; tz field_40866 SNOW_GOLEM_SPAWN_EGG + f Lcul; uA field_8504 RABBIT + f Lcul; uB field_8752 COOKED_RABBIT + f Lcul; uC field_8308 RABBIT_STEW + f Lcul; uD field_8073 RABBIT_FOOT + f Lcul; uE field_8245 RABBIT_HIDE + f Lcul; uF field_8694 ARMOR_STAND + f Lcul; uG field_8578 IRON_HORSE_ARMOR + f Lcul; uH field_8560 GOLDEN_HORSE_ARMOR + f Lcul; uI field_8807 DIAMOND_HORSE_ARMOR + f Lcul; uJ field_18138 LEATHER_HORSE_ARMOR + f Lcul; uK field_8719 LEAD + f Lcul; uL field_8448 NAME_TAG + f Lcul; u field_47005 POLISHED_TUFF_WALL + f Lcul; uM field_8220 COMMAND_BLOCK_MINECART + f Lcul; uN field_8748 MUTTON + f Lcul; uO field_8347 COOKED_MUTTON + f Lcul; uP field_8539 WHITE_BANNER + f Lcul; uQ field_8824 ORANGE_BANNER + f Lcul; uR field_8671 MAGENTA_BANNER + f Lcul; uS field_8379 LIGHT_BLUE_BANNER + f Lcul; uT field_8049 YELLOW_BANNER + f Lcul; uU field_8778 LIME_BANNER + f Lcul; uV field_8329 PINK_BANNER + f Lcul; uW field_8617 GRAY_BANNER + f Lcul; uX field_8855 LIGHT_GRAY_BANNER + f Lcul; uY field_8629 CYAN_BANNER + f Lcul; uZ field_8405 PURPLE_BANNER + f Lcul; ua field_8360 WRITTEN_BOOK + f Lcul; ub field_49814 MACE + f Lcul; uc field_8143 ITEM_FRAME + f Lcul; ud field_28408 GLOW_ITEM_FRAME + f Lcul; ue field_8074 FLOWER_POT + f Lcul; uf field_8179 CARROT + f Lcul; ug field_8567 POTATO + f Lcul; uh field_8512 BAKED_POTATO + f Lcul; ui field_8635 POISONOUS_POTATO + f Lcul; uj field_8895 MAP + f Lcul; uk field_8071 GOLDEN_CARROT + f Lcul; ul field_8398 SKELETON_SKULL + f Lcul; um field_8791 WITHER_SKELETON_SKULL + f Lcul; un field_8575 PLAYER_HEAD + f Lcul; uo field_8470 ZOMBIE_HEAD + f Lcul; up field_8681 CREEPER_HEAD + f Lcul; uq field_8712 DRAGON_HEAD + f Lcul; ur field_41304 PIGLIN_HEAD + f Lcul; us field_8137 NETHER_STAR + f Lcul; ut field_8741 PUMPKIN_PIE + f Lcul; uu field_8639 FIREWORK_ROCKET + f Lcul; uv field_8450 FIREWORK_STAR + f Lcul; uw field_8598 ENCHANTED_BOOK + f Lcul; ux field_8729 NETHER_BRICK + f Lcul; uy field_8662 PRISMARINE_SHARD + f Lcul; uz field_8434 PRISMARINE_CRYSTALS + f Lcul; vA field_8425 MUSIC_DISC_BLOCKS + f Lcul; vB field_8623 MUSIC_DISC_CHIRP + f Lcul; vC field_51628 MUSIC_DISC_CREATOR + f Lcul; vD field_51629 MUSIC_DISC_CREATOR_MUSIC_BOX + f Lcul; vE field_8502 MUSIC_DISC_FAR + f Lcul; vF field_8534 MUSIC_DISC_MALL + f Lcul; vG field_8344 MUSIC_DISC_MELLOHI + f Lcul; vH field_8834 MUSIC_DISC_STAL + f Lcul; vI field_8065 MUSIC_DISC_STRAD + f Lcul; vJ field_8355 MUSIC_DISC_WARD + f Lcul; vK field_8731 MUSIC_DISC_11 + f Lcul; vL field_8806 MUSIC_DISC_WAIT + f Lcul; v field_47006 TUFF_BRICKS + f Lcul; vM field_35358 MUSIC_DISC_OTHERSIDE + f Lcul; vN field_44705 MUSIC_DISC_RELIC + f Lcul; vO field_38973 MUSIC_DISC_5 + f Lcul; vP field_23984 MUSIC_DISC_PIGSTEP + f Lcul; vQ field_51630 MUSIC_DISC_PRECIPICE + f Lcul; vR field_38974 DISC_FRAGMENT_5 + f Lcul; vS field_8547 TRIDENT + f Lcul; vT field_8614 PHANTOM_MEMBRANE + f Lcul; vU field_8864 NAUTILUS_SHELL + f Lcul; vV field_8207 HEART_OF_THE_SEA + f Lcul; vW field_8399 CROSSBOW + f Lcul; vX field_8766 SUSPICIOUS_STEW + f Lcul; vY field_8772 LOOM + f Lcul; vZ field_8498 FLOWER_BANNER_PATTERN + f Lcul; va field_8128 BLUE_BANNER + f Lcul; vb field_8124 BROWN_BANNER + f Lcul; vc field_8295 GREEN_BANNER + f Lcul; vd field_8586 RED_BANNER + f Lcul; ve field_8572 BLACK_BANNER + f Lcul; vf field_8301 END_CRYSTAL + f Lcul; vg field_8233 CHORUS_FRUIT + f Lcul; vh field_8882 POPPED_CHORUS_FRUIT + f Lcul; vi field_42711 TORCHFLOWER_SEEDS + f Lcul; vj field_43195 PITCHER_POD + f Lcul; vk field_8186 BEETROOT + f Lcul; vl field_8309 BEETROOT_SEEDS + f Lcul; vm field_8515 BEETROOT_SOUP + f Lcul; vn field_8613 DRAGON_BREATH + f Lcul; vo field_8436 SPLASH_POTION + f Lcul; vp field_8236 SPECTRAL_ARROW + f Lcul; vq field_8087 TIPPED_ARROW + f Lcul; vr field_8150 LINGERING_POTION + f Lcul; vs field_8255 SHIELD + f Lcul; vt field_8288 TOTEM_OF_UNDYING + f Lcul; vu field_8815 SHULKER_SHELL + f Lcul; vv field_8675 IRON_NUGGET + f Lcul; vw field_8361 KNOWLEDGE_BOOK + f Lcul; vx field_8688 DEBUG_STICK + f Lcul; vy field_8144 MUSIC_DISC_13 + f Lcul; vz field_8075 MUSIC_DISC_CAT + f Lcul; wA field_20415 BEE_NEST + f Lcul; wB field_20416 BEEHIVE + f Lcul; wC field_20417 HONEY_BOTTLE + f Lcul; wD field_21087 HONEYCOMB_BLOCK + f Lcul; wE field_23256 LODESTONE + f Lcul; wF field_22421 CRYING_OBSIDIAN + f Lcul; wG field_23843 BLACKSTONE + f Lcul; wH field_23844 BLACKSTONE_SLAB + f Lcul; wI field_23845 BLACKSTONE_STAIRS + f Lcul; wJ field_23847 GILDED_BLACKSTONE + f Lcul; wK field_23848 POLISHED_BLACKSTONE + f Lcul; wL field_23849 POLISHED_BLACKSTONE_SLAB + f Lcul; w field_47007 TUFF_BRICK_SLAB + f Lcul; wM field_23832 POLISHED_BLACKSTONE_STAIRS + f Lcul; wN field_23836 CHISELED_POLISHED_BLACKSTONE + f Lcul; wO field_23837 POLISHED_BLACKSTONE_BRICKS + f Lcul; wP field_23838 POLISHED_BLACKSTONE_BRICK_SLAB + f Lcul; wQ field_23839 POLISHED_BLACKSTONE_BRICK_STAIRS + f Lcul; wR field_23841 CRACKED_POLISHED_BLACKSTONE_BRICKS + f Lcul; wS field_23141 RESPAWN_ANCHOR + f Lcul; wT field_27024 CANDLE + f Lcul; wU field_27025 WHITE_CANDLE + f Lcul; wV field_27026 ORANGE_CANDLE + f Lcul; wW field_27027 MAGENTA_CANDLE + f Lcul; wX field_27028 LIGHT_BLUE_CANDLE + f Lcul; wY field_27029 YELLOW_CANDLE + f Lcul; wZ field_27052 LIME_CANDLE + f Lcul; wa field_8573 CREEPER_BANNER_PATTERN + f Lcul; wb field_8891 SKULL_BANNER_PATTERN + f Lcul; wc field_8159 MOJANG_BANNER_PATTERN + f Lcul; wd field_18674 GLOBE_BANNER_PATTERN + f Lcul; we field_23831 PIGLIN_BANNER_PATTERN + f Lcul; wf field_49815 FLOW_BANNER_PATTERN + f Lcul; wg field_49816 GUSTER_BANNER_PATTERN + f Lcul; wh field_39057 GOAT_HORN + f Lcul; wi field_17530 COMPOSTER + f Lcul; wj field_16307 BARREL + f Lcul; wk field_16309 SMOKER + f Lcul; wl field_16306 BLAST_FURNACE + f Lcul; wm field_16313 CARTOGRAPHY_TABLE + f Lcul; wn field_16310 FLETCHING_TABLE + f Lcul; wo field_16311 GRINDSTONE + f Lcul; wp field_16308 SMITHING_TABLE + f Lcul; wq field_16305 STONECUTTER + f Lcul; wr field_16315 BELL + f Lcul; ws field_16539 LANTERN + f Lcul; wt field_22016 SOUL_LANTERN + f Lcul; wu field_16998 SWEET_BERRIES + f Lcul; wv field_28659 GLOW_BERRIES + f Lcul; ww field_17346 CAMPFIRE + f Lcul; wx field_23842 SOUL_CAMPFIRE + f Lcul; wy field_22017 SHROOMLIGHT + f Lcul; wz field_20414 HONEYCOMB + f Lcul; xA field_41951 WARD_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xB field_41952 EYE_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xC field_41953 VEX_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xD field_41954 TIDE_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xE field_41955 SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xF field_41956 RIB_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xG field_41957 SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xH field_43196 WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xI field_43197 SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xJ field_43198 SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xK field_43199 RAISER_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xL field_43200 HOST_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; x field_47008 TUFF_BRICK_STAIRS + f Lcul; xM field_49817 FLOW_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xN field_49818 BOLT_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xO field_43201 ANGLER_POTTERY_SHERD + f Lcul; xP field_43202 ARCHER_POTTERY_SHERD + f Lcul; xQ field_43203 ARMS_UP_POTTERY_SHERD + f Lcul; xR field_43204 BLADE_POTTERY_SHERD + f Lcul; xS field_43205 BREWER_POTTERY_SHERD + f Lcul; xT field_43206 BURN_POTTERY_SHERD + f Lcul; xU field_43207 DANGER_POTTERY_SHERD + f Lcul; xV field_43208 EXPLORER_POTTERY_SHERD + f Lcul; xW field_49819 FLOW_POTTERY_SHERD + f Lcul; xX field_43209 FRIEND_POTTERY_SHERD + f Lcul; xY field_49820 GUSTER_POTTERY_SHERD + f Lcul; xZ field_43210 HEART_POTTERY_SHERD + f Lcul; xa field_27053 PINK_CANDLE + f Lcul; xb field_27054 GRAY_CANDLE + f Lcul; xc field_27055 LIGHT_GRAY_CANDLE + f Lcul; xd field_27056 CYAN_CANDLE + f Lcul; xe field_27057 PURPLE_CANDLE + f Lcul; xf field_27058 BLUE_CANDLE + f Lcul; xg field_27059 BROWN_CANDLE + f Lcul; xh field_27060 GREEN_CANDLE + f Lcul; xi field_27061 RED_CANDLE + f Lcul; xj field_27062 BLACK_CANDLE + f Lcul; xk field_27066 SMALL_AMETHYST_BUD + f Lcul; xl field_27067 MEDIUM_AMETHYST_BUD + f Lcul; xm field_27068 LARGE_AMETHYST_BUD + f Lcul; xn field_27069 AMETHYST_CLUSTER + f Lcul; xo field_28042 POINTED_DRIPSTONE + f Lcul; xp field_37539 OCHRE_FROGLIGHT + f Lcul; xq field_37540 VERDANT_FROGLIGHT + f Lcul; xr field_37541 PEARLESCENT_FROGLIGHT + f Lcul; xs field_37542 FROGSPAWN + f Lcul; xt field_38746 ECHO_SHARD + f Lcul; xu field_42716 BRUSH + f Lcul; xv field_41946 NETHERITE_UPGRADE_SMITHING_TEMPLATE + f Lcul; xw field_41947 SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xx field_41948 DUNE_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xy field_41949 COAST_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; xz field_41950 WILD_ARMOR_TRIM_SMITHING_TEMPLATE + f Lcul; yA field_47025 WAXED_OXIDIZED_COPPER_BULB + f Lcul; yB field_47314 TRIAL_SPAWNER + f Lcul; yC field_47315 TRIAL_KEY + f Lcul; yD field_50139 OMINOUS_TRIAL_KEY + f Lcul; yE field_48847 VAULT + f Lcul; yF field_50140 OMINOUS_BOTTLE + f Lcul; yG field_49821 BREEZE_ROD + f Lcul; y field_47016 TUFF_BRICK_WALL + f Lcul; ya field_43211 HEARTBREAK_POTTERY_SHERD + f Lcul; yb field_43212 HOWL_POTTERY_SHERD + f Lcul; yc field_43213 MINER_POTTERY_SHERD + f Lcul; yd field_43214 MOURNER_POTTERY_SHERD + f Lcul; ye field_43215 PLENTY_POTTERY_SHERD + f Lcul; yf field_43216 PRIZE_POTTERY_SHERD + f Lcul; yg field_49822 SCRAPE_POTTERY_SHERD + f Lcul; yh field_43217 SHEAF_POTTERY_SHERD + f Lcul; yi field_43218 SHELTER_POTTERY_SHERD + f Lcul; yj field_43219 SKULL_POTTERY_SHERD + f Lcul; yk field_43220 SNORT_POTTERY_SHERD + f Lcul; yl field_47009 COPPER_GRATE + f Lcul; ym field_47010 EXPOSED_COPPER_GRATE + f Lcul; yn field_47011 WEATHERED_COPPER_GRATE + f Lcul; yo field_47012 OXIDIZED_COPPER_GRATE + f Lcul; yp field_47013 WAXED_COPPER_GRATE + f Lcul; yq field_47014 WAXED_EXPOSED_COPPER_GRATE + f Lcul; yr field_47015 WAXED_WEATHERED_COPPER_GRATE + f Lcul; ys field_47017 WAXED_OXIDIZED_COPPER_GRATE + f Lcul; yt field_47018 COPPER_BULB + f Lcul; yu field_47019 EXPOSED_COPPER_BULB + f Lcul; yv field_47020 WEATHERED_COPPER_BULB + f Lcul; yw field_47021 OXIDIZED_COPPER_BULB + f Lcul; yx field_47022 WAXED_COPPER_BULB + f Lcul; yy field_47023 WAXED_EXPOSED_COPPER_BULB + f Lcul; yz field_47024 WAXED_WEATHERED_COPPER_BULB + f Lcul; z field_47026 CHISELED_TUFF_BRICKS + m (Lakq;Lcul;)Lcul; a method_51348 registerItem + m (Lakr;Lcul;)Lcul; a method_7990 registerItem + m (Lcso;)Lcul; a method_7993 registerBlock + m (Lcul$a;)Lcul$a; a method_58095 method_58095 + m (Ldfy;)Lcul; a method_7989 registerBlock + m (Ldfy;Lcul;)Lcul; a method_7992 registerBlock + m (Ldfy;Ljava/util/function/UnaryOperator;)Lcul; a method_58096 registerBlock + m (Ldfy;[Ldfy;)Lcul; a method_35220 registerBlock + m (Ljava/lang/String;Lcul;)Lcul; a method_7991 registerItem + m (Lcul$a;)Lcul$a; b method_58097 method_58097 + m (Lcul$a;)Lcul$a; c method_58098 method_58098 + m (Lcul$a;)Lcul$a; d method_58099 method_58099 + m (Lcul$a;)Lcul$a; e method_58100 method_58100 + m (Lcul$a;)Lcul$a; f method_58101 method_58101 + m (Lcul$a;)Lcul$a; g method_58102 method_58102 + m (Lcul$a;)Lcul$a; h method_58103 method_58103 + m (Lcul$a;)Lcul$a; i method_58104 method_58104 + m (Lcul$a;)Lcul$a; j method_58105 method_58105 + m (Lcul$a;)Lcul$a; k method_58106 method_58106 + m (Lcul$a;)Lcul$a; l method_58107 method_58107 + m (Lcul$a;)Lcul$a; m method_58108 method_58108 + m (Lcul$a;)Lcul$a; n method_58109 method_58109 + m (Lcul$a;)Lcul$a; o method_58110 method_58110 + m ()V + m ()V +c cuu net/minecraft/class_9792 net/minecraft/world/item/JukeboxPlayable + f Lcom/mojang/serialization/Codec; a field_52025 CODEC + f Lyx; b field_52026 STREAM_CODEC + f Lctl; c comp_2833 song + f Z d comp_2834 showInTooltip + m ()Lctl; a comp_2833 song + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60746 method_60746 + m (Ldcw;Ljd;Lcuq;Lcmx;)Lbqt; a method_60747 tryInsertIntoJukebox + m (Ljava/util/function/Consumer;Ljm;)V a method_60748 method_60748 + m (Z)Lcuu; a method_60749 withTooltip + m ()Z b comp_2834 showInTooltip + m (Lctl;Z)V + m ()V +c cuv net/minecraft/class_9793 net/minecraft/world/item/JukeboxSong + f Lcom/mojang/serialization/Codec; a field_52027 DIRECT_CODEC + f Lyx; b field_52028 DIRECT_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_52029 CODEC + f Lyx; d field_52030 STREAM_CODEC + f Ljm; e comp_2835 soundEvent + f Lwz; f comp_2836 description + f F g comp_2837 lengthInSeconds + f I h comp_2838 comparatorOutput + f I i field_52031 SONG_END_PADDING_TICKS + m ()I a method_60750 lengthInTicks + m (J)Z a method_60751 hasFinished + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60752 method_60752 + m (Ljo$a;Lcuq;)Ljava/util/Optional; a method_60753 fromStack + m ()Ljm; b comp_2835 soundEvent + m ()Lwz; c comp_2836 description + m ()F d comp_2837 lengthInSeconds + m ()I e comp_2838 comparatorOutput + m (Ljm;Lwz;FI)V + m ()V +c cuw net/minecraft/class_9794 net/minecraft/world/item/JukeboxSongPlayer + f I a field_52032 PLAY_EVENT_INTERVAL_TICKS + f J b field_52033 ticksSinceSongStarted + f Ljm; c field_52034 song + f Ljd; d field_52035 blockPos + f Lcuw$a; e field_52036 onSongChanged + m ()Z a method_60754 isPlaying + m (Ldcx;Ldtc;)V a method_60755 stop + m (Ldcx;Ljd;)V a method_60756 spawnMusicParticles + m (Ldcx;Ljm;)V a method_60757 play + m (Ljm;J)V a method_60758 setSongWithoutPlaying + m ()Lcuv; b method_60759 getSong + m (Ldcx;Ldtc;)V b method_60760 tick + m ()J c method_60761 getTicksSinceSongStarted + m ()Z d method_60763 shouldEmitJukeboxPlayingEvent + m (Lcuw$a;Ljd;)V +c cuw$a net/minecraft/class_9794$class_9795 net/minecraft/world/item/JukeboxSongPlayer$OnSongChanged +c cux net/minecraft/class_9796 net/minecraft/world/item/JukeboxSongs + f Lakq; a field_52037 THIRTEEN + f Lakq; b field_52038 CAT + f Lakq; c field_52039 BLOCKS + f Lakq; d field_52040 CHIRP + f Lakq; e field_52041 FAR + f Lakq; f field_52042 MALL + f Lakq; g field_52043 MELLOHI + f Lakq; h field_52044 STAL + f Lakq; i field_52045 STRAD + f Lakq; j field_52046 WARD + f Lakq; k field_52047 ELEVEN + f Lakq; l field_52048 WAIT + f Lakq; m field_52049 PIGSTEP + f Lakq; n field_52050 OTHERSIDE + f Lakq; o field_52051 FIVE + f Lakq; p field_52052 RELIC + f Lakq; q field_52053 PRECIPICE + f Lakq; r field_52054 CREATOR + f Lakq; s field_52055 CREATOR_MUSIC_BOX + m (Ljava/lang/String;)Lakq; a method_60764 create + m (Lqq;)V a method_60765 bootstrap + m (Lqq;Lakq;Ljm$c;II)V a method_60766 register + m ()V +c cuy net/minecraft/class_1801 net/minecraft/world/item/KnowledgeBookItem + f Lorg/slf4j/Logger; a field_8042 LOGGER + m (Lcul$a;)V + m ()V +c cuz net/minecraft/class_1804 net/minecraft/world/item/LeadItem + m (Lcmx;Lbtk;)Z a method_55761 method_55761 + m (Lcmx;Ldcw;Ljd;)Lbqr; a method_7994 bindPlayerMobs + m (Ldcw;Ljd;Ljava/util/function/Predicate;)Ljava/util/List; a method_61166 leashableInArea + m (Ljava/util/function/Predicate;Lbsr;)Z a method_61167 method_61167 + m (Lcul$a;)V +c cva net/minecraft/class_1803 net/minecraft/world/item/LingeringPotionItem + m (Lcul$a;)V +c cvb net/minecraft/class_9362 net/minecraft/world/item/MaceItem + f F a field_49823 SMASH_ATTACK_FALL_THRESHOLD + f F b field_49999 SMASH_ATTACK_KNOCKBACK_RADIUS + f I c field_49824 DEFAULT_ATTACK_DAMAGE + f F j field_49825 DEFAULT_ATTACK_SPEED + f F k field_50141 SMASH_ATTACK_HEAVY_THRESHOLD + f F l field_50000 SMASH_ATTACK_KNOCKBACK_POWER + m (Lbsr;Lcmx;Lbtn;)V a method_58409 method_58409 + m (Lbtn;)Z a method_58659 canSmashAttack + m (Lcmx;Lbsr;)Ljava/util/function/Predicate; a method_58660 knockbackPredicate + m (Lcmx;Lbsr;Lbtn;)Z a method_58661 method_58661 + m (Lcmx;Lbtn;Lexc;)D a method_58662 getKnockbackPower + m (Ldcw;Lcmx;Lbsr;)V a method_58411 knockback + m ()Lcxn; h method_59532 createAttributes + m ()Lcxx; k method_58412 createToolProperties + m (Lcul$a;)V +c cvc net/minecraft/class_1806 net/minecraft/world/item/MapItem + f I a field_30907 IMAGE_WIDTH + f I b field_30908 IMAGE_HEIGHT + m (Laqu;Lcuq;)V a method_8002 renderBiomePreviewMap + m (Ldcw;IIBZZ)Lcuq; a method_8005 create + m (Ldcw;IIIZZLakq;)Leqr; a method_32349 createNewSavedData + m (Ldcw;Lbsr;Leqt;)V a method_7998 update + m (Ldcw;Lcuq;)V a method_17442 lockMap + m (Ldcw;Ldtc;Ljd;)Ldtc; a method_7995 getCorrectStateForFluidBlock + m (Leqr;)Lwz; a method_53836 getTooltipForId + m (Leqr;Ldcw;)Leqt; a method_7997 getSavedData + m ([ZII)Z a method_38988 isBiomeWatery + m (Lcuq;Ldcw;)Leqt; b method_8001 getSavedData + m (Lcuq;Ldcw;)V c method_7996 scaleMap + m (Lcul$a;)V +c cvc$1 net/minecraft/class_1806$1 net/minecraft/world/item/MapItem$1 + f [I a field_49271 $SwitchMap$net$minecraft$world$item$component$MapPostProcessing + m ()V +c cvd net/minecraft/class_1805 net/minecraft/world/item/MilkBucketItem + f I a field_30911 DRINK_DURATION + m (Lcul$a;)V +c cve net/minecraft/class_1808 net/minecraft/world/item/MinecartItem + f Lkx; a field_8896 DISPENSE_ITEM_BEHAVIOR + f Lcot$a; b field_8897 type + m (Lcot$a;Lcul$a;)V + m ()V +c cve$1 net/minecraft/class_1808$1 net/minecraft/world/item/MinecartItem$1 + f Lkw; c field_8898 defaultDispenseItemBehavior + m ()V +c cvf net/minecraft/class_1785 net/minecraft/world/item/MobBucketItem + f Lcom/mojang/serialization/MapCodec; a field_49272 VARIANT_FIELD_CODEC + f Lbsx; b field_7991 type + f Lavo; c field_28356 emptySound + m (Laqu;Lcuq;Ljd;)V a method_7824 spawn + m (Lbsx;Lepd;Lavo;Lcul$a;)V + m ()V +c cvg net/minecraft/class_1807 net/minecraft/world/item/NameTagItem + m (Lcul$a;)V +c cvh net/minecraft/class_9462 net/minecraft/world/item/OminousBottleItem + f I a field_50143 EFFECT_DURATION + f I b field_50144 MIN_AMPLIFIER + f I c field_50145 MAX_AMPLIFIER + f I j field_50146 DRINK_DURATION + m (Lcul$a;)V +c cvi net/minecraft/class_1810 net/minecraft/world/item/PickaxeItem + m (Lcwi;Lcul$a;)V +c cvj net/minecraft/class_1841 net/minecraft/world/item/PlaceOnWaterBlockItem + m (Ldfy;Lcul$a;)V +c cvk net/minecraft/class_1809 net/minecraft/world/item/PlayerHeadItem + m (Lcuq;Lcxu;)V a method_57388 method_57388 + m (Ldfy;Ldfy;Lcul$a;)V +c cvl net/minecraft/class_1812 net/minecraft/world/item/PotionItem + f I a field_30917 DRINK_DURATION + m (Lcmx;Lbtn;Lbrz;)V a method_57389 method_57389 + m (Lcul$a;)V +c cvm net/minecraft/class_9463 net/minecraft/world/item/ProjectileItem + m (Lcnp;DDDFF)V a method_58654 shoot + m (Ldcw;Ljw;Lcuq;Lji;)Lcnp; a method_58648 asProjectile + m ()Lcvm$a; c method_58653 createDispenseConfig +c cvm$a net/minecraft/class_9463$class_9464 net/minecraft/world/item/ProjectileItem$DispenseConfig + f Lcvm$a; a field_50147 DEFAULT + f Lcvm$b; b comp_2544 positionFunction + f F c comp_2545 uncertainty + f F d comp_2546 power + f Ljava/util/OptionalInt; e comp_2547 overrideDispenseEvent + m ()Lcvm$a$a; a method_58663 builder + m ()Lcvm$b; b comp_2544 positionFunction + m ()F c comp_2545 uncertainty + m ()F d comp_2546 power + m ()Ljava/util/OptionalInt; e comp_2547 overrideDispenseEvent + m (Lcvm$b;FFLjava/util/OptionalInt;)V + m ()V +c cvm$a$a net/minecraft/class_9463$class_9464$class_9465 net/minecraft/world/item/ProjectileItem$DispenseConfig$Builder + f Lcvm$b; a field_50148 positionFunction + f F b field_50149 uncertainty + f F c field_50150 power + f Ljava/util/OptionalInt; d field_50151 overrideDispenseEvent + m ()Lcvm$a; a method_58664 build + m (F)Lcvm$a$a; a method_58665 uncertainty + m (I)Lcvm$a$a; a method_58666 overrideDispenseEvent + m (Lcvm$b;)Lcvm$a$a; a method_58667 positionFunction + m (Lku;Lji;)Ljw; a method_58668 method_58668 + m (F)Lcvm$a$a; b method_58669 power + m ()V +c cvm$b net/minecraft/class_9463$class_9466 net/minecraft/world/item/ProjectileItem$PositionFunction +c cvn net/minecraft/class_1811 net/minecraft/world/item/ProjectileWeaponItem + f Ljava/util/function/Predicate; c field_18281 ARROW_ONLY + f Ljava/util/function/Predicate; j field_18282 ARROW_OR_FIREWORK + m (Laqu;Lbtn;Lbqq;Lcuq;Ljava/util/List;FFZLbtn;)V a method_57393 shoot + m (Lbtn;Lcnp;IFFFLbtn;)V a method_7763 shootProjectile + m (Lbtn;Ljava/util/function/Predicate;)Lcuq; a method_18815 getHeldProjectile + m (Lcuq;Lcuq;Lbtn;)Ljava/util/List; a method_57390 draw + m (Lcuq;Lcuq;Lbtn;Z)Lcuq; a method_57391 useAmmo + m (Ldcw;Lbtn;Lcuq;Lcuq;Z)Lcnp; a method_57344 createProjectile + m ()Ljava/util/function/Predicate; b method_19268 getAllSupportedProjectiles + m ()I c method_24792 getDefaultProjectileRange + m ()Ljava/util/function/Predicate; d method_20310 getSupportedHeldProjectiles + m (Lcuq;)Z i method_18816 method_18816 + m (Lcuq;)I j method_57345 getDurabilityUse + m (Lcuq;)Z k method_18817 method_18817 + m (Lcul$a;)V + m ()V +c cvo net/minecraft/class_1814 net/minecraft/world/item/Rarity + f Lcvo; a field_8906 COMMON + f Lcvo; b field_8907 UNCOMMON + f Lcvo; c field_8903 RARE + f Lcvo; d field_8904 EPIC + f Lcom/mojang/serialization/Codec; e field_50001 CODEC + f Ljava/util/function/IntFunction; f field_50002 BY_ID + f Lyx; g field_50003 STREAM_CODEC + f I h field_50004 id + f Ljava/lang/String; i field_50005 name + f Ln; j field_8908 color + f [Lcvo; k field_8905 $VALUES + m ()Ln; a method_58413 color + m (Lcvo;)I a method_58414 method_58414 + m ()[Lcvo; b method_36683 $values + m (Lcvo;)I b method_58415 method_58415 + m (Ljava/lang/String;IILjava/lang/String;Ln;)V + m ()V +c cvp net/minecraft/class_1816 net/minecraft/world/item/SaddleItem + m (Lcul$a;)V +c cvq net/minecraft/class_3734 net/minecraft/world/item/ScaffoldingBlockItem + m (Ldfy;Lcul$a;)V +c cvr net/minecraft/class_1817 net/minecraft/world/item/ServerItemCooldowns + f Laqv; a field_8910 player + m (Laqv;)V +c cvs net/minecraft/class_1820 net/minecraft/world/item/ShearsItem + m ()Lcxx; h method_58416 createToolProperties + m (Lcul$a;)V +c cvt net/minecraft/class_1819 net/minecraft/world/item/ShieldItem + f I a field_30918 EFFECTIVE_BLOCK_DELAY + f F b field_30919 MINIMUM_DURABILITY_DAMAGE + m (Lcul$a;)V +c cvu net/minecraft/class_1821 net/minecraft/world/item/ShovelItem + f Ljava/util/Map; a field_8912 FLATTENABLES + m (Lcwi;Lcul$a;)V + m ()V +c cvv net/minecraft/class_8234 net/minecraft/world/item/SignApplicator + m (Ldcw;Ldrs;ZLcmx;)Z a method_49798 tryApplyToSign + m (Ldrt;Lcmx;)Z a method_49801 canApplyToSign +c cvw net/minecraft/class_1822 net/minecraft/world/item/SignItem + m (Lcul$a;Ldfy;Ldfy;)V + m (Lcul$a;Ldfy;Ldfy;Lji;)V +c cvx net/minecraft/class_8052 net/minecraft/world/item/SmithingTemplateItem + f Lakr; A field_41959 EMPTY_SLOT_SHOVEL + f Lakr; B field_41960 EMPTY_SLOT_PICKAXE + f Lakr; C field_41961 EMPTY_SLOT_INGOT + f Lakr; D field_41962 EMPTY_SLOT_REDSTONE_DUST + f Lakr; E field_41963 EMPTY_SLOT_QUARTZ + f Lakr; F field_41964 EMPTY_SLOT_EMERALD + f Lakr; G field_41965 EMPTY_SLOT_DIAMOND + f Lakr; H field_41966 EMPTY_SLOT_LAPIS_LAZULI + f Lakr; I field_42472 EMPTY_SLOT_AMETHYST_SHARD + f Lwz; J field_41967 appliesTo + f Lwz; K field_41968 ingredients + f Lwz; L field_41969 upgradeDescription + f Lwz; M field_41970 baseSlotDescription + f Lwz; N field_41971 additionsSlotDescription + f Ljava/util/List; O field_41972 baseSlotEmptyIcons + f Ljava/util/List; P field_41973 additionalSlotEmptyIcons + f Ln; a field_41974 TITLE_FORMAT + f Ln; b field_41975 DESCRIPTION_FORMAT + f Lwz; c field_41977 INGREDIENTS_TITLE + f Lwz; j field_41978 APPLIES_TO_TITLE + f Lwz; k field_41979 NETHERITE_UPGRADE + f Lwz; l field_41980 ARMOR_TRIM_APPLIES_TO + f Lwz; m field_41981 ARMOR_TRIM_INGREDIENTS + f Lwz; n field_41982 ARMOR_TRIM_BASE_SLOT_DESCRIPTION + f Lwz; o field_41983 ARMOR_TRIM_ADDITIONS_SLOT_DESCRIPTION + f Lwz; p field_41984 NETHERITE_UPGRADE_APPLIES_TO + f Lwz; q field_41985 NETHERITE_UPGRADE_INGREDIENTS + f Lwz; r field_41986 NETHERITE_UPGRADE_BASE_SLOT_DESCRIPTION + f Lwz; s field_41987 NETHERITE_UPGRADE_ADDITIONS_SLOT_DESCRIPTION + f Lakr; t field_41988 EMPTY_SLOT_HELMET + f Lakr; u field_41989 EMPTY_SLOT_CHESTPLATE + f Lakr; v field_41990 EMPTY_SLOT_LEGGINGS + f Lakr; w field_41991 EMPTY_SLOT_BOOTS + f Lakr; x field_41992 EMPTY_SLOT_HOE + f Lakr; y field_41993 EMPTY_SLOT_AXE + f Lakr; z field_41958 EMPTY_SLOT_SWORD + m ()Ljava/util/List; A method_48417 createNetheriteUpgradeMaterialList + m (Lakq;[Lcpj;)Lcvx; a method_48418 createArmorTrimTemplate + m (Lakr;[Lcpj;)Lcvx; a method_48419 createArmorTrimTemplate + m ()Lcvx; h method_48420 createNetheriteUpgradeTemplate + m ()Lwz; k method_48421 getBaseSlotDescription + m ()Lwz; l method_48422 getAdditionSlotDescription + m ()Ljava/util/List; m method_48423 getBaseSlotEmptyIcons + m ()Ljava/util/List; n method_48413 getAdditionalSlotEmptyIcons + m ()Ljava/util/List; x method_48414 createTrimmableArmorIconList + m ()Ljava/util/List; y method_48415 createTrimmableMaterialIconList + m ()Ljava/util/List; z method_48416 createNetheriteUpgradeIconList + m (Lwz;Lwz;Lwz;Lwz;Lwz;Ljava/util/List;Ljava/util/List;[Lcpj;)V + m ()V +c cvy net/minecraft/class_1823 net/minecraft/world/item/SnowballItem + m (Lcul$a;)V +c cvz net/minecraft/class_5634 net/minecraft/world/item/SolidBucketItem + f Lavo; a field_27877 placeSound + m (Ldfy;Lavo;Lcul$a;)V +c cwa net/minecraft/class_1826 net/minecraft/world/item/SpawnEggItem + f Ljava/util/Map; a field_8914 BY_ID + f Lcom/mojang/serialization/MapCodec; b field_49273 ENTITY_TYPE_FIELD_CODEC + f I c field_8916 backgroundColor + f I j field_8915 highlightColor + f Lbsx; k field_8917 defaultType + m (I)I a method_8016 getColor + m (Lbsx;)Lcwa; a method_8019 byId + m (Lcmx;Lbtp;Lbsx;Laqu;Lexc;Lcuq;)Ljava/util/Optional; a method_24793 spawnOffspringFromSpawnEgg + m (Lcuq;Lbsx;)Z a method_8018 spawnsEntity + m ()Ljava/lang/Iterable; h method_8017 eggs + m (Lcuq;)Lbsx; i method_8015 getType + m (Lbsx;IILcul$a;)V + m ()V +c cwb net/minecraft/class_1825 net/minecraft/world/item/SpectralArrowItem + m (Lcul$a;)V +c cwc net/minecraft/class_1828 net/minecraft/world/item/SplashPotionItem + m (Lcul$a;)V +c cwd net/minecraft/class_5538 net/minecraft/world/item/SpyglassItem + f I a field_30921 USE_DURATION + f F b field_30922 ZOOM_FOV_MODIFIER + m (Lbtn;)V a method_31582 stopUsing + m (Lcul$a;)V +c cwe net/minecraft/class_1827 net/minecraft/world/item/StandingAndWallBlockItem + f Ldfy; a field_8918 wallBlock + f Lji; b field_40240 attachmentDirection + m (Ldcz;Ldtc;Ljd;)Z a method_45431 canPlace + m (Ldfy;Ldfy;Lcul$a;Lji;)V +c cwf net/minecraft/class_1830 net/minecraft/world/item/SuspiciousStewItem + f I a field_41069 DEFAULT_DURATION + m (Lcul$a;)V +c cwg net/minecraft/class_1829 net/minecraft/world/item/SwordItem + m (Lcwi;IF)Lcxn; a method_57394 createAttributes + m ()Lcxx; k method_58417 createToolProperties + m (Lcwi;Lcul$a;)V +c cwh net/minecraft/class_4537 net/minecraft/world/item/ThrowablePotionItem + m (Lcul$a;)V +c cwi net/minecraft/class_1832 net/minecraft/world/item/Tier + m ()I a method_8025 getUses + m (Lawu;)Lcxx; a method_58418 createToolProperties + m ()F b method_8027 getSpeed + m ()F c method_8028 getAttackDamageBonus + m ()Lawu; d method_58419 getIncorrectBlocksForDrops + m ()I e method_8026 getEnchantmentValue + m ()Lcyw; f method_8023 getRepairIngredient +c cwj net/minecraft/class_1831 net/minecraft/world/item/TieredItem + f Lcwi; a field_8921 tier + m ()Lcwi; h method_8022 getTier + m (Lcwi;Lcul$a;)V +c cwk net/minecraft/class_1834 net/minecraft/world/item/Tiers + f Lcwk; a field_8922 WOOD + f Lcwk; b field_8927 STONE + f Lcwk; c field_8923 IRON + f Lcwk; d field_8930 DIAMOND + f Lcwk; e field_8929 GOLD + f Lcwk; f field_22033 NETHERITE + f Lawu; g field_50006 incorrectBlocksForDrops + f I h field_8924 uses + f F i field_8932 speed + f F j field_8931 damage + f I k field_8933 enchantmentValue + f Ljava/util/function/Supplier; l field_8928 repairIngredient + f [Lcwk; m field_8926 $VALUES + m ()Lcyw; g method_24361 method_24361 + m ()Lcyw; h method_8033 method_8033 + m ()Lcyw; i method_8032 method_8032 + m ()Lcyw; j method_8030 method_8030 + m ()Lcyw; k method_8031 method_8031 + m ()Lcyw; l method_8029 method_8029 + m ()[Lcwk; m method_36684 $values + m (Ljava/lang/String;ILawu;IFFILjava/util/function/Supplier;)V + m ()V +c cwl net/minecraft/class_1833 net/minecraft/world/item/TippedArrowItem + m (Lcul$a;)V +c cwm net/minecraft/class_1836 net/minecraft/world/item/TooltipFlag + f Lcwm$a; a field_41070 NORMAL + f Lcwm$a; b field_41071 ADVANCED + m ()Z a method_8035 isAdvanced + m ()Z b method_47370 isCreative + m ()V +c cwm$a net/minecraft/class_1836$class_1837 net/minecraft/world/item/TooltipFlag$Default + f Z c comp_1152 advanced + f Z d comp_1153 creative + m ()Lcwm$a; c method_47371 asCreative + m ()Z d comp_1152 advanced + m ()Z e comp_1153 creative + m (ZZ)V +c cwn net/minecraft/class_1835 net/minecraft/world/item/TridentItem + f I a field_30926 THROW_THRESHOLD_TIME + f F b field_30927 BASE_DAMAGE + f F c field_30928 SHOOT_POWER + m ()Lcxn; h method_57395 createAttributes + m (Lcuq;)Z i method_61168 isTooDamagedToUse + m ()Lcxx; k method_58420 createToolProperties + m (Lcul$a;)V +c cwo net/minecraft/class_1839 net/minecraft/world/item/UseAnim + f Lcwo; a field_8952 NONE + f Lcwo; b field_8950 EAT + f Lcwo; c field_8946 DRINK + f Lcwo; d field_8949 BLOCK + f Lcwo; e field_8953 BOW + f Lcwo; f field_8951 SPEAR + f Lcwo; g field_8947 CROSSBOW + f Lcwo; h field_27079 SPYGLASS + f Lcwo; i field_39058 TOOT_HORN + f Lcwo; j field_42717 BRUSH + f [Lcwo; k field_8948 $VALUES + m ()[Lcwo; a method_36686 $values + m (Ljava/lang/String;I)V + m ()V +c cwp net/minecraft/class_9239 net/minecraft/world/item/WindChargeItem + f I a field_49099 COOLDOWN + m (Lku;Lji;)Ljw; a method_58670 method_58670 + m (Lcul$a;)V +c cwq net/minecraft/class_1840 net/minecraft/world/item/WritableBookItem + m (Lcul$a;)V +c cwr net/minecraft/class_1843 net/minecraft/world/item/WrittenBookItem + m (Lcuq;Let;Lcmx;)Z a method_8054 resolveBookComponents + m (Lcul$a;)V +c cws net/minecraft/class_1842 net/minecraft/world/item/alchemy/Potion + f Lcom/mojang/serialization/Codec; a field_51947 CODEC + f Lyx; b field_51948 STREAM_CODEC + f Ljava/lang/String; c field_8954 name + f Ljava/util/List; d field_8955 effects + f Lcpl; e field_50152 requiredFeatures + m ()Ljava/util/List; a method_8049 getEffects + m (Lakq;)Ljava/lang/String; a method_57396 method_57396 + m (Ljava/util/Optional;Ljava/lang/String;)Ljava/lang/String; a method_8051 getName + m ([Lcpj;)Lcws; a method_58671 requiredFeatures + m ()Z b method_8050 hasInstantEffects + m ([Lbrz;)V + m (Ljava/lang/String;[Lbrz;)V + m ()V +c cwt net/minecraft/class_1845 net/minecraft/world/item/alchemy/PotionBrewing + f I a field_30942 BREWING_TIME_SECONDS + f Lcwt; b field_51402 EMPTY + f Ljava/util/List; c field_51403 containers + f Ljava/util/List; d field_51404 potionMixes + f Ljava/util/List; e field_51405 containerMixes + m (Lcpl;)Lcwt; a method_8076 bootstrap + m (Lcuq;)Z a method_8077 isIngredient + m (Lcuq;Lcuq;)Z a method_8072 hasMix + m (Lcwt$a;)V a method_59699 addVanillaMixes + m (Ljm;)Z a method_20361 isBrewablePotion + m (Lcuq;)Z b method_8079 isContainerIngredient + m (Lcuq;Lcuq;)Z b method_8070 hasContainerMix + m (Lcuq;)Z c method_8069 isPotionIngredient + m (Lcuq;Lcuq;)Z c method_8075 hasPotionMix + m (Lcuq;)Z d method_59700 isContainer + m (Lcuq;Lcuq;)Lcuq; d method_8078 mix + m (Ljava/util/List;Ljava/util/List;Ljava/util/List;)V + m ()V +c cwt$a net/minecraft/class_1845$class_9665 net/minecraft/world/item/alchemy/PotionBrewing$Builder + f Ljava/util/List; a field_51406 containers + f Ljava/util/List; b field_51407 potionMixes + f Ljava/util/List; c field_51408 containerMixes + f Lcpl; d field_51409 enabledFeatures + m ()Lcwt; a method_59701 build + m (Lcul;)V a method_59702 addContainer + m (Lcul;Lcul;Lcul;)V a method_59703 addContainerRecipe + m (Lcul;Ljm;)V a method_59704 addStartMix + m (Ljm;Lcul;Ljm;)V a method_59705 addMix + m (Lcul;)V b method_59706 expectPotion + m (Lcpl;)V +c cwt$b net/minecraft/class_1845$class_1846 net/minecraft/world/item/alchemy/PotionBrewing$Mix + f Ljm; a comp_2190 from + f Lcyw; b comp_2191 ingredient + f Ljm; c comp_2192 to + m ()Ljm; a comp_2190 from + m ()Lcyw; b comp_2191 ingredient + m ()Ljm; c comp_2192 to + m (Ljm;Lcyw;Ljm;)V +c cwu net/minecraft/class_1844 net/minecraft/world/item/alchemy/PotionContents + f Lcwu; a field_49274 EMPTY + f Lcom/mojang/serialization/Codec; b field_49275 CODEC + f Lyx; c field_49276 STREAM_CODEC + f Ljava/util/Optional; d comp_2378 potion + f Ljava/util/Optional; e comp_2379 customColor + f Ljava/util/List; f comp_2380 customEffects + f Lwz; g field_25817 NO_EFFECT + f I h field_49277 BASE_POTION_COLOR + f Lcom/mojang/serialization/Codec; i field_49749 FULL_CODEC + m ()Ljava/lang/Iterable; a method_57397 getAllEffects + m (Lbrz;)Lcwu; a method_57398 withEffectAdded + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57399 method_57399 + m (Lcul;Ljm;)Lcuq; a method_57400 createItemStack + m (Ljava/lang/Iterable;)I a method_8055 getColor + m (Ljava/lang/Iterable;Ljava/util/function/Consumer;FF)V a method_8065 addPotionTooltip + m (Ljava/util/List;Ljm;Lbuu;)V a method_55762 method_55762 + m (Ljava/util/function/Consumer;)V a method_57402 forEachEffect + m (Ljava/util/function/Consumer;FF)V a method_47372 addPotionTooltip + m (Ljm;)Z a method_57401 is + m ()I b method_8064 getColor + m (Ljava/lang/Iterable;)Ljava/util/OptionalInt; b method_58111 getColorOptional + m (Ljm;)Lcwu; b method_57403 withPotion + m ()Z c method_57405 hasEffects + m (Ljm;)I c method_8062 getColor + m ()Ljava/util/List; d comp_2380 customEffects + m ()Ljava/util/Optional; e comp_2378 potion + m ()Ljava/util/Optional; f comp_2379 customColor + m (Ljm;)V + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/List;)V + m ()V +c cwv net/minecraft/class_1847 net/minecraft/world/item/alchemy/Potions + f Ljm; A field_9004 HARMING + f Ljm; B field_8973 STRONG_HARMING + f Ljm; C field_8982 POISON + f Ljm; D field_9002 LONG_POISON + f Ljm; E field_8972 STRONG_POISON + f Ljm; F field_8986 REGENERATION + f Ljm; G field_9003 LONG_REGENERATION + f Ljm; H field_8992 STRONG_REGENERATION + f Ljm; I field_8978 STRENGTH + f Ljm; J field_8965 LONG_STRENGTH + f Ljm; K field_8993 STRONG_STRENGTH + f Ljm; L field_8975 WEAKNESS + f Ljm; M field_8970 LONG_WEAKNESS + f Ljm; N field_8995 LUCK + f Ljm; O field_8974 SLOW_FALLING + f Ljm; P field_8964 LONG_SLOW_FALLING + f Ljm; Q field_50153 WIND_CHARGED + f Ljm; R field_50154 WEAVING + f Ljm; S field_50155 OOZING + f Ljm; T field_50156 INFESTED + f Ljm; a field_8991 WATER + f Ljm; b field_8967 MUNDANE + f Ljm; c field_8985 THICK + f Ljm; d field_8999 AWKWARD + f Ljm; e field_8968 NIGHT_VISION + f Ljm; f field_8981 LONG_NIGHT_VISION + f Ljm; g field_8997 INVISIBILITY + f Ljm; h field_9000 LONG_INVISIBILITY + f Ljm; i field_8979 LEAPING + f Ljm; j field_8971 LONG_LEAPING + f Ljm; k field_8998 STRONG_LEAPING + f Ljm; l field_8987 FIRE_RESISTANCE + f Ljm; m field_8969 LONG_FIRE_RESISTANCE + f Ljm; n field_9005 SWIFTNESS + f Ljm; o field_8983 LONG_SWIFTNESS + f Ljm; p field_8966 STRONG_SWIFTNESS + f Ljm; q field_8996 SLOWNESS + f Ljm; r field_8989 LONG_SLOWNESS + f Ljm; s field_8976 STRONG_SLOWNESS + f Ljm; t field_8990 TURTLE_MASTER + f Ljm; u field_8988 LONG_TURTLE_MASTER + f Ljm; v field_8977 STRONG_TURTLE_MASTER + f Ljm; w field_8994 WATER_BREATHING + f Ljm; x field_9001 LONG_WATER_BREATHING + f Ljm; y field_8963 HEALING + f Ljm; z field_8980 STRONG_HEALING + m (Ljava/lang/String;Lcws;)Ljm; a method_8084 register + m (Ljz;)Ljm; a method_55763 bootstrap + m ()V + m ()V +c cww net/minecraft/class_6080 net/minecraft/world/item/alchemy/package-info +c cwx net/minecraft/class_8053 net/minecraft/world/item/armortrim/ArmorTrim + f Lcom/mojang/serialization/Codec; a field_41994 CODEC + f Lyx; b field_49278 STREAM_CODEC + f Lwz; c field_41997 UPGRADE_TITLE + f Ljm; d field_41998 material + f Ljm; e field_41999 pattern + f Z f field_49279 showInTooltip + f Ljava/util/function/Function; g field_42000 innerTexture + f Ljava/util/function/Function; h field_42001 outerTexture + m ()Ljm; a method_48424 pattern + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57406 method_57406 + m (Lcwx;)Ljava/lang/Boolean; a method_57407 method_57407 + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_57408 method_57408 + m (Ljm;)Lakr; a method_48434 innerTexture + m (Ljm;Ljm;)Z a method_48427 hasPatternAndMaterial + m (Ljm;Ljm;Ljm;)Lakr; a method_57411 method_57411 + m (Z)Lcwx; a method_58421 withTooltip + m ()Ljm; b method_48431 material + m (Lcwx;)Ljava/lang/Boolean; b method_57410 method_57410 + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; b method_57412 method_57412 + m (Ljm;)Lakr; b method_48436 outerTexture + m (Ljm;Ljm;)Ljava/lang/String; b method_48577 getColorPaletteSuffix + m (Ljm;Ljm;Ljm;)Lakr; b method_57413 method_57413 + m (Ljm;Ljm;ZLjava/util/function/Function;Ljava/util/function/Function;)V + m (Ljm;Ljm;Z)V + m (Ljm;Ljm;)V + m ()V +c cwy net/minecraft/class_8054 net/minecraft/world/item/armortrim/TrimMaterial + f Lcom/mojang/serialization/Codec; a field_42002 DIRECT_CODEC + f Lyx; b field_49280 DIRECT_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_42003 CODEC + f Lyx; d field_49281 STREAM_CODEC + f Ljava/lang/String; e comp_1208 assetName + f Ljm; f comp_1209 ingredient + f F g comp_1210 itemModelIndex + f Ljava/util/Map; h comp_1237 overrideArmorMaterials + f Lwz; i comp_1212 description + m ()Ljava/lang/String; a comp_1208 assetName + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_48437 method_48437 + m (Ljava/lang/String;Lcul;FLwz;Ljava/util/Map;)Lcwy; a method_48438 create + m ()Ljm; b comp_1209 ingredient + m ()F c comp_1210 itemModelIndex + m ()Ljava/util/Map; d comp_1237 overrideArmorMaterials + m ()Lwz; e comp_1212 description + m (Ljava/lang/String;Ljm;FLjava/util/Map;Lwz;)V + m ()V +c cwz net/minecraft/class_8055 net/minecraft/world/item/armortrim/TrimMaterials + f Lakq; a field_42004 QUARTZ + f Lakq; b field_42005 IRON + f Lakq; c field_42006 NETHERITE + f Lakq; d field_42007 REDSTONE + f Lakq; e field_42008 COPPER + f Lakq; f field_42009 GOLD + f Lakq; g field_42010 EMERALD + f Lakq; h field_42011 DIAMOND + f Lakq; i field_42012 LAPIS + f Lakq; j field_42013 AMETHYST + m (Lcuq;Ljm$c;)Z a method_48439 method_48439 + m (Ljava/lang/String;)Lakq; a method_48441 registryKey + m (Ljo$a;Lcuq;)Ljava/util/Optional; a method_48440 getFromIngredient + m (Lqq;)V a method_48442 bootstrap + m (Lqq;Lakq;Lcul;Lxw;F)V a method_48578 register + m (Lqq;Lakq;Lcul;Lxw;FLjava/util/Map;)V a method_48443 register + m ()V + m ()V +c cxa net/minecraft/class_8056 net/minecraft/world/item/armortrim/TrimPattern + f Lcom/mojang/serialization/Codec; a field_42014 DIRECT_CODEC + f Lyx; b field_49282 DIRECT_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_42015 CODEC + f Lyx; d field_49283 STREAM_CODEC + f Lakr; e comp_1213 assetId + f Ljm; f comp_1214 templateItem + f Lwz; g comp_1215 description + f Z h comp_1905 decal + m ()Lakr; a comp_1213 assetId + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_48445 method_48445 + m (Ljm;)Lwz; a method_48446 copyWithStyle + m ()Ljm; b comp_1214 templateItem + m ()Lwz; c comp_1215 description + m ()Z d comp_1905 decal + m (Lakr;Ljm;Lwz;Z)V + m ()V +c cxb net/minecraft/class_8057 net/minecraft/world/item/armortrim/TrimPatterns + f Lakq; a field_42016 SENTRY + f Lakq; b field_42017 DUNE + f Lakq; c field_42018 COAST + f Lakq; d field_42019 WILD + f Lakq; e field_42020 WARD + f Lakq; f field_42021 EYE + f Lakq; g field_42022 VEX + f Lakq; h field_42023 TIDE + f Lakq; i field_42024 SNOUT + f Lakq; j field_42025 RIB + f Lakq; k field_42026 SPIRE + f Lakq; l field_43221 WAYFINDER + f Lakq; m field_43222 SHAPER + f Lakq; n field_43223 SILENCE + f Lakq; o field_43224 RAISER + f Lakq; p field_43225 HOST + f Lakq; q field_49827 FLOW + f Lakq; r field_49828 BOLT + m (Lcuq;Ljm$c;)Z a method_48447 method_48447 + m (Ljava/lang/String;)Lakq; a method_48449 registryKey + m (Ljo$a;Lcuq;)Ljava/util/Optional; a method_48448 getFromTemplate + m (Lqq;)V a method_48450 bootstrap + m (Lqq;Lcul;Lakq;)V a method_48451 register + m ()V + m ()V +c cxc net/minecraft/class_8058 net/minecraft/world/item/armortrim/package-info +c cxd net/minecraft/class_9275 net/minecraft/world/item/component/BlockItemStateProperties + f Lcxd; a field_49284 EMPTY + f Lcom/mojang/serialization/Codec; b field_49285 CODEC + f Lyx; c field_49286 STREAM_CODEC + f Ljava/util/Map; d comp_2381 properties + f Lyx; e field_49287 PROPERTIES_STREAM_CODEC + m ()Z a method_57414 isEmpty + m (Ldtc;)Ldtc; a method_57415 apply + m (Ldtc;Lduf;Ljava/lang/Comparable;)Ldtc; a method_57416 method_57416 + m (Ldtc;Lduf;Ljava/lang/String;)Ldtc; a method_57417 updateState + m (Lduf;)Ljava/lang/Comparable; a method_57418 get + m (Lduf;Ldtc;)Lcxd; a method_57419 with + m (Lduf;Ljava/lang/Comparable;)Lcxd; a method_57420 with + m ()Ljava/util/Map; b comp_2381 properties + m (Ljava/util/Map;)V + m ()V +c cxe net/minecraft/class_9364 net/minecraft/world/item/component/BookContent + m ()Ljava/util/List; a comp_2422 pages + m (Ljava/util/List;)Ljava/lang/Object; a method_58186 withReplacedPages +c cxf net/minecraft/class_9276 net/minecraft/world/item/component/BundleContents + f Lcxf; a field_49289 EMPTY + f Lcom/mojang/serialization/Codec; b field_49290 CODEC + f Lyx; c field_49291 STREAM_CODEC + f Lorg/apache/commons/lang3/math/Fraction; d field_49292 BUNDLE_IN_BUNDLE_WEIGHT + f I e field_49293 NO_STACK_INDEX + f Ljava/util/List; f field_49294 items + f Lorg/apache/commons/lang3/math/Fraction; g field_49295 weight + m ()Ljava/util/stream/Stream; a method_59707 itemCopyStream + m (I)Lcuq; a method_57422 getItemUnsafe + m (Lcuq;)Lorg/apache/commons/lang3/math/Fraction; a method_57423 getWeight + m (Lcxf;)Ljava/util/List; a method_57424 method_57424 + m (Ljava/util/List;)Lorg/apache/commons/lang3/math/Fraction; a method_57425 computeContentWeight + m ()Ljava/lang/Iterable; b method_57421 items + m (Lcxf;)Ljava/util/List; b method_57427 method_57427 + m ()Ljava/lang/Iterable; c method_59708 itemsCopy + m ()I d method_57426 size + m ()Lorg/apache/commons/lang3/math/Fraction; e method_57428 weight + m ()Z f method_57429 isEmpty + m (Ljava/util/List;Lorg/apache/commons/lang3/math/Fraction;)V + m (Ljava/util/List;)V + m ()V +c cxf$a net/minecraft/class_9276$class_9277 net/minecraft/world/item/component/BundleContents$Mutable + f Ljava/util/List; a field_49296 items + f Lorg/apache/commons/lang3/math/Fraction; b field_49297 weight + m ()Lcxf$a; a method_59709 clearItems + m (Lcrq;Lcmx;)I a method_57431 tryTransfer + m (Lcuq;)I a method_57432 tryInsert + m ()Lcuq; b method_57430 removeOne + m (Lcuq;)I b method_57434 findStackIndex + m ()Lorg/apache/commons/lang3/math/Fraction; c method_57433 weight + m (Lcuq;)I c method_57436 getMaxAmountToAdd + m ()Lcxf; d method_57435 toImmutable + m (Lcxf;)V +c cxg net/minecraft/class_9278 net/minecraft/world/item/component/ChargedProjectiles + f Lcxg; a field_49298 EMPTY + f Lcom/mojang/serialization/Codec; b field_49299 CODEC + f Lyx; c field_49300 STREAM_CODEC + f Ljava/util/List; d field_49301 items + m ()Ljava/util/List; a method_57437 getItems + m (Lcul;)Z a method_57438 contains + m (Lcuq;)Lcxg; a method_57439 of + m (Lcxg;)Ljava/util/List; a method_57440 method_57440 + m (Ljava/util/List;)Lcxg; a method_57441 of + m ()Z b method_57442 isEmpty + m (Lcxg;)Ljava/util/List; b method_57443 method_57443 + m (Ljava/util/List;)V + m ()V +c cxh net/minecraft/class_9279 net/minecraft/world/item/component/CustomData + f Lcxh; a field_49302 EMPTY + f Lcom/mojang/serialization/Codec; b field_49303 CODEC + f Lcom/mojang/serialization/Codec; c field_49304 CODEC_WITH_ID + f Lyx; d field_49305 STREAM_CODEC + f Lorg/slf4j/Logger; e field_51522 LOGGER + f Lub; f field_49306 tag + m ()I a method_57444 size + m (Lbsr;)V a method_57445 loadInto + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/MapDecoder;)Lcom/mojang/serialization/DataResult; a method_59980 read + m (Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/MapEncoder;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_57447 update + m (Lcom/mojang/serialization/MapDecoder;)Lcom/mojang/serialization/DataResult; a method_57446 read + m (Lcxh;)Lub; a method_57448 method_57448 + m (Ldqh;Ljo$a;)Z a method_57449 loadInto + m (Ljava/lang/String;)Z a method_57450 contains + m (Ljava/util/function/Consumer;)Lcxh; a method_57451 update + m (Lkp;Lcuq;Ljava/util/function/Consumer;)V a method_57452 update + m (Lkp;Lcuq;Lub;)V a method_57453 set + m (Lkp;Lub;)Ljava/util/function/Predicate; a method_57454 itemMatcher + m (Lkp;Lub;Lcuq;)Z a method_57455 method_57455 + m (Lub;)Lcxh; a method_57456 of + m (Luy;)Lcxh; a method_57457 method_57457 + m ()Z b method_57458 isEmpty + m (Lcxh;)Lcom/mojang/serialization/DataResult; b method_57459 method_57459 + m (Lub;)Z b method_57460 matchedBy + m ()Lub; c method_57461 copyTag + m (Lcxh;)Ljava/lang/String; c method_57462 method_57462 + m ()Lub; d method_57463 getUnsafe + m (Lcxh;)Lub; d method_57464 method_57464 + m (Lub;)V + m ()V +c cxi net/minecraft/class_9280 net/minecraft/world/item/component/CustomModelData + f Lcxi; a field_49307 DEFAULT + f Lcom/mojang/serialization/Codec; b field_49308 CODEC + f Lyx; c field_49309 STREAM_CODEC + f I d comp_2382 value + m ()I a comp_2382 value + m (I)V + m ()V +c cxj net/minecraft/class_9281 net/minecraft/world/item/component/DebugStickState + f Lcxj; a field_49310 EMPTY + f Lcom/mojang/serialization/Codec; b field_49311 CODEC + f Ljava/util/Map; c comp_2383 properties + m ()Ljava/util/Map; a comp_2383 properties + m (Ljm;)Lcom/mojang/serialization/Codec; a method_57465 method_57465 + m (Ljm;Lduf;)Lcxj; a method_57466 withProperty + m (Ljm;Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_57467 method_57467 + m (Ljm;Ljava/lang/String;)Ljava/lang/String; b method_57468 method_57468 + m (Ljava/util/Map;)V + m ()V +c cxk net/minecraft/class_9282 net/minecraft/world/item/component/DyedItemColor + f Lcom/mojang/serialization/Codec; a field_49312 CODEC + f Lyx; b field_49313 STREAM_CODEC + f I c field_49314 LEATHER_COLOR + f I d comp_2384 rgb + f Z e comp_2385 showInTooltip + f Lcom/mojang/serialization/Codec; f field_49750 FULL_CODEC + m ()I a comp_2384 rgb + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57469 method_57469 + m (Lcuq;I)I a method_57470 getOrDefault + m (Lcuq;Ljava/util/List;)Lcuq; a method_57471 applyDyes + m (Ljava/lang/Integer;)Lcxk; a method_58112 method_58112 + m (Z)Lcxk; a method_58422 withTooltip + m ()Z b comp_2385 showInTooltip + m (IZ)V + m ()V +c cxl net/minecraft/class_9283 net/minecraft/world/item/component/FireworkExplosion + f Lcxl; a field_49315 DEFAULT + f Lcom/mojang/serialization/Codec; b field_49318 COLOR_LIST_CODEC + f Lcom/mojang/serialization/Codec; c field_49316 CODEC + f Lyx; d field_49317 STREAM_CODEC + f Lcxl$a; e comp_2386 shape + f Lit/unimi/dsi/fastutil/ints/IntList; f comp_2387 colors + f Lit/unimi/dsi/fastutil/ints/IntList; g comp_2388 fadeColors + f Z h comp_2389 hasTrail + f Z i comp_2390 hasTwinkle + f Lyx; j field_49319 COLOR_LIST_STREAM_CODEC + f Lwz; k field_49320 CUSTOM_COLOR_NAME + m ()Lcxl$a; a comp_2386 shape + m (I)Lwz; a method_57472 getColorName + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57473 method_57473 + m (Lit/unimi/dsi/fastutil/ints/IntList;)Lcxl; a method_57474 withFadeColors + m (Ljava/util/function/Consumer;)V a method_57475 addShapeNameTooltip + m (Lxn;Lit/unimi/dsi/fastutil/ints/IntList;)Lwz; a method_57476 appendColors + m ()Lit/unimi/dsi/fastutil/ints/IntList; b comp_2387 colors + m (Ljava/util/function/Consumer;)V b method_57477 addAdditionalTooltip + m ()Lit/unimi/dsi/fastutil/ints/IntList; c comp_2388 fadeColors + m ()Z d comp_2389 hasTrail + m ()Z e comp_2390 hasTwinkle + m (Lcxl$a;Lit/unimi/dsi/fastutil/ints/IntList;Lit/unimi/dsi/fastutil/ints/IntList;ZZ)V + m ()V +c cxl$a net/minecraft/class_9283$class_1782 net/minecraft/world/item/component/FireworkExplosion$Shape + f Lcxl$a; a field_7976 SMALL_BALL + f Lcxl$a; b field_7977 LARGE_BALL + f Lcxl$a; c field_7973 STAR + f Lcxl$a; d field_7974 CREEPER + f Lcxl$a; e field_7970 BURST + f Lyx; f field_49321 STREAM_CODEC + f Lcom/mojang/serialization/Codec; g field_49322 CODEC + f Ljava/util/function/IntFunction; h field_7975 BY_ID + f I i field_7972 id + f Ljava/lang/String; j field_7971 name + f [Lcxl$a; k field_7978 $VALUES + m ()Lxn; a method_7812 getName + m (I)Lcxl$a; a method_7813 byId + m ()I b method_7816 getId + m ()[Lcxl$a; d method_36677 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c cxm net/minecraft/class_9284 net/minecraft/world/item/component/Fireworks + f I a field_49325 MAX_EXPLOSIONS + f Lcom/mojang/serialization/Codec; b field_49323 CODEC + f Lyx; c field_49324 STREAM_CODEC + f I d comp_2391 flightDuration + f Ljava/util/List; e comp_2392 explosions + m ()I a comp_2391 flightDuration + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57478 method_57478 + m (Ljava/util/function/Consumer;Lwz;)V a method_57479 method_57479 + m ()Ljava/util/List; b comp_2392 explosions + m (ILjava/util/List;)V + m ()V +c cxn net/minecraft/class_9285 net/minecraft/world/item/component/ItemAttributeModifiers + f Lcxn; a field_49326 EMPTY + f Lcom/mojang/serialization/Codec; b field_49327 CODEC + f Lyx; c field_49328 STREAM_CODEC + f Ljava/text/DecimalFormat; d field_49329 ATTRIBUTE_MODIFIER_FORMAT + f Ljava/util/List; e comp_2393 modifiers + f Z f comp_2394 showInTooltip + f Lcom/mojang/serialization/Codec; g field_49751 FULL_CODEC + m ()Lcxn$a; a method_57480 builder + m (DLbsy;)D a method_57481 compute + m (Lbsy;Ljava/util/function/BiConsumer;)V a method_57482 forEach + m (Lbsz;Ljava/util/function/BiConsumer;)V a method_60618 forEach + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57483 method_57483 + m (Ljava/text/DecimalFormat;)V a method_57485 method_57485 + m (Ljava/util/List;)Lcxn; a method_58113 method_58113 + m (Ljm;Lbuu;Lbsz;)Lcxn; a method_57484 withModifierAdded + m (Z)Lcxn; a method_58423 withTooltip + m ()Ljava/util/List; b comp_2393 modifiers + m ()Z c comp_2394 showInTooltip + m (Ljava/util/List;Z)V + m ()V +c cxn$1 net/minecraft/class_9285$1 net/minecraft/world/item/component/ItemAttributeModifiers$1 + f [I a field_49330 $SwitchMap$net$minecraft$world$entity$ai$attributes$AttributeModifier$Operation + m ()V +c cxn$a net/minecraft/class_9285$class_9286 net/minecraft/world/item/component/ItemAttributeModifiers$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_49331 entries + m ()Lcxn; a method_57486 build + m (Ljm;Lbuu;Lbsz;)Lcxn$a; a method_57487 add + m ()V +c cxn$b net/minecraft/class_9285$class_9287 net/minecraft/world/item/component/ItemAttributeModifiers$Entry + f Lcom/mojang/serialization/Codec; a field_49332 CODEC + f Lyx; b field_49333 STREAM_CODEC + f Ljm; c comp_2395 attribute + f Lbuu; d comp_2396 modifier + f Lbsz; e comp_2397 slot + m ()Ljm; a comp_2395 attribute + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57488 method_57488 + m (Ljm;Lakr;)Z a method_60767 matches + m ()Lbuu; b comp_2396 modifier + m ()Lbsz; c comp_2397 slot + m (Ljm;Lbuu;Lbsz;)V + m ()V +c cxo net/minecraft/class_9288 net/minecraft/world/item/component/ItemContainerContents + f Lcxo; a field_49334 EMPTY + f Lcom/mojang/serialization/Codec; b field_49335 CODEC + f Lyx; c field_49336 STREAM_CODEC + f I d field_51410 NO_SLOT + f I e field_49337 MAX_SIZE + f Ljv; f field_49338 items + f I g field_51511 hashCode + m ()Lcuq; a method_58114 copyOne + m (Lcuq;)Z a method_59710 method_59710 + m (Lcxo;)Ljava/util/List; a method_57491 method_57491 + m (Ljava/util/List;)Lcxo; a method_57493 fromItems + m (Ljv;)V a method_57492 copyInto + m ()Ljava/util/stream/Stream; b method_57489 stream + m (Lcuq;)Z b method_59711 method_59711 + m (Ljava/util/List;)Lcxo; b method_57496 fromSlots + m ()Ljava/util/stream/Stream; c method_59712 nonEmptyStream + m (Ljava/util/List;)I c method_59713 findLastNonEmptySlot + m ()Ljava/lang/Iterable; d method_59714 nonEmptyItems + m ()Ljava/lang/Iterable; e method_59715 nonEmptyItemsCopy + m ()Ljava/util/List; f method_57494 asSlots + m (Ljv;)V + m (I)V + m (Ljava/util/List;)V + m ()V +c cxo$a net/minecraft/class_9288$class_9289 net/minecraft/world/item/component/ItemContainerContents$Slot + f Lcom/mojang/serialization/Codec; a field_49339 CODEC + f I b comp_2398 index + f Lcuq; c comp_2399 item + m ()I a comp_2398 index + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57498 method_57498 + m ()Lcuq; b comp_2399 item + m (ILcuq;)V + m ()V +c cxp net/minecraft/class_9290 net/minecraft/world/item/component/ItemLore + f Lcxp; a field_49340 EMPTY + f I b field_49343 MAX_LINES + f Lcom/mojang/serialization/Codec; c field_49341 CODEC + f Lyx; d field_49342 STREAM_CODEC + f Ljava/util/List; e comp_2400 lines + f Ljava/util/List; f comp_2401 styledLines + f Lxw; g field_49344 LORE_STYLE + m ()Ljava/util/List; a comp_2400 lines + m (Lwz;)Lcxp; a method_57499 withLineAdded + m ()Ljava/util/List; b comp_2401 styledLines + m (Lwz;)Lwz; b method_57500 method_57500 + m (Ljava/util/List;)V + m (Ljava/util/List;Ljava/util/List;)V + m ()V +c cxq net/minecraft/class_9291 net/minecraft/world/item/component/LodestoneTracker + f Lcom/mojang/serialization/Codec; a field_49345 CODEC + f Lyx; b field_49346 STREAM_CODEC + f Ljava/util/Optional; c comp_2402 target + f Z d comp_2403 tracked + m ()Ljava/util/Optional; a comp_2402 target + m (Laqu;)Lcxq; a method_58115 tick + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57502 method_57502 + m ()Z b comp_2403 tracked + m (Ljava/util/Optional;Z)V + m ()V +c cxr net/minecraft/class_9292 net/minecraft/world/item/component/MapDecorations + f Lcxr; a field_49347 EMPTY + f Lcom/mojang/serialization/Codec; b field_49348 CODEC + f Ljava/util/Map; c comp_2404 decorations + m ()Ljava/util/Map; a comp_2404 decorations + m (Ljava/lang/String;Lcxr$a;)Lcxr; a method_57503 withDecoration + m (Ljava/util/Map;)V + m ()V +c cxr$a net/minecraft/class_9292$class_9293 net/minecraft/world/item/component/MapDecorations$Entry + f Lcom/mojang/serialization/Codec; a field_49349 CODEC + f Ljm; b comp_2405 type + f D c comp_2406 x + f D d comp_2407 z + f F e comp_2408 rotation + m ()Ljm; a comp_2405 type + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57504 method_57504 + m ()D b comp_2406 x + m ()D c comp_2407 z + m ()F d comp_2408 rotation + m (Ljm;DDF)V + m ()V +c cxs net/minecraft/class_9294 net/minecraft/world/item/component/MapItemColor + f Lcom/mojang/serialization/Codec; a field_49350 CODEC + f Lyx; b field_49351 STREAM_CODEC + f Lcxs; c field_49352 DEFAULT + f I d comp_2409 rgb + m ()I a comp_2409 rgb + m (I)V + m ()V +c cxt net/minecraft/class_9295 net/minecraft/world/item/component/MapPostProcessing + f Lcxt; a field_49353 LOCK + f Lcxt; b field_49354 SCALE + f Ljava/util/function/IntFunction; c field_49355 ID_MAP + f Lyx; d field_49356 STREAM_CODEC + f I e field_49357 id + f [Lcxt; f field_49358 $VALUES + m ()I a method_57505 id + m ()[Lcxt; b method_57506 $values + m (Ljava/lang/String;II)V + m ()V +c cxu net/minecraft/class_9296 net/minecraft/world/item/component/ResolvableProfile + f Lcom/mojang/serialization/Codec; a field_49359 CODEC + f Lyx; b field_49360 STREAM_CODEC + f Ljava/util/Optional; c comp_2410 name + f Ljava/util/Optional; d comp_2411 id + f Lcom/mojang/authlib/properties/PropertyMap; e comp_2412 properties + f Lcom/mojang/authlib/GameProfile; f comp_2413 gameProfile + f Lcom/mojang/serialization/Codec; g field_49752 FULL_CODEC + m ()Ljava/util/concurrent/CompletableFuture; a method_57507 resolve + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57508 method_57508 + m (Ljava/lang/String;)Lcxu; a method_58116 method_58116 + m (Ljava/util/Optional;)Lcxu; a method_57510 method_57510 + m (Ljava/util/Optional;Ljava/util/Optional;Lcom/mojang/authlib/properties/PropertyMap;)Lcom/mojang/authlib/GameProfile; a method_57509 createProfile + m ()Z b method_57511 isResolved + m (Ljava/util/Optional;)Lcxu; b method_59533 method_59533 + m ()Ljava/util/Optional; c comp_2410 name + m ()Ljava/util/Optional; d comp_2411 id + m ()Lcom/mojang/authlib/properties/PropertyMap; e comp_2412 properties + m ()Lcom/mojang/authlib/GameProfile; f comp_2413 gameProfile + m ()Lcom/mojang/authlib/GameProfile; g method_57512 method_57512 + m ()Lcom/mojang/authlib/GameProfile; h method_59534 method_59534 + m (Ljava/util/Optional;Ljava/util/Optional;Lcom/mojang/authlib/properties/PropertyMap;)V + m (Lcom/mojang/authlib/GameProfile;)V + m (Ljava/util/Optional;Ljava/util/Optional;Lcom/mojang/authlib/properties/PropertyMap;Lcom/mojang/authlib/GameProfile;)V + m ()V +c cxv net/minecraft/class_9297 net/minecraft/world/item/component/SeededContainerLoot + f Lcom/mojang/serialization/Codec; a field_49361 CODEC + f Lakq; b comp_2414 lootTable + f J c comp_2415 seed + m ()Lakq; a comp_2414 lootTable + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57513 method_57513 + m ()J b comp_2415 seed + m (Lakq;J)V + m ()V +c cxw net/minecraft/class_9298 net/minecraft/world/item/component/SuspiciousStewEffects + f Lcxw; a field_49362 EMPTY + f Lcom/mojang/serialization/Codec; b field_49363 CODEC + f Lyx; c field_49364 STREAM_CODEC + f Ljava/util/List; d comp_2416 effects + m ()Ljava/util/List; a comp_2416 effects + m (Lcxw$a;)Lcxw; a method_57514 withEffectAdded + m (Ljava/util/List;)V + m ()V +c cxw$a net/minecraft/class_9298$class_8751 net/minecraft/world/item/component/SuspiciousStewEffects$Entry + f Lcom/mojang/serialization/Codec; a field_45782 CODEC + f Lyx; b field_49365 STREAM_CODEC + f Ljm; c comp_1838 effect + f I d comp_1839 duration + m ()Lbrz; a method_53247 createEffectInstance + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53248 method_53248 + m ()Ljm; b comp_1838 effect + m ()I c comp_1839 duration + m (Ljm;I)V + m ()V +c cxx net/minecraft/class_9424 net/minecraft/world/item/component/Tool + f Lcom/mojang/serialization/Codec; a field_50009 CODEC + f Lyx; b field_50010 STREAM_CODEC + f Ljava/util/List; c comp_2498 rules + f F d comp_2499 defaultMiningSpeed + f I e comp_2500 damagePerBlock + m ()Ljava/util/List; a comp_2498 rules + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58424 method_58424 + m (Ldtc;)F a method_58425 getMiningSpeed + m ()F b comp_2499 defaultMiningSpeed + m (Ldtc;)Z b method_58426 isCorrectForDrops + m ()I c comp_2500 damagePerBlock + m (Ljava/util/List;FI)V + m ()V +c cxx$a net/minecraft/class_9424$class_9425 net/minecraft/world/item/component/Tool$Rule + f Lcom/mojang/serialization/Codec; a field_50011 CODEC + f Lyx; b field_50012 STREAM_CODEC + f Ljq; c comp_2501 blocks + f Ljava/util/Optional; d comp_2502 speed + f Ljava/util/Optional; e comp_2503 correctForDrops + m ()Ljq; a comp_2501 blocks + m (Lawu;)Lcxx$a; a method_58427 deniesDrops + m (Lawu;F)Lcxx$a; a method_58428 minesAndDrops + m (Lawu;Ljava/util/Optional;Ljava/util/Optional;)Lcxx$a; a method_58429 forTag + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58430 method_58430 + m (Ljava/util/List;F)Lcxx$a; a method_58431 minesAndDrops + m (Ljava/util/List;Ljava/util/Optional;Ljava/util/Optional;)Lcxx$a; a method_58432 forBlocks + m ()Ljava/util/Optional; b comp_2502 speed + m (Lawu;F)Lcxx$a; b method_58433 overrideSpeed + m (Ljava/util/List;F)Lcxx$a; b method_58434 overrideSpeed + m ()Ljava/util/Optional; c comp_2503 correctForDrops + m (Ljq;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c cxy net/minecraft/class_9299 net/minecraft/world/item/component/TooltipProvider + m (Lcul$b;Ljava/util/function/Consumer;Lcwm;)V a method_57409 addToTooltip +c cxz net/minecraft/class_9300 net/minecraft/world/item/component/Unbreakable + f Lcom/mojang/serialization/Codec; a field_49366 CODEC + f Lyx; b field_49367 STREAM_CODEC + f Z c comp_2417 showInTooltip + f Lwz; d field_49368 TOOLTIP + m ()Z a comp_2417 showInTooltip + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57515 method_57515 + m (Z)Lcxz; a method_58435 withTooltip + m (Z)V + m ()V +c cya net/minecraft/class_9301 net/minecraft/world/item/component/WritableBookContent + f Lcya; a field_49369 EMPTY + f I b field_49370 PAGE_EDIT_LENGTH + f I c field_51411 MAX_PAGES + f Lcom/mojang/serialization/Codec; d field_49374 PAGES_CODEC + f Lcom/mojang/serialization/Codec; e field_49371 CODEC + f Lyx; f field_49372 STREAM_CODEC + f Ljava/util/List; g comp_2418 pages + f Lcom/mojang/serialization/Codec; h field_49373 PAGE_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57516 method_57516 + m (Z)Ljava/util/stream/Stream; a method_57517 getPages + m (ZLarl;)Ljava/lang/String; a method_57518 method_57518 + m (Ljava/util/List;)Lcya; b method_58187 withReplacedPages + m (Ljava/util/List;)V + m ()V +c cyb net/minecraft/class_9302 net/minecraft/world/item/component/WrittenBookContent + f Lcyb; a field_49829 EMPTY + f I b field_49375 PAGE_LENGTH + f I c field_49377 TITLE_LENGTH + f I d field_49378 TITLE_MAX_LENGTH + f I e field_49379 MAX_GENERATION + f I f field_49380 MAX_CRAFTABLE_GENERATION + f Lcom/mojang/serialization/Codec; g field_49383 CONTENT_CODEC + f Lcom/mojang/serialization/Codec; h field_49384 PAGES_CODEC + f Lcom/mojang/serialization/Codec; i field_49381 CODEC + f Lyx; j field_49382 STREAM_CODEC + f Larl; k comp_2419 title + f Ljava/lang/String; l comp_2420 author + f I m comp_2421 generation + f Ljava/util/List; n comp_2422 pages + f Z o comp_2423 resolved + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; a method_58436 pagesCodec + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57520 method_57520 + m (Let;Lcmx;)Lcyb; a method_57521 resolve + m (Let;Lcmx;Larl;)Ljava/util/Optional; a method_57522 resolvePage + m (Let;Lcmx;Lwz;)Ljava/util/Optional; a method_57523 method_57523 + m (Lwz;Ljo$a;)Z a method_57524 isPageTooLarge + m (Z)Ljava/util/List; a method_57525 getPages + m (ZLarl;)Lwz; a method_57526 method_57526 + m ()Lcyb; b method_57519 tryCraftCopy + m (Lcom/mojang/serialization/Codec;)Lcom/mojang/serialization/Codec; b method_58437 pageCodec + m (Ljava/util/List;)Lcyb; b method_58188 withReplacedPages + m ()Lcyb; c method_57527 markResolved + m ()Larl; d comp_2419 title + m ()Ljava/lang/String; e comp_2420 author + m ()I f comp_2421 generation + m ()Z g comp_2423 resolved + m (Larl;Ljava/lang/String;ILjava/util/List;Z)V + m ()V +c cyc net/minecraft/class_9303 net/minecraft/world/item/component/package-info +c cyd net/minecraft/class_1750 net/minecraft/world/item/context/BlockPlaceContext + f Z a field_7904 replaceClicked + f Ljd; b field_7903 relativePos + m (Lcyd;Ljd;Lji;)Lcyd; a method_16355 at + m ()Z b method_7716 canPlace + m ()Z c method_7717 replacingClickedOnBlock + m ()Lji; d method_7715 getNearestLookingDirection + m ()Lji; e method_32760 getNearestLookingVerticalDirection + m ()[Lji; f method_7718 getNearestLookingDirections + m (Lcmx;Lbqq;Lcuq;Lewy;)V + m (Lcyf;)V + m (Ldcw;Lcmx;Lbqq;Lcuq;Lewy;)V +c cye net/minecraft/class_2968 net/minecraft/world/item/context/DirectionalPlaceContext + f Lji; b field_13362 direction + m (Ldcw;Ljd;Lji;Lcuq;Lji;)V +c cye$1 net/minecraft/class_2968$1 net/minecraft/world/item/context/DirectionalPlaceContext$1 + f [I a field_13363 $SwitchMap$net$minecraft$core$Direction + m ()V +c cyf net/minecraft/class_1838 net/minecraft/world/item/context/UseOnContext + f Lcmx; a field_8942 player + f Lbqq; b field_19176 hand + f Lewy; c field_17543 hitResult + f Ldcw; d field_8945 level + f Lcuq; e field_8941 itemStack + m ()Ljd; a method_8037 getClickedPos + m ()Lji; g method_8042 getHorizontalDirection + m ()Z h method_8046 isSecondaryUseActive + m ()F i method_8044 getRotation + m ()Lewy; j method_30344 getHitResult + m ()Lji; k method_8038 getClickedFace + m ()Lexc; l method_17698 getClickLocation + m ()Z m method_17699 isInside + m ()Lcuq; n method_8041 getItemInHand + m ()Lcmx; o method_8036 getPlayer + m ()Lbqq; p method_20287 getHand + m ()Ldcw; q method_8045 getLevel + m (Lcmx;Lbqq;Lewy;)V + m (Ldcw;Lcmx;Lbqq;Lcuq;Lewy;)V +c cyg net/minecraft/class_6081 net/minecraft/world/item/context/package-info +c cyh net/minecraft/class_1874 net/minecraft/world/item/crafting/AbstractCookingRecipe + f Lczf; a field_17544 type + f Lcyn; b field_40241 category + f Ljava/lang/String; c field_9062 group + f Lcyw; d field_9061 ingredient + f Lcuq; e field_9059 result + f F f field_9057 experience + f I g field_9058 cookingTime + m (Lczp;Ldcw;)Z a method_59981 matches + m (Lczp;Ljo$a;)Lcuq; a method_59982 assemble + m ()F b method_8171 getExperience + m ()I d method_8167 getCookingTime + m ()Lcyn; f method_45438 category + m (Lczf;Ljava/lang/String;Lcyn;Lcyw;Lcuq;FI)V +c cyh$a net/minecraft/class_1874$class_3958 net/minecraft/world/item/crafting/AbstractCookingRecipe$Factory +c cyi net/minecraft/class_1849 net/minecraft/world/item/crafting/ArmorDyeRecipe + m (Lcyp;Ldcw;)Z a method_17701 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17700 assemble + m (Lcyo;)V +c cyj net/minecraft/class_1848 net/minecraft/world/item/crafting/BannerDuplicateRecipe + m (Lcyp;)Ljv; a method_17704 getRemainingItems + m (Lcyp;Ldcw;)Z a method_17703 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17702 assemble + m (Lcyo;)V +c cyk net/minecraft/class_3859 net/minecraft/world/item/crafting/BlastingRecipe + m (Ljava/lang/String;Lcyn;Lcyw;Lcuq;FI)V +c cyl net/minecraft/class_1850 net/minecraft/world/item/crafting/BookCloningRecipe + m (Lcyp;)Ljv; a method_17707 getRemainingItems + m (Lcyp;Ldcw;)Z a method_17706 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17705 assemble + m (Lcyo;)V +c cym net/minecraft/class_3920 net/minecraft/world/item/crafting/CampfireCookingRecipe + m (Ljava/lang/String;Lcyn;Lcyw;Lcuq;FI)V +c cyn net/minecraft/class_7709 net/minecraft/world/item/crafting/CookingBookCategory + f Lcyn; a field_40242 FOOD + f Lcyn; b field_40243 BLOCKS + f Lcyn; c field_40244 MISC + f Lazk$a; d field_40245 CODEC + f Ljava/lang/String; e field_40246 name + f [Lcyn; f field_40247 $VALUES + m ()[Lcyn; a method_45439 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c cyo net/minecraft/class_7710 net/minecraft/world/item/crafting/CraftingBookCategory + f Lcyo; a field_40248 BUILDING + f Lcyo; b field_40249 REDSTONE + f Lcyo; c field_40250 EQUIPMENT + f Lcyo; d field_40251 MISC + f Lcom/mojang/serialization/Codec; e field_40252 CODEC + f Ljava/util/function/IntFunction; f field_48352 BY_ID + f Lyx; g field_48353 STREAM_CODEC + f Ljava/lang/String; h field_40253 name + f I i field_48354 id + f [Lcyo; j field_40254 $VALUES + m ()I a method_56101 id + m ()[Lcyo; b method_45440 $values + m (Ljava/lang/String;ILjava/lang/String;I)V + m ()V +c cyp net/minecraft/class_9694 net/minecraft/world/item/crafting/CraftingInput + f Lcyp; a field_51631 EMPTY + f I b field_51632 width + f I c field_51633 height + f Ljava/util/List; d field_51634 items + f Lcnb; e field_51635 stackedContents + f I f field_51636 ingredientCount + m (II)Lcuq; a method_59985 getItem + m (IILjava/util/List;)Lcyp; a method_59986 of + m (IILjava/util/List;)Lcyp$a; b method_60505 ofPositioned + m ()Lcnb; c method_59988 stackedContents + m ()Ljava/util/List; d method_59989 items + m ()I e method_59990 ingredientCount + m ()I f method_59991 width + m ()I g method_59992 height + m (IILjava/util/List;)V + m ()V +c cyp$a net/minecraft/class_9694$class_9765 net/minecraft/world/item/crafting/CraftingInput$Positioned + f Lcyp$a; a field_51896 EMPTY + f Lcyp; b comp_2795 input + f I c comp_2796 left + f I d comp_2797 top + m ()Lcyp; a comp_2795 input + m ()I b comp_2796 left + m ()I c comp_2797 top + m (Lcyp;II)V + m ()V +c cyq net/minecraft/class_3955 net/minecraft/world/item/crafting/CraftingRecipe + m ()Lcyo; d method_45441 category +c cyr net/minecraft/class_1852 net/minecraft/world/item/crafting/CustomRecipe + f Lcyo; a field_40255 category + m (Lcyo;)V +c cys net/minecraft/class_8164 net/minecraft/world/item/crafting/DecoratedPotRecipe + m (Lcyp;Ldcw;)Z a method_49186 matches + m (Lcyp;Ljo$a;)Lcuq; a method_49187 assemble + m (Lcyo;)V +c cyt net/minecraft/class_1851 net/minecraft/world/item/crafting/FireworkRocketRecipe + f Lcyw; a field_9007 PAPER_INGREDIENT + f Lcyw; b field_9006 GUNPOWDER_INGREDIENT + f Lcyw; c field_9008 STAR_INGREDIENT + m (Lcyp;Ldcw;)Z a method_17709 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17708 assemble + m (Lcyo;)V + m ()V +c cyu net/minecraft/class_1854 net/minecraft/world/item/crafting/FireworkStarFadeRecipe + f Lcyw; a field_9015 STAR_INGREDIENT + m (Lcyp;Ldcw;)Z a method_17711 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17710 assemble + m (Lcyo;)V + m ()V +c cyv net/minecraft/class_1853 net/minecraft/world/item/crafting/FireworkStarRecipe + f Lcyw; a field_9011 SHAPE_INGREDIENT + f Lcyw; b field_9010 TRAIL_INGREDIENT + f Lcyw; c field_9014 TWINKLE_INGREDIENT + f Ljava/util/Map; d field_9013 SHAPE_BY_ITEM + f Lcyw; e field_9012 GUNPOWDER_INGREDIENT + m (Lcyp;Ldcw;)Z a method_17713 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17712 assemble + m (Ljava/util/HashMap;)V a method_8085 method_8085 + m (Lcyo;)V + m ()V +c cyw net/minecraft/class_1856 net/minecraft/world/item/crafting/Ingredient + f Lcyw; a field_9017 EMPTY + f Lyx; b field_48355 CONTENTS_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_46095 CODEC + f Lcom/mojang/serialization/Codec; d field_46096 CODEC_NONEMPTY + f [Lcyw$c; e field_9019 values + f [Lcuq; f field_9018 itemStacks + f Lit/unimi/dsi/fastutil/ints/IntList; g field_9016 stackingIds + m ()[Lcuq; a method_8105 getItems + m (I)[Lcuq; a method_47373 method_47373 + m (Lawu;)Lcyw; a method_8106 of + m (Lcom/mojang/datafixers/util/Either;)Lcyw; a method_53722 method_53722 + m (Lcuq;)Z a method_8093 test + m (Lcyw$c;)Lcyw; a method_53721 method_53721 + m (Lcyw;)Ljava/util/List; a method_56102 method_56102 + m (Ljava/util/List;)Lcyw; a method_56103 method_56103 + m (Ljava/util/stream/Stream;)Lcyw; a method_26964 of + m (Z)Lcom/mojang/serialization/Codec; a method_53725 codec + m (ZLcyw;)Lcom/mojang/serialization/DataResult; a method_53723 method_53723 + m (ZLjava/util/List;)Lcom/mojang/serialization/DataResult; a method_53724 method_53724 + m ([Lcuq;)Lcyw; a method_8101 of + m ([Ldcv;)Lcyw; a method_8091 of + m ()Lit/unimi/dsi/fastutil/ints/IntList; b method_8100 getStackingIds + m (I)[Lcyw$c; b method_8087 method_8087 + m (Lcuq;)Z b method_26965 method_26965 + m (Lcyw$c;)Ljava/util/stream/Stream; b method_47374 method_47374 + m (Ljava/util/stream/Stream;)Lcyw; b method_8092 fromValues + m ()Z c method_8103 isEmpty + m ()Lcyw; d method_35226 of + m ()Ljava/lang/String; e method_53726 method_53726 + m ()Ljava/lang/String; f method_53727 method_53727 + m (Ljava/util/stream/Stream;)V + m ([Lcyw$c;)V + m ()V +c cyw$a net/minecraft/class_1856$class_1857 net/minecraft/world/item/crafting/Ingredient$ItemValue + f Lcuq; b comp_1930 item + f Lcom/mojang/serialization/Codec; c field_46097 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53729 method_53729 + m (Lcyw$a;)Lcuq; a method_53728 method_53728 + m ()Lcuq; b comp_1930 item + m (Lcuq;)V + m ()V +c cyw$b net/minecraft/class_1856$class_1858 net/minecraft/world/item/crafting/Ingredient$TagValue + f Lawu; b comp_1931 tag + f Lcom/mojang/serialization/Codec; c field_46098 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53731 method_53731 + m (Lcyw$b;)Lawu; a method_53730 method_53730 + m ()Lawu; b comp_1931 tag + m (Lawu;)V + m ()V +c cyw$c net/minecraft/class_1856$class_1859 net/minecraft/world/item/crafting/Ingredient$Value + f Lcom/mojang/serialization/Codec; a field_46099 CODEC + m ()Ljava/util/Collection; a method_8108 getItems + m (Lcom/mojang/datafixers/util/Either;)Lcyw$c; a method_53735 method_53735 + m (Lcyw$a;)Ljava/lang/Record; a method_53732 method_53732 + m (Lcyw$b;)Ljava/lang/Record; a method_53733 method_53733 + m (Lcyw$c;)Lcom/mojang/datafixers/util/Either; a method_53734 method_53734 + m ()V +c cyx net/minecraft/class_1855 net/minecraft/world/item/crafting/MapCloningRecipe + m (Lcyp;Ldcw;)Z a method_17715 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17714 assemble + m (Lcyo;)V +c cyy net/minecraft/class_1861 net/minecraft/world/item/crafting/MapExtendingRecipe + m (Lcyp;)Lcuq; a method_51165 findFilledMap + m (Lcyo;)V +c cyz net/minecraft/class_1860 net/minecraft/world/item/crafting/Recipe + f Lcom/mojang/serialization/Codec; h field_47319 CODEC + f Lyx; i field_48356 STREAM_CODEC + m ()Ljv; a method_8117 getIngredients + m (II)Z a method_8113 canCraftInDimensions + m (Lcyw;)Z a method_31583 method_31583 + m (Lczc;)Ljv; a method_8111 getRemainingItems + m (Lczc;Ldcw;)Z a method_8115 matches + m (Lczc;Ljo$a;)Lcuq; a method_8116 assemble + m (Ljo$a;)Lcuq; a method_8110 getResultItem + m ()Z as_ method_8118 isSpecial + m ()Lcze; at_ method_8119 getSerializer + m ()Ljava/lang/String; c method_8112 getGroup + m ()Lczf; e method_17716 getType + m ()Lcuq; g method_17447 getToastSymbol + m ()Z h method_49188 showNotification + m ()Z i method_31584 isIncomplete + m ()V +c cza net/minecraft/class_8884 net/minecraft/world/item/crafting/RecipeCache + f [Lcza$a; a field_46792 entries + f Ljava/lang/ref/WeakReference; b field_46793 cachedRecipeManager + m (I)V a method_54467 moveEntryToFront + m (Lcyp;Lczb;)V a method_54471 insert + m (Lcyp;Ldcw;)Ljava/util/Optional; a method_54468 compute + m (Ldcw;)V a method_54469 validateRecipeManager + m (Ldcw;Lcyp;)Ljava/util/Optional; a method_54470 get + m (I)V +c cza$a net/minecraft/class_8884$class_8885 net/minecraft/world/item/crafting/RecipeCache$Entry + f Ljv; a comp_2001 key + f I b comp_2816 width + f I c comp_2817 height + f Lczb; d comp_2002 value + m ()Ljv; a comp_2001 key + m (Lcyp;)Z a method_54472 matches + m ()I b comp_2816 width + m ()I c comp_2817 height + m ()Lczb; d comp_2002 value + m (Ljv;IILczb;)V +c czb net/minecraft/class_8786 net/minecraft/world/item/crafting/RecipeHolder + f Lyx; a field_48357 STREAM_CODEC + f Lakr; b comp_1932 id + f Lcyz; c comp_1933 value + m ()Lakr; a comp_1932 id + m ()Lcyz; b comp_1933 value + m (Lakr;Lcyz;)V + m ()V +c czc net/minecraft/class_9695 net/minecraft/world/item/crafting/RecipeInput + m ()I a method_59983 size + m (I)Lcuq; a method_59984 getItem + m ()Z b method_59987 isEmpty +c czd net/minecraft/class_1863 net/minecraft/world/item/crafting/RecipeManager + f Lcom/google/gson/Gson; a field_19359 GSON + f Lorg/slf4j/Logger; b field_9027 LOGGER + f Ljo$a; c field_48848 registries + f Lcom/google/common/collect/Multimap; d field_51481 byType + f Ljava/util/Map; e field_36308 byName + f Z f field_9024 hasErrors + m ()Z a method_35227 hadErrorsLoading + m (Lakr;)Ljava/util/Optional; a method_8130 byKey + m (Lakr;Lcom/google/gson/JsonObject;Ljo$a;)Lczb; a method_17720 fromJson + m (Lczc;Ldcw;Lczb;)Z a method_42297 method_42297 + m (Lczf;)Ljava/util/List; a method_30027 getAllRecipesFor + m (Lczf;Lakr;)Lczb; a method_59821 byKeyTyped + m (Lczf;Lczc;Ldcw;)Ljava/util/Optional; a method_8132 getRecipeFor + m (Lczf;Lczc;Ldcw;Lakr;)Ljava/util/Optional; a method_42299 getRecipeFor + m (Lczf;Lczc;Ldcw;Lczb;)Ljava/util/Optional; a method_59993 getRecipeFor + m (Ldcw;Lczb;)Ljava/lang/String; a method_17876 method_17876 + m (Ljava/lang/Iterable;)V a method_20702 replaceRecipes + m (Ljava/util/Map;Laue;Lbnf;)V a method_20705 apply + m ()Ljava/util/Collection; b method_59822 getOrderedRecipes + m (Lczc;Ldcw;Lczb;)Z b method_42301 method_42301 + m (Lczf;)Lczd$a; b method_42302 createCheck + m (Lczf;Lczc;Ldcw;)Ljava/util/List; b method_17877 getRecipesFor + m (Lczf;)Ljava/util/Collection; c method_17717 byType + m (Lczf;Lczc;Ldcw;)Ljv; c method_8128 getRemainingItemsFor + m ()Ljava/util/Collection; d method_8126 getRecipes + m ()Ljava/util/stream/Stream; e method_8127 getRecipeIds + m (Ljo$a;)V + m ()V +c czd$1 net/minecraft/class_1863$1 net/minecraft/world/item/crafting/RecipeManager$1 + f Lczf; a field_38220 val$type + f Lakr; b field_38221 lastRecipe + m (Lczf;)V +c czd$a net/minecraft/class_1863$class_7266 net/minecraft/world/item/crafting/RecipeManager$CachedCheck + m (Lczc;Ldcw;)Ljava/util/Optional; a method_42303 getRecipeFor +c cze net/minecraft/class_1865 net/minecraft/world/item/crafting/RecipeSerializer + f Lcze; a field_9035 SHAPED_RECIPE + f Lcze; b field_9031 SHAPELESS_RECIPE + f Lcze; c field_9028 ARMOR_DYE + f Lcze; d field_9029 BOOK_CLONING + f Lcze; e field_9044 MAP_CLONING + f Lcze; f field_9039 MAP_EXTENDING + f Lcze; g field_9043 FIREWORK_ROCKET + f Lcze; h field_9036 FIREWORK_STAR + f Lcze; i field_9034 FIREWORK_STAR_FADE + f Lcze; j field_9037 TIPPED_ARROW + f Lcze; k field_9038 BANNER_DUPLICATE + f Lcze; l field_9040 SHIELD_DECORATION + f Lcze; m field_9041 SHULKER_BOX_COLORING + f Lcze; n field_9030 SUSPICIOUS_STEW + f Lcze; o field_19421 REPAIR_ITEM + f Lcze; p field_9042 SMELTING_RECIPE + f Lcze; q field_17084 BLASTING_RECIPE + f Lcze; r field_17085 SMOKING_RECIPE + f Lcze; s field_17347 CAMPFIRE_COOKING_RECIPE + f Lcze; t field_17640 STONECUTTER + f Lcze; u field_42027 SMITHING_TRANSFORM + f Lcze; v field_42028 SMITHING_TRIM + f Lcze; w field_42718 DECORATED_POT_RECIPE + m ()Lcom/mojang/serialization/MapCodec; a method_53736 codec + m (Ljava/lang/String;Lcze;)Lcze; a method_17724 register + m ()Lyx; b method_56104 streamCodec + m ()V +c czf net/minecraft/class_3956 net/minecraft/world/item/crafting/RecipeType + f Lczf; a field_17545 CRAFTING + f Lczf; b field_17546 SMELTING + f Lczf; c field_17547 BLASTING + f Lczf; d field_17548 SMOKING + f Lczf; e field_17549 CAMPFIRE_COOKING + f Lczf; f field_17641 STONECUTTING + f Lczf; g field_25388 SMITHING + m (Ljava/lang/String;)Lczf; a method_17726 register + m ()V +c czf$1 net/minecraft/class_3956$1 net/minecraft/world/item/crafting/RecipeType$1 + f Ljava/lang/String; h field_17550 val$name + m (Ljava/lang/String;)V +c czg net/minecraft/class_4317 net/minecraft/world/item/crafting/RepairItemRecipe + m (Lcuq;Lcuq;)Z a method_58439 canCombine + m (Lcyp;)Lcom/mojang/datafixers/util/Pair; a method_58438 getItemsToCombine + m (Lcyp;Ldcw;)Z a method_20808 matches + m (Lcyp;Ljo$a;)Lcuq; a method_20807 assemble + m (Ldai;Ldai;Ldai$a;Ljm$c;)V a method_24364 method_24364 + m (Ljm$c;)Z a method_59994 method_59994 + m (Ljo$a;Ldai;Ldai;Ldai$a;)V a method_57528 method_57528 + m (Lcyo;)V +c czh net/minecraft/class_1869 net/minecraft/world/item/crafting/ShapedRecipe + f Lczi; a field_47320 pattern + f Lcuq; b field_9053 result + f Ljava/lang/String; c field_9056 group + f Lcyo; d field_40256 category + f Z e field_42719 showNotification + m (Lcyp;Ldcw;)Z a method_17728 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17727 assemble + m (Lcyw;)Z a method_31585 method_31585 + m (Lcyw;)Z b method_31586 method_31586 + m ()I j method_8150 getWidth + m ()I k method_8158 getHeight + m (Ljava/lang/String;Lcyo;Lczi;Lcuq;Z)V + m (Ljava/lang/String;Lcyo;Lczi;Lcuq;)V +c czh$a net/minecraft/class_1869$class_1870 net/minecraft/world/item/crafting/ShapedRecipe$Serializer + f Lcom/mojang/serialization/MapCodec; x field_46102 CODEC + f Lyx; y field_48358 STREAM_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55071 method_55071 + m (Lczh;)Ljava/lang/Boolean; a method_55072 method_55072 + m (Lwk;)Lczh; a method_8163 fromNetwork + m (Lwk;Lczh;)V a method_8165 toNetwork + m (Lczh;)Lcuq; b method_55073 method_55073 + m (Lczh;)Lczi; c method_55074 method_55074 + m (Lczh;)Lcyo; d method_55075 method_55075 + m (Lczh;)Ljava/lang/String; e method_55076 method_55076 + m ()V + m ()V +c czi net/minecraft/class_8957 net/minecraft/world/item/crafting/ShapedRecipePattern + f Lcom/mojang/serialization/MapCodec; a field_47321 MAP_CODEC + f Lyx; b field_48359 STREAM_CODEC + f I c field_47322 MAX_SIZE + f I d field_51637 width + f I e field_51638 height + f Ljv; f field_51639 ingredients + f Ljava/util/Optional; g field_51640 data + f I h field_51641 ingredientCount + f Z i field_51642 symmetrical + m ()I a method_59995 width + m (C)Ljava/lang/String; a method_55077 method_55077 + m (Lcyp;)Z a method_55078 matches + m (Lcyp;Z)Z a method_55079 matches + m (Lczi$a;)Lcom/mojang/serialization/DataResult; a method_55080 unpack + m (Lczi;)Lcom/mojang/serialization/DataResult; a method_55081 method_55081 + m (Lit/unimi/dsi/fastutil/chars/CharSet;)Ljava/lang/String; a method_55082 method_55082 + m (Ljava/lang/String;)I a method_55083 firstNonSpace + m (Ljava/util/List;)[Ljava/lang/String; a method_55084 shrink + m (Ljava/util/Map;Ljava/util/List;)Lczi; a method_55085 of + m (Ljava/util/Map;[Ljava/lang/String;)Lczi; a method_55086 of + m (Lwk;)V a method_55087 toNetwork + m (Lwk;Lcyw;)Lcyw; a method_55088 method_55088 + m ()I b method_59996 height + m (Ljava/lang/String;)I b method_55089 lastNonSpace + m (Lwk;)Lczi; b method_55090 fromNetwork + m ()Ljv; c method_59997 ingredients + m ()Lcom/mojang/serialization/DataResult; d method_55091 method_55091 + m ()Ljava/lang/String; e method_55092 method_55092 + m (IILjv;Ljava/util/Optional;)V + m ()V +c czi$a net/minecraft/class_8957$class_8958 net/minecraft/world/item/crafting/ShapedRecipePattern$Data + f Lcom/mojang/serialization/MapCodec; a field_47323 MAP_CODEC + f Ljava/util/Map; b comp_2085 key + f Ljava/util/List; c comp_2086 pattern + f Lcom/mojang/serialization/Codec; d field_47324 PATTERN_CODEC + f Lcom/mojang/serialization/Codec; e field_47325 SYMBOL_CODEC + m ()Ljava/util/Map; a comp_2085 key + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55093 method_55093 + m (Lczi$a;)Ljava/util/List; a method_55094 method_55094 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_55095 method_55095 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_55096 method_55096 + m ()Ljava/util/List; b comp_2086 pattern + m (Lczi$a;)Ljava/util/Map; b method_55097 method_55097 + m (Ljava/lang/String;)Ljava/lang/String; b method_55098 method_55098 + m ()Ljava/lang/String; c method_55099 method_55099 + m ()Ljava/lang/String; d method_55100 method_55100 + m ()Ljava/lang/String; e method_55101 method_55101 + m ()Ljava/lang/String; f method_55102 method_55102 + m ()Ljava/lang/String; g method_55103 method_55103 + m (Ljava/util/Map;Ljava/util/List;)V + m ()V +c czj net/minecraft/class_1867 net/minecraft/world/item/crafting/ShapelessRecipe + f Ljava/lang/String; a field_9049 group + f Lcyo; b field_40257 category + f Lcuq; c field_9050 result + f Ljv; d field_9047 ingredients + m (Lcyp;Ldcw;)Z a method_17730 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17729 assemble + m (Ljava/lang/String;Lcyo;Lcuq;Ljv;)V +c czj$a net/minecraft/class_1867$class_1868 net/minecraft/world/item/crafting/ShapelessRecipe$Serializer + f Lyx; x field_48360 STREAM_CODEC + f Lcom/mojang/serialization/MapCodec; y field_46104 CODEC + m (I)[Lcyw; a method_53756 method_53756 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53759 method_53759 + m (Lcyw;)Z a method_53757 method_53757 + m (Lczj;)Ljv; a method_53758 method_53758 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_53760 method_53760 + m (Lwk;)Lczj; a method_8141 fromNetwork + m (Lwk;Lcyw;)Lcyw; a method_56105 method_56105 + m (Lwk;Lczj;)V a method_8143 toNetwork + m (Lczj;)Lcuq; b method_53762 method_53762 + m ()Ljava/lang/String; c method_53761 method_53761 + m (Lczj;)Lcyo; c method_53764 method_53764 + m ()Ljava/lang/String; d method_53763 method_53763 + m (Lczj;)Ljava/lang/String; d method_53765 method_53765 + m ()V + m ()V +c czk net/minecraft/class_1872 net/minecraft/world/item/crafting/ShieldDecorationRecipe + m (Lcyp;Ldcw;)Z a method_17732 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17731 assemble + m (Lcyo;)V +c czl net/minecraft/class_1871 net/minecraft/world/item/crafting/ShulkerBoxColoring + m (Lcyp;Ldcw;)Z a method_17734 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17733 assemble + m (Lcyo;)V +c czm net/minecraft/class_3957 net/minecraft/world/item/crafting/SimpleCookingSerializer + f Lcyh$a; x field_17552 factory + f Lcom/mojang/serialization/MapCodec; y field_46105 codec + f Lyx; z field_48361 streamCodec + m (ILcyh$a;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53766 method_53766 + m (Lcyh;)Ljava/lang/Integer; a method_53767 method_53767 + m (Ljava/lang/String;Lcyn;Lcyw;Lcuq;FI)Lcyh; a method_55104 create + m (Lwk;)Lcyh; a method_17737 fromNetwork + m (Lwk;Lcyh;)V a method_17735 toNetwork + m (Lcyh;)Ljava/lang/Float; b method_53768 method_53768 + m (Lcyh;)Lcuq; c method_53769 method_53769 + m (Lcyh;)Lcyw; d method_53770 method_53770 + m (Lcyh;)Lcyn; e method_53771 method_53771 + m (Lcyh;)Ljava/lang/String; f method_53772 method_53772 + m (Lcyh$a;I)V +c czn net/minecraft/class_1866 net/minecraft/world/item/crafting/SimpleCraftingRecipeSerializer + f Lcom/mojang/serialization/MapCodec; x field_46106 codec + f Lyx; y field_48362 streamCodec + m (Lczn$a;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53773 method_53773 + m (Lczn$a;)V +c czn$a net/minecraft/class_1866$class_7711 net/minecraft/world/item/crafting/SimpleCraftingRecipeSerializer$Factory +c czo net/minecraft/class_3972 net/minecraft/world/item/crafting/SingleItemRecipe + f Lcyw; a field_17642 ingredient + f Lcuq; b field_17643 result + f Ljava/lang/String; c field_17645 group + f Lczf; d field_17646 type + f Lcze; e field_17647 serializer + m (Lczp;Ljo$a;)Lcuq; a method_59998 assemble + m (Lczf;Lcze;Ljava/lang/String;Lcyw;Lcuq;)V +c czo$a net/minecraft/class_3972$class_3974 net/minecraft/world/item/crafting/SingleItemRecipe$Factory +c czo$b net/minecraft/class_3972$class_3973 net/minecraft/world/item/crafting/SingleItemRecipe$Serializer + f Lczo$a; x field_17648 factory + f Lcom/mojang/serialization/MapCodec; y field_46107 codec + f Lyx; z field_48363 streamCodec + m (Lczo$a;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53774 method_53774 + m (Lczo;)Lcuq; a method_56106 method_56106 + m (Lczo;)Lcyw; b method_56107 method_56107 + m (Lczo;)Ljava/lang/String; c method_56108 method_56108 + m (Lczo;)Lcuq; d method_53879 method_53879 + m (Lczo;)Lcyw; e method_53777 method_53777 + m (Lczo;)Ljava/lang/String; f method_53778 method_53778 + m (Lczo$a;)V +c czp net/minecraft/class_9696 net/minecraft/world/item/crafting/SingleRecipeInput + f Lcuq; a comp_2676 item + m ()Lcuq; c comp_2676 item + m (Lcuq;)V +c czq net/minecraft/class_3861 net/minecraft/world/item/crafting/SmeltingRecipe + m (Ljava/lang/String;Lcyn;Lcyw;Lcuq;FI)V +c czr net/minecraft/class_8059 net/minecraft/world/item/crafting/SmithingRecipe + m (Lcuq;)Z a method_48453 isTemplateIngredient + m (Lcuq;)Z b method_48454 isBaseIngredient + m (Lcuq;)Z c method_30029 isAdditionIngredient +c czs net/minecraft/class_9697 net/minecraft/world/item/crafting/SmithingRecipeInput + f Lcuq; a comp_2677 template + f Lcuq; b comp_2678 base + f Lcuq; c comp_2679 addition + m ()Lcuq; c comp_2677 template + m ()Lcuq; d comp_2678 base + m ()Lcuq; e comp_2679 addition + m (Lcuq;Lcuq;Lcuq;)V +c czt net/minecraft/class_8060 net/minecraft/world/item/crafting/SmithingTransformRecipe + f Lcyw; a field_42030 template + f Lcyw; b field_42031 base + f Lcyw; c field_42032 addition + f Lcuq; d field_42033 result + m (Lczs;Ldcw;)Z a method_59999 matches + m (Lczs;Ljo$a;)Lcuq; a method_60000 assemble + m (Lcyw;Lcyw;Lcyw;Lcuq;)V +c czt$a net/minecraft/class_8060$class_8061 net/minecraft/world/item/crafting/SmithingTransformRecipe$Serializer + f Lyx; x field_48364 STREAM_CODEC + f Lcom/mojang/serialization/MapCodec; y field_46108 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53780 method_53780 + m (Lczt;)Lcuq; a method_53779 method_53779 + m (Lwk;)Lczt; a method_48456 fromNetwork + m (Lwk;Lczt;)V a method_48457 toNetwork + m (Lczt;)Lcyw; b method_53781 method_53781 + m (Lczt;)Lcyw; c method_53782 method_53782 + m (Lczt;)Lcyw; d method_53783 method_53783 + m ()V + m ()V +c czu net/minecraft/class_8062 net/minecraft/world/item/crafting/SmithingTrimRecipe + f Lcyw; a field_42035 template + f Lcyw; b field_42036 base + f Lcyw; c field_42037 addition + m (Lczs;Ldcw;)Z a method_60001 matches + m (Lczs;Ljo$a;)Lcuq; a method_60002 assemble + m (Lcyw;Lcyw;Lcyw;)V +c czu$a net/minecraft/class_8062$class_8063 net/minecraft/world/item/crafting/SmithingTrimRecipe$Serializer + f Lyx; x field_48365 STREAM_CODEC + f Lcom/mojang/serialization/MapCodec; y field_46109 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53785 method_53785 + m (Lczu;)Lcyw; a method_53784 method_53784 + m (Lwk;)Lczu; a method_48460 fromNetwork + m (Lwk;Lczu;)V a method_48461 toNetwork + m (Lczu;)Lcyw; b method_53786 method_53786 + m (Lczu;)Lcyw; c method_53787 method_53787 + m ()V + m ()V +c czv net/minecraft/class_3862 net/minecraft/world/item/crafting/SmokingRecipe + m (Ljava/lang/String;Lcyn;Lcyw;Lcuq;FI)V +c czw net/minecraft/class_3975 net/minecraft/world/item/crafting/StonecutterRecipe + m (Lczp;Ldcw;)Z a method_60003 matches + m (Ljava/lang/String;Lcyw;Lcuq;)V +c czx net/minecraft/class_1873 net/minecraft/world/item/crafting/SuspiciousStewRecipe + m (Lcyp;Ldcw;)Z a method_17739 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17738 assemble + m (Lcyo;)V +c czy net/minecraft/class_1876 net/minecraft/world/item/crafting/TippedArrowRecipe + m (Lcyp;Ldcw;)Z a method_17741 matches + m (Lcyp;Ljo$a;)Lcuq; a method_17740 assemble + m (Lcyo;)V +c czz net/minecraft/class_6082 net/minecraft/world/item/crafting/package-info +c daa net/minecraft/class_9698 net/minecraft/world/item/enchantment/ConditionalEffect + f Ljava/lang/Object; a comp_2680 effect + f Ljava/util/Optional; b comp_2681 requirements + m ()Ljava/lang/Object; a comp_2680 effect + m (Lcom/mojang/serialization/Codec;Leul;)Lcom/mojang/serialization/Codec; a method_60004 codec + m (Lcom/mojang/serialization/Codec;Leul;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60005 method_60005 + m (Lerr;)Z a method_60006 matches + m (Leul;)Lcom/mojang/serialization/Codec; a method_60007 conditionCodec + m (Leul;Levc;)Lcom/mojang/serialization/DataResult; a method_60008 method_60008 + m (Levc;)Lcom/mojang/serialization/DataResult; a method_60009 method_60009 + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_60010 method_60010 + m ()Ljava/util/Optional; b comp_2681 requirements + m (Ljava/lang/String;)Ljava/lang/String; b method_60011 method_60011 + m (Ljava/lang/Object;Ljava/util/Optional;)V +c dab net/minecraft/class_9699 net/minecraft/world/item/enchantment/EnchantedItemInUse + f Lcuq; a comp_2682 itemStack + f Lbsy; b comp_2683 inSlot + f Lbtn; c comp_2684 owner + f Ljava/util/function/Consumer; d comp_2685 onBreak + m ()Lcuq; a comp_2682 itemStack + m (Lbtn;Lbsy;Lcul;)V a method_60012 method_60012 + m ()Lbsy; b comp_2683 inSlot + m ()Lbtn; c comp_2684 owner + m ()Ljava/util/function/Consumer; d comp_2685 onBreak + m (Lcuq;Lbsy;Lbtn;)V + m (Lcuq;Lbsy;Lbtn;Ljava/util/function/Consumer;)V +c dac net/minecraft/class_1887 net/minecraft/world/item/enchantment/Enchantment + f I a field_51949 MAX_LEVEL + f Lcom/mojang/serialization/Codec; b field_51643 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; c field_51644 CODEC + f Lyx; d field_51950 STREAM_CODEC + f Lwz; e comp_2686 description + f Ldac$c; f comp_2687 definition + f Ljq; g comp_2688 exclusiveSet + f Lkm; h comp_2689 effects + m ()Ljq; a method_56109 getSupportedItems + m (I)Ldac$b; a method_58440 constantCost + m (II)Ldac$b; a method_58441 dynamicCost + m (ILdab;Lbtn;)V a method_60013 stopLocationBasedEffects + m (Laqu;ILbsr;Lbrk;)Z a method_60014 isImmuneToDamage + m (Laqu;ILbsr;Lexc;)Lerr; a method_60015 entityContext + m (Laqu;ILbsr;Lexc;Ldtc;)Lerr; a method_60768 blockHitContext + m (Laqu;ILbsr;Z)Lerr; a method_60016 locationContext + m (Laqu;ILcuq;)Lerr; a method_60017 itemContext + m (Laqu;ILcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60018 modifyDamageProtection + m (Laqu;ILcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60019 modifyMobExperience + m (Laqu;ILcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60020 modifyDurabilityChange + m (Laqu;ILdab;Lbsr;)V a method_60021 tick + m (Laqu;ILdab;Lbsr;Ldas;)V a method_60022 method_60022 + m (Laqu;ILdab;Lbsr;Lexc;Ldas;)V a method_60024 method_60024 + m (Laqu;ILdab;Lbsr;Lexc;Ldtc;)V a method_60023 onHitBlock + m (Laqu;ILdab;Lbtn;)V a method_60025 runLocationChangedEffects + m (Laqu;ILdab;Ldag;Lbsr;Lbrk;)V a method_8189 doPostAttack + m (Layw;ILorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60049 modifyTridentSpinAttackStrength + m (Lbsy;)Z a method_60026 matchingSlot + m (Lbsy;Lbsz;)Z a method_60027 method_60027 + m (Lbtn;)Ljava/util/Map; a method_8185 getSlotItems + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60028 method_60028 + m (Lcuq;)Z a method_58444 isPrimaryItem + m (Ldab;Lbtn;ILdat;)V a method_60029 method_60029 + m (Ldac$c;)Ldac$a; a method_60030 enchantment + m (Ldak;Laqu;ILdab;Lbsr;Lbrk;)V a method_60031 doPostAttack + m (Ljava/util/List;Lerr;Ljava/util/function/Consumer;)V a method_60032 applyEffects + m (Ljm;I)Lwz; a method_8179 getFullname + m (Ljm;Ljm;)Z a method_60033 areCompatible + m (Ljq;IILdac$b;Ldac$b;I[Lbsz;)Ldac$c; a method_58442 definition + m (Ljq;Ljq;IILdac$b;Ldac$b;I[Lbsz;)Ldac$c; a method_58443 definition + m (Lkp;)Ljava/util/List; a method_60034 getEffects + m (Lkp;Laqu;ILcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60035 modifyDamageFilteredValue + m (Lkp;Laqu;ILcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60036 modifyEntityFilteredValue + m (Lkp;Laqu;ILcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60037 modifyItemFilteredCount + m (Lkp;Layw;ILorg/apache/commons/lang3/mutable/MutableFloat;)V a method_60506 modifyUnfilteredValue + m (Lorg/apache/commons/lang3/mutable/MutableFloat;ILaqu;Ldau;)V a method_60038 method_60038 + m (Lorg/apache/commons/lang3/mutable/MutableFloat;ILbsr;Ldau;)V a method_60039 method_60039 + m ()I b method_58445 getWeight + m (I)I b method_8182 getMinCost + m (Laqu;ILbsr;Lbrk;)Lerr; b method_60040 damageContext + m (Laqu;ILcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;)V b method_60041 modifyDamage + m (Laqu;ILcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;)V b method_60042 modifyTridentReturnToOwnerAcceleration + m (Laqu;ILcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;)V b method_60043 modifyAmmoCount + m (Laqu;ILdab;Lbsr;)V b method_60044 onProjectileSpawned + m (Laqu;ILdab;Lbsr;Ldas;)V b method_60045 method_60045 + m (Layw;ILorg/apache/commons/lang3/mutable/MutableFloat;)V b method_60058 modifyCrossbowChargeTime + m (Lcuq;)Z b method_60046 isSupportedItem + m (Lorg/apache/commons/lang3/mutable/MutableFloat;ILbsr;Ldau;)V b method_60047 method_60047 + m ()I c method_58446 getAnvilCost + m (I)I c method_20742 getMaxCost + m (Laqu;ILcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;)V c method_60048 modifyFallBasedDamage + m (Laqu;ILcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;)V c method_60052 modifyFishingTimeReduction + m (Laqu;ILcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;)V c method_60050 modifyPiercingCount + m (Lcuq;)Z c method_8192 canEnchant + m ()I d method_8187 getMinLevel + m (Laqu;ILcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;)V d method_60051 modifyKnockback + m (Laqu;ILcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;)V d method_60055 modifyFishingLuckBonus + m (Laqu;ILcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;)V d method_60053 modifyBlockExperience + m ()I e method_8183 getMaxLevel + m (Laqu;ILcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;)V e method_60054 modifyArmorEffectivness + m (Laqu;ILcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;)V e method_60057 modifyProjectileCount + m (Laqu;ILcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;)V e method_60056 modifyDurabilityToRepairFromXp + m ()Lwz; f comp_2686 description + m (Laqu;ILcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;)V f method_60059 modifyProjectileSpread + m ()Ldac$c; g comp_2687 definition + m ()Ljq; h comp_2688 exclusiveSet + m ()Lkm; i comp_2689 effects + m (Lwz;Ldac$c;Ljq;Lkm;)V + m ()V +c dac$1 net/minecraft/class_1887$1 net/minecraft/world/item/enchantment/Enchantment$1 + f [I a field_7133 $SwitchMap$net$minecraft$world$item$enchantment$EnchantmentTarget + m ()V +c dac$a net/minecraft/class_1887$class_9700 net/minecraft/world/item/enchantment/Enchantment$Builder + f Ldac$c; a field_51645 definition + f Ljq; b field_51646 exclusiveSet + f Ljava/util/Map; c field_51647 effectLists + f Lkm$a; d field_51648 effectMapBuilder + m (Lakr;)Ldac; a method_60060 build + m (Ljq;)Ldac$a; a method_60061 exclusiveWith + m (Lkp;)Ldac$a; a method_60062 withEffect + m (Lkp;Ldag;Ldag;Ljava/lang/Object;)Ldac$a; a method_60063 withEffect + m (Lkp;Ldag;Ldag;Ljava/lang/Object;Levc$a;)Ldac$a; a method_60064 withEffect + m (Lkp;Ldar;)Ldac$a; a method_60065 withEffect + m (Lkp;Ljava/lang/Object;)Ldac$a; a method_60066 withEffect + m (Lkp;Ljava/lang/Object;Levc$a;)Ldac$a; a method_60067 withEffect + m (Lkp;Lkp;)Ljava/util/List; a method_60068 method_60068 + m (Lkp;)Ljava/util/List; b method_60069 getEffectsList + m (Lkp;Ljava/lang/Object;)Ldac$a; b method_60070 withSpecialEffect + m (Ldac$c;)V +c dac$b net/minecraft/class_1887$class_9426 net/minecraft/world/item/enchantment/Enchantment$Cost + f Lcom/mojang/serialization/Codec; a field_51649 CODEC + f I b comp_2504 base + f I c comp_2690 perLevelAboveFirst + m ()I a comp_2504 base + m (I)I a method_58447 calculate + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60071 method_60071 + m ()I b comp_2690 perLevelAboveFirst + m (II)V + m ()V +c dac$c net/minecraft/class_1887$class_9427 net/minecraft/world/item/enchantment/Enchantment$EnchantmentDefinition + f Lcom/mojang/serialization/MapCodec; a field_51650 CODEC + f Ljq; b comp_2506 supportedItems + f Ljava/util/Optional; c comp_2507 primaryItems + f I d comp_2508 weight + f I e comp_2509 maxLevel + f Ldac$b; f comp_2510 minCost + f Ldac$b; g comp_2511 maxCost + f I h comp_2512 anvilCost + f Ljava/util/List; i comp_2513 slots + m ()Ljq; a comp_2506 supportedItems + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60072 method_60072 + m ()Ljava/util/Optional; b comp_2507 primaryItems + m ()I c comp_2508 weight + m ()I d comp_2509 maxLevel + m ()Ldac$b; e comp_2510 minCost + m ()Ldac$b; f comp_2511 maxCost + m ()I g comp_2512 anvilCost + m ()Ljava/util/List; h comp_2513 slots + m (Ljq;Ljava/util/Optional;IILdac$b;Ldac$b;ILjava/util/List;)V + m ()V +c dad net/minecraft/class_9701 net/minecraft/world/item/enchantment/EnchantmentEffectComponents + f Lkp; A field_51677 CROSSBOW_CHARGE_TIME + f Lkp; B field_51653 CROSSBOW_CHARGING_SOUNDS + f Lkp; C field_51654 TRIDENT_SOUND + f Lkp; D field_51655 PREVENT_EQUIPMENT_DROP + f Lkp; E field_51656 PREVENT_ARMOR_CHANGE + f Lkp; F field_51651 TRIDENT_SPIN_ATTACK_STRENGTH + f Lcom/mojang/serialization/Codec; a field_51657 COMPONENT_CODEC + f Lcom/mojang/serialization/Codec; b field_51658 CODEC + f Lkp; c field_51659 DAMAGE_PROTECTION + f Lkp; d field_51660 DAMAGE_IMMUNITY + f Lkp; e field_51661 DAMAGE + f Lkp; f field_51662 SMASH_DAMAGE_PER_FALLEN_BLOCK + f Lkp; g field_51663 KNOCKBACK + f Lkp; h field_51664 ARMOR_EFFECTIVENESS + f Lkp; i field_51665 POST_ATTACK + f Lkp; j field_51666 HIT_BLOCK + f Lkp; k field_51667 ITEM_DAMAGE + f Lkp; l field_51668 ATTRIBUTES + f Lkp; m field_51669 EQUIPMENT_DROPS + f Lkp; n field_51670 LOCATION_CHANGED + f Lkp; o field_51671 TICK + f Lkp; p field_51672 AMMO_USE + f Lkp; q field_51673 PROJECTILE_PIERCING + f Lkp; r field_51674 PROJECTILE_SPAWNED + f Lkp; s field_51675 PROJECTILE_SPREAD + f Lkp; t field_51676 PROJECTILE_COUNT + f Lkp; u field_51678 TRIDENT_RETURN_ACCELERATION + f Lkp; v field_51679 FISHING_TIME_REDUCTION + f Lkp; w field_51680 FISHING_LUCK_BONUS + f Lkp; x field_51681 BLOCK_EXPERIENCE + f Lkp; y field_51682 MOB_EXPERIENCE + f Lkp; z field_51652 REPAIR_WITH_XP + m (Lkp$a;)Lkp$a; A method_60073 method_60073 + m (Lkp$a;)Lkp$a; B method_60074 method_60074 + m (Lkp$a;)Lkp$a; C method_60075 method_60075 + m (Lkp$a;)Lkp$a; D method_60076 method_60076 + m ()Lcom/mojang/serialization/Codec; a method_60077 method_60077 + m (Ljava/lang/String;Ljava/util/function/UnaryOperator;)Lkp; a method_60078 register + m (Ljz;)Lkp; a method_60079 bootstrap + m (Lkp$a;)Lkp$a; a method_60084 method_60084 + m (Lkp$a;)Lkp$a; b method_60080 method_60080 + m (Lkp$a;)Lkp$a; c method_60081 method_60081 + m (Lkp$a;)Lkp$a; d method_60082 method_60082 + m (Lkp$a;)Lkp$a; e method_60083 method_60083 + m (Lkp$a;)Lkp$a; f method_60085 method_60085 + m (Lkp$a;)Lkp$a; g method_60086 method_60086 + m (Lkp$a;)Lkp$a; h method_60087 method_60087 + m (Lkp$a;)Lkp$a; i method_60088 method_60088 + m (Lkp$a;)Lkp$a; j method_60089 method_60089 + m (Lkp$a;)Lkp$a; k method_60090 method_60090 + m (Lkp$a;)Lkp$a; l method_60091 method_60091 + m (Lkp$a;)Lkp$a; m method_60092 method_60092 + m (Lkp$a;)Lkp$a; n method_60093 method_60093 + m (Lkp$a;)Lkp$a; o method_60094 method_60094 + m (Lkp$a;)Lkp$a; p method_60095 method_60095 + m (Lkp$a;)Lkp$a; q method_60096 method_60096 + m (Lkp$a;)Lkp$a; r method_60097 method_60097 + m (Lkp$a;)Lkp$a; s method_60098 method_60098 + m (Lkp$a;)Lkp$a; t method_60099 method_60099 + m (Lkp$a;)Lkp$a; u method_60100 method_60100 + m (Lkp$a;)Lkp$a; v method_60101 method_60101 + m (Lkp$a;)Lkp$a; w method_60102 method_60102 + m (Lkp$a;)Lkp$a; x method_60103 method_60103 + m (Lkp$a;)Lkp$a; y method_60104 method_60104 + m (Lkp$a;)Lkp$a; z method_60105 method_60105 + m ()V +c dae net/minecraft/class_1890 net/minecraft/world/item/enchantment/EnchantmentHelper + m (ILcuq;Ljava/util/stream/Stream;)Ljava/util/List; a method_8229 getAvailableEnchantmentResults + m (ILjava/util/List;Ljm;)V a method_60106 method_60106 + m (Laqu;Lbsr;Lbrk;)V a method_60107 doPostAttackEffects + m (Laqu;Lbsr;Lbrk;Lcuq;)V a method_60619 doPostAttackEffectsWithItemSource + m (Laqu;Lbsr;Lbrk;Ljm;ILdab;)V a method_60620 method_60620 + m (Laqu;Lbsr;Lbsr;I)I a method_60109 processMobExperience + m (Laqu;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;ILdab;)V a method_60110 method_60110 + m (Laqu;Lbtn;)V a method_60111 runLocationChangedEffects + m (Laqu;Lbtn;Lbrk;)Z a method_60112 isImmuneToDamage + m (Laqu;Lbtn;Lbrk;F)F a method_60113 processEquipmentDropChance + m (Laqu;Lbtn;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;Layw;Ljm;ILdab;)V a method_60114 method_60114 + m (Laqu;Lbtn;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;ILdab;)V a method_60115 method_60115 + m (Laqu;Lbtn;Ljm;ILdab;)V a method_60116 method_60116 + m (Laqu;Lcuq;I)I a method_60117 processDurabilityChange + m (Laqu;Lcuq;Lbsr;)I a method_8223 getFishingLuckBonus + m (Laqu;Lcuq;Lbsr;F)F a method_60118 processProjectileSpread + m (Laqu;Lcuq;Lbsr;I)I a method_60119 processProjectileCount + m (Laqu;Lcuq;Lbsr;Lbrk;F)F a method_60120 modifyDamage + m (Laqu;Lcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V a method_60121 method_60121 + m (Laqu;Lcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V a method_60122 method_60122 + m (Laqu;Lcuq;Lbtn;Lbsr;Lbsy;Lexc;Ldtc;Ljava/util/function/Consumer;)V a method_60124 onHitBlock + m (Laqu;Lcuq;Lbtn;Lbsy;)V a method_60125 runLocationChangedEffects + m (Laqu;Lcuq;Lcnd;Ljava/util/function/Consumer;)V a method_60127 onProjectileSpawned + m (Laqu;Lcuq;Lcuq;)I a method_60128 getPiercingCount + m (Laqu;Lcuq;Lcuq;I)I a method_60129 processAmmoUse + m (Laqu;Lcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V a method_60163 method_60163 + m (Laqu;Ldab;Lbsr;Lexc;Ldtc;Ljm;I)V a method_60131 method_60131 + m (Laqu;Ldab;Lcnd;Ljm;I)V a method_60132 method_60132 + m (Layw;IILcuq;)I a method_8227 getEnchantmentCost + m (Layw;Lcuq;ILjava/util/stream/Stream;)Lcuq; a method_8233 enchantItem + m (Layw;Lcuq;ILka;Ljava/util/Optional;)Lcuq; a method_60133 enchantItem + m (Lbsy;Ljava/util/function/BiConsumer;Ljm;I)V a method_60134 method_60134 + m (Lbsz;Ljava/util/function/BiConsumer;Ljm;I)V a method_60621 method_60621 + m (Lbtn;)V a method_60135 stopLocationBasedEffects + m (Lbtn;Ldae$a;)V a method_8209 runIterationOnEquipment + m (Lbtn;Ljm;ILdab;)V a method_60136 method_60136 + m (Lbtn;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V a method_60126 method_60126 + m (Lcuq;)Z a method_57529 canStoreEnchantments + m (Lcuq;Lawu;)Z a method_60138 hasTag + m (Lcuq;Lbsy;Lbtn;Ldae$a;)V a method_60139 runIterationOnItem + m (Lcuq;Lbsy;Ljava/util/function/BiConsumer;)V a method_60140 forEachModifier + m (Lcuq;Lbsz;Ljava/util/function/BiConsumer;)V a method_60622 forEachModifier + m (Lcuq;Lbtn;)F a method_60123 getTridentSpinAttackStrength + m (Lcuq;Lbtn;F)F a method_60159 modifyCrossbowChargingTime + m (Lcuq;Lbtn;Lbsy;)V a method_60141 stopLocationBasedEffects + m (Lcuq;Ldae$b;)V a method_8220 runIterationOnItem + m (Lcuq;Ldai;)V a method_57530 setEnchantments + m (Lcuq;Ljava/util/function/Consumer;)Ldai; a method_57531 updateEnchantments + m (Lcuq;Lka;Lakq;Lbqp;Layw;)V a method_60137 enchantItemFromProvider + m (Lcuq;Lkp;)Z a method_60142 has + m (Lcuq;ZLjm;)Z a method_60143 method_60143 + m (Ldaf;Ldaf;)Z a method_60144 method_60144 + m (Ldbj;Lcuq;Layw;Lbqp;Ldai$a;)V a method_60145 method_60145 + m (Lerr;Lorg/apache/commons/lang3/mutable/MutableFloat;ILayw;Ldak;)V a method_60146 method_60146 + m (Ljava/util/Collection;Ljm;)Z a method_8201 isEnchantmentCompatible + m (Ljava/util/List;Ldaf;)V a method_8231 filterCompatibleEnchantments + m (Ljm$c;)Ljm; a method_60147 method_60147 + m (Ljm;Lbsy;Ljava/util/function/BiConsumer;ILdar;)V a method_60148 method_60148 + m (Ljm;Lbsz;Ljava/util/function/BiConsumer;ILdar;)V a method_60623 method_60623 + m (Ljm;Lbtn;)I a method_8203 getEnchantmentLevel + m (Ljm;Lcuq;)I a method_8225 getItemEnchantmentLevel + m (Lka;)Ljava/util/stream/Stream; a method_60149 method_60149 + m (Lkp;Lbtn;Ljava/util/function/Predicate;)Ljava/util/Optional; a method_8204 getRandomItemWith + m (Lkp;Lorg/apache/commons/lang3/mutable/MutableBoolean;Ljm;I)V a method_60150 method_60150 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Laqu;Lbtn;Lbrk;Ljm;ILdab;)V a method_60151 method_60151 + m (Lorg/apache/commons/lang3/mutable/MutableObject;Lkp;Ljm;I)V a method_60152 method_60152 + m (Laqu;Lbsr;Lbrk;Ljm;ILdab;)V b method_60624 method_60624 + m (Laqu;Lbtn;)V b method_60154 tickEffects + m (Laqu;Lbtn;Lbrk;)F b method_8219 getDamageProtection + m (Laqu;Lbtn;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;Layw;Ljm;ILdab;)V b method_60155 method_60155 + m (Laqu;Lbtn;Ljm;ILdab;)V b method_60156 method_60156 + m (Laqu;Lcuq;I)I b method_60157 processBlockExperience + m (Laqu;Lcuq;Lbsr;)F b method_60158 getFishingTimeReduction + m (Laqu;Lcuq;Lbsr;Lbrk;F)F b method_60160 modifyFallBasedDamage + m (Laqu;Lcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V b method_60161 method_60161 + m (Laqu;Lcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V b method_60162 method_60162 + m (Laqu;Lcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V b method_60173 method_60173 + m (Layw;Lcuq;ILjava/util/stream/Stream;)Ljava/util/List; b method_8230 selectEnchantment + m (Lbtn;Ljm;ILdab;)V b method_60164 method_60164 + m (Lbtn;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V b method_60130 method_60130 + m (Lcuq;)Ldai; b method_57532 getEnchantmentsForCrafting + m (Lcuq;Lkp;)Ljava/util/Optional; b method_60165 pickHighestLevel + m (Lerr;Lorg/apache/commons/lang3/mutable/MutableFloat;ILayw;Ldak;)V b method_60166 method_60166 + m (Laqu;Lbtn;Ljm;ILdab;)V c method_60167 method_60167 + m (Laqu;Lcuq;I)I c method_60168 modifyDurabilityToRepairFromXp + m (Laqu;Lcuq;Lbsr;)I c method_60169 getTridentReturnToOwnerAcceleration + m (Laqu;Lcuq;Lbsr;Lbrk;F)F c method_60170 modifyArmorEffectiveness + m (Laqu;Lcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V c method_60171 method_60171 + m (Laqu;Lcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V c method_60172 method_60172 + m (Laqu;Lcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V c method_60178 method_60178 + m (Lcuq;)Z c method_58117 hasAnyEnchantments + m (Lcuq;Lkp;)Lcom/mojang/datafixers/util/Pair; c method_60174 getHighestLevel + m (Laqu;Lcuq;Lbsr;Lbrk;F)F d method_60175 modifyKnockback + m (Laqu;Lcuq;Lbsr;Lbrk;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V d method_60176 method_60176 + m (Laqu;Lcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V d method_60177 method_60177 + m (Laqu;Lcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V d method_60180 method_60180 + m (Lcuq;)Lkp; d method_57533 getComponentType + m (Laqu;Lcuq;Lbsr;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V e method_60179 method_60179 + m (Laqu;Lcuq;Lorg/apache/commons/lang3/mutable/MutableFloat;Ljm;I)V e method_60181 method_60181 + m ()V +c dae$a net/minecraft/class_1890$class_9702 net/minecraft/world/item/enchantment/EnchantmentHelper$EnchantmentInSlotVisitor +c dae$b net/minecraft/class_1890$class_1891 net/minecraft/world/item/enchantment/EnchantmentHelper$EnchantmentVisitor +c daf net/minecraft/class_1889 net/minecraft/world/item/enchantment/EnchantmentInstance + f Ljm; a field_9093 enchantment + f I b field_9094 level + m (Ljm;I)V +c dag net/minecraft/class_9703 net/minecraft/world/item/enchantment/EnchantmentTarget + f Ldag; a field_51683 ATTACKER + f Ldag; b field_51684 DAMAGING_ENTITY + f Ldag; c field_51685 VICTIM + f Lcom/mojang/serialization/Codec; d field_51686 CODEC + f Ljava/lang/String; e field_51687 id + f [Ldag; f field_51688 $VALUES + m ()[Ldag; a method_60182 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dah net/minecraft/class_1893 net/minecraft/world/item/enchantment/Enchantments + f Lakq; A field_9126 FLAME + f Lakq; B field_9125 INFINITY + f Lakq; C field_9114 LUCK_OF_THE_SEA + f Lakq; D field_9100 LURE + f Lakq; E field_9120 LOYALTY + f Lakq; F field_9106 IMPALING + f Lakq; G field_9104 RIPTIDE + f Lakq; H field_9117 CHANNELING + f Lakq; I field_9108 MULTISHOT + f Lakq; J field_9098 QUICK_CHARGE + f Lakq; K field_9132 PIERCING + f Lakq; L field_50157 DENSITY + f Lakq; M field_50158 BREACH + f Lakq; N field_50159 WIND_BURST + f Lakq; O field_9101 MENDING + f Lakq; P field_9109 VANISHING_CURSE + f Lakq; a field_9111 PROTECTION + f Lakq; b field_9095 FIRE_PROTECTION + f Lakq; c field_9129 FEATHER_FALLING + f Lakq; d field_9107 BLAST_PROTECTION + f Lakq; e field_9096 PROJECTILE_PROTECTION + f Lakq; f field_9127 RESPIRATION + f Lakq; g field_9105 AQUA_AFFINITY + f Lakq; h field_9097 THORNS + f Lakq; i field_9128 DEPTH_STRIDER + f Lakq; j field_9122 FROST_WALKER + f Lakq; k field_9113 BINDING_CURSE + f Lakq; l field_23071 SOUL_SPEED + f Lakq; m field_38223 SWIFT_SNEAK + f Lakq; n field_9118 SHARPNESS + f Lakq; o field_9123 SMITE + f Lakq; p field_9112 BANE_OF_ARTHROPODS + f Lakq; q field_9121 KNOCKBACK + f Lakq; r field_9124 FIRE_ASPECT + f Lakq; s field_9110 LOOTING + f Lakq; t field_9115 SWEEPING_EDGE + f Lakq; u field_9131 EFFICIENCY + f Lakq; v field_9099 SILK_TOUCH + f Lakq; w field_9119 UNBREAKING + f Lakq; x field_9130 FORTUNE + f Lakq; y field_9103 POWER + f Lakq; z field_9116 PUNCH + m (Ljava/lang/String;)Lakq; a method_60183 key + m (Lqq;)V a method_60184 bootstrap + m (Lqq;Lakq;Ldac$a;)V a method_8235 register + m ()V + m ()V +c dai net/minecraft/class_9304 net/minecraft/world/item/enchantment/ItemEnchantments + f Ldai; a field_49385 EMPTY + f Lcom/mojang/serialization/Codec; b field_49386 CODEC + f Lyx; c field_49387 STREAM_CODEC + f Lcom/mojang/serialization/Codec; d field_49388 LEVEL_CODEC + f Lcom/mojang/serialization/Codec; e field_49753 LEVELS_CODEC + f Lcom/mojang/serialization/Codec; f field_49754 FULL_CODEC + f Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; g field_49389 enchantments + f Z h field_49390 showInTooltip + m ()Ljava/util/Set; a method_57534 keySet + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57535 method_57535 + m (Ldai;)Ljava/lang/Boolean; a method_57537 method_57537 + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)Ldai; a method_58118 method_58118 + m (Ljm;)I a method_57536 getLevel + m (Ljo$a;Lakq;Lawu;)Ljq; a method_59716 getTagOrEmpty + m (Z)Ldai; a method_58449 withTooltip + m ()Ljava/util/Set; b method_57539 entrySet + m (Ldai;)Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; b method_57540 method_57540 + m ()I c method_57541 size + m (Ldai;)Ljava/lang/Boolean; c method_57542 method_57542 + m ()Z d method_57543 isEmpty + m (Ldai;)Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; d method_57544 method_57544 + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;Z)V + m ()V +c dai$a net/minecraft/class_9304$class_9305 net/minecraft/world/item/enchantment/ItemEnchantments$Mutable + f Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; a field_49391 enchantments + f Z b field_49392 showInTooltip + m ()Ljava/util/Set; a method_57545 keySet + m (Ljava/util/function/Predicate;)V a method_57548 removeIf + m (Ljm;)I a method_57546 getLevel + m (Ljm;I)V a method_57547 set + m ()Ldai; b method_57549 toImmutable + m (Ljm;I)V b method_57550 upgrade + m (Ldai;)V +c daj net/minecraft/class_9704 net/minecraft/world/item/enchantment/LevelBasedValue + f Lcom/mojang/serialization/Codec; a field_51689 DISPATCH_CODEC + f Lcom/mojang/serialization/Codec; b field_51690 CODEC + m ()Lcom/mojang/serialization/MapCodec; a method_60185 codec + m (F)Ldaj$b; a method_60186 constant + m (FF)Ldaj$e; a method_60187 perLevel + m (I)F a method_60188 calculate + m (Lcom/mojang/datafixers/util/Either;)Ldaj; a method_60189 method_60189 + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_60190 method_60190 + m (Ldaj$b;)Ldaj; a method_60191 method_60191 + m (Ldaj;)Lcom/mojang/datafixers/util/Either; a method_60192 method_60192 + m (Ljava/util/List;Ldaj;)Ldaj$f; a method_60987 lookup + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_60193 bootstrap + m (F)Ldaj$e; b method_60194 perLevel + m (Ldaj;)Ldaj; b method_60195 method_60195 + m ()V +c daj$a net/minecraft/class_9704$class_9705 net/minecraft/world/item/enchantment/LevelBasedValue$Clamped + f Lcom/mojang/serialization/MapCodec; c field_51691 CODEC + f Ldaj; d comp_2691 value + f F e comp_2692 min + f F f comp_2693 max + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60196 method_60196 + m (Ldaj$a;)Lcom/mojang/serialization/DataResult; a method_60197 method_60197 + m ()Ldaj; b comp_2691 value + m (Ldaj$a;)Ljava/lang/String; b method_60198 method_60198 + m ()F c comp_2692 min + m ()F d comp_2693 max + m (Ldaj;FF)V + m ()V +c daj$b net/minecraft/class_9704$class_9706 net/minecraft/world/item/enchantment/LevelBasedValue$Constant + f Lcom/mojang/serialization/Codec; c field_51692 CODEC + f Lcom/mojang/serialization/MapCodec; d field_51693 TYPED_CODEC + f F e comp_2694 value + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60199 method_60199 + m ()F b comp_2694 value + m (F)V + m ()V +c daj$c net/minecraft/class_9704$class_9707 net/minecraft/world/item/enchantment/LevelBasedValue$Fraction + f Lcom/mojang/serialization/MapCodec; c field_51694 CODEC + f Ldaj; d comp_2695 numerator + f Ldaj; e comp_2696 denominator + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60200 method_60200 + m ()Ldaj; b comp_2695 numerator + m ()Ldaj; c comp_2696 denominator + m (Ldaj;Ldaj;)V + m ()V +c daj$d net/minecraft/class_9704$class_9708 net/minecraft/world/item/enchantment/LevelBasedValue$LevelsSquared + f Lcom/mojang/serialization/MapCodec; c field_51695 CODEC + f F d comp_2697 added + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60201 method_60201 + m ()F b comp_2697 added + m (F)V + m ()V +c daj$e net/minecraft/class_9704$class_9709 net/minecraft/world/item/enchantment/LevelBasedValue$Linear + f Lcom/mojang/serialization/MapCodec; c field_51696 CODEC + f F d comp_2698 base + f F e comp_2699 perLevelAboveFirst + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60202 method_60202 + m ()F b comp_2698 base + m ()F c comp_2699 perLevelAboveFirst + m (FF)V + m ()V +c daj$f net/minecraft/class_9704$class_9819 net/minecraft/world/item/enchantment/LevelBasedValue$Lookup + f Lcom/mojang/serialization/MapCodec; c field_52226 CODEC + f Ljava/util/List; d comp_2862 values + f Ldaj; e comp_2863 fallback + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60988 method_60988 + m ()Ljava/util/List; b comp_2862 values + m ()Ldaj; c comp_2863 fallback + m (Ljava/util/List;Ldaj;)V + m ()V +c dak net/minecraft/class_9710 net/minecraft/world/item/enchantment/TargetedConditionalEffect + f Ldag; a comp_2700 enchanted + f Ldag; b comp_2701 affected + f Ljava/lang/Object; c comp_2702 effect + f Ljava/util/Optional; d comp_2703 requirements + m ()Ldag; a comp_2700 enchanted + m (Lcom/mojang/serialization/Codec;Leul;)Lcom/mojang/serialization/Codec; a method_60203 codec + m (Lcom/mojang/serialization/Codec;Leul;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60204 method_60204 + m (Ldag;)Lcom/mojang/serialization/DataResult; a method_60205 method_60205 + m (Ldag;Ljava/lang/Object;Ljava/util/Optional;)Ldak; a method_60206 method_60206 + m (Lerr;)Z a method_60207 matches + m ()Ldag; b comp_2701 affected + m (Lcom/mojang/serialization/Codec;Leul;)Lcom/mojang/serialization/Codec; b method_60208 equipmentDropsCodec + m (Lcom/mojang/serialization/Codec;Leul;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_60209 method_60209 + m ()Ljava/lang/Object; c comp_2702 effect + m ()Ljava/util/Optional; d comp_2703 requirements + m ()Ljava/lang/String; e method_60210 method_60210 + m (Ldag;Ldag;Ljava/lang/Object;Ljava/util/Optional;)V +c dal net/minecraft/class_9711 net/minecraft/world/item/enchantment/effects/AddValue + f Lcom/mojang/serialization/MapCodec; a field_51697 CODEC + f Ldaj; c comp_2704 value + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60212 method_60212 + m ()Ldaj; b comp_2704 value + m (Ldaj;)V + m ()V +c dam net/minecraft/class_9712 net/minecraft/world/item/enchantment/effects/AllOf + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/serialization/MapCodec; a method_60214 codec + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;Ljava/util/function/Function;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60215 method_60215 + m ([Ldas;)Ldam$a; a method_60216 entityEffects + m ([Ldat;)Ldam$b; a method_60217 locationBasedEffects + m ([Ldau;)Ldam$c; a method_60218 valueEffects +c dam$a net/minecraft/class_9712$class_9713 net/minecraft/world/item/enchantment/effects/AllOf$EntityEffects + f Lcom/mojang/serialization/MapCodec; a field_51698 CODEC + f Ljava/util/List; d comp_2705 effects + m ()Ljava/util/List; b comp_2705 effects + m (Ljava/util/List;)V + m ()V +c dam$b net/minecraft/class_9712$class_9714 net/minecraft/world/item/enchantment/effects/AllOf$LocationBasedEffects + f Lcom/mojang/serialization/MapCodec; a field_51699 CODEC + f Ljava/util/List; b comp_2706 effects + m ()Ljava/util/List; b comp_2706 effects + m (Ljava/util/List;)V + m ()V +c dam$c net/minecraft/class_9712$class_9715 net/minecraft/world/item/enchantment/effects/AllOf$ValueEffects + f Lcom/mojang/serialization/MapCodec; a field_51700 CODEC + f Ljava/util/List; c comp_2707 effects + m ()Ljava/util/List; b comp_2707 effects + m (Ljava/util/List;)V + m ()V +c dan net/minecraft/class_9716 net/minecraft/world/item/enchantment/effects/ApplyMobEffect + f Lcom/mojang/serialization/MapCodec; a field_51701 CODEC + f Ljq; d comp_2708 toApply + f Ldaj; e comp_2709 minDuration + f Ldaj; f comp_2710 maxDuration + f Ldaj; g comp_2711 minAmplifier + f Ldaj; h comp_2712 maxAmplifier + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60223 method_60223 + m ()Ljq; b comp_2708 toApply + m ()Ldaj; c comp_2709 minDuration + m ()Ldaj; d comp_2710 maxDuration + m ()Ldaj; e comp_2711 minAmplifier + m ()Ldaj; f comp_2712 maxAmplifier + m (Ljq;Ldaj;Ldaj;Ldaj;Ldaj;)V + m ()V +c dao net/minecraft/class_9717 net/minecraft/world/item/enchantment/effects/DamageEntity + f Lcom/mojang/serialization/MapCodec; a field_51702 CODEC + f Ldaj; d comp_2713 minDamage + f Ldaj; e comp_2714 maxDamage + f Ljm; f comp_2715 damageType + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60224 method_60224 + m ()Ldaj; b comp_2713 minDamage + m ()Ldaj; c comp_2714 maxDamage + m ()Ljm; d comp_2715 damageType + m (Ldaj;Ldaj;Ljm;)V + m ()V +c dap net/minecraft/class_9718 net/minecraft/world/item/enchantment/effects/DamageImmunity + f Ldap; a field_51703 INSTANCE + f Lcom/mojang/serialization/Codec; b field_51704 CODEC + m ()Ldap; a method_60225 method_60225 + m ()V + m ()V +c daq net/minecraft/class_9719 net/minecraft/world/item/enchantment/effects/DamageItem + f Lcom/mojang/serialization/MapCodec; a field_51705 CODEC + f Ldaj; d comp_2716 amount + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60226 method_60226 + m (Ldaq;)Ldaj; a method_60227 method_60227 + m ()Ldaj; b comp_2716 amount + m (Ldaj;)V + m ()V +c dar net/minecraft/class_9720 net/minecraft/world/item/enchantment/effects/EnchantmentAttributeEffect + f Lcom/mojang/serialization/MapCodec; a field_51706 CODEC + f Lakr; b comp_2839 id + f Ljm; d comp_2718 attribute + f Ldaj; e comp_2719 amount + f Lbuu$a; f comp_2720 operation + m (ILazk;)Lbuu; a method_60228 getModifier + m (ILbsy;)Lcom/google/common/collect/HashMultimap; a method_60230 makeAttributeMap + m (Lazk;)Lakr; a method_60769 idForSlot + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60229 method_60229 + m ()Lakr; b comp_2839 id + m ()Ljm; c comp_2718 attribute + m ()Ldaj; d comp_2719 amount + m ()Lbuu$a; e comp_2720 operation + m (Lakr;Ljm;Ldaj;Lbuu$a;)V + m ()V +c das net/minecraft/class_9721 net/minecraft/world/item/enchantment/effects/EnchantmentEntityEffect + f Lcom/mojang/serialization/Codec; b field_51707 CODEC + m (Laqu;ILdab;Lbsr;Lexc;)V a method_60220 apply + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_60231 bootstrap + m ()V +c dat net/minecraft/class_9722 net/minecraft/world/item/enchantment/effects/EnchantmentLocationBasedEffect + f Lcom/mojang/serialization/Codec; c field_51708 CODEC + m ()Lcom/mojang/serialization/MapCodec; a method_60219 codec + m (Laqu;ILdab;Lbsr;Lexc;Z)V a method_60221 onChangedBlock + m (Ldab;Lbsr;Lexc;I)V a method_60222 onDeactivated + m (Ljz;)Lcom/mojang/serialization/MapCodec; b method_60232 bootstrap + m ()V +c dau net/minecraft/class_9723 net/minecraft/world/item/enchantment/effects/EnchantmentValueEffect + f Lcom/mojang/serialization/Codec; b field_51709 CODEC + m ()Lcom/mojang/serialization/MapCodec; a method_60211 codec + m (ILayw;F)F a method_60213 process + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_60233 bootstrap + m ()V +c dav net/minecraft/class_9724 net/minecraft/world/item/enchantment/effects/ExplodeEffect + f Lcom/mojang/serialization/MapCodec; a field_51710 CODEC + f Z d comp_2722 attributeToUser + f Ljava/util/Optional; e comp_2723 damageType + f Ljava/util/Optional; f comp_2724 knockbackMultiplier + f Ljava/util/Optional; g comp_2725 immuneBlocks + f Lexc; h comp_2726 offset + f Ldaj; i comp_2727 radius + f Z j comp_2728 createFire + f Ldcw$a; k comp_2729 blockInteraction + f Llk; l comp_2730 smallParticle + f Llk; m comp_2731 largeParticle + f Ljm; n comp_2732 sound + m (ILdaj;)Ljava/lang/Float; a method_60234 method_60234 + m (Lbsr;Lexc;)Lbrk; a method_60235 getDamageSource + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60236 method_60236 + m ()Z b comp_2722 attributeToUser + m ()Ljava/util/Optional; c comp_2723 damageType + m ()Ljava/util/Optional; d comp_2724 knockbackMultiplier + m ()Ljava/util/Optional; e comp_2725 immuneBlocks + m ()Lexc; f comp_2726 offset + m ()Ldaj; g comp_2727 radius + m ()Z h comp_2728 createFire + m ()Ldcw$a; i comp_2729 blockInteraction + m ()Llk; j comp_2730 smallParticle + m ()Llk; k comp_2731 largeParticle + m ()Ljm; l comp_2732 sound + m (ZLjava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Lexc;Ldaj;ZLdcw$a;Llk;Llk;Ljm;)V + m ()V +c daw net/minecraft/class_9725 net/minecraft/world/item/enchantment/effects/Ignite + f Lcom/mojang/serialization/MapCodec; a field_51711 CODEC + f Ldaj; d comp_2733 duration + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60237 method_60237 + m (Ldaw;)Ldaj; a method_60238 method_60238 + m ()Ldaj; b comp_2733 duration + m (Ldaj;)V + m ()V +c dax net/minecraft/class_9726 net/minecraft/world/item/enchantment/effects/MultiplyValue + f Lcom/mojang/serialization/MapCodec; a field_51712 CODEC + f Ldaj; c comp_2734 factor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60239 method_60239 + m ()Ldaj; b comp_2734 factor + m (Ldaj;)V + m ()V +c day net/minecraft/class_9727 net/minecraft/world/item/enchantment/effects/PlaySoundEffect + f Lcom/mojang/serialization/MapCodec; a field_51713 CODEC + f Ljm; d comp_2735 soundEvent + f Lbpu; e comp_2736 volume + f Lbpu; f comp_2737 pitch + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60240 method_60240 + m ()Ljm; b comp_2735 soundEvent + m ()Lbpu; c comp_2736 volume + m ()Lbpu; d comp_2737 pitch + m (Ljm;Lbpu;Lbpu;)V + m ()V +c daz net/minecraft/class_9728 net/minecraft/world/item/enchantment/effects/RemoveBinomial + f Lcom/mojang/serialization/MapCodec; a field_51714 CODEC + f Ldaj; c comp_2738 chance + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60241 method_60241 + m ()Ldaj; b comp_2738 chance + m (Ldaj;)V + m ()V +c dba net/minecraft/class_9729 net/minecraft/world/item/enchantment/effects/ReplaceBlock + f Lcom/mojang/serialization/MapCodec; a field_51715 CODEC + f Lkh; d comp_2739 offset + f Ljava/util/Optional; e comp_2740 predicate + f Legj; f comp_2741 blockState + f Ljava/util/Optional; g comp_2798 triggerGameEvent + m (Laqu;Lbsr;Ljd;Ljm;)V a method_60507 method_60507 + m (Laqu;Ljd;Leaf;)Ljava/lang/Boolean; a method_60242 method_60242 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60243 method_60243 + m ()Lkh; b comp_2739 offset + m ()Ljava/util/Optional; c comp_2740 predicate + m ()Legj; d comp_2741 blockState + m ()Ljava/util/Optional; e comp_2798 triggerGameEvent + m (Lkh;Ljava/util/Optional;Legj;Ljava/util/Optional;)V + m ()V +c dbb net/minecraft/class_9730 net/minecraft/world/item/enchantment/effects/ReplaceDisk + f Lcom/mojang/serialization/MapCodec; a field_51716 CODEC + f Ldaj; d comp_2742 radius + f Ldaj; e comp_2743 height + f Lkh; f comp_2744 offset + f Ljava/util/Optional; g comp_2745 predicate + f Legj; h comp_2746 blockState + f Ljava/util/Optional; i comp_2799 triggerGameEvent + m (Laqu;Lbsr;Ljd;Ljm;)V a method_60508 method_60508 + m (Laqu;Ljd;Leaf;)Ljava/lang/Boolean; a method_60244 method_60244 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60245 method_60245 + m ()Ldaj; b comp_2742 radius + m ()Ldaj; c comp_2743 height + m ()Lkh; d comp_2744 offset + m ()Ljava/util/Optional; e comp_2745 predicate + m ()Legj; f comp_2746 blockState + m ()Ljava/util/Optional; g comp_2799 triggerGameEvent + m (Ldaj;Ldaj;Lkh;Ljava/util/Optional;Legj;Ljava/util/Optional;)V + m ()V +c dbc net/minecraft/class_9731 net/minecraft/world/item/enchantment/effects/RunFunction + f Lcom/mojang/serialization/MapCodec; a field_51717 CODEC + f Lakr; d comp_2747 function + f Lorg/slf4j/Logger; e field_51718 LOGGER + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60246 method_60246 + m ()Lakr; b comp_2747 function + m (Lakr;)V + m ()V +c dbd net/minecraft/class_9732 net/minecraft/world/item/enchantment/effects/SetBlockProperties + f Lcom/mojang/serialization/MapCodec; a field_51719 CODEC + f Lcxd; d comp_2748 properties + f Lkh; e comp_2749 offset + f Ljava/util/Optional; f comp_2800 triggerGameEvent + m (Laqu;Lbsr;Ljd;Ljm;)V a method_60509 method_60509 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60247 method_60247 + m ()Lcxd; b comp_2748 properties + m ()Lkh; c comp_2749 offset + m ()Ljava/util/Optional; d comp_2800 triggerGameEvent + m (Lcxd;)V + m (Lcxd;Lkh;Ljava/util/Optional;)V + m ()V +c dbe net/minecraft/class_9733 net/minecraft/world/item/enchantment/effects/SetValue + f Lcom/mojang/serialization/MapCodec; a field_51720 CODEC + f Ldaj; c comp_2750 value + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60248 method_60248 + m ()Ldaj; b comp_2750 value + m (Ldaj;)V + m ()V +c dbf net/minecraft/class_9734 net/minecraft/world/item/enchantment/effects/SpawnParticlesEffect + f Lcom/mojang/serialization/MapCodec; a field_51721 CODEC + f Llk; d comp_2751 particle + f Ldbf$a; e comp_2752 horizontalPosition + f Ldbf$a; f comp_2753 verticalPosition + f Ldbf$c; g comp_2754 horizontalVelocity + f Ldbf$c; h comp_2755 verticalVelocity + f Lbpu; i comp_2756 speed + m (F)Ldbf$a; a method_60249 offsetFromEntityPosition + m (Lbpu;)Ldbf$c; a method_60250 fixedVelocity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60251 method_60251 + m ()Ldbf$a; b method_60252 inBoundingBox + m (F)Ldbf$c; b method_60253 movementScaled + m ()Llk; c comp_2751 particle + m ()Ldbf$a; d comp_2752 horizontalPosition + m ()Ldbf$a; e comp_2753 verticalPosition + m ()Ldbf$c; f comp_2754 horizontalVelocity + m ()Ldbf$c; g comp_2755 verticalVelocity + m ()Lbpu; h comp_2756 speed + m (Llk;Ldbf$a;Ldbf$a;Ldbf$c;Ldbf$c;Lbpu;)V + m ()V +c dbf$a net/minecraft/class_9734$class_9735 net/minecraft/world/item/enchantment/effects/SpawnParticlesEffect$PositionSource + f Lcom/mojang/serialization/MapCodec; a field_51722 CODEC + f Ldbf$b; b comp_2757 type + f F c comp_2758 offset + f F d comp_2759 scale + m ()Ldbf$b; a comp_2757 type + m (DDFLayw;)D a method_60254 getCoordinate + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60255 method_60255 + m (Ldbf$a;)Lcom/mojang/serialization/DataResult; a method_60256 method_60256 + m ()F b comp_2758 offset + m ()F c comp_2759 scale + m ()Ljava/lang/String; d method_60257 method_60257 + m (Ldbf$b;FF)V + m ()V +c dbf$b net/minecraft/class_9734$class_9736 net/minecraft/world/item/enchantment/effects/SpawnParticlesEffect$PositionSourceType + f Ldbf$b; a field_51723 ENTITY_POSITION + f Ldbf$b; b field_51724 BOUNDING_BOX + f Lcom/mojang/serialization/Codec; c field_51725 CODEC + f Ljava/lang/String; d field_51726 id + f Ldbf$b$a; e field_51727 source + f [Ldbf$b; f field_51728 $VALUES + m ()[Ldbf$b; a method_60258 $values + m (DDFLayw;)D a method_60259 getCoordinate + m (DDFLayw;)D b method_60260 method_60260 + m (DDFLayw;)D c method_60261 method_60261 + m (Ljava/lang/String;ILjava/lang/String;Ldbf$b$a;)V + m ()V +c dbf$b$a net/minecraft/class_9734$class_9736$class_9737 net/minecraft/world/item/enchantment/effects/SpawnParticlesEffect$PositionSourceType$CoordinateSource +c dbf$c net/minecraft/class_9734$class_9738 net/minecraft/world/item/enchantment/effects/SpawnParticlesEffect$VelocitySource + f Lcom/mojang/serialization/MapCodec; a field_51729 CODEC + f F b comp_2760 movementScale + f Lbpu; c comp_2761 base + m ()F a comp_2760 movementScale + m (DLayw;)D a method_60262 getVelocity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60263 method_60263 + m ()Lbpu; b comp_2761 base + m (FLbpu;)V + m ()V +c dbg net/minecraft/class_9739 net/minecraft/world/item/enchantment/effects/SummonEntityEffect + f Lcom/mojang/serialization/MapCodec; a field_51730 CODEC + f Ljq; d comp_2762 entityTypes + f Z e comp_2763 joinTeam + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60264 method_60264 + m ()Ljq; b comp_2762 entityTypes + m ()Z c comp_2763 joinTeam + m (Ljq;Z)V + m ()V +c dbh net/minecraft/class_9740 net/minecraft/world/item/enchantment/effects/package-info +c dbi net/minecraft/class_6083 net/minecraft/world/item/enchantment/package-info +c dbj net/minecraft/class_9741 net/minecraft/world/item/enchantment/providers/EnchantmentProvider + f Lcom/mojang/serialization/Codec; a field_51731 DIRECT_CODEC + m ()Lcom/mojang/serialization/MapCodec; a method_60265 codec + m (Lcuq;Ldai$a;Layw;Lbqp;)V a method_60266 enchant + m ()V +c dbk net/minecraft/class_9742 net/minecraft/world/item/enchantment/providers/EnchantmentProviderTypes + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_60267 bootstrap +c dbl net/minecraft/class_9743 net/minecraft/world/item/enchantment/providers/EnchantmentsByCost + f Lcom/mojang/serialization/MapCodec; b field_51732 CODEC + f Ljq; c comp_2764 enchantments + f Lbpw; d comp_2765 cost + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60268 method_60268 + m ()Ljq; b comp_2764 enchantments + m ()Lbpw; c comp_2765 cost + m (Ljq;Lbpw;)V + m ()V +c dbm net/minecraft/class_9744 net/minecraft/world/item/enchantment/providers/EnchantmentsByCostWithDifficulty + f I b field_52056 MAX_ALLOWED_VALUE_PART + f Lcom/mojang/serialization/MapCodec; c field_51733 CODEC + f Ljq; d comp_2766 enchantments + f I e comp_2767 minCost + f I f comp_2768 maxCostSpan + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60269 method_60269 + m ()Ljq; b comp_2766 enchantments + m ()I c comp_2767 minCost + m ()I d comp_2768 maxCostSpan + m (Ljq;II)V + m ()V +c dbn net/minecraft/class_9745 net/minecraft/world/item/enchantment/providers/SingleEnchantment + f Lcom/mojang/serialization/MapCodec; b field_51734 CODEC + f Ljm; c comp_2769 enchantment + f Lbpw; d comp_2770 level + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60270 method_60270 + m ()Ljm; b comp_2769 enchantment + m ()Lbpw; c comp_2770 level + m (Ljm;Lbpw;)V + m ()V +c dbo net/minecraft/class_9746 net/minecraft/world/item/enchantment/providers/TradeRebalanceEnchantmentProviders + f Lakq; A field_51735 TRADES_JUNGLE_ARMORER_BOOTS_5 + f Lakq; B field_51736 TRADES_JUNGLE_ARMORER_HELMET_5 + f Lakq; C field_51737 TRADES_SWAMP_ARMORER_BOOTS_4 + f Lakq; D field_51738 TRADES_SWAMP_ARMORER_LEGGINGS_4 + f Lakq; E field_51739 TRADES_SWAMP_ARMORER_CHESTPLATE_4 + f Lakq; F field_51740 TRADES_SWAMP_ARMORER_HELMET_4 + f Lakq; G field_51741 TRADES_SWAMP_ARMORER_BOOTS_5 + f Lakq; H field_51742 TRADES_SWAMP_ARMORER_HELMET_5 + f Lakq; I field_51743 TRADES_TAIGA_ARMORER_LEGGINGS_5 + f Lakq; J field_51744 TRADES_TAIGA_ARMORER_CHESTPLATE_5 + f Lakq; a field_51745 TRADES_DESERT_ARMORER_BOOTS_4 + f Lakq; b field_51746 TRADES_DESERT_ARMORER_LEGGINGS_4 + f Lakq; c field_51747 TRADES_DESERT_ARMORER_CHESTPLATE_4 + f Lakq; d field_51748 TRADES_DESERT_ARMORER_HELMET_4 + f Lakq; e field_51749 TRADES_DESERT_ARMORER_LEGGINGS_5 + f Lakq; f field_51750 TRADES_DESERT_ARMORER_CHESTPLATE_5 + f Lakq; g field_51751 TRADES_PLAINS_ARMORER_BOOTS_4 + f Lakq; h field_51752 TRADES_PLAINS_ARMORER_LEGGINGS_4 + f Lakq; i field_51753 TRADES_PLAINS_ARMORER_CHESTPLATE_4 + f Lakq; j field_51754 TRADES_PLAINS_ARMORER_HELMET_4 + f Lakq; k field_51755 TRADES_PLAINS_ARMORER_BOOTS_5 + f Lakq; l field_51756 TRADES_PLAINS_ARMORER_LEGGINGS_5 + f Lakq; m field_51757 TRADES_SAVANNA_ARMORER_BOOTS_4 + f Lakq; n field_51758 TRADES_SAVANNA_ARMORER_LEGGINGS_4 + f Lakq; o field_51759 TRADES_SAVANNA_ARMORER_CHESTPLATE_4 + f Lakq; p field_51760 TRADES_SAVANNA_ARMORER_HELMET_4 + f Lakq; q field_51761 TRADES_SAVANNA_ARMORER_CHESTPLATE_5 + f Lakq; r field_51762 TRADES_SAVANNA_ARMORER_HELMET_5 + f Lakq; s field_51763 TRADES_SNOW_ARMORER_BOOTS_4 + f Lakq; t field_51764 TRADES_SNOW_ARMORER_HELMET_4 + f Lakq; u field_51765 TRADES_SNOW_ARMORER_BOOTS_5 + f Lakq; v field_51766 TRADES_SNOW_ARMORER_HELMET_5 + f Lakq; w field_51767 TRADES_JUNGLE_ARMORER_BOOTS_4 + f Lakq; x field_51768 TRADES_JUNGLE_ARMORER_LEGGINGS_4 + f Lakq; y field_51769 TRADES_JUNGLE_ARMORER_CHESTPLATE_4 + f Lakq; z field_51770 TRADES_JUNGLE_ARMORER_HELMET_4 + m (Lqq;)V a method_60271 bootstrap + m ()V +c dbp net/minecraft/class_9747 net/minecraft/world/item/enchantment/providers/VanillaEnchantmentProviders + f Lakq; a field_51771 MOB_SPAWN_EQUIPMENT + f Lakq; b field_51772 PILLAGER_SPAWN_CROSSBOW + f Lakq; c field_51773 RAID_PILLAGER_POST_WAVE_3 + f Lakq; d field_51774 RAID_PILLAGER_POST_WAVE_5 + f Lakq; e field_51775 RAID_VINDICATOR + f Lakq; f field_51776 RAID_VINDICATOR_POST_WAVE_5 + f Lakq; g field_51777 ENDERMAN_LOOT_DROP + m (Ljava/lang/String;)Lakq; a method_60272 create + m (Lqq;)V a method_60273 bootstrap + m ()V +c dbq net/minecraft/class_9748 net/minecraft/world/item/enchantment/providers/package-info +c dbr net/minecraft/class_6084 net/minecraft/world/item/package-info +c dbs net/minecraft/class_9306 net/minecraft/world/item/trading/ItemCost + f Lcom/mojang/serialization/Codec; a field_49393 CODEC + f Lyx; b field_49394 STREAM_CODEC + f Lyx; c field_49395 OPTIONAL_STREAM_CODEC + f Ljm; d comp_2424 item + f I e comp_2425 count + f Lko; f comp_2426 components + f Lcuq; g comp_2427 itemStack + m ()Ljm; a comp_2424 item + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57551 method_57551 + m (Lcuq;)Z a method_57552 test + m (Ljava/util/function/UnaryOperator;)Ldbs; a method_57554 withComponents + m (Ljm;ILko;)Lcuq; a method_57553 createStack + m ()I b comp_2425 count + m ()Lko; c comp_2426 components + m ()Lcuq; d comp_2427 itemStack + m (Ldcv;)V + m (Ldcv;I)V + m (Ljm;ILko;)V + m (Ljm;ILko;Lcuq;)V + m ()V +c dbt net/minecraft/class_1915 net/minecraft/world/item/trading/Merchant + m (ILcmw;Lcmx;)Lcpu; a method_17448 method_17448 + m (Lcmx;)V a method_8259 setTradingPlayer + m (Lcmx;Lwz;I)V a method_17449 openTradingScreen + m (Ldbu;)V a method_8262 notifyTrade + m (Ldbv;)V a method_8261 overrideOffers + m ()Lcmx; gk method_8257 getTradingPlayer + m ()Ldbv; gm method_8264 getOffers + m ()Z gn method_19270 showProgressBar + m ()Lavo; go method_18010 getNotifyTradeSound + m ()Z gs method_38069 isClientSide + m ()Z gw method_20708 canRestock + m (Lcuq;)V n method_8258 notifyTradeUpdated + m ()I t method_19269 getVillagerXp + m (I)V t method_19271 overrideXp +c dbu net/minecraft/class_1914 net/minecraft/world/item/trading/MerchantOffer + f Lcom/mojang/serialization/Codec; a field_48849 CODEC + f Lyx; b field_48371 STREAM_CODEC + f Ldbs; c field_9146 baseCostA + f Ljava/util/Optional; d field_9143 costB + f Lcuq; e field_9148 result + f I f field_9147 uses + f I g field_9144 maxUses + f Z h field_9145 rewardExp + f I i field_18676 specialPriceDiff + f I j field_18677 demand + f F k field_18678 priceMultiplier + f I l field_18679 xp + m ()Lcuq; a method_8246 getBaseCostA + m (I)V a method_8245 addToSpecialPriceDiff + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56705 method_56705 + m (Lcuq;Lcuq;)Z a method_16952 satisfiedBy + m (Ldbs;)I a method_57555 getModifiedCostCount + m (Ldbu;)Ljava/lang/Integer; a method_56707 method_56707 + m (Lwk;)Ldbu; a method_56110 createFromStream + m (Lwk;Ldbu;)V a method_56111 writeToStream + m ()Lcuq; b method_19272 getCostA + m (I)V b method_19273 setSpecialPriceDiff + m (Lcuq;Lcuq;)Z b method_16953 take + m (Ldbu;)Ljava/lang/Float; b method_56708 method_56708 + m ()Lcuq; c method_8247 getCostB + m (Ldbu;)Ljava/lang/Integer; c method_56709 method_56709 + m ()Ldbs; d method_57556 getItemCostA + m (Ldbu;)Ljava/lang/Integer; d method_56710 method_56710 + m ()Ljava/util/Optional; e method_57557 getItemCostB + m (Ldbu;)Ljava/lang/Boolean; e method_56711 method_56711 + m ()Lcuq; f method_8250 getResult + m (Ldbu;)Ljava/lang/Integer; f method_56712 method_56712 + m ()V g method_19274 updateDemand + m (Ldbu;)Ljava/lang/Integer; g method_56713 method_56713 + m ()Lcuq; h method_18019 assemble + m (Ldbu;)Lcuq; h method_56714 method_56714 + m ()I i method_8249 getUses + m (Ldbu;)Ljava/util/Optional; i method_56715 method_56715 + m ()V j method_19275 resetUses + m (Ldbu;)Ldbs; j method_56716 method_56716 + m ()I k method_8248 getMaxUses + m ()V l method_8244 increaseUses + m ()I m method_21725 getDemand + m ()V n method_19276 resetSpecialPriceDiff + m ()I o method_19277 getSpecialPriceDiff + m ()F p method_19278 getPriceMultiplier + m ()I q method_19279 getXp + m ()Z r method_8255 isOutOfStock + m ()V s method_8254 setToOutOfStock + m ()Z t method_21834 needsRestock + m ()Z u method_8256 shouldRewardExp + m ()Ldbu; v method_53881 copy + m (Ldbs;Ljava/util/Optional;Lcuq;IIZIIFI)V + m (Ldbs;Lcuq;IIF)V + m (Ldbs;Ljava/util/Optional;Lcuq;IIF)V + m (Ldbs;Ljava/util/Optional;Lcuq;IIIF)V + m (Ldbs;Ljava/util/Optional;Lcuq;IIIFI)V + m (Ldbu;)V + m ()V +c dbv net/minecraft/class_1916 net/minecraft/world/item/trading/MerchantOffers + f Lcom/mojang/serialization/Codec; a field_48850 CODEC + f Lyx; b field_48373 STREAM_CODEC + m ()Ldbv; a method_53882 copy + m (Lcuq;Lcuq;I)Ldbu; a method_8267 getRecipeFor + m ()V + m (I)V + m (Ljava/util/Collection;)V + m ()V +c dbw net/minecraft/class_6085 net/minecraft/world/item/trading/package-info +c dbx net/minecraft/class_1918 net/minecraft/world/level/BaseCommandBlock + f Ljava/text/SimpleDateFormat; b field_9169 TIME_FORMAT + f Lwz; c field_21515 DEFAULT_NAME + f J d field_9167 lastExecution + f Z e field_9166 updateLastExecution + f I f field_9163 successCount + f Z g field_9164 trackOutput + f Lwz; h field_9165 lastOutput + f Ljava/lang/String; i field_9168 command + f Lwz; j field_9162 customName + m (I)V a method_8298 setSuccessCount + m (Lcmx;)Lbqr; a method_8288 usedBy + m (Ldcw;)Z a method_8301 performCommand + m (Ljava/lang/String;)V a method_8286 setCommand + m (Lub;Ljo$a;)Lub; a method_8297 save + m (Z)V a method_8287 setTrackOutput + m (ZI)V a method_8294 method_8294 + m (Lub;Ljo$a;)V b method_8305 load + m (Lwz;)V b method_8290 setCustomName + m (Lwz;)V c method_8291 setLastOutput + m ()Laqu; e method_8293 getLevel + m ()V f method_8295 onUpdated + m ()Lexc; g method_8300 getPosition + m ()Ljava/lang/String; h method_8302 method_8302 + m ()Let; i method_8303 createCommandSourceStack + m ()Z j method_52175 isValid + m ()I k method_8304 getSuccessCount + m ()Lwz; l method_8292 getLastOutput + m ()Ljava/lang/String; m method_8289 getCommand + m ()Lwz; n method_8299 getName + m ()Lwz; o method_57558 getCustomName + m ()Z p method_8296 isTrackOutput + m ()V + m ()V +c dby net/minecraft/class_1917 net/minecraft/world/level/BaseSpawner + f Lorg/slf4j/Logger; a field_9156 LOGGER + f Ljava/lang/String; b field_40877 SPAWN_DATA_TAG + f I c field_30951 EVENT_SPAWN + f I d field_9154 spawnDelay + f Lbpb; e field_9152 spawnPotentials + f Lddo; f field_9155 nextSpawnData + f D g field_9161 spin + f D h field_9159 oSpin + f I i field_9151 minSpawnDelay + f I j field_9150 maxSpawnDelay + f I k field_9149 spawnCount + f Lbsr; l field_9153 displayEntity + f I m field_9160 maxNearbyEntities + f I n field_9158 requiredPlayerRange + f I o field_9157 spawnRange + m ()D a method_8278 getSpin + m (DDDLbsr;)Lbsr; a method_18085 method_18085 + m (Laqu;Ljd;)V a method_31588 serverTick + m (Lbsx;Ldcw;Layw;Ljd;)V a method_8274 setEntityId + m (Ldcw;I)Z a method_8275 onEventTriggered + m (Ldcw;Layw;Ljd;)Lddo; a method_46404 getOrCreateNextSpawnData + m (Ldcw;Ljd;)V a method_31589 clientTick + m (Ldcw;Ljd;I)V a method_8273 broadcastEvent + m (Ldcw;Ljd;Lbpd$b;)V a method_33356 method_33356 + m (Ldcw;Ljd;Lddo;)V a method_8277 setNextSpawnData + m (Ldcw;Ljd;Lub;)V a method_8280 load + m (Ljava/lang/String;)Ljava/lang/IllegalStateException; a method_38081 method_38081 + m (Lub;)Lub; a method_8272 save + m ()D b method_8279 getoSpin + m (Ldcw;Ljd;)Lbsr; b method_8283 getOrCreateDisplayEntity + m (Ljava/lang/String;)V b method_38080 method_38080 + m (Ldcw;Ljd;)Z c method_8284 isNearPlayer + m (Ljava/lang/String;)V c method_46405 method_46405 + m (Ldcw;Ljd;)V d method_8282 delay + m ()V + m ()V +c dbz net/minecraft/class_1920 net/minecraft/world/level/BlockAndTintGetter + m (Lddf;Ljd;)I a method_8314 getBrightness + m (Ljd;Ldch;)I a method_23752 getBlockTint + m (Lji;Z)F a method_24852 getShade + m (Ljd;I)I b method_22335 getRawBrightness + m (Ljd;)Z h method_8311 canSeeSky + m ()Leot; y_ method_22336 getLightEngine +c dca net/minecraft/class_5329 net/minecraft/world/level/BlockCollisions + f Lewx; a field_25169 box + f Lexh; b field_25170 context + f Ljf; c field_25171 cursor + f Ljd$a; d field_25172 pos + f Lexv; e field_25173 entityShape + f Ldcg; f field_25174 collisionGetter + f Z g field_35590 onlySuffocatingBlocks + f Ldcc; h field_35108 cachedBlockGetter + f J i field_35109 cachedBlockGetterPos + f Ljava/util/function/BiFunction; j field_44787 resultProvider + m (II)Ldcc; a method_29283 getChunk + m (Ldcg;Lbsr;Lewx;ZLjava/util/function/BiFunction;)V +c dcb net/minecraft/class_1919 net/minecraft/world/level/BlockEventData + f Ljd; a comp_60 pos + f Ldfy; b comp_61 block + f I c comp_62 paramA + f I d comp_63 paramB + m ()Ljd; a comp_60 pos + m ()Ldfy; b comp_61 block + m ()I c comp_62 paramA + m ()I d comp_63 paramB + m (Ljd;Ldfy;II)V +c dcc net/minecraft/class_1922 net/minecraft/world/level/BlockGetter + m ()I Q method_8315 getMaxLightLevel + m (Ldce;)Lewy; a method_32880 isBlockInLine + m (Ldce;Ljd;)Lewy; a method_32881 method_32881 + m (Ldcf;)Lewy; a method_17742 clip + m (Ldcf;Ljd;)Lewy; a method_17743 method_17743 + m (Lewx;)Ljava/util/stream/Stream; a method_29546 getBlockStates + m (Lexc;Lexc;Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/Function;)Ljava/lang/Object; a method_17744 traverseBlocks + m (Lexc;Lexc;Ljd;Lexv;Ldtc;)Lewy; a method_17745 clipWithInteractionOverride + m (Lexv;Ljava/util/function/Supplier;)D a method_30346 getBlockFloorHeight + m (Ljd;Ldqj;)Ljava/util/Optional; a method_35230 getBlockEntity + m (Ljd;)Ldtc; a_ method_8320 getBlockState + m (Ldce;)Lewy; b method_32882 method_32882 + m (Ldcf;)Lewy; b method_17746 method_17746 + m (Ljd;)Lepe; b_ method_8316 getFluidState + m (Ljd;)Ldqh; c_ method_8321 getBlockEntity + m (Ljd;)Lexv; f method_30348 method_30348 + m (Ljd;)I i method_8317 getLightEmission + m (Ljd;)D j method_30347 getBlockFloorHeight +c dcd net/minecraft/class_1923 net/minecraft/world/level/ChunkPos + f J a field_17348 INVALID_CHUNK_POS + f Ldcd; b field_35107 ZERO + f I c field_38224 REGION_SIZE + f I d field_38225 REGION_MAX_INDEX + f I e field_9181 x + f I f field_9180 z + f I g field_36299 SAFETY_MARGIN + f J h field_30953 COORD_BITS + f J i field_30954 COORD_MASK + f I j field_30955 REGION_BITS + f I k field_30956 REGION_MASK + f I l field_30957 HASH_A + f I m field_30958 HASH_C + f I n field_30959 HASH_Z_XOR + m ()J a method_8324 toLong + m (I)I a method_33939 getBlockX + m (II)Ldcd; a method_42305 minFromRegion + m (III)Ljd; a method_35231 getBlockAt + m (J)I a method_8325 getX + m (Ldcd;)I a method_24022 getChessboardDistance + m (Ldcd;I)Ljava/util/stream/Stream; a method_19280 rangeClosed + m (Ldcd;Ldcd;)Ljava/util/stream/Stream; a method_19281 rangeClosed + m (Ljd;)J a method_37232 asLong + m ()I b method_33940 getMiddleBlockX + m (I)I b method_33941 getBlockZ + m (II)Ldcd; b method_42306 maxFromRegion + m (J)I b method_8332 getZ + m (Ldcd;)I b method_52566 distanceSquared + m ()I c method_33942 getMiddleBlockZ + m (I)Ljd; c method_33943 getMiddleBlockPosition + m (II)J c method_8331 asLong + m (J)I c method_52567 distanceSquared + m ()I d method_8326 getMinBlockX + m (II)I d method_42307 hash + m ()I e method_8328 getMinBlockZ + m (II)I e method_60510 getChessboardDistance + m ()I f method_8327 getMaxBlockX + m (II)I f method_52568 distanceSquared + m ()I g method_8329 getMaxBlockZ + m ()I h method_17885 getRegionX + m ()I i method_17886 getRegionZ + m ()I j method_17887 getRegionLocalX + m ()I k method_17888 getRegionLocalZ + m ()Ljd; l method_8323 getWorldPosition + m (II)V + m (Ljd;)V + m (J)V + m ()V +c dcd$1 net/minecraft/class_1923$1 net/minecraft/world/level/ChunkPos$1 + f Ldcd; a field_18680 val$from + f Ldcd; b field_18681 val$to + f I c field_18682 val$zDiff + f I d field_18683 val$xDiff + f Ldcd; e field_18684 pos + m (JILdcd;Ldcd;II)V +c dce net/minecraft/class_5702 net/minecraft/world/level/ClipBlockStateContext + f Lexc; a field_28102 from + f Lexc; b field_28103 to + f Ljava/util/function/Predicate; c field_28104 block + m ()Lexc; a method_32883 getTo + m ()Lexc; b method_32884 getFrom + m ()Ljava/util/function/Predicate; c method_32885 isTargetBlock + m (Lexc;Lexc;Ljava/util/function/Predicate;)V +c dcf net/minecraft/class_3959 net/minecraft/world/level/ClipContext + f Lexc; a field_17553 from + f Lexc; b field_17554 to + f Ldcf$a; c field_17555 block + f Ldcf$b; d field_17556 fluid + f Lexh; e field_17557 collisionContext + m ()Lexc; a method_17747 getTo + m (Ldtc;Ldcc;Ljd;)Lexv; a method_17748 getBlockShape + m (Lepe;Ldcc;Ljd;)Lexv; a method_17749 getFluidShape + m ()Lexc; b method_17750 getFrom + m (Lexc;Lexc;Ldcf$a;Ldcf$b;Lbsr;)V + m (Lexc;Lexc;Ldcf$a;Ldcf$b;Lexh;)V +c dcf$a net/minecraft/class_3959$class_3960 net/minecraft/world/level/ClipContext$Block + f Ldcf$a; a field_17558 COLLIDER + f Ldcf$a; b field_17559 OUTLINE + f Ldcf$a; c field_23142 VISUAL + f Ldcf$a; d field_36337 FALLDAMAGE_RESETTING + f Ldcf$c; e field_17560 shapeGetter + f [Ldcf$a; f field_17561 $VALUES + m ()[Ldcf$a; a method_36690 $values + m (Ldtc;Ldcc;Ljd;Lexh;)Lexv; a method_40007 method_40007 + m (Ljava/lang/String;ILdcf$c;)V + m ()V +c dcf$b net/minecraft/class_3959$class_242 net/minecraft/world/level/ClipContext$Fluid + f Ldcf$b; a field_1348 NONE + f Ldcf$b; b field_1345 SOURCE_ONLY + f Ldcf$b; c field_1347 ANY + f Ldcf$b; d field_36338 WATER + f Ljava/util/function/Predicate; e field_1346 canPick + f [Ldcf$b; f field_1349 $VALUES + m ()[Ldcf$b; a method_36691 $values + m (Lepe;)Z a method_17751 canPick + m (Lepe;)Z b method_40008 method_40008 + m (Lepe;)Z c method_1018 method_1018 + m (Lepe;)Z d method_1017 method_1017 + m (Ljava/lang/String;ILjava/util/function/Predicate;)V + m ()V +c dcf$c net/minecraft/class_3959$class_3961 net/minecraft/world/level/ClipContext$ShapeGetter +c dcg net/minecraft/class_1941 net/minecraft/world/level/CollisionGetter + m ()Ldut; C_ method_8621 getWorldBorder + m (DDDLewx;)Lewx; a method_39451 method_39451 + m (Lbsr;Lewx;)Z a method_8587 noCollision + m (Lbsr;Lexv;)Z a method_8611 isUnobstructed + m (Lbsr;Lexv;Lexc;DDD)Ljava/util/Optional; a method_33594 findFreePosition + m (Ldtc;Ljd;Lexh;)Z a method_8628 isUnobstructed + m (Lexv;)Ljava/util/stream/Stream; a method_39452 method_39452 + m (Ljd$a;Lexv;)Ljd; a method_51715 method_51715 + m (Lbsr;Lewx;)Z b method_52569 noBlockCollision + m (Lewx;)Z b method_18026 noCollision + m (Lexv;)Z b method_39453 method_39453 + m (Ljd$a;Lexv;)Lexv; b method_51716 method_51716 + m (II)Ldcc; c method_22338 getChunkForCollisions + m (Lbsr;Lewx;)Ljava/util/List; c method_20743 getEntityCollisions + m (Ljd$a;Lexv;)Lexv; c method_51717 method_51717 + m (Lbsr;Lewx;)Ljava/lang/Iterable; d method_8600 getCollisions + m (Lbsr;Lewx;)Ljava/lang/Iterable; e method_20812 getBlockCollisions + m (Lbsr;)Z f method_8606 isUnobstructed + m (Lbsr;Lewx;)Z f method_39454 collidesWithSuffocatingBlock + m (Lbsr;)Z g method_17892 noCollision + m (Lbsr;Lewx;)Ljava/util/Optional; g method_51718 findSupportingBlock + m (Lbsr;Lewx;)Lexv; h method_39455 borderCollision + m (Lbsr;Lewx;)Ljava/util/Iterator; i method_39456 method_39456 +c dch net/minecraft/class_6539 net/minecraft/world/level/ColorResolver +c dci net/minecraft/class_5423 net/minecraft/world/level/CommonLevelAccessor +c dcj net/minecraft/class_5304 net/minecraft/world/level/CustomSpawner + m (Laqu;ZZ)I a method_6445 tick +c dck net/minecraft/class_5359 net/minecraft/world/level/DataPackConfig + f Ldck; a field_25393 DEFAULT + f Lcom/mojang/serialization/Codec; b field_25394 CODEC + f Ljava/util/List; c field_25395 enabled + f Ljava/util/List; d field_25396 disabled + m ()Ljava/util/List; a method_29547 getEnabled + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_29549 method_29549 + m (Ldck;)Ljava/util/List; a method_29548 method_29548 + m ()Ljava/util/List; b method_29550 getDisabled + m (Ldck;)Ljava/util/List; b method_29551 method_29551 + m (Ljava/util/List;Ljava/util/List;)V + m ()V +c dcl net/minecraft/class_2682 net/minecraft/world/level/EmptyBlockGetter + f Ldcl; a field_12294 INSTANCE + f [Ldcl; b field_12295 $VALUES + m ()[Ldcl; a method_36692 $values + m (Ljava/lang/String;I)V + m ()V +c dcm net/minecraft/class_5361 net/minecraft/world/level/EntityBasedExplosionDamageCalculator + f Lbsr; a field_25399 source + m (Ldco;Ldcc;Ljd;Ldtc;Lepe;Ljava/lang/Float;)Ljava/lang/Float; a method_29552 method_29552 + m (Lbsr;)V +c dcn net/minecraft/class_1924 net/minecraft/world/level/EntityGetter + m (DDDD)Z a method_18458 hasNearbyAlivePlayer + m (DDDDLjava/util/function/Predicate;)Lcmx; a method_8604 getNearestPlayer + m (DDDDZ)Lcmx; a method_18459 getNearestPlayer + m (Lbsr;D)Lcmx; a method_18460 getNearestPlayer + m (Lbsr;Lewx;Ljava/util/function/Predicate;)Ljava/util/List; a method_8333 getEntities + m (Lbsr;Lexv;)Z a method_8611 isUnobstructed + m (Lbtn;)Z a method_31590 method_31590 + m (Lcef;DDD)Lcmx; a method_18461 getNearestPlayer + m (Lcef;Lbtn;)Lcmx; a method_18462 getNearestPlayer + m (Lcef;Lbtn;DDD)Lcmx; a method_18463 getNearestPlayer + m (Lcef;Lbtn;Lewx;)Ljava/util/List; a method_18464 getNearbyPlayers + m (Ldxn;Lewx;Ljava/util/function/Predicate;)Ljava/util/List; a method_18023 getEntities + m (Ljava/lang/Class;Lcef;Lbtn;DDDLewx;)Lbtn; a method_21726 getNearestEntity + m (Ljava/lang/Class;Lcef;Lbtn;Lewx;)Ljava/util/List; a method_18466 getNearbyEntities + m (Ljava/lang/Class;Lewx;)Ljava/util/List; a method_18467 getEntitiesOfClass + m (Ljava/lang/Class;Lewx;Ljava/util/function/Predicate;)Ljava/util/List; a method_8390 getEntitiesOfClass + m (Ljava/util/List;Lcef;Lbtn;DDD)Lbtn; a method_18468 getNearestEntity + m (Lbsr;Lewx;)Ljava/util/List; a_ method_8335 getEntities + m (Lbtn;)Z b method_31591 method_31591 + m (Ljava/util/UUID;)Lcmx; b method_18470 getPlayerByUUID + m (Lbsr;Lewx;)Ljava/util/List; c method_20743 getEntityCollisions + m ()Ljava/util/List; x method_18456 players +c dco net/minecraft/class_1927 net/minecraft/world/level/Explosion + f Ldcp; a field_25818 EXPLOSION_DAMAGE_CALCULATOR + f I b field_30960 MAX_DROPS_PER_COMBINED_STACK + f Z c field_9186 fire + f Ldco$a; d field_9184 blockInteraction + f Layw; e field_9191 random + f Ldcw; f field_9187 level + f D g field_9195 x + f D h field_9192 y + f D i field_9189 z + f Lbsr; j field_9185 source + f F k field_9190 radius + f Lbrk; l field_9193 damageSource + f Ldcp; m field_25400 damageCalculator + f Llk; n field_47328 smallExplosionParticles + f Llk; o field_47329 largeExplosionParticles + f Ljm; p field_47330 explosionSound + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; q field_9188 toBlow + f Ljava/util/Map; r field_9194 hitPlayers + m ()F a method_55107 radius + m (Lbsr;)Ldcp; a method_29553 makeDamageCalculator + m (Ldcw;Lbsr;)Lbrk; a method_55108 getDefaultDamageSource + m (Lexc;Lbsr;)F a method_17752 getSeenPercent + m (Ljava/util/List;Lcuq;Ljd;)V a method_24023 addOrAppendStack + m (Z)V a method_8350 finalizeExplosion + m ()Lexc; b method_55109 center + m (Lbsr;)Lbtn; b method_55110 getIndirectSourceEntityInternal + m (Ljava/util/List;Lcuq;Ljd;)V b method_24024 method_24024 + m ()V c method_8348 explode + m ()Z d method_46667 interactsWithBlocks + m ()Ljava/util/Map; e method_8351 getHitPlayers + m ()Lbtn; f method_8347 getIndirectSourceEntity + m ()Lbsr; g method_46406 getDirectSourceEntity + m ()V h method_8352 clearToBlow + m ()Ljava/util/List; i method_8346 getToBlow + m ()Ldco$a; j method_55111 getBlockInteraction + m ()Llk; k method_55112 getSmallExplosionParticles + m ()Llk; l method_55113 getLargeExplosionParticles + m ()Ljm; m method_55114 getExplosionSound + m ()Z n method_60274 canTriggerBlocks + m (Ldcw;Lbsr;DDDFLjava/util/List;Ldco$a;Llk;Llk;Ljm;)V + m (Ldcw;Lbsr;DDDFZLdco$a;Ljava/util/List;)V + m (Ldcw;Lbsr;DDDFZLdco$a;)V + m (Ldcw;Lbsr;Lbrk;Ldcp;DDDFZLdco$a;Llk;Llk;Ljm;)V + m ()V +c dco$a net/minecraft/class_1927$class_4179 net/minecraft/world/level/Explosion$BlockInteraction + f Ldco$a; a field_40878 KEEP + f Ldco$a; b field_18687 DESTROY + f Ldco$a; c field_40879 DESTROY_WITH_DECAY + f Ldco$a; d field_47331 TRIGGER_BLOCK + f [Ldco$a; e field_18688 $VALUES + m ()[Ldco$a; a method_36693 $values + m (Ljava/lang/String;I)V + m ()V +c dcp net/minecraft/class_5362 net/minecraft/world/level/ExplosionDamageCalculator + m (Lbsr;)F a method_57007 getKnockbackMultiplier + m (Ldco;Lbsr;)Z a method_55504 shouldDamageEntity + m (Ldco;Ldcc;Ljd;Ldtc;F)Z a method_29554 shouldBlockExplode + m (Ldco;Ldcc;Ljd;Ldtc;Lepe;)Ljava/util/Optional; a method_29555 getBlockExplosionResistance + m (Ldco;Lbsr;)F b method_55115 getEntityDamageAmount + m ()V +c dcq net/minecraft/class_1926 net/minecraft/world/level/FoliageColor + f [I a field_9183 pixels + m ()I a method_8342 getEvergreenColor + m (DD)I a method_8344 get + m ([I)V a method_8340 init + m ()I b method_8343 getBirchColor + m ()I c method_8341 getDefaultColor + m ()I d method_43717 getMangroveColor + m ()V + m ()V +c dcr net/minecraft/class_1932 net/minecraft/world/level/ForcedChunksSavedData + f Ljava/lang/String; a field_30961 FILE_ID + f Ljava/lang/String; b field_30962 TAG_FORCED + f Lit/unimi/dsi/fastutil/longs/LongSet; c field_9213 chunks + m ()Leql$a; a method_52570 factory + m ()Lit/unimi/dsi/fastutil/longs/LongSet; b method_8375 getChunks + m (Lub;Ljo$a;)Ldcr; b method_32350 load + m (Lit/unimi/dsi/fastutil/longs/LongSet;)V + m ()V +c dcs net/minecraft/class_1928 net/minecraft/world/level/GameRules + f Ldcs$e; A field_19409 RULE_ANNOUNCE_ADVANCEMENTS + f Ldcs$e; B field_19422 RULE_DISABLE_RAIDS + f Ldcs$e; C field_20637 RULE_DOINSOMNIA + f Ldcs$e; D field_20638 RULE_DO_IMMEDIATE_RESPAWN + f Ldcs$e; E field_46794 RULE_PLAYERS_NETHER_PORTAL_DEFAULT_DELAY + f Ldcs$e; F field_46795 RULE_PLAYERS_NETHER_PORTAL_CREATIVE_DELAY + f Ldcs$e; G field_20634 RULE_DROWNING_DAMAGE + f Ldcs$e; H field_20635 RULE_FALL_DAMAGE + f Ldcs$e; I field_20636 RULE_FIRE_DAMAGE + f Ldcs$e; J field_28044 RULE_FREEZE_DAMAGE + f Ldcs$e; K field_21831 RULE_DO_PATROL_SPAWNING + f Ldcs$e; L field_21832 RULE_DO_TRADER_SPAWNING + f Ldcs$e; M field_38975 RULE_DO_WARDEN_SPAWNING + f Ldcs$e; N field_25401 RULE_FORGIVE_DEAD_PLAYERS + f Ldcs$e; O field_25402 RULE_UNIVERSAL_ANGER + f Ldcs$e; P field_28357 RULE_PLAYERS_SLEEPING_PERCENTAGE + f Ldcs$e; Q field_40880 RULE_BLOCK_EXPLOSION_DROP_DECAY + f Ldcs$e; R field_40881 RULE_MOB_EXPLOSION_DROP_DECAY + f Ldcs$e; S field_40882 RULE_TNT_EXPLOSION_DROP_DECAY + f Ldcs$e; T field_40883 RULE_SNOW_ACCUMULATION_HEIGHT + f Ldcs$e; U field_40884 RULE_WATER_SOURCE_CONVERSION + f Ldcs$e; V field_40885 RULE_LAVA_SOURCE_CONVERSION + f Ldcs$e; W field_40886 RULE_GLOBAL_SOUND_EVENTS + f Ldcs$e; X field_42474 RULE_DO_VINES_SPREAD + f Ldcs$e; Y field_46176 RULE_ENDER_PEARLS_VANISH_ON_DEATH + f Ldcs$e; Z field_48374 RULE_SPAWN_CHUNK_RADIUS + f I a field_30963 DEFAULT_RANDOM_TICK_SPEED + f Lorg/slf4j/Logger; aa field_19410 LOGGER + f Ljava/util/Map; ab field_9197 GAME_RULE_TYPES + f Ljava/util/Map; ac field_9196 rules + f Ldcs$e; b field_19387 RULE_DOFIRETICK + f Ldcs$e; c field_19388 RULE_MOBGRIEFING + f Ldcs$e; d field_19389 RULE_KEEPINVENTORY + f Ldcs$e; e field_19390 RULE_DOMOBSPAWNING + f Ldcs$e; f field_19391 RULE_DOMOBLOOT + f Ldcs$e; g field_46796 RULE_PROJECTILESCANBREAKBLOCKS + f Ldcs$e; h field_19392 RULE_DOBLOCKDROPS + f Ldcs$e; i field_19393 RULE_DOENTITYDROPS + f Ldcs$e; j field_19394 RULE_COMMANDBLOCKOUTPUT + f Ldcs$e; k field_19395 RULE_NATURAL_REGENERATION + f Ldcs$e; l field_19396 RULE_DAYLIGHT + f Ldcs$e; m field_19397 RULE_LOGADMINCOMMANDS + f Ldcs$e; n field_19398 RULE_SHOWDEATHMESSAGES + f Ldcs$e; o field_19399 RULE_RANDOMTICKING + f Ldcs$e; p field_19400 RULE_SENDCOMMANDFEEDBACK + f Ldcs$e; q field_19401 RULE_REDUCEDDEBUGINFO + f Ldcs$e; r field_19402 RULE_SPECTATORSGENERATECHUNKS + f Ldcs$e; s field_19403 RULE_SPAWN_RADIUS + f Ldcs$e; t field_19404 RULE_DISABLE_ELYTRA_MOVEMENT_CHECK + f Ldcs$e; u field_19405 RULE_MAX_ENTITY_CRAMMING + f Ldcs$e; v field_19406 RULE_WEATHER_CYCLE + f Ldcs$e; w field_19407 RULE_LIMITED_CRAFTING + f Ldcs$e; x field_19408 RULE_MAX_COMMAND_CHAIN_LENGTH + f Ldcs$e; y field_46658 RULE_MAX_COMMAND_FORK_COUNT + f Ldcs$e; z field_41766 RULE_COMMAND_MODIFICATION_BLOCK_LIMIT + m ()Lub; a method_8358 createTag + m (Lcom/mojang/serialization/DynamicLike;)V a method_8357 loadFromTag + m (Lcom/mojang/serialization/DynamicLike;Ldcs$e;Ldcs$g;)V a method_20747 method_20747 + m (Ldcs$c;)V a method_20744 visitGameRuleTypes + m (Ldcs$c;Ldcs$e;Ldcs$f;)V a method_20745 callVisitorCap + m (Ldcs$e;)Ldcs$g; a method_20746 getRule + m (Ldcs$e;Ldcs;Lnet/minecraft/server/MinecraftServer;)V a method_27321 assignCap + m (Ldcs;Lnet/minecraft/server/MinecraftServer;)V a method_27322 assignFrom + m (Ldcs;Lnet/minecraft/server/MinecraftServer;Ldcs$e;)V a method_27323 method_27323 + m (Ljava/lang/String;Ldcs$b;Ldcs$f;)Ldcs$e; a method_8359 register + m (Ljava/util/Map$Entry;)Ldcs$g; a method_27324 method_27324 + m (Lnet/minecraft/server/MinecraftServer;Ldcs$a;)V a method_53838 method_53838 + m (Lnet/minecraft/server/MinecraftServer;Ldcs$d;)V a method_56113 method_56113 + m (Lub;Ldcs$e;Ldcs$g;)V a method_20751 method_20751 + m ()Ldcs; b method_27325 copy + m (Ldcs$c;Ldcs$e;Ldcs$f;)V b method_20750 method_20750 + m (Ldcs$e;)Z b method_8355 getBoolean + m (Ljava/util/Map$Entry;)Ldcs$g; b method_20748 method_20748 + m (Lnet/minecraft/server/MinecraftServer;Ldcs$a;)V b method_53839 method_53839 + m (Ldcs$e;)I c method_8356 getInt + m (Lnet/minecraft/server/MinecraftServer;Ldcs$a;)V c method_8361 method_8361 + m (Ldcs$e;)Ljava/lang/String; d method_20752 method_20752 + m (Lcom/mojang/serialization/DynamicLike;)V + m ()V + m (Ljava/util/Map;)V + m ()V +c dcs$a net/minecraft/class_1928$class_4310 net/minecraft/world/level/GameRules$BooleanValue + f Z b field_19411 value + m ()Z a method_20753 get + m (Ldcs$a;Lnet/minecraft/server/MinecraftServer;)V a method_27326 setFrom + m (Lnet/minecraft/server/MinecraftServer;Ldcs$a;)V a method_20754 method_20754 + m (Z)Ldcs$f; a method_20759 create + m (ZLdcs$f;)Ldcs$a; a method_20756 method_20756 + m (ZLjava/util/function/BiConsumer;)Ldcs$f; a method_20760 create + m (ZLnet/minecraft/server/MinecraftServer;)V a method_20758 set + m ()Ldcs$a; d method_20761 getSelf + m ()Ldcs$a; e method_27327 copy + m (Ldcs$f;Z)V +c dcs$b net/minecraft/class_1928$class_5198 net/minecraft/world/level/GameRules$Category + f Ldcs$b; a field_24094 PLAYER + f Ldcs$b; b field_24095 MOBS + f Ldcs$b; c field_24096 SPAWNING + f Ldcs$b; d field_24097 DROPS + f Ldcs$b; e field_24098 UPDATES + f Ldcs$b; f field_24099 CHAT + f Ldcs$b; g field_24100 MISC + f Ljava/lang/String; h field_24101 descriptionId + f [Ldcs$b; i field_24102 $VALUES + m ()Ljava/lang/String; a method_27328 getDescriptionId + m ()[Ldcs$b; b method_36694 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dcs$c net/minecraft/class_1928$class_4311 net/minecraft/world/level/GameRules$GameRuleTypeVisitor + m (Ldcs$e;Ldcs$f;)V a method_20762 visit + m (Ldcs$e;Ldcs$f;)V b method_27329 visitBoolean + m (Ldcs$e;Ldcs$f;)V c method_27330 visitInteger +c dcs$d net/minecraft/class_1928$class_4312 net/minecraft/world/level/GameRules$IntegerValue + f I b field_19412 value + m ()I a method_20763 get + m (I)Ldcs$f; a method_20768 create + m (II)Lcom/mojang/brigadier/arguments/ArgumentType; a method_56114 method_56114 + m (IIILjava/util/function/BiConsumer;)Ldcs$f; a method_56115 create + m (ILdcs$f;)Ldcs$d; a method_56116 method_56116 + m (ILjava/util/function/BiConsumer;)Ldcs$f; a method_20766 create + m (ILnet/minecraft/server/MinecraftServer;)V a method_35236 set + m (Ldcs$d;Lnet/minecraft/server/MinecraftServer;)V a method_27331 setFrom + m (Lnet/minecraft/server/MinecraftServer;Ldcs$d;)V a method_20767 method_20767 + m (ILdcs$f;)Ldcs$d; b method_20765 method_20765 + m (Ljava/lang/String;)Z b method_27332 tryDeserialize + m (Ljava/lang/String;)I c method_20769 safeParse + m ()Ldcs$d; d method_20770 getSelf + m ()Ldcs$d; e method_27333 copy + m (Ldcs$f;I)V +c dcs$e net/minecraft/class_1928$class_4313 net/minecraft/world/level/GameRules$Key + f Ljava/lang/String; a field_19413 id + f Ldcs$b; b field_24103 category + m ()Ljava/lang/String; a method_20771 getId + m ()Ljava/lang/String; b method_27334 getDescriptionId + m ()Ldcs$b; c method_27335 getCategory + m (Ljava/lang/String;Ldcs$b;)V +c dcs$f net/minecraft/class_1928$class_4314 net/minecraft/world/level/GameRules$Type + f Ljava/util/function/Supplier; a field_19414 argument + f Ljava/util/function/Function; b field_19415 constructor + f Ljava/util/function/BiConsumer; c field_19416 callback + f Ldcs$h; d field_24104 visitorCaller + m ()Ldcs$g; a method_20773 createRule + m (Ldcs$c;Ldcs$e;)V a method_27336 callVisitor + m (Ljava/lang/String;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; a method_20775 createArgument + m (Ljava/util/function/Supplier;Ljava/util/function/Function;Ljava/util/function/BiConsumer;Ldcs$h;)V +c dcs$g net/minecraft/class_1928$class_4315 net/minecraft/world/level/GameRules$Value + f Ldcs$f; a field_19417 type + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)V a method_20776 updateFromArgument + m (Ldcs$g;Lnet/minecraft/server/MinecraftServer;)V a method_27337 setFrom + m (Ljava/lang/String;)V a method_20777 deserialize + m (Lnet/minecraft/server/MinecraftServer;)V a method_20778 onChanged + m ()Ljava/lang/String; b method_20779 serialize + m (Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)V b method_20780 setFromArgument + m ()I c method_20781 getCommandResult + m ()Ldcs$g; f method_27338 copy + m ()Ldcs$g; g method_20782 getSelf + m (Ldcs$f;)V +c dcs$h net/minecraft/class_1928$class_5199 net/minecraft/world/level/GameRules$VisitorCaller +c dct net/minecraft/class_1934 net/minecraft/world/level/GameType + f Ldct; a field_9215 SURVIVAL + f Ldct; b field_9220 CREATIVE + f Ldct; c field_9216 ADVENTURE + f Ldct; d field_9219 SPECTATOR + f Ldct; e field_28045 DEFAULT_MODE + f Lazk$a; f field_41676 CODEC + f Ljava/util/function/IntFunction; g field_41677 BY_ID + f I h field_30964 NOT_SET + f I i field_9217 id + f Ljava/lang/String; j field_9221 name + f Lwz; k field_28046 shortName + f Lwz; l field_28047 longName + f [Ldct; m field_9222 $VALUES + m ()I a method_8379 getId + m (I)Ldct; a method_8384 byId + m (Lcmu;)V a method_8382 updatePlayerAbilities + m (Ldct;)I a method_32761 getNullableId + m (Ljava/lang/String;)Ldct; a method_8385 byName + m (Ljava/lang/String;Ldct;)Ldct; a method_8378 byName + m ()Ljava/lang/String; b method_8381 getName + m (I)Ldct; b method_32762 byNullableId + m ()Lwz; d method_8383 getLongDisplayName + m ()Lwz; e method_32763 getShortDisplayName + m ()Z f method_8387 isBlockPlacingRestricted + m ()Z g method_8386 isCreative + m ()Z h method_8388 isSurvival + m ()[Ldct; i method_36695 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c dcu net/minecraft/class_1933 net/minecraft/world/level/GrassColor + f [I a field_9214 pixels + m ()I a method_49724 getDefaultColor + m (DD)I a method_8377 get + m ([I)V a method_8376 init + m ()V + m ()V +c dcv net/minecraft/class_1935 net/minecraft/world/level/ItemLike + m ()Lcul; r method_8389 asItem +c dcw net/minecraft/class_1937 net/minecraft/world/level/Level + f Lerm; A field_9232 levelData + f Z B field_9236 isClientSide + f Ljm; D field_36402 dimensionTypeRegistration + f Ljava/util/function/Supplier; E field_16316 profiler + f Ldut; F field_9223 worldBorder + f Lddy; G field_20639 biomeManager + f Lakq; H field_25176 dimension + f Lka; I field_42475 registryAccess + f Lbrl; J field_42476 damageSources + f J K field_35455 subTickCount + f Ljava/util/List; a field_27081 pendingBlockEntityTickers + f Z b field_9249 tickingBlockEntities + f Ljava/lang/Thread; c field_17086 thread + f Z d field_24496 isDebug + f I e field_9226 skyDarken + f Layw; f field_38861 threadSafeRandom + f Lcom/mojang/serialization/Codec; g field_25178 RESOURCE_KEY_CODEC + f Lakq; h field_25179 OVERWORLD + f Lakq; i field_25180 NETHER + f Lakq; j field_25181 END + f I k field_30965 MAX_LEVEL_SIZE + f I l field_30966 LONG_PARTICLE_CLIP_RANGE + f I m field_30967 SHORT_PARTICLE_CLIP_RANGE + f I n field_30968 MAX_BRIGHTNESS + f I o field_30969 TICKS_PER_DAY + f I p field_30970 MAX_ENTITY_SPAWN_Y + f I q field_30971 MIN_ENTITY_SPAWN_Y + f Ljava/util/List; r field_27082 blockEntityTickers + f Leqi; s field_38226 neighborUpdater + f I t field_9256 randValue + f I u field_9238 addend + f F v field_9253 oRainLevel + f F w field_9235 rainLevel + f F x field_9251 oThunderLevel + f F y field_9234 thunderLevel + f Layw; z field_9229 random + m ()Ldxp; G method_31592 getEntities + m ()Ljava/lang/String; I method_31419 gatherChunkSourceStats + m ()Lcwt; K method_59547 potionBrewing + m ()Leyg; M method_8428 getScoreboard + m ()Z R method_8530 isDay + m ()Z S method_23886 isNight + m ()V T method_18471 tickBlockEntities + m ()V U method_8533 updateSkyBrightness + m ()Ljd; V method_43126 getSharedSpawnPos + m ()F W method_43127 getSharedSpawnAngle + m ()V X method_8543 prepareWeather + m ()V Y method_8525 disconnect + m ()J Z method_8510 getGameTime + m ()Ljava/lang/String; a method_20783 method_20783 + m (DDDDDDLjava/util/List;)V a method_8547 createFireworks + m (DDDLavo;Lavq;FFZ)V a method_8486 playLocalSound + m (F)F a method_8442 getSunAngle + m (I)Lbsr; a method_8469 getEntity + m (IIII)Ljd; a method_8536 getBlockRandomPos + m (ILjd;I)V a method_8517 destroyBlockProgress + m (J)Z a method_39425 shouldTickBlocksAt + m (Lbsr;B)V a method_8421 broadcastEntityEvent + m (Lbsr;DDDFLdcw$a;)Ldco; a method_8437 explode + m (Lbsr;DDDFZLdcw$a;)Ldco; a method_8537 explode + m (Lbsr;Lavo;Lavq;FF)V a method_55116 playLocalSound + m (Lbsr;Lbrk;)V a method_48760 broadcastDamageEvent + m (Lbsr;Lbrk;Ldcp;DDDFZLdcw$a;)Ldco; a method_55117 explode + m (Lbsr;Lbrk;Ldcp;DDDFZLdcw$a;Llk;Llk;Ljm;)Ldco; a method_8454 explode + m (Lbsr;Lbrk;Ldcp;DDDFZLdcw$a;ZLlk;Llk;Ljm;)Ldco; a method_46668 explode + m (Lbsr;Lbrk;Ldcp;Lexc;FZLdcw$a;)Ldco; a method_46407 explode + m (Lbsr;Ljava/util/function/Predicate;Ljava/util/List;Lbsr;)V a method_31593 method_31593 + m (Lbsr;Ljd;Lavo;Lavq;FF)V a method_45445 playSound + m (Lcmx;DDDLavo;Lavq;)V a method_54762 playSound + m (Lcmx;DDDLavo;Lavq;FF)V a method_43128 playSound + m (Lcmx;DDDLavo;Lavq;FFJ)V a method_47967 playSeededSound + m (Lcmx;DDDLjm;Lavq;FF)V a method_60511 playSound + m (Lcmx;DDDLjm;Lavq;FFJ)V a method_8465 playSeededSound + m (Lcmx;Lbsr;Lavo;Lavq;FF)V a method_43129 playSound + m (Lcmx;Lbsr;Ljm;Lavq;FFJ)V a method_8449 playSeededSound + m (Lcmx;Ljd;)Z a method_8505 mayInteract + m (Ldcs$e;)Ldco$a; a method_46669 getDestroyType + m (Ldqh;)V a method_8438 setBlockEntity + m (Ldsa;)V a method_31594 addBlockEntityTicker + m (Ldtc;Ljd;Ldfy;Ljd;Z)V a method_41410 neighborChanged + m (Ldxn;Lewx;Ljava/util/function/Predicate;Ljava/util/List;)V a method_47574 getEntities + m (Ldxn;Lewx;Ljava/util/function/Predicate;Ljava/util/List;I)V a method_47575 getEntities + m (Leqr;)Leqt; a method_17891 getMapData + m (Leqr;Leqt;)V a method_17890 setMapData + m (Ljava/util/function/Consumer;Lbsr;)V a method_18472 guardEntityTick + m (Ljava/util/function/Predicate;Ljava/util/List;ILdxn;Lbsr;)Laxa$a; a method_47576 method_47576 + m (Ljd;Lavo;Lavq;FFZ)V a method_45446 playLocalSound + m (Ljd;Lbsr;)Z a method_8515 loadedAndEntityCanStandOn + m (Ljd;Lbsr;Lji;)Z a method_24368 loadedAndEntityCanStandOnFace + m (Ljd;Ldfy;)V a method_8452 updateNeighborsAt + m (Ljd;Ldfy;II)V a method_8427 blockEvent + m (Ljd;Ldfy;Ljd;)V a method_8492 neighborChanged + m (Ljd;Ldfy;Lji;)V a method_8508 updateNeighborsAtExceptFromFacing + m (Ljd;Ldtc;)V a method_31595 addDestroyBlockEffect + m (Ljd;Ldtc;Ldtc;)V a method_19282 onBlockStateChange + m (Ljd;Ldtc;Ldtc;I)V a method_8413 sendBlockUpdated + m (Llk;ZDDDDDD)V a method_8466 addParticle + m (Lo;)Lp; a method_8538 fillReportDetails + m (Lzg;)V a method_8522 sendPacketToServer + m ()J aa method_8532 getDayTime + m ()Ldcs; ab method_8450 getGameRules + m ()Z ac method_8546 isThundering + m ()Z ad method_8419 isRaining + m ()Ljm; ae method_40134 dimensionTypeRegistration + m ()Lakq; af method_27983 dimension + m ()Lbnf; ag method_16107 getProfiler + m ()Ljava/util/function/Supplier; ah method_24367 getProfilerSupplier + m ()Z ai method_27982 isDebug + m ()Lbrl; aj method_48963 damageSources + m (F)F b method_8478 getThunderLevel + m (I)Z b method_25952 isOutsideSpawnableHeight + m (ILjd;I)V b method_8474 globalLevelEvent + m (Ljd;Ldtc;)Z b method_8501 setBlockAndUpdate + m (Ljd;Ldtc;Ldtc;)V b method_16109 setBlocksDirty + m (Llk;DDDDDD)V b method_8494 addAlwaysVisibleParticle + m (Llk;ZDDDDDD)V b method_17452 addAlwaysVisibleParticle + m (ZZ)V b method_8424 setSpawnSettings + m (F)V c method_8496 setThunderLevel + m (I)V c method_8509 setSkyFlashTime + m (Ljd;Ldfy;)V c method_8455 updateNeighbourForOutputSignal + m (F)F d method_8430 getRainLevel + m (II)Ldvi; d method_8497 getChunk + m (F)V e method_8519 setRainLevel + m (Ljd;)Z g method_8558 isInWorldBoundsHorizontal + m (Lbsr;)Z h method_38989 shouldTickDeath + m (Ljd;)Z k method_24794 isInWorldBounds + m (Ljd;)Z l method_25953 isInSpawnableBounds + m (Ljd;)Ldvi; m method_8500 getChunkAt + m (Ljd;)Z n method_41411 shouldTickBlocksAt + m (Ljd;)V o method_8544 removeBlockEntity + m ()Ljava/lang/String; p method_8484 method_8484 + m (Ljd;)Z p method_8477 isLoaded + m (Ljd;)V q method_8524 blockEntityChanged + m ()Lczd; r method_8433 getRecipeManager + m (Ljd;)Z r method_8520 isRainingAt + m ()Lbrc; s method_54719 tickRateManager + m ()Z t method_8458 noSave + m ()Leqr; v method_17889 getFreeMapId + m (Lerm;Lakq;Lka;Ljm;Ljava/util/function/Supplier;ZZJI)V + m ()V +c dcw$1 net/minecraft/class_1937$1 net/minecraft/world/level/Level$1 + f Ldwy; a field_39310 val$dimensionType + m (Ldcw;Ldwy;)V +c dcw$a net/minecraft/class_1937$class_7867 net/minecraft/world/level/Level$ExplosionInteraction + f Ldcw$a; a field_40888 NONE + f Ldcw$a; b field_40889 BLOCK + f Ldcw$a; c field_40890 MOB + f Ldcw$a; d field_40891 TNT + f Ldcw$a; e field_51779 TRIGGER + f Lcom/mojang/serialization/Codec; f field_51780 CODEC + f Ljava/lang/String; g field_51781 id + f [Ldcw$a; h field_40892 $VALUES + m ()[Ldcw$a; a method_46670 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dcx net/minecraft/class_1936 net/minecraft/world/level/LevelAccessor + m ()Lerb; A_ method_8401 getLevelData + m ()Layw; E_ method_8409 getRandom + m ()J G_ method_39224 nextSubTickCount + m ()Ldvc; N method_8398 getChunkSource + m ()Leyp; O method_8405 getFluidTicks + m ()Leyp; P method_8397 getBlockTicks + m (Lakq;Ljd;Ldxz$a;)V a method_55764 gameEvent + m (Lbsr;Ljm;Lexc;)V a method_43275 gameEvent + m (Lbsr;Ljm;Ljd;)V a method_33596 gameEvent + m (Lcmx;ILjd;I)V a method_8444 levelEvent + m (Lcmx;Ljd;Lavo;Lavq;)V a method_45447 playSound + m (Lcmx;Ljd;Lavo;Lavq;FF)V a method_8396 playSound + m (Ljd;Ldfy;I)V a method_39279 scheduleTick + m (Ljd;Ldfy;ILeyx;)V a method_39280 scheduleTick + m (Ljd;Lepd;I)V a method_39281 scheduleTick + m (Ljd;Lepd;ILeyx;)V a method_39282 scheduleTick + m (Ljd;Ljava/lang/Object;I)Leyt; a method_39283 createTick + m (Ljd;Ljava/lang/Object;ILeyx;)Leyt; a method_39284 createTick + m (Lji;Ldtc;Ljd;Ljd;II)V a method_42308 neighborShapeChanged + m (Ljm;Lexc;Ldxz$a;)V a method_32888 gameEvent + m (Ljm;Ljd;Ldxz$a;)V a method_43276 gameEvent + m (Llk;DDDDDD)V a method_8406 addParticle + m ()Lbqo; al method_8407 getDifficulty + m (Ljd;Ldfy;)V b method_8408 blockUpdated + m (ILjd;I)V c method_20290 levelEvent + m (Ljd;)Lbqp; d_ method_8404 getCurrentDifficultyAt + m ()Lnet/minecraft/server/MinecraftServer; o method_8503 getServer +c dcy net/minecraft/class_5539 net/minecraft/world/level/LevelHeightAccessor + m ()I I_ method_31607 getMinBuildHeight + m ()I J_ method_31605 getHeight + m ()I am method_31600 getMaxBuildHeight + m ()I an method_32890 getSectionsCount + m ()I ao method_32891 getMinSection + m ()I ap method_31597 getMaxSection + m (I)Z d method_31601 isOutsideBuildHeight + m (I)I e method_31602 getSectionIndex + m (II)Ldcy; e method_39034 create + m (I)I f method_31603 getSectionIndexFromSectionY + m (I)I g method_31604 getSectionYFromSectionIndex + m (Ljd;)Z s method_31606 isOutsideBuildHeight +c dcy$1 net/minecraft/class_5539$1 net/minecraft/world/level/LevelHeightAccessor$1 + f I a field_35180 val$height + f I b field_35181 val$minBuildHeight + m (II)V +c dcz net/minecraft/class_4538 net/minecraft/world/level/LevelReader + m (Ljd;)I A method_22339 getMaxLocalRawBrightness + m (Ljd;)Z B method_22340 hasChunkAt + m ()I B_ method_8594 getSkyDarken + m ()Ldwy; D_ method_8597 dimensionType + m ()Lddy; F_ method_22385 getBiomeManager + m ()Lka; H_ method_30349 registryAccess + m ()Lcpl; J method_45162 enabledFeatures + m (II)Lduy; a method_8392 getChunk + m (III)Ljm; a method_22387 getUncachedNoiseBiome + m (IIIIII)Z a method_22341 hasChunksAt + m (IILdvz;)Lduy; a method_22342 getChunk + m (IILdvz;Z)Lduy; a method_8402 getChunk + m (Lakq;)Ljo; a method_45448 holderLookup + m (Ldyy$a;II)I a method_8624 getHeight + m (Ldyy$a;Ljd;)Ljd; a method_8598 getHeightmapPos + m (Ljd;Ljd;)Z a method_22343 hasChunksAt + m (II)Z b method_8393 hasChunk + m (IIII)Z b method_33597 hasChunksAt + m (Lewx;)Ljava/util/stream/Stream; c method_29556 getBlockStatesIfLoaded + m (Ljd;I)I c method_22346 getMaxLocalRawBrightness + m (Lewx;)Z d method_22345 containsAnyLiquid + m (II)Z f method_33598 hasChunkAt + m (Ljd;)Ljm; t method_23753 getBiome + m (Ljd;)Z u method_22347 isEmptyBlock + m (Ljd;)Z v method_22348 canSeeSkyFromBelowWater + m (Ljd;)F w method_42309 getPathfindingCostFromLightLevels + m (Ljd;)F x method_22349 getLightLevelDependentMagicValue + m ()Z x_ method_8608 isClientSide + m (Ljd;)Lduy; y method_22350 getChunk + m (Ljd;)Z z method_22351 isWaterAt + m ()I z_ method_8615 getSeaLevel +c dda net/minecraft/class_1940 net/minecraft/world/level/LevelSettings + f Ljava/lang/String; a field_24105 levelName + f Ldct; b field_9257 gameType + f Z c field_9262 hardcore + f Lbqo; d field_24106 difficulty + f Z e field_9261 allowCommands + f Ldcs; f field_24107 gameRules + f Lddr; g field_25403 dataConfiguration + m ()Ljava/lang/String; a method_27339 levelName + m (Lbqo;)Ldda; a method_28381 withDifficulty + m (Lcom/mojang/serialization/Dynamic;Lddr;)Ldda; a method_28383 parse + m (Ldct;)Ldda; a method_28382 withGameType + m (Lddr;)Ldda; a method_29557 withDataConfiguration + m (Ljava/lang/Number;)Lbqo; a method_28384 method_28384 + m ()Ldct; b method_8574 gameType + m ()Z c method_8583 hardcore + m ()Lbqo; d method_27340 difficulty + m ()Z e method_8582 allowCommands + m ()Ldcs; f method_27341 gameRules + m ()Lddr; g method_29558 getDataConfiguration + m ()Ldda; h method_28385 copy + m (Ljava/lang/String;Ldct;ZLbqo;ZLdcs;Lddr;)V +c ddb net/minecraft/class_3747 net/minecraft/world/level/LevelSimulatedRW +c ddc net/minecraft/class_3746 net/minecraft/world/level/LevelSimulatedReader + m (Ldyy$a;Ljd;)Ljd; a method_8598 getHeightmapPos + m (Ljd;Ldqj;)Ljava/util/Optional; a method_35230 getBlockEntity + m (Ljd;Ljava/util/function/Predicate;)Z a method_16358 isStateAtPosition + m (Ljd;Ljava/util/function/Predicate;)Z b method_35237 isFluidAtPosition +c ddd net/minecraft/class_5424 net/minecraft/world/level/LevelTimeAccess + m ()J ak method_30271 dayTime + m ()F aq method_30272 getMoonBrightness + m ()I ar method_30273 getMoonPhase + m (F)F f method_30274 getTimeOfDay +c dde net/minecraft/class_1945 net/minecraft/world/level/LevelWriter + m (Ljd;Ldtc;I)Z a method_8652 setBlock + m (Ljd;Ldtc;II)Z a method_30092 setBlock + m (Ljd;Z)Z a method_8650 removeBlock + m (Ljd;ZLbsr;)Z a method_8651 destroyBlock + m (Ljd;ZLbsr;I)Z a method_30093 destroyBlock + m (Lbsr;)Z b method_8649 addFreshEntity + m (Ljd;Z)Z b method_22352 destroyBlock +c ddf net/minecraft/class_1944 net/minecraft/world/level/LightLayer + f Lddf; a field_9284 SKY + f Lddf; b field_9282 BLOCK + f [Lddf; c field_9285 $VALUES + m ()[Lddf; a method_36696 $values + m (Ljava/lang/String;I)V + m ()V +c ddg net/minecraft/class_6540 net/minecraft/world/level/LocalMobCapCalculator + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; a field_34455 playersNearChunk + f Ljava/util/Map; b field_34456 playerMobCounts + f Laqb; c field_34457 chunkMap + m (Laqv;)Lddg$a; a method_38083 method_38083 + m (Lbtq;Ldcd;)Z a method_38084 canSpawn + m (Ldcd;)Ljava/util/List; a method_38085 getPlayersNear + m (Ldcd;J)Ljava/util/List; a method_38086 method_38086 + m (Ldcd;Lbtq;)V a method_38087 addMob + m (Laqb;)V +c ddg$a net/minecraft/class_6540$class_6541 net/minecraft/world/level/LocalMobCapCalculator$MobCounts + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; a field_34458 counts + m (Lbtq;)V a method_38088 add + m (Lbtq;Ljava/lang/Integer;)Ljava/lang/Integer; a method_38089 method_38089 + m (Lbtq;)Z b method_38090 canSpawn + m ()V +c ddh net/minecraft/class_1948 net/minecraft/world/level/NaturalSpawner + f I a field_30972 SPAWN_DISTANCE_CHUNK + f I b field_30973 SPAWN_DISTANCE_BLOCK + f Lorg/slf4j/Logger; c field_9292 LOGGER + f I d field_30974 MIN_SPAWN_DISTANCE + f I e field_24392 MAGIC_NUMBER + f [Lbtq; f field_24393 SPAWNING_CATEGORIES + m (I)[Lbtq; a method_27814 method_27814 + m (ILjava/lang/Iterable;Lddh$b;Lddg;)Lddh$d; a method_27815 createState + m (Laqu;Lbsx;)Lbtp; a method_24931 getMobForSpawn + m (Laqu;Lbtp;D)Z a method_24932 isValidPositionForMob + m (Laqu;Lbtq;Lddq;Lduz;Ldei$c;Ljd$a;D)Z a method_24934 isValidSpawnPostitionForType + m (Laqu;Lddq;Lduz;Lbtq;Layw;Ljd;)Ljava/util/Optional; a method_8664 getRandomSpawnMobAt + m (Laqu;Lddq;Lduz;Lbtq;Ldei$c;Ljd;)Z a method_8659 canSpawnMobAt + m (Laqu;Lddq;Lduz;Lbtq;Ljd;Ljm;)Lbpf; a method_29950 mobsAt + m (Laqu;Lduy;Ljd$a;D)Z a method_24933 isRightDistanceToPlayerAndSpawnPoint + m (Laqu;Ldvi;Lddh$d;ZZZ)V a method_27821 spawnForChunk + m (Lbsx;Ljd;Lduy;)Z a method_35238 method_35238 + m (Lbtp;Lduy;)V a method_35239 method_35239 + m (Lbtq;)Z a method_27816 method_27816 + m (Lbtq;Laqu;Lduy;Ljd;Lddh$c;Lddh$a;)V a method_24930 spawnCategoryForPosition + m (Lbtq;Laqu;Ldvi;Lddh$c;Lddh$a;)V a method_8663 spawnCategoryForChunk + m (Lbtq;Laqu;Ljd;)V a method_35240 spawnCategoryForPosition + m (Ldcc;Ljd;Ldtc;Lepe;Lbsx;)Z a method_8662 isValidEmptySpawnBlock + m (Ldcw;Ldvi;)Ljd; a method_8657 getRandomPosWithin + m (Ldcz;Lbsx;II)Ljd; a method_8658 getTopNonCollidingPos + m (Lddl;Ljm;Ldcd;Layw;)V a method_8661 spawnMobsForChunkGeneration + m (Ljd;Laqu;Lbtq;Lddq;)Z a method_38091 isInNetherFortressBounds + m (Ljd;Lbsr;Lddk;Lddg;Lbtq;Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;Ldvi;)V a method_27819 method_27819 + m (Ljd;Lduy;)Lddw; a method_27822 getRoughBiome + m ()V + m ()V +c ddh$a net/minecraft/class_1948$class_5259 net/minecraft/world/level/NaturalSpawner$AfterSpawnCallback +c ddh$b net/minecraft/class_1948$class_5260 net/minecraft/world/level/NaturalSpawner$ChunkGetter +c ddh$c net/minecraft/class_1948$class_5261 net/minecraft/world/level/NaturalSpawner$SpawnPredicate +c ddh$d net/minecraft/class_1948$class_5262 net/minecraft/world/level/NaturalSpawner$SpawnState + f I a field_24394 spawnableChunkCount + f Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; b field_24395 mobCategoryCounts + f Lddk; c field_24396 spawnPotential + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; d field_24397 unmodifiableMobCategoryCounts + f Lddg; e field_34459 localMobCapCalculator + f Ljd; f field_24398 lastCheckedPos + f Lbsx; g field_24399 lastCheckedType + f D h field_24400 lastCharge + m ()I a method_27823 getSpawnableChunkCount + m (Lbsx;Ljd;Lduy;)Z a method_27824 canSpawn + m (Lbtp;Lduy;)V a method_27825 afterSpawn + m (Lbtq;Ldcd;)Z a method_27826 canSpawnForCategory + m ()Lit/unimi/dsi/fastutil/objects/Object2IntMap; b method_27830 getMobCategoryCounts + m (ILit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;Lddk;Lddg;)V +c ddi net/minecraft/class_4966 net/minecraft/world/level/NoiseColumn + f I a field_28105 minY + f [Ldtc; b field_23143 column + m (I[Ldtc;)V +c ddj net/minecraft/class_1950 net/minecraft/world/level/PathNavigationRegion + f I a field_9304 centerX + f I b field_9303 centerZ + f [[Lduy; c field_9305 chunks + f Z d field_9302 allEmpty + f Ldcw; e field_9306 level + f Ljava/util/function/Supplier; f field_36403 plains + m ()Lbnf; a method_37233 getProfiler + m (II)Lduy; a method_22353 getChunk + m (Ldcw;)Ljm; a method_40135 method_40135 + m (Ljd;)Lduy; d method_22354 getChunk + m (Ldcw;Ljd;Ljd;)V +c ddk net/minecraft/class_5263 net/minecraft/world/level/PotentialCalculator + f Ljava/util/List; a field_24401 charges + m (Ljd;D)V a method_27831 addCharge + m (Ljd;D)D b method_27832 getPotentialEnergyChange + m ()V +c ddk$a net/minecraft/class_5263$class_5264 net/minecraft/world/level/PotentialCalculator$PointCharge + f Ljd; a field_24402 pos + f D b field_24403 charge + m (Ljd;)D a method_27833 getPotentialChange + m (Ljd;D)V +c ddl net/minecraft/class_5425 net/minecraft/world/level/ServerLevelAccessor + m ()Laqu; E method_8410 getLevel + m (Lbsr;)V a_ method_30771 addFreshEntityWithPassengers +c ddm net/minecraft/class_8235 net/minecraft/world/level/SignalGetter + f [Lji; C field_43226 DIRECTIONS + m (Ljd;)Z C method_49803 hasNeighborSignal + m (Ljd;)I D method_49804 getBestNeighborSignal + m (Ljd;Lji;)I a method_49805 getDirectSignal + m (Ljd;Lji;Z)I a method_49806 getControlInputSignal + m (Ljd;Lji;)Z b method_49807 hasSignal + m (Ljd;Lji;)I c method_49808 getSignal + m (Ljd;)I e_ method_49809 getDirectSignalTo + m ()V +c ddn net/minecraft/class_9749 net/minecraft/world/level/SimpleExplosionDamageCalculator + f Z a field_51782 explodesBlocks + f Z b field_51783 damagesEntities + f Ljava/util/Optional; c field_51784 knockbackMultiplier + f Ljava/util/Optional; d field_51785 immuneBlocks + m (Lbsr;)Ljava/lang/Float; b method_60276 method_60276 + m (ZZLjava/util/Optional;Ljava/util/Optional;)V +c ddo net/minecraft/class_1952 net/minecraft/world/level/SpawnData + f Ljava/lang/String; a field_40893 ENTITY_TAG + f Lcom/mojang/serialization/Codec; b field_34460 CODEC + f Lcom/mojang/serialization/Codec; c field_34461 LIST_CODEC + f Lub; d comp_64 entityToSpawn + f Ljava/util/Optional; e comp_65 customSpawnRules + f Ljava/util/Optional; f comp_2648 equipment + m ()Lub; a method_38093 getEntityToSpawn + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38095 method_38095 + m (Lddo;)Ljava/util/Optional; a method_58679 method_58679 + m ()Ljava/util/Optional; b method_38097 getCustomSpawnRules + m (Lddo;)Ljava/util/Optional; b method_38094 method_38094 + m ()Ljava/util/Optional; c method_59717 getEquipment + m (Lddo;)Lub; c method_38098 method_38098 + m ()Lub; d comp_64 entityToSpawn + m ()Ljava/util/Optional; e comp_65 customSpawnRules + m ()Ljava/util/Optional; f comp_2648 equipment + m ()V + m (Lub;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c ddo$a net/minecraft/class_1952$class_6542 net/minecraft/world/level/SpawnData$CustomSpawnRules + f Lcom/mojang/serialization/Codec; a field_34462 CODEC + f Layg; b comp_66 blockLightLimit + f Layg; c comp_67 skyLightLimit + f Layg; d field_34463 LIGHT_RANGE + m ()Layg; a comp_66 blockLightLimit + m (Layg;)Lcom/mojang/serialization/DataResult; a method_38099 checkLightBoundaries + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38101 method_38101 + m (Lddo$a;)Layg; a method_38100 method_38100 + m (Ljava/lang/String;)Lcom/mojang/serialization/MapCodec; a method_51719 lightLimit + m (Ljd;Laqu;)Z a method_56563 isValidPosition + m ()Layg; b comp_67 skyLightLimit + m (Lddo$a;)Layg; b method_38102 method_38102 + m ()Ljava/lang/String; c method_49493 method_49493 + m (Layg;Layg;)V + m ()V +c ddp net/minecraft/class_8959 net/minecraft/world/level/Spawner + m (Lbsx;)Lxn; a method_55119 method_55119 + m (Lbsx;Layw;)V a method_46408 setEntityId + m (Lcuq;Ljava/lang/String;)Lwz; a method_55120 getSpawnEntityDisplayName + m (Lcuq;Ljava/util/List;Ljava/lang/String;)V a method_55121 appendHoverText + m (Lub;Ljava/lang/String;)Lakr; a method_55122 getEntityKey +c ddq net/minecraft/class_5138 net/minecraft/world/level/StructureManager + f Ldcx; a field_24404 level + f Ldzw; b field_24497 worldOptions + f Lejs; c field_36216 structureCheck + m ()Z a method_27834 shouldGenerateStructures + m (Larb;)Lddq; a method_29951 forWorldGenRegion + m (Lawu;Ljm;)Z a method_57559 method_57559 + m (Ldcd;Lejr;Leko;Z)Lejt; a method_39783 checkStructurePresence + m (Ldcd;Ljava/util/function/Predicate;)Ljava/util/List; a method_41035 startsForStructure + m (Lejr;Lit/unimi/dsi/fastutil/longs/LongSet;Ljava/util/function/Consumer;)V a method_41032 fillStartsForStructure + m (Lejz;)V a method_39784 addReference + m (Ljd;)Z a method_38852 hasAnyStructureAt + m (Ljd;Lawu;)Lejz; a method_57560 getStructureWithPieceAt + m (Ljd;Lejr;)Lejz; a method_28388 getStructureAt + m (Ljd;Lejz;)Z a method_41033 structureHasPieceAt + m (Ljd;Ljava/util/function/Predicate;)Lejz; a method_41413 getStructureWithPieceAt + m (Ljd;Ljq;)Lejz; a method_41034 getStructureWithPieceAt + m (Ljz;Ljava/util/function/Predicate;Lejr;)Z a method_41414 method_41414 + m (Lkf;Lejr;)Ljava/util/List; a method_38853 startsForStructure + m (Lkf;Lejr;JLdvu;)V a method_26973 addReferenceForStructure + m (Lkf;Lejr;Ldvu;)Lejz; a method_26975 getStartForStructure + m (Lkf;Lejr;Lejz;Ldvu;)V a method_26976 setStartForStructure + m ()Lka; b method_41036 registryAccess + m (Ljd;)Ljava/util/Map; b method_41037 getAllStructuresAt + m (Ljd;Lejr;)Lejz; b method_38854 getStructureWithPieceAt + m (Ldcx;Ldzw;Lejs;)V +c ddr net/minecraft/class_7712 net/minecraft/world/level/WorldDataConfiguration + f Ljava/lang/String; a field_40258 ENABLED_FEATURES_ID + f Lcom/mojang/serialization/Codec; b field_40259 CODEC + f Lddr; c field_40260 DEFAULT + f Ldck; d comp_1010 dataPacks + f Lcpl; e comp_1011 enabledFeatures + m ()Ldck; a comp_1010 dataPacks + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_45450 method_45450 + m (Lcpl;)Lddr; a method_45449 expandFeatures + m ()Lcpl; b comp_1011 enabledFeatures + m (Ldck;Lcpl;)V + m ()V +c dds net/minecraft/class_5281 net/minecraft/world/level/WorldGenLevel + m ()J C method_8412 getSeed + m (Ljava/util/function/Supplier;)V a method_36972 setCurrentlyGenerating + m (Ljd;)Z f_ method_37368 ensureCanWrite +c ddt net/minecraft/class_4967 net/minecraft/world/level/biome/AmbientAdditionsSettings + f Lcom/mojang/serialization/Codec; a field_24673 CODEC + f Ljm; b field_23144 soundEvent + f D c field_23145 tickChance + m ()Ljm; a method_26098 getSoundEvent + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28391 method_28391 + m (Lddt;)Ljava/lang/Double; a method_28390 method_28390 + m ()D b method_26099 getTickChance + m (Lddt;)Ljm; b method_28392 method_28392 + m (Ljm;D)V + m ()V +c ddu net/minecraft/class_4968 net/minecraft/world/level/biome/AmbientMoodSettings + f Lcom/mojang/serialization/Codec; a field_24674 CODEC + f Lddu; b field_23146 LEGACY_CAVE_SETTINGS + f Ljm; c field_23147 soundEvent + f I d field_23148 tickDelay + f I e field_23149 blockSearchExtent + f D f field_23150 soundPositionOffset + m ()Ljm; a method_26100 getSoundEvent + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28394 method_28394 + m (Lddu;)Ljava/lang/Double; a method_28393 method_28393 + m ()I b method_26101 getTickDelay + m (Lddu;)Ljava/lang/Integer; b method_28395 method_28395 + m ()I c method_26102 getBlockSearchExtent + m (Lddu;)Ljava/lang/Integer; c method_28396 method_28396 + m ()D d method_26103 getSoundPositionOffset + m (Lddu;)Ljm; d method_28397 method_28397 + m (Ljm;IID)V + m ()V +c ddv net/minecraft/class_4761 net/minecraft/world/level/biome/AmbientParticleSettings + f Lcom/mojang/serialization/Codec; a field_24675 CODEC + f Llk; b field_24676 options + f F c field_22035 probability + m ()Llk; a method_24369 getOptions + m (Layw;)Z a method_24370 canSpawn + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28399 method_28399 + m (Lddv;)Ljava/lang/Float; a method_28398 method_28398 + m (Lddv;)Llk; b method_28400 method_28400 + m (Llk;F)V + m ()V +c ddw net/minecraft/class_1959 net/minecraft/world/level/biome/Biome + f Lcom/mojang/serialization/Codec; a field_25819 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_26633 NETWORK_CODEC + f Lcom/mojang/serialization/Codec; c field_24677 CODEC + f Lcom/mojang/serialization/Codec; d field_26750 LIST_CODEC + f Leoj; e field_9324 BIOME_INFO_NOISE + f Leoj; f field_9335 TEMPERATURE_NOISE + f Leoj; g field_26392 FROZEN_TEMPERATURE_NOISE + f I h field_30978 TEMPERATURE_CACHE_SIZE + f Lddw$b; i field_26393 climateSettings + f Lddx; j field_26635 generationSettings + f Ldei; k field_26395 mobSettings + f Ldec; l field_22039 specialEffects + f Ljava/lang/ThreadLocal; m field_20335 temperatureCache + m ()I a method_8697 getSkyColor + m (DD)I a method_8711 getGrassColor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38104 method_38104 + m (Ldcz;Ljd;)Z a method_8705 shouldFreeze + m (Ldcz;Ljd;Z)Z a method_8685 shouldFreeze + m (Lddw$b;Ldec;)Lddw; a method_38103 method_38103 + m (Lddw;)Ldec; a method_30971 method_30971 + m (Ljd;)Lddw$c; a method_48162 getPrecipitationAt + m ()Ldei; b method_30966 getMobSettings + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_30776 method_30776 + m (Ldcz;Ljd;)Z b method_8696 shouldSnow + m (Lddw;)Lddw$b; b method_28409 method_28409 + m (Ljd;)Z b method_33599 coldEnoughToSnow + m ()Z c method_48163 hasPrecipitation + m (Lddw;)Ldei; c method_28417 method_28417 + m (Ljd;)Z c method_39927 warmEnoughToRain + m ()Lddx; d method_30970 getGenerationSettings + m (Lddw;)Lddx; d method_28418 method_28418 + m (Ljd;)Z d method_39928 shouldMeltFrozenOceanIcebergSlightly + m ()I e method_24376 getFogColor + m (Lddw;)Ldec; e method_28421 method_28421 + m (Ljd;)F e method_8707 getHeightAdjustedTemperature + m ()I f method_8698 getFoliageColor + m (Lddw;)Lddw$b; f method_28423 method_28423 + m (Ljd;)F f method_21740 getTemperature + m ()F g method_8712 getBaseTemperature + m ()Ldec; h method_24377 getSpecialEffects + m ()I i method_8687 getWaterColor + m ()I j method_8713 getWaterFogColor + m ()Ljava/util/Optional; k method_24378 getAmbientParticle + m ()Ljava/util/Optional; l method_24935 getAmbientLoop + m ()Ljava/util/Optional; m method_24936 getAmbientMood + m ()Ljava/util/Optional; n method_24937 getAmbientAdditions + m ()Ljava/util/Optional; o method_27343 getBackgroundMusic + m ()I p method_30773 getGrassColorFromTexture + m ()I q method_30774 getFoliageColorFromTexture + m ()Lit/unimi/dsi/fastutil/longs/Long2FloatLinkedOpenHashMap; r method_21741 method_21741 + m ()Lit/unimi/dsi/fastutil/longs/Long2FloatLinkedOpenHashMap; s method_21742 method_21742 + m (Lddw$b;Ldec;Lddx;Ldei;)V + m ()V +c ddw$1 net/minecraft/class_1959$1 net/minecraft/world/level/biome/Biome$1 + f Lddw; a field_20336 field_20336 + m (Lddw;IF)V +c ddw$a net/minecraft/class_1959$class_1960 net/minecraft/world/level/biome/Biome$BiomeBuilder + f Z a field_41767 hasPrecipitation + f Ljava/lang/Float; b field_9349 temperature + f Lddw$d; c field_26396 temperatureModifier + f Ljava/lang/Float; d field_9351 downfall + f Ldec; e field_22042 specialEffects + f Ldei; f field_26636 mobSpawnSettings + f Lddx; g field_26637 generationSettings + m ()Lddw; a method_30972 build + m (F)Lddw$a; a method_8747 temperature + m (Lddw$d;)Lddw$a; a method_30777 temperatureAdjustment + m (Lddx;)Lddw$a; a method_30973 generationSettings + m (Ldec;)Lddw$a; a method_24379 specialEffects + m (Ldei;)Lddw$a; a method_30974 mobSpawnSettings + m (Z)Lddw$a; a method_48164 hasPrecipitation + m (F)Lddw$a; b method_8727 downfall + m ()V +c ddw$b net/minecraft/class_1959$class_5482 net/minecraft/world/level/biome/Biome$ClimateSettings + f Lcom/mojang/serialization/MapCodec; a field_26398 CODEC + f Z b comp_1187 hasPrecipitation + f F c comp_844 temperature + f Lddw$d; d comp_845 temperatureModifier + f F e comp_846 downfall + m ()Z a comp_1187 hasPrecipitation + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30782 method_30782 + m (Lddw$b;)Ljava/lang/Float; a method_30786 method_30786 + m ()F b comp_844 temperature + m (Lddw$b;)Lddw$d; b method_30787 method_30787 + m ()Lddw$d; c comp_845 temperatureModifier + m (Lddw$b;)Ljava/lang/Float; c method_30788 method_30788 + m ()F d comp_846 downfall + m (Lddw$b;)Ljava/lang/Boolean; d method_30789 method_30789 + m (ZFLddw$d;F)V + m ()V +c ddw$c net/minecraft/class_1959$class_1963 net/minecraft/world/level/biome/Biome$Precipitation + f Lddw$c; a field_9384 NONE + f Lddw$c; b field_9382 RAIN + f Lddw$c; c field_9383 SNOW + f Lcom/mojang/serialization/Codec; d field_46251 CODEC + f Ljava/lang/String; e field_46252 name + f [Lddw$c; f field_9386 $VALUES + m ()[Lddw$c; a method_36699 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ddw$d net/minecraft/class_1959$class_5484 net/minecraft/world/level/biome/Biome$TemperatureModifier + f Lddw$d; a field_26407 NONE + f Lddw$d; b field_26408 FROZEN + f Lcom/mojang/serialization/Codec; c field_26409 CODEC + f Ljava/lang/String; d field_26410 name + f [Lddw$d; e field_26412 $VALUES + m ()Ljava/lang/String; a method_30800 getName + m (Ljd;F)F a method_30798 modifyTemperature + m ()[Lddw$d; b method_36700 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ddw$d$1 net/minecraft/class_1959$class_5484$1 net/minecraft/world/level/biome/Biome$TemperatureModifier$1 + m (Ljava/lang/String;ILjava/lang/String;)V +c ddw$d$2 net/minecraft/class_1959$class_5484$2 net/minecraft/world/level/biome/Biome$TemperatureModifier$2 + m (Ljava/lang/String;ILjava/lang/String;)V +c ddx net/minecraft/class_5485 net/minecraft/world/level/biome/BiomeGenerationSettings + f Lddx; a field_26639 EMPTY + f Lcom/mojang/serialization/MapCodec; b field_26413 CODEC + f Lorg/slf4j/Logger; c field_26638 LOGGER + f Ljava/util/Map; d field_26415 carvers + f Ljava/util/List; e field_26416 features + f Ljava/util/function/Supplier; f field_26640 flowerFeatures + f Ljava/util/function/Supplier; g field_34465 featureSet + m ()Ljava/util/List; a method_30982 getFlowerFeatures + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30802 method_30802 + m (Lddx;)Ljava/util/List; a method_30809 method_30809 + m (Ldyu$a;)Ljava/lang/Iterable; a method_30976 getCarvers + m (Lebq;)Z a method_40138 method_40138 + m (Leiv;)Z a method_38105 hasFeature + m (Ljava/util/List;)Ljava/util/Set; a method_40139 method_40139 + m ()Ljava/util/List; b method_30983 features + m (Lddx;)Ljava/util/Map; b method_30808 method_30808 + m (Ljava/util/List;)Ljava/util/List; b method_40140 method_40140 + m (Ljava/util/Map;Ljava/util/List;)V + m ()V +c ddx$a net/minecraft/class_5485$class_5495 net/minecraft/world/level/biome/BiomeGenerationSettings$Builder + f Ljn; a field_40894 placedFeatures + f Ljn; b field_40895 worldCarvers + m (Ldyu$a;Lakq;)Lddx$a; a method_30991 addCarver + m (Ldyu$b;Lakq;)Lddx$a; a method_30992 addFeature + m (Ljn;Ljn;)V +c ddx$b net/minecraft/class_5485$class_7868 net/minecraft/world/level/biome/BiomeGenerationSettings$PlainBuilder + f Ljava/util/Map; a field_40896 carvers + f Ljava/util/List; b field_40897 features + m ()Lddx; a method_46671 build + m (I)V a method_46672 addFeatureStepsUpTo + m (ILjm;)Lddx$b; a method_46673 addFeature + m (Ldyu$a;)Ljava/util/List; a method_46674 method_46674 + m (Ldyu$a;Ljm;)Lddx$b; a method_46675 addCarver + m (Ldyu$b;Ljm;)Lddx$b; a method_46676 addFeature + m (Ljava/util/Map$Entry;)Ljq; a method_46677 method_46677 + m ()V +c ddy net/minecraft/class_4543 net/minecraft/world/level/biome/BiomeManager + f I a field_28106 CHUNK_CENTER_QUART + f I b field_34466 ZOOM_BITS + f I c field_34467 ZOOM + f I d field_34468 ZOOM_MASK + f Lddy$a; e field_20640 noiseBiomeSource + f J f field_20641 biomeZoomSeed + m (DDD)Ljm; a method_24938 getNoiseBiomeAtPosition + m (III)Ljm; a method_24854 getNoiseBiomeAtQuart + m (J)J a method_27984 obfuscateSeed + m (JIIIDDD)D a method_38106 getFiddledDistance + m (Lddy$a;)Lddy; a method_38107 withDifferentSource + m (Ljd;)Ljm; a method_22393 getBiome + m (J)D b method_38108 getFiddle + m (Ljd;)Ljm; b method_27344 getNoiseBiomeAtPosition + m (Lddy$a;J)V + m ()V +c ddy$a net/minecraft/class_4543$class_4544 net/minecraft/world/level/biome/BiomeManager$NoiseBiomeSource + m (III)Ljm; getNoiseBiome method_16359 getNoiseBiome +c ddz net/minecraft/class_6780 net/minecraft/world/level/biome/BiomeResolver + m (IIILdef$f;)Ljm; getNoiseBiome method_38109 getNoiseBiome +c dea net/minecraft/class_1966 net/minecraft/world/level/biome/BiomeSource + f Lcom/mojang/serialization/Codec; a field_24713 CODEC + f Ljava/util/function/Supplier; b field_20643 possibleBiomes + m ()Lcom/mojang/serialization/MapCodec; a method_28442 codec + m (IIIIILjava/util/function/Predicate;Layw;ZLdef$f;)Lcom/mojang/datafixers/util/Pair; a method_24385 findBiomeHorizontal + m (IIIILdef$f;)Ljava/util/Set; a method_8763 getBiomesWithin + m (IIIILjava/util/function/Predicate;Layw;Ldef$f;)Lcom/mojang/datafixers/util/Pair; a method_8762 findBiomeHorizontal + m (Ljava/util/List;Ljd;Ldef$f;)V a method_38114 addDebugInfo + m (Ljd;IIILjava/util/function/Predicate;Ldef$f;Ldcz;)Lcom/mojang/datafixers/util/Pair; a method_42310 findClosestBiome3d + m ()Ljava/util/stream/Stream; b method_49494 collectPossibleBiomes + m ()Ljava/util/Set; c method_28443 possibleBiomes + m ()Ljava/util/Set; d method_49495 method_49495 + m ()V + m ()V +c deb net/minecraft/class_7509 net/minecraft/world/level/biome/BiomeSources + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_44207 bootstrap + m ()V +c dec net/minecraft/class_4763 net/minecraft/world/level/biome/BiomeSpecialEffects + f Lcom/mojang/serialization/Codec; a field_24714 CODEC + f I b field_22067 fogColor + f I c field_22068 waterColor + f I d field_22069 waterFogColor + f I e field_26418 skyColor + f Ljava/util/Optional; f field_26419 foliageColorOverride + f Ljava/util/Optional; g field_26420 grassColorOverride + f Ldec$b; h field_26421 grassColorModifier + f Ljava/util/Optional; i field_22070 ambientParticleSettings + f Ljava/util/Optional; j field_22491 ambientLoopSoundEvent + f Ljava/util/Optional; k field_22492 ambientMoodSettings + f Ljava/util/Optional; l field_22493 ambientAdditionsSettings + f Ljava/util/Optional; m field_24113 backgroundMusic + m ()I a method_24387 getFogColor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28445 method_28445 + m (Ldec;)Ljava/util/Optional; a method_28444 method_28444 + m ()I b method_24388 getWaterColor + m (Ldec;)Ljava/util/Optional; b method_28446 method_28446 + m ()I c method_24389 getWaterFogColor + m (Ldec;)Ljava/util/Optional; c method_28447 method_28447 + m ()I d method_30810 getSkyColor + m (Ldec;)Ljava/util/Optional; d method_28448 method_28448 + m ()Ljava/util/Optional; e method_30811 getFoliageColorOverride + m (Ldec;)Ljava/util/Optional; e method_28449 method_28449 + m ()Ljava/util/Optional; f method_30812 getGrassColorOverride + m (Ldec;)Ldec$b; f method_30813 method_30813 + m ()Ldec$b; g method_30814 getGrassColorModifier + m (Ldec;)Ljava/util/Optional; g method_30815 method_30815 + m ()Ljava/util/Optional; h method_24390 getAmbientParticleSettings + m (Ldec;)Ljava/util/Optional; h method_30816 method_30816 + m ()Ljava/util/Optional; i method_24939 getAmbientLoopSoundEvent + m (Ldec;)Ljava/lang/Integer; i method_30817 method_30817 + m ()Ljava/util/Optional; j method_24940 getAmbientMoodSettings + m (Ldec;)Ljava/lang/Integer; j method_28450 method_28450 + m ()Ljava/util/Optional; k method_24941 getAmbientAdditionsSettings + m (Ldec;)Ljava/lang/Integer; k method_28451 method_28451 + m ()Ljava/util/Optional; l method_27345 getBackgroundMusic + m (Ldec;)Ljava/lang/Integer; l method_28452 method_28452 + m (IIIILjava/util/Optional;Ljava/util/Optional;Ldec$b;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dec$a net/minecraft/class_4763$class_4764 net/minecraft/world/level/biome/BiomeSpecialEffects$Builder + f Ljava/util/OptionalInt; a field_22071 fogColor + f Ljava/util/OptionalInt; b field_22072 waterColor + f Ljava/util/OptionalInt; c field_22073 waterFogColor + f Ljava/util/OptionalInt; d field_26422 skyColor + f Ljava/util/Optional; e field_26423 foliageColorOverride + f Ljava/util/Optional; f field_26424 grassColorOverride + f Ldec$b; g field_26425 grassColorModifier + f Ljava/util/Optional; h field_22074 ambientParticle + f Ljava/util/Optional; i field_22494 ambientLoopSoundEvent + f Ljava/util/Optional; j field_22495 ambientMoodSettings + f Ljava/util/Optional; k field_22496 ambientAdditionsSettings + f Ljava/util/Optional; l field_24114 backgroundMusic + m ()Ldec; a method_24391 build + m (I)Ldec$a; a method_24392 fogColor + m (Lavm;)Ldec$a; a method_27346 backgroundMusic + m (Lddt;)Ldec$a; a method_24944 ambientAdditionsSound + m (Lddu;)Ldec$a; a method_24943 ambientMoodSound + m (Lddv;)Ldec$a; a method_24393 ambientParticle + m (Ldec$b;)Ldec$a; a method_30818 grassColorModifier + m (Ljm;)Ldec$a; a method_24942 ambientLoopSound + m ()Ljava/lang/IllegalStateException; b method_30819 method_30819 + m (I)Ldec$a; b method_24395 waterColor + m ()Ljava/lang/IllegalStateException; c method_24394 method_24394 + m (I)Ldec$a; c method_24397 waterFogColor + m ()Ljava/lang/IllegalStateException; d method_24396 method_24396 + m (I)Ldec$a; d method_30820 skyColor + m ()Ljava/lang/IllegalStateException; e method_24398 method_24398 + m (I)Ldec$a; e method_30821 foliageColorOverride + m (I)Ldec$a; f method_30822 grassColorOverride + m ()V +c dec$b net/minecraft/class_4763$class_5486 net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier + f Ldec$b; a field_26426 NONE + f Ldec$b; b field_26427 DARK_FOREST + f Ldec$b; c field_26428 SWAMP + f Lcom/mojang/serialization/Codec; d field_26429 CODEC + f Ljava/lang/String; e field_26430 name + f [Ldec$b; f field_26432 $VALUES + m ()Ljava/lang/String; a method_30826 getName + m (DDI)I a method_30823 modifyColor + m ()[Ldec$b; b method_36701 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dec$b$1 net/minecraft/class_4763$class_5486$1 net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier$1 + m (Ljava/lang/String;ILjava/lang/String;)V +c dec$b$2 net/minecraft/class_4763$class_5486$2 net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier$2 + m (Ljava/lang/String;ILjava/lang/String;)V +c dec$b$3 net/minecraft/class_4763$class_5486$3 net/minecraft/world/level/biome/BiomeSpecialEffects$GrassColorModifier$3 + m (Ljava/lang/String;ILjava/lang/String;)V +c ded net/minecraft/class_1972 net/minecraft/world/level/biome/Biomes + f Lakq; A field_9415 BADLANDS + f Lakq; B field_9443 ERODED_BADLANDS + f Lakq; C field_35110 WOODED_BADLANDS + f Lakq; D field_34470 MEADOW + f Lakq; E field_42720 CHERRY_GROVE + f Lakq; F field_34471 GROVE + f Lakq; G field_34472 SNOWY_SLOPES + f Lakq; H field_35115 FROZEN_PEAKS + f Lakq; I field_34474 JAGGED_PEAKS + f Lakq; J field_34475 STONY_PEAKS + f Lakq; K field_9438 RIVER + f Lakq; L field_9463 FROZEN_RIVER + f Lakq; M field_9434 BEACH + f Lakq; N field_9478 SNOWY_BEACH + f Lakq; O field_9419 STONY_SHORE + f Lakq; P field_9408 WARM_OCEAN + f Lakq; Q field_9441 LUKEWARM_OCEAN + f Lakq; R field_9439 DEEP_LUKEWARM_OCEAN + f Lakq; S field_9423 OCEAN + f Lakq; T field_9446 DEEP_OCEAN + f Lakq; U field_9467 COLD_OCEAN + f Lakq; V field_9470 DEEP_COLD_OCEAN + f Lakq; W field_9435 FROZEN_OCEAN + f Lakq; X field_9418 DEEP_FROZEN_OCEAN + f Lakq; Y field_9462 MUSHROOM_FIELDS + f Lakq; Z field_28107 DRIPSTONE_CAVES + f Lakq; a field_9473 THE_VOID + f Lakq; aa field_29218 LUSH_CAVES + f Lakq; ab field_37543 DEEP_DARK + f Lakq; ac field_9461 NETHER_WASTES + f Lakq; ad field_22075 WARPED_FOREST + f Lakq; ae field_22077 CRIMSON_FOREST + f Lakq; af field_22076 SOUL_SAND_VALLEY + f Lakq; ag field_23859 BASALT_DELTAS + f Lakq; ah field_9411 THE_END + f Lakq; ai field_9442 END_HIGHLANDS + f Lakq; aj field_9447 END_MIDLANDS + f Lakq; ak field_9457 SMALL_END_ISLANDS + f Lakq; al field_9465 END_BARRENS + f Lakq; b field_9451 PLAINS + f Lakq; c field_9455 SUNFLOWER_PLAINS + f Lakq; d field_35117 SNOWY_PLAINS + f Lakq; e field_9453 ICE_SPIKES + f Lakq; f field_9424 DESERT + f Lakq; g field_9471 SWAMP + f Lakq; h field_38748 MANGROVE_SWAMP + f Lakq; i field_9409 FOREST + f Lakq; j field_9414 FLOWER_FOREST + f Lakq; k field_9412 BIRCH_FOREST + f Lakq; l field_9475 DARK_FOREST + f Lakq; m field_35112 OLD_GROWTH_BIRCH_FOREST + f Lakq; n field_35119 OLD_GROWTH_PINE_TAIGA + f Lakq; o field_35113 OLD_GROWTH_SPRUCE_TAIGA + f Lakq; p field_9420 TAIGA + f Lakq; q field_9454 SNOWY_TAIGA + f Lakq; r field_9449 SAVANNA + f Lakq; s field_9430 SAVANNA_PLATEAU + f Lakq; t field_35116 WINDSWEPT_HILLS + f Lakq; u field_35111 WINDSWEPT_GRAVELLY_HILLS + f Lakq; v field_35120 WINDSWEPT_FOREST + f Lakq; w field_35114 WINDSWEPT_SAVANNA + f Lakq; x field_9417 JUNGLE + f Lakq; y field_35118 SPARSE_JUNGLE + f Lakq; z field_9440 BAMBOO_JUNGLE + m (Ljava/lang/String;)Lakq; a method_8775 register + m ()V + m ()V +c dee net/minecraft/class_1973 net/minecraft/world/level/biome/CheckerboardColumnBiomeSource + f Lcom/mojang/serialization/MapCodec; b field_24715 CODEC + f Ljq; c field_9481 allowedBiomes + f I d field_9480 bitShift + f I e field_24716 size + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28454 method_28454 + m (Ldee;)Ljava/lang/Integer; a method_28453 method_28453 + m (Ldee;)Ljq; b method_28455 method_28455 + m (Ljq;I)V + m ()V +c def net/minecraft/class_6544 net/minecraft/world/level/biome/Climate + f I a field_34476 PARAMETER_COUNT + f Z b field_34477 DEBUG_SLOW_BIOME_SEARCH + f F c field_35359 QUANTIZATION_FACTOR + m ()Ldef$f; a method_40443 empty + m (F)J a method_38665 quantizeCoord + m (FFFFFF)Ldef$h; a method_38116 target + m (FFFFFFF)Ldef$d; a method_38117 parameters + m (J)F a method_38666 unquantizeCoord + m (Ldef$b;Ldef$b;Ldef$b;Ldef$b;Ldef$b;Ldef$b;F)Ldef$d; a method_38118 parameters + m (Ljava/util/List;Ldef$f;)Ljd; a method_39164 findSpawnPosition + m ()V +c def$a net/minecraft/class_6544$class_6545 net/minecraft/world/level/biome/Climate$DistanceMetric +c def$b net/minecraft/class_6544$class_6546 net/minecraft/world/level/biome/Climate$Parameter + f Lcom/mojang/serialization/Codec; a field_34478 CODEC + f J b comp_103 min + f J c comp_104 max + m ()J a comp_103 min + m (F)Ldef$b; a method_38120 point + m (FF)Ldef$b; a method_38121 span + m (J)J a method_38126 distance + m (Ldef$b;)J a method_38122 distance + m (Ldef$b;Ldef$b;)Ldef$b; a method_38123 span + m (Ljava/lang/Float;Ljava/lang/Float;)Lcom/mojang/serialization/DataResult; a method_38124 method_38124 + m ()J b comp_104 max + m (Ldef$b;)Ldef$b; b method_38127 span + m (Ljava/lang/Float;Ljava/lang/Float;)Ljava/lang/String; b method_49496 method_49496 + m (Ldef$b;)Ljava/lang/Float; c method_38667 method_38667 + m (Ldef$b;)Ljava/lang/Float; d method_38668 method_38668 + m (JJ)V + m ()V +c def$c net/minecraft/class_6544$class_6547 net/minecraft/world/level/biome/Climate$ParameterList + f Ljava/util/List; a field_34481 values + f Ldef$e; b field_34482 index + m ()Ljava/util/List; a method_38128 values + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/Codec; a method_49497 codec + m (Lcom/mojang/serialization/MapCodec;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49498 method_49498 + m (Ldef$h;)Ljava/lang/Object; a method_39529 findValue + m (Ldef$h;Ldef$a;)Ljava/lang/Object; a method_39528 findValueIndex + m (Ldef$h;)Ljava/lang/Object; b method_39530 findValueBruteForce + m (Ldef$h;)Ljava/lang/Object; c method_39527 findValueIndex + m (Ljava/util/List;)V +c def$d net/minecraft/class_6544$class_4762 net/minecraft/world/level/biome/Climate$ParameterPoint + f Lcom/mojang/serialization/Codec; a field_24679 CODEC + f Ldef$b; b comp_105 temperature + f Ldef$b; c comp_106 humidity + f Ldef$b; d comp_107 continentalness + f Ldef$b; e comp_108 erosion + f Ldef$b; f comp_109 depth + f Ldef$b; g comp_110 weirdness + f J h comp_111 offset + m ()Ljava/util/List; a method_38145 parameterSpace + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28425 method_28425 + m (Ldef$d;)Ljava/lang/Long; a method_38134 method_38134 + m (Ldef$h;)J a method_24381 fitness + m ()Ldef$b; b comp_105 temperature + m (Ldef$d;)Ldef$b; b method_38136 method_38136 + m ()Ldef$b; c comp_106 humidity + m (Ldef$d;)Ldef$b; c method_38138 method_38138 + m ()Ldef$b; d comp_107 continentalness + m (Ldef$d;)Ldef$b; d method_38140 method_38140 + m ()Ldef$b; e comp_108 erosion + m (Ldef$d;)Ldef$b; e method_38142 method_38142 + m ()Ldef$b; f comp_109 depth + m (Ldef$d;)Ldef$b; f method_28429 method_28429 + m ()Ldef$b; g comp_110 weirdness + m (Ldef$d;)Ldef$b; g method_28430 method_28430 + m ()J h comp_111 offset + m (Ldef$b;Ldef$b;Ldef$b;Ldef$b;Ldef$b;Ldef$b;J)V + m ()V +c def$e net/minecraft/class_6544$class_6548 net/minecraft/world/level/biome/Climate$RTree + f I a field_34486 CHILDREN_PER_NODE + f Ldef$e$b; b field_34487 root + f Ljava/lang/ThreadLocal; c field_34488 lastResult + m (ILdef$e$b;)J a method_38146 method_38146 + m (ILdef$e$c;)Ldef$e$b; a method_38147 method_38147 + m (ILjava/util/List;)Ldef$e$b; a method_38148 build + m (IZ)Ljava/util/Comparator; a method_38149 comparator + m (IZLdef$e$b;)J a method_38150 method_38150 + m (Lcom/mojang/datafixers/util/Pair;)Ldef$e$a; a method_38152 method_38152 + m (Ldef$h;Ldef$a;)Ljava/lang/Object; a method_38151 search + m (Ljava/util/List;)Ldef$e; a method_38153 create + m (Ljava/util/List;IIZ)V a method_38154 sort + m ([Ldef$b;)J a method_38155 cost + m (Ljava/util/List;)Ljava/util/List; b method_38156 bucketize + m (Ljava/util/List;)Ljava/util/List; c method_38157 buildParameterSpace + m (Ldef$e$b;)V +c def$e$a net/minecraft/class_6544$class_6548$class_6549 net/minecraft/world/level/biome/Climate$RTree$Leaf + f Ljava/lang/Object; b field_34489 value + m (Ldef$d;Ljava/lang/Object;)V +c def$e$b net/minecraft/class_6544$class_6548$class_6550 net/minecraft/world/level/biome/Climate$RTree$Node + f [Ldef$b; a field_34490 parameterSpace + m ([J)J a method_38159 distance + m ([JLdef$e$a;Ldef$a;)Ldef$e$a; a method_38158 search + m (Ljava/util/List;)V +c def$e$c net/minecraft/class_6544$class_6548$class_6551 net/minecraft/world/level/biome/Climate$RTree$SubTree + f [Ldef$e$b; b field_34491 children + m (Ljava/util/List;)V + m (Ljava/util/List;Ljava/util/List;)V +c def$f net/minecraft/class_6544$class_6552 net/minecraft/world/level/biome/Climate$Sampler + f Ldyr; a comp_364 temperature + f Ldyr; b comp_365 humidity + f Ldyr; c comp_366 continentalness + f Ldyr; d comp_367 erosion + f Ldyr; e comp_368 depth + f Ldyr; f comp_369 weirdness + f Ljava/util/List; g comp_370 spawnTarget + m ()Ljd; a method_39165 findSpawnPosition + m (III)Ldef$h; a method_40444 sample + m ()Ldyr; b comp_364 temperature + m ()Ldyr; c comp_365 humidity + m ()Ldyr; d comp_366 continentalness + m ()Ldyr; e comp_367 erosion + m ()Ldyr; f comp_368 depth + m ()Ldyr; g comp_369 weirdness + m ()Ljava/util/List; h comp_370 spawnTarget + m (Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ljava/util/List;)V +c def$g net/minecraft/class_6544$class_6729 net/minecraft/world/level/biome/Climate$SpawnFinder + f Ldef$g$a; a field_35360 result + m (Ljava/util/List;Ldef$f;FF)V a method_39166 radialSearch + m (Ljava/util/List;Ldef$f;II)Ldef$g$a; a method_39167 getSpawnPositionAndFitness + m (Ljava/util/List;Ldef$f;)V +c def$g$a net/minecraft/class_6544$class_6729$class_6730 net/minecraft/world/level/biome/Climate$SpawnFinder$Result + f Ljd; a comp_223 location + f J b comp_224 fitness + m ()Ljd; a comp_223 location + m ()J b comp_224 fitness + m (Ljd;J)V +c def$h net/minecraft/class_6544$class_6553 net/minecraft/world/level/biome/Climate$TargetPoint + f J a comp_112 temperature + f J b comp_113 humidity + f J c comp_114 continentalness + f J d comp_115 erosion + f J e comp_116 depth + f J f comp_117 weirdness + m ()[J a method_38166 toParameterArray + m ()J b comp_112 temperature + m ()J c comp_113 humidity + m ()J d comp_114 continentalness + m ()J e comp_115 erosion + m ()J f comp_116 depth + m ()J g comp_117 weirdness + m (JJJJJJ)V +c deg net/minecraft/class_7510 net/minecraft/world/level/biome/FeatureSorter + m (ILdeg$a;)Z a method_44208 method_44208 + m (Ljava/util/Comparator;Ldeg$a;)Ljava/util/Set; a method_44209 method_44209 + m (Ljava/util/List;Ljava/util/function/Function;Z)Ljava/util/List; a method_44210 buildFeaturesPerStep + m (Lorg/apache/commons/lang3/mutable/MutableInt;Ljava/lang/Object;)I a method_44211 method_44211 + m ()V +c deg$a net/minecraft/class_7510$class_6543 net/minecraft/world/level/biome/FeatureSorter$1FeatureData + f I a comp_234 featureIndex + f I b comp_68 step + f Leiv; c comp_69 feature + m ()I a comp_234 featureIndex + m ()I b comp_68 step + m ()Leiv; c comp_69 feature + m (IILeiv;)V +c deg$b net/minecraft/class_7510$class_6827 net/minecraft/world/level/biome/FeatureSorter$StepFeatureData + f Ljava/util/List; a comp_303 features + f Ljava/util/function/ToIntFunction; b comp_304 indexMapping + m ()Ljava/util/List; a comp_303 features + m ()Ljava/util/function/ToIntFunction; b comp_304 indexMapping + m (Ljava/util/List;)V + m (Ljava/util/List;Ljava/util/function/ToIntFunction;)V +c deh net/minecraft/class_1992 net/minecraft/world/level/biome/FixedBiomeSource + f Lcom/mojang/serialization/MapCodec; b field_24717 CODEC + f Ljm; c field_9486 biome + m (Ldeh;)Ljm; a method_28456 method_28456 + m (Ljm;)V + m ()V +c dei net/minecraft/class_5483 net/minecraft/world/level/biome/MobSpawnSettings + f Lbpf; a field_30982 EMPTY_MOB_LIST + f Ldei; b field_26646 EMPTY + f Lcom/mojang/serialization/MapCodec; c field_26403 CODEC + f Lorg/slf4j/Logger; d field_26645 LOGGER + f F e field_30983 DEFAULT_CREATURE_SPAWN_PROBABILITY + f F f field_26404 creatureGenerationProbability + f Ljava/util/Map; g field_26405 spawners + f Ljava/util/Map; h field_26406 mobSpawnCosts + m ()F a method_31002 getCreatureProbability + m (Lbsx;)Ldei$b; a method_31003 getMobSpawnCost + m (Lbtq;)Lbpf; a method_31004 getMobs + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30791 method_30791 + m (Ldei;)Ljava/util/Map; a method_30794 method_30794 + m (Ldei;)Ljava/util/Map; b method_30795 method_30795 + m (Ldei;)Ljava/lang/Float; c method_30796 method_30796 + m (FLjava/util/Map;Ljava/util/Map;)V + m ()V +c dei$a net/minecraft/class_5483$class_5496 net/minecraft/world/level/biome/MobSpawnSettings$Builder + f Ljava/util/Map; a field_26647 spawners + f Ljava/util/Map; b field_26648 mobSpawnCosts + f F c field_26649 creatureGenerationProbability + m ()Ldei; a method_31007 build + m (F)Ldei$a; a method_31008 creatureGenerationProbability + m (Lbsx;DD)Ldei$a; a method_31009 addMobCharge + m (Lbtq;)Ljava/util/List; a method_31010 method_31010 + m (Lbtq;Ldei$c;)Ldei$a; a method_31011 addSpawn + m (Ljava/util/Map$Entry;)Lbpf; a method_31012 method_31012 + m (Lbtq;)Lbtq; b method_31013 method_31013 + m ()V +c dei$b net/minecraft/class_5483$class_5265 net/minecraft/world/level/biome/MobSpawnSettings$MobSpawnCost + f Lcom/mojang/serialization/Codec; a field_25820 CODEC + f D b comp_1307 energyBudget + f D c comp_1308 charge + m ()D a comp_1307 energyBudget + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30359 method_30359 + m (Ldei$b;)Ljava/lang/Double; a method_31014 method_31014 + m ()D b comp_1308 charge + m (Ldei$b;)Ljava/lang/Double; b method_31015 method_31015 + m (DD)V + m ()V +c dei$c net/minecraft/class_5483$class_1964 net/minecraft/world/level/biome/MobSpawnSettings$SpawnerData + f Lcom/mojang/serialization/Codec; a field_24681 CODEC + f Lbsx; b field_9389 type + f I c field_9388 minCount + f I d field_9387 maxCount + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28433 method_28433 + m (Ldei$c;)Lcom/mojang/serialization/DataResult; a method_49499 method_49499 + m ()Ljava/lang/String; b method_49500 method_49500 + m (Ldei$c;)Ljava/lang/Integer; b method_28434 method_28434 + m (Ldei$c;)Ljava/lang/Integer; c method_28435 method_28435 + m (Ldei$c;)Lbsx; d method_28436 method_28436 + m (Lbsx;III)V + m (Lbsx;Lbpc;II)V + m ()V +c dej net/minecraft/class_4766 net/minecraft/world/level/biome/MultiNoiseBiomeSource + f Lcom/mojang/serialization/MapCodec; b field_24718 DIRECT_CODEC + f Lcom/mojang/serialization/MapCodec; c field_24719 CODEC + f Lcom/mojang/serialization/MapCodec; d field_42984 ENTRY_CODEC + f Lcom/mojang/serialization/MapCodec; e field_42985 PRESET_CODEC + f Lcom/mojang/datafixers/util/Either; f field_34498 parameters + m (Lakq;)Z a method_38168 stable + m (Ldef$c;)Ldej; a method_49501 createFromList + m (Ldef$h;)Ljm; a method_38167 getNoiseBiome + m (Ldej;)Lcom/mojang/datafixers/util/Either; a method_49502 method_49502 + m (Ljm;)Ldej; a method_49503 createFromPreset + m (Ldef$c;)Ldef$c; b method_49504 method_49504 + m (Ljm;)Ldef$c; b method_49505 method_49505 + m ()Ldef$c; d method_49506 parameters + m (Lcom/mojang/datafixers/util/Either;)V + m ()V +c dek net/minecraft/class_8197 net/minecraft/world/level/biome/MultiNoiseBiomeSourceParameterList + f Lcom/mojang/serialization/Codec; a field_42986 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_42987 CODEC + f Ldek$a; c field_42988 preset + f Ldef$c; d field_42989 parameters + m ()Ldef$c; a method_49507 parameters + m (Lakq;)Lakq; a method_49508 method_49508 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49511 method_49511 + m (Ldek$a;)Ldef$c; a method_49509 method_49509 + m (Ldek;)Ldek$a; a method_49510 method_49510 + m ()Ljava/util/Map; b method_49512 knownPresets + m (Ldek$a;)Ldek$a; b method_49513 method_49513 + m (Ldek$a;Ljn;)V + m ()V +c dek$a net/minecraft/class_8197$class_5305 net/minecraft/world/level/biome/MultiNoiseBiomeSourceParameterList$Preset + f Ldek$a; a field_24723 NETHER + f Ldek$a; b field_34499 OVERWORLD + f Lcom/mojang/serialization/Codec; c field_42990 CODEC + f Lakr; d comp_1309 id + f Ldek$a$a; e comp_1310 provider + f Ljava/util/Map; f field_24724 BY_NAME + m ()Ljava/util/stream/Stream; a method_49514 usedBiomes + m (Lakq;)Lakq; a method_49515 method_49515 + m (Lakr;)Lcom/mojang/serialization/DataResult; a method_49516 method_49516 + m (Lcom/google/common/collect/ImmutableList$Builder;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Pair;)V a method_49192 method_49192 + m (Ldek$a;)Lcom/mojang/serialization/DataResult; a method_49517 method_49517 + m (Ljava/util/function/Function;)Ldef$c; a method_49193 generateOverworldBiomes + m ()Lakr; b comp_1309 id + m (Lakr;)Lcom/mojang/serialization/DataResult; b method_49518 method_49518 + m (Ldek$a;)Ldek$a; b method_49519 method_49519 + m ()Ldek$a$a; c comp_1310 provider + m (Lakr;)Ljava/lang/String; c method_49520 method_49520 + m (Lakr;Ldek$a$a;)V + m ()V +c dek$a$1 net/minecraft/class_8197$class_5305$1 net/minecraft/world/level/biome/MultiNoiseBiomeSourceParameterList$Preset$1 + m ()V +c dek$a$2 net/minecraft/class_8197$class_5305$2 net/minecraft/world/level/biome/MultiNoiseBiomeSourceParameterList$Preset$2 + m ()V +c dek$a$a net/minecraft/class_8197$class_5305$class_8165 net/minecraft/world/level/biome/MultiNoiseBiomeSourceParameterList$Preset$SourceProvider +c del net/minecraft/class_8198 net/minecraft/world/level/biome/MultiNoiseBiomeSourceParameterLists + f Lakq; a field_42991 NETHER + f Lakq; b field_42992 OVERWORLD + m (Ljava/lang/String;)Lakq; a method_49521 register + m (Lqq;)V a method_49522 bootstrap + m ()V + m ()V +c dem net/minecraft/class_6554 net/minecraft/world/level/biome/OverworldBiomeBuilder + f Ldef$b; A field_34516 midInlandContinentalness + f Ldef$b; B field_34517 farInlandContinentalness + f [[Lakq; C field_34518 OCEANS + f [[Lakq; D field_34519 MIDDLE_BIOMES + f [[Lakq; E field_34520 MIDDLE_BIOMES_VARIANT + f [[Lakq; F field_34521 PLATEAU_BIOMES + f [[Lakq; G field_34522 PLATEAU_BIOMES_VARIANT + f [[Lakq; H field_36339 SHATTERED_BIOMES + f F a field_35041 HIGH_START + f F b field_34502 PEAK_START + f F c field_35042 NEAR_INLAND_START + f F d field_35043 MID_INLAND_START + f F e field_35044 FAR_INLAND_START + f F f field_35045 EROSION_INDEX_1_START + f F g field_35046 EROSION_INDEX_2_START + f F h field_34500 VALLEY_SIZE + f F i field_35047 LOW_START + f F j field_35048 HIGH_END + f F k field_34501 PEAK_SIZE + f F l field_34503 PEAK_END + f F m field_39134 EROSION_DEEP_DARK_DRYNESS_THRESHOLD + f F n field_39135 DEPTH_DEEP_DARK_DRYNESS_THRESHOLD + f Ldef$b; o field_34504 FULL_RANGE + f [Ldef$b; p field_34505 temperatures + f [Ldef$b; q field_34506 humidities + f [Ldef$b; r field_34507 erosions + f Ldef$b; s field_34508 FROZEN_RANGE + f Ldef$b; t field_34509 UNFROZEN_RANGE + f Ldef$b; u field_34510 mushroomFieldsContinentalness + f Ldef$b; v field_34511 deepOceanContinentalness + f Ldef$b; w field_34512 oceanContinentalness + f Ldef$b; x field_34513 coastContinentalness + f Ldef$b; y field_34514 inlandContinentalness + f Ldef$b; z field_34515 nearInlandContinentalness + m ()Ljava/util/List; a method_39168 spawnTarget + m (D)Ljava/lang/String; a method_38179 getDebugStringForPeaksAndValleys + m (D[Ldef$b;)Ljava/lang/String; a method_38180 getDebugStringForNoiseValue + m (II)Lakq; a method_38181 pickBeachBiome + m (IILdef$b;)Lakq; a method_38182 pickMiddleBiome + m (IILdef$b;Lakq;)Lakq; a method_40009 maybePickWindsweptSavannaBiome + m (ILdef$b;)Lakq; a method_38184 pickBadlandsBiome + m (Ldyr;Ldyr;Ldyr$b;)Z a method_43718 isDeepDarkRegion + m (Ljava/util/function/Consumer;)V a method_38185 addBiomes + m (Ljava/util/function/Consumer;Ldef$b;)V a method_38186 addPeaks + m (Ljava/util/function/Consumer;Ldef$b;Ldef$b;Ldef$b;Ldef$b;Ldef$b;FLakq;)V a method_38187 addSurfaceBiome + m ()[Ldef$b; b method_40010 getTemperatureThresholds + m (D)Ljava/lang/String; b method_38188 getDebugStringForContinentalness + m (IILdef$b;)Lakq; b method_38189 pickMiddleBiomeOrBadlandsIfHot + m (Ljava/util/function/Consumer;)V b method_46678 addDebugBiomes + m (Ljava/util/function/Consumer;Ldef$b;)V b method_38191 addHighSlice + m (Ljava/util/function/Consumer;Ldef$b;Ldef$b;Ldef$b;Ldef$b;Ldef$b;FLakq;)V b method_38192 addUndergroundBiome + m ()[Ldef$b; c method_40011 getHumidityThresholds + m (D)Ljava/lang/String; c method_38193 getDebugStringForErosion + m (IILdef$b;)Lakq; c method_38194 pickMiddleBiomeOrBadlandsIfHotOrSlopeIfCold + m (Ljava/util/function/Consumer;)V c method_38190 addOffCoastBiomes + m (Ljava/util/function/Consumer;Ldef$b;)V c method_38196 addMidSlice + m (Ljava/util/function/Consumer;Ldef$b;Ldef$b;Ldef$b;Ldef$b;Ldef$b;FLakq;)V c method_41419 addBottomBiome + m ()[Ldef$b; d method_40012 getErosionThresholds + m (D)Ljava/lang/String; d method_38197 getDebugStringForTemperature + m (IILdef$b;)Lakq; d method_38198 pickShatteredCoastBiome + m (Ljava/util/function/Consumer;)V d method_38195 addInlandBiomes + m (Ljava/util/function/Consumer;Ldef$b;)V d method_38200 addLowSlice + m ()[Ldef$b; e method_40013 getContinentalnessThresholds + m (D)Ljava/lang/String; e method_38201 getDebugStringForHumidity + m (IILdef$b;)Lakq; e method_38202 pickPlateauBiome + m (Ljava/util/function/Consumer;)V e method_38199 addUndergroundBiomes + m (Ljava/util/function/Consumer;Ldef$b;)V e method_38203 addValleys + m ()[Ldef$b; f method_40014 getPeaksAndValleysThresholds + m (IILdef$b;)Lakq; f method_38204 pickPeakBiome + m ()[Ldef$b; g method_40015 getWeirdnessThresholds + m (IILdef$b;)Lakq; g method_38205 pickSlopeBiome + m (IILdef$b;)Lakq; h method_38183 pickShatteredBiome + m ()V +c den net/minecraft/class_2169 net/minecraft/world/level/biome/TheEndBiomeSource + f Lcom/mojang/serialization/MapCodec; b field_24730 CODEC + f Ljm; c field_26700 end + f Ljm; d field_26701 highlands + f Ljm; e field_26702 midlands + f Ljm; f field_26703 islands + f Ljm; g field_26704 barrens + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_46679 method_46679 + m (Ljn;)Lden; a method_46680 create + m (Ljm;Ljm;Ljm;Ljm;Ljm;)V + m ()V +c deo net/minecraft/class_6086 net/minecraft/world/level/biome/package-info +c dep net/minecraft/class_2185 net/minecraft/world/level/block/AbstractBannerBlock + f Lcti; a field_9855 color + m ()Lcti; b method_9303 getColor + m (Lcti;Ldtb$d;)V +c deq net/minecraft/class_5540 net/minecraft/world/level/block/AbstractCandleBlock + f I a field_30987 LIGHT_PER_CANDLE + f Ldtt; b field_27083 LIT + m (Lcmx;Ldtc;Ldcx;Ljd;)V a method_31614 extinguish + m (Ldcw;Lexc;Layw;)V a method_31610 addParticlesAndSound + m (Ldcw;Ljd;Layw;Lexc;)V a method_31611 method_31611 + m (Ldcx;Ldtc;Ljd;Z)V a method_31612 setLit + m (Ldcx;Ljd;Lexc;)V a method_35244 method_35244 + m (Ldtc;)Ljava/lang/Iterable; b method_31613 getParticleOffsets + m (Ldtc;)Z c method_35245 isLit + m (Ldtc;)Z d method_35246 canBeLit + m (Ldtb$d;)V + m ()V +c der net/minecraft/class_2275 net/minecraft/world/level/block/AbstractCauldronBlock + f I a field_30988 FLOOR_LEVEL + f Lexv; b field_10746 SHAPE + f Lkj$a; c field_27084 interactions + f I d field_30989 SIDE_THICKNESS + f I e field_30990 LEG_WIDTH + f I f field_30991 LEG_HEIGHT + f I g field_30992 LEG_DEPTH + f Lexv; h field_10747 INSIDE + m (Ldtc;Ldcw;Ljd;Lepd;)V a method_32764 receiveStalactiteDrip + m (Ldtc;Ljd;Lbsr;)Z a method_31616 isEntityInsideContent + m (Lepd;)Z a method_32765 canReceiveStalactiteDrip + m (Ldtc;)D b method_31615 getContentHeight + m (Ldtc;)Z d method_32766 isFull + m (Ldtb$d;Lkj$a;)V + m ()V +c des net/minecraft/class_4739 net/minecraft/world/level/block/AbstractChestBlock + f Ljava/util/function/Supplier; a field_21796 blockEntityType + m (Ldtc;Ldcw;Ljd;Z)Ldif$c; a method_24167 combine + m (Ldtb$d;Ljava/util/function/Supplier;)V +c det net/minecraft/class_2363 net/minecraft/world/level/block/AbstractFurnaceBlock + f Ldtw; a field_11104 FACING + f Ldtt; b field_11105 LIT + m (Ldcw;Ldqj;Ldqj;)Ldqi; a method_31617 createFurnaceTicker + m (Ldcw;Ljd;Lcmx;)V a method_17025 openContainer + m (Ldtb$d;)V + m ()V +c deu net/minecraft/class_2190 net/minecraft/world/level/block/AbstractSkullBlock + f Ldtt; a field_46110 POWERED + f Ldnb$a; b field_9867 type + m ()Ldnb$a; b method_9327 getType + m (Ldnb$a;Ldtb$d;)V + m ()V +c dev net/minecraft/class_2189 net/minecraft/world/level/block/AirBlock + f Lcom/mojang/serialization/MapCodec; a field_46253 CODEC + m (Ldtb$d;)V + m ()V +c dew net/minecraft/class_5541 net/minecraft/world/level/block/AmethystBlock + f Lcom/mojang/serialization/MapCodec; a field_46254 CODEC + m (Ldtb$d;)V + m ()V +c dex net/minecraft/class_5542 net/minecraft/world/level/block/AmethystClusterBlock + f Lcom/mojang/serialization/MapCodec; b field_46255 CODEC + f Ldtt; c field_27086 WATERLOGGED + f Ldtw; d field_27087 FACING + f Lexv; e field_27088 northAabb + f Lexv; f field_27089 southAabb + f Lexv; g field_27090 eastAabb + f Lexv; h field_27091 westAabb + f Lexv; i field_27092 upAabb + f Lexv; j field_27093 downAabb + f F k field_46256 height + f F l field_46257 aabbOffset + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53970 method_53970 + m (Ldex;)Ljava/lang/Float; a method_53971 method_53971 + m (Ldex;)Ljava/lang/Float; b method_53972 method_53972 + m (FFLdtb$d;)V + m ()V +c dex$1 net/minecraft/class_5542$1 net/minecraft/world/level/block/AmethystClusterBlock$1 + f [I a field_27094 $SwitchMap$net$minecraft$core$Direction + m ()V +c dey net/minecraft/class_2199 net/minecraft/world/level/block/AnvilBlock + f Lcom/mojang/serialization/MapCodec; a field_46258 CODEC + f Ldtw; b field_9883 FACING + f Lexv; c field_9882 BASE + f Lexv; d field_9885 X_LEG1 + f Lexv; e field_9888 X_LEG2 + f Lexv; f field_9884 X_TOP + f Lexv; g field_9891 Z_LEG1 + f Lexv; h field_9889 Z_LEG2 + f Lexv; i field_9886 Z_TOP + f Lexv; j field_9887 X_AXIS_AABB + f Lexv; k field_9892 Z_AXIS_AABB + f Lwz; l field_17349 CONTAINER_TITLE + f F m field_30993 FALL_DAMAGE_PER_DISTANCE + f I n field_30994 FALL_DAMAGE_MAX + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_17453 method_17453 + m (Ldtc;)Ldtc; e method_9346 damage + m (Ldtb$d;)V + m ()V +c dez net/minecraft/class_2195 net/minecraft/world/level/block/AttachedStemBlock + f Lcom/mojang/serialization/MapCodec; a field_46259 CODEC + f Ldtw; b field_9873 FACING + f F c field_30995 AABB_OFFSET + f Ljava/util/Map; d field_9874 AABBS + f Lakq; e field_9875 fruit + f Lakq; f field_46260 stem + f Lakq; g field_27095 seed + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53973 method_53973 + m (Ldez;)Lakq; a method_53974 method_53974 + m (Ldez;)Lakq; b method_53975 method_53975 + m (Ldez;)Lakq; c method_53976 method_53976 + m (Lakq;Lakq;Lakq;Ldtb$d;)V + m ()V +c dfa net/minecraft/class_5800 net/minecraft/world/level/block/AzaleaBlock + f Lcom/mojang/serialization/MapCodec; a field_46261 CODEC + f Lexv; b field_30996 SHAPE + m (Ldtb$d;)V + m ()V +c dfb net/minecraft/class_2202 net/minecraft/world/level/block/BambooSaplingBlock + f Lcom/mojang/serialization/MapCodec; a field_46262 CODEC + f F b field_31005 SAPLING_AABB_OFFSET + f Lexv; c field_9897 SAPLING_SHAPE + m (Ldcw;Ljd;)V a method_9351 growBamboo + m (Ldtb$d;)V + m ()V +c dfc net/minecraft/class_2211 net/minecraft/world/level/block/BambooStalkBlock + f Lcom/mojang/serialization/MapCodec; a field_46263 CODEC + f F b field_30997 SMALL_LEAVES_AABB_OFFSET + f F c field_30998 LARGE_LEAVES_AABB_OFFSET + f F d field_30999 COLLISION_AABB_OFFSET + f Lexv; e field_9912 SMALL_SHAPE + f Lexv; f field_9915 LARGE_SHAPE + f Lexv; g field_9913 COLLISION_SHAPE + f Lduc; h field_9914 AGE + f Ldua; i field_9917 LEAVES + f Lduc; j field_9916 STAGE + f I k field_31000 MAX_HEIGHT + f I l field_31001 STAGE_GROWING + f I m field_31002 STAGE_DONE_GROWING + f I n field_31003 AGE_THIN_BAMBOO + f I o field_31004 AGE_THICK_BAMBOO + m (Ldcc;Ljd;)I a method_9387 getHeightAboveUpToMax + m (Ldtc;Ldcw;Ljd;Layw;I)V a method_9385 growBamboo + m (Ldcc;Ljd;)I b method_9386 getHeightBelowUpToMax + m (Ldtb$d;)V + m ()V +c dfd net/minecraft/class_2215 net/minecraft/world/level/block/BannerBlock + f Lcom/mojang/serialization/MapCodec; a field_46264 CODEC + f Lduc; b field_9924 ROTATION + f Ljava/util/Map; c field_9925 BY_COLOR + f Lexv; d field_9923 SHAPE + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53977 method_53977 + m (Lcti;)Ldfy; a method_9398 byColor + m (Lcti;Ldtb$d;)V + m ()V +c dfe net/minecraft/class_3708 net/minecraft/world/level/block/BarrelBlock + f Lcom/mojang/serialization/MapCodec; a field_46265 CODEC + f Ldtw; b field_16320 FACING + f Ldtt; c field_18006 OPEN + m (Ldtb$d;)V + m ()V +c dff net/minecraft/class_2213 net/minecraft/world/level/block/BarrierBlock + f Lcom/mojang/serialization/MapCodec; a field_46266 CODEC + f Ldtt; b field_45144 WATERLOGGED + m (Ldtb$d;)V + m ()V +c dfg net/minecraft/class_2221 net/minecraft/world/level/block/BaseCoralFanBlock + f Lcom/mojang/serialization/MapCodec; a field_46267 CODEC + f Lexv; b field_9932 AABB + m (Ldtb$d;)V + m ()V +c dfh net/minecraft/class_2217 net/minecraft/world/level/block/BaseCoralPlantBlock + f Lcom/mojang/serialization/MapCodec; a field_46268 CODEC + f F b field_31006 AABB_OFFSET + f Lexv; c field_9928 SHAPE + m (Ldtb$d;)V + m ()V +c dfi net/minecraft/class_2230 net/minecraft/world/level/block/BaseCoralPlantTypeBlock + f Lexv; a field_9939 AABB + f Ldtt; d field_9940 WATERLOGGED + m (Ldtc;Ldcx;Ljd;)V a method_9430 tryScheduleDieTick + m (Ldtc;Ldcc;Ljd;)Z e method_9431 scanForWater + m (Ldtb$d;)V + m ()V +c dfj net/minecraft/class_2222 net/minecraft/world/level/block/BaseCoralWallFanBlock + f Lcom/mojang/serialization/MapCodec; b field_46269 CODEC + f Ldtw; c field_9933 FACING + f Ljava/util/Map; e field_9934 SHAPES + m (Ldtb$d;)V + m ()V +c dfk net/minecraft/class_2237 net/minecraft/world/level/block/BaseEntityBlock + m (Ldqj;Ldqj;Ldqi;)Ldqi; a method_31618 createTickerHelper + m (Ldtb$d;)V +c dfl net/minecraft/class_4770 net/minecraft/world/level/block/BaseFireBlock + f F a field_31007 AABB_OFFSET + f Lexv; b field_22498 DOWN_AABB + f I c field_31008 SECONDS_ON_FIRE + f F d field_22088 fireDamage + m (Ldcc;Ljd;)Ldtc; a method_24416 getState + m (Ldcw;)Z a method_30366 inPortalDimension + m (Ldcw;Ljd;Lji;)Z a method_30032 canBePlacedAt + m (Ldcw;Ljd;Lji;)Z b method_30033 isPortal + m (Ldtc;)Z f method_10195 canBurn + m (Ldtb$d;F)V + m ()V +c dfm net/minecraft/class_2231 net/minecraft/world/level/block/BasePressurePlateBlock + f Lexv; a field_9942 PRESSED_AABB + f Lexv; b field_9943 AABB + f Lewx; c field_9941 TOUCH_AABB + f Ldtr; d field_42726 type + m (Lbsr;)Z a method_52209 method_52209 + m (Lbsr;Ldcw;Ljd;Ldtc;I)V a method_9433 checkPressed + m (Ldcw;Lewx;Ljava/lang/Class;)I a method_52210 getEntityCount + m (Ldcw;Ljd;)V a method_9437 updateNeighbours + m (Ldtc;I)Ldtc; a method_9432 setSignalForState + m ()I b method_9563 getPressedTime + m (Ldcw;Ljd;)I b method_9434 getSignalStrength + m (Ldtc;)I g method_9435 getSignalForState + m (Ldtb$d;Ldtr;)V + m ()V +c dfn net/minecraft/class_2241 net/minecraft/world/level/block/BaseRailBlock + f Lexv; a field_9958 FLAT_AABB + f Lexv; b field_9960 HALF_BLOCK_AABB + f Ldtt; c field_27096 WATERLOGGED + f Z d field_9959 isStraight + m (Ldcw;Ljd;)Z a method_9479 isRail + m (Ldcw;Ljd;Ldtc;Z)Ldtc; a method_9475 updateDir + m (Ldtc;Ldcw;Ljd;Ldfy;)V a method_9477 updateState + m (Ldtc;Ldcw;Ljd;Z)Ldtc; a method_24417 updateState + m (Ljd;Ldcw;Ldug;)Z a method_27935 shouldBeRemoved + m ()Z b method_9478 isStraight + m ()Lduf; c method_9474 getShapeProperty + m (Ldtc;)Z g method_9476 isRail + m (ZLdtb$d;)V + m ()V +c dfn$1 net/minecraft/class_2241$1 net/minecraft/world/level/block/BaseRailBlock$1 + f [I a field_24465 $SwitchMap$net$minecraft$world$level$block$state$properties$RailShape + m ()V +c dfo net/minecraft/class_8810 net/minecraft/world/level/block/BaseTorchBlock + f I a field_46270 AABB_STANDING_OFFSET + f Lexv; b field_46271 AABB + m (Ldtb$d;)V + m ()V +c dfp net/minecraft/class_4275 net/minecraft/world/level/block/BeaconBeamBlock + m ()Lcti; b method_10622 getColor +c dfq net/minecraft/class_2238 net/minecraft/world/level/block/BeaconBlock + f Lcom/mojang/serialization/MapCodec; a field_46272 CODEC + m (Ldtb$d;)V + m ()V +c dfr net/minecraft/class_2244 net/minecraft/world/level/block/BedBlock + f Lcom/mojang/serialization/MapCodec; a field_46273 CODEC + f Ldua; b field_9967 PART + f Ldtt; c field_9968 OCCUPIED + f I d field_31009 HEIGHT + f Lexv; e field_16788 BASE + f Lexv; f field_16782 LEG_NORTH_WEST + f Lexv; g field_16784 LEG_SOUTH_WEST + f Lexv; h field_16786 LEG_NORTH_EAST + f Lexv; i field_16789 LEG_SOUTH_EAST + f Lexv; j field_16787 NORTH_SHAPE + f Lexv; k field_16785 SOUTH_SHAPE + f Lexv; l field_16783 WEST_SHAPE + f Lexv; m field_16790 EAST_SHAPE + f I n field_31010 LEG_WIDTH + f Lcti; o field_9966 color + m (Lbsr;)V a method_21838 bounceUp + m (Lbsx;Ldcg;Ljd;Lji;F)Ljava/util/Optional; a method_9484 findStandUpPosition + m (Lbsx;Ldcg;Ljd;Lji;Lji;)Ljava/util/Optional; a method_30835 findBunkBedStandUpPosition + m (Lbsx;Ldcg;Ljd;[[IZ)Ljava/util/Optional; a method_30836 findStandUpPositionAtOffset + m (Lcmx;Lcmx$a;)V a method_55767 method_55767 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53978 method_53978 + m (Ldcc;Ljd;)Lji; a method_18476 getBedOrientation + m (Ldcw;)Z a method_27352 canSetSpawn + m (Ldcw;Ljd;)Z a method_22357 kickVillagerOutOfBed + m (Ldtp;Lji;)Lji; a method_9488 getNeighbourDirection + m (Lji;)[[I a method_30837 bedAboveStandUpOffsets + m (Lji;Lji;)[[I a method_30838 bedStandUpOffsets + m ()Lcti; b method_9487 getColor + m (Ldcc;Ljd;)Z b method_30839 isBunkBed + m (Lji;Lji;)[[I b method_30840 bedSurroundStandUpOffsets + m (Ldtc;)Lji; g method_24163 getConnectedDirection + m (Ldtc;)Ldif$a; h method_24164 getBlockType + m (Lcti;Ldtb$d;)V + m ()V +c dfr$1 net/minecraft/class_2244$1 net/minecraft/world/level/block/BedBlock$1 + f [I a field_16791 $SwitchMap$net$minecraft$core$Direction + m ()V +c dfs net/minecraft/class_4481 net/minecraft/world/level/block/BeehiveBlock + f Lcom/mojang/serialization/MapCodec; a field_46274 CODEC + f Ldtw; b field_20419 FACING + f Lduc; c field_20420 HONEY_LEVEL + f I d field_31011 MAX_HONEY_LEVELS + f I e field_31012 SHEARED_HONEYCOMB_COUNT + m (Ldcw;DDDDD)V a method_21840 spawnFluidParticle + m (Ldcw;Ldtc;Ljd;)V a method_23754 resetHoneyLevel + m (Ldcw;Ldtc;Ljd;Lcmx;Ldqe$b;)V a method_21841 releaseBeesAndResetHoneyLevel + m (Ldcw;Ljd;)V a method_21842 dropHoneycomb + m (Ldcw;Ljd;Ldtc;)V a method_21843 trySpawnDripParticles + m (Ldcw;Ljd;Lexv;D)V a method_21844 spawnParticle + m (Ldcw;Ljd;)V b method_23893 angerNearbyBees + m (Ldcw;Ljd;)Z c method_23894 hiveContainsBees + m (Ldtb$d;)V + m ()V +c dft net/minecraft/class_2242 net/minecraft/world/level/block/BeetrootBlock + f Lcom/mojang/serialization/MapCodec; a field_46275 CODEC + f I b field_31013 MAX_AGE + f Lduc; c field_9962 AGE + f [Lexv; g field_9961 SHAPE_BY_AGE + m (Ldtb$d;)V + m ()V +c dfu net/minecraft/class_3709 net/minecraft/world/level/block/BellBlock + f Lexv; F field_17093 TO_SOUTH + f Lexv; G field_17094 CEILING_SHAPE + f Lcom/mojang/serialization/MapCodec; a field_46276 CODEC + f Ldtw; b field_16324 FACING + f Ldua; c field_16326 ATTACHMENT + f Ldtt; d field_20648 POWERED + f I e field_31014 EVENT_BELL_RING + f Lexv; f field_16325 NORTH_SOUTH_FLOOR_SHAPE + f Lexv; g field_16322 EAST_WEST_FLOOR_SHAPE + f Lexv; h field_17087 BELL_TOP_SHAPE + f Lexv; i field_17088 BELL_BOTTOM_SHAPE + f Lexv; j field_17089 BELL_SHAPE + f Lexv; k field_17090 NORTH_SOUTH_BETWEEN + f Lexv; l field_16321 EAST_WEST_BETWEEN + f Lexv; m field_17091 TO_WEST + f Lexv; n field_17092 TO_EAST + f Lexv; o field_16323 TO_NORTH + m (Lbsr;Ldcw;Ljd;Lji;)Z a method_17026 attemptToRing + m (Ldcw;Ldtc;Lewy;Lcmx;Z)Z a method_19285 onHit + m (Ldcw;Ljd;Lji;)Z a method_33600 attemptToRing + m (Ldtc;Lji;D)Z a method_17028 isProperHit + m (Ldtc;)Lexv; m method_16116 getVoxelShape + m (Ldtc;)Lji; n method_16115 getConnectedDirection + m (Ldtb$d;)V + m ()V +c dfu$1 net/minecraft/class_3709$1 net/minecraft/world/level/block/BellBlock$1 + f [I a field_16327 $SwitchMap$net$minecraft$world$level$block$state$properties$BellAttachType + m ()V +c dfv net/minecraft/class_5801 net/minecraft/world/level/block/BigDripleafBlock + f Lcom/mojang/serialization/MapCodec; a field_46277 CODEC + f Ldtt; b field_28660 WATERLOGGED + f Ldua; c field_28661 TILT + f I d field_31015 NO_TICK + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; e field_28662 DELAY_UNTIL_NEXT_TILT_STATE + f I f field_31016 MAX_GEN_HEIGHT + f I g field_31017 STEM_WIDTH + f I h field_31018 ENTITY_DETECTION_MIN_Y + f I i field_31019 LOWEST_LEAF_TOP + f Ljava/util/Map; j field_28664 LEAF_SHAPES + f Lexv; k field_31020 STEM_SLICER + f Ljava/util/Map; l field_28665 STEM_SHAPES + f Ljava/util/Map; m field_28666 shapesCache + m (Ldcw;Ljd;Lavo;)V a method_33601 playTiltSound + m (Ldcx;Layw;Ljd;Lji;)V a method_33603 placeWithRandomHeight + m (Ldcx;Ljd;Lepe;Lji;)Z a method_33726 place + m (Ldcy;Ljd;Ldtc;)Z a method_33725 canPlaceAt + m (Ldtc;Ldcw;Ljd;Ldun;)V a method_33604 setTilt + m (Ldtc;Ldcw;Ljd;Ldun;Lavo;)V a method_33605 setTiltAndScheduleTick + m (Lit/unimi/dsi/fastutil/objects/Object2IntArrayMap;)V a method_33609 method_33609 + m (Ljd;Lbsr;)Z a method_33606 canEntityTilt + m (Ldtc;Ldcw;Ljd;)V d method_33610 resetTilt + m (Ldtc;)Lexv; m method_33611 calculateShape + m (Ldtc;)Z n method_33727 canReplace + m (Ldtb$d;)V + m ()V +c dfw net/minecraft/class_5802 net/minecraft/world/level/block/BigDripleafStemBlock + f Lcom/mojang/serialization/MapCodec; a field_46278 CODEC + f Lexv; b field_28668 NORTH_SHAPE + f Lexv; c field_28669 SOUTH_SHAPE + f Lexv; d field_28670 EAST_SHAPE + f Lexv; e field_28671 WEST_SHAPE + f Ldtt; f field_28667 WATERLOGGED + f I g field_31021 STEM_WIDTH + m (Ldcx;Ljd;Lepe;Lji;)Z a method_33728 place + m (Ldtb$d;)V + m ()V +c dfw$1 net/minecraft/class_5802$1 net/minecraft/world/level/block/BigDripleafStemBlock$1 + f [I a field_28672 $SwitchMap$net$minecraft$core$Direction + m ()V +c dfx net/minecraft/class_3710 net/minecraft/world/level/block/BlastFurnaceBlock + f Lcom/mojang/serialization/MapCodec; c field_46279 CODEC + m (Ldtb$d;)V + m ()V +c dfy net/minecraft/class_2248 net/minecraft/world/level/block/Block + f I A field_31022 UPDATE_ALL_IMMEDIATE + f F B field_31023 INDESTRUCTIBLE + f F C field_31024 INSTANT + f I D field_31025 UPDATE_LIMIT + f Ldtd; E field_10647 stateDefinition + f Lorg/slf4j/Logger; a field_10638 LOGGER + f Ljm$c; b field_36404 builtInRegistryHolder + f Lcom/google/common/cache/LoadingCache; c field_19312 SHAPE_FULL_BLOCK_CACHE + f Ldtc; d field_10646 defaultBlockState + f Ljava/lang/String; e field_10642 descriptionId + f Lcul; f field_17562 item + f I g field_31026 CACHE_SIZE + f Ljava/lang/ThreadLocal; h field_10649 OCCLUSION_CACHE + f Lcom/mojang/serialization/MapCodec; p field_46280 CODEC + f Ljs; q field_10651 BLOCK_STATE_REGISTRY + f I r field_31027 UPDATE_NEIGHBORS + f I s field_31028 UPDATE_CLIENTS + f I t field_31029 UPDATE_INVISIBLE + f I u field_31030 UPDATE_IMMEDIATE + f I v field_31031 UPDATE_KNOWN_SHAPE + f I w field_31032 UPDATE_SUPPRESS_DROPS + f I x field_31033 UPDATE_MOVE_BY_PISTON + f I y field_31035 UPDATE_NONE + f I z field_31036 UPDATE_ALL + m (DDDDDD)Lexv; a method_9541 box + m (I)Ldtc; a method_9531 stateById + m (Laqu;Ljd;I)V a method_9583 popExperience + m (Laqu;Ljd;Lcuq;Lbpw;)V a method_41420 tryDropExperience + m (Lcul;)Ldfy; a method_9503 byItem + m (Lcuq;Lcul$b;Ljava/util/List;Lcwm;)V a method_9568 appendHoverText + m (Lcyd;)Ldtc; a method_9605 getStateForPlacement + m (Ldcc;Lbsr;)V a method_9502 updateEntityAfterFallOn + m (Ldco;)Z a method_9533 dropFromExplosion + m (Ldcw;DDDLcuq;)Lcjh; a method_36990 method_36990 + m (Ldcw;DDDLcuq;DDD)Lcjh; a method_36991 method_36991 + m (Ldcw;Lcmx;Ljd;Ldtc;)V a method_33614 spawnDestroyParticles + m (Ldcw;Lcmx;Ljd;Ldtc;Ldqh;Lcuq;)V a method_9556 playerDestroy + m (Ldcw;Ldtc;Ljd;Lbsr;F)V a method_9554 fallOn + m (Ldcw;Ljava/util/function/Supplier;Lcuq;)V a method_36993 popResource + m (Ldcw;Ljd;Lcuq;)V a method_9577 popResource + m (Ldcw;Ljd;Ldco;)V a method_9586 wasExploded + m (Ldcw;Ljd;Ldtc;Lbsr;)V a method_9591 stepOn + m (Ldcw;Ljd;Ldtc;Lbtn;Lcuq;)V a method_9567 setPlacedBy + m (Ldcw;Ljd;Ldtc;Lcmx;)Ldtc; a method_9576 playerWillDestroy + m (Ldcw;Ljd;Lji;Lcuq;)V a method_36992 popResourceFromFace + m (Ldcx;Ljd;Lcuq;)V a method_9596 method_9596 + m (Ldcx;Ljd;Ldtc;)V a method_9585 destroy + m (Ldcz;Ljd;Ldtc;)Lcuq; a method_9574 getCloneItemStack + m (Ldcz;Ljd;Lji;)Z a method_20044 canSupportCenter + m (Ldtc;)Z a method_9538 isPossibleToRespawnInThis + m (Ldtc;Laqu;Ljd;Ldqh;)Ljava/util/List; a method_9562 getDrops + m (Ldtc;Laqu;Ljd;Ldqh;Lbsr;Lcuq;)Ljava/util/List; a method_9609 getDrops + m (Ldtc;Ldcc;Ljd;Lji;Ljd;)Z a method_9607 shouldRenderFace + m (Ldtc;Ldcw;Ljd;Layw;)V a method_9496 animateTick + m (Ldtc;Ldcw;Ljd;Lddw$c;)V a method_9504 handlePrecipitation + m (Ldtc;Ldcw;Ljd;Ldqh;Lbsr;Lcuq;)V a method_9511 dropResources + m (Ldtc;Ldcx;Ljd;Ldqh;)V a method_9610 dropResources + m (Ldtc;Ldtc;Ldcx;Ljd;)Ldtc; a method_9582 pushEntitiesUp + m (Ldtc;Ldtc;Ldcx;Ljd;I)V a method_30094 updateOrDestroy + m (Ldtc;Ldtc;Ldcx;Ljd;II)V a method_9611 updateOrDestroy + m (Ldtc;Ldtc;Lduf;)Ldtc; a method_34724 copyProperty + m (Ldtd$a;)V a method_9515 createBlockStateDefinition + m (Lexv;)Z a method_9614 isShapeFullBlock + m (Lexv;Lji;)Z a method_9501 isFaceFull + m (Ljava/util/function/Function;)Lcom/google/common/collect/ImmutableMap; a method_33615 getShapeForEachState + m (Ldcw;Ljd;Lcuq;)V b method_9544 method_9544 + m (Ldtc;Ldcx;Ljd;)Ldtc; b method_9510 updateFromNeighbourShapes + m (Ldcc;Ljd;)Z c method_16361 canSupportRigidBlock + m (Ldcw;Ljd;Lcuq;)V c method_9587 method_9587 + m (Ldtc;Ldcw;Ljd;)V c method_9497 dropResources + m ()F e method_9520 getExplosionResistance + m ()Lxn; f method_9518 getName + m ()Ljava/lang/String; g method_9539 getDescriptionId + m ()F h method_9499 getFriction + m (Ldtc;)I i method_9507 getId + m ()F j method_23349 getSpeedFactor + m (Ldtc;)Z j method_9581 isExceptionForConnection + m ()F k method_23350 getJumpFactor + m (Ldtc;)V k method_9590 registerDefaultState + m ()Ldtd; l method_9595 getStateDefinition + m (Ldtc;)Ldtc; l method_34725 withPropertiesOf + m ()Ldtc; o method_9564 defaultBlockState + m ()Z p method_9543 hasDynamicShape + m ()Ljm$c; s method_40142 builtInRegistryHolder + m ()Lit/unimi/dsi/fastutil/objects/Object2ByteLinkedOpenHashMap; y method_9508 method_9508 + m (Ldtb$d;)V + m ()V +c dfy$1 net/minecraft/class_2248$1 net/minecraft/world/level/block/Block$1 + m (Lexv;)Ljava/lang/Boolean; a method_20516 load + m ()V +c dfy$2 net/minecraft/class_2248$2 net/minecraft/world/level/block/Block$2 + m (IF)V +c dfy$a net/minecraft/class_2248$class_2249 net/minecraft/world/level/block/Block$BlockStatePairKey + f Ldtc; a field_10652 first + f Ldtc; b field_10654 second + f Lji; c field_10653 direction + m (Ldtc;Ldtc;Lji;)V +c dfz net/minecraft/class_8811 net/minecraft/world/level/block/BlockTypes + f Lcom/mojang/serialization/MapCodec; a field_46281 CODEC + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_53979 bootstrap + m ()V + m ()V +c dga net/minecraft/class_2246 net/minecraft/world/level/block/Blocks + f Ldfy; A field_10276 JUNGLE_SAPLING + f Ldfy; B field_10385 ACACIA_SAPLING + f Ldfy; C field_42727 CHERRY_SAPLING + f Ldfy; D field_10160 DARK_OAK_SAPLING + f Ldfy; E field_37544 MANGROVE_PROPAGULE + f Ldfy; F field_9987 BEDROCK + f Ldfy; G field_10382 WATER + f Ldfy; H field_10164 LAVA + f Ldfy; I field_10102 SAND + f Ldfy; J field_42728 SUSPICIOUS_SAND + f Ldfy; K field_10534 RED_SAND + f Ldfy; L field_10255 GRAVEL + f Ldfy; M field_43227 SUSPICIOUS_GRAVEL + f Ldfy; N field_10571 GOLD_ORE + f Ldfy; O field_29026 DEEPSLATE_GOLD_ORE + f Ldfy; P field_10212 IRON_ORE + f Ldfy; Q field_29027 DEEPSLATE_IRON_ORE + f Ldfy; R field_10418 COAL_ORE + f Ldfy; S field_29219 DEEPSLATE_COAL_ORE + f Ldfy; T field_23077 NETHER_GOLD_ORE + f Ldfy; U field_10431 OAK_LOG + f Ldfy; V field_10037 SPRUCE_LOG + f Ldfy; W field_10511 BIRCH_LOG + f Ldfy; X field_10306 JUNGLE_LOG + f Ldfy; Y field_10533 ACACIA_LOG + f Ldfy; Z field_42729 CHERRY_LOG + f Ldfy; aA field_10103 STRIPPED_ACACIA_WOOD + f Ldfy; aB field_42730 STRIPPED_CHERRY_WOOD + f Ldfy; aC field_10374 STRIPPED_DARK_OAK_WOOD + f Ldfy; aD field_37550 STRIPPED_MANGROVE_WOOD + f Ldfy; aE field_10503 OAK_LEAVES + f Ldfy; aF field_9988 SPRUCE_LEAVES + f Ldfy; aG field_10539 BIRCH_LEAVES + f Ldfy; aH field_10335 JUNGLE_LEAVES + f Ldfy; aI field_10098 ACACIA_LEAVES + f Ldfy; aJ field_42731 CHERRY_LEAVES + f Ldfy; aK field_10035 DARK_OAK_LEAVES + f Ldfy; aL field_37551 MANGROVE_LEAVES + f Ldfy; a field_10124 AIR + f Ldfy; aM field_28673 AZALEA_LEAVES + f Ldfy; aN field_28674 FLOWERING_AZALEA_LEAVES + f Ldfy; aO field_10258 SPONGE + f Ldfy; aP field_10562 WET_SPONGE + f Ldfy; aQ field_10033 GLASS + f Ldfy; aR field_10090 LAPIS_ORE + f Ldfy; aS field_29028 DEEPSLATE_LAPIS_ORE + f Ldfy; aT field_10441 LAPIS_BLOCK + f Ldfy; aU field_10200 DISPENSER + f Ldfy; aV field_9979 SANDSTONE + f Ldfy; aW field_10292 CHISELED_SANDSTONE + f Ldfy; aX field_10361 CUT_SANDSTONE + f Ldfy; aY field_10179 NOTE_BLOCK + f Ldfy; aZ field_10120 WHITE_BED + f Ldfy; aa field_10010 DARK_OAK_LOG + f Ldfy; ab field_37545 MANGROVE_LOG + f Ldfy; ac field_37546 MANGROVE_ROOTS + f Ldfy; ad field_37547 MUDDY_MANGROVE_ROOTS + f Ldfy; ae field_41072 BAMBOO_BLOCK + f Ldfy; af field_10436 STRIPPED_SPRUCE_LOG + f Ldfy; ag field_10366 STRIPPED_BIRCH_LOG + f Ldfy; ah field_10254 STRIPPED_JUNGLE_LOG + f Ldfy; ai field_10622 STRIPPED_ACACIA_LOG + f Ldfy; aj field_42732 STRIPPED_CHERRY_LOG + f Ldfy; ak field_10244 STRIPPED_DARK_OAK_LOG + f Ldfy; al field_10519 STRIPPED_OAK_LOG + f Ldfy; am field_37548 STRIPPED_MANGROVE_LOG + f Ldfy; an field_41073 STRIPPED_BAMBOO_BLOCK + f Ldfy; ao field_10126 OAK_WOOD + f Ldfy; ap field_10155 SPRUCE_WOOD + f Ldfy; aq field_10307 BIRCH_WOOD + f Ldfy; ar field_10303 JUNGLE_WOOD + f Ldfy; as field_9999 ACACIA_WOOD + f Ldfy; at field_42733 CHERRY_WOOD + f Ldfy; au field_10178 DARK_OAK_WOOD + f Ldfy; av field_37549 MANGROVE_WOOD + f Ldfy; aw field_10250 STRIPPED_OAK_WOOD + f Ldfy; ax field_10558 STRIPPED_SPRUCE_WOOD + f Ldfy; ay field_10204 STRIPPED_BIRCH_WOOD + f Ldfy; az field_10084 STRIPPED_JUNGLE_WOOD + f Ldfy; bA field_10446 WHITE_WOOL + f Ldfy; bB field_10095 ORANGE_WOOL + f Ldfy; bC field_10215 MAGENTA_WOOL + f Ldfy; bD field_10294 LIGHT_BLUE_WOOL + f Ldfy; bE field_10490 YELLOW_WOOL + f Ldfy; bF field_10028 LIME_WOOL + f Ldfy; bG field_10459 PINK_WOOL + f Ldfy; bH field_10423 GRAY_WOOL + f Ldfy; bI field_10222 LIGHT_GRAY_WOOL + f Ldfy; bJ field_10619 CYAN_WOOL + f Ldfy; bK field_10259 PURPLE_WOOL + f Ldfy; bL field_10514 BLUE_WOOL + f Ldfy; b field_10340 STONE + f Ldfy; bM field_10113 BROWN_WOOL + f Ldfy; bN field_10170 GREEN_WOOL + f Ldfy; bO field_10314 RED_WOOL + f Ldfy; bP field_10146 BLACK_WOOL + f Ldfy; bQ field_10008 MOVING_PISTON + f Ldfy; bR field_10182 DANDELION + f Ldfy; bS field_42734 TORCHFLOWER + f Ldfy; bT field_10449 POPPY + f Ldfy; bU field_10086 BLUE_ORCHID + f Ldfy; bV field_10226 ALLIUM + f Ldfy; bW field_10573 AZURE_BLUET + f Ldfy; bX field_10270 RED_TULIP + f Ldfy; bY field_10048 ORANGE_TULIP + f Ldfy; bZ field_10156 WHITE_TULIP + f Ldfy; ba field_10410 ORANGE_BED + f Ldfy; bb field_10230 MAGENTA_BED + f Ldfy; bc field_10621 LIGHT_BLUE_BED + f Ldfy; bd field_10356 YELLOW_BED + f Ldfy; be field_10180 LIME_BED + f Ldfy; bf field_10610 PINK_BED + f Ldfy; bg field_10141 GRAY_BED + f Ldfy; bh field_10326 LIGHT_GRAY_BED + f Ldfy; bi field_10109 CYAN_BED + f Ldfy; bj field_10019 PURPLE_BED + f Ldfy; bk field_10527 BLUE_BED + f Ldfy; bl field_10288 BROWN_BED + f Ldfy; bm field_10561 GREEN_BED + f Ldfy; bn field_10069 RED_BED + f Ldfy; bo field_10461 BLACK_BED + f Ldfy; bp field_10425 POWERED_RAIL + f Ldfy; bq field_10025 DETECTOR_RAIL + f Ldfy; br field_10615 STICKY_PISTON + f Ldfy; bs field_10343 COBWEB + f Ldfy; bt field_10479 SHORT_GRASS + f Ldfy; bu field_10112 FERN + f Ldfy; bv field_10428 DEAD_BUSH + f Ldfy; bw field_10376 SEAGRASS + f Ldfy; bx field_10238 TALL_SEAGRASS + f Ldfy; by field_10560 PISTON + f Ldfy; bz field_10379 PISTON_HEAD + f Ldfy; cA field_9980 CRAFTING_TABLE + f Ldfy; cB field_10293 WHEAT + f Ldfy; cC field_10362 FARMLAND + f Ldfy; cD field_10181 FURNACE + f Ldfy; cE field_10121 OAK_SIGN + f Ldfy; cF field_10411 SPRUCE_SIGN + f Ldfy; cG field_10231 BIRCH_SIGN + f Ldfy; cH field_10284 ACACIA_SIGN + f Ldfy; cI field_42735 CHERRY_SIGN + f Ldfy; cJ field_10544 JUNGLE_SIGN + f Ldfy; cK field_10330 DARK_OAK_SIGN + f Ldfy; cL field_37554 MANGROVE_SIGN + f Ldfy; c field_10474 GRANITE + f Ldfy; cM field_40277 BAMBOO_SIGN + f Ldfy; cN field_10149 OAK_DOOR + f Ldfy; cO field_9983 LADDER + f Ldfy; cP field_10167 RAIL + f Ldfy; cQ field_10596 COBBLESTONE_STAIRS + f Ldfy; cR field_10187 OAK_WALL_SIGN + f Ldfy; cS field_10088 SPRUCE_WALL_SIGN + f Ldfy; cT field_10391 BIRCH_WALL_SIGN + f Ldfy; cU field_10401 ACACIA_WALL_SIGN + f Ldfy; cV field_42736 CHERRY_WALL_SIGN + f Ldfy; cW field_10587 JUNGLE_WALL_SIGN + f Ldfy; cX field_10265 DARK_OAK_WALL_SIGN + f Ldfy; cY field_37552 MANGROVE_WALL_SIGN + f Ldfy; cZ field_40261 BAMBOO_WALL_SIGN + f Ldfy; ca field_10315 PINK_TULIP + f Ldfy; cb field_10554 OXEYE_DAISY + f Ldfy; cc field_9995 CORNFLOWER + f Ldfy; cd field_10606 WITHER_ROSE + f Ldfy; ce field_10548 LILY_OF_THE_VALLEY + f Ldfy; cf field_10251 BROWN_MUSHROOM + f Ldfy; cg field_10559 RED_MUSHROOM + f Ldfy; ch field_10205 GOLD_BLOCK + f Ldfy; ci field_10085 IRON_BLOCK + f Ldfy; cj field_10104 BRICKS + f Ldfy; ck field_10375 TNT + f Ldfy; cl field_10504 BOOKSHELF + f Ldfy; cm field_40276 CHISELED_BOOKSHELF + f Ldfy; cn field_9989 MOSSY_COBBLESTONE + f Ldfy; co field_10540 OBSIDIAN + f Ldfy; cp field_10336 TORCH + f Ldfy; cq field_10099 WALL_TORCH + f Ldfy; cr field_10036 FIRE + f Ldfy; cs field_22089 SOUL_FIRE + f Ldfy; ct field_10260 SPAWNER + f Ldfy; cu field_10563 OAK_STAIRS + f Ldfy; cv field_10034 CHEST + f Ldfy; cw field_10091 REDSTONE_WIRE + f Ldfy; cx field_10442 DIAMOND_ORE + f Ldfy; cy field_29029 DEEPSLATE_DIAMOND_ORE + f Ldfy; cz field_10201 DIAMOND_BLOCK + f Ldfy; dA field_10332 SPRUCE_PRESSURE_PLATE + f Ldfy; dB field_10592 BIRCH_PRESSURE_PLATE + f Ldfy; dC field_10026 JUNGLE_PRESSURE_PLATE + f Ldfy; dD field_10397 ACACIA_PRESSURE_PLATE + f Ldfy; dE field_42737 CHERRY_PRESSURE_PLATE + f Ldfy; dF field_10470 DARK_OAK_PRESSURE_PLATE + f Ldfy; dG field_37553 MANGROVE_PRESSURE_PLATE + f Ldfy; dH field_40284 BAMBOO_PRESSURE_PLATE + f Ldfy; dI field_10080 REDSTONE_ORE + f Ldfy; dJ field_29030 DEEPSLATE_REDSTONE_ORE + f Ldfy; dK field_10523 REDSTONE_TORCH + f Ldfy; dL field_10301 REDSTONE_WALL_TORCH + f Ldfy; d field_10289 POLISHED_GRANITE + f Ldfy; dM field_10494 STONE_BUTTON + f Ldfy; dN field_10477 SNOW + f Ldfy; dO field_10295 ICE + f Ldfy; dP field_10491 SNOW_BLOCK + f Ldfy; dQ field_10029 CACTUS + f Ldfy; dR field_10460 CLAY + f Ldfy; dS field_10424 SUGAR_CANE + f Ldfy; dT field_10223 JUKEBOX + f Ldfy; dU field_10620 OAK_FENCE + f Ldfy; dV field_10515 NETHERRACK + f Ldfy; dW field_10114 SOUL_SAND + f Ldfy; dX field_22090 SOUL_SOIL + f Ldfy; dY field_22091 BASALT + f Ldfy; dZ field_23151 POLISHED_BASALT + f Ldfy; da field_40262 OAK_HANGING_SIGN + f Ldfy; db field_40263 SPRUCE_HANGING_SIGN + f Ldfy; dc field_40264 BIRCH_HANGING_SIGN + f Ldfy; dd field_40265 ACACIA_HANGING_SIGN + f Ldfy; de field_42738 CHERRY_HANGING_SIGN + f Ldfy; df field_40266 JUNGLE_HANGING_SIGN + f Ldfy; dg field_40267 DARK_OAK_HANGING_SIGN + f Ldfy; dh field_40268 CRIMSON_HANGING_SIGN + f Ldfy; di field_40269 WARPED_HANGING_SIGN + f Ldfy; dj field_40270 MANGROVE_HANGING_SIGN + f Ldfy; dk field_40271 BAMBOO_HANGING_SIGN + f Ldfy; dl field_40272 OAK_WALL_HANGING_SIGN + f Ldfy; dm field_40273 SPRUCE_WALL_HANGING_SIGN + f Ldfy; dn field_40274 BIRCH_WALL_HANGING_SIGN + f Ldfy; do field_40275 ACACIA_WALL_HANGING_SIGN + f Ldfy; dp field_42739 CHERRY_WALL_HANGING_SIGN + f Ldfy; dq field_40278 JUNGLE_WALL_HANGING_SIGN + f Ldfy; dr field_40279 DARK_OAK_WALL_HANGING_SIGN + f Ldfy; ds field_40280 MANGROVE_WALL_HANGING_SIGN + f Ldfy; dt field_40281 CRIMSON_WALL_HANGING_SIGN + f Ldfy; du field_40282 WARPED_WALL_HANGING_SIGN + f Ldfy; dv field_40283 BAMBOO_WALL_HANGING_SIGN + f Ldfy; dw field_10363 LEVER + f Ldfy; dx field_10158 STONE_PRESSURE_PLATE + f Ldfy; dy field_9973 IRON_DOOR + f Ldfy; dz field_10484 OAK_PRESSURE_PLATE + f Ldfy; eA field_10486 BIRCH_TRAPDOOR + f Ldfy; eB field_10017 JUNGLE_TRAPDOOR + f Ldfy; eC field_10608 ACACIA_TRAPDOOR + f Ldfy; eD field_42740 CHERRY_TRAPDOOR + f Ldfy; eE field_10246 DARK_OAK_TRAPDOOR + f Ldfy; eF field_37555 MANGROVE_TRAPDOOR + f Ldfy; eG field_40285 BAMBOO_TRAPDOOR + f Ldfy; eH field_10056 STONE_BRICKS + f Ldfy; eI field_10065 MOSSY_STONE_BRICKS + f Ldfy; eJ field_10416 CRACKED_STONE_BRICKS + f Ldfy; eK field_10552 CHISELED_STONE_BRICKS + f Ldfy; eL field_37556 PACKED_MUD + f Ldfy; e field_10508 DIORITE + f Ldfy; eM field_37557 MUD_BRICKS + f Ldfy; eN field_10277 INFESTED_STONE + f Ldfy; eO field_10492 INFESTED_COBBLESTONE + f Ldfy; eP field_10387 INFESTED_STONE_BRICKS + f Ldfy; eQ field_10480 INFESTED_MOSSY_STONE_BRICKS + f Ldfy; eR field_10100 INFESTED_CRACKED_STONE_BRICKS + f Ldfy; eS field_10176 INFESTED_CHISELED_STONE_BRICKS + f Ldfy; eT field_10580 BROWN_MUSHROOM_BLOCK + f Ldfy; eU field_10240 RED_MUSHROOM_BLOCK + f Ldfy; eV field_10556 MUSHROOM_STEM + f Ldfy; eW field_10576 IRON_BARS + f Ldfy; eX field_23985 CHAIN + f Ldfy; eY field_10285 GLASS_PANE + f Ldfy; eZ field_46282 PUMPKIN + f Ldfy; ea field_22092 SOUL_TORCH + f Ldfy; eb field_22093 SOUL_WALL_TORCH + f Ldfy; ec field_10171 GLOWSTONE + f Ldfy; ed field_10316 NETHER_PORTAL + f Ldfy; ee field_10147 CARVED_PUMPKIN + f Ldfy; ef field_10009 JACK_O_LANTERN + f Ldfy; eg field_10183 CAKE + f Ldfy; eh field_10450 REPEATER + f Ldfy; ei field_10087 WHITE_STAINED_GLASS + f Ldfy; ej field_10227 ORANGE_STAINED_GLASS + f Ldfy; ek field_10574 MAGENTA_STAINED_GLASS + f Ldfy; el field_10271 LIGHT_BLUE_STAINED_GLASS + f Ldfy; em field_10049 YELLOW_STAINED_GLASS + f Ldfy; en field_10157 LIME_STAINED_GLASS + f Ldfy; eo field_10317 PINK_STAINED_GLASS + f Ldfy; ep field_10555 GRAY_STAINED_GLASS + f Ldfy; eq field_9996 LIGHT_GRAY_STAINED_GLASS + f Ldfy; er field_10248 CYAN_STAINED_GLASS + f Ldfy; es field_10399 PURPLE_STAINED_GLASS + f Ldfy; et field_10060 BLUE_STAINED_GLASS + f Ldfy; eu field_10073 BROWN_STAINED_GLASS + f Ldfy; ev field_10357 GREEN_STAINED_GLASS + f Ldfy; ew field_10272 RED_STAINED_GLASS + f Ldfy; ex field_9997 BLACK_STAINED_GLASS + f Ldfy; ey field_10137 OAK_TRAPDOOR + f Ldfy; ez field_10323 SPRUCE_TRAPDOOR + f Ldfy; fA field_10081 DRAGON_EGG + f Ldfy; fB field_10524 REDSTONE_LAMP + f Ldfy; fC field_10302 COCOA + f Ldfy; fD field_10142 SANDSTONE_STAIRS + f Ldfy; fE field_10013 EMERALD_ORE + f Ldfy; fF field_29220 DEEPSLATE_EMERALD_ORE + f Ldfy; fG field_10443 ENDER_CHEST + f Ldfy; fH field_10348 TRIPWIRE_HOOK + f Ldfy; fI field_10589 TRIPWIRE + f Ldfy; fJ field_10234 EMERALD_BLOCK + f Ldfy; fK field_10569 SPRUCE_STAIRS + f Ldfy; fL field_10408 BIRCH_STAIRS + f Ldfy; f field_10346 POLISHED_DIORITE + f Ldfy; fM field_10122 JUNGLE_STAIRS + f Ldfy; fN field_10525 COMMAND_BLOCK + f Ldfy; fO field_10327 BEACON + f Ldfy; fP field_10625 COBBLESTONE_WALL + f Ldfy; fQ field_9990 MOSSY_COBBLESTONE_WALL + f Ldfy; fR field_10495 FLOWER_POT + f Ldfy; fS field_42741 POTTED_TORCHFLOWER + f Ldfy; fT field_10468 POTTED_OAK_SAPLING + f Ldfy; fU field_10192 POTTED_SPRUCE_SAPLING + f Ldfy; fV field_10577 POTTED_BIRCH_SAPLING + f Ldfy; fW field_10304 POTTED_JUNGLE_SAPLING + f Ldfy; fX field_10564 POTTED_ACACIA_SAPLING + f Ldfy; fY field_42742 POTTED_CHERRY_SAPLING + f Ldfy; fZ field_10076 POTTED_DARK_OAK_SAPLING + f Ldfy; fa field_46283 MELON + f Ldfy; fb field_46284 ATTACHED_PUMPKIN_STEM + f Ldfy; fc field_46285 ATTACHED_MELON_STEM + f Ldfy; fd field_46286 PUMPKIN_STEM + f Ldfy; fe field_46287 MELON_STEM + f Ldfy; ff field_10597 VINE + f Ldfy; fg field_28411 GLOW_LICHEN + f Ldfy; fh field_10188 OAK_FENCE_GATE + f Ldfy; fi field_10089 BRICK_STAIRS + f Ldfy; fj field_10392 STONE_BRICK_STAIRS + f Ldfy; fk field_37558 MUD_BRICK_STAIRS + f Ldfy; fl field_10402 MYCELIUM + f Ldfy; fm field_10588 LILY_PAD + f Ldfy; fn field_10266 NETHER_BRICKS + f Ldfy; fo field_10364 NETHER_BRICK_FENCE + f Ldfy; fp field_10159 NETHER_BRICK_STAIRS + f Ldfy; fq field_9974 NETHER_WART + f Ldfy; fr field_10485 ENCHANTING_TABLE + f Ldfy; fs field_10333 BREWING_STAND + f Ldfy; ft field_10593 CAULDRON + f Ldfy; fu field_27097 WATER_CAULDRON + f Ldfy; fv field_27098 LAVA_CAULDRON + f Ldfy; fw field_27878 POWDER_SNOW_CAULDRON + f Ldfy; fx field_10027 END_PORTAL + f Ldfy; fy field_10398 END_PORTAL_FRAME + f Ldfy; fz field_10471 END_STONE + f Ldfy; gA field_42743 CHERRY_BUTTON + f Ldfy; gB field_10493 DARK_OAK_BUTTON + f Ldfy; gC field_37559 MANGROVE_BUTTON + f Ldfy; gD field_40286 BAMBOO_BUTTON + f Ldfy; gE field_10481 SKELETON_SKULL + f Ldfy; gF field_10388 SKELETON_WALL_SKULL + f Ldfy; gG field_10177 WITHER_SKELETON_SKULL + f Ldfy; gH field_10101 WITHER_SKELETON_WALL_SKULL + f Ldfy; gI field_10241 ZOMBIE_HEAD + f Ldfy; gJ field_10581 ZOMBIE_WALL_HEAD + f Ldfy; gK field_10432 PLAYER_HEAD + f Ldfy; gL field_10208 PLAYER_WALL_HEAD + f Ldfy; g field_10115 ANDESITE + f Ldfy; gM field_10042 CREEPER_HEAD + f Ldfy; gN field_10509 CREEPER_WALL_HEAD + f Ldfy; gO field_10337 DRAGON_HEAD + f Ldfy; gP field_10472 DRAGON_WALL_HEAD + f Ldfy; gQ field_41305 PIGLIN_HEAD + f Ldfy; gR field_41306 PIGLIN_WALL_HEAD + f Ldfy; gS field_10535 ANVIL + f Ldfy; gT field_10105 CHIPPED_ANVIL + f Ldfy; gU field_10414 DAMAGED_ANVIL + f Ldfy; gV field_10380 TRAPPED_CHEST + f Ldfy; gW field_10224 LIGHT_WEIGHTED_PRESSURE_PLATE + f Ldfy; gX field_10582 HEAVY_WEIGHTED_PRESSURE_PLATE + f Ldfy; gY field_10377 COMPARATOR + f Ldfy; gZ field_10429 DAYLIGHT_DETECTOR + f Ldfy; ga field_37560 POTTED_MANGROVE_PROPAGULE + f Ldfy; gb field_10128 POTTED_FERN + f Ldfy; gc field_10354 POTTED_DANDELION + f Ldfy; gd field_10151 POTTED_POPPY + f Ldfy; ge field_9981 POTTED_BLUE_ORCHID + f Ldfy; gf field_10162 POTTED_ALLIUM + f Ldfy; gg field_10365 POTTED_AZURE_BLUET + f Ldfy; gh field_10598 POTTED_RED_TULIP + f Ldfy; gi field_10249 POTTED_ORANGE_TULIP + f Ldfy; gj field_10400 POTTED_WHITE_TULIP + f Ldfy; gk field_10061 POTTED_PINK_TULIP + f Ldfy; gl field_10074 POTTED_OXEYE_DAISY + f Ldfy; gm field_10358 POTTED_CORNFLOWER + f Ldfy; gn field_10273 POTTED_LILY_OF_THE_VALLEY + f Ldfy; go field_9998 POTTED_WITHER_ROSE + f Ldfy; gp field_10138 POTTED_RED_MUSHROOM + f Ldfy; gq field_10324 POTTED_BROWN_MUSHROOM + f Ldfy; gr field_10487 POTTED_DEAD_BUSH + f Ldfy; gs field_10018 POTTED_CACTUS + f Ldfy; gt field_10609 CARROTS + f Ldfy; gu field_10247 POTATOES + f Ldfy; gv field_10057 OAK_BUTTON + f Ldfy; gw field_10066 SPRUCE_BUTTON + f Ldfy; gx field_10417 BIRCH_BUTTON + f Ldfy; gy field_10553 JUNGLE_BUTTON + f Ldfy; gz field_10278 ACACIA_BUTTON + f Ldfy; hA field_10496 ORANGE_STAINED_GLASS_PANE + f Ldfy; hB field_10469 MAGENTA_STAINED_GLASS_PANE + f Ldfy; hC field_10193 LIGHT_BLUE_STAINED_GLASS_PANE + f Ldfy; hD field_10578 YELLOW_STAINED_GLASS_PANE + f Ldfy; hE field_10305 LIME_STAINED_GLASS_PANE + f Ldfy; hF field_10565 PINK_STAINED_GLASS_PANE + f Ldfy; hG field_10077 GRAY_STAINED_GLASS_PANE + f Ldfy; hH field_10129 LIGHT_GRAY_STAINED_GLASS_PANE + f Ldfy; hI field_10355 CYAN_STAINED_GLASS_PANE + f Ldfy; hJ field_10152 PURPLE_STAINED_GLASS_PANE + f Ldfy; hK field_9982 BLUE_STAINED_GLASS_PANE + f Ldfy; hL field_10163 BROWN_STAINED_GLASS_PANE + f Ldfy; h field_10093 POLISHED_ANDESITE + f Ldfy; hM field_10419 GREEN_STAINED_GLASS_PANE + f Ldfy; hN field_10118 RED_STAINED_GLASS_PANE + f Ldfy; hO field_10070 BLACK_STAINED_GLASS_PANE + f Ldfy; hP field_10256 ACACIA_STAIRS + f Ldfy; hQ field_42744 CHERRY_STAIRS + f Ldfy; hR field_10616 DARK_OAK_STAIRS + f Ldfy; hS field_37561 MANGROVE_STAIRS + f Ldfy; hT field_40287 BAMBOO_STAIRS + f Ldfy; hU field_40288 BAMBOO_MOSAIC_STAIRS + f Ldfy; hV field_10030 SLIME_BLOCK + f Ldfy; hW field_10499 BARRIER + f Ldfy; hX field_31037 LIGHT + f Ldfy; hY field_10453 IRON_TRAPDOOR + f Ldfy; hZ field_10135 PRISMARINE + f Ldfy; ha field_10002 REDSTONE_BLOCK + f Ldfy; hb field_10213 NETHER_QUARTZ_ORE + f Ldfy; hc field_10312 HOPPER + f Ldfy; hd field_10153 QUARTZ_BLOCK + f Ldfy; he field_10044 CHISELED_QUARTZ_BLOCK + f Ldfy; hf field_10437 QUARTZ_PILLAR + f Ldfy; hg field_10451 QUARTZ_STAIRS + f Ldfy; hh field_10546 ACTIVATOR_RAIL + f Ldfy; hi field_10228 DROPPER + f Ldfy; hj field_10611 WHITE_TERRACOTTA + f Ldfy; hk field_10184 ORANGE_TERRACOTTA + f Ldfy; hl field_10015 MAGENTA_TERRACOTTA + f Ldfy; hm field_10325 LIGHT_BLUE_TERRACOTTA + f Ldfy; hn field_10143 YELLOW_TERRACOTTA + f Ldfy; ho field_10014 LIME_TERRACOTTA + f Ldfy; hp field_10444 PINK_TERRACOTTA + f Ldfy; hq field_10349 GRAY_TERRACOTTA + f Ldfy; hr field_10590 LIGHT_GRAY_TERRACOTTA + f Ldfy; hs field_10235 CYAN_TERRACOTTA + f Ldfy; ht field_10570 PURPLE_TERRACOTTA + f Ldfy; hu field_10409 BLUE_TERRACOTTA + f Ldfy; hv field_10123 BROWN_TERRACOTTA + f Ldfy; hw field_10526 GREEN_TERRACOTTA + f Ldfy; hx field_10328 RED_TERRACOTTA + f Ldfy; hy field_10626 BLACK_TERRACOTTA + f Ldfy; hz field_9991 WHITE_STAINED_GLASS_PANE + f Ldfy; iA field_10415 TERRACOTTA + f Ldfy; iB field_10381 COAL_BLOCK + f Ldfy; iC field_10225 PACKED_ICE + f Ldfy; iD field_10583 SUNFLOWER + f Ldfy; iE field_10378 LILAC + f Ldfy; iF field_10430 ROSE_BUSH + f Ldfy; iG field_10003 PEONY + f Ldfy; iH field_10214 TALL_GRASS + f Ldfy; iI field_10313 LARGE_FERN + f Ldfy; iJ field_10154 WHITE_BANNER + f Ldfy; iK field_10045 ORANGE_BANNER + f Ldfy; iL field_10438 MAGENTA_BANNER + f Ldfy; i field_10219 GRASS_BLOCK + f Ldfy; iM field_10452 LIGHT_BLUE_BANNER + f Ldfy; iN field_10547 YELLOW_BANNER + f Ldfy; iO field_10229 LIME_BANNER + f Ldfy; iP field_10612 PINK_BANNER + f Ldfy; iQ field_10185 GRAY_BANNER + f Ldfy; iR field_9985 LIGHT_GRAY_BANNER + f Ldfy; iS field_10165 CYAN_BANNER + f Ldfy; iT field_10368 PURPLE_BANNER + f Ldfy; iU field_10281 BLUE_BANNER + f Ldfy; iV field_10602 BROWN_BANNER + f Ldfy; iW field_10198 GREEN_BANNER + f Ldfy; iX field_10406 RED_BANNER + f Ldfy; iY field_10062 BLACK_BANNER + f Ldfy; iZ field_10202 WHITE_WALL_BANNER + f Ldfy; ia field_10006 PRISMARINE_BRICKS + f Ldfy; ib field_10297 DARK_PRISMARINE + f Ldfy; ic field_10350 PRISMARINE_STAIRS + f Ldfy; id field_10190 PRISMARINE_BRICK_STAIRS + f Ldfy; ie field_10130 DARK_PRISMARINE_STAIRS + f Ldfy; if field_10389 PRISMARINE_SLAB + f Ldfy; ig field_10236 PRISMARINE_BRICK_SLAB + f Ldfy; ih field_10623 DARK_PRISMARINE_SLAB + f Ldfy; ii field_10174 SEA_LANTERN + f Ldfy; ij field_10359 HAY_BLOCK + f Ldfy; ik field_10466 WHITE_CARPET + f Ldfy; il field_9977 ORANGE_CARPET + f Ldfy; im field_10482 MAGENTA_CARPET + f Ldfy; in field_10290 LIGHT_BLUE_CARPET + f Ldfy; io field_10512 YELLOW_CARPET + f Ldfy; ip field_10040 LIME_CARPET + f Ldfy; iq field_10393 PINK_CARPET + f Ldfy; ir field_10591 GRAY_CARPET + f Ldfy; is field_10209 LIGHT_GRAY_CARPET + f Ldfy; it field_10433 CYAN_CARPET + f Ldfy; iu field_10510 PURPLE_CARPET + f Ldfy; iv field_10043 BLUE_CARPET + f Ldfy; iw field_10473 BROWN_CARPET + f Ldfy; ix field_10338 GREEN_CARPET + f Ldfy; iy field_10536 RED_CARPET + f Ldfy; iz field_10106 BLACK_CARPET + f Ldfy; jA field_37564 MANGROVE_SLAB + f Ldfy; jB field_40292 BAMBOO_SLAB + f Ldfy; jC field_40293 BAMBOO_MOSAIC_SLAB + f Ldfy; jD field_10454 STONE_SLAB + f Ldfy; jE field_10136 SMOOTH_STONE_SLAB + f Ldfy; jF field_10007 SANDSTONE_SLAB + f Ldfy; jG field_18890 CUT_SANDSTONE_SLAB + f Ldfy; jH field_10298 PETRIFIED_OAK_SLAB + f Ldfy; jI field_10351 COBBLESTONE_SLAB + f Ldfy; jJ field_10191 BRICK_SLAB + f Ldfy; jK field_10131 STONE_BRICK_SLAB + f Ldfy; jL field_37562 MUD_BRICK_SLAB + f Ldfy; j field_10566 DIRT + f Ldfy; jM field_10390 NETHER_BRICK_SLAB + f Ldfy; jN field_10237 QUARTZ_SLAB + f Ldfy; jO field_10624 RED_SANDSTONE_SLAB + f Ldfy; jP field_18891 CUT_RED_SANDSTONE_SLAB + f Ldfy; jQ field_10175 PURPUR_SLAB + f Ldfy; jR field_10360 SMOOTH_STONE + f Ldfy; jS field_10467 SMOOTH_SANDSTONE + f Ldfy; jT field_9978 SMOOTH_QUARTZ + f Ldfy; jU field_10483 SMOOTH_RED_SANDSTONE + f Ldfy; jV field_10291 SPRUCE_FENCE_GATE + f Ldfy; jW field_10513 BIRCH_FENCE_GATE + f Ldfy; jX field_10041 JUNGLE_FENCE_GATE + f Ldfy; jY field_10457 ACACIA_FENCE_GATE + f Ldfy; jZ field_42745 CHERRY_FENCE_GATE + f Ldfy; ja field_10599 ORANGE_WALL_BANNER + f Ldfy; jb field_10274 MAGENTA_WALL_BANNER + f Ldfy; jc field_10050 LIGHT_BLUE_WALL_BANNER + f Ldfy; jd field_10139 YELLOW_WALL_BANNER + f Ldfy; je field_10318 LIME_WALL_BANNER + f Ldfy; jf field_10531 PINK_WALL_BANNER + f Ldfy; jg field_10267 GRAY_WALL_BANNER + f Ldfy; jh field_10604 LIGHT_GRAY_WALL_BANNER + f Ldfy; ji field_10372 CYAN_WALL_BANNER + f Ldfy; jj field_10054 PURPLE_WALL_BANNER + f Ldfy; jk field_10067 BLUE_WALL_BANNER + f Ldfy; jl field_10370 BROWN_WALL_BANNER + f Ldfy; jm field_10594 GREEN_WALL_BANNER + f Ldfy; jn field_10279 RED_WALL_BANNER + f Ldfy; jo field_10537 BLACK_WALL_BANNER + f Ldfy; jp field_10344 RED_SANDSTONE + f Ldfy; jq field_10117 CHISELED_RED_SANDSTONE + f Ldfy; jr field_10518 CUT_RED_SANDSTONE + f Ldfy; js field_10420 RED_SANDSTONE_STAIRS + f Ldfy; jt field_10119 OAK_SLAB + f Ldfy; ju field_10071 SPRUCE_SLAB + f Ldfy; jv field_10257 BIRCH_SLAB + f Ldfy; jw field_10617 JUNGLE_SLAB + f Ldfy; jx field_10031 ACACIA_SLAB + f Ldfy; jy field_42746 CHERRY_SLAB + f Ldfy; jz field_10500 DARK_OAK_SLAB + f Ldfy; kA field_42749 TORCHFLOWER_CROP + f Ldfy; kB field_43228 PITCHER_CROP + f Ldfy; kC field_43229 PITCHER_PLANT + f Ldfy; kD field_10341 BEETROOTS + f Ldfy; kE field_10194 DIRT_PATH + f Ldfy; kF field_10613 END_GATEWAY + f Ldfy; kG field_10263 REPEATING_COMMAND_BLOCK + f Ldfy; kH field_10395 CHAIN_COMMAND_BLOCK + f Ldfy; kI field_10110 FROSTED_ICE + f Ldfy; kJ field_10092 MAGMA_BLOCK + f Ldfy; kK field_10541 NETHER_WART_BLOCK + f Ldfy; kL field_9986 RED_NETHER_BRICKS + f Ldfy; k field_10253 COARSE_DIRT + f Ldfy; kM field_10166 BONE_BLOCK + f Ldfy; kN field_10369 STRUCTURE_VOID + f Ldfy; kO field_10282 OBSERVER + f Ldfy; kP field_10603 SHULKER_BOX + f Ldfy; kQ field_10199 WHITE_SHULKER_BOX + f Ldfy; kR field_10407 ORANGE_SHULKER_BOX + f Ldfy; kS field_10063 MAGENTA_SHULKER_BOX + f Ldfy; kT field_10203 LIGHT_BLUE_SHULKER_BOX + f Ldfy; kU field_10600 YELLOW_SHULKER_BOX + f Ldfy; kV field_10275 LIME_SHULKER_BOX + f Ldfy; kW field_10051 PINK_SHULKER_BOX + f Ldfy; kX field_10140 GRAY_SHULKER_BOX + f Ldfy; kY field_10320 LIGHT_GRAY_SHULKER_BOX + f Ldfy; kZ field_10532 CYAN_SHULKER_BOX + f Ldfy; ka field_10196 DARK_OAK_FENCE_GATE + f Ldfy; kb field_37563 MANGROVE_FENCE_GATE + f Ldfy; kc field_40289 BAMBOO_FENCE_GATE + f Ldfy; kd field_10020 SPRUCE_FENCE + f Ldfy; ke field_10299 BIRCH_FENCE + f Ldfy; kf field_10319 JUNGLE_FENCE + f Ldfy; kg field_10144 ACACIA_FENCE + f Ldfy; kh field_42747 CHERRY_FENCE + f Ldfy; ki field_10132 DARK_OAK_FENCE + f Ldfy; kj field_37565 MANGROVE_FENCE + f Ldfy; kk field_40290 BAMBOO_FENCE + f Ldfy; kl field_10521 SPRUCE_DOOR + f Ldfy; km field_10352 BIRCH_DOOR + f Ldfy; kn field_10627 JUNGLE_DOOR + f Ldfy; ko field_10232 ACACIA_DOOR + f Ldfy; kp field_42748 CHERRY_DOOR + f Ldfy; kq field_10403 DARK_OAK_DOOR + f Ldfy; kr field_37566 MANGROVE_DOOR + f Ldfy; ks field_40291 BAMBOO_DOOR + f Ldfy; kt field_10455 END_ROD + f Ldfy; ku field_10021 CHORUS_PLANT + f Ldfy; kv field_10528 CHORUS_FLOWER + f Ldfy; kw field_10286 PURPUR_BLOCK + f Ldfy; kx field_10505 PURPUR_PILLAR + f Ldfy; ky field_9992 PURPUR_STAIRS + f Ldfy; kz field_10462 END_STONE_BRICKS + f Ldfy; lA field_10542 YELLOW_CONCRETE + f Ldfy; lB field_10421 LIME_CONCRETE + f Ldfy; lC field_10434 PINK_CONCRETE + f Ldfy; lD field_10038 GRAY_CONCRETE + f Ldfy; lE field_10172 LIGHT_GRAY_CONCRETE + f Ldfy; lF field_10308 CYAN_CONCRETE + f Ldfy; lG field_10206 PURPLE_CONCRETE + f Ldfy; lH field_10011 BLUE_CONCRETE + f Ldfy; lI field_10439 BROWN_CONCRETE + f Ldfy; lJ field_10367 GREEN_CONCRETE + f Ldfy; lK field_10058 RED_CONCRETE + f Ldfy; lL field_10458 BLACK_CONCRETE + f Ldfy; l field_10520 PODZOL + f Ldfy; lM field_10197 WHITE_CONCRETE_POWDER + f Ldfy; lN field_10022 ORANGE_CONCRETE_POWDER + f Ldfy; lO field_10300 MAGENTA_CONCRETE_POWDER + f Ldfy; lP field_10321 LIGHT_BLUE_CONCRETE_POWDER + f Ldfy; lQ field_10145 YELLOW_CONCRETE_POWDER + f Ldfy; lR field_10133 LIME_CONCRETE_POWDER + f Ldfy; lS field_10522 PINK_CONCRETE_POWDER + f Ldfy; lT field_10353 GRAY_CONCRETE_POWDER + f Ldfy; lU field_10628 LIGHT_GRAY_CONCRETE_POWDER + f Ldfy; lV field_10233 CYAN_CONCRETE_POWDER + f Ldfy; lW field_10404 PURPLE_CONCRETE_POWDER + f Ldfy; lX field_10456 BLUE_CONCRETE_POWDER + f Ldfy; lY field_10023 BROWN_CONCRETE_POWDER + f Ldfy; lZ field_10529 GREEN_CONCRETE_POWDER + f Ldfy; la field_10268 PURPLE_SHULKER_BOX + f Ldfy; lb field_10605 BLUE_SHULKER_BOX + f Ldfy; lc field_10373 BROWN_SHULKER_BOX + f Ldfy; ld field_10055 GREEN_SHULKER_BOX + f Ldfy; le field_10068 RED_SHULKER_BOX + f Ldfy; lf field_10371 BLACK_SHULKER_BOX + f Ldfy; lg field_10595 WHITE_GLAZED_TERRACOTTA + f Ldfy; lh field_10280 ORANGE_GLAZED_TERRACOTTA + f Ldfy; li field_10538 MAGENTA_GLAZED_TERRACOTTA + f Ldfy; lj field_10345 LIGHT_BLUE_GLAZED_TERRACOTTA + f Ldfy; lk field_10096 YELLOW_GLAZED_TERRACOTTA + f Ldfy; ll field_10046 LIME_GLAZED_TERRACOTTA + f Ldfy; lm field_10567 PINK_GLAZED_TERRACOTTA + f Ldfy; ln field_10220 GRAY_GLAZED_TERRACOTTA + f Ldfy; lo field_10052 LIGHT_GRAY_GLAZED_TERRACOTTA + f Ldfy; lp field_10078 CYAN_GLAZED_TERRACOTTA + f Ldfy; lq field_10426 PURPLE_GLAZED_TERRACOTTA + f Ldfy; lr field_10550 BLUE_GLAZED_TERRACOTTA + f Ldfy; ls field_10004 BROWN_GLAZED_TERRACOTTA + f Ldfy; lt field_10475 GREEN_GLAZED_TERRACOTTA + f Ldfy; lu field_10383 RED_GLAZED_TERRACOTTA + f Ldfy; lv field_10501 BLACK_GLAZED_TERRACOTTA + f Ldfy; lw field_10107 WHITE_CONCRETE + f Ldfy; lx field_10210 ORANGE_CONCRETE + f Ldfy; ly field_10585 MAGENTA_CONCRETE + f Ldfy; lz field_10242 LIGHT_BLUE_CONCRETE + f Ldfy; mA field_10169 HORN_CORAL + f Ldfy; mB field_10448 DEAD_TUBE_CORAL_FAN + f Ldfy; mC field_10097 DEAD_BRAIN_CORAL_FAN + f Ldfy; mD field_10047 DEAD_BUBBLE_CORAL_FAN + f Ldfy; mE field_10568 DEAD_FIRE_CORAL_FAN + f Ldfy; mF field_10221 DEAD_HORN_CORAL_FAN + f Ldfy; mG field_10053 TUBE_CORAL_FAN + f Ldfy; mH field_10079 BRAIN_CORAL_FAN + f Ldfy; mI field_10427 BUBBLE_CORAL_FAN + f Ldfy; mJ field_10551 FIRE_CORAL_FAN + f Ldfy; mK field_10005 HORN_CORAL_FAN + f Ldfy; mL field_10347 DEAD_TUBE_CORAL_WALL_FAN + f Ldfy; m field_10445 COBBLESTONE + f Ldfy; mM field_10116 DEAD_BRAIN_CORAL_WALL_FAN + f Ldfy; mN field_10094 DEAD_BUBBLE_CORAL_WALL_FAN + f Ldfy; mO field_10557 DEAD_FIRE_CORAL_WALL_FAN + f Ldfy; mP field_10239 DEAD_HORN_CORAL_WALL_FAN + f Ldfy; mQ field_10584 TUBE_CORAL_WALL_FAN + f Ldfy; mR field_10186 BRAIN_CORAL_WALL_FAN + f Ldfy; mS field_10447 BUBBLE_CORAL_WALL_FAN + f Ldfy; mT field_10498 FIRE_CORAL_WALL_FAN + f Ldfy; mU field_9976 HORN_CORAL_WALL_FAN + f Ldfy; mV field_10476 SEA_PICKLE + f Ldfy; mW field_10384 BLUE_ICE + f Ldfy; mX field_10502 CONDUIT + f Ldfy; mY field_10108 BAMBOO_SAPLING + f Ldfy; mZ field_10211 BAMBOO + f Ldfy; ma field_10287 RED_CONCRETE_POWDER + f Ldfy; mb field_10506 BLACK_CONCRETE_POWDER + f Ldfy; mc field_9993 KELP + f Ldfy; md field_10463 KELP_PLANT + f Ldfy; me field_10342 DRIED_KELP_BLOCK + f Ldfy; mf field_10195 TURTLE_EGG + f Ldfy; mg field_43230 SNIFFER_EGG + f Ldfy; mh field_10614 DEAD_TUBE_CORAL_BLOCK + f Ldfy; mi field_10264 DEAD_BRAIN_CORAL_BLOCK + f Ldfy; mj field_10396 DEAD_BUBBLE_CORAL_BLOCK + f Ldfy; mk field_10111 DEAD_FIRE_CORAL_BLOCK + f Ldfy; ml field_10488 DEAD_HORN_CORAL_BLOCK + f Ldfy; mm field_10309 TUBE_CORAL_BLOCK + f Ldfy; mn field_10629 BRAIN_CORAL_BLOCK + f Ldfy; mo field_10000 BUBBLE_CORAL_BLOCK + f Ldfy; mp field_10516 FIRE_CORAL_BLOCK + f Ldfy; mq field_10464 HORN_CORAL_BLOCK + f Ldfy; mr field_10082 DEAD_TUBE_CORAL + f Ldfy; ms field_10572 DEAD_BRAIN_CORAL + f Ldfy; mt field_10296 DEAD_BUBBLE_CORAL + f Ldfy; mu field_10579 DEAD_FIRE_CORAL + f Ldfy; mv field_10032 DEAD_HORN_CORAL + f Ldfy; mw field_10125 TUBE_CORAL + f Ldfy; mx field_10339 BRAIN_CORAL + f Ldfy; my field_10134 BUBBLE_CORAL + f Ldfy; mz field_10618 FIRE_CORAL + f Ldfy; nA field_10189 GRANITE_SLAB + f Ldfy; nB field_10016 ANDESITE_SLAB + f Ldfy; nC field_10478 RED_NETHER_BRICK_SLAB + f Ldfy; nD field_10322 POLISHED_ANDESITE_SLAB + f Ldfy; nE field_10507 DIORITE_SLAB + f Ldfy; nF field_10269 BRICK_WALL + f Ldfy; nG field_10530 PRISMARINE_WALL + f Ldfy; nH field_10413 RED_SANDSTONE_WALL + f Ldfy; nI field_10059 MOSSY_STONE_BRICK_WALL + f Ldfy; nJ field_10072 GRANITE_WALL + f Ldfy; nK field_10252 STONE_BRICK_WALL + f Ldfy; nL field_37567 MUD_BRICK_WALL + f Ldfy; n field_10161 OAK_PLANKS + f Ldfy; nM field_10127 NETHER_BRICK_WALL + f Ldfy; nN field_10489 ANDESITE_WALL + f Ldfy; nO field_10311 RED_NETHER_BRICK_WALL + f Ldfy; nP field_10630 SANDSTONE_WALL + f Ldfy; nQ field_10001 END_STONE_BRICK_WALL + f Ldfy; nR field_10517 DIORITE_WALL + f Ldfy; nS field_16492 SCAFFOLDING + f Ldfy; nT field_10083 LOOM + f Ldfy; nU field_16328 BARREL + f Ldfy; nV field_16334 SMOKER + f Ldfy; nW field_16333 BLAST_FURNACE + f Ldfy; nX field_16336 CARTOGRAPHY_TABLE + f Ldfy; nY field_16331 FLETCHING_TABLE + f Ldfy; nZ field_16337 GRINDSTONE + f Ldfy; na field_10586 POTTED_BAMBOO + f Ldfy; nb field_10243 VOID_AIR + f Ldfy; nc field_10543 CAVE_AIR + f Ldfy; nd field_10422 BUBBLE_COLUMN + f Ldfy; ne field_10435 POLISHED_GRANITE_STAIRS + f Ldfy; nf field_10039 SMOOTH_RED_SANDSTONE_STAIRS + f Ldfy; ng field_10173 MOSSY_STONE_BRICK_STAIRS + f Ldfy; nh field_10310 POLISHED_DIORITE_STAIRS + f Ldfy; ni field_10207 MOSSY_COBBLESTONE_STAIRS + f Ldfy; nj field_10012 END_STONE_BRICK_STAIRS + f Ldfy; nk field_10440 STONE_STAIRS + f Ldfy; nl field_10549 SMOOTH_SANDSTONE_STAIRS + f Ldfy; nm field_10245 SMOOTH_QUARTZ_STAIRS + f Ldfy; nn field_10607 GRANITE_STAIRS + f Ldfy; no field_10386 ANDESITE_STAIRS + f Ldfy; np field_10497 RED_NETHER_BRICK_STAIRS + f Ldfy; nq field_9994 POLISHED_ANDESITE_STAIRS + f Ldfy; nr field_10216 DIORITE_STAIRS + f Ldfy; ns field_10329 POLISHED_GRANITE_SLAB + f Ldfy; nt field_10283 SMOOTH_RED_SANDSTONE_SLAB + f Ldfy; nu field_10024 MOSSY_STONE_BRICK_SLAB + f Ldfy; nv field_10412 POLISHED_DIORITE_SLAB + f Ldfy; nw field_10405 MOSSY_COBBLESTONE_SLAB + f Ldfy; nx field_10064 END_STONE_BRICK_SLAB + f Ldfy; ny field_10262 SMOOTH_SANDSTONE_SLAB + f Ldfy; nz field_10601 SMOOTH_QUARTZ_SLAB + f Ldfy; oA field_22124 WEEPING_VINES_PLANT + f Ldfy; oB field_23078 TWISTING_VINES + f Ldfy; oC field_23079 TWISTING_VINES_PLANT + f Ldfy; oD field_22125 CRIMSON_ROOTS + f Ldfy; oE field_22126 CRIMSON_PLANKS + f Ldfy; oF field_22127 WARPED_PLANKS + f Ldfy; oG field_22128 CRIMSON_SLAB + f Ldfy; oH field_22129 WARPED_SLAB + f Ldfy; oI field_22130 CRIMSON_PRESSURE_PLATE + f Ldfy; oJ field_22131 WARPED_PRESSURE_PLATE + f Ldfy; oK field_22132 CRIMSON_FENCE + f Ldfy; oL field_22133 WARPED_FENCE + f Ldfy; o field_9975 SPRUCE_PLANKS + f Ldfy; oM field_22094 CRIMSON_TRAPDOOR + f Ldfy; oN field_22095 WARPED_TRAPDOOR + f Ldfy; oO field_22096 CRIMSON_FENCE_GATE + f Ldfy; oP field_22097 WARPED_FENCE_GATE + f Ldfy; oQ field_22098 CRIMSON_STAIRS + f Ldfy; oR field_22099 WARPED_STAIRS + f Ldfy; oS field_22100 CRIMSON_BUTTON + f Ldfy; oT field_22101 WARPED_BUTTON + f Ldfy; oU field_22102 CRIMSON_DOOR + f Ldfy; oV field_22103 WARPED_DOOR + f Ldfy; oW field_22104 CRIMSON_SIGN + f Ldfy; oX field_22105 WARPED_SIGN + f Ldfy; oY field_22106 CRIMSON_WALL_SIGN + f Ldfy; oZ field_22107 WARPED_WALL_SIGN + f Ldfy; oa field_16330 LECTERN + f Ldfy; ob field_16329 SMITHING_TABLE + f Ldfy; oc field_16335 STONECUTTER + f Ldfy; od field_16332 BELL + f Ldfy; oe field_16541 LANTERN + f Ldfy; of field_22110 SOUL_LANTERN + f Ldfy; og field_17350 CAMPFIRE + f Ldfy; oh field_23860 SOUL_CAMPFIRE + f Ldfy; oi field_16999 SWEET_BERRY_BUSH + f Ldfy; oj field_22111 WARPED_STEM + f Ldfy; ok field_22112 STRIPPED_WARPED_STEM + f Ldfy; ol field_22503 WARPED_HYPHAE + f Ldfy; om field_22504 STRIPPED_WARPED_HYPHAE + f Ldfy; on field_22113 WARPED_NYLIUM + f Ldfy; oo field_22114 WARPED_FUNGUS + f Ldfy; op field_22115 WARPED_WART_BLOCK + f Ldfy; oq field_22116 WARPED_ROOTS + f Ldfy; or field_22117 NETHER_SPROUTS + f Ldfy; os field_22118 CRIMSON_STEM + f Ldfy; ot field_22119 STRIPPED_CRIMSON_STEM + f Ldfy; ou field_22505 CRIMSON_HYPHAE + f Ldfy; ov field_22506 STRIPPED_CRIMSON_HYPHAE + f Ldfy; ow field_22120 CRIMSON_NYLIUM + f Ldfy; ox field_22121 CRIMSON_FUNGUS + f Ldfy; oy field_22122 SHROOMLIGHT + f Ldfy; oz field_22123 WEEPING_VINES + f Ldfy; pA field_23878 POLISHED_BLACKSTONE_BRICK_STAIRS + f Ldfy; pB field_23879 POLISHED_BLACKSTONE_BRICK_WALL + f Ldfy; pC field_23880 GILDED_BLACKSTONE + f Ldfy; pD field_23861 POLISHED_BLACKSTONE_STAIRS + f Ldfy; pE field_23862 POLISHED_BLACKSTONE_SLAB + f Ldfy; pF field_23863 POLISHED_BLACKSTONE_PRESSURE_PLATE + f Ldfy; pG field_23864 POLISHED_BLACKSTONE_BUTTON + f Ldfy; pH field_23865 POLISHED_BLACKSTONE_WALL + f Ldfy; pI field_23866 CHISELED_NETHER_BRICKS + f Ldfy; pJ field_23867 CRACKED_NETHER_BRICKS + f Ldfy; pK field_23868 QUARTZ_BRICKS + f Ldfy; pL field_27099 CANDLE + f Ldfy; p field_10148 BIRCH_PLANKS + f Ldfy; pM field_27100 WHITE_CANDLE + f Ldfy; pN field_27101 ORANGE_CANDLE + f Ldfy; pO field_27102 MAGENTA_CANDLE + f Ldfy; pP field_27103 LIGHT_BLUE_CANDLE + f Ldfy; pQ field_27104 YELLOW_CANDLE + f Ldfy; pR field_27105 LIME_CANDLE + f Ldfy; pS field_27106 PINK_CANDLE + f Ldfy; pT field_27107 GRAY_CANDLE + f Ldfy; pU field_27108 LIGHT_GRAY_CANDLE + f Ldfy; pV field_27109 CYAN_CANDLE + f Ldfy; pW field_27110 PURPLE_CANDLE + f Ldfy; pX field_27111 BLUE_CANDLE + f Ldfy; pY field_27112 BROWN_CANDLE + f Ldfy; pZ field_27113 GREEN_CANDLE + f Ldfy; pa field_10465 STRUCTURE_BLOCK + f Ldfy; pb field_16540 JIGSAW + f Ldfy; pc field_17563 COMPOSTER + f Ldfy; pd field_22422 TARGET + f Ldfy; pe field_20421 BEE_NEST + f Ldfy; pf field_20422 BEEHIVE + f Ldfy; pg field_21211 HONEY_BLOCK + f Ldfy; ph field_21212 HONEYCOMB_BLOCK + f Ldfy; pi field_22108 NETHERITE_BLOCK + f Ldfy; pj field_22109 ANCIENT_DEBRIS + f Ldfy; pk field_22423 CRYING_OBSIDIAN + f Ldfy; pl field_23152 RESPAWN_ANCHOR + f Ldfy; pm field_22424 POTTED_CRIMSON_FUNGUS + f Ldfy; pn field_22425 POTTED_WARPED_FUNGUS + f Ldfy; po field_22426 POTTED_CRIMSON_ROOTS + f Ldfy; pp field_22427 POTTED_WARPED_ROOTS + f Ldfy; pq field_23261 LODESTONE + f Ldfy; pr field_23869 BLACKSTONE + f Ldfy; ps field_23870 BLACKSTONE_STAIRS + f Ldfy; pt field_23871 BLACKSTONE_WALL + f Ldfy; pu field_23872 BLACKSTONE_SLAB + f Ldfy; pv field_23873 POLISHED_BLACKSTONE + f Ldfy; pw field_23874 POLISHED_BLACKSTONE_BRICKS + f Ldfy; px field_23875 CRACKED_POLISHED_BLACKSTONE_BRICKS + f Ldfy; py field_23876 CHISELED_POLISHED_BLACKSTONE + f Ldfy; pz field_23877 POLISHED_BLACKSTONE_BRICK_SLAB + f Ldfy; qA field_47027 TUFF_SLAB + f Ldfy; qB field_47028 TUFF_STAIRS + f Ldfy; qC field_47029 TUFF_WALL + f Ldfy; qD field_47030 POLISHED_TUFF + f Ldfy; qE field_47031 POLISHED_TUFF_SLAB + f Ldfy; qF field_47032 POLISHED_TUFF_STAIRS + f Ldfy; qG field_47033 POLISHED_TUFF_WALL + f Ldfy; qH field_47034 CHISELED_TUFF + f Ldfy; qI field_47035 TUFF_BRICKS + f Ldfy; qJ field_47036 TUFF_BRICK_SLAB + f Ldfy; qK field_47037 TUFF_BRICK_STAIRS + f Ldfy; qL field_47038 TUFF_BRICK_WALL + f Ldfy; q field_10334 JUNGLE_PLANKS + f Ldfy; qM field_47039 CHISELED_TUFF_BRICKS + f Ldfy; qN field_27114 CALCITE + f Ldfy; qO field_27115 TINTED_GLASS + f Ldfy; qP field_27879 POWDER_SNOW + f Ldfy; qQ field_28108 SCULK_SENSOR + f Ldfy; qR field_43231 CALIBRATED_SCULK_SENSOR + f Ldfy; qS field_37568 SCULK + f Ldfy; qT field_37569 SCULK_VEIN + f Ldfy; qU field_37570 SCULK_CATALYST + f Ldfy; qV field_37571 SCULK_SHRIEKER + f Ldfy; qW field_27119 COPPER_BLOCK + f Ldfy; qX field_27118 EXPOSED_COPPER + f Ldfy; qY field_27117 WEATHERED_COPPER + f Ldfy; qZ field_27116 OXIDIZED_COPPER + f Ldfy; qa field_27140 RED_CANDLE + f Ldfy; qb field_27141 BLACK_CANDLE + f Ldfy; qc field_27142 CANDLE_CAKE + f Ldfy; qd field_27143 WHITE_CANDLE_CAKE + f Ldfy; qe field_27144 ORANGE_CANDLE_CAKE + f Ldfy; qf field_27145 MAGENTA_CANDLE_CAKE + f Ldfy; qg field_27146 LIGHT_BLUE_CANDLE_CAKE + f Ldfy; qh field_27147 YELLOW_CANDLE_CAKE + f Ldfy; qi field_27148 LIME_CANDLE_CAKE + f Ldfy; qj field_27149 PINK_CANDLE_CAKE + f Ldfy; qk field_27150 GRAY_CANDLE_CAKE + f Ldfy; ql field_27151 LIGHT_GRAY_CANDLE_CAKE + f Ldfy; qm field_27152 CYAN_CANDLE_CAKE + f Ldfy; qn field_27153 PURPLE_CANDLE_CAKE + f Ldfy; qo field_27154 BLUE_CANDLE_CAKE + f Ldfy; qp field_27155 BROWN_CANDLE_CAKE + f Ldfy; qq field_27156 GREEN_CANDLE_CAKE + f Ldfy; qr field_27157 RED_CANDLE_CAKE + f Ldfy; qs field_27158 BLACK_CANDLE_CAKE + f Ldfy; qt field_27159 AMETHYST_BLOCK + f Ldfy; qu field_27160 BUDDING_AMETHYST + f Ldfy; qv field_27161 AMETHYST_CLUSTER + f Ldfy; qw field_27162 LARGE_AMETHYST_BUD + f Ldfy; qx field_27163 MEDIUM_AMETHYST_BUD + f Ldfy; qy field_27164 SMALL_AMETHYST_BUD + f Ldfy; qz field_27165 TUFF + f Ldfy; rA field_33408 WAXED_OXIDIZED_CUT_COPPER + f Ldfy; rB field_27136 WAXED_WEATHERED_CUT_COPPER + f Ldfy; rC field_27137 WAXED_EXPOSED_CUT_COPPER + f Ldfy; rD field_27138 WAXED_CUT_COPPER + f Ldfy; rE field_33409 WAXED_OXIDIZED_CUT_COPPER_STAIRS + f Ldfy; rF field_27139 WAXED_WEATHERED_CUT_COPPER_STAIRS + f Ldfy; rG field_27166 WAXED_EXPOSED_CUT_COPPER_STAIRS + f Ldfy; rH field_27167 WAXED_CUT_COPPER_STAIRS + f Ldfy; rI field_33410 WAXED_OXIDIZED_CUT_COPPER_SLAB + f Ldfy; rJ field_27168 WAXED_WEATHERED_CUT_COPPER_SLAB + f Ldfy; rK field_27169 WAXED_EXPOSED_CUT_COPPER_SLAB + f Ldfy; rL field_27170 WAXED_CUT_COPPER_SLAB + f Ldfy; r field_10218 ACACIA_PLANKS + f Ldfy; rM field_47040 COPPER_DOOR + f Ldfy; rN field_47041 EXPOSED_COPPER_DOOR + f Ldfy; rO field_47042 OXIDIZED_COPPER_DOOR + f Ldfy; rP field_47043 WEATHERED_COPPER_DOOR + f Ldfy; rQ field_47044 WAXED_COPPER_DOOR + f Ldfy; rR field_47045 WAXED_EXPOSED_COPPER_DOOR + f Ldfy; rS field_47046 WAXED_OXIDIZED_COPPER_DOOR + f Ldfy; rT field_47047 WAXED_WEATHERED_COPPER_DOOR + f Ldfy; rU field_47048 COPPER_TRAPDOOR + f Ldfy; rV field_47049 EXPOSED_COPPER_TRAPDOOR + f Ldfy; rW field_47050 OXIDIZED_COPPER_TRAPDOOR + f Ldfy; rX field_47051 WEATHERED_COPPER_TRAPDOOR + f Ldfy; rY field_47052 WAXED_COPPER_TRAPDOOR + f Ldfy; rZ field_47053 WAXED_EXPOSED_COPPER_TRAPDOOR + f Ldfy; ra field_27120 COPPER_ORE + f Ldfy; rb field_29221 DEEPSLATE_COPPER_ORE + f Ldfy; rc field_27121 OXIDIZED_CUT_COPPER + f Ldfy; rd field_27122 WEATHERED_CUT_COPPER + f Ldfy; re field_27123 EXPOSED_CUT_COPPER + f Ldfy; rf field_27124 CUT_COPPER + f Ldfy; rg field_47054 OXIDIZED_CHISELED_COPPER + f Ldfy; rh field_47055 WEATHERED_CHISELED_COPPER + f Ldfy; ri field_47056 EXPOSED_CHISELED_COPPER + f Ldfy; rj field_47057 CHISELED_COPPER + f Ldfy; rk field_47058 WAXED_OXIDIZED_CHISELED_COPPER + f Ldfy; rl field_47059 WAXED_WEATHERED_CHISELED_COPPER + f Ldfy; rm field_47060 WAXED_EXPOSED_CHISELED_COPPER + f Ldfy; rn field_47061 WAXED_CHISELED_COPPER + f Ldfy; ro field_27125 OXIDIZED_CUT_COPPER_STAIRS + f Ldfy; rp field_27126 WEATHERED_CUT_COPPER_STAIRS + f Ldfy; rq field_27127 EXPOSED_CUT_COPPER_STAIRS + f Ldfy; rr field_27128 CUT_COPPER_STAIRS + f Ldfy; rs field_27129 OXIDIZED_CUT_COPPER_SLAB + f Ldfy; rt field_27130 WEATHERED_CUT_COPPER_SLAB + f Ldfy; ru field_27131 EXPOSED_CUT_COPPER_SLAB + f Ldfy; rv field_27132 CUT_COPPER_SLAB + f Ldfy; rw field_27133 WAXED_COPPER_BLOCK + f Ldfy; rx field_27134 WAXED_WEATHERED_COPPER + f Ldfy; ry field_27135 WAXED_EXPOSED_COPPER + f Ldfy; rz field_33407 WAXED_OXIDIZED_COPPER + f Ldfy; sA field_28680 MOSS_CARPET + f Ldfy; sB field_42750 PINK_PETALS + f Ldfy; sC field_28681 MOSS_BLOCK + f Ldfy; sD field_28682 BIG_DRIPLEAF + f Ldfy; sE field_28683 BIG_DRIPLEAF_STEM + f Ldfy; sF field_28684 SMALL_DRIPLEAF + f Ldfy; sG field_28686 HANGING_ROOTS + f Ldfy; sH field_28685 ROOTED_DIRT + f Ldfy; sI field_37576 MUD + f Ldfy; sJ field_28888 DEEPSLATE + f Ldfy; sK field_29031 COBBLED_DEEPSLATE + f Ldfy; sL field_28889 COBBLED_DEEPSLATE_STAIRS + f Ldfy; s field_42751 CHERRY_PLANKS + f Ldfy; sM field_28890 COBBLED_DEEPSLATE_SLAB + f Ldfy; sN field_28891 COBBLED_DEEPSLATE_WALL + f Ldfy; sO field_28892 POLISHED_DEEPSLATE + f Ldfy; sP field_28893 POLISHED_DEEPSLATE_STAIRS + f Ldfy; sQ field_28894 POLISHED_DEEPSLATE_SLAB + f Ldfy; sR field_28895 POLISHED_DEEPSLATE_WALL + f Ldfy; sS field_28896 DEEPSLATE_TILES + f Ldfy; sT field_28897 DEEPSLATE_TILE_STAIRS + f Ldfy; sU field_28898 DEEPSLATE_TILE_SLAB + f Ldfy; sV field_28899 DEEPSLATE_TILE_WALL + f Ldfy; sW field_28900 DEEPSLATE_BRICKS + f Ldfy; sX field_28901 DEEPSLATE_BRICK_STAIRS + f Ldfy; sY field_28902 DEEPSLATE_BRICK_SLAB + f Ldfy; sZ field_28903 DEEPSLATE_BRICK_WALL + f Ldfy; sa field_47062 WAXED_OXIDIZED_COPPER_TRAPDOOR + f Ldfy; sb field_47063 WAXED_WEATHERED_COPPER_TRAPDOOR + f Ldfy; sc field_47064 COPPER_GRATE + f Ldfy; sd field_47065 EXPOSED_COPPER_GRATE + f Ldfy; se field_47066 WEATHERED_COPPER_GRATE + f Ldfy; sf field_47067 OXIDIZED_COPPER_GRATE + f Ldfy; sg field_47068 WAXED_COPPER_GRATE + f Ldfy; sh field_47069 WAXED_EXPOSED_COPPER_GRATE + f Ldfy; si field_47070 WAXED_WEATHERED_COPPER_GRATE + f Ldfy; sj field_47071 WAXED_OXIDIZED_COPPER_GRATE + f Ldfy; sk field_47072 COPPER_BULB + f Ldfy; sl field_47073 EXPOSED_COPPER_BULB + f Ldfy; sm field_47074 WEATHERED_COPPER_BULB + f Ldfy; sn field_47075 OXIDIZED_COPPER_BULB + f Ldfy; so field_47076 WAXED_COPPER_BULB + f Ldfy; sp field_47077 WAXED_EXPOSED_COPPER_BULB + f Ldfy; sq field_47078 WAXED_WEATHERED_COPPER_BULB + f Ldfy; sr field_47079 WAXED_OXIDIZED_COPPER_BULB + f Ldfy; ss field_27171 LIGHTNING_ROD + f Ldfy; st field_28048 POINTED_DRIPSTONE + f Ldfy; su field_28049 DRIPSTONE_BLOCK + f Ldfy; sv field_28675 CAVE_VINES + f Ldfy; sw field_28676 CAVE_VINES_PLANT + f Ldfy; sx field_28677 SPORE_BLOSSOM + f Ldfy; sy field_28678 AZALEA + f Ldfy; sz field_28679 FLOWERING_AZALEA + f Ldfy; t field_10075 DARK_OAK_PLANKS + f Ldfy; ta field_28904 CHISELED_DEEPSLATE + f Ldfy; tb field_29222 CRACKED_DEEPSLATE_BRICKS + f Ldfy; tc field_29223 CRACKED_DEEPSLATE_TILES + f Ldfy; td field_29224 INFESTED_DEEPSLATE + f Ldfy; te field_29032 SMOOTH_BASALT + f Ldfy; tf field_33508 RAW_IRON_BLOCK + f Ldfy; tg field_33509 RAW_COPPER_BLOCK + f Ldfy; th field_33510 RAW_GOLD_BLOCK + f Ldfy; ti field_33918 POTTED_AZALEA + f Ldfy; tj field_33919 POTTED_FLOWERING_AZALEA + f Ldfy; tk field_37572 OCHRE_FROGLIGHT + f Ldfy; tl field_37573 VERDANT_FROGLIGHT + f Ldfy; tm field_37574 PEARLESCENT_FROGLIGHT + f Ldfy; tn field_37575 FROGSPAWN + f Ldfy; to field_38420 REINFORCED_DEEPSLATE + f Ldfy; tp field_42752 DECORATED_POT + f Ldfy; tq field_46797 CRAFTER + f Ldfy; tr field_47336 TRIAL_SPAWNER + f Ldfy; ts field_48851 VAULT + f Ldfy; tt field_49830 HEAVY_CORE + f Ldtb$f; tu field_46288 NOT_CLOSED_SHULKER + f Ldfy; u field_37577 MANGROVE_PLANKS + f Ldfy; v field_40294 BAMBOO_PLANKS + f Ldfy; w field_40295 BAMBOO_MOSAIC + f Ldfy; x field_10394 OAK_SAPLING + f Ldfy; y field_10217 SPRUCE_SAPLING + f Ldfy; z field_10575 BIRCH_SAPLING + m (Ldtc;)I A method_31625 method_31625 + m (Ldtc;)I B method_26143 method_26143 + m (Ldtc;)I C method_33357 method_33357 + m (Ldtc;)I D method_26104 method_26104 + m (Ldtc;)I E method_26145 method_26145 + m (Ldtc;)I F method_26146 method_26146 + m (Ldtc;)I G method_26147 method_26147 + m (Ldtc;)I H method_26148 method_26148 + m (Ldtc;)I I method_26149 method_26149 + m (Ldtc;)I J method_26150 method_26150 + m (Ldtc;)I K method_26151 method_26151 + m (Ldtc;)I L method_26152 method_26152 + m (Ldtc;)I M method_26136 method_26136 + m (Ldtc;)I N method_26105 method_26105 + m (Ldtc;)I O method_26144 method_26144 + m ()V a method_26979 rebuildCache + m (I)Ljava/util/function/ToIntFunction; a method_26107 litBlockEmission + m (ILdtc;)I a method_26108 method_26108 + m (Lakq;Ldfy;)Ldfy; a method_52571 register + m (Lcti;)Ldfy; a method_26109 bed + m (Lcti;Ldtc;)Lepi; a method_26111 method_26111 + m (Lcti;Lepi;)Ldfy; a method_26110 shulkerBox + m (Ldfy;)Ldfy; a method_50000 flowerPot + m (Ldnm;)Ldfy; a method_26106 leaves + m (Ldtc;)I a method_56717 method_56717 + m (Ldtc;Ldcc;Ljd;)Z a method_26113 always + m (Ldtc;Ldcc;Ljd;Lbsx;)Ljava/lang/Boolean; a method_26114 never + m (Ldtr;)Ldfy; a method_45451 woodenButton + m (Lepi;)Ljava/util/function/Function; a method_59823 waterloggedMapColor + m (Lepi;Ldtc;)Lepi; a method_26116 method_26116 + m (Lepi;Lepi;)Ldfy; a method_26117 log + m (Lepi;Lepi;Ldnm;)Ldfy; a method_47375 log + m (Lepi;Lepi;Ldtc;)Lepi; a method_47376 method_47376 + m (Ljava/lang/String;Ldfy;)Ldfy; a method_9492 register + m (Z)Ldfy; a method_26119 pistonBase + m ()Ldfy; b method_45453 stoneButton + m (Lcti;)Ldfy; b method_26120 stainedGlass + m (Ldfy;)Ldfy; b method_55133 legacyStair + m (Ldtc;)I b method_55132 method_55132 + m (Ldtc;Ldcc;Ljd;)Z b method_26122 never + m (Ldtc;Ldcc;Ljd;Lbsx;)Ljava/lang/Boolean; b method_26123 always + m (Lepi;)Ldfy; b method_26115 netherStem + m (Lepi;Ldtc;)Lepi; b method_59824 method_59824 + m (Lepi;Lepi;Ldtc;)Lepi; b method_26118 method_26118 + m ()Ldqj; c method_24165 method_24165 + m (Ldfy;)Ldfy; c method_53980 stair + m (Ldtc;)I c method_41421 method_41421 + m (Ldtc;Ldcc;Ljd;)Z c method_32895 method_32895 + m (Ldtc;Ldcc;Ljd;Lbsx;)Ljava/lang/Boolean; c method_26126 ocelotOrParrot + m (Lepi;)Ldfy; c method_50001 candle + m (Ldtc;)I d method_41422 method_41422 + m (Ldtc;Ldcc;Ljd;)Z d method_39537 method_39537 + m (Ldtc;Ldcc;Ljd;Lbsx;)Z d method_26130 method_26130 + m (Ldtc;)I e method_41423 method_41423 + m (Ldtc;Ldcc;Ljd;)Z e method_26125 method_26125 + m (Ldtc;Ldcc;Ljd;Lbsx;)Z e method_26128 method_26128 + m (Ldtc;)I f method_41424 method_41424 + m (Ldtc;Ldcc;Ljd;)Z f method_53981 method_53981 + m (Ldtc;Ldcc;Ljd;Lbsx;)Z f method_26132 method_26132 + m (Ldtc;)I g method_38230 method_38230 + m (Ldtc;)I h method_36460 method_36460 + m (Ldtc;)I i method_36461 method_36461 + m (Ldtc;)I j method_32894 method_32894 + m (Ldtc;)I k method_26112 method_26112 + m (Ldtc;)I l method_26121 method_26121 + m (Ldtc;)I m method_26124 method_26124 + m (Ldtc;)I n method_26127 method_26127 + m (Ldtc;)I o method_24419 method_24419 + m (Ldtc;)I p method_26131 method_26131 + m (Ldtc;)I q method_26129 method_26129 + m (Ldtc;)I r method_26134 method_26134 + m (Ldtc;)I s method_26135 method_26135 + m (Ldtc;)I t method_36458 method_36458 + m (Ldtc;)I u method_26137 method_26137 + m (Ldtc;)I v method_26138 method_26138 + m (Ldtc;)I w method_26139 method_26139 + m (Ldtc;)I x method_26140 method_26140 + m (Ldtc;)I y method_26141 method_26141 + m (Ldtc;)I z method_26142 method_26142 + m ()V + m ()V +c dgb net/minecraft/class_2256 net/minecraft/world/level/block/BonemealableBlock + m (Laqu;Layw;Ljd;Ldtc;)V a method_9652 performBonemeal + m (Ldcw;Layw;Ljd;Ldtc;)Z a method_9650 isBonemealSuccess + m (Ljd;)Ljd; a method_55769 getParticlePos + m ()Ldgb$a; au_ method_55770 getType + m (Ldcz;Ljd;Ldtc;)Z b method_9651 isValidBonemealTarget +c dgb$a net/minecraft/class_2256$class_9077 net/minecraft/world/level/block/BonemealableBlock$Type + f Ldgb$a; a field_47834 NEIGHBOR_SPREADER + f Ldgb$a; b field_47835 GROWER + f [Ldgb$a; c field_47836 $VALUES + m ()[Ldgb$a; a method_55771 $values + m (Ljava/lang/String;I)V + m ()V +c dgc net/minecraft/class_2260 net/minecraft/world/level/block/BrewingStandBlock + f Lcom/mojang/serialization/MapCodec; a field_46289 CODEC + f [Ldtt; b field_10700 HAS_BOTTLE + f Lexv; c field_10701 SHAPE + m (Ldtb$d;)V + m ()V +c dgd net/minecraft/class_8170 net/minecraft/world/level/block/BrushableBlock + f Lcom/mojang/serialization/MapCodec; a field_46290 CODEC + f I b field_42773 TICK_DELAY + f Lduc; c field_42774 DUSTED + f Ldfy; d field_43232 turnsInto + f Lavo; e field_43233 brushSound + f Lavo; f field_43234 brushCompletedSound + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53982 method_53982 + m ()Ldfy; b method_49810 getTurnsInto + m ()Lavo; c method_49811 getBrushSound + m ()Lavo; d method_49812 getBrushCompletedSound + m (Ldfy;Lavo;Lavo;Ldtb$d;)V + m ()V +c dge net/minecraft/class_2258 net/minecraft/world/level/block/BubbleColumnBlock + f Lcom/mojang/serialization/MapCodec; a field_46291 CODEC + f Ldtt; b field_10680 DRAG_DOWN + f I c field_31038 CHECK_PERIOD + m (Ldcx;Ljd;Ldtc;Ldtc;)V a method_34267 updateColumn + m (Ldcx;Ljd;Ldtc;)V b method_34268 updateColumn + m (Ldtc;)Z m method_9658 canExistIn + m (Ldtc;)Ldtc; n method_34269 getColumnState + m (Ldtb$d;)V + m ()V +c dgf net/minecraft/class_2263 net/minecraft/world/level/block/BucketPickup + m (Lcmx;Ldcx;Ljd;Ldtc;)Lcuq; a method_9700 pickupBlock + m ()Ljava/util/Optional; aw_ method_32351 getPickupSound +c dgg net/minecraft/class_5543 net/minecraft/world/level/block/BuddingAmethystBlock + f Lcom/mojang/serialization/MapCodec; b field_46292 CODEC + f I c field_31039 GROWTH_CHANCE + f [Lji; d field_27172 DIRECTIONS + m (Ldtc;)Z g method_31626 canClusterGrowAtState + m (Ldtb$d;)V + m ()V +c dgh net/minecraft/class_2261 net/minecraft/world/level/block/BushBlock + m (Ldtc;Ldcc;Ljd;)Z b method_9695 mayPlaceOn + m (Ldtb$d;)V +c dgi net/minecraft/class_2269 net/minecraft/world/level/block/ButtonBlock + f Lexv; F field_10730 PRESSED_FLOOR_AABB_Z + f Lexv; G field_10719 PRESSED_NORTH_AABB + f Lexv; H field_10724 PRESSED_SOUTH_AABB + f Lexv; I field_10732 PRESSED_WEST_AABB + f Lexv; J field_10718 PRESSED_EAST_AABB + f I L field_31040 PRESSED_DEPTH + f I M field_31041 UNPRESSED_DEPTH + f Ldtr; N field_42753 type + f I O field_40298 ticksToStayPressed + f Lcom/mojang/serialization/MapCodec; a field_46293 CODEC + f Ldtt; b field_10729 POWERED + f I c field_31042 HALF_AABB_HEIGHT + f I d field_31043 HALF_AABB_WIDTH + f Lexv; e field_10721 CEILING_AABB_X + f Lexv; f field_10727 CEILING_AABB_Z + f Lexv; g field_10723 FLOOR_AABB_X + f Lexv; h field_10716 FLOOR_AABB_Z + f Lexv; i field_10728 NORTH_AABB + f Lexv; j field_10715 SOUTH_AABB + f Lexv; k field_10731 WEST_AABB + f Lexv; l field_10720 EAST_AABB + f Lexv; m field_10717 PRESSED_CEILING_AABB_X + f Lexv; n field_10726 PRESSED_CEILING_AABB_Z + f Lexv; o field_10722 PRESSED_FLOOR_AABB_X + m (Lcmx;Ldcx;Ljd;Z)V a method_9714 playSound + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53983 method_53983 + m (Ldgi;)Ljava/lang/Integer; a method_53984 method_53984 + m (Ldtc;Ldcw;Ljd;Lcmx;)V a method_21845 press + m (Z)Lavo; a method_9712 getSound + m (Ldgi;)Ldtr; b method_53985 method_53985 + m (Ldtc;Ldcw;Ljd;)V d method_9715 checkPressed + m (Ldtc;Ldcw;Ljd;)V e method_9713 updateNeighbours + m (Ldtr;ILdtb$d;)V + m ()V +c dgi$1 net/minecraft/class_2269$1 net/minecraft/world/level/block/ButtonBlock$1 + f [I a field_10734 $SwitchMap$net$minecraft$core$Direction + f [I b field_10733 $SwitchMap$net$minecraft$world$level$block$state$properties$AttachFace + m ()V +c dgj net/minecraft/class_2266 net/minecraft/world/level/block/CactusBlock + f Lcom/mojang/serialization/MapCodec; a field_46294 CODEC + f Lduc; b field_10709 AGE + f I c field_31044 MAX_AGE + f I d field_31045 AABB_OFFSET + f Lexv; e field_10711 COLLISION_SHAPE + f Lexv; f field_10710 OUTLINE_SHAPE + m (Ldtb$d;)V + m ()V +c dgk net/minecraft/class_2272 net/minecraft/world/level/block/CakeBlock + f Lcom/mojang/serialization/MapCodec; a field_46295 CODEC + f I b field_31046 MAX_BITES + f Lduc; c field_10739 BITES + f I d field_27173 FULL_CAKE_SIGNAL + f F e field_31047 AABB_OFFSET + f F f field_31048 AABB_SIZE_PER_BITE + f [Lexv; g field_10738 SHAPE_BY_BITE + m (Ldcx;Ljd;Ldtc;Lcmx;)Lbqr; a method_9719 eat + m (I)I b method_31627 getOutputSignal + m (Ldtb$d;)V + m ()V +c dgl net/minecraft/class_8236 net/minecraft/world/level/block/CalibratedSculkSensorBlock + f Lcom/mojang/serialization/MapCodec; a field_46296 CODEC + f Ldtw; b field_43235 FACING + m (Ldcw;Ljd;Ldtc;Ldqm;)V a method_49813 method_49813 + m (Ldtb$d;)V + m ()V +c dgm net/minecraft/class_3922 net/minecraft/world/level/block/CampfireBlock + f Lcom/mojang/serialization/MapCodec; a field_46297 CODEC + f Lexv; b field_17351 SHAPE + f Ldtt; c field_17352 LIT + f Ldtt; d field_17353 SIGNAL_FIRE + f Ldtt; e field_17354 WATERLOGGED + f Ldtw; f field_17564 FACING + f Lexv; g field_21580 VIRTUAL_FENCE_POST + f I h field_31049 SMOKE_DISTANCE + f Z i field_23881 spawnParticles + f I j field_25182 fireDamage + m (Lbsr;Ldcx;Ljd;Ldtc;)V a method_29288 dowse + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53986 method_53986 + m (Ldcw;Ljd;)Z a method_23895 isSmokeyPos + m (Ldcw;Ljd;ZZ)V a method_17455 makeParticles + m (Ldgm;)Ljava/lang/Integer; a method_53987 method_53987 + m (Ldtb$a;)Z a method_30034 method_30034 + m (Ldgm;)Ljava/lang/Boolean; b method_53988 method_53988 + m (Ldtc;)Z g method_23896 isLitCampfire + m (Ldtc;)Z h method_30035 canLight + m (Ldtc;)Z m method_17456 isSmokeSource + m (ZILdtb$d;)V + m ()V +c dgn net/minecraft/class_5544 net/minecraft/world/level/block/CandleBlock + f Lcom/mojang/serialization/MapCodec; c field_46298 CODEC + f I d field_31050 MIN_CANDLES + f I e field_31051 MAX_CANDLES + f Lduc; f field_27174 CANDLES + f Ldtt; g field_27175 LIT + f Ldtt; h field_27176 WATERLOGGED + f Ljava/util/function/ToIntFunction; i field_27177 LIGHT_EMISSION + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; j field_27178 PARTICLE_OFFSETS + f Lexv; k field_27179 ONE_AABB + f Lexv; l field_27180 TWO_AABB + f Lexv; m field_27181 THREE_AABB + f Lexv; n field_27182 FOUR_AABB + m (Ldtb$a;)Z a method_31628 method_31628 + m (Ldtc;)Z g method_31630 canLight + m ()Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; m method_31629 method_31629 + m (Ldtc;)I m method_31631 method_31631 + m (Ldtb$d;)V + m ()V +c dgo net/minecraft/class_5545 net/minecraft/world/level/block/CandleCakeBlock + f Lcom/mojang/serialization/MapCodec; c field_46299 CODEC + f Ldtt; d field_27183 LIT + f F e field_31052 AABB_OFFSET + f Lexv; f field_27184 CAKE_SHAPE + f Lexv; g field_27185 CANDLE_SHAPE + f Lexv; h field_27186 SHAPE + f Ljava/util/Map; i field_27187 BY_CANDLE + f Ljava/lang/Iterable; j field_27188 PARTICLE_OFFSETS + f Ldgn; k field_46300 candleBlock + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53989 method_53989 + m (Ldgn;)Ldtc; a method_31632 byCandle + m (Ldgo;)Ldfy; a method_53990 method_53990 + m (Ldtc;Ldtb$a;)Z a method_31633 method_31633 + m (Lewy;)Z a method_31634 candleHit + m (Ldtc;)Z g method_31635 canLight + m (Ldfy;Ldtb$d;)V + m ()V +c dgp net/minecraft/class_2577 net/minecraft/world/level/block/CarpetBlock + f Lcom/mojang/serialization/MapCodec; a field_46301 CODEC + f Lexv; b field_11783 SHAPE + m (Ldtb$d;)V + m ()V +c dgq net/minecraft/class_2271 net/minecraft/world/level/block/CarrotBlock + f Lcom/mojang/serialization/MapCodec; a field_46302 CODEC + f [Lexv; b field_10737 SHAPE_BY_AGE + m (Ldtb$d;)V + m ()V +c dgr net/minecraft/class_3711 net/minecraft/world/level/block/CartographyTableBlock + f Lcom/mojang/serialization/MapCodec; a field_46303 CODEC + f Lwz; b field_17355 CONTAINER_TITLE + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_17457 method_17457 + m (Ldtb$d;)V + m ()V +c dgs net/minecraft/class_2276 net/minecraft/world/level/block/CarvedPumpkinBlock + f Lcom/mojang/serialization/MapCodec; a field_46304 CODEC + f Ldtw; b field_10748 FACING + f Ldth; c field_10749 snowGolemBase + f Ldth; d field_10750 snowGolemFull + f Ldth; e field_10752 ironGolemBase + f Ldth; f field_10753 ironGolemFull + f Ljava/util/function/Predicate; g field_10751 PUMPKINS_PREDICATE + m (Ldcw;Ldth$b;)V a method_45454 clearPatternBlocks + m (Ldcw;Ldth$b;Lbsr;Ljd;)V a method_45455 spawnGolemInWorld + m (Ldcw;Ljd;)V a method_9731 trySpawnGolem + m (Ldcz;Ljd;)Z a method_9733 canSpawnGolem + m (Ldtg;)Z a method_51167 method_51167 + m ()Ldth; b method_9732 getOrCreateSnowGolemBase + m (Ldcw;Ldth$b;)V b method_45456 updatePatternBlocks + m (Ldtg;)Z b method_51168 method_51168 + m ()Ldth; m method_9729 getOrCreateSnowGolemFull + m (Ldtc;)Z m method_9728 method_9728 + m ()Ldth; y method_9727 getOrCreateIronGolemBase + m ()Ldth; z method_9730 getOrCreateIronGolemFull + m (Ldtb$d;)V + m ()V +c dgt net/minecraft/class_5546 net/minecraft/world/level/block/CauldronBlock + f Lcom/mojang/serialization/MapCodec; d field_46305 CODEC + f F e field_34027 RAIN_FILL_CHANCE + f F f field_34028 POWDER_SNOW_FILL_CHANCE + m (Ldcw;Lddw$c;)Z a method_31636 shouldHandlePrecipitation + m (Ldtb$d;)V + m ()V +c dgu net/minecraft/class_5803 net/minecraft/world/level/block/CaveVines + f Lexv; t_ field_28687 SHAPE + f Ldtt; u_ field_28688 BERRIES + m (ILdtc;)I a method_37361 method_37361 + m (Lbsr;Ldtc;Ldcw;Ljd;)Lbqr; a method_33619 use + m (Ldtc;)Z h_ method_33618 hasGlowBerries + m (I)Ljava/util/function/ToIntFunction; i_ method_37362 emission + m ()V +c dgv net/minecraft/class_5805 net/minecraft/world/level/block/CaveVinesBlock + f Lcom/mojang/serialization/MapCodec; c field_46306 CODEC + f F g field_31053 CHANCE_OF_BERRIES_ON_GROWTH + m (Ldtb$d;)V + m ()V +c dgw net/minecraft/class_5804 net/minecraft/world/level/block/CaveVinesPlantBlock + f Lcom/mojang/serialization/MapCodec; c field_46307 CODEC + m (Ldtb$d;)V + m ()V +c dgx net/minecraft/class_7713 net/minecraft/world/level/block/CeilingHangingSignBlock + f Lcom/mojang/serialization/MapCodec; a field_46308 CODEC + f Lduc; b field_40300 ROTATION + f Ldtt; c field_40301 ATTACHED + f F d field_40302 AABB_OFFSET + f Lexv; e field_40303 SHAPE + f Ljava/util/Map; i field_40304 AABBS + m (Lcmx;Lewy;Ldrs;Lcuq;)Z a method_50002 shouldTryToChainAnotherHangingSign + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53991 method_53991 + m (Ldup;Ldtb$d;)V + m ()V +c dgy net/minecraft/class_5172 net/minecraft/world/level/block/ChainBlock + f Lcom/mojang/serialization/MapCodec; a field_46309 CODEC + f Ldtt; b field_24411 WATERLOGGED + f F c field_31054 AABB_MIN + f F d field_31055 AABB_MAX + f Lexv; e field_23986 Y_AXIS_AABB + f Lexv; f field_26650 Z_AXIS_AABB + f Lexv; g field_26651 X_AXIS_AABB + m (Ldtb$d;)V + m ()V +c dgy$1 net/minecraft/class_5172$1 net/minecraft/world/level/block/ChainBlock$1 + f [I a field_26652 $SwitchMap$net$minecraft$core$Direction$Axis + m ()V +c dgz net/minecraft/class_5547 net/minecraft/world/level/block/ChangeOverTimeBlock + f I y_ field_31056 SCAN_DISTANCE + m (Laqu;Ljd;Ldtc;)V a method_54763 method_54763 + m (Ldtc;Laqu;Ljd;Layw;)V a_ method_54764 changeOverTime + m ()F ay_ method_33620 getChanceModifier + m ()Ljava/lang/Enum; c method_33622 getAge + m (Ldtc;Laqu;Ljd;Layw;)Ljava/util/Optional; c method_54765 getNextState + m (Ldtc;)Ljava/util/Optional; i_ method_31639 getNext +c dha net/minecraft/class_8167 net/minecraft/world/level/block/CherryLeavesBlock + f Lcom/mojang/serialization/MapCodec; a field_46310 CODEC + m (Ldtb$d;)V + m ()V +c dhb net/minecraft/class_2281 net/minecraft/world/level/block/ChestBlock + f Lcom/mojang/serialization/MapCodec; b field_46311 CODEC + f Ldtw; c field_10768 FACING + f Ldua; d field_10770 TYPE + f Ldtt; e field_10772 WATERLOGGED + f I f field_31057 EVENT_SET_OPEN_COUNT + f I g field_31058 AABB_OFFSET + f I h field_31059 AABB_HEIGHT + f Lexv; i field_10767 NORTH_AABB + f Lexv; j field_10771 SOUTH_AABB + f Lexv; k field_10773 WEST_AABB + f Lexv; l field_10769 EAST_AABB + f Lexv; m field_10774 AABB + f Ldif$b; n field_17356 CHEST_COMBINER + f Ldif$b; o field_17357 MENU_PROVIDER_COMBINER + m (Lcyd;Lji;)Lji; a method_9753 candidatePartnerFacing + m (Ldcc;Ljd;)Z a method_9757 isBlockedChestByBlock + m (Ldcx;Ljd;)Z a method_9756 isChestBlockedAt + m (Ldhb;Ldtc;Ldcw;Ljd;Z)Lbqk; a method_17458 getContainer + m (Ldrl;)Ldif$b; a method_24166 opennessCombiner + m (Ldtb$d;)Ldhb; a method_53992 method_53992 + m (Ldcx;Ljd;)Z b method_9754 isCatSittingOnChest + m ()Lavw; c method_9755 getOpenChestStat + m (Ldcx;Ljd;)Z c method_24168 method_24168 + m ()Ldqj; d method_31641 blockEntityType + m (Ldtc;)Ldif$a; g method_24169 getBlockType + m (Ldtc;)Lji; h method_9758 getConnectedDirection + m ()Ldqj; m method_53993 method_53993 + m (Ldtb$d;Ljava/util/function/Supplier;)V + m ()V +c dhb$1 net/minecraft/class_2281$1 net/minecraft/world/level/block/ChestBlock$1 + m ()Ljava/util/Optional; a method_24170 acceptNone + m (Ldqo;)Ljava/util/Optional; a method_17460 acceptSingle + m (Ldqo;Ldqo;)Ljava/util/Optional; a method_17461 acceptDouble + m ()V +c dhb$2 net/minecraft/class_2281$2 net/minecraft/world/level/block/ChestBlock$2 + m ()Ljava/util/Optional; a method_24171 acceptNone + m (Ldqo;)Ljava/util/Optional; a method_17462 acceptSingle + m (Ldqo;Ldqo;)Ljava/util/Optional; a method_17463 acceptDouble + m ()V +c dhb$2$1 net/minecraft/class_2281$2$1 net/minecraft/world/level/block/ChestBlock$2$1 + f Ldqo; a field_17358 val$first + f Ldqo; b field_17359 val$second + f Lbqk; c field_17360 val$container + m (Ldhb$2;Ldqo;Ldqo;Lbqk;)V +c dhb$3 net/minecraft/class_2281$3 net/minecraft/world/level/block/ChestBlock$3 + f Ldrl; a field_21782 val$entity + m ()Lit/unimi/dsi/fastutil/floats/Float2FloatFunction; a method_24172 acceptNone + m (Ldqo;)Lit/unimi/dsi/fastutil/floats/Float2FloatFunction; a method_23898 acceptSingle + m (Ldqo;Ldqo;)Lit/unimi/dsi/fastutil/floats/Float2FloatFunction; a method_23899 acceptDouble + m (Ldqo;Ldqo;F)F a method_23900 method_23900 + m (Ldrl;)V +c dhb$4 net/minecraft/class_2281$4 net/minecraft/world/level/block/ChestBlock$4 + f [I a field_10775 $SwitchMap$net$minecraft$core$Direction + m ()V +c dhc net/minecraft/class_7714 net/minecraft/world/level/block/ChiseledBookShelfBlock + f Lcom/mojang/serialization/MapCodec; a field_46312 CODEC + f I b field_41307 BOOKS_PER_ROW + f Ljava/util/List; c field_41308 SLOT_OCCUPIED_PROPERTIES + f I d field_41309 MAX_BOOKS_IN_STORAGE + m (F)I a method_47577 getSection + m (Ldcw;Ljd;Lcmx;Ldqq;I)V a method_45457 removeBook + m (Ldcw;Ljd;Lcmx;Ldqq;Lcuq;I)V a method_45458 addBook + m (Ldtd$a;Lduf;)V a method_47578 method_47578 + m (Lewy;Ldtc;)Ljava/util/OptionalInt; a method_47580 getHitSlot + m (Lewy;Lji;)Ljava/util/Optional; a method_47579 getRelativeHitCoordinatesForBlockFace + m (Lexb;)Ljava/util/OptionalInt; a method_55772 method_55772 + m (Ldtb$d;)V + m ()V +c dhc$1 net/minecraft/class_7714$1 net/minecraft/world/level/block/ChiseledBookShelfBlock$1 + f [I a field_41310 $SwitchMap$net$minecraft$core$Direction + m ()V +c dhd net/minecraft/class_2279 net/minecraft/world/level/block/ChorusFlowerBlock + f Lcom/mojang/serialization/MapCodec; a field_46313 CODEC + f I b field_31060 DEAD_AGE + f Lduc; c field_10762 AGE + f Lexv; d field_45145 BLOCK_SUPPORT_SHAPE + f Ldfy; e field_10763 plant + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53994 method_53994 + m (Ldcw;Ljd;)V a method_9747 placeDeadFlower + m (Ldcw;Ljd;I)V a method_9745 placeGrownFlower + m (Ldcx;Ljd;Layw;I)V a method_9744 generatePlant + m (Ldcx;Ljd;Layw;Ljd;II)V a method_9748 growTreeRecursive + m (Ldhd;)Ldfy; a method_53995 method_53995 + m (Ldcz;Ljd;Lji;)Z b method_9746 allNeighborsEmpty + m (Ldfy;Ldtb$d;)V + m ()V +c dhe net/minecraft/class_2283 net/minecraft/world/level/block/ChorusPlantBlock + f Lcom/mojang/serialization/MapCodec; a field_46314 CODEC + m (Ldcc;Ljd;Ldtc;)Ldtc; a method_9759 getStateWithConnections + m (Ldtb$d;)V + m ()V +c dhf net/minecraft/class_2282 net/minecraft/world/level/block/CocoaBlock + f [Lexv; F field_10780 SOUTH_AABB + f Lcom/mojang/serialization/MapCodec; a field_46315 CODEC + f I b field_31061 MAX_AGE + f Lduc; c field_10779 AGE + f I d field_31062 AGE_0_WIDTH + f I e field_31063 AGE_0_HEIGHT + f I f field_31064 AGE_0_HALFWIDTH + f I g field_31065 AGE_1_WIDTH + f I h field_31066 AGE_1_HEIGHT + f I i field_31067 AGE_1_HALFWIDTH + f I j field_31068 AGE_2_WIDTH + f I k field_31069 AGE_2_HEIGHT + f I l field_31070 AGE_2_HALFWIDTH + f [Lexv; m field_10778 EAST_AABB + f [Lexv; n field_10776 WEST_AABB + f [Lexv; o field_10777 NORTH_AABB + m (Ldtb$d;)V + m ()V +c dhf$1 net/minecraft/class_2282$1 net/minecraft/world/level/block/CocoaBlock$1 + f [I a field_10781 $SwitchMap$net$minecraft$core$Direction + m ()V +c dhg net/minecraft/class_8812 net/minecraft/world/level/block/ColoredFallingBlock + f Lcom/mojang/serialization/MapCodec; a field_46316 CODEC + f Laxh; b field_46317 dustColor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53996 method_53996 + m (Ldhg;)Laxh; a method_53997 method_53997 + m (Laxh;Ldtb$d;)V + m ()V +c dhh net/minecraft/class_2288 net/minecraft/world/level/block/CommandBlock + f Lcom/mojang/serialization/MapCodec; a field_46318 CODEC + f Ldtw; b field_10791 FACING + f Ldtt; c field_10793 CONDITIONAL + f Lorg/slf4j/Logger; d field_10792 LOGGER + f Z e field_27192 automatic + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53998 method_53998 + m (Ldcw;Ljd;Lji;)V a method_9779 executeChain + m (Ldhh;)Ljava/lang/Boolean; a method_53999 method_53999 + m (Ldtc;Ldcw;Ljd;Ldbx;Z)V a method_9780 execute + m (ZLdtb$d;)V + m ()V +c dhi net/minecraft/class_2286 net/minecraft/world/level/block/ComparatorBlock + f Lcom/mojang/serialization/MapCodec; a field_46319 CODEC + f Ldua; b field_10789 MODE + m (Ldcw;Lji;Ljd;)Lcja; a method_9774 getItemFrame + m (Lji;Lcja;)Z a method_9772 method_9772 + m (Ldcw;Ljd;Ldtc;)I e method_9773 calculateOutputSignal + m (Ldcw;Ljd;Ldtc;)V f method_9775 refreshOutputState + m (Ldtb$d;)V + m ()V +c dhj net/minecraft/class_3962 net/minecraft/world/level/block/ComposterBlock + f Lcom/mojang/serialization/MapCodec; a field_46320 CODEC + f I b field_31071 READY + f I c field_31072 MIN_LEVEL + f I d field_31073 MAX_LEVEL + f Lduc; e field_17565 LEVEL + f Lit/unimi/dsi/fastutil/objects/Object2FloatMap; f field_17566 COMPOSTABLES + f I g field_31074 AABB_SIDE_THICKNESS + f Lexv; h field_17567 OUTER_SHAPE + f [Lexv; i field_17568 SHAPES + m (FLdcv;)V a method_17753 add + m (Lbsr;Ldtc;Laqu;Lcuq;Ljd;)Ldtc; a method_26373 insertItem + m (Lbsr;Ldtc;Ldcw;Ljd;)Ldtc; a method_26374 extractProduce + m (Lbsr;Ldtc;Ldcx;Ljd;)Ldtc; a method_17759 empty + m (Lbsr;Ldtc;Ldcx;Ljd;Lcuq;)Ldtc; a method_17756 addItem + m (Ldcw;Ljd;Z)V a method_18027 handleFill + m ([Lexv;)V a method_17755 method_17755 + m ()V b method_17758 bootStrap + m (Ldtb$d;)V + m ()V +c dhj$a net/minecraft/class_3962$class_3925 net/minecraft/world/level/block/ComposterBlock$EmptyContainer + m ()V +c dhj$b net/minecraft/class_3962$class_3963 net/minecraft/world/level/block/ComposterBlock$InputContainer + f Ldtc; b field_17569 state + f Ldcx; c field_17570 level + f Ljd; d field_17571 pos + f Z e field_17572 changed + m (Ldtc;Ldcx;Ljd;)V +c dhj$c net/minecraft/class_3962$class_3964 net/minecraft/world/level/block/ComposterBlock$OutputContainer + f Ldtc; b field_17573 state + f Ldcx; c field_17574 level + f Ljd; d field_17575 pos + f Z e field_17576 changed + m (Ldtc;Ldcx;Ljd;Lcuq;)V +c dhk net/minecraft/class_2292 net/minecraft/world/level/block/ConcretePowderBlock + f Lcom/mojang/serialization/MapCodec; a field_46321 CODEC + f Ldfy; b field_10810 concrete + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54000 method_54000 + m (Ldcc;Ljd;)Z a method_9798 touchesLiquid + m (Ldcc;Ljd;Ldtc;)Z a method_24279 shouldSolidify + m (Ldhk;)Ldfy; a method_54001 method_54001 + m (Ldtc;)Z n method_9799 canSolidify + m (Ldfy;Ldtb$d;)V + m ()V +c dhl net/minecraft/class_2289 net/minecraft/world/level/block/ConduitBlock + f Lcom/mojang/serialization/MapCodec; a field_46322 CODEC + f Ldtt; b field_10794 WATERLOGGED + f Lexv; c field_10795 SHAPE + f I d field_31075 SIZE + m (Ldtb$d;)V + m ()V +c dhm net/minecraft/class_8922 net/minecraft/world/level/block/CopperBulbBlock + f Lcom/mojang/serialization/MapCodec; a field_47080 CODEC + f Ldtt; b field_47081 POWERED + f Ldtt; c field_47082 LIT + m (Ldtc;Laqu;Ljd;)V a method_55373 checkAndFlip + m (Ldtb$d;)V + m ()V +c dhn net/minecraft/class_2298 net/minecraft/world/level/block/CoralBlock + f Lcom/mojang/serialization/MapCodec; a field_46323 DEAD_CORAL_FIELD + f Lcom/mojang/serialization/MapCodec; b field_46324 CODEC + f Ldfy; c field_10818 deadBlock + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54002 method_54002 + m (Ldcc;Ljd;)Z a method_9808 scanForWater + m (Ldhn;)Ldfy; a method_54003 method_54003 + m (Ldfy;Ldtb$d;)V + m ()V +c dho net/minecraft/class_2297 net/minecraft/world/level/block/CoralFanBlock + f Lcom/mojang/serialization/MapCodec; b field_46325 CODEC + f Ldfy; c field_10817 deadBlock + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54004 method_54004 + m (Ldho;)Ldfy; a method_54005 method_54005 + m (Ldfy;Ldtb$d;)V + m ()V +c dhp net/minecraft/class_2301 net/minecraft/world/level/block/CoralPlantBlock + f Lcom/mojang/serialization/MapCodec; a field_46326 CODEC + f F b field_31076 AABB_OFFSET + f Lexv; c field_10834 SHAPE + f Ldfy; e field_10833 deadBlock + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54006 method_54006 + m (Ldhp;)Ldfy; a method_54007 method_54007 + m (Ldfy;Ldtb$d;)V + m ()V +c dhq net/minecraft/class_2299 net/minecraft/world/level/block/CoralWallFanBlock + f Lcom/mojang/serialization/MapCodec; e field_46327 CODEC + f Ldfy; f field_10819 deadBlock + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54008 method_54008 + m (Ldhq;)Ldfy; a method_54009 method_54009 + m (Ldfy;Ldtb$d;)V + m ()V +c dhr net/minecraft/class_8886 net/minecraft/world/level/block/CrafterBlock + f Lcom/mojang/serialization/MapCodec; a field_46798 CODEC + f Ldtt; b field_46799 CRAFTING + f Ldtt; c field_46800 TRIGGERED + f Ldua; d field_46801 ORIENTATION + f I e field_46802 MAX_CRAFTING_TICKS + f I f field_47521 CRAFTING_TICK_DELAY + f Lcza; g field_46803 RECIPE_CACHE + f I h field_50015 CRAFTER_ADVANCEMENT_DIAMETER + m (Laqu;Ljd;Ldqv;Lcuq;Ldtc;Lczb;)V a method_54476 dispenseItem + m (Lcuq;)V a method_54474 method_54474 + m (Ldcw;Lcyp;)Ljava/util/Optional; a method_54475 getPotentialResults + m (Ldqh;Z)V a method_54477 setBlockEntityTriggered + m (Ldtc;Laqu;Ljd;)V a method_54478 dispenseFrom + m (Ldtb$d;)V + m ()V +c dhr$1 net/minecraft/class_8886$1 net/minecraft/world/level/block/CrafterBlock$1 + f [I a field_46804 $SwitchMap$net$minecraft$core$Direction + m ()V +c dhs net/minecraft/class_2304 net/minecraft/world/level/block/CraftingTableBlock + f Lcom/mojang/serialization/MapCodec; a field_46328 CODEC + f Lwz; b field_17362 CONTAINER_TITLE + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_17466 method_17466 + m (Ldtb$d;)V + m ()V +c dht net/minecraft/class_2302 net/minecraft/world/level/block/CropBlock + f [Lexv; a field_10836 SHAPE_BY_AGE + f Lcom/mojang/serialization/MapCodec; d field_46329 CODEC + f I e field_31079 MAX_AGE + f Lduc; f field_10835 AGE + m (Ldcw;)I a method_9831 getBonemealAgeIncrease + m (Ldcw;Ljd;Ldtc;)V a method_9826 growCrops + m (Ldcz;Ljd;)Z a method_52572 hasSufficientLight + m (Ldfy;Ldcc;Ljd;)F a method_9830 getGrowthSpeed + m ()Lduc; b method_9824 getAgeProperty + m (I)Ldtc; b method_9828 getStateForAge + m ()I c method_9827 getMaxAge + m ()Ldcv; d method_9832 getBaseSeedId + m (Ldtc;)I g method_9829 getAge + m (Ldtc;)Z h method_9825 isMaxAge + m (Ldtb$d;)V + m ()V +c dhu net/minecraft/class_2310 net/minecraft/world/level/block/CrossCollisionBlock + f Ldtt; a field_10905 NORTH + f Ldtt; b field_10907 EAST + f Ldtt; c field_10904 SOUTH + f Ldtt; d field_10903 WEST + f Ldtt; e field_10900 WATERLOGGED + f Ljava/util/Map; f field_10902 PROPERTY_BY_DIRECTION + f [Lexv; g field_10901 collisionShapeByIndex + f [Lexv; h field_10906 shapeByIndex + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; i field_19313 stateToIndex + m (FFFFF)[Lexv; a method_9984 makeShapes + m (Ljava/util/Map$Entry;)Z a method_9986 method_9986 + m (Lji;)I a method_9985 indexFor + m (Ldtc;)I g method_9987 getAABBIndex + m (Ldtc;)I m method_20517 method_20517 + m (FFFFFLdtb$d;)V + m ()V +c dhu$1 net/minecraft/class_2310$1 net/minecraft/world/level/block/CrossCollisionBlock$1 + f [I a field_10909 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_10908 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c dhv net/minecraft/class_4848 net/minecraft/world/level/block/CryingObsidianBlock + f Lcom/mojang/serialization/MapCodec; a field_46330 CODEC + m (Ldtb$d;)V + m ()V +c dhw net/minecraft/class_2309 net/minecraft/world/level/block/DaylightDetectorBlock + f Lcom/mojang/serialization/MapCodec; a field_46331 CODEC + f Lduc; b field_10897 POWER + f Ldtt; c field_10899 INVERTED + f Lexv; d field_10898 SHAPE + m (Ldcw;Ljd;Ldtc;Ldqw;)V a method_31642 tickEntity + m (Ldtc;Ldcw;Ljd;)V d method_9983 updateSignalStrength + m (Ldtb$d;)V + m ()V +c dhx net/minecraft/class_2311 net/minecraft/world/level/block/DeadBushBlock + f Lcom/mojang/serialization/MapCodec; a field_46332 CODEC + f F b field_31080 AABB_OFFSET + f Lexv; c field_10910 SHAPE + m (Ldtb$d;)V + m ()V +c dhy net/minecraft/class_8168 net/minecraft/world/level/block/DecoratedPotBlock + f Lcom/mojang/serialization/MapCodec; a field_46333 CODEC + f Lakr; b field_43236 SHERDS_DYNAMIC_DROP_ID + f Ldtt; c field_43237 CRACKED + f Lexv; d field_42754 BOUNDING_BOX + f Ldtw; e field_42755 HORIZONTAL_FACING + f Ldtt; f field_42756 WATERLOGGED + m (Ldqx;Ljava/util/function/Consumer;)V a method_49815 method_49815 + m (Ljava/util/List;Ljava/util/Optional;)V a method_51510 method_51510 + m (Ldtb$d;)V + m ()V +c dhz net/minecraft/class_2313 net/minecraft/world/level/block/DetectorRailBlock + f Lcom/mojang/serialization/MapCodec; d field_46334 CODEC + f Ldua; e field_10914 SHAPE + f Ldtt; f field_10913 POWERED + f I g field_31081 PRESSED_CHECK_PERIOD + m (Lbsr;)Z a method_31643 method_31643 + m (Ldcw;Ljd;Ldtc;)V a method_10002 checkPressed + m (Ldcw;Ljd;Ljava/lang/Class;Ljava/util/function/Predicate;)Ljava/util/List; a method_10001 getInteractingMinecartOfType + m (Ljd;)Lewx; a method_10004 getSearchBB + m (Lbsr;)Z b method_31644 method_31644 + m (Ldcw;Ljd;Ldtc;Z)V b method_10003 updatePowerToConnected + m (Ldtb$d;)V + m ()V +c dhz$1 net/minecraft/class_2313$1 net/minecraft/world/level/block/DetectorRailBlock$1 + f [I a field_10917 $SwitchMap$net$minecraft$world$level$block$state$properties$RailShape + f [I b field_10916 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I c field_10915 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c dia net/minecraft/class_2312 net/minecraft/world/level/block/DiodeBlock + f Lexv; c field_10912 SHAPE + f Ldtt; d field_10911 POWERED + m (Ldcc;Ljd;Ldtc;)I a method_9993 getOutputSignal + m (Ldcw;Ljd;Ldtc;)Z a method_9990 shouldTurnOn + m (Lddm;Ljd;Ldtc;)I a method_10000 getAlternateSignal + m ()Z b method_49816 sideInputDiodesOnly + m (Ldcc;Ljd;Ldtc;)Z b method_9988 shouldPrioritize + m (Ldcw;Ljd;Ldtc;)I b method_9991 getInputSignal + m (Ldcz;Ljd;Ldtc;)Z b method_53789 canSurviveOn + m (Ldcw;Ljd;Ldtc;)V c method_9998 checkTickOnNeighbor + m (Ldcz;Ljd;Ldtc;)Z c method_9996 isLocked + m (Ldcw;Ljd;Ldtc;)V d method_9997 updateNeighborsInFront + m (Ldtc;)I g method_9992 getDelay + m (Ldtc;)Z m method_9999 isDiode + m (Ldtb$d;)V + m ()V +c dib net/minecraft/class_2318 net/minecraft/world/level/block/DirectionalBlock + f Ldtw; a field_10927 FACING + m (Ldtb$d;)V + m ()V +c dic net/minecraft/class_2369 net/minecraft/world/level/block/DirtPathBlock + f Lcom/mojang/serialization/MapCodec; a field_46335 CODEC + f Lexv; b field_11106 SHAPE + m (Ldtb$d;)V + m ()V +c did net/minecraft/class_2315 net/minecraft/world/level/block/DispenserBlock + f Lcom/mojang/serialization/MapCodec; a field_46336 CODEC + f Ldtw; b field_10918 FACING + f Ldtt; c field_10920 TRIGGERED + f Ljava/util/Map; d field_10919 DISPENSER_REGISTRY + f Lorg/slf4j/Logger; e field_46212 LOGGER + f Lkw; f field_51412 DEFAULT_BEHAVIOR + f I g field_31082 TRIGGER_DURATION + m (Laqu;Ldtc;Ljd;)V a method_10012 dispenseFrom + m (Ldcv;)V a method_58681 registerProjectileBehavior + m (Ldcv;Lkx;)V a method_10009 registerBehavior + m (Ldcw;Lcuq;)Lkx; a method_10011 getDispenseMethod + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap;)V a method_10008 method_10008 + m (Lku;)Ljw; a method_58682 getDispensePosition + m (Lku;DLexc;)Ljw; a method_10010 getDispensePosition + m (Ldtb$d;)V + m ()V +c die net/minecraft/class_2323 net/minecraft/world/level/block/DoorBlock + f Lcom/mojang/serialization/MapCodec; a field_46337 CODEC + f Ldtw; b field_10938 FACING + f Ldtt; c field_10945 OPEN + f Ldua; d field_10941 HINGE + f Ldtt; e field_10940 POWERED + f Ldua; f field_10946 HALF + f F g field_31083 AABB_DOOR_THICKNESS + f Lexv; h field_10942 SOUTH_AABB + f Lexv; i field_10939 NORTH_AABB + f Lexv; j field_10944 WEST_AABB + f Lexv; k field_10943 EAST_AABB + f Ldtr; l field_42757 type + m (Lbsr;Ldcw;Ldtc;Ljd;Z)V a method_10033 setOpen + m (Lbsr;Ldcw;Ljd;Z)V a method_10036 playSound + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54010 method_54010 + m (Ldcw;Ljd;)Z a method_24795 isWoodenDoor + m ()Ldtr; b method_51169 type + m (Lcyd;)Ldtx; b method_10035 getHinge + m (Ldtc;)Z m method_30841 isOpen + m (Ldtc;)Z n method_24796 isWoodenDoor + m (Ldtr;Ldtb$d;)V + m ()V +c die$1 net/minecraft/class_2323$1 net/minecraft/world/level/block/DoorBlock$1 + f [I a field_10948 $SwitchMap$net$minecraft$core$Direction + f [I b field_10947 $SwitchMap$net$minecraft$world$level$pathfinder$PathComputationType + m ()V +c dif net/minecraft/class_4732 net/minecraft/world/level/block/DoubleBlockCombiner + m (Ldqj;Ljava/util/function/Function;Ljava/util/function/Function;Ldtw;Ldtc;Ldcx;Ljd;Ljava/util/function/BiPredicate;)Ldif$c; a method_24173 combineWithNeigbour + m ()V +c dif$a net/minecraft/class_4732$class_4733 net/minecraft/world/level/block/DoubleBlockCombiner$BlockType + f Ldif$a; a field_21783 SINGLE + f Ldif$a; b field_21784 FIRST + f Ldif$a; c field_21785 SECOND + f [Ldif$a; d field_21786 $VALUES + m ()[Ldif$a; a method_36705 $values + m (Ljava/lang/String;I)V + m ()V +c dif$b net/minecraft/class_4732$class_3923 net/minecraft/world/level/block/DoubleBlockCombiner$Combiner + m (Ljava/lang/Object;)Ljava/lang/Object; a method_17464 acceptSingle + m (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; a method_17465 acceptDouble + m ()Ljava/lang/Object; b method_24174 acceptNone +c dif$c net/minecraft/class_4732$class_4734 net/minecraft/world/level/block/DoubleBlockCombiner$NeighborCombineResult +c dif$c$a net/minecraft/class_4732$class_4734$class_4735 net/minecraft/world/level/block/DoubleBlockCombiner$NeighborCombineResult$Double + f Ljava/lang/Object; a field_21787 first + f Ljava/lang/Object; b field_21788 second + m (Ljava/lang/Object;Ljava/lang/Object;)V +c dif$c$b net/minecraft/class_4732$class_4734$class_4736 net/minecraft/world/level/block/DoubleBlockCombiner$NeighborCombineResult$Single + f Ljava/lang/Object; a field_21789 single + m (Ljava/lang/Object;)V +c dig net/minecraft/class_2320 net/minecraft/world/level/block/DoublePlantBlock + f Lcom/mojang/serialization/MapCodec; a field_46338 CODEC + f Ldua; b field_10929 HALF + m (Ldcx;Ldtc;Ljd;I)V a method_10021 placeAt + m (Ldcw;Ljd;Ldtc;Lcmx;)V b method_30036 preventDropFromBottomPart + m (Ldcz;Ljd;Ldtc;)Ldtc; c method_37458 copyWaterloggedFrom + m (Ldtb$d;)V + m ()V +c dih net/minecraft/class_2328 net/minecraft/world/level/block/DragonEggBlock + f Lcom/mojang/serialization/MapCodec; a field_46339 CODEC + f Lexv; b field_10950 SHAPE + m (Ldtc;Ldcw;Ljd;)V d method_10047 teleport + m (Ldtb$d;)V + m ()V +c dii net/minecraft/class_2431 net/minecraft/world/level/block/DropExperienceBlock + f Lcom/mojang/serialization/MapCodec; a field_46340 CODEC + f Lbpw; b field_27195 xpRange + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54011 method_54011 + m (Ldii;)Lbpw; a method_54012 method_54012 + m (Lbpw;Ldtb$d;)V + m ()V +c dij net/minecraft/class_2325 net/minecraft/world/level/block/DropperBlock + f Lcom/mojang/serialization/MapCodec; e field_46341 CODEC + f Lorg/slf4j/Logger; f field_46213 LOGGER + f Lkx; g field_10949 DISPENSE_BEHAVIOUR + m (Ldtb$d;)V + m ()V +c dik net/minecraft/class_2331 net/minecraft/world/level/block/EnchantingTableBlock + f Lcom/mojang/serialization/MapCodec; a field_46342 CODEC + f Lexv; b field_10951 SHAPE + f Ljava/util/List; c field_36535 BOOKSHELF_OFFSETS + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_17467 method_17467 + m (Ldcw;Ljd;Ljd;)Z a method_40445 isValidBookShelf + m (Ljd;)Z a method_40446 method_40446 + m (Ldtb$d;)V + m ()V +c dil net/minecraft/class_2329 net/minecraft/world/level/block/EndGatewayBlock + f Lcom/mojang/serialization/MapCodec; a field_46343 CODEC + m (Lbsr;)Lexc; a method_60989 calculateExitMovement + m (Ldtb$d;)V + m ()V +c dim net/minecraft/class_2334 net/minecraft/world/level/block/EndPortalBlock + f Lcom/mojang/serialization/MapCodec; a field_46344 CODEC + f Lexv; b field_10959 SHAPE + m (Ldtb$d;)V + m ()V +c din net/minecraft/class_2333 net/minecraft/world/level/block/EndPortalFrameBlock + f Lcom/mojang/serialization/MapCodec; a field_46345 CODEC + f Ldtw; b field_10954 FACING + f Ldtt; c field_10958 HAS_EYE + f Lexv; d field_10956 BASE_SHAPE + f Lexv; e field_10953 EYE_SHAPE + f Lexv; f field_10955 FULL_SHAPE + f Ldth; g field_10957 portalShape + m ()Ldth; b method_10054 getOrCreatePortalShape + m (Ldtb$d;)V + m ()V +c dio net/minecraft/class_5551 net/minecraft/world/level/block/EndRodBlock + f Lcom/mojang/serialization/MapCodec; b field_46346 CODEC + m (Ldtb$d;)V + m ()V +c dip net/minecraft/class_2336 net/minecraft/world/level/block/EnderChestBlock + f Lcom/mojang/serialization/MapCodec; b field_46347 CODEC + f Ldtw; c field_10966 FACING + f Ldtt; d field_10968 WATERLOGGED + f Lexv; e field_10967 SHAPE + f Lwz; f field_17363 CONTAINER_TITLE + m (Lcrh;ILcmw;Lcmx;)Lcpu; a method_55773 method_55773 + m ()Ldqj; m method_24205 method_24205 + m (Ldtb$d;)V + m ()V +c diq net/minecraft/class_2343 net/minecraft/world/level/block/EntityBlock + m (Laqu;Ldqh;)Ldyb; a method_32896 getListener + m (Ldcw;Ldtc;Ldqj;)Ldqi; a method_31645 getTicker + m (Ljd;Ldtc;)Ldqh; a method_10123 newBlockEntity +c dir net/minecraft/class_8574 net/minecraft/world/level/block/EquipableCarvedPumpkinBlock + f Lcom/mojang/serialization/MapCodec; c field_46348 CODEC + m (Ldtb$d;)V + m ()V +c dis net/minecraft/class_2341 net/minecraft/world/level/block/FaceAttachedHorizontalDirectionalBlock + f Ldua; K field_11007 FACE + m (Ldcz;Ljd;Lji;)Z b method_20046 canAttach + m (Ldtc;)Lji; m method_10119 getConnectedDirection + m (Ldtb$d;)V + m ()V +c dis$1 net/minecraft/class_2341$1 net/minecraft/world/level/block/FaceAttachedHorizontalDirectionalBlock$1 + f [I a field_11008 $SwitchMap$net$minecraft$world$level$block$state$properties$AttachFace + m ()V +c dit net/minecraft/class_5688 net/minecraft/world/level/block/Fallable + m (Lbsr;)Lbrk; a method_32898 getFallDamageSource + m (Ldcw;Ljd;Lcjg;)V a method_10129 onBrokenAfterFall + m (Ldcw;Ljd;Ldtc;Ldtc;Lcjg;)V a method_10127 onLand +c diu net/minecraft/class_2346 net/minecraft/world/level/block/FallingBlock + m (Lcjg;)V a method_10132 falling + m ()I b method_26154 getDelayAfterPlace + m (Ldtc;Ldcc;Ljd;)I b method_10130 getDustColor + m (Ldtc;)Z m method_10128 isFree + m (Ldtb$d;)V +c div net/minecraft/class_2344 net/minecraft/world/level/block/FarmBlock + f Lcom/mojang/serialization/MapCodec; a field_46349 CODEC + f Lduc; b field_11009 MOISTURE + f Lexv; c field_11010 SHAPE + f I d field_31084 MAX_MOISTURE + m (Lbsr;Ldtc;Ldcw;Ljd;)V a method_10125 turnToDirt + m (Ldcc;Ljd;)Z a method_10124 shouldMaintainFarmland + m (Ldcz;Ljd;)Z a method_10126 isNearWater + m (Ldtb$d;)V + m ()V +c diw net/minecraft/class_2354 net/minecraft/world/level/block/FenceBlock + f Lcom/mojang/serialization/MapCodec; i field_46350 CODEC + f [Lexv; j field_11066 occlusionByIndex + m (Ldtc;ZLji;)Z a method_10184 connectsTo + m (Ldtc;)Z m method_26375 isSameFence + m (Ldtb$d;)V + m ()V +c dix net/minecraft/class_2349 net/minecraft/world/level/block/FenceGateBlock + f Lexv; F field_11027 X_OCCLUSION_SHAPE_LOW + f Ldup; G field_42758 type + f Lcom/mojang/serialization/MapCodec; a field_46351 CODEC + f Ldtt; b field_11026 OPEN + f Ldtt; c field_11021 POWERED + f Ldtt; d field_11024 IN_WALL + f Lexv; e field_11022 Z_SHAPE + f Lexv; f field_11017 X_SHAPE + f Lexv; g field_11025 Z_SHAPE_LOW + f Lexv; h field_11016 X_SHAPE_LOW + f Lexv; i field_11028 Z_COLLISION_SHAPE + f Lexv; j field_11019 X_COLLISION_SHAPE + f Lexv; k field_40744 Z_SUPPORT_SHAPE + f Lexv; l field_40745 X_SUPPORT_SHAPE + f Lexv; m field_11018 Z_OCCLUSION_SHAPE + f Lexv; n field_11023 X_OCCLUSION_SHAPE + f Lexv; o field_11020 Z_OCCLUSION_SHAPE_LOW + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54013 method_54013 + m (Ldix;)Ldup; a method_54014 method_54014 + m (Ldtc;Lji;)Z a method_16703 connectsToDirection + m (Ldtc;)Z m method_10138 isWall + m (Ldup;Ldtb$d;)V + m ()V +c dix$1 net/minecraft/class_2349$1 net/minecraft/world/level/block/FenceGateBlock$1 + f [I a field_11029 $SwitchMap$net$minecraft$world$level$pathfinder$PathComputationType + m ()V +c diy net/minecraft/class_2358 net/minecraft/world/level/block/FireBlock + f Lexv; F field_26657 SOUTH_AABB + f Ljava/util/Map; G field_26658 shapesCache + f I H field_31085 IGNITE_INSTANT + f I I field_31086 IGNITE_EASY + f I J field_31087 IGNITE_MEDIUM + f I K field_31088 IGNITE_HARD + f I L field_31089 BURN_INSTANT + f I M field_31090 BURN_EASY + f I N field_31091 BURN_MEDIUM + f I O field_31092 BURN_HARD + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; P field_11095 igniteOdds + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; Q field_11091 burnOdds + f Lcom/mojang/serialization/MapCodec; c field_46352 CODEC + f I d field_31093 MAX_AGE + f Lduc; e field_11092 AGE + f Ldtt; f field_11096 NORTH + f Ldtt; g field_11094 EAST + f Ldtt; h field_11089 SOUTH + f Ldtt; i field_11088 WEST + f Ldtt; j field_11093 UP + f Ljava/util/Map; k field_11090 PROPERTY_BY_DIRECTION + f Lexv; l field_26653 UP_AABB + f Lexv; m field_26654 WEST_AABB + f Lexv; n field_26655 EAST_AABB + f Lexv; o field_26656 NORTH_AABB + m (Layw;)I a method_26155 getFireTickDelay + m (Ldcw;Ljd;)Z a method_10192 isNearRain + m (Ldcw;Ljd;ILayw;I)V a method_10196 checkBurnOut + m (Ldcx;Ljd;I)Ldtc; a method_24855 getStateWithAge + m (Ldcz;Ljd;)I a method_10194 getIgniteOdds + m (Ldfy;II)V a method_10189 setFlammable + m (Ljava/util/Map$Entry;)Z a method_10197 method_10197 + m ()V b method_10199 bootStrap + m (Ldcc;Ljd;)Ldtc; b method_10198 getStateForPlacement + m (Ldcc;Ljd;)Z d method_10193 isValidFireLocation + m (Ldtc;)Lexv; m method_31016 calculateShape + m (Ldtc;)I n method_10190 getBurnOdds + m (Ldtc;)I o method_10191 getIgniteOdds + m (Ldtc;)Z p method_31017 method_31017 + m (Ldtb$d;)V + m ()V +c diz net/minecraft/class_3712 net/minecraft/world/level/block/FletchingTableBlock + f Lcom/mojang/serialization/MapCodec; b field_46353 CODEC + m (Ldtb$d;)V + m ()V +c dja net/minecraft/class_2356 net/minecraft/world/level/block/FlowerBlock + f Lcom/mojang/serialization/MapCodec; a field_46354 EFFECTS_FIELD + f Lcom/mojang/serialization/MapCodec; b field_46355 CODEC + f F c field_31094 AABB_OFFSET + f Lexv; d field_11085 SHAPE + f Lcxw; e field_45775 suspiciousStewEffects + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54016 method_54016 + m (Ljm;F)Lcxw; a method_54015 makeEffectList + m (Ljm;FLdtb$d;)V + m (Lcxw;Ldtb$d;)V + m ()V +c djb net/minecraft/class_2362 net/minecraft/world/level/block/FlowerPotBlock + f Lcom/mojang/serialization/MapCodec; a field_46356 CODEC + f F b field_31095 AABB_SIZE + f Lexv; c field_11102 SHAPE + f Ljava/util/Map; d field_11103 POTTED_BY_CONTENT + f Ldfy; e field_11101 potted + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54017 method_54017 + m (Ldjb;)Ldfy; a method_54018 method_54018 + m ()Ldfy; b method_16231 getPotted + m ()Z m method_31646 isEmpty + m (Ldfy;Ldtb$d;)V + m ()V +c djc net/minecraft/class_7113 net/minecraft/world/level/block/FrogspawnBlock + f Lcom/mojang/serialization/MapCodec; a field_46357 CODEC + f Lexv; b field_37578 SHAPE + f I c field_37579 MIN_TADPOLES_SPAWN + f I d field_37580 MAX_TADPOLES_SPAWN + f I e field_37581 DEFAULT_MIN_HATCH_TICK_DELAY + f I f field_37582 DEFAULT_MAX_HATCH_TICK_DELAY + f I g field_37583 minHatchTickDelay + f I h field_37584 maxHatchTickDelay + m (II)V a method_41425 setHatchDelay + m (Laqu;Ljd;Layw;)V a method_41426 hatchFrogspawn + m (Layw;)I a method_41429 getFrogspawnHatchDelay + m (Ldcc;Ljd;)Z a method_41427 mayPlaceOn + m (Ldcw;Ljd;)V a method_41428 destroyBlock + m ()V b method_41431 setDefaultHatchDelay + m (Laqu;Ljd;Layw;)V b method_41430 spawnTadpoles + m (Layw;)D b method_44015 getRandomTadpolePositionOffset + m (Ldtb$d;)V + m ()V +c djd net/minecraft/class_2360 net/minecraft/world/level/block/FrostedIceBlock + f Lcom/mojang/serialization/MapCodec; a field_46358 CODEC + f I b field_31096 MAX_AGE + f Lduc; c field_11097 AGE + f I f field_31097 NEIGHBORS_TO_AGE + f I g field_31098 NEIGHBORS_TO_MELT + m (Ldcc;Ljd;I)Z a method_10202 fewerNeigboursThan + m (Ldtc;Ldcw;Ljd;)Z e method_10201 slightlyMelt + m (Ldtb$d;)V + m ()V +c dje net/minecraft/class_4771 net/minecraft/world/level/block/FungusBlock + f Lcom/mojang/serialization/MapCodec; a field_46359 CODEC + f Lexv; b field_22134 SHAPE + f D c field_31099 BONEMEAL_SUCCESS_PROBABILITY + f Ldfy; d field_41074 requiredBlock + f Lakq; e field_22135 feature + m (Laqu;Layw;Ljd;Ljm;)V a method_46682 method_46682 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54019 method_54019 + m (Ldcz;)Ljava/util/Optional; a method_46683 getFeature + m (Ldje;)Ldfy; a method_54020 method_54020 + m (Ldje;)Lakq; b method_54021 method_54021 + m (Lakq;Ldfy;Ldtb$d;)V + m ()V +c djf net/minecraft/class_3865 net/minecraft/world/level/block/FurnaceBlock + f Lcom/mojang/serialization/MapCodec; c field_46360 CODEC + m (Ldtb$d;)V + m ()V +c djg net/minecraft/class_5552 net/minecraft/world/level/block/GameMasterBlock +c djh net/minecraft/class_2366 net/minecraft/world/level/block/GlazedTerracottaBlock + f Lcom/mojang/serialization/MapCodec; a field_46362 CODEC + m (Ldtb$d;)V + m ()V +c dji net/minecraft/class_5777 net/minecraft/world/level/block/GlowLichenBlock + f Lcom/mojang/serialization/MapCodec; a field_46363 CODEC + f Ldtt; c field_28412 WATERLOGGED + f Ldkz; d field_37585 spreader + m (ILdtc;)I a method_37363 method_37363 + m (Ldtc;Ldcz;Ljd;Lji;)Z a method_34727 method_34727 + m (I)Ljava/util/function/ToIntFunction; b method_37364 emission + m (Ldtb$d;)V + m ()V +c djj net/minecraft/class_2372 net/minecraft/world/level/block/GrassBlock + f Lcom/mojang/serialization/MapCodec; a field_46364 CODEC + m (Ldtb$d;)V + m ()V +c djk net/minecraft/class_3713 net/minecraft/world/level/block/GrindstoneBlock + f Lexv; F field_16362 FLOOR_EAST_WEST_ALL_LEGS + f Lexv; G field_16338 FLOOR_EAST_WEST_GRINDSTONE + f Lexv; H field_16352 WALL_SOUTH_LEFT_POST + f Lexv; I field_16377 WALL_SOUTH_RIGHT_POST + f Lexv; J field_16393 WALL_SOUTH_LEFT_PIVOT + f Lexv; L field_16371 WALL_SOUTH_RIGHT_PIVOT + f Lexv; M field_16340 WALL_SOUTH_LEFT_LEG + f Lexv; N field_16354 WALL_SOUTH_RIGHT_LEG + f Lexv; O field_16369 WALL_SOUTH_ALL_LEGS + f Lexv; P field_16399 WALL_SOUTH_GRINDSTONE + f Lexv; Q field_16363 WALL_NORTH_LEFT_POST + f Lexv; R field_16347 WALL_NORTH_RIGHT_POST + f Lexv; S field_16401 WALL_NORTH_LEFT_PIVOT + f Lexv; T field_16367 WALL_NORTH_RIGHT_PIVOT + f Lexv; U field_16388 WALL_NORTH_LEFT_LEG + f Lexv; V field_16396 WALL_NORTH_RIGHT_LEG + f Lexv; W field_16368 WALL_NORTH_ALL_LEGS + f Lexv; X field_16356 WALL_NORTH_GRINDSTONE + f Lexv; Y field_16342 WALL_WEST_LEFT_POST + f Lexv; Z field_16358 WALL_WEST_RIGHT_POST + f Lexv; aA field_16395 CEILING_EAST_WEST_LEFT_LEG + f Lexv; aB field_16360 CEILING_EAST_WEST_RIGHT_LEG + f Lexv; aC field_16389 CEILING_EAST_WEST_ALL_LEGS + f Lexv; aD field_16383 CEILING_EAST_WEST_GRINDSTONE + f Lcom/mojang/serialization/MapCodec; a field_46365 CODEC + f Lwz; aR field_17364 CONTAINER_TITLE + f Lexv; aa field_16390 WALL_WEST_LEFT_PIVOT + f Lexv; ab field_16382 WALL_WEST_RIGHT_PIVOT + f Lexv; ac field_16359 WALL_WEST_LEFT_LEG + f Lexv; ad field_16351 WALL_WEST_RIGHT_LEG + f Lexv; ae field_16344 WALL_WEST_ALL_LEGS + f Lexv; af field_16376 WALL_WEST_GRINDSTONE + f Lexv; ag field_16394 WALL_EAST_LEFT_POST + f Lexv; ah field_16375 WALL_EAST_RIGHT_POST + f Lexv; ai field_16345 WALL_EAST_LEFT_PIVOT + f Lexv; aj field_16350 WALL_EAST_RIGHT_PIVOT + f Lexv; ak field_16372 WALL_EAST_LEFT_LEG + f Lexv; al field_16381 WALL_EAST_RIGHT_LEG + f Lexv; am field_16391 WALL_EAST_ALL_LEGS + f Lexv; an field_16370 WALL_EAST_GRINDSTONE + f Lexv; ao field_16341 CEILING_NORTH_SOUTH_LEFT_POST + f Lexv; ap field_16355 CEILING_NORTH_SOUTH_RIGHT_POST + f Lexv; aq field_16384 CEILING_NORTH_SOUTH_LEFT_PIVOT + f Lexv; ar field_16400 CEILING_NORTH_SOUTH_RIGHT_PIVOT + f Lexv; as field_16364 CEILING_NORTH_SOUTH_LEFT_LEG + f Lexv; at field_16349 CEILING_NORTH_SOUTH_RIGHT_LEG + f Lexv; au field_16397 CEILING_NORTH_SOUTH_ALL_LEGS + f Lexv; av field_16361 CEILING_NORTH_SOUTH_GRINDSTONE + f Lexv; aw field_16387 CEILING_EAST_WEST_LEFT_POST + f Lexv; ax field_16398 CEILING_EAST_WEST_RIGHT_POST + f Lexv; ay field_16357 CEILING_EAST_WEST_LEFT_PIVOT + f Lexv; az field_16353 CEILING_EAST_WEST_RIGHT_PIVOT + f Lexv; b field_16379 FLOOR_NORTH_SOUTH_LEFT_POST + f Lexv; c field_16392 FLOOR_NORTH_SOUTH_RIGHT_POST + f Lexv; d field_16366 FLOOR_NORTH_SOUTH_LEFT_PIVOT + f Lexv; e field_16339 FLOOR_NORTH_SOUTH_RIGHT_PIVOT + f Lexv; f field_16348 FLOOR_NORTH_SOUTH_LEFT_LEG + f Lexv; g field_16365 FLOOR_NORTH_SOUTH_RIGHT_LEG + f Lexv; h field_16385 FLOOR_NORTH_SOUTH_ALL_LEGS + f Lexv; i field_16380 FLOOR_NORTH_SOUTH_GRINDSTONE + f Lexv; j field_16373 FLOOR_EAST_WEST_LEFT_POST + f Lexv; k field_16346 FLOOR_EAST_WEST_RIGHT_POST + f Lexv; l field_16343 FLOOR_EAST_WEST_LEFT_PIVOT + f Lexv; m field_16374 FLOOR_EAST_WEST_RIGHT_PIVOT + f Lexv; n field_16386 FLOOR_EAST_WEST_LEFT_LEG + f Lexv; o field_16378 FLOOR_EAST_WEST_RIGHT_LEG + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_17469 method_17469 + m (Ldtc;)Lexv; n method_16119 getVoxelShape + m (Ldtb$d;)V + m ()V +c djk$1 net/minecraft/class_3713$1 net/minecraft/world/level/block/GrindstoneBlock$1 + f [I a field_16402 $SwitchMap$net$minecraft$world$level$block$state$properties$AttachFace + m ()V +c djl net/minecraft/class_4863 net/minecraft/world/level/block/GrowingPlantBlock + f Lji; a field_22507 growthDirection + f Z b field_22508 scheduleFluidTicks + f Lexv; d field_23080 shape + m (Ldcx;)Ldtc; a method_24948 getStateForPlacement + m ()Ldfy; b method_24946 getBodyBlock + m ()Ldjn; c method_24945 getHeadBlock + m (Ldtc;)Z m method_24947 canAttachTo + m (Ldtb$d;Lji;Lexv;Z)V +c djm net/minecraft/class_4864 net/minecraft/world/level/block/GrowingPlantBodyBlock + m (Ldcc;Ljd;Ldfy;)Ljava/util/Optional; a method_25960 getHeadPos + m (Ldtc;Ldtc;)Ldtc; a method_33624 updateHeadAfterConvertedFromBody + m (Ldtb$d;Lji;Lexv;Z)V +c djn net/minecraft/class_4865 net/minecraft/world/level/block/GrowingPlantHeadBlock + f D c field_22510 growPerTickProbability + f Lduc; e field_22509 AGE + f I f field_31100 MAX_AGE + m (Layw;)I a method_26376 getBlocksToGrowWhenBonemealed + m (Ldtc;Layw;)Ldtc; a method_33626 getGrowIntoState + m (Ldtc;Ldtc;)Ldtc; a method_33625 updateBodyAfterConvertedFromHead + m (Ldtc;)Z g method_24949 canGrowInto + m (Ldtc;)Ldtc; n method_38232 getMaxAgeState + m (Ldtc;)Z o method_38233 isMaxAge + m (Ldtb$d;Lji;Lexv;ZD)V + m ()V +c djo net/minecraft/class_2373 net/minecraft/world/level/block/HalfTransparentBlock + f Lcom/mojang/serialization/MapCodec; d field_46366 CODEC + m (Ldtb$d;)V + m ()V +c djp net/minecraft/class_5806 net/minecraft/world/level/block/HangingRootsBlock + f Lcom/mojang/serialization/MapCodec; a field_46367 CODEC + f Lexv; b field_28689 SHAPE + f Ldtt; c field_33642 WATERLOGGED + m (Ldtb$d;)V + m ()V +c djq net/minecraft/class_2380 net/minecraft/world/level/block/HayBlock + f Lcom/mojang/serialization/MapCodec; a field_46368 CODEC + m (Ldtb$d;)V + m ()V +c djr net/minecraft/class_9366 net/minecraft/world/level/block/HeavyCoreBlock + f Lcom/mojang/serialization/MapCodec; a field_49831 CODEC + f Lexv; b field_49833 SHAPE + m (Ldtb$d;)V + m ()V +c djs net/minecraft/class_4622 net/minecraft/world/level/block/HoneyBlock + f Lcom/mojang/serialization/MapCodec; a field_46369 CODEC + f Lexv; b field_21213 SHAPE + f D c field_31101 SLIDE_STARTS_WHEN_VERTICAL_SPEED_IS_AT_LEAST + f D e field_31102 MIN_FALL_SPEED_TO_BE_CONSIDERED_SLIDING + f D f field_31103 THROTTLE_SLIDE_SPEED_TO + f I g field_31104 SLIDE_ADVANCEMENT_CHECK_INTERVAL + m (Lbsr;)V a method_24175 showSlideParticles + m (Lbsr;I)V a method_23355 showParticles + m (Lbsr;Ljd;)V a method_24176 maybeDoSlideAchievement + m (Ldcw;Lbsr;)V a method_24177 maybeDoSlideEffects + m (Ljd;Lbsr;)Z a method_23356 isSlidingDown + m (Lbsr;)V b method_24178 showJumpParticles + m (Lbsr;)Z c method_24179 doesEntityDoHoneyBlockSlideEffects + m (Lbsr;)V d method_24180 doSlideMovement + m (Ldtb$d;)V + m ()V +c djt net/minecraft/class_2377 net/minecraft/world/level/block/HopperBlock + f Lexv; F field_11123 NORTH_INTERACTION_SHAPE + f Lexv; G field_11128 SOUTH_INTERACTION_SHAPE + f Lexv; H field_11135 WEST_INTERACTION_SHAPE + f Lcom/mojang/serialization/MapCodec; a field_46370 CODEC + f Ldtw; b field_11129 FACING + f Ldtt; c field_11126 ENABLED + f Lexv; d field_11131 TOP + f Lexv; e field_11127 FUNNEL + f Lexv; f field_11121 CONVEX_BASE + f Lexv; g field_49154 INSIDE + f Lexv; h field_11132 BASE + f Lexv; i field_11120 DOWN_SHAPE + f Lexv; j field_11134 EAST_SHAPE + f Lexv; k field_11124 NORTH_SHAPE + f Lexv; l field_11122 SOUTH_SHAPE + f Lexv; m field_11130 WEST_SHAPE + f Lexv; n field_11125 DOWN_INTERACTION_SHAPE + f Lexv; o field_11133 EAST_INTERACTION_SHAPE + m (Ldcw;Ljd;Ldtc;)V a method_10217 checkPoweredState + m (Ldtb$d;)V + m ()V +c djt$1 net/minecraft/class_2377$1 net/minecraft/world/level/block/HopperBlock$1 + f [I a field_11136 $SwitchMap$net$minecraft$core$Direction + m ()V +c dju net/minecraft/class_2383 net/minecraft/world/level/block/HorizontalDirectionalBlock + f Ldtw; aE field_11177 FACING + m (Ldtb$d;)V + m ()V +c djv net/minecraft/class_2381 net/minecraft/world/level/block/HugeMushroomBlock + f Lcom/mojang/serialization/MapCodec; a field_46371 CODEC + f Ldtt; b field_11171 NORTH + f Ldtt; c field_11172 EAST + f Ldtt; d field_11170 SOUTH + f Ldtt; e field_11167 WEST + f Ldtt; f field_11166 UP + f Ldtt; g field_11169 DOWN + f Ljava/util/Map; h field_11168 PROPERTY_BY_DIRECTION + m (Ldtb$d;)V + m ()V +c djw net/minecraft/class_2386 net/minecraft/world/level/block/IceBlock + f Lcom/mojang/serialization/MapCodec; e field_46372 CODEC + m ()Ldtc; b method_51170 meltsInto + m (Ldtc;Ldcw;Ljd;)V d method_10275 melt + m (Ldtb$d;)V + m ()V +c djx net/minecraft/class_2384 net/minecraft/world/level/block/InfestedBlock + f Lcom/mojang/serialization/MapCodec; a field_46373 CODEC + f Ldfy; b field_11178 hostBlock + f Ljava/util/Map; c field_11179 BLOCK_BY_HOST_BLOCK + f Ljava/util/Map; d field_33564 HOST_TO_INFESTED_STATES + f Ljava/util/Map; e field_33565 INFESTED_TO_HOST_STATES + m (Laqu;Ljd;)V a method_24797 spawnInfestation + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54022 method_54022 + m (Ljava/util/Map;Ldtc;Ljava/util/function/Supplier;)Ldtc; a method_36363 getNewStateWithProperties + m (Ljava/util/function/Supplier;Ldtc;)Ldtc; a method_36364 method_36364 + m ()Ldfy; b method_10271 getHostBlock + m ()Ldtc; m method_36365 method_36365 + m (Ldtc;)Z m method_10269 isCompatibleHostBlock + m (Ldtc;)Ldtc; n method_36366 infestedStateByHost + m (Ldtc;)Ldtc; o method_10270 hostStateByInfested + m (Ldtc;)Ldtc; p method_36367 method_36367 + m (Ldfy;Ldtb$d;)V + m ()V +c djy net/minecraft/class_6348 net/minecraft/world/level/block/InfestedRotatedPillarBlock + f Lcom/mojang/serialization/MapCodec; b field_46374 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54023 method_54023 + m (Ldfy;Ldtb$d;)V + m ()V +c djz net/minecraft/class_2389 net/minecraft/world/level/block/IronBarsBlock + f Lcom/mojang/serialization/MapCodec; i field_46375 CODEC + m (Ldtc;Z)Z a method_10281 attachsTo + m (Ldtb$d;)V + m ()V +c dka net/minecraft/class_3748 net/minecraft/world/level/block/JigsawBlock + f Lcom/mojang/serialization/MapCodec; a field_46376 CODEC + f Ldua; b field_23262 ORIENTATION + m (Lent$c;Lent$c;)Z a method_16546 canAttach + m (Lji;)Ldri$a; a method_26377 method_26377 + m (Ldtc;)Lji; m method_26378 getFrontFacing + m (Ldtc;)Lji; n method_26379 getTopFacing + m (Ldtb$d;)V + m ()V +c dkb net/minecraft/class_2387 net/minecraft/world/level/block/JukeboxBlock + f Lcom/mojang/serialization/MapCodec; a field_46377 CODEC + f Ldtt; b field_11180 HAS_RECORD + m (Ldtb$d;)V + m ()V +c dkc net/minecraft/class_2393 net/minecraft/world/level/block/KelpBlock + f Lcom/mojang/serialization/MapCodec; c field_46378 CODEC + f Lexv; g field_11195 SHAPE + f D h field_31105 GROW_PER_TICK_PROBABILITY + m (Ldtb$d;)V + m ()V +c dkd net/minecraft/class_2391 net/minecraft/world/level/block/KelpPlantBlock + f Lcom/mojang/serialization/MapCodec; c field_46379 CODEC + m (Ldtb$d;)V + m ()V +c dke net/minecraft/class_2399 net/minecraft/world/level/block/LadderBlock + f Lcom/mojang/serialization/MapCodec; a field_46380 CODEC + f Ldtw; b field_11253 FACING + f Ldtt; c field_11257 WATERLOGGED + f F d field_31106 AABB_OFFSET + f Lexv; e field_11255 EAST_AABB + f Lexv; f field_11252 WEST_AABB + f Lexv; g field_11254 SOUTH_AABB + f Lexv; h field_11256 NORTH_AABB + m (Ldcc;Ljd;Lji;)Z a method_10305 canAttachTo + m (Ldtb$d;)V + m ()V +c dke$1 net/minecraft/class_2399$1 net/minecraft/world/level/block/LadderBlock$1 + f [I a field_11258 $SwitchMap$net$minecraft$core$Direction + m ()V +c dkf net/minecraft/class_3749 net/minecraft/world/level/block/LanternBlock + f Lcom/mojang/serialization/MapCodec; a field_46381 CODEC + f Ldtt; b field_16545 HANGING + f Ldtt; c field_26441 WATERLOGGED + f Lexv; d field_16546 AABB + f Lexv; e field_16544 HANGING_AABB + m (Ldtc;)Lji; m method_16370 getConnectedDirection + m (Ldtb$d;)V + m ()V +c dkg net/minecraft/class_5553 net/minecraft/world/level/block/LavaCauldronBlock + f Lcom/mojang/serialization/MapCodec; d field_46382 CODEC + m (Ldtb$d;)V + m ()V +c dkh net/minecraft/class_5556 net/minecraft/world/level/block/LayeredCauldronBlock + f Lcom/mojang/serialization/MapCodec; d field_46383 CODEC + f I e field_31107 MIN_FILL_LEVEL + f I f field_31108 MAX_FILL_LEVEL + f Lduc; g field_27206 LEVEL + f I h field_31109 BASE_CONTENT_HEIGHT + f D i field_31110 HEIGHT_PER_LEVEL + f Lddw$c; j field_46384 precipitationType + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54024 method_54024 + m (Ldkh;)Lkj$a; a method_54025 method_54025 + m (Ldkh;)Lddw$c; b method_54026 method_54026 + m (Ldtc;Ldcw;Ljd;)V d method_31650 lowerFillLevel + m (Ldtc;Ldcw;Ljd;)V e method_36994 handleEntityOnFireInside + m (Lddw$c;Lkj$a;Ldtb$d;)V + m ()V +c dki net/minecraft/class_2397 net/minecraft/world/level/block/LeavesBlock + f I a field_31112 TICK_DELAY + f Lcom/mojang/serialization/MapCodec; b field_46385 CODEC + f I c field_31111 DECAY_DISTANCE + f Lduc; d field_11199 DISTANCE + f Ldtt; e field_11200 PERSISTENT + f Ldtt; f field_38227 WATERLOGGED + m (Ldtc;Ldcx;Ljd;)Ldtc; a method_10300 updateDistance + m (Ldtc;)Z m method_42311 decaying + m (Ldtc;)Ljava/util/OptionalInt; n method_49817 getOptionalDistanceAt + m (Ldtc;)I o method_10302 getDistanceAt + m (Ldtb$d;)V + m ()V +c dkj net/minecraft/class_3715 net/minecraft/world/level/block/LecternBlock + f Lcom/mojang/serialization/MapCodec; a field_46386 CODEC + f Ldtw; b field_16404 FACING + f Ldtt; c field_17365 POWERED + f Ldtt; d field_17366 HAS_BOOK + f Lexv; e field_16406 SHAPE_BASE + f Lexv; f field_16405 SHAPE_POST + f Lexv; g field_16403 SHAPE_COMMON + f Lexv; h field_17367 SHAPE_TOP_PLATE + f Lexv; i field_17368 SHAPE_COLLISION + f Lexv; j field_17369 SHAPE_WEST + f Lexv; k field_17370 SHAPE_NORTH + f Lexv; l field_17371 SHAPE_EAST + f Lexv; m field_17372 SHAPE_SOUTH + f I n field_31113 PAGE_CHANGE_IMPULSE_TICKS + m (Lbsr;Ldcw;Ljd;Ldtc;Z)V a method_17473 resetBookState + m (Lbtn;Ldcw;Ljd;Ldtc;Lcuq;)Z a method_17472 tryPlaceBook + m (Ldcw;Ljd;Lcmx;)V a method_17470 openScreen + m (Ldcw;Ljd;Ldtc;)V a method_17471 signalPageChange + m (Ldcw;Ljd;Ldtc;Z)V a method_17476 changePowered + m (Lbtn;Ldcw;Ljd;Ldtc;Lcuq;)V b method_17475 placeBook + m (Ldcw;Ljd;Ldtc;)V b method_17474 updateBelow + m (Ldtc;Ldcw;Ljd;)V d method_17477 popBook + m (Ldtb$d;)V + m ()V +c dkj$1 net/minecraft/class_3715$1 net/minecraft/world/level/block/LecternBlock$1 + f [I a field_15363 $SwitchMap$net$minecraft$core$Direction + m ()V +c dkk net/minecraft/class_6088 net/minecraft/world/level/block/LevelEvent + f I A field_31122 SOUND_CHORUS_DEATH + f I B field_31123 SOUND_BREWING_STAND_BREW + f I C field_31126 SOUND_END_PORTAL_SPAWN + f I D field_31127 SOUND_PHANTOM_BITE + f I E field_31128 SOUND_ZOMBIE_TO_DROWNED + f I F field_31129 SOUND_HUSK_TO_ZOMBIE + f I G field_31130 SOUND_GRINDSTONE_USED + f I H field_31131 SOUND_PAGE_TURN + f I I field_31132 SOUND_SMITHING_TABLE_USED + f I J field_31133 SOUND_POINTED_DRIPSTONE_LAND + f I K field_31134 SOUND_DRIP_LAVA_INTO_CAULDRON + f I L field_31135 SOUND_DRIP_WATER_INTO_CAULDRON + f I M field_31136 SOUND_SKELETON_TO_STRAY + f I N field_46805 SOUND_CRAFTER_CRAFT + f I O field_46806 SOUND_CRAFTER_FAIL + f I P field_51787 SOUND_WIND_CHARGE_SHOOT + f I Q field_31137 COMPOSTER_FILL + f I R field_31138 LAVA_FIZZ + f I S field_31139 REDSTONE_TORCH_BURNOUT + f I T field_31141 END_PORTAL_FRAME_FILL + f I U field_31142 DRIPSTONE_DRIP + f I V field_33511 PARTICLES_AND_SOUND_PLANT_GROWTH + f I W field_31143 PARTICLES_SHOOT_SMOKE + f I X field_31144 PARTICLES_DESTROY_BLOCK + f I Y field_31145 PARTICLES_SPELL_POTION_SPLASH + f I Z field_31146 PARTICLES_EYE_OF_ENDER_DEATH + f I aA field_50164 ANIMATION_SPAWN_COBWEB + f I aB field_50165 PARTICLES_TRIAL_SPAWNER_DETECT_PLAYER_OMINOUS + f I aC field_50166 PARTICLES_TRIAL_SPAWNER_BECOME_OMINOUS + f I aD field_50167 PARTICLES_TRIAL_SPAWNER_SPAWN_ITEM + f I a field_31140 SOUND_DISPENSER_DISPENSE + f I aa field_31147 PARTICLES_MOBBLOCK_SPAWN + f I ab field_31149 PARTICLES_DRAGON_FIREBALL_SPLASH + f I ac field_31150 PARTICLES_INSTANT_POTION_SPLASH + f I ad field_31151 PARTICLES_DRAGON_BLOCK_BREAK + f I ae field_31152 PARTICLES_WATER_EVAPORATING + f I af field_46807 PARTICLES_SHOOT_WHITE_SMOKE + f I ag field_47837 PARTICLES_BEE_GROWTH + f I ah field_47838 PARTICLES_TURTLE_EGG_PLACEMENT + f I ai field_50168 PARTICLES_SMASH_ATTACK + f I aj field_31153 ANIMATION_END_GATEWAY_SPAWN + f I ak field_31154 ANIMATION_DRAGON_SUMMON_ROAR + f I al field_31155 PARTICLES_ELECTRIC_SPARK + f I am field_31156 PARTICLES_AND_SOUND_WAX_ON + f I an field_31157 PARTICLES_WAX_OFF + f I ao field_31158 PARTICLES_SCRAPE + f I ap field_37586 PARTICLES_SCULK_CHARGE + f I aq field_38228 PARTICLES_SCULK_SHRIEK + f I ar field_42759 PARTICLES_AND_SOUND_BRUSH_BLOCK_COMPLETE + f I as field_43238 PARTICLES_EGG_CRACK + f I at field_47340 PARTICLES_TRIAL_SPAWNER_SPAWN + f I au field_47341 PARTICLES_TRIAL_SPAWNER_SPAWN_MOB_AT + f I av field_47342 PARTICLES_TRIAL_SPAWNER_DETECT_PLAYER + f I aw field_47343 ANIMATION_TRIAL_SPAWNER_EJECT_ITEM + f I ax field_48852 ANIMATION_VAULT_ACTIVATE + f I ay field_48853 ANIMATION_VAULT_DEACTIVATE + f I az field_48854 ANIMATION_VAULT_EJECT_ITEM + f I b field_31159 SOUND_DISPENSER_FAIL + f I c field_31160 SOUND_DISPENSER_PROJECTILE_LAUNCH + f I d field_31162 SOUND_FIREWORK_SHOOT + f I e field_31167 SOUND_EXTINGUISH_FIRE + f I f field_42760 SOUND_PLAY_JUKEBOX_SONG + f I g field_42761 SOUND_STOP_JUKEBOX_SONG + f I h field_31173 SOUND_GHAST_WARNING + f I i field_31174 SOUND_GHAST_FIREBALL + f I j field_31175 SOUND_DRAGON_FIREBALL + f I k field_31176 SOUND_BLAZE_FIREBALL + f I l field_31177 SOUND_ZOMBIE_WOODEN_DOOR + f I m field_31178 SOUND_ZOMBIE_IRON_DOOR + f I n field_31179 SOUND_ZOMBIE_DOOR_CRASH + f I o field_31180 SOUND_WITHER_BLOCK_BREAK + f I p field_31181 SOUND_WITHER_BOSS_SPAWN + f I q field_31182 SOUND_WITHER_BOSS_SHOOT + f I r field_31183 SOUND_BAT_LIFTOFF + f I s field_31114 SOUND_ZOMBIE_INFECTED + f I t field_31115 SOUND_ZOMBIE_CONVERTED + f I u field_31116 SOUND_DRAGON_DEATH + f I v field_31117 SOUND_ANVIL_BROKEN + f I w field_31118 SOUND_ANVIL_USED + f I x field_31119 SOUND_ANVIL_LAND + f I y field_31120 SOUND_PORTAL_TRAVEL + f I z field_31121 SOUND_CHORUS_GROW + m ()V +c dkl net/minecraft/class_2401 net/minecraft/world/level/block/LeverBlock + f Lcom/mojang/serialization/MapCodec; a field_46387 CODEC + f Ldtt; b field_11265 POWERED + f I c field_31184 DEPTH + f I d field_31185 WIDTH + f I e field_31186 HEIGHT + f Lexv; f field_11267 NORTH_AABB + f Lexv; g field_11263 SOUTH_AABB + f Lexv; h field_11260 WEST_AABB + f Lexv; i field_11262 EAST_AABB + f Lexv; j field_11264 UP_AABB_Z + f Lexv; k field_11261 UP_AABB_X + f Lexv; l field_11268 DOWN_AABB_Z + f Lexv; m field_11266 DOWN_AABB_X + m (Lcmx;Ldcx;Ljd;Ldtc;)V a method_60283 playSound + m (Ldtc;Ldcx;Ljd;F)V a method_10308 makeParticle + m (Ldtc;Ldcw;Ljd;Lcmx;)V b method_21846 pull + m (Ldtc;Ldcw;Ljd;)V d method_10309 updateNeighbours + m (Ldtb$d;)V + m ()V +c dkl$1 net/minecraft/class_2401$1 net/minecraft/world/level/block/LeverBlock$1 + f [I a field_11271 $SwitchMap$net$minecraft$core$Direction$Axis + f [I b field_11270 $SwitchMap$net$minecraft$core$Direction + f [I c field_11269 $SwitchMap$net$minecraft$world$level$block$state$properties$AttachFace + m ()V +c dkm net/minecraft/class_6089 net/minecraft/world/level/block/LightBlock + f Lcom/mojang/serialization/MapCodec; a field_46388 CODEC + f I b field_33722 MAX_LEVEL + f Lduc; c field_31187 LEVEL + f Ldtt; d field_31188 WATERLOGGED + f Ljava/util/function/ToIntFunction; e field_31189 LIGHT_EMISSION + m (Lcuq;I)Lcuq; a method_47377 setLightOnStack + m (Ldtc;)I m method_35281 method_35281 + m (Ldtb$d;)V + m ()V +c dkn net/minecraft/class_5554 net/minecraft/world/level/block/LightningRodBlock + f Lcom/mojang/serialization/MapCodec; b field_46389 CODEC + f Ldtt; c field_29562 WATERLOGGED + f Ldtt; d field_27193 POWERED + f I e field_31190 RANGE + f I k field_31192 ACTIVATION_TICKS + f I l field_31191 SPARK_CYCLE + m (Ldtc;Ldcw;Ljd;)V d method_31648 onLightningStrike + m (Ldtc;Ldcw;Ljd;)V e method_33627 updateNeighbours + m (Ldtb$d;)V + m ()V +c dko net/minecraft/class_2404 net/minecraft/world/level/block/LiquidBlock + f Lcom/mojang/serialization/MapCodec; a field_46390 CODEC + f Lduc; b field_11278 LEVEL + f Lepc; c field_11279 fluid + f Lexv; d field_24412 STABLE_SHAPE + f Lcom/google/common/collect/ImmutableList; e field_34006 POSSIBLE_FLOW_DIRECTIONS + f Lcom/mojang/serialization/Codec; f field_46391 FLOWING_FLUID + f Ljava/util/List; g field_11276 stateCache + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54027 method_54027 + m (Ldcw;Ljd;Ldtc;)Z a method_10316 shouldSpreadLiquid + m (Ldcx;Ljd;)V a method_10318 fizz + m (Ldko;)Lepc; a method_54028 method_54028 + m (Lepc;)Lepd; a method_54029 method_54029 + m (Lepd;)Lcom/mojang/serialization/DataResult; a method_54030 method_54030 + m (Lepd;)Ljava/lang/String; b method_54031 method_54031 + m (Lepc;Ldtb$d;)V + m ()V +c dkp net/minecraft/class_2402 net/minecraft/world/level/block/LiquidBlockContainer + m (Lcmx;Ldcc;Ljd;Ldtc;Lepd;)Z a method_10310 canPlaceLiquid + m (Ldcx;Ljd;Ldtc;Lepe;)Z a method_10311 placeLiquid +c dkq net/minecraft/class_2406 net/minecraft/world/level/block/LoomBlock + f Lcom/mojang/serialization/MapCodec; a field_46392 CODEC + f Lwz; b field_17373 CONTAINER_TITLE + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_17478 method_17478 + m (Ldtb$d;)V + m ()V +c dkr net/minecraft/class_2413 net/minecraft/world/level/block/MagmaBlock + f Lcom/mojang/serialization/MapCodec; a field_46393 CODEC + f I b field_31193 BUBBLE_COLUMN_CHECK_DELAY + m (Ldtb$d;)V + m ()V +c dks net/minecraft/class_7114 net/minecraft/world/level/block/MangroveLeavesBlock + f Lcom/mojang/serialization/MapCodec; a field_46394 CODEC + m (Ldtb$d;)V + m ()V +c dkt net/minecraft/class_7115 net/minecraft/world/level/block/MangrovePropaguleBlock + f Lcom/mojang/serialization/MapCodec; a field_46395 CODEC + f Lduc; b field_37588 AGE + f I c field_37589 MAX_AGE + f Ldtt; d field_37591 HANGING + f [Lexv; j field_37592 SHAPE_PER_AGE + f Ldtt; k field_37590 WATERLOGGED + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54032 method_54032 + m (Ldkt;)Ldsr; a method_54033 method_54033 + m (I)Ldtc; b method_43130 createNewHangingPropagule + m ()Ldtc; c method_41434 createNewHangingPropagule + m (Ldtc;)Z m method_41435 isHanging + m (Ldtc;)Z n method_41436 isFullyGrown + m (Ldsr;Ldtb$d;)V + m ()V +c dku net/minecraft/class_7116 net/minecraft/world/level/block/MangroveRootsBlock + f Lcom/mojang/serialization/MapCodec; a field_46396 CODEC + f Ldtt; b field_37593 WATERLOGGED + m (Ldtb$d;)V + m ()V +c dkv net/minecraft/class_2415 net/minecraft/world/level/block/Mirror + f Ldkv; a field_11302 NONE + f Ldkv; b field_11300 LEFT_RIGHT + f Ldkv; c field_11301 FRONT_BACK + f Lcom/mojang/serialization/Codec; d field_39311 CODEC + f Ljava/lang/String; e field_39312 id + f Lwz; f field_27883 symbol + f Lh; g field_23263 rotation + f [Ldkv; h field_11299 $VALUES + m ()Lh; a method_26380 rotation + m (II)I a method_10344 mirror + m (Lji;)Ldmm; a method_10345 getRotation + m ()Lwz; b method_32354 symbol + m (Lji;)Lji; b method_10343 mirror + m ()[Ldkv; d method_36706 $values + m (Ljava/lang/String;ILjava/lang/String;Lh;)V + m ()V +c dkw net/minecraft/class_5807 net/minecraft/world/level/block/MossBlock + f Lcom/mojang/serialization/MapCodec; a field_46397 CODEC + m (Laqu;Layw;Ljd;Ljm$c;)V a method_46684 method_46684 + m (Ljz;)Ljava/util/Optional; a method_46685 method_46685 + m (Ldtb$d;)V + m ()V +c dkx net/minecraft/class_7117 net/minecraft/world/level/block/MudBlock + f Lcom/mojang/serialization/MapCodec; a field_46398 CODEC + f Lexv; b field_37594 SHAPE + m (Ldtb$d;)V + m ()V +c dky net/minecraft/class_5778 net/minecraft/world/level/block/MultifaceBlock + f F a field_31194 AABB_OFFSET + f [Lji; b field_28421 DIRECTIONS + f Lexv; c field_28413 UP_AABB + f Lexv; d field_28414 DOWN_AABB + f Lexv; e field_28415 WEST_AABB + f Lexv; f field_28416 EAST_AABB + f Lexv; g field_28417 NORTH_AABB + f Lexv; h field_28418 SOUTH_AABB + f Ljava/util/Map; i field_28419 PROPERTY_BY_DIRECTION + f Ljava/util/Map; j field_28420 SHAPE_BY_DIRECTION + f Lcom/google/common/collect/ImmutableMap; k field_28422 shapesCache + f Z l field_28423 canRotate + f Z m field_28424 canMirrorX + f Z n field_28425 canMirrorZ + m (B)Ljava/util/Set; a method_41437 unpack + m (Ldcc;Ldtc;Ljd;Lji;)Z a method_41438 isValidStateForPlacement + m (Ldcc;Lji;Ljd;Ldtc;)Z a method_33358 canAttachTo + m (Ldtc;Ldcw;Ljd;Lji;)Ldtc; a method_33361 method_33361 + m (Ldtc;Ldtt;)Ldtc; a method_33365 removeFace + m (Ldtc;Ljava/util/function/Function;)Ldtc; a method_33367 mapDirections + m (Ldtc;Lji;)Z a method_33366 hasFace + m (Ldtd;)Ldtc; a method_33368 getDefaultMultifaceState + m (Ljava/util/Collection;)B a method_41439 pack + m (Ljava/util/EnumMap;)V a method_33370 method_33370 + m (Lji;)Z a method_33369 isFaceSupported + m (Ldtc;Lji;)Z b method_33372 method_33372 + m (Lji;)Ldtt; b method_33374 getFaceProperty + m ()Ldkz; c method_41432 getSpreader + m (Ldtc;Ldcc;Ljd;Lji;)Ldtc; c method_33362 getStateForPlacement + m (Ldtc;Lji;)Z c method_33376 method_33376 + m ()Z m method_33378 isWaterloggable + m (Ldtc;)Ljava/util/Set; m method_41440 availableFaces + m (Ldtc;)Z n method_33381 hasAnyFace + m (Ldtc;)Lexv; o method_33380 calculateMultifaceShape + m (Ldtc;)Z p method_33382 hasAnyVacantFace + m (Ldtb$d;)V + m ()V +c dkz net/minecraft/class_7118 net/minecraft/world/level/block/MultifaceSpreader + f [Ldkz$e; a field_37595 DEFAULT_SPREAD_ORDER + f Ldkz$b; b field_37596 config + m (Ldcx;Ldkz$c;Z)Ljava/util/Optional; a method_41441 spreadToFace + m (Ldcx;ZLdkz$c;)Ljava/util/Optional; a method_41442 method_41442 + m (Ldtc;Ldcc;Ljd;Lji;)Z a method_41443 canSpreadInAnyDirection + m (Ldtc;Ldcc;Ljd;Lji;Lji;)Z a method_41444 method_41444 + m (Ldtc;Ldcc;Ljd;Lji;Lji;Ldkz$d;)Ljava/util/Optional; a method_41445 getSpreadFromFaceTowardDirection + m (Ldtc;Ldcx;Ljd;Layw;)Ljava/util/Optional; a method_41450 spreadFromRandomFaceTowardRandomDirection + m (Ldtc;Ldcx;Ljd;Layw;Lji;)Ljava/util/Optional; a method_41451 method_41451 + m (Ldtc;Ldcx;Ljd;Lji;Layw;Z)Ljava/util/Optional; a method_41447 spreadFromFaceTowardRandomDirection + m (Ldtc;Ldcx;Ljd;Lji;Lji;Z)Ljava/util/Optional; a method_41446 spreadFromFaceTowardDirection + m (Ldtc;Ldcx;Ljd;Lji;Z)J a method_41448 spreadFromFaceTowardAllDirections + m (Ldtc;Ldcx;Ljd;Lji;ZLji;)Ljava/util/Optional; a method_41449 method_41449 + m (Ldtc;Ldcx;Ljd;Z)J a method_41452 spreadAll + m (Ldtc;Ldcx;Ljd;ZLji;)Ljava/lang/Long; a method_41453 method_41453 + m (Ldtc;Lji;)Z a method_41454 method_41454 + m (Ldtc;Ldcx;Ljd;Lji;ZLji;)Ljava/util/Optional; b method_41455 method_41455 + m (Ldtc;Lji;)Z b method_41456 method_41456 + m (Ldky;)V + m (Ldkz$b;)V + m ()V +c dkz$a net/minecraft/class_7118$class_7119 net/minecraft/world/level/block/MultifaceSpreader$DefaultSpreaderConfig + f Ldky; a field_37597 block + m (Ldcc;Ljd;Ljd;Lji;Ldtc;)Z a method_41458 stateCanBeReplaced + m (Ldky;)V +c dkz$b net/minecraft/class_7118$class_7120 net/minecraft/world/level/block/MultifaceSpreader$SpreadConfig + m ()[Ldkz$e; a method_41460 getSpreadTypes + m (Ldcc;Ljd;Ldkz$c;)Z a method_41457 canSpreadInto + m (Ldcx;Ldkz$c;Ldtc;Z)Z a method_41461 placeBlock + m (Ldtc;)Z a method_41462 isOtherBlockValidAsSource + m (Ldtc;Ldcc;Ljd;Lji;)Ldtc; a method_41459 getStateForPlacement + m (Ldtc;Lji;)Z a method_41463 hasFace + m (Ldtc;Lji;)Z b method_41464 canSpreadFrom +c dkz$c net/minecraft/class_7118$class_7121 net/minecraft/world/level/block/MultifaceSpreader$SpreadPos + f Ljd; a comp_534 pos + f Lji; b comp_535 face + m ()Ljd; a comp_534 pos + m ()Lji; b comp_535 face + m (Ljd;Lji;)V +c dkz$d net/minecraft/class_7118$class_7122 net/minecraft/world/level/block/MultifaceSpreader$SpreadPredicate +c dkz$e net/minecraft/class_7118$class_7123 net/minecraft/world/level/block/MultifaceSpreader$SpreadType + f Ldkz$e; a field_37598 SAME_POSITION + f Ldkz$e; b field_37599 SAME_PLANE + f Ldkz$e; c field_37600 WRAP_AROUND + f [Ldkz$e; d field_37601 $VALUES + m ()[Ldkz$e; a method_41465 $values + m (Ljd;Lji;Lji;)Ldkz$c; a method_41466 getSpreadPos + m (Ljava/lang/String;I)V + m ()V +c dkz$e$1 net/minecraft/class_7118$class_7123$1 net/minecraft/world/level/block/MultifaceSpreader$SpreadType$1 + m (Ljava/lang/String;I)V +c dkz$e$2 net/minecraft/class_7118$class_7123$2 net/minecraft/world/level/block/MultifaceSpreader$SpreadType$2 + m (Ljava/lang/String;I)V +c dkz$e$3 net/minecraft/class_7118$class_7123$3 net/minecraft/world/level/block/MultifaceSpreader$SpreadType$3 + m (Ljava/lang/String;I)V +c dla net/minecraft/class_2420 net/minecraft/world/level/block/MushroomBlock + f Lcom/mojang/serialization/MapCodec; a field_46399 CODEC + f F b field_31195 AABB_OFFSET + f Lexv; c field_11304 SHAPE + f Lakq; d field_27194 feature + m (Laqu;Ljd;Ldtc;Layw;)Z a method_10349 growMushroom + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54034 method_54034 + m (Ldla;)Lakq; a method_54035 method_54035 + m (Lakq;Ldtb$d;)V + m ()V +c dlb net/minecraft/class_2418 net/minecraft/world/level/block/MyceliumBlock + f Lcom/mojang/serialization/MapCodec; a field_46400 CODEC + m (Ldtb$d;)V + m ()V +c dlc net/minecraft/class_2423 net/minecraft/world/level/block/NetherPortalBlock + f Lcom/mojang/serialization/MapCodec; a field_46401 CODEC + f Ldua; b field_11310 AXIS + f I c field_31196 AABB_OFFSET + f Lexv; d field_11309 X_AXIS_AABB + f Lexv; e field_11308 Z_AXIS_AABB + f Lorg/slf4j/Logger; f field_52060 LOGGER + m (Laqu;Lbsr;Ljd;Ljd;ZLdut;)Leqc; a method_60773 getExitPortal + m (Laqu;Ldtc;Ljd;)Z a method_60990 method_60990 + m (Laqu;Ll$a;Lji$a;Lexc;Lbsr;Lexc;FFLeqc$a;)Leqc; a method_60774 createDimensionTransition + m (Lbsr;Ldtc;Ljd;)Z a method_60775 method_60775 + m (Lbsr;Ljd;Ll$a;Laqu;Leqc$a;)Leqc; a method_60777 getDimensionTransitionFromExit + m (Ljd;Lbsr;)V a method_60991 method_60991 + m (Ldtb$d;)V + m ()V +c dlc$1 net/minecraft/class_2423$1 net/minecraft/world/level/block/NetherPortalBlock$1 + f [I a field_11320 $SwitchMap$net$minecraft$core$Direction$Axis + f [I b field_11319 $SwitchMap$net$minecraft$world$level$block$Rotation + m ()V +c dld net/minecraft/class_4772 net/minecraft/world/level/block/NetherSproutsBlock + f Lcom/mojang/serialization/MapCodec; a field_46402 CODEC + f Lexv; b field_22136 SHAPE + m (Ldtb$d;)V + m ()V +c dle net/minecraft/class_4949 net/minecraft/world/level/block/NetherVines + f D a field_31197 GROW_PER_TICK_PROBABILITY + f D b field_31198 BONEMEAL_GROW_PROBABILITY_DECREASE_RATE + m (Layw;)I a method_26381 getBlocksToGrowWhenBonemealed + m (Ldtc;)Z a method_25961 isValidGrowthState + m ()V +c dlf net/minecraft/class_2421 net/minecraft/world/level/block/NetherWartBlock + f Lcom/mojang/serialization/MapCodec; a field_46403 CODEC + f I b field_31199 MAX_AGE + f Lduc; c field_11306 AGE + f [Lexv; d field_11305 SHAPE_BY_AGE + m (Ldtb$d;)V + m ()V +c dlg net/minecraft/class_4773 net/minecraft/world/level/block/NetherrackBlock + f Lcom/mojang/serialization/MapCodec; a field_46404 CODEC + m (Ldtb$d;)V + m ()V +c dlh net/minecraft/class_2428 net/minecraft/world/level/block/NoteBlock + f Lcom/mojang/serialization/MapCodec; a field_46405 CODEC + f Ldua; b field_11325 INSTRUMENT + f Ldtt; c field_11326 POWERED + f Lduc; d field_11324 NOTE + f I e field_41678 NOTE_VOLUME + m (Lbsr;Ldtc;Ldcw;Ljd;)V a method_10367 playNote + m (Ldcw;Ljd;)Lakr; a method_47886 getCustomSoundId + m (I)F b method_49818 getPitchFromNote + m (Ldcx;Ljd;Ldtc;)Ldtc; b method_47583 setInstrument + m (Ldtb$d;)V + m ()V +c dli net/minecraft/class_4849 net/minecraft/world/level/block/NyliumBlock + f Lcom/mojang/serialization/MapCodec; a field_46406 CODEC + m (Laqu;Lduz;Layw;Ljd;Ljm$c;)V a method_46686 method_46686 + m (Ljz;Lakq;Laqu;Lduz;Layw;Ljd;)V a method_46687 place + m (Ldtc;Ldcz;Ljd;)Z b method_24856 canBeNylium + m (Ldtb$d;)V + m ()V +c dlj net/minecraft/class_2426 net/minecraft/world/level/block/ObserverBlock + f Lcom/mojang/serialization/MapCodec; b field_46407 CODEC + f Ldtt; c field_11322 POWERED + m (Ldcw;Ljd;Ldtc;)V a method_10365 updateNeighborsInFront + m (Ldcx;Ljd;)V a method_10366 startSignal + m (Ldtb$d;)V + m ()V +c dlk net/minecraft/class_7938 net/minecraft/world/level/block/PiglinWallSkullBlock + f Lcom/mojang/serialization/MapCodec; b field_46408 CODEC + f Ljava/util/Map; e field_41311 AABBS + m (Ldtb$d;)V + m ()V +c dll net/minecraft/class_8169 net/minecraft/world/level/block/PinkPetalsBlock + f Lcom/mojang/serialization/MapCodec; a field_46409 CODEC + f I b field_42762 MIN_FLOWERS + f I c field_42763 MAX_FLOWERS + f Ldtw; d field_42764 FACING + f Lduc; e field_42765 AMOUNT + f Ljava/util/function/BiFunction; f field_45146 SHAPE_BY_PROPERTIES + m (Lji;Ljava/lang/Integer;)Lexv; a method_52574 method_52574 + m (Ldtb$d;)V + m ()V +c dlm net/minecraft/class_2429 net/minecraft/world/level/block/PipeBlock + f [Lji; a field_11334 DIRECTIONS + f Ldtt; b field_11332 NORTH + f Ldtt; c field_11335 EAST + f Ldtt; d field_11331 SOUTH + f Ldtt; e field_11328 WEST + f Ldtt; f field_11327 UP + f Ldtt; g field_11330 DOWN + f Ljava/util/Map; h field_11329 PROPERTY_BY_DIRECTION + f [Lexv; i field_11333 shapeByIndex + m (F)[Lexv; a method_10370 makeShapes + m (Ljava/util/EnumMap;)V a method_10369 method_10369 + m (Ldtc;)I m method_10368 getAABBIndex + m (FLdtb$d;)V + m ()V +c dln net/minecraft/class_8237 net/minecraft/world/level/block/PitcherCropBlock + f Lcom/mojang/serialization/MapCodec; c field_46410 CODEC + f Lduc; d field_43239 AGE + f I e field_43240 MAX_AGE + f I f field_43241 DOUBLE_PLANT_AGE_INTERSECTION + f I g field_43391 BONEMEAL_INCREASE + f Lexv; h field_43244 FULL_UPPER_SHAPE + f Lexv; i field_43245 FULL_LOWER_SHAPE + f Lexv; j field_43246 COLLISION_SHAPE_BULB + f Lexv; k field_43247 COLLISION_SHAPE_CROP + f [Lexv; l field_44477 UPPER_SHAPE_BY_AGE + f [Lexv; m field_44478 LOWER_SHAPE_BY_AGE + m (Laqu;Ldtc;Ljd;I)V a method_49819 grow + m (Ldcz;Ljd;)Z a method_49820 canGrowInto + m (Ldcz;Ljd;Ldtc;I)Z a method_52266 canGrow + m (I)Z b method_52575 isDouble + m (Ldcz;Ljd;)Z b method_52267 sufficientLight + m (Ldcz;Ljd;Ldtc;)Ldln$a; d method_52268 getLowerHalf + m (Ldtc;)Z m method_51171 isLower + m (Ldtc;)Z n method_49821 isMaxAge + m (Ldtb$d;)V + m ()V +c dln$a net/minecraft/class_8237$class_8587 net/minecraft/world/level/block/PitcherCropBlock$PosAndState + f Ljd; a comp_1551 pos + f Ldtc; b comp_1552 state + m ()Ljd; a comp_1551 pos + m ()Ldtc; b comp_1552 state + m (Ljd;Ldtc;)V +c dlo net/minecraft/class_2435 net/minecraft/world/level/block/PlayerHeadBlock + f Lcom/mojang/serialization/MapCodec; b field_46411 CODEC + m (Ldtb$d;)V + m ()V +c dlp net/minecraft/class_2433 net/minecraft/world/level/block/PlayerWallHeadBlock + f Lcom/mojang/serialization/MapCodec; b field_46412 CODEC + m (Ldtb$d;)V + m ()V +c dlq net/minecraft/class_5689 net/minecraft/world/level/block/PointedDripstoneBlock + f F F field_31201 STALAGMITE_FALL_DISTANCE_OFFSET + f I G field_31202 STALAGMITE_FALL_DAMAGE_MODIFIER + f F H field_33566 AVERAGE_DAYS_PER_GROWTH + f F I field_33567 GROWTH_PROBABILITY_PER_RANDOM_TICK + f I J field_33568 MAX_GROWTH_LENGTH + f I K field_33569 MAX_STALAGMITE_SEARCH_RANGE_WHEN_GROWING + f F L field_31203 STALACTITE_DRIP_START_PIXEL + f Lexv; M field_28053 TIP_MERGE_SHAPE + f Lexv; N field_28054 TIP_SHAPE_UP + f Lexv; O field_28055 TIP_SHAPE_DOWN + f Lexv; P field_28058 FRUSTUM_SHAPE + f Lexv; Q field_28056 MIDDLE_SHAPE + f Lexv; R field_28057 BASE_SHAPE + f F S field_31204 MAX_HORIZONTAL_OFFSET + f Lexv; T field_36340 REQUIRED_SPACE_TO_DRIP_THROUGH_NON_SOLID_BLOCK + f Lcom/mojang/serialization/MapCodec; a field_46413 CODEC + f Ldtw; b field_28050 TIP_DIRECTION + f Ldua; c field_28051 THICKNESS + f Ldtt; d field_28052 WATERLOGGED + f I e field_31205 MAX_SEARCH_LENGTH_WHEN_CHECKING_DRIP_TYPE + f I f field_31207 DELAY_BEFORE_FALLING + f F g field_31208 DRIP_PROBABILITY_PER_ANIMATE_TICK + f F h field_31209 DRIP_PROBABILITY_PER_ANIMATE_TICK_IF_UNDER_LIQUID_SOURCE + f I i field_31210 MAX_SEARCH_LENGTH_BETWEEN_STALACTITE_TIP_AND_CAULDRON + f F j field_31211 WATER_TRANSFER_PROBABILITY_PER_RANDOM_TICK + f F k field_31212 LAVA_TRANSFER_PROBABILITY_PER_RANDOM_TICK + f D l field_31213 MIN_TRIDENT_VELOCITY_TO_BREAK_DRIPSTONE + f F m field_31214 STALACTITE_DAMAGE_PER_FALL_DISTANCE_AND_SIZE + f I n field_31215 STALACTITE_MAX_DAMAGE + f I o field_31200 MAX_STALACTITE_HEIGHT_FOR_DAMAGE_CALCULATION + m (FLdlq$a;)Z a method_33270 method_33270 + m (Laqu;Ljd;)Lepd; a method_32775 getCauldronFillFluidType + m (Laqu;Ljd;Lji;)V a method_36369 grow + m (Ldcc;Ljd;Ldtc;)Z a method_40016 canDripThrough + m (Ldcw;Lepd;)Lepd; a method_33271 getDripFluid + m (Ldcw;Ljd;)Ljd; a method_32767 findStalactiteTipAboveCauldron + m (Ldcw;Ljd;Ldtc;)V a method_32899 spawnDripParticle + m (Ldcw;Ljd;Ldtc;I)Ljava/util/Optional; a method_32776 findRootBlock + m (Ldcw;Ljd;Ldtc;Ldlq$a;)V a method_33277 method_33277 + m (Ldcw;Ljd;Ldtc;Lepd;)V a method_32768 spawnDripParticle + m (Ldcw;Ljd;Lepd;)Ljd; a method_32769 findFillableCauldronBelowStalactiteTip + m (Ldcx;Ljd;Lji$b;Ljava/util/function/BiPredicate;Ljava/util/function/Predicate;I)Ljava/util/Optional; a method_33272 findBlockVertical + m (Ldcx;Ljd;Lji;Ldtz;)V a method_36370 createDripstone + m (Ldcz;Ljd;Lji;Z)Ldtz; a method_32770 calculateDripstoneThickness + m (Ldlq$a;)Lepd; a method_43131 method_43131 + m (Ldtc;Laqu;Ljd;)V a method_32771 spawnFallingStalactite + m (Ldtc;Laqu;Ljd;F)V a method_32772 maybeTransferFluid + m (Ldtc;Ldcx;Ljd;)V a method_36376 createMergedTips + m (Ldtc;Ldcx;Ljd;IZ)Ljd; a method_32782 findTip + m (Ldtc;Ldtc;)Z a method_36371 canGrow + m (Ldtc;Lji;)Z a method_36372 isUnmergedTipWithDirection + m (Ldtc;Z)Z a method_32784 isTip + m (Lepd;)Z a method_33273 canFillCauldron + m (Lepd;Ldtc;)Z a method_33274 method_33274 + m (Lji;Ljd;Ldtc;)Z a method_33275 method_33275 + m (ZLdtc;)Z a method_36373 method_36373 + m (Laqu;Ljd;)V b method_36368 growStalagmiteBelow + m (Ldcw;Ljd;)Ldlq$a; b method_33279 method_33279 + m (Ldcw;Ljd;Ldtc;)Ljava/util/Optional; b method_33276 getFluidAboveStalactite + m (Ldcw;Ljd;Ldtc;Ldlq$a;)V b method_33280 method_33280 + m (Ldcz;Ljd;Lji;)Lji; b method_32777 calculateTipDirection + m (Ldtc;Laqu;Ljd;)Z b method_36374 canTipGrow + m (Ldtc;Ldcz;Ljd;)Z b method_32778 isStalactiteStartPos + m (Ldtc;Lji;)Z b method_32774 isPointedDripstoneWithDirection + m (Lji;Ljd;Ldtc;)Z b method_33278 method_33278 + m (Ldcw;Ljd;Ldtc;)Z c method_40017 method_40017 + m (Ldcz;Ljd;Lji;)Z c method_32781 isValidPointedDripstonePlacement + m (Ldtc;Laqu;Ljd;Layw;)V c method_36375 growStalactiteOrStalagmiteIfPossible + m (Ldcw;Ljd;Ldtc;)Z d method_40018 method_40018 + m (Ldtc;)Z m method_32783 canDrip + m (Ldtc;)Z n method_32785 isStalactite + m (Ldtc;)Z o method_35283 isStalagmite + m (Ldtc;)Z p method_33281 method_33281 + m (Ldtb$d;)V + m ()V +c dlq$a net/minecraft/class_5689$class_7381 net/minecraft/world/level/block/PointedDripstoneBlock$FluidInfo + f Ljd; a comp_709 pos + f Lepd; b comp_710 fluid + f Ldtc; c comp_711 sourceState + m ()Ljd; a comp_709 pos + m ()Lepd; b comp_710 fluid + m ()Ldtc; c comp_711 sourceState + m (Ljd;Lepd;Ldtc;)V +c dlr net/minecraft/class_9797 net/minecraft/world/level/block/Portal + m (Laqu;Lbsr;)I a method_60772 getPortalTransitionTime + m (Laqu;Lbsr;Ljd;)Leqc; a method_60770 getPortalDestination + m ()Ldlr$a; b method_60778 getLocalTransition +c dlr$a net/minecraft/class_9797$class_9798 net/minecraft/world/level/block/Portal$Transition + f Ldlr$a; a field_52061 CONFUSION + f Ldlr$a; b field_52062 NONE + f [Ldlr$a; c field_52063 $VALUES + m ()[Ldlr$a; a method_60779 $values + m (Ljava/lang/String;I)V + m ()V +c dls net/minecraft/class_2439 net/minecraft/world/level/block/PotatoBlock + f Lcom/mojang/serialization/MapCodec; a field_46414 CODEC + f [Lexv; b field_11357 SHAPE_BY_AGE + m (Ldtb$d;)V + m ()V +c dlt net/minecraft/class_5635 net/minecraft/world/level/block/PowderSnowBlock + f Lcom/mojang/serialization/MapCodec; a field_46415 CODEC + f F b field_31216 HORIZONTAL_PARTICLE_MOMENTUM_FACTOR + f F c field_31217 IN_BLOCK_HORIZONTAL_SPEED_MULTIPLIER + f F d field_31218 IN_BLOCK_VERTICAL_SPEED_MULTIPLIER + f F e field_31219 NUM_BLOCKS_TO_FALL_INTO_BLOCK + f Lexv; f field_31220 FALLING_COLLISION_SHAPE + f D g field_36189 MINIMUM_FALL_DISTANCE_FOR_SOUND + f D h field_36190 MINIMUM_FALL_DISTANCE_FOR_BIG_SOUND + m (Lbsr;)Z a method_32355 canEntityWalkOnPowderSnow + m (Ldtb$d;)V + m ()V +c dlu net/minecraft/class_2436 net/minecraft/world/level/block/PoweredBlock + f Lcom/mojang/serialization/MapCodec; a field_46416 CODEC + m (Ldtb$d;)V + m ()V +c dlv net/minecraft/class_2442 net/minecraft/world/level/block/PoweredRailBlock + f Lcom/mojang/serialization/MapCodec; d field_46417 CODEC + f Ldua; e field_11365 SHAPE + f Ldtt; f field_11364 POWERED + m (Ldcw;Ljd;Ldtc;ZI)Z a method_10413 findPoweredRailSignal + m (Ldcw;Ljd;ZILdug;)Z a method_10414 isSameRailWithPower + m (Ldtb$d;)V + m ()V +c dlv$1 net/minecraft/class_2442$1 net/minecraft/world/level/block/PoweredRailBlock$1 + f [I a field_11368 $SwitchMap$net$minecraft$world$level$block$state$properties$RailShape + f [I b field_11367 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I c field_11366 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c dlw net/minecraft/class_2440 net/minecraft/world/level/block/PressurePlateBlock + f Lcom/mojang/serialization/MapCodec; e field_46418 CODEC + f Ldtt; f field_11358 POWERED + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54036 method_54036 + m (Ldlw;)Ldtr; a method_54037 method_54037 + m (Ldtr;Ldtb$d;)V + m ()V +c dlw$1 net/minecraft/class_2440$1 net/minecraft/world/level/block/PressurePlateBlock$1 + f [I a field_11360 $SwitchMap$net$minecraft$world$level$block$state$properties$BlockSetType$PressurePlateSensitivity + m ()V +c dlx net/minecraft/class_2445 net/minecraft/world/level/block/PumpkinBlock + f Lcom/mojang/serialization/MapCodec; a field_46419 CODEC + m (Ldtb$d;)V + m ()V +c dly net/minecraft/class_2443 net/minecraft/world/level/block/RailBlock + f Lcom/mojang/serialization/MapCodec; d field_46420 CODEC + f Ldua; e field_11369 SHAPE + m (Ldtb$d;)V + m ()V +c dly$1 net/minecraft/class_2443$1 net/minecraft/world/level/block/RailBlock$1 + f [I a field_11372 $SwitchMap$net$minecraft$world$level$block$state$properties$RailShape + f [I b field_11371 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I c field_11370 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c dlz net/minecraft/class_2452 net/minecraft/world/level/block/RailState + f Ldcw; a field_11409 level + f Ljd; b field_11410 pos + f Ldfn; c field_11411 block + f Ldtc; d field_11406 state + f Z e field_11408 isStraight + f Ljava/util/List; f field_11407 connections + m ()Ljava/util/List; a method_10457 getConnections + m (Ldlz;)Z a method_10464 connectsTo + m (Ldug;)V a method_10466 updateConnections + m (Ljd;)Z a method_10456 hasRail + m (ZZLdug;)Ldlz; a method_10459 place + m ()I b method_10460 countPotentialConnections + m (Ldlz;)Z b method_10455 canConnectTo + m (Ljd;)Ldlz; b method_10458 getRail + m ()Ldtc; c method_10462 getState + m (Ldlz;)V c method_10461 connectTo + m (Ljd;)Z c method_10463 hasConnection + m ()V d method_10467 removeSoftConnections + m (Ljd;)Z d method_10465 hasNeighborRail + m (Ldcw;Ljd;Ldtc;)V +c dlz$1 net/minecraft/class_2452$1 net/minecraft/world/level/block/RailState$1 + f [I a field_11412 $SwitchMap$net$minecraft$world$level$block$state$properties$RailShape + m ()V +c dma net/minecraft/class_2449 net/minecraft/world/level/block/RedStoneOreBlock + f Lcom/mojang/serialization/MapCodec; a field_46421 CODEC + f Ldtt; b field_11392 LIT + m (Ldcw;Ljd;)V a method_10440 spawnParticles + m (Ldtc;Ldcw;Ljd;)V d method_10441 interact + m (Ldtb$d;)V + m ()V +c dmb net/minecraft/class_2457 net/minecraft/world/level/block/RedStoneWireBlock + f Ljava/util/Map; F field_24416 SHAPES_CACHE + f [Lexc; G field_24466 COLORS + f F H field_31221 PARTICLE_DENSITY + f Ldtc; I field_24733 crossState + f Z J field_11438 shouldSignal + f Lcom/mojang/serialization/MapCodec; a field_46422 CODEC + f Ldua; b field_11440 NORTH + f Ldua; c field_11436 EAST + f Ldua; d field_11437 SOUTH + f Ldua; e field_11439 WEST + f Lduc; f field_11432 POWER + f Ljava/util/Map; g field_11435 PROPERTY_BY_DIRECTION + f I h field_31222 H + f I i field_31223 W + f I j field_31224 E + f I k field_31225 N + f I l field_31226 S + f Lexv; m field_24413 SHAPE_DOT + f Ljava/util/Map; n field_24414 SHAPES_FLOOR + f Ljava/util/Map; o field_24415 SHAPES_UP + m (Ldcc;Ldtc;Ljd;)Ldtc; a method_27840 getConnectionState + m (Ldcc;Ljd;Ldtc;)Z a method_27937 canSurviveOn + m (Ldcc;Ljd;Lji;)Lduh; a method_10477 getConnectingSide + m (Ldcc;Ljd;Lji;Z)Lduh; a method_27841 getConnectingSide + m (Ldcw;Layw;Ljd;Lexc;Lji;Lji;FF)V a method_27936 spawnParticlesAlongLine + m (Ldcw;Ljd;)I a method_27842 calculateTargetStrength + m (Ldcw;Ljd;Ldtc;)V a method_10485 updatePowerStrength + m (Ldcw;Ljd;Ldtc;Ldtc;)V a method_28482 updatesOnShapeChange + m (Ldtc;Lji;)Z a method_10482 shouldConnectTo + m ([Lexc;)V a method_31649 method_31649 + m (I)I b method_10487 getColorForPower + m (Ldcc;Ldtc;Ljd;)Ldtc; b method_27843 getMissingConnections + m (Ldcw;Ljd;)V b method_10479 checkCornerChangeAt + m (Ldcw;Ljd;)V c method_27844 updateNeighborsOfNeighboringWires + m (Ldtc;)Z m method_10484 shouldConnectTo + m (Ldtc;)Lexv; n method_27845 calculateShape + m (Ldtc;)Z o method_27846 isCross + m (Ldtc;)Z p method_28483 isDot + m (Ldtc;)I q method_10486 getWireSignal + m (Ldtb$d;)V + m ()V +c dmb$1 net/minecraft/class_2457$1 net/minecraft/world/level/block/RedStoneWireBlock$1 + f [I a field_24467 $SwitchMap$net$minecraft$world$level$block$state$properties$RedstoneSide + f [I b field_11442 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I c field_11441 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c dmc net/minecraft/class_2453 net/minecraft/world/level/block/RedstoneLampBlock + f Lcom/mojang/serialization/MapCodec; a field_46423 CODEC + f Ldtt; b field_11413 LIT + m (Ldtb$d;)V + m ()V +c dmd net/minecraft/class_2459 net/minecraft/world/level/block/RedstoneTorchBlock + f Lcom/mojang/serialization/MapCodec; c field_46424 CODEC + f Ldtt; d field_11446 LIT + f I e field_31227 RECENT_TOGGLE_TIMER + f I f field_31228 MAX_RECENT_TOGGLES + f I g field_31229 RESTART_DELAY + f Ljava/util/Map; h field_11445 RECENT_TOGGLES + f I i field_31230 TOGGLE_DELAY + m (Ldcc;)Ljava/util/List; a method_20453 method_20453 + m (Ldcw;Ljd;Ldtc;)Z a method_10488 hasNeighborSignal + m (Ldcw;Ljd;Z)Z a method_10489 isToggledTooFrequently + m (Ldtb$d;)V + m ()V +c dmd$a net/minecraft/class_2459$class_2460 net/minecraft/world/level/block/RedstoneTorchBlock$Toggle + f Ljd; a field_11448 pos + f J b field_11447 when + m (Ljd;J)V +c dme net/minecraft/class_2458 net/minecraft/world/level/block/RedstoneWallTorchBlock + f Lcom/mojang/serialization/MapCodec; h field_46425 CODEC + f Ldtw; i field_11443 FACING + f Ldtt; j field_11444 LIT + m (Ldtb$d;)V + m ()V +c dmf net/minecraft/class_2464 net/minecraft/world/level/block/RenderShape + f Ldmf; a field_11455 INVISIBLE + f Ldmf; b field_11456 ENTITYBLOCK_ANIMATED + f Ldmf; c field_11458 MODEL + f [Ldmf; d field_11457 $VALUES + m ()[Ldmf; a method_36708 $values + m (Ljava/lang/String;I)V + m ()V +c dmg net/minecraft/class_2462 net/minecraft/world/level/block/RepeaterBlock + f Lcom/mojang/serialization/MapCodec; a field_46426 CODEC + f Ldtt; b field_11452 LOCKED + f Lduc; e field_11451 DELAY + m (Ldtb$d;)V + m ()V +c dmh net/minecraft/class_4969 net/minecraft/world/level/block/RespawnAnchorBlock + f Lcom/mojang/serialization/MapCodec; a field_46427 CODEC + f I b field_31231 MIN_CHARGES + f I c field_31232 MAX_CHARGES + f Lduc; d field_23153 CHARGE + f Lcom/google/common/collect/ImmutableList; e field_26442 RESPAWN_HORIZONTAL_OFFSETS + f Lcom/google/common/collect/ImmutableList; f field_26443 RESPAWN_OFFSETS + m (Lbsr;Ldcw;Ljd;Ldtc;)V a method_26382 charge + m (Lbsx;Ldcg;Ljd;)Ljava/util/Optional; a method_26156 findStandUpPosition + m (Lbsx;Ldcg;Ljd;Z)Ljava/util/Optional; a method_30842 findStandUpPosition + m (Lcuq;)Z a method_29289 isRespawnFuel + m (Ldcw;)Z a method_27353 canSetSpawn + m (Ldcw;Ljd;)Z a method_29559 method_29559 + m (Ldtc;I)I a method_26157 getScaledChargeLevel + m (Ljd;Ldcw;)Z a method_29560 isWaterThatWouldFlow + m (Ldtc;Ldcw;Ljd;)V d method_29561 explode + m (Ldtc;)Z m method_29290 canBeCharged + m (Ldtb$d;)V + m ()V +c dmh$1 net/minecraft/class_4969$1 net/minecraft/world/level/block/RespawnAnchorBlock$1 + f Ljd; a field_25404 val$pos + f Z b field_25405 val$inWater + m (Ldmh;Ljd;Z)V +c dmi net/minecraft/class_2337 net/minecraft/world/level/block/RodBlock + f F f field_31233 AABB_MIN + f F g field_31234 AABB_MAX + f Lexv; h field_10971 Y_AXIS_AABB + f Lexv; i field_10970 Z_AXIS_AABB + f Lexv; j field_10969 X_AXIS_AABB + m (Ldtb$d;)V + m ()V +c dmi$1 net/minecraft/class_2337$1 net/minecraft/world/level/block/RodBlock$1 + f [I a field_10972 $SwitchMap$net$minecraft$core$Direction$Axis + m ()V +c dmj net/minecraft/class_5954 net/minecraft/world/level/block/RootedDirtBlock + f Lcom/mojang/serialization/MapCodec; a field_46428 CODEC + m (Ldtb$d;)V + m ()V +c dmk net/minecraft/class_4774 net/minecraft/world/level/block/RootsBlock + f Lcom/mojang/serialization/MapCodec; a field_46429 CODEC + f F b field_31235 AABB_OFFSET + f Lexv; c field_22137 SHAPE + m (Ldtb$d;)V + m ()V +c dml net/minecraft/class_2465 net/minecraft/world/level/block/RotatedPillarBlock + f Lcom/mojang/serialization/MapCodec; h field_46430 CODEC + f Ldua; i field_11459 AXIS + m (Ldtc;Ldmm;)Ldtc; b method_36377 rotatePillar + m (Ldtb$d;)V + m ()V +c dml$1 net/minecraft/class_2465$1 net/minecraft/world/level/block/RotatedPillarBlock$1 + f [I a field_11461 $SwitchMap$net$minecraft$core$Direction$Axis + f [I b field_11460 $SwitchMap$net$minecraft$world$level$block$Rotation + m ()V +c dmm net/minecraft/class_2470 net/minecraft/world/level/block/Rotation + f Ldmm; a field_11467 NONE + f Ldmm; b field_11463 CLOCKWISE_90 + f Ldmm; c field_11464 CLOCKWISE_180 + f Ldmm; d field_11465 COUNTERCLOCKWISE_90 + f Lcom/mojang/serialization/Codec; e field_39313 CODEC + f Ljava/lang/String; f field_39314 id + f Lh; g field_23264 rotation + f [Ldmm; h field_11466 $VALUES + m ()Lh; a method_26383 rotation + m (II)I a method_10502 rotate + m (Layw;)Ldmm; a method_16548 getRandom + m (Ldmm;)Ldmm; a method_10501 getRotated + m (Lji;)Lji; a method_10503 rotate + m ()[Ldmm; b method_36709 $values + m (Layw;)Ljava/util/List; b method_16547 getShuffled + m (Ljava/lang/String;ILjava/lang/String;Lh;)V + m ()V +c dmn net/minecraft/class_2473 net/minecraft/world/level/block/SaplingBlock + f Lcom/mojang/serialization/MapCodec; e field_46431 CODEC + f Lduc; f field_11476 STAGE + f F g field_31236 AABB_OFFSET + f Lexv; h field_11478 SHAPE + f Ldsr; i field_11477 treeGrower + m (Laqu;Ljd;Ldtc;Layw;)V a method_10507 advanceTree + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54038 method_54038 + m (Ldmn;)Ldsr; a method_54039 method_54039 + m (Ldsr;Ldtb$d;)V + m ()V +c dmo net/minecraft/class_3736 net/minecraft/world/level/block/ScaffoldingBlock + f Lcom/mojang/serialization/MapCodec; a field_46432 CODEC + f I b field_31237 STABILITY_MAX_DISTANCE + f Lduc; c field_16495 DISTANCE + f Ldtt; d field_16496 WATERLOGGED + f Ldtt; e field_16547 BOTTOM + f I f field_31238 TICK_DELAY + f Lexv; g field_16494 STABLE_SHAPE + f Lexv; h field_16497 UNSTABLE_SHAPE + f Lexv; i field_17577 UNSTABLE_SHAPE_BOTTOM + f Lexv; j field_17578 BELOW_BLOCK + m (Ldcc;Ljd;)I a method_16372 getDistance + m (Ldcc;Ljd;I)Z a method_16373 isBottom + m (Ldtb$d;)V + m ()V +c dmp net/minecraft/class_7124 net/minecraft/world/level/block/SculkBehaviour + f Ldmp; v_ field_37602 DEFAULT + m (Ldcx;Ldtc;Ljd;Layw;)V a method_41468 onDischarged + m (Ldcx;Ljd;Layw;)Z a method_41470 depositCharge + m (Ldcx;Ljd;Ldtc;Ljava/util/Collection;Z)Z a method_41469 attemptSpreadVein + m (Ldmu$a;Ldcx;Ljd;Layw;Ldmu;Z)I a method_41471 attemptUseCharge + m ()B b method_41467 getSculkSpreadDelay + m ()Z d method_41472 canChangeBlockStateOnSpread + m (I)I j_ method_41473 updateDecayDelay + m ()V +c dmp$1 net/minecraft/class_7124$1 net/minecraft/world/level/block/SculkBehaviour$1 + m ()V +c dmq net/minecraft/class_7125 net/minecraft/world/level/block/SculkBlock + f Lcom/mojang/serialization/MapCodec; b field_46433 CODEC + m (Ldcx;Ljd;)Z a method_41474 canPlaceGrowth + m (Ldcx;Ljd;Layw;Z)Ldtc; a method_41475 getRandomGrowthState + m (Ldmu;Ljd;Ljd;I)I a method_41476 getDecayPenalty + m (Ldtb$d;)V + m ()V +c dmr net/minecraft/class_7126 net/minecraft/world/level/block/SculkCatalystBlock + f Lcom/mojang/serialization/MapCodec; a field_46434 CODEC + f Ldtt; b field_37604 PULSE + f Lbpw; c field_37605 xpRange + m (Ldtb$d;)V + m ()V +c dms net/minecraft/class_5703 net/minecraft/world/level/block/SculkSensorBlock + f [F a field_43248 RESONANCE_PITCH_BEND + f Lcom/mojang/serialization/MapCodec; c field_46435 CODEC + f I d field_31239 ACTIVE_TICKS + f I e field_44607 COOLDOWN_TICKS + f Ldua; f field_28111 PHASE + f Lduc; g field_28112 POWER + f Ldtt; h field_28113 WATERLOGGED + f Lexv; i field_28114 SHAPE + m (Lbsr;Ldcw;Ljd;I)V a method_49822 tryResonateVibration + m (Lbsr;Ldcw;Ljd;Ldtc;II)V a method_32904 activate + m (Ldcw;Ljd;Ldtc;)V a method_32903 deactivate + m (Ldcw;Ljd;Ldtc;Ldrp;)V a method_32905 method_32905 + m ([F)V a method_49823 method_49823 + m (Ldcw;Ljd;Ldtc;)V b method_32902 updateNeighbours + m ()I c method_51166 getActiveTicks + m (Ldtc;)Lduj; m method_32908 getPhase + m (Ldtc;)Z n method_32909 canActivate + m (Ldtb$d;)V + m ()V +c dmt net/minecraft/class_7268 net/minecraft/world/level/block/SculkShriekerBlock + f Lcom/mojang/serialization/MapCodec; a field_46436 CODEC + f Ldtt; b field_38229 SHRIEKING + f Ldtt; c field_38230 WATERLOGGED + f Ldtt; d field_38422 CAN_SUMMON + f Lexv; e field_38231 COLLIDER + f D f field_38232 TOP_Y + m (Laqu;Laqv;Ldrq;)V a method_43134 method_43134 + m (Laqu;Ldrq;)V a method_43132 method_43132 + m (Ldcw;Ljd;Ldtc;Ldrq;)V a method_42317 method_42317 + m (Laqu;Ldrq;)V b method_43133 method_43133 + m (Ldtb$d;)V + m ()V +c dmu net/minecraft/class_7128 net/minecraft/world/level/block/SculkSpreader + f I a field_37609 MAX_GROWTH_RATE_RADIUS + f I b field_37610 MAX_CHARGE + f F c field_37611 MAX_DECAY_FACTOR + f I d field_37612 SHRIEKER_PLACEMENT_RATE + f I e field_37613 MAX_CURSORS + f Z f field_37614 isWorldGeneration + f Lawu; g field_37615 replaceableBlocks + f I h field_37616 growthSpawnCost + f I i field_37617 noGrowthRadius + f I j field_37618 chargeDecayRate + f I k field_37619 additionalDecayRate + f Ljava/util/List; l field_37620 cursors + f Lorg/slf4j/Logger; m field_37621 LOGGER + m ()Ldmu; a method_41478 createLevelSpreader + m (Ldcx;Ljd;Layw;Z)V a method_41479 updateCursors + m (Ldmu$a;)V a method_41480 addCursor + m (Ldmu$a;Ljd;Ljava/lang/Integer;)Ljava/lang/Integer; a method_41481 method_41481 + m (Ljd;I)V a method_41482 addCursors + m (Lub;)V a method_41483 load + m (Lub;Luy;)V a method_41484 method_41484 + m ()Ldmu; b method_41485 createWorldGenSpreader + m (Ldmu$a;)Ljava/lang/Integer; b method_51355 method_51355 + m (Lub;)V b method_41486 save + m ()Lawu; c method_41487 replaceableBlocks + m ()I d method_41488 growthSpawnCost + m ()I e method_41489 noGrowthRadius + m ()I f method_41490 chargeDecayRate + m ()I g method_41491 additionalDecayRate + m ()Z h method_41492 isWorldGeneration + m ()Ljava/util/List; i method_41493 getCursors + m ()V j method_41494 clear + m (ZLawu;IIII)V + m ()V +c dmu$a net/minecraft/class_7128$class_7129 net/minecraft/world/level/block/SculkSpreader$ChargeCursor + f I a field_37622 MAX_CURSOR_DECAY_DELAY + f Lcom/mojang/serialization/Codec; b field_37623 CODEC + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; c field_37624 NON_CORNER_NEIGHBOURS + f Ljd; d field_37625 pos + f I e field_37626 charge + f I f field_37627 updateDelay + f I g field_37628 decayDelay + f Ljava/util/Set; h field_37629 facings + f Lcom/mojang/serialization/Codec; i field_37630 DIRECTION_SET + m ()Ljd; a method_41495 getPos + m (Layw;)Ljava/util/List; a method_41507 getRandomizedNonCornerNeighbourOffsets + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41502 method_41502 + m (Ldcx;Ljd;Layw;)Ljd; a method_41498 getValidMovementPos + m (Ldcx;Ljd;Layw;Ldmu;Z)V a method_41499 update + m (Ldcx;Ljd;Ljd;)Z a method_41496 isMovementUnobstructed + m (Ldcx;Ljd;Lji;)Z a method_41497 isUnobstructed + m (Ldcx;Ljd;Z)Z a method_41500 shouldUpdate + m (Ldmu$a;)V a method_41501 mergeWith + m (Ldtc;)Ldmp; a method_41503 getBlockBehaviour + m (Lit/unimi/dsi/fastutil/objects/ObjectArrayList;)V a method_41505 method_41505 + m (Ljava/util/List;)Ljava/util/Set; a method_41506 method_41506 + m (Ljd;)Z a method_41504 method_41504 + m ()I b method_41508 getCharge + m (Ldmu$a;)Ljava/util/Optional; b method_41509 method_41509 + m ()I c method_41510 getDecayDelay + m (Ldmu$a;)Ljava/lang/Integer; c method_41511 method_41511 + m ()Ljava/util/Set; d method_41512 getFacingData + m (Ljd;IIILjava/util/Optional;)V + m (Ljd;I)V + m ()V +c dmv net/minecraft/class_7130 net/minecraft/world/level/block/SculkVeinBlock + f Lcom/mojang/serialization/MapCodec; c field_46437 CODEC + f Ldtt; d field_37631 WATERLOGGED + f Ldkz; e field_37632 veinSpreader + f Ldkz; f field_37633 sameSpaceSpreader + m (Ldcx;Ldtc;Ljd;)Z a method_41513 hasSubstrateAccess + m (Ldcx;Ljd;Ldtc;Ljava/util/Collection;)Z a method_41514 regrow + m (Ldmu;Ldcx;Ljd;Layw;)Z a method_41515 attemptPlaceSculk + m ()Ldkz; m method_41516 getSameSpaceSpreader + m (Ldtb$d;)V + m ()V +c dmv$a net/minecraft/class_7130$class_7131 net/minecraft/world/level/block/SculkVeinBlock$SculkVeinSpreaderConfig + f [Ldkz$e; b field_37635 spreadTypes + m (Ldmv;[Ldkz$e;)V +c dmw net/minecraft/class_2472 net/minecraft/world/level/block/SeaPickleBlock + f Lcom/mojang/serialization/MapCodec; a field_46438 CODEC + f I b field_31241 MAX_PICKLES + f Lduc; c field_11472 PICKLES + f Ldtt; d field_11475 WATERLOGGED + f Lexv; e field_11473 ONE_AABB + f Lexv; f field_11470 TWO_AABB + f Lexv; g field_11471 THREE_AABB + f Lexv; h field_11474 FOUR_AABB + m (Ldtc;)Z m method_10506 isDead + m (Ldtb$d;)V + m ()V +c dmx net/minecraft/class_2476 net/minecraft/world/level/block/SeagrassBlock + f Lcom/mojang/serialization/MapCodec; a field_46439 CODEC + f F b field_31242 AABB_OFFSET + f Lexv; c field_11485 SHAPE + m (Ldtb$d;)V + m ()V +c dmy net/minecraft/class_2480 net/minecraft/world/level/block/ShulkerBoxBlock + f Lcom/mojang/serialization/MapCodec; a field_46440 CODEC + f Ldua; b field_11496 FACING + f Lakr; c field_11495 CONTENTS + f Lwz; d field_49401 UNKNOWN_CONTENTS + f F e field_41075 OPEN_AABB_SIZE + f Lexv; f field_41076 UP_OPEN_AABB + f Lexv; g field_41077 DOWN_OPEN_AABB + f Lexv; h field_41078 WES_OPEN_AABB + f Lexv; i field_41079 EAST_OPEN_AABB + f Lexv; j field_41080 NORTH_OPEN_AABB + f Lexv; k field_41081 SOUTH_OPEN_AABB + f Ljava/util/Map; l field_41082 OPEN_SHAPE_BY_DIRECTION + f Lcti; m field_11494 color + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54040 method_54040 + m (Lcti;)Ldfy; a method_10525 getBlockByColor + m (Lcuq;Ldcz;Ldrr;)V a method_38234 method_38234 + m (Ldfy;)Lcti; a method_10526 getColorFromBlock + m (Ldmy;)Ljava/util/Optional; a method_54041 method_54041 + m (Ldrr;Ljava/util/function/Consumer;)V a method_10524 method_10524 + m (Ldtc;Ldcw;Ljd;Ldrr;)Z a method_33383 canOpen + m (Ljava/util/EnumMap;)V a method_47378 method_47378 + m (Ljava/util/Optional;Ldtb$d;)Ldmy; a method_54042 method_54042 + m ()Lcti; b method_10528 getColor + m (Lcti;)Lcuq; b method_10529 getColoredItemStack + m (Lcul;)Lcti; b method_10527 getColorFromItem + m (Lcti;Ldtb$d;)V + m ()V +c dmy$1 net/minecraft/class_2480$1 net/minecraft/world/level/block/ShulkerBoxBlock$1 + f [I a field_11497 $SwitchMap$net$minecraft$world$item$DyeColor + m ()V +c dmz net/minecraft/class_2478 net/minecraft/world/level/block/SignBlock + f Ldup; a field_21675 type + f Ldtt; f field_11491 WATERLOGGED + f F g field_31243 AABB_OFFSET + f Lexv; h field_11492 SHAPE + m (Lcmx;Ldrs;)Z a method_49824 otherPlayerIsEditingSign + m (Lcmx;Ldrs;Z)V a method_49825 openTextEdit + m (Ldfy;)Ldup; a method_45459 getWoodType + m (Lwz;)Z a method_51172 method_51172 + m (Lcmx;Ldrs;Z)Z b method_51173 hasEditableText + m ()Ldup; d method_24025 type + m (Ldtc;)F g method_49814 getYRotationDegrees + m (Ldtc;)Lexc; m method_50003 getSignHitboxCenterPosition + m (Ldup;Ldtb$d;)V + m ()V +c dna net/minecraft/class_3737 net/minecraft/world/level/block/SimpleWaterloggedBlock +c dnb net/minecraft/class_2484 net/minecraft/world/level/block/SkullBlock + f I b field_31245 ROTATIONS + f Lcom/mojang/serialization/MapCodec; c field_46441 CODEC + f I d field_31244 MAX + f Lduc; e field_11505 ROTATION + f Lexv; f field_11506 SHAPE + f Lexv; g field_41312 PIGLIN_SHAPE + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54043 method_54043 + m (Ldnb$a;Ldtb$d;)V + m ()V +c dnb$a net/minecraft/class_2484$class_2485 net/minecraft/world/level/block/SkullBlock$Type + f Ljava/util/Map; a field_46442 TYPES + f Lcom/mojang/serialization/Codec; b field_46443 CODEC + m ()V +c dnb$b net/minecraft/class_2484$class_2486 net/minecraft/world/level/block/SkullBlock$Types + f Ldnb$b; c field_11512 SKELETON + f Ldnb$b; d field_11513 WITHER_SKELETON + f Ldnb$b; e field_11510 PLAYER + f Ldnb$b; f field_11508 ZOMBIE + f Ldnb$b; g field_11507 CREEPER + f Ldnb$b; h field_41313 PIGLIN + f Ldnb$b; i field_11511 DRAGON + f Ljava/lang/String; j field_46444 name + f [Ldnb$b; k field_11509 $VALUES + m ()[Ldnb$b; a method_36710 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dnc net/minecraft/class_2482 net/minecraft/world/level/block/SlabBlock + f Lcom/mojang/serialization/MapCodec; a field_46445 CODEC + f Ldua; b field_11501 TYPE + f Ldtt; c field_11502 WATERLOGGED + f Lexv; d field_11500 BOTTOM_AABB + f Lexv; e field_11499 TOP_AABB + m (Ldtb$d;)V + m ()V +c dnc$1 net/minecraft/class_2482$1 net/minecraft/world/level/block/SlabBlock$1 + f [I a field_11504 $SwitchMap$net$minecraft$world$level$block$state$properties$SlabType + f [I b field_11503 $SwitchMap$net$minecraft$world$level$pathfinder$PathComputationType + m ()V +c dnd net/minecraft/class_2490 net/minecraft/world/level/block/SlimeBlock + f Lcom/mojang/serialization/MapCodec; a field_46446 CODEC + m (Lbsr;)V a method_21847 bounceUp + m (Ldtb$d;)V + m ()V +c dne net/minecraft/class_5808 net/minecraft/world/level/block/SmallDripleafBlock + f Lcom/mojang/serialization/MapCodec; c field_46447 CODEC + f Ldtw; d field_29563 FACING + f F e field_31246 AABB_OFFSET + f Lexv; f field_28690 SHAPE + f Ldtt; g field_28691 WATERLOGGED + m (Ldtb$d;)V + m ()V +c dnf net/minecraft/class_3717 net/minecraft/world/level/block/SmithingTableBlock + f Lcom/mojang/serialization/MapCodec; b field_46448 CODEC + f Lwz; c field_22511 CONTAINER_TITLE + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_24950 method_24950 + m (Ldtb$d;)V + m ()V +c dng net/minecraft/class_3716 net/minecraft/world/level/block/SmokerBlock + f Lcom/mojang/serialization/MapCodec; c field_46449 CODEC + m (Ldtb$d;)V + m ()V +c dnh net/minecraft/class_8238 net/minecraft/world/level/block/SnifferEggBlock + f Lcom/mojang/serialization/MapCodec; a field_46450 CODEC + f I b field_43249 MAX_HATCH_LEVEL + f Lduc; c field_43250 HATCH + f I d field_43251 REGULAR_HATCH_TIME_TICKS + f I e field_43252 BOOSTED_HATCH_TIME_TICKS + f I f field_43253 RANDOM_HATCH_OFFSET_TICKS + f Lexv; g field_43254 SHAPE + m (Ldcc;Ljd;)Z a method_49826 hatchBoost + m (Ldtc;)I m method_49827 getHatchLevel + m (Ldtc;)Z n method_49828 isReadyToHatch + m (Ldtb$d;)V + m ()V +c dni net/minecraft/class_2488 net/minecraft/world/level/block/SnowLayerBlock + f Lcom/mojang/serialization/MapCodec; a field_46451 CODEC + f I b field_31247 MAX_HEIGHT + f Lduc; c field_11518 LAYERS + f [Lexv; d field_11517 SHAPE_BY_LAYER + f I e field_31248 HEIGHT_IMPASSABLE + m (Ldtb$d;)V + m ()V +c dni$1 net/minecraft/class_2488$1 net/minecraft/world/level/block/SnowLayerBlock$1 + f [I a field_11519 $SwitchMap$net$minecraft$world$level$pathfinder$PathComputationType + m ()V +c dnj net/minecraft/class_2493 net/minecraft/world/level/block/SnowyDirtBlock + f Lcom/mojang/serialization/MapCodec; b field_46452 CODEC + f Ldtt; c field_11522 SNOWY + m (Ldtc;)Z m method_35291 isSnowySetting + m (Ldtb$d;)V + m ()V +c dnk net/minecraft/class_4775 net/minecraft/world/level/block/SoulFireBlock + f Lcom/mojang/serialization/MapCodec; c field_46453 CODEC + m (Ldtc;)Z m method_26158 canSurviveOnBlock + m (Ldtb$d;)V + m ()V +c dnl net/minecraft/class_2492 net/minecraft/world/level/block/SoulSandBlock + f Lcom/mojang/serialization/MapCodec; a field_46454 CODEC + f Lexv; b field_11521 SHAPE + f I c field_31249 BUBBLE_COLUMN_CHECK_DELAY + m (Ldtb$d;)V + m ()V +c dnm net/minecraft/class_2498 net/minecraft/world/level/block/SoundType + f Ldnm; A field_17734 LANTERN + f Ldnm; B field_22152 STEM + f Ldnm; C field_22153 NYLIUM + f Ldnm; D field_22154 FUNGUS + f Ldnm; E field_22138 ROOTS + f Ldnm; F field_22139 SHROOMLIGHT + f Ldnm; G field_22140 WEEPING_VINES + f Ldnm; H field_23082 TWISTING_VINES + f Ldnm; I field_22141 SOUL_SAND + f Ldnm; J field_22142 SOUL_SOIL + f Ldnm; K field_22143 BASALT + f Ldnm; L field_22144 WART_BLOCK + f Ldnm; M field_22145 NETHERRACK + f Ldnm; N field_22146 NETHER_BRICKS + f Ldnm; O field_22147 NETHER_SPROUTS + f Ldnm; P field_22148 NETHER_ORE + f Ldnm; Q field_22149 BONE_BLOCK + f Ldnm; R field_22150 NETHERITE_BLOCK + f Ldnm; S field_22151 ANCIENT_DEBRIS + f Ldnm; T field_23265 LODESTONE + f Ldnm; U field_24119 CHAIN + f Ldnm; V field_24120 NETHER_GOLD_ORE + f Ldnm; W field_24121 GILDED_BLACKSTONE + f Ldnm; X field_27196 CANDLE + f Ldnm; Y field_27197 AMETHYST + f Ldnm; Z field_27198 AMETHYST_CLUSTER + f Ldnm; aA field_37644 SCULK + f Ldnm; aB field_37645 SCULK_VEIN + f Ldnm; aC field_37646 SCULK_SHRIEKER + f Ldnm; aD field_28427 GLOW_LICHEN + f Ldnm; aE field_29033 DEEPSLATE + f Ldnm; aF field_29034 DEEPSLATE_BRICKS + f Ldnm; aG field_29035 DEEPSLATE_TILES + f Ldnm; aH field_29036 POLISHED_DEEPSLATE + f Ldnm; aI field_37636 FROGLIGHT + f Ldnm; aJ field_37637 FROGSPAWN + f Ldnm; aK field_37638 MANGROVE_ROOTS + f Ldnm; aL field_37639 MUDDY_MANGROVE_ROOTS + f Ldnm; a field_44608 EMPTY + f Ldnm; aM field_37640 MUD + f Ldnm; aN field_37641 MUD_BRICKS + f Ldnm; aO field_37642 PACKED_MUD + f Ldnm; aP field_40313 HANGING_SIGN + f Ldnm; aQ field_41083 NETHER_WOOD_HANGING_SIGN + f Ldnm; aR field_41084 BAMBOO_WOOD_HANGING_SIGN + f Ldnm; aS field_40314 BAMBOO_WOOD + f Ldnm; aT field_40315 NETHER_WOOD + f Ldnm; aU field_42766 CHERRY_WOOD + f Ldnm; aV field_42767 CHERRY_SAPLING + f Ldnm; aW field_42768 CHERRY_LEAVES + f Ldnm; aX field_42769 CHERRY_WOOD_HANGING_SIGN + f Ldnm; aY field_41085 CHISELED_BOOKSHELF + f Ldnm; aZ field_42770 SUSPICIOUS_SAND + f Ldnm; aa field_27199 SMALL_AMETHYST_BUD + f Ldnm; ab field_27200 MEDIUM_AMETHYST_BUD + f Ldnm; ac field_27201 LARGE_AMETHYST_BUD + f Ldnm; ad field_27202 TUFF + f Ldnm; ae field_47083 TUFF_BRICKS + f Ldnm; af field_47084 POLISHED_TUFF + f Ldnm; ag field_27203 CALCITE + f Ldnm; ah field_28060 DRIPSTONE_BLOCK + f Ldnm; ai field_28061 POINTED_DRIPSTONE + f Ldnm; aj field_27204 COPPER + f Ldnm; ak field_47085 COPPER_BULB + f Ldnm; al field_47086 COPPER_GRATE + f Ldnm; am field_28692 CAVE_VINES + f Ldnm; an field_28693 SPORE_BLOSSOM + f Ldnm; ao field_28694 AZALEA + f Ldnm; ap field_28695 FLOWERING_AZALEA + f Ldnm; aq field_28696 MOSS_CARPET + f Ldnm; ar field_42772 PINK_PETALS + f Ldnm; as field_28697 MOSS + f Ldnm; at field_28698 BIG_DRIPLEAF + f Ldnm; au field_28699 SMALL_DRIPLEAF + f Ldnm; av field_28700 ROOTED_DIRT + f Ldnm; aw field_28701 HANGING_ROOTS + f Ldnm; ax field_28702 AZALEA_LEAVES + f Ldnm; ay field_28116 SCULK_SENSOR + f Ldnm; az field_37643 SCULK_CATALYST + f Ldnm; b field_11547 WOOD + f Ldnm; ba field_43255 SUSPICIOUS_GRAVEL + f Ldnm; bb field_42771 DECORATED_POT + f Ldnm; bc field_43256 DECORATED_POT_CRACKED + f Ldnm; bd field_47346 TRIAL_SPAWNER + f Ldnm; be field_45970 SPONGE + f Ldnm; bf field_45971 WET_SPONGE + f Ldnm; bg field_48855 VAULT + f Ldnm; bh field_49834 HEAVY_CORE + f Ldnm; bi field_50169 COBWEB + f F bj field_11540 volume + f F bk field_11539 pitch + f Lavo; bl field_11546 breakSound + f Lavo; bm field_11527 stepSound + f Lavo; bn field_11536 placeSound + f Lavo; bo field_11530 hitSound + f Lavo; bp field_11541 fallSound + f Ldnm; c field_11529 GRAVEL + f Ldnm; d field_11535 GRASS + f Ldnm; e field_25183 LILY_PAD + f Ldnm; f field_11544 STONE + f Ldnm; g field_11533 METAL + f Ldnm; h field_11537 GLASS + f Ldnm; i field_11543 WOOL + f Ldnm; j field_11526 SAND + f Ldnm; k field_11548 SNOW + f Ldnm; l field_27884 POWDER_SNOW + f Ldnm; m field_11532 LADDER + f Ldnm; n field_11531 ANVIL + f Ldnm; o field_11545 SLIME_BLOCK + f Ldnm; p field_21214 HONEY_BLOCK + f Ldnm; q field_11534 WET_GRASS + f Ldnm; r field_11528 CORAL_BLOCK + f Ldnm; s field_11542 BAMBOO + f Ldnm; t field_11538 BAMBOO_SAPLING + f Ldnm; u field_16498 SCAFFOLDING + f Ldnm; v field_17579 SWEET_BERRY_BUSH + f Ldnm; w field_17580 CROP + f Ldnm; x field_18852 HARD_CROP + f Ldnm; y field_23083 VINE + f Ldnm; z field_17581 NETHER_WART + m ()F a method_10597 getVolume + m ()F b method_10599 getPitch + m ()Lavo; c method_10595 getBreakSound + m ()Lavo; d method_10594 getStepSound + m ()Lavo; e method_10598 getPlaceSound + m ()Lavo; f method_10596 getHitSound + m ()Lavo; g method_10593 getFallSound + m (FFLavo;Lavo;Lavo;Lavo;Lavo;)V + m ()V +c dnn net/minecraft/class_2496 net/minecraft/world/level/block/SpawnerBlock + f Lcom/mojang/serialization/MapCodec; a field_46455 CODEC + m (Ldtb$d;)V + m ()V +c dno net/minecraft/class_2502 net/minecraft/world/level/block/SpongeBlock + f Lcom/mojang/serialization/MapCodec; a field_46456 CODEC + f I b field_31250 MAX_DEPTH + f I c field_31251 MAX_COUNT + f [Lji; d field_43257 ALL_DIRECTIONS + m (Ldcw;Ljd;)V a method_10620 tryAbsorbWater + m (Ljd;Ldcw;Ljd;)Z a method_49829 method_49829 + m (Ljd;Ljava/util/function/Consumer;)V a method_49830 method_49830 + m (Ldcw;Ljd;)Z b method_10619 removeWaterBreadthFirstSearch + m (Ldtb$d;)V + m ()V +c dnp net/minecraft/class_5809 net/minecraft/world/level/block/SporeBlossomBlock + f Lcom/mojang/serialization/MapCodec; a field_46457 CODEC + f Lexv; b field_28703 SHAPE + f I c field_31252 ADD_PARTICLE_ATTEMPTS + f I d field_31253 PARTICLE_XZ_RADIUS + f I e field_31254 PARTICLE_Y_MAX + m (Ldtb$d;)V + m ()V +c dnq net/minecraft/class_2500 net/minecraft/world/level/block/SpreadingSnowyDirtBlock + m (Ldtc;Ldcz;Ljd;)Z b method_10614 canBeGrass + m (Ldtc;Ldcz;Ljd;)Z c method_10613 canPropagate + m (Ldtb$d;)V +c dnr net/minecraft/class_2506 net/minecraft/world/level/block/StainedGlassBlock + f Lcom/mojang/serialization/MapCodec; a field_46458 CODEC + f Lcti; c field_11558 color + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54044 method_54044 + m (Lcti;Ldtb$d;)V + m ()V +c dns net/minecraft/class_2504 net/minecraft/world/level/block/StainedGlassPaneBlock + f Lcom/mojang/serialization/MapCodec; j field_46459 CODEC + f Lcti; k field_11554 color + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54045 method_54045 + m (Lcti;Ldtb$d;)V + m ()V +c dnt net/minecraft/class_2510 net/minecraft/world/level/block/StairBlock + f [Lexv; F field_11566 TOP_SHAPES + f [Lexv; G field_11564 BOTTOM_SHAPES + f Ldtc; H field_11574 baseState + f [I I field_11570 SHAPE_BY_STATE + f Ldfy; J field_11579 base + f Lcom/mojang/serialization/MapCodec; a field_46460 CODEC + f Ldtw; b field_11571 FACING + f Ldua; c field_11572 HALF + f Ldua; d field_11565 SHAPE + f Ldtt; e field_11573 WATERLOGGED + f Lexv; f field_11562 TOP_AABB + f Lexv; g field_11576 BOTTOM_AABB + f Lexv; h field_11561 OCTET_NNN + f Lexv; i field_11578 OCTET_NNP + f Lexv; j field_11568 OCTET_NPN + f Lexv; k field_11563 OCTET_NPP + f Lexv; l field_11575 OCTET_PNN + f Lexv; m field_11569 OCTET_PNP + f Lexv; n field_11577 OCTET_PPN + f Lexv; o field_11567 OCTET_PPP + m (ILexv;Lexv;Lexv;Lexv;Lexv;)Lexv; a method_10671 makeStairShape + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54046 method_54046 + m (Ldnt;)Ldtc; a method_54047 method_54047 + m (Lexv;Lexv;Lexv;Lexv;Lexv;)[Lexv; a method_10672 makeShapes + m (Lexv;Lexv;Lexv;Lexv;Lexv;I)Lexv; a method_10674 method_10674 + m (I)[Lexv; b method_10677 method_10677 + m (Ldtc;Ldcc;Ljd;Lji;)Z c method_10678 canTakeShape + m (Ldtc;Ldcc;Ljd;)Ldul; i method_10675 getStairsShape + m (Ldtc;)Z m method_10676 isStairs + m (Ldtc;)I n method_10673 getShapeIndex + m (Ldtc;Ldtb$d;)V + m ()V +c dnt$1 net/minecraft/class_2510$1 net/minecraft/world/level/block/StairBlock$1 + f [I a field_11581 $SwitchMap$net$minecraft$world$level$block$state$properties$StairsShape + f [I b field_11580 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c dnu net/minecraft/class_2508 net/minecraft/world/level/block/StandingSignBlock + f Lcom/mojang/serialization/MapCodec; a field_46461 CODEC + f Lduc; b field_11559 ROTATION + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54048 method_54048 + m (Ldup;Ldtb$d;)V + m ()V +c dnv net/minecraft/class_2513 net/minecraft/world/level/block/StemBlock + f Lcom/mojang/serialization/MapCodec; a field_46462 CODEC + f I b field_31255 MAX_AGE + f Lduc; c field_11584 AGE + f F d field_31256 AABB_OFFSET + f [Lexv; e field_11583 SHAPE_BY_AGE + f Lakq; f field_11585 fruit + f Lakq; g field_46463 attachedStem + f Lakq; h field_27205 seed + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54049 method_54049 + m (Ldnv;)Lakq; a method_54050 method_54050 + m (Ldnv;)Lakq; b method_54051 method_54051 + m (Ldnv;)Lakq; c method_54052 method_54052 + m (Lakq;Lakq;Lakq;Ldtb$d;)V + m ()V +c dnw net/minecraft/class_3718 net/minecraft/world/level/block/StonecutterBlock + f Lcom/mojang/serialization/MapCodec; a field_46464 CODEC + f Ldtw; b field_17649 FACING + f Lexv; c field_16407 SHAPE + f Lwz; d field_17650 CONTAINER_TITLE + m (Ldcw;Ljd;ILcmw;Lcmx;)Lcpu; a method_17896 method_17896 + m (Ldtb$d;)V + m ()V +c dnx net/minecraft/class_2515 net/minecraft/world/level/block/StructureBlock + f Lcom/mojang/serialization/MapCodec; a field_46465 CODEC + f Ldua; b field_11586 MODE + m (Laqu;Ldrx;)V a method_10703 trigger + m (Ldtb$d;)V + m ()V +c dnx$1 net/minecraft/class_2515$1 net/minecraft/world/level/block/StructureBlock$1 + f [I a field_11587 $SwitchMap$net$minecraft$world$level$block$state$properties$StructureMode + m ()V +c dny net/minecraft/class_2518 net/minecraft/world/level/block/StructureVoidBlock + f Lcom/mojang/serialization/MapCodec; a field_46466 CODEC + f D b field_31257 SIZE + f Lexv; c field_11589 SHAPE + m (Ldtb$d;)V + m ()V +c dnz net/minecraft/class_2523 net/minecraft/world/level/block/SugarCaneBlock + f Lcom/mojang/serialization/MapCodec; a field_46467 CODEC + f Lduc; b field_11610 AGE + f F c field_31258 AABB_OFFSET + f Lexv; d field_11611 SHAPE + m (Ldtb$d;)V + m ()V +c doa net/minecraft/class_5431 net/minecraft/world/level/block/SupportType + f Ldoa; a field_25822 FULL + f Ldoa; b field_25823 CENTER + f Ldoa; c field_25824 RIGID + f [Ldoa; d field_25825 $VALUES + m ()[Ldoa; a method_36711 $values + m (Ldtc;Ldcc;Ljd;Lji;)Z a method_30367 isSupporting + m (Ljava/lang/String;I)V + m ()V +c doa$1 net/minecraft/class_5431$1 net/minecraft/world/level/block/SupportType$1 + m (Ljava/lang/String;I)V +c doa$2 net/minecraft/class_5431$2 net/minecraft/world/level/block/SupportType$2 + f I d field_25826 CENTER_SUPPORT_WIDTH + f Lexv; e field_25827 CENTER_SUPPORT_SHAPE + m (Ljava/lang/String;I)V +c doa$3 net/minecraft/class_5431$3 net/minecraft/world/level/block/SupportType$3 + f I d field_25828 RIGID_SUPPORT_WIDTH + f Lexv; e field_25829 RIGID_SUPPORT_SHAPE + m (Ljava/lang/String;I)V +c dob net/minecraft/class_7917 net/minecraft/world/level/block/SuspiciousEffectHolder + m (Ldcv;)Ldob; a method_47380 tryGet + m ()Lcxw; b method_53233 getSuspiciousEffects + m ()Ljava/util/List; c method_47379 getAllEffectHolders +c doc net/minecraft/class_3830 net/minecraft/world/level/block/SweetBerryBushBlock + f Lcom/mojang/serialization/MapCodec; a field_46468 CODEC + f I b field_31259 MAX_AGE + f Lduc; c field_17000 AGE + f F d field_31260 HURT_SPEED_THRESHOLD + f Lexv; e field_17001 SAPLING_SHAPE + f Lexv; f field_17002 MID_GROWTH_SHAPE + m (Ldtb$d;)V + m ()V +c dod net/minecraft/class_2521 net/minecraft/world/level/block/TallFlowerBlock + f Lcom/mojang/serialization/MapCodec; c field_46469 CODEC + m (Ldtb$d;)V + m ()V +c doe net/minecraft/class_2526 net/minecraft/world/level/block/TallGrassBlock + f Lcom/mojang/serialization/MapCodec; a field_46470 CODEC + f F b field_31261 AABB_OFFSET + f Lexv; c field_11617 SHAPE + m (Ldtb$d;)V + m ()V +c dof net/minecraft/class_2525 net/minecraft/world/level/block/TallSeagrassBlock + f Lcom/mojang/serialization/MapCodec; c field_46471 CODEC + f Ldua; d field_11616 HALF + f F e field_31262 AABB_OFFSET + f Lexv; f field_11615 SHAPE + m (Ldtb$d;)V + m ()V +c dog net/minecraft/class_4850 net/minecraft/world/level/block/TargetBlock + f Lcom/mojang/serialization/MapCodec; a field_46472 CODEC + f Lduc; b field_22428 OUTPUT_POWER + f I c field_31263 ACTIVATION_TICKS_ARROWS + f I d field_31264 ACTIVATION_TICKS_OTHER + m (Ldcx;Ldtc;ILjd;I)V a method_24857 setOutputPower + m (Ldcx;Ldtc;Lewy;Lbsr;)I a method_24858 updateRedstoneOutput + m (Lewy;Lexc;)I a method_24859 getRedstoneStrength + m (Ldtb$d;)V + m ()V +c doh net/minecraft/class_5555 net/minecraft/world/level/block/TintedGlassBlock + f Lcom/mojang/serialization/MapCodec; a field_46473 CODEC + m (Ldtb$d;)V + m ()V +c doi net/minecraft/class_2530 net/minecraft/world/level/block/TntBlock + f Lcom/mojang/serialization/MapCodec; a field_46474 CODEC + f Ldtt; b field_11621 UNSTABLE + m (Ldcw;Ljd;)V a method_10738 explode + m (Ldcw;Ljd;Lbtn;)V a method_10737 explode + m (Ldtb$d;)V + m ()V +c doj net/minecraft/class_2527 net/minecraft/world/level/block/TorchBlock + f Lcom/mojang/serialization/MapCodec; c field_46475 PARTICLE_OPTIONS_FIELD + f Lcom/mojang/serialization/MapCodec; d field_46476 CODEC + f Llq; e field_22155 flameParticle + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54053 method_54053 + m (Ldoj;)Llq; a method_54054 method_54054 + m (Lll;)Lcom/mojang/serialization/DataResult; a method_54055 method_54055 + m (Llq;)Lll; a method_54056 method_54056 + m (Lll;)Ljava/lang/String; b method_54057 method_54057 + m (Llq;Ldtb$d;)V + m ()V +c dok net/minecraft/class_8171 net/minecraft/world/level/block/TorchflowerCropBlock + f Lcom/mojang/serialization/MapCodec; a field_46477 CODEC + f I b field_42775 MAX_AGE + f Lduc; c field_42776 AGE + f F g field_42777 AABB_OFFSET + f [Lexv; h field_42778 SHAPE_BY_AGE + f I i field_44479 BONEMEAL_INCREASE + m (Ldtb$d;)V + m ()V +c dol net/minecraft/class_8923 net/minecraft/world/level/block/TransparentBlock + f Lcom/mojang/serialization/MapCodec; b field_47087 CODEC + m (Ldtb$d;)V + m ()V +c dom net/minecraft/class_2533 net/minecraft/world/level/block/TrapDoorBlock + f Lcom/mojang/serialization/MapCodec; a field_46478 CODEC + f Ldtt; b field_11631 OPEN + f Ldua; c field_11625 HALF + f Ldtt; d field_11629 POWERED + f Ldtt; e field_11626 WATERLOGGED + f I f field_31266 AABB_THICKNESS + f Lexv; g field_11627 EAST_OPEN_AABB + f Lexv; h field_11630 WEST_OPEN_AABB + f Lexv; i field_11624 SOUTH_OPEN_AABB + f Lexv; j field_11633 NORTH_OPEN_AABB + f Lexv; k field_11632 BOTTOM_AABB + f Lexv; l field_11628 TOP_AABB + f Ldtr; m field_42779 type + m (Lcmx;Ldcw;Ljd;Z)V a method_10740 playSound + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54058 method_54058 + m (Ldom;)Ldtr; a method_54059 method_54059 + m (Ldtc;Ldcw;Ljd;Lcmx;)V b method_55139 toggle + m ()Ldtr; m method_54766 getType + m (Ldtr;Ldtb$d;)V + m ()V +c dom$1 net/minecraft/class_2533$1 net/minecraft/world/level/block/TrapDoorBlock$1 + f [I a field_11635 $SwitchMap$net$minecraft$core$Direction + f [I b field_11634 $SwitchMap$net$minecraft$world$level$pathfinder$PathComputationType + m ()V +c don net/minecraft/class_2531 net/minecraft/world/level/block/TrappedChestBlock + f Lcom/mojang/serialization/MapCodec; n field_46479 CODEC + m ()Ldqj; m method_24181 method_24181 + m (Ldtb$d;)V + m ()V +c doo net/minecraft/class_8960 net/minecraft/world/level/block/TrialSpawnerBlock + f Lcom/mojang/serialization/MapCodec; a field_47348 CODEC + f Ldua; b field_47349 STATE + f Ldtt; c field_50170 OMINOUS + m (Laqu;Ldcw;Ljd;Ldtc;Ldsc;)V a method_55140 method_55140 + m (Ldcw;Ljd;Ldtc;Ldsc;)V a method_55141 method_55141 + m (Ldtb$d;)V + m ()V +c dop net/minecraft/class_2538 net/minecraft/world/level/block/TripWireBlock + f Lcom/mojang/serialization/MapCodec; a field_46480 CODEC + f Ldtt; b field_11680 POWERED + f Ldtt; c field_11683 ATTACHED + f Ldtt; d field_11679 DISARMED + f Ldtt; e field_11675 NORTH + f Ldtt; f field_11673 EAST + f Ldtt; g field_11678 SOUTH + f Ldtt; h field_11674 WEST + f Lexv; i field_11682 AABB + f Lexv; j field_11681 NOT_ATTACHED_AABB + f Ljava/util/Map; k field_11676 PROPERTY_BY_DIRECTION + f I l field_31267 RECHECK_PERIOD + f Ldfy; m field_11677 hook + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54060 method_54060 + m (Ldcw;Ljd;)V a method_10780 checkPressed + m (Ldcw;Ljd;Ldtc;)V a method_10779 updateSource + m (Ldop;)Ldfy; a method_54061 method_54061 + m (Ldtc;Lji;)Z a method_10778 shouldConnectTo + m (Ldfy;Ldtb$d;)V + m ()V +c dop$1 net/minecraft/class_2538$1 net/minecraft/world/level/block/TripWireBlock$1 + f [I a field_11685 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_11684 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c doq net/minecraft/class_2537 net/minecraft/world/level/block/TripWireHookBlock + f Lcom/mojang/serialization/MapCodec; a field_46481 CODEC + f Ldtw; b field_11666 FACING + f Ldtt; c field_11671 POWERED + f Ldtt; d field_11669 ATTACHED + f I e field_31268 WIRE_DIST_MIN + f I f field_31269 WIRE_DIST_MAX + f I g field_31270 AABB_OFFSET + f Lexv; h field_11665 NORTH_AABB + f Lexv; i field_11668 SOUTH_AABB + f Lexv; j field_11670 WEST_AABB + f Lexv; k field_11667 EAST_AABB + f I l field_31271 RECHECK_PERIOD + m (Ldcw;Ljd;Ldtc;ZZILdtc;)V a method_10776 calculateState + m (Ldcw;Ljd;ZZZZ)V a method_10777 emitState + m (Ldfy;Ldcw;Ljd;Lji;)V a method_10775 notifyNeighbors + m (Ldtb$d;)V + m ()V +c doq$1 net/minecraft/class_2537$1 net/minecraft/world/level/block/TripWireHookBlock$1 + f [I a field_11672 $SwitchMap$net$minecraft$core$Direction + m ()V +c dor net/minecraft/class_2542 net/minecraft/world/level/block/TurtleEggBlock + f Lcom/mojang/serialization/MapCodec; a field_46482 CODEC + f I b field_31272 MAX_HATCH_LEVEL + f I c field_31273 MIN_EGGS + f I d field_31274 MAX_EGGS + f Lduc; e field_11711 HATCH + f Lduc; f field_11710 EGGS + f Lexv; g field_11712 ONE_EGG_AABB + f Lexv; h field_11709 MULTIPLE_EGGS_AABB + m (Ldcc;Ljd;)Z a method_10831 onSand + m (Ldcw;)Z a method_10832 shouldUpdateHatchLevel + m (Ldcw;Lbsr;)Z a method_10835 canDestroyEgg + m (Ldcw;Ldtc;Ljd;Lbsr;I)V a method_10834 destroyEgg + m (Ldcw;Ljd;Ldtc;)V a method_10833 decreaseEggs + m (Ldcc;Ljd;)Z b method_29952 isSand + m (Ldtb$d;)V + m ()V +c dos net/minecraft/class_4777 net/minecraft/world/level/block/TwistingVinesBlock + f Lcom/mojang/serialization/MapCodec; c field_46483 CODEC + f Lexv; g field_22172 SHAPE + m (Ldtb$d;)V + m ()V +c dot net/minecraft/class_4950 net/minecraft/world/level/block/TwistingVinesPlantBlock + f Lcom/mojang/serialization/MapCodec; c field_46484 CODEC + f Lexv; e field_23325 SHAPE + m (Ldtb$d;)V + m ()V +c dou net/minecraft/class_9197 net/minecraft/world/level/block/VaultBlock + f Lcom/mojang/serialization/MapCodec; a field_48856 CODEC + f Lduf; b field_48857 STATE + f Ldtw; c field_48858 FACING + f Ldtt; d field_50171 OMINOUS + m (Laqu;Ldcw;Ljd;Ldtc;Ldsk;)V a method_56718 method_56718 + m (Ldcw;Ljd;Ldtc;Ldsk;)V a method_56719 method_56719 + m (Ldtb$d;)V + m ()V +c dov net/minecraft/class_2541 net/minecraft/world/level/block/VineBlock + f Lcom/mojang/serialization/MapCodec; a field_46485 CODEC + f Ldtt; b field_11703 UP + f Ldtt; c field_11706 NORTH + f Ldtt; d field_11702 EAST + f Ldtt; e field_11699 SOUTH + f Ldtt; f field_11696 WEST + f Ljava/util/Map; g field_11697 PROPERTY_BY_DIRECTION + f F h field_31275 AABB_OFFSET + f Lexv; i field_11698 UP_AABB + f Lexv; j field_11704 WEST_AABB + f Lexv; k field_11705 EAST_AABB + f Lexv; l field_11701 NORTH_AABB + f Lexv; m field_11700 SOUTH_AABB + f Ljava/util/Map; n field_26659 shapesCache + m (Ldcc;Ljd;)Z a method_10824 canSpread + m (Ldcc;Ljd;Lji;)Z a method_10821 isAcceptableNeighbour + m (Ldtc;Ldtc;Layw;)Ldtc; a method_10820 copyRandomFaces + m (Ljava/util/Map$Entry;)Z a method_10826 method_10826 + m (Lji;)Ldtt; a method_10828 getPropertyForFace + m (Ldcc;Ljd;Lji;)Z b method_10829 canSupportAtFace + m (Ldtc;Ldcc;Ljd;)Ldtc; i method_10827 getUpdatedState + m (Ldtc;)Lexv; m method_31018 calculateShape + m (Ldtc;)Z n method_10823 hasFaces + m (Ldtc;)I o method_10822 countFaces + m (Ldtc;)Z p method_10830 hasHorizontalConnection + m (Ldtb$d;)V + m ()V +c dov$1 net/minecraft/class_2541$1 net/minecraft/world/level/block/VineBlock$1 + f [I a field_11708 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_11707 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c dow net/minecraft/class_2546 net/minecraft/world/level/block/WallBannerBlock + f Lcom/mojang/serialization/MapCodec; a field_46486 CODEC + f Ldtw; b field_11722 FACING + f Ljava/util/Map; c field_11723 SHAPES + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54062 method_54062 + m (Lcti;Ldtb$d;)V + m ()V +c dox net/minecraft/class_2544 net/minecraft/world/level/block/WallBlock + f Lexv; F field_22163 POST_TEST + f Lexv; G field_22164 NORTH_TEST + f Lexv; H field_22165 SOUTH_TEST + f Lexv; I field_22166 WEST_TEST + f Lexv; J field_22167 EAST_TEST + f Lcom/mojang/serialization/MapCodec; a field_46487 CODEC + f Ldtt; b field_11717 UP + f Ldua; c field_22156 EAST_WALL + f Ldua; d field_22157 NORTH_WALL + f Ldua; e field_22158 SOUTH_WALL + f Ldua; f field_22159 WEST_WALL + f Ldtt; g field_22160 WATERLOGGED + f Ljava/util/Map; h field_22161 shapeByIndex + f Ljava/util/Map; i field_22162 collisionShapeByIndex + f I j field_31276 WALL_WIDTH + f I k field_31277 WALL_HEIGHT + f I l field_31278 POST_WIDTH + f I m field_31279 POST_COVER_WIDTH + f I n field_31280 WALL_COVER_START + f I o field_31281 WALL_COVER_END + m (FFFFFF)Ljava/util/Map; a method_24420 makeShapes + m (Ldcz;Ldtc;Ljd;Ldtc;)Ldtc; a method_24421 topUpdate + m (Ldcz;Ldtc;Ljd;Ldtc;ZZZZ)Ldtc; a method_24422 updateShape + m (Ldcz;Ljd;Ldtc;Ljd;Ldtc;Lji;)Ldtc; a method_24423 sideUpdate + m (Ldtc;Ldtc;Lexv;)Z a method_27092 shouldRaisePost + m (Ldtc;Lduf;)Z a method_24424 isConnected + m (Ldtc;ZLji;)Z a method_16704 connectsTo + m (Ldtc;ZZZZLexv;)Ldtc; a method_24425 updateSides + m (Lexv;Lduo;Lexv;Lexv;)Lexv; a method_24426 applyWallShape + m (Lexv;Lexv;)Z a method_24427 isCovered + m (ZLexv;Lexv;)Lduo; a method_24428 makeWallState + m (Ldtb$d;)V + m ()V +c dox$1 net/minecraft/class_2544$1 net/minecraft/world/level/block/WallBlock$1 + f [I a field_22168 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_22169 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c doy net/minecraft/class_7715 net/minecraft/world/level/block/WallHangingSignBlock + f Lcom/mojang/serialization/MapCodec; a field_46488 CODEC + f Ldtw; b field_40319 FACING + f Lexv; c field_40320 PLANK_NORTHSOUTH + f Lexv; d field_40321 PLANK_EASTWEST + f Lexv; e field_40322 SHAPE_NORTHSOUTH + f Lexv; i field_40323 SHAPE_EASTWEST + f Ljava/util/Map; j field_40324 AABBS + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54063 method_54063 + m (Ldcz;Ldtc;Ljd;Lji;)Z a method_45460 canAttachTo + m (Ldtc;Lcmx;Lewy;Ldrs;Lcuq;)Z a method_50004 shouldTryToChainAnotherHangingSign + m (Lewy;Ldtc;)Z a method_50005 isHittingEditableSide + m (Ldtc;Ldcz;Ljd;)Z b method_45461 canPlace + m (Ldup;Ldtb$d;)V + m ()V +c doy$1 net/minecraft/class_7715$1 net/minecraft/world/level/block/WallHangingSignBlock$1 + f [I a field_40325 $SwitchMap$net$minecraft$core$Direction + m ()V +c doz net/minecraft/class_2551 net/minecraft/world/level/block/WallSignBlock + f Lcom/mojang/serialization/MapCodec; a field_46489 CODEC + f Ldtw; b field_11726 FACING + f F c field_31282 AABB_THICKNESS + f F d field_31283 AABB_BOTTOM + f F e field_31284 AABB_TOP + f Ljava/util/Map; i field_11727 AABBS + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54064 method_54064 + m (Ldup;Ldtb$d;)V + m ()V +c dpa net/minecraft/class_2549 net/minecraft/world/level/block/WallSkullBlock + f Ljava/util/Map; b field_11725 AABBS + f Lcom/mojang/serialization/MapCodec; c field_46490 CODEC + f Ldtw; d field_11724 FACING + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54065 method_54065 + m (Ldnb$a;Ldtb$d;)V + m ()V +c dpb net/minecraft/class_2555 net/minecraft/world/level/block/WallTorchBlock + f Lcom/mojang/serialization/MapCodec; f field_46491 CODEC + f Ldtw; g field_11731 FACING + f F h field_31285 AABB_OFFSET + f Ljava/util/Map; i field_11732 AABBS + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54066 method_54066 + m (Ldpb;)Llq; a method_54067 method_54067 + m (Ldcz;Ljd;Lji;)Z b method_56118 canSurvive + m (Ldtc;)Lexv; m method_10841 getShape + m (Llq;Ldtb$d;)V + m ()V +c dpc net/minecraft/class_2553 net/minecraft/world/level/block/WaterlilyBlock + f Lcom/mojang/serialization/MapCodec; a field_46492 CODEC + f Lexv; b field_11728 AABB + m (Ldtb$d;)V + m ()V +c dpd net/minecraft/class_9009 net/minecraft/world/level/block/WaterloggedTransparentBlock + f Lcom/mojang/serialization/MapCodec; a field_47522 CODEC + f Ldtt; c field_47523 WATERLOGGED + m (Ldtb$d;)V + m ()V +c dpe net/minecraft/class_5955 net/minecraft/world/level/block/WeatheringCopper + f Ljava/util/function/Supplier; w_ field_29564 NEXT_BY_BLOCK + f Ljava/util/function/Supplier; x_ field_29565 PREVIOUS_BY_BLOCK + m ()Lcom/google/common/collect/BiMap; a method_34739 method_34739 + m (Ldfy;)Ljava/util/Optional; a method_34732 getPrevious + m (Ldtc;Ldfy;)Ldtc; a method_34733 method_34733 + m (Ldfy;)Ldfy; b method_34734 getFirst + m (Ldtc;)Ljava/util/Optional; b method_34735 getPrevious + m (Ldtc;Ldfy;)Ldtc; b method_34736 method_34736 + m (Ldfy;)Ljava/util/Optional; c method_34737 getNext + m (Ldtc;)Ldtc; c method_34738 getFirst + m ()Lcom/google/common/collect/BiMap; d method_34740 method_34740 + m ()V +c dpe$a net/minecraft/class_5955$class_5811 net/minecraft/world/level/block/WeatheringCopper$WeatherState + f Ldpe$a; a field_28704 UNAFFECTED + f Ldpe$a; b field_28705 EXPOSED + f Ldpe$a; c field_28706 WEATHERED + f Ldpe$a; d field_28707 OXIDIZED + f Lcom/mojang/serialization/Codec; e field_46493 CODEC + f Ljava/lang/String; f field_46494 name + f [Ldpe$a; g field_28708 $VALUES + m ()[Ldpe$a; a method_36712 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dpf net/minecraft/class_8924 net/minecraft/world/level/block/WeatheringCopperBulbBlock + f Lcom/mojang/serialization/MapCodec; d field_47088 CODEC + f Ldpe$a; e field_47089 weatherState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54767 method_54767 + m ()Ldpe$a; m method_54768 getAge + m (Ldpe$a;Ldtb$d;)V + m ()V +c dpg net/minecraft/class_8925 net/minecraft/world/level/block/WeatheringCopperDoorBlock + f Lcom/mojang/serialization/MapCodec; l field_47090 CODEC + f Ldpe$a; m field_47091 weatherState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54769 method_54769 + m ()Ldpe$a; m method_54770 getAge + m (Ldtr;Ldpe$a;Ldtb$d;)V + m ()V +c dph net/minecraft/class_5812 net/minecraft/world/level/block/WeatheringCopperFullBlock + f Lcom/mojang/serialization/MapCodec; d field_46495 CODEC + f Ldpe$a; e field_28709 weatherState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54068 method_54068 + m ()Ldpe$a; m method_33632 getAge + m (Ldpe$a;Ldtb$d;)V + m ()V +c dpi net/minecraft/class_8926 net/minecraft/world/level/block/WeatheringCopperGrateBlock + f Lcom/mojang/serialization/MapCodec; e field_47092 CODEC + f Ldpe$a; f field_47093 weatherState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54771 method_54771 + m ()Ldpe$a; m method_54772 getAge + m (Ldpe$a;Ldtb$d;)V + m ()V +c dpj net/minecraft/class_5813 net/minecraft/world/level/block/WeatheringCopperSlabBlock + f Lcom/mojang/serialization/MapCodec; f field_46496 CODEC + f Ldpe$a; g field_28711 weatherState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54069 method_54069 + m ()Ldpe$a; m method_33633 getAge + m (Ldpe$a;Ldtb$d;)V + m ()V +c dpk net/minecraft/class_5814 net/minecraft/world/level/block/WeatheringCopperStairBlock + f Lcom/mojang/serialization/MapCodec; I field_46497 CODEC + f Ldpe$a; J field_28713 weatherState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54070 method_54070 + m (Ldpk;)Ldtc; a method_54071 method_54071 + m ()Ldpe$a; m method_33634 getAge + m (Ldpe$a;Ldtc;Ldtb$d;)V + m ()V +c dpl net/minecraft/class_8927 net/minecraft/world/level/block/WeatheringCopperTrapDoorBlock + f Lcom/mojang/serialization/MapCodec; m field_47094 CODEC + f Ldpe$a; n field_47095 weatherState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54773 method_54773 + m ()Ldpe$a; n method_54774 getAge + m (Ldtr;Ldpe$a;Ldtb$d;)V + m ()V +c dpm net/minecraft/class_2560 net/minecraft/world/level/block/WebBlock + f Lcom/mojang/serialization/MapCodec; a field_46498 CODEC + m (Ldtb$d;)V + m ()V +c dpn net/minecraft/class_4776 net/minecraft/world/level/block/WeepingVinesBlock + f Lcom/mojang/serialization/MapCodec; c field_46499 CODEC + f Lexv; g field_22171 SHAPE + m (Ldtb$d;)V + m ()V +c dpo net/minecraft/class_4951 net/minecraft/world/level/block/WeepingVinesPlantBlock + f Lcom/mojang/serialization/MapCodec; c field_46500 CODEC + f Lexv; e field_23326 SHAPE + m (Ldtb$d;)V + m ()V +c dpp net/minecraft/class_2557 net/minecraft/world/level/block/WeightedPressurePlateBlock + f Lcom/mojang/serialization/MapCodec; e field_46501 CODEC + f Lduc; f field_11739 POWER + f I g field_11738 maxWeight + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54072 method_54072 + m (Ldpp;)Ldtr; a method_54073 method_54073 + m (Ldpp;)Ljava/lang/Integer; b method_54074 method_54074 + m (ILdtr;Ldtb$d;)V + m ()V +c dpq net/minecraft/class_2565 net/minecraft/world/level/block/WetSpongeBlock + f Lcom/mojang/serialization/MapCodec; a field_46502 CODEC + m (Ldtb$d;)V + m ()V +c dpr net/minecraft/class_2563 net/minecraft/world/level/block/WitherRoseBlock + f Lcom/mojang/serialization/MapCodec; e field_46503 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54075 method_54075 + m (Ljm;FLdtb$d;)V + m (Lcxw;Ldtb$d;)V + m ()V +c dps net/minecraft/class_2570 net/minecraft/world/level/block/WitherSkullBlock + f Lcom/mojang/serialization/MapCodec; b field_46504 CODEC + f Ldth; h field_11765 witherPatternFull + f Ldth; i field_11764 witherPatternBase + m (Ldcw;Ljd;)V a method_56119 checkSpawn + m (Ldcw;Ljd;Ldru;)V a method_10898 checkSpawn + m (Ldtg;)Z a method_51174 method_51174 + m (Ldcw;Ljd;Lcuq;)Z b method_10899 canSpawnMob + m (Ldtg;)Z b method_24798 method_24798 + m (Ldtg;)Z c method_51175 method_51175 + m (Ldtg;)Z d method_24799 method_24799 + m ()Ldth; y method_10900 getOrCreateWitherFull + m ()Ldth; z method_10897 getOrCreateWitherBase + m (Ldtb$d;)V + m ()V +c dpt net/minecraft/class_2567 net/minecraft/world/level/block/WitherWallSkullBlock + f Lcom/mojang/serialization/MapCodec; b field_46505 CODEC + m (Ldtb$d;)V + m ()V +c dpu net/minecraft/class_5815 net/minecraft/world/level/block/WoolCarpetBlock + f Lcom/mojang/serialization/MapCodec; c field_46506 CODEC + f Lcti; d field_28715 color + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54076 method_54076 + m ()Lcti; b method_33635 getColor + m (Lcti;Ldtb$d;)V + m ()V +c dpv net/minecraft/class_2609 net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity + f I b field_31286 SLOT_INPUT + f I c field_31287 SLOT_FUEL + f I d field_31288 SLOT_RESULT + f I e field_31289 DATA_LIT_TIME + f I f field_31290 DATA_LIT_DURATION + f I g field_31291 DATA_COOKING_PROGRESS + f I h field_31292 DATA_COOKING_TOTAL_TIME + f I i field_31293 NUM_DATA_VALUES + f I j field_31294 BURN_TIME_STANDARD + f I k field_31295 BURN_COOL_SPEED + f Ljv; l field_11984 items + f Lcqf; m field_17374 dataAccess + f [I q field_11987 SLOTS_FOR_UP + f [I r field_11982 SLOTS_FOR_DOWN + f [I s field_11983 SLOTS_FOR_SIDES + f I t field_11981 litTime + f I u field_11980 litDuration + f I v field_11989 cookingProgress + f I w field_11988 cookingTotalTime + f Ljava/util/Map; x field_48375 fuelCache + f Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; y field_11986 recipesUsed + f Lczd$a; z field_38234 quickCheck + m (Laqu;Lexc;)Ljava/util/List; a method_27354 getRecipesToAwardAndPopExperience + m (Laqu;Lexc;IF)V a method_17760 createExperience + m (Laqv;)V a method_17763 awardUsedRecipesAndPopExperience + m (Ldcw;Ldpv;)I a method_17029 getTotalCookTime + m (Ldcw;Ljd;Ldtc;Ldpv;)V a method_31651 serverTick + m (Ljava/util/List;Laqu;Lexc;Lit/unimi/dsi/fastutil/objects/Object2IntMap$Entry;Lczb;)V a method_17761 method_17761 + m (Ljava/util/Map;Lawu;I)V a method_11194 add + m (Ljava/util/Map;Ldcv;I)V a method_11202 add + m (Lka;Lczb;Ljv;I)Z a method_11192 canBurn + m (Lub;Lakr;Ljava/lang/Integer;)V a method_24431 method_24431 + m (Lcul;)Z b method_26395 isNeverAFurnaceFuel + m (Lcuq;)I b method_11200 getBurnDuration + m (Lczb;)Ljava/lang/Integer; b method_53790 method_53790 + m (Lka;Lczb;Ljv;I)Z b method_11203 burn + m (Lcuq;)Z c method_11195 isFuel + m ()V f method_56120 invalidateCache + m ()Ljava/util/Map; g method_11196 getFuel + m ()Z l method_11201 isLit + m (Ldqj;Ljd;Ldtc;Lczf;)V + m ()V +c dpv$1 net/minecraft/class_2609$1 net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity$1 + f Ldpv; a field_17375 field_17375 + m (Ldpv;)V +c dpw net/minecraft/class_2573 net/minecraft/world/level/block/entity/BannerBlockEntity + f I a field_31296 MAX_PATTERNS + f Lorg/slf4j/Logger; b field_49402 LOGGER + f Ljava/lang/String; c field_31297 TAG_PATTERNS + f Lwz; d field_11772 name + f Lcti; e field_11774 baseColor + f Ldpy; f field_49756 patterns + m ()Lacb; a method_16886 getUpdatePacket + m (Lcuq;Lcti;)V a method_10913 fromItem + m (Ldpy;)V a method_58121 method_58121 + m (Ljava/lang/String;)V a method_57566 method_57566 + m ()Ldpy; b method_58122 getPatterns + m ()Lcuq; c method_10907 getItem + m ()Lcti; f method_10908 getBaseColor + m (Ljd;Ldtc;)V + m (Ljd;Ldtc;Lcti;)V + m ()V +c dpx net/minecraft/class_2582 net/minecraft/world/level/block/entity/BannerPattern + f Lcom/mojang/serialization/Codec; a field_49757 DIRECT_CODEC + f Lyx; b field_49758 DIRECT_STREAM_CODEC + f Lcom/mojang/serialization/Codec; c field_49759 CODEC + f Lyx; d field_49760 STREAM_CODEC + f Lakr; e comp_2456 assetId + f Ljava/lang/String; f comp_2457 translationKey + m ()Lakr; a comp_2456 assetId + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58123 method_58123 + m ()Ljava/lang/String; b comp_2457 translationKey + m (Lakr;Ljava/lang/String;)V + m ()V +c dpy net/minecraft/class_9307 net/minecraft/world/level/block/entity/BannerPatternLayers + f Ldpy; a field_49404 EMPTY + f Lcom/mojang/serialization/Codec; b field_49405 CODEC + f Lyx; c field_49406 STREAM_CODEC + f Ljava/util/List; d comp_2428 layers + f Lorg/slf4j/Logger; e field_49761 LOGGER + m ()Ldpy; a method_57571 removeLast + m ()Ljava/util/List; b comp_2428 layers + m (Ljava/util/List;)V + m ()V +c dpy$a net/minecraft/class_9307$class_3750 net/minecraft/world/level/block/entity/BannerPatternLayers$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_16548 layers + m ()Ldpy; a method_57573 build + m (Ldpy$b;)Ldpy$a; a method_57574 add + m (Ldpy;)Ldpy$a; a method_57575 addAll + m (Ljm;Lcti;)Ldpy$a; a method_16376 add + m (Ljn;Lakq;Lcti;)Ldpy$a; a method_58124 addIfRegistered + m ()V +c dpy$b net/minecraft/class_9307$class_9308 net/minecraft/world/level/block/entity/BannerPatternLayers$Layer + f Lcom/mojang/serialization/Codec; a field_49407 CODEC + f Lyx; b field_49408 STREAM_CODEC + f Ljm; c comp_2429 pattern + f Lcti; d comp_2430 color + m ()Lxn; a method_58125 description + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57576 method_57576 + m ()Ljm; b comp_2429 pattern + m ()Lcti; c comp_2430 color + m (Ljm;Lcti;)V + m ()V +c dpz net/minecraft/class_7446 net/minecraft/world/level/block/entity/BannerPatterns + f Lakq; A field_39136 HALF_VERTICAL + f Lakq; B field_39137 HALF_HORIZONTAL + f Lakq; C field_39138 HALF_VERTICAL_MIRROR + f Lakq; D field_39139 HALF_HORIZONTAL_MIRROR + f Lakq; E field_39140 BORDER + f Lakq; F field_39141 CURLY_BORDER + f Lakq; G field_39142 GRADIENT + f Lakq; H field_39143 GRADIENT_UP + f Lakq; I field_39144 BRICKS + f Lakq; J field_39145 GLOBE + f Lakq; K field_39146 CREEPER + f Lakq; L field_39147 SKULL + f Lakq; M field_39148 FLOWER + f Lakq; N field_39149 MOJANG + f Lakq; O field_39150 PIGLIN + f Lakq; P field_49835 FLOW + f Lakq; Q field_49836 GUSTER + f Lakq; a field_39151 BASE + f Lakq; b field_39152 SQUARE_BOTTOM_LEFT + f Lakq; c field_39153 SQUARE_BOTTOM_RIGHT + f Lakq; d field_39154 SQUARE_TOP_LEFT + f Lakq; e field_39155 SQUARE_TOP_RIGHT + f Lakq; f field_39156 STRIPE_BOTTOM + f Lakq; g field_39157 STRIPE_TOP + f Lakq; h field_39158 STRIPE_LEFT + f Lakq; i field_39159 STRIPE_RIGHT + f Lakq; j field_39160 STRIPE_CENTER + f Lakq; k field_39161 STRIPE_MIDDLE + f Lakq; l field_39162 STRIPE_DOWNRIGHT + f Lakq; m field_39163 STRIPE_DOWNLEFT + f Lakq; n field_39164 STRIPE_SMALL + f Lakq; o field_39165 CROSS + f Lakq; p field_39166 STRAIGHT_CROSS + f Lakq; q field_39167 TRIANGLE_BOTTOM + f Lakq; r field_39168 TRIANGLE_TOP + f Lakq; s field_39169 TRIANGLES_BOTTOM + f Lakq; t field_39170 TRIANGLES_TOP + f Lakq; u field_39171 DIAGONAL_LEFT + f Lakq; v field_39172 DIAGONAL_RIGHT + f Lakq; w field_39173 DIAGONAL_LEFT_MIRROR + f Lakq; x field_39174 DIAGONAL_RIGHT_MIRROR + f Lakq; y field_39175 CIRCLE_MIDDLE + f Lakq; z field_39176 RHOMBUS_MIDDLE + m (Ljava/lang/String;)Lakq; a method_43722 create + m (Lqq;)V a method_43721 bootstrap + m (Lqq;Lakq;)V a method_57577 register + m ()V + m ()V +c dqa net/minecraft/class_3719 net/minecraft/world/level/block/entity/BarrelBlockEntity + f Ljv; d field_16410 items + f Ldqu; e field_27207 openersCounter + m (Ldtc;Lavo;)V a method_17764 playSound + m (Ldtc;Z)V a method_18318 updateBlockState + m ()V l method_20362 recheckOpen + m (Ljd;Ldtc;)V +c dqa$1 net/minecraft/class_3719$1 net/minecraft/world/level/block/entity/BarrelBlockEntity$1 + f Ldqa; a field_27208 field_27208 + m (Ldqa;)V +c dqb net/minecraft/class_2624 net/minecraft/world/level/block/entity/BaseContainerBlockEntity + f Lbqu; d field_12045 lockKey + f Lwz; e field_17376 name + m (ILcmw;)Lcpu; a method_5465 createMenu + m (Lcmx;Lbqu;Lwz;)Z a method_17487 canUnlock + m (Ljv;)V a method_11281 setItems + m (Lcmx;)Z d method_17489 canOpen + m ()Ljv; j method_11282 getItems + m ()Lwz; k method_17823 getDefaultName + m (Ldqj;Ljd;Ldtc;)V +c dqc net/minecraft/class_2580 net/minecraft/world/level/block/entity/BeaconBlockEntity + f Ljava/util/List; a field_11801 BEACON_EFFECTS + f I b field_31300 DATA_LEVELS + f I c field_31301 DATA_PRIMARY + f I d field_31302 DATA_SECONDARY + f I e field_31303 NUM_DATA_VALUES + f I f field_31304 MAX_LEVELS + f Ljava/util/Set; g field_11798 VALID_EFFECTS + f I h field_31305 BLOCKS_CHECK_PER_TICK + f Lwz; i field_40328 DEFAULT_NAME + f Ljava/lang/String; j field_45784 TAG_PRIMARY + f Ljava/lang/String; k field_45785 TAG_SECONDARY + f Ljava/util/List; l field_19177 beamSections + f Ljava/util/List; m field_19178 checkingBeamSections + f I q field_11803 levels + f I r field_19179 lastCheckY + f Ljm; s field_11795 primaryPower + f Ljm; t field_11799 secondaryPower + f Lwz; u field_11793 name + f Lbqu; v field_17377 lockKey + f Lcqf; w field_17378 dataAccess + m (Ldcw;III)I a method_20293 updateBase + m (Ldcw;Ljd;ILjm;Ljm;)V a method_10940 applyEffects + m (Ldcw;Ljd;Lavo;)V a method_10938 playSound + m (Ldcw;Ljd;Ldtc;Ldqc;)V a method_16896 tick + m (Ljm;)Ljm; a method_53251 filterEffect + m (Lub;Ljava/lang/String;)Ljm; a method_53252 loadEffect + m (Lub;Ljava/lang/String;Lakq;)V a method_55779 method_55779 + m (Lub;Ljava/lang/String;Ljm;)V a method_53253 storeEffect + m (Lwz;)V a method_10936 setCustomName + m ()Ljava/util/List; b method_10937 getBeamSections + m ()Lacb; c method_38236 getUpdatePacket + m (Ljd;Ldtc;)V + m ()V +c dqc$1 net/minecraft/class_2580$1 net/minecraft/world/level/block/entity/BeaconBlockEntity$1 + f Ldqc; a field_17379 field_17379 + m (Ldqc;)V +c dqc$a net/minecraft/class_2580$class_2581 net/minecraft/world/level/block/entity/BeaconBlockEntity$BeaconBeamSection + f I a field_11805 color + f I b field_11804 height + m ()V a method_10942 increaseHeight + m ()I b method_10944 getColor + m ()I c method_10943 getHeight + m (I)V +c dqd net/minecraft/class_2587 net/minecraft/world/level/block/entity/BedBlockEntity + f Lcti; a field_11869 color + m (Lcti;)V a method_11019 setColor + m ()Lacb; b method_38237 getUpdatePacket + m ()Lcti; c method_11018 getColor + m (Ljd;Ldtc;)V + m (Ljd;Ldtc;Lcti;)V +c dqe net/minecraft/class_4482 net/minecraft/world/level/block/entity/BeehiveBlockEntity + f I a field_31312 MAX_OCCUPANTS + f I b field_31313 MIN_OCCUPATION_TICKS_NECTARLESS + f Lorg/slf4j/Logger; c field_49409 LOGGER + f Ljava/lang/String; d field_31306 TAG_FLOWER_POS + f Ljava/lang/String; e field_31311 BEES + f Ljava/util/List; f field_33570 IGNORED_BEE_TAGS + f I g field_31314 MIN_TICKS_BEFORE_REENTERING_HIVE + f I h field_31315 MIN_OCCUPATION_TICKS_NECTAR + f Ljava/util/List; i field_20423 stored + f Ljd; j field_20424 savedFlowerPos + m (Lbsr;)V a method_21848 addOccupant + m (Lcmx;Ldtc;Ldqe$b;)V a method_21850 emptyAllLivingFromHive + m (Ldcw;Ljd;Ldtc;Ldqe$c;Ljava/util/List;Ldqe$b;Ljd;)Z a method_21855 releaseOccupant + m (Ldcw;Ljd;Ldtc;Ldqe;)V a method_31656 serverTick + m (Ldcw;Ljd;Ldtc;Ljava/util/List;Ljd;)V a method_21858 tickOccupants + m (Ldqe$c;)V a method_35292 storeBee + m (Ldtb$a;)Z a method_40019 method_40019 + m (Ldtc;)I a method_23902 getHoneyLevel + m (Ldtc;Ldqe$b;)Ljava/util/List; a method_21852 releaseAllOccupants + m (Ldtc;Ljava/util/List;Ldqe$b;Ldqe$a;)Z a method_21854 method_21854 + m (Ljava/lang/String;)V a method_57578 method_57578 + m (Ljava/util/List;)V a method_57579 method_57579 + m ()Z b method_23280 isFireNearby + m ()Z c method_22400 isEmpty + m ()Z d method_21856 isFull + m ()I f method_23903 getOccupantCount + m ()Z j method_23904 isSedated + m ()Z k method_21857 hasSavedFlowerPos + m ()Ljava/util/List; l method_57580 getBees + m (Ljd;Ldtc;)V + m ()V +c dqe$a net/minecraft/class_4482$class_4483 net/minecraft/world/level/block/entity/BeehiveBlockEntity$BeeData + f Ldqe$c; a field_49410 occupant + f I b field_20426 ticksInHive + m ()Z a method_57581 tick + m ()Ldqe$c; b method_57582 toOccupant + m ()Z c method_57583 hasNectar + m (Ldqe$c;)V +c dqe$b net/minecraft/class_4482$class_4484 net/minecraft/world/level/block/entity/BeehiveBlockEntity$BeeReleaseStatus + f Ldqe$b; a field_20428 HONEY_DELIVERED + f Ldqe$b; b field_20429 BEE_RELEASED + f Ldqe$b; c field_21052 EMERGENCY + f [Ldqe$b; d field_20430 $VALUES + m ()[Ldqe$b; a method_36714 $values + m (Ljava/lang/String;I)V + m ()V +c dqe$c net/minecraft/class_4482$class_9309 net/minecraft/world/level/block/entity/BeehiveBlockEntity$Occupant + f Lcom/mojang/serialization/Codec; a field_49411 CODEC + f Lcom/mojang/serialization/Codec; b field_49412 LIST_CODEC + f Lyx; c field_49413 STREAM_CODEC + f Lcxh; d comp_2431 entityData + f I e comp_2432 ticksInHive + f I f comp_2433 minTicksInHive + m ()Lcxh; a comp_2431 entityData + m (I)Ldqe$c; a method_57584 create + m (ILcff;)V a method_57585 setBeeReleaseData + m (Lbsr;)Ldqe$c; a method_57586 of + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57587 method_57587 + m (Ldcw;Ljd;)Lbsr; a method_57588 createEntity + m ()I b comp_2432 ticksInHive + m (Lbsr;)Lbsr; b method_57589 method_57589 + m ()I c comp_2433 minTicksInHive + m (Lcxh;II)V + m ()V +c dqf net/minecraft/class_3721 net/minecraft/world/level/block/entity/BellBlockEntity + f I a field_17095 ticks + f Z b field_17096 shaking + f Lji; c field_17097 clickDirection + f I d field_31316 DURATION + f I e field_31317 GLOW_DURATION + f I f field_31318 MIN_TICKS_BETWEEN_SEARCHES + f I g field_31319 MAX_RESONATION_TICKS + f I h field_31320 TICKS_BEFORE_RESONATION + f I i field_31321 SEARCH_RADIUS + f I j field_31322 HEAR_BELL_RADIUS + f I k field_31323 HIGHLIGHT_RAIDERS_RADIUS + f J l field_19155 lastRingTimestamp + f Ljava/util/List; m field_19156 nearbyEntities + f Z q field_19157 resonating + f I r field_19158 resonationTicks + m (Lbtn;)V a method_20520 glow + m (Ldcw;Ljd;Ldtc;Ldqf;)V a method_31657 clientTick + m (Ldcw;Ljd;Ldtc;Ldqf;Ldqf$a;)V a method_31658 tick + m (Ldcw;Ljd;Ljava/util/List;)V a method_20521 makeRaidersGlow + m (Ljd;ILorg/apache/commons/lang3/mutable/MutableInt;Ldcw;Lbtn;)V a method_20519 method_20519 + m (Ljd;Lbtn;)Z a method_20518 isRaiderWithinRange + m (Ljd;Ljava/util/List;)Z a method_20523 areRaidersNearby + m (Lji;)V a method_17031 onHit + m ()V b method_20219 updateEntities + m (Ldcw;Ljd;Ldtc;Ldqf;)V b method_31659 serverTick + m (Ldcw;Ljd;Ljava/util/List;)V b method_20218 showBellParticles + m (Ljd;Lbtn;)Z b method_31660 method_31660 + m (Ljd;Lbtn;)Z c method_20217 method_20217 + m (Ljd;Lbtn;)Z d method_31661 method_31661 + m (Ljd;Ldtc;)V +c dqf$a net/minecraft/class_3721$class_5557 net/minecraft/world/level/block/entity/BellBlockEntity$ResonationEndAction +c dqg net/minecraft/class_3720 net/minecraft/world/level/block/entity/BlastFurnaceBlockEntity + m (Ljd;Ldtc;)V +c dqh net/minecraft/class_2586 net/minecraft/world/level/block/entity/BlockEntity + f Lorg/slf4j/Logger; d field_11868 LOGGER + f Ldqj; e field_11864 type + f Ldtc; f field_11866 blockState + f Lkm; g field_50172 components + f Ldcw; n field_11863 level + f Ljd; o field_11867 worldPosition + f Z p field_11865 remove + m (Lcuq;)V a method_58683 applyComponentsFromItemStack + m (Lcuq;Ljo$a;)V a method_38240 saveToItem + m (Ldcw;)V a method_31662 setLevel + m (Ldcw;Ljd;Ldtc;)V a method_31663 setChanged + m (Ldqh$b;)V a method_57568 applyImplicitComponents + m (Ldtc;)V a method_61175 validateBlockState + m (Ljava/lang/String;)Ldqh; a method_17898 method_17898 + m (Ljava/lang/String;Ljo$a;)Lwz; a method_59894 parseCustomNameSafe + m (Ljd;Ldtc;Ljava/lang/String;Ldqj;)Ldqh; a method_17899 method_17899 + m (Ljd;Ldtc;Lub;Ljo$a;)Ldqh; a method_11005 loadStatic + m (Ljo$a;)Lub; a method_16887 getUpdateTag + m (Lkm$a;)V a method_57567 collectImplicitComponents + m (Lkm;)V a method_58684 setComponents + m (Lkm;Lkn;)V a method_58685 applyComponents + m (Lp;)V a method_11003 fillCrashReportCategory + m (Lub;)V a method_57569 removeComponentsFromTag + m (Lub;Ldqj;)V a method_38238 addEntityType + m (Lub;Ljo$a;)V a method_11014 loadAdditional + m (Lub;Ljo$a;Ljava/lang/String;Ldqh;)Ldqh; a method_17897 method_17897 + m (Lub;Luy;)V a method_58686 method_58686 + m ()V aA_ method_11012 setRemoved + m ()Ljd; aD_ method_11016 getBlockPos + m (II)Z a_ method_11004 triggerEvent + m ()Lzg; az_ method_38235 getUpdatePacket + m (Ldtc;)Z b method_61176 isValidBlockState + m (Ljava/lang/String;)V b method_58687 method_58687 + m (Ljo$a;)Lub; b method_38242 saveWithFullMetadata + m (Lkm;)V b method_58688 method_58688 + m (Lub;)Ljd; b method_38239 getPosFromTag + m (Lub;Ljo$a;)V b method_11007 saveAdditional + m (Ldtc;)V c method_31664 setBlockState + m (Ljava/lang/String;)V c method_58689 method_58689 + m (Ljo$a;)Lub; c method_38243 saveWithId + m (Lub;)V c method_38241 saveId + m (Lub;Ljo$a;)V c method_58690 loadWithComponents + m (Ljo$a;)Lub; d method_38244 saveWithoutMetadata + m (Lub;)V d method_10999 saveMetadata + m (Lub;Ljo$a;)V d method_58691 loadCustomOnly + m ()V e method_5431 setChanged + m (Ljo$a;)Lub; e method_58692 saveCustomOnly + m (Ljo$a;)Lub; f method_59535 saveCustomAndMetadata + m ()Ldcw; i method_10997 getLevel + m ()Ljava/lang/String; k method_61177 getNameForReporting + m ()Z m method_11002 hasLevel + m ()Ldtc; n method_11010 getBlockState + m ()Z o method_11015 isRemoved + m ()V p method_10996 clearRemoved + m ()Z q method_11011 onlyOpCanSetNbt + m ()Ldqj; r method_11017 getType + m ()Lkm; s method_57590 collectComponents + m ()Lkm; t method_58693 components + m (Ldqj;Ljd;Ldtc;)V + m ()V +c dqh$1 net/minecraft/class_2586$1 net/minecraft/world/level/block/entity/BlockEntity$1 + f Ljava/util/Set; a field_50173 val$implicitComponents + f Lkm; b field_50174 val$fullView + m (Ldqh;Ljava/util/Set;Lkm;)V +c dqh$a net/minecraft/class_2586$class_9472 net/minecraft/world/level/block/entity/BlockEntity$ComponentHelper + f Lcom/mojang/serialization/Codec; a field_50176 COMPONENTS_CODEC + m ()V + m ()V +c dqh$b net/minecraft/class_2586$class_9473 net/minecraft/world/level/block/entity/BlockEntity$DataComponentInput + m (Lkp;)Ljava/lang/Object; a method_58694 get + m (Lkp;Ljava/lang/Object;)Ljava/lang/Object; a method_58695 getOrDefault +c dqi net/minecraft/class_5558 net/minecraft/world/level/block/entity/BlockEntityTicker +c dqj net/minecraft/class_2591 net/minecraft/world/level/block/entity/BlockEntityType + f Ldqj; A field_16411 BARREL + f Ldqj; B field_16414 SMOKER + f Ldqj; C field_16415 BLAST_FURNACE + f Ldqj; D field_16412 LECTERN + f Ldqj; E field_16413 BELL + f Ldqj; F field_16549 JIGSAW + f Ldqj; G field_17380 CAMPFIRE + f Ldqj; H field_20431 BEEHIVE + f Ldqj; I field_28117 SCULK_SENSOR + f Ldqj; J field_43258 CALIBRATED_SCULK_SENSOR + f Ldqj; K field_37647 SCULK_CATALYST + f Ldqj; L field_37648 SCULK_SHRIEKER + f Ldqj; M field_40329 CHISELED_BOOKSHELF + f Ldqj; N field_42780 BRUSHABLE_BLOCK + f Ldqj; O field_42781 DECORATED_POT + f Ldqj; P field_46808 CRAFTER + f Ldqj; Q field_47352 TRIAL_SPAWNER + f Ldqj; R field_48859 VAULT + f Lorg/slf4j/Logger; S field_11893 LOGGER + f Ldqj$a; T field_11892 factory + f Ljava/util/Set; U field_19315 validBlocks + f Lcom/mojang/datafixers/types/Type; V field_11909 dataType + f Ljm$c; W field_45786 builtInRegistryHolder + f Ldqj; a field_11903 FURNACE + f Ldqj; b field_11914 CHEST + f Ldqj; c field_11891 TRAPPED_CHEST + f Ldqj; d field_11901 ENDER_CHEST + f Ldqj; e field_11907 JUKEBOX + f Ldqj; f field_11887 DISPENSER + f Ldqj; g field_11899 DROPPER + f Ldqj; h field_11911 SIGN + f Ldqj; i field_40330 HANGING_SIGN + f Ldqj; j field_11889 MOB_SPAWNER + f Ldqj; k field_11897 PISTON + f Ldqj; l field_11894 BREWING_STAND + f Ldqj; m field_11912 ENCHANTING_TABLE + f Ldqj; n field_11898 END_PORTAL + f Ldqj; o field_11890 BEACON + f Ldqj; p field_11913 SKULL + f Ldqj; q field_11900 DAYLIGHT_DETECTOR + f Ldqj; r field_11888 HOPPER + f Ldqj; s field_11908 COMPARATOR + f Ldqj; t field_11905 BANNER + f Ldqj; u field_11895 STRUCTURE_BLOCK + f Ldqj; v field_11906 END_GATEWAY + f Ldqj; w field_11904 COMMAND_BLOCK + f Ldqj; x field_11896 SHULKER_BOX + f Ldqj; y field_11910 BED + f Ldqj; z field_11902 CONDUIT + m ()Ljm$c; a method_53254 builtInRegistryHolder + m (Ldcc;Ljd;)Ldqh; a method_24182 getBlockEntity + m (Ldqj;)Lakr; a method_11033 getKey + m (Ldtc;)Z a method_20526 isValid + m (Ljava/lang/String;Ldqj$b;)Ldqj; a method_11030 register + m (Ljd;Ldtc;)Ldqh; a method_11032 create + m (Ldqj$a;Ljava/util/Set;Lcom/mojang/datafixers/types/Type;)V + m ()V +c dqj$a net/minecraft/class_2591$class_5559 net/minecraft/world/level/block/entity/BlockEntityType$BlockEntitySupplier +c dqj$b net/minecraft/class_2591$class_2592 net/minecraft/world/level/block/entity/BlockEntityType$Builder + f Ldqj$a; a field_11915 factory + f Ljava/util/Set; b field_19316 validBlocks + m (Lcom/mojang/datafixers/types/Type;)Ldqj; a method_11034 build + m (Ldqj$a;[Ldfy;)Ldqj$b; a method_20528 of + m (Ldqj$a;Ljava/util/Set;)V +c dqk net/minecraft/class_2589 net/minecraft/world/level/block/entity/BrewingStandBlockEntity + f I b field_31324 FUEL_USES + f I c field_31325 DATA_BREW_TIME + f I d field_31326 DATA_FUEL_USES + f I e field_31327 NUM_DATA_VALUES + f Lcqf; f field_17381 dataAccess + f I g field_31328 INGREDIENT_SLOT + f I h field_31329 FUEL_SLOT + f [I i field_11886 SLOTS_FOR_UP + f [I j field_11879 SLOTS_FOR_DOWN + f [I k field_11880 SLOTS_FOR_SIDES + f Ljv; l field_11882 items + f I m field_11878 brewTime + f [Z q field_11883 lastPotionCount + f Lcul; r field_11881 ingredient + f I s field_11885 fuel + m (Lcwt;Ljv;)Z a method_11027 isBrewable + m (Ldcw;Ljd;Ldtc;Ldqk;)V a method_31665 serverTick + m (Ldcw;Ljd;Ljv;)V a method_11029 doBrew + m ()[Z f method_11028 getPotionBits + m (Ljd;Ldtc;)V + m ()V +c dqk$1 net/minecraft/class_2589$1 net/minecraft/world/level/block/entity/BrewingStandBlockEntity$1 + f Ldqk; a field_17382 field_17382 + m (Ldqk;)V +c dql net/minecraft/class_8174 net/minecraft/world/level/block/entity/BrushableBlockEntity + f Lorg/slf4j/Logger; a field_42801 LOGGER + f Ljava/lang/String; b field_42802 LOOT_TABLE_TAG + f Ljava/lang/String; c field_42803 LOOT_TABLE_SEED_TAG + f Ljava/lang/String; d field_42804 HIT_DIRECTION_TAG + f Ljava/lang/String; e field_42805 ITEM_TAG + f I f field_42806 BRUSH_COOLDOWN_TICKS + f I g field_42807 BRUSH_RESET_TICKS + f I h field_42808 REQUIRED_BRUSHES_TO_BREAK + f I i field_42809 brushCount + f J j field_42810 brushCountResetsAtTick + f J k field_42811 coolDownEndsAtTick + f Lcuq; l field_42812 item + f Lji; m field_42813 hitDirection + f Lakq; q field_42814 lootTable + f J r field_42815 lootTableSeed + m (JLcmx;Lji;)Z a method_49215 brush + m (Lakq;J)V a method_49216 setLootTable + m (Lcmx;)V a method_49217 unpackLootTable + m ()V b method_49219 checkReset + m (Lcmx;)V b method_49218 brushingCompleted + m ()Lacb; c method_49221 getUpdatePacket + m (Lcmx;)V c method_49220 dropContent + m (Lub;)Z c method_49222 tryLoadLootTable + m ()Lji; d method_49224 getHitDirection + m (Lub;)Z d method_49223 trySaveLootTable + m ()Lcuq; f method_49225 getItem + m ()I j method_49226 getCompletionState + m (Ljd;Ldtc;)V + m ()V +c dqm net/minecraft/class_8239 net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity + m (Ljd;Ldtc;)V +c dqm$a net/minecraft/class_8239$class_8240 net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity$VibrationUser + f Ldqm; a field_44609 field_44609 + m (Ldcw;Ljd;Ldtc;)I a method_49832 getBackSignal + m (Ldqm;Ljd;)V +c dqn net/minecraft/class_3924 net/minecraft/world/level/block/entity/CampfireBlockEntity + f I a field_31330 BURN_COOL_SPEED + f I b field_31331 NUM_SLOTS + f Ljv; c field_17383 items + f [I d field_17384 cookingProgress + f [I e field_17385 cookingTime + f Lczd$a; f field_38235 quickCheck + m (Lbtn;Lcuq;I)Z a method_17503 placeFood + m (Lczp;Ldcw;Lczb;)Lcuq; a method_17504 method_17504 + m (Ldcw;Ljd;Ldtc;Ldqn;)V a method_31666 cookTick + m ()Ljv; b method_17505 getItems + m (Lcuq;)Ljava/util/Optional; b method_17502 getCookableRecipe + m (Ldcw;Ljd;Ldtc;Ldqn;)V b method_31667 cooldownTick + m ()Lacb; c method_38245 getUpdatePacket + m (Ldcw;Ljd;Ldtc;Ldqn;)V c method_31668 particleTick + m ()V d method_17506 dowse + m ()V f method_17510 markUpdated + m (Ljd;Ldtc;)V +c dqo net/minecraft/class_2595 net/minecraft/world/level/block/entity/ChestBlockEntity + f I d field_31332 EVENT_SET_OPEN_COUNT + f Ljv; e field_11927 items + f Ldqu; f field_27209 openersCounter + f Ldqp; g field_27210 chestLidController + m (Ldcc;Ljd;)I a method_11048 getOpenCount + m (Ldcw;Ljd;Ldtc;II)V a method_11049 signalOpenCount + m (Ldcw;Ljd;Ldtc;Lavo;)V a method_11050 playSound + m (Ldcw;Ljd;Ldtc;Ldqo;)V a method_31670 lidAnimateTick + m (Ldqo;Ldqo;)V a method_11047 swapContents + m ()V l method_31671 recheckOpen + m (Ldqj;Ljd;Ldtc;)V + m (Ljd;Ldtc;)V +c dqo$1 net/minecraft/class_2595$1 net/minecraft/world/level/block/entity/ChestBlockEntity$1 + f Ldqo; a field_27211 field_27211 + m (Ldqo;)V +c dqp net/minecraft/class_5560 net/minecraft/world/level/block/entity/ChestLidController + f Z a field_27212 shouldBeOpen + f F b field_27213 openness + f F c field_27214 oOpenness + m ()V a method_31672 tickLid + m (F)F a method_31673 getOpenness + m (Z)V a method_31674 shouldBeOpen + m ()V +c dqq net/minecraft/class_7716 net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity + f I b field_40331 MAX_BOOKS_IN_STORAGE + f Lorg/slf4j/Logger; c field_40898 LOGGER + f Ljv; d field_41314 items + f I e field_41601 lastInteractedSlot + m (Lcuq;Lbqk;Lcuq;)Z a method_51356 method_51356 + m (I)V c method_47585 updateState + m ()I f method_47587 count + m ()I j method_47887 getLastInteractedSlot + m (Ljd;Ldtc;)V + m ()V +c dqr net/minecraft/class_2593 net/minecraft/world/level/block/entity/CommandBlockEntity + f Z a field_11919 powered + f Z b field_11918 auto + f Z c field_11917 conditionMet + f Ldbx; d field_11920 commandBlock + m (Z)V a method_11038 setPowered + m ()Ldbx; b method_11040 getCommandBlock + m (Z)V b method_11041 setAutomatic + m ()Z c method_11043 isPowered + m ()Z d method_11042 isAutomatic + m ()V f method_23359 onModeSwitch + m ()Z j method_11044 wasConditionMet + m ()Z k method_11045 markConditionMet + m ()Ldqr$a; l method_11039 getMode + m ()Z u method_11046 isConditional + m ()V v method_23360 scheduleTick + m (Ljd;Ldtc;)V +c dqr$1 net/minecraft/class_2593$1 net/minecraft/world/level/block/entity/CommandBlockEntity$1 + f Ldqr; b field_11921 field_11921 + m (Ldqr;)V +c dqr$a net/minecraft/class_2593$class_2594 net/minecraft/world/level/block/entity/CommandBlockEntity$Mode + f Ldqr$a; a field_11922 SEQUENCE + f Ldqr$a; b field_11923 AUTO + f Ldqr$a; c field_11924 REDSTONE + f [Ldqr$a; d field_11925 $VALUES + m ()[Ldqr$a; a method_36715 $values + m (Ljava/lang/String;I)V + m ()V +c dqs net/minecraft/class_2599 net/minecraft/world/level/block/entity/ComparatorBlockEntity + f I a field_11943 output + m (I)V a method_11070 setOutputSignal + m ()I b method_11071 getOutputSignal + m (Ljd;Ldtc;)V +c dqt net/minecraft/class_2597 net/minecraft/world/level/block/entity/ConduitBlockEntity + f I a field_11936 tickCount + f I b field_31333 BLOCK_REFRESH_RATE + f I c field_31334 EFFECT_DURATION + f F d field_31335 ROTATION_SPEED + f I e field_31336 MIN_ACTIVE_SIZE + f I f field_31337 MIN_KILL_SIZE + f I g field_31338 KILL_RANGE + f [Ldfy; h field_11931 VALID_BLOCKS + f F i field_11932 activeRotation + f Z j field_11934 isActive + f Z k field_11933 isHunting + f Ljava/util/List; l field_11937 effectBlocks + f Lbtn; m field_11939 destroyTarget + f Ljava/util/UUID; q field_11935 destroyTargetUUID + f J r field_11938 nextAmbientSoundActivation + m (F)F a method_11061 getActiveRotation + m (Lbtn;)Z a method_11060 method_11060 + m (Ldcw;Ljd;Ldqt;)V a method_11064 updateClientTarget + m (Ldcw;Ljd;Ldtc;Ldqt;)V a method_31675 clientTick + m (Ldcw;Ljd;Ldtc;Ljava/util/List;Ldqt;)V a method_11068 updateDestroyTarget + m (Ldcw;Ljd;Ljava/util/List;)Z a method_11069 updateShape + m (Ldcw;Ljd;Ljava/util/List;Lbsr;I)V a method_11063 animationTick + m (Ldcw;Ljd;Ljava/util/UUID;)Lbtn; a method_11056 findDestroyTarget + m (Ldqt;Ljava/util/List;)V a method_31676 updateHunting + m (Ljava/util/UUID;Lbtn;)Z a method_11058 method_11058 + m (Ljd;)Lewx; a method_11059 getDestroyRangeAABB + m (Z)V a method_11062 setHunting + m ()Lacb; b method_38247 getUpdatePacket + m (Ldcw;Ljd;Ldtc;Ldqt;)V b method_31677 serverTick + m (Ldcw;Ljd;Ljava/util/List;)V b method_11055 applyEffects + m ()Z c method_11065 isActive + m ()Z d method_11066 isHunting + m (Ljd;Ldtc;)V + m ()V +c dqu net/minecraft/class_5561 net/minecraft/world/level/block/entity/ContainerOpenersCounter + f I a field_31339 CHECK_TICK_DELAY + f I b field_27215 openCount + f D c field_48376 maxInteractionRange + m ()I a method_31678 getOpenerCount + m (Lcmx;)Z a method_31679 isOwnContainer + m (Lcmx;Ldcw;Ljd;Ldtc;)V a method_31684 incrementOpeners + m (Ldcw;Ljd;)Ljava/util/List; a method_56121 getPlayersWithContainerOpen + m (Ldcw;Ljd;Ldtc;)V a method_31681 onOpen + m (Ldcw;Ljd;Ldtc;II)V a method_31682 openerCountChanged + m (Lcmx;Ldcw;Ljd;Ldtc;)V b method_31685 decrementOpeners + m (Ldcw;Ljd;Ldtc;)V b method_31683 onClose + m (Ldcw;Ljd;Ldtc;)V c method_31686 recheckOpeners + m (Ldcw;Ljd;Ldtc;)V d method_31687 scheduleRecheck + m ()V +c dqv net/minecraft/class_8887 net/minecraft/world/level/block/entity/CrafterBlockEntity + f I d field_46809 CONTAINER_WIDTH + f I e field_46810 CONTAINER_HEIGHT + f I f field_46811 CONTAINER_SIZE + f I g field_46812 SLOT_DISABLED + f I h field_46813 SLOT_ENABLED + f I i field_46814 DATA_TRIGGERED + f I j field_46815 NUM_DATA + f Lcqf; k field_46816 containerData + f Ljv; q field_46817 items + f I r field_46818 craftingTicksRemaining + m (ILcuq;I)Z a method_54479 smallerStackExist + m (IZ)V a method_54480 setSlotState + m (Ldcw;Ljd;Ldtc;Ldqv;)V a method_54481 serverTick + m (Z)V a method_54482 setTriggered + m (I)Z c method_54483 isSlotDisabled + m (Lub;)V c method_54486 addDisabledSlots + m (I)V d method_54484 setCraftingTicksRemaining + m (Lub;)V d method_54487 addTriggered + m (I)Z e method_54485 slotCanBeDisabled + m ()Z l method_54488 isTriggered + m ()I u method_54489 getRedstoneSignal + m (Ljd;Ldtc;)V +c dqv$1 net/minecraft/class_8887$1 net/minecraft/world/level/block/entity/CrafterBlockEntity$1 + f [I a field_46820 slotStates + f I b field_46821 triggered + m (Ldqv;)V +c dqw net/minecraft/class_2603 net/minecraft/world/level/block/entity/DaylightDetectorBlockEntity + m (Ljd;Ldtc;)V +c dqx net/minecraft/class_8172 net/minecraft/world/level/block/entity/DecoratedPotBlockEntity + f Ljava/lang/String; d field_42782 TAG_SHERDS + f Ljava/lang/String; e field_46659 TAG_ITEM + f I f field_46660 EVENT_POT_WOBBLES + f J g field_46661 wobbleStartedAtTick + f Ldqx$a; h field_46662 lastWobbleStyle + f Lakq; i field_47156 lootTable + f J j field_47157 lootTableSeed + f Ldrm; k field_44706 decorations + f Lcuq; l field_46663 item + m (Ldqx$a;)V a method_54301 wobble + m (Ldrm;)Lcuq; a method_52577 createDecoratedPotItem + m (Lcuq;)V c method_49196 setFromItem + m ()Lacb; j method_49200 getUpdatePacket + m ()Lji; k method_49204 getDirection + m ()Ldrm; l method_51511 getDecorations + m ()Lcuq; u method_52578 getPotAsItem + m (Ljd;Ldtc;)V +c dqx$a net/minecraft/class_8172$class_8837 net/minecraft/world/level/block/entity/DecoratedPotBlockEntity$WobbleStyle + f Ldqx$a; a field_46664 POSITIVE + f Ldqx$a; b field_46665 NEGATIVE + f I c field_46666 duration + f [Ldqx$a; d field_46667 $VALUES + m ()[Ldqx$a; a method_54302 $values + m (Ljava/lang/String;II)V + m ()V +c dqy net/minecraft/class_9766 net/minecraft/world/level/block/entity/DecoratedPotPattern + f Lakr; a comp_2801 assetId + m ()Lakr; a comp_2801 assetId + m (Lakr;)V +c dqz net/minecraft/class_8173 net/minecraft/world/level/block/entity/DecoratedPotPatterns + f Lakq; a field_51897 BLANK + f Lakq; b field_43290 ANGLER + f Lakq; c field_42794 ARCHER + f Lakq; d field_42796 ARMS_UP + f Lakq; e field_43259 BLADE + f Lakq; f field_43260 BREWER + f Lakq; g field_43261 BURN + f Lakq; h field_43262 DANGER + f Lakq; i field_43263 EXPLORER + f Lakq; j field_49837 FLOW + f Lakq; k field_43264 FRIEND + f Lakq; l field_49838 GUSTER + f Lakq; m field_43265 HEART + f Lakq; n field_43266 HEARTBREAK + f Lakq; o field_43267 HOWL + f Lakq; p field_43268 MINER + f Lakq; q field_43269 MOURNER + f Lakq; r field_43270 PLENTY + f Lakq; s field_42795 PRIZE + f Lakq; t field_49839 SCRAPE + f Lakq; u field_43271 SHEAF + f Lakq; v field_43272 SHELTER + f Lakq; w field_42797 SKULL + f Lakq; x field_43273 SNORT + f Ljava/util/Map; y field_42798 ITEM_TO_POT_TEXTURE + m (Lcul;)Lakq; a method_49206 getPatternFromItem + m (Ljava/lang/String;)Lakq; a method_49208 create + m (Ljz;)Ldqy; a method_49207 bootstrap + m (Ljz;Lakq;Ljava/lang/String;)Ldqy; a method_60512 register + m ()V + m ()V +c dra net/minecraft/class_2601 net/minecraft/world/level/block/entity/DispenserBlockEntity + f I d field_31340 CONTAINER_SIZE + f Ljv; e field_11945 items + m (Layw;)I a method_11076 getRandomSlot + m (Lcuq;)Lcuq; b method_11075 insertItem + m (Ldqj;Ljd;Ldtc;)V + m (Ljd;Ldtc;)V +c drb net/minecraft/class_2608 net/minecraft/world/level/block/entity/DropperBlockEntity + m (Ljd;Ldtc;)V +c drc net/minecraft/class_2605 net/minecraft/world/level/block/entity/EnchantingTableBlockEntity + f I a field_11961 time + f F b field_11958 flip + f F c field_11960 oFlip + f F d field_11969 flipT + f F e field_11967 flipA + f F f field_11966 open + f F g field_11965 oOpen + f F h field_11964 rot + f F i field_11963 oRot + f F j field_11962 tRot + f Layw; k field_11968 RANDOM + f Lwz; l field_11959 name + m (Ldcw;Ljd;Ldtc;Ldrc;)V a method_31688 bookAnimationTick + m (Lwz;)V a method_11179 setCustomName + m (Ljd;Ldtc;)V + m ()V +c drd net/minecraft/class_2611 net/minecraft/world/level/block/entity/EnderChestBlockEntity + f Ldqp; a field_27216 chestLidController + f Ldqu; b field_27217 openersCounter + m (Lcmx;)V a method_11219 startOpen + m (Ldcw;Ljd;Ldtc;Ldrd;)V a method_31689 lidAnimateTick + m ()V b method_31690 recheckOpen + m (Lcmx;)V b method_11220 stopOpen + m (Lcmx;)Z c method_11218 stillValid + m (Ljd;Ldtc;)V +c drd$1 net/minecraft/class_2611$1 net/minecraft/world/level/block/entity/EnderChestBlockEntity$1 + f Ldrd; a field_27218 field_27218 + m (Ldrd;)V +c dre net/minecraft/class_3866 net/minecraft/world/level/block/entity/FurnaceBlockEntity + m (Ljd;Ldtc;)V +c drf net/minecraft/class_7717 net/minecraft/world/level/block/entity/HangingSignBlockEntity + f I a field_40333 MAX_TEXT_LINE_WIDTH + f I b field_40334 TEXT_LINE_HEIGHT + m (Ljd;Ldtc;)V +c drg net/minecraft/class_2615 net/minecraft/world/level/block/entity/Hopper + f Lewx; s_ field_12026 SUCK_AABB + m ()D H method_11266 getLevelX + m ()D I method_11264 getLevelY + m ()D J method_11265 getLevelZ + m ()Z K method_57081 isGridAligned + m ()Lewx; am_ method_11262 getSuckAabb + m ()V +c drh net/minecraft/class_2614 net/minecraft/world/level/block/entity/HopperBlockEntity + f I d field_31341 MOVE_ITEM_SPEED + f I e field_31342 HOPPER_CONTAINER_SIZE + f [[I f field_49100 CACHED_SLOTS + f Ljv; g field_12024 items + f I h field_12023 cooldownTime + f J i field_12022 tickedGameTime + f Lji; j field_49101 facing + m (Lbqk;Lbqk;Lcuq;ILji;)Z a method_11252 canTakeItemFromContainer + m (Lbqk;Lbqk;Lcuq;Lji;)Lcuq; a method_11260 addItem + m (Lbqk;Lcjh;)Z a method_11247 addItem + m (Lbqk;Lcuq;ILji;)Z a method_11244 canPlaceItemInContainer + m (Lbqk;Lji;)[I a method_17767 getSlots + m (Lcuq;Lcuq;)Z a method_11254 canMergeItems + m (Ldcw;DDD)Lbqk; a method_57009 getEntityContainer + m (Ldcw;Ldrg;)Z a method_11241 suckInItems + m (Ldcw;Ldrg;Ljd;Ldtc;)Lbqk; a method_11248 getSourceContainer + m (Ldcw;Ldrh;)Z a method_31691 method_31691 + m (Ldcw;Ljd;)Lbqk; a method_11250 getContainerAt + m (Ldcw;Ljd;Ldrh;)Z a method_11246 ejectItems + m (Ldcw;Ljd;Ldtc;DDD)Lbqk; a method_11251 getContainerAt + m (Ldcw;Ljd;Ldtc;Lbsr;Ldrh;)V a method_11236 entityInside + m (Ldcw;Ljd;Ldtc;Ldrh;)V a method_31692 pushItemsTick + m (Ldcw;Ljd;Ldtc;Ldrh;Ljava/util/function/BooleanSupplier;)Z a method_11243 tryMoveItems + m (Ldrg;Lbqk;ILji;)Z a method_11261 tryTakeInItemFromSlot + m (Ldrh;Lcjh;)Z a method_31693 method_31693 + m (Lbqk;Lbqk;Lcuq;ILji;)Lcuq; b method_11253 tryMoveInItem + m (Lbqk;Lji;)Z b method_11258 isFullContainer + m (Ldcw;Ldrg;)Ljava/util/List; b method_11237 getItemsAtAndAbove + m (Ldcw;Ljd;Ldrh;)Lbqk; b method_11255 getAttachedContainer + m (Ldcw;Ljd;Ldtc;)Lbqk; b method_57010 getBlockContainer + m (I)[I c method_57011 createFlatSlots + m (I)V d method_11238 setCooldown + m ()Z l method_11256 inventoryFull + m ()Z u method_11239 isOnCooldown + m ()Z v method_11242 isOnCustomCooldown + m (Ljd;Ldtc;)V + m ()V +c dri net/minecraft/class_3751 net/minecraft/world/level/block/entity/JigsawBlockEntity + f Ljava/lang/String; a field_31343 TARGET + f Ljava/lang/String; b field_31344 POOL + f Ljava/lang/String; c field_31345 JOINT + f Ljava/lang/String; d field_47096 PLACEMENT_PRIORITY + f Ljava/lang/String; e field_47097 SELECTION_PRIORITY + f Ljava/lang/String; f field_31346 NAME + f Ljava/lang/String; g field_31347 FINAL_STATE + f Lakr; h field_16550 name + f Lakr; i field_16552 target + f Lakq; j field_23327 pool + f Ldri$a; k field_23328 joint + f Ljava/lang/String; l field_16551 finalState + f I m field_47098 placementPriority + f I q field_47099 selectionPriority + m (I)V a method_54775 setPlacementPriority + m (Lakq;)V a method_26398 setPool + m (Lakr;)V a method_16379 setName + m (Laqu;IZ)V a method_27191 generate + m (Ldri$a;)V a method_26396 setJoint + m (Ljava/lang/String;)V a method_16377 setFinalState + m ()Lakr; b method_16381 getName + m (I)V b method_54776 setSelectionPriority + m (Lakr;)V b method_16378 setTarget + m ()Lakr; c method_26399 getTarget + m ()Lakq; d method_16382 getPool + m ()Ljava/lang/String; f method_16380 getFinalState + m ()Ldri$a; j method_26400 getJoint + m ()I k method_54777 getPlacementPriority + m ()I l method_54778 getSelectionPriority + m ()Lacb; u method_38248 getUpdatePacket + m ()Ldri$a; v method_26397 method_26397 + m (Ljd;Ldtc;)V +c dri$a net/minecraft/class_3751$class_4991 net/minecraft/world/level/block/entity/JigsawBlockEntity$JointType + f Ldri$a; a field_23329 ROLLABLE + f Ldri$a; b field_23330 ALIGNED + f Ljava/lang/String; c field_23331 name + f [Ldri$a; d field_23332 $VALUES + m ()Lwz; a method_32357 getTranslatedName + m (Ljava/lang/String;)Ljava/util/Optional; a method_26401 byName + m (Ljava/lang/String;Ldri$a;)Z a method_26402 method_26402 + m ()[Ldri$a; b method_36716 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c drj net/minecraft/class_2619 net/minecraft/world/level/block/entity/JukeboxBlockEntity + f Ljava/lang/String; b field_52064 SONG_ITEM_TAG_ID + f Ljava/lang/String; c field_52065 TICKS_SINCE_SONG_STARTED_TAG_ID + f Lcuq; d field_46507 item + f Lcuw; e field_52066 jukeboxSongPlayer + m (Ldcw;Ljd;Ldtc;Ldrj;)V a method_44370 tick + m (Ljm;)V a method_60780 method_60780 + m (Lub;Ljm;)V a method_60781 method_60781 + m (Z)V a method_60782 notifyItemChangedInJukebox + m (Ljm;)V b method_60783 method_60783 + m (Lcuq;)V c method_49210 setSongItemWithoutPlaying + m ()Lcuw; j method_60784 getSongPlayer + m ()V k method_60785 onSongChanged + m ()V l method_49213 popOutTheItem + m ()I u method_60992 getComparatorOutput + m ()V w method_60786 tryForcePlaySong + m (Ljd;Ldtc;)V +c drk net/minecraft/class_3722 net/minecraft/world/level/block/entity/LecternBlockEntity + f I a field_31348 DATA_PAGE + f I b field_31349 NUM_DATA + f I c field_31350 SLOT_BOOK + f I d field_31351 NUM_SLOTS + f Lbqk; e field_17386 bookAccess + f Lcqf; f field_17387 dataAccess + f Lcuq; g field_17388 book + f I h field_17389 page + f I i field_17390 pageCount + m (I)V a method_17511 setPage + m (Lcmx;)Let; a method_17512 createCommandSourceStack + m (Lcuq;Lcmx;)V a method_17514 setBook + m ()Lcuq; b method_17520 getBook + m (Lcuq;)V b method_17513 setBook + m (Lcuq;Lcmx;)Lcuq; b method_17518 resolveBook + m ()Z c method_17522 hasBook + m (Lcuq;)I c method_57591 getPageCount + m ()I f method_17523 getPage + m ()I j method_17524 getRedstoneSignal + m ()V k method_17525 onBookItemRemove + m (Ljd;Ldtc;)V +c drk$1 net/minecraft/class_3722$1 net/minecraft/world/level/block/entity/LecternBlockEntity$1 + f Ldrk; b field_17391 field_17391 + m (Ldrk;)V +c drk$2 net/minecraft/class_3722$2 net/minecraft/world/level/block/entity/LecternBlockEntity$2 + f Ldrk; a field_17392 field_17392 + m (Ldrk;)V +c drl net/minecraft/class_2618 net/minecraft/world/level/block/entity/LidBlockEntity + m (F)F a method_11274 getOpenNess +c drm net/minecraft/class_8526 net/minecraft/world/level/block/entity/PotDecorations + f Ldrm; a field_44707 EMPTY + f Lcom/mojang/serialization/Codec; b field_49414 CODEC + f Lyx; c field_49415 STREAM_CODEC + f Ljava/util/Optional; d comp_1487 back + f Ljava/util/Optional; e comp_1488 left + f Ljava/util/Optional; f comp_1489 right + f Ljava/util/Optional; g comp_1490 front + m ()Ljava/util/List; a method_51512 ordered + m (Ljava/util/List;I)Ljava/util/Optional; a method_51514 getItem + m (Ljava/util/Optional;)Lcul; a method_57592 method_57592 + m (Lub;)Lub; a method_51513 save + m ()Ljava/util/Optional; b comp_1487 back + m (Lub;)Ldrm; b method_51516 load + m ()Ljava/util/Optional; c comp_1488 left + m ()Ljava/util/Optional; d comp_1489 right + m ()Ljava/util/Optional; e comp_1490 front + m (Ljava/util/List;)V + m (Lcul;Lcul;Lcul;Lcul;)V + m (Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c drn net/minecraft/class_2621 net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity + f Lakq; l field_12037 lootTable + f J m field_12036 lootTableSeed + m (Ldqj;Ljd;Ldtc;)V +c dro net/minecraft/class_7132 net/minecraft/world/level/block/entity/SculkCatalystBlockEntity + f Ldro$a; a field_44610 catalystListener + m (Ldcw;Ljd;Ldtc;Ldro;)V a method_41517 serverTick + m ()Ldro$a; b method_51357 getListener + m (Ljd;Ldtc;)V +c dro$a net/minecraft/class_7132$class_8510 net/minecraft/world/level/block/entity/SculkCatalystBlockEntity$CatalystListener + f I a field_44611 PULSE_TICKS + f Ldmu; b field_44612 sculkSpreader + f Ldtc; c field_44613 blockState + f Ldyd; d field_44614 positionSource + m (Laqu;Lexc;)V a method_51359 method_51359 + m (Laqu;Ljd;Ldtc;Layw;)V a method_51360 bloom + m (Ldcw;Lbtn;)V a method_51361 tryAwardItSpreadsAdvancement + m ()Ldmu; d method_51362 getSculkSpreader + m (Ldtc;Ldyd;)V +c drp net/minecraft/class_5704 net/minecraft/world/level/block/entity/SculkSensorBlockEntity + f Lorg/slf4j/Logger; b field_38236 LOGGER + f Ldyi$a; c field_44615 vibrationData + f Ldyi$b; d field_28118 vibrationListener + f Ldyi$d; e field_43291 vibrationUser + f I h field_28119 lastVibrationFrequency + m (I)V a method_44213 setLastVibrationFrequency + m (Ldyi$a;)V a method_42320 method_42320 + m (Ljava/lang/String;)V a method_60993 method_60993 + m (Lub;Luy;)V a method_42321 method_42321 + m ()Ldyi$d; b method_49831 createVibrationUser + m (Ljava/lang/String;)V b method_60994 method_60994 + m ()I d method_32912 getLastVibrationFrequency + m ()Ldyi$b; f method_32911 getListener + m (Ldqj;Ljd;Ldtc;)V + m (Ljd;Ldtc;)V + m ()V +c drp$a net/minecraft/class_5704$class_8241 net/minecraft/world/level/block/entity/SculkSensorBlockEntity$VibrationUser + f Ldyd; a field_44616 positionSource + f I b field_43292 LISTENER_RANGE + f Ljd; c field_44617 blockPos + f Ldrp; d field_44618 field_44618 + m (Ldrp;Ljd;)V +c drq net/minecraft/class_7133 net/minecraft/world/level/block/entity/SculkShriekerBlockEntity + f Lorg/slf4j/Logger; b field_38237 LOGGER + f I c field_38750 WARNING_SOUND_RADIUS + f I d field_38751 WARDEN_SPAWN_ATTEMPTS + f I e field_38752 WARDEN_SPAWN_RANGE_XZ + f I h field_38753 WARDEN_SPAWN_RANGE_Y + f I i field_38754 DARKNESS_RADIUS + f I j field_38756 SHRIEKING_TICKS + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; k field_38755 SOUND_BY_LEVEL + f I l field_38757 warningLevel + f Ldyi$d; m field_44619 vibrationUser + f Ldyi$a; q field_44620 vibrationData + f Ldyi$b; r field_38239 vibrationListener + m (I)V a method_44016 method_44016 + m (Laqu;)V a method_43147 tryRespond + m (Laqu;Laqv;)V a method_43141 tryShriek + m (Laqu;Lbsr;)V a method_44017 shriek + m (Lbsr;)Laqv; a method_44018 tryGetPlayer + m (Ldyi$a;)V a method_42322 method_42322 + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_43146 method_43146 + m (Ljava/lang/String;)V a method_60995 method_60995 + m (Lub;Luy;)V a method_42323 method_42323 + m ()Ldyi$b; b method_42325 getListener + m (Laqu;)Z b method_43150 canRespond + m (Laqu;Laqv;)Z b method_43142 tryToWarn + m (Ldcw;)V b method_43151 playWardenReplySound + m (Ljava/lang/String;)V b method_60996 method_60996 + m (Laqu;)Z c method_43148 trySummonWarden + m (Ljd;Ldtc;)V + m ()V +c drq$a net/minecraft/class_7133$class_8511 net/minecraft/world/level/block/entity/SculkShriekerBlockEntity$VibrationUser + f Ldrq; a field_44621 field_44621 + f I b field_44622 LISTENER_RADIUS + f Ldyd; c field_44623 positionSource + m (Ldrq;)V +c drr net/minecraft/class_2627 net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity + f I d field_31354 COLUMNS + f I e field_31355 ROWS + f I f field_31356 CONTAINER_SIZE + f I g field_31357 EVENT_SET_OPEN_COUNT + f I h field_31358 OPENING_TICK_LENGTH + f F i field_31359 MAX_LID_HEIGHT + f F j field_31360 MAX_LID_ROTATION + f [I k field_12059 SLOTS + f Ljv; q field_12054 itemStacks + f I r field_12053 openCount + f Ldrr$a; s field_12057 animationStatus + f F t field_12056 progress + f F u field_12055 progressOld + f Lcti; v field_12060 color + m (F)F a method_11312 getProgress + m (Ldcw;Ljd;Ldtc;Ldrr;)V a method_31694 tick + m (Ldtc;)Lewx; a method_11314 getBoundingBox + m (Ldcw;Ljd;Ldtc;)V b method_11318 updateAnimation + m (Ldcw;Ljd;Ldtc;)V c method_11316 moveCollidedEntities + m (Ldcw;Ljd;Ldtc;)V d method_20047 doNeighborUpdates + m (Lub;Ljo$a;)V e method_11319 loadFromTag + m ()Ldrr$a; l method_11313 getAnimationStatus + m ()Lcti; u method_11320 getColor + m ()Z v method_27093 isClosed + m (Lcti;Ljd;Ldtc;)V + m (Ljd;Ldtc;)V + m ()V +c drr$a net/minecraft/class_2627$class_2628 net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity$AnimationStatus + f Ldrr$a; a field_12065 CLOSED + f Ldrr$a; b field_12066 OPENING + f Ldrr$a; c field_12063 OPENED + f Ldrr$a; d field_12064 CLOSING + f [Ldrr$a; e field_12067 $VALUES + m ()[Ldrr$a; a method_36717 $values + m (Ljava/lang/String;I)V + m ()V +c drs net/minecraft/class_2625 net/minecraft/world/level/block/entity/SignBlockEntity + f Lorg/slf4j/Logger; a field_43294 LOGGER + f I b field_40335 MAX_TEXT_LINE_WIDTH + f I c field_40336 TEXT_LINE_HEIGHT + f Ljava/util/UUID; d field_12046 playerWhoMayEdit + f Ldrt; e field_43295 frontText + f Ldrt; f field_43296 backText + f Z g field_43297 isWaxed + m (Lcmx;)Z a method_49834 isFacingFrontText + m (Lcmx;Ldcw;Ljd;)Let; a method_50006 createCommandSourceStack + m (Lcmx;Ldcw;Ljd;Z)Z a method_50007 executeClickCommandsIfPresent + m (Lcmx;Ljava/util/List;Ldrt;)Ldrt; a method_49835 setMessages + m (Lcmx;ZLjava/util/List;)V a method_49836 updateSignText + m (Ldcw;Ljd;Ldtc;Ldrs;)V a method_49837 tick + m (Ldrs;Ldcw;Ljava/util/UUID;)V a method_49838 clearInvalidPlayerWhoMayEdit + m (Ldrt;)Ldrt; a method_50008 loadLines + m (Ldrt;Z)Z a method_49840 setText + m (Ljava/util/UUID;)V a method_11306 setAllowedPlayerEditor + m (Ljava/util/function/UnaryOperator;Z)Z a method_49841 updateText + m (Lub;Luy;)V a method_49842 method_49842 + m (Lwz;)Lwz; a method_50009 loadLine + m (Z)Ldrt; a method_49843 getText + m (ZLcmx;)Z a method_50010 canExecuteClickCommands + m ()I b method_45469 getTextLineHeight + m (Lcmx;Ljava/util/List;Ldrt;)Ldrt; b method_49845 method_49845 + m (Ldrt;)Z b method_49839 setBackText + m (Ljava/util/UUID;)Z b method_49847 playerIsTooFarAwayToEdit + m (Lub;Luy;)V b method_49848 method_49848 + m (Z)Z b method_49849 setWaxed + m ()I c method_45470 getMaxTextLineWidth + m (Ldrt;)Z c method_49846 setFrontText + m ()Lavo; d method_54303 getSignInteractionFailedSoundEvent + m (Ldrt;)V d method_49850 method_49850 + m (Ldrt;)V e method_49851 method_49851 + m ()Ldrt; f method_49852 createDefaultSignText + m ()Ldrt; j method_49853 getFrontText + m ()Ldrt; k method_49854 getBackText + m ()Lacb; l method_38249 getUpdatePacket + m ()Ljava/util/UUID; u method_11305 getPlayerWhoMayEdit + m ()Z v method_49855 isWaxed + m ()V w method_34272 markUpdated + m (Ljd;Ldtc;)V + m (Ldqj;Ljd;Ldtc;)V + m ()V +c drt net/minecraft/class_8242 net/minecraft/world/level/block/entity/SignText + f Lcom/mojang/serialization/Codec; a field_43298 DIRECT_CODEC + f I b field_43299 LINES + f Lcom/mojang/serialization/Codec; c field_43300 LINES_CODEC + f [Lwz; d field_43301 messages + f [Lwz; e field_43302 filteredMessages + f Lcti; f field_43303 color + f Z g field_43304 hasGlowingText + f [Laya; h field_43305 renderMessages + f Z i field_43306 renderMessagedFiltered + m ()Z a method_49856 hasGlowingText + m (ILwz;)Ldrt; a method_49857 setMessage + m (ILwz;Lwz;)Ldrt; a method_49858 setMessage + m (IZ)Lwz; a method_49859 getMessage + m (Lcmx;)Z a method_49861 hasMessage + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49863 method_49863 + m (Lcti;)Ldrt; a method_49862 setColor + m (Ldrt;)Ljava/lang/Boolean; a method_49864 method_49864 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_49865 method_49865 + m (Lwz;)Z a method_49866 method_49866 + m (Z)Ldrt; a method_49867 setHasGlowingText + m (ZLjava/util/function/Function;)[Laya; a method_49868 getRenderMessages + m ([Lwz;)Ljava/util/List; a method_49869 method_49869 + m ([Lwz;Ljava/util/Optional;Lcti;Z)Ldrt; a method_49870 load + m ()Lcti; b method_49872 getColor + m (Lcmx;)Z b method_49874 hasAnyClickCommands + m (Ldrt;)Lcti; b method_49875 method_49875 + m (Ljava/util/List;)[Lwz; b method_49876 method_49876 + m (Z)[Lwz; b method_49877 getMessages + m ()[Lwz; c method_49878 emptyMessages + m (Ldrt;)[Lwz; c method_49879 method_49879 + m ()Ljava/util/Optional; d method_49880 filteredMessages + m ()V + m ([Lwz;[Lwz;Lcti;Z)V + m ()V +c dru net/minecraft/class_2631 net/minecraft/world/level/block/entity/SkullBlockEntity + f Ljava/util/concurrent/Executor; a field_45147 CHECKED_MAIN_THREAD_EXECUTOR + f Ljava/lang/String; b field_49762 TAG_PROFILE + f Ljava/lang/String; c field_41602 TAG_NOTE_BLOCK_SOUND + f Ljava/lang/String; d field_49763 TAG_CUSTOM_NAME + f Lorg/slf4j/Logger; e field_49764 LOGGER + f Ljava/util/concurrent/Executor; f field_34029 mainThreadExecutor + f Lcom/google/common/cache/LoadingCache; g field_51356 profileCacheByName + f Lcom/google/common/cache/LoadingCache; h field_51357 profileCacheById + f Lcxu; i field_12087 owner + f Lakr; j field_41603 noteBlockSound + f I k field_41315 animationTickCount + f Z l field_41316 isAnimating + f Lwz; m field_49765 customName + m (F)F a method_47588 getAnimation + m (Lalm;Ljava/util/concurrent/Executor;)V a method_39765 setup + m (Lcxu;)V a method_11333 setOwner + m (Ldcw;Ljd;Ldtc;Ldru;)V a method_47589 animation + m (Ljava/lang/Runnable;)V a method_52579 method_52579 + m (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_52580 fetchGameProfile + m (Ljava/lang/String;Lalm;)Ljava/util/concurrent/CompletableFuture; a method_59536 fetchProfileByName + m (Ljava/util/Optional;)Ljava/util/concurrent/CompletionStage; a method_59537 method_59537 + m (Ljava/util/Optional;Ljava/util/Optional;)Ljava/util/Optional; a method_59538 method_59538 + m (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture; a method_59539 fetchGameProfile + m (Ljava/util/UUID;Lalm;Ljava/util/function/BooleanSupplier;)Ljava/util/concurrent/CompletableFuture; a method_59540 fetchProfileById + m (Ljava/util/function/BooleanSupplier;Lalm;Ljava/util/UUID;)Ljava/util/Optional; a method_59541 method_59541 + m ()V b method_39766 clear + m (Lcxu;)V b method_58126 method_58126 + m (Ljava/lang/String;)V b method_58127 method_58127 + m (Ljava/util/Optional;)Ljava/util/Optional; b method_59542 method_59542 + m ()Lcxu; c method_11334 getOwnerProfile + m ()Lakr; d method_47888 getNoteBlockSound + m ()Lacb; f method_38250 getUpdatePacket + m ()V j method_11339 updateOwnerProfile + m ()Z k method_54083 method_54083 + m (Ljd;Ldtc;)V + m ()V +c dru$1 net/minecraft/class_2631$1 net/minecraft/world/level/block/entity/SkullBlockEntity$1 + f Lalm; a field_46509 val$services + m (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; a method_54084 load + m (Lalm;)V +c dru$2 net/minecraft/class_2631$2 net/minecraft/world/level/block/entity/SkullBlockEntity$2 + f Lalm; a field_51358 val$services + f Ljava/util/function/BooleanSupplier; b field_51359 val$invalidated + m (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture; a method_59543 load + m (Lalm;Ljava/util/function/BooleanSupplier;)V +c drv net/minecraft/class_3723 net/minecraft/world/level/block/entity/SmokerBlockEntity + m (Ljd;Ldtc;)V +c drw net/minecraft/class_2636 net/minecraft/world/level/block/entity/SpawnerBlockEntity + f Ldby; a field_12114 spawner + m (Ldcw;Ljd;Ldtc;Ldrw;)V a method_31696 clientTick + m ()Lacb; b method_38251 getUpdatePacket + m (Ldcw;Ljd;Ldtc;Ldrw;)V b method_31697 serverTick + m ()Ldby; c method_11390 getSpawner + m (Ljd;Ldtc;)V +c drw$1 net/minecraft/class_2636$1 net/minecraft/world/level/block/entity/SpawnerBlockEntity$1 + m (Ldrw;)V +c drx net/minecraft/class_2633 net/minecraft/world/level/block/entity/StructureBlockEntity + f I a field_31364 MAX_OFFSET_PER_AXIS + f I b field_31365 MAX_SIZE_PER_AXIS + f Ljava/lang/String; c field_31366 AUTHOR_TAG + f I d field_31367 SCAN_CORNER_BLOCKS_RANGE + f Lakr; e field_12102 structureName + f Ljava/lang/String; f field_12104 author + f Ljava/lang/String; g field_12098 metaData + f Ljd; h field_12092 structurePos + f Lkh; i field_12100 structureSize + f Ldkv; j field_12093 mirror + f Ldmm; k field_12105 rotation + f Ldum; l field_12094 mode + f Z m field_12099 ignoreEntities + f Z q field_12097 powered + f Z r field_12096 showAir + f Z s field_12095 showBoundingBox + f F t field_12101 integrity + f J u field_12103 seed + m ()Z A method_11365 saveStructure + m ()V B method_11361 unloadStructure + m ()Z C method_11372 isStructureLoadable + m ()Z D method_11354 isPowered + m ()Z E method_11375 getShowAir + m ()Z F method_11357 getShowBoundingBox + m ()V G method_11348 updateBlockState + m (F)V a method_11370 setIntegrity + m (J)V a method_11382 setSeed + m (Lakr;)V a method_11344 setStructureName + m (Laqu;)Z a method_54874 placeStructureIfSameSize + m (Laqu;Lent;)V a method_54875 placeStructure + m (Laqu;Ljd;)V a method_54876 method_54876 + m (Lbtn;)V a method_11373 createdBy + m (Lcmx;)Z a method_11351 usedBy + m (Ldkv;)V a method_11356 setMirror + m (Ldmm;)V a method_11385 setRotation + m (Ldqh;)Ldrx; a method_34273 method_34273 + m (Ldrx;)Z a method_34274 method_34274 + m (Ldum;)V a method_11381 setMode + m (Lent;)V a method_54877 loadStructureInfo + m (Ljava/lang/String;)V a method_11343 setStructureName + m (Ljd;)V a method_11378 setStructurePos + m (Ljd;Lejj;)Z a method_34275 method_34275 + m (Ljd;Ljava/util/stream/Stream;)Ljava/util/Optional; a method_34277 calculateEnclosingBoundingBox + m (Ljd;Ljd;)Ljava/util/stream/Stream; a method_34276 getRelatedCorners + m (Lkh;)V a method_11377 setStructureSize + m (Z)V a method_11352 setIgnoreEntities + m ()Lacb; b method_38252 getUpdatePacket + m (J)Layw; b method_20048 createRandom + m (Laqu;)Z b method_11376 loadStructureInfo + m (Ldqh;)Z b method_34278 method_34278 + m (Ljava/lang/String;)V b method_11363 setMetaData + m (Ljd;)Z b method_34279 method_34279 + m (Z)Z b method_11366 saveStructure + m ()Ljava/lang/String; c method_11362 getStructureName + m (Laqu;)V c method_54878 placeStructure + m (Z)V c method_11379 setPowered + m ()Z d method_11384 hasStructureName + m (Laqu;)Lent; d method_54879 getStructureTemplate + m (Z)V d method_11347 setShowAir + m (Z)V e method_11360 setShowBoundingBox + m ()Ljd; f method_11359 getStructurePos + m ()Lkh; j method_11349 getStructureSize + m ()Ldkv; k method_11345 getMirror + m ()Ldmm; l method_11353 getRotation + m ()Ljava/lang/String; u method_11358 getMetaData + m ()Ldum; v method_11374 getMode + m ()Z w method_11367 isIgnoreEntities + m ()F x method_11346 getIntegrity + m ()J y method_11371 getSeed + m ()Z z method_11383 detectSize + m (Ljd;Ldtc;)V +c drx$a net/minecraft/class_2633$class_2634 net/minecraft/world/level/block/entity/StructureBlockEntity$UpdateType + f Ldrx$a; a field_12108 UPDATE_DATA + f Ldrx$a; b field_12110 SAVE_AREA + f Ldrx$a; c field_12109 LOAD_AREA + f Ldrx$a; d field_12106 SCAN_AREA + f [Ldrx$a; e field_12107 $VALUES + m ()[Ldrx$a; a method_36718 $values + m (Ljava/lang/String;I)V + m ()V +c dry net/minecraft/class_2643 net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity + f Lorg/slf4j/Logger; a field_12133 LOGGER + f I b field_31368 SPAWN_TIME + f I c field_31369 COOLDOWN_TIME + f I d field_31370 ATTENTION_INTERVAL + f I e field_31371 EVENT_COOLDOWN + f I f field_31372 GATEWAY_HEIGHT_ABOVE_SURFACE + f J g field_12131 age + f I h field_12130 teleportCooldown + f Ljd; i field_12132 exitPortal + f Z j field_12129 exactTeleport + m (F)F a method_11417 getSpawnPercent + m (Laqu;Lexc;)Z a method_31698 isChunkEmpty + m (Laqu;Ljd;)Lexc; a method_60787 getPortalPosition + m (Laqu;Ljd;Leeh;)V a method_11416 spawnGatewayPortal + m (Laqu;Ljd;Ljm$c;)V a method_46694 method_46694 + m (Ldcc;Ljd;IZ)Ljd; a method_11410 findTallestBlock + m (Ldcw;Lexc;)Ldvi; a method_11414 getChunk + m (Ldcw;Ljd;)Ljd; a method_11419 findExitPosition + m (Ldcw;Ljd;Ldtc;Ldry;)V a method_31700 beamAnimationTick + m (Ldvi;)Ljd; a method_11413 findValidSpawnInChunk + m (Ljd;)V a method_57012 method_57012 + m (Ljd;Z)V a method_11418 setExitPosition + m (Ljz;)Ljava/util/Optional; a method_46695 method_46695 + m ()Z b method_11420 isSpawning + m (F)F b method_11412 getCooldownPercent + m (Laqu;Ljd;)Ljd; b method_31699 findOrCreateValidTeleportPos + m (Ldcw;Ljd;Ldtc;Ldry;)V b method_31702 portalTick + m ()Z c method_11421 isCoolingDown + m (Laqu;Ljd;)Lexc; c method_31701 findExitPortalXZPosTentative + m (Ldcw;Ljd;Ldtc;Ldry;)V c method_11411 triggerCooldown + m ()Lacb; d method_38253 getUpdatePacket + m ()I f method_11415 getParticleAmount + m (Ljd;Ldtc;)V + m ()V +c drz net/minecraft/class_2640 net/minecraft/world/level/block/entity/TheEndPortalBlockEntity + m (Lji;)Z a method_11400 shouldRenderFace + m (Ldqj;Ljd;Ldtc;)V + m (Ljd;Ldtc;)V +c dsa net/minecraft/class_5562 net/minecraft/world/level/block/entity/TickingBlockEntity + m ()V a method_31703 tick + m ()Z b method_31704 isRemoved + m ()Ljd; c method_31705 getPos + m ()Ljava/lang/String; d method_31706 getType +c dsb net/minecraft/class_2646 net/minecraft/world/level/block/entity/TrappedChestBlockEntity + m (Ljd;Ldtc;)V +c dsc net/minecraft/class_8961 net/minecraft/world/level/block/entity/TrialSpawnerBlockEntity + f Lorg/slf4j/Logger; a field_47354 LOGGER + f Ldsf; b field_47355 trialSpawner + m (Lcom/mojang/serialization/DataResult$Error;)V a method_55145 method_55145 + m (Ldsf;)V a method_55147 method_55147 + m (Lub;Luy;)V a method_55148 method_55148 + m ()Lacb; b method_55149 getUpdatePacket + m ()Ldsf; c method_55150 getTrialSpawner + m (Ljd;Ldtc;)V + m ()V +c dsd net/minecraft/class_6090 net/minecraft/world/level/block/entity/package-info +c dse net/minecraft/class_8962 net/minecraft/world/level/block/entity/trialspawner/PlayerDetector + f Ldse; a field_48860 NO_CREATIVE_PLAYERS + f Ldse; b field_48861 INCLUDING_CREATIVE_PLAYERS + f Ldse; c field_47357 SHEEP + m (Laqu;Ldse$a;Ljd;DZ)Ljava/util/List; a method_56720 method_56720 + m (Ldcw;Lexc;Lexc;)Z a method_58696 inLineOfSight + m (Ljd;DLcmx;)Z a method_56721 method_56721 + m (ZLaqu;Ljd;Lcga;)Z a method_58697 method_58697 + m (ZLaqu;Ljd;Lcmx;)Z a method_58698 method_58698 + m (Laqu;Ldse$a;Ljd;DZ)Ljava/util/List; b method_56722 method_56722 + m (Ljd;DLcmx;)Z b method_56723 method_56723 + m (ZLaqu;Ljd;Lcmx;)Z b method_58699 method_58699 + m (Laqu;Ldse$a;Ljd;DZ)Ljava/util/List; c method_55155 method_55155 + m ()V +c dse$a net/minecraft/class_8962$class_9198 net/minecraft/world/level/block/entity/trialspawner/PlayerDetector$EntitySelector + f Ldse$a; a field_48862 SELECT_FROM_LEVEL + m (Laqu;Ldxn;Lewx;Ljava/util/function/Predicate;)Ljava/util/List; a method_56724 getEntities + m (Laqu;Ljava/util/function/Predicate;)Ljava/util/List; a method_56725 getPlayers + m (Lcmx;)Ldse$a; a method_56726 onlySelectPlayer + m (Ljava/util/List;)Ldse$a; a method_56727 onlySelectPlayers + m ()V +c dse$a$1 net/minecraft/class_8962$class_9198$1 net/minecraft/world/level/block/entity/trialspawner/PlayerDetector$EntitySelector$1 + m ()V +c dse$a$2 net/minecraft/class_8962$class_9198$2 net/minecraft/world/level/block/entity/trialspawner/PlayerDetector$EntitySelector$2 + f Ljava/util/List; b field_48863 val$players + m (Ljava/util/List;)V +c dsf net/minecraft/class_8963 net/minecraft/world/level/block/entity/trialspawner/TrialSpawner + f Ljava/lang/String; a field_50177 NORMAL_CONFIG_TAG_NAME + f Ljava/lang/String; b field_50178 OMINOUS_CONFIG_TAG_NAME + f I c field_47358 DETECT_PLAYER_SPAWN_BUFFER + f I d field_50179 DEFAULT_TARGET_COOLDOWN_LENGTH + f I e field_50180 DEFAULT_PLAYER_SCAN_RANGE + f I f field_47359 MAX_MOB_TRACKING_DISTANCE + f I g field_47360 MAX_MOB_TRACKING_DISTANCE_SQR + f F h field_47361 SPAWNING_AMBIENT_SOUND_CHANCE + f Ldsg; i field_50181 normalConfig + f Ldsg; j field_50182 ominousConfig + f Ldsh; k field_47363 data + f I l field_50183 requiredPlayerRange + f I m field_50184 targetCooldownLength + f Ldsf$b; n field_47364 stateAccessor + f Ldse; o field_47365 playerDetector + f Ldse$a; p field_48864 entitySelector + f Z q field_47366 overridePeacefulAndMobSpawnRule + f Z r field_50185 isOminous + m ()Lcom/mojang/serialization/Codec; a method_55156 codec + m (DDDLayw;Lbsr;)Lbsr; a method_55157 method_55157 + m (Laqu;Ljd;)V a method_58700 applyOminous + m (Laqu;Ljd;Lakq;)V a method_55159 ejectReward + m (Laqu;Ljd;Ljava/util/UUID;)Z a method_55160 shouldMobBeUntracked + m (Laqu;Ljd;Z)V a method_55171 tickServer + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55161 method_55161 + m (Ldcw;)Z a method_55162 canSpawnInLevel + m (Ldcw;Ldsi;)V a method_55163 setState + m (Ldcw;Lexc;Lexc;)Z a method_55164 inLineOfSight + m (Ldcw;Ljd;Layw;)V a method_58701 addBecomeOminousParticles + m (Ldcw;Ljd;Layw;ILlk;)V a method_55167 addDetectPlayerParticles + m (Ldcw;Ljd;Layw;Llq;)V a method_55166 addSpawnParticles + m (Ldcw;Ljd;Z)V a method_55165 tickClient + m (Ldse;)V a method_55168 setPlayerDetector + m (Ldsg;Ldsg;Ldsh;Ljava/lang/Integer;Ljava/lang/Integer;)Ldsf; a method_55169 method_55169 + m ()Ldsg; b method_55170 getConfig + m (Laqu;Ljd;)V b method_58702 removeOminous + m (Laqu;Ljd;Ljava/util/UUID;)Z b method_55172 method_55172 + m (Ldcw;Ljd;Layw;)V b method_55173 addEjectItemParticles + m ()Ldsg; c method_58703 getNormalConfig + m (Laqu;Ljd;)Ljava/util/Optional; c method_55158 spawnMob + m ()Ldsg; d method_58704 getOminousConfig + m ()Z e method_58705 isOminous + m ()Ldsh; f method_55174 getData + m ()I g method_58706 getTargetCooldownLength + m ()I h method_58707 getRequiredPlayerRange + m ()Ldsi; i method_55175 getState + m ()V j method_55176 markUpdated + m ()Ldse; k method_55177 getPlayerDetector + m ()Ldse$a; l method_56728 getEntitySelector + m ()V m method_55178 overridePeacefulAndMobSpawnRule + m ()Ldsg; n method_58708 getOminousConfigForSerialization + m (Ldsf$b;Ldse;Ldse$a;)V + m (Ldsg;Ldsg;Ldsh;IILdsf$b;Ldse;Ldse$a;)V + m ()V +c dsf$a net/minecraft/class_8963$class_9474 net/minecraft/world/level/block/entity/trialspawner/TrialSpawner$FlameParticle + f Ldsf$a; a field_50186 NORMAL + f Ldsf$a; b field_50187 OMINOUS + f Llq; c field_50188 particleType + f [Ldsf$a; d field_50189 $VALUES + m ()I a method_58709 encode + m (I)Ldsf$a; a method_58710 decode + m ()[Ldsf$a; b method_58711 $values + m (Ljava/lang/String;ILlq;)V + m ()V +c dsf$b net/minecraft/class_8963$class_8964 net/minecraft/world/level/block/entity/trialspawner/TrialSpawner$StateAccessor + m (Ldcw;Ldsi;)V a method_55146 setState + m ()Ldsi; d method_55151 getState + m ()V f method_55152 markUpdated +c dsg net/minecraft/class_8965 net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerConfig + f Ldsg; a field_47367 DEFAULT + f Lcom/mojang/serialization/Codec; b field_47368 CODEC + f I c comp_2103 spawnRange + f F d comp_2104 totalMobs + f F e comp_2105 simultaneousMobs + f F f comp_2106 totalMobsAddedPerPlayer + f F g comp_2107 simultaneousMobsAddedPerPlayer + f I h comp_2108 ticksBetweenSpawn + f Lbpb; i comp_2110 spawnPotentialsDefinition + f Lbpb; j comp_2111 lootTablesToEject + f Lakq; k comp_2552 itemsToDropWhenOminous + m ()J a method_58712 ticksBetweenItemSpawners + m (I)I a method_55179 calculateTargetTotalMobs + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55180 method_55180 + m ()I b comp_2103 spawnRange + m (I)I b method_55181 calculateTargetSimultaneousMobs + m ()F c comp_2104 totalMobs + m ()F d comp_2105 simultaneousMobs + m ()F e comp_2106 totalMobsAddedPerPlayer + m ()F f comp_2107 simultaneousMobsAddedPerPlayer + m ()I g comp_2108 ticksBetweenSpawn + m ()Lbpb; h comp_2110 spawnPotentialsDefinition + m ()Lbpb; i comp_2111 lootTablesToEject + m ()Lakq; j comp_2552 itemsToDropWhenOminous + m (IFFFFILbpb;Lbpb;Lakq;)V + m ()V +c dsh net/minecraft/class_8966 net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData + f Ljava/lang/String; a field_47369 TAG_SPAWN_DATA + f Lcom/mojang/serialization/MapCodec; b field_47370 MAP_CODEC + f Ljava/util/Set; c field_47371 detectedPlayers + f Ljava/util/Set; d field_47372 currentMobs + f J e field_47373 cooldownEndsAt + f J f field_47374 nextMobSpawnsAt + f I g field_47375 totalMobsSpawned + f Ljava/util/Optional; h field_47376 nextSpawnData + f Ljava/util/Optional; i field_47377 ejectingLootTable + f Lbsr; j field_47379 displayEntity + f D k field_47380 spin + f D l field_47381 oSpin + f Ljava/lang/String; m field_47382 TAG_NEXT_MOB_SPAWNS_AT + f I n field_50190 DELAY_BETWEEN_PLAYER_SCANS + f I o field_50191 TRIAL_OMEN_PER_BAD_OMEN_LEVEL + f Lbpb; p field_50192 dispensing + m ()V a method_55182 reset + m (Laqu;)Z a method_55183 isCooldownFinished + m (Laqu;FI)Z a method_55184 isReadyToOpenShutter + m (Laqu;Lbsr;)V a method_58713 method_58713 + m (Laqu;Ldsf;Ljd;Lcom/mojang/datafixers/util/Pair;)V a method_60788 method_60788 + m (Laqu;Ldsg;I)Z a method_55185 isReadyToSpawnNextMob + m (Laqu;Ldsg;Ljd;)Lbpb; a method_58714 getDispensingItems + m (Laqu;Ljava/util/List;)Ljava/util/Optional; a method_60789 findPlayerWithOminousEffect + m (Laqu;Ljd;)J a method_58715 lowResolutionPosition + m (Laqu;Ljd;Ldsf;)V a method_55186 tryDetectPlayers + m (Lcmx;)V a method_58716 transformBadOmenIntoTrialOmen + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_55187 method_55187 + m (Ldsf;Laqu;)V a method_58717 resetAfterBecomingOminous + m (Ldsf;Layw;)Z a method_55197 hasMobToSpawn + m (Ldsf;Layw;Lbsx;)V a method_55189 setEntityId + m (Ldsf;Ldcw;Ldsi;)Lbsr; a method_55190 getOrCreateDisplayEntity + m (Ldsg;I)Z a method_55192 hasFinishedSpawningAllMobs + m (Ldsh;)Ljava/util/Optional; a method_55193 method_55193 + m (Ldsi;)Lub; a method_55194 getUpdateTag + m (Ljd;)I a method_55195 countAdditionalPlayers + m (Lub;Lddo;)V a method_55196 method_55196 + m ()Z b method_55200 haveAllCurrentMobsDied + m (Laqu;FI)Z b method_55198 isReadyToEjectItems + m (Lcmx;)Lcom/mojang/datafixers/util/Pair; b method_60790 method_60790 + m (Ldsf;Layw;)Lddo; b method_55188 getOrCreateNextSpawnData + m (Ldsh;)Ljava/util/Optional; b method_55199 method_55199 + m ()D c method_55202 getSpin + m (Ldsh;)Ljava/lang/Integer; c method_55201 method_55201 + m ()D d method_55204 getOSpin + m (Ldsh;)Ljava/lang/Long; d method_55203 method_55203 + m ()Ljava/lang/IllegalStateException; e method_55206 method_55206 + m (Ldsh;)Ljava/lang/Long; e method_55205 method_55205 + m (Ldsh;)Ljava/util/Set; f method_55207 method_55207 + m (Ldsh;)Ljava/util/Set; g method_55208 method_55208 + m ()V + m (Ljava/util/Set;Ljava/util/Set;JJILjava/util/Optional;Ljava/util/Optional;)V + m ()V +c dsi net/minecraft/class_8967 net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState + f Ldsi; a field_47383 INACTIVE + f Ldsi; b field_47384 WAITING_FOR_PLAYERS + f Ldsi; c field_47385 ACTIVE + f Ldsi; d field_47386 WAITING_FOR_REWARD_EJECTION + f Ldsi; e field_47387 EJECTING_REWARD + f Ldsi; f field_47388 COOLDOWN + f F g field_47389 DELAY_BEFORE_EJECT_AFTER_KILLING_LAST_MOB + f I h field_47390 TIME_BETWEEN_EACH_EJECTION + f Ljava/lang/String; i field_47391 name + f I j field_47392 lightLevel + f D k field_47393 spinningMobSpeed + f Ldsi$b; l field_47394 particleEmission + f Z m field_47395 isCapableOfSpawning + f [Ldsi; n field_47396 $VALUES + m ()I a method_55209 lightLevel + m (Laqu;Lcuq;Ldsh;Ldsf;Lexc;)V a method_58718 method_58718 + m (Laqu;Ldsh;)Z a method_58719 timeToSpawnItemSpawner + m (Laqu;Ljd;Ldsf;)V a method_58720 spawnOminousOminousItemSpawner + m (Laqu;Ljd;Ldsf;Ldsh;)Ljava/util/Optional; a method_58721 calculatePositionToSpawnSpawner + m (Lbsr;Laqu;)Ljava/util/Optional; a method_58722 calculatePositionAbove + m (Ldcw;Ljd;Z)V a method_55210 emitParticles + m (Ldsf;Laqu;Ljd;Lakq;)V a method_55211 method_55211 + m (Ldsh;Laqu;Ldsg;Ldsf;Ljava/util/UUID;)V a method_55212 method_55212 + m (Ldsh;Ldsf;Lbpd$b;)V a method_55213 method_55213 + m (Ljava/util/List;Ljava/util/Set;Ldsf;Ljd;Laqu;)Lbsr; a method_58725 selectEntityToSpawnItemAbove + m (Ljd;Ldsf;Laqu;)Ldsi; a method_55214 tickAndGetNext + m (Ljd;Ldsf;Lbsr;)Z a method_58723 method_58723 + m (Ljd;Ldsf;Lcmx;)Z a method_58724 method_58724 + m ()D b method_55215 spinningMobSpeed + m ()Z d method_55216 hasSpinningMob + m ()Z e method_55217 isCapableOfSpawning + m ()[Ldsi; f method_55218 $values + m (Ljava/lang/String;ILjava/lang/String;ILdsi$b;DZ)V + m ()V +c dsi$a net/minecraft/class_8967$class_8968 net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState$LightLevel + f I a field_47398 UNLIT + f I b field_47399 HALF_LIT + f I c field_47400 LIT + m ()V +c dsi$b net/minecraft/class_8967$class_8969 net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState$ParticleEmission + f Ldsi$b; a field_47401 NONE + f Ldsi$b; b field_47402 SMALL_FLAMES + f Ldsi$b; c field_47403 FLAMES_AND_SMOKE + f Ldsi$b; d field_47404 SMOKE_INSIDE_AND_TOP_FACE + m (Ldcw;Layw;Ljd;Z)V a method_55219 method_55219 + m (Llq;Lexc;Ldcw;)V a method_55220 addParticle + m (Ldcw;Layw;Ljd;Z)V b method_55221 method_55221 + m (Ldcw;Layw;Ljd;Z)V c method_55222 method_55222 + m (Ldcw;Layw;Ljd;Z)V d method_55223 method_55223 + m ()V +c dsi$c net/minecraft/class_8967$class_8970 net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState$SpinningMob + f D a field_47405 NONE + f D b field_47406 SLOW + f D c field_47407 FAST + m ()V +c dsj net/minecraft/class_8971 net/minecraft/world/level/block/entity/trialspawner/package-info +c dsk net/minecraft/class_9199 net/minecraft/world/level/block/entity/vault/VaultBlockEntity + f Lorg/slf4j/Logger; a field_48865 LOGGER + f Ldsn; b field_48866 serverData + f Ldso; c field_48867 sharedData + f Ldsl; d field_48868 clientData + f Ldsm; e field_48869 config + m (Lcom/mojang/serialization/Codec;Ljava/lang/Object;Ljo$a;)Luy; a method_56729 encode + m (Ldsm;)V a method_56730 setConfig + m (Ljo$a;Lub;)V a method_56734 method_56734 + m ()Ldsn; b method_56731 getServerData + m (Ldcw;Ljd;Ldtc;)V b method_56732 method_56732 + m (Ldsm;)V b method_56733 method_56733 + m ()Ldso; c method_56735 getSharedData + m ()Ldsl; d method_56736 getClientData + m ()Ldsm; f method_56737 getConfig + m (Ljd;Ldtc;)V + m ()V +c dsk$a net/minecraft/class_9199$class_9200 net/minecraft/world/level/block/entity/vault/VaultBlockEntity$Client + f I a field_48870 PARTICLE_TICK_RATE + f F b field_48871 IDLE_PARTICLE_CHANCE + f F c field_48872 AMBIENT_SOUND_CHANCE + f I d field_48873 ACTIVATION_PARTICLE_COUNT + f I e field_48874 DEACTIVATION_PARTICLE_COUNT + m (Ldcw;Lexc;Lcmx;)V a method_56738 emitConnectionParticlesForPlayer + m (Ldcw;Ljd;Ldso;)V a method_56747 playIdleSounds + m (Ldcw;Ljd;Ldso;Llk;)V a method_56740 emitIdleParticles + m (Ldcw;Ljd;Ldtc;Ldsl;Ldso;)V a method_56741 tick + m (Ldcw;Ljd;Ldtc;Ldso;)V a method_56748 emitConnectionParticlesForNearbyPlayers + m (Ldcw;Ljd;Ldtc;Ldso;Llk;)V a method_56742 emitActivationParticles + m (Ldcw;Ljd;Llk;)V a method_56739 emitDeactivationParticles + m (Ldso;)Z a method_56743 shouldDisplayActiveEffects + m (Ljd;Layw;)Lexc; a method_56744 randomPosCenterOfCage + m (Ljd;Ldso;Lcmx;)Z a method_56745 isWithinConnectionRange + m (Ljd;Lji;)Lexc; a method_56746 keyholePos + m (Ljd;Layw;)Lexc; b method_56749 randomPosInsideCage + m ()V +c dsk$b net/minecraft/class_9199$class_9201 net/minecraft/world/level/block/entity/vault/VaultBlockEntity$Server + f I a field_48875 UNLOCKING_DELAY_TICKS + f I b field_48876 DISPLAY_CYCLE_TICK_RATE + f I c field_48877 INSERT_FAIL_SOUND_BUFFER_TICKS + m (JLdsp;)Z a method_56750 shouldCycleDisplayItem + m (Laqu;Ldsm;Ljd;Lcmx;)Ljava/util/List; a method_56751 resolveItemsToEject + m (Laqu;Ldsn;Ljd;Lavo;)V a method_56752 playInsertFailSound + m (Laqu;Ldsp;Ldsm;Ldso;Ljd;)V a method_56753 cycleDisplayItemFromLootTable + m (Laqu;Ldtc;Ljd;Ldsm;Ldsn;Ldso;Ljava/util/List;)V a method_56754 unlock + m (Laqu;Ljd;Lakq;)Lcuq; a method_56755 getRandomDisplayItemFromLootTable + m (Laqu;Ljd;Ldtc;Ldsm;Ldsn;Ldso;)V a method_56756 tick + m (Laqu;Ljd;Ldtc;Ldsm;Ldsn;Ldso;Lcmx;Lcuq;)V a method_56757 tryInsertKey + m (Laqu;Ljd;Ldtc;Ldtc;Ldsm;Ldso;)V a method_56758 setVaultState + m (Ldsm;Lcuq;)Z a method_56759 isValidToInsert + m (Ldsm;Ldsp;)Z a method_56760 canEjectReward + m ()V +c dsl net/minecraft/class_9202 net/minecraft/world/level/block/entity/vault/VaultClientData + f F a field_48878 ROTATION_SPEED + f F b field_48879 currentSpin + f F c field_48880 previousSpin + m ()F a method_56761 currentSpin + m ()F b method_56762 previousSpin + m ()V c method_56763 updateDisplayItemSpin + m ()V +c dsm net/minecraft/class_9203 net/minecraft/world/level/block/entity/vault/VaultConfig + f Ljava/lang/String; a field_48881 TAG_NAME + f Ldsm; b field_48882 DEFAULT + f Lcom/mojang/serialization/Codec; c field_48883 CODEC + f Lakq; d comp_2305 lootTable + f D e comp_2306 activationRange + f D f comp_2307 deactivationRange + f Lcuq; g comp_2308 keyItem + f Ljava/util/Optional; h comp_2309 overrideLootTableToDisplay + f Ldse; i comp_2310 playerDetector + f Ldse$a; j comp_2311 entitySelector + m ()Ldse; a comp_2310 playerDetector + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56764 method_56764 + m ()Lakq; b comp_2305 lootTable + m ()D c comp_2306 activationRange + m ()D d comp_2307 deactivationRange + m ()Lcuq; e comp_2308 keyItem + m ()Ljava/util/Optional; f comp_2309 overrideLootTableToDisplay + m ()Ldse$a; g comp_2311 entitySelector + m ()Lcom/mojang/serialization/DataResult; h method_56765 validate + m ()Ljava/lang/String; i method_56766 method_56766 + m ()V + m (Lakq;DDLcuq;Ljava/util/Optional;)V + m (Lakq;DDLcuq;Ljava/util/Optional;Ldse;Ldse$a;)V + m ()V +c dsn net/minecraft/class_9204 net/minecraft/world/level/block/entity/vault/VaultServerData + f Ljava/lang/String; a field_48884 TAG_NAME + f Lcom/mojang/serialization/Codec; b field_48885 CODEC + f Z c field_48886 isDirty + f I d field_48887 MAX_REWARD_PLAYERS + f Ljava/util/Set; e field_48888 rewardedPlayers + f J f field_48889 stateUpdatingResumesAt + f Ljava/util/List; g field_48890 itemsToEject + f J h field_48891 lastInsertFailTimestamp + f I i field_48892 totalEjectionsNeeded + m ()J a method_56767 getLastInsertFailTimestamp + m (J)V a method_56768 setLastInsertFailTimestamp + m (Lcmx;)Z a method_56769 hasRewardedPlayer + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56770 method_56770 + m (Ldsn;)V a method_56771 set + m (Ljava/util/List;)V a method_56772 setItemsToEject + m ()Ljava/util/Set; b method_56773 getRewardedPlayers + m (J)V b method_56774 pauseStateUpdatingUntil + m (Lcmx;)V b method_56775 addToRewardedPlayers + m (Ldsn;)Ljava/lang/Integer; b method_56776 method_56776 + m ()J c method_56777 stateUpdatingResumesAt + m (Ldsn;)Ljava/util/List; c method_56778 method_56778 + m ()Ljava/util/List; d method_56779 getItemsToEject + m (Ldsn;)Ljava/lang/Long; d method_56780 method_56780 + m ()V e method_56781 markEjectionFinished + m (Ldsn;)Ljava/util/Set; e method_56782 method_56782 + m ()Lcuq; f method_56783 getNextItemToEject + m ()Lcuq; g method_56784 popNextItemToEject + m ()F h method_56785 ejectionProgress + m ()V i method_56786 markChanged + m (Ljava/util/Set;JLjava/util/List;I)V + m ()V + m ()V +c dso net/minecraft/class_9205 net/minecraft/world/level/block/entity/vault/VaultSharedData + f Ljava/lang/String; a field_48893 TAG_NAME + f Lcom/mojang/serialization/Codec; b field_48894 CODEC + f Z c field_48895 isDirty + f Lcuq; d field_48896 displayItem + f Ljava/util/Set; e field_48897 connectedPlayers + f D f field_48898 connectedParticlesRange + m ()Lcuq; a method_56787 getDisplayItem + m (Laqu;Ljd;Ldsn;Ldsm;D)V a method_56788 updateConnectedPlayersWithinRange + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56789 method_56789 + m (Lcuq;)V a method_56790 setDisplayItem + m (Ldsn;Ljava/util/UUID;)Z a method_56791 method_56791 + m (Ldso;)V a method_56792 set + m ()Z b method_56793 hasDisplayItem + m (Ldso;)Ljava/lang/Double; b method_56794 method_56794 + m ()Z c method_56795 hasConnectedPlayers + m (Ldso;)Ljava/util/Set; c method_56796 method_56796 + m ()Ljava/util/Set; d method_56797 getConnectedPlayers + m (Ldso;)Lcuq; d method_56798 method_56798 + m ()D e method_56799 connectedParticlesRange + m ()V f method_56800 markDirty + m (Lcuq;Ljava/util/Set;D)V + m ()V + m ()V +c dsp net/minecraft/class_9206 net/minecraft/world/level/block/entity/vault/VaultState + f Ldsp; a field_48899 INACTIVE + f Ldsp; b field_48900 ACTIVE + f Ldsp; c field_48901 UNLOCKING + f Ldsp; d field_48902 EJECTING + f I e field_48903 UPDATE_CONNECTED_PLAYERS_TICK_RATE + f I f field_48904 DELAY_BETWEEN_EJECTIONS_TICKS + f I g field_48905 DELAY_AFTER_LAST_EJECTION_TICKS + f I h field_48906 DELAY_BEFORE_FIRST_EJECTION_TICKS + f Ljava/lang/String; i field_48907 stateName + f Ldsp$a; j field_48908 lightLevel + f [Ldsp; k field_48909 $VALUES + m ()I a method_56801 lightLevel + m (Laqu;Ljd;Lcuq;F)V a method_56802 ejectResultItem + m (Laqu;Ljd;Ldsm;Ldsn;Ldso;)Ldsp; a method_56803 tickAndGetNext + m (Laqu;Ljd;Ldsm;Ldsn;Ldso;D)Ldsp; a method_56804 updateStateForConnectedPlayers + m (Laqu;Ljd;Ldsm;Ldso;)V a method_56808 onExit + m (Laqu;Ljd;Ldsm;Ldso;Z)V a method_56805 onEnter + m (Laqu;Ljd;Ldsp;Ldsm;Ldso;Z)V a method_56806 onTransition + m ()[Ldsp; b method_56807 $values + m (Ljava/lang/String;ILjava/lang/String;Ldsp$a;)V + m ()V +c dsp$1 net/minecraft/class_9206$1 net/minecraft/world/level/block/entity/vault/VaultState$1 + m (Ljava/lang/String;ILjava/lang/String;Ldsp$a;)V +c dsp$2 net/minecraft/class_9206$2 net/minecraft/world/level/block/entity/vault/VaultState$2 + m (Ljava/lang/String;ILjava/lang/String;Ldsp$a;)V +c dsp$3 net/minecraft/class_9206$3 net/minecraft/world/level/block/entity/vault/VaultState$3 + m (Ljava/lang/String;ILjava/lang/String;Ldsp$a;)V +c dsp$4 net/minecraft/class_9206$4 net/minecraft/world/level/block/entity/vault/VaultState$4 + m (Ljava/lang/String;ILjava/lang/String;Ldsp$a;)V +c dsp$a net/minecraft/class_9206$class_9207 net/minecraft/world/level/block/entity/vault/VaultState$LightLevel + f Ldsp$a; a field_48911 HALF_LIT + f Ldsp$a; b field_48912 LIT + f I c field_48913 value + f [Ldsp$a; d field_48914 $VALUES + m ()[Ldsp$a; a method_56809 $values + m (Ljava/lang/String;II)V + m ()V +c dsq net/minecraft/class_9208 net/minecraft/world/level/block/entity/vault/package-info +c dsr net/minecraft/class_8813 net/minecraft/world/level/block/grower/TreeGrower + f Lcom/mojang/serialization/Codec; a field_46510 CODEC + f Ldsr; b field_46511 OAK + f Ldsr; c field_46512 SPRUCE + f Ldsr; d field_46513 MANGROVE + f Ldsr; e field_46514 AZALEA + f Ldsr; f field_46515 BIRCH + f Ldsr; g field_46516 JUNGLE + f Ldsr; h field_46517 ACACIA + f Ldsr; i field_46518 CHERRY + f Ldsr; j field_46519 DARK_OAK + f Ljava/util/Map; k field_46520 GROWERS + f Ljava/lang/String; l field_46521 name + f F m field_46522 secondaryChance + f Ljava/util/Optional; n field_46523 megaTree + f Ljava/util/Optional; o field_46524 secondaryMegaTree + f Ljava/util/Optional; p field_46525 tree + f Ljava/util/Optional; q field_46526 secondaryTree + f Ljava/util/Optional; r field_46527 flowers + f Ljava/util/Optional; s field_46528 secondaryFlowers + m (Laqu;Lduz;Ljd;Ldtc;Layw;)Z a method_54085 growTree + m (Layw;)Lakq; a method_54086 getConfiguredMegaFeature + m (Layw;Z)Lakq; a method_54087 getConfiguredFeature + m (Ldcx;Ljd;)Z a method_54088 hasFlowers + m (Ldsr;)Ljava/lang/String; a method_54089 method_54089 + m (Ldtc;Ldcc;Ljd;II)Z a method_54090 isTwoByTwoSapling + m (Ljava/lang/String;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m (Ljava/lang/String;FLjava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dss net/minecraft/class_6091 net/minecraft/world/level/block/grower/package-info +c dst net/minecraft/class_6092 net/minecraft/world/level/block/package-info +c dsu net/minecraft/class_2667 net/minecraft/world/level/block/piston/MovingPistonBlock + f Lcom/mojang/serialization/MapCodec; a field_46529 CODEC + f Ldtw; b field_12196 FACING + f Ldua; c field_12197 TYPE + m (Ldcc;Ljd;)Ldsy; a method_11488 getBlockEntity + m (Ljd;Ldtc;Ldtc;Lji;ZZ)Ldqh; a method_11489 newMovingBlockEntity + m (Ldtb$d;)V + m ()V +c dsv net/minecraft/class_2665 net/minecraft/world/level/block/piston/PistonBaseBlock + f Lcom/mojang/serialization/MapCodec; b field_46530 CODEC + f Ldtt; c field_12191 EXTENDED + f I d field_31373 TRIGGER_EXTEND + f I e field_31374 TRIGGER_CONTRACT + f I f field_31375 TRIGGER_DROP + f F g field_31376 PLATFORM_THICKNESS + f Lexv; h field_12188 EAST_AABB + f Lexv; i field_12184 WEST_AABB + f Lexv; j field_12186 SOUTH_AABB + f Lexv; k field_12189 NORTH_AABB + f Lexv; l field_12185 UP_AABB + f Lexv; m field_12190 DOWN_AABB + f Z n field_12187 isSticky + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54091 method_54091 + m (Ldcw;Ljd;Ldtc;)V a method_11483 checkIfExtend + m (Ldcw;Ljd;Lji;Z)Z a method_11481 moveBlocks + m (Lddm;Ljd;Lji;)Z a method_11482 getNeighborSignal + m (Ldsv;)Ljava/lang/Boolean; a method_54092 method_54092 + m (Ldtc;Ldcw;Ljd;Lji;ZLji;)Z a method_11484 isPushable + m (ZLdtb$d;)V + m ()V +c dsv$1 net/minecraft/class_2665$1 net/minecraft/world/level/block/piston/PistonBaseBlock$1 + f [I a field_12193 $SwitchMap$net$minecraft$core$Direction + f [I b field_12192 $SwitchMap$net$minecraft$world$level$material$PushReaction + m ()V +c dsw net/minecraft/class_2671 net/minecraft/world/level/block/piston/PistonHeadBlock + f Lexv; F field_12226 DOWN_ARM_AABB + f Lexv; G field_12221 SOUTH_ARM_AABB + f Lexv; H field_12229 NORTH_ARM_AABB + f Lexv; I field_12218 EAST_ARM_AABB + f Lexv; J field_12223 WEST_ARM_AABB + f Lexv; K field_12231 SHORT_UP_ARM_AABB + f Lexv; L field_12217 SHORT_DOWN_ARM_AABB + f Lexv; M field_12216 SHORT_SOUTH_ARM_AABB + f Lexv; N field_12225 SHORT_NORTH_ARM_AABB + f Lexv; O field_12219 SHORT_EAST_ARM_AABB + f Lexv; P field_12212 SHORT_WEST_ARM_AABB + f [Lexv; Q field_26660 SHAPES_SHORT + f [Lexv; R field_26661 SHAPES_LONG + f Lcom/mojang/serialization/MapCodec; b field_46531 CODEC + f Ldua; c field_12224 TYPE + f Ldtt; d field_12227 SHORT + f F e field_31377 PLATFORM + f Lexv; f field_12222 EAST_AABB + f Lexv; g field_12214 WEST_AABB + f Lexv; h field_12228 SOUTH_AABB + f Lexv; i field_12213 NORTH_AABB + f Lexv; j field_12230 UP_AABB + f Lexv; k field_12220 DOWN_AABB + f F l field_31378 AABB_OFFSET + f F m field_31379 EDGE_MIN + f F n field_31380 EDGE_MAX + f Lexv; o field_12215 UP_ARM_AABB + m (Ldtc;Ldtc;)Z a method_26980 isFittingBase + m (Lji;Z)Lexv; a method_11520 calculateShape + m (Z)[Lexv; a method_31019 makeShapes + m (ZLji;)Lexv; a method_31020 method_31020 + m (I)[Lexv; b method_31021 method_31021 + m (Ldtb$d;)V + m ()V +c dsw$1 net/minecraft/class_2671$1 net/minecraft/world/level/block/piston/PistonHeadBlock$1 + f [I a field_12232 $SwitchMap$net$minecraft$core$Direction + m ()V +c dsx net/minecraft/class_4623 net/minecraft/world/level/block/piston/PistonMath + m (Lewx;Lji;D)Lewx; a method_23362 getMovementArea + m ()V +c dsx$1 net/minecraft/class_4623$1 net/minecraft/world/level/block/piston/PistonMath$1 + f [I a field_21215 $SwitchMap$net$minecraft$core$Direction + m ()V +c dsy net/minecraft/class_2669 net/minecraft/world/level/block/piston/PistonMovingBlockEntity + f D a field_31381 TICK_MOVEMENT + f I b field_31382 TICKS_TO_EXTEND + f D c field_31383 PUSH_OFFSET + f Ldtc; d field_12204 movedState + f Lji; e field_12201 direction + f Z f field_12203 extending + f Z g field_12202 isSourcePiston + f Ljava/lang/ThreadLocal; h field_12205 NOCLIP + f F i field_12207 progress + f F j field_12206 progressO + f J k field_12208 lastTicked + f I l field_26705 deathTicks + m (F)F a method_11499 getProgress + m (Ldcc;Ljd;)Lexv; a method_11512 getCollisionShape + m (Ldcw;Ljd;FLdsy;)V a method_11503 moveCollidedEntities + m (Ldcw;Ljd;Ldtc;Ldsy;)V a method_31707 tick + m (Lewx;Lbsr;Ljd;)Z a method_23671 matchesStickyCritera + m (Lewx;Ljd;Lbsr;)Z a method_23673 method_23673 + m (Lewx;Lji;Lewx;)D a method_11497 getMovement + m (Ljd;Lbsr;Lji;D)V a method_11514 fixEntityWithinPistonBase + m (Ljd;Lewx;Ldsy;)Lewx; a method_11500 moveByPositionAndProgress + m (Lji;Lbsr;DLji;)V a method_23672 moveEntityByPiston + m ()Z b method_11501 isExtending + m (F)F b method_11494 getXOff + m (Ldcw;Ljd;FLdsy;)V b method_23674 moveStuckEntities + m ()Lji; c method_11498 getDirection + m (F)F c method_11511 getYOff + m ()Z d method_11515 isSourcePiston + m (F)F d method_11507 getZOff + m (F)F e method_11504 getExtendedProgress + m ()Lji; f method_11506 getMovementDirection + m ()Ldtc; j method_11495 getMovedState + m ()V k method_11513 finalTick + m ()J l method_11508 getLastTicked + m ()Ldtc; u method_11496 getCollisionRelatedBlockState + m ()Z v method_23364 isStickyForEntities + m ()Lji; w method_21866 method_21866 + m (Ljd;Ldtc;)V + m (Ljd;Ldtc;Ldtc;Lji;ZZ)V + m ()V +c dsy$1 net/minecraft/class_2669$1 net/minecraft/world/level/block/piston/PistonMovingBlockEntity$1 + f [I a field_12210 $SwitchMap$net$minecraft$core$Direction$Axis + f [I b field_21467 $SwitchMap$net$minecraft$core$Direction + m ()V +c dsz net/minecraft/class_2674 net/minecraft/world/level/block/piston/PistonStructureResolver + f I a field_31384 MAX_PUSH_DEPTH + f Ldcw; b field_12249 level + f Ljd; c field_12250 pistonPos + f Z d field_12247 extending + f Ljd; e field_12244 startPos + f Lji; f field_12243 pushDirection + f Ljava/util/List; g field_12245 toPush + f Ljava/util/List; h field_12246 toDestroy + f Lji; i field_12248 pistonDirection + m ()Z a method_11537 resolve + m (II)V a method_11539 reorderListAtCollision + m (Ldtc;)Z a method_23367 isSticky + m (Ldtc;Ldtc;)Z a method_23675 canStickToEachOther + m (Ljd;)Z a method_11538 addBranchingBlocks + m (Ljd;Lji;)Z a method_11540 addBlockLine + m ()Lji; b method_35299 getPushDirection + m ()Ljava/util/List; c method_11541 getToPush + m ()Ljava/util/List; d method_11536 getToDestroy + m (Ldcw;Ljd;Lji;Z)V +c dta net/minecraft/class_6093 net/minecraft/world/level/block/piston/package-info +c dtb net/minecraft/class_4970 net/minecraft/world/level/block/state/BlockBehaviour + f [Lji; aF field_23157 UPDATE_SHAPE_ORDER + f Z aG field_23159 hasCollision + f F aH field_23160 explosionResistance + f Z aI field_23161 isRandomlyTicking + f Ldnm; aJ field_23162 soundType + f F aK field_23163 friction + f F aL field_23164 speedFactor + f F aM field_23165 jumpFactor + f Z aN field_23154 dynamicShape + f Lcpl; aO field_40337 requiredFeatures + f Ldtb$d; aP field_23155 properties + f Lakq; aQ field_23156 drops + m ()Lcom/mojang/serialization/MapCodec; a method_53969 codec + m (Lcuq;Ldtc;Ldcw;Ljd;Lcmx;Lbqq;Lewy;)Lbqt; a method_55765 useItemOn + m (Ldcw;Ldtc;Lewy;Lcnp;)V a method_19286 onProjectileHit + m (Ldtc;Laqu;Ljd;Layw;)V a method_9588 tick + m (Ldtc;Laqu;Ljd;Lcuq;Z)V a method_9565 spawnAfterBreak + m (Ldtc;Lcmx;Ldcc;Ljd;)F a method_9594 getDestroyProgress + m (Ldtc;Lcyd;)Z a method_9616 canBeReplaced + m (Ldtc;Ldcc;Ljd;)Lexv; a method_9584 getInteractionShape + m (Ldtc;Ldcc;Ljd;Lexh;)Lexv; a method_9530 getShape + m (Ldtc;Ldcc;Ljd;Lji;)I a method_9524 getSignal + m (Ldtc;Ldcw;Ljd;)I a method_9572 getAnalogOutputSignal + m (Ldtc;Ldcw;Ljd;II)Z a method_9592 triggerEvent + m (Ldtc;Ldcw;Ljd;Lbsr;)V a method_9548 entityInside + m (Ldtc;Ldcw;Ljd;Lcmx;Lewy;)Lbqr; a method_55766 useWithoutItem + m (Ldtc;Ldcw;Ljd;Ldco;Ljava/util/function/BiConsumer;)V a method_55124 onExplosionHit + m (Ldtc;Ldcw;Ljd;Ldfy;Ljd;Z)V a method_9612 neighborChanged + m (Ldtc;Ldcw;Ljd;Ldtc;Z)V a method_9536 onRemove + m (Ldtc;Ldcx;Ljd;II)V a method_9517 updateIndirectNeighbourShapes + m (Ldtc;Ldcz;Ljd;)Z a method_9558 canSurvive + m (Ldtc;Ldkv;)Ldtc; a method_9569 mirror + m (Ldtc;Ldmm;)Ldtc; a method_9598 rotate + m (Ldtc;Ldtc;Lji;)Z a method_9522 skipRendering + m (Ldtc;Lepd;)Z a method_22358 canBeReplaced + m (Ldtc;Lept;)Z a method_9516 isPathfindable + m (Ldtc;Leru$a;)Ljava/util/List; a method_9560 getDrops + m (Ldtc;Ljd;)J a method_9535 getSeed + m (Ldtc;Lji;Ldtc;Ldcx;Ljd;Ljd;)Ldtc; a method_9559 updateShape + m (Ljava/util/function/BiConsumer;Ljd;Lcuq;)V a method_55224 method_55224 + m (Ljava/util/function/Function;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54093 method_54093 + m (Ldtc;)Ldmf; a_ method_9604 getRenderShape + m (Ldtc;Ldcc;Ljd;)Z a_ method_9579 propagatesSkylightDown + m (Ldtc;Ldcw;Ljd;Lcmx;)V a_ method_9606 attack + m ()F av_ method_32913 getMaxHorizontalOffset + m ()F ax_ method_37247 getMaxVerticalOffset + m (Ldtc;Laqu;Ljd;Layw;)V b method_9514 randomTick + m (Ldtc;Ldcc;Ljd;Lexh;)Lexv; b method_9549 getCollisionShape + m (Ldtc;Ldcc;Ljd;Lji;)I b method_9603 getDirectSignal + m (Ldtc;Ldcw;Ljd;)Lbqv; b method_17454 getMenuProvider + m (Ldtc;Ldcw;Ljd;Ldtc;Z)V b method_9615 onPlace + m (Ljava/util/function/Function;)Lcom/mojang/serialization/MapCodec; b method_54094 simpleCodec + m (Ldtc;)Lepe; b_ method_9545 getFluidState + m (Ldtc;Ldcc;Ljd;)Lexv; b_ method_25959 getBlockSupportShape + m (Ldtc;Ldcc;Ljd;)Z c method_37403 isCollisionShapeFullBlock + m (Ldtc;Ldcc;Ljd;Lexh;)Lexv; c method_26159 getVisualShape + m (Ldtc;)Z c_ method_9498 hasAnalogOutputSignal + m (Ldtc;Ldcc;Ljd;)F d method_9575 getShadeBrightness + m (Ldtc;)Z d_ method_9542 isRandomlyTicking + m (Ldtc;)Z e_ method_9506 isSignalSource + m (Ldtc;Ldcc;Ljd;)Lexv; f method_9571 getOcclusionShape + m (Ldtc;)Z f_ method_9526 useShapeForLightOcclusion + m (Ldtc;Ldcc;Ljd;)I g method_9505 getLightBlock + m (Ldtc;)Ldnm; g_ method_9573 getSoundType + m (Ldtc;Ldcc;Ljd;)Z h method_42326 isOcclusionShapeFullBlock + m ()Ldfy; q method_26160 asBlock + m ()Lcul; r method_8389 asItem + m ()Ldtb$d; t method_54095 properties + m ()Lcom/mojang/serialization/codecs/RecordCodecBuilder; u method_54096 propertiesCodec + m ()Lakq; v method_26162 getLootTable + m ()Lepi; w method_26403 defaultMapColor + m ()F x method_36555 defaultDestroyTime + m (Ldtb$d;)V + m ()V +c dtb$1 net/minecraft/class_4970$1 net/minecraft/world/level/block/state/BlockBehaviour$1 + f [I a field_10659 $SwitchMap$net$minecraft$world$level$pathfinder$PathComputationType + m ()V +c dtb$a net/minecraft/class_4970$class_4971 net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase + f Z A field_40340 isRandomlyTicking + f Ldtb$a$a; a field_23166 cache + f I b field_23167 lightEmission + f Z g field_23168 useShapeForLightOcclusion + f Z h field_23169 isAir + f Z i field_43392 ignitedByLava + f Z j field_44480 liquid + f Z k field_44624 legacySolid + f Lepj; l field_43393 pushReaction + f Lepi; m field_23171 mapColor + f F n field_23172 destroySpeed + f Z o field_25184 requiresCorrectToolForDrops + f Z p field_23173 canOcclude + f Ldtb$f; q field_23174 isRedstoneConductor + f Ldtb$f; r field_23175 isSuffocating + f Ldtb$f; s field_23176 isViewBlocking + f Ldtb$f; t field_23177 hasPostProcess + f Ldtb$f; u field_23178 emissiveRendering + f Ldtb$b; v field_42817 offsetFunction + f Z w field_40338 spawnTerrainParticles + f Ldud; x field_44625 instrument + f Z y field_44626 replaceable + f Lepe; z field_40339 fluidState + m ()Ldud; A method_51364 instrument + m ()Z D method_51365 calculateSolid + m ()V a method_26200 initCache + m (Lakq;)Z a method_54097 is + m (Laqu;Ljd;Layw;)V a method_26192 tick + m (Laqu;Ljd;Lcuq;Z)V a method_26180 spawnAfterBreak + m (Lawu;)Z a method_26164 is + m (Lawu;Ljava/util/function/Predicate;)Z a method_27851 is + m (Lcmx;Ldcc;Ljd;)F a method_26165 getDestroyProgress + m (Lcuq;Ldcw;Lcmx;Lbqq;Lewy;)Lbqt; a method_55780 useItemOn + m (Lcyd;)Z a method_26166 canBeReplaced + m (Ldcc;Ljd;)Z a method_26167 propagatesSkylightDown + m (Ldcc;Ljd;Lbsr;)Z a method_26168 entityCanStandOn + m (Ldcc;Ljd;Lbsr;Lji;)Z a method_26169 entityCanStandOnFace + m (Ldcc;Ljd;Lbsx;)Z a method_26170 isValidSpawn + m (Ldcc;Ljd;Lexh;)Lexv; a method_26172 getShape + m (Ldcc;Ljd;Lji;)Lexv; a method_26173 getFaceOcclusionShape + m (Ldcc;Ljd;Lji;Ldoa;)Z a method_30368 isFaceSturdy + m (Ldcw;Lcmx;Lewy;)Lbqr; a method_55781 useWithoutItem + m (Ldcw;Ldqj;)Ldqi; a method_31708 getTicker + m (Ldcw;Ldtc;Lewy;Lcnp;)V a method_26175 onProjectileHit + m (Ldcw;Ljd;)I a method_26176 getAnalogOutputSignal + m (Ldcw;Ljd;II)Z a method_26177 triggerEvent + m (Ldcw;Ljd;Lbsr;)V a method_26178 entityInside + m (Ldcw;Ljd;Lcmx;)V a method_26179 attack + m (Ldcw;Ljd;Ldco;Ljava/util/function/BiConsumer;)V a method_55225 onExplosionHit + m (Ldcw;Ljd;Ldfy;Ljd;Z)V a method_26181 handleNeighborChanged + m (Ldcw;Ljd;Ldtc;Z)V a method_26182 onPlace + m (Ldcx;Ljd;I)V a method_30101 updateNeighbourShapes + m (Ldcx;Ljd;II)V a method_26183 updateNeighbourShapes + m (Ldcz;Ljd;)Z a method_26184 canSurvive + m (Ldfy;)Z a method_27852 is + m (Ldkv;)Ldtc; a method_26185 mirror + m (Ldmm;)Ldtc; a method_26186 rotate + m (Ldtc;Lji;)Z a method_26187 skipRendering + m (Lepd;)Z a method_26188 canBeReplaced + m (Lept;)Z a method_26171 isPathfindable + m (Leru$a;)Ljava/util/List; a method_26189 getDrops + m (Ljd;)J a method_26190 getSeed + m (Lji;Ldtc;Ldcx;Ljd;Ljd;)Ldtc; a method_26191 updateShape + m (Ljm;)Z a method_53257 is + m (Ljq;)Z a method_40143 is + m ()Ldfy; b method_26204 getBlock + m (Laqu;Ljd;Layw;)V b method_26199 randomTick + m (Ldcc;Ljd;)I b method_26193 getLightBlock + m (Ldcc;Ljd;Lexh;)Lexv; b method_26194 getCollisionShape + m (Ldcc;Ljd;Lji;)I b method_26195 getSignal + m (Ldcw;Ljd;)Lbqv; b method_26196 getMenuProvider + m (Ldcw;Ljd;Ldtc;Z)V b method_26197 onRemove + m (Ldcx;Ljd;I)V b method_30102 updateIndirectNeighbourShapes + m (Ldcx;Ljd;II)V b method_26198 updateIndirectNeighbourShapes + m ()Ljm; c method_41520 getBlockHolder + m (Ldcc;Ljd;)Lexv; c method_26201 getOcclusionShape + m (Ldcc;Ljd;Lexh;)Lexv; c method_26202 getVisualShape + m (Ldcc;Ljd;Lji;)I c method_26203 getDirectSignal + m ()Z d method_51366 blocksMotion + m (Ldcc;Ljd;)Lepi; d method_26205 getMapColor + m (Ldcc;Ljd;Lji;)Z d method_26206 isFaceSturdy + m ()Z e method_51367 isSolid + m (Ldcc;Ljd;)Z e method_26208 emissiveRendering + m ()Z f method_26209 hasLargeCollisionShape + m (Ldcc;Ljd;)F f method_26210 getShadeBrightness + m ()Z g method_26211 useShapeForLightOcclusion + m (Ldcc;Ljd;)Z g method_26212 isRedstoneConductor + m ()I h method_26213 getLightEmission + m (Ldcc;Ljd;)F h method_26214 getDestroySpeed + m ()Z i method_26215 isAir + m (Ldcc;Ljd;)Z i method_26216 isSolidRender + m ()Z j method_50011 ignitedByLava + m (Ldcc;Ljd;)Lexv; j method_26218 getShape + m ()Z k method_51176 liquid + m (Ldcc;Ljd;)Lexv; k method_26220 getCollisionShape + m ()Ldmf; l method_26217 getRenderShape + m (Ldcc;Ljd;)Lexv; l method_26222 getBlockSupportShape + m ()Z m method_26219 isSignalSource + m (Ldcc;Ljd;)Lexv; m method_26224 getInteractionShape + m ()Z n method_26221 hasAnalogOutputSignal + m (Ldcc;Ljd;)Lexc; n method_26226 getOffset + m ()Lepj; o method_26223 getPistonPushReaction + m (Ldcc;Ljd;)Z o method_26228 isSuffocating + m ()Z p method_26225 canOcclude + m (Ldcc;Ljd;)Z p method_26230 isViewBlocking + m ()Z q method_49228 hasOffsetFunction + m (Ldcc;Ljd;)Z q method_26232 hasPostProcess + m ()Z r method_45474 canBeReplaced + m (Ldcc;Ljd;)Z r method_26234 isCollisionShapeFullBlock + m ()Ljava/util/stream/Stream; s method_40144 getTags + m ()Z t method_31709 hasBlockEntity + m ()Lepe; u method_26227 getFluidState + m ()Z v method_26229 isRandomlyTicking + m ()Ldnm; w method_26231 getSoundType + m ()Ldtc; x method_26233 asState + m ()Z y method_29291 requiresCorrectToolForDrops + m ()Z z method_45475 shouldSpawnTerrainParticles + m (Ldfy;Lit/unimi/dsi/fastutil/objects/Reference2ObjectArrayMap;Lcom/mojang/serialization/MapCodec;)V +c dtb$a$a net/minecraft/class_4970$class_4971$class_3752 net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase$Cache + f Z a field_16557 solidRender + f Lexv; b field_19360 collisionShape + f Z c field_17651 largeCollisionShape + f Z d field_20337 isCollisionShapeFullBlock + f [Lji; e field_16559 DIRECTIONS + f I f field_25830 SUPPORT_TYPE_COUNT + f Z g field_16556 propagatesSkylightDown + f I h field_16555 lightBlock + f [Lexv; i field_16560 occlusionShapes + f [Z j field_19429 faceSturdy + m (Lji$a;)Z a method_17901 method_17901 + m (Lji;Ldoa;)Z a method_30369 isFaceSturdy + m (Lji;Ldoa;)I b method_30370 getFaceSupportIndex + m (Ldtc;)V + m ()V +c dtb$b net/minecraft/class_4970$class_8176 net/minecraft/world/level/block/state/BlockBehaviour$OffsetFunction +c dtb$c net/minecraft/class_4970$class_2250 net/minecraft/world/level/block/state/BlockBehaviour$OffsetType + f Ldtb$c; a field_10656 NONE + f Ldtb$c; b field_10657 XZ + f Ldtb$c; c field_10655 XYZ + f [Ldtb$c; d field_10658 $VALUES + m ()[Ldtb$c; a method_36719 $values + m (Ljava/lang/String;I)V + m ()V +c dtb$d net/minecraft/class_4970$class_2251 net/minecraft/world/level/block/state/BlockBehaviour$Properties + f Ldtb$f; A field_23184 isViewBlocking + f Ldtb$f; B field_23185 hasPostProcess + f Ldtb$f; C field_23186 emissiveRendering + f Z D field_10670 dynamicShape + f Lcpl; E field_40342 requiredFeatures + f Ldtb$b; F field_42818 offsetFunction + f Lcom/mojang/serialization/Codec; a field_46532 CODEC + f Ljava/util/function/Function; b field_10662 mapColor + f Z c field_10664 hasCollision + f Ldnm; d field_10665 soundType + f Ljava/util/function/ToIntFunction; e field_10663 lightEmission + f F f field_10660 explosionResistance + f F g field_10669 destroyTime + f Z h field_25185 requiresCorrectToolForDrops + f Z i field_10661 isRandomlyTicking + f F j field_10667 friction + f F k field_23179 speedFactor + f F l field_21209 jumpFactor + f Lakq; m field_10666 drops + f Z n field_20721 canOcclude + f Z o field_23180 isAir + f Z p field_43394 ignitedByLava + f Z q field_44481 liquid + f Z r field_44627 forceSolidOff + f Z s field_44628 forceSolidOn + f Lepj; t field_43395 pushReaction + f Z u field_40341 spawnTerrainParticles + f Ldud; v field_44629 instrument + f Z w field_44630 replaceable + f Ldtb$e; x field_23181 isValidSpawn + f Ldtb$f; y field_23182 isRedstoneConductor + f Ldtb$f; z field_23183 isSuffocating + m ()Ldtb$d; a method_9637 of + m (F)Ldtb$d; a method_9628 friction + m (FF)Ldtb$d; a method_9629 strength + m (Lcti;)Ldtb$d; a method_51517 mapColor + m (Lcti;Ldtc;)Lepi; a method_51518 method_51518 + m (Ldfy;)Ldtb$d; a method_16228 dropsLike + m (Ldnm;)Ldtb$d; a method_9626 sound + m (Ldtb$c;)Ldtb$d; a method_49229 offsetType + m (Ldtb$e;)Ldtb$d; a method_26235 isValidSpawn + m (Ldtb$f;)Ldtb$d; a method_26236 isRedstoneConductor + m (Ldtb;)Ldtb$d; a method_9630 ofFullCopy + m (Ldtc;)I a method_26237 method_26237 + m (Ldtc;Ldcc;Ljd;)Lexc; a method_49230 method_49230 + m (Ldtc;Ldcc;Ljd;Lbsx;)Z a method_26239 method_26239 + m (Ldud;)Ldtb$d; a method_51368 instrument + m (Lepi;)Ldtb$d; a method_31710 mapColor + m (Lepi;Ldtc;)Lepi; a method_51519 method_51519 + m (Lepj;)Ldtb$d; a method_50012 pushReaction + m (Ljava/util/function/Function;)Ldtb$d; a method_51520 mapColor + m (Ljava/util/function/ToIntFunction;)Ldtb$d; a method_9631 lightLevel + m ([Lcpj;)Ldtb$d; a method_45476 requiredFeatures + m ()Ldtb$d; b method_9634 noCollission + m (F)Ldtb$d; b method_23351 speedFactor + m (Ldtb$f;)Ldtb$d; b method_26243 isSuffocating + m (Ldtb;)Ldtb$d; b method_55226 ofLegacyCopy + m (Ldtc;)Lepi; b method_51521 method_51521 + m (Ldtc;Ldcc;Ljd;)Lexc; b method_49231 method_49231 + m ()Ldtb$d; c method_22488 noOcclusion + m (F)Ldtb$d; c method_23352 jumpFactor + m (Ldtb$f;)Ldtb$d; c method_26245 isViewBlocking + m (Ldtc;Ldcc;Ljd;)Z c method_26238 method_26238 + m ()Ldtb$d; d method_9618 instabreak + m (F)Ldtb$d; d method_9632 strength + m (Ldtb$f;)Ldtb$d; d method_26247 hasPostProcess + m (Ldtc;Ldcc;Ljd;)Z d method_26244 method_26244 + m ()Ldtb$d; e method_9640 randomTicks + m (F)Ldtb$d; e method_36557 destroyTime + m (Ldtb$f;)Ldtb$d; e method_26249 emissiveRendering + m (Ldtc;Ldcc;Ljd;)Z e method_26246 method_26246 + m ()Ldtb$d; f method_9624 dynamicShape + m (F)Ldtb$d; f method_36558 explosionResistance + m (Ldtc;Ldcc;Ljd;)Z f method_26248 method_26248 + m ()Ldtb$d; g method_42327 noLootTable + m ()Ldtb$d; h method_50013 ignitedByLava + m ()Ldtb$d; i method_51177 liquid + m ()Ldtb$d; j method_51369 forceSolidOn + m ()Ldtb$d; k method_51370 forceSolidOff + m ()Ldtb$d; l method_26250 air + m ()Ldtb$d; m method_29292 requiresCorrectToolForDrops + m ()Ldtb$d; n method_45477 noTerrainParticles + m ()Ldtb$d; o method_51371 replaceable + m ()Ldtb$d; p method_54098 method_54098 + m ()V + m ()V +c dtb$e net/minecraft/class_4970$class_4972 net/minecraft/world/level/block/state/BlockBehaviour$StateArgumentPredicate +c dtb$f net/minecraft/class_4970$class_4973 net/minecraft/world/level/block/state/BlockBehaviour$StatePredicate +c dtc net/minecraft/class_2680 net/minecraft/world/level/block/state/BlockState + f Lcom/mojang/serialization/Codec; b field_24734 CODEC + m (Ldfy;Lit/unimi/dsi/fastutil/objects/Reference2ObjectArrayMap;Lcom/mojang/serialization/MapCodec;)V + m ()V +c dtd net/minecraft/class_2689 net/minecraft/world/level/block/state/StateDefinition + f Ljava/util/regex/Pattern; a field_12314 NAME_PATTERN + f Ljava/lang/Object; b field_12317 owner + f Lcom/google/common/collect/ImmutableSortedMap; c field_12316 propertiesByName + f Lcom/google/common/collect/ImmutableList; d field_12315 states + m ()Lcom/google/common/collect/ImmutableList; a method_11662 getPossibleStates + m (Lcom/mojang/serialization/MapCodec;Ljava/util/function/Supplier;Ljava/lang/String;Lduf;)Lcom/mojang/serialization/MapCodec; a method_30040 appendPropertyCodec + m (Ldtd$b;Ljava/lang/Object;Lcom/mojang/serialization/MapCodec;Ljava/util/Map;Ljava/util/List;Ljava/util/List;)V a method_28484 method_28484 + m (Lduf;Lcom/mojang/datafixers/util/Pair;)Ldte; a method_30038 method_30038 + m (Lduf;Ldte;)Lcom/mojang/datafixers/util/Pair; a method_30037 method_30037 + m (Lduf;Ljava/util/List;)Ljava/util/stream/Stream; a method_11666 method_11666 + m (Lduf;Ljava/util/function/Supplier;)Lduf$a; a method_30039 method_30039 + m (Ljava/lang/String;)Lduf; a method_11663 getProperty + m (Ljava/util/List;Lduf;Ljava/lang/Comparable;)Ljava/util/List; a method_11661 method_11661 + m (Ljava/util/function/Function;Ljava/lang/Object;)Ldte; a method_28485 method_28485 + m ()Ldte; b method_11664 any + m (Ljava/lang/String;)V b method_38859 method_38859 + m ()Ljava/lang/Object; c method_11660 getOwner + m ()Ljava/util/Collection; d method_11659 getProperties + m (Ljava/util/function/Function;Ljava/lang/Object;Ldtd$b;Ljava/util/Map;)V + m ()V +c dtd$a net/minecraft/class_2689$class_2690 net/minecraft/world/level/block/state/StateDefinition$Builder + f Ljava/lang/Object; a field_12318 owner + f Ljava/util/Map; b field_12319 properties + m (Lduf;)V a method_11669 validateProperty + m (Ljava/util/function/Function;Ldtd$b;)Ldtd; a method_11668 create + m ([Lduf;)Ldtd$a; a method_11667 add + m (Ljava/lang/Object;)V +c dtd$b net/minecraft/class_2689$class_2691 net/minecraft/world/level/block/state/StateDefinition$Factory +c dte net/minecraft/class_2688 net/minecraft/world/level/block/state/StateHolder + f Ljava/util/function/Function; a field_24737 PROPERTY_ENTRY_TO_STRING_FUNCTION + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectArrayMap; b field_24738 values + f Ljava/lang/String; c field_31385 NAME_TAG + f Ljava/lang/String; d field_31386 PROPERTIES_TAG + f Ljava/lang/Object; e field_24739 owner + f Lcom/mojang/serialization/MapCodec; f field_24740 propertiesCodec + f Lcom/google/common/collect/Table; g field_24741 neighbours + m ()Ljava/util/Collection; B method_28501 getProperties + m ()Ljava/util/Map; C method_11656 getValues + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;)Lcom/mojang/serialization/Codec; a method_28494 codec + m (Ldte;)Ljava/lang/Object; a method_28492 method_28492 + m (Ldte;Ljava/util/Optional;)Ldte; a method_38860 method_38860 + m (Lduf;)Ljava/lang/Object; a method_28493 cycle + m (Lduf;Ljava/lang/Comparable;)Ljava/lang/Object; a method_11657 setValue + m (Ljava/util/Collection;Ljava/lang/Object;)Ljava/lang/Object; a method_28495 findNextInCollection + m (Ljava/util/Map;)V a method_28496 populateNeighbours + m (Ljava/util/function/Function;Ljava/lang/Object;)Lcom/mojang/serialization/MapCodec; a method_28497 method_28497 + m (Lduf;)Z b method_28498 hasProperty + m (Lduf;Ljava/lang/Comparable;)Ljava/lang/Object; b method_47968 trySetValue + m (Lduf;)Ljava/lang/Comparable; c method_11654 getValue + m (Lduf;Ljava/lang/Comparable;)Ljava/util/Map; c method_28499 makeNeighbourValues + m (Lduf;)Ljava/util/Optional; d method_28500 getOptionalValue + m (Ljava/lang/Object;Lit/unimi/dsi/fastutil/objects/Reference2ObjectArrayMap;Lcom/mojang/serialization/MapCodec;)V + m ()V +c dte$1 net/minecraft/class_2688$1 net/minecraft/world/level/block/state/StateHolder$1 + m (Lduf;Ljava/lang/Comparable;)Ljava/lang/String; a method_11575 getName + m (Ljava/util/Map$Entry;)Ljava/lang/String; a method_11576 apply + m ()V +c dtf net/minecraft/class_6094 net/minecraft/world/level/block/state/package-info +c dtg net/minecraft/class_2694 net/minecraft/world/level/block/state/pattern/BlockInWorld + f Ldcz; a field_12330 level + f Ljd; b field_12331 pos + f Z c field_12329 loadChunks + f Ldtc; d field_12326 state + f Ldqh; e field_12327 entity + f Z f field_12328 cachedEntity + m ()Ldtc; a method_11681 getState + m (Ljava/util/function/Predicate;)Ljava/util/function/Predicate; a method_11678 hasState + m (Ljava/util/function/Predicate;Ldtg;)Z a method_11682 method_11682 + m ()Ldqh; b method_11680 getEntity + m ()Ldcz; c method_11679 getLevel + m ()Ljd; d method_11683 getPos + m (Ldcz;Ljd;Z)V +c dth net/minecraft/class_2700 net/minecraft/world/level/block/state/pattern/BlockPattern + f [[[Ljava/util/function/Predicate; a field_12358 pattern + f I b field_12357 depth + f I c field_12356 height + f I d field_12355 width + m ()I a method_11712 getDepth + m (Ldcz;Ljd;)Ldth$b; a method_11708 find + m (Ldcz;Ljd;Lji;Lji;)Ldth$b; a method_35300 matches + m (Ldcz;Z)Lcom/google/common/cache/LoadingCache; a method_11709 createLevelCache + m (Ljd;Lji;Lji;III)Ljd; a method_11707 translateAndRotate + m (Ljd;Lji;Lji;Lcom/google/common/cache/LoadingCache;)Ldth$b; a method_11711 matches + m ()I b method_11713 getHeight + m ()I c method_11710 getWidth + m ()[[[Ljava/util/function/Predicate; d method_35301 getPattern + m ([[[Ljava/util/function/Predicate;)V +c dth$a net/minecraft/class_2700$class_2701 net/minecraft/world/level/block/state/pattern/BlockPattern$BlockCacheLoader + f Ldcz; a field_12359 level + f Z b field_12360 loadChunks + m (Ljd;)Ldtg; a method_11714 load + m (Ldcz;Z)V +c dth$b net/minecraft/class_2700$class_2702 net/minecraft/world/level/block/state/pattern/BlockPattern$BlockPatternMatch + f Ljd; a field_12367 frontTopLeft + f Lji; b field_12365 forwards + f Lji; c field_12364 up + f Lcom/google/common/cache/LoadingCache; d field_12366 cache + f I e field_12363 width + f I f field_12362 height + f I g field_12361 depth + m ()Ljd; a method_11715 getFrontTopLeft + m (III)Ldtg; a method_11717 getBlock + m ()Lji; b method_11719 getForwards + m ()Lji; c method_11716 getUp + m ()I d method_35302 getWidth + m ()I e method_35303 getHeight + m ()I f method_35304 getDepth + m (Ljd;Lji;Lji;Lcom/google/common/cache/LoadingCache;III)V +c dti net/minecraft/class_2697 net/minecraft/world/level/block/state/pattern/BlockPatternBuilder + f Lcom/google/common/base/Joiner; a field_12340 COMMA_JOINED + f Ljava/util/List; b field_12344 pattern + f Ljava/util/Map; c field_12343 lookup + f I d field_12342 height + f I e field_12341 width + m ()Ldti; a method_11701 start + m (CLjava/util/function/Predicate;)Ldti; a method_11700 where + m (Ldtg;)Z a method_38861 method_38861 + m ([Ljava/lang/String;)Ldti; a method_11702 aisle + m ()Ldth; b method_11704 build + m ()[[[Ljava/util/function/Predicate; c method_11703 createPattern + m ()V d method_11705 ensureAllCharactersMatched + m ()V + m ()V +c dtj net/minecraft/class_6095 net/minecraft/world/level/block/state/pattern/package-info +c dtk net/minecraft/class_2717 net/minecraft/world/level/block/state/predicate/BlockPredicate + f Ldfy; a field_12423 block + m (Ldfy;)Ldtk; a method_11766 forBlock + m (Ldtc;)Z a method_11765 test + m (Ldfy;)V +c dtl net/minecraft/class_2715 net/minecraft/world/level/block/state/predicate/BlockStatePredicate + f Ljava/util/function/Predicate; a field_12419 ANY + f Ldtd; b field_12420 definition + f Ljava/util/Map; c field_12421 properties + m (Ldfy;)Ldtl; a method_11758 forBlock + m (Ldtc;)Z a method_11760 test + m (Ldtc;Lduf;Ljava/util/function/Predicate;)Z a method_11761 applies + m (Lduf;Ljava/util/function/Predicate;)Ldtl; a method_11762 where + m (Ldtc;)Z b method_11759 method_11759 + m (Ldtd;)V + m ()V +c dtm net/minecraft/class_6096 net/minecraft/world/level/block/state/predicate/package-info +c dtn net/minecraft/class_2738 net/minecraft/world/level/block/state/properties/AttachFace + f Ldtn; a field_12475 FLOOR + f Ldtn; b field_12471 WALL + f Ldtn; c field_12473 CEILING + f Ljava/lang/String; d field_12472 name + f [Ldtn; e field_12474 $VALUES + m ()[Ldtn; a method_36720 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dto net/minecraft/class_2737 net/minecraft/world/level/block/state/properties/BambooLeaves + f Ldto; a field_12469 NONE + f Ldto; b field_12466 SMALL + f Ldto; c field_12468 LARGE + f Ljava/lang/String; d field_12467 name + f [Ldto; e field_12470 $VALUES + m ()[Ldto; a method_36721 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dtp net/minecraft/class_2742 net/minecraft/world/level/block/state/properties/BedPart + f Ldtp; a field_12560 HEAD + f Ldtp; b field_12557 FOOT + f Ljava/lang/String; c field_12559 name + f [Ldtp; d field_12558 $VALUES + m ()[Ldtp; a method_36722 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dtq net/minecraft/class_3867 net/minecraft/world/level/block/state/properties/BellAttachType + f Ldtq; a field_17098 FLOOR + f Ldtq; b field_17099 CEILING + f Ldtq; c field_17100 SINGLE_WALL + f Ldtq; d field_17101 DOUBLE_WALL + f Ljava/lang/String; e field_17102 name + f [Ldtq; f field_17103 $VALUES + m ()[Ldtq; a method_36723 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dtr net/minecraft/class_8177 net/minecraft/world/level/block/state/properties/BlockSetType + f Lavo; A comp_1294 trapdoorOpen + f Lavo; B comp_1295 pressurePlateClickOff + f Lavo; C comp_1296 pressurePlateClickOn + f Lavo; D comp_1297 buttonClickOff + f Lavo; E comp_1298 buttonClickOn + f Ljava/util/Map; F field_46533 TYPES + f Lcom/mojang/serialization/Codec; a field_46534 CODEC + f Ldtr; b field_42819 IRON + f Ldtr; c field_47100 COPPER + f Ldtr; d field_42820 GOLD + f Ldtr; e field_42821 STONE + f Ldtr; f field_42822 POLISHED_BLACKSTONE + f Ldtr; g field_42823 OAK + f Ldtr; h field_42824 SPRUCE + f Ldtr; i field_42825 BIRCH + f Ldtr; j field_42826 ACACIA + f Ldtr; k field_42827 CHERRY + f Ldtr; l field_42828 JUNGLE + f Ldtr; m field_42829 DARK_OAK + f Ldtr; n field_42830 CRIMSON + f Ldtr; o field_42831 WARPED + f Ldtr; p field_42832 MANGROVE + f Ldtr; q field_42833 BAMBOO + f Ljava/lang/String; r comp_1289 name + f Z s comp_1471 canOpenByHand + f Z t comp_2112 canOpenByWindCharge + f Z u comp_1972 canButtonBeActivatedByArrows + f Ldtr$a; v comp_1973 pressurePlateSensitivity + f Ldnm; w comp_1290 soundType + f Lavo; x comp_1291 doorClose + f Lavo; y comp_1292 doorOpen + f Lavo; z comp_1293 trapdoorClose + m ()Ljava/util/stream/Stream; a method_49232 values + m (Ldtr;)Ldtr; a method_49233 register + m ()Ljava/lang/String; b comp_1289 name + m ()Z c comp_1471 canOpenByHand + m ()Z d comp_2112 canOpenByWindCharge + m ()Z e comp_1972 canButtonBeActivatedByArrows + m ()Ldtr$a; f comp_1973 pressurePlateSensitivity + m ()Ldnm; g comp_1290 soundType + m ()Lavo; h comp_1291 doorClose + m ()Lavo; i comp_1292 doorOpen + m ()Lavo; j comp_1293 trapdoorClose + m ()Lavo; k comp_1294 trapdoorOpen + m ()Lavo; l comp_1295 pressurePlateClickOff + m ()Lavo; m comp_1296 pressurePlateClickOn + m ()Lavo; n comp_1297 buttonClickOff + m ()Lavo; o comp_1298 buttonClickOn + m (Ljava/lang/String;)V + m (Ljava/lang/String;ZZZLdtr$a;Ldnm;Lavo;Lavo;Lavo;Lavo;Lavo;Lavo;Lavo;Lavo;)V + m ()V +c dtr$a net/minecraft/class_8177$class_2441 net/minecraft/world/level/block/state/properties/BlockSetType$PressurePlateSensitivity + f Ldtr$a; a field_11361 EVERYTHING + f Ldtr$a; b field_11362 MOBS + f [Ldtr$a; c field_11363 $VALUES + m ()[Ldtr$a; a method_36707 $values + m (Ljava/lang/String;I)V + m ()V +c dts net/minecraft/class_2741 net/minecraft/world/level/block/state/properties/BlockStateProperties + f Ldtt; A field_12522 TRIGGERED + f Ldtt; B field_12539 UNSTABLE + f Ldtt; C field_12508 WATERLOGGED + f Ldtt; D field_28716 BERRIES + f Ldtt; E field_37651 BLOOM + f Ldtt; F field_37652 SHRIEKING + f Ldtt; G field_38423 CAN_SUMMON + f Ldua; H field_12529 HORIZONTAL_AXIS + f Ldua; I field_12496 AXIS + f Ldtt; J field_12519 UP + f Ldtt; K field_12546 DOWN + f Ldtt; L field_12489 NORTH + f Ldtt; M field_12487 EAST + f Ldtt; N field_12540 SOUTH + f Ldtt; O field_12527 WEST + f Ldtw; P field_12525 FACING + f Ldtw; Q field_12545 FACING_HOPPER + f Ldtw; R field_12481 HORIZONTAL_FACING + f Lduc; S field_42835 FLOWER_AMOUNT + f Ldua; T field_23333 ORIENTATION + f Ldua; U field_12555 ATTACH_FACE + f Ldua; V field_17104 BELL_ATTACHMENT + f Ldua; W field_22174 EAST_WALL + f Ldua; X field_22175 NORTH_WALL + f Ldua; Y field_22176 SOUTH_WALL + f Ldua; Z field_22177 WEST_WALL + f Lduc; aA field_12494 DELAY + f I aB field_31402 MAX_DISTANCE + f Lduc; aC field_12541 DISTANCE + f Lduc; aD field_12509 EGGS + f Lduc; aE field_12530 HATCH + f Lduc; aF field_12536 LAYERS + f I aG field_31387 MIN_LEVEL + f I aH field_31388 MIN_LEVEL_CAULDRON + f I aI field_31389 MAX_LEVEL_3 + f I aJ field_31390 MAX_LEVEL_8 + f Lduc; aK field_12513 LEVEL_CAULDRON + f Lduc; aL field_17586 LEVEL_COMPOSTER + f Ldtt; a field_12493 ATTACHED + f Lduc; aM field_12490 LEVEL_FLOWING + f Lduc; aN field_20432 LEVEL_HONEY + f I aO field_33723 MAX_LEVEL_15 + f Lduc; aP field_12538 LEVEL + f Lduc; aQ field_12510 MOISTURE + f Lduc; aR field_12524 NOTE + f Lduc; aS field_12543 PICKLES + f Lduc; aT field_12511 POWER + f Lduc; aU field_12549 STAGE + f I aV field_31391 STABILITY_MAX_DISTANCE + f Lduc; aW field_16503 STABILITY_DISTANCE + f I aX field_31392 MIN_RESPAWN_ANCHOR_CHARGES + f I aY field_31393 MAX_RESPAWN_ANCHOR_CHARGES + f Lduc; aZ field_23187 RESPAWN_ANCHOR_CHARGES + f Ldua; aa field_12523 EAST_REDSTONE + f Ldua; ab field_12495 NORTH_REDSTONE + f Ldua; ac field_12551 SOUTH_REDSTONE + f Ldua; ad field_12504 WEST_REDSTONE + f Ldua; ae field_12533 DOUBLE_BLOCK_HALF + f Ldua; af field_12518 HALF + f Ldua; ag field_12507 RAIL_SHAPE + f Ldua; ah field_12542 RAIL_SHAPE_STRAIGHT + f I ai field_31395 MAX_AGE_1 + f I aj field_31396 MAX_AGE_2 + f I ak field_31397 MAX_AGE_3 + f I al field_37653 MAX_AGE_4 + f I am field_31398 MAX_AGE_5 + f I an field_31399 MAX_AGE_7 + f I ao field_31400 MAX_AGE_15 + f I ap field_31401 MAX_AGE_25 + f Lduc; aq field_12521 AGE_1 + f Lduc; ar field_12556 AGE_2 + f Lduc; as field_12497 AGE_3 + f Lduc; at field_37654 AGE_4 + f Lduc; au field_12482 AGE_5 + f Lduc; av field_12550 AGE_7 + f Lduc; aw field_12498 AGE_15 + f Lduc; ax field_12517 AGE_25 + f Lduc; ay field_12505 BITES + f Lduc; az field_27220 CANDLES + f Ldtt; bA field_50193 OMINOUS + f Ldtt; b field_16562 BOTTOM + f Lduc; ba field_12532 ROTATION_16 + f Ldua; bb field_12483 BED_PART + f Ldua; bc field_12506 CHEST_TYPE + f Ldua; bd field_12534 MODE_COMPARATOR + f Ldua; be field_12520 DOOR_HINGE + f Ldua; bf field_12499 NOTEBLOCK_INSTRUMENT + f Ldua; bg field_12492 PISTON_TYPE + f Ldua; bh field_12485 SLAB_TYPE + f Ldua; bi field_12503 STAIRS_SHAPE + f Ldua; bj field_12547 STRUCTUREBLOCK_MODE + f Ldua; bk field_12516 BAMBOO_LEAVES + f Ldua; bl field_28717 TILT + f Ldtw; bm field_28062 VERTICAL_DIRECTION + f Ldua; bn field_28063 DRIPSTONE_THICKNESS + f Ldua; bo field_28120 SCULK_SENSOR_PHASE + f Ldtt; bp field_41317 CHISELED_BOOKSHELF_SLOT_0_OCCUPIED + f Ldtt; bq field_41318 CHISELED_BOOKSHELF_SLOT_1_OCCUPIED + f Ldtt; br field_41319 CHISELED_BOOKSHELF_SLOT_2_OCCUPIED + f Ldtt; bs field_41320 CHISELED_BOOKSHELF_SLOT_3_OCCUPIED + f Ldtt; bt field_41321 CHISELED_BOOKSHELF_SLOT_4_OCCUPIED + f Ldtt; bu field_41322 CHISELED_BOOKSHELF_SLOT_5_OCCUPIED + f Lduc; bv field_42836 DUSTED + f Ldtt; bw field_43307 CRACKED + f Ldtt; bx field_46822 CRAFTING + f Ldua; by field_47408 TRIAL_SPAWNER_STATE + f Ldua; bz field_48915 VAULT_STATE + f Ldtt; c field_12486 CONDITIONAL + f Ldtt; d field_12553 DISARMED + f Ldtt; e field_12526 DRAG + f Ldtt; f field_12515 ENABLED + f Ldtt; g field_12552 EXTENDED + f Ldtt; h field_12488 EYE + f Ldtt; i field_12480 FALLING + f Ldtt; j field_16561 HANGING + f Ldtt; k field_12554 HAS_BOTTLE_0 + f Ldtt; l field_12500 HAS_BOTTLE_1 + f Ldtt; m field_12531 HAS_BOTTLE_2 + f Ldtt; n field_12544 HAS_RECORD + f Ldtt; o field_17393 HAS_BOOK + f Ldtt; p field_12501 INVERTED + f Ldtt; q field_12491 IN_WALL + f Ldtt; r field_12548 LIT + f Ldtt; s field_12502 LOCKED + f Ldtt; t field_12528 OCCUPIED + f Ldtt; u field_12537 OPEN + f Ldtt; v field_12514 PERSISTENT + f Ldtt; w field_12484 POWERED + f Ldtt; x field_12535 SHORT + f Ldtt; y field_17394 SIGNAL_FIRE + f Ldtt; z field_12512 SNOWY + m (Ldug;)Z a method_11813 method_11813 + m (Lji;)Z a method_11814 method_11814 + m ()V + m ()V +c dtt net/minecraft/class_2746 net/minecraft/world/level/block/state/properties/BooleanProperty + f Lcom/google/common/collect/ImmutableSet; a field_12575 values + m (Ljava/lang/Boolean;)Ljava/lang/String; a method_11826 getName + m (Ljava/lang/String;)Ldtt; a method_11825 create + m (Ljava/lang/String;)V +c dtu net/minecraft/class_2745 net/minecraft/world/level/block/state/properties/ChestType + f Ldtu; a field_12569 SINGLE + f Ldtu; b field_12574 LEFT + f Ldtu; c field_12571 RIGHT + f Ljava/lang/String; d field_12572 name + f [Ldtu; e field_12573 $VALUES + m ()Ldtu; a method_11824 getOpposite + m ()[Ldtu; b method_36724 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dtv net/minecraft/class_2747 net/minecraft/world/level/block/state/properties/ComparatorMode + f Ldtv; a field_12576 COMPARE + f Ldtv; b field_12578 SUBTRACT + f Ljava/lang/String; c field_12577 name + f [Ldtv; d field_12579 $VALUES + m ()[Ldtv; a method_36725 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dtw net/minecraft/class_2753 net/minecraft/world/level/block/state/properties/DirectionProperty + m (Ljava/lang/String;)Ldtw; a method_35305 create + m (Ljava/lang/String;Ljava/util/Collection;)Ldtw; a method_11843 create + m (Ljava/lang/String;Ljava/util/function/Predicate;)Ldtw; a method_11844 create + m (Ljava/lang/String;[Lji;)Ldtw; a method_11845 create + m (Lji;)Z a method_38862 method_38862 + m (Ljava/lang/String;Ljava/util/Collection;)V +c dtx net/minecraft/class_2750 net/minecraft/world/level/block/state/properties/DoorHingeSide + f Ldtx; a field_12588 LEFT + f Ldtx; b field_12586 RIGHT + f [Ldtx; c field_12587 $VALUES + m ()[Ldtx; a method_36726 $values + m (Ljava/lang/String;I)V + m ()V +c dty net/minecraft/class_2756 net/minecraft/world/level/block/state/properties/DoubleBlockHalf + f Ldty; a field_12609 UPPER + f Ldty; b field_12607 LOWER + f Lji; c field_47101 directionToOther + f [Ldty; d field_12608 $VALUES + m ()Lji; a method_54779 getDirectionToOther + m ()Ldty; b method_54780 getOtherHalf + m ()[Ldty; d method_36727 $values + m (Ljava/lang/String;ILji;)V + m ()V +c dtz net/minecraft/class_5691 net/minecraft/world/level/block/state/properties/DripstoneThickness + f Ldtz; a field_28064 TIP_MERGE + f Ldtz; b field_28065 TIP + f Ldtz; c field_28066 FRUSTUM + f Ldtz; d field_28067 MIDDLE + f Ldtz; e field_28068 BASE + f Ljava/lang/String; f field_28069 name + f [Ldtz; g field_28070 $VALUES + m ()[Ldtz; a method_36728 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dua net/minecraft/class_2754 net/minecraft/world/level/block/state/properties/EnumProperty + f Lcom/google/common/collect/ImmutableSet; a field_12595 values + f Ljava/util/Map; b field_12596 names + m (Ljava/lang/Enum;)Ljava/lang/String; a method_11846 getName + m (Ljava/lang/String;Ljava/lang/Class;)Ldua; a method_11850 create + m (Ljava/lang/String;Ljava/lang/Class;Ljava/util/Collection;)Ldua; a method_11847 create + m (Ljava/lang/String;Ljava/lang/Class;Ljava/util/function/Predicate;)Ldua; a method_11848 create + m (Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Enum;)Ldua; a method_11849 create + m (Ljava/lang/Enum;)Z b method_38863 method_38863 + m (Ljava/lang/String;Ljava/lang/Class;Ljava/util/Collection;)V +c dub net/minecraft/class_2760 net/minecraft/world/level/block/state/properties/Half + f Ldub; a field_12619 TOP + f Ldub; b field_12617 BOTTOM + f Ljava/lang/String; c field_12616 name + f [Ldub; d field_12618 $VALUES + m ()[Ldub; a method_36729 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c duc net/minecraft/class_2758 net/minecraft/world/level/block/state/properties/IntegerProperty + f Lcom/google/common/collect/ImmutableSet; a field_12614 values + f I b field_37655 min + f I c field_37656 max + m (Ljava/lang/Integer;)Ljava/lang/String; a method_11868 getName + m (Ljava/lang/String;II)Lduc; a method_11867 create + m (Ljava/lang/String;II)V +c dud net/minecraft/class_2766 net/minecraft/world/level/block/state/properties/NoteBlockInstrument + f [Ldud; A field_12652 $VALUES + f Ldud; a field_12648 HARP + f Ldud; b field_12653 BASEDRUM + f Ldud; c field_12643 SNARE + f Ldud; d field_12645 HAT + f Ldud; e field_12651 BASS + f Ldud; f field_12650 FLUTE + f Ldud; g field_12644 BELL + f Ldud; h field_12654 GUITAR + f Ldud; i field_12647 CHIME + f Ldud; j field_12655 XYLOPHONE + f Ldud; k field_18284 IRON_XYLOPHONE + f Ldud; l field_18285 COW_BELL + f Ldud; m field_18286 DIDGERIDOO + f Ldud; n field_18287 BIT + f Ldud; o field_18288 BANJO + f Ldud; p field_18289 PLING + f Ldud; q field_41324 ZOMBIE + f Ldud; r field_41325 SKELETON + f Ldud; s field_41326 CREEPER + f Ldud; t field_41327 DRAGON + f Ldud; u field_41328 WITHER_SKELETON + f Ldud; v field_41329 PIGLIN + f Ldud; w field_41604 CUSTOM_HEAD + f Ljava/lang/String; x field_12646 name + f Ljm; y field_12649 soundEvent + f Ldud$a; z field_41605 type + m ()Ljm; a method_11886 getSoundEvent + m ()Z b method_47889 isTunable + m ()Z d method_47890 hasCustomSound + m ()Z e method_51372 worksAboveNoteBlock + m ()[Ldud; f method_36730 $values + m (Ljava/lang/String;ILjava/lang/String;Ljm;Ldud$a;)V + m ()V +c dud$a net/minecraft/class_2766$class_7994 net/minecraft/world/level/block/state/properties/NoteBlockInstrument$Type + f Ldud$a; a field_41606 BASE_BLOCK + f Ldud$a; b field_41607 MOB_HEAD + f Ldud$a; c field_41608 CUSTOM + f [Ldud$a; d field_41609 $VALUES + m ()[Ldud$a; a method_47892 $values + m (Ljava/lang/String;I)V + m ()V +c due net/minecraft/class_2764 net/minecraft/world/level/block/state/properties/PistonType + f Ldue; a field_12637 DEFAULT + f Ldue; b field_12634 STICKY + f Ljava/lang/String; c field_12635 name + f [Ldue; d field_12636 $VALUES + m ()[Ldue; a method_36731 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c duf net/minecraft/class_2769 net/minecraft/world/level/block/state/properties/Property + f Ljava/lang/Class; a field_24742 clazz + f Ljava/lang/String; b field_24743 name + f Ljava/lang/Integer; c field_24744 hashCode + f Lcom/mojang/serialization/Codec; d field_24745 codec + f Lcom/mojang/serialization/Codec; e field_25670 valueCodec + m ()Ljava/util/Collection; a method_11898 getPossibleValues + m (Lcom/mojang/serialization/DynamicOps;Ldte;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_35307 parseValue + m (Ldte;)Lduf$a; a method_30041 value + m (Ldte;Ljava/lang/Comparable;)Ldte; a method_35306 method_35306 + m (Ljava/lang/Comparable;)Ljava/lang/String; a method_11901 getName + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_28504 method_28504 + m ()I b method_11799 generateHashCode + m (Ljava/lang/Comparable;)Lduf$a; b method_30042 value + m (Ljava/lang/String;)Ljava/util/Optional; b method_11900 getValue + m ()Ljava/util/stream/Stream; c method_30043 getAllValues + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; c method_28505 method_28505 + m ()Lcom/mojang/serialization/Codec; d method_35308 codec + m (Ljava/lang/String;)Ljava/lang/String; d method_49524 method_49524 + m ()Lcom/mojang/serialization/Codec; e method_30044 valueCodec + m ()Ljava/lang/String; f method_11899 getName + m ()Ljava/lang/Class; g method_11902 getValueClass + m (Ljava/lang/String;Ljava/lang/Class;)V +c duf$a net/minecraft/class_2769$class_4933 net/minecraft/world/level/block/state/properties/Property$Value + f Lduf; a comp_70 property + f Ljava/lang/Comparable; b comp_71 value + m ()Lduf; a comp_70 property + m ()Ljava/lang/Comparable; b comp_71 value + m (Lduf;Ljava/lang/Comparable;)V +c dug net/minecraft/class_2768 net/minecraft/world/level/block/state/properties/RailShape + f Ldug; a field_12665 NORTH_SOUTH + f Ldug; b field_12674 EAST_WEST + f Ldug; c field_12667 ASCENDING_EAST + f Ldug; d field_12666 ASCENDING_WEST + f Ldug; e field_12670 ASCENDING_NORTH + f Ldug; f field_12668 ASCENDING_SOUTH + f Ldug; g field_12664 SOUTH_EAST + f Ldug; h field_12671 SOUTH_WEST + f Ldug; i field_12672 NORTH_WEST + f Ldug; j field_12663 NORTH_EAST + f Ljava/lang/String; k field_12669 name + f [Ldug; l field_12673 $VALUES + m ()Ljava/lang/String; a method_35309 getName + m ()Z b method_11897 isAscending + m ()[Ldug; d method_36732 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c duh net/minecraft/class_2773 net/minecraft/world/level/block/state/properties/RedstoneSide + f Lduh; a field_12686 UP + f Lduh; b field_12689 SIDE + f Lduh; c field_12687 NONE + f Ljava/lang/String; d field_12685 name + f [Lduh; e field_12688 $VALUES + m ()Z a method_27855 isConnected + m ()[Lduh; b method_36733 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dui net/minecraft/class_7718 net/minecraft/world/level/block/state/properties/RotationSegment + f Layy; a field_41768 SEGMENTED_ANGLE16 + f I b field_40345 MAX_SEGMENT_INDEX + f I c field_40346 NORTH_0 + f I d field_40347 EAST_90 + f I e field_40348 SOUTH_180 + f I f field_40349 WEST_270 + m ()I a method_45478 getMaxSegmentIndex + m (F)I a method_45479 convertToSegment + m (I)Ljava/util/Optional; a method_45480 convertToDirection + m (Lji;)I a method_45481 convertToSegment + m (I)F b method_45482 convertToDegrees + m ()V + m ()V +c duj net/minecraft/class_5705 net/minecraft/world/level/block/state/properties/SculkSensorPhase + f Lduj; a field_28121 INACTIVE + f Lduj; b field_28122 ACTIVE + f Lduj; c field_44631 COOLDOWN + f Ljava/lang/String; d field_28124 name + f [Lduj; e field_28125 $VALUES + m ()[Lduj; a method_36734 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c duk net/minecraft/class_2771 net/minecraft/world/level/block/state/properties/SlabType + f Lduk; a field_12679 TOP + f Lduk; b field_12681 BOTTOM + f Lduk; c field_12682 DOUBLE + f Ljava/lang/String; d field_12678 name + f [Lduk; e field_12680 $VALUES + m ()[Lduk; a method_36735 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dul net/minecraft/class_2778 net/minecraft/world/level/block/state/properties/StairsShape + f Ldul; a field_12710 STRAIGHT + f Ldul; b field_12712 INNER_LEFT + f Ldul; c field_12713 INNER_RIGHT + f Ldul; d field_12708 OUTER_LEFT + f Ldul; e field_12709 OUTER_RIGHT + f Ljava/lang/String; f field_12714 name + f [Ldul; g field_12711 $VALUES + m ()[Ldul; a method_36736 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dum net/minecraft/class_2776 net/minecraft/world/level/block/state/properties/StructureMode + f Ldum; a field_12695 SAVE + f Ldum; b field_12697 LOAD + f Ldum; c field_12699 CORNER + f Ldum; d field_12696 DATA + f Ljava/lang/String; e field_12698 name + f Lwz; f field_26444 displayName + f [Ldum; g field_12700 $VALUES + m ()Lwz; a method_30844 getDisplayName + m ()[Ldum; b method_36737 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dun net/minecraft/class_5816 net/minecraft/world/level/block/state/properties/Tilt + f Ldun; a field_28718 NONE + f Ldun; b field_28719 UNSTABLE + f Ldun; c field_28720 PARTIAL + f Ldun; d field_28721 FULL + f Ljava/lang/String; e field_28722 name + f Z f field_28723 causesVibration + f [Ldun; g field_28724 $VALUES + m ()Z a method_33636 causesVibration + m ()[Ldun; b method_36738 $values + m (Ljava/lang/String;ILjava/lang/String;Z)V + m ()V +c duo net/minecraft/class_4778 net/minecraft/world/level/block/state/properties/WallSide + f Lduo; a field_22178 NONE + f Lduo; b field_22179 LOW + f Lduo; c field_22180 TALL + f Ljava/lang/String; d field_22181 name + f [Lduo; e field_22182 $VALUES + m ()[Lduo; a method_36739 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dup net/minecraft/class_4719 net/minecraft/world/level/block/state/properties/WoodType + f Lcom/mojang/serialization/Codec; a field_46535 CODEC + f Ldup; b field_21676 OAK + f Ldup; c field_21677 SPRUCE + f Ldup; d field_21678 BIRCH + f Ldup; e field_21679 ACACIA + f Ldup; f field_42837 CHERRY + f Ldup; g field_21680 JUNGLE + f Ldup; h field_21681 DARK_OAK + f Ldup; i field_22183 CRIMSON + f Ldup; j field_22184 WARPED + f Ldup; k field_37657 MANGROVE + f Ldup; l field_40350 BAMBOO + f Ljava/lang/String; m comp_1299 name + f Ldtr; n comp_1300 setType + f Ldnm; o comp_1301 soundType + f Ldnm; p comp_1302 hangingSignSoundType + f Lavo; q comp_1303 fenceGateClose + f Lavo; r comp_1304 fenceGateOpen + f Ljava/util/Map; s field_46536 TYPES + m ()Ljava/util/stream/Stream; a method_24026 values + m (Ldup;)Ldup; a method_24027 register + m ()Ljava/lang/String; b comp_1299 name + m ()Ldtr; c comp_1300 setType + m ()Ldnm; d comp_1301 soundType + m ()Ldnm; e comp_1302 hangingSignSoundType + m ()Lavo; f comp_1303 fenceGateClose + m ()Lavo; g comp_1304 fenceGateOpen + m (Ljava/lang/String;Ldtr;)V + m (Ljava/lang/String;Ldtr;Ldnm;Ldnm;Lavo;Lavo;)V + m ()V +c duq net/minecraft/class_6097 net/minecraft/world/level/block/state/properties/package-info +c dur net/minecraft/class_2780 net/minecraft/world/level/border/BorderChangeListener + m (Ldut;D)V a method_11934 onBorderSizeSet + m (Ldut;DD)V a method_11930 onBorderCenterSet + m (Ldut;DDJ)V a method_11931 onBorderSizeLerping + m (Ldut;I)V a method_11932 onBorderSetWarningTime + m (Ldut;D)V b method_11929 onBorderSetDamagePerBlock + m (Ldut;I)V b method_11933 onBorderSetWarningBlocks + m (Ldut;D)V c method_11935 onBorderSetDamageSafeZOne +c dur$a net/minecraft/class_2780$class_3976 net/minecraft/world/level/border/BorderChangeListener$DelegateBorderChangeListener + f Ldut; a field_17652 worldBorder + m (Ldut;)V +c dus net/minecraft/class_2789 net/minecraft/world/level/border/BorderStatus + f Ldus; a field_12754 GROWING + f Ldus; b field_12756 SHRINKING + f Ldus; c field_12753 STATIONARY + f I d field_12755 color + f [Ldus; e field_12752 $VALUES + m ()I a method_11999 getColor + m ()[Ldus; b method_36740 $values + m (Ljava/lang/String;II)V + m ()V +c dut net/minecraft/class_2784 net/minecraft/world/level/border/WorldBorder + f Ljava/util/List; a field_12730 listeners + f D b field_33643 MAX_SIZE + f D c field_36191 MAX_CENTER_COORDINATE + f Ldut$c; d field_24122 DEFAULT_SETTINGS + f D e field_12733 damagePerBlock + f D f field_12731 damageSafeZone + f I g field_12735 warningTime + f I h field_12734 warningBlocks + f D i field_12738 centerX + f D j field_12737 centerZ + f I k field_12732 absoluteMaxSize + f Ldut$a; l field_12736 extent + m ()D a method_11964 getCenterX + m (D)V a method_11969 setSize + m (DD)Z a method_35317 isWithinBounds + m (DDD)Z a method_39458 isWithinBounds + m (DDDD)Z a method_61114 isWithinBounds + m (DDJ)V a method_11957 lerpSizeBetween + m (I)V a method_11973 setAbsoluteMaxSize + m (Lbsr;)D a method_11979 getDistanceToBorder + m (Lbsr;Lewx;)Z a method_39459 isInsideCloseToBorder + m (Ldcd;)Z a method_11951 isWithinBounds + m (Ldur;)V a method_11983 addListener + m (Ldut$c;)V a method_17905 applySettings + m (Lewx;)Z a method_11966 isWithinBounds + m (Lexc;)Z a method_61115 isWithinBounds + m (Ljd;)Z a method_11952 isWithinBounds + m ()D b method_11980 getCenterZ + m (D)V b method_11981 setDamageSafeZone + m (DD)D b method_11961 getDistanceToBorder + m (DDD)Ljd; b method_39538 clampToBounds + m (I)V b method_11975 setWarningTime + m (Ldur;)V b method_35318 removeListener + m (Lexc;)Ljd; b method_61116 clampToBounds + m (Ljd;)Ljd; b method_61117 clampToBounds + m ()Lexv; c method_17903 getCollisionShape + m (D)V c method_11955 setDamagePerBlock + m (DD)V c method_11978 setCenter + m (I)V c method_11967 setWarningBlocks + m ()Ldus; d method_11968 getStatus + m ()D e method_11976 getMinX + m ()D f method_11958 getMinZ + m ()D g method_11963 getMaxX + m ()D h method_11977 getMaxZ + m ()D i method_11965 getSize + m ()J j method_11962 getLerpRemainingTime + m ()D k method_11954 getLerpTarget + m ()Ljava/util/List; l method_11970 getListeners + m ()I m method_11959 getAbsoluteMaxSize + m ()D n method_11971 getDamageSafeZone + m ()D o method_11953 getDamagePerBlock + m ()D p method_11974 getLerpSpeed + m ()I q method_11956 getWarningTime + m ()I r method_11972 getWarningBlocks + m ()V s method_11982 tick + m ()Ldut$c; t method_27355 createSettings + m ()V + m ()V +c dut$a net/minecraft/class_2784$class_2785 net/minecraft/world/level/border/WorldBorder$BorderExtent + m ()D a method_11994 getMinX + m ()D b method_11991 getMaxX + m ()D c method_11992 getMinZ + m ()D d method_11985 getMaxZ + m ()D e method_11984 getSize + m ()D f method_11987 getLerpSpeed + m ()J g method_11993 getLerpRemainingTime + m ()D h method_11988 getLerpTarget + m ()Ldus; i method_11995 getStatus + m ()V j method_11989 onAbsoluteMaxSizeChange + m ()V k method_11990 onCenterChange + m ()Ldut$a; l method_11986 update + m ()Lexv; m method_17906 getCollisionShape +c dut$b net/minecraft/class_2784$class_2786 net/minecraft/world/level/border/WorldBorder$MovingBorderExtent + f Ldut; a field_12743 field_12743 + f D b field_12740 from + f D c field_12739 to + f J d field_12742 lerpEnd + f J e field_12741 lerpBegin + f D f field_12744 lerpDuration + m (Ldut;DDJ)V +c dut$c net/minecraft/class_2784$class_5200 net/minecraft/world/level/border/WorldBorder$Settings + f D a field_24123 centerX + f D b field_24124 centerZ + f D c field_24125 damagePerBlock + f D d field_24126 safeZone + f I e field_24127 warningBlocks + f I f field_24128 warningTime + f D g field_24129 size + f J h field_24130 sizeLerpTime + f D i field_24131 sizeLerpTarget + m ()D a method_27356 getCenterX + m (Lcom/mojang/serialization/DynamicLike;Ldut$c;)Ldut$c; a method_27358 read + m (Lub;)V a method_27357 write + m ()D b method_27359 getCenterZ + m ()D c method_27360 getDamagePerBlock + m ()D d method_27361 getSafeZone + m ()I e method_27362 getWarningBlocks + m ()I f method_27363 getWarningTime + m ()D g method_27364 getSize + m ()J h method_27365 getSizeLerpTime + m ()D i method_27366 getSizeLerpTarget + m (DDDDIIDJD)V + m (Ldut;)V +c dut$d net/minecraft/class_2784$class_2787 net/minecraft/world/level/border/WorldBorder$StaticBorderExtent + f Ldut; a field_12748 field_12748 + f D b field_12747 size + f D c field_12746 minX + f D d field_12745 minZ + f D e field_12750 maxX + f D f field_12749 maxZ + f Lexv; g field_17653 shape + m ()V n method_11996 updateBox + m (Ldut;D)V +c duu net/minecraft/class_6098 net/minecraft/world/level/border/package-info +c duv net/minecraft/class_6557 net/minecraft/world/level/chunk/BlockColumn + m (I)Ldtc; a method_32892 getBlock + m (ILdtc;)V a method_38092 setBlock +c duw net/minecraft/class_5867 net/minecraft/world/level/chunk/BulkSectionAccess + f Ldcx; a field_29037 level + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; b field_29038 acquiredSections + f Ldvj; c field_29039 lastSection + f J d field_29040 lastSectionKey + m (Ljd;)Ldvj; a method_33944 getSection + m (Ljd;IJ)Ldvj; a method_33945 method_33945 + m (Ljd;)Ldtc; b method_33946 getBlockState + m (Ldcx;)V +c dux net/minecraft/class_6643 net/minecraft/world/level/chunk/CarvingMask + f I a field_35049 minY + f Ljava/util/BitSet; b field_35050 mask + f Ldux$a; c field_36217 additionalMask + m ()[J a method_38864 toArray + m (III)V a method_38865 set + m (Ldcd;)Ljava/util/stream/Stream; a method_38866 stream + m (Ldcd;I)Ljd; a method_38867 method_38867 + m (Ldux$a;)V a method_39785 setAdditionalMask + m (III)Z b method_38868 get + m (III)I c method_38869 getIndex + m (III)Z d method_39786 method_39786 + m (II)V + m ([JI)V +c dux$a net/minecraft/class_6643$class_6828 net/minecraft/world/level/chunk/CarvingMask$Mask +c duy net/minecraft/class_2791 net/minecraft/world/level/chunk/ChunkAccess + f I a field_44632 NO_FILLED_SECTION + f [Lit/unimi/dsi/fastutil/shorts/ShortList; b field_34536 postProcessing + f Z c field_34537 unsaved + f Ldcd; d field_34538 chunkPos + f Ldzc; e field_34539 noiseChunk + f Ldvv; f field_34540 upgradeData + f Leab; g field_35468 blendingData + f Ljava/util/Map; h field_34541 heightmaps + f Leoo; i field_44708 skyLightSources + f Ljava/util/Map; j field_34542 pendingBlockEntities + f Ljava/util/Map; k field_34543 blockEntities + f Ldcy; l field_34544 levelHeightAccessor + f [Ldvj; m field_34545 sections + f Lorg/slf4j/Logger; n field_34548 LOGGER + f Lit/unimi/dsi/fastutil/longs/LongSet; o field_37052 EMPTY_REFERENCE_SET + f Z p field_34549 isLightCorrect + f J q field_34550 inhabitedTime + f Lddx; r field_39411 carverBiomeSettings + f Ljava/util/Map; s field_34552 structureStarts + f Ljava/util/Map; t field_34553 structuresRefences + m ()V A method_51522 initializeLightSources + m ()I a method_12040 getHighestFilledSectionIndex + m (I)Ldyc; a method_32914 getListenerRegistry + m (II)Z a method_12228 isYSpaceEmpty + m (III)Ljava/lang/String; a method_38254 method_38254 + m (J)V a method_38870 incrementInhabitedTime + m (Lbsr;)V a method_12002 addEntity + m (Lddz;Ldef$f;)V a method_38257 fillBiomesFromNoise + m (Ldqh;)V a method_12007 setBlockEntity + m (Ldtc;)Z a method_51523 method_51523 + m (Ldyy$a;)Ldyy; a method_12032 getOrCreateHeightmapUnprimed + m (Ldyy$a;II)I a method_12005 getHeight + m (Ldyy$a;[J)V a method_12037 setHeightmap + m (Leab;)V a method_39294 setBlendingData + m (Ljava/util/Map;)V a method_12034 setAllStarts + m (Ljava/util/function/Function;)Ldzc; a method_38255 getOrCreateNoiseChunk + m (Ljava/util/function/Predicate;Ljava/util/function/BiConsumer;)V a method_51525 findBlocks + m (Ljava/util/function/Supplier;)Lddx; a method_44214 carverBiome + m (Ljd;Ldtc;Z)Ldtc; a method_12010 setBlockState + m (Ljd;Ljo$a;)Lub; a method_20598 getBlockEntityNbtForSaving + m (Ljz;[Ldvj;)V a method_38256 replaceMissingSections + m (Lub;)V a method_12042 setBlockEntityNbt + m (SI)V a method_12029 addPackedPostProcess + m (Z)V a method_12008 setUnsaved + m ([Lit/unimi/dsi/fastutil/shorts/ShortList;I)Lit/unimi/dsi/fastutil/shorts/ShortList; a method_12026 getOrCreateOffsetList + m ()I b method_12031 getHighestSectionPosition + m (I)Ldvj; b method_38259 getSection + m (J)V b method_12028 setInhabitedTime + m (Ldyy$a;)Z b method_39295 hasPrimedHeightmap + m (Z)V b method_12020 setLightCorrect + m ()Ljava/util/Set; c method_12021 getBlockEntitiesPos + m (I)Z c method_60791 isSectionEmpty + m (Ldyy$a;)Ldyy; c method_38260 method_38260 + m (Lejr;)Lit/unimi/dsi/fastutil/longs/LongSet; c method_38261 method_38261 + m ()[Ldvj; d method_12006 getSections + m (Ljd;)V d method_12041 removeBlockEntity + m ()Ljava/util/Collection; e method_12011 getHeightmaps + m (Ljd;)V e method_12039 markPosForPostprocessing + m ()Ldcd; f method_12004 getPos + m (Ljd;)Lub; f method_12024 getBlockEntityNbt + m ()Ljava/util/Map; g method_12016 getAllStarts + m ()Z i method_12044 isUnsaved + m ()Ldvz; j method_12009 getPersistedStatus + m ()Ldvz; k method_51526 getHighestGeneratedStatus + m ()[Lit/unimi/dsi/fastutil/shorts/ShortList; n method_12012 getPostProcessing + m ()Leyw; o method_12013 getBlockTicks + m ()Leyw; p method_12014 getFluidTicks + m ()Lduy$a; q method_39296 getTicksForSerialization + m ()Ldvv; r method_12003 getUpgradeData + m ()Z s method_39297 isOldNoiseGeneration + m ()Leab; t method_39299 getBlendingData + m ()J u method_12033 getInhabitedTime + m ()Z v method_12038 isLightCorrect + m ()Z w method_38871 hasAnyStructureReferences + m ()Ldym; x method_39300 getBelowZeroRetrogen + m ()Z y method_39461 isUpgrading + m ()Ldcy; z method_39460 getHeightAccessorForGeneration + m (Ldcd;Ldvv;Ldcy;Ljz;J[Ldvj;Leab;)V + m ()V +c duy$a net/minecraft/class_2791$class_6745 net/minecraft/world/level/chunk/ChunkAccess$TicksToSave + f Leyu; a comp_239 blocks + f Leyu; b comp_240 fluids + m ()Leyu; a comp_239 blocks + m ()Leyu; b comp_240 fluids + m (Leyu;Leyu;)V +c duz net/minecraft/class_2794 net/minecraft/world/level/chunk/ChunkGenerator + f Lcom/mojang/serialization/Codec; a field_24746 CODEC + f Ldea; b field_12761 biomeSource + f Ljava/util/function/Supplier; c field_39412 featuresPerStep + f Ljava/util/function/Function; d field_39413 generationSettingsGetter + m ()V a method_59825 validate + m (IILdcy;Ldzm;)Lddi; a method_26261 getBaseColumn + m (IILdyy$a;Ldcy;Ldzm;)I a method_16397 getBaseHeight + m (Laqu;Ljq;Ljd;IZ)Lcom/mojang/datafixers/util/Pair; a method_12103 findNearestMapStructure + m (Larb;)V a method_12107 spawnOriginalMobs + m (Larb;JLdzm;Lddy;Lddq;Lduy;Ldyu$a;)V a method_12108 applyCarvers + m (Larb;Lddq;Ldzm;Lduy;)V a method_12110 buildSurface + m (Ldcy;)I a method_12100 getSpawnHeight + m (Lddq;Lduy;Lkf;Lejr;)I a method_38264 fetchReferences + m (Lddq;Lejz;)Z a method_41521 tryAddReference + m (Lddq;Ljd;Lejz;)Z a method_41040 method_41040 + m (Lddq;Lkf;Lduy;Ldva;Ldcd;Lka;Ldzm;Lenu;Ljm;)V a method_41041 method_41041 + m (Ldds;Lddq;Lduy;)V a method_16130 createReferences + m (Ldds;Lddq;Ldzx;Lduy;Ldcd;Lejz;)V a method_38265 method_38265 + m (Ldds;Lduy;Lddq;)V a method_12102 applyBiomeDecoration + m (Ldds;Ljava/util/Set;Ldcd;)V a method_39787 method_39787 + m (Ldea;Ljava/util/function/Function;)Ljava/util/List; a method_44215 method_44215 + m (Lduy;)Lejj; a method_39462 getWritableArea + m (Lduy;Ldzm;)Lduy; a method_38267 method_38267 + m (Ldzm;Leaa;Lddq;Lduy;)Ljava/util/concurrent/CompletableFuture; a method_38275 createBiomes + m (Leaa;Ldzm;Lddq;Lduy;)Ljava/util/concurrent/CompletableFuture; a method_12088 fillFromNoise + m (Lejr;)Ljava/lang/Integer; a method_38268 method_38268 + m (Lejx$a;Lddq;Lka;Ldzm;Lenu;JLduy;Ldcd;Lkf;)Z a method_41044 tryGenerateStructure + m (Lejz;)Ljava/lang/String; a method_30149 method_30149 + m (Lejz;Ljz;)Ljava/lang/String; a method_41045 method_41045 + m (Leko;)Ljava/util/Set; a method_41046 method_41046 + m (Lit/unimi/dsi/fastutil/ints/IntSet;Ldeg$b;Leiv;)V a method_39788 method_39788 + m (Ljava/util/List;Ldzm;Ljd;)V a method_40450 addDebugScreenInfo + m (Ljava/util/Optional;Lejz;)Ljava/lang/String; a method_41050 method_41050 + m (Ljava/util/Set;Laqu;Lddq;Ljd;ZLekl;)Lcom/mojang/datafixers/util/Pair; a method_40148 getNearestGeneratedStructure + m (Ljava/util/Set;Ldcz;Lddq;IIIZJLekm;)Lcom/mojang/datafixers/util/Pair; a method_40146 getNearestGeneratedStructure + m (Ljava/util/Set;Ldcz;Lddq;ZLeko;Ldcd;)Lcom/mojang/datafixers/util/Pair; a method_41522 getStructureGeneratingAt + m (Ljava/util/function/Function;Ljm;)Ljava/util/List; a method_44217 method_44217 + m (Ljd;Lejz;)Z a method_41047 method_41047 + m (Ljm;)Lddx; a method_44216 getBiomeGenerationSettings + m (Ljm;Lddq;Lbtq;Ljd;)Lbpf; a method_12113 getMobsAt + m (Ljo;Ldzm;J)Ldva; a method_46696 createState + m (Ljz;Leiv;)Ljava/lang/String; a method_38271 method_38271 + m (Ljz;Lejr;)Ljava/lang/String; a method_38272 method_38272 + m (Lka;Ldva;Lddq;Lduy;Lenu;)V a method_16129 createStructures + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Ljava/util/function/Predicate;Lejz;)V a method_41052 method_41052 + m ()Lcom/mojang/serialization/MapCodec; b method_28506 codec + m (IILdyy$a;Ldcy;Ldzm;)I b method_20402 getFirstFreeHeight + m (Lejz;)Ljava/lang/String; b method_30148 method_30148 + m (Ljm;)Lddx; b method_44218 method_44218 + m ()Ljava/util/Optional; c method_39301 getTypeNameForDataFixer + m (IILdyy$a;Ldcy;Ldzm;)I c method_18028 getFirstOccupiedHeight + m ()Ldea; d method_12098 getBiomeSource + m ()I e method_12104 getGenDepth + m ()I f method_16398 getSeaLevel + m ()I g method_33730 getMinY + m (Ldea;)V + m (Ldea;Ljava/util/function/Function;)V + m ()V +c dva net/minecraft/class_7869 net/minecraft/world/level/chunk/ChunkGeneratorStructureState + f Lorg/slf4j/Logger; a field_40899 LOGGER + f Ldzm; b field_40900 randomState + f Ldea; c field_40901 biomeSource + f J d field_40902 levelSeed + f J e field_40903 concentricRingsSeed + f Ljava/util/Map; f field_40904 placementsForStructure + f Ljava/util/Map; g field_40905 ringPositions + f Z h field_40906 hasGeneratedPositions + f Ljava/util/List; i field_40907 possibleStructureSets + m ()Ljava/util/List; a method_46697 possibleStructureSets + m (IILjq;Layw;)Ldcd; a method_46698 method_46698 + m (Lcom/google/common/base/Stopwatch;Ljm;Ljava/util/List;)Ljava/util/List; a method_46701 method_46701 + m (Ldea;Ljm$c;)Z a method_46699 method_46699 + m (Ldea;Ljm;)Z a method_46700 method_46700 + m (Ldzm;JLdea;Ljava/util/stream/Stream;)Ldva; a method_46703 createForFlat + m (Ldzm;JLdea;Ljo;)Ldva; a method_46702 createForNormal + m (Lejr;)Ljava/util/List; a method_46704 method_46704 + m (Lejx$a;)Ljava/util/stream/Stream; a method_46705 method_46705 + m (Lejx;Ldea;)Z a method_46706 hasBiomesForStructureSet + m (Lekl;)Ljava/util/List; a method_46707 getRingPositionsFor + m (Ljava/util/Set;Ljm;)V a method_46711 method_46711 + m (Ljm;)Ljava/util/List; a method_46708 getPlacementsForStructure + m (Ljm;III)Z a method_46709 hasStructureChunkInRange + m (Ljm;Lekl;)Ljava/util/concurrent/CompletableFuture; a method_46710 generateRingPositions + m ()V b method_46712 ensureStructuresGenerated + m ()Ldzm; c method_46713 randomState + m ()J d method_46714 getLevelSeed + m ()V e method_46715 generatePositions + m (Ldzm;Ldea;JJLjava/util/List;)V + m ()V +c dvb net/minecraft/class_7511 net/minecraft/world/level/chunk/ChunkGenerators + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_44219 bootstrap + m ()V +c dvc net/minecraft/class_2802 net/minecraft/world/level/chunk/ChunkSource + m (II)Ldvi; a method_21730 getChunkNow + m (IILdvz;Z)Lduy; a method_12121 getChunk + m (IIZ)Ldvi; a method_12126 getChunk + m (Ldcd;Z)V a method_12124 updateChunkForced + m (Ljava/util/function/BooleanSupplier;Z)V a method_12127 tick + m (ZZ)V a method_12128 setSpawnSettings + m (II)Z b method_12123 hasChunk + m ()Ljava/lang/String; e method_12122 gatherStats + m ()I j method_14151 getLoadedChunksCount + m ()Leot; p method_12130 getLightEngine + m ()V +c dvd net/minecraft/class_2804 net/minecraft/world/level/chunk/DataLayer + f I a field_34052 LAYER_COUNT + f I b field_31404 LAYER_SIZE + f I c field_31403 SIZE + f [B d field_12783 data + f I e field_31405 NIBBLE_SIZE + f I f field_44635 defaultValue + m ()[B a method_12137 getData + m (I)V a method_51527 fill + m (II)V a method_12142 set + m (III)I a method_12139 get + m (IIII)V a method_12145 set + m ()Ldvd; b method_12144 copy + m (I)Ljava/lang/String; b method_35320 layerToString + m (III)I b method_12140 getIndex + m ()Z c method_51380 isDefinitelyHomogenous + m (I)Z c method_51379 isDefinitelyFilledWith + m ()Z d method_12146 isEmpty + m (I)I d method_12141 get + m (I)I e method_37459 getNibbleIndex + m (I)I f method_12138 getByteIndex + m (I)B g method_51381 packFilled + m ()V + m (I)V + m ([B)V +c dve net/minecraft/class_2812 net/minecraft/world/level/chunk/EmptyLevelChunk + f Ljm; n field_36407 biome + m (Ldcw;Ldcd;Ljm;)V +c dvf net/minecraft/class_2816 net/minecraft/world/level/chunk/GlobalPalette + f Ljr; a field_12828 registry + m (ILjr;Ldvp;Ljava/util/List;)Ldvo; a method_38286 create + m (Ljr;)V +c dvg net/minecraft/class_2814 net/minecraft/world/level/chunk/HashMapPalette + f Ljr; a field_12821 registry + f Laxk; b field_12824 values + f Ldvp; c field_12825 resizeHandler + f I d field_12822 bits + m (ILjr;Ldvp;Ljava/util/List;)Ldvo; a method_38287 create + m ()Ljava/util/List; d method_38288 getEntries + m (Ljr;ILdvp;Ljava/util/List;)V + m (Ljr;ILdvp;)V + m (Ljr;ILdvp;Laxk;)V +c dvh net/minecraft/class_2821 net/minecraft/world/level/chunk/ImposterProtoChunk + f Ldvi; n field_12866 wrapped + f Z o field_34554 allowWrites + m ()Ldvi; C method_12240 getWrapped + m (Ldyy$a;)Ldyy$a; c method_12239 fixType + m (Ldvi;Z)V +c dvi net/minecraft/class_2818 net/minecraft/world/level/chunk/LevelChunk + f Lorg/slf4j/Logger; n field_12839 LOGGER + f Ldsa; o field_27221 NULL_TICKER + f Ljava/util/Map; p field_27222 tickersInLevel + f Z q field_12855 loaded + f Ldcw; r field_12858 level + f Ljava/util/function/Supplier; s field_12856 fullStatus + f Ldvi$c; t field_12850 postLoad + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; u field_28129 gameEventListenerRegistrySections + f Leyo; v field_35471 blockTicks + f Leyo; w field_35472 fluidTicks + m ()Z C method_12223 isEmpty + m ()Laql; D method_12225 getFullStatus + m ()V E method_12206 runPostLoad + m ()Ldcw; F method_12200 getLevel + m ()Ljava/util/Map; G method_12214 getBlockEntities + m ()V H method_12221 postProcessGeneration + m ()V I method_38289 clearAllBlockEntities + m ()V J method_31713 registerAllBlockEntitiesAfterLevelLoad + m ()Z K method_31715 isInLevel + m (III)Lepe; a method_12234 getFluidState + m (Laqu;)V a method_39305 registerTickContainerInLevel + m (Laqu;II)Ldyc; a method_32917 method_32917 + m (Ldqh;Laqu;)V a method_32918 removeGameEventListener + m (Ldqh;Ldqi;)Ldsa; a method_31718 createTicker + m (Ldqh;Ldqi;Ljd;Ldvi$d;)Ldvi$d; a method_31719 method_31719 + m (Ldvi$d;)V a method_38290 method_38290 + m (Ljd;Ldqj;Lub;)V a method_31716 method_31716 + m (Ljd;Ldvi$b;)Ldqh; a method_12201 getBlockEntity + m (Ljd;Lub;)Ldqh; a method_12204 promotePendingBlockEntity + m (Lvw;)V a method_49525 replaceBiomes + m (Lvw;Lub;Ljava/util/function/Consumer;)V a method_12224 replaceWithPacketData + m (III)Ljava/lang/String; b method_12202 method_12202 + m (Laqu;)V b method_39306 unregisterTickContainerFromLevel + m (Ldqh;)V b method_12216 addAndRegisterBlockEntity + m (Ldqh;Laqu;)V b method_32919 addGameEventListener + m (Ljava/util/function/Supplier;)V b method_12207 setFullStatus + m (III)Ljava/lang/String; c method_12227 method_12227 + m (J)V c method_20530 unpackTicks + m (Ldqh;)V c method_31723 updateBlockEntityTicker + m (Z)V c method_12226 setLoaded + m (Ldqh;)V d method_32920 method_32920 + m (Ljd;)Ldqh; g method_12208 createBlockEntity + m (I)V h method_51382 removeGameEventListenerRegistry + m (Ljd;)Z h method_31724 isTicking + m (Ljd;)V k method_31725 removeBlockEntityTicker + m (Ldcw;Ldcd;)V + m (Ldcw;Ldcd;Ldvv;Leyo;Leyo;J[Ldvj;Ldvi$c;Leab;)V + m (Laqu;Ldvs;Ldvi$c;)V + m ()V +c dvi$1 net/minecraft/class_2818$1 net/minecraft/world/level/chunk/LevelChunk$1 + m ()V +c dvi$a net/minecraft/class_2818$class_5563 net/minecraft/world/level/chunk/LevelChunk$BoundTickingBlockEntity + f Ldvi; a field_27223 field_27223 + f Ldqh; b field_27224 blockEntity + f Ldqi; c field_27225 ticker + f Z d field_27226 loggedInvalidBlockState + m (Ldvi;Ldqh;Ldqi;)V +c dvi$b net/minecraft/class_2818$class_2819 net/minecraft/world/level/chunk/LevelChunk$EntityCreationType + f Ldvi$b; a field_12860 IMMEDIATE + f Ldvi$b; b field_12861 QUEUED + f Ldvi$b; c field_12859 CHECK + f [Ldvi$b; d field_12862 $VALUES + m ()[Ldvi$b; a method_36742 $values + m (Ljava/lang/String;I)V + m ()V +c dvi$c net/minecraft/class_2818$class_6829 net/minecraft/world/level/chunk/LevelChunk$PostLoadProcessor +c dvi$d net/minecraft/class_2818$class_5564 net/minecraft/world/level/chunk/LevelChunk$RebindableTickingBlockEntityWrapper + f Ldsa; a field_27228 ticker + m (Ldsa;)V a method_31727 rebind + m (Ldvi;Ldsa;)V +c dvj net/minecraft/class_2826 net/minecraft/world/level/chunk/LevelChunkSection + f I a field_31406 SECTION_WIDTH + f I b field_31407 SECTION_HEIGHT + f I c field_31408 SECTION_SIZE + f I d field_34555 BIOME_CONTAINER_BITS + f S e field_12877 nonEmptyBlockCount + f S f field_12882 tickingBlockCount + f S g field_12881 tickingFluidCount + f Ldvq; h field_12878 states + f Ldvr; i field_34556 biomes + m ()V a method_16676 acquire + m (III)Ldtc; a method_12254 getBlockState + m (IIILdtc;)Ldtc; a method_16675 setBlockState + m (IIILdtc;Z)Ldtc; a method_12256 setBlockState + m (Lddz;Ldef$f;III)V a method_38291 fillBiomesFromNoise + m (Ljava/util/function/Predicate;)Z a method_19523 maybeHas + m (Lvw;)V a method_12258 read + m ()V b method_16677 release + m (III)Lepe; b method_12255 getFluidState + m (Lvw;)V b method_49526 readBiomes + m ()Z c method_38292 hasOnlyAir + m (III)Ljm; c method_38293 getNoiseBiome + m (Lvw;)V c method_12257 write + m ()Z d method_12262 isRandomlyTicking + m ()Z e method_12263 isRandomlyTickingBlocks + m ()Z f method_12264 isRandomlyTickingFluids + m ()V g method_12253 recalcBlockCounts + m ()Ldvq; h method_12265 getStates + m ()Ldvr; i method_38294 getBiomes + m ()I j method_12260 getSerializedSize + m (Ldvq;Ldvr;)V + m (Ljz;)V +c dvj$a net/minecraft/class_2826$class_6869 net/minecraft/world/level/chunk/LevelChunkSection$1BlockCounter + f I a field_36408 nonEmptyBlockCount + f I b field_36409 tickingBlockCount + f I c field_36410 tickingFluidCount + m (Ldtc;I)V a method_40155 accept + m (Ldvj;)V +c dvk net/minecraft/class_8527 net/minecraft/world/level/chunk/LightChunk + m ()Leoo; B method_12018 getSkyLightSources + m (Ljava/util/function/BiConsumer;)V a method_51524 findBlockLightSources +c dvl net/minecraft/class_2823 net/minecraft/world/level/chunk/LightChunkGetter + m (Lddf;Lkf;)V a method_12247 onLightUpdate + m (II)Ldvk; c method_12246 getChunkForLighting + m ()Ldcc; q method_16399 getLevel +c dvm net/minecraft/class_2834 net/minecraft/world/level/chunk/LinearPalette + f Ljr; a field_12900 registry + f [Ljava/lang/Object; b field_12904 values + f Ldvp; c field_12905 resizeHandler + f I d field_12903 bits + f I e field_12901 size + m (ILjr;Ldvp;Ljava/util/List;)Ldvo; a method_38295 create + m (Ljr;ILdvp;Ljava/util/List;)V + m (Ljr;[Ljava/lang/Object;Ldvp;II)V +c dvn net/minecraft/class_6558 net/minecraft/world/level/chunk/MissingPaletteEntryException + m (I)V +c dvo net/minecraft/class_2837 net/minecraft/world/level/chunk/Palette + m ()I a method_12290 getSerializedSize + m (I)Ljava/lang/Object; a method_12288 valueFor + m (Ljava/lang/Object;)I a method_12291 idFor + m (Ljava/util/function/Predicate;)Z a method_19525 maybeHas + m (Lvw;)V a method_12289 read + m ()I b method_12197 getSize + m (Lvw;)V b method_12287 write + m ()Ldvo; c method_39956 copy +c dvo$a net/minecraft/class_2837$class_6559 net/minecraft/world/level/chunk/Palette$Factory +c dvp net/minecraft/class_2835 net/minecraft/world/level/chunk/PaletteResize +c dvq net/minecraft/class_2841 net/minecraft/world/level/chunk/PalettedContainer + f I a field_34557 MIN_PALETTE_BITS + f Ldvp; b field_34558 dummyPaletteResize + f Ljr; c field_34559 registry + f Ldvq$c; d field_34560 data + f Ldvq$d; e field_34561 strategy + f Lazn; f field_36300 threadingDetector + m ()V a method_12334 acquire + m (I)Ljava/lang/Object; a method_12331 get + m (IIILjava/lang/Object;)Ljava/lang/Object; a method_12328 getAndSet + m (ILjava/lang/Object;)Ljava/lang/Object; a method_12336 getAndSet + m (Lazd$a;)Ljava/lang/String; a method_49527 method_49527 + m (Lcom/mojang/serialization/Codec;Ljava/lang/Object;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38296 method_38296 + m (Ldvg;I)I a method_44340 method_44340 + m (Ldvq$b;Lit/unimi/dsi/fastutil/ints/Int2IntMap$Entry;)V a method_21733 method_21733 + m (Ldvq$c;I)Ldvq$c; a method_38297 createOrReuseData + m (Ldvq;)Ldvr; a method_44341 method_44341 + m (Ldvr$b;Ljr;Ldvq$d;Ldvr$a;)Lcom/mojang/serialization/DataResult; a method_44342 method_44342 + m (Lit/unimi/dsi/fastutil/ints/Int2IntOpenHashMap;I)V a method_21734 method_21734 + m (Ljava/util/function/Consumer;Ldvo;I)V a method_39794 method_39794 + m (Ljr;Lcom/mojang/serialization/Codec;Ldvq$d;Ljava/lang/Object;)Lcom/mojang/serialization/Codec; a method_44343 codecRW + m (Ljr;Lcom/mojang/serialization/Codec;Ldvq$d;Ljava/lang/Object;Ldvr$b;)Lcom/mojang/serialization/Codec; a method_38298 codec + m (Ljr;Ldvo;I)I a method_44344 method_44344 + m (Ljr;Ldvq$d;Ldvr$a;)Lcom/mojang/serialization/DataResult; a method_44346 unpack + m (Ljr;Ldvq$d;Ldvr;)Ldvr$a; a method_38302 method_38302 + m (Lvw;)V a method_12326 read + m ([ILjava/util/function/IntUnaryOperator;)V a method_39894 swapPalette + m ()V b method_12335 release + m (IIILjava/lang/Object;)Ljava/lang/Object; b method_16678 getAndSetUnchecked + m (ILjava/lang/Object;)V b method_12322 set + m (Ljr;Lcom/mojang/serialization/Codec;Ldvq$d;Ljava/lang/Object;)Lcom/mojang/serialization/Codec; b method_44347 codecRO + m (Ljr;Ldvq$d;Ldvr$a;)Lcom/mojang/serialization/DataResult; b method_44348 method_44348 + m (IIILjava/lang/Object;)V c method_35321 set + m (ILjava/lang/Object;)I c method_44349 method_44349 + m ()Ldvq; d method_39957 copy + m (ILjava/lang/Object;)I d method_12333 method_12333 + m ()Ljava/lang/String; f method_49528 method_49528 + m (Ljr;Ldvq$d;Ldvq$a;Laxc;Ljava/util/List;)V + m (Ljr;Ldvq$d;Ldvq$c;)V + m (Ljr;Ljava/lang/Object;Ldvq$d;)V +c dvq$a net/minecraft/class_2841$class_6560 net/minecraft/world/level/chunk/PalettedContainer$Configuration + f Ldvo$a; a comp_72 factory + f I b comp_73 bits + m ()Ldvo$a; a comp_72 factory + m (Ljr;Ldvp;I)Ldvq$c; a method_38305 createData + m ()I b comp_73 bits + m (Ldvo$a;I)V +c dvq$b net/minecraft/class_2841$class_4464 net/minecraft/world/level/chunk/PalettedContainer$CountConsumer +c dvq$c net/minecraft/class_2841$class_6561 net/minecraft/world/level/chunk/PalettedContainer$Data + f Ldvq$a; a comp_74 configuration + f Laxc; b comp_118 storage + f Ldvo; c comp_119 palette + m ()I a method_38306 getSerializedSize + m (Ldvo;Laxc;)V a method_38308 copyFrom + m (Lvw;)V a method_38309 write + m ()Ldvq$c; b method_44338 copy + m ()Ldvq$a; c comp_74 configuration + m ()Laxc; d comp_118 storage + m ()Ldvo; e comp_119 palette + m (Ldvq$a;Laxc;Ldvo;)V +c dvq$d net/minecraft/class_2841$class_6563 net/minecraft/world/level/chunk/PalettedContainer$Strategy + f Ldvo$a; a field_34566 SINGLE_VALUE_PALETTE_FACTORY + f Ldvo$a; b field_34567 LINEAR_PALETTE_FACTORY + f Ldvo$a; c field_34568 HASHMAP_PALETTE_FACTORY + f Ldvq$d; d field_34569 SECTION_STATES + f Ldvq$d; e field_34570 SECTION_BIOMES + f Ldvo$a; f field_34571 GLOBAL_PALETTE_FACTORY + f I g field_34572 sizeBits + m ()I a method_38312 size + m (III)I a method_38313 getIndex + m (Ljr;I)Ldvq$a; a method_38314 getConfiguration + m (Ljr;I)I b method_38315 calculateBitsForSerialization + m (I)V + m ()V +c dvq$d$1 net/minecraft/class_2841$class_6563$1 net/minecraft/world/level/chunk/PalettedContainer$Strategy$1 + m (I)V +c dvq$d$2 net/minecraft/class_2841$class_6563$2 net/minecraft/world/level/chunk/PalettedContainer$Strategy$2 + m (I)V +c dvr net/minecraft/class_7522 net/minecraft/world/level/chunk/PalettedContainerRO + m (III)Ljava/lang/Object; a method_12321 get + m (Ldvq$b;)V a method_21732 count + m (Ljava/util/function/Consumer;)V a method_39793 getAll + m (Ljava/util/function/Predicate;)Z a method_19526 maybeHas + m (Ljr;Ldvq$d;)Ldvr$a; a method_44345 pack + m (Lvw;)V b method_12325 write + m ()I c method_12327 getSerializedSize + m ()Ldvq; e method_44350 recreate +c dvr$a net/minecraft/class_7522$class_6562 net/minecraft/world/level/chunk/PalettedContainerRO$PackedData + f Ljava/util/List; a comp_75 paletteEntries + f Ljava/util/Optional; b comp_76 storage + m ()Ljava/util/List; a comp_75 paletteEntries + m ()Ljava/util/Optional; b comp_76 storage + m (Ljava/util/List;Ljava/util/Optional;)V +c dvr$b net/minecraft/class_7522$class_7523 net/minecraft/world/level/chunk/PalettedContainerRO$Unpacker +c dvs net/minecraft/class_2839 net/minecraft/world/level/chunk/ProtoChunk + f Leot; n field_17105 lightEngine + f Ldvz; o field_12918 status + f Ljava/util/List; p field_12929 entities + f Ljava/util/Map; q field_12926 carvingMasks + f Ldym; r field_35473 belowZeroRetrogen + f Leyr; s field_35474 blockTicks + f Leyr; t field_35475 fluidTicks + m ()Ljava/util/Map; D method_12309 getBlockEntities + m ()Ljava/util/List; E method_12295 getEntities + m ()Ljava/util/Map; F method_12316 getBlockEntityNbts + m ()Leyo; G method_39307 unpackBlockTicks + m ()Leyo; H method_39308 unpackFluidTicks + m (Ldvz;)V a method_12308 setPersistedStatus + m (Ldym;)V a method_39309 setBelowZeroRetrogen + m (Ldyu$a;)Ldux; a method_12025 getCarvingMask + m (Ldyu$a;Ldux;)V a method_12307 setCarvingMask + m (Leot;)V a method_17032 setLightEngine + m (Leyr;)Leyo; a method_39310 unpackTicks + m (SILdcd;)Ljd; a method_12314 unpackOffsetCoordinates + m (Ldyu$a;)Ldux; b method_28510 getOrCreateCarvingMask + m (Lub;)V b method_12302 addEntity + m (Ldyu$a;)Ldux; c method_12297 method_12297 + m (Ljd;)S g method_12300 packOffsetCoordinates + m (Ldcd;Ldvv;Ldcy;Ljz;Leab;)V + m (Ldcd;Ldvv;[Ldvj;Leyr;Leyr;Ldcy;Ljz;Leab;)V +c dvt net/minecraft/class_6564 net/minecraft/world/level/chunk/SingleValuePalette + f Ljr; a field_34573 registry + f Ljava/lang/Object; b field_34574 value + f Ldvp; c field_34575 resizeHandler + m (ILjr;Ldvp;Ljava/util/List;)Ldvo; a method_38316 create + m (Ljr;Ldvp;Ljava/util/List;)V +c dvu net/minecraft/class_2810 net/minecraft/world/level/chunk/StructureAccess + m (Lejr;)Lejz; a method_12181 getStartForStructure + m (Lejr;J)V a method_12182 addReferenceForStructure + m (Lejr;Lejz;)V a method_12184 setStartForStructure + m (Lejr;)Lit/unimi/dsi/fastutil/longs/LongSet; b method_12180 getReferencesForStructure + m (Ljava/util/Map;)V b method_12183 setAllReferences + m ()Ljava/util/Map; h method_12179 getAllReferences +c dvv net/minecraft/class_2843 net/minecraft/world/level/chunk/UpgradeData + f Ldvv; a field_12950 EMPTY + f Lorg/slf4j/Logger; b field_12956 LOGGER + f Ljava/lang/String; c field_31412 TAG_INDICES + f [Ljj; d field_12952 DIRECTIONS + f Ljava/util/EnumSet; e field_12951 sides + f Ljava/util/List; f field_36538 neighborBlockTicks + f Ljava/util/List; g field_36539 neighborFluidTicks + f [[I h field_12955 index + f Ljava/util/Map; i field_12953 MAP + f Ljava/util/Set; j field_12954 CHUNKY_FIXERS + m ()Z a method_12349 isEmpty + m (Ldcw;Ldvv$a;)V a method_12353 method_12353 + m (Ldcw;Leys;)V a method_40452 method_40452 + m (Ldfy;)Ljava/lang/String; a method_40453 method_40453 + m (Ldtc;Lji;Ldcx;Ljd;Ljd;)Ldtc; a method_12351 updateState + m (Ldvi;)V a method_12356 upgrade + m (Ldvi;Ljj;)V a method_12352 upgradeSides + m (Lepd;)Ljava/lang/String; a method_40454 method_40454 + m (Ljava/lang/String;)Ljava/util/Optional; a method_40455 method_40455 + m (Lub;Ljava/lang/String;Ljava/util/function/Function;Ljava/util/List;)V a method_40456 loadTicks + m (Luh;Leys;)V a method_40457 method_40457 + m ()Lub; b method_12350 write + m (Ldcw;Leys;)V b method_40458 method_40458 + m (Ldvi;)V b method_12348 upgradeInside + m (Ljava/lang/String;)Ljava/util/Optional; b method_40459 method_40459 + m (Luh;Leys;)V b method_40460 method_40460 + m ()Ljava/util/Optional; c method_40461 method_40461 + m ()Ljava/util/Optional; d method_40462 method_40462 + m (Ldcy;)V + m (Lub;Ldcy;)V + m ()V +c dvv$a net/minecraft/class_2843$class_2844 net/minecraft/world/level/chunk/UpgradeData$BlockFixer + m (Ldcx;)V a method_12357 processChunk + m (Ldtc;Lji;Ldtc;Ldcx;Ljd;Ljd;)Ldtc; a method_12358 updateShape +c dvv$b net/minecraft/class_2843$class_2845 net/minecraft/world/level/chunk/UpgradeData$BlockFixers + f Ldvv$b; a field_12957 BLACKLIST + f Ldvv$b; b field_12962 DEFAULT + f Ldvv$b; c field_12960 CHEST + f Ldvv$b; d field_12963 LEAVES + f Ldvv$b; e field_12958 STEM_BLOCK + f [Lji; f field_12959 DIRECTIONS + f [Ldvv$b; g field_12961 $VALUES + m ()[Ldvv$b; a method_36743 $values + m (Ljava/lang/String;I[Ldfy;)V + m (Ljava/lang/String;IZ[Ldfy;)V + m ()V +c dvv$b$1 net/minecraft/class_2843$class_2845$1 net/minecraft/world/level/chunk/UpgradeData$BlockFixers$1 + m (Ljava/lang/String;I[Ldfy;)V +c dvv$b$2 net/minecraft/class_2843$class_2845$2 net/minecraft/world/level/chunk/UpgradeData$BlockFixers$2 + m (Ljava/lang/String;I[Ldfy;)V +c dvv$b$3 net/minecraft/class_2843$class_2845$3 net/minecraft/world/level/chunk/UpgradeData$BlockFixers$3 + m (Ljava/lang/String;I[Ldfy;)V +c dvv$b$4 net/minecraft/class_2843$class_2845$4 net/minecraft/world/level/chunk/UpgradeData$BlockFixers$4 + f Ljava/lang/ThreadLocal; g field_12964 queue + m ()Ljava/util/List; a method_12359 method_12359 + m (Ljava/lang/String;IZ[Ldfy;)V +c dvv$b$5 net/minecraft/class_2843$class_2845$5 net/minecraft/world/level/chunk/UpgradeData$BlockFixers$5 + m (Ljava/lang/String;I[Ldfy;)V +c dvw net/minecraft/class_6099 net/minecraft/world/level/chunk/package-info +c dvx net/minecraft/class_9767 net/minecraft/world/level/chunk/status/ChunkDependencies + f Lcom/google/common/collect/ImmutableList; a field_51898 dependencyByRadius + f [I b field_51899 radiusByDependency + m ()Lcom/google/common/collect/ImmutableList; a method_60513 asList + m (I)Ldvz; a method_60514 get + m (Ldvz;)I a method_60515 getRadiusOf + m ()I b method_60516 size + m ()I c method_60517 getRadius + m (Lcom/google/common/collect/ImmutableList;)V +c dvy net/minecraft/class_9768 net/minecraft/world/level/chunk/status/ChunkPyramid + f Ldvy; a field_51900 GENERATION_PYRAMID + f Ldvy; b field_51901 LOADING_PYRAMID + f Lcom/google/common/collect/ImmutableList; c comp_2802 steps + m ()Lcom/google/common/collect/ImmutableList; a comp_2802 steps + m (Ldvz;)Ldwc; a method_60518 getStepTo + m (Ldwc$a;)Ldwc$a; a method_60519 method_60519 + m (Ldwc$a;)Ldwc$a; b method_60520 method_60520 + m (Ldwc$a;)Ldwc$a; c method_60521 method_60521 + m (Ldwc$a;)Ldwc$a; d method_60522 method_60522 + m (Ldwc$a;)Ldwc$a; e method_60523 method_60523 + m (Ldwc$a;)Ldwc$a; f method_60524 method_60524 + m (Ldwc$a;)Ldwc$a; g method_60525 method_60525 + m (Ldwc$a;)Ldwc$a; h method_60526 method_60526 + m (Ldwc$a;)Ldwc$a; i method_60527 method_60527 + m (Ldwc$a;)Ldwc$a; j method_60528 method_60528 + m (Ldwc$a;)Ldwc$a; k method_60529 method_60529 + m (Ldwc$a;)Ldwc$a; l method_60530 method_60530 + m (Ldwc$a;)Ldwc$a; m method_60531 method_60531 + m (Ldwc$a;)Ldwc$a; n method_60532 method_60532 + m (Ldwc$a;)Ldwc$a; o method_60533 method_60533 + m (Ldwc$a;)Ldwc$a; p method_60534 method_60534 + m (Ldwc$a;)Ldwc$a; q method_60535 method_60535 + m (Ldwc$a;)Ldwc$a; r method_60536 method_60536 + m (Ldwc$a;)Ldwc$a; s method_60537 method_60537 + m (Ldwc$a;)Ldwc$a; t method_60538 method_60538 + m (Ldwc$a;)Ldwc$a; u method_60539 method_60539 + m (Ldwc$a;)Ldwc$a; v method_60540 method_60540 + m (Ldwc$a;)Ldwc$a; w method_60541 method_60541 + m (Ldwc$a;)Ldwc$a; x method_60542 method_60542 + m (Lcom/google/common/collect/ImmutableList;)V + m ()V +c dvy$a net/minecraft/class_9768$class_9769 net/minecraft/world/level/chunk/status/ChunkPyramid$Builder + f Ljava/util/List; a field_51902 steps + m ()Ldvy; a method_60543 build + m (Ldvz;Ljava/util/function/UnaryOperator;)Ldvy$a; a method_60544 step + m ()V +c dvz net/minecraft/class_2806 net/minecraft/world/level/chunk/status/ChunkStatus + f I a field_35470 MAX_STRUCTURE_DISTANCE + f Ljava/util/EnumSet; b field_51903 FINAL_HEIGHTMAPS + f Ldvz; c field_12798 EMPTY + f Ldvz; d field_16423 STRUCTURE_STARTS + f Ldvz; e field_16422 STRUCTURE_REFERENCES + f Ldvz; f field_12794 BIOMES + f Ldvz; g field_12804 NOISE + f Ldvz; h field_12796 SURFACE + f Ldvz; i field_12801 CARVERS + f Ldvz; j field_12795 FEATURES + f Ldvz; k field_44633 INITIALIZE_LIGHT + f Ldvz; l field_12805 LIGHT + f Ldvz; m field_12786 SPAWN + f Ldvz; n field_12803 FULL + f Ljava/util/EnumSet; o field_51904 WORLDGEN_HEIGHTMAPS + f I p field_16646 index + f Ldvz; q field_16647 parent + f Ldwd; r field_12787 chunkType + f Ljava/util/EnumSet; s field_12793 heightmapsAfter + m ()Ljava/util/List; a method_16558 getStatusList + m (Ldvz;)Z a method_12165 isOrAfter + m (Ldvz;Ldvz;)Ldvz; a method_60545 max + m (Ljava/lang/String;)Ldvz; a method_12168 byName + m (Ljava/lang/String;Ldvz;Ljava/util/EnumSet;Ldwd;)Ldvz; a method_60546 register + m ()I b method_16559 getIndex + m (Ldvz;)Z b method_60547 isAfter + m ()Ldvz; c method_16560 getParent + m (Ldvz;)Z c method_60548 isOrBefore + m ()Ldwd; d method_12164 getChunkType + m (Ldvz;)Z d method_60549 isBefore + m ()Ljava/util/EnumSet; e method_12160 heightmapsAfter + m ()Ljava/lang/String; f method_60550 getName + m (Ldvz;Ljava/util/EnumSet;Ldwd;)V + m ()V +c dwa net/minecraft/class_2807 net/minecraft/world/level/chunk/status/ChunkStatusTask +c dwb net/minecraft/class_9310 net/minecraft/world/level/chunk/status/ChunkStatusTasks + m (Laqu;Ldvs;Ldvi;)V a method_60551 method_60551 + m (Laqu;Ljava/util/List;)V a method_60552 postLoadProtoChunk + m (Lduy;)Z a method_57595 isLighted + m (Lduy;Ldwe;Laqn;)Lduy; a method_60553 method_60553 + m (Ldwe;Ldcd;Laqn;Ljava/lang/Runnable;)V a method_60554 method_60554 + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; a method_57596 passThrough + m (Lduy;)Lduy; b method_57599 method_57599 + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; b method_57601 generateStructureStarts + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; c method_57600 loadStructureStarts + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; d method_57603 generateStructureReferences + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; e method_57605 generateBiomes + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; f method_57607 generateNoise + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; g method_57608 generateSurface + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; h method_57609 generateCarvers + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; i method_57610 generateFeatures + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; j method_57594 initializeLight + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; k method_60555 light + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; l method_57613 generateSpawn + m (Ldwe;Ldwc;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; m method_60556 full + m ()V +c dwc net/minecraft/class_9770 net/minecraft/world/level/chunk/status/ChunkStep + f Ldvz; a comp_2803 targetStatus + f Ldvx; b comp_2804 directDependencies + f Ldvx; c comp_2805 accumulatedDependencies + f I d comp_2806 blockStateWriteRadius + f Ldwa; e comp_2807 task + m ()Ldvz; a comp_2803 targetStatus + m (Lbno;Lduy;)Lduy; a method_60557 method_60557 + m (Lduy;Lbno;)Lduy; a method_60558 completeChunkGeneration + m (Ldvz;)I a method_60559 getAccumulatedRadiusOf + m (Ldwe;Lazi;Lduy;)Ljava/util/concurrent/CompletableFuture; a method_60560 apply + m ()Ldvx; b comp_2804 directDependencies + m ()Ldvx; c comp_2805 accumulatedDependencies + m ()I d comp_2806 blockStateWriteRadius + m ()Ldwa; e comp_2807 task + m (Ldvz;Ldvx;Ldvx;ILdwa;)V +c dwc$a net/minecraft/class_9770$class_9771 net/minecraft/world/level/chunk/status/ChunkStep$Builder + f Ldvz; a field_51905 status + f Ldwc; b field_51906 parent + f [Ldvz; c field_51907 directDependenciesByRadius + f I d field_51908 blockStateWriteRadius + f Ldwa; e field_51909 task + m ()Ldwc; a method_60561 build + m (I)Ldwc$a; a method_60562 blockStateWriteRadius + m (Ldvz;)I a method_60563 getRadiusOfParent + m (Ldvz;I)Ldwc$a; a method_60564 addRequirement + m (Ldwa;)Ldwc$a; a method_60565 setTask + m ()[Ldvz; b method_60566 buildAccumulatedDependencies + m (Ldvz;)V + m (Ldvz;Ldwc;)V +c dwd net/minecraft/class_2808 net/minecraft/world/level/chunk/status/ChunkType + f Ldwd; a field_12808 PROTOCHUNK + f Ldwd; b field_12807 LEVELCHUNK + f [Ldwd; c field_12806 $VALUES + m ()[Ldwd; a method_36741 $values + m (Ljava/lang/String;I)V + m ()V +c dwe net/minecraft/class_9312 net/minecraft/world/level/chunk/status/WorldGenContext + f Laqu; a comp_2434 level + f Lduz; b comp_2435 generator + f Lenu; c comp_2436 structureManager + f Laqx; d comp_2437 lightEngine + f Lbpj; e comp_2808 mainThreadMailBox + m ()Laqu; a comp_2434 level + m ()Lduz; b comp_2435 generator + m ()Lenu; c comp_2436 structureManager + m ()Laqx; d comp_2437 lightEngine + m ()Lbpj; e comp_2808 mainThreadMailBox + m (Laqu;Lduz;Lenu;Laqx;Lbpj;)V +c dwf net/minecraft/class_9313 net/minecraft/world/level/chunk/status/package-info +c dwg net/minecraft/class_9820 net/minecraft/world/level/chunk/storage/ChunkIOErrorReporter + m (Ldcd;Ldcd;)Lz; a method_60997 createMisplacedChunkReport + m (Ldcd;Ldcd;Ldws;)V a method_60998 reportMisplacedChunk + m (Ljava/lang/Throwable;Ldws;Ldcd;)V a method_57821 reportChunkLoadFailure + m (Ljava/lang/Throwable;Ldws;Ldcd;)V b method_57822 reportChunkSaveFailure +c dwh net/minecraft/class_6830 net/minecraft/world/level/chunk/storage/ChunkScanAccess + m (Ldcd;Luv;)Ljava/util/concurrent/CompletableFuture; a method_39795 scanChunk +c dwi net/minecraft/class_2852 net/minecraft/world/level/chunk/storage/ChunkSerializer + f Ljava/lang/String; a field_37659 X_POS_TAG + f Ljava/lang/String; b field_37660 Z_POS_TAG + f Ljava/lang/String; c field_37661 HEIGHTMAPS_TAG + f Ljava/lang/String; d field_37662 IS_LIGHT_ON_TAG + f Ljava/lang/String; e field_37663 SECTIONS_TAG + f Ljava/lang/String; f field_37664 BLOCK_LIGHT_TAG + f Ljava/lang/String; g field_37665 SKY_LIGHT_TAG + f Lcom/mojang/serialization/Codec; h field_34576 BLOCK_STATE_CODEC + f Lorg/slf4j/Logger; i field_13001 LOGGER + f Ljava/lang/String; j field_31413 TAG_UPGRADE_DATA + f Ljava/lang/String; k field_35476 BLOCK_TICKS_TAG + f Ljava/lang/String; l field_35477 FLUID_TICKS_TAG + m (Laqu;Lces;Ldws;Ldcd;Lub;)Ldvs; a method_12395 read + m (Laqu;Lduy;)Lub; a method_12410 write + m (Laqu;Lub;)Ldvi$c; a method_12386 postLoadChunk + m (Laqu;Lub;Lduy$a;)V a method_39311 saveTicks + m (Ldcd;ILjava/lang/String;)V a method_39035 logErrors + m (Ldcd;Lakr;J)Z a method_24029 method_24029 + m (Ldfy;)Ljava/lang/String; a method_39312 method_39312 + m (Lekh;Ldcd;Ljava/util/Map;Ljava/util/Map;)Lub; a method_12385 packStructureData + m (Lekh;Lub;J)Ljava/util/Map; a method_12392 unpackStructureStart + m (Lepd;)Ljava/lang/String; a method_39313 method_39313 + m (Ljava/lang/String;)Ljava/util/Optional; a method_39314 method_39314 + m (Ljz;)Lcom/mojang/serialization/Codec; a method_39036 makeBiomeCodec + m (Lka;Ldcd;Lub;)Ljava/util/Map; a method_12387 unpackStructureReferences + m (Lub;)Ldwd; a method_12377 getChunkTypeFromTag + m (Lub;Ljava/lang/String;)Luh; a method_39796 getListOfCompoundsOrNull + m (Lub;Luy;)V a method_39315 method_39315 + m (Luh;Laqu;Luh;Ldvi;)V a method_39797 method_39797 + m ([Lit/unimi/dsi/fastutil/shorts/ShortList;)Luh; a method_12393 packOffsets + m (Ldcd;ILjava/lang/String;)V b method_39037 method_39037 + m (Ljava/lang/String;)Ljava/util/Optional; b method_39316 method_39316 + m (Lub;Luy;)V b method_39539 method_39539 + m (Ldcd;ILjava/lang/String;)V c method_39038 method_39038 + m (Ljava/lang/String;)Ljava/util/Optional; c method_39317 method_39317 + m (Ljava/lang/String;)Ljava/util/Optional; d method_39318 method_39318 + m ()V + m ()V +c dwi$a net/minecraft/class_2852$class_9314 net/minecraft/world/level/chunk/storage/ChunkSerializer$ChunkReadException + m (Ljava/lang/String;)V +c dwj net/minecraft/class_3977 net/minecraft/world/level/chunk/storage/ChunkStorage + f Ldwl; a field_21494 worker + f Lejm; b field_17654 legacyStructureHandler + f I d field_36219 LAST_MONOLYTH_STRUCTURE_DATA_VERSION + f Lcom/mojang/datafixers/DataFixer; e field_17655 fixerUpper + m (Lakq;Ljava/util/function/Supplier;)Lejm; a method_43411 getLegacyStructureHandler + m (Lakq;Ljava/util/function/Supplier;Lub;Ljava/util/Optional;)Lub; a method_17907 upgradeChunkTag + m (Ldcd;Lub;)Ljava/util/concurrent/CompletableFuture; a method_17910 write + m (Lub;)I a method_17908 getVersion + m (Lub;Lakq;)V a method_39798 method_39798 + m (Lub;Lakq;Ljava/util/Optional;)V a method_39799 injectDatafixingContext + m (Ldcd;I)Z b method_42328 isOldChunkAround + m (Lub;)V b method_60626 removeDatafixingContext + m (Ldcd;)Ljava/util/concurrent/CompletableFuture; d method_23696 read + m (Ldcd;)V e method_56564 handleLegacyStructureIndex + m ()V o method_23697 flushWorker + m ()Ldwh; p method_39800 chunkScanner + m ()Ldws; q method_60999 storageInfo + m (Ldws;Ljava/nio/file/Path;Lcom/mojang/datafixers/DataFixer;Z)V +c dwk net/minecraft/class_5565 net/minecraft/world/level/chunk/storage/EntityStorage + f Lorg/slf4j/Logger; a field_27232 LOGGER + f Ljava/lang/String; b field_31414 ENTITIES_TAG + f Ljava/lang/String; c field_31415 POSITION_TAG + f Laqu; d field_27233 level + f Ldwu; e field_48747 simpleRegionStorage + f Lit/unimi/dsi/fastutil/longs/LongSet; f field_27235 emptyChunks + f Lbpk; g field_34056 entityDeserializerQueue + m (Ldcd;Ljava/lang/Throwable;)Ljava/lang/Object; a method_61000 method_61000 + m (Ldcd;Ljava/util/Optional;)Ldxe; a method_31731 method_31731 + m (Ljava/util/concurrent/CompletableFuture;Ldcd;)V a method_61001 reportSaveFailureIfPresent + m (Lub;)Ldcd; a method_31736 readChunkPos + m (Lub;Ldcd;)V a method_31733 writeChunkPos + m (Luh;Lbsr;)V a method_31734 method_31734 + m (Ldcd;)Ldxe; b method_31735 emptyChunk + m (Ldcd;Ljava/lang/Throwable;)Ljava/lang/Object; b method_61002 method_61002 + m (Ljava/util/concurrent/CompletableFuture;Ldcd;)V b method_61003 reportLoadFailureIfPresent + m (Ldwu;Laqu;Ljava/util/concurrent/Executor;)V + m ()V +c dwl net/minecraft/class_4698 net/minecraft/world/level/chunk/storage/IOWorker + f Lorg/slf4j/Logger; a field_21495 LOGGER + f Ljava/util/concurrent/atomic/AtomicBoolean; b field_21497 shutdownRequested + f Lbpk; c field_24468 mailbox + f Ldwq; d field_21499 storage + f Ljava/util/Map; e field_21500 pendingWrites + f Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; f field_38240 regionCacheForBlender + f I g field_38241 REGION_CACHE_SIZE + m ()Ldws; a method_61004 storageInfo + m (I)[Ljava/util/concurrent/CompletableFuture; a method_23699 method_23699 + m (II)Ljava/util/concurrent/CompletableFuture; a method_42329 getOrCreateOldDataForRegion + m (Lbpj;)Lbpm$b; a method_27938 method_27938 + m (Lbpj;Ljava/util/function/Supplier;)V a method_27939 method_27939 + m (Ldcd;)Ljava/util/concurrent/CompletableFuture; a method_31738 loadAsync + m (Ldcd;I)Z a method_42330 isOldChunkAround + m (Ldcd;Ldwl$a;)V a method_23701 runStore + m (Ldcd;Lub;)Ljava/util/concurrent/CompletableFuture; a method_23703 store + m (Ldwl$a;)Ljava/util/concurrent/CompletableFuture; a method_23705 method_23705 + m (Ljava/lang/Void;)Ljava/util/concurrent/CompletionStage; a method_37479 method_37479 + m (Ljava/util/BitSet;Ldcd;)V a method_42331 method_42331 + m (Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture; a method_23709 submitTask + m (Ljava/util/function/Supplier;Lbpj;)Lbpm$b; a method_27941 method_27941 + m (Lub;)Z a method_42332 isOldChunk + m (Lub;Ldcd;)Ldwl$a; a method_23711 method_23711 + m (Z)Ljava/util/concurrent/CompletableFuture; a method_23698 synchronize + m ()V b method_23719 storePendingChunk + m (II)Ljava/util/concurrent/CompletableFuture; b method_42333 createOldDataForRegion + m (Lbpj;)V b method_27942 method_27942 + m (Ldcd;)Lcom/mojang/datafixers/util/Either; b method_27943 method_27943 + m (Ldcd;Lub;)Lcom/mojang/datafixers/util/Either; b method_27944 method_27944 + m (Ldcd;Luv;)Lcom/mojang/datafixers/util/Either; b method_39801 method_39801 + m (Ljava/lang/Void;)Ljava/util/concurrent/CompletionStage; b method_27940 method_27940 + m ()V c method_27945 tellStorePending + m (II)Ljava/util/BitSet; c method_42334 method_42334 + m ()Lcom/mojang/datafixers/util/Either; d method_37480 method_37480 + m ()Lcom/mojang/datafixers/util/Either; e method_27946 method_27946 + m ()Lcom/mojang/datafixers/util/Either; f method_27947 method_27947 + m (Ldws;Ljava/nio/file/Path;Z)V + m ()V +c dwl$a net/minecraft/class_4698$class_4699 net/minecraft/world/level/chunk/storage/IOWorker$PendingStore + f Lub; a field_21503 data + f Ljava/util/concurrent/CompletableFuture; b field_21504 result + m ()Lub; a method_60627 copyData + m (Lub;)V +c dwl$b net/minecraft/class_4698$class_5276 net/minecraft/world/level/chunk/storage/IOWorker$Priority + f Ldwl$b; a field_27237 FOREGROUND + f Ldwl$b; b field_27238 BACKGROUND + f Ldwl$b; c field_27239 SHUTDOWN + f [Ldwl$b; d field_24471 $VALUES + m ()[Ldwl$b; a method_36744 $values + m (Ljava/lang/String;I)V + m ()V +c dwm net/minecraft/class_9170 net/minecraft/world/level/chunk/storage/RecreatingChunkStorage + f Ldwl; a field_48748 writeWorker + f Ljava/nio/file/Path; b field_48749 writeFolder + m (Ldws;Ljava/nio/file/Path;Ldws;Ljava/nio/file/Path;Lcom/mojang/datafixers/DataFixer;Z)V +c dwn net/minecraft/class_9171 net/minecraft/world/level/chunk/storage/RecreatingSimpleRegionStorage + f Ldwl; a field_48750 writeWorker + f Ljava/nio/file/Path; b field_48751 writeFolder + m (Ldws;Ljava/nio/file/Path;Ldws;Ljava/nio/file/Path;Lcom/mojang/datafixers/DataFixer;ZLazw;)V +c dwo net/minecraft/class_4485 net/minecraft/world/level/chunk/storage/RegionBitmap + f Ljava/util/BitSet; a field_20433 used + m ()Lit/unimi/dsi/fastutil/ints/IntSet; a method_35322 getUsed + m (I)I a method_21867 allocate + m (II)V a method_21868 force + m (II)V b method_21869 free + m ()V +c dwp net/minecraft/class_2861 net/minecraft/world/level/chunk/storage/RegionFile + f I a field_31417 SECTOR_INTS + f Ldwo; b field_20441 usedSectors + f Lorg/slf4j/Logger; c field_20434 LOGGER + f I d field_31418 SECTOR_BYTES + f I e field_31419 CHUNK_HEADER_SIZE + f I f field_31420 HEADER_OFFSET + f Ljava/nio/ByteBuffer; g field_20435 PADDING_BUFFER + f Ljava/lang/String; h field_31421 EXTERNAL_FILE_EXTENSION + f I i field_31422 EXTERNAL_STREAM_FLAG + f I j field_31423 EXTERNAL_CHUNK_THRESHOLD + f I k field_31424 CHUNK_NOT_PRESENT + f Ldws; l field_49102 info + f Ljava/nio/file/Path; m field_48752 path + f Ljava/nio/channels/FileChannel; n field_20436 file + f Ljava/nio/file/Path; o field_20657 externalFileDir + f Ldwr; p field_20437 version + f Ljava/nio/ByteBuffer; q field_20438 header + f Ljava/nio/IntBuffer; r field_20439 offsets + f Ljava/nio/IntBuffer; s field_20440 timestamps + m ()Ljava/nio/file/Path; a method_56566 getPath + m (B)Z a method_22407 isExternalStreamChunk + m (I)I a method_21871 getNumSectors + m (II)I a method_21872 packSectorOffset + m (Ldcd;)Ljava/io/DataInputStream; a method_21873 getChunkDataInputStream + m (Ldcd;B)Ljava/io/DataInputStream; a method_22408 createExternalChunkInputStream + m (Ldcd;BLjava/io/InputStream;)Ljava/io/DataInputStream; a method_22409 createChunkInputStream + m (Ldcd;Ljava/nio/ByteBuffer;)V a method_21874 write + m (Ljava/nio/ByteBuffer;I)Ljava/io/ByteArrayInputStream; a method_21876 createStream + m (Ljava/nio/file/Path;Ljava/nio/ByteBuffer;)Ldwp$b; a method_22410 writeToExternalFile + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)V a method_22411 method_22411 + m ()V b method_26981 flush + m (B)B b method_22412 getExternalChunkVersion + m (I)I b method_21878 getSectorNumber + m (Ldcd;)Z b method_21879 doesChunkExist + m ()I c method_31739 getTimestamp + m (I)I c method_21880 sizeToSectors + m (Ldcd;)Ljava/io/DataOutputStream; c method_21881 getChunkDataOutputStream + m ()Ljava/nio/ByteBuffer; d method_22406 createExternalStub + m (Ldcd;)V d method_31740 clear + m ()V e method_21870 writeHeader + m (Ldcd;)Z e method_12423 hasChunk + m ()V f method_21877 padToFullSector + m (Ldcd;)Ljava/nio/file/Path; f method_22413 getExternalChunkPath + m (Ldcd;)I g method_12419 getOffset + m (Ldcd;)I h method_17909 getOffsetIndex + m (Ldcd;)V i method_22414 method_22414 + m (Ldws;Ljava/nio/file/Path;Ljava/nio/file/Path;Z)V + m (Ldws;Ljava/nio/file/Path;Ljava/nio/file/Path;Ldwr;Z)V + m ()V +c dwp$a net/minecraft/class_2861$class_2862 net/minecraft/world/level/chunk/storage/RegionFile$ChunkBuffer + f Ldwp; a field_13035 field_13035 + f Ldcd; b field_17656 pos + m (Ldwp;Ldcd;)V +c dwp$b net/minecraft/class_2861$class_4549 net/minecraft/world/level/chunk/storage/RegionFile$CommitOp +c dwq net/minecraft/class_2867 net/minecraft/world/level/chunk/storage/RegionFileStorage + f Ljava/lang/String; a field_31425 ANVIL_EXTENSION + f I b field_31426 MAX_CACHE_SIZE + f Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; c field_17657 regionCache + f Ldws; d field_49103 info + f Ljava/nio/file/Path; e field_18690 folder + f Z f field_23748 sync + m ()V a method_26982 flush + m (Ldcd;)Lub; a method_17911 read + m (Ldcd;Lub;)V a method_23726 write + m (Ldcd;Luv;)V a method_39802 scanChunk + m ()Ldws; b method_61005 info + m (Ldcd;)Ldwp; b method_12440 getRegionFile + m (Ldws;Ljava/nio/file/Path;Z)V +c dwr net/minecraft/class_4486 net/minecraft/world/level/chunk/storage/RegionFileVersion + f Ldwr; a field_20442 VERSION_GZIP + f Ldwr; b field_20443 VERSION_DEFLATE + f Ldwr; c field_20444 VERSION_NONE + f Ldwr; d field_48753 VERSION_LZ4 + f Ldwr; e field_48916 VERSION_CUSTOM + f Ldwr; f field_48754 DEFAULT + f Lorg/slf4j/Logger; g field_48755 LOGGER + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; h field_20445 VERSIONS + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; i field_48756 VERSIONS_BY_NAME + f Ldwr; j field_48757 selected + f I k field_20446 id + f Ljava/lang/String; l field_48758 optionName + f Ldwr$a; m field_20447 inputWrapper + f Ldwr$a; n field_20448 outputWrapper + m ()Ldwr; a method_56567 getSelected + m (I)Ldwr; a method_21883 fromId + m (Ldwr;)Ldwr; a method_21884 register + m (Ljava/io/InputStream;)Ljava/io/InputStream; a method_21885 wrap + m (Ljava/io/OutputStream;)Ljava/io/OutputStream; a method_21886 wrap + m (Ljava/lang/String;)V a method_56568 configure + m ()I b method_21882 getId + m (I)Z b method_21887 isValidVersion + m (Ljava/io/InputStream;)Ljava/io/InputStream; b method_56569 method_56569 + m (Ljava/io/OutputStream;)Ljava/io/OutputStream; b method_56570 method_56570 + m (Ljava/io/InputStream;)Ljava/io/InputStream; c method_21888 method_21888 + m (Ljava/io/OutputStream;)Ljava/io/OutputStream; c method_21889 method_21889 + m (Ljava/io/InputStream;)Ljava/io/InputStream; d method_39803 method_39803 + m (Ljava/io/OutputStream;)Ljava/io/OutputStream; d method_39804 method_39804 + m (Ljava/io/InputStream;)Ljava/io/InputStream; e method_39805 method_39805 + m (Ljava/io/OutputStream;)Ljava/io/OutputStream; e method_39806 method_39806 + m (ILjava/lang/String;Ldwr$a;Ldwr$a;)V + m ()V +c dwr$a net/minecraft/class_4486$class_4487 net/minecraft/world/level/chunk/storage/RegionFileVersion$StreamWrapper +c dws net/minecraft/class_9240 net/minecraft/world/level/chunk/storage/RegionStorageInfo + f Ljava/lang/String; a comp_2345 level + f Lakq; b comp_2346 dimension + f Ljava/lang/String; c comp_2347 type + m ()Ljava/lang/String; a comp_2345 level + m (Ljava/lang/String;)Ldws; a method_57013 withTypeSuffix + m ()Lakq; b comp_2346 dimension + m ()Ljava/lang/String; c comp_2347 type + m (Ljava/lang/String;Lakq;Ljava/lang/String;)V +c dwt net/minecraft/class_4180 net/minecraft/world/level/chunk/storage/SectionStorage + f Lorg/slf4j/Logger; a field_18691 LOGGER + f Ljava/lang/String; b field_31427 SECTIONS_TAG + f Ldcy; c field_27240 levelHeightAccessor + f Ldwu; d field_48759 simpleRegionStorage + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; e field_18692 storage + f Lit/unimi/dsi/fastutil/longs/LongLinkedOpenHashSet; f field_18693 dirty + f Ljava/util/function/Function; g field_24750 codec + f Ljava/util/function/Function; h field_18695 factory + f Lka; i field_39315 registryAccess + f Ldwg; j field_52227 errorReporter + m ()Z a method_40020 hasWork + m (J)V a method_19288 setDirty + m (JLcom/mojang/serialization/Dynamic;)Ljava/util/Optional; a method_28511 method_28511 + m (JZLjava/lang/Object;)V a method_20366 method_20366 + m (Lcom/mojang/serialization/Dynamic;)I a method_20369 getVersion + m (Ldcd;)V a method_20436 flush + m (Ldcd;I)J a method_33637 getKey + m (Ldcd;Lakp;Lub;)V a method_20368 readColumn + m (Ldcd;Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/Dynamic; a method_20367 writeColumn + m (Ldcd;Ljava/lang/Throwable;)Ljava/lang/Void; a method_61006 method_61006 + m (Ljava/util/Map;Lcom/mojang/serialization/DynamicOps;Ljava/lang/String;Ljava/lang/Object;)V a method_28512 method_28512 + m (Ljava/util/function/BooleanSupplier;)V a method_19290 tick + m (J)V b method_19291 onSectionLoad + m (Ldcd;)V b method_19289 readColumn + m (Ldcd;Ljava/lang/Throwable;)Ljava/util/Optional; b method_43412 method_43412 + m (J)Ljava/util/Optional; c method_19293 get + m (Ldcd;)Ljava/util/concurrent/CompletableFuture; c method_20621 tryRead + m (J)Ljava/util/Optional; d method_19294 getOrLoad + m (Ldcd;)V d method_20370 writeColumn + m (J)Z e method_19292 outsideStoredRange + m (J)Ljava/lang/Object; f method_19295 getOrCreate + m (J)V g method_28513 method_28513 + m (J)V h method_19296 method_19296 + m (J)V i method_19297 method_19297 + m (Ldwu;Ljava/util/function/Function;Ljava/util/function/Function;Lka;Ldwg;Ldcy;)V + m ()V +c dwu net/minecraft/class_9172 net/minecraft/world/level/chunk/storage/SimpleRegionStorage + f Ldwl; a field_48760 worker + f Lcom/mojang/datafixers/DataFixer; b field_48761 fixerUpper + f Lazw; c field_48762 dataFixType + m ()Ldws; a method_61007 storageInfo + m (Lcom/mojang/serialization/Dynamic;I)Lcom/mojang/serialization/Dynamic; a method_56571 upgradeChunkTag + m (Ldcd;)Ljava/util/concurrent/CompletableFuture; a method_56572 read + m (Ldcd;Lub;)Ljava/util/concurrent/CompletableFuture; a method_56565 write + m (Lub;I)Lub; a method_56573 upgradeChunkTag + m (Z)Ljava/util/concurrent/CompletableFuture; a method_56574 synchronize + m (Ldws;Ljava/nio/file/Path;Lcom/mojang/datafixers/DataFixer;ZLazw;)V +c dwv net/minecraft/class_6100 net/minecraft/world/level/chunk/storage/package-info +c dww net/minecraft/class_7134 net/minecraft/world/level/dimension/BuiltinDimensionTypes + f Lakq; a field_37666 OVERWORLD + f Lakq; b field_37667 NETHER + f Lakq; c field_37668 END + f Lakq; d field_37669 OVERWORLD_CAVES + f Lakr; e field_37670 OVERWORLD_EFFECTS + f Lakr; f field_37671 NETHER_EFFECTS + f Lakr; g field_37672 END_EFFECTS + m (Ljava/lang/String;)Lakq; a method_41524 register + m ()V + m ()V +c dwx net/minecraft/class_6101 net/minecraft/world/level/dimension/DimensionDefaults + f I a field_31428 OVERWORLD_MIN_Y + f I b field_31429 OVERWORLD_LEVEL_HEIGHT + f I c field_31430 OVERWORLD_GENERATION_HEIGHT + f I d field_31431 OVERWORLD_LOGICAL_HEIGHT + f I e field_31432 NETHER_MIN_Y + f I f field_31433 NETHER_LEVEL_HEIGHT + f I g field_31434 NETHER_GENERATION_HEIGHT + f I h field_31435 NETHER_LOGICAL_HEIGHT + f I i field_31436 END_MIN_Y + f I j field_31437 END_LEVEL_HEIGHT + f I k field_31438 END_GENERATION_HEIGHT + f I l field_31439 END_LOGICAL_HEIGHT + m ()V +c dwy net/minecraft/class_2874 net/minecraft/world/level/dimension/DimensionType + f I A field_31440 MOON_PHASES + f I a field_28133 BITS_FOR_Y + f I b field_33411 MIN_HEIGHT + f I c field_28134 Y_SIZE + f I d field_28135 MAX_Y + f I e field_28136 MIN_Y + f I f field_35478 WAY_ABOVE_MAX_Y + f I g field_35479 WAY_BELOW_MIN_Y + f Lcom/mojang/serialization/Codec; h field_24757 DIRECT_CODEC + f Lyx; i field_51951 STREAM_CODEC + f [F j field_24752 MOON_BRIGHTNESS_PER_PHASE + f Lcom/mojang/serialization/Codec; k field_24756 CODEC + f Ljava/util/OptionalLong; l comp_641 fixedTime + f Z m comp_642 hasSkyLight + f Z n comp_643 hasCeiling + f Z o comp_644 ultraWarm + f Z p comp_645 natural + f D q comp_646 coordinateScale + f Z r comp_648 bedWorks + f Z s comp_649 respawnAnchorWorks + f I t comp_651 minY + f I u comp_652 height + f I v comp_653 logicalHeight + f Lawu; w comp_654 infiniburn + f Lakr; x comp_655 effectsLocation + f F y comp_656 ambientLight + f Ldwy$a; z comp_847 monsterSettings + m ()Z a method_29960 hasFixedTime + m (J)F a method_28528 timeOfDay + m (Lakq;Ljava/nio/file/Path;)Ljava/nio/file/Path; a method_12488 getStorageFolder + m (Lcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/DataResult; a method_28521 parseLegacy + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28522 method_28522 + m (Ldwy;Ldwy;)D a method_31109 getTeleportationScale + m ()Z b method_44220 piglinSafe + m (J)I b method_28531 moonPhase + m ()Z c method_44221 hasRaids + m ()Lbpw; d method_44222 monsterSpawnLightTest + m ()I e method_44223 monsterSpawnBlockLightLimit + m ()Ljava/util/OptionalLong; f comp_641 fixedTime + m ()Z g comp_642 hasSkyLight + m ()Z h comp_643 hasCeiling + m ()Z i comp_644 ultraWarm + m ()Z j comp_645 natural + m ()D k comp_646 coordinateScale + m ()Z l comp_648 bedWorks + m ()Z m comp_649 respawnAnchorWorks + m ()I n comp_651 minY + m ()I o comp_652 height + m ()I p comp_653 logicalHeight + m ()Lawu; q comp_654 infiniburn + m ()Lakr; r comp_655 effectsLocation + m ()F s comp_656 ambientLight + m ()Ldwy$a; t comp_847 monsterSettings + m (Ljava/util/OptionalLong;ZZZZDZZIIILawu;Lakr;FLdwy$a;)V + m ()V +c dwy$a net/minecraft/class_2874$class_7512 net/minecraft/world/level/dimension/DimensionType$MonsterSettings + f Lcom/mojang/serialization/MapCodec; a field_39414 CODEC + f Z b comp_848 piglinSafe + f Z c comp_849 hasRaids + f Lbpw; d comp_850 monsterSpawnLightTest + f I e comp_851 monsterSpawnBlockLightLimit + m ()Z a comp_848 piglinSafe + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_44224 method_44224 + m ()Z b comp_849 hasRaids + m ()Lbpw; c comp_850 monsterSpawnLightTest + m ()I d comp_851 monsterSpawnBlockLightLimit + m (ZZLbpw;I)V + m ()V +c dwz net/minecraft/class_5363 net/minecraft/world/level/dimension/LevelStem + f Lcom/mojang/serialization/Codec; a field_25411 CODEC + f Lakq; b field_25412 OVERWORLD + f Lakq; c field_25413 NETHER + f Lakq; d field_25414 END + f Ljm; e comp_1012 type + f Lduz; f comp_1013 generator + m ()Ljm; a comp_1012 type + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_29568 method_29568 + m ()Lduz; b comp_1013 generator + m (Ljm;Lduz;)V + m ()V +c dxa net/minecraft/class_2876 net/minecraft/world/level/dimension/end/DragonRespawnAnimation + f Ldxa; a field_13097 START + f Ldxa; b field_13095 PREPARING_TO_SUMMON_PILLARS + f Ldxa; c field_13094 SUMMONING_PILLARS + f Ldxa; d field_13098 SUMMONING_DRAGON + f Ldxa; e field_13099 END + f [Ldxa; f field_13096 $VALUES + m ()[Ldxa; a method_36745 $values + m (Laqu;Ldxb;Ljava/util/List;ILjd;)V a method_12507 tick + m (Ljava/lang/String;I)V + m ()V +c dxa$1 net/minecraft/class_2876$1 net/minecraft/world/level/dimension/end/DragonRespawnAnimation$1 + m (Ljava/lang/String;I)V +c dxa$2 net/minecraft/class_2876$2 net/minecraft/world/level/dimension/end/DragonRespawnAnimation$2 + m (Ljava/lang/String;I)V +c dxa$3 net/minecraft/class_2876$3 net/minecraft/world/level/dimension/end/DragonRespawnAnimation$3 + m (Ljava/lang/String;I)V +c dxa$4 net/minecraft/class_2876$4 net/minecraft/world/level/dimension/end/DragonRespawnAnimation$4 + m (Ljava/lang/String;I)V +c dxa$5 net/minecraft/class_2876$5 net/minecraft/world/level/dimension/end/DragonRespawnAnimation$5 + m (Ljava/lang/String;I)V +c dxb net/minecraft/class_2881 net/minecraft/world/level/dimension/end/EndDragonFight + f I A field_13118 respawnTime + f Ljava/util/List; B field_13109 respawnCrystals + f I a field_31445 TIME_BETWEEN_PLAYER_SCANS + f I b field_31441 ARENA_TICKET_LEVEL + f I c field_31442 DRAGON_SPAWN_Y + f Lorg/slf4j/Logger; d field_13112 LOGGER + f I e field_31443 MAX_TICKS_BEFORE_DRAGON_RESPAWN + f I f field_31444 TIME_BETWEEN_CRYSTAL_SCANS + f I g field_31446 ARENA_SIZE_CHUNKS + f I h field_31447 GATEWAY_COUNT + f I i field_31448 GATEWAY_DISTANCE + f Ljava/util/function/Predicate; j field_44876 validPlayer + f Laqr; k field_13119 dragonEvent + f Laqu; l field_13108 level + f Ljd; m field_44877 origin + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; n field_13121 gateways + f Ldth; o field_13110 exitPortalPattern + f I p field_13107 ticksSinceDragonSeen + f I q field_13106 crystalsAlive + f I r field_13105 ticksSinceCrystalsScanned + f I s field_13122 ticksSinceLastPlayerScan + f Z t field_13115 dragonKilled + f Z u field_13114 previouslyKilled + f Z v field_44878 skipArenaLoadedCheck + f Ljava/util/UUID; w field_13116 dragonUUID + f Z x field_13111 needsStateScanning + f Ljd; y field_13117 portalLocation + f Ldxa; z field_13120 respawnStage + m ()V a method_51855 skipArenaLoadedCheck + m (J)Ljava/util/List; a method_52229 method_52229 + m (Lchz;Lbrk;)V a method_12526 onCrystalDestroyed + m (Lcia;)V a method_12528 setDragonKilled + m (Ldxa;)V a method_12521 setRespawnStage + m (Ljava/util/List;)V a method_12529 respawnDragon + m (Ljd;)V a method_12516 spawnNewGateway + m (Ljd;Ljm$c;)V a method_46716 method_46716 + m (Ljz;)Ljava/util/Optional; a method_46717 method_46717 + m (Z)V a method_12518 spawnExitPortal + m ()Ldxb$a; b method_12530 saveData + m (Lcia;)V b method_12532 updateDragon + m ()V c method_12538 tick + m ()V d method_51856 removeAllGateways + m ()I e method_12517 getCrystalsAlive + m ()Z f method_12536 hasPreviouslyKilledDragon + m ()V g method_12522 tryRespawn + m ()V h method_12524 resetSpikeCrystals + m ()Ljava/util/UUID; i method_52179 getDragonUUID + m ()V j method_12515 scanState + m ()V k method_12525 findOrCreateDragon + m ()Z l method_12514 hasActiveExitPortal + m ()Ldth$b; m method_12531 findExitPortal + m ()Z n method_12533 isArenaLoaded + m ()V o method_12520 updatePlayers + m ()V p method_12535 updateCrystalCount + m ()V q method_12519 spawnNewGateway + m ()Lcia; r method_12523 createNewDragon + m (Laqu;JLdxb$a;)V + m (Laqu;JLdxb$a;Ljd;)V + m ()V +c dxb$a net/minecraft/class_2881$class_8576 net/minecraft/world/level/dimension/end/EndDragonFight$Data + f Lcom/mojang/serialization/Codec; a field_44945 CODEC + f Ldxb$a; b field_44946 DEFAULT + f Z c comp_1540 needsStateScanning + f Z d comp_1541 dragonKilled + f Z e comp_1542 previouslyKilled + f Z f comp_1543 isRespawning + f Ljava/util/Optional; g comp_1544 dragonUUID + f Ljava/util/Optional; h comp_1545 exitPortalLocation + f Ljava/util/Optional; i comp_1546 gateways + m ()Z a comp_1540 needsStateScanning + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52230 method_52230 + m ()Z b comp_1541 dragonKilled + m ()Z c comp_1542 previouslyKilled + m ()Z d comp_1543 isRespawning + m ()Ljava/util/Optional; e comp_1544 dragonUUID + m ()Ljava/util/Optional; f comp_1545 exitPortalLocation + m ()Ljava/util/Optional; g comp_1546 gateways + m (ZZZZLjava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c dxc net/minecraft/class_6102 net/minecraft/world/level/dimension/end/package-info +c dxd net/minecraft/class_6103 net/minecraft/world/level/dimension/package-info +c dxe net/minecraft/class_5566 net/minecraft/world/level/entity/ChunkEntities + f Ldcd; a field_27241 pos + f Ljava/util/List; b field_27242 entities + m ()Ldcd; a method_31741 getPos + m ()Ljava/util/stream/Stream; b method_31742 getEntities + m ()Z c method_31743 isEmpty + m (Ldcd;Ljava/util/List;)V +c dxf net/minecraft/class_5567 net/minecraft/world/level/entity/ChunkStatusUpdateListener +c dxg net/minecraft/class_5568 net/minecraft/world/level/entity/EntityAccess + m (Ldxh;)V a method_31744 setLevelCallback + m ()I an method_5628 getId + m (Lbsr$c;)V b method_31745 setRemoved + m ()Lewx; cK method_5829 getBoundingBox + m ()Ljava/util/stream/Stream; cU method_24204 getSelfAndPassengers + m ()Ljava/util/stream/Stream; cV method_31748 getPassengersAndSelf + m ()Ljava/util/UUID; cz method_5667 getUUID + m ()Z dM method_31746 shouldBeSaved + m ()Z dN method_31747 isAlwaysTicking + m ()Ljd; do method_24515 blockPosition +c dxh net/minecraft/class_5569 net/minecraft/world/level/entity/EntityInLevelCallback + f Ldxh; a field_27243 NULL + m ()V a method_31749 onMove + m (Lbsr$c;)V a method_31750 onRemove + m ()V +c dxh$1 net/minecraft/class_5569$1 net/minecraft/world/level/entity/EntityInLevelCallback$1 + m ()V +c dxi net/minecraft/class_5570 net/minecraft/world/level/entity/EntityLookup + f Lorg/slf4j/Logger; a field_27244 LOGGER + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; b field_27245 byId + f Ljava/util/Map; c field_27246 byUuid + m ()Ljava/lang/Iterable; a method_31751 getAllEntities + m (I)Ldxg; a method_31752 getEntity + m (Ldxg;)V a method_31753 add + m (Ldxn;Laxa;)V a method_31754 getEntities + m (Ljava/util/UUID;)Ldxg; a method_31755 getEntity + m ()I b method_31756 count + m (Ldxg;)V b method_31757 remove + m ()V + m ()V +c dxj net/minecraft/class_5571 net/minecraft/world/level/entity/EntityPersistentStorage + m (Ldcd;)Ljava/util/concurrent/CompletableFuture; a method_31759 loadEntities + m (Ldxe;)V a method_31760 storeEntities + m (Z)V a method_31758 flush +c dxk net/minecraft/class_5572 net/minecraft/world/level/entity/EntitySection + f Lorg/slf4j/Logger; a field_27247 LOGGER + f Laxf; b field_27248 storage + f Ldxt; c field_27249 chunkStatus + m ()Z a method_31761 isEmpty + m (Ldxg;)V a method_31764 add + m (Ldxn;Lewx;Laxa;)Laxa$a; a method_31762 getEntities + m (Ldxt;)Ldxt; a method_31763 updateChunkStatus + m (Lewx;Laxa;)Laxa$a; a method_31765 getEntities + m ()Ljava/util/stream/Stream; b method_31766 getEntities + m (Ldxg;)Z b method_31767 remove + m ()Ldxt; c method_31768 getStatus + m ()I d method_31769 size + m (Ljava/lang/Class;Ldxt;)V + m ()V +c dxl net/minecraft/class_5573 net/minecraft/world/level/entity/EntitySectionStorage + f Ljava/lang/Class; a field_27250 entityClass + f Lit/unimi/dsi/fastutil/longs/Long2ObjectFunction; b field_27251 intialSectionVisibility + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; c field_27252 sections + f Lit/unimi/dsi/fastutil/longs/LongSortedSet; d field_27253 sectionIds + m ()Lit/unimi/dsi/fastutil/longs/LongSet; a method_31770 getAllChunksWithExistingSections + m (II)Lit/unimi/dsi/fastutil/longs/LongSortedSet; a method_31771 getChunkSections + m (J)Ljava/util/stream/LongStream; a method_31772 getExistingSectionPositionsInChunk + m (Ldxn;Lewx;Laxa;)V a method_31773 getEntities + m (Ldxn;Lewx;Laxa;Ldxk;)Laxa$a; a method_31778 method_31778 + m (Lewx;Laxa;)V a method_31777 forEachAccessibleNonEmptySection + m (Lewx;Laxa;Ldxk;)Laxa$a; a method_39465 method_39465 + m (Lit/unimi/dsi/fastutil/longs/LongSet;J)V a method_31780 method_31780 + m ()I b method_31781 count + m (J)Ljava/util/stream/Stream; b method_31782 getExistingSectionsInChunk + m (Lewx;Laxa;)V b method_31783 getEntities + m (J)Ldxk; c method_31784 getOrCreateSection + m (J)Ldxk; d method_31785 getSection + m (J)V e method_31786 remove + m (J)J f method_31787 getChunkKeyFromSectionKey + m (J)Ldxk; g method_31788 createSection + m (Ljava/lang/Class;Lit/unimi/dsi/fastutil/longs/Long2ObjectFunction;)V +c dxm net/minecraft/class_5574 net/minecraft/world/level/entity/EntityTickList + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a field_27254 active + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; b field_27255 passive + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; c field_27256 iterated + m ()V a method_31789 ensureActiveIsNotIterated + m (Lbsr;)V a method_31790 add + m (Ljava/util/function/Consumer;)V a method_31791 forEach + m (Lbsr;)V b method_31792 remove + m (Lbsr;)Z c method_31793 contains + m ()V +c dxn net/minecraft/class_5575 net/minecraft/world/level/entity/EntityTypeTest + m ()Ljava/lang/Class; a method_31794 getBaseClass + m (Ljava/lang/Class;)Ldxn; a method_31795 forClass + m (Ljava/lang/Object;)Ljava/lang/Object; a method_31796 tryCast + m (Ljava/lang/Class;)Ldxn; b method_55374 forExactClass +c dxn$1 net/minecraft/class_5575$1 net/minecraft/world/level/entity/EntityTypeTest$1 + f Ljava/lang/Class; a field_27257 val$cls + m (Ljava/lang/Class;)V +c dxn$2 net/minecraft/class_5575$2 net/minecraft/world/level/entity/EntityTypeTest$2 + f Ljava/lang/Class; a field_47524 val$cls + m (Ljava/lang/Class;)V +c dxo net/minecraft/class_5576 net/minecraft/world/level/entity/LevelCallback + m (Ljava/lang/Object;)V a method_43029 onSectionChange + m (Ljava/lang/Object;)V b method_31797 onTrackingEnd + m (Ljava/lang/Object;)V c method_31798 onTrackingStart + m (Ljava/lang/Object;)V d method_31799 onTickingEnd + m (Ljava/lang/Object;)V e method_31800 onTickingStart + m (Ljava/lang/Object;)V f method_31801 onDestroyed + m (Ljava/lang/Object;)V g method_31802 onCreated +c dxp net/minecraft/class_5577 net/minecraft/world/level/entity/LevelEntityGetter + m ()Ljava/lang/Iterable; a method_31803 getAll + m (I)Ldxg; a method_31804 get + m (Ldxn;Laxa;)V a method_31806 get + m (Ldxn;Lewx;Laxa;)V a method_31805 get + m (Lewx;Ljava/util/function/Consumer;)V a method_31807 get + m (Ljava/util/UUID;)Ldxg; a method_31808 get +c dxq net/minecraft/class_5578 net/minecraft/world/level/entity/LevelEntityGetterAdapter + f Ldxi; a field_27258 visibleEntities + f Ldxl; b field_27259 sectionStorage + m (Ldxi;Ldxl;)V +c dxr net/minecraft/class_5579 net/minecraft/world/level/entity/PersistentEntitySectionManager + f Lorg/slf4j/Logger; a field_27260 LOGGER + f Ljava/util/Set; b field_27261 knownUuids + f Ldxo; c field_27262 callbacks + f Ldxj; d field_27263 permanentStorage + f Ldxi; e field_27264 visibleEntityStorage + f Ldxl; f field_27265 sectionStorage + f Ldxp; g field_27266 entityGetter + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; h field_27267 chunkVisibility + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; i field_27268 chunkLoadStatuses + f Lit/unimi/dsi/fastutil/longs/LongSet; j field_27269 chunksToUnload + f Ljava/util/Queue; k field_27270 loadingInbox + m ()V a method_31809 tick + m (J)Z a method_37252 areEntitiesLoaded + m (JLdxk;)V a method_31811 removeSectionIfEmpty + m (JLjava/util/function/Consumer;)Z a method_31812 storeChunkSections + m (Laxn;J)V a method_31813 method_31813 + m (Laxn;Ldxr$b;J)V a method_31814 method_31814 + m (Ldcd;)Z a method_40021 canPositionTick + m (Ldcd;Laql;)V a method_31815 updateChunkStatus + m (Ldcd;Ldxt;)V a method_31816 updateChunkStatus + m (Ldcd;Ljava/lang/Throwable;)Ljava/lang/Void; a method_31817 method_31817 + m (Ldxg;)Z a method_31818 addNewEntity + m (Ldxg;Ldxt;)Ldxt; a method_31832 getEffectiveStatus + m (Ldxg;Z)Z a method_31820 addEntity + m (Ldxk;)Ljava/util/stream/Stream; a method_31821 method_31821 + m (Ldxt;Ldxk;)V a method_31825 method_31825 + m (Ljava/io/Writer;)V a method_31826 dumpSections + m (Ljava/util/UUID;)Z a method_31827 isLoaded + m (Ljava/util/stream/Stream;)V a method_31828 addLegacyChunkEntities + m (Ljd;)Z a method_40022 canPositionTick + m ()V b method_31829 autoSave + m (J)V b method_31810 ensureChunkQueuedForLoad + m (Ldxg;)Z b method_31831 addEntityUuid + m (Ljava/util/stream/Stream;)V b method_31835 addWorldGenChunkEntities + m ()V c method_31836 saveAll + m (J)V c method_31830 requestChunkLoad + m (Ldxg;)V c method_31838 startTicking + m ()Ldxp; d method_31841 getEntityGetter + m (J)Z d method_31837 processChunkUnload + m (Ldxg;)V d method_31843 stopTicking + m ()Ljava/lang/String; e method_31845 gatherStats + m (J)Z e method_31842 method_31842 + m (Ldxg;)V e method_31847 startTracking + m ()I f method_54490 count + m (J)V f method_31846 method_31846 + m (Ldxg;)V f method_31850 stopTracking + m ()V g method_31851 processUnloads + m (J)Z g method_31849 method_31849 + m (Ldxg;)V g method_31852 unloadEntity + m ()V h method_31853 processPendingLoads + m (Ldxg;)V h method_31854 method_31854 + m ()Lit/unimi/dsi/fastutil/longs/LongSet; i method_31855 getAllChunksToSave + m (Ldxg;)V i method_31856 method_31856 + m (Ldxg;)V j method_31857 method_31857 + m (Ldxg;)V k method_31858 method_31858 + m (Ldxg;)Z l method_31859 method_31859 + m (Ldxg;)Z m method_31860 method_31860 + m (Ldxg;)Z n method_31861 method_31861 + m (Ldxg;)Z o method_31862 method_31862 + m (Ldxg;)V p method_31863 method_31863 + m (Ldxg;)V q method_31864 method_31864 + m (Ljava/lang/Class;Ldxo;Ldxj;)V + m ()V +c dxr$a net/minecraft/class_5579$class_5580 net/minecraft/world/level/entity/PersistentEntitySectionManager$Callback + f Ldxr; b field_27271 field_27271 + f Ldxg; c field_27272 entity + f J d field_27273 currentSectionKey + f Ldxk; e field_27274 currentSection + m (Ldxt;Ldxt;)V a method_31865 updateStatus + m (Ldxr;Ldxg;JLdxk;)V +c dxr$b net/minecraft/class_5579$class_5581 net/minecraft/world/level/entity/PersistentEntitySectionManager$ChunkLoadStatus + f Ldxr$b; a field_27275 FRESH + f Ldxr$b; b field_27276 PENDING + f Ldxr$b; c field_27277 LOADED + f [Ldxr$b; d field_27278 $VALUES + m ()[Ldxr$b; a method_36746 $values + m (Ljava/lang/String;I)V + m ()V +c dxs net/minecraft/class_5582 net/minecraft/world/level/entity/TransientEntitySectionManager + f Lorg/slf4j/Logger; a field_27279 LOGGER + f Ldxo; b field_27280 callbacks + f Ldxi; c field_27281 entityStorage + f Ldxl; d field_27282 sectionStorage + f Lit/unimi/dsi/fastutil/longs/LongSet; e field_27283 tickingChunks + f Ldxp; f field_27284 entityGetter + m ()Ldxp; a method_31866 getEntityGetter + m (J)Ldxt; a method_31867 method_31867 + m (JLdxk;)V a method_31868 removeSectionIfEmpty + m (Ldcd;)V a method_31869 startTicking + m (Ldxg;)V a method_31870 addEntity + m (Ldxk;)V a method_31871 method_31871 + m ()I b method_31874 count + m (Ldcd;)V b method_31875 stopTicking + m (Ldxg;)Z b method_31876 method_31876 + m (Ldxk;)V b method_31877 method_31877 + m ()Ljava/lang/String; c method_31879 gatherStats + m (Ldxg;)Z c method_31880 method_31880 + m (Ljava/lang/Class;Ldxo;)V + m ()V +c dxs$a net/minecraft/class_5582$class_5583 net/minecraft/world/level/entity/TransientEntitySectionManager$Callback + f Ldxs; b field_27285 field_27285 + f Ldxg; c field_27286 entity + f J d field_27287 currentSectionKey + f Ldxk; e field_27288 currentSection + m (Ldxs;Ldxg;JLdxk;)V +c dxt net/minecraft/class_5584 net/minecraft/world/level/entity/Visibility + f Ldxt; a field_27289 HIDDEN + f Ldxt; b field_27290 TRACKED + f Ldxt; c field_27291 TICKING + f Z d field_27292 accessible + f Z e field_27293 ticking + f [Ldxt; f field_27294 $VALUES + m ()Z a method_31883 isTicking + m (Laql;)Ldxt; a method_31884 fromFullChunkStatus + m ()Z b method_31885 isAccessible + m ()[Ldxt; c method_36747 $values + m (Ljava/lang/String;IZZ)V + m ()V +c dxu net/minecraft/class_6104 net/minecraft/world/level/entity/package-info +c dxv net/minecraft/class_5707 net/minecraft/world/level/gameevent/BlockPositionSource + f Lcom/mojang/serialization/MapCodec; a field_28137 CODEC + f Lyx; b field_48377 STREAM_CODEC + f Ljd; e field_28138 pos + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_32927 method_32927 + m (Ldxv;)Ljd; a method_56122 method_56122 + m (Ldxv;)Ljd; b method_32928 method_32928 + m (Ljd;)V + m ()V +c dxv$a net/minecraft/class_5707$class_5708 net/minecraft/world/level/gameevent/BlockPositionSource$Type + m ()V +c dxw net/minecraft/class_5715 net/minecraft/world/level/gameevent/DynamicGameEventListener + f Ldyb; a field_28182 listener + f Lkf; b field_28183 lastSection + m ()Ldyb; a method_43152 getListener + m (Laqu;)V a method_42335 add + m (Laqu;Lkf;)V a method_42336 method_42336 + m (Ldcz;Lkf;Ljava/util/function/Consumer;)V a method_32950 ifChunkExists + m (Ldyc;)V a method_32951 method_32951 + m (Laqu;)V b method_32949 remove + m (Ldyc;)V b method_32953 method_32953 + m (Laqu;)V c method_32952 move + m (Ldyc;)V c method_32954 method_32954 + m (Ldyb;)V +c dxx net/minecraft/class_5709 net/minecraft/world/level/gameevent/EntityPositionSource + f Lcom/mojang/serialization/MapCodec; a field_28139 CODEC + f Lyx; b field_48378 STREAM_CODEC + f Lcom/mojang/datafixers/util/Either; e field_38424 entityOrUuidOrId + f F f field_38242 yOffset + m (Lbsr;)V a method_42673 method_42673 + m (Lcom/mojang/datafixers/util/Either;)Ljava/lang/Integer; a method_42676 method_42676 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_32932 method_32932 + m (Ldcw;Lcom/mojang/datafixers/util/Either;)Ljava/util/Optional; a method_42674 method_42674 + m (Ldcw;Ljava/util/UUID;)Lbsr; a method_42675 method_42675 + m (Ldxx;)Ljava/lang/Float; a method_56124 method_56124 + m (Ljava/lang/Integer;)Ljava/util/UUID; a method_42677 method_42677 + m (Ljava/lang/Integer;Ljava/lang/Float;)Ldxx; a method_56125 method_56125 + m (Ljava/util/UUID;)Ljava/lang/Integer; a method_42678 method_42678 + m (Ljava/util/UUID;Ljava/lang/Float;)Ldxx; a method_42679 method_42679 + m ()Ljava/util/UUID; b method_42680 getUuid + m (Lbsr;)Lexc; b method_42337 method_42337 + m (Lcom/mojang/datafixers/util/Either;)Ljava/util/UUID; b method_42682 method_42682 + m (Ldcw;)V b method_42681 resolveEntity + m (Ldxx;)Ljava/lang/Float; b method_42338 method_42338 + m ()I c method_42683 getId + m (Lbsr;F)V + m (Lcom/mojang/datafixers/util/Either;F)V + m ()V +c dxx$a net/minecraft/class_5709$class_5710 net/minecraft/world/level/gameevent/EntityPositionSource$Type + m ()V +c dxy net/minecraft/class_5711 net/minecraft/world/level/gameevent/EuclideanGameEventListenerRegistry + f Ljava/util/List; b field_28142 listeners + f Ljava/util/Set; c field_37673 listenersToRemove + f Ljava/util/List; d field_37674 listenersToAdd + f Z e field_37675 processing + f Laqu; f field_28143 level + f I g field_44636 sectionY + f Ldxy$a; h field_44637 onEmptyAction + m (Laqu;Lexc;Ldyb;)Ljava/util/Optional; a method_32936 getPostableListenerPosition + m (Laqu;ILdxy$a;)V +c dxy$a net/minecraft/class_5711$class_8512 net/minecraft/world/level/gameevent/EuclideanGameEventListenerRegistry$OnEmptyAction +c dxz net/minecraft/class_5712 net/minecraft/world/level/gameevent/GameEvent + f Ljm$c; A field_28159 HIT_GROUND + f Ljm$c; B field_39415 INSTRUMENT_PLAY + f Ljm$c; C field_28146 ITEM_INTERACT_FINISH + f Ljm$c; D field_28145 ITEM_INTERACT_START + f Ljm$c; E field_39485 JUKEBOX_PLAY + f Ljm$c; F field_39486 JUKEBOX_STOP_PLAY + f Ljm$c; G field_28152 LIGHTNING_STRIKE + f Ljm$c; H field_38425 NOTE_BLOCK_PLAY + f Ljm$c; I field_28727 PRIME_FUSE + f Ljm$c; J field_28162 PROJECTILE_LAND + f Ljm$c; K field_28161 PROJECTILE_SHOOT + f Ljm$c; L field_38243 SCULK_SENSOR_TENDRILS_CLICKING + f Ljm$c; M field_28730 SHEAR + f Ljm$c; N field_38244 SHRIEK + f Ljm$c; O field_28160 SPLASH + f Ljm$c; P field_28155 STEP + f Ljm$c; Q field_28156 SWIM + f Ljm$c; R field_39446 TELEPORT + f Ljm$c; S field_45787 UNEQUIP + f Ljm$c; T field_43308 RESONATE_1 + f Ljm$c; U field_43309 RESONATE_2 + f Ljm$c; V field_43310 RESONATE_3 + f Ljm$c; W field_43311 RESONATE_4 + f Ljm$c; X field_43312 RESONATE_5 + f Ljm$c; Y field_43313 RESONATE_6 + f Ljm$c; Z field_43314 RESONATE_7 + f Ljm$c; a field_28174 BLOCK_ACTIVATE + f Ljm$c; aa field_43315 RESONATE_8 + f Ljm$c; ab field_43316 RESONATE_9 + f Ljm$c; ac field_43317 RESONATE_10 + f Ljm$c; ad field_43318 RESONATE_11 + f Ljm$c; ae field_43319 RESONATE_12 + f Ljm$c; af field_43320 RESONATE_13 + f Ljm$c; ag field_43321 RESONATE_14 + f Ljm$c; ah field_43322 RESONATE_15 + f I ai field_31449 DEFAULT_NOTIFICATION_RADIUS + f Lcom/mojang/serialization/Codec; aj field_51910 CODEC + f I ak comp_2193 notificationRadius + f Ljm$c; b field_28172 BLOCK_ATTACH + f Ljm$c; c field_28733 BLOCK_CHANGE + f Ljm$c; d field_28169 BLOCK_CLOSE + f Ljm$c; e field_28175 BLOCK_DEACTIVATE + f Ljm$c; f field_28165 BLOCK_DESTROY + f Ljm$c; g field_28173 BLOCK_DETACH + f Ljm$c; h field_28168 BLOCK_OPEN + f Ljm$c; i field_28164 BLOCK_PLACE + f Ljm$c; j field_28177 CONTAINER_CLOSE + f Ljm$c; k field_28176 CONTAINER_OPEN + f Ljm$c; l field_28734 DRINK + f Ljm$c; m field_28735 EAT + f Ljm$c; n field_28158 ELYTRA_GLIDE + f Ljm$c; o field_28736 ENTITY_DAMAGE + f Ljm$c; p field_37676 ENTITY_DIE + f Ljm$c; q field_42479 ENTITY_DISMOUNT + f Ljm$c; r field_28725 ENTITY_INTERACT + f Ljm$c; s field_42480 ENTITY_MOUNT + f Ljm$c; t field_28738 ENTITY_PLACE + f Ljm$c; u field_45148 ENTITY_ACTION + f Ljm$c; v field_28739 EQUIP + f Ljm$c; w field_28178 EXPLODE + f Ljm$c; x field_28157 FLAP + f Ljm$c; y field_28167 FLUID_PICKUP + f Ljm$c; z field_28166 FLUID_PLACE + m ()I a comp_2193 notificationRadius + m (Ljava/lang/String;)Ljm$c; a method_32939 register + m (Ljava/lang/String;I)Ljm$c; a method_32940 register + m (Ljz;)Ljm; a method_55782 bootstrap + m (I)V + m ()V +c dxz$a net/minecraft/class_5712$class_7397 net/minecraft/world/level/gameevent/GameEvent$Context + f Lbsr; a comp_713 sourceEntity + f Ldtc; b comp_714 affectedState + m ()Lbsr; a comp_713 sourceEntity + m (Lbsr;)Ldxz$a; a method_43285 of + m (Lbsr;Ldtc;)Ldxz$a; a method_43286 of + m (Ldtc;)Ldxz$a; a method_43287 of + m ()Ldtc; b comp_714 affectedState + m (Lbsr;Ldtc;)V +c dxz$b net/minecraft/class_5712$class_7447 net/minecraft/world/level/gameevent/GameEvent$ListenerInfo + f Ljm; a field_39177 gameEvent + f Lexc; b field_39178 source + f Ldxz$a; c field_39179 context + f Ldyb; d field_39180 recipient + f D e field_39181 distanceToRecipient + m ()Ljm; a method_43724 gameEvent + m (Ldxz$b;)I a method_43725 compareTo + m ()Lexc; b method_43726 source + m ()Ldxz$a; c method_43727 context + m ()Ldyb; d method_43728 recipient + m (Ljm;Lexc;Ldxz$a;Ldyb;Lexc;)V +c dya net/minecraft/class_7719 net/minecraft/world/level/gameevent/GameEventDispatcher + f Laqu; a field_40352 level + m (Ljava/util/List;)V a method_45491 handleGameEventMessagesInQueue + m (Ljava/util/List;Ljm;Lexc;Ldxz$a;Ldyb;Lexc;)V a method_45492 method_45492 + m (Ljm;Lexc;Ldxz$a;)V a method_45490 post + m (Laqu;)V +c dyb net/minecraft/class_5714 net/minecraft/world/level/gameevent/GameEventListener + m ()Ldyd; a method_32946 getListenerSource + m (Laqu;Ljm;Ldxz$a;Lexc;)Z a method_32947 handleGameEvent + m ()I b method_32948 getListenerRadius + m ()Ldyb$a; c method_45472 getDeliveryMode +c dyb$a net/minecraft/class_5714$class_7720 net/minecraft/world/level/gameevent/GameEventListener$DeliveryMode + f Ldyb$a; a field_40353 UNSPECIFIED + f Ldyb$a; b field_40354 BY_DISTANCE + f [Ldyb$a; c field_40355 $VALUES + m ()[Ldyb$a; a method_45493 $values + m (Ljava/lang/String;I)V + m ()V +c dyb$b net/minecraft/class_5714$class_8513 net/minecraft/world/level/gameevent/GameEventListener$Provider + m ()Ldyb; c method_51358 getListener +c dyc net/minecraft/class_5713 net/minecraft/world/level/gameevent/GameEventListenerRegistry + f Ldyc; a field_28181 NOOP + m ()Z a method_32942 isEmpty + m (Ldyb;)V a method_32944 register + m (Ljm;Lexc;Ldxz$a;Ldyc$a;)Z a method_32943 visitInRangeListeners + m (Ldyb;)V b method_32945 unregister + m ()V +c dyc$1 net/minecraft/class_5713$1 net/minecraft/world/level/gameevent/GameEventListenerRegistry$1 + m ()V +c dyc$a net/minecraft/class_5713$class_7721 net/minecraft/world/level/gameevent/GameEventListenerRegistry$ListenerVisitor +c dyd net/minecraft/class_5716 net/minecraft/world/level/gameevent/PositionSource + f Lcom/mojang/serialization/Codec; c field_28184 CODEC + f Lyx; d field_48379 STREAM_CODEC + m ()Ldye; a method_32955 getType + m (Ldcw;)Ljava/util/Optional; a method_32956 getPosition + m ()V +c dye net/minecraft/class_5717 net/minecraft/world/level/gameevent/PositionSourceType + f Ldye; a field_28185 BLOCK + f Ldye; b field_28186 ENTITY + m ()Lcom/mojang/serialization/MapCodec; a method_32957 codec + m (Ljava/lang/String;Ldye;)Ldye; a method_32959 register + m ()Lyx; b method_56123 streamCodec + m ()V +c dyf net/minecraft/class_6105 net/minecraft/world/level/gameevent/package-info +c dyg net/minecraft/class_7269 net/minecraft/world/level/gameevent/vibrations/VibrationInfo + f Lcom/mojang/serialization/Codec; a field_38245 CODEC + f Ljm; b comp_657 gameEvent + f F c comp_658 distance + f Lexc; d comp_659 pos + f Ljava/util/UUID; e comp_660 uuid + f Ljava/util/UUID; f comp_681 projectileOwnerUuid + f Lbsr; g comp_661 entity + m ()Ljm; a comp_657 gameEvent + m (Laqu;)Ljava/util/Optional; a method_42348 getEntity + m (Lbsr;)Ljava/util/UUID; a method_42684 getProjectileOwner + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42349 method_42349 + m (Ldyg;)Ljava/util/Optional; a method_42686 method_42686 + m (Ljm;Ljava/lang/Float;Lexc;Ljava/util/Optional;Ljava/util/Optional;)Ldyg; a method_42685 method_42685 + m ()F b comp_658 distance + m (Laqu;)Ljava/util/Optional; b method_42687 getProjectileOwner + m (Lbsr;)Lcnp; b method_42688 method_42688 + m (Ldyg;)Ljava/util/Optional; b method_42689 method_42689 + m ()Lexc; c comp_659 pos + m (Laqu;)Ljava/util/Optional; c method_42690 method_42690 + m (Lbsr;)Z c method_42691 method_42691 + m ()Ljava/util/UUID; d comp_660 uuid + m (Laqu;)Ljava/util/Optional; d method_42350 method_42350 + m ()Ljava/util/UUID; e comp_681 projectileOwnerUuid + m ()Lbsr; f comp_661 entity + m (Ljm;FLexc;Ljava/util/UUID;Ljava/util/UUID;)V + m (Ljm;FLexc;Lbsr;)V + m (Ljm;FLexc;Ljava/util/UUID;Ljava/util/UUID;Lbsr;)V + m ()V +c dyh net/minecraft/class_7722 net/minecraft/world/level/gameevent/vibrations/VibrationSelector + f Lcom/mojang/serialization/Codec; a field_40359 CODEC + f Ljava/util/Optional; b field_40360 currentVibrationData + m ()V a method_45501 startOver + m (J)Ljava/util/Optional; a method_45502 chosenCandidate + m (JLdyg;)Lorg/apache/commons/lang3/tuple/Pair; a method_45503 method_45503 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_45504 method_45504 + m (Ldyg;J)V a method_45505 addCandidate + m (Ldyh;)Ljava/lang/Long; a method_45506 method_45506 + m (Ldyg;J)Z b method_45507 shouldReplaceVibration + m (Ldyh;)Ljava/util/Optional; b method_45508 method_45508 + m (Ljava/util/Optional;J)V + m ()V + m ()V +c dyi net/minecraft/class_8514 net/minecraft/world/level/gameevent/vibrations/VibrationSystem + f Ljava/util/List; f_ field_44638 RESONANCE_EVENTS + f I g_ field_47839 DEFAULT_VIBRATION_FREQUENCY + f Ljava/util/function/ToIntFunction; h_ field_44639 VIBRATION_FREQUENCY_FOR_EVENT + m (Lakq;)I a method_51385 getGameEventFrequency + m (Lit/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap;)V a method_51383 method_51383 + m (FI)I a_ method_51384 getRedstoneStrengthForDistance + m (Ljm;)I a_ method_55783 getGameEventFrequency + m (I)Lakq; b method_51386 getResonanceEventByFrequency + m ()Ldyi$a; gm method_51298 getVibrationData + m ()Ldyi$d; gn method_51299 getVibrationUser + m ()V +c dyi$a net/minecraft/class_8514$class_8515 net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Data + f Lcom/mojang/serialization/Codec; a field_44640 CODEC + f Ljava/lang/String; b field_44641 NBT_TAG_KEY + f Ldyg; c field_44642 currentVibration + f I d field_44643 travelTimeInTicks + f Ldyh; e field_44644 selectionStrategy + f Z f field_44645 reloadVibrationParticle + m ()Ldyh; a method_51387 getSelectionStrategy + m (I)V a method_51388 setTravelTimeInTicks + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51389 method_51389 + m (Ldyg;)V a method_51390 setCurrentVibration + m (Ldyi$a;)Ljava/util/Optional; a method_51391 method_51391 + m (Ljava/util/Optional;Ldyh;Ljava/lang/Integer;)Ldyi$a; a method_51392 method_51392 + m (Z)V a method_51393 setReloadVibrationParticle + m ()Ldyg; b method_51394 getCurrentVibration + m ()I c method_51395 getTravelTimeInTicks + m ()V d method_51396 decrementTravelTime + m ()Z e method_51397 shouldReloadVibrationParticle + m (Ldyg;Ldyh;IZ)V + m ()V + m ()V +c dyi$b net/minecraft/class_8514$class_8516 net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Listener + f Ldyi; a field_44646 system + m (Laqu;Ldyi$a;Ljm;Ldxz$a;Lexc;Lexc;)V a method_51399 scheduleVibration + m (Laqu;Ljm;Ldxz$a;Lexc;Lexc;)V a method_51398 method_51398 + m (Ldcw;Lexc;Lexc;)Z a method_51400 isOccluded + m (Ldtc;)Z a method_51401 method_51401 + m (Ljd;Ljd;)F a method_51402 distanceBetweenInBlocks + m (Laqu;Ljm;Ldxz$a;Lexc;)V b method_51403 forceScheduleVibration + m (Ldyi;)V +c dyi$c net/minecraft/class_8514$class_8517 net/minecraft/world/level/gameevent/vibrations/VibrationSystem$Ticker + m (Laqu;Ldyi$a;Ldyi$d;)V a method_51404 trySelectAndScheduleVibration + m (Laqu;Ldyi$a;Ldyi$d;Ldyg;)Z a method_51405 receiveVibration + m (Ldcw;Ldyi$a;Ldyi$d;)V a method_51406 tick + m (Ldcw;Ljd;)Z a method_51407 areAdjacentChunksTicking + m (Ldyi$a;Ldyi$d;Laqu;Ldyg;)V a method_51408 method_51408 + m (Laqu;Ldyi$a;Ldyi$d;)V b method_51409 tryReloadVibrationParticle +c dyi$d net/minecraft/class_8514$class_5719 net/minecraft/world/level/gameevent/vibrations/VibrationSystem$User + m ()I a method_49797 getListenerRadius + m (F)I a method_51410 calculateTravelTimeInTicks + m (Laqu;Ljd;Ljm;Lbsr;Lbsr;F)V a method_32969 onReceiveVibration + m (Laqu;Ljd;Ljm;Ldxz$a;)Z a method_32970 canReceiveVibration + m (Ljm;Ldxz$a;)Z a method_42324 isValidVibration + m ()Ldyd; b method_51300 getPositionSource + m ()Lawu; c method_42210 getListenableEvents + m ()Z d method_43695 canTriggerAvoidVibration + m ()V e method_42672 onDataChanged + m ()Z f method_51363 requiresAdjacentChunksToBeTicking +c dyj net/minecraft/class_6106 net/minecraft/world/level/gameevent/vibrations/package-info +c dyk net/minecraft/class_6350 net/minecraft/world/level/levelgen/Aquifer + m ()Z a method_33742 shouldScheduleFluidUpdate + m (Ldyk$a;)Ldyk; a method_36381 createDisabled + m (Ldyr$b;D)Ldtc; a method_38317 computeSubstance + m (Ldzc;Ldcd;Ldze;Ldzl;IILdyk$a;)Ldyk; a method_36382 create +c dyk$1 net/minecraft/class_6350$1 net/minecraft/world/level/levelgen/Aquifer$1 + f Ldyk$a; a field_34577 val$fluidRule + m (Ldyk$a;)V +c dyk$a net/minecraft/class_6350$class_6565 net/minecraft/world/level/levelgen/Aquifer$FluidPicker +c dyk$b net/minecraft/class_6350$class_6351 net/minecraft/world/level/levelgen/Aquifer$FluidStatus + f I a field_33576 fluidLevel + f Ldtc; b field_33577 fluidType + m (I)Ldtc; a method_38318 at + m (ILdtc;)V +c dyk$c net/minecraft/class_6350$class_5832 net/minecraft/world/level/levelgen/Aquifer$NoiseBasedAquifer + f I A field_28825 gridSizeX + f I B field_28826 gridSizeZ + f [[I C field_34581 SURFACE_SAMPLING_OFFSETS_IN_CHUNKS + f I a field_31451 X_RANGE + f I b field_31452 Y_RANGE + f I c field_31453 Z_RANGE + f I d field_31454 X_SEPARATION + f I e field_31455 Y_SEPARATION + f I f field_31456 Z_SEPARATION + f I g field_31457 X_SPACING + f I h field_31458 Y_SPACING + f I i field_31459 Z_SPACING + f I j field_36220 MAX_REASONABLE_DISTANCE_TO_AQUIFER_CENTER + f D k field_36221 FLOWING_UPDATE_SIMULARITY + f Ldzc; l field_34578 noiseChunk + f Ldyr; m field_28813 barrierNoise + f Ldyr; n field_35122 fluidLevelFloodednessNoise + f Ldyr; o field_35123 fluidLevelSpreadNoise + f Ldyr; p field_33575 lavaNoise + f Ldzl; q field_34579 positionalRandomFactory + f [Ldyk$b; r field_28816 aquiferCache + f [J s field_28817 aquiferLocationCache + f Ldyk$a; t field_34580 globalFluidPicker + f Ldyr; u field_38246 erosion + f Ldyr; v field_38247 depth + f Z w field_28820 shouldScheduleFluidUpdate + f I x field_28822 minGridX + f I y field_28823 minGridY + f I z field_28824 minGridZ + m (I)I a method_33734 gridX + m (II)D a method_33736 similarity + m (III)I a method_33741 getIndex + m (IIII)I a method_42352 computeRandomizedFluidSurfaceLevel + m (IIILdyk$b;I)Ldtc; a method_42353 computeFluidType + m (IIILdyk$b;IZ)I a method_42354 computeSurfaceLevel + m (J)Ldyk$b; a method_33738 getAquiferStatus + m (Ldyr$b;Lorg/apache/commons/lang3/mutable/MutableDouble;Ldyk$b;Ldyk$b;)D a method_33735 calculatePressure + m (I)I b method_33740 gridY + m (III)Ldyk$b; b method_40463 computeFluid + m (I)I c method_33743 gridZ + m (Ldzc;Ldcd;Ldze;Ldzl;IILdyk$a;)V + m ()V +c dyl net/minecraft/class_5817 net/minecraft/world/level/levelgen/Beardifier + f I a field_31461 BEARD_KERNEL_RADIUS + f I f field_31462 BEARD_KERNEL_SIZE + f [F g field_28741 BEARD_KERNEL + f Lit/unimi/dsi/fastutil/objects/ObjectListIterator; h field_28744 pieceIterator + f Lit/unimi/dsi/fastutil/objects/ObjectListIterator; i field_28745 junctionIterator + m (DDD)D a method_33832 getBuryContribution + m (I)Z a method_42692 isInKernelRange + m (IDI)D a method_42693 computeBeardContribution + m (III)D a method_33642 computeBeardContribution + m (IIII)D a method_33641 getBeardContribution + m (Ldcd;Lit/unimi/dsi/fastutil/objects/ObjectList;IILit/unimi/dsi/fastutil/objects/ObjectList;Lejz;)V a method_42694 method_42694 + m (Lddq;Ldcd;)Ldyl; a method_42695 forStructuresInChunk + m (Lejr;)Z a method_42696 method_42696 + m ([F)V a method_33640 method_33640 + m (Lit/unimi/dsi/fastutil/objects/ObjectListIterator;Lit/unimi/dsi/fastutil/objects/ObjectListIterator;)V + m ()V +c dyl$1 net/minecraft/class_5817$1 net/minecraft/world/level/levelgen/Beardifier$1 + f [I a field_38426 $SwitchMap$net$minecraft$world$level$levelgen$structure$TerrainAdjustment + m ()V +c dyl$a net/minecraft/class_5817$class_7301 net/minecraft/world/level/levelgen/Beardifier$Rigid + f Lejj; a comp_682 box + f Lekc; b comp_683 terrainAdjustment + f I c comp_684 groundLevelDelta + m ()Lejj; a comp_682 box + m ()Lekc; b comp_683 terrainAdjustment + m ()I c comp_684 groundLevelDelta + m (Lejj;Lekc;I)V +c dym net/minecraft/class_6746 net/minecraft/world/level/levelgen/BelowZeroRetrogen + f Lcom/mojang/serialization/Codec; a field_35480 CODEC + f Ldcy; b field_35591 UPGRADE_HEIGHT_ACCESSOR + f Ljava/util/BitSet; c field_35481 EMPTY + f Lcom/mojang/serialization/Codec; d field_35482 BITSET_CODEC + f Lcom/mojang/serialization/Codec; e field_35483 NON_EMPTY_CHUNK_STATUS + f Ljava/util/Set; f field_36192 RETAINED_RETROGEN_BIOMES + f Ldvz; g field_35484 targetStatus + f Ljava/util/BitSet; h field_35485 missingBedrock + m ()Ldvz; a method_39319 targetStatus + m (II)Z a method_39895 hasBedrockHole + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39321 method_39321 + m (Lddz;Lduy;)Lddz; a method_39767 getBiomeResolver + m (Lddz;Ljava/util/function/Predicate;Lduy;IIILdef$f;)Ljm; a method_39768 method_39768 + m (Ldvs;)V a method_39467 replaceOldBedrock + m (Ldvs;Ljd;)V a method_39896 method_39896 + m (Ldvz;)Lcom/mojang/serialization/DataResult; a method_39322 method_39322 + m (Ldym;)Ljava/util/Optional; a method_39323 method_39323 + m (Ljava/util/BitSet;)Ljava/util/stream/LongStream; a method_39324 method_39324 + m (Ljava/util/stream/LongStream;)Ljava/util/BitSet; a method_39325 method_39325 + m (Lub;)Ldym; a method_39326 read + m ()Z b method_39897 hasBedrockHoles + m (Ldvs;)V b method_39898 applyBedrockMask + m (Ldvs;Ljd;)V b method_39471 method_39471 + m ()Ljava/lang/String; c method_49529 method_49529 + m (Ldvz;Ljava/util/Optional;)V + m ()V +c dym$1 net/minecraft/class_6746$1 net/minecraft/world/level/levelgen/BelowZeroRetrogen$1 + m ()V +c dyn net/minecraft/class_6566 net/minecraft/world/level/levelgen/BitRandomSource + f F b field_34582 FLOAT_MULTIPLIER + f D c field_34583 DOUBLE_MULTIPLIER + m (I)I c method_43156 next +c dyo net/minecraft/class_5721 net/minecraft/world/level/levelgen/Column + m ()Ldyo; a method_32980 line + m (I)Ldyo; a method_32981 below + m (II)Ldyo$b; a method_35326 around + m (Lddc;ILjava/util/function/Predicate;Ljava/util/function/Predicate;Ljd$a;ILji;)Ljava/util/OptionalInt; a method_34280 scanDirection + m (Lddc;Ljd;ILjava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/Optional; a method_32982 scan + m (Ljava/util/OptionalInt;)Ldyo; a method_32983 withFloor + m (Ljava/util/OptionalInt;Ljava/util/OptionalInt;)Ldyo; a method_32984 create + m ()Ljava/util/OptionalInt; b method_32985 getCeiling + m (I)Ldyo; b method_35327 fromHighest + m (II)Ldyo$b; b method_32986 inside + m (Ljava/util/OptionalInt;)Ldyo; b method_35328 withCeiling + m ()Ljava/util/OptionalInt; c method_32987 getFloor + m (I)Ldyo; c method_32988 above + m ()Ljava/util/OptionalInt; d method_33385 getHeight + m (I)Ldyo; d method_35329 fromLowest + m ()V +c dyo$a net/minecraft/class_5721$class_5722 net/minecraft/world/level/levelgen/Column$Line + f Ldyo$a; a field_28197 INSTANCE + m ()V + m ()V +c dyo$b net/minecraft/class_5721$class_5723 net/minecraft/world/level/levelgen/Column$Range + f I a field_28198 floor + f I b field_28199 ceiling + m ()I e method_32990 ceiling + m ()I f method_32991 floor + m ()I g method_32992 height + m (II)V +c dyo$c net/minecraft/class_5721$class_5724 net/minecraft/world/level/levelgen/Column$Ray + f I a field_28200 edge + f Z b field_28201 pointingUp + m (IZ)V +c dyp net/minecraft/class_2891 net/minecraft/world/level/levelgen/DebugLevelSource + f Lcom/mojang/serialization/MapCodec; c field_24768 CODEC + f Ldtc; d field_13162 AIR + f Ldtc; e field_13164 BARRIER + f I f field_31465 HEIGHT + f I g field_31466 BARRIER_HEIGHT + f I h field_31467 BLOCK_MARGIN + f Ljava/util/List; i field_13163 ALL_BLOCKS + f I j field_13161 GRID_WIDTH + f I k field_13160 GRID_HEIGHT + m (II)Ldtc; a method_12578 getBlockStateFor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_40465 method_40465 + m (Ldfy;)Ljava/util/stream/Stream; a method_12579 method_12579 + m (Ljm$c;)V + m ()V +c dyq net/minecraft/class_6567 net/minecraft/world/level/levelgen/Density + f D a field_34584 SURFACE + f D b field_34585 UNRECOVERABLY_DENSE + f D c field_34586 UNRECOVERABLY_THIN + m ()V +c dyr net/minecraft/class_6910 net/minecraft/world/level/levelgen/DensityFunction + f Lcom/mojang/serialization/Codec; b field_37057 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; c field_37058 CODEC + f Lcom/mojang/serialization/Codec; d field_37059 HOLDER_HELPER_CODEC + m ()D a comp_377 minValue + m (DD)Ldyr; a method_40468 clamp + m (Ldyr$b;)D a method_40464 compute + m (Ldyr$f;)Ldyr; a method_40469 mapAll + m (Ldyr;)Ljm; a method_41061 method_41061 + m ([DLdyr$a;)V a method_40470 fillArray + m ()D b comp_378 maxValue + m ()Layh; c method_41062 codec + m ()Ldyr; d method_40471 abs + m ()Ldyr; e method_40472 square + m ()Ldyr; f method_40473 cube + m ()Ldyr; g method_40474 halfNegative + m ()Ldyr; h method_40475 quarterNegative + m ()Ldyr; i method_40476 squeeze + m ()V +c dyr$a net/minecraft/class_6910$class_6911 net/minecraft/world/level/levelgen/DensityFunction$ContextProvider + m (I)Ldyr$b; a method_40477 forIndex + m ([DLdyr;)V a method_40478 fillAllDirectly +c dyr$b net/minecraft/class_6910$class_6912 net/minecraft/world/level/levelgen/DensityFunction$FunctionContext + m ()I a comp_371 blockX + m ()I b comp_372 blockY + m ()I c comp_373 blockZ + m ()Leaa; d method_39327 getBlender +c dyr$c net/minecraft/class_6910$class_7270 net/minecraft/world/level/levelgen/DensityFunction$NoiseHolder + f Lcom/mojang/serialization/Codec; a field_38248 CODEC + f Ljm; b comp_662 noiseData + f Leoh; c comp_663 noise + m ()D a method_42355 maxValue + m (DDD)D a method_42356 getValue + m (Ljm;)Ldyr$c; a method_42357 method_42357 + m ()Ljm; b comp_662 noiseData + m ()Leoh; c comp_663 noise + m (Ljm;)V + m (Ljm;Leoh;)V + m ()V +c dyr$d net/minecraft/class_6910$class_6913 net/minecraft/world/level/levelgen/DensityFunction$SimpleFunction +c dyr$e net/minecraft/class_6910$class_6914 net/minecraft/world/level/levelgen/DensityFunction$SinglePointContext + f I a comp_371 blockX + f I b comp_372 blockY + f I c comp_373 blockZ + m (III)V +c dyr$f net/minecraft/class_6910$class_6915 net/minecraft/world/level/levelgen/DensityFunction$Visitor + m (Ldyr$c;)Ldyr$c; a method_42358 visitNoise +c dys net/minecraft/class_6916 net/minecraft/world/level/levelgen/DensityFunctions + f D a field_37060 MAX_REASONABLE_NOISE_VALUE + f Lcom/mojang/serialization/Codec; b field_37061 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; c field_37062 CODEC + f Lcom/mojang/serialization/Codec; d field_37063 NOISE_VALUE_CODEC + m ()Ldyr; a method_40479 zero + m (D)Ldyr; a method_40480 constant + m (IIDD)Ldyr; a method_40481 yClampedGradient + m (J)Ldyr; a method_40482 endIslands + m (Laxp;)Ldyr; a method_41528 spline + m (Lcom/mojang/datafixers/util/Either;)Ldyr; a method_41063 method_41063 + m (Lcom/mojang/serialization/Codec;Ljava/util/function/Function;Ljava/util/function/Function;)Layh; a method_41064 singleArgumentCodec + m (Lcom/mojang/serialization/MapCodec;)Layh; a method_41065 makeCodec + m (Ldyr;)Ldyr; a method_40483 interpolated + m (Ldyr;DD)Ldyr; a method_40484 mapFromUnitTo + m (Ldyr;DDLdyr;Ldyr;)Ldyr; a method_40485 rangeChoice + m (Ldyr;DLdyr;)Ldyr; a method_42359 lerp + m (Ldyr;Ldyr;)Ldyr; a method_40486 add + m (Ldyr;Ldyr;DLjm;)Ldyr; a method_40487 shiftedNoise2d + m (Ldyr;Ldyr;Ldyr;)Ldyr; a method_40488 lerp + m (Ldyr;Ldys$k$a;)Ldyr; a method_40490 map + m (Ldyr;Ljm;Ldys$z$a;)Ldyr; a method_40491 weirdScaledSampler + m (Ljava/util/function/BiFunction;Ljava/util/function/Function;Ljava/util/function/Function;)Layh; a method_41068 doubleFunctionArgumentCodec + m (Ljava/util/function/Function;Ljava/util/function/Function;)Layh; a method_41069 singleFunctionArgumentCodec + m (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BiFunction;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41070 method_41070 + m (Ljm;)Ldyr; a method_40493 noise + m (Ljm;D)Ldyr; a method_40494 noise + m (Ljm;DD)Ldyr; a method_40495 mappedNoise + m (Ljm;DDD)Ldyr; a method_40497 mappedNoise + m (Ljm;DDDD)Ldyr; a method_40496 mappedNoise + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_41066 bootstrap + m (Ljz;Ljava/lang/String;Layh;)Lcom/mojang/serialization/MapCodec; a method_41067 register + m ()Ldyr; b method_40498 blendAlpha + m (Ldyr;)Ldyr; b method_40499 flatCache + m (Ldyr;Ldyr;)Ldyr; b method_40500 mul + m (Ljm;)Ldyr; b method_40501 shiftA + m (Ljm;DD)Ldyr; b method_40502 noise + m ()Ldyr; c method_40503 blendOffset + m (Ldyr;)Ldyr; c method_40504 cache2d + m (Ldyr;Ldyr;)Ldyr; c method_40505 min + m (Ljm;)Ldyr; c method_40506 shiftB + m (Ldyr;)Ldyr; d method_40507 cacheOnce + m (Ldyr;Ldyr;)Ldyr; d method_40508 max + m (Ljm;)Ldyr; d method_40509 shift + m (Ldyr;)Ldyr; e method_40510 cacheAllInCell + m (Ldyr;)Ldyr; f method_40512 blendDensity + m (Ldyr;)Lcom/mojang/datafixers/util/Either; g method_41071 method_41071 + m (Ldyr;)Lcom/mojang/serialization/MapCodec; h method_42360 method_42360 + m ()V + m ()V +c dys$a net/minecraft/class_6916$class_6917 net/minecraft/world/level/levelgen/DensityFunctions$Ap2 + f Ldys$y$a; e comp_374 type + f Ldyr; f comp_375 argument1 + f Ldyr; g comp_376 argument2 + f D h comp_377 minValue + f D i comp_378 maxValue + m (Ldys$y$a;Ldyr;Ldyr;DD)V +c dys$b net/minecraft/class_6916$class_7049 net/minecraft/world/level/levelgen/DensityFunctions$BeardifierMarker + f Ldys$b; a field_37076 INSTANCE + f [Ldys$b; f field_37077 $VALUES + m ()[Ldys$b; j method_41077 $values + m (Ljava/lang/String;I)V + m ()V +c dys$c net/minecraft/class_6916$class_7050 net/minecraft/world/level/levelgen/DensityFunctions$BeardifierOrMarker + f Layh; e field_37078 CODEC + m ()V +c dys$d net/minecraft/class_6916$class_6919 net/minecraft/world/level/levelgen/DensityFunctions$BlendAlpha + f Ldys$d; a field_36549 INSTANCE + f Layh; e field_37079 CODEC + f [Ldys$d; f field_36550 $VALUES + m ()[Ldys$d; j method_40517 $values + m (Ljava/lang/String;I)V + m ()V +c dys$e net/minecraft/class_6916$class_6920 net/minecraft/world/level/levelgen/DensityFunctions$BlendDensity + f Ldyr; a comp_379 input + f Layh; e field_37080 CODEC + m (Ldyr;)V + m ()V +c dys$f net/minecraft/class_6916$class_6921 net/minecraft/world/level/levelgen/DensityFunctions$BlendOffset + f Ldys$f; a field_36551 INSTANCE + f Layh; e field_37081 CODEC + f [Ldys$f; f field_36552 $VALUES + m ()[Ldys$f; j method_40519 $values + m (Ljava/lang/String;I)V + m ()V +c dys$g net/minecraft/class_6916$class_6922 net/minecraft/world/level/levelgen/DensityFunctions$Clamp + f Layh; a field_37082 CODEC + f Ldyr; e comp_380 input + f D f comp_377 minValue + f D g comp_378 maxValue + f Lcom/mojang/serialization/MapCodec; h field_37083 DATA_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41078 method_41078 + m (Ldyr;DD)V + m ()V +c dys$h net/minecraft/class_6916$class_6923 net/minecraft/world/level/levelgen/DensityFunctions$Constant + f D a comp_381 value + f Layh; e field_37084 CODEC + f Ldys$h; f field_36553 ZERO + m ()D j comp_381 value + m (D)V + m ()V +c dys$i net/minecraft/class_6916$class_6924 net/minecraft/world/level/levelgen/DensityFunctions$EndIslandDensityFunction + f Layh; a field_37085 CODEC + f F e field_37677 ISLAND_THRESHOLD + f Leok; f field_36554 islandNoise + m (Leok;II)F a method_41529 getHeightValue + m (J)V + m ()V +c dys$j net/minecraft/class_6916$class_7051 net/minecraft/world/level/levelgen/DensityFunctions$HolderHolder + f Ljm; a comp_468 function + m ()Ljm; j comp_468 function + m (Ljm;)V +c dys$k net/minecraft/class_6916$class_6925 net/minecraft/world/level/levelgen/DensityFunctions$Mapped + f Ldys$k$a; a comp_382 type + f Ldyr; e comp_380 input + f D f comp_377 minValue + f D g comp_378 maxValue + m (Ldys$k$a;D)D a method_40521 transform + m (Ldys$k$a;Ldyr;)Ldys$k; a method_41079 create + m (Ldyr$f;)Ldys$k; b method_41080 mapAll + m ()Ldys$k$a; k comp_382 type + m (Ldys$k$a;Ldyr;DD)V +c dys$k$a net/minecraft/class_6916$class_6925$class_6926 net/minecraft/world/level/levelgen/DensityFunctions$Mapped$Type + f Ldys$k$a; a field_36555 ABS + f Ldys$k$a; b field_36556 SQUARE + f Ldys$k$a; c field_36557 CUBE + f Ldys$k$a; d field_36558 HALF_NEGATIVE + f Ldys$k$a; e field_36559 QUARTER_NEGATIVE + f Ldys$k$a; f field_36560 SQUEEZE + f Ljava/lang/String; g field_37086 name + f Layh; h field_37087 codec + f [Ldys$k$a; i field_36561 $VALUES + m ()[Ldys$k$a; a method_40522 $values + m (Ldyr;)Ldys$k; a method_41081 method_41081 + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dys$l net/minecraft/class_6916$class_6927 net/minecraft/world/level/levelgen/DensityFunctions$Marker + f Ldys$l$a; a comp_383 type + f Ldyr; e comp_469 wrapped + m (Ldys$l$a;Ldyr;)V +c dys$l$a net/minecraft/class_6916$class_6927$class_6928 net/minecraft/world/level/levelgen/DensityFunctions$Marker$Type + f Ldys$l$a; a field_36562 Interpolated + f Ldys$l$a; b field_36563 FlatCache + f Ldys$l$a; c field_36564 Cache2D + f Ldys$l$a; d field_36565 CacheOnce + f Ldys$l$a; e field_36566 CacheAllInCell + f Ljava/lang/String; f field_37088 name + f Layh; g field_37089 codec + f [Ldys$l$a; h field_36567 $VALUES + m ()[Ldys$l$a; a method_40523 $values + m (Ldyr;)Ldys$m; a method_41082 method_41082 + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dys$m net/minecraft/class_6916$class_7052 net/minecraft/world/level/levelgen/DensityFunctions$MarkerOrMarked + m ()Ldys$l$a; j comp_383 type + m ()Ldyr; k comp_469 wrapped +c dys$n net/minecraft/class_6916$class_6929 net/minecraft/world/level/levelgen/DensityFunctions$MulOrAdd + f Ldys$n$a; e comp_385 specificType + f Ldyr; f comp_380 input + f D g comp_377 minValue + f D h comp_378 maxValue + f D i comp_386 argument + m ()Ldys$n$a; m comp_385 specificType + m ()D n comp_386 argument + m (Ldys$n$a;Ldyr;DDD)V +c dys$n$a net/minecraft/class_6916$class_6929$class_6930 net/minecraft/world/level/levelgen/DensityFunctions$MulOrAdd$Type + f Ldys$n$a; a field_36568 MUL + f Ldys$n$a; b field_36569 ADD + f [Ldys$n$a; c field_36570 $VALUES + m ()[Ldys$n$a; a method_40524 $values + m (Ljava/lang/String;I)V + m ()V +c dys$o net/minecraft/class_6916$class_6931 net/minecraft/world/level/levelgen/DensityFunctions$Noise + f Lcom/mojang/serialization/MapCodec; a field_37090 DATA_CODEC + f Layh; e field_37091 CODEC + f Ldyr$c; f comp_387 noise + f D g comp_388 xzScale + f D h comp_389 yScale + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41083 method_41083 + m ()Ldyr$c; j comp_387 noise + m ()D k comp_388 xzScale + m ()D l comp_389 yScale + m (Ldyr$c;DD)V + m ()V +c dys$p net/minecraft/class_6916$class_6932 net/minecraft/world/level/levelgen/DensityFunctions$PureTransformer + m (D)D a method_40520 transform + m ()Ldyr; aG_ comp_380 input +c dys$q net/minecraft/class_6916$class_6933 net/minecraft/world/level/levelgen/DensityFunctions$RangeChoice + f Lcom/mojang/serialization/MapCodec; a field_37092 DATA_CODEC + f Layh; e field_37093 CODEC + f Ldyr; f comp_390 input + f D g comp_391 minInclusive + f D h comp_392 maxExclusive + f Ldyr; i comp_393 whenInRange + f Ldyr; j comp_394 whenOutOfRange + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41085 method_41085 + m ()Ldyr; j comp_390 input + m ()D k comp_391 minInclusive + m ()D l comp_392 maxExclusive + m ()Ldyr; m comp_393 whenInRange + m ()Ldyr; n comp_394 whenOutOfRange + m (Ldyr;DDLdyr;Ldyr;)V + m ()V +c dys$r net/minecraft/class_6916$class_6934 net/minecraft/world/level/levelgen/DensityFunctions$Shift + f Ldyr$c; a comp_395 offsetNoise + f Layh; e field_37094 CODEC + m (Ldyr$c;)V + m ()V +c dys$s net/minecraft/class_6916$class_6937 net/minecraft/world/level/levelgen/DensityFunctions$ShiftA + f Ldyr$c; a comp_395 offsetNoise + f Layh; e field_37095 CODEC + m (Ldyr$c;)V + m ()V +c dys$t net/minecraft/class_6916$class_6938 net/minecraft/world/level/levelgen/DensityFunctions$ShiftB + f Ldyr$c; a comp_395 offsetNoise + f Layh; e field_37096 CODEC + m (Ldyr$c;)V + m ()V +c dys$u net/minecraft/class_6916$class_6939 net/minecraft/world/level/levelgen/DensityFunctions$ShiftNoise + m (DDD)D a method_40525 compute + m ()Ldyr$c; j comp_395 offsetNoise +c dys$v net/minecraft/class_6916$class_6940 net/minecraft/world/level/levelgen/DensityFunctions$ShiftedNoise + f Layh; a field_37097 CODEC + f Ldyr; e comp_396 shiftX + f Ldyr; f comp_397 shiftY + f Ldyr; g comp_398 shiftZ + f D h comp_399 xzScale + f D i comp_400 yScale + f Ldyr$c; j comp_664 noise + f Lcom/mojang/serialization/MapCodec; k field_37098 DATA_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41090 method_41090 + m ()Ldyr; j comp_396 shiftX + m ()Ldyr; k comp_397 shiftY + m ()Ldyr; l comp_398 shiftZ + m ()D m comp_399 xzScale + m ()D n comp_400 yScale + m ()Ldyr$c; o comp_664 noise + m (Ldyr;Ldyr;Ldyr;DDLdyr$c;)V + m ()V +c dys$w net/minecraft/class_6916$class_7076 net/minecraft/world/level/levelgen/DensityFunctions$Spline + f Layh; a field_37255 CODEC + f Laxp; e comp_526 spline + f Lcom/mojang/serialization/Codec; f field_37678 SPLINE_CODEC + f Lcom/mojang/serialization/MapCodec; g field_37256 DATA_CODEC + m (Ldyr$f;Ldys$w$a;)Ldys$w$a; a method_41197 method_41197 + m ()Laxp; j comp_526 spline + m (Laxp;)V + m ()V +c dys$w$a net/minecraft/class_6916$class_7076$class_7135 net/minecraft/world/level/levelgen/DensityFunctions$Spline$Coordinate + f Lcom/mojang/serialization/Codec; b field_37679 CODEC + f Ljm; c comp_536 function + m ()Ljm; a comp_536 function + m (Ldyr$f;)Ldys$w$a; a method_41530 mapAll + m (Ldys$w$b;)F a method_41531 apply + m (Ljm;)V + m ()V +c dys$w$b net/minecraft/class_6916$class_7076$class_7136 net/minecraft/world/level/levelgen/DensityFunctions$Spline$Point + f Ldyr$b; a comp_537 context + m ()Ldyr$b; a comp_537 context + m (Ldyr$b;)V +c dys$x net/minecraft/class_6916$class_6943 net/minecraft/world/level/levelgen/DensityFunctions$TransformerWithContext + m (Ldyr$b;D)D a method_40518 transform + m ()Ldyr; j comp_379 input +c dys$y net/minecraft/class_6916$class_7055 net/minecraft/world/level/levelgen/DensityFunctions$TwoArgumentSimpleFunction + f Lorg/slf4j/Logger; a field_37110 LOGGER + m (Ldys$y$a;Ldyr;Ldyr;)Ldys$y; a method_41097 create + m ()Ldys$y$a; j comp_374 type + m ()Ldyr; k comp_375 argument1 + m ()Ldyr; l comp_376 argument2 + m ()V +c dys$y$a net/minecraft/class_6916$class_7055$class_6918 net/minecraft/world/level/levelgen/DensityFunctions$TwoArgumentSimpleFunction$Type + f Ldys$y$a; a field_36544 ADD + f Ldys$y$a; b field_36545 MUL + f Ldys$y$a; c field_36546 MIN + f Ldys$y$a; d field_36547 MAX + f Layh; e field_37111 codec + f Ljava/lang/String; f field_37112 name + f [Ldys$y$a; g field_36548 $VALUES + m ()[Ldys$y$a; a method_40516 $values + m (Ldyr;Ldyr;)Ldys$y; a method_41098 method_41098 + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dys$z net/minecraft/class_6916$class_6944 net/minecraft/world/level/levelgen/DensityFunctions$WeirdScaledSampler + f Layh; a field_37064 CODEC + f Ldyr; e comp_379 input + f Ldyr$c; f comp_665 noise + f Ldys$z$a; g comp_408 rarityValueMapper + f Lcom/mojang/serialization/MapCodec; h field_37065 DATA_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41072 method_41072 + m ()Ldyr$c; k comp_665 noise + m ()Ldys$z$a; l comp_408 rarityValueMapper + m (Ldyr;Ldyr$c;Ldys$z$a;)V + m ()V +c dys$z$a net/minecraft/class_6916$class_6944$class_7048 net/minecraft/world/level/levelgen/DensityFunctions$WeirdScaledSampler$RarityValueMapper + f Ldys$z$a; a field_37066 TYPE1 + f Ldys$z$a; b field_37067 TYPE2 + f Lcom/mojang/serialization/Codec; c field_37068 CODEC + f Ljava/lang/String; d field_37070 name + f Lit/unimi/dsi/fastutil/doubles/Double2DoubleFunction; e field_37071 mapper + f D f field_37072 maxRarity + f [Ldys$z$a; g field_37073 $VALUES + m ()[Ldys$z$a; a method_41074 $values + m (Ljava/lang/String;ILjava/lang/String;Lit/unimi/dsi/fastutil/doubles/Double2DoubleFunction;D)V + m ()V +c dys$aa net/minecraft/class_6916$class_6945 net/minecraft/world/level/levelgen/DensityFunctions$YClampedGradient + f Layh; a field_37074 CODEC + f I e comp_410 fromY + f I f comp_411 toY + f D g comp_412 fromValue + f D h comp_413 toValue + f Lcom/mojang/serialization/MapCodec; i field_37075 DATA_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41076 method_41076 + m ()I j comp_410 fromY + m ()I k comp_411 toY + m ()D l comp_412 fromValue + m ()D m comp_413 toValue + m (IIDD)V + m ()V +c dyt net/minecraft/class_2897 net/minecraft/world/level/levelgen/FlatLevelSource + f Lcom/mojang/serialization/MapCodec; c field_24769 CODEC + f Leht; d field_24510 settings + m (I)[Ldtc; a method_28001 method_28001 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_40158 method_40158 + m (Ldtc;)Ldtc; a method_28002 method_28002 + m (Ljm$c;)Ljm; a method_46718 method_46718 + m (Ljo;)Ljava/util/stream/Stream; a method_46719 method_46719 + m ()Leht; h method_28545 settings + m (Leht;)V + m ()V +c dyu net/minecraft/class_2893 net/minecraft/world/level/levelgen/GenerationStep + m ()V +c dyu$a net/minecraft/class_2893$class_2894 net/minecraft/world/level/levelgen/GenerationStep$Carving + f Ldyu$a; a field_13169 AIR + f Ldyu$a; b field_13166 LIQUID + f Lcom/mojang/serialization/Codec; c field_24770 CODEC + f Ljava/lang/String; d field_13167 name + f [Ldyu$a; e field_13170 $VALUES + m ()Ljava/lang/String; a method_12581 getName + m ()[Ldyu$a; b method_36750 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dyu$b net/minecraft/class_2893$class_2895 net/minecraft/world/level/levelgen/GenerationStep$Decoration + f Ldyu$b; a field_13174 RAW_GENERATION + f Ldyu$b; b field_25186 LAKES + f Ldyu$b; c field_13171 LOCAL_MODIFICATIONS + f Ldyu$b; d field_13172 UNDERGROUND_STRUCTURES + f Ldyu$b; e field_13173 SURFACE_STRUCTURES + f Ldyu$b; f field_25187 STRONGHOLDS + f Ldyu$b; g field_13176 UNDERGROUND_ORES + f Ldyu$b; h field_13177 UNDERGROUND_DECORATION + f Ldyu$b; i field_35182 FLUID_SPRINGS + f Ldyu$b; j field_13178 VEGETAL_DECORATION + f Ldyu$b; k field_13179 TOP_LAYER_MODIFICATION + f Lcom/mojang/serialization/Codec; l field_37680 CODEC + f Ljava/lang/String; m field_37682 name + f [Ldyu$b; n field_13181 $VALUES + m ()Ljava/lang/String; a method_41532 getName + m ()[Ldyu$b; b method_36751 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c dyv net/minecraft/class_5585 net/minecraft/world/level/levelgen/GeodeBlockSettings + f Legj; a field_27295 fillingProvider + f Legj; b field_27296 innerLayerProvider + f Legj; c field_27297 alternateInnerLayerProvider + f Legj; d field_27298 middleLayerProvider + f Legj; e field_27299 outerLayerProvider + f Ljava/util/List; f field_27300 innerPlacements + f Lawu; g field_33769 cannotReplace + f Lawu; h field_33931 invalidBlocks + f Lcom/mojang/serialization/Codec; i field_27301 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_31887 method_31887 + m (Ldyv;)Lawu; a method_37255 method_37255 + m (Ldyv;)Lawu; b method_36995 method_36995 + m (Ldyv;)Ljava/util/List; c method_31886 method_31886 + m (Ldyv;)Legj; d method_31888 method_31888 + m (Ldyv;)Legj; e method_31889 method_31889 + m (Ldyv;)Legj; f method_31890 method_31890 + m (Ldyv;)Legj; g method_31891 method_31891 + m (Ldyv;)Legj; h method_31892 method_31892 + m (Legj;Legj;Legj;Legj;Legj;Ljava/util/List;Lawu;Lawu;)V + m ()V +c dyw net/minecraft/class_5586 net/minecraft/world/level/levelgen/GeodeCrackSettings + f Lcom/mojang/serialization/Codec; a field_27302 CODEC + f D b field_27303 generateCrackChance + f D c field_27304 baseCrackSize + f I d field_27305 crackPointOffset + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_31894 method_31894 + m (Ldyw;)Ljava/lang/Integer; a method_31893 method_31893 + m (Ldyw;)Ljava/lang/Double; b method_31895 method_31895 + m (Ldyw;)Ljava/lang/Double; c method_31896 method_31896 + m (DDI)V + m ()V +c dyx net/minecraft/class_5587 net/minecraft/world/level/levelgen/GeodeLayerSettings + f Lcom/mojang/serialization/Codec; a field_27306 CODEC + f D b field_27307 filling + f D c field_27308 innerLayer + f D d field_27309 middleLayer + f D e field_27310 outerLayer + f Lcom/mojang/serialization/Codec; f field_27311 LAYER_RANGE + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_31898 method_31898 + m (Ldyx;)Ljava/lang/Double; a method_31897 method_31897 + m (Ldyx;)Ljava/lang/Double; b method_31899 method_31899 + m (Ldyx;)Ljava/lang/Double; c method_31900 method_31900 + m (Ldyx;)Ljava/lang/Double; d method_31901 method_31901 + m (DDDD)V + m ()V +c dyy net/minecraft/class_2902 net/minecraft/world/level/levelgen/Heightmap + f Lorg/slf4j/Logger; a field_33770 LOGGER + f Ljava/util/function/Predicate; b field_16744 NOT_AIR + f Ljava/util/function/Predicate; c field_16745 MATERIAL_MOTION_BLOCKING + f Laxc; d field_13192 data + f Ljava/util/function/Predicate; e field_13193 isOpaque + f Lduy; f field_13191 chunk + m ()[J a method_12598 getRawData + m (I)I a method_12601 getFirstAvailable + m (II)I a method_12603 getFirstAvailable + m (III)V a method_12602 setHeight + m (IIILdtc;)Z a method_12597 update + m (Ldtc;)Z a method_16682 method_16682 + m (Lduy;Ldyy$a;[J)V a method_12600 setRawData + m (Lduy;Ljava/util/Set;)V a method_16684 primeHeightmaps + m (II)I b method_35334 getHighestTaken + m (II)I c method_12595 getIndex + m (Lduy;Ldyy$a;)V + m ()V +c dyy$a net/minecraft/class_2902$class_2903 net/minecraft/world/level/levelgen/Heightmap$Types + f Ldyy$a; a field_13194 WORLD_SURFACE_WG + f Ldyy$a; b field_13202 WORLD_SURFACE + f Ldyy$a; c field_13195 OCEAN_FLOOR_WG + f Ldyy$a; d field_13200 OCEAN_FLOOR + f Ldyy$a; e field_13197 MOTION_BLOCKING + f Ldyy$a; f field_13203 MOTION_BLOCKING_NO_LEAVES + f Lcom/mojang/serialization/Codec; g field_24772 CODEC + f Ljava/lang/String; h field_13204 serializationKey + f Ldyy$b; i field_13198 usage + f Ljava/util/function/Predicate; j field_16568 isOpaque + f [Ldyy$a; k field_13199 $VALUES + m ()Ljava/lang/String; a method_12605 getSerializationKey + m (Ldtc;)Z a method_16686 method_16686 + m ()Z b method_16137 sendToClient + m (Ldtc;)Z b method_16685 method_16685 + m ()Z d method_20454 keepAfterWorldgen + m ()Ljava/util/function/Predicate; e method_16402 isOpaque + m ()[Ldyy$a; f method_36752 $values + m (Ljava/lang/String;ILjava/lang/String;Ldyy$b;Ljava/util/function/Predicate;)V + m ()V +c dyy$b net/minecraft/class_2902$class_2904 net/minecraft/world/level/levelgen/Heightmap$Usage + f Ldyy$b; a field_13207 WORLDGEN + f Ldyy$b; b field_13206 LIVE_WORLD + f Ldyy$b; c field_16424 CLIENT + f [Ldyy$b; d field_13208 $VALUES + m ()[Ldyy$b; a method_36753 $values + m (Ljava/lang/String;I)V + m ()V +c dyz net/minecraft/class_5820 net/minecraft/world/level/levelgen/LegacyRandomSource + f I d field_31471 MODULUS_BITS + f J e field_31472 MODULUS_MASK + f J f field_31473 MULTIPLIER + f J g field_31474 INCREMENT + f Ljava/util/concurrent/atomic/AtomicLong; h field_28766 seed + f Ldza; i field_35124 gaussianSource + m (J)V +c dyz$a net/minecraft/class_5820$class_6671 net/minecraft/world/level/levelgen/LegacyRandomSource$LegacyPositionalRandomFactory + f J a field_35125 seed + m (J)V +c dza net/minecraft/class_6672 net/minecraft/world/level/levelgen/MarsagliaPolarGaussian + f Layw; a field_35126 randomSource + f D b field_35127 nextNextGaussian + f Z c field_35128 haveNextNextGaussian + m ()V a method_39541 reset + m ()D b method_38996 nextGaussian + m (Layw;)V +c dzb net/minecraft/class_3754 net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator + f Lcom/mojang/serialization/MapCodec; c field_24773 CODEC + f Ldtc; d field_16648 AIR + f Ljm; e field_24774 settings + f Ljava/util/function/Supplier; f field_34591 globalFluidPicker + m (Lakq;)Z a method_28548 stable + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28550 method_28550 + m (Ldcd;Ldzm;)Lddx; a method_38330 method_38330 + m (Ldcy;Ldzm;IILorg/apache/commons/lang3/mutable/MutableObject;Ljava/util/function/Predicate;)Ljava/util/OptionalInt; a method_26263 iterateNoiseColumn + m (Lddq;Larb;Ldzm;Lduy;)Ldzc; a method_41535 method_41535 + m (Lddq;Leaa;Ldzm;Lduy;)Ldzc; a method_41536 method_41536 + m (Lduy;ILdzg;ILeaa;Lddq;Ldzm;I)Lduy; a method_38332 method_38332 + m (Lduy;Lddq;Leaa;Ldzm;)Ldzc; a method_41537 createNoiseChunk + m (Lduy;Ldzv;Ldzm;Lddq;Lddy;Ljz;Leaa;)V a method_41538 buildSurface + m (Ldyk$b;ILdyk$b;Ldyk$b;III)Ldyk$b; a method_45509 method_45509 + m (Ldzb;)Ljm; a method_28549 method_28549 + m (Ldzc;IIILdtc;)Ldtc; a method_38323 debugPreliminarySurfaceLevel + m (Ldzd;)Ldyk$a; a method_45510 createFluidPicker + m (Ldzm;III)Ljm; a method_38322 method_38322 + m (Leaa;Lddq;Ldzm;Lduy;II)Lduy; a method_33754 doFill + m (Lddq;Leaa;Ldzm;Lduy;)Ldzc; b method_41539 method_41539 + m (Ldzb;)Ldea; b method_28554 method_28554 + m (Leaa;Ldzm;Lddq;Lduy;)V b method_38327 doCreateBiomes + m (Ljm;)Ldyk$a; b method_45511 method_45511 + m (Lddq;Leaa;Ldzm;Lduy;)Ldzc; c method_41540 method_41540 + m (Leaa;Ldzm;Lddq;Lduy;)Lduy; c method_38333 method_38333 + m ()Ljm; h method_41541 generatorSettings + m (Ldea;Ljm;)V + m ()V +c dzc net/minecraft/class_6568 net/minecraft/world/level/levelgen/NoiseChunk + f I A field_36594 cellStartBlockX + f I B field_36572 cellStartBlockY + f I C field_36573 cellStartBlockZ + f I D field_36574 inCellX + f I E field_36575 inCellY + f I F field_36576 inCellZ + f J G field_36577 interpolationCounter + f J H field_36578 arrayInterpolationCounter + f I I field_36579 arrayIndex + f Ldyr$a; J field_36580 sliceFillingContextProvider + f Ldzg; a field_35674 noiseSettings + f I b field_34599 cellCountXZ + f I c field_34598 cellCountY + f I d field_34600 cellNoiseMinY + f I e field_34601 firstCellX + f I f field_34602 firstCellZ + f I g field_34603 firstNoiseX + f I h field_34604 firstNoiseZ + f Ljava/util/List; i field_34605 interpolators + f Ljava/util/List; j field_36581 cellCaches + f Ljava/util/Map; k field_36582 wrapped + f Lit/unimi/dsi/fastutil/longs/Long2IntMap; l field_36273 preliminarySurfaceLevel + f Ldyk; m field_34613 aquifer + f Ldyr; n field_36583 initialDensityNoJaggedness + f Ldzc$c; o field_36584 blockStateRule + f Leaa; p field_35487 blender + f Ldzc$g; q field_36585 blendAlpha + f Ldzc$g; r field_36586 blendOffset + f Ldys$c; s field_37113 beardifier + f J t field_36587 lastBlendingDataPos + f Leaa$a; u field_36588 lastBlendingOutput + f I v field_36589 noiseSizeXZ + f I w field_36590 cellWidth + f I x field_36591 cellHeight + f Z y field_36592 interpolating + f Z z field_36593 fillingCell + m (DLdzc$i;)V a method_38338 method_38338 + m (ID)V a method_38337 updateForY + m (II)I a method_39900 preliminarySurfaceLevel + m (IILdzc$i;)V a method_38342 method_38342 + m (J)I a method_39899 computePreliminarySurfaceLevel + m (Lduy;Ldzm;Ldys$c;Ldzd;Ldyk$a;Leaa;)Ldzc; a method_39543 forChunk + m (Ldyr;)Ldyr; a method_40529 wrap + m (Ldyr;Ldyr$b;)Ldtc; a method_40530 method_40530 + m (Ldze;Ljava/util/List;)Ldef$f; a method_40531 cachedClimateSampler + m (ZI)V a method_40532 fillSlice + m (DLdzc$i;)V b method_38350 method_38350 + m (I)V b method_38339 advanceCellX + m (ID)V b method_38349 updateForX + m (II)V b method_38362 selectCellYZ + m (Ldyr;)Ldyr; b method_40533 wrapNew + m (DLdzc$i;)V c method_38356 method_38356 + m (I)Ldzc; c method_40534 forIndex + m (ID)V c method_38355 updateForZ + m (II)Leaa$a; c method_40535 getOrComputeBlendingOutput + m ()Ldtc; e method_40536 getInterpolatedState + m ()V f method_38336 initializeForFirstCellX + m ()V g method_40537 stopInterpolation + m ()V h method_38348 swapSlices + m ()Ldyk; i method_38354 aquifer + m ()I j method_42361 cellWidth + m ()I k method_42362 cellHeight + m (ILdzm;IILdzg;Ldys$c;Ldzd;Ldyk$a;Leaa;)V +c dzc$1 net/minecraft/class_6568$1 net/minecraft/world/level/levelgen/NoiseChunk$1 + f Ldzc; a field_36595 field_36595 + m (Ldzc;)V +c dzc$2 net/minecraft/class_6568$2 net/minecraft/world/level/levelgen/NoiseChunk$2 + f [I a field_36596 $SwitchMap$net$minecraft$world$level$levelgen$DensityFunctions$Marker$Type + m ()V +c dzc$a net/minecraft/class_6568$class_6946 net/minecraft/world/level/levelgen/NoiseChunk$BlendAlpha + f Ldzc; a field_36597 field_36597 + m (Ldzc;)V +c dzc$b net/minecraft/class_6568$class_6947 net/minecraft/world/level/levelgen/NoiseChunk$BlendOffset + f Ldzc; a field_36598 field_36598 + m (Ldzc;)V +c dzc$c net/minecraft/class_6568$class_6569 net/minecraft/world/level/levelgen/NoiseChunk$BlockStateFiller +c dzc$d net/minecraft/class_6568$class_6948 net/minecraft/world/level/levelgen/NoiseChunk$Cache2D + f Ldyr; a field_36599 function + f J e field_36600 lastPos2D + f D f field_36601 lastValue + m (Ldyr;)V +c dzc$e net/minecraft/class_6568$class_6949 net/minecraft/world/level/levelgen/NoiseChunk$CacheAllInCell + f Ldzc; a field_36602 field_36602 + f Ldyr; e field_36603 noiseFiller + f [D f field_36604 values + m (Ldzc;Ldyr;)V +c dzc$f net/minecraft/class_6568$class_6950 net/minecraft/world/level/levelgen/NoiseChunk$CacheOnce + f Ldzc; a field_36605 field_36605 + f Ldyr; e field_36606 function + f J f field_36607 lastCounter + f J g field_36608 lastArrayCounter + f D h field_36609 lastValue + f [D i field_36610 lastArray + m (Ldzc;Ldyr;)V +c dzc$g net/minecraft/class_6568$class_6951 net/minecraft/world/level/levelgen/NoiseChunk$FlatCache + f Ldzc; a field_36611 field_36611 + f Ldyr; e field_36612 noiseFiller + f [[D f field_36613 values + m (Ldzc;Ldyr;Z)V +c dzc$h net/minecraft/class_6568$class_6952 net/minecraft/world/level/levelgen/NoiseChunk$NoiseChunkDensityFunction + m ()Ldyr; k comp_469 wrapped +c dzc$i net/minecraft/class_6568$class_5917 net/minecraft/world/level/levelgen/NoiseChunk$NoiseInterpolator + f Ldzc; a field_34622 field_34622 + f [[D e field_29227 slice0 + f [[D f field_29228 slice1 + f Ldyr; g field_34623 noiseFiller + f D h field_29233 noise000 + f D i field_29234 noise001 + f D j field_29235 noise100 + f D k field_29236 noise101 + f D l field_29237 noise010 + f D m field_29238 noise011 + f D n field_29239 noise110 + f D o field_29240 noise111 + f D p field_29241 valueXZ00 + f D q field_29242 valueXZ10 + f D r field_29243 valueXZ01 + f D s field_29244 valueXZ11 + f D t field_29245 valueZ0 + f D u field_29246 valueZ1 + f D v field_34624 value + m (D)V a method_34287 updateForY + m (II)[[D a method_34293 allocateSlice + m (D)V b method_34292 updateForX + m (II)V b method_34289 selectCellYZ + m (D)V c method_38363 updateForZ + m ()V l method_34291 swapSlices + m (Ldzc;Ldyr;)V +c dzd net/minecraft/class_5284 net/minecraft/world/level/levelgen/NoiseGeneratorSettings + f Lcom/mojang/serialization/Codec; a field_24780 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_24781 CODEC + f Lakq; c field_26355 OVERWORLD + f Lakq; d field_35051 LARGE_BIOMES + f Lakq; e field_26356 AMPLIFIED + f Lakq; f field_26357 NETHER + f Lakq; g field_26358 END + f Lakq; h field_26359 CAVES + f Lakq; i field_26360 FLOATING_ISLANDS + f Ldzg; j comp_474 noiseSettings + f Ldtc; k comp_475 defaultBlock + f Ldtc; l comp_476 defaultFluid + f Ldze; m comp_477 noiseRouter + f Ldzp$o; n comp_478 surfaceRule + f Ljava/util/List; o comp_538 spawnTarget + f I p comp_479 seaLevel + f Z q comp_480 disableMobGeneration + f Z r comp_481 aquifersEnabled + f Z s comp_482 oreVeinsEnabled + f Z t comp_483 useLegacyRandomSource + m ()Z a comp_480 disableMobGeneration + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28558 method_28558 + m (Lqq;)V a method_31111 bootstrap + m (Lqq;ZZ)Ldzd; a method_30643 overworld + m ()Z b method_33757 isAquifersEnabled + m (Lqq;)Ldzd; b method_30642 end + m ()Z c comp_482 oreVeinsEnabled + m (Lqq;)Ldzd; c method_30641 nether + m ()Ldzx$a; d method_38999 getRandomSource + m (Lqq;)Ldzd; d method_39901 caves + m ()Ldzd; e method_44323 dummy + m (Lqq;)Ldzd; e method_39902 floatingIslands + m ()Ldzg; f comp_474 noiseSettings + m ()Ldtc; g comp_475 defaultBlock + m ()Ldtc; h comp_476 defaultFluid + m ()Ldze; i comp_477 noiseRouter + m ()Ldzp$o; j comp_478 surfaceRule + m ()Ljava/util/List; k comp_538 spawnTarget + m ()I l comp_479 seaLevel + m ()Z m comp_481 aquifersEnabled + m ()Z n comp_483 useLegacyRandomSource + m (Ldzg;Ldtc;Ldtc;Ldze;Ldzp$o;Ljava/util/List;IZZZZ)V + m ()V +c dze net/minecraft/class_6953 net/minecraft/world/level/levelgen/NoiseRouter + f Lcom/mojang/serialization/Codec; a field_37683 CODEC + f Ldyr; b comp_414 barrierNoise + f Ldyr; c comp_415 fluidLevelFloodednessNoise + f Ldyr; d comp_416 fluidLevelSpreadNoise + f Ldyr; e comp_417 lavaNoise + f Ldyr; f comp_420 temperature + f Ldyr; g comp_539 vegetation + f Ldyr; h comp_484 continents + f Ldyr; i comp_423 erosion + f Ldyr; j comp_424 depth + f Ldyr; k comp_485 ridges + f Ldyr; l comp_486 initialDensityWithoutJaggedness + f Ldyr; m comp_487 finalDensity + f Ldyr; n comp_428 veinToggle + f Ldyr; o comp_429 veinRidged + f Ldyr; p comp_430 veinGap + m ()Ldyr; a comp_414 barrierNoise + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41543 method_41543 + m (Ldyr$f;)Ldze; a method_41544 mapAll + m (Ljava/lang/String;Ljava/util/function/Function;)Lcom/mojang/serialization/codecs/RecordCodecBuilder; a method_41545 field + m ()Ldyr; b comp_415 fluidLevelFloodednessNoise + m ()Ldyr; c comp_416 fluidLevelSpreadNoise + m ()Ldyr; d comp_417 lavaNoise + m ()Ldyr; e comp_420 temperature + m ()Ldyr; f comp_539 vegetation + m ()Ldyr; g comp_484 continents + m ()Ldyr; h comp_423 erosion + m ()Ldyr; i comp_424 depth + m ()Ldyr; j comp_485 ridges + m ()Ldyr; k comp_486 initialDensityWithoutJaggedness + m ()Ldyr; l comp_487 finalDensity + m ()Ldyr; m comp_428 veinToggle + m ()Ldyr; n comp_429 veinRidged + m ()Ldyr; o comp_430 veinGap + m (Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;Ldyr;)V + m ()V +c dzf net/minecraft/class_6954 net/minecraft/world/level/levelgen/NoiseRouterData + f Lakq; A field_38249 BASE_3D_NOISE_END + f Lakq; B field_37127 SLOPED_CHEESE + f Lakq; C field_37696 OFFSET_LARGE + f Lakq; D field_37130 FACTOR_LARGE + f Lakq; E field_37684 JAGGEDNESS_LARGE + f Lakq; F field_37131 DEPTH_LARGE + f Lakq; G field_37132 SLOPED_CHEESE_LARGE + f Lakq; H field_37685 OFFSET_AMPLIFIED + f Lakq; I field_37686 FACTOR_AMPLIFIED + f Lakq; J field_37687 JAGGEDNESS_AMPLIFIED + f Lakq; K field_37688 DEPTH_AMPLIFIED + f Lakq; L field_37689 SLOPED_CHEESE_AMPLIFIED + f Lakq; M field_37133 SLOPED_CHEESE_END + f Lakq; N field_37134 SPAGHETTI_ROUGHNESS_FUNCTION + f Lakq; O field_37135 ENTRANCES + f Lakq; P field_37136 NOODLE + f Lakq; Q field_37114 PILLARS + f Lakq; R field_37115 SPAGHETTI_2D_THICKNESS_MODULATOR + f Lakq; S field_37116 SPAGHETTI_2D + f F a field_37690 GLOBAL_OFFSET + f I b field_37691 ISLAND_CHUNK_DISTANCE + f J c field_37692 ISLAND_CHUNK_DISTANCE_SQR + f Lakq; d field_37122 CONTINENTS + f Lakq; e field_37123 EROSION + f Lakq; f field_37124 RIDGES + f Lakq; g field_37693 RIDGES_FOLDED + f Lakq; h field_37694 OFFSET + f Lakq; i field_37125 FACTOR + f Lakq; j field_37695 JAGGEDNESS + f Lakq; k field_37126 DEPTH + f Lakq; l field_37128 CONTINENTS_LARGE + f Lakq; m field_37129 EROSION_LARGE + f F n field_36614 ORE_THICKNESS + f D o field_36615 VEININESS_FREQUENCY + f D p field_36616 NOODLE_SPACING_AND_STRAIGHTNESS + f D q field_36617 SURFACE_DENSITY_THRESHOLD + f D r field_38250 CHEESE_NOISE_TARGET + f Ldyr; s field_36618 BLENDING_FACTOR + f Ldyr; t field_36619 BLENDING_JAGGEDNESS + f Lakq; u field_37117 ZERO + f Lakq; v field_37118 Y + f Lakq; w field_37119 SHIFT_X + f Lakq; x field_37120 SHIFT_Z + f Lakq; y field_38251 BASE_3D_NOISE_OVERWORLD + f Lakq; z field_38252 BASE_3D_NOISE_NETHER + m ()Ldze; a method_44324 none + m (F)F a method_41546 peaksAndValleys + m (Ldyr;)Ldyr; a method_41547 peaksAndValleys + m (Ldyr;II)Ldyr; a method_42364 slideEndLike + m (Ldyr;IIIIDIID)Ldyr; a method_42365 slide + m (Ldyr;Ldyr;)Ldyr; a method_40541 splineWithBlending + m (Ldyr;Ldyr;III)Ldyr; a method_40539 yLimitedInterpolatable + m (Ldzi$a;)I a method_41550 method_41550 + m (Ljava/lang/String;)Lakq; a method_41109 createKey + m (Ljn;)Ldze; a method_41120 end + m (Ljn;II)Ldyr; a method_42363 slideNetherLike + m (Ljn;Lakq;)Ldyr; a method_41116 getFunction + m (Ljn;Ljn;)Ldze; a method_41118 nether + m (Ljn;Ljn;Ldyr;)Ldyr; a method_41101 underground + m (Ljn;Ljn;ZZ)Ldze; a method_41103 overworld + m (Lqq;)Ljm; a method_41100 bootstrap + m (Lqq;Lakq;Ldyr;)Ldyr; a method_41551 registerAndWrap + m (Lqq;Ljn;Ldyr;Ljm;Ljm;Lakq;Lakq;Lakq;Lakq;Lakq;Z)V a method_41548 registerTerrainNoises + m (ZLdyr;)Ldyr; a method_42366 slideOverworld + m (Ldyr;)Ldyr; b method_41207 postProcess + m (Ldyr;Ldyr;)Ldyr; b method_40540 noiseGradientDensity + m (Ldzi$a;)I b method_41553 method_41553 + m (Ljn;)Ldyr; b method_41113 spaghettiRoughnessFunction + m (Ljn;Ljn;)Ldze; b method_41549 caves + m (Ljn;Ljn;Ldyr;)Ldze; b method_41211 noNewCaves + m (Ldyr;)Ldyr; c method_42367 slideEnd + m (Ljn;)Ldyr; c method_41121 pillars + m (Ljn;Ljn;)Ldze; c method_41552 floatingIslands + m (Ljn;Ljn;)Ldyr; d method_41117 entrances + m (Ljn;Ljn;)Ldyr; e method_41119 noodle + m (Ljn;Ljn;)Ldyr; f method_41122 spaghetti2D + m ()V + m ()V +c dzf$a net/minecraft/class_6954$class_5841 net/minecraft/world/level/levelgen/NoiseRouterData$QuantizedSpaghettiRarity + m (D)D a method_33835 getSphaghettiRarity2D + m (D)D b method_33836 getSpaghettiRarity3D + m ()V +c dzg net/minecraft/class_5309 net/minecraft/world/level/levelgen/NoiseSettings + f Lcom/mojang/serialization/Codec; a field_24804 CODEC + f Ldzg; b field_38253 OVERWORLD_NOISE_SETTINGS + f Ldzg; c field_37138 NETHER_NOISE_SETTINGS + f Ldzg; d field_37139 END_NOISE_SETTINGS + f Ldzg; e field_37140 CAVES_NOISE_SETTINGS + f Ldzg; f field_37141 FLOATING_ISLANDS_NOISE_SETTINGS + f I g comp_173 minY + f I h comp_174 height + f I i comp_178 noiseSizeHorizontal + f I j comp_179 noiseSizeVertical + m ()I a method_39545 getCellHeight + m (IIII)Ldzg; a method_32994 create + m (Lcom/mojang/serialization/DataResult$Error;)V a method_32996 method_32996 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28582 method_28582 + m (Ldcy;)Ldzg; a method_42368 clampToHeightAccessor + m (Ldzg;)Lcom/mojang/serialization/DataResult; a method_32995 guardY + m ()I b method_39546 getCellWidth + m ()I c comp_173 minY + m ()I d comp_174 height + m ()I e comp_178 noiseSizeHorizontal + m ()I f comp_179 noiseSizeVertical + m ()Ljava/lang/String; g method_49530 method_49530 + m ()Ljava/lang/String; h method_49531 method_49531 + m ()Ljava/lang/String; i method_49532 method_49532 + m (IIII)V + m ()V +c dzh net/minecraft/class_6731 net/minecraft/world/level/levelgen/Noises + f Lakq; A field_35411 SPAGHETTI_ROUGHNESS_MODULATOR + f Lakq; B field_35412 CAVE_ENTRANCE + f Lakq; C field_35413 CAVE_LAYER + f Lakq; D field_35414 CAVE_CHEESE + f Lakq; E field_35363 ORE_VEININESS + f Lakq; F field_35364 ORE_VEIN_A + f Lakq; G field_35365 ORE_VEIN_B + f Lakq; H field_35366 ORE_GAP + f Lakq; I field_35367 NOODLE + f Lakq; J field_35368 NOODLE_THICKNESS + f Lakq; K field_35369 NOODLE_RIDGE_A + f Lakq; L field_35370 NOODLE_RIDGE_B + f Lakq; M field_35371 JAGGED + f Lakq; N field_35373 SURFACE + f Lakq; O field_35675 SURFACE_SECONDARY + f Lakq; P field_35372 CLAY_BANDS_OFFSET + f Lakq; Q field_35488 BADLANDS_PILLAR + f Lakq; R field_35489 BADLANDS_PILLAR_ROOF + f Lakq; S field_35490 BADLANDS_SURFACE + f Lakq; T field_35491 ICEBERG_PILLAR + f Lakq; U field_35492 ICEBERG_PILLAR_ROOF + f Lakq; V field_35493 ICEBERG_SURFACE + f Lakq; W field_35376 SWAMP + f Lakq; X field_35377 CALCITE + f Lakq; Y field_35378 GRAVEL + f Lakq; Z field_35593 POWDER_SNOW + f Lakq; a field_35389 TEMPERATURE + f Lakq; aa field_35381 PACKED_ICE + f Lakq; ab field_35382 ICE + f Lakq; ac field_35383 SOUL_SAND_LAYER + f Lakq; ad field_35384 GRAVEL_LAYER + f Lakq; ae field_35385 PATCH + f Lakq; af field_35386 NETHERRACK + f Lakq; ag field_35387 NETHER_WART + f Lakq; ah field_35388 NETHER_STATE_SELECTOR + f Lakq; b field_35390 VEGETATION + f Lakq; c field_35391 CONTINENTALNESS + f Lakq; d field_35392 EROSION + f Lakq; e field_35594 TEMPERATURE_LARGE + f Lakq; f field_35595 VEGETATION_LARGE + f Lakq; g field_35596 CONTINENTALNESS_LARGE + f Lakq; h field_35597 EROSION_LARGE + f Lakq; i field_35393 RIDGE + f Lakq; j field_35394 SHIFT + f Lakq; k field_35395 AQUIFER_BARRIER + f Lakq; l field_35396 AQUIFER_FLUID_LEVEL_FLOODEDNESS + f Lakq; m field_35397 AQUIFER_LAVA + f Lakq; n field_35398 AQUIFER_FLUID_LEVEL_SPREAD + f Lakq; o field_35399 PILLAR + f Lakq; p field_35400 PILLAR_RARENESS + f Lakq; q field_35401 PILLAR_THICKNESS + f Lakq; r field_35402 SPAGHETTI_2D + f Lakq; s field_35403 SPAGHETTI_2D_ELEVATION + f Lakq; t field_35404 SPAGHETTI_2D_MODULATOR + f Lakq; u field_35405 SPAGHETTI_2D_THICKNESS + f Lakq; v field_35406 SPAGHETTI_3D_1 + f Lakq; w field_35407 SPAGHETTI_3D_2 + f Lakq; x field_35408 SPAGHETTI_3D_RARITY + f Lakq; y field_35409 SPAGHETTI_3D_THICKNESS + f Lakq; z field_35410 SPAGHETTI_ROUGHNESS + m (Ljava/lang/String;)Lakq; a method_39174 createKey + m (Ljn;Ldzl;Lakq;)Leoh; a method_41127 instantiate + m ()V + m ()V +c dzi net/minecraft/class_6955 net/minecraft/world/level/levelgen/OreVeinifier + f F a field_36620 VEININESS_THRESHOLD + f I b field_36621 EDGE_ROUNDOFF_BEGIN + f D c field_36622 MAX_EDGE_ROUNDOFF + f F d field_36623 VEIN_SOLIDNESS + f F e field_36624 MIN_RICHNESS + f F f field_36625 MAX_RICHNESS + f F g field_36626 MAX_RICHNESS_THRESHOLD + f F h field_36627 CHANCE_OF_RAW_ORE_BLOCK + f F i field_36628 SKIP_ORE_IF_GAP_NOISE_IS_BELOW + m (Ldyr;Ldtc;Ldzl;Ldyr;Ldyr;Ldyr$b;)Ldtc; a method_40547 method_40547 + m (Ldyr;Ldyr;Ldyr;Ldzl;)Ldzc$c; a method_40548 create + m ()V +c dzi$a net/minecraft/class_6955$class_6354 net/minecraft/world/level/levelgen/OreVeinifier$VeinType + f Ldzi$a; a field_33603 COPPER + f Ldzi$a; b field_33604 IRON + f I c field_33607 minY + f I d field_33608 maxY + f Ldtc; e field_33605 ore + f Ldtc; f field_33668 rawOreBlock + f Ldtc; g field_33606 filler + f [Ldzi$a; h field_33609 $VALUES + m ()[Ldzi$a; a method_36754 $values + m (Ljava/lang/String;ILdtc;Ldtc;Ldtc;II)V + m ()V +c dzj net/minecraft/class_3769 net/minecraft/world/level/levelgen/PatrolSpawner + f I a field_16652 nextTick + m (Laqu;Ljd;Layw;Z)Z a method_16575 spawnPatrolMember + m ()V +c dzk net/minecraft/class_2910 net/minecraft/world/level/levelgen/PhantomSpawner + f I a field_13244 nextTick + m ()V +c dzl net/minecraft/class_6574 net/minecraft/world/level/levelgen/PositionalRandomFactory + m (III)Layw; a method_38418 at + m (J)Layw; a method_60628 fromSeed + m (Lakr;)Layw; a method_39000 fromHashOf + m (Ljava/lang/String;)Layw; a method_38995 fromHashOf + m (Ljava/lang/StringBuilder;)V a method_39039 parityConfigString + m (Ljd;)Layw; a method_38419 at +c dzm net/minecraft/class_7138 net/minecraft/world/level/levelgen/RandomState + f Ldzl; a field_38254 random + f Ljn; b field_38256 noises + f Ldze; c field_38257 router + f Ldef$f; d field_38258 sampler + f Ldzq; e field_38259 surfaceSystem + f Ldzl; f field_38260 aquiferRandom + f Ldzl; g field_38261 oreRandom + f Ljava/util/Map; h field_38262 noiseIntances + f Ljava/util/Map; i field_38263 positionalRandoms + m ()Ldze; a method_42370 router + m (Lakq;)Leoh; a method_41558 getOrCreateNoise + m (Lakq;Lakq;)Leoh; a method_41559 method_41559 + m (Lakr;)Ldzl; a method_41560 getOrCreateRandomFactory + m (Lakr;Lakr;)Ldzl; a method_41561 method_41561 + m (Ldzd;Ljn;J)Ldzm; a method_41556 create + m (Ljn$a;Lakq;J)Ldzm; a method_41557 create + m ()Ldef$f; b method_42371 sampler + m ()Ldzq; c method_42372 surfaceSystem + m ()Ldzl; d method_42373 aquiferRandom + m ()Ldzl; e method_42374 oreRandom + m (Ldzd;Ljn;J)V +c dzm$1 net/minecraft/class_7138$1 net/minecraft/world/level/levelgen/RandomState$1 + f Ljava/util/Map; a field_40362 wrapped + m (Ldyr;)Ldyr; a method_45512 wrapNew + m (Ldzm;)V +c dzm$a net/minecraft/class_7138$class_7271 net/minecraft/world/level/levelgen/RandomState$1NoiseWiringHelper + f J a field_38264 val$seed + f Z b field_38265 val$useLegacyInit + f Ldzm; c field_38266 field_38266 + f Ljava/util/Map; d field_38267 wrapped + m (J)Layw; a method_42375 newLegacyInstance + m (Ldyr;)Ldyr; a method_42376 wrapNew + m (Ldzm;JZ)V +c dzn net/minecraft/class_6673 net/minecraft/world/level/levelgen/RandomSupport + f J a field_35133 GOLDEN_RATIO_64 + f J b field_35134 SILVER_RATIO_64 + f Lcom/google/common/hash/HashFunction; c field_44918 MD5_128 + f Ljava/util/concurrent/atomic/AtomicLong; d field_35135 SEED_UNIQUIFIER + m ()J a method_39001 generateUniqueSeed + m (J)J a method_39002 mixStafford13 + m (Ljava/lang/String;)Ldzn$a; a method_52180 seedFromHashOf + m (J)Ldzn$a; b method_52211 upgradeSeedTo128bitUnmixed + m (J)Ldzn$a; c method_39003 upgradeSeedTo128bit + m (J)J d method_39004 method_39004 + m ()V + m ()V +c dzn$a net/minecraft/class_6673$class_6674 net/minecraft/world/level/levelgen/RandomSupport$Seed128bit + f J a comp_166 seedLo + f J b comp_167 seedHi + m ()Ldzn$a; a method_52212 mixed + m (JJ)Ldzn$a; a method_52181 xor + m (Ldzn$a;)Ldzn$a; a method_52182 xor + m ()J b comp_166 seedLo + m ()J c comp_167 seedHi + m (JJ)V +c dzo net/minecraft/class_6575 net/minecraft/world/level/levelgen/SingleThreadedRandomSource + f I d field_34689 MODULUS_BITS + f J e field_34690 MODULUS_MASK + f J f field_34691 MULTIPLIER + f J g field_34692 INCREMENT + f J h field_34693 seed + f Ldza; i field_35136 gaussianSource + m (J)V +c dzp net/minecraft/class_6686 net/minecraft/world/level/levelgen/SurfaceRules + f Ldzp$f; a field_35222 ON_FLOOR + f Ldzp$f; b field_35223 UNDER_FLOOR + f Ldzp$f; c field_36341 DEEP_UNDER_FLOOR + f Ldzp$f; d field_36342 VERY_DEEP_UNDER_FLOOR + f Ldzp$f; e field_35494 ON_CEILING + f Ldzp$f; f field_35224 UNDER_CEILING + m ()Ldzp$f; a method_39045 steep + m (II)Ldzp$f; a method_39046 waterBlockCheck + m (IZILeil;)Ldzp$f; a method_40023 stoneDepthCheck + m (IZLeil;)Ldzp$f; a method_39549 stoneDepthCheck + m (Lakq;D)Ldzp$f; a method_39052 noiseCondition + m (Lakq;DD)Ldzp$f; a method_39053 noiseCondition + m (Ldtc;)Ldzp$o; a method_39047 state + m (Ldzp$f;)Ldzp$f; a method_39048 not + m (Ldzp$f;Ldzp$o;)Ldzp$o; a method_39049 ifTrue + m (Ldzs;I)Ldzp$f; a method_39051 yBlockCheck + m (Ljava/lang/String;Ldzs;Ldzs;)Ldzp$f; a method_39472 verticalGradient + m (Ljava/util/List;)Ldzp$c; a method_39054 isBiome + m (Ljz;Ljava/lang/String;Layh;)Lcom/mojang/serialization/MapCodec; a method_42377 register + m ([Lakq;)Ldzp$f; a method_39055 isBiome + m ([Ldzp$o;)Ldzp$o; a method_39050 sequence + m ()Ldzp$f; b method_39056 hole + m (II)Ldzp$f; b method_39057 waterStartCheck + m (Ldzs;I)Ldzp$f; b method_39058 yStartCheck + m ()Ldzp$f; c method_39473 abovePreliminarySurface + m ()Ldzp$f; d method_39059 temperature + m ()Ldzp$o; e method_39060 bandlands + m ()V + m ()V +c dzp$a net/minecraft/class_6686$class_6770 net/minecraft/world/level/levelgen/SurfaceRules$AbovePreliminarySurface + f Ldzp$a; a field_35600 INSTANCE + f Layh; c field_35601 CODEC + f [Ldzp$a; d field_35602 $VALUES + m (Ldzp$g;)Ldzp$e; a method_39474 apply + m ()[Ldzp$a; b method_39475 $values + m (Ljava/lang/String;I)V + m ()V +c dzp$b net/minecraft/class_6686$class_6687 net/minecraft/world/level/levelgen/SurfaceRules$Bandlands + f Ldzp$b; a field_35225 INSTANCE + f Layh; c field_35226 CODEC + f [Ldzp$b; d field_35227 $VALUES + m (Ldzp$g;)Ldzp$u; a method_39062 apply + m ()[Ldzp$b; b method_39063 $values + m (Ljava/lang/String;I)V + m ()V +c dzp$c net/minecraft/class_6686$class_6689 net/minecraft/world/level/levelgen/SurfaceRules$BiomeConditionSource + f Layh; a field_35228 CODEC + f Ljava/util/List; c field_36414 biomes + f Ljava/util/function/Predicate; d field_36415 biomeNameTest + m (Ldzp$c;)Ljava/util/List; a method_40159 method_40159 + m (Ldzp$g;)Ldzp$e; a method_39065 apply + m (Ljava/util/List;)V + m ()V +c dzp$c$a net/minecraft/class_6686$class_6689$class_6690 net/minecraft/world/level/levelgen/SurfaceRules$BiomeConditionSource$1BiomeCondition + f Ldzp$g; a field_35603 val$ruleContext + f Ldzp$c; b field_35230 field_35230 + m (Ldzp$c;Ldzp$g;)V +c dzp$d net/minecraft/class_6686$class_6691 net/minecraft/world/level/levelgen/SurfaceRules$BlockRuleSource + f Ldtc; a comp_191 resultState + f Ldzp$r; c comp_192 rule + f Layh; d field_35231 CODEC + m (Ldzp$g;)Ldzp$u; a method_39068 apply + m ()Ldtc; b comp_191 resultState + m ()Ldzp$r; c comp_192 rule + m (Ldtc;)V + m (Ldtc;Ldzp$r;)V + m ()V +c dzp$e net/minecraft/class_6686$class_6692 net/minecraft/world/level/levelgen/SurfaceRules$Condition + m ()Z b method_39069 test +c dzp$f net/minecraft/class_6686$class_6693 net/minecraft/world/level/levelgen/SurfaceRules$ConditionSource + f Lcom/mojang/serialization/Codec; b field_35232 CODEC + m ()Layh; a method_39064 codec + m (Ldzp$f;)Lcom/mojang/serialization/MapCodec; a method_42378 method_42378 + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_39070 bootstrap + m ()V +c dzp$g net/minecraft/class_6686$class_6694 net/minecraft/world/level/levelgen/SurfaceRules$Context + f Ljava/util/function/Supplier; A field_35614 biome + f I B field_35617 blockY + f I C field_35618 waterHeight + f I D field_35619 stoneDepthBelow + f I E field_35620 stoneDepthAbove + f I a field_36274 HOW_FAR_BELOW_PRELIMINARY_SURFACE_LEVEL_TO_BUILD_SURFACE + f I b field_36275 SURFACE_CELL_BITS + f I c field_36276 SURFACE_CELL_SIZE + f I d field_36277 SURFACE_CELL_MASK + f Ldzq; e field_35233 system + f Ldzp$e; f field_35234 temperature + f Ldzp$e; g field_35235 steep + f Ldzp$e; h field_35236 hole + f Ldzp$e; i field_35604 abovePreliminarySurface + f Ldzm; j field_37703 randomState + f Lduy; k field_35605 chunk + f Ldzc; l field_35676 noiseChunk + f Ljava/util/function/Function; m field_35606 biomeGetter + f Ldzv; n field_35241 context + f J o field_36278 lastPreliminarySurfaceCellOrigin + f [I p field_36279 preliminarySurfaceCache + f J q field_35608 lastUpdateXZ + f I r field_35609 blockX + f I s field_35610 blockZ + f I t field_35611 surfaceDepth + f J u field_35677 lastSurfaceDepth2Update + f D v field_35678 surfaceSecondary + f J w field_35679 lastMinSurfaceLevelUpdate + f I x field_35616 minSurfaceLevel + f J y field_35612 lastUpdateY + f Ljd$a; z field_35613 pos + m ()D a method_39550 getSurfaceSecondary + m (I)I a method_39903 blockCoordToSurfaceCell + m (II)V a method_39072 updateXZ + m (III)Ljm; a method_39478 method_39478 + m (IIIIII)V a method_39073 updateY + m ()I b method_39551 getMinSurfaceLevel + m (I)I b method_39904 surfaceCellToBlockCoord + m (Ldzq;Ldzm;Lduy;Ldzc;Ljava/util/function/Function;Ljz;Ldzv;)V +c dzp$g$a net/minecraft/class_6686$class_6694$class_6771 net/minecraft/world/level/levelgen/SurfaceRules$Context$AbovePreliminarySurfaceCondition + f Ldzp$g; a field_35621 field_35621 + m (Ldzp$g;)V +c dzp$g$b net/minecraft/class_6686$class_6694$class_6695 net/minecraft/world/level/levelgen/SurfaceRules$Context$HoleCondition + m (Ldzp$g;)V +c dzp$g$c net/minecraft/class_6686$class_6694$class_6696 net/minecraft/world/level/levelgen/SurfaceRules$Context$SteepMaterialCondition + m (Ldzp$g;)V +c dzp$g$d net/minecraft/class_6686$class_6694$class_6772 net/minecraft/world/level/levelgen/SurfaceRules$Context$TemperatureHelperCondition + m (Ldzp$g;)V +c dzp$h net/minecraft/class_6686$class_6701 net/minecraft/world/level/levelgen/SurfaceRules$Hole + f Ldzp$h; a field_35243 INSTANCE + f Layh; c field_35244 CODEC + f [Ldzp$h; d field_35245 $VALUES + m (Ldzp$g;)Ldzp$e; a method_39079 apply + m ()[Ldzp$h; b method_39080 $values + m (Ljava/lang/String;I)V + m ()V +c dzp$i net/minecraft/class_6686$class_6702 net/minecraft/world/level/levelgen/SurfaceRules$LazyCondition + f J a field_35622 lastUpdate + f Ldzp$g; c field_35623 context + f Ljava/lang/Boolean; d field_35246 result + m ()Z a method_39074 compute + m ()J c method_39479 getContextLastUpdate + m (Ldzp$g;)V +c dzp$j net/minecraft/class_6686$class_6773 net/minecraft/world/level/levelgen/SurfaceRules$LazyXZCondition + m (Ldzp$g;)V +c dzp$k net/minecraft/class_6686$class_6774 net/minecraft/world/level/levelgen/SurfaceRules$LazyYCondition + m (Ldzp$g;)V +c dzp$l net/minecraft/class_6686$class_6703 net/minecraft/world/level/levelgen/SurfaceRules$NoiseThresholdConditionSource + f Lakq; a comp_201 noise + f D c comp_202 minThreshold + f D d comp_203 maxThreshold + f Layh; e field_35248 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39081 method_39081 + m (Ldzp$g;)Ldzp$e; a method_39082 apply + m ()Lakq; b comp_201 noise + m ()D c comp_202 minThreshold + m ()D d comp_203 maxThreshold + m (Lakq;DD)V + m ()V +c dzp$l$a net/minecraft/class_6686$class_6703$class_6704 net/minecraft/world/level/levelgen/SurfaceRules$NoiseThresholdConditionSource$1NoiseThresholdCondition + f Ldzp$g; a field_35624 val$ruleContext + f Leoh; b field_35249 val$noise + f Ldzp$l; e field_35250 field_35250 + m (Ldzp$l;Ldzp$g;Leoh;)V +c dzp$m net/minecraft/class_6686$class_6706 net/minecraft/world/level/levelgen/SurfaceRules$NotCondition + f Ldzp$e; a comp_206 target + m ()Ldzp$e; a comp_206 target + m (Ldzp$e;)V +c dzp$n net/minecraft/class_6686$class_6707 net/minecraft/world/level/levelgen/SurfaceRules$NotConditionSource + f Ldzp$f; a comp_207 target + f Layh; c field_35251 CODEC + m (Ldzp$g;)Ldzp$e; a method_39084 apply + m ()Ldzp$f; b comp_207 target + m (Ldzp$f;)V + m ()V +c dzp$o net/minecraft/class_6686$class_6708 net/minecraft/world/level/levelgen/SurfaceRules$RuleSource + f Lcom/mojang/serialization/Codec; b field_35252 CODEC + m ()Layh; a method_39061 codec + m (Ldzp$o;)Lcom/mojang/serialization/MapCodec; a method_42379 method_42379 + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_39085 bootstrap + m ()V +c dzp$p net/minecraft/class_6686$class_6709 net/minecraft/world/level/levelgen/SurfaceRules$SequenceRule + f Ljava/util/List; a comp_208 rules + m ()Ljava/util/List; a comp_208 rules + m (Ljava/util/List;)V +c dzp$q net/minecraft/class_6686$class_6710 net/minecraft/world/level/levelgen/SurfaceRules$SequenceRuleSource + f Ljava/util/List; a comp_209 sequence + f Layh; c field_35253 CODEC + m (Ldzp$g;)Ldzp$u; a method_39086 apply + m ()Ljava/util/List; b comp_209 sequence + m (Ljava/util/List;)V + m ()V +c dzp$r net/minecraft/class_6686$class_6711 net/minecraft/world/level/levelgen/SurfaceRules$StateRule + f Ldtc; a comp_210 state + m ()Ldtc; a comp_210 state + m (Ldtc;)V +c dzp$s net/minecraft/class_6686$class_6712 net/minecraft/world/level/levelgen/SurfaceRules$Steep + f Ldzp$s; a field_35254 INSTANCE + f Layh; c field_35255 CODEC + f [Ldzp$s; d field_35256 $VALUES + m (Ldzp$g;)Ldzp$e; a method_39087 apply + m ()[Ldzp$s; b method_39088 $values + m (Ljava/lang/String;I)V + m ()V +c dzp$t net/minecraft/class_6686$class_6713 net/minecraft/world/level/levelgen/SurfaceRules$StoneDepthCheck + f I a comp_276 offset + f Z c comp_211 addSurfaceDepth + f I d comp_277 secondaryDepthRange + f Leil; e comp_212 surfaceType + f Layh; f field_35257 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39089 method_39089 + m (Ldzp$g;)Ldzp$e; a method_39090 apply + m ()I b comp_276 offset + m ()Z c comp_211 addSurfaceDepth + m ()I d comp_277 secondaryDepthRange + m ()Leil; e comp_212 surfaceType + m (IZILeil;)V + m ()V +c dzp$t$a net/minecraft/class_6686$class_6713$class_6714 net/minecraft/world/level/levelgen/SurfaceRules$StoneDepthCheck$1StoneDepthCondition + f Ldzp$g; a field_35625 val$ruleContext + f Z b field_35258 val$ceiling + f Ldzp$t; e field_35259 field_35259 + m (Ldzp$t;Ldzp$g;Z)V +c dzp$u net/minecraft/class_6686$class_6715 net/minecraft/world/level/levelgen/SurfaceRules$SurfaceRule +c dzp$v net/minecraft/class_6686$class_6716 net/minecraft/world/level/levelgen/SurfaceRules$Temperature + f Ldzp$v; a field_35260 INSTANCE + f Layh; c field_35261 CODEC + f [Ldzp$v; d field_35262 $VALUES + m (Ldzp$g;)Ldzp$e; a method_39092 apply + m ()[Ldzp$v; b method_39093 $values + m (Ljava/lang/String;I)V + m ()V +c dzp$w net/minecraft/class_6686$class_6717 net/minecraft/world/level/levelgen/SurfaceRules$TestRule + f Ldzp$e; a comp_213 condition + f Ldzp$u; b comp_214 followup + m ()Ldzp$e; a comp_213 condition + m ()Ldzp$u; b comp_214 followup + m (Ldzp$e;Ldzp$u;)V +c dzp$x net/minecraft/class_6686$class_6718 net/minecraft/world/level/levelgen/SurfaceRules$TestRuleSource + f Ldzp$f; a comp_215 ifTrue + f Ldzp$o; c comp_216 thenRun + f Layh; d field_35263 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39094 method_39094 + m (Ldzp$g;)Ldzp$u; a method_39095 apply + m ()Ldzp$f; b comp_215 ifTrue + m ()Ldzp$o; c comp_216 thenRun + m (Ldzp$f;Ldzp$o;)V + m ()V +c dzp$y net/minecraft/class_6686$class_6775 net/minecraft/world/level/levelgen/SurfaceRules$VerticalGradientConditionSource + f Lakr; a comp_263 randomName + f Ldzs; c comp_264 trueAtAndBelow + f Ldzs; d comp_265 falseAtAndAbove + f Layh; e field_35626 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39480 method_39480 + m (Ldzp$g;)Ldzp$e; a method_39481 apply + m ()Lakr; b comp_263 randomName + m ()Ldzs; c comp_264 trueAtAndBelow + m ()Ldzs; d comp_265 falseAtAndAbove + m (Lakr;Ldzs;Ldzs;)V + m ()V +c dzp$y$a net/minecraft/class_6686$class_6775$class_6776 net/minecraft/world/level/levelgen/SurfaceRules$VerticalGradientConditionSource$1VerticalGradientCondition + f Ldzp$g; a field_35627 val$ruleContext + f I b field_35628 val$trueAtAndBelow + f I e field_35629 val$falseAtAndAbove + f Ldzl; f field_35630 val$randomFactory + m (Ldzp$y;Ldzp$g;IILdzl;)V +c dzp$z net/minecraft/class_6686$class_6720 net/minecraft/world/level/levelgen/SurfaceRules$WaterConditionSource + f I a comp_217 offset + f I c comp_218 surfaceDepthMultiplier + f Z d comp_219 addStoneDepth + f Layh; e field_35264 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39096 method_39096 + m (Ldzp$g;)Ldzp$e; a method_39097 apply + m ()I b comp_217 offset + m ()I c comp_218 surfaceDepthMultiplier + m ()Z d comp_219 addStoneDepth + m (IIZ)V + m ()V +c dzp$z$a net/minecraft/class_6686$class_6720$class_6721 net/minecraft/world/level/levelgen/SurfaceRules$WaterConditionSource$1WaterCondition + f Ldzp$g; a field_35632 val$ruleContext + f Ldzp$z; b field_35265 field_35265 + m (Ldzp$z;Ldzp$g;)V +c dzp$aa net/minecraft/class_6686$class_6722 net/minecraft/world/level/levelgen/SurfaceRules$YConditionSource + f Ldzs; a comp_220 anchor + f I c comp_221 surfaceDepthMultiplier + f Z d comp_222 addStoneDepth + f Layh; e field_35266 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39099 method_39099 + m (Ldzp$g;)Ldzp$e; a method_39100 apply + m ()Ldzs; b comp_220 anchor + m ()I c comp_221 surfaceDepthMultiplier + m ()Z d comp_222 addStoneDepth + m (Ldzs;IZ)V + m ()V +c dzp$aa$a net/minecraft/class_6686$class_6722$class_6723 net/minecraft/world/level/levelgen/SurfaceRules$YConditionSource$1YCondition + f Ldzp$g; a field_35267 val$ruleContext + f Ldzp$aa; b field_35268 field_35268 + m (Ldzp$aa;Ldzp$g;)V +c dzq net/minecraft/class_6724 net/minecraft/world/level/levelgen/SurfaceSystem + f Ldtc; a field_35275 WHITE_TERRACOTTA + f Ldtc; b field_35276 ORANGE_TERRACOTTA + f Ldtc; c field_35277 TERRACOTTA + f Ldtc; d field_35278 YELLOW_TERRACOTTA + f Ldtc; e field_35279 BROWN_TERRACOTTA + f Ldtc; f field_35280 RED_TERRACOTTA + f Ldtc; g field_35281 LIGHT_GRAY_TERRACOTTA + f Ldtc; h field_35282 PACKED_ICE + f Ldtc; i field_35283 SNOW_BLOCK + f Ldtc; j field_35285 defaultBlock + f I k field_35286 seaLevel + f [Ldtc; l field_35287 clayBands + f Leoh; m field_35288 clayBandsOffsetNoise + f Leoh; n field_35495 badlandsPillarNoise + f Leoh; o field_35496 badlandsPillarRoofNoise + f Leoh; p field_35497 badlandsSurfaceNoise + f Leoh; q field_35498 icebergPillarNoise + f Leoh; r field_35499 icebergPillarRoofNoise + f Leoh; s field_35500 icebergSurfaceNoise + f Ldzl; t field_35292 noiseRandom + f Leoh; u field_35293 surfaceNoise + f Leoh; v field_35680 surfaceSecondaryNoise + m (II)I a method_39552 getSurfaceDepth + m (III)Ldtc; a method_39103 getBand + m (ILddw;Lduv;Ljd$a;III)V a method_39104 frozenOceanExtension + m (Layw;)[Ldtc; a method_39108 generateBands + m (Layw;[Ldtc;ILdtc;)V a method_39109 makeBands + m (Ldtc;)Z a method_39333 isStone + m (Lduv;IIILdcy;)V a method_39102 erodedBadlandsExtension + m (Ldzm;Lddy;Ljz;ZLdzv;Lduy;Ldzc;Ldzp$o;)V a method_39106 buildSurface + m (Ldzp$o;Leaz;Ljava/util/function/Function;Lduy;Ldzc;Ljd;Z)Ljava/util/Optional; a method_39110 topMaterial + m (II)D b method_39555 getSurfaceSecondary + m (Ldzm;Ldtc;ILdzl;)V + m ()V +c dzq$1 net/minecraft/class_6724$1 net/minecraft/world/level/levelgen/SurfaceSystem$1 + f Lduy; a field_35294 val$protoChunk + f Ljd$a; b field_35295 val$columnPos + f Ldcd; c field_35296 val$chunkPos + m (Ldzq;Lduy;Ljd$a;Ldcd;)V +c dzr net/minecraft/class_7384 net/minecraft/world/level/levelgen/ThreadSafeLegacyRandomSource + f I d field_38760 MODULUS_BITS + f J e field_38761 MODULUS_MASK + f J f field_38762 MULTIPLIER + f J g field_38763 INCREMENT + f Ljava/util/concurrent/atomic/AtomicLong; h field_38764 seed + f Ldza; i field_38765 gaussianSource + m (J)V +c dzs net/minecraft/class_5843 net/minecraft/world/level/levelgen/VerticalAnchor + f Lcom/mojang/serialization/Codec; a field_28915 CODEC + f Ldzs; b field_28916 BOTTOM + f Ldzs; c field_28917 TOP + m ()Ldzs; a method_33840 bottom + m (I)Ldzs; a method_33841 absolute + m (Lcom/mojang/datafixers/util/Either;)Ldzs; a method_33843 merge + m (Ldzs;)Lcom/mojang/datafixers/util/Either; a method_33842 split + m (Ldzv;)I a method_33844 resolveY + m ()Ldzs; b method_33845 top + m (I)Ldzs; b method_33846 aboveBottom + m (I)Ldzs; c method_33849 belowTop + m ()V +c dzs$a net/minecraft/class_5843$class_5844 net/minecraft/world/level/levelgen/VerticalAnchor$AboveBottom + f Lcom/mojang/serialization/Codec; d field_28919 CODEC + f I e comp_507 offset + m ()I c comp_507 offset + m (I)V + m ()V +c dzs$b net/minecraft/class_5843$class_5845 net/minecraft/world/level/levelgen/VerticalAnchor$Absolute + f Lcom/mojang/serialization/Codec; d field_28920 CODEC + f I e comp_508 y + m ()I c comp_508 y + m (I)V + m ()V +c dzs$c net/minecraft/class_5843$class_5846 net/minecraft/world/level/levelgen/VerticalAnchor$BelowTop + f Lcom/mojang/serialization/Codec; d field_28921 CODEC + f I e comp_509 offset + m ()I c comp_509 offset + m (I)V + m ()V +c dzt net/minecraft/class_7723 net/minecraft/world/level/levelgen/WorldDimensions + f Lcom/mojang/serialization/MapCodec; a field_40363 CODEC + f Ljava/util/Map; b comp_1014 dimensions + f Ljava/util/Set; c field_40364 BUILTIN_ORDER + f I d field_40365 VANILLA_DIMENSION_COUNT + m ()Lduz; a method_45513 overworld + m (Lakq;)Ljava/util/Optional; a method_45514 get + m (Lakq;Ldwz;)Lcom/mojang/serialization/Lifecycle; a method_45515 checkStability + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_45516 method_45516 + m (Ldwz;)Z a method_45517 isStableOverworld + m (Ljava/util/List;Lakq;Ldwz;)V a method_45524 method_45524 + m (Ljava/util/Map;Ljm;Lduz;)Ljava/util/Map; a method_45519 withOverworld + m (Ljava/util/stream/Stream;)Ljava/util/stream/Stream; a method_45525 keysInOrder + m (Ljz;)Ldzt$b; a method_45518 bake + m (Ljz;Ljava/util/List;Lakq;)V a method_45521 method_45521 + m (Ljz;Ljava/util/Map;Lduz;)Ljava/util/Map; a method_45520 withOverworld + m (Lka;Lduz;)Ldzt; a method_45522 replaceOverworldGenerator + m (Lki;Ldzt$a;)V a method_45523 method_45523 + m ()Lcom/google/common/collect/ImmutableSet; b method_45526 levels + m (Lakq;)Ljava/util/Optional; b method_45527 method_45527 + m (Lakq;Ldwz;)Z b method_45528 isVanillaLike + m (Ldwz;)Z b method_45529 isStableNether + m (Ljz;)Lerj$a; b method_45530 specialWorldProperty + m ()Z c method_45531 isDebug + m (Lakq;)Z c method_45532 method_45532 + m (Ldwz;)Z c method_45533 isStableEnd + m ()Ljava/util/Map; d comp_1014 dimensions + m (Ldwz;)Lerj$a; d method_45534 method_45534 + m (Ljava/util/Map;)V + m (Ljz;)V + m ()V +c dzt$a net/minecraft/class_7723$class_7724 net/minecraft/world/level/levelgen/WorldDimensions$1Entry + f Lakq; a comp_1015 key + f Ldwz; b comp_1016 value + m ()Lakq; a comp_1015 key + m ()Ldwz; b comp_1016 value + m ()Ljy; c method_57014 registrationInfo + m (Lakq;Ldwz;)V +c dzt$b net/minecraft/class_7723$class_7725 net/minecraft/world/level/levelgen/WorldDimensions$Complete + f Ljz; a comp_1017 dimensions + f Lerj$a; b comp_1018 specialWorldProperty + m ()Lcom/mojang/serialization/Lifecycle; a method_45536 lifecycle + m ()Lka$b; b method_45537 dimensionsRegistryAccess + m ()Ljz; c comp_1017 dimensions + m ()Lerj$a; d comp_1018 specialWorldProperty + m (Ljz;Lerj$a;)V +c dzu net/minecraft/class_7726 net/minecraft/world/level/levelgen/WorldGenSettings + f Lcom/mojang/serialization/Codec; a field_40366 CODEC + f Ldzw; b comp_1019 options + f Ldzt; c comp_1020 dimensions + m ()Ldzw; a comp_1019 options + m (Lcom/mojang/serialization/DynamicOps;Ldzw;Ldzt;)Lcom/mojang/serialization/DataResult; a method_45538 encode + m (Lcom/mojang/serialization/DynamicOps;Ldzw;Lka;)Lcom/mojang/serialization/DataResult; a method_45539 encode + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_45540 method_45540 + m ()Ldzt; b comp_1020 dimensions + m (Ldzw;Ldzt;)V + m ()V +c dzv net/minecraft/class_5868 net/minecraft/world/level/levelgen/WorldGenerationContext + f I a field_34030 minY + f I b field_34031 height + m ()I a method_30462 getMinGenY + m ()I b method_30458 getGenDepth + m (Lduz;Ldcy;)V +c dzw net/minecraft/class_5285 net/minecraft/world/level/levelgen/WorldOptions + f Lcom/mojang/serialization/MapCodec; a field_24826 CODEC + f Ldzw; b field_40367 DEMO_OPTIONS + f J c field_24526 seed + f Z d field_24527 generateStructures + f Z e field_24528 generateBonusChest + f Ljava/util/Optional; f field_24532 legacyCustomOptions + m ()Ldzw; a method_45541 defaultWithRandomSeed + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28606 method_28606 + m (Ldzw;)Ljava/util/Optional; a method_28605 method_28605 + m (Ljava/lang/String;)Ljava/util/OptionalLong; a method_46720 parseSeed + m (Ljava/util/OptionalLong;)Ldzw; a method_28024 withSeed + m (Z)Ldzw; a method_28036 withBonusChest + m ()J b method_28028 seed + m (Z)Ldzw; b method_45542 withStructures + m ()Z c method_28029 generateStructures + m ()Z d method_28030 generateBonusChest + m ()Z e method_28035 isOldCustomizedWorld + m ()J f method_46721 randomSeed + m (JZZ)V + m (JZZLjava/util/Optional;)V + m ()V +c dzx net/minecraft/class_2919 net/minecraft/world/level/levelgen/WorldgenRandom + f Layw; d field_35141 randomSource + f I e field_28768 count + m (IIJJ)Layw; a method_12662 seedSlimeChunk + m (JII)J a method_12661 setDecorationSeed + m (JIII)V a method_12665 setLargeFeatureWithSalt + m (JII)V b method_12664 setFeatureSeed + m (JII)V c method_12663 setLargeFeatureSeed + m ()I l method_35335 getCount + m (Layw;)V +c dzx$a net/minecraft/class_2919$class_6675 net/minecraft/world/level/levelgen/WorldgenRandom$Algorithm + f Ldzx$a; a field_35142 LEGACY + f Ldzx$a; b field_35143 XOROSHIRO + f Ljava/util/function/LongFunction; c field_35144 constructor + f [Ldzx$a; d field_35145 $VALUES + m ()[Ldzx$a; a method_39005 $values + m (J)Layw; a method_39006 newInstance + m (Ljava/lang/String;ILjava/util/function/LongFunction;)V + m ()V +c dzy net/minecraft/class_6676 net/minecraft/world/level/levelgen/Xoroshiro128PlusPlus + f Lcom/mojang/serialization/Codec; a field_44879 CODEC + f J b field_35146 seedLo + f J c field_35147 seedHi + m ()J a method_39007 nextLong + m (Ldzy;)Ljava/util/stream/LongStream; a method_51857 method_51857 + m (Ljava/util/stream/LongStream;)Lcom/mojang/serialization/DataResult; a method_51858 method_51858 + m ([J)Ldzy; a method_51859 method_51859 + m (Ldzn$a;)V + m (JJ)V + m ()V +c dzz net/minecraft/class_6677 net/minecraft/world/level/levelgen/XoroshiroRandomSource + f Lcom/mojang/serialization/Codec; b field_44880 CODEC + f F c field_35148 FLOAT_UNIT + f D d field_35149 DOUBLE_UNIT + f Ldzy; e field_35150 randomNumberGenerator + f Ldza; f field_35151 gaussianSource + m (Ldzy;)Ldzz; a method_51860 method_51860 + m (Ldzz;)Ldzy; a method_51861 method_51861 + m (I)J c method_39008 nextBits + m (J)V + m (Ldzn$a;)V + m (JJ)V + m (Ldzy;)V + m ()V +c dzz$a net/minecraft/class_6677$class_6678 net/minecraft/world/level/levelgen/XoroshiroRandomSource$XoroshiroPositionalRandomFactory + f J a field_35153 seedLo + f J b field_35154 seedHi + m (JJ)V +c eaa net/minecraft/class_6748 net/minecraft/world/level/levelgen/blending/Blender + f Leaa; a field_35501 EMPTY + f Leoh; b field_35681 SHIFT_NOISE + f I c field_35502 HEIGHT_BLENDING_RANGE_CELLS + f I d field_35503 HEIGHT_BLENDING_RANGE_CHUNKS + f I e field_35504 DENSITY_BLENDING_RANGE_CELLS + f I f field_35505 DENSITY_BLENDING_RANGE_CHUNKS + f D g field_36224 OLD_CHUNK_XZ_RADIUS + f Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap; h field_36343 heightAndBiomeBlendingData + f Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap; i field_36344 densityBlendingData + m ()Leaa; a method_39336 empty + m (D)D a method_39337 heightToOffset + m (DDDDDD)D a method_39808 distanceToCube + m (DDDDDDD)D a method_39807 method_39807 + m (II)Leaa$a; a method_39340 blendOffsetAndFactor + m (III)Ljm; a method_39561 blendBiome + m (IIILeaa$b;)D a method_39562 getBlendingDataValue + m (IIILorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;IIID)V a method_39339 method_39339 + m (IIILorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;Ljava/lang/Long;Leab;)V a method_40026 method_40026 + m (IIILorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableObject;Ljava/lang/Long;Leab;)V a method_39560 method_39560 + m (IILorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;IID)V a method_39341 method_39341 + m (IILorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableDouble;Ljava/lang/Long;Leab;)V a method_40027 method_40027 + m (IILorg/apache/commons/lang3/mutable/MutableDouble;Lorg/apache/commons/lang3/mutable/MutableObject;IILjm;)V a method_40025 method_40025 + m (Larb;)Leaa; a method_39342 of + m (Larb;Lduy;)V a method_39772 generateBorderTicks + m (Ldds;Ldvs;)V a method_39809 addAroundOldChunksCarvingMaskFilter + m (Lddz;)Lddz; a method_39563 getBiomeResolver + m (Lddz;IIILdef$f;)Ljm; a method_39564 method_39564 + m (Ldux$a;Ldux;)V a method_39810 method_39810 + m (Lduy;Ljd;)V a method_39773 generateBorderTick + m (Ldyr$b;D)D a method_39338 blendDensity + m (Leaa$b;IIIII)D a method_39565 getBlendingDataValue + m (Leaa$c;III)Z a method_39811 method_39811 + m (Leab;Ljava/util/Map;)Leaa$c; a method_39815 makeOldChunkDistanceGetter + m (Ljava/util/List;DDD)D a method_39813 method_39813 + m (Ljava/util/List;Ljj;Leab;)V a method_39814 method_39814 + m (Ljj;Leab;)Leaa$c; a method_39812 makeOffsetOldChunkDistanceGetter + m (Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;)V + m ()V +c eaa$1 net/minecraft/class_6748$1 net/minecraft/world/level/levelgen/blending/Blender$1 + m (Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;)V +c eaa$a net/minecraft/class_6748$class_6956 net/minecraft/world/level/levelgen/blending/Blender$BlendingOutput + f D a comp_435 alpha + f D b comp_436 blendingOffset + m ()D a comp_435 alpha + m ()D b comp_436 blendingOffset + m (DD)V +c eaa$b net/minecraft/class_6748$class_6781 net/minecraft/world/level/levelgen/blending/Blender$CellValueGetter +c eaa$c net/minecraft/class_6748$class_6831 net/minecraft/world/level/levelgen/blending/Blender$DistanceGetter +c eab net/minecraft/class_6749 net/minecraft/world/level/levelgen/blending/BlendingData + f I a field_36280 CELL_WIDTH + f I b field_35511 CELL_HEIGHT + f I c field_36281 CELL_RATIO + f D d field_35513 NO_VALUE + f Lcom/mojang/serialization/Codec; e field_35682 CODEC + f D f field_35514 BLENDING_DENSITY_FACTOR + f D g field_37704 SOLID_DENSITY + f D h field_37705 AIR_DENSITY + f I i field_35516 CELLS_PER_SECTION_Y + f I j field_35683 QUARTS_PER_SECTION + f I k field_35684 CELL_HORIZONTAL_MAX_INDEX_INSIDE + f I l field_35685 CELL_HORIZONTAL_MAX_INDEX_OUTSIDE + f I m field_35686 CELL_COLUMN_INSIDE_COUNT + f I n field_35687 CELL_COLUMN_OUTSIDE_COUNT + f I o field_35518 CELL_COLUMN_COUNT + f Ldcy; p field_35515 areaWithOldGeneration + f Ljava/util/List; q field_35519 SURFACE_BLOCKS + f Z r field_35690 hasCalculatedData + f [D s field_35692 heights + f Ljava/util/List; t field_36345 biomes + f [[D u field_35693 densities + f Lcom/mojang/serialization/Codec; v field_35695 DOUBLE_ARRAY_CODEC + m ()Ldcy; a method_41564 getAreaWithOldGeneration + m (D)Z a method_39567 method_39567 + m (I)I a method_41565 getCellYIndex + m (II)I a method_39578 getInsideIndex + m (III)D a method_39344 getHeight + m (IIIILeab$b;)V a method_39346 iterateDensities + m (IIILeab$a;)V a method_40028 iterateBiomes + m (IILeab$c;)V a method_39351 iterateHeights + m (ILduy;II)V a method_39347 addValuesForColumn + m (Larb;II)Leab; a method_39570 getOrUpdateBlendingData + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39571 method_39571 + m (Ldds;IIZ)Ljava/util/Set; a method_39579 sideByGenerationAge + m (Lduy;II)I a method_39349 getHeightAtXZ + m (Lduy;III)[D a method_39354 getDensityColumn + m (Lduy;Ljava/util/Set;)V a method_39572 calculateData + m (Lduy;Ljd$a;)D a method_39905 read1 + m (Lduy;Ljd;)Z a method_39350 isGround + m (Leab;)Lcom/mojang/serialization/DataResult; a method_39573 validateArraySize + m ([D)V a method_39574 method_39574 + m ([DI)D a method_39575 getDensity + m ()I b method_39576 cellCountPerColumn + m (I)I b method_39343 getX + m (II)I b method_39582 getOutsideIndex + m (III)D b method_39345 getDensity + m (Lduy;II)Ljava/util/List; b method_41566 getBiomeColumn + m (Lduy;Ljd$a;)D b method_39906 read7 + m (Leab;)Ljava/util/Optional; b method_39580 method_39580 + m ()I c method_41567 quartCountPerColumn + m (I)I c method_39352 getZ + m (Leab;)Ljava/lang/Integer; c method_41568 method_41568 + m ()I d method_39581 getColumnMinY + m (I)I d method_39355 zeroIfNegative + m (Leab;)Ljava/lang/Integer; d method_41569 method_41569 + m ()I e method_39583 getMinY + m ()Ljava/lang/String; f method_49533 method_49533 + m (IILjava/util/Optional;)V + m ()V +c eab$a net/minecraft/class_6749$class_6853 net/minecraft/world/level/levelgen/blending/BlendingData$BiomeConsumer +c eab$b net/minecraft/class_6749$class_6750 net/minecraft/world/level/levelgen/blending/BlendingData$DensityConsumer +c eab$c net/minecraft/class_6749$class_6751 net/minecraft/world/level/levelgen/blending/BlendingData$HeightConsumer +c eac net/minecraft/class_6753 net/minecraft/world/level/levelgen/blending/package-info +c ead net/minecraft/class_6644 net/minecraft/world/level/levelgen/blockpredicates/AllOfPredicate + f Lcom/mojang/serialization/MapCodec; a field_35052 CODEC + m (Ldds;Ljd;)Z a method_38874 test + m (Ljava/util/List;)V + m ()V +c eae net/minecraft/class_6645 net/minecraft/world/level/levelgen/blockpredicates/AnyOfPredicate + f Lcom/mojang/serialization/MapCodec; a field_35053 CODEC + m (Ldds;Ljd;)Z a method_38875 test + m (Ljava/util/List;)V + m ()V +c eaf net/minecraft/class_6646 net/minecraft/world/level/levelgen/blockpredicates/BlockPredicate + f Lcom/mojang/serialization/Codec; b field_35054 CODEC + f Leaf; c field_35696 ONLY_IN_AIR_PREDICATE + f Leaf; d field_35697 ONLY_IN_AIR_OR_WATER_PREDICATE + m ()Leag; a method_38873 type + m (Lawu;)Leaf; a method_39907 matchesTag + m (Ldtc;Lkh;)Leaf; a method_39009 wouldSurvive + m (Leaf;)Leaf; a method_38877 not + m (Leaf;Leaf;)Leaf; a method_38878 allOf + m (Ljava/util/List;)Leaf; a method_38880 allOf + m (Lji;)Leaf; a method_39930 hasSturdyFace + m (Lkh;)Leaf; a method_39010 replaceable + m (Lkh;Lawu;)Leaf; a method_39908 matchesTag + m (Lkh;Ljava/util/List;)Leaf; a method_38881 matchesBlocks + m (Lkh;Lji;)Leaf; a method_39909 hasSturdyFace + m (Lkh;[Ldfy;)Leaf; a method_43288 matchesBlocks + m (Lkh;[Lepd;)Leaf; a method_43289 matchesFluids + m ([Ldfy;)Leaf; a method_43290 matchesBlocks + m ([Leaf;)Leaf; a method_38882 allOf + m ([Lepd;)Leaf; a method_43291 matchesFluids + m ()Leaf; b method_38883 replaceable + m (Leaf;Leaf;)Leaf; b method_38884 anyOf + m (Ljava/util/List;)Leaf; b method_38885 anyOf + m (Lkh;)Leaf; b method_39584 solid + m (Lkh;Ljava/util/List;)Leaf; b method_38886 matchesFluids + m ([Leaf;)Leaf; b method_38887 anyOf + m ()Leaf; c method_39585 solid + m (Ljava/util/List;)Leaf; c method_39910 matchesBlocks + m (Lkh;)Leaf; c method_45543 noFluid + m ()Leaf; d method_45544 noFluid + m (Lkh;)Leaf; d method_39586 insideWorld + m ()Leaf; e method_39011 alwaysTrue + m (Lkh;)Leaf; e method_60284 unobstructed + m ()Leaf; f method_60285 unobstructed + m ()V +c eag net/minecraft/class_6647 net/minecraft/world/level/levelgen/blockpredicates/BlockPredicateType + f Leag; a field_35055 MATCHING_BLOCKS + f Leag; b field_36282 MATCHING_BLOCK_TAG + f Leag; c field_35056 MATCHING_FLUIDS + f Leag; d field_36283 HAS_STURDY_FACE + f Leag; e field_35698 SOLID + f Leag; f field_35057 REPLACEABLE + f Leag; g field_35155 WOULD_SURVIVE + f Leag; h field_35699 INSIDE_WORLD_BOUNDS + f Leag; i field_35058 ANY_OF + f Leag; j field_35059 ALL_OF + f Leag; k field_35060 NOT + f Leag; l field_35156 TRUE + f Leag; m field_51788 UNOBSTRUCTED + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_38888 method_38888 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Leag; a method_38889 register + m ()V +c eah net/minecraft/class_6648 net/minecraft/world/level/levelgen/blockpredicates/CombiningPredicate + f Ljava/util/List; e field_35061 predicates + m (Leah;)Ljava/util/List; a method_38890 method_38890 + m (Ljava/util/function/Function;)Lcom/mojang/serialization/MapCodec; a method_38891 codec + m (Ljava/util/function/Function;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38892 method_38892 + m (Ljava/util/List;)V +c eai net/minecraft/class_6847 net/minecraft/world/level/levelgen/blockpredicates/HasSturdyFacePredicate + f Lcom/mojang/serialization/MapCodec; a field_36284 CODEC + f Lkh; e field_36285 offset + f Lji; f field_36286 direction + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39912 method_39912 + m (Ldds;Ljd;)Z a method_39911 test + m (Leai;)Lji; a method_39913 method_39913 + m (Leai;)Lkh; b method_39914 method_39914 + m (Lkh;Lji;)V + m ()V +c eaj net/minecraft/class_6783 net/minecraft/world/level/levelgen/blockpredicates/InsideWorldBoundsPredicate + f Lcom/mojang/serialization/MapCodec; a field_35700 CODEC + f Lkh; e field_35701 offset + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39588 method_39588 + m (Ldds;Ljd;)Z a method_39587 test + m (Leaj;)Lkh; a method_39589 method_39589 + m (Lkh;)V + m ()V +c eak net/minecraft/class_6848 net/minecraft/world/level/levelgen/blockpredicates/MatchingBlockTagPredicate + f Lawu; a field_36287 tag + f Lcom/mojang/serialization/MapCodec; e field_36288 CODEC + m (Leak;)Lawu; a method_39915 method_39915 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_39916 method_39916 + m (Lkh;Lawu;)V + m ()V +c eal net/minecraft/class_6649 net/minecraft/world/level/levelgen/blockpredicates/MatchingBlocksPredicate + f Lcom/mojang/serialization/MapCodec; a field_35062 CODEC + f Ljq; e field_35063 blocks + m (Leal;)Ljq; a method_38896 method_38896 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_38894 method_38894 + m (Lkh;Ljq;)V + m ()V +c eam net/minecraft/class_6650 net/minecraft/world/level/levelgen/blockpredicates/MatchingFluidsPredicate + f Lcom/mojang/serialization/MapCodec; a field_35065 CODEC + f Ljq; e field_35066 fluids + m (Leam;)Ljq; a method_38900 method_38900 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_38898 method_38898 + m (Lkh;Ljq;)V + m ()V +c ean net/minecraft/class_6651 net/minecraft/world/level/levelgen/blockpredicates/NotPredicate + f Lcom/mojang/serialization/MapCodec; a field_35068 CODEC + f Leaf; e field_35069 predicate + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38902 method_38902 + m (Ldds;Ljd;)Z a method_38901 test + m (Lean;)Leaf; a method_38903 method_38903 + m (Leaf;)V + m ()V +c eao net/minecraft/class_6652 net/minecraft/world/level/levelgen/blockpredicates/ReplaceablePredicate + f Lcom/mojang/serialization/MapCodec; a field_35071 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_38905 method_38905 + m (Lkh;)V + m ()V +c eap net/minecraft/class_6784 net/minecraft/world/level/levelgen/blockpredicates/SolidPredicate + f Lcom/mojang/serialization/MapCodec; a field_35702 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_39590 method_39590 + m (Lkh;)V + m ()V +c eaq net/minecraft/class_6679 net/minecraft/world/level/levelgen/blockpredicates/StateTestingPredicate + f Lkh; f field_35157 offset + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P1; a method_39013 stateTestingCodec + m (Ldds;Ljd;)Z a method_39012 test + m (Ldtc;)Z a method_38893 test + m (Leaq;)Lkh; a method_39014 method_39014 + m (Lkh;)V +c ear net/minecraft/class_6680 net/minecraft/world/level/levelgen/blockpredicates/TrueBlockPredicate + f Lear; a field_35158 INSTANCE + f Lcom/mojang/serialization/MapCodec; e field_35159 CODEC + m (Ldds;Ljd;)Z a method_39015 test + m ()Lear; g method_39016 method_39016 + m ()V + m ()V +c eas net/minecraft/class_9751 net/minecraft/world/level/levelgen/blockpredicates/UnobstructedPredicate + f Lcom/mojang/serialization/MapCodec; a field_51789 CODEC + f Lkh; e comp_2779 offset + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60286 method_60286 + m (Ldds;Ljd;)Z a method_60287 test + m ()Lkh; g comp_2779 offset + m (Lkh;)V + m ()V +c eat net/minecraft/class_6681 net/minecraft/world/level/levelgen/blockpredicates/WouldSurvivePredicate + f Lcom/mojang/serialization/MapCodec; a field_35160 CODEC + f Lkh; e field_35161 offset + f Ldtc; f field_35162 state + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39018 method_39018 + m (Ldds;Ljd;)Z a method_39017 test + m (Leat;)Ldtc; a method_39019 method_39019 + m (Leat;)Lkh; b method_39020 method_39020 + m (Lkh;Ldtc;)V + m ()V +c eau net/minecraft/class_6653 net/minecraft/world/level/levelgen/blockpredicates/package-info +c eav net/minecraft/class_5869 net/minecraft/world/level/levelgen/carver/CanyonCarverConfiguration + f Lcom/mojang/serialization/Codec; a field_29041 CODEC + f Lbpu; b field_31479 verticalRotation + f Leav$a; c field_31480 shape + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_35336 method_35336 + m (Leav;)Leav$a; a method_35337 method_35337 + m (Leav;)Lbpu; b method_35338 method_35338 + m (Leav;)Leax; c method_35339 method_35339 + m (FLehx;Lbpu;Ldzs;Leay;Ljq;Lbpu;Leav$a;)V + m (Leax;Lbpu;Leav$a;)V + m ()V +c eav$a net/minecraft/class_5869$class_6107 net/minecraft/world/level/levelgen/carver/CanyonCarverConfiguration$CanyonShapeConfiguration + f Lcom/mojang/serialization/Codec; a field_31481 CODEC + f Lbpu; b field_31482 distanceFactor + f Lbpu; c field_31483 thickness + f I d field_31484 widthSmoothness + f Lbpu; e field_31485 horizontalRadiusFactor + f F f field_31486 verticalRadiusDefaultFactor + f F g field_31487 verticalRadiusCenterFactor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_35340 method_35340 + m (Leav$a;)Ljava/lang/Float; a method_35341 method_35341 + m (Leav$a;)Ljava/lang/Float; b method_35342 method_35342 + m (Leav$a;)Lbpu; c method_35343 method_35343 + m (Leav$a;)Ljava/lang/Integer; d method_35344 method_35344 + m (Leav$a;)Lbpu; e method_35345 method_35345 + m (Leav$a;)Lbpu; f method_35346 method_35346 + m (Lbpu;Lbpu;ILbpu;FF)V + m ()V +c eaw net/minecraft/class_5870 net/minecraft/world/level/levelgen/carver/CanyonWorldCarver + m (Leav;Layw;)Z a method_33959 isStartChunk + m (Leav;Layw;DFF)D a method_33960 updateVerticalRadius + m (Leaz;Leav;Layw;)[F a method_33966 initWidthFactors + m (Leaz;Leav;Lduy;Ljava/util/function/Function;JLdyk;DDDFFFIIDLdux;)V a method_33961 doCarve + m (Leaz;Leav;Lduy;Ljava/util/function/Function;Layw;Ldyk;Ldcd;Ldux;)Z a method_33962 carve + m (Leaz;[FDDDI)Z a method_33964 shouldSkip + m ([FLeaz;DDDI)Z a method_33965 method_33965 + m (Lcom/mojang/serialization/Codec;)V +c eax net/minecraft/class_5871 net/minecraft/world/level/levelgen/carver/CarverConfiguration + f Lcom/mojang/serialization/MapCodec; d field_29054 CODEC + f Lehx; e field_31488 y + f Lbpu; f field_31489 yScale + f Ldzs; g field_31490 lavaLevel + f Leay; h field_29053 debugSettings + f Ljq; i field_38864 replaceable + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33968 method_33968 + m (Leax;)Ljq; a method_43292 method_43292 + m (Leax;)Leay; b method_36411 method_36411 + m (Leax;)Ldzs; c method_35348 method_35348 + m (Leax;)Lbpu; d method_35349 method_35349 + m (Leax;)Lehx; e method_35350 method_35350 + m (Leax;)Ljava/lang/Float; f method_35351 method_35351 + m (FLehx;Lbpu;Ldzs;Leay;Ljq;)V + m ()V +c eay net/minecraft/class_5872 net/minecraft/world/level/levelgen/carver/CarverDebugSettings + f Leay; a field_29055 DEFAULT + f Lcom/mojang/serialization/Codec; b field_29056 CODEC + f Z c field_29057 debugMode + f Ldtc; d field_29058 airState + f Ldtc; e field_33611 waterState + f Ldtc; f field_33612 lavaState + f Ldtc; g field_33613 barrierState + m ()Z a method_33970 isDebugMode + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33971 method_33971 + m (Ldtc;Ldtc;Ldtc;Ldtc;)Leay; a method_36412 of + m (ZLdtc;)Leay; a method_33972 of + m (ZLdtc;Ldtc;Ldtc;Ldtc;)Leay; a method_36413 of + m ()Ldtc; b method_33973 getAirState + m ()Ldtc; c method_36414 getWaterState + m ()Ldtc; d method_36415 getLavaState + m ()Ldtc; e method_36416 getBarrierState + m (ZLdtc;Ldtc;Ldtc;Ldtc;)V + m ()V +c eaz net/minecraft/class_5873 net/minecraft/world/level/levelgen/carver/CarvingContext + f Lka; a field_35299 registryAccess + f Ldzc; b field_35703 noiseChunk + f Ldzm; c field_37706 randomState + f Ldzp$o; d field_37707 surfaceRule + m (Ljava/util/function/Function;Lduy;Ljd;Z)Ljava/util/Optional; a method_39114 topMaterial + m ()Lka; c method_39115 registryAccess + m ()Ldzm; d method_41570 randomState + m (Ldzb;Lka;Ldcy;Ldzc;Ldzm;Ldzp$o;)V +c eba net/minecraft/class_6108 net/minecraft/world/level/levelgen/carver/CaveCarverConfiguration + f Lcom/mojang/serialization/Codec; a field_31491 CODEC + f Lbpu; b field_31492 horizontalRadiusMultiplier + f Lbpu; c field_31493 verticalRadiusMultiplier + f Lbpu; j field_31494 floorLevel + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_35352 method_35352 + m (Leba;)Lbpu; a method_35353 method_35353 + m (Leba;)Lbpu; b method_35354 method_35354 + m (Leba;)Lbpu; c method_35355 method_35355 + m (Leba;)Leax; d method_35356 method_35356 + m (FLehx;Lbpu;Ldzs;Leay;Ljq;Lbpu;Lbpu;Lbpu;)V + m (FLehx;Lbpu;Ldzs;Ljq;Lbpu;Lbpu;Lbpu;)V + m (Leax;Lbpu;Lbpu;Lbpu;)V + m ()V +c ebb net/minecraft/class_2925 net/minecraft/world/level/levelgen/carver/CaveWorldCarver + m ()I a method_16577 getCaveBound + m (DDDD)Z a method_33974 shouldSkip + m (DLeaz;DDDI)Z a method_33975 method_33975 + m (Layw;)F a method_16576 getThickness + m (Leaz;Leba;Lduy;Ljava/util/function/Function;JLdyk;DDDDDFFFIIDLdux;Lebe$a;)V a method_12675 createTunnel + m (Leaz;Leba;Lduy;Ljava/util/function/Function;Layw;Ldyk;Ldcd;Ldux;)Z a method_35357 carve + m (Leaz;Leba;Lduy;Ljava/util/function/Function;Ldyk;DDDFDLdux;Lebe$a;)V a method_12674 createRoom + m (Leba;Layw;)Z a method_35358 isStartChunk + m ()D b method_16578 getYScale + m (Lcom/mojang/serialization/Codec;)V +c ebc net/minecraft/class_2922 net/minecraft/world/level/levelgen/carver/ConfiguredWorldCarver + f Lcom/mojang/serialization/Codec; a field_25832 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_24828 CODEC + f Lcom/mojang/serialization/Codec; c field_26755 LIST_CODEC + f Lebe; d comp_330 worldCarver + f Leax; e comp_331 config + m ()Lebe; a comp_330 worldCarver + m (Layw;)Z a method_12669 isStartChunk + m (Leaz;Lduy;Ljava/util/function/Function;Layw;Ldyk;Ldcd;Ldux;)Z a method_12668 carve + m (Lebc;)Lebe; a method_28612 method_28612 + m ()Leax; b comp_331 config + m (Lebe;Leax;)V + m ()V +c ebd net/minecraft/class_2934 net/minecraft/world/level/levelgen/carver/NetherWorldCarver + m (Leaz;Leba;Lduy;Ljava/util/function/Function;Ldux;Ljd$a;Ljd$a;Ldyk;Lorg/apache/commons/lang3/mutable/MutableBoolean;)Z a method_35359 carveBlock + m (Lcom/mojang/serialization/Codec;)V +c ebe net/minecraft/class_2939 net/minecraft/world/level/levelgen/carver/WorldCarver + f Lebe; a field_29060 CAVE + f Lebe; b field_13297 NETHER_CAVE + f Lebe; c field_13295 CANYON + f Ldtc; d field_13301 AIR + f Ldtc; e field_13294 CAVE_AIR + f Lepe; f field_13305 WATER + f Lepe; g field_13296 LAVA + f Ljava/util/Set; h field_13298 liquids + f Lcom/mojang/serialization/MapCodec; i field_24831 configuredCodec + m (Ldcd;DDIIF)Z a method_33976 canReach + m (Lduy;Ljd$a;Ldtc;)V a method_39116 method_39116 + m (Leax;)Lebc; a method_28614 configured + m (Leax;Layw;)Z a method_12705 isStartChunk + m (Leax;Ldtc;)Z a method_12709 canReplaceBlock + m (Leaz;Leax;Lduy;Ljava/util/function/Function;Layw;Ldyk;Ldcd;Ldux;)Z a method_12702 carve + m (Leaz;Leax;Lduy;Ljava/util/function/Function;Ldux;Ljd$a;Ljd$a;Ldyk;Lorg/apache/commons/lang3/mutable/MutableBoolean;)Z a method_16581 carveBlock + m (Leaz;Leax;Lduy;Ljava/util/function/Function;Ldyk;DDDDDLdux;Lebe$a;)Z a method_33978 carveEllipsoid + m (Leaz;Leax;Ljd;Ldyk;)Ldtc; a method_36418 getCarveState + m (Ljava/lang/String;Lebe;)Lebe; a method_12704 register + m (Leax;)Z b method_33980 isDebugEnabled + m (Leax;Ldtc;)Ldtc; b method_36417 getDebugState + m ()Lcom/mojang/serialization/MapCodec; c method_28616 configuredCodec + m ()I d method_12710 getRange + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ebe$a net/minecraft/class_2939$class_5874 net/minecraft/world/level/levelgen/carver/WorldCarver$CarveSkipChecker +c ebf net/minecraft/class_6109 net/minecraft/world/level/levelgen/carver/package-info +c ebg net/minecraft/class_4625 net/minecraft/world/level/levelgen/feature/AbstractHugeMushroomFeature + m (IIII)I a method_23372 getTreeRadiusForHeight + m (Layw;)I a method_23377 getTreeHeight + m (Ldcx;Layw;Ljd;ILjd$a;Leek;)V a method_23375 makeCap + m (Ldcx;Layw;Ljd;Leek;ILjd$a;)V a method_23376 placeTrunk + m (Ldcx;Ljd;ILjd$a;Leek;)Z a method_23374 isValidPosition + m (Lcom/mojang/serialization/Codec;)V +c ebh net/minecraft/class_2942 net/minecraft/world/level/levelgen/feature/BambooFeature + f Ldtc; a field_13308 BAMBOO_TRUNK + f Ldtc; b field_13311 BAMBOO_FINAL_LARGE + f Ldtc; c field_13310 BAMBOO_TOP_LARGE + f Ldtc; d field_13309 BAMBOO_TOP_SMALL + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ebi net/minecraft/class_5153 net/minecraft/world/level/levelgen/feature/BasaltColumnsFeature + f Lcom/google/common/collect/ImmutableList; a field_24132 CANNOT_PLACE_ON + f I ao field_31498 UNCLUSTERED_SIZE + f I b field_31495 CLUSTERED_REACH + f I c field_31496 CLUSTERED_SIZE + f I d field_31497 UNCLUSTERED_REACH + m (Ldcx;ILjd$a;)Z a method_30379 canPlaceAt + m (Ldcx;ILjd$a;I)Ljd; a method_27094 findSurface + m (Ldcx;ILjd;)Z a method_27095 isAirOrLavaOcean + m (Ldcx;ILjd;II)Z a method_27096 placeColumn + m (Ldcx;Ljd$a;I)Ljd; a method_27098 findAir + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ebj net/minecraft/class_4779 net/minecraft/world/level/levelgen/feature/BasaltPillarFeature + m (Ldcx;Layw;Ljd;)V a method_24434 placeBaseHangOff + m (Ldcx;Layw;Ljd;)Z b method_24435 placeHangOff + m (Lcom/mojang/serialization/Codec;)V +c ebk net/minecraft/class_2950 net/minecraft/world/level/levelgen/feature/BlockBlobFeature + m (Lcom/mojang/serialization/Codec;)V +c ebl net/minecraft/class_6654 net/minecraft/world/level/levelgen/feature/BlockColumnFeature + m ([IIIZ)V a method_38906 truncate + m (Lcom/mojang/serialization/Codec;)V +c ebm net/minecraft/class_3805 net/minecraft/world/level/levelgen/feature/BlockPileFeature + m (Ldcx;Ljd;Layw;)Z a method_16707 mayPlaceOn + m (Ldcx;Ljd;Layw;Leea;)V a method_16708 tryPlaceBlock + m (Lcom/mojang/serialization/Codec;)V +c ebn net/minecraft/class_2954 net/minecraft/world/level/levelgen/feature/BlueIceFeature + m (Lcom/mojang/serialization/Codec;)V +c ebo net/minecraft/class_2953 net/minecraft/world/level/levelgen/feature/BonusChestFeature + m (Lcom/mojang/serialization/Codec;)V +c ebp net/minecraft/class_2964 net/minecraft/world/level/levelgen/feature/ChorusPlantFeature + m (Lcom/mojang/serialization/Codec;)V +c ebq net/minecraft/class_2975 net/minecraft/world/level/levelgen/feature/ConfiguredFeature + f Lcom/mojang/serialization/Codec; a field_25833 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_24833 CODEC + f Lcom/mojang/serialization/Codec; c field_26756 LIST_CODEC + f Lece; d comp_332 feature + f Leei; e comp_333 config + m ()Ljava/util/stream/Stream; a method_30648 getFeatures + m (Ldds;Lduz;Layw;Ljd;)Z a method_12862 place + m (Lebq;)Lece; a method_28621 method_28621 + m ()Lece; b comp_332 feature + m ()Leei; c comp_333 config + m (Lece;Leei;)V + m ()V +c ebr net/minecraft/class_2972 net/minecraft/world/level/levelgen/feature/CoralClawFeature + m (Lcom/mojang/serialization/Codec;)V +c ebs net/minecraft/class_2978 net/minecraft/world/level/levelgen/feature/CoralFeature + m (Ldcx;Layw;Ljd;Ldtc;)Z a method_12863 placeFeature + m (Ldcx;Ljd;Ldfy;)V a method_40029 method_40029 + m (Lji;Ldcx;Ljd;Ldfy;)V a method_40030 method_40030 + m (Ldcx;Layw;Ljd;Ldtc;)Z b method_12864 placeCoralBlock + m (Lcom/mojang/serialization/Codec;)V +c ebt net/minecraft/class_2977 net/minecraft/world/level/levelgen/feature/CoralMushroomFeature + m (Lcom/mojang/serialization/Codec;)V +c ebu net/minecraft/class_2979 net/minecraft/world/level/levelgen/feature/CoralTreeFeature + m (Lcom/mojang/serialization/Codec;)V +c ebv net/minecraft/class_5154 net/minecraft/world/level/levelgen/feature/DeltaFeature + f Lcom/google/common/collect/ImmutableList; a field_24133 CANNOT_REPLACE + f [Lji; b field_23883 DIRECTIONS + f D c field_31501 RIM_SPAWN_CHANCE + m (Ldcx;Ljd;Leee;)Z a method_27103 isClear + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ebw net/minecraft/class_3005 net/minecraft/world/level/levelgen/feature/DesertWellFeature + f Ldtl; a field_13450 IS_SAND + f Ldtc; ao field_13449 water + f Ldtc; b field_43324 sand + f Ldtc; c field_13452 sandSlab + f Ldtc; d field_13451 sandstone + m (Ljd;Ldql;)V a method_49235 method_49235 + m (Ldds;Ljd;)V b method_49883 placeSusSand + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ebx net/minecraft/class_3011 net/minecraft/world/level/levelgen/feature/DiskFeature + m (Leef;Ldds;Layw;IILjd$a;)Z a method_43160 placeColumn + m (Lcom/mojang/serialization/Codec;)V +c eby net/minecraft/class_5725 net/minecraft/world/level/levelgen/feature/DripstoneClusterFeature + m (IIIILeeg;)D a method_32997 getChanceOfStalagmiteOrStalactite + m (Layw;FFFF)F a method_33003 randomBetweenBiased + m (Layw;IIFILeeg;)I a method_33004 getDripstoneHeight + m (Ldcx;Ljd;)Z a method_32998 canBeAdjacentToWater + m (Ldcz;Ljd;)Z a method_33386 isLava + m (Ldds;Layw;Ljd;IIFDIFLeeg;)V a method_33002 placeColumn + m (Ldds;Ljd;ILji;)V a method_33001 replaceBlocksWithDripstoneBlocks + m (Ldds;Ljd;)Z b method_33000 canPlacePool + m (Lcom/mojang/serialization/Codec;)V +c ebz net/minecraft/class_5726 net/minecraft/world/level/levelgen/feature/DripstoneUtils + m (DDDD)D a method_33005 getDripstoneHeight + m (Ldcx;Ljd$a;Lji;Ldtc;)V a method_33007 method_33007 + m (Ldcx;Ljd;)Z a method_33006 isEmptyOrWater + m (Ldcx;Ljd;Lji;IZ)V a method_33010 growPointedDripstone + m (Ldds;Ljd;I)Z a method_33009 isCircleMostlyEmbeddedInStone + m (Ldtc;)Z a method_33387 isDripstoneBaseOrLava + m (Lji;IZLjava/util/function/Consumer;)V a method_33012 buildBaseToTipColumn + m (Lji;Ldtz;)Ldtc; a method_33013 createPointedDripstone + m (Ldcx;Ljd;)Z b method_33388 isEmptyOrWaterOrLava + m (Ldtc;)Z b method_33011 isDripstoneBase + m (Ldcx;Ljd;)Z c method_33008 placeDripstoneBlockIfPossible + m (Ldtc;)Z c method_33014 isEmptyOrWater + m (Ldtc;)Z d method_40074 isNeitherEmptyNorWater + m (Ldtc;)Z e method_33389 isEmptyOrWaterOrLava + m ()V +c eca net/minecraft/class_3029 net/minecraft/world/level/levelgen/feature/EndGatewayFeature + m (Ldds;Ljd;Leeh;Ljd;)V a method_18037 method_18037 + m (Lcom/mojang/serialization/Codec;)V +c ecb net/minecraft/class_3026 net/minecraft/world/level/levelgen/feature/EndIslandFeature + m (Lcom/mojang/serialization/Codec;)V +c ecc net/minecraft/class_9829 net/minecraft/world/level/levelgen/feature/EndPlatformFeature + m (Lddl;Ljd;Z)V a method_61118 createEndPlatform + m (Lcom/mojang/serialization/Codec;)V +c ecd net/minecraft/class_3033 net/minecraft/world/level/levelgen/feature/EndPodiumFeature + f I a field_31503 PODIUM_RADIUS + f Ljd; ao field_13600 END_PODIUM_LOCATION + f Z ap field_13599 active + f I b field_31504 PODIUM_PILLAR_HEIGHT + f I c field_31505 RIM_RADIUS + f F d field_31506 CORNER_ROUNDING + m (Ljd;)Ljd; a method_51862 getLocation + m (Z)V + m ()V +c ece net/minecraft/class_3031 net/minecraft/world/level/levelgen/feature/Feature + f Lece; A field_28428 MULTIFACE_GROWTH + f Lece; B field_28849 UNDERWATER_MAGMA + f Lece; C field_13579 MONSTER_ROOM + f Lece; D field_13560 BLUE_ICE + f Lece; E field_13544 ICEBERG + f Lece; F field_13584 FOREST_ROCK + f Lece; G field_13509 DISK + f Lece; H field_13573 LAKE + f Lece; I field_13517 ORE + f Lece; J field_52289 END_PLATFORM + f Lece; K field_13522 END_SPIKE + f Lece; L field_13574 END_ISLAND + f Lece; M field_13564 END_GATEWAY + f Ledk; N field_13567 SEAGRASS + f Lece; O field_13535 KELP + f Lece; P field_13525 CORAL_TREE + f Lece; Q field_13585 CORAL_MUSHROOM + f Lece; R field_13546 CORAL_CLAW + f Lece; S field_13575 SEA_PICKLE + f Lece; T field_13518 SIMPLE_BLOCK + f Lece; U field_13540 BAMBOO + f Lece; V field_22185 HUGE_FUNGUS + f Lece; W field_22186 NETHER_FOREST_VEGETATION + f Lece; X field_22187 WEEPING_VINES + f Lece; Y field_23088 TWISTING_VINES + f Lece; Z field_23884 BASALT_COLUMNS + f Lcom/mojang/serialization/MapCodec; a field_24837 configuredCodec + f Lece; aa field_23885 DELTA_FEATURE + f Lece; ab field_23886 REPLACE_BLOBS + f Lece; ac field_19201 FILL_LAYER + f Lebo; ad field_13526 BONUS_CHEST + f Lece; ae field_22188 BASALT_PILLAR + f Lece; af field_29061 SCATTERED_ORE + f Lece; ag field_13593 RANDOM_SELECTOR + f Lece; ah field_13555 SIMPLE_RANDOM_SELECTOR + f Lece; ai field_13550 RANDOM_BOOLEAN_SELECTOR + f Lece; aj field_27312 GEODE + f Lece; ak field_28203 DRIPSTONE_CLUSTER + f Lece; al field_28204 LARGE_DRIPSTONE + f Lece; am field_28205 POINTED_DRIPSTONE + f Lece; an field_37708 SCULK_PATCH + f Lece; e field_21590 NO_OP + f Lece; f field_24134 TREE + f Lece; g field_21219 FLOWER + f Lece; h field_26361 NO_BONEMEAL_FLOWER + f Lece; i field_21220 RANDOM_PATCH + f Lece; j field_21221 BLOCK_PILE + f Lece; k field_13513 SPRING + f Lece; l field_13552 CHORUS_PLANT + f Lece; m field_33615 REPLACE_SINGLE_BLOCK + f Lece; n field_13591 VOID_START_PLATFORM + f Lece; o field_13592 DESERT_WELL + f Lece; p field_13516 FOSSIL + f Lece; q field_13571 HUGE_RED_MUSHROOM + f Lece; r field_13531 HUGE_BROWN_MUSHROOM + f Lece; s field_13562 ICE_SPIKE + f Lece; t field_13568 GLOWSTONE_BLOB + f Lece; u field_13539 FREEZE_TOP_LAYER + f Lece; v field_13559 VINES + f Lece; w field_35072 BLOCK_COLUMN + f Lece; x field_29250 VEGETATION_PATCH + f Lece; y field_29251 WATERLOGGED_VEGETATION_PATCH + f Lece; z field_29252 ROOT_SYSTEM + m ()Lcom/mojang/serialization/MapCodec; a method_28627 configuredCodec + m (Lawu;)Ljava/util/function/Predicate; a method_36999 isReplaceable + m (Lawu;Ldtc;)Z a method_36997 method_36997 + m (Lddc;Ljd;)Z a method_27368 isGrassOrDirt + m (Ldde;Ljd;Ldtc;)V a method_13153 setBlock + m (Ldds;Ljd;)V a method_37256 markAboveForPostProcessing + m (Ldds;Ljd;Ldtc;Ljava/util/function/Predicate;)V a method_36998 safeSetBlock + m (Ldtc;)Z a method_23395 isStone + m (Lecg;)Z a method_13151 place + m (Leei;)Lebq; a method_28629 method_28629 + m (Leei;Ldds;Lduz;Layw;Ljd;)Z a method_40163 place + m (Ljava/lang/String;Lece;)Lece; a method_13150 register + m (Ljava/util/function/Function;Ljd;)Z a method_33981 isAdjacentToAir + m (Ljava/util/function/Function;Ljd;Ljava/util/function/Predicate;)Z a method_33982 checkNeighbors + m (Ldtc;)Z b method_23396 isDirt + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ecf net/minecraft/class_6785 net/minecraft/world/level/levelgen/feature/FeatureCountTracker + f Lorg/slf4j/Logger; a field_35704 LOGGER + f Lcom/google/common/cache/LoadingCache; b field_35705 data + m ()V a method_39597 clearCounts + m (Laqu;)V a method_39598 chunkDecorated + m (Laqu;Lebq;Ljava/util/Optional;)V a method_39599 featurePlaced + m (Laqu;Lecf$b;)V a method_39600 method_39600 + m (Lecf$a;Ljava/lang/Integer;)Ljava/lang/Integer; a method_39601 method_39601 + m (Ljava/lang/String;Ljava/lang/Integer;Ljz;Lecf$a;Ljava/lang/Integer;)V a method_39602 method_39602 + m ()V b method_39603 logCounts + m ()V + m ()V +c ecf$1 net/minecraft/class_6785$1 net/minecraft/world/level/levelgen/feature/FeatureCountTracker$1 + m (Laqu;)Lecf$b; a method_39604 load + m ()V +c ecf$a net/minecraft/class_6785$class_6786 net/minecraft/world/level/levelgen/feature/FeatureCountTracker$FeatureData + f Lebq; a comp_281 feature + f Ljava/util/Optional; b comp_282 topFeature + m ()Lebq; a comp_281 feature + m ()Ljava/util/Optional; b comp_282 topFeature + m (Lebq;Ljava/util/Optional;)V +c ecf$b net/minecraft/class_6785$class_6787 net/minecraft/world/level/levelgen/feature/FeatureCountTracker$LevelData + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; a comp_283 featureData + f Lorg/apache/commons/lang3/mutable/MutableInt; b comp_284 chunksWithFeatures + m ()Lit/unimi/dsi/fastutil/objects/Object2IntMap; a comp_283 featureData + m ()Lorg/apache/commons/lang3/mutable/MutableInt; b comp_284 chunksWithFeatures + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;Lorg/apache/commons/lang3/mutable/MutableInt;)V +c ecg net/minecraft/class_5821 net/minecraft/world/level/levelgen/feature/FeaturePlaceContext + f Ljava/util/Optional; a field_34697 topFeature + f Ldds; b field_28769 level + f Lduz; c field_28770 chunkGenerator + f Layw; d field_28771 random + f Ljd; e field_28772 origin + f Leei; f field_28773 config + m ()Ljava/util/Optional; a method_38427 topFeature + m ()Ldds; b method_33652 level + m ()Lduz; c method_33653 chunkGenerator + m ()Layw; d method_33654 random + m ()Ljd; e method_33655 origin + m ()Leei; f method_33656 config + m (Ljava/util/Optional;Ldds;Lduz;Layw;Ljd;Leei;)V +c ech net/minecraft/class_4278 net/minecraft/world/level/levelgen/feature/FillLayerFeature + m (Lcom/mojang/serialization/Codec;)V +c eci net/minecraft/class_3044 net/minecraft/world/level/levelgen/feature/FossilFeature + m (Ldds;Lejj;)I a method_34295 countEmptyCorners + m (Ldds;Lorg/apache/commons/lang3/mutable/MutableInt;Ljd;)V a method_34296 method_34296 + m (Lcom/mojang/serialization/Codec;)V +c ecj net/minecraft/class_5919 net/minecraft/world/level/levelgen/feature/FossilFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_29253 CODEC + f Ljava/util/List; b field_29254 fossilStructures + f Ljava/util/List; c field_29255 overlayStructures + f Ljm; d field_29256 fossilProcessors + f Ljm; e field_29257 overlayProcessors + f I f field_29258 maxEmptyCornersAllowed + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34299 method_34299 + m (Lecj;)Ljava/lang/Integer; a method_34300 method_34300 + m (Lecj;)Ljm; b method_34302 method_34302 + m (Lecj;)Ljm; c method_34304 method_34304 + m (Lecj;)Ljava/util/List; d method_34305 method_34305 + m (Lecj;)Ljava/util/List; e method_34306 method_34306 + m (Ljava/util/List;Ljava/util/List;Ljm;Ljm;I)V + m ()V +c eck net/minecraft/class_5588 net/minecraft/world/level/levelgen/feature/GeodeFeature + f [Lji; a field_27313 DIRECTIONS + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ecl net/minecraft/class_3047 net/minecraft/world/level/levelgen/feature/GlowstoneFeature + m (Lcom/mojang/serialization/Codec;)V +c ecm net/minecraft/class_3059 net/minecraft/world/level/levelgen/feature/HugeBrownMushroomFeature + m (Lcom/mojang/serialization/Codec;)V +c ecn net/minecraft/class_4780 net/minecraft/world/level/levelgen/feature/HugeFungusConfiguration + f Lcom/mojang/serialization/Codec; a field_24838 CODEC + f Ldtc; b field_22435 validBaseState + f Ldtc; c field_22191 stemState + f Ldtc; d field_22192 hatState + f Ldtc; e field_22193 decorState + f Leaf; f field_44709 replaceableBlocks + f Z g field_22194 planted + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28631 method_28631 + m (Lecn;)Ljava/lang/Boolean; a method_28630 method_28630 + m (Lecn;)Leaf; b method_51528 method_51528 + m (Lecn;)Ldtc; c method_28632 method_28632 + m (Lecn;)Ldtc; d method_28633 method_28633 + m (Lecn;)Ldtc; e method_28634 method_28634 + m (Lecn;)Ldtc; f method_28635 method_28635 + m (Ldtc;Ldtc;Ldtc;Ldtc;Leaf;Z)V + m ()V +c eco net/minecraft/class_4781 net/minecraft/world/level/levelgen/feature/HugeFungusFeature + f F a field_31507 HUGE_PROBABILITY + m (Ldcx;Layw;Lecn;Ljd$a;FFF)V a method_24439 placeHatBlock + m (Ldcx;Layw;Ljd;Ldtc;Z)V a method_24441 placeHatDropBlock + m (Ldds;Layw;Lecn;Ljd;IZ)V a method_24440 placeStem + m (Ldds;Ljd;Lecn;Z)Z a method_24866 isReplaceable + m (Ljd;Ldcx;Layw;)V a method_24442 tryPlaceWeepingVines + m (Ldds;Layw;Lecn;Ljd;IZ)V b method_24443 placeHat + m (Lcom/mojang/serialization/Codec;)V +c ecp net/minecraft/class_3066 net/minecraft/world/level/levelgen/feature/HugeRedMushroomFeature + m (Lcom/mojang/serialization/Codec;)V +c ecq net/minecraft/class_3070 net/minecraft/world/level/levelgen/feature/IceSpikeFeature + m (Lcom/mojang/serialization/Codec;)V +c ecr net/minecraft/class_3074 net/minecraft/world/level/levelgen/feature/IcebergFeature + m (III)I a method_13416 getEllipseC + m (IILjd;IID)D a method_13424 signedDistanceEllipse + m (IILjd;ILayw;)D a method_13421 signedDistanceCircle + m (IILjd;Ldcx;ZDLjd;II)V a method_13415 carve + m (Layw;III)I a method_13419 heightDependentRadiusRound + m (Layw;Ldcx;IILjd;ZIDI)V a method_13428 generateCutOut + m (Ldcc;Ljd;)Z a method_13414 belowIsAir + m (Ldcx;Layw;Ljd;IIIIIIZIDZLdtc;)V a method_13426 generateIcebergBlock + m (Ldcx;Ljd;)V a method_13422 removeFloatingSnowLayer + m (Ldcx;Ljd;IIZI)V a method_13418 smooth + m (Ljd;Ldcx;Layw;IIZZLdtc;)V a method_13425 setIcebergBlock + m (III)I b method_13417 heightDependentRadiusEllipse + m (Layw;III)I b method_13427 heightDependentRadiusSteep + m (Ldtc;)Z c method_13420 isIcebergState + m (Lcom/mojang/serialization/Codec;)V +c ecs net/minecraft/class_3081 net/minecraft/world/level/levelgen/feature/KelpFeature + m (Lcom/mojang/serialization/Codec;)V +c ect net/minecraft/class_3085 net/minecraft/world/level/levelgen/feature/LakeFeature + f Ldtc; a field_13668 AIR + m (Ldtc;)Z c method_39605 canReplaceBlock + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ect$a net/minecraft/class_3085$class_6788 net/minecraft/world/level/levelgen/feature/LakeFeature$Configuration + f Lcom/mojang/serialization/Codec; a field_35706 CODEC + f Legj; b comp_285 fluid + f Legj; c comp_286 barrier + m ()Legj; a comp_285 fluid + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39606 method_39606 + m ()Legj; b comp_286 barrier + m (Legj;Legj;)V + m ()V +c ecu net/minecraft/class_5727 net/minecraft/world/level/levelgen/feature/LargeDripstoneFeature + m (Ldds;Ljd;Ldyo$b;Lecu$b;)V a method_35360 placeDebugMarkers + m (Ljd;ZLayw;ILbpu;Lbpu;)Lecu$a; a method_33016 makeDripstone + m (Lcom/mojang/serialization/Codec;)V +c ecu$a net/minecraft/class_5727$class_5728 net/minecraft/world/level/levelgen/feature/LargeDripstoneFeature$LargeDripstone + f Ljd; a field_28206 root + f Z b field_28207 pointingUp + f I c field_28208 radius + f D d field_28209 bluntness + f D e field_28210 scale + m ()I a method_33017 getHeight + m (F)I a method_33018 getHeightAtRadius + m (Ldds;Layw;Lecu$b;)V a method_33020 placeBlocks + m (Ldds;Lecu$b;)Z a method_33019 moveBackUntilBaseIsInsideStoneAndShrinkRadiusIfNecessary + m (Leel;)Z a method_33025 isSuitableForWind + m ()I b method_35361 getMinY + m ()I c method_35362 getMaxY + m (Ljd;ZIDD)V +c ecu$b net/minecraft/class_5727$class_5729 net/minecraft/world/level/levelgen/feature/LargeDripstoneFeature$WindOffsetter + f I a field_28211 originY + f Lexc; b field_28212 windSpeed + m ()Lecu$b; a method_33032 noWind + m (Ljd;)Ljd; a method_33031 offset + m (ILayw;Lbpu;)V + m ()V +c ecv net/minecraft/class_3103 net/minecraft/world/level/levelgen/feature/MonsterRoomFeature + f Lorg/slf4j/Logger; a field_13700 LOGGER + f [Lbsx; b field_13699 MOBS + f Ldtc; c field_13698 AIR + m (Layw;)Lbsx; a method_13547 randomEntityId + m (Lcom/mojang/serialization/Codec;)V + m ()V +c ecw net/minecraft/class_5779 net/minecraft/world/level/levelgen/feature/MultifaceGrowthFeature + m (Ldds;Ljd;Ldtc;Leen;Layw;Ljava/util/List;)Z a method_33391 placeGrowthIfPossible + m (Ldtc;)Z c method_33395 isAirOrWater + m (Lcom/mojang/serialization/Codec;)V +c ecx net/minecraft/class_4782 net/minecraft/world/level/levelgen/feature/NetherForestVegetationFeature + m (Lcom/mojang/serialization/Codec;)V +c ecy net/minecraft/class_4715 net/minecraft/world/level/levelgen/feature/NoOpFeature + m (Lcom/mojang/serialization/Codec;)V +c ecz net/minecraft/class_3122 net/minecraft/world/level/levelgen/feature/OreFeature + m (Layw;F)Z a method_33984 shouldSkipAirCheck + m (Ldds;Layw;Leeq;DDDDDDIIIII)Z a method_13629 doPlace + m (Ldtc;Ljava/util/function/Function;Layw;Leeq;Leeq$a;Ljd$a;)Z a method_33983 canPlaceOre + m (Lcom/mojang/serialization/Codec;)V +c eda net/minecraft/class_5730 net/minecraft/world/level/levelgen/feature/PointedDripstoneFeature + m (Ldcx;Layw;Ljd;Leer;)V a method_33034 createPatchOfDripstoneBlocks + m (Ldcx;Ljd;Layw;)Ljava/util/Optional; a method_39175 getTipDirection + m (Lcom/mojang/serialization/Codec;)V +c edb net/minecraft/class_3135 net/minecraft/world/level/levelgen/feature/RandomBooleanSelectorFeature + m (Lcom/mojang/serialization/Codec;)V +c edc net/minecraft/class_4628 net/minecraft/world/level/levelgen/feature/RandomPatchFeature + m (Lcom/mojang/serialization/Codec;)V +c edd net/minecraft/class_3150 net/minecraft/world/level/levelgen/feature/RandomSelectorFeature + m (Lcom/mojang/serialization/Codec;)V +c ede net/minecraft/class_5155 net/minecraft/world/level/levelgen/feature/ReplaceBlobsFeature + m (Ldcx;Ljd$a;Ldfy;)Ljd; a method_27107 findTarget + m (Lcom/mojang/serialization/Codec;)V +c edf net/minecraft/class_3152 net/minecraft/world/level/levelgen/feature/ReplaceBlockFeature + m (Lcom/mojang/serialization/Codec;)V +c edg net/minecraft/class_5921 net/minecraft/world/level/levelgen/feature/RootSystemFeature + m (Ldds;Lduz;Leey;Layw;Ljd$a;Ljd;)Z a method_34308 placeDirtAndTree + m (Ldds;Leey;Layw;IILjd$a;)V a method_34311 placeRootedDirt + m (Ldds;Leey;Layw;Ljd;Ljd$a;)V a method_34312 placeRoots + m (Ldds;Leey;Ljd;)Z a method_34310 spaceForTree + m (Ldtc;II)Z a method_36419 isAllowedTreeSpace + m (Leey;Ldtc;)Z a method_34307 method_34307 + m (Ljd;ILdds;Leey;Layw;)V a method_39918 placeDirt + m (Lcom/mojang/serialization/Codec;)V +c edh net/minecraft/class_5875 net/minecraft/world/level/levelgen/feature/ScatteredOreFeature + f I a field_31515 MAX_DIST_FROM_ORIGIN + m (Layw;I)I a method_33986 getRandomPlacementInOneAxisRelativeToOrigin + m (Ljd$a;Layw;Ljd;I)V a method_33985 offsetTargetPos + m (Lcom/mojang/serialization/Codec;)V +c edi net/minecraft/class_7140 net/minecraft/world/level/levelgen/feature/SculkPatchFeature + m (Ldcx;Ljd;)Z a method_41571 canSpreadFrom + m (Ldcx;Ljd;)Z b method_41572 method_41572 + m (Lcom/mojang/serialization/Codec;)V +c edj net/minecraft/class_3160 net/minecraft/world/level/levelgen/feature/SeaPickleFeature + m (Lcom/mojang/serialization/Codec;)V +c edk net/minecraft/class_3168 net/minecraft/world/level/levelgen/feature/SeagrassFeature + m (Lcom/mojang/serialization/Codec;)V +c edl net/minecraft/class_3173 net/minecraft/world/level/levelgen/feature/SimpleBlockFeature + m (Lcom/mojang/serialization/Codec;)V +c edm net/minecraft/class_3177 net/minecraft/world/level/levelgen/feature/SimpleRandomSelectorFeature + m (Lcom/mojang/serialization/Codec;)V +c edn net/minecraft/class_3183 net/minecraft/world/level/levelgen/feature/SnowAndFreezeFeature + m (Lcom/mojang/serialization/Codec;)V +c edo net/minecraft/class_3310 net/minecraft/world/level/levelgen/feature/SpikeFeature + f I a field_31516 NUMBER_OF_SPIKES + f I b field_31517 SPIKE_DISTANCE + f Lcom/google/common/cache/LoadingCache; c field_14309 SPIKE_CACHE + m (Lddl;Layw;Lefc;Ledo$a;)V a method_15888 placeSpike + m (Ldds;)Ljava/util/List; a method_14506 getSpikesForLevel + m (Lcom/mojang/serialization/Codec;)V + m ()V +c edo$a net/minecraft/class_3310$class_3181 net/minecraft/world/level/levelgen/feature/SpikeFeature$EndSpike + f Lcom/mojang/serialization/Codec; a field_24841 CODEC + f I b field_13836 centerX + f I c field_13834 centerZ + f I d field_13833 radius + f I e field_13831 height + f Z f field_13832 guarded + f Lewx; g field_13835 topBoundingBox + m ()I a method_13966 getCenterX + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28649 method_28649 + m (Ledo$a;)Ljava/lang/Boolean; a method_28648 method_28648 + m (Ljd;)Z a method_13962 isCenterWithinChunk + m ()I b method_13967 getCenterZ + m (Ledo$a;)Ljava/lang/Integer; b method_28650 method_28650 + m ()I c method_13963 getRadius + m (Ledo$a;)Ljava/lang/Integer; c method_28651 method_28651 + m ()I d method_13964 getHeight + m (Ledo$a;)Ljava/lang/Integer; d method_28652 method_28652 + m ()Z e method_13965 isGuarded + m (Ledo$a;)Ljava/lang/Integer; e method_28653 method_28653 + m ()Lewx; f method_13968 getTopBoundingBox + m (IIIIZ)V + m ()V +c edo$b net/minecraft/class_3310$class_3311 net/minecraft/world/level/levelgen/feature/SpikeFeature$SpikeCacheLoader + m (Ljava/lang/Long;)Ljava/util/List; a method_14507 load + m ()V +c edp net/minecraft/class_3185 net/minecraft/world/level/levelgen/feature/SpringFeature + m (Lcom/mojang/serialization/Codec;)V +c edq net/minecraft/class_2944 net/minecraft/world/level/levelgen/feature/TreeFeature + f I a field_31519 BLOCK_UPDATE_FLAGS + m (Ldcx;Lejj;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;)Lexl; a method_23380 updateLeaves + m (Lddc;ILjd;Lefe;)I a method_29963 getMaxFreeTreeHeight + m (Ldds;Layw;Ljd;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;Lefu$b;Lefe;)Z a method_12775 doPlace + m (Ldds;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Lejj;)Ljava/lang/Boolean; a method_35363 method_35363 + m (Lefe;Ldds;Lefu$b;Layw;IIILefu$a;)V a method_27372 method_27372 + m (Leha$a;Leha;)V a method_23381 method_23381 + m (Ljava/util/Set;Ldds;Ljd;Ldtc;)V a method_49238 method_49238 + m (Ljd;Layw;Legg;)Ljd; a method_43293 method_43293 + m (Lddc;Ljd;)Z b method_16420 isAirOrLeaves + m (Ldde;Ljd;Ldtc;)V b method_12774 setBlockKnownShape + m (Ljava/util/Set;Ldds;Ljd;Ldtc;)V b method_43162 method_43162 + m (Lddc;Ljd;)Z c method_27371 validTreePos + m (Ldtc;)Z c method_51179 method_51179 + m (Ljava/util/Set;Ldds;Ljd;Ldtc;)V c method_35364 method_35364 + m (Lddc;Ljd;)Z d method_16416 isVine + m (Ldtc;)Z d method_16417 method_16417 + m (Ldtc;)Z e method_23384 method_23384 + m (Lcom/mojang/serialization/Codec;)V +c edq$1 net/minecraft/class_2944$1 net/minecraft/world/level/levelgen/feature/TreeFeature$1 + f Ljava/util/Set; a field_42838 val$foliage + f Ldds; b field_42839 val$level + m (Ledq;Ljava/util/Set;Ldds;)V +c edr net/minecraft/class_4953 net/minecraft/world/level/levelgen/feature/TwistingVinesFeature + m (Ldcx;Layw;Ljd$a;III)V a method_25987 placeWeepingVinesColumn + m (Ldcx;Ljd$a;)Z a method_27220 findFirstAirBlockAboveGround + m (Ldcx;Ljd;)Z a method_25986 isInvalidPlacementLocation + m (Lcom/mojang/serialization/Codec;)V +c eds net/minecraft/class_5834 net/minecraft/world/level/levelgen/feature/UnderwaterMagmaFeature + m (Layw;Lefg;Ljd;)Z a method_33766 method_33766 + m (Ldcx;Ljd;)Z a method_33763 isWaterOrAir + m (Ldds;Ljd;Lefg;)Ljava/util/OptionalInt; a method_33765 getFloorY + m (Ldds;Ljd;)Z b method_33764 isValidPlacement + m (Ldds;Ljd;)I c method_33767 method_33767 + m (Ldtc;)Z c method_33769 method_33769 + m (Ldds;Ljd;)Z d method_33768 method_33768 + m (Ldtc;)Z d method_33770 method_33770 + m (Lcom/mojang/serialization/Codec;)V +c edt net/minecraft/class_5922 net/minecraft/world/level/levelgen/feature/VegetationPatchFeature + m (Ldds;Lefh;Layw;Ljd;Ljava/util/function/Predicate;II)Ljava/util/Set; a method_34316 placeGroundPatch + m (Ldds;Lefh;Lduz;Layw;Ljd;)Z a method_34315 placeVegetation + m (Ldds;Lefh;Ljava/util/function/Predicate;Layw;Ljd$a;I)Z a method_34317 placeGround + m (Lecg;Ldds;Lefh;Layw;Ljava/util/Set;II)V a method_34318 distributeVegetation + m (Lefh;Ldtc;)Z a method_40164 method_40164 + m (Ldtc;)Z c method_34321 method_34321 + m (Lcom/mojang/serialization/Codec;)V +c edu net/minecraft/class_3219 net/minecraft/world/level/levelgen/feature/VinesFeature + m (Lcom/mojang/serialization/Codec;)V +c edv net/minecraft/class_3217 net/minecraft/world/level/levelgen/feature/VoidStartPlatformFeature + f Ljd; a field_19241 PLATFORM_OFFSET + f Ldcd; b field_19242 PLATFORM_ORIGIN_CHUNK + f I c field_31520 PLATFORM_RADIUS + f I d field_31521 PLATFORM_RADIUS_CHUNKS + m (IIII)I a method_20403 checkerboardDistance + m (Lcom/mojang/serialization/Codec;)V + m ()V +c edw net/minecraft/class_5923 net/minecraft/world/level/levelgen/feature/WaterloggedVegetationPatchFeature + m (Ldds;Ljava/util/Set;Ljd;Ljd$a;)Z a method_34323 isExposed + m (Ldds;Ljd;Ljd$a;Lji;)Z a method_34322 isExposedDirection + m (Lcom/mojang/serialization/Codec;)V +c edx net/minecraft/class_4784 net/minecraft/world/level/levelgen/feature/WeepingVinesFeature + f [Lji; a field_22196 DIRECTIONS + m (Ldcx;Layw;Ljd$a;III)V a method_24450 placeWeepingVinesColumn + m (Ldcx;Layw;Ljd;)V a method_24451 placeRoofNetherWart + m (Ldcx;Layw;Ljd;)V b method_24452 placeRoofWeepingVines + m (Lcom/mojang/serialization/Codec;)V + m ()V +c edy net/minecraft/class_3226 net/minecraft/world/level/levelgen/feature/WeightedPlacedFeature + f Lcom/mojang/serialization/Codec; a field_24864 CODEC + f Ljm; b field_14013 feature + f F c field_14011 chance + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28669 method_28669 + m (Ldds;Lduz;Layw;Ljd;)Z a method_14271 place + m (Ledy;)Ljava/lang/Float; a method_28668 method_28668 + m (Ledy;)Ljm; b method_28670 method_28670 + m (Ljm;F)V + m ()V +c edz net/minecraft/class_6655 net/minecraft/world/level/levelgen/feature/configurations/BlockColumnConfiguration + f Lcom/mojang/serialization/Codec; a field_35073 CODEC + f Ljava/util/List; b comp_143 layers + f Lji; c comp_144 direction + f Leaf; d comp_168 allowedPlacement + f Z e comp_146 prioritizeTip + m ()Ljava/util/List; a comp_143 layers + m (Lbpw;Legj;)Ledz$a; a method_38908 layer + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38909 method_38909 + m ()Lji; b comp_144 direction + m (Lbpw;Legj;)Ledz; b method_38910 simple + m ()Leaf; c comp_168 allowedPlacement + m ()Z d comp_146 prioritizeTip + m (Ljava/util/List;Lji;Leaf;Z)V + m ()V +c edz$a net/minecraft/class_6655$class_6656 net/minecraft/world/level/levelgen/feature/configurations/BlockColumnConfiguration$Layer + f Lcom/mojang/serialization/Codec; a field_35074 CODEC + f Lbpw; b comp_147 height + f Legj; c comp_148 state + m ()Lbpw; a comp_147 height + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38911 method_38911 + m ()Legj; b comp_148 state + m (Lbpw;Legj;)V + m ()V +c eea net/minecraft/class_4634 net/minecraft/world/level/levelgen/feature/configurations/BlockPileConfiguration + f Lcom/mojang/serialization/Codec; a field_24873 CODEC + f Legj; b field_21229 stateProvider + m (Leea;)Legj; a method_28683 method_28683 + m (Legj;)V + m ()V +c eeb net/minecraft/class_2963 net/minecraft/world/level/levelgen/feature/configurations/BlockStateConfiguration + f Lcom/mojang/serialization/Codec; a field_24874 CODEC + f Ldtc; b field_13356 state + m (Leeb;)Ldtc; a method_28684 method_28684 + m (Ldtc;)V + m ()V +c eec net/minecraft/class_5156 net/minecraft/world/level/levelgen/feature/configurations/ColumnFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24877 CODEC + f Lbpw; b field_25841 reach + f Lbpw; c field_25842 height + m ()Lbpw; a method_30391 reach + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30393 method_30393 + m (Leec;)Lbpw; a method_30392 method_30392 + m ()Lbpw; b method_30394 height + m (Leec;)Lbpw; b method_30395 method_30395 + m (Lbpw;Lbpw;)V + m ()V +c eed net/minecraft/class_2984 net/minecraft/world/level/levelgen/feature/configurations/CountConfiguration + f Lcom/mojang/serialization/Codec; a field_24878 CODEC + f Lbpw; b field_13385 count + m ()Lbpw; a method_30396 count + m (I)V + m (Lbpw;)V + m ()V +c eee net/minecraft/class_5158 net/minecraft/world/level/levelgen/feature/configurations/DeltaFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24881 CODEC + f Ldtc; b field_23895 contents + f Ldtc; c field_23896 rim + f Lbpw; d field_25843 size + f Lbpw; e field_25844 rimSize + m ()Ldtc; a method_30397 contents + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30399 method_30399 + m (Leee;)Lbpw; a method_30398 method_30398 + m ()Ldtc; b method_30400 rim + m (Leee;)Lbpw; b method_30401 method_30401 + m ()Lbpw; c method_30402 size + m (Leee;)Ldtc; c method_28709 method_28709 + m ()Lbpw; d method_30403 rimSize + m (Leee;)Ldtc; d method_28710 method_28710 + m (Ldtc;Ldtc;Lbpw;Lbpw;)V + m ()V +c eef net/minecraft/class_6577 net/minecraft/world/level/levelgen/feature/configurations/DiskConfiguration + f Lcom/mojang/serialization/Codec; a field_34698 CODEC + f Legr; b comp_715 stateProvider + f Leaf; c comp_716 target + f Lbpw; d comp_81 radius + f I e comp_82 halfHeight + m ()Legr; a comp_715 stateProvider + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43294 method_43294 + m ()Leaf; b comp_716 target + m ()Lbpw; c comp_81 radius + m ()I d comp_82 halfHeight + m (Legr;Leaf;Lbpw;I)V + m ()V +c eeg net/minecraft/class_5731 net/minecraft/world/level/levelgen/feature/configurations/DripstoneClusterConfiguration + f Lcom/mojang/serialization/Codec; a field_28213 CODEC + f I b field_28214 floorToCeilingSearchRange + f Lbpw; c field_28215 height + f Lbpw; d field_28216 radius + f I e field_28217 maxStalagmiteStalactiteHeightDiff + f I f field_28218 heightDeviation + f Lbpw; g field_28219 dripstoneBlockLayerThickness + f Lbpu; h field_28220 density + f Lbpu; i field_28221 wetness + f F j field_28224 chanceOfDripstoneColumnAtMaxDistanceFromCenter + f I k field_28225 maxDistanceFromEdgeAffectingChanceOfDripstoneColumn + f I l field_28226 maxDistanceFromCenterAffectingHeightBias + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33987 method_33987 + m (Leeg;)Ljava/lang/Integer; a method_33988 method_33988 + m (Leeg;)Ljava/lang/Integer; b method_33989 method_33989 + m (Leeg;)Ljava/lang/Float; c method_33043 method_33043 + m (Leeg;)Lbpu; d method_33044 method_33044 + m (Leeg;)Lbpu; e method_33045 method_33045 + m (Leeg;)Lbpw; f method_33046 method_33046 + m (Leeg;)Ljava/lang/Integer; g method_33047 method_33047 + m (Leeg;)Ljava/lang/Integer; h method_33048 method_33048 + m (Leeg;)Lbpw; i method_33049 method_33049 + m (Leeg;)Lbpw; j method_33050 method_33050 + m (Leeg;)Ljava/lang/Integer; k method_33051 method_33051 + m (ILbpw;Lbpw;IILbpw;Lbpu;Lbpu;FII)V + m ()V +c eeh net/minecraft/class_3018 net/minecraft/world/level/levelgen/feature/configurations/EndGatewayConfiguration + f Lcom/mojang/serialization/Codec; a field_24883 CODEC + f Ljava/util/Optional; b field_17735 exit + f Z c field_13475 exact + m ()Leeh; a method_18030 delayedExitSearch + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28717 method_28717 + m (Leeh;)Ljava/lang/Boolean; a method_28716 method_28716 + m (Ljd;Z)Leeh; a method_18034 knownExit + m ()Ljava/util/Optional; b method_18036 getExit + m (Leeh;)Ljava/util/Optional; b method_28718 method_28718 + m ()Z c method_13026 isExitExact + m (Ljava/util/Optional;Z)V + m ()V +c eei net/minecraft/class_3037 net/minecraft/world/level/levelgen/feature/configurations/FeatureConfiguration + f Leep; m field_13603 NONE + m ()Ljava/util/stream/Stream; e method_30649 getFeatures + m ()V +c eej net/minecraft/class_5589 net/minecraft/world/level/levelgen/feature/configurations/GeodeConfiguration + f Lcom/mojang/serialization/Codec; a field_27314 CHANCE_RANGE + f Lcom/mojang/serialization/Codec; b field_27315 CODEC + f Ldyv; c field_27316 geodeBlockSettings + f Ldyx; d field_27317 geodeLayerSettings + f Ldyw; e field_27318 geodeCrackSettings + f D f field_27319 usePotentialPlacementsChance + f D g field_27320 useAlternateLayer0Chance + f Z h field_27321 placementsRequireLayer0Alternate + f Lbpw; i field_33516 outerWallDistance + f Lbpw; j field_33517 distributionPoints + f Lbpw; k field_33518 pointOffset + f I l field_27328 minGenOffset + f I n field_27329 maxGenOffset + f D o field_27330 noiseMultiplier + f I p field_29062 invalidBlocksThreshold + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_36299 method_36299 + m (Leej;)Ljava/lang/Integer; a method_31906 method_31906 + m (Leej;)Ljava/lang/Double; b method_36300 method_36300 + m (Leej;)Ljava/lang/Integer; c method_31908 method_31908 + m (Leej;)Ljava/lang/Integer; d method_31909 method_31909 + m (Leej;)Lbpw; e method_36301 method_36301 + m (Leej;)Lbpw; f method_36302 method_36302 + m (Leej;)Lbpw; g method_36303 method_36303 + m (Leej;)Ljava/lang/Boolean; h method_31913 method_31913 + m (Leej;)Ljava/lang/Double; i method_31914 method_31914 + m (Leej;)Ljava/lang/Double; j method_31915 method_31915 + m (Leej;)Ldyw; k method_31916 method_31916 + m (Leej;)Ldyx; l method_31917 method_31917 + m (Leej;)Ldyv; m method_31918 method_31918 + m (Ldyv;Ldyx;Ldyw;DDZLbpw;Lbpw;Lbpw;IIDI)V + m ()V +c eek net/minecraft/class_4635 net/minecraft/world/level/levelgen/feature/configurations/HugeMushroomFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24885 CODEC + f Legj; b field_21230 capProvider + f Legj; c field_21231 stemProvider + f I d field_21232 foliageRadius + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28721 method_28721 + m (Leek;)Ljava/lang/Integer; a method_28720 method_28720 + m (Leek;)Legj; b method_28722 method_28722 + m (Leek;)Legj; c method_28723 method_28723 + m (Legj;Legj;I)V + m ()V +c eel net/minecraft/class_5732 net/minecraft/world/level/levelgen/feature/configurations/LargeDripstoneConfiguration + f Lcom/mojang/serialization/Codec; a field_28227 CODEC + f I b field_28228 floorToCeilingSearchRange + f Lbpw; c field_28229 columnRadius + f Lbpu; d field_28230 heightScale + f F e field_28231 maxColumnRadiusToCaveHeightRatio + f Lbpu; f field_28232 stalactiteBluntness + f Lbpu; g field_28233 stalagmiteBluntness + f Lbpu; h field_28234 windSpeed + f I i field_28235 minRadiusForWind + f F j field_28236 minBluntnessForWind + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33052 method_33052 + m (Leel;)Ljava/lang/Float; a method_33053 method_33053 + m (Leel;)Ljava/lang/Integer; b method_33054 method_33054 + m (Leel;)Lbpu; c method_33055 method_33055 + m (Leel;)Lbpu; d method_33056 method_33056 + m (Leel;)Lbpu; e method_33057 method_33057 + m (Leel;)Ljava/lang/Float; f method_33058 method_33058 + m (Leel;)Lbpu; g method_33059 method_33059 + m (Leel;)Lbpw; h method_33060 method_33060 + m (Leel;)Ljava/lang/Integer; i method_33061 method_33061 + m (ILbpw;Lbpu;FLbpu;Lbpu;Lbpu;IF)V + m ()V +c eem net/minecraft/class_4279 net/minecraft/world/level/levelgen/feature/configurations/LayerConfiguration + f Lcom/mojang/serialization/Codec; a field_24887 CODEC + f I b field_19202 height + f Ldtc; c field_19203 state + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28726 method_28726 + m (Leem;)Ldtc; a method_28725 method_28725 + m (Leem;)Ljava/lang/Integer; b method_28727 method_28727 + m (ILdtc;)V + m ()V +c een net/minecraft/class_5780 net/minecraft/world/level/levelgen/feature/configurations/MultifaceGrowthConfiguration + f Lcom/mojang/serialization/Codec; a field_28429 CODEC + f Ldky; b field_37709 placeBlock + f I c field_28430 searchRange + f Z d field_28431 canPlaceOnFloor + f Z e field_28432 canPlaceOnCeiling + f Z f field_28433 canPlaceOnWall + f F g field_28434 chanceOfSpreading + f Ljq; h field_28435 canBePlacedOn + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; i field_28436 validDirections + m ()Ljava/lang/String; a method_49534 method_49534 + m (Layw;)Ljava/util/List; a method_43295 getShuffledDirections + m (Layw;Lji;)Ljava/util/List; a method_43296 getShuffledDirectionsExcept + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33398 method_33398 + m (Ldfy;)Lcom/mojang/serialization/DataResult; a method_41573 apply + m (Leen;)Ljq; a method_33399 method_33399 + m (Lji;Lji;)Z a method_43297 method_43297 + m (Leen;)Ljava/lang/Float; b method_33400 method_33400 + m (Leen;)Ljava/lang/Boolean; c method_33401 method_33401 + m (Leen;)Ljava/lang/Boolean; d method_33402 method_33402 + m (Leen;)Ljava/lang/Boolean; e method_33403 method_33403 + m (Leen;)Ljava/lang/Integer; f method_33404 method_33404 + m (Leen;)Ldky; g method_41574 method_41574 + m (Ldky;IZZZFLjq;)V + m ()V +c eeo net/minecraft/class_6789 net/minecraft/world/level/levelgen/feature/configurations/NetherForestVegetationConfig + f Lcom/mojang/serialization/Codec; c field_35707 CODEC + f I d field_35708 spreadWidth + f I e field_35709 spreadHeight + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39607 method_39607 + m (Leeo;)Ljava/lang/Integer; a method_39608 method_39608 + m (Leeo;)Ljava/lang/Integer; b method_39609 method_39609 + m (Leeo;)Legj; c method_39610 method_39610 + m (Legj;II)V + m ()V +c eep net/minecraft/class_3111 net/minecraft/world/level/levelgen/feature/configurations/NoneFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24893 CODEC + f Leep; b field_24894 INSTANCE + m ()Leep; a method_28737 method_28737 + m ()V + m ()V +c eeq net/minecraft/class_3124 net/minecraft/world/level/levelgen/feature/configurations/OreConfiguration + f Lcom/mojang/serialization/Codec; a field_24896 CODEC + f Ljava/util/List; b field_29063 targetStates + f I c field_13723 size + f F d field_29064 discardChanceOnAirExposure + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33992 method_33992 + m (Leeq;)Ljava/lang/Float; a method_33993 method_33993 + m (Lenn;Ldtc;)Leeq$a; a method_33994 target + m (Leeq;)Ljava/lang/Integer; b method_33995 method_33995 + m (Leeq;)Ljava/util/List; c method_28745 method_28745 + m (Ljava/util/List;IF)V + m (Ljava/util/List;I)V + m (Lenn;Ldtc;IF)V + m (Lenn;Ldtc;I)V + m ()V +c eeq$a net/minecraft/class_3124$class_5876 net/minecraft/world/level/levelgen/feature/configurations/OreConfiguration$TargetBlockState + f Lcom/mojang/serialization/Codec; a field_29067 CODEC + f Lenn; b field_29068 target + f Ldtc; c field_29069 state + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33996 method_33996 + m (Leeq$a;)Ldtc; a method_33997 method_33997 + m (Leeq$a;)Lenn; b method_33998 method_33998 + m (Lenn;Ldtc;)V + m ()V +c eer net/minecraft/class_5733 net/minecraft/world/level/levelgen/feature/configurations/PointedDripstoneConfiguration + f Lcom/mojang/serialization/Codec; a field_28237 CODEC + f F b field_28241 chanceOfTallerDripstone + f F c field_35416 chanceOfDirectionalSpread + f F d field_35417 chanceOfSpreadRadius2 + f F e field_35418 chanceOfSpreadRadius3 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33062 method_33062 + m (Leer;)Ljava/lang/Float; a method_33063 method_33063 + m (Leer;)Ljava/lang/Float; b method_39176 method_39176 + m (Leer;)Ljava/lang/Float; c method_39177 method_39177 + m (Leer;)Ljava/lang/Float; d method_39178 method_39178 + m (FFFF)V + m ()V +c ees net/minecraft/class_3133 net/minecraft/world/level/levelgen/feature/configurations/ProbabilityFeatureConfiguration + f Lcom/mojang/serialization/Codec; k field_24899 CODEC + f F l field_13738 probability + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28748 method_28748 + m (Lees;)Ljava/lang/Float; a method_28747 method_28747 + m (F)V + m ()V +c eet net/minecraft/class_3137 net/minecraft/world/level/levelgen/feature/configurations/RandomBooleanFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24900 CODEC + f Ljm; b field_13740 featureTrue + f Ljm; c field_13739 featureFalse + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28750 method_28750 + m (Leet;)Ljm; a method_28749 method_28749 + m (Leet;)Ljm; b method_28751 method_28751 + m (Ljm;Ljm;)V + m ()V +c eeu net/minecraft/class_3141 net/minecraft/world/level/levelgen/feature/configurations/RandomFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24901 CODEC + f Ljava/util/List; b field_13744 features + f Ljm; c field_13745 defaultFeature + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28753 method_28753 + m (Ledy;)Ljava/util/stream/Stream; a method_30650 method_30650 + m (Leeu;)Ljm; a method_28752 method_28752 + m (Leeu;)Ljava/util/List; b method_28754 method_28754 + m (Ljava/util/List;Ljm;)V + m ()V +c eev net/minecraft/class_4638 net/minecraft/world/level/levelgen/feature/configurations/RandomPatchConfiguration + f Lcom/mojang/serialization/Codec; a field_24902 CODEC + f I b comp_149 tries + f I c comp_150 xzSpread + f I d comp_151 ySpread + f Ljm; e comp_155 feature + m ()I a comp_149 tries + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38912 method_38912 + m ()I b comp_150 xzSpread + m ()I c comp_151 ySpread + m ()Ljm; d comp_155 feature + m (IIILjm;)V + m ()V +c eew net/minecraft/class_3154 net/minecraft/world/level/levelgen/feature/configurations/ReplaceBlockConfiguration + f Lcom/mojang/serialization/Codec; a field_24904 CODEC + f Ljava/util/List; b field_13765 targetStates + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28771 method_28771 + m (Leew;)Ljava/util/List; a method_28772 method_28772 + m (Ldtc;Ldtc;)V + m (Ljava/util/List;)V + m ()V +c eex net/minecraft/class_5437 net/minecraft/world/level/levelgen/feature/configurations/ReplaceSphereConfiguration + f Lcom/mojang/serialization/Codec; a field_25848 CODEC + f Ldtc; b field_25849 targetState + f Ldtc; c field_25850 replaceState + f Lbpw; d field_25851 radius + m ()Lbpw; a method_30405 radius + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30406 method_30406 + m (Leex;)Lbpw; a method_30407 method_30407 + m (Leex;)Ldtc; b method_30408 method_30408 + m (Leex;)Ldtc; c method_30409 method_30409 + m (Ldtc;Ldtc;Lbpw;)V + m ()V +c eey net/minecraft/class_5926 net/minecraft/world/level/levelgen/feature/configurations/RootSystemConfiguration + f Lcom/mojang/serialization/Codec; a field_29267 CODEC + f Ljm; b field_29268 treeFeature + f I c field_29269 requiredVerticalSpaceForTree + f I d field_29270 rootRadius + f Lawu; e field_29271 rootReplaceable + f Legj; f field_29272 rootStateProvider + f I g field_29273 rootPlacementAttempts + f I h field_29274 rootColumnMaxHeight + f I i field_29275 hangingRootRadius + f I j field_29276 hangingRootsVerticalSpan + f Legj; k field_29277 hangingRootStateProvider + f I l field_29278 hangingRootPlacementAttempts + f I n field_33616 allowedVerticalWaterForTree + f Leaf; o field_36289 allowedTreePosition + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34332 method_34332 + m (Leey;)Leaf; a method_39919 method_39919 + m (Leey;)Ljava/lang/Integer; b method_36421 method_36421 + m (Leey;)Ljava/lang/Integer; c method_34333 method_34333 + m (Leey;)Legj; d method_34334 method_34334 + m (Leey;)Ljava/lang/Integer; e method_34335 method_34335 + m (Leey;)Ljava/lang/Integer; f method_34336 method_34336 + m (Leey;)Ljava/lang/Integer; g method_34337 method_34337 + m (Leey;)Ljava/lang/Integer; h method_34338 method_34338 + m (Leey;)Legj; i method_34339 method_34339 + m (Leey;)Lawu; j method_34340 method_34340 + m (Leey;)Ljava/lang/Integer; k method_34341 method_34341 + m (Leey;)Ljava/lang/Integer; l method_34342 method_34342 + m (Leey;)Ljm; m method_34343 method_34343 + m (Ljm;IILawu;Legj;IIIILegj;IILeaf;)V + m ()V +c eez net/minecraft/class_7141 net/minecraft/world/level/levelgen/feature/configurations/SculkPatchConfiguration + f Lcom/mojang/serialization/Codec; a field_37710 CODEC + f I b comp_553 chargeCount + f I c comp_554 amountPerCharge + f I d comp_555 spreadAttempts + f I e comp_556 growthRounds + f I f comp_557 spreadRounds + f Lbpw; g comp_685 extraRareGrowths + f F h comp_558 catalystChance + m ()I a comp_553 chargeCount + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41575 method_41575 + m ()I b comp_554 amountPerCharge + m ()I c comp_555 spreadAttempts + m ()I d comp_556 growthRounds + m ()I f comp_557 spreadRounds + m ()Lbpw; g comp_685 extraRareGrowths + m ()F h comp_558 catalystChance + m (IIIIILbpw;F)V + m ()V +c efa net/minecraft/class_3175 net/minecraft/world/level/levelgen/feature/configurations/SimpleBlockConfiguration + f Lcom/mojang/serialization/Codec; a field_24909 CODEC + f Legj; b comp_156 toPlace + m ()Legj; a comp_156 toPlace + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38913 method_38913 + m (Lefa;)Legj; a method_28787 method_28787 + m (Legj;)V + m ()V +c efb net/minecraft/class_3179 net/minecraft/world/level/levelgen/feature/configurations/SimpleRandomFeatureConfiguration + f Lcom/mojang/serialization/Codec; a field_24910 CODEC + f Ljq; b field_13827 features + m (Lefb;)Ljq; a method_28788 method_28788 + m (Ljm;)Ljava/util/stream/Stream; a method_30651 method_30651 + m (Ljq;)V + m ()V +c efc net/minecraft/class_3666 net/minecraft/world/level/levelgen/feature/configurations/SpikeConfiguration + f Lcom/mojang/serialization/Codec; a field_24911 CODEC + f Z b field_16207 crystalInvulnerable + f Ljava/util/List; c field_16208 spikes + f Ljd; d field_16206 crystalBeamTarget + m ()Z a method_15883 isCrystalInvulnerable + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28790 method_28790 + m (Lefc;)Ljava/util/Optional; a method_28789 method_28789 + m ()Ljava/util/List; b method_15885 getSpikes + m (Lefc;)Ljava/util/List; b method_28791 method_28791 + m ()Ljd; c method_15884 getCrystalBeamTarget + m (Lefc;)Ljava/lang/Boolean; c method_28792 method_28792 + m (ZLjava/util/List;Ljd;)V + m (ZLjava/util/List;Ljava/util/Optional;)V + m ()V +c efd net/minecraft/class_4642 net/minecraft/world/level/levelgen/feature/configurations/SpringConfiguration + f Lcom/mojang/serialization/Codec; a field_24912 CODEC + f Lepe; b field_21283 state + f Z c field_21284 requiresBlockBelow + f I d field_21285 rockCount + f I e field_21286 holeCount + f Ljq; f field_21287 validBlocks + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28794 method_28794 + m (Lefd;)Ljq; a method_28793 method_28793 + m (Lefd;)Ljava/lang/Integer; b method_28795 method_28795 + m (Lefd;)Ljava/lang/Integer; c method_28796 method_28796 + m (Lefd;)Ljava/lang/Boolean; d method_28797 method_28797 + m (Lefd;)Lepe; e method_28798 method_28798 + m (Lepe;ZIILjq;)V + m ()V +c efe net/minecraft/class_4643 net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration + f Lcom/mojang/serialization/Codec; a field_24921 CODEC + f Legj; b field_21288 trunkProvider + f Legj; c field_29279 dirtProvider + f Lehm; d field_24136 trunkPlacer + f Legj; e field_29280 foliageProvider + f Lefu; f field_24135 foliagePlacer + f Ljava/util/Optional; g field_38767 rootPlacer + f Lefj; h field_24137 minimumSize + f Ljava/util/List; i field_21290 decorators + f Z j field_24138 ignoreVines + f Z k field_29281 forceDirt + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28811 method_28811 + m (Lefe;)Ljava/lang/Boolean; a method_34344 method_34344 + m (Lefe;)Ljava/lang/Boolean; b method_37261 method_37261 + m (Lefe;)Ljava/util/List; c method_34345 method_34345 + m (Lefe;)Lefj; d method_28814 method_28814 + m (Lefe;)Legj; e method_28815 method_28815 + m (Lefe;)Ljava/util/Optional; f method_43164 method_43164 + m (Lefe;)Lefu; g method_28816 method_28816 + m (Lefe;)Legj; h method_28817 method_28817 + m (Lefe;)Lehm; i method_28818 method_28818 + m (Lefe;)Legj; j method_28819 method_28819 + m (Legj;Lehm;Legj;Lefu;Ljava/util/Optional;Legj;Lefj;Ljava/util/List;ZZ)V + m ()V +c efe$a net/minecraft/class_4643$class_4644 net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration$TreeConfigurationBuilder + f Legj; a field_21292 trunkProvider + f Legj; b field_29282 foliageProvider + f Lehm; c field_24141 trunkPlacer + f Lefu; d field_24140 foliagePlacer + f Ljava/util/Optional; e field_38768 rootPlacer + f Legj; f field_29283 dirtProvider + f Lefj; g field_24142 minimumSize + f Ljava/util/List; h field_21294 decorators + f Z i field_24143 ignoreVines + f Z j field_29284 forceDirt + m ()Lefe$a; a method_27374 ignoreVines + m (Legj;)Lefe$a; a method_34346 dirt + m (Ljava/util/List;)Lefe$a; a method_27376 decorators + m ()Lefe$a; b method_34347 forceDirt + m ()Lefe; c method_23445 build + m (Legj;Lehm;Legj;Lefu;Ljava/util/Optional;Lefj;)V + m (Legj;Lehm;Legj;Lefu;Lefj;)V +c eff net/minecraft/class_6790 net/minecraft/world/level/levelgen/feature/configurations/TwistingVinesConfig + f Lcom/mojang/serialization/Codec; a field_35710 CODEC + f I b comp_287 spreadWidth + f I c comp_288 spreadHeight + f I d comp_289 maxHeight + m ()I a comp_287 spreadWidth + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39611 method_39611 + m ()I b comp_288 spreadHeight + m ()I c comp_289 maxHeight + m (III)V + m ()V +c efg net/minecraft/class_5835 net/minecraft/world/level/levelgen/feature/configurations/UnderwaterMagmaConfiguration + f Lcom/mojang/serialization/Codec; a field_28853 CODEC + f I b field_28854 floorSearchRange + f I c field_28855 placementRadiusAroundFloor + f F d field_28856 placementProbabilityPerValidPosition + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_33771 method_33771 + m (Lefg;)Ljava/lang/Float; a method_33772 method_33772 + m (Lefg;)Ljava/lang/Integer; b method_33773 method_33773 + m (Lefg;)Ljava/lang/Integer; c method_33774 method_33774 + m (IIF)V + m ()V +c efh net/minecraft/class_5927 net/minecraft/world/level/levelgen/feature/configurations/VegetationPatchConfiguration + f Lcom/mojang/serialization/Codec; a field_29285 CODEC + f Lawu; b field_29286 replaceable + f Legj; c field_29287 groundState + f Ljm; d field_29288 vegetationFeature + f Leil; e field_29289 surface + f Lbpw; f field_29290 depth + f F g field_29291 extraBottomBlockChance + f I h field_29292 verticalRange + f F i field_29293 vegetationChance + f Lbpw; j field_29294 xzRadius + f F k field_29295 extraEdgeColumnChance + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34348 method_34348 + m (Lefh;)Ljava/lang/Float; a method_34349 method_34349 + m (Lefh;)Lbpw; b method_34350 method_34350 + m (Lefh;)Ljava/lang/Float; c method_34351 method_34351 + m (Lefh;)Ljava/lang/Integer; d method_34352 method_34352 + m (Lefh;)Ljava/lang/Float; e method_34353 method_34353 + m (Lefh;)Lbpw; f method_34354 method_34354 + m (Lefh;)Leil; g method_34355 method_34355 + m (Lefh;)Ljm; h method_34356 method_34356 + m (Lefh;)Legj; i method_34357 method_34357 + m (Lefh;)Lawu; j method_34358 method_34358 + m (Lawu;Legj;Ljm;Leil;Lbpw;FIFLbpw;F)V + m ()V +c efi net/minecraft/class_6111 net/minecraft/world/level/levelgen/feature/configurations/package-info +c efj net/minecraft/class_5201 net/minecraft/world/level/levelgen/feature/featuresize/FeatureSize + f Lcom/mojang/serialization/Codec; a field_24922 CODEC + f I b field_31522 MAX_WIDTH + f Ljava/util/OptionalInt; c field_24146 minClippedHeight + m ()Lcom/mojang/serialization/codecs/RecordCodecBuilder; a method_28820 minClippedHeightCodec + m (II)I a method_27378 getSizeAtHeight + m (Lefj;)Ljava/util/OptionalInt; a method_28821 method_28821 + m (Ljava/util/Optional;)Ljava/util/OptionalInt; a method_28822 method_28822 + m (Ljava/util/OptionalInt;)Ljava/util/Optional; a method_28823 method_28823 + m ()Lefk; b method_28824 type + m ()Ljava/util/OptionalInt; c method_27377 minClippedHeight + m (Ljava/util/OptionalInt;)V + m ()V +c efk net/minecraft/class_5202 net/minecraft/world/level/levelgen/feature/featuresize/FeatureSizeType + f Lefk; a field_24147 TWO_LAYERS_FEATURE_SIZE + f Lefk; b field_24148 THREE_LAYERS_FEATURE_SIZE + f Lcom/mojang/serialization/MapCodec; c field_24923 codec + m ()Lcom/mojang/serialization/MapCodec; a method_28825 codec + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lefk; a method_27382 register + m (Lcom/mojang/serialization/MapCodec;)V + m ()V +c efl net/minecraft/class_5203 net/minecraft/world/level/levelgen/feature/featuresize/ThreeLayersFeatureSize + f Lcom/mojang/serialization/MapCodec; d field_24924 CODEC + f I e field_24150 limit + f I f field_24151 upperLimit + f I g field_24152 lowerSize + f I h field_24153 middleSize + f I i field_24154 upperSize + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28827 method_28827 + m (Lefl;)Ljava/lang/Integer; a method_28826 method_28826 + m (Lefl;)Ljava/lang/Integer; b method_28828 method_28828 + m (Lefl;)Ljava/lang/Integer; c method_28829 method_28829 + m (Lefl;)Ljava/lang/Integer; d method_28830 method_28830 + m (Lefl;)Ljava/lang/Integer; e method_28831 method_28831 + m (IIIIILjava/util/OptionalInt;)V + m ()V +c efm net/minecraft/class_5204 net/minecraft/world/level/levelgen/feature/featuresize/TwoLayersFeatureSize + f Lcom/mojang/serialization/MapCodec; d field_24925 CODEC + f I e field_24155 limit + f I f field_24156 lowerSize + f I g field_24157 upperSize + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28833 method_28833 + m (Lefm;)Ljava/lang/Integer; a method_28832 method_28832 + m (Lefm;)Ljava/lang/Integer; b method_28834 method_28834 + m (Lefm;)Ljava/lang/Integer; c method_28835 method_28835 + m (III)V + m (IIILjava/util/OptionalInt;)V + m ()V +c efn net/minecraft/class_6112 net/minecraft/world/level/levelgen/feature/featuresize/package-info +c efo net/minecraft/class_4645 net/minecraft/world/level/levelgen/feature/foliageplacers/AcaciaFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_24926 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28836 method_28836 + m (Lbpw;Lbpw;)V + m ()V +c efp net/minecraft/class_4646 net/minecraft/world/level/levelgen/feature/foliageplacers/BlobFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_24927 CODEC + f I b field_23752 height + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P3; a method_28838 blobParts + m (Lefp;)Ljava/lang/Integer; a method_28837 method_28837 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_28839 method_28839 + m (Lbpw;Lbpw;I)V + m ()V +c efq net/minecraft/class_5205 net/minecraft/world/level/levelgen/feature/foliageplacers/BushFoliagePlacer + f Lcom/mojang/serialization/MapCodec; c field_24928 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_28840 method_28840 + m (Lbpw;Lbpw;I)V + m ()V +c efr net/minecraft/class_8178 net/minecraft/world/level/levelgen/feature/foliageplacers/CherryFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_42841 CODEC + f Lbpw; b field_42842 height + f F c field_42843 wideBottomLayerHoleChance + f F g field_42844 cornerHoleChance + f F h field_42845 hangingLeavesChance + f F i field_42846 hangingLeavesExtensionChance + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49241 method_49241 + m (Lefr;)Ljava/lang/Float; a method_49242 method_49242 + m (Lefr;)Ljava/lang/Float; b method_49243 method_49243 + m (Lefr;)Ljava/lang/Float; c method_49244 method_49244 + m (Lefr;)Ljava/lang/Float; d method_49245 method_49245 + m (Lefr;)Lbpw; e method_49246 method_49246 + m (Lbpw;Lbpw;Lbpw;FFFF)V + m ()V +c efs net/minecraft/class_5206 net/minecraft/world/level/levelgen/feature/foliageplacers/DarkOakFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_24929 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28841 method_28841 + m (Lbpw;Lbpw;)V + m ()V +c eft net/minecraft/class_5207 net/minecraft/world/level/levelgen/feature/foliageplacers/FancyFoliagePlacer + f Lcom/mojang/serialization/MapCodec; c field_24930 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_28842 method_28842 + m (Lbpw;Lbpw;I)V + m ()V +c efu net/minecraft/class_4647 net/minecraft/world/level/levelgen/feature/foliageplacers/FoliagePlacer + f Lcom/mojang/serialization/Codec; d field_24931 CODEC + f Lbpw; e field_21296 radius + f Lbpw; f field_23753 offset + m ()Lefv; a method_28843 type + m (Layw;)I a method_27386 offset + m (Layw;I)I a method_23452 foliageRadius + m (Layw;IIIIZ)Z a method_23451 shouldSkipLocation + m (Layw;ILefe;)I a method_26989 foliageHeight + m (Lddc;Lefu$b;Layw;Lefe;FLjd;Ljd$a;)Z a method_49884 tryPlaceExtension + m (Lddc;Lefu$b;Layw;Lefe;ILefu$a;II)V a method_27385 createFoliage + m (Lddc;Lefu$b;Layw;Lefe;ILefu$a;III)V a method_23448 createFoliage + m (Lddc;Lefu$b;Layw;Lefe;Ljd;)Z a method_34359 tryPlaceLeaf + m (Lddc;Lefu$b;Layw;Lefe;Ljd;IIZ)V a method_23449 placeLeavesRow + m (Lddc;Lefu$b;Layw;Lefe;Ljd;IIZFF)V a method_49247 placeLeavesRowWithHangingLeavesBelow + m (Lefu;)Lbpw; a method_30410 method_30410 + m (Lepe;)Z a method_42380 method_42380 + m (Layw;IIIIZ)Z b method_27387 shouldSkipLocationSigned + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P2; b method_30411 foliagePlacerParts + m (Lefu;)Lbpw; b method_30412 method_30412 + m (Lbpw;Lbpw;)V + m ()V +c efu$a net/minecraft/class_4647$class_5208 net/minecraft/world/level/levelgen/feature/foliageplacers/FoliagePlacer$FoliageAttachment + f Ljd; a field_24158 pos + f I b field_24159 radiusOffset + f Z c field_24160 doubleTrunk + m ()Ljd; a method_27388 pos + m ()I b method_27389 radiusOffset + m ()Z c method_27390 doubleTrunk + m (Ljd;IZ)V +c efu$b net/minecraft/class_4647$class_8179 net/minecraft/world/level/levelgen/feature/foliageplacers/FoliagePlacer$FoliageSetter + m (Ljd;)Z a method_49239 isSet + m (Ljd;Ldtc;)V a method_49240 set +c efv net/minecraft/class_4648 net/minecraft/world/level/levelgen/feature/foliageplacers/FoliagePlacerType + f Lefv; a field_21299 BLOB_FOLIAGE_PLACER + f Lefv; b field_21300 SPRUCE_FOLIAGE_PLACER + f Lefv; c field_21301 PINE_FOLIAGE_PLACER + f Lefv; d field_21302 ACACIA_FOLIAGE_PLACER + f Lefv; e field_24161 BUSH_FOLIAGE_PLACER + f Lefv; f field_24162 FANCY_FOLIAGE_PLACER + f Lefv; g field_24163 MEGA_JUNGLE_FOLIAGE_PLACER + f Lefv; h field_24164 MEGA_PINE_FOLIAGE_PLACER + f Lefv; i field_24165 DARK_OAK_FOLIAGE_PLACER + f Lefv; j field_29296 RANDOM_SPREAD_FOLIAGE_PLACER + f Lefv; k field_42847 CHERRY_FOLIAGE_PLACER + f Lcom/mojang/serialization/MapCodec; l field_24932 codec + m ()Lcom/mojang/serialization/MapCodec; a method_28849 codec + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lefv; a method_28850 register + m (Lcom/mojang/serialization/MapCodec;)V + m ()V +c efw net/minecraft/class_5209 net/minecraft/world/level/levelgen/feature/foliageplacers/MegaJungleFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_24933 CODEC + f I b field_24166 height + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28852 method_28852 + m (Lefw;)Ljava/lang/Integer; a method_28851 method_28851 + m (Lbpw;Lbpw;I)V + m ()V +c efx net/minecraft/class_5210 net/minecraft/world/level/levelgen/feature/foliageplacers/MegaPineFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_24934 CODEC + f Lbpw; b field_24168 crownHeight + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30413 method_30413 + m (Lefx;)Lbpw; a method_30414 method_30414 + m (Lbpw;Lbpw;Lbpw;)V + m ()V +c efy net/minecraft/class_4649 net/minecraft/world/level/levelgen/feature/foliageplacers/PineFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_24935 CODEC + f Lbpw; b field_23755 height + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30415 method_30415 + m (Lefy;)Lbpw; a method_30416 method_30416 + m (Lbpw;Lbpw;Lbpw;)V + m ()V +c efz net/minecraft/class_5928 net/minecraft/world/level/levelgen/feature/foliageplacers/RandomSpreadFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_29297 CODEC + f Lbpw; b field_29298 foliageHeight + f I c field_29299 leafPlacementAttempts + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34360 method_34360 + m (Lefz;)Ljava/lang/Integer; a method_34361 method_34361 + m (Lefz;)Lbpw; b method_34362 method_34362 + m (Lbpw;Lbpw;Lbpw;I)V + m ()V +c ega net/minecraft/class_4650 net/minecraft/world/level/levelgen/feature/foliageplacers/SpruceFoliagePlacer + f Lcom/mojang/serialization/MapCodec; a field_24936 CODEC + f Lbpw; b field_23757 trunkHeight + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30417 method_30417 + m (Lega;)Lbpw; a method_30418 method_30418 + m (Lbpw;Lbpw;Lbpw;)V + m ()V +c egb net/minecraft/class_6113 net/minecraft/world/level/levelgen/feature/foliageplacers/package-info +c egc net/minecraft/class_6114 net/minecraft/world/level/levelgen/feature/package-info +c egd net/minecraft/class_7398 net/minecraft/world/level/levelgen/feature/rootplacers/AboveRootPlacement + f Lcom/mojang/serialization/Codec; a field_38865 CODEC + f Legj; b comp_717 aboveRootProvider + f F c comp_718 aboveRootPlacementChance + m ()Legj; a comp_717 aboveRootProvider + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43298 method_43298 + m (Legd;)Ljava/lang/Float; a method_43299 method_43299 + m ()F b comp_718 aboveRootPlacementChance + m (Legd;)Legj; b method_43300 method_43300 + m (Legj;F)V + m ()V +c ege net/minecraft/class_7399 net/minecraft/world/level/levelgen/feature/rootplacers/MangroveRootPlacement + f Lcom/mojang/serialization/Codec; a field_38866 CODEC + f Ljq; b comp_719 canGrowThrough + f Ljq; c comp_720 muddyRootsIn + f Legj; d comp_721 muddyRootsProvider + f I e comp_722 maxRootWidth + f I f comp_723 maxRootLength + f F g comp_724 randomSkewChance + m ()Ljq; a comp_719 canGrowThrough + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43301 method_43301 + m (Lege;)Ljava/lang/Float; a method_43302 method_43302 + m ()Ljq; b comp_720 muddyRootsIn + m (Lege;)Ljava/lang/Integer; b method_43303 method_43303 + m ()Legj; c comp_721 muddyRootsProvider + m (Lege;)Ljava/lang/Integer; c method_43304 method_43304 + m ()I d comp_722 maxRootWidth + m (Lege;)Legj; d method_43305 method_43305 + m ()I e comp_723 maxRootLength + m (Lege;)Ljq; e method_43306 method_43306 + m ()F f comp_724 randomSkewChance + m (Lege;)Ljq; f method_43307 method_43307 + m (Ljq;Ljq;Legj;IIF)V + m ()V +c egf net/minecraft/class_7386 net/minecraft/world/level/levelgen/feature/rootplacers/MangroveRootPlacer + f I a field_38769 ROOT_WIDTH_LIMIT + f I b field_38770 ROOT_LENGTH_LIMIT + f Lcom/mojang/serialization/MapCodec; c field_38771 CODEC + f Lege; h field_38867 mangroveRootPlacement + m (Lddc;Layw;Ljd;Lji;Ljd;Ljava/util/List;I)Z a method_43166 simulateRoots + m (Ldtc;)Z a method_43169 method_43169 + m (Legf;)Lege; a method_43180 method_43180 + m (Ljd;Lji;Layw;Ljd;)Ljava/util/List; a method_43171 potentialRootPositions + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_43173 method_43173 + m (Ldtc;)Z b method_43174 method_43174 + m (Lbpw;Legj;Ljava/util/Optional;Lege;)V + m ()V +c egg net/minecraft/class_7387 net/minecraft/world/level/levelgen/feature/rootplacers/RootPlacer + f Lcom/mojang/serialization/Codec; d field_38779 CODEC + f Lbpw; e field_38868 trunkOffsetY + f Legj; f field_38780 rootProvider + f Ljava/util/Optional; g field_38869 aboveRootPlacement + m ()Legh; a method_43165 type + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P3; a method_43182 rootPlacerParts + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd;Lefe;)V a method_43172 placeRoot + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd;Ljd;Lefe;)Z a method_43168 placeRoots + m (Lddc;Ljd;)Z a method_43167 canPlaceRoot + m (Lddc;Ljd;Ldtc;)Ldtc; a method_43181 getPotentiallyWaterloggedState + m (Legg;)Ljava/util/Optional; a method_43308 method_43308 + m (Lepe;)Z a method_43184 method_43184 + m (Ljd;Layw;)Ljd; a method_43309 getTrunkOrigin + m (Legg;)Legj; b method_43183 method_43183 + m (Legg;)Lbpw; c method_43310 method_43310 + m (Lbpw;Legj;Ljava/util/Optional;)V + m ()V +c egh net/minecraft/class_7388 net/minecraft/world/level/levelgen/feature/rootplacers/RootPlacerType + f Legh; a field_38781 MANGROVE_ROOT_PLACER + f Lcom/mojang/serialization/MapCodec; b field_38782 codec + m ()Lcom/mojang/serialization/MapCodec; a method_43185 codec + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Legh; a method_43186 register + m (Lcom/mojang/serialization/MapCodec;)V + m ()V +c egi net/minecraft/class_7727 net/minecraft/world/level/levelgen/feature/rootplacers/package-info +c egj net/minecraft/class_4651 net/minecraft/world/level/levelgen/feature/stateproviders/BlockStateProvider + f Lcom/mojang/serialization/Codec; a field_24937 CODEC + m ()Legk; a method_28862 type + m (Layw;Ljd;)Ldtc; a method_23455 getState + m (Ldfy;)Legs; a method_38432 simple + m (Ldtc;)Legs; a method_38433 simple + m ()V + m ()V +c egk net/minecraft/class_4652 net/minecraft/world/level/levelgen/feature/stateproviders/BlockStateProviderType + f Legk; a field_21305 SIMPLE_STATE_PROVIDER + f Legk; b field_21306 WEIGHTED_STATE_PROVIDER + f Legk; c field_34932 NOISE_THRESHOLD_PROVIDER + f Legk; d field_34933 NOISE_PROVIDER + f Legk; e field_34934 DUAL_NOISE_PROVIDER + f Legk; f field_24938 ROTATED_BLOCK_PROVIDER + f Legk; g field_29300 RANDOMIZED_INT_STATE_PROVIDER + f Lcom/mojang/serialization/MapCodec; h field_24939 codec + m ()Lcom/mojang/serialization/MapCodec; a method_28863 codec + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Legk; a method_23457 register + m (Lcom/mojang/serialization/MapCodec;)V + m ()V +c egl net/minecraft/class_6578 net/minecraft/world/level/levelgen/feature/stateproviders/DualNoiseProvider + f Lcom/mojang/serialization/MapCodec; b field_34702 CODEC + f Layg; i field_34703 variety + f Leoh$a; j field_34704 slowNoiseParameters + f F k field_34705 slowScale + f Leoh; l field_34706 slowNoise + m (Legl;)Ljava/lang/Float; a method_38434 method_38434 + m (Ljd;)D a method_38435 getSlowNoiseValue + m (Legl;)Leoh$a; b method_38436 method_38436 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_38437 method_38437 + m (Legl;)Layg; c method_38438 method_38438 + m (Layg;Leoh$a;FJLeoh$a;FLjava/util/List;)V + m ()V +c egm net/minecraft/class_6579 net/minecraft/world/level/levelgen/feature/stateproviders/NoiseBasedStateProvider + f J c field_34707 seed + f Leoh$a; d field_34708 parameters + f F e field_34709 scale + f Leoh; f field_34710 noise + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P3; a method_38439 noiseCodec + m (Legm;)Ljava/lang/Float; a method_38440 method_38440 + m (Ljd;D)D a method_38441 getNoiseValue + m (Legm;)Leoh$a; b method_38442 method_38442 + m (Legm;)Ljava/lang/Long; c method_38443 method_38443 + m (JLeoh$a;F)V +c egn net/minecraft/class_6580 net/minecraft/world/level/levelgen/feature/stateproviders/NoiseProvider + f Lcom/mojang/serialization/MapCodec; g field_34711 CODEC + f Ljava/util/List; h field_34712 states + m (Legn;)Ljava/util/List; a method_38444 method_38444 + m (Ljava/util/List;D)Ldtc; a method_38445 getRandomState + m (Ljava/util/List;Ljd;D)Ldtc; a method_38446 getRandomState + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P4; b method_38447 noiseProviderCodec + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_38448 method_38448 + m (JLeoh$a;FLjava/util/List;)V + m ()V +c ego net/minecraft/class_6581 net/minecraft/world/level/levelgen/feature/stateproviders/NoiseThresholdProvider + f Lcom/mojang/serialization/MapCodec; b field_34713 CODEC + f F g field_34714 threshold + f F h field_34715 highChance + f Ldtc; i field_34716 defaultState + f Ljava/util/List; j field_34717 lowStates + f Ljava/util/List; k field_34718 highStates + m (Lego;)Ljava/util/List; a method_38449 method_38449 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_38450 method_38450 + m (Lego;)Ljava/util/List; b method_38451 method_38451 + m (Lego;)Ldtc; c method_38452 method_38452 + m (Lego;)Ljava/lang/Float; d method_38453 method_38453 + m (Lego;)Ljava/lang/Float; e method_38454 method_38454 + m (JLeoh$a;FFFLdtc;Ljava/util/List;Ljava/util/List;)V + m ()V +c egp net/minecraft/class_5929 net/minecraft/world/level/levelgen/feature/stateproviders/RandomizedIntStateProvider + f Lcom/mojang/serialization/MapCodec; b field_29301 CODEC + f Legj; c field_29302 source + f Ljava/lang/String; d field_29303 propertyName + f Lduc; e field_29304 property + f Lbpw; f field_29305 values + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34365 method_34365 + m (Ldtc;Ljava/lang/String;)Lduc; a method_34363 findProperty + m (Lduf;)Lduc; a method_34364 method_34364 + m (Legp;)Lbpw; a method_34366 method_34366 + m (Ljava/lang/String;Lduf;)Z a method_34368 method_34368 + m (Lduf;)Z b method_34369 method_34369 + m (Legp;)Ljava/lang/String; b method_34370 method_34370 + m (Legp;)Legj; c method_34371 method_34371 + m (Legj;Lduc;Lbpw;)V + m (Legj;Ljava/lang/String;Lbpw;)V + m ()V +c egq net/minecraft/class_4655 net/minecraft/world/level/levelgen/feature/stateproviders/RotatedBlockProvider + f Lcom/mojang/serialization/MapCodec; b field_24944 CODEC + f Ldfy; c field_21313 block + m (Legq;)Ldfy; a method_28866 method_28866 + m (Ldfy;)V + m ()V +c egr net/minecraft/class_7400 net/minecraft/world/level/levelgen/feature/stateproviders/RuleBasedBlockStateProvider + f Lcom/mojang/serialization/Codec; a field_38870 CODEC + f Legj; b comp_725 fallback + f Ljava/util/List; c comp_726 rules + m ()Legj; a comp_725 fallback + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43313 method_43313 + m (Ldds;Layw;Ljd;)Ldtc; a method_43311 getState + m (Ldfy;)Legr; a method_43312 simple + m (Legj;)Legr; a method_43314 simple + m ()Ljava/util/List; b comp_726 rules + m (Legj;Ljava/util/List;)V + m ()V +c egr$a net/minecraft/class_7400$class_7401 net/minecraft/world/level/levelgen/feature/stateproviders/RuleBasedBlockStateProvider$Rule + f Lcom/mojang/serialization/Codec; a field_38871 CODEC + f Leaf; b comp_727 ifTrue + f Legj; c comp_728 then + m ()Leaf; a comp_727 ifTrue + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43315 method_43315 + m ()Legj; b comp_728 then + m (Leaf;Legj;)V + m ()V +c egs net/minecraft/class_4656 net/minecraft/world/level/levelgen/feature/stateproviders/SimpleStateProvider + f Lcom/mojang/serialization/MapCodec; b field_24945 CODEC + f Ldtc; c field_21314 state + m (Legs;)Ldtc; a method_28867 method_28867 + m (Ldtc;)V + m ()V +c egt net/minecraft/class_4657 net/minecraft/world/level/levelgen/feature/stateproviders/WeightedStateProvider + f Lcom/mojang/serialization/MapCodec; b field_24946 CODEC + f Lbpb; c field_21315 weightedList + m (Lbpb;)Lcom/mojang/serialization/DataResult; a method_28868 create + m (Legt;)Lbpb; a method_28869 method_28869 + m ()Ljava/lang/String; b method_49535 method_49535 + m (Lbpb;)V + m (Lbpb$a;)V + m ()V +c egu net/minecraft/class_6115 net/minecraft/world/level/levelgen/feature/stateproviders/package-info +c egv net/minecraft/class_4658 net/minecraft/world/level/levelgen/feature/treedecorators/AlterGroundDecorator + f Lcom/mojang/serialization/MapCodec; a field_24957 CODEC + f Legj; b field_21316 provider + m (ILjd;)Z a method_23460 method_23460 + m (Legv;)Legj; a method_28889 method_28889 + m (Leha$a;Ljd;)V a method_23462 placeCircle + m (Leha$a;Ljd;)V b method_23463 placeBlockAt + m (Leha$a;Ljd;)V c method_23461 method_23461 + m (Legj;)V + m ()V +c egw net/minecraft/class_7389 net/minecraft/world/level/levelgen/feature/treedecorators/AttachedToLeavesDecorator + f Lcom/mojang/serialization/MapCodec; a field_38783 CODEC + f F b field_38784 probability + f I c field_38785 exclusionRadiusXZ + f I d field_38786 exclusionRadiusY + f Legj; e field_38787 blockProvider + f I f field_38788 requiredEmptyBlocks + f Ljava/util/List; g field_38789 directions + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_43188 method_43188 + m (Legw;)Ljava/util/List; a method_43189 method_43189 + m (Leha$a;Ljd;Lji;)Z a method_43187 hasRequiredEmptyBlocks + m (Legw;)Ljava/lang/Integer; b method_43190 method_43190 + m (Legw;)Legj; c method_43191 method_43191 + m (Legw;)Ljava/lang/Integer; d method_43192 method_43192 + m (Legw;)Ljava/lang/Integer; e method_43193 method_43193 + m (Legw;)Ljava/lang/Float; f method_43194 method_43194 + m (FIILegj;ILjava/util/List;)V + m ()V +c egx net/minecraft/class_4659 net/minecraft/world/level/levelgen/feature/treedecorators/BeehiveDecorator + f Lcom/mojang/serialization/MapCodec; a field_24958 CODEC + f Lji; b field_36346 WORLDGEN_FACING + f [Lji; c field_36347 SPAWN_DIRECTIONS + f F d field_21317 probability + m (I)[Lji; a method_40031 method_40031 + m (ILjd;)Z a method_23464 method_23464 + m (Layw;Ldqe;)V a method_35373 method_35373 + m (Legx;)Ljava/lang/Float; a method_28890 method_28890 + m (Leha$a;Ljd;)Z a method_40032 method_40032 + m (Ljd;)Ljava/util/stream/Stream; a method_40033 method_40033 + m (Lji;)Z a method_40034 method_40034 + m (F)V + m ()V +c egy net/minecraft/class_4660 net/minecraft/world/level/levelgen/feature/treedecorators/CocoaDecorator + f Lcom/mojang/serialization/MapCodec; a field_24959 CODEC + f F b field_21318 probability + m (ILjd;)Z a method_23465 method_23465 + m (Layw;Leha$a;Ljd;)V a method_23466 method_23466 + m (Legy;)Ljava/lang/Float; a method_28891 method_28891 + m (F)V + m ()V +c egz net/minecraft/class_4661 net/minecraft/world/level/levelgen/feature/treedecorators/LeaveVineDecorator + f Lcom/mojang/serialization/MapCodec; a field_24960 CODEC + f F b field_38790 probability + m (Layw;Leha$a;Ljd;)V a method_23468 method_23468 + m (Legz;)Ljava/lang/Float; a method_43195 method_43195 + m (Ljd;Ldtt;Leha$a;)V a method_23467 addHangingVine + m (F)V + m ()V +c eha net/minecraft/class_4662 net/minecraft/world/level/levelgen/feature/treedecorators/TreeDecorator + f Lcom/mojang/serialization/Codec; h field_24962 CODEC + m ()Lehb; a method_28893 type + m (Leha$a;)V a method_23469 place + m ()V + m ()V +c eha$a net/minecraft/class_4662$class_7402 net/minecraft/world/level/levelgen/feature/treedecorators/TreeDecorator$Context + f Lddc; a field_38872 level + f Ljava/util/function/BiConsumer; b field_38873 decorationSetter + f Layw; c field_38874 random + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; d field_38875 logs + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; e field_38876 leaves + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; f field_38877 roots + m ()Lddc; a method_43316 level + m (Ljd;)Z a method_43317 isAir + m (Ljd;Ldtc;)V a method_43318 setBlock + m (Ljd;Ldtt;)V a method_43319 placeVine + m ()Layw; b method_43320 random + m ()Lit/unimi/dsi/fastutil/objects/ObjectArrayList; c method_43321 logs + m ()Lit/unimi/dsi/fastutil/objects/ObjectArrayList; d method_43322 leaves + m ()Lit/unimi/dsi/fastutil/objects/ObjectArrayList; e method_43323 roots + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;)V +c ehb net/minecraft/class_4663 net/minecraft/world/level/levelgen/feature/treedecorators/TreeDecoratorType + f Lehb; a field_21320 TRUNK_VINE + f Lehb; b field_21321 LEAVE_VINE + f Lehb; c field_21322 COCOA + f Lehb; d field_21323 BEEHIVE + f Lehb; e field_21324 ALTER_GROUND + f Lehb; f field_38791 ATTACHED_TO_LEAVES + f Lcom/mojang/serialization/MapCodec; g field_24963 codec + m ()Lcom/mojang/serialization/MapCodec; a method_28894 codec + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lehb; a method_28895 register + m (Lcom/mojang/serialization/MapCodec;)V + m ()V +c ehc net/minecraft/class_4664 net/minecraft/world/level/levelgen/feature/treedecorators/TrunkVineDecorator + f Lcom/mojang/serialization/MapCodec; a field_24964 CODEC + f Lehc; b field_24965 INSTANCE + m (Layw;Leha$a;Ljd;)V a method_23474 method_23474 + m ()Lehc; b method_28896 method_28896 + m ()V + m ()V +c ehd net/minecraft/class_6117 net/minecraft/world/level/levelgen/feature/treedecorators/package-info +c ehe net/minecraft/class_5930 net/minecraft/world/level/levelgen/feature/trunkplacers/BendingTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_29306 CODEC + f I b field_29307 minHeightForLeaves + f Lbpw; h field_29308 bendLength + m (Lehe;)Lbpw; a method_34372 method_34372 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_34373 method_34373 + m (Lehe;)Ljava/lang/Integer; b method_34374 method_34374 + m (IIIILbpw;)V + m ()V +c ehf net/minecraft/class_8180 net/minecraft/world/level/levelgen/feature/trunkplacers/CherryTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_42848 CODEC + f Lcom/mojang/serialization/Codec; b field_42849 BRANCH_START_CODEC + f Lbpw; h field_42850 branchCount + f Lbpw; i field_42851 branchHorizontalLength + f Lbqc; j field_42852 branchStartOffsetFromTop + f Lbqc; k field_42853 secondBranchStartOffsetFromTop + f Lbpw; l field_42854 branchEndOffsetFromTop + m (Lbqc;)Lcom/mojang/serialization/DataResult; a method_49248 method_49248 + m (Lddc;Ljava/util/function/BiConsumer;Layw;ILjd;Lefe;Ljava/util/function/Function;Lji;IZLjd$a;)Lefu$a; a method_49249 generateBranch + m (Lehf;)Lbpw; a method_49250 method_49250 + m (Lji;Ldtc;)Ldtc; a method_49251 method_49251 + m ()Ljava/lang/String; b method_49536 method_49536 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_49252 method_49252 + m (Lehf;)Lbqc; b method_49253 method_49253 + m (Lehf;)Lbpw; c method_49254 method_49254 + m (Lehf;)Lbpw; d method_49255 method_49255 + m (IIILbpw;Lbpw;Lbqc;Lbpw;)V + m ()V +c ehg net/minecraft/class_5211 net/minecraft/world/level/levelgen/feature/trunkplacers/DarkOakTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_24966 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_28897 method_28897 + m (III)V + m ()V +c ehh net/minecraft/class_5212 net/minecraft/world/level/levelgen/feature/trunkplacers/FancyTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_24967 CODEC + f D b field_31524 TRUNK_HEIGHT_SCALE + f D h field_31525 CLUSTER_DENSITY_MAGIC + f D i field_31526 BRANCH_SLOPE + f D j field_31527 BRANCH_LENGTH_MAGIC + m (II)Z a method_27391 trimBranches + m (Lddc;Ljava/util/function/BiConsumer;Layw;ILjd;Ljava/util/List;Lefe;)V a method_27392 makeBranches + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd;Ljd;ZLefe;)Z a method_27393 makeLimb + m (Ljd;)I a method_27394 getSteps + m (Ljd;Ljd;)Lji$a; a method_27395 getLogAxis + m (Ljd;Ljd;Ldtc;)Ldtc; a method_35374 method_35374 + m (II)F b method_27396 treeShape + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_28898 method_28898 + m (III)V + m ()V +c ehh$a net/minecraft/class_5212$class_5213 net/minecraft/world/level/levelgen/feature/trunkplacers/FancyTrunkPlacer$FoliageCoords + f Lefu$a; a field_24169 attachment + f I b field_24170 branchBase + m ()I a method_27397 getBranchBase + m (Ljd;I)V +c ehi net/minecraft/class_5139 net/minecraft/world/level/levelgen/feature/trunkplacers/ForkingTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_24968 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_28899 method_28899 + m (III)V + m ()V +c ehj net/minecraft/class_5214 net/minecraft/world/level/levelgen/feature/trunkplacers/GiantTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_24969 CODEC + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd$a;Lefe;Ljd;III)V a method_27399 placeLogIfFreeWithOffset + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_28900 method_28900 + m (III)V + m ()V +c ehk net/minecraft/class_5215 net/minecraft/world/level/levelgen/feature/trunkplacers/MegaJungleTrunkPlacer + f Lcom/mojang/serialization/MapCodec; b field_24970 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_28901 method_28901 + m (III)V + m ()V +c ehl net/minecraft/class_5140 net/minecraft/world/level/levelgen/feature/trunkplacers/StraightTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_24971 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_28902 method_28902 + m (III)V + m ()V +c ehm net/minecraft/class_5141 net/minecraft/world/level/levelgen/feature/trunkplacers/TrunkPlacer + f I a field_31528 MAX_BASE_HEIGHT + f I b field_31529 MAX_RAND + f Lcom/mojang/serialization/Codec; c field_24972 CODEC + f I d field_31530 MAX_HEIGHT + f I e field_23760 baseHeight + f I f field_23761 heightRandA + f I g field_23762 heightRandB + m ()Lehn; a method_28903 type + m (Layw;)I a method_26993 getTreeHeight + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P3; a method_28904 trunkPlacerParts + m (Lddc;Ljava/util/function/BiConsumer;Layw;ILjd;Lefe;)Ljava/util/List; a method_26991 placeTrunk + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd$a;Lefe;)V a method_27401 placeLogIfFree + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd;Lefe;)V a method_27400 setDirtAt + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd;Lefe;Ljava/util/function/Function;)Z a method_27402 placeLog + m (Lddc;Ljd;)Z a method_43196 validTreePos + m (Ldtc;)Z a method_43197 method_43197 + m (Lehm;)Ljava/lang/Integer; a method_28905 method_28905 + m (Lddc;Ljava/util/function/BiConsumer;Layw;Ljd;Lefe;)Z b method_35375 placeLog + m (Lddc;Ljd;)Z b method_43198 isFree + m (Ldtc;)Z b method_27405 method_27405 + m (Lehm;)Ljava/lang/Integer; b method_28906 method_28906 + m (Lddc;Ljd;)Z c method_27403 isDirt + m (Lehm;)Ljava/lang/Integer; c method_28907 method_28907 + m (III)V + m ()V +c ehn net/minecraft/class_5142 net/minecraft/world/level/levelgen/feature/trunkplacers/TrunkPlacerType + f Lehn; a field_23763 STRAIGHT_TRUNK_PLACER + f Lehn; b field_23764 FORKING_TRUNK_PLACER + f Lehn; c field_24171 GIANT_TRUNK_PLACER + f Lehn; d field_24172 MEGA_JUNGLE_TRUNK_PLACER + f Lehn; e field_24173 DARK_OAK_TRUNK_PLACER + f Lehn; f field_24174 FANCY_TRUNK_PLACER + f Lehn; g field_29309 BENDING_TRUNK_PLACER + f Lehn; h field_38792 UPWARDS_BRANCHING_TRUNK_PLACER + f Lehn; i field_42855 CHERRY_TRUNK_PLACER + f Lcom/mojang/serialization/MapCodec; j field_24973 codec + m ()Lcom/mojang/serialization/MapCodec; a method_28908 codec + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lehn; a method_26995 register + m (Lcom/mojang/serialization/MapCodec;)V + m ()V +c eho net/minecraft/class_7390 net/minecraft/world/level/levelgen/feature/trunkplacers/UpwardsBranchingTrunkPlacer + f Lcom/mojang/serialization/MapCodec; a field_38793 CODEC + f Lbpw; b field_38794 extraBranchSteps + f F h field_38795 placeBranchPerLogProbability + f Lbpw; i field_38796 extraBranchLength + f Ljq; j field_38797 canGrowThrough + m (Lddc;Ljava/util/function/BiConsumer;Layw;ILefe;Ljava/util/List;Ljd$a;ILji;II)V a method_43199 placeBranch + m (Ldtc;)Z a method_43200 method_43200 + m (Leho;)Ljq; a method_43201 method_43201 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_43202 method_43202 + m (Leho;)Lbpw; b method_43203 method_43203 + m (Leho;)Ljava/lang/Float; c method_43204 method_43204 + m (Leho;)Lbpw; d method_43205 method_43205 + m (IIILbpw;FLbpw;Ljq;)V + m ()V +c ehp net/minecraft/class_6118 net/minecraft/world/level/levelgen/feature/trunkplacers/package-info +c ehq net/minecraft/class_3229 net/minecraft/world/level/levelgen/flat/FlatLayerInfo + f Lcom/mojang/serialization/Codec; a field_24974 CODEC + f Ldfy; b field_29566 block + f I c field_14028 height + m ()I a method_14289 getHeight + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28909 method_28909 + m (Lehq;)Ldfy; a method_28910 method_28910 + m ()Ldtc; b method_14286 getBlockState + m (ILdfy;)V + m ()V +c ehr net/minecraft/class_7142 net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorPreset + f Lcom/mojang/serialization/Codec; a field_37711 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_37712 CODEC + f Ljm; c comp_559 displayItem + f Leht; d comp_560 settings + m ()Ljm; a comp_559 displayItem + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41576 method_41576 + m (Lehr;)Leht; a method_41577 method_41577 + m ()Leht; b comp_560 settings + m (Lehr;)Ljm; b method_41578 method_41578 + m (Ljm;Leht;)V + m ()V +c ehs net/minecraft/class_7143 net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorPresets + f Lakq; a field_37713 CLASSIC_FLAT + f Lakq; b field_37714 TUNNELERS_DREAM + f Lakq; c field_37715 WATER_WORLD + f Lakq; d field_37716 OVERWORLD + f Lakq; e field_37717 SNOWY_KINGDOM + f Lakq; f field_37718 BOTTOMLESS_PIT + f Lakq; g field_37719 DESERT + f Lakq; h field_37720 REDSTONE_READY + f Lakq; i field_37721 THE_VOID + m (Ljava/lang/String;)Lakq; a method_41580 register + m (Lqq;)V a method_41579 bootstrap + m ()V + m ()V +c ehs$a net/minecraft/class_7143$class_7144 net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorPresets$Bootstrap + f Lqq; a field_40917 context + m ()V a method_41581 run + m (Lakq;Ldcv;Lakq;Ljava/util/Set;ZZ[Lehq;)V a method_41583 register + m (Lqq;)V +c eht net/minecraft/class_3232 net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorSettings + f Lcom/mojang/serialization/Codec; a field_24975 CODEC + f Lorg/slf4j/Logger; b field_14064 LOGGER + f Ljava/util/Optional; c field_37145 structureOverrides + f Ljava/util/List; d field_14072 layersInfo + f Ljm; e field_14081 biome + f Ljava/util/List; f field_14082 layers + f Z g field_14077 voidGen + f Z h field_24976 decoration + f Z i field_24977 addLakes + f Ljava/util/List; j field_40918 lakes + m ()V a method_28911 setDecoration + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28913 method_28913 + m (Ldtc;)Z a method_34741 method_34741 + m (Leht;)Lcom/mojang/serialization/DataResult; a method_33067 validateHeight + m (Ljava/util/List;Ljava/util/Optional;Ljm;)Leht; a method_46727 withBiomeAndLayers + m (Ljava/util/Optional;Ljm;)Ljm; a method_46728 getBiome + m (Ljm;)Lddx; a method_44225 adjustGenerationSettings + m (Ljn;)Ljm; a method_46726 getDefaultBiome + m (Ljn;Ljn;Ljn;)Leht; a method_14309 getDefault + m ()V b method_28916 setAddLakes + m (Leht;)Ljava/util/Optional; b method_31182 method_31182 + m (Ljn;)Ljava/util/List; b method_46729 createLakesList + m ()Ljava/util/Optional; c method_41139 structureOverrides + m (Leht;)Ljava/lang/Boolean; c method_30046 method_30046 + m ()Ljm; d method_14326 getBiome + m (Leht;)Ljava/lang/Boolean; d method_30047 method_30047 + m ()Ljava/util/List; e method_14327 getLayersInfo + m (Leht;)Ljava/util/Optional; e method_41140 method_41140 + m ()Ljava/util/List; f method_14312 getLayers + m ()V g method_14330 updateLayers + m ()Ljava/lang/String; h method_49537 method_49537 + m (Ljava/util/Optional;Ljava/util/List;ZZLjava/util/Optional;Ljm$c;Ljm;Ljm;)V + m (Ljava/util/Optional;Ljm;Ljava/util/List;)V + m ()V +c ehu net/minecraft/class_6119 net/minecraft/world/level/levelgen/flat/package-info +c ehv net/minecraft/class_6120 net/minecraft/world/level/levelgen/heightproviders/BiasedToBottomHeight + f Lcom/mojang/serialization/MapCodec; a field_31531 CODEC + f Lorg/slf4j/Logger; b field_31532 LOGGER + f Ldzs; d field_31533 minInclusive + f Ldzs; e field_31534 maxInclusive + f I f field_31535 inner + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_35376 method_35376 + m (Ldzs;Ldzs;I)Lehv; a method_35377 of + m (Lehv;)Ljava/lang/Integer; a method_35378 method_35378 + m (Lehv;)Ldzs; b method_35379 method_35379 + m (Lehv;)Ldzs; c method_35380 method_35380 + m (Ldzs;Ldzs;I)V + m ()V +c ehw net/minecraft/class_6121 net/minecraft/world/level/levelgen/heightproviders/ConstantHeight + f Lehw; a field_31536 ZERO + f Lcom/mojang/serialization/MapCodec; b field_31537 CODEC + f Ldzs; d field_31538 value + m (Ldzs;)Lehw; a method_35383 of + m ()Ldzs; b method_35385 getValue + m (Ldzs;)V + m ()V +c ehx net/minecraft/class_6122 net/minecraft/world/level/levelgen/heightproviders/HeightProvider + f Lcom/mojang/serialization/Codec; a field_31539 CONSTANT_OR_DISPATCH_CODEC + f Lcom/mojang/serialization/Codec; c field_31540 CODEC + m ()Lehy; a method_35388 getType + m (Layw;Ldzv;)I a method_35391 sample + m (Lcom/mojang/datafixers/util/Either;)Lehx; a method_35389 method_35389 + m (Lehx;)Lcom/mojang/datafixers/util/Either; a method_35390 method_35390 + m (Lehx;)Lehx; b method_35392 method_35392 + m ()V + m ()V +c ehy net/minecraft/class_6123 net/minecraft/world/level/levelgen/heightproviders/HeightProviderType + f Lehy; a field_31541 CONSTANT + f Lehy; b field_31542 UNIFORM + f Lehy; c field_31543 BIASED_TO_BOTTOM + f Lehy; d field_33520 VERY_BIASED_TO_BOTTOM + f Lehy; e field_33521 TRAPEZOID + f Lehy; f field_35711 WEIGHTED_LIST + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_35393 method_35393 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lehy; a method_35394 register + m ()V +c ehz net/minecraft/class_6342 net/minecraft/world/level/levelgen/heightproviders/TrapezoidHeight + f Lcom/mojang/serialization/MapCodec; a field_33522 CODEC + f Lorg/slf4j/Logger; b field_33523 LOGGER + f Ldzs; d field_33524 minInclusive + f Ldzs; e field_33525 maxInclusive + f I f field_33526 plateau + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_36306 method_36306 + m (Ldzs;Ldzs;)Lehz; a method_36307 of + m (Ldzs;Ldzs;I)Lehz; a method_36308 of + m (Lehz;)Ljava/lang/Integer; a method_36309 method_36309 + m (Lehz;)Ldzs; b method_36310 method_36310 + m (Lehz;)Ldzs; c method_36311 method_36311 + m (Ldzs;Ldzs;I)V + m ()V +c eia net/minecraft/class_6124 net/minecraft/world/level/levelgen/heightproviders/UniformHeight + f Lcom/mojang/serialization/MapCodec; a field_31544 CODEC + f Lorg/slf4j/Logger; b field_31545 LOGGER + f Ldzs; d field_31546 minInclusive + f Ldzs; e field_31547 maxInclusive + f Lit/unimi/dsi/fastutil/longs/LongSet; f field_36290 warnedFor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_35395 method_35395 + m (Ldzs;Ldzs;)Leia; a method_35396 of + m (Leia;)Ldzs; a method_35397 method_35397 + m (Leia;)Ldzs; b method_35398 method_35398 + m (Ldzs;Ldzs;)V + m ()V +c eib net/minecraft/class_6343 net/minecraft/world/level/levelgen/heightproviders/VeryBiasedToBottomHeight + f Lcom/mojang/serialization/MapCodec; a field_33527 CODEC + f Lorg/slf4j/Logger; b field_33528 LOGGER + f Ldzs; d field_33529 minInclusive + f Ldzs; e field_33530 maxInclusive + f I f field_33531 inner + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_36312 method_36312 + m (Ldzs;Ldzs;I)Leib; a method_36313 of + m (Leib;)Ljava/lang/Integer; a method_36314 method_36314 + m (Leib;)Ldzs; b method_36315 method_36315 + m (Leib;)Ldzs; c method_36316 method_36316 + m (Ldzs;Ldzs;I)V + m ()V +c eic net/minecraft/class_6791 net/minecraft/world/level/levelgen/heightproviders/WeightedListHeight + f Lcom/mojang/serialization/MapCodec; a field_35712 CODEC + f Lbpb; b field_35713 distribution + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39612 method_39612 + m (Leic;)Lbpb; a method_39613 method_39613 + m (Lbpb;)V + m ()V +c eid net/minecraft/class_6125 net/minecraft/world/level/levelgen/heightproviders/package-info +c eie net/minecraft/class_6582 net/minecraft/world/level/levelgen/material/MaterialRuleList + f Ljava/util/List; a comp_437 materialRuleList + m ()Ljava/util/List; a comp_437 materialRuleList + m (Ljava/util/List;)V +c eif net/minecraft/class_6583 net/minecraft/world/level/levelgen/material/WorldGenMaterialRule + m (Ldzc;III)Ldtc; a method_40553 apply +c eig net/minecraft/class_6657 net/minecraft/world/level/levelgen/material/package-info +c eih net/minecraft/class_6126 net/minecraft/world/level/levelgen/package-info +c eii net/minecraft/class_6792 net/minecraft/world/level/levelgen/placement/BiomeFilter + f Lcom/mojang/serialization/MapCodec; a field_35714 CODEC + f Leii; c field_35715 INSTANCE + m ()Leii; a method_39614 biome + m ()Ljava/lang/IllegalStateException; c method_39616 method_39616 + m ()Leii; d method_39617 method_39617 + m ()V + m ()V +c eij net/minecraft/class_6658 net/minecraft/world/level/levelgen/placement/BlockPredicateFilter + f Lcom/mojang/serialization/MapCodec; a field_35075 CODEC + f Leaf; c field_35076 predicate + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38916 method_38916 + m (Leaf;)Leij; a method_39618 forPredicate + m (Leij;)Leaf; a method_38917 method_38917 + m (Leaf;)V + m ()V +c eik net/minecraft/class_5851 net/minecraft/world/level/levelgen/placement/CarvingMaskPlacement + f Lcom/mojang/serialization/MapCodec; a field_28934 CODEC + f Ldyu$a; c field_28935 step + m (Ldyu$a;)Leik; a method_39619 forStep + m (Leik;)Ldyu$a; a method_33862 method_33862 + m (Ldyu$a;)V + m ()V +c eil net/minecraft/class_5932 net/minecraft/world/level/levelgen/placement/CaveSurface + f Leil; a field_29313 CEILING + f Leil; b field_29314 FLOOR + f Lcom/mojang/serialization/Codec; c field_29315 CODEC + f Lji; d field_29316 direction + f I e field_29317 y + f Ljava/lang/String; f field_29318 id + f [Leil; g field_29320 $VALUES + m ()Lji; a method_34379 getDirection + m ()I b method_34380 getY + m ()[Leil; d method_36759 $values + m (Ljava/lang/String;ILji;ILjava/lang/String;)V + m ()V +c eim net/minecraft/class_5452 net/minecraft/world/level/levelgen/placement/CountOnEveryLayerPlacement + f Lcom/mojang/serialization/MapCodec; a field_35716 CODEC + f Lbpw; c field_35717 count + m (I)Leim; a method_39620 of + m (Lbpw;)Leim; a method_39621 of + m (Ldtc;)Z a method_30472 isEmpty + m (Leim;)Lbpw; a method_39622 method_39622 + m (Leiw;IIII)I a method_30473 findOnGroundYPosition + m (Lbpw;)V + m ()V +c ein net/minecraft/class_6793 net/minecraft/world/level/levelgen/placement/CountPlacement + f Lcom/mojang/serialization/MapCodec; a field_35718 CODEC + f Lbpw; c field_35719 count + m (I)Lein; a method_39623 of + m (Lbpw;)Lein; a method_39624 of + m (Lein;)Lbpw; a method_39625 method_39625 + m (Lbpw;)V + m ()V +c eio net/minecraft/class_6794 net/minecraft/world/level/levelgen/placement/EnvironmentScanPlacement + f Lcom/mojang/serialization/MapCodec; a field_35720 CODEC + f Lji; c field_35721 directionOfSearch + f Leaf; d field_35722 targetCondition + f Leaf; e field_35723 allowedSearchCondition + f I f field_35724 maxSteps + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39626 method_39626 + m (Leio;)Ljava/lang/Integer; a method_39627 method_39627 + m (Lji;Leaf;I)Leio; a method_39628 scanningFor + m (Lji;Leaf;Leaf;I)Leio; a method_39629 scanningFor + m (Leio;)Leaf; b method_39630 method_39630 + m (Leio;)Leaf; c method_39631 method_39631 + m (Leio;)Lji; d method_39632 method_39632 + m (Lji;Leaf;Leaf;I)V + m ()V +c eip net/minecraft/class_9830 net/minecraft/world/level/levelgen/placement/FixedPlacement + f Lcom/mojang/serialization/MapCodec; a field_52290 CODEC + f Ljava/util/List; c field_52291 positions + m (IILjd;)Z a method_61119 isSameChunk + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_61120 method_61120 + m (Leip;)Ljava/util/List; a method_61121 method_61121 + m ([Ljd;)Leip; a method_61122 of + m (IILjd;)Z b method_61123 method_61123 + m (Ljava/util/List;)V + m ()V +c eiq net/minecraft/class_6795 net/minecraft/world/level/levelgen/placement/HeightRangePlacement + f Lcom/mojang/serialization/MapCodec; a field_35725 CODEC + f Lehx; c field_35726 height + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39633 method_39633 + m (Ldzs;Ldzs;)Leiq; a method_39634 uniform + m (Lehx;)Leiq; a method_39635 of + m (Leiq;)Lehx; a method_39636 method_39636 + m (Ldzs;Ldzs;)Leiq; b method_39637 triangle + m (Lehx;)V + m ()V +c eir net/minecraft/class_5925 net/minecraft/world/level/levelgen/placement/HeightmapPlacement + f Lcom/mojang/serialization/MapCodec; a field_29265 CODEC + f Ldyy$a; c field_29266 heightmap + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34330 method_34330 + m (Ldyy$a;)Leir; a method_39638 onHeightmap + m (Leir;)Ldyy$a; a method_34331 method_34331 + m (Ldyy$a;)V + m ()V +c eis net/minecraft/class_5450 net/minecraft/world/level/levelgen/placement/InSquarePlacement + f Lcom/mojang/serialization/MapCodec; a field_35727 CODEC + f Leis; c field_35728 INSTANCE + m ()Leis; a method_39639 spread + m ()Leis; c method_39640 method_39640 + m ()V + m ()V +c eit net/minecraft/class_3275 net/minecraft/world/level/levelgen/placement/NoiseBasedCountPlacement + f Lcom/mojang/serialization/MapCodec; a field_24987 CODEC + f I c field_14208 noiseToCountRatio + f D d field_14206 noiseFactor + f D e field_14205 noiseOffset + m (IDD)Leit; a method_39641 of + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28939 method_28939 + m (Leit;)Ljava/lang/Double; a method_28941 method_28941 + m (Leit;)Ljava/lang/Double; b method_28942 method_28942 + m (Leit;)Ljava/lang/Integer; c method_28943 method_28943 + m (IDD)V + m ()V +c eiu net/minecraft/class_3003 net/minecraft/world/level/levelgen/placement/NoiseThresholdCountPlacement + f Lcom/mojang/serialization/MapCodec; a field_24890 CODEC + f D c field_13444 noiseLevel + f I d field_13446 belowNoise + f I e field_13445 aboveNoise + m (DII)Leiu; a method_39642 of + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28733 method_28733 + m (Leiu;)Ljava/lang/Integer; a method_28732 method_28732 + m (Leiu;)Ljava/lang/Integer; b method_28734 method_28734 + m (Leiu;)Ljava/lang/Double; c method_28735 method_28735 + m (DII)V + m ()V +c eiv net/minecraft/class_6796 net/minecraft/world/level/levelgen/placement/PlacedFeature + f Lcom/mojang/serialization/Codec; a field_35729 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_35730 CODEC + f Lcom/mojang/serialization/Codec; c field_35731 LIST_CODEC + f Lcom/mojang/serialization/Codec; d field_36416 LIST_OF_LISTS_CODEC + f Ljm; e comp_334 feature + f Ljava/util/List; f comp_335 placement + m ()Ljava/util/stream/Stream; a method_39643 getFeatures + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39645 method_39645 + m (Ldds;Lduz;Layw;Ljd;)Z a method_39644 place + m (Lebq;Leiw;Layw;Lorg/apache/commons/lang3/mutable/MutableBoolean;Ljd;)V a method_39646 method_39646 + m (Leiv;)Ljava/util/List; a method_39647 method_39647 + m (Leiw;Layw;Ljd;)Z a method_39648 placeWithContext + m (Leiy;Leiw;Layw;Ljd;)Ljava/util/stream/Stream; a method_39649 method_39649 + m ()Ljm; b comp_334 feature + m (Ldds;Lduz;Layw;Ljd;)Z b method_39650 placeWithBiomeCheck + m (Leiv;)Ljm; b method_39651 method_39651 + m ()Ljava/util/List; c comp_335 placement + m (Ljm;Ljava/util/List;)V + m ()V +c eiw net/minecraft/class_5444 net/minecraft/world/level/levelgen/placement/PlacementContext + f Ldds; a field_25857 level + f Lduz; b field_35734 generator + f Ljava/util/Optional; c field_35735 topFeature + m (Ldcd;Ldyu$a;)Ldux; a method_30459 getCarvingMask + m (Ldyy$a;II)I a method_30460 getHeight + m (Ljd;)Ldtc; a method_30461 getBlockState + m ()I c method_33868 getMinBuildHeight + m ()Ldds; d method_34383 getLevel + m ()Ljava/util/Optional; e method_39652 topFeature + m ()Lduz; f method_39653 generator + m (Ldds;Lduz;Ljava/util/Optional;)V +c eix net/minecraft/class_6661 net/minecraft/world/level/levelgen/placement/PlacementFilter + m (Leiw;Layw;Ljd;)Z a method_38918 shouldPlace + m ()V +c eiy net/minecraft/class_6797 net/minecraft/world/level/levelgen/placement/PlacementModifier + f Lcom/mojang/serialization/Codec; b field_35736 CODEC + m (Leiw;Layw;Ljd;)Ljava/util/stream/Stream; a_ method_14452 getPositions + m ()Leiz; b method_39615 type + m ()V + m ()V +c eiz net/minecraft/class_6798 net/minecraft/world/level/levelgen/placement/PlacementModifierType + f Leiz; a field_35737 BLOCK_PREDICATE_FILTER + f Leiz; b field_35738 RARITY_FILTER + f Leiz; c field_35739 SURFACE_RELATIVE_THRESHOLD_FILTER + f Leiz; d field_35740 SURFACE_WATER_DEPTH_FILTER + f Leiz; e field_35741 BIOME_FILTER + f Leiz; f field_35742 COUNT + f Leiz; g field_35743 NOISE_BASED_COUNT + f Leiz; h field_35744 NOISE_THRESHOLD_COUNT + f Leiz; i field_35745 COUNT_ON_EVERY_LAYER + f Leiz; j field_35746 ENVIRONMENT_SCAN + f Leiz; k field_35747 HEIGHTMAP + f Leiz; l field_35748 HEIGHT_RANGE + f Leiz; m field_35749 IN_SQUARE + f Leiz; n field_35750 RANDOM_OFFSET + f Leiz; o field_35751 CARVING_MASK_PLACEMENT + f Leiz; p field_52292 FIXED_PLACEMENT + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_39654 method_39654 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Leiz; a method_39655 register + m ()V +c eja net/minecraft/class_6732 net/minecraft/world/level/levelgen/placement/RandomOffsetPlacement + f Lcom/mojang/serialization/MapCodec; a field_35419 CODEC + f Lbpw; c field_35420 xzSpread + f Lbpw; d field_35421 ySpread + m (Lbpw;)Leja; a method_39656 vertical + m (Lbpw;Lbpw;)Leja; a method_39657 of + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_39179 method_39179 + m (Leja;)Lbpw; a method_39180 method_39180 + m (Lbpw;)Leja; b method_39658 horizontal + m (Leja;)Lbpw; b method_39181 method_39181 + m (Lbpw;Lbpw;)V + m ()V +c ejb net/minecraft/class_6799 net/minecraft/world/level/levelgen/placement/RarityFilter + f Lcom/mojang/serialization/MapCodec; a field_35752 CODEC + f I c field_35753 chance + m (I)Lejb; a method_39659 onAverageOnceEvery + m (Lejb;)Ljava/lang/Integer; a method_39660 method_39660 + m (I)V + m ()V +c ejc net/minecraft/class_5857 net/minecraft/world/level/levelgen/placement/RepeatingPlacement + m (Layw;Ljd;)I a method_14452 count + m (Ljd;I)Ljd; a method_33874 method_33874 + m ()V +c ejd net/minecraft/class_6584 net/minecraft/world/level/levelgen/placement/SurfaceRelativeThresholdFilter + f Lcom/mojang/serialization/MapCodec; a field_34721 CODEC + f Ldyy$a; c field_34722 heightmap + f I d field_34723 minInclusive + f I e field_34724 maxInclusive + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_38456 method_38456 + m (Ldyy$a;II)Lejd; a method_39661 of + m (Lejd;)Ljava/lang/Integer; a method_38457 method_38457 + m (Lejd;)Ljava/lang/Integer; b method_38458 method_38458 + m (Lejd;)Ldyy$a; c method_38459 method_38459 + m (Ldyy$a;II)V + m ()V +c eje net/minecraft/class_5934 net/minecraft/world/level/levelgen/placement/SurfaceWaterDepthFilter + f Lcom/mojang/serialization/MapCodec; a field_29323 CODEC + f I c field_29324 maxWaterDepth + m (I)Leje; a method_39662 forMaxDepth + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_34386 method_34386 + m (Leje;)Ljava/lang/Integer; a method_34387 method_34387 + m (I)V + m ()V +c ejf net/minecraft/class_6128 net/minecraft/world/level/levelgen/placement/package-info +c ejg net/minecraft/class_7145 net/minecraft/world/level/levelgen/presets/WorldPreset + f Lcom/mojang/serialization/Codec; a field_37725 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_37726 CODEC + f Ljava/util/Map; c field_37727 dimensions + m ()Ldzt; a method_45546 createWorldDimensions + m (Lcom/google/common/collect/ImmutableMap$Builder;Lakq;)V a method_57015 method_57015 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41586 method_41586 + m (Lejg;)Lcom/mojang/serialization/DataResult; a method_44351 requireOverworld + m ()Ljava/util/Optional; b method_41584 overworld + m (Lejg;)Ljava/util/Map; b method_41588 method_41588 + m ()Lcom/google/common/collect/ImmutableMap; c method_57016 dimensionsInOrder + m ()Ljava/lang/String; d method_49538 method_49538 + m (Ljava/util/Map;)V + m ()V +c ejh net/minecraft/class_5317 net/minecraft/world/level/levelgen/presets/WorldPresets + f Lakq; a field_25050 NORMAL + f Lakq; b field_25054 FLAT + f Lakq; c field_35756 LARGE_BIOMES + f Lakq; d field_35757 AMPLIFIED + f Lakq; e field_25056 SINGLE_BIOME_SURFACE + f Lakq; f field_25059 DEBUG + m (Ldwz;)Ljava/util/Optional; a method_45547 method_45547 + m (Ldzt;)Ljava/util/Optional; a method_41594 fromSettings + m (Ljava/lang/String;)Lakq; a method_41597 register + m (Lka;)Ldzt; a method_41598 createNormalWorldDimensions + m (Lqq;)V a method_41593 bootstrap + m (Lka;)Ldwz; b method_41599 getNormalOverworld + m ()V + m ()V +c ejh$a net/minecraft/class_5317$class_7146 net/minecraft/world/level/levelgen/presets/WorldPresets$Bootstrap + f Lqq; a field_40919 context + f Ljn; b field_37732 noiseSettings + f Ljn; c field_37730 biomes + f Ljn; d field_40920 placedFeatures + f Ljn; e field_37731 structureSets + f Ljn; f field_42993 multiNoiseBiomeSourceParameterLists + f Ljm; g field_37734 overworldDimensionType + f Ldwz; h field_37737 netherStem + f Ldwz; i field_37740 endStem + m ()V a method_41600 bootstrap + m (Lakq;Ldwz;)V a method_41604 registerCustomOverworldPreset + m (Ldea;)V a method_49257 registerOverworlds + m (Ldea;Ljm;)Ldwz; a method_41601 makeNoiseBasedOverworld + m (Lduz;)Ldwz; a method_41602 makeOverworld + m (Ldwz;)Lejg; a method_41603 createPresetWithCustomOverworld + m (Lqq;)V +c eji net/minecraft/class_7728 net/minecraft/world/level/levelgen/presets/package-info +c ejj net/minecraft/class_3341 net/minecraft/world/level/levelgen/structure/BoundingBox + f Lcom/mojang/serialization/Codec; a field_29325 CODEC + f Lorg/slf4j/Logger; b field_31548 LOGGER + f I c field_14380 minX + f I d field_14379 minY + f I e field_14378 minZ + f I f field_14377 maxX + f I g field_14376 maxY + f I h field_14381 maxZ + m ()Lejj; a method_14665 infinite + m (I)Lejj; a method_35410 inflatedBy + m (III)Lejj; a method_14661 move + m (IIII)Z a method_14669 intersects + m (IIIIIIIIILji;)Lejj; a method_14667 orientBox + m (Lejj;)Z a method_14657 intersects + m (Ljava/lang/Iterable;)Ljava/util/Optional; a method_35411 encapsulatingPositions + m (Ljava/util/function/Consumer;)V a method_34391 forAllCorners + m (Ljava/util/stream/IntStream;)Lcom/mojang/serialization/DataResult; a method_34392 method_34392 + m (Ljd;)Lejj; a method_34389 encapsulate + m (Lkh;)Lejj; a method_29299 move + m (Lkh;Lkh;)Lejj; a method_34390 fromCorners + m ([I)Lejj; a method_34393 method_34393 + m ()Ljava/util/stream/Stream; b method_54883 intersectingChunks + m (III)Lejj; b method_19311 moved + m (Lejj;)Lejj; b method_35412 encapsulate + m (Ljava/lang/Iterable;)Ljava/util/Optional; b method_35413 encapsulatingBoxes + m (Lkh;)Z b method_14662 isInside + m ()Lkh; c method_14659 getLength + m (III)Lejj; c method_59718 inflatedBy + m (Lejj;)Ljava/util/stream/IntStream; c method_34394 method_34394 + m ()I d method_35414 getXSpan + m (III)Z d method_47593 isInside + m ()I e method_14660 getYSpan + m ()I f method_14663 getZSpan + m ()Ljd; g method_22874 getCenter + m ()I h method_35415 minX + m ()I i method_35416 minY + m ()I j method_35417 minZ + m ()I k method_35418 maxX + m ()I l method_35419 maxY + m ()I m method_35420 maxZ + m (Ljd;)V + m (IIIIII)V + m ()V +c ejj$1 net/minecraft/class_3341$1 net/minecraft/world/level/levelgen/structure/BoundingBox$1 + f [I a field_14382 $SwitchMap$net$minecraft$core$Direction + m ()V +c ejk net/minecraft/class_7057 net/minecraft/world/level/levelgen/structure/BuiltinStructureSets + f Lakq; a field_37146 VILLAGES + f Lakq; b field_37147 DESERT_PYRAMIDS + f Lakq; c field_37148 IGLOOS + f Lakq; d field_37149 JUNGLE_TEMPLES + f Lakq; e field_37150 SWAMP_HUTS + f Lakq; f field_37151 PILLAGER_OUTPOSTS + f Lakq; g field_37152 OCEAN_MONUMENTS + f Lakq; h field_37153 WOODLAND_MANSIONS + f Lakq; i field_37154 BURIED_TREASURES + f Lakq; j field_37155 MINESHAFTS + f Lakq; k field_37156 RUINED_PORTALS + f Lakq; l field_37157 SHIPWRECKS + f Lakq; m field_37158 OCEAN_RUINS + f Lakq; n field_37159 NETHER_COMPLEXES + f Lakq; o field_37160 NETHER_FOSSILS + f Lakq; p field_37161 END_CITIES + f Lakq; q field_38427 ANCIENT_CITIES + f Lakq; r field_37162 STRONGHOLDS + f Lakq; s field_43325 TRAIL_RUINS + f Lakq; t field_47410 TRIAL_CHAMBERS + m (Ljava/lang/String;)Lakq; a method_41141 register + m ()V +c ejl net/minecraft/class_7058 net/minecraft/world/level/levelgen/structure/BuiltinStructures + f Lakq; A field_37163 RUINED_PORTAL_JUNGLE + f Lakq; B field_37164 RUINED_PORTAL_SWAMP + f Lakq; C field_37165 RUINED_PORTAL_MOUNTAIN + f Lakq; D field_37166 RUINED_PORTAL_OCEAN + f Lakq; E field_37167 RUINED_PORTAL_NETHER + f Lakq; F field_38428 ANCIENT_CITY + f Lakq; G field_43326 TRAIL_RUINS + f Lakq; H field_47411 TRIAL_CHAMBERS + f Lakq; a field_37168 PILLAGER_OUTPOST + f Lakq; b field_37169 MINESHAFT + f Lakq; c field_37170 MINESHAFT_MESA + f Lakq; d field_37171 WOODLAND_MANSION + f Lakq; e field_37172 JUNGLE_TEMPLE + f Lakq; f field_37173 DESERT_PYRAMID + f Lakq; g field_37174 IGLOO + f Lakq; h field_37175 SHIPWRECK + f Lakq; i field_37176 SHIPWRECK_BEACHED + f Lakq; j field_37177 SWAMP_HUT + f Lakq; k field_37178 STRONGHOLD + f Lakq; l field_37179 OCEAN_MONUMENT + f Lakq; m field_37180 OCEAN_RUIN_COLD + f Lakq; n field_37181 OCEAN_RUIN_WARM + f Lakq; o field_37182 FORTRESS + f Lakq; p field_37183 NETHER_FOSSIL + f Lakq; q field_37184 END_CITY + f Lakq; r field_37185 BURIED_TREASURE + f Lakq; s field_37186 BASTION_REMNANT + f Lakq; t field_37187 VILLAGE_PLAINS + f Lakq; u field_37188 VILLAGE_DESERT + f Lakq; v field_37189 VILLAGE_SAVANNA + f Lakq; w field_37190 VILLAGE_SNOWY + f Lakq; x field_37191 VILLAGE_TAIGA + f Lakq; y field_37192 RUINED_PORTAL_STANDARD + f Lakq; z field_37193 RUINED_PORTAL_DESERT + m (Ljava/lang/String;)Lakq; a method_41142 createKey + m ()V +c ejm net/minecraft/class_3360 net/minecraft/world/level/levelgen/structure/LegacyStructureDataHandler + f Ljava/util/Map; a field_14435 CURRENT_TO_LEGACY_MAP + f Ljava/util/Map; b field_14436 LEGACY_TO_CURRENT_MAP + f Ljava/util/Set; c field_37194 OLD_STRUCTURE_REGISTRY_KEYS + f Z d field_14434 hasLegacyData + f Ljava/util/Map; e field_14432 dataMap + f Ljava/util/Map; f field_14433 indexMap + f Ljava/util/List; g field_17658 legacyKeys + f Ljava/util/List; h field_17659 currentKeys + m (II)Z a method_14737 isUnhandledStructureStart + m (IILjava/lang/String;)Z a method_14738 hasLegacyStart + m (J)V a method_14744 removeIndex + m (Lakq;Leqz;)Lejm; a method_14745 getLegacyStructureHandler + m (Leqz;)V a method_14734 populateCaches + m (Ljava/lang/String;)Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; a method_14736 method_14736 + m (Ljava/util/HashMap;)V a method_14742 method_14742 + m (Lub;)Lub; a method_14735 updateFromLegacy + m (Lub;Ldcd;)Lub; a method_14741 updateStructureStart + m (Ljava/util/HashMap;)V b method_14739 method_14739 + m (Leqz;Ljava/util/List;Ljava/util/List;)V + m ()V +c ejn net/minecraft/class_3790 net/minecraft/world/level/levelgen/structure/PoolElementStructurePiece + f Lekz; a field_16693 element + f Ljd; b field_16695 position + f Ldmm; c field_16694 rotation + f Lorg/slf4j/Logger; d field_24991 LOGGER + f I h field_16692 groundLevelDelta + f Ljava/util/List; i field_16696 junctions + f Lenu; j field_17660 structureTemplateManager + f Lend; k field_52228 liquidSettings + m (Lcom/mojang/serialization/DynamicOps;Luy;)V a method_16649 method_16649 + m (Ldds;Lddq;Lduz;Layw;Lejj;Ljd;Z)V a method_27236 place + m (Leku;)V a method_16647 addJunction + m (Ljava/lang/String;)Ljava/lang/IllegalStateException; a method_35448 method_35448 + m (Lub;Luy;)V a method_28949 method_28949 + m ()Lekz; b method_16644 getElement + m ()Ljd; c method_16648 getPosition + m ()I d method_16646 getGroundLevelDelta + m ()Ljava/util/List; e method_16645 getJunctions + m (Lenu;Lekz;Ljd;ILdmm;Lejj;Lend;)V + m (Lekh;Lub;)V + m ()V +c ejo net/minecraft/class_6621 net/minecraft/world/level/levelgen/structure/PostPlacementProcessor + f Lejo; a field_34938 NONE + m (Ldds;Lddq;Lduz;Layw;Lejj;Ldcd;Lekg;)V a method_38701 method_38701 + m ()V +c ejp net/minecraft/class_3418 net/minecraft/world/level/levelgen/structure/ScatteredFeaturePiece + f I a field_15244 width + f I b field_15243 height + f I c field_15242 depth + f I d field_15241 heightPosition + m (Ldcx;I)Z a method_38462 updateHeightPositionToLowestGroundHeight + m (Ldcx;Lejj;I)Z a method_14839 updateAverageGroundHeight + m (Leki;IIIIIILji;)V + m (Leki;Lub;)V +c ejq net/minecraft/class_7147 net/minecraft/world/level/levelgen/structure/SinglePieceStructure + f Lejq$a; d field_37741 constructor + f I e field_37742 width + f I f field_37743 depth + m (Lejr$a;Lekj;)V a method_41605 method_41605 + m (Lekj;Lejr$a;)V a method_41606 generatePieces + m (Lejq$a;IILejr$c;)V +c ejq$a net/minecraft/class_7147$class_7148 net/minecraft/world/level/levelgen/structure/SinglePieceStructure$PieceConstructor +c ejr net/minecraft/class_3195 net/minecraft/world/level/levelgen/structure/Structure + f Lcom/mojang/serialization/Codec; a field_37744 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_37745 CODEC + f Lejr$c; c field_38429 settings + m ()Ljq; a method_41607 biomes + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/serialization/codecs/RecordCodecBuilder; a method_42697 settingsCodec + m (Ldds;Lddq;Lduz;Layw;Lejj;Ldcd;Lekg;)V a method_38694 afterPlace + m (Lejj;)Lejj; a method_41609 adjustBoundingBox + m (Lejr$a;)Ljava/util/Optional; a method_38676 findGenerationPoint + m (Lejr$a;II)I a method_41610 getLowestY + m (Lejr$a;IIII)I a method_59863 getMeanFirstOccupiedHeight + m (Lejr$a;Ldmm;)Ljd; a method_42382 getLowestYIn5by5BoxOffset7Blocks + m (Lejr$a;Ldyy$a;Ljava/util/function/Consumer;)Ljava/util/Optional; a method_41612 onTopOfChunkCenter + m (Lejr$a;Lejr$b;)Z a method_47931 method_47931 + m (Lejr$b;Lejr$a;)Z a method_41613 isValidBiome + m (Lejr;)Lejr$c; a method_42698 method_42698 + m (Ljava/util/function/Function;)Lcom/mojang/serialization/MapCodec; a method_42699 simpleCodec + m (Ljava/util/function/Function;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42700 method_42700 + m (Lka;Lduz;Ldea;Ldzm;Lenu;JLdcd;ILdcy;Ljava/util/function/Predicate;)Lejz; a method_41614 generate + m ()Ljava/util/Map; b method_41615 spawnOverrides + m (Lejr$a;)Ljava/util/Optional; b method_47932 findValidGenerationPoint + m (Lejr$a;IIII)I b method_42381 getLowestY + m ()Ldyu$b; c method_41616 step + m (Lejr$a;IIII)[I c method_41611 getCornerHeights + m ()Lekc; d method_42701 terrainAdaptation + m ()Leka; e method_41618 type + m (Lejr$c;)V + m ()V +c ejr$a net/minecraft/class_3195$class_7149 net/minecraft/world/level/levelgen/structure/Structure$GenerationContext + f Lka; a comp_561 registryAccess + f Lduz; b comp_562 chunkGenerator + f Ldea; c comp_563 biomeSource + f Ldzm; d comp_564 randomState + f Lenu; e comp_565 structureTemplateManager + f Ldzx; f comp_566 random + f J g comp_567 seed + f Ldcd; h comp_568 chunkPos + f Ldcy; i comp_569 heightAccessor + f Ljava/util/function/Predicate; j comp_570 validBiome + m ()Lka; a comp_561 registryAccess + m (JLdcd;)Ldzx; a method_41619 makeRandom + m ()Lduz; b comp_562 chunkGenerator + m ()Ldea; c comp_563 biomeSource + m ()Ldzm; d comp_564 randomState + m ()Lenu; e comp_565 structureTemplateManager + m ()Ldzx; f comp_566 random + m ()J g comp_567 seed + m ()Ldcd; h comp_568 chunkPos + m ()Ldcy; i comp_569 heightAccessor + m ()Ljava/util/function/Predicate; j comp_570 validBiome + m (Lka;Lduz;Ldea;Ldzm;Lenu;JLdcd;Ldcy;Ljava/util/function/Predicate;)V + m (Lka;Lduz;Ldea;Ldzm;Lenu;Ldzx;JLdcd;Ldcy;Ljava/util/function/Predicate;)V +c ejr$b net/minecraft/class_3195$class_7150 net/minecraft/world/level/levelgen/structure/Structure$GenerationStub + f Ljd; a comp_571 position + f Lcom/mojang/datafixers/util/Either; b comp_572 generator + m ()Lekj; a method_44019 getPiecesBuilder + m (Lekj;)Lekj; a method_44020 method_44020 + m (Ljava/util/function/Consumer;)Lekj; a method_44021 method_44021 + m ()Ljd; b comp_571 position + m ()Lcom/mojang/datafixers/util/Either; c comp_572 generator + m (Ljd;Ljava/util/function/Consumer;)V + m (Ljd;Lcom/mojang/datafixers/util/Either;)V +c ejr$c net/minecraft/class_3195$class_7302 net/minecraft/world/level/levelgen/structure/Structure$StructureSettings + f Lcom/mojang/serialization/MapCodec; a field_38430 CODEC + f Ljq; b comp_686 biomes + f Ljava/util/Map; c comp_687 spawnOverrides + f Ldyu$b; d comp_688 step + f Lekc; e comp_689 terrainAdaptation + f Lejr$c; f field_52229 DEFAULT + m ()Ljq; a comp_686 biomes + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42702 method_42702 + m ()Ljava/util/Map; b comp_687 spawnOverrides + m ()Ldyu$b; c comp_688 step + m ()Lekc; d comp_689 terrainAdaptation + m (Ljq;)V + m (Ljq;Ljava/util/Map;Ldyu$b;Lekc;)V + m ()V +c ejr$c$a net/minecraft/class_3195$class_7302$class_9821 net/minecraft/world/level/levelgen/structure/Structure$StructureSettings$Builder + f Ljq; a field_52230 biomes + f Ljava/util/Map; b field_52231 spawnOverrides + f Ldyu$b; c field_52232 step + f Lekc; d field_52233 terrainAdaption + m ()Lejr$c; a method_61008 build + m (Ldyu$b;)Lejr$c$a; a method_61009 generationStep + m (Lekc;)Lejr$c$a; a method_61010 terrainAdapation + m (Ljava/util/Map;)Lejr$c$a; a method_61011 spawnOverrides + m (Ljq;)V +c ejs net/minecraft/class_6832 net/minecraft/world/level/levelgen/structure/StructureCheck + f Lorg/slf4j/Logger; a field_36225 LOGGER + f I b field_36226 NO_STRUCTURE + f Ldwh; c field_36227 storageAccess + f Lka; d field_36228 registryAccess + f Lenu; e field_36230 structureTemplateManager + f Lakq; f field_36231 dimension + f Lduz; g field_36232 chunkGenerator + f Ldzm; h field_37750 randomState + f Ldcy; i field_36233 heightAccessor + f Ldea; j field_36234 biomeSource + f J k field_36235 seed + f Lcom/mojang/datafixers/DataFixer; l field_36236 fixerUpper + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; m field_36237 loadedChunks + f Ljava/util/Map; n field_36238 featureChecks + m (JLit/unimi/dsi/fastutil/longs/Long2BooleanMap;)V a method_39827 method_39827 + m (JLit/unimi/dsi/fastutil/objects/Object2IntMap;)V a method_39828 storeFullResults + m (Ldcd;Lejr;)V a method_39830 incrementReference + m (Ldcd;Lejr;J)Z a method_41143 method_41143 + m (Ldcd;Lejr;Leko;Z)Lejt; a method_39831 checkStart + m (Ldcd;Lejr;ZJ)Lejt; a method_39832 tryLoadFromStorage + m (Ldcd;Ljava/util/Map;)V a method_39833 onStructureLoad + m (Lejr;)Lit/unimi/dsi/fastutil/longs/Long2BooleanMap; a method_39834 method_39834 + m (Lejr;Ljava/lang/Integer;)Ljava/lang/Integer; a method_39836 method_39836 + m (Lejr;Ljava/lang/Long;Lit/unimi/dsi/fastutil/objects/Object2IntMap;)Lit/unimi/dsi/fastutil/objects/Object2IntMap; a method_39837 method_39837 + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;)Lit/unimi/dsi/fastutil/objects/Object2IntMap; a method_39838 deduplicateEmptyMap + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;Lejr;Lejz;)V a method_39839 method_39839 + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;Lejr;Z)Lejt; a method_39840 checkStructureInfo + m (Lub;)Lit/unimi/dsi/fastutil/objects/Object2IntMap; a method_39842 loadStructures + m (Ldcd;Lejr;)Z b method_39829 canCreateStructure + m (Ldwh;Lka;Lenu;Lakq;Lduz;Ldzm;Ldcy;Ldea;JLcom/mojang/datafixers/DataFixer;)V + m ()V +c ejt net/minecraft/class_6833 net/minecraft/world/level/levelgen/structure/StructureCheckResult + f Lejt; a field_36239 START_PRESENT + f Lejt; b field_36240 START_NOT_PRESENT + f Lejt; c field_36241 CHUNK_LOAD_NEEDED + f [Lejt; d field_36242 $VALUES + m ()[Lejt; a method_39843 $values + m (Ljava/lang/String;I)V + m ()V +c eju net/minecraft/class_3440 net/minecraft/world/level/levelgen/structure/StructureFeatureIndexSavedData + f Ljava/lang/String; a field_31660 TAG_REMAINING_INDEXES + f Ljava/lang/String; b field_31661 TAG_All_INDEXES + f Lit/unimi/dsi/fastutil/longs/LongSet; c field_15301 all + f Lit/unimi/dsi/fastutil/longs/LongSet; d field_15302 remaining + m ()Leql$a; a method_52601 factory + m (J)V a method_14896 addIndex + m ()Lit/unimi/dsi/fastutil/longs/LongSet; b method_14898 getAll + m (J)Z b method_14897 hasStartIndex + m (Lub;Ljo$a;)Leju; b method_32358 load + m (J)Z c method_14894 hasUnhandledIndex + m (J)V d method_14895 removeIndex + m (Lit/unimi/dsi/fastutil/longs/LongSet;Lit/unimi/dsi/fastutil/longs/LongSet;)V + m ()V +c ejv net/minecraft/class_3443 net/minecraft/world/level/levelgen/structure/StructurePiece + f Lorg/slf4j/Logger; a field_29327 LOGGER + f Lji; b field_15312 orientation + f Ldkv; c field_15310 mirror + f Ldmm; d field_15313 rotation + f Ldtc; e field_15314 CAVE_AIR + f Lejj; f field_15315 boundingBox + f I g field_15316 genDepth + f Leki; h field_16712 type + f Ljava/util/Set; i field_15311 SHAPE_CHECK_BLOCKS + m ()Ldmm; a method_16888 getRotation + m (I)V a method_41620 setGenDepth + m (II)I a method_14928 getWorldX + m (III)V a method_14922 move + m (IIILji;III)Lejj; a method_35454 makeBoundingBox + m (Layw;)Lji; a method_35457 getRandomHorizontalDirection + m (Ldcc;IIILejj;)Ldtc; a method_14929 getBlock + m (Ldcc;Ljd;Ldtc;)Ldtc; a method_14916 reorient + m (Ldcd;I)Z a method_16654 isCloseToChunk + m (Ldcz;IIILejj;)Z a method_33780 canBeReplaced + m (Lddl;Lejj;Layw;Ljd;Lakq;Ldtc;)Z a method_14921 createChest + m (Ldds;Lddq;Lduz;Layw;Lejj;Ldcd;Ljd;)V a method_14931 postProcess + m (Ldds;Ldtc;IIILejj;)V a method_14917 placeBlock + m (Ldds;Lejj;IIIIII)V a method_14942 generateAirBox + m (Ldds;Lejj;IIIIIILdtc;Ldtc;Z)V a method_14940 generateBox + m (Ldds;Lejj;IIIIIILdtc;Z)V a method_14919 generateUpperHalfSphere + m (Ldds;Lejj;IIIIIIZLayw;Lejv$a;)V a method_14938 generateBox + m (Ldds;Lejj;Layw;FIIIIIILdtc;Ldtc;ZZ)V a method_14933 generateMaybeBox + m (Ldds;Lejj;Layw;FIIILdtc;)V a method_14945 maybeGenerateBlock + m (Ldds;Lejj;Layw;IIILakq;)Z a method_14915 createChest + m (Ldds;Lejj;Layw;IIILji;Lakq;)Z a method_14930 createDispenser + m (Ldds;Lejj;Lejj;Ldtc;Ldtc;Z)V a method_35455 generateBox + m (Ldds;Lejj;Lejj;ZLayw;Lejv$a;)V a method_35456 generateBox + m (Ldtc;)Z a method_33881 isReplaceableByStructures + m (Lejv;Lejw;Layw;)V a method_14918 addChildren + m (Lekh;)Lub; a method_14946 createTag + m (Lekh;Lub;)V a method_14943 addAdditionalSaveData + m (Ljava/lang/String;)Ljava/lang/IllegalArgumentException; a method_35459 method_35459 + m (Ljava/util/List;Lejj;)Lejv; a method_38702 findCollisionPiece + m (Ljava/util/stream/Stream;)Lejj; a method_38703 createBoundingBox + m (Lji;)V a method_14926 setOrientation + m (Lub;Luy;)V a method_34398 method_34398 + m ()Ljava/lang/IllegalStateException; b method_38704 method_38704 + m (I)I b method_14924 getWorldY + m (II)I b method_14941 getWorldZ + m (III)Ljd$a; b method_33781 getWorldPos + m (Ldcz;IIILejj;)Z b method_14939 isInterior + m (Ldds;Ldtc;IIILejj;)V b method_14936 fillColumnDown + m ()Lejj; f method_14935 getBoundingBox + m ()I g method_14923 getGenDepth + m ()Ljd; h method_35458 getLocatorPosition + m ()Lji; i method_14934 getOrientation + m ()Ldkv; j method_35460 getMirror + m ()Leki; k method_16653 getType + m (Leki;ILejj;)V + m (Leki;Lub;)V + m ()V +c ejv$1 net/minecraft/class_3443$1 net/minecraft/world/level/levelgen/structure/StructurePiece$1 + f [I a field_15318 $SwitchMap$net$minecraft$core$Direction + m ()V +c ejv$a net/minecraft/class_3443$class_3444 net/minecraft/world/level/levelgen/structure/StructurePiece$BlockSelector + f Ldtc; a field_15317 next + m ()Ldtc; a method_14947 getNext + m (Layw;IIIZ)V a method_14948 next + m ()V +c ejw net/minecraft/class_6130 net/minecraft/world/level/levelgen/structure/StructurePieceAccessor + m (Lejj;)Lejv; a method_35461 findCollisionPiece + m (Lejv;)V a method_35462 addPiece +c ejx net/minecraft/class_7059 net/minecraft/world/level/levelgen/structure/StructureSet + f Lcom/mojang/serialization/Codec; a field_37195 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_37196 CODEC + f Ljava/util/List; c comp_510 structures + f Leko; d comp_511 placement + m ()Ljava/util/List; a comp_510 structures + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41144 method_41144 + m (Ljm;)Lejx$a; a method_41145 entry + m (Ljm;I)Lejx$a; a method_41146 entry + m ()Leko; b comp_511 placement + m (Ljm;Leko;)V + m (Ljava/util/List;Leko;)V + m ()V +c ejx$a net/minecraft/class_7059$class_7060 net/minecraft/world/level/levelgen/structure/StructureSet$StructureSelectionEntry + f Lcom/mojang/serialization/Codec; a field_37197 CODEC + f Ljm; b comp_512 structure + f I c comp_513 weight + m ()Ljm; a comp_512 structure + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41147 method_41147 + m ()I b comp_513 weight + m (Ljm;I)V + m ()V +c ejy net/minecraft/class_7061 net/minecraft/world/level/levelgen/structure/StructureSpawnOverride + f Lcom/mojang/serialization/Codec; a field_37198 CODEC + f Lejy$a; b comp_514 boundingBox + f Lbpf; c comp_515 spawns + m ()Lejy$a; a comp_514 boundingBox + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41149 method_41149 + m ()Lbpf; b comp_515 spawns + m (Lejy$a;Lbpf;)V + m ()V +c ejy$a net/minecraft/class_7061$class_7062 net/minecraft/world/level/levelgen/structure/StructureSpawnOverride$BoundingBoxType + f Lejy$a; a field_37199 PIECE + f Lejy$a; b field_37200 STRUCTURE + f Lcom/mojang/serialization/Codec; c field_37202 CODEC + f Ljava/lang/String; d field_37203 id + f [Lejy$a; e field_37204 $VALUES + m ()[Lejy$a; a method_41152 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ejz net/minecraft/class_3449 net/minecraft/world/level/levelgen/structure/StructureStart + f Ljava/lang/String; a field_31662 INVALID_START_ID + f Lejz; b field_16713 INVALID_START + f Lorg/slf4j/Logger; c field_37751 LOGGER + f Lejr; d field_16714 structure + f Lekg; e field_34940 pieceContainer + f Ldcd; f field_29070 chunkPos + f I g field_15326 references + f Lejj; h field_31663 cachedBoundingBox + m ()Lejj; a method_14969 getBoundingBox + m (Ldds;Lddq;Lduz;Layw;Lejj;Ldcd;)V a method_14974 placeInChunk + m (Lekh;Ldcd;)Lub; a method_14972 createTag + m (Lekh;Lub;J)Lejz; a method_41621 loadStaticStart + m ()Z b method_16657 isValid + m ()Ldcd; c method_34000 getChunkPos + m ()Z d method_14979 canBeReferenced + m ()V e method_14964 addReference + m ()I f method_23676 getReferences + m ()I g method_14970 getMaxReferences + m ()Lejr; h method_16656 getStructure + m ()Ljava/util/List; i method_14963 getPieces + m (Lejr;Ldcd;ILekg;)V + m ()V +c eka net/minecraft/class_7151 net/minecraft/world/level/levelgen/structure/StructureType + f Leka; a field_37752 BURIED_TREASURE + f Leka; b field_37753 DESERT_PYRAMID + f Leka; c field_37754 END_CITY + f Leka; d field_37755 FORTRESS + f Leka; e field_37756 IGLOO + f Leka; f field_37757 JIGSAW + f Leka; g field_37758 JUNGLE_TEMPLE + f Leka; h field_37759 MINESHAFT + f Leka; i field_37760 NETHER_FOSSIL + f Leka; j field_37761 OCEAN_MONUMENT + f Leka; k field_37762 OCEAN_RUIN + f Leka; l field_37763 RUINED_PORTAL + f Leka; m field_37764 SHIPWRECK + f Leka; n field_37765 STRONGHOLD + f Leka; o field_37766 SWAMP_HUT + f Leka; p field_37767 WOODLAND_MANSION + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_41622 method_41622 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Leka; a method_41623 register + m ()V +c ekb net/minecraft/class_3470 net/minecraft/world/level/levelgen/structure/TemplateStructurePiece + f Ljava/lang/String; a field_31664 templateName + f Lent; b field_15433 template + f Lenp; c field_15434 placeSettings + f Ljd; d field_15432 templatePosition + f Lorg/slf4j/Logger; h field_16586 LOGGER + m (Ljava/lang/String;Ljd;Lddl;Layw;Lejj;)V a method_15026 handleDataMarker + m ()Lakr; b method_35470 makeTemplateLocation + m ()Lent; c method_41624 template + m ()Ljd; d method_41625 templatePosition + m ()Lenp; e method_41626 placeSettings + m (Leki;ILenu;Lakr;Ljava/lang/String;Lenp;Ljd;)V + m (Leki;Lub;Lenu;Ljava/util/function/Function;)V + m ()V +c ekc net/minecraft/class_5847 net/minecraft/world/level/levelgen/structure/TerrainAdjustment + f Lekc; a field_28922 NONE + f Lekc; b field_28923 BURY + f Lekc; c field_38431 BEARD_THIN + f Lekc; d field_38432 BEARD_BOX + f Lekc; e field_51413 ENCAPSULATE + f Lcom/mojang/serialization/Codec; f field_38433 CODEC + f Ljava/lang/String; g field_38434 id + f [Lekc; h field_28925 $VALUES + m ()[Lekc; a method_36756 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ekd net/minecraft/class_6131 net/minecraft/world/level/levelgen/structure/package-info +c eke net/minecraft/class_6622 net/minecraft/world/level/levelgen/structure/pieces/PieceGenerator +c eke$a net/minecraft/class_6622$class_6623 net/minecraft/world/level/levelgen/structure/pieces/PieceGenerator$Context + f Leei; a comp_305 config + f Lduz; b comp_125 chunkGenerator + f Lenu; c comp_126 structureTemplateManager + f Ldcd; d comp_127 chunkPos + f Ldcy; e comp_129 heightAccessor + f Ldzx; f comp_130 random + f J g comp_131 seed + m ()Leei; a comp_305 config + m ()Lduz; b comp_125 chunkGenerator + m ()Lenu; c comp_126 structureTemplateManager + m ()Ldcd; d comp_127 chunkPos + m ()Ldcy; e comp_129 heightAccessor + m ()Ldzx; f comp_130 random + m ()J g comp_131 seed + m (Leei;Lduz;Lenu;Ldcd;Ldcy;Ldzx;J)V +c ekf net/minecraft/class_6834 net/minecraft/world/level/levelgen/structure/pieces/PieceGeneratorSupplier + m (Ldyy$a;Lekf$a;)Z a method_39844 method_39844 + m (Ljava/util/function/Predicate;Ljava/util/Optional;Lekf$a;)Ljava/util/Optional; a method_39845 method_39845 +c ekf$a net/minecraft/class_6834$class_6835 net/minecraft/world/level/levelgen/structure/pieces/PieceGeneratorSupplier$Context + f Lduz; a comp_306 chunkGenerator + f Ldea; b comp_307 biomeSource + f Ldzm; c comp_573 randomState + f J d comp_308 seed + f Ldcd; e comp_309 chunkPos + f Leei; f comp_310 config + f Ldcy; g comp_311 heightAccessor + f Ljava/util/function/Predicate; h comp_312 validBiome + f Lenu; i comp_313 structureTemplateManager + f Lka; j comp_314 registryAccess + m ()Lduz; a comp_306 chunkGenerator + m (Ldyy$a;)Z a method_39848 validBiomeOnTop + m ()Ldea; b comp_307 biomeSource + m ()Ldzm; c comp_573 randomState + m ()J d comp_308 seed + m ()Ldcd; e comp_309 chunkPos + m ()Leei; f comp_310 config + m ()Ldcy; g comp_311 heightAccessor + m ()Ljava/util/function/Predicate; h comp_312 validBiome + m ()Lenu; i comp_313 structureTemplateManager + m ()Lka; j comp_314 registryAccess + m (Lduz;Ldea;Ldzm;JLdcd;Leei;Ldcy;Ljava/util/function/Predicate;Lenu;Lka;)V +c ekg net/minecraft/class_6624 net/minecraft/world/level/levelgen/structure/pieces/PiecesContainer + f Ljava/util/List; a comp_132 pieces + f Lorg/slf4j/Logger; b field_34941 LOGGER + f Lakr; c field_34942 JIGSAW_RENAME + f Ljava/util/Map; d field_34943 RENAMES + m ()Z a method_38708 isEmpty + m (Lekh;)Luy; a method_38709 save + m (Ljd;)Z a method_38710 isInsidePiece + m (Luh;Lekh;)Lekg; a method_38711 load + m ()Lejj; b method_38712 calculateBoundingBox + m ()Ljava/util/List; c comp_132 pieces + m (Ljava/util/List;)V + m ()V +c ekh net/minecraft/class_6625 net/minecraft/world/level/levelgen/structure/pieces/StructurePieceSerializationContext + f Laue; a comp_133 resourceManager + f Lka; b comp_134 registryAccess + f Lenu; c comp_135 structureTemplateManager + m ()Laue; a comp_133 resourceManager + m (Laqu;)Lekh; a method_38713 fromLevel + m ()Lka; b comp_134 registryAccess + m ()Lenu; c comp_135 structureTemplateManager + m (Laue;Lka;Lenu;)V +c eki net/minecraft/class_3773 net/minecraft/world/level/levelgen/structure/pieces/StructurePieceType + f Leki; A field_16958 STRONGHOLD_RIGHT_TURN + f Leki; B field_16941 STRONGHOLD_ROOM_CROSSING + f Leki; C field_16904 STRONGHOLD_STAIRS_DOWN + f Leki; D field_16914 STRONGHOLD_START + f Leki; E field_16934 STRONGHOLD_STRAIGHT + f Leki; F field_16949 STRONGHOLD_STRAIGHT_STAIRS_DOWN + f Leki; G field_16953 JUNGLE_PYRAMID_PIECE + f Leki; H field_16932 OCEAN_RUIN + f Leki; I field_16909 IGLOO + f Leki; J field_24010 RUINED_PORTAL + f Leki; K field_16918 SWAMPLAND_HUT + f Leki; L field_16933 DESERT_PYRAMID_PIECE + f Leki; M field_16922 OCEAN_MONUMENT_BUILDING + f Leki; N field_16911 OCEAN_MONUMENT_CORE_ROOM + f Leki; O field_16963 OCEAN_MONUMENT_DOUBLE_X_ROOM + f Leki; P field_16927 OCEAN_MONUMENT_DOUBLE_XY_ROOM + f Leki; Q field_16946 OCEAN_MONUMENT_DOUBLE_Y_ROOM + f Leki; R field_16970 OCEAN_MONUMENT_DOUBLE_YZ_ROOM + f Leki; S field_16925 OCEAN_MONUMENT_DOUBLE_Z_ROOM + f Leki; T field_16905 OCEAN_MONUMENT_ENTRY_ROOM + f Leki; U field_16966 OCEAN_MONUMENT_PENTHOUSE + f Leki; V field_16928 OCEAN_MONUMENT_SIMPLE_ROOM + f Leki; W field_16944 OCEAN_MONUMENT_SIMPLE_TOP_ROOM + f Leki; X field_16957 OCEAN_MONUMENT_WING_ROOM + f Leki; Y field_16936 END_CITY_PIECE + f Leki; Z field_16907 WOODLAND_MANSION_PIECE + f Leki; a field_16969 MINE_SHAFT_CORRIDOR + f Leki; aa field_16960 BURIED_TREASURE_PIECE + f Leki; ab field_16935 SHIPWRECK_PIECE + f Leki; ac field_22195 NETHER_FOSSIL + f Leki; ad field_25840 JIGSAW + f Leki; b field_16919 MINE_SHAFT_CROSSING + f Leki; c field_16915 MINE_SHAFT_ROOM + f Leki; d field_16968 MINE_SHAFT_STAIRS + f Leki; e field_16926 NETHER_FORTRESS_BRIDGE_CROSSING + f Leki; f field_16903 NETHER_FORTRESS_BRIDGE_END_FILLER + f Leki; g field_16917 NETHER_FORTRESS_BRIDGE_STRAIGHT + f Leki; h field_16930 NETHER_FORTRESS_CASTLE_CORRIDOR_STAIRS + f Leki; i field_16943 NETHER_FORTRESS_CASTLE_CORRIDOR_T_BALCONY + f Leki; j field_16952 NETHER_FORTRESS_CASTLE_ENTRANCE + f Leki; k field_16929 NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_CROSSING + f Leki; l field_16962 NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_LEFT_TURN + f Leki; m field_16921 NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR + f Leki; n field_16945 NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_RIGHT_TURN + f Leki; o field_16961 NETHER_FORTRESS_CASTLE_STALK_ROOM + f Leki; p field_16931 NETHER_FORTRESS_MONSTER_THRONE + f Leki; q field_16908 NETHER_FORTRESS_ROOM_CROSSING + f Leki; r field_16967 NETHER_FORTRESS_STAIRS_ROOM + f Leki; s field_16924 NETHER_FORTRESS_START + f Leki; t field_16955 STRONGHOLD_CHEST_CORRIDOR + f Leki; u field_16965 STRONGHOLD_FILLER_CORRIDOR + f Leki; v field_16937 STRONGHOLD_FIVE_CROSSING + f Leki; w field_16906 STRONGHOLD_LEFT_TURN + f Leki; x field_16959 STRONGHOLD_LIBRARY + f Leki; y field_16939 STRONGHOLD_PORTAL_ROOM + f Leki; z field_16948 STRONGHOLD_PRISON_HALL + m (Leki$a;Ljava/lang/String;)Leki; a method_16813 setPieceId + m (Leki$b;Ljava/lang/String;)Leki; a method_38691 setTemplatePieceId + m (Leki;Ljava/lang/String;)Leki; a method_38692 setFullContextPieceId + m ()V +c eki$a net/minecraft/class_3773$class_6615 net/minecraft/world/level/levelgen/structure/pieces/StructurePieceType$ContextlessType +c eki$b net/minecraft/class_3773$class_6616 net/minecraft/world/level/levelgen/structure/pieces/StructurePieceType$StructureTemplateType +c ekj net/minecraft/class_6626 net/minecraft/world/level/levelgen/structure/pieces/StructurePiecesBuilder + f Ljava/util/List; a field_34944 pieces + m ()Lekg; a method_38714 build + m (I)V a method_38715 offsetPiecesVertically + m (IILayw;I)I a method_38716 moveBelowSeaLevel + m (Layw;II)V a method_38718 moveInsideHeights + m ()V b method_38719 clear + m ()Z c method_38720 isEmpty + m ()Lejj; d method_38721 getBoundingBox + m ()V +c ekk net/minecraft/class_6627 net/minecraft/world/level/levelgen/structure/pieces/package-info +c ekl net/minecraft/class_6871 net/minecraft/world/level/levelgen/structure/placement/ConcentricRingsStructurePlacement + f Lcom/mojang/serialization/MapCodec; a field_36419 CODEC + f I c field_37768 distance + f I d field_37769 spread + f I e field_37770 count + f Ljq; f field_37771 preferredBiomes + m ()I a method_41627 distance + m ()I b method_41628 spread + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P9; b method_41629 codec + m ()I c method_41630 count + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_40167 method_40167 + m ()Ljq; d method_41631 preferredBiomes + m (Lkh;Leko$c;FILjava/util/Optional;IIILjq;)V + m (IIILjq;)V + m ()V +c ekm net/minecraft/class_6872 net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement + f Lcom/mojang/serialization/MapCodec; a field_36420 CODEC + f I c field_37772 spacing + f I d field_37773 separation + f Lekn; e field_37774 spreadType + m ()I a method_41632 spacing + m (JII)Ldcd; a method_40169 getPotentialStructureChunk + m (Lekm;)Lcom/mojang/serialization/DataResult; a method_51720 validate + m ()I b method_41633 separation + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_40170 method_40170 + m ()Lekn; c method_41634 spreadType + m ()Ljava/lang/String; d method_51721 method_51721 + m (Lkh;Leko$c;FILjava/util/Optional;IILekn;)V + m (IILekn;I)V + m ()V +c ekn net/minecraft/class_6873 net/minecraft/world/level/levelgen/structure/placement/RandomSpreadType + f Lekn; a field_36421 LINEAR + f Lekn; b field_36422 TRIANGULAR + f Lcom/mojang/serialization/Codec; c field_36423 CODEC + f Ljava/lang/String; d field_36425 id + f [Lekn; e field_36426 $VALUES + m ()[Lekn; a method_40175 $values + m (Layw;I)I a method_40173 evaluate + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c eko net/minecraft/class_6874 net/minecraft/world/level/levelgen/structure/placement/StructurePlacement + f I a field_37775 HIGHLY_ARBITRARY_RANDOM_SALT + f Lcom/mojang/serialization/Codec; b field_36428 CODEC + f Lkh; c field_37776 locateOffset + f Leko$c; d field_37777 frequencyReductionMethod + f F e field_37778 frequency + f I f field_37779 salt + f Ljava/util/Optional; g field_37780 exclusionZone + m (IIJ)Z a method_56575 applyAdditionalChunkRestrictions + m (JIIIF)Z a method_41635 probabilityReducer + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P5; a method_41637 placementCodec + m (Ldcd;)Ljd; a method_41636 getLocatePos + m (Ldva;II)Z a method_40168 isPlacementChunk + m (JIIIF)Z b method_41638 legacyProbabilityReducerWithDouble + m (Ldva;II)Z b method_41639 isStructureChunk + m (JIIIF)Z c method_41640 legacyArbitrarySaltProbabilityReducer + m (Ldva;II)Z c method_56576 applyInteractionsWithOtherStructures + m (JIIIF)Z d method_41641 legacyPillagerOutpostReducer + m ()Lekp; e method_40166 type + m ()Lkh; f method_41642 locateOffset + m ()Leko$c; g method_41643 frequencyReductionMethod + m ()F h method_41644 frequency + m ()I i method_41645 salt + m ()Ljava/util/Optional; j method_41646 exclusionZone + m (Lkh;Leko$c;FILjava/util/Optional;)V + m ()V +c eko$a net/minecraft/class_6874$class_7152 net/minecraft/world/level/levelgen/structure/placement/StructurePlacement$ExclusionZone + f Lcom/mojang/serialization/Codec; a field_37781 CODEC + f Ljm; b comp_574 otherSet + f I c comp_575 chunkCount + m ()Ljm; a comp_574 otherSet + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41647 method_41647 + m (Ldva;II)Z a method_41648 isPlacementForbidden + m ()I b comp_575 chunkCount + m (Ljm;I)V + m ()V +c eko$b net/minecraft/class_6874$class_7153 net/minecraft/world/level/levelgen/structure/placement/StructurePlacement$FrequencyReducer +c eko$c net/minecraft/class_6874$class_7154 net/minecraft/world/level/levelgen/structure/placement/StructurePlacement$FrequencyReductionMethod + f Leko$c; a field_37782 DEFAULT + f Leko$c; b field_37783 LEGACY_TYPE_1 + f Leko$c; c field_37784 LEGACY_TYPE_2 + f Leko$c; d field_37785 LEGACY_TYPE_3 + f Lcom/mojang/serialization/Codec; e field_37786 CODEC + f Ljava/lang/String; f field_37787 name + f Leko$b; g field_37788 reducer + f [Leko$c; h field_37789 $VALUES + m ()[Leko$c; a method_41649 $values + m (JIIIF)Z a method_41650 shouldGenerate + m (Ljava/lang/String;ILjava/lang/String;Leko$b;)V + m ()V +c ekp net/minecraft/class_6875 net/minecraft/world/level/levelgen/structure/placement/StructurePlacementType + f Lekp; a field_36429 RANDOM_SPREAD + f Lekp; b field_36430 CONCENTRIC_RINGS + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_40176 method_40176 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lekp; a method_40177 register + m ()V +c ekq net/minecraft/class_6876 net/minecraft/world/level/levelgen/structure/placement/package-info +c ekr net/minecraft/class_9778 net/minecraft/world/level/levelgen/structure/pools/DimensionPadding + f Lcom/mojang/serialization/Codec; a field_51952 CODEC + f Lekr; b field_51953 ZERO + f I c comp_2818 bottom + f I d comp_2819 top + f Lcom/mojang/serialization/Codec; e field_51954 RECORD_CODEC + m ()Z a method_60629 hasEqualTopAndBottom + m (Lcom/mojang/datafixers/util/Either;)Lekr; a method_60630 method_60630 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60631 method_60631 + m (Lekr;)Lcom/mojang/datafixers/util/Either; a method_60632 method_60632 + m ()I b comp_2818 bottom + m (Lekr;)Ljava/lang/Integer; b method_60633 method_60633 + m ()I c comp_2819 top + m (Lekr;)Ljava/lang/Integer; c method_60634 method_60634 + m (I)V + m (II)V + m ()V +c eks net/minecraft/class_3777 net/minecraft/world/level/levelgen/structure/pools/EmptyPoolElement + f Lcom/mojang/serialization/MapCodec; a field_24947 CODEC + f Leks; b field_16663 INSTANCE + m ()Leks; b method_28870 method_28870 + m ()V + m ()V +c ekt net/minecraft/class_3776 net/minecraft/world/level/levelgen/structure/pools/FeaturePoolElement + f Lcom/mojang/serialization/MapCodec; a field_24948 CODEC + f Ljm; b field_16661 feature + f Lub; c field_16662 defaultJigsawNBT + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28871 method_28871 + m (Lekt;)Ljm; a method_28872 method_28872 + m ()Lub; b method_19299 fillDefaultJigsawNBT + m (Ljm;Lelb$a;)V + m ()V +c eku net/minecraft/class_3780 net/minecraft/world/level/levelgen/structure/pools/JigsawJunction + f I a field_16670 sourceX + f I b field_16669 sourceGroundY + f I c field_16668 sourceZ + f I d field_16667 deltaY + f Lelb$a; e field_16671 destProjection + m ()I a method_16610 getSourceX + m (Lcom/mojang/serialization/Dynamic;)Leku; a method_28873 deserialize + m (Lcom/mojang/serialization/DynamicOps;)Lcom/mojang/serialization/Dynamic; a method_16612 serialize + m ()I b method_16611 getSourceGroundY + m ()I c method_16609 getSourceZ + m ()I d method_35367 getDeltaY + m ()Lelb$a; e method_35368 getDestProjection + m (IIIILelb$a;)V +c ekv net/minecraft/class_3778 net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement + f Lorg/slf4j/Logger; a field_16665 LOGGER + m (Lakq;)Ljava/lang/String; a method_45548 method_45548 + m (Laqu;Ljm;Lakr;ILjd;Z)Z a method_43729 generateJigsaw + m (Ldzm;IZLduz;Lenu;Ldcy;Layw;Ljz;Lejn;Ljava/util/List;Lexv;Lelf;Lend;)V a method_27230 addPieces + m (Lejn;IIIILdcy;Lekr;ILejj;Lejr$a;ZLduz;Lenu;Ldzx;Ljz;Lelf;Lend;Lekj;)V a method_39824 method_39824 + m (Lejr$a;Ljm;Ljava/util/Optional;ILjd;ZLjava/util/Optional;ILelf;Lekr;Lend;)Ljava/util/Optional; a method_30419 addPieces + m (Lekz;Lakr;Ljd;Ldmm;Lenu;Ldzx;)Ljava/util/Optional; a method_43566 getRandomNamedJigsaw + m (Lent$c;)Ljava/lang/String; a method_54496 method_54496 + m (Ljm;)Z a method_43730 method_43730 + m (Ljz;Lelf;Lakq;)Ljava/util/Optional; a method_55604 method_55604 + m ()V + m ()V +c ekv$a net/minecraft/class_3778$class_4181 net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement$PieceState + f Lejn; a comp_2017 piece + f Lorg/apache/commons/lang3/mutable/MutableObject; b comp_2018 free + f I c comp_2019 depth + m ()Lejn; a comp_2017 piece + m ()Lorg/apache/commons/lang3/mutable/MutableObject; b comp_2018 free + m ()I c comp_2019 depth + m (Lejn;Lorg/apache/commons/lang3/mutable/MutableObject;I)V +c ekv$b net/minecraft/class_3778$class_4182 net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement$Placer + f Ljz; a field_25852 pools + f I b field_18700 maxDepth + f Lduz; c field_18702 chunkGenerator + f Lenu; d field_18703 structureTemplateManager + f Ljava/util/List; e field_18704 pieces + f Layw; f field_18705 random + f Layz; g field_18706 placing + m (Lakq;)Ljava/lang/String; a method_46730 method_46730 + m (Lejj;Lelf;Lent$c;)I a method_19305 method_19305 + m (Lejn;Lorg/apache/commons/lang3/mutable/MutableObject;IZLdcy;Ldzm;Lelf;Lend;)V a method_19306 tryPlacingChildren + m (Lent$c;)Ljava/lang/String; a method_54497 method_54497 + m (Lent$c;Lelf;)Lakq; a method_54498 readPoolKey + m (Ljm;)Ljava/lang/Integer; a method_31113 method_31113 + m (Ljm;)Ljava/lang/Integer; b method_31114 method_31114 + m (Ljm;)Ljm; c method_31115 method_31115 + m (Ljz;ILduz;Lenu;Ljava/util/List;Layw;)V +c ekw net/minecraft/class_5188 net/minecraft/world/level/levelgen/structure/pools/LegacySinglePoolElement + f Lcom/mojang/serialization/MapCodec; a field_24949 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28874 method_28874 + m (Lcom/mojang/datafixers/util/Either;Ljm;Lelb$a;Ljava/util/Optional;)V + m ()V +c ekx net/minecraft/class_3782 net/minecraft/world/level/levelgen/structure/pools/ListPoolElement + f Lcom/mojang/serialization/MapCodec; a field_24950 CODEC + f Ljava/util/List; b field_16676 elements + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28875 method_28875 + m (Lekx;)Ljava/util/List; a method_28876 method_28876 + m (Lekz;)Z a method_35369 method_35369 + m (Lelb$a;Lekz;)V a method_16620 method_16620 + m (Lenu;Ljd;Ldmm;Lekz;)Lejj; a method_35370 method_35370 + m ()Ljava/lang/IllegalStateException; b method_35371 method_35371 + m (Lelb$a;)V b method_19307 setProjectionOnEachElement + m (Ljava/util/List;Lelb$a;)V + m ()V +c eky net/minecraft/class_3781 net/minecraft/world/level/levelgen/structure/pools/SinglePoolElement + f Lcom/mojang/serialization/Codec; a field_24951 TEMPLATE_CODEC + f Lcom/mojang/serialization/MapCodec; b field_24952 CODEC + f Lcom/mojang/datafixers/util/Either; c field_24015 template + f Ljm; d field_16674 processors + f Ljava/util/Optional; e field_52234 overrideLiquidSettings + m (Lcom/mojang/datafixers/util/Either;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; a method_28877 encodeTemplate + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28878 method_28878 + m (Ldmm;Lejj;Lend;Z)Lenp; a method_16616 getSettings + m (Leky;)Lcom/mojang/datafixers/util/Either; a method_28879 method_28879 + m (Lent$c;)I a method_54781 method_54781 + m (Lenu;)Lent; a method_27233 getTemplate + m (Lenu;Ljd;Ldmm;Z)Ljava/util/List; a method_16614 getDataMarkers + m (Ljava/util/List;)V a method_54782 sortBySelectionPriority + m (Lub;)Ljava/lang/Integer; a method_54783 method_54783 + m ()Lcom/mojang/serialization/codecs/RecordCodecBuilder; b method_28880 processorsCodec + m (Leky;)Ljava/util/Optional; b method_61012 method_61012 + m ()Lcom/mojang/serialization/codecs/RecordCodecBuilder; c method_61013 overrideLiquidSettingsCodec + m (Leky;)Ljm; c method_28881 method_28881 + m ()Lcom/mojang/serialization/codecs/RecordCodecBuilder; d method_28882 templateCodec + m ()Ljava/lang/String; i method_49540 method_49540 + m (Lcom/mojang/datafixers/util/Either;Ljm;Lelb$a;Ljava/util/Optional;)V + m ()V +c ekz net/minecraft/class_3784 net/minecraft/world/level/levelgen/structure/pools/StructurePoolElement + f Ljm; a field_40924 EMPTY + f Lelb$a; b field_16862 projection + f Lcom/mojang/serialization/Codec; f field_24953 CODEC + m ()Lela; a method_16757 getType + m (Ldcx;Lent$c;Ljd;Ldmm;Layw;Lejj;)V a method_16756 handleDataMarker + m (Lelb$a;)Lekz; a method_16622 setProjection + m (Lelb$a;Ljava/util/function/Function;)Lekz; a method_30424 method_30424 + m (Lenu;Ldds;Lddq;Lduz;Ljd;Ljd;Ldmm;Lejj;Layw;Lend;Z)Z a method_16626 place + m (Lenu;Ldmm;)Lkh; a method_16601 getSize + m (Lenu;Ljd;Ldmm;)Lejj; a method_16628 getBoundingBox + m (Lenu;Ljd;Ldmm;Layw;)Ljava/util/List; a method_16627 getShuffledJigsawBlocks + m (Ljava/lang/String;)Ljava/util/function/Function; a method_30425 legacy + m (Ljava/lang/String;Lelb$a;)Leky; a method_30428 method_30428 + m (Ljava/lang/String;Lend;)Ljava/util/function/Function; a method_61014 single + m (Ljava/lang/String;Lend;Lelb$a;)Leky; a method_61015 method_61015 + m (Ljava/lang/String;Ljm;)Ljava/util/function/Function; a method_30426 legacy + m (Ljava/lang/String;Ljm;Lelb$a;)Leky; a method_30427 method_30427 + m (Ljava/lang/String;Ljm;Lend;)Ljava/util/function/Function; a method_61016 single + m (Ljava/lang/String;Ljm;Lend;Lelb$a;)Leky; a method_61017 method_61017 + m (Ljava/util/List;Lelb$a;)Lekx; a method_30430 method_30430 + m (Ljm;)Ljava/util/function/Function; a method_30421 feature + m (Ljm;Lelb$a;)Lekt; a method_30422 method_30422 + m (Lelb$a;)Leks; b method_30433 method_30433 + m (Ljava/lang/String;)Ljava/util/function/Function; b method_30434 single + m (Ljava/lang/String;Lelb$a;)Lekw; b method_40165 method_40165 + m (Ljava/lang/String;Ljm;)Ljava/util/function/Function; b method_30435 single + m (Ljava/lang/String;Ljm;Lelb$a;)Lekw; b method_30437 method_30437 + m (Ljava/util/List;)Ljava/util/function/Function; b method_30429 list + m ()Lcom/mojang/serialization/codecs/RecordCodecBuilder; e method_28883 projectionCodec + m ()Lelb$a; f method_16624 getProjection + m ()I g method_19308 getGroundLevelDelta + m ()Ljava/util/function/Function; h method_30438 empty + m (Lelb$a;)V + m ()V +c ela net/minecraft/class_3816 net/minecraft/world/level/levelgen/structure/pools/StructurePoolElementType + f Lela; a field_16973 SINGLE + f Lela; b field_16974 LIST + f Lela; c field_16971 FEATURE + f Lela; d field_16972 EMPTY + f Lela; e field_24016 LEGACY + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_28884 method_28884 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lela; a method_28885 register + m ()V +c elb net/minecraft/class_3785 net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool + f Lcom/mojang/serialization/Codec; a field_25853 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_24954 CODEC + f I c field_31523 SIZE_UNSET + f Lorg/apache/commons/lang3/mutable/MutableObject; d field_40925 CODEC_REFERENCE + f Ljava/util/List; e field_16864 rawTemplates + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; f field_16680 templates + f Ljm; g field_40926 fallback + f I h field_18707 maxSize + m ()Ljm; a method_46736 getFallback + m (Layw;)Lekz; a method_16631 getRandomTemplate + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28886 method_28886 + m (Lekz;)Z a method_35372 method_35372 + m (Lelb;)Ljava/util/List; a method_28888 method_28888 + m (Lenu;)I a method_19309 getMaxSize + m (Lenu;Lekz;)I a method_19310 method_19310 + m ()I b method_16632 size + m (Layw;)Ljava/util/List; b method_16633 getShuffledTemplates + m (Ljm;Ljava/util/List;)V + m (Ljm;Ljava/util/List;Lelb$a;)V + m ()V +c elb$a net/minecraft/class_3785$class_3786 net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool$Projection + f Lelb$a; a field_16686 TERRAIN_MATCHING + f Lelb$a; b field_16687 RIGID + f Lazk$a; c field_24956 CODEC + f Ljava/lang/String; d field_16682 name + f Lcom/google/common/collect/ImmutableList; e field_16685 processors + f [Lelb$a; f field_16683 $VALUES + m ()Ljava/lang/String; a method_16635 getName + m (Ljava/lang/String;)Lelb$a; a method_16638 byName + m ()Lcom/google/common/collect/ImmutableList; b method_16636 getProcessors + m ()[Lelb$a; d method_36758 $values + m (Ljava/lang/String;ILjava/lang/String;Lcom/google/common/collect/ImmutableList;)V + m ()V +c elc net/minecraft/class_8888 net/minecraft/world/level/levelgen/structure/pools/alias/Direct + f Lcom/mojang/serialization/MapCodec; a field_46824 CODEC + f Lakq; c comp_2003 alias + f Lakq; d comp_2004 target + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54501 method_54501 + m ()Lakq; c comp_2003 alias + m ()Lakq; d comp_2004 target + m (Lakq;Lakq;)V + m ()V +c eld net/minecraft/class_8889 net/minecraft/world/level/levelgen/structure/pools/alias/PoolAliasBinding + f Lcom/mojang/serialization/Codec; b field_46825 CODEC + m ()Ljava/util/stream/Stream; a method_54499 allTargets + m (Lakq;Lakq;)Lelc; a method_54503 direct + m (Lakq;Lbpb;)Lelg; a method_54504 random + m (Layw;Ljava/util/function/BiConsumer;)V a method_54500 forEachResolved + m (Lbpb$a;Lbpd$b;)V a method_54505 method_54505 + m (Lbpb;)Lelh; a method_54506 randomGroup + m (Ljava/lang/String;Lbpb;)Lelg; a method_54507 random + m (Ljava/lang/String;Ljava/lang/String;)Lelc; a method_54508 direct + m ()Lcom/mojang/serialization/MapCodec; b method_54502 codec + m ()V +c ele net/minecraft/class_8890 net/minecraft/world/level/levelgen/structure/pools/alias/PoolAliasBindings + m (Lakq;)Ljava/lang/String; a method_55227 method_55227 + m (Ljz;)Lcom/mojang/serialization/MapCodec; a method_54509 bootstrap + m (Lqq;Ljm;Ljava/lang/String;)V a method_55228 method_55228 + m (Lqq;Ljm;Ljava/util/List;)V a method_55229 registerTargetsAsPools + m ()V +c elf net/minecraft/class_8891 net/minecraft/world/level/levelgen/structure/pools/alias/PoolAliasLookup + f Lelf; a field_46826 EMPTY + m (Lakq;)Ljava/lang/String; a method_54510 method_54510 + m (Layw;Lcom/google/common/collect/ImmutableMap$Builder;Leld;)V a method_54511 method_54511 + m (Ljava/util/Map;Lakq;)Lakq; a method_54512 method_54512 + m (Lakq;)Lakq; b method_54513 method_54513 + m ()V +c elg net/minecraft/class_8892 net/minecraft/world/level/levelgen/structure/pools/alias/Random + f Lcom/mojang/serialization/MapCodec; a field_46827 CODEC + f Lakq; c comp_2005 alias + f Lbpb; d comp_2006 targets + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54514 method_54514 + m (Ljava/util/function/BiConsumer;Lbpd$b;)V a method_54515 method_54515 + m ()Lakq; c comp_2005 alias + m ()Lbpb; d comp_2006 targets + m (Lakq;Lbpb;)V + m ()V +c elh net/minecraft/class_8893 net/minecraft/world/level/levelgen/structure/pools/alias/RandomGroup + f Lcom/mojang/serialization/MapCodec; a field_46828 CODEC + f Lbpb; c comp_2007 groups + m (Layw;Ljava/util/function/BiConsumer;Lbpd$b;)V a method_54516 method_54516 + m (Layw;Ljava/util/function/BiConsumer;Leld;)V a method_54517 method_54517 + m (Lbpd$b;)Ljava/util/stream/Stream; a method_54518 method_54518 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_54519 method_54519 + m ()Lbpb; c comp_2007 groups + m (Lbpb;)V + m ()V +c eli net/minecraft/class_8894 net/minecraft/world/level/levelgen/structure/pools/alias/package-info +c elj net/minecraft/class_6116 net/minecraft/world/level/levelgen/structure/pools/package-info +c elk net/minecraft/class_3789 net/minecraft/world/level/levelgen/structure/structures/BuriedTreasurePieces + m ()V +c elk$a net/minecraft/class_3789$class_3339 net/minecraft/world/level/levelgen/structure/structures/BuriedTreasurePieces$BuriedTreasurePiece + m (Ldtc;)Z b method_14655 isLiquid + m (Ljd;)V + m (Lub;)V +c ell net/minecraft/class_2956 net/minecraft/world/level/levelgen/structure/structures/BuriedTreasureStructure + f Lcom/mojang/serialization/MapCodec; d field_37790 CODEC + m (Lejr$a;Lekj;)V a method_41652 method_41652 + m (Lekj;Lejr$a;)V a method_38672 generatePieces + m (Lejr$c;)V + m ()V +c elm net/minecraft/class_3346 net/minecraft/world/level/levelgen/structure/structures/DesertPyramidPiece + f I h field_34725 WIDTH + f I i field_34726 DEPTH + f [Z j field_14397 hasPlacedChest + f Ljava/util/List; k field_42856 potentialSuspiciousSandWorldPositions + f Ljd; l field_44482 randomCollapsedRoofPos + m (IIIIII)V a method_49263 placeSandBox + m (Ldds;IIILejj;)V a method_49260 placeCollapsedRoofPiece + m (Ldds;Lejj;)V a method_49261 addCellar + m (Ldds;Lejj;IIIII)V a method_49262 placeCollapsedRoof + m (Ljd;Ldds;Lejj;)V a method_49264 addCellarStairs + m ()Ljava/util/List; b method_49265 getPotentialSuspiciousSandWorldPositions + m (Ljd;Ldds;Lejj;)V b method_49266 addCellarRoom + m ()Ljd; c method_51180 getRandomCollapsedRoofPos + m (III)V c method_49259 placeSand + m (Layw;II)V + m (Lub;)V +c eln net/minecraft/class_3006 net/minecraft/world/level/levelgen/structure/structures/DesertPyramidStructure + f Lcom/mojang/serialization/MapCodec; d field_37791 CODEC + m (Lejj;Ldds;Ljd;)V a method_51181 placeSuspiciousSand + m (Ljd;Ldql;)V a method_51182 method_51182 + m (Lejr$c;)V + m ()V +c elo net/minecraft/class_3342 net/minecraft/world/level/levelgen/structure/structures/EndCityPieces + f I a field_31549 MAX_GEN_DEPTH + f Lelo$b; b field_14390 HOUSE_TOWER_GENERATOR + f Ljava/util/List; c field_14385 TOWER_BRIDGES + f Lelo$b; d field_14386 TOWER_GENERATOR + f Lelo$b; e field_14387 TOWER_BRIDGE_GENERATOR + f Ljava/util/List; f field_14388 FAT_TOWER_BRIDGES + f Lelo$b; g field_14384 FAT_TOWER_GENERATOR + m (Lenu;Lelo$a;Ljd;Ljava/lang/String;Ldmm;Z)Lelo$a; a method_14684 addPiece + m (Lenu;Lelo$b;ILelo$a;Ljd;Ljava/util/List;Layw;)Z a method_14673 recursiveChildren + m (Lenu;Ljd;Ldmm;Ljava/util/List;Layw;)V a method_14679 startHouseTower + m (Ljava/util/List;Lelo$a;)Lelo$a; a method_14681 addHelper + m ()V + m ()V +c elo$1 net/minecraft/class_3342$1 net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$1 + m ()V +c elo$2 net/minecraft/class_3342$2 net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$2 + m ()V +c elo$3 net/minecraft/class_3342$3 net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$3 + f Z a field_14394 shipCreated + m ()V +c elo$4 net/minecraft/class_3342$4 net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$4 + m ()V +c elo$a net/minecraft/class_3342$class_3343 net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$EndCityPiece + m (Ljava/lang/String;)Lakr; a method_35425 makeResourceLocation + m (Lub;Lakr;)Lenp; a method_35426 method_35426 + m (ZLdmm;)Lenp; a method_35427 makeSettings + m (Lenu;Ljava/lang/String;Ljd;Ldmm;Z)V + m (Lenu;Lub;)V +c elo$b net/minecraft/class_3342$class_3344 net/minecraft/world/level/levelgen/structure/structures/EndCityPieces$SectionGenerator + m ()V a method_14688 init + m (Lenu;ILelo$a;Ljd;Ljava/util/List;Layw;)Z a method_14687 generate +c elp net/minecraft/class_3021 net/minecraft/world/level/levelgen/structure/structures/EndCityStructure + f Lcom/mojang/serialization/MapCodec; d field_37792 CODEC + m (Lekj;Ljd;Ldmm;Lejr$a;)V a method_39817 generatePieces + m (Ljd;Ldmm;Lejr$a;Lekj;)V a method_41655 method_41655 + m (Lejr$c;)V + m ()V +c elq net/minecraft/class_3351 net/minecraft/world/level/levelgen/structure/structures/IglooPieces + f I a field_31550 GENERATION_HEIGHT + f Lakr; b field_14409 STRUCTURE_LOCATION_IGLOO + f Lakr; c field_14407 STRUCTURE_LOCATION_LADDER + f Lakr; d field_14410 STRUCTURE_LOCATION_LABORATORY + f Ljava/util/Map; e field_14408 PIVOTS + f Ljava/util/Map; f field_14406 OFFSETS + m (Lenu;Ljd;Ldmm;Lejw;Layw;)V a method_14705 addPieces + m ()V + m ()V +c elq$a net/minecraft/class_3351$class_3352 net/minecraft/world/level/levelgen/structure/structures/IglooPieces$IglooPiece + m (Lakr;Ljd;I)Ljd; a method_35430 makePosition + m (Ldmm;Lakr;)Lenp; a method_35428 makeSettings + m (Lub;Lakr;)Lenp; a method_35429 method_35429 + m (Lenu;Lakr;Ljd;Ldmm;I)V + m (Lenu;Lub;)V +c elr net/minecraft/class_3071 net/minecraft/world/level/levelgen/structure/structures/IglooStructure + f Lcom/mojang/serialization/MapCodec; d field_37793 CODEC + m (Lejr$a;Lekj;)V a method_41657 method_41657 + m (Lekj;Lejr$a;)V a method_38675 generatePieces + m (Lejr$c;)V + m ()V +c els net/minecraft/class_5434 net/minecraft/world/level/levelgen/structure/structures/JigsawStructure + f Lekr; d field_51911 DEFAULT_DIMENSION_PADDING + f Lend; e field_52235 DEFAULT_LIQUID_SETTINGS + f I f field_38435 MAX_TOTAL_STRUCTURE_RANGE + f I g field_49155 MIN_DEPTH + f I h field_47412 MAX_DEPTH + f Lcom/mojang/serialization/MapCodec; i field_37794 CODEC + f Ljm; j field_37795 startPool + f Ljava/util/Optional; k field_39059 startJigsawName + f I l field_37796 maxDepth + f Lehx; m field_37797 startHeight + f Z n field_37798 useExpansionHack + f Ljava/util/Optional; o field_37799 projectStartToHeightmap + f I p field_38268 maxDistanceFromCenter + f Ljava/util/List; q field_46829 poolAliases + f Lekr; r field_51912 dimensionPadding + f Lend; s field_52236 liquidSettings + m (Lels;)Lcom/mojang/serialization/DataResult; a method_42708 verifyRange + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_41662 method_41662 + m (Lels;)Lend; b method_61018 method_61018 + m (Lels;)Lekr; c method_60567 method_60567 + m (Lels;)Ljava/util/List; d method_54520 method_54520 + m (Lels;)Ljava/lang/Integer; e method_42704 method_42704 + m ()Ljava/lang/String; f method_49541 method_49541 + m (Lels;)Ljava/util/Optional; f method_42705 method_42705 + m (Lels;)Ljava/lang/Boolean; g method_42706 method_42706 + m (Lels;)Lehx; h method_42707 method_42707 + m (Lels;)Ljava/lang/Integer; i method_42709 method_42709 + m (Lels;)Ljava/util/Optional; j method_43567 method_43567 + m (Lels;)Ljm; k method_42710 method_42710 + m (Lejr$c;Ljm;Ljava/util/Optional;ILehx;ZLjava/util/Optional;ILjava/util/List;Lekr;Lend;)V + m (Lejr$c;Ljm;ILehx;ZLdyy$a;)V + m (Lejr$c;Ljm;ILehx;Z)V + m ()V +c els$1 net/minecraft/class_5434$1 net/minecraft/world/level/levelgen/structure/structures/JigsawStructure$1 + f [I a field_38436 $SwitchMap$net$minecraft$world$level$levelgen$structure$TerrainAdjustment + m ()V +c elt net/minecraft/class_3348 net/minecraft/world/level/levelgen/structure/structures/JungleTemplePiece + f I h field_34727 WIDTH + f I i field_34728 DEPTH + f Z j field_14402 placedMainChest + f Z k field_14401 placedHiddenChest + f Z l field_14400 placedTrap1 + f Z m field_14399 placedTrap2 + f Lelt$a; n field_14403 STONE_SELECTOR + m (Layw;II)V + m (Lub;)V + m ()V +c elt$a net/minecraft/class_3348$class_3349 net/minecraft/world/level/levelgen/structure/structures/JungleTemplePiece$MossStoneSelector + m ()V +c elu net/minecraft/class_3076 net/minecraft/world/level/levelgen/structure/structures/JungleTempleStructure + f Lcom/mojang/serialization/MapCodec; d field_37800 CODEC + m (Lejr$c;)V + m ()V +c elv net/minecraft/class_3353 net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces + f I a field_34729 MAGIC_START_Y + f Lorg/slf4j/Logger; b field_29326 LOGGER + f I c field_31551 DEFAULT_SHAFT_WIDTH + f I d field_31552 DEFAULT_SHAFT_HEIGHT + f I e field_31553 DEFAULT_SHAFT_LENGTH + f I f field_31554 MAX_PILLAR_HEIGHT + f I g field_31555 MAX_CHAIN_HEIGHT + f I h field_31556 MAX_DEPTH + m (Lejv;Lejw;Layw;IIILji;I)Lelv$c; a method_14711 generateAndAddPiece + m (Lejw;Layw;IIILji;ILelw$a;)Lelv$c; a method_14712 createRandomShaftPiece + m ()V + m ()V +c elv$1 net/minecraft/class_3353$1 net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces$1 + f [I a field_14417 $SwitchMap$net$minecraft$core$Direction + m ()V +c elv$a net/minecraft/class_3353$class_3354 net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces$MineShaftCorridor + f Z b field_14416 hasRails + f Z c field_14415 spiderCorridor + f Z d field_14414 hasPlacedSpider + f I h field_14413 numSections + m (Ldcz;Ljd;Ldtc;)Z a method_33777 canPlaceColumnOnTopOf + m (Ldds;Ldtc;Ljd$a;II)V a method_33878 fillColumnBetween + m (Ldds;Lejj;III)V a method_33776 placeDoubleLowerOrUpperSupport + m (Ldds;Lejj;IIII)Z a method_36422 hasSturdyNeighbours + m (Ldds;Lejj;IIIIILayw;)V a method_14713 placeSupport + m (Ldds;Lejj;Layw;FIII)V a method_14715 maybePlaceCobWeb + m (Lejw;Layw;IIILji;)Lejj; a method_14714 findCorridorSize + m (Ldcz;Ljd;Ldtc;)Z b method_33877 canHangChainBelow + m (Ldds;Ldtc;IIILejj;)V c method_33879 fillPillarDownOrChainUp + m (Lub;)V + m (ILayw;Lejj;Lji;Lelw$a;)V +c elv$b net/minecraft/class_3353$class_3355 net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces$MineShaftCrossing + f Lji; b field_14420 direction + f Z c field_14419 isTwoFloored + m (Ldds;Lejj;IIII)V a method_14716 placeSupportPillar + m (Lejw;Layw;IIILji;)Lejj; a method_14717 findCrossing + m (Lub;)V + m (ILejj;Lji;Lelw$a;)V +c elv$c net/minecraft/class_3353$class_3356 net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces$MineShaftPiece + f Lelw$a; a field_14421 type + m (Ldcc;Lejj;IIII)Z a method_14719 isSupportingBox + m (Ldcx;Lejj;)Z a method_33999 isInInvalidLocation + m (Ldds;Lejj;Ldtc;III)V a method_33880 setPlanksBlock + m (Leki;ILelw$a;Lejj;)V + m (Leki;Lub;)V +c elv$d net/minecraft/class_3353$class_3357 net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces$MineShaftRoom + f Ljava/util/List; b field_14422 childEntranceBoxes + m (Lub;Luy;)V a method_34397 method_34397 + m (ILayw;IILelw$a;)V + m (Lub;)V +c elv$e net/minecraft/class_3353$class_3358 net/minecraft/world/level/levelgen/structure/structures/MineshaftPieces$MineShaftStairs + m (Lejw;Layw;IIILji;)Lejj; a method_14720 findStairs + m (ILejj;Lji;Lelw$a;)V + m (Lub;)V +c elw net/minecraft/class_3098 net/minecraft/world/level/levelgen/structure/structures/MineshaftStructure + f Lcom/mojang/serialization/MapCodec; d field_37801 CODEC + f Lelw$a; e field_37802 type + m (Lekj;Lejr$a;)I a method_38678 generatePiecesAndAdjust + m (Lelw;)Lelw$a; a method_41667 method_41667 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_41669 method_41669 + m (Lejr$c;Lelw$a;)V + m ()V +c elw$a net/minecraft/class_3098$class_3100 net/minecraft/world/level/levelgen/structure/structures/MineshaftStructure$Type + f Lelw$a; a field_13692 NORMAL + f Lelw$a; b field_13691 MESA + f Lcom/mojang/serialization/Codec; c field_24839 CODEC + f Ljava/util/function/IntFunction; d field_41680 BY_ID + f Ljava/lang/String; e field_13689 name + f Ldtc; f field_28850 woodState + f Ldtc; g field_28851 planksState + f Ldtc; h field_28852 fenceState + f [Lelw$a; i field_13688 $VALUES + m ()Ljava/lang/String; a method_13534 getName + m (I)Lelw$a; a method_13535 byId + m ()Ldtc; b method_33760 getWoodState + m ()Ldtc; d method_33761 getPlanksState + m ()Ldtc; e method_33762 getFenceState + m ()[Lelw$a; f method_36755 $values + m (Ljava/lang/String;ILjava/lang/String;Ldfy;Ldfy;Ldfy;)V + m ()V +c elx net/minecraft/class_3390 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces + f I a field_34730 MAGIC_START_Y + f I b field_31557 MAX_DEPTH + f I c field_31558 LOWEST_Y_POSITION + f [Lelx$n; d field_14494 BRIDGE_PIECE_WEIGHTS + f [Lelx$n; e field_14493 CASTLE_PIECE_WEIGHTS + m (Lelx$n;Lejw;Layw;IIILji;I)Lelx$m; a method_14795 findAndCreateBridgePieceFactory + m ()V + m ()V +c elx$1 net/minecraft/class_3390$1 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$1 + f [I a field_14508 $SwitchMap$net$minecraft$core$Direction + m ()V +c elx$a net/minecraft/class_3390$class_3391 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$BridgeCrossing + f I a field_31559 WIDTH + f I b field_31560 HEIGHT + f I c field_31561 DEPTH + m (Lejw;IIILji;I)Lelx$a; a method_14796 createPiece + m (ILejj;Lji;)V + m (IILji;)V + m (Leki;Lub;)V + m (Lub;)V +c elx$b net/minecraft/class_3390$class_3392 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$BridgeEndFiller + f I a field_31562 WIDTH + f I b field_31563 HEIGHT + f I c field_31564 DEPTH + f I d field_14495 selfSeed + m (Lejw;Layw;IIILji;I)Lelx$b; a method_14797 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c elx$c net/minecraft/class_3390$class_3393 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$BridgeStraight + f I a field_31565 WIDTH + f I b field_31566 HEIGHT + f I c field_31567 DEPTH + m (Lejw;Layw;IIILji;I)Lelx$c; a method_14798 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c elx$d net/minecraft/class_3390$class_3394 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleCorridorStairsPiece + f I a field_31568 WIDTH + f I b field_31569 HEIGHT + f I c field_31570 DEPTH + m (Lejw;IIILji;I)Lelx$d; a method_14799 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$e net/minecraft/class_3390$class_3395 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleCorridorTBalconyPiece + f I a field_31571 WIDTH + f I b field_31572 HEIGHT + f I c field_31573 DEPTH + m (Lejw;IIILji;I)Lelx$e; a method_14800 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$f net/minecraft/class_3390$class_3396 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleEntrance + f I a field_31574 WIDTH + f I b field_31575 HEIGHT + f I c field_31576 DEPTH + m (Lejw;Layw;IIILji;I)Lelx$f; a method_14801 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c elx$g net/minecraft/class_3390$class_3397 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleSmallCorridorCrossingPiece + f I a field_31577 WIDTH + f I b field_31578 HEIGHT + f I c field_31579 DEPTH + m (Lejw;IIILji;I)Lelx$g; a method_14802 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$h net/minecraft/class_3390$class_3398 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleSmallCorridorLeftTurnPiece + f I a field_31580 WIDTH + f I b field_31581 HEIGHT + f I c field_31582 DEPTH + f Z d field_14496 isNeedingChest + m (Lejw;Layw;IIILji;I)Lelx$h; a method_14803 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c elx$i net/minecraft/class_3390$class_3399 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleSmallCorridorPiece + f I a field_31583 WIDTH + f I b field_31584 HEIGHT + f I c field_31585 DEPTH + m (Lejw;IIILji;I)Lelx$i; a method_14804 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$j net/minecraft/class_3390$class_3400 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleSmallCorridorRightTurnPiece + f I a field_31586 WIDTH + f I b field_31587 HEIGHT + f I c field_31588 DEPTH + f Z d field_14497 isNeedingChest + m (Lejw;Layw;IIILji;I)Lelx$j; a method_14805 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c elx$k net/minecraft/class_3390$class_3401 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$CastleStalkRoom + f I a field_31589 WIDTH + f I b field_31590 HEIGHT + f I c field_31591 DEPTH + m (Lejw;IIILji;I)Lelx$k; a method_14806 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$l net/minecraft/class_3390$class_3402 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$MonsterThrone + f I a field_31592 WIDTH + f I b field_31593 HEIGHT + f I c field_31594 DEPTH + f Z d field_14498 hasPlacedSpawner + m (Lejw;IIIILji;)Lelx$l; a method_14807 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$m net/minecraft/class_3390$class_3403 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$NetherBridgePiece + m (Lejj;)Z a method_14809 isOkBox + m (Lelx$q;Lejw;Layw;IIILji;IZ)Lejv; a method_14813 generateAndAddPiece + m (Lelx$q;Lejw;Layw;IIZ)Lejv; a method_14814 generateChildForward + m (Lelx$q;Ljava/util/List;Lejw;Layw;IIILji;I)Lelx$m; a method_14811 generatePiece + m (Ljava/util/List;)I a method_14810 updatePieceWeight + m (Lelx$q;Lejw;Layw;IIZ)Lejv; b method_14812 generateChildLeft + m (Lelx$q;Lejw;Layw;IIZ)Lejv; c method_14808 generateChildRight + m (Leki;ILejj;)V + m (Leki;Lub;)V +c elx$n net/minecraft/class_3390$class_3404 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$PieceWeight + f Ljava/lang/Class; a field_14501 pieceClass + f I b field_14503 weight + f I c field_14502 placeCount + f I d field_14499 maxPlaceCount + f Z e field_14500 allowInRow + m ()Z a method_14815 isValid + m (I)Z a method_14816 doPlace + m (Ljava/lang/Class;IIZ)V + m (Ljava/lang/Class;II)V +c elx$o net/minecraft/class_3390$class_3405 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$RoomCrossing + f I a field_31595 WIDTH + f I b field_31596 HEIGHT + f I c field_31597 DEPTH + m (Lejw;IIILji;I)Lelx$o; a method_14817 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$p net/minecraft/class_3390$class_3406 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$StairsRoom + f I a field_31598 WIDTH + f I b field_31599 HEIGHT + f I c field_31600 DEPTH + m (Lejw;IIIILji;)Lelx$p; a method_14818 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c elx$q net/minecraft/class_3390$class_3407 net/minecraft/world/level/levelgen/structure/structures/NetherFortressPieces$StartPiece + f Lelx$n; a field_14506 previousPiece + f Ljava/util/List; b field_14507 availableBridgePieces + f Ljava/util/List; c field_14504 availableCastlePieces + f Ljava/util/List; d field_14505 pendingChildren + m (Layw;II)V + m (Lub;)V +c ely net/minecraft/class_3108 net/minecraft/world/level/levelgen/structure/structures/NetherFortressStructure + f Lbpf; d field_13705 FORTRESS_ENEMIES + f Lcom/mojang/serialization/MapCodec; e field_37803 CODEC + m (Lejr$a;Lekj;)V a method_41670 method_41670 + m (Lekj;Lejr$a;)V a method_38679 generatePieces + m (Lejr$c;)V + m ()V +c elz net/minecraft/class_4787 net/minecraft/world/level/levelgen/structure/structures/NetherFossilPieces + f [Lakr; a field_22197 FOSSILS + m (Lenu;Lejw;Layw;Ljd;)V a method_24453 addPieces + m ()V + m ()V +c elz$a net/minecraft/class_4787$class_4788 net/minecraft/world/level/levelgen/structure/structures/NetherFossilPieces$NetherFossilPiece + m (Ldmm;)Lenp; a method_35431 makeSettings + m (Lub;Lakr;)Lenp; a method_35432 method_35432 + m (Lenu;Lakr;Ljd;Ldmm;)V + m (Lenu;Lub;)V +c ema net/minecraft/class_4785 net/minecraft/world/level/levelgen/structure/structures/NetherFossilStructure + f Lcom/mojang/serialization/MapCodec; d field_37804 CODEC + f Lehx; e field_37805 height + m (Lejr$a;Ldzx;Ljd;Lekj;)V a method_41672 method_41672 + m (Lema;)Lehx; a method_41673 method_41673 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_41674 method_41674 + m (Lejr$c;Lehx;)V + m ()V +c emb net/minecraft/class_3366 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces + m ()V +c emb$1 net/minecraft/class_3366$1 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$1 + f [I a field_14467 $SwitchMap$net$minecraft$core$Direction + m ()V +c emb$a net/minecraft/class_3366$class_3367 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$FitDoubleXRoom + m ()V +c emb$b net/minecraft/class_3366$class_3368 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$FitDoubleXYRoom + m ()V +c emb$c net/minecraft/class_3366$class_3369 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$FitDoubleYRoom + m ()V +c emb$d net/minecraft/class_3366$class_3370 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$FitDoubleYZRoom + m ()V +c emb$e net/minecraft/class_3366$class_3371 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$FitDoubleZRoom + m ()V +c emb$f net/minecraft/class_3366$class_3372 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$FitSimpleRoom + m ()V +c emb$g net/minecraft/class_3366$class_3373 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$FitSimpleTopRoom + m ()V +c emb$h net/minecraft/class_3366$class_3374 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$MonumentBuilding + f I C field_31602 WIDTH + f I D field_31603 HEIGHT + f I E field_31604 DEPTH + f I F field_31605 TOP_POSITION + f Lemb$v; G field_14464 sourceRoom + f Lemb$v; H field_14466 coreRoom + f Ljava/util/List; I field_14465 childPieces + f I a field_31606 BIOME_RANGE_CHECK + m (Ldds;Layw;Lejj;)V a method_14763 generateEntranceArchs + m (ZILdds;Layw;Lejj;)V a method_14761 generateWing + m (Layw;)Ljava/util/List; b method_14760 generateRoomGraph + m (Ldds;Layw;Lejj;)V b method_14762 generateEntranceWall + m (Ldds;Layw;Lejj;)V c method_14765 generateRoofPiece + m (Ldds;Layw;Lejj;)V d method_14764 generateLowerWall + m (Ldds;Layw;Lejj;)V e method_14766 generateMiddleWall + m (Ldds;Layw;Lejj;)V f method_14767 generateUpperWall + m (Layw;IILji;)V + m (Lub;)V +c emb$i net/minecraft/class_3366$class_3375 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$MonumentRoomFitter + m (Lemb$v;)Z a method_14769 fits + m (Lji;Lemb$v;Layw;)Lemb$r; a method_14768 create +c emb$j net/minecraft/class_3366$class_3376 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentCoreRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$k net/minecraft/class_3366$class_3377 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentDoubleXRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$l net/minecraft/class_3366$class_3378 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentDoubleXYRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$m net/minecraft/class_3366$class_3379 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentDoubleYRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$n net/minecraft/class_3366$class_3380 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentDoubleYZRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$o net/minecraft/class_3366$class_3381 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentDoubleZRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$p net/minecraft/class_3366$class_3382 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentEntryRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$q net/minecraft/class_3366$class_3383 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentPenthouse + m (Lji;Lejj;)V + m (Lub;)V +c emb$r net/minecraft/class_3366$class_3384 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentPiece + f I A field_31618 PENTHOUSE_INDEX + f Lemb$v; B field_14479 roomDefinition + f Ldtc; b field_14473 BASE_GRAY + f Ldtc; c field_14476 BASE_LIGHT + f Ldtc; d field_14474 BASE_BLACK + f Ldtc; h field_14470 DOT_DECO_DATA + f Ldtc; i field_14471 LAMP_BLOCK + f Z j field_31607 DO_FILL + f Ldtc; k field_14475 FILL_BLOCK + f Ljava/util/Set; l field_14472 FILL_KEEP + f I m field_31608 GRIDROOM_WIDTH + f I n field_31609 GRIDROOM_DEPTH + f I o field_31610 GRIDROOM_HEIGHT + f I p field_31611 GRID_WIDTH + f I q field_31612 GRID_DEPTH + f I r field_31613 GRID_HEIGHT + f I s field_31614 GRID_FLOOR_COUNT + f I t field_31615 GRID_SIZE + f I u field_14469 GRIDROOM_SOURCE_INDEX + f I v field_14468 GRIDROOM_TOP_CONNECT_INDEX + f I w field_14478 GRIDROOM_LEFTWING_CONNECT_INDEX + f I x field_14477 GRIDROOM_RIGHTWING_CONNECT_INDEX + f I y field_31616 LEFTWING_INDEX + f I z field_31617 RIGHTWING_INDEX + m (Ldds;Lejj;III)V a method_14772 spawnElder + m (Ldds;Lejj;IIIIIILdtc;)V a method_14771 generateBoxOnFillOnly + m (Ldds;Lejj;IIZ)V a method_14774 generateDefaultFloor + m (Lejj;IIII)Z a method_14775 chunkIntersects + m (Lji;Lemb$v;III)Lejj; a method_35445 makeBoundingBox + m (Ldds;Lejj;IIIIII)V b method_14773 generateWaterBox + m (III)I c method_14770 getRoomIndex + m (Leki;Lji;ILejj;)V + m (Leki;ILji;Lemb$v;III)V + m (Leki;Lub;)V + m ()V +c emb$s net/minecraft/class_3366$class_3385 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentSimpleRoom + f I a field_14480 mainDesign + m (Lji;Lemb$v;Layw;)V + m (Lub;)V +c emb$t net/minecraft/class_3366$class_3386 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentSimpleTopRoom + m (Lji;Lemb$v;)V + m (Lub;)V +c emb$u net/minecraft/class_3366$class_3387 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$OceanMonumentWingRoom + f I a field_14481 mainDesign + m (Lji;Lejj;I)V + m (Lub;)V +c emb$v net/minecraft/class_3366$class_3388 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentPieces$RoomDefinition + f I a field_14486 index + f [Lemb$v; b field_14487 connections + f [Z c field_14482 hasOpening + f Z d field_14485 claimed + f Z e field_14484 isSource + f I f field_14483 scanIndex + m ()V a method_14780 updateOpenings + m (I)Z a method_14783 findSource + m (Lji;Lemb$v;)V a method_14786 setConnection + m ()Z b method_14785 isSpecial + m ()I c method_14781 countOpenings + m (I)V +c emc net/minecraft/class_3116 net/minecraft/world/level/levelgen/structure/structures/OceanMonumentStructure + f Lcom/mojang/serialization/MapCodec; d field_37806 CODEC + m (Ldcd;JLekg;)Lekg; a method_38680 regeneratePiecesAfterLoad + m (Ldcd;Ldzx;)Lejv; a method_38681 createTopPiece + m (Lejr$a;Lekj;)V a method_41675 method_41675 + m (Lekj;Lejr$a;)V a method_38683 generatePieces + m (Lejr$c;)V + m ()V +c emd net/minecraft/class_3409 net/minecraft/world/level/levelgen/structure/structures/OceanRuinPieces + f Lenq; a field_43327 WARM_SUSPICIOUS_BLOCK_PROCESSOR + f Lenq; b field_43328 COLD_SUSPICIOUS_BLOCK_PROCESSOR + f [Lakr; c field_14521 WARM_RUINS + f [Lakr; d field_14518 RUINS_BRICK + f [Lakr; e field_14519 RUINS_CRACKED + f [Lakr; f field_14522 RUINS_MOSSY + f [Lakr; g field_14516 BIG_RUINS_BRICK + f [Lakr; h field_14517 BIG_RUINS_MOSSY + f [Lakr; i field_14520 BIG_RUINS_CRACKED + f [Lakr; j field_14515 BIG_WARM_RUINS + m (Layw;)Lakr; a method_14824 getSmallWarmRuin + m (Layw;Ljd;)Ljava/util/List; a method_14821 allPositions + m (Ldfy;Ldfy;Lakq;)Lenq; a method_49885 archyRuleProcessor + m (Lenu;Layw;Ldmm;Ljd;Leme;Lejw;)V a method_14825 addClusterRuins + m (Lenu;Ljd;Ldmm;Lejw;Layw;Leme;)V a method_14827 addPieces + m (Lenu;Ljd;Ldmm;Lejw;Layw;Leme;ZF)V a method_14822 addPiece + m (Layw;)Lakr; b method_14826 getBigWarmRuin + m ()V + m ()V +c emd$1 net/minecraft/class_3409$1 net/minecraft/world/level/levelgen/structure/structures/OceanRuinPieces$1 + f [I a field_31619 $SwitchMap$net$minecraft$world$level$levelgen$structure$structures$OceanRuinStructure$Type + m ()V +c emd$a net/minecraft/class_3409$class_3410 net/minecraft/world/level/levelgen/structure/structures/OceanRuinPieces$OceanRuinPiece + f Leme$a; h field_14527 biomeType + f F i field_14524 integrity + f Z j field_14525 isLarge + m (Ldmm;FLeme$a;)Lenp; a method_35446 makeSettings + m (Ldmm;FLeme$a;Lakr;)Lenp; a method_35447 method_35447 + m (Lenu;Lub;)Lemd$a; a method_49886 create + m (Ljd;Ldcc;Ljd;)I a method_14829 getHeight + m (Lenu;Lakr;Ljd;Ldmm;FLeme$a;Z)V + m (Lenu;Lub;Ldmm;FLeme$a;Z)V +c eme net/minecraft/class_3411 net/minecraft/world/level/levelgen/structure/structures/OceanRuinStructure + f Lcom/mojang/serialization/MapCodec; d field_37807 CODEC + f Leme$a; e field_37808 biomeTemp + f F f field_37809 largeProbability + f F g field_37810 clusterProbability + m (Lejr$a;Lekj;)V a method_41677 method_41677 + m (Lekj;Lejr$a;)V a method_38700 generatePieces + m (Leme;)Ljava/lang/Float; a method_41678 method_41678 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_41679 method_41679 + m (Leme;)Ljava/lang/Float; b method_41680 method_41680 + m (Leme;)Leme$a; c method_41681 method_41681 + m (Lejr$c;Leme$a;FF)V + m ()V +c eme$a net/minecraft/class_3411$class_3413 net/minecraft/world/level/levelgen/structure/structures/OceanRuinStructure$Type + f Leme$a; a field_14532 WARM + f Leme$a; b field_14528 COLD + f Lcom/mojang/serialization/Codec; c field_24990 CODEC + f Ljava/lang/String; d field_14529 name + f [Leme$a; e field_14531 $VALUES + m ()Ljava/lang/String; a method_14831 getName + m ()[Leme$a; b method_36760 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c emf net/minecraft/class_5189 net/minecraft/world/level/levelgen/structure/structures/RuinedPortalPiece + f Lorg/slf4j/Logger; h field_24992 LOGGER + f F i field_31620 PROBABILITY_OF_GOLD_GONE + f F j field_31621 PROBABILITY_OF_MAGMA_INSTEAD_OF_NETHERRACK + f F k field_31622 PROBABILITY_OF_MAGMA_INSTEAD_OF_LAVA + f Lemf$b; l field_24021 verticalPlacement + f Lemf$a; m field_24022 properties + m (Layw;Ldcx;)V a method_27243 addNetherrackDripColumnsBelowPortal + m (Layw;Ldcx;Ljd;)V a method_27244 maybeAddVines + m (Layw;Ldds;Ljd;)V a method_27250 method_27250 + m (Ldcx;IILemf$b;)I a method_27237 getSurfaceY + m (Ldcx;Ljd;)Z a method_27238 canBlockBeReplacedByNetherrackOrMagma + m (Ldfy;FLdfy;)Leni; a method_27239 getBlockReplaceRule + m (Ldfy;Ldfy;)Leni; a method_27240 getBlockReplaceRule + m (Ldkv;Ldmm;Lemf$b;Ljd;Lemf$a;)Lenp; a method_35450 makeSettings + m (Lemf$b;)Ldyy$a; a method_27241 getHeightMapType + m (Lemf$b;Lemf$a;)Leni; a method_27247 getLavaProcessorRule + m (Lenu;Lub;Lakr;)Lenp; a method_35449 makeSettings + m (Lub;Luy;)V a method_28950 method_28950 + m (Layw;Ldcx;)V b method_27245 spreadNetherrack + m (Layw;Ldcx;Ljd;)V b method_27246 maybeAddLeavesAbove + m (Lenu;Lub;Lakr;)Lenp; b method_35451 method_35451 + m (Layw;Ldcx;Ljd;)V c method_27248 addNetherrackDripColumn + m (Layw;Ldcx;Ljd;)V d method_27249 placeNetherrackOrMagma + m (Lenu;Ljd;Lemf$b;Lemf$a;Lakr;Lent;Ldmm;Ldkv;Ljd;)V + m (Lenu;Lub;)V + m ()V +c emf$a net/minecraft/class_5189$class_5190 net/minecraft/world/level/levelgen/structure/structures/RuinedPortalPiece$Properties + f Lcom/mojang/serialization/Codec; a field_24993 CODEC + f Z b field_24023 cold + f F c field_24024 mossiness + f Z d field_24025 airPocket + f Z e field_24026 overgrown + f Z f field_24027 vines + f Z g field_24028 replaceWithBlackstone + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28951 method_28951 + m (Lemf$a;)Ljava/lang/Boolean; a method_28952 method_28952 + m (Lemf$a;)Ljava/lang/Boolean; b method_28953 method_28953 + m (Lemf$a;)Ljava/lang/Boolean; c method_28954 method_28954 + m (Lemf$a;)Ljava/lang/Boolean; d method_28955 method_28955 + m (Lemf$a;)Ljava/lang/Float; e method_28956 method_28956 + m (Lemf$a;)Ljava/lang/Boolean; f method_28957 method_28957 + m ()V + m (ZFZZZZ)V + m ()V +c emf$b net/minecraft/class_5189$class_5191 net/minecraft/world/level/levelgen/structure/structures/RuinedPortalPiece$VerticalPlacement + f Lemf$b; a field_24029 ON_LAND_SURFACE + f Lemf$b; b field_24030 PARTLY_BURIED + f Lemf$b; c field_24031 ON_OCEAN_FLOOR + f Lemf$b; d field_24032 IN_MOUNTAIN + f Lemf$b; e field_24033 UNDERGROUND + f Lemf$b; f field_24034 IN_NETHER + f Lazk$a; g field_37811 CODEC + f Ljava/lang/String; h field_24036 name + f [Lemf$b; i field_24037 $VALUES + m ()Ljava/lang/String; a method_27252 getName + m (Ljava/lang/String;)Lemf$b; a method_27254 byName + m ()[Lemf$b; b method_36761 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c emg net/minecraft/class_5183 net/minecraft/world/level/levelgen/structure/structures/RuinedPortalStructure + f Lcom/mojang/serialization/MapCodec; d field_37812 CODEC + f [Ljava/lang/String; e field_23999 STRUCTURE_LOCATION_PORTALS + f [Ljava/lang/String; f field_23998 STRUCTURE_LOCATION_GIANT_PORTALS + f F g field_31512 PROBABILITY_OF_GIANT_PORTAL + f I h field_31511 MIN_Y_INDEX + f Ljava/util/List; i field_37813 setups + m (Layw;II)I a method_27210 getRandomWithinInterval + m (Layw;Lduz;Lemf$b;ZIILejj;Ldcy;Ldzm;)I a method_27211 findSuitableY + m (Lduz;Ldcy;Ldzm;Ljd;)Lddi; a method_27205 method_27205 + m (Ldzx;F)Z a method_41682 sample + m (Lemg$a;Lemf$a;Ljd;Lejr$a;Ldzm;Lakr;Lent;Ldmm;Ldkv;Ljd;Lekj;)V a method_41683 method_41683 + m (Lemg;)Ljava/util/List; a method_41684 method_41684 + m (Ljd;Ljm;)Z a method_27209 isCold + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_41685 method_41685 + m (Lejr$c;Ljava/util/List;)V + m (Lejr$c;Lemg$a;)V + m ()V +c emg$a net/minecraft/class_5183$class_7155 net/minecraft/world/level/levelgen/structure/structures/RuinedPortalStructure$Setup + f Lcom/mojang/serialization/Codec; a field_37814 CODEC + f Lemf$b; b comp_576 placement + f F c comp_577 airPocketProbability + f F d comp_578 mossiness + f Z e comp_579 overgrown + f Z f comp_580 vines + f Z g comp_581 canBeCold + f Z h comp_582 replaceWithBlackstone + f F i comp_583 weight + m ()Lemf$b; a comp_576 placement + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_41686 method_41686 + m ()F b comp_577 airPocketProbability + m ()F c comp_578 mossiness + m ()Z d comp_579 overgrown + m ()Z e comp_580 vines + m ()Z f comp_581 canBeCold + m ()Z g comp_582 replaceWithBlackstone + m ()F h comp_583 weight + m (Lemf$b;FFZZZZF)V + m ()V +c emh net/minecraft/class_3415 net/minecraft/world/level/levelgen/structure/structures/ShipwreckPieces + f I a field_51512 NUMBER_OF_BLOCKS_ALLOWED_IN_WORLD_GEN_REGION + f Ljd; b field_14536 PIVOT + f [Lakr; c field_14534 STRUCTURE_LOCATION_BEACHED + f [Lakr; d field_14535 STRUCTURE_LOCATION_OCEAN + f Ljava/util/Map; e field_34939 MARKERS_TO_LOOT + m (Lenu;Ljd;Ldmm;Lejw;Layw;Z)Lemh$a; a method_59864 addRandomPiece + m ()V + m ()V +c emh$a net/minecraft/class_3415$class_3416 net/minecraft/world/level/levelgen/structure/structures/ShipwreckPieces$ShipwreckPiece + f Z h field_14538 isBeached + m (ILayw;)I a method_59865 calculateBeachedPosition + m (Ldmm;)Lenp; a method_35452 makeSettings + m (Lub;Lakr;)Lenp; a method_35453 method_35453 + m (I)V c method_59866 adjustPositionHeight + m ()Z l method_59867 isTooBigToFitInWorldGenRegion + m (Lenu;Lakr;Ljd;Ldmm;Z)V + m (Lenu;Lub;)V +c emi net/minecraft/class_3170 net/minecraft/world/level/levelgen/structure/structures/ShipwreckStructure + f Lcom/mojang/serialization/MapCodec; d field_37815 CODEC + f Z e field_37816 isBeached + m (Lejr$a;Lekj;)V a method_41687 method_41687 + m (Lekj;Lejr$a;)V a method_38685 generatePieces + m (Lemi;)Ljava/lang/Boolean; a method_41688 method_41688 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_41689 method_41689 + m (Lejr$c;Z)V + m ()V +c emj net/minecraft/class_3421 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces + f I a field_36417 MAGIC_START_Y + f I b field_31624 SMALL_DOOR_WIDTH + f I c field_31625 SMALL_DOOR_HEIGHT + f I d field_31626 MAX_DEPTH + f I e field_31627 LOWEST_Y_POSITION + f Z f field_31628 CHECK_AIR + f [Lemj$f; g field_15265 STRONGHOLD_PIECE_WEIGHTS + f Ljava/util/List; h field_15267 currentPieces + f Ljava/lang/Class; i field_15266 imposedPiece + f I j field_15264 totalWeight + f Lemj$k; k field_15263 SMOOTH_STONE_SELECTOR + m ()V a method_14855 resetPieces + m (Lemj$m;Lejw;Layw;IIILji;I)Lemj$p; a method_14851 generatePieceFromSmallDoor + m (Ljava/lang/Class;Lejw;Layw;IIILji;I)Lemj$p; a method_14847 findAndCreatePieceFactory + m ()Z b method_14852 updatePieceWeight + m (Lemj$m;Lejw;Layw;IIILji;I)Lejv; b method_14854 generateAndAddPiece + m ()V + m ()V +c emj$1 net/minecraft/class_3421$1 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$1 + m (Ljava/lang/Class;II)V +c emj$2 net/minecraft/class_3421$2 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$2 + m (Ljava/lang/Class;II)V +c emj$3 net/minecraft/class_3421$3 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$3 + f [I a field_15293 $SwitchMap$net$minecraft$core$Direction + m ()V +c emj$a net/minecraft/class_3421$class_3422 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$ChestCorridor + f I a field_31629 WIDTH + f I b field_31630 HEIGHT + f I c field_31631 DEPTH + f Z d field_15268 hasPlacedChest + m (Lejw;Layw;IIILji;I)Lemj$a; a method_14856 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$b net/minecraft/class_3421$class_3423 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$FillerCorridor + f I a field_15269 steps + m (Lejw;Layw;IIILji;)Lejj; a method_14857 findPieceBox + m (ILejj;Lji;)V + m (Lub;)V +c emj$c net/minecraft/class_3421$class_3424 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$FiveCrossing + f I a field_31632 WIDTH + f I b field_31633 HEIGHT + f I c field_31634 DEPTH + f Z d field_15273 leftLow + f Z i field_15272 leftHigh + f Z j field_15271 rightLow + f Z k field_15270 rightHigh + m (Lejw;Layw;IIILji;I)Lemj$c; a method_14858 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$d net/minecraft/class_3421$class_3425 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$LeftTurn + m (Lejw;Layw;IIILji;I)Lemj$d; a method_14859 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$e net/minecraft/class_3421$class_3426 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$Library + f I a field_31635 WIDTH + f I b field_31636 HEIGHT + f I c field_31637 TALL_HEIGHT + f I d field_31638 DEPTH + f Z i field_15274 isTall + m (Lejw;Layw;IIILji;I)Lemj$e; a method_14860 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$f net/minecraft/class_3421$class_3427 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$PieceWeight + f Ljava/lang/Class; a field_15276 pieceClass + f I b field_15278 weight + f I c field_15277 placeCount + f I d field_15275 maxPlaceCount + m ()Z a method_14861 isValid + m (I)Z a method_14862 doPlace + m (Ljava/lang/Class;II)V +c emj$g net/minecraft/class_3421$class_3428 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$PortalRoom + f I a field_31639 WIDTH + f I b field_31640 HEIGHT + f I c field_31641 DEPTH + f Z d field_15279 hasPlacedSpawner + m (Lejw;IIILji;I)Lemj$g; a method_14863 createPiece + m (ILejj;Lji;)V + m (Lub;)V +c emj$h net/minecraft/class_3421$class_3429 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$PrisonHall + f I a field_31642 WIDTH + f I b field_31643 HEIGHT + f I c field_31644 DEPTH + m (Lejw;Layw;IIILji;I)Lemj$h; a method_14864 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$i net/minecraft/class_3421$class_3430 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$RightTurn + m (Lejw;Layw;IIILji;I)Lemj$i; a method_16652 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$j net/minecraft/class_3421$class_3431 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$RoomCrossing + f I a field_31645 WIDTH + f I b field_31646 HEIGHT + f I c field_31647 DEPTH + f I d field_15280 type + m (Lejw;Layw;IIILji;I)Lemj$j; a method_14865 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$k net/minecraft/class_3421$class_3432 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$SmoothStoneSelector + m ()V +c emj$l net/minecraft/class_3421$class_3433 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$StairsDown + f I a field_31648 WIDTH + f I b field_31649 HEIGHT + f I c field_31650 DEPTH + f Z d field_15281 isSource + m (Lejw;Layw;IIILji;I)Lemj$l; a method_14866 createPiece + m (Leki;IIILji;)V + m (ILayw;Lejj;Lji;)V + m (Leki;Lub;)V + m (Lub;)V +c emj$m net/minecraft/class_3421$class_3434 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$StartPiece + f Lemj$f; a field_15284 previousPiece + f Lemj$g; b field_15283 portalRoomPiece + f Ljava/util/List; c field_15282 pendingChildren + m (Layw;II)V + m (Lub;)V +c emj$n net/minecraft/class_3421$class_3435 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$Straight + f I a field_31651 WIDTH + f I b field_31652 HEIGHT + f I c field_31653 DEPTH + f Z d field_15286 leftChild + f Z i field_15285 rightChild + m (Lejw;Layw;IIILji;I)Lemj$n; a method_14867 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$o net/minecraft/class_3421$class_3436 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$StraightStairsDown + f I a field_31654 WIDTH + f I b field_31655 HEIGHT + f I c field_31656 DEPTH + m (Lejw;Layw;IIILji;I)Lemj$o; a method_14868 createPiece + m (ILayw;Lejj;Lji;)V + m (Lub;)V +c emj$p net/minecraft/class_3421$class_3437 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$StrongholdPiece + f Lemj$p$a; h field_15287 entryDoor + m (Ldds;Layw;Lejj;Lemj$p$a;III)V a method_14872 generateSmallDoor + m (Lejj;)Z a method_14871 isOkBox + m (Lemj$m;Lejw;Layw;II)Lejv; a method_14874 generateSmallDoorChildForward + m (Layw;)Lemj$p$a; b method_14869 randomSmallDoor + m (Lemj$m;Lejw;Layw;II)Lejv; b method_14870 generateSmallDoorChildLeft + m (Lemj$m;Lejw;Layw;II)Lejv; c method_14873 generateSmallDoorChildRight + m (Leki;ILejj;)V + m (Leki;Lub;)V +c emj$p$a net/minecraft/class_3421$class_3437$class_3438 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$StrongholdPiece$SmallDoorType + f Lemj$p$a; a field_15288 OPENING + f Lemj$p$a; b field_15290 WOOD_DOOR + f Lemj$p$a; c field_15289 GRATES + f Lemj$p$a; d field_15291 IRON_DOOR + f [Lemj$p$a; e field_15292 $VALUES + m ()[Lemj$p$a; a method_36762 $values + m (Ljava/lang/String;I)V + m ()V +c emj$q net/minecraft/class_3421$class_3466 net/minecraft/world/level/levelgen/structure/structures/StrongholdPieces$Turn + f I a field_31657 WIDTH + f I b field_31658 HEIGHT + f I c field_31659 DEPTH + m (Leki;ILejj;)V + m (Leki;Lub;)V +c emk net/minecraft/class_3188 net/minecraft/world/level/levelgen/structure/structures/StrongholdStructure + f Lcom/mojang/serialization/MapCodec; d field_37817 CODEC + m (Lejr$a;Lekj;)V a method_41690 method_41690 + m (Lekj;Lejr$a;)V a method_41691 generatePieces + m (Lejr$c;)V + m ()V +c eml net/minecraft/class_3447 net/minecraft/world/level/levelgen/structure/structures/SwampHutPiece + f Z h field_15322 spawnedWitch + f Z i field_16445 spawnedCat + m (Lddl;Lejj;)V a method_16181 spawnCat + m (Layw;II)V + m (Lub;)V +c emm net/minecraft/class_3197 net/minecraft/world/level/levelgen/structure/structures/SwampHutStructure + f Lcom/mojang/serialization/MapCodec; d field_37818 CODEC + m (Lejr$a;Lekj;)V a method_41693 method_41693 + m (Lekj;Lejr$a;)V a method_38693 generatePieces + m (Lejr$c;)V + m ()V +c emn net/minecraft/class_3471 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces + m (Lenu;Ljd;Ldmm;Ljava/util/List;Layw;)V a method_15029 generateMansion + m ()V +c emn$a net/minecraft/class_3471$class_3472 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$FirstFloorRoomCollection + m ()V +c emn$b net/minecraft/class_3471$class_3473 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$FloorRoomCollection + m (Layw;)Ljava/lang/String; a method_15037 get1x1 + m (Layw;Z)Ljava/lang/String; a method_15033 get1x2SideEntrance + m (Layw;)Ljava/lang/String; b method_15032 get1x1Secret + m (Layw;Z)Ljava/lang/String; b method_15031 get1x2FrontEntrance + m (Layw;)Ljava/lang/String; c method_15035 get1x2Secret + m (Layw;)Ljava/lang/String; d method_15034 get2x2 + m (Layw;)Ljava/lang/String; e method_15036 get2x2Secret + m ()V +c emn$c net/minecraft/class_3471$class_3474 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$MansionGrid + f I a field_31665 DEFAULT_SIZE + f I b field_31666 CLEAR + f I c field_31667 CORRIDOR + f I d field_31668 ROOM + f I e field_31669 START_ROOM + f I f field_31670 TEST_ROOM + f I g field_31671 BLOCKED + f I h field_31672 ROOM_1x1 + f I i field_31673 ROOM_1x2 + f I j field_31674 ROOM_2x2 + f I k field_31675 ROOM_ORIGIN_FLAG + f I l field_31676 ROOM_DOOR_FLAG + f I m field_31677 ROOM_STAIRS_FLAG + f I n field_31678 ROOM_CORRIDOR_FLAG + f I o field_31679 ROOM_TYPE_MASK + f I p field_31680 ROOM_ID_MASK + f Layw; q field_15438 random + f Lemn$g; r field_15440 baseGrid + f Lemn$g; s field_15439 thirdFloorGrid + f [Lemn$g; t field_15443 floorRooms + f I u field_15442 entranceX + f I v field_15441 entranceY + m ()V a method_15048 setupThirdFloor + m (Lemn$g;)Z a method_15046 cleanEdges + m (Lemn$g;II)Z a method_15047 isHouse + m (Lemn$g;IIII)Z a method_15039 isRoomId + m (Lemn$g;IILji;I)V a method_15045 recursiveCorridor + m (Lemn$g;Lemn$g;)V a method_15042 identifyRooms + m (Lemn$g;IIII)Lji; b method_15040 get1x2RoomDirection + m (Layw;)V +c emn$d net/minecraft/class_3471$class_3475 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$MansionPiecePlacer + f Lenu; a field_15444 structureTemplateManager + f Layw; b field_15447 random + f I c field_15446 startX + f I d field_15445 startY + m (Ljava/util/List;Lemn$e;)V a method_15054 entrance + m (Ljava/util/List;Lemn$e;Lemn$g;Lji;IIII)V a method_15051 traverseOuterWalls + m (Ljava/util/List;Ljd;Ldmm;Lemn$b;)V a method_15053 addRoom2x2Secret + m (Ljava/util/List;Ljd;Ldmm;Lemn$g;Lemn$g;)V a method_15055 createRoof + m (Ljava/util/List;Ljd;Ldmm;Lji;Lemn$b;)V a method_15057 addRoom1x1 + m (Ljava/util/List;Ljd;Ldmm;Lji;Lji;Lemn$b;)V a method_15056 addRoom2x2 + m (Ljava/util/List;Ljd;Ldmm;Lji;Lji;Lemn$b;Z)V a method_15059 addRoom1x2 + m (Ljd;Ldmm;Ljava/util/List;Lemn$c;)V a method_15050 createMansion + m (Ljava/util/List;Lemn$e;)V b method_15052 traverseWallPiece + m (Ljava/util/List;Lemn$e;)V c method_15058 traverseTurn + m (Ljava/util/List;Lemn$e;)V d method_15060 traverseInnerTurn + m (Lenu;Layw;)V +c emn$e net/minecraft/class_3471$class_3476 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$PlacementData + f Ldmm; a field_15450 rotation + f Ljd; b field_15449 position + f Ljava/lang/String; c field_15448 wallType + m ()V +c emn$f net/minecraft/class_3471$class_3477 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$SecondFloorRoomCollection + m ()V +c emn$g net/minecraft/class_3471$class_3478 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$SimpleGrid + f [[I a field_15451 grid + f I b field_15454 width + f I c field_15453 height + f I d field_15452 valueIfOutside + m (II)I a method_15066 get + m (III)V a method_15065 set + m (IIII)V a method_15061 setif + m (IIIII)V a method_15062 set + m (III)Z b method_15067 edgesTo + m (III)V +c emn$h net/minecraft/class_3471$class_3479 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$ThirdFloorRoomCollection + m ()V +c emn$i net/minecraft/class_3471$class_3480 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionPieces$WoodlandMansionPiece + m (Ldkv;Ldmm;)Lenp; a method_35473 makeSettings + m (Ljava/lang/String;)Lakr; a method_35474 makeLocation + m (Lub;Lakr;)Lenp; a method_35475 method_35475 + m (Lenu;Ljava/lang/String;Ljd;Ldmm;)V + m (Lenu;Ljava/lang/String;Ljd;Ldmm;Ldkv;)V + m (Lenu;Lub;)V +c emo net/minecraft/class_3223 net/minecraft/world/level/levelgen/structure/structures/WoodlandMansionStructure + f Lcom/mojang/serialization/MapCodec; d field_37819 CODEC + m (Lejr$a;Ljd;Ldmm;Lekj;)V a method_41695 method_41695 + m (Lekj;Lejr$a;Ljd;Ldmm;)V a method_41696 generatePieces + m (Lejr$c;)V + m ()V +c emp net/minecraft/class_7156 net/minecraft/world/level/levelgen/structure/structures/package-info +c emq net/minecraft/class_3818 net/minecraft/world/level/levelgen/structure/templatesystem/AlwaysTrueTest + f Lcom/mojang/serialization/MapCodec; a field_24994 CODEC + f Lemq; b field_16868 INSTANCE + m ()Lemq; b method_28959 method_28959 + m ()V + m ()V +c emr net/minecraft/class_4992 net/minecraft/world/level/levelgen/structure/templatesystem/AxisAlignedLinearPosTest + f Lcom/mojang/serialization/MapCodec; a field_24995 CODEC + f F b field_23334 minChance + f F d field_23335 maxChance + f I e field_23336 minDist + f I f field_23337 maxDist + f Lji$a; g field_23338 axis + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28960 method_28960 + m (Lemr;)Lji$a; a method_28961 method_28961 + m (Lemr;)Ljava/lang/Integer; b method_28962 method_28962 + m (Lemr;)Ljava/lang/Integer; c method_28963 method_28963 + m (Lemr;)Ljava/lang/Float; d method_28964 method_28964 + m (Lemr;)Ljava/lang/Float; e method_28965 method_28965 + m (FFIILji$a;)V + m ()V +c ems net/minecraft/class_5192 net/minecraft/world/level/levelgen/structure/templatesystem/BlackstoneReplaceProcessor + f Lcom/mojang/serialization/MapCodec; a field_24996 CODEC + f Lems; b field_24040 INSTANCE + f Ljava/util/Map; c field_24041 replacements + m (Ljava/util/HashMap;)V a method_27255 method_27255 + m ()Lems; b method_28966 method_28966 + m ()V + m ()V +c emt net/minecraft/class_5193 net/minecraft/world/level/levelgen/structure/templatesystem/BlockAgeProcessor + f Lcom/mojang/serialization/MapCodec; a field_24997 CODEC + f F b field_31681 PROBABILITY_OF_REPLACING_FULL_BLOCK + f F c field_31682 PROBABILITY_OF_REPLACING_STAIRS + f F d field_31683 PROBABILITY_OF_REPLACING_OBSIDIAN + f [Ldtc; e field_27338 NON_MOSSY_REPLACEMENTS + f F f field_24042 mossiness + m (Layw;)Ldtc; a method_27256 maybeReplaceFullStoneBlock + m (Layw;Ldfy;)Ldtc; a method_27257 getRandomFacingStairs + m (Layw;Ldtc;)Ldtc; a method_27258 maybeReplaceStairs + m (Layw;[Ldtc;)Ldtc; a method_27259 getRandomBlock + m (Layw;[Ldtc;[Ldtc;)Ldtc; a method_27260 getRandomBlock + m (Lemt;)Ljava/lang/Float; a method_28967 method_28967 + m (Layw;)Ldtc; b method_27261 maybeReplaceSlab + m (Layw;)Ldtc; c method_27262 maybeReplaceWall + m (Layw;)Ldtc; d method_27263 maybeReplaceObsidian + m (F)V + m ()V +c emu net/minecraft/class_3793 net/minecraft/world/level/levelgen/structure/templatesystem/BlockIgnoreProcessor + f Lcom/mojang/serialization/MapCodec; a field_24998 CODEC + f Lemu; b field_16718 STRUCTURE_BLOCK + f Lemu; c field_16719 AIR + f Lemu; d field_16721 STRUCTURE_AND_AIR + f Lcom/google/common/collect/ImmutableList; e field_16720 toIgnore + m (Lemu;)Ljava/util/List; a method_28968 method_28968 + m (Ljava/util/List;)V + m ()V +c emv net/minecraft/class_3819 net/minecraft/world/level/levelgen/structure/templatesystem/BlockMatchTest + f Lcom/mojang/serialization/MapCodec; a field_24999 CODEC + f Ldfy; b field_16869 block + m (Lemv;)Ldfy; a method_28969 method_28969 + m (Ldfy;)V + m ()V +c emw net/minecraft/class_3488 net/minecraft/world/level/levelgen/structure/templatesystem/BlockRotProcessor + f Lcom/mojang/serialization/MapCodec; a field_25000 CODEC + f Ljava/util/Optional; b field_38437 rottableBlocks + f F c field_15523 integrity + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42711 method_42711 + m (Lemw;)Ljava/lang/Float; a method_42712 method_42712 + m (Lemw;)Ljava/util/Optional; b method_42713 method_42713 + m (Ljq;F)V + m (F)V + m (Ljava/util/Optional;F)V + m ()V +c emx net/minecraft/class_3820 net/minecraft/world/level/levelgen/structure/templatesystem/BlockStateMatchTest + f Lcom/mojang/serialization/MapCodec; a field_25001 CODEC + f Ldtc; b field_16870 blockState + m (Lemx;)Ldtc; a method_28971 method_28971 + m (Ldtc;)V + m ()V +c emy net/minecraft/class_8243 net/minecraft/world/level/levelgen/structure/templatesystem/CappedProcessor + f Lcom/mojang/serialization/MapCodec; a field_43329 CODEC + f Lenq; b field_43330 delegate + f Lbpw; c field_43331 limit + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49888 method_49888 + m (Lemy;)Lbpw; a method_49889 method_49889 + m (Lemy;)Lenq; b method_49890 method_49890 + m (Lenq;Lbpw;)V + m ()V +c emz net/minecraft/class_3795 net/minecraft/world/level/levelgen/structure/templatesystem/GravityProcessor + f Lcom/mojang/serialization/MapCodec; a field_25002 CODEC + f Ldyy$a; b field_16723 heightmap + f I c field_16725 offset + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28972 method_28972 + m (Lemz;)Ljava/lang/Integer; a method_28973 method_28973 + m (Lemz;)Ldyy$a; b method_28974 method_28974 + m (Ldyy$a;I)V + m ()V +c ena net/minecraft/class_3794 net/minecraft/world/level/levelgen/structure/templatesystem/JigsawReplacementProcessor + f Lcom/mojang/serialization/MapCodec; a field_25003 CODEC + f Lena; b field_16871 INSTANCE + f Lorg/slf4j/Logger; c field_43332 LOGGER + m ()Lena; b method_28975 method_28975 + m ()V + m ()V +c enb net/minecraft/class_5399 net/minecraft/world/level/levelgen/structure/templatesystem/LavaSubmergedBlockProcessor + f Lcom/mojang/serialization/MapCodec; a field_25618 CODEC + f Lenb; b field_25619 INSTANCE + m ()Lenb; b method_29966 method_29966 + m ()V + m ()V +c enc net/minecraft/class_4993 net/minecraft/world/level/levelgen/structure/templatesystem/LinearPosTest + f Lcom/mojang/serialization/MapCodec; a field_25004 CODEC + f F b field_23339 minChance + f F d field_23340 maxChance + f I e field_23341 minDist + f I f field_23342 maxDist + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28976 method_28976 + m (Lenc;)Ljava/lang/Integer; a method_28977 method_28977 + m (Lenc;)Ljava/lang/Integer; b method_28978 method_28978 + m (Lenc;)Ljava/lang/Float; c method_28979 method_28979 + m (Lenc;)Ljava/lang/Float; d method_28980 method_28980 + m (FFII)V + m ()V +c end net/minecraft/class_9822 net/minecraft/world/level/levelgen/structure/templatesystem/LiquidSettings + f Lend; a field_52237 IGNORE_WATERLOGGING + f Lend; b field_52238 APPLY_WATERLOGGING + f Lcom/mojang/serialization/Codec; c field_52239 CODEC + f Ljava/lang/String; d field_52240 name + f [Lend; e field_52241 $VALUES + m ()[Lend; a method_61019 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ene net/minecraft/class_3822 net/minecraft/world/level/levelgen/structure/templatesystem/NopProcessor + f Lcom/mojang/serialization/MapCodec; a field_25005 CODEC + f Lene; b field_16876 INSTANCE + m ()Lene; b method_28981 method_28981 + m ()V + m ()V +c enf net/minecraft/class_4994 net/minecraft/world/level/levelgen/structure/templatesystem/PosAlwaysTrueTest + f Lcom/mojang/serialization/MapCodec; a field_25006 CODEC + f Lenf; b field_23343 INSTANCE + m ()Lenf; b method_28982 method_28982 + m ()V + m ()V +c eng net/minecraft/class_4995 net/minecraft/world/level/levelgen/structure/templatesystem/PosRuleTest + f Lcom/mojang/serialization/Codec; c field_25007 CODEC + m ()Lenh; a method_26404 getType + m (Ljd;Ljd;Ljd;Layw;)Z a method_26406 test + m ()V + m ()V +c enh net/minecraft/class_4996 net/minecraft/world/level/levelgen/structure/templatesystem/PosRuleTestType + f Lenh; a field_23344 ALWAYS_TRUE_TEST + f Lenh; b field_23345 LINEAR_POS_TEST + f Lenh; c field_23346 AXIS_ALIGNED_LINEAR_POS_TEST + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_28983 method_28983 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lenh; a method_26409 register + m ()V +c eni net/minecraft/class_3821 net/minecraft/world/level/levelgen/structure/templatesystem/ProcessorRule + f Leoa; a field_43333 DEFAULT_BLOCK_ENTITY_MODIFIER + f Lcom/mojang/serialization/Codec; b field_25008 CODEC + f Lenn; c field_16872 inputPredicate + f Lenn; d field_16873 locPredicate + f Leng; e field_23347 posPredicate + f Ldtc; f field_16874 outputState + f Leob; g field_43334 blockEntityModifier + m ()Ldtc; a method_16763 getOutputState + m (Layw;Lub;)Lub; a method_16760 getOutputTag + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28984 method_28984 + m (Ldtc;Ldtc;Ljd;Ljd;Ljd;Layw;)Z a method_16762 test + m (Leni;)Leob; a method_28985 method_28985 + m (Leni;)Ldtc; b method_28986 method_28986 + m (Leni;)Leng; c method_28987 method_28987 + m (Leni;)Lenn; d method_28988 method_28988 + m (Leni;)Lenn; e method_28989 method_28989 + m (Lenn;Lenn;Ldtc;)V + m (Lenn;Lenn;Leng;Ldtc;)V + m (Lenn;Lenn;Leng;Ldtc;Leob;)V + m ()V +c enj net/minecraft/class_6378 net/minecraft/world/level/levelgen/structure/templatesystem/ProtectedBlockProcessor + f Lawu; a field_33771 cannotReplace + f Lcom/mojang/serialization/MapCodec; b field_33772 CODEC + m (Lenj;)Lawu; a method_37002 method_37002 + m (Lawu;)V + m ()V +c enk net/minecraft/class_3824 net/minecraft/world/level/levelgen/structure/templatesystem/RandomBlockMatchTest + f Lcom/mojang/serialization/MapCodec; a field_25009 CODEC + f Ldfy; b field_16880 block + f F d field_16879 probability + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28990 method_28990 + m (Lenk;)Ljava/lang/Float; a method_28991 method_28991 + m (Lenk;)Ldfy; b method_28992 method_28992 + m (Ldfy;F)V + m ()V +c enl net/minecraft/class_3823 net/minecraft/world/level/levelgen/structure/templatesystem/RandomBlockStateMatchTest + f Lcom/mojang/serialization/MapCodec; a field_25010 CODEC + f Ldtc; b field_16878 blockState + f F d field_16877 probability + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_28993 method_28993 + m (Lenl;)Ljava/lang/Float; a method_28994 method_28994 + m (Lenl;)Ldtc; b method_28995 method_28995 + m (Ldtc;F)V + m ()V +c enm net/minecraft/class_3826 net/minecraft/world/level/levelgen/structure/templatesystem/RuleProcessor + f Lcom/mojang/serialization/MapCodec; a field_25011 CODEC + f Lcom/google/common/collect/ImmutableList; b field_16881 rules + m (Lenm;)Ljava/util/List; a method_28996 method_28996 + m (Ljava/util/List;)V + m ()V +c enn net/minecraft/class_3825 net/minecraft/world/level/levelgen/structure/templatesystem/RuleTest + f Lcom/mojang/serialization/Codec; c field_25012 CODEC + m ()Leno; a method_16766 getType + m (Ldtc;Layw;)Z a method_16768 test + m ()V + m ()V +c eno net/minecraft/class_3827 net/minecraft/world/level/levelgen/structure/templatesystem/RuleTestType + f Leno; a field_16982 ALWAYS_TRUE_TEST + f Leno; b field_16981 BLOCK_TEST + f Leno; c field_16985 BLOCKSTATE_TEST + f Leno; d field_16983 TAG_TEST + f Leno; e field_16980 RANDOM_BLOCK_TEST + f Leno; f field_16984 RANDOM_BLOCKSTATE_TEST + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_28997 method_28997 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Leno; a method_16821 register + m ()V +c enp net/minecraft/class_3492 net/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings + f Ldkv; a field_15564 mirror + f Ldmm; b field_15569 rotation + f Ljd; c field_15566 rotationPivot + f Z d field_15571 ignoreEntities + f Lejj; e field_15565 boundingBox + f Lend; f field_52242 liquidSettings + f Layw; g field_15570 random + f I h field_15575 palette + f Ljava/util/List; i field_16446 processors + f Z j field_16587 knownShape + f Z k field_24043 finalizeEntities + m ()Lenp; a method_15128 copy + m (Layw;)Lenp; a method_15112 setRandom + m (Ldkv;)Lenp; a method_15125 setMirror + m (Ldmm;)Lenp; a method_15123 setRotation + m (Lejj;)Lenp; a method_15126 setBoundingBox + m (Lend;)Lenp; a method_61020 setLiquidSettings + m (Lenq;)Lenp; a method_16184 addProcessor + m (Ljava/util/List;Ljd;)Lent$a; a method_15121 getRandomPalette + m (Ljd;)Lenp; a method_15119 setRotationPivot + m (Z)Lenp; a method_15133 setIgnoreEntities + m ()Lenp; b method_16183 clearProcessors + m (Lenq;)Lenp; b method_16664 popProcessor + m (Ljd;)Layw; b method_15115 getRandom + m (Z)Lenp; b method_15131 setKnownShape + m ()Ldkv; c method_15114 getMirror + m (Z)Lenp; c method_27264 setFinalizeEntities + m ()Ldmm; d method_15113 getRotation + m ()Ljd; e method_15134 getRotationPivot + m ()Z f method_15135 isIgnoreEntities + m ()Lejj; g method_15124 getBoundingBox + m ()Z h method_16444 getKnownShape + m ()Ljava/util/List; i method_16182 getProcessors + m ()Z j method_61021 shouldApplyWaterlogging + m ()Z k method_27265 shouldFinalizeEntities + m ()V +c enq net/minecraft/class_3491 net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor + m ()Lens; a method_16772 getType + m (Ldcz;Ljd;Ljd;Lent$c;Lent$c;Lenp;)Lent$c; a method_15110 processBlock + m (Lddl;Ljd;Ljd;Ljava/util/List;Ljava/util/List;Lenp;)Ljava/util/List; a method_49887 finalizeProcessing + m ()V +c enr net/minecraft/class_5497 net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessorList + f Ljava/util/List; a field_26662 list + m ()Ljava/util/List; a method_31027 list + m (Ljava/util/List;)V +c ens net/minecraft/class_3828 net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessorType + f Lcom/mojang/serialization/Codec; a field_25013 SINGLE_CODEC + f Lcom/mojang/serialization/Codec; b field_26663 LIST_OBJECT_CODEC + f Lcom/mojang/serialization/Codec; c field_25876 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; d field_25877 LIST_CODEC + f Lens; e field_16986 BLOCK_IGNORE + f Lens; f field_16988 BLOCK_ROT + f Lens; g field_16989 GRAVITY + f Lens; h field_16991 JIGSAW_REPLACEMENT + f Lens; i field_16990 RULE + f Lens; j field_16987 NOP + f Lens; k field_24044 BLOCK_AGE + f Lens; l field_24045 BLACKSTONE_REPLACE + f Lens; m field_25620 LAVA_SUBMERGED_BLOCK + f Lens; n field_33773 PROTECTED_BLOCKS + f Lens; o field_43335 CAPPED + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_28998 method_28998 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lens; a method_16822 register + m ()V +c ent net/minecraft/class_3499 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate + f Ljava/lang/String; a field_31687 PALETTE_TAG + f Ljava/lang/String; b field_31688 PALETTE_LIST_TAG + f Ljava/lang/String; c field_31689 ENTITIES_TAG + f Ljava/lang/String; d field_31690 BLOCKS_TAG + f Ljava/lang/String; e field_31691 BLOCK_TAG_POS + f Ljava/lang/String; f field_31692 BLOCK_TAG_STATE + f Ljava/lang/String; g field_31693 BLOCK_TAG_NBT + f Ljava/lang/String; h field_31694 ENTITY_TAG_POS + f Ljava/lang/String; i field_31695 ENTITY_TAG_BLOCKPOS + f Ljava/lang/String; j field_31696 ENTITY_TAG_NBT + f Ljava/lang/String; k field_31697 SIZE_TAG + f Ljava/util/List; l field_15586 palettes + f Ljava/util/List; m field_15589 entityInfoList + f Lkh; n field_15587 size + f Ljava/lang/String; o field_15588 author + m ()Lkh; a method_15160 getSize + m (Lbsr;)Z a method_15163 method_15163 + m (Ldcw;Ljd;Ljd;)V a method_15164 fillEntityList + m (Ldcw;Ljd;Lkh;ZLdfy;)V a method_15174 fillFromWorld + m (Ldcx;ILexl;III)V a method_20532 updateShapeAtEdge + m (Ldcx;ILexl;Ljd;)V a method_58190 updateShapeAtEdge + m (Lddl;Ljd;Ldkv;Ldmm;Ljd;Lejj;Z)V a method_15179 placeEntities + m (Lddl;Ljd;Ljd;Lenp;Layw;I)Z a method_15172 placeInWorld + m (Lddl;Ljd;Ljd;Lenp;Ljava/util/List;)Ljava/util/List; a method_16446 processBlockInfos + m (Lddl;Lub;)Ljava/util/Optional; a method_17916 createEntityIgnoreException + m (Ldmm;)Lkh; a method_15166 getSize + m (Ldmm;Ldkv;Lexc;ZLddl;Lbsr;)V a method_17917 method_17917 + m (Lenp;Ljd;)Ljd; a method_15171 calculateRelativePosition + m (Lenp;Ljd;Lenp;Ljd;)Ljd; a method_15180 calculateConnectedPosition + m (Lent$c;)I a method_28053 method_28053 + m (Lent$c;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V a method_28054 addToLists + m (Lexc;Ldkv;Ldmm;Ljd;)Lexc; a method_15176 transform + m (Ljava/lang/String;)V a method_15161 setAuthor + m (Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/util/List; a method_28055 buildInfoList + m (Ljd$a;IIILjd$a;Ldcx;ILji;III)V a method_15173 method_15173 + m (Ljd;Ldkv;Ldmm;)Ljd; a method_15167 getZeroPositionWithTransform + m (Ljd;Ldkv;Ldmm;II)Ljd; a method_15162 getZeroPositionWithTransform + m (Ljd;Ldkv;Ldmm;Ljd;)Ljd; a method_15168 transform + m (Ljd;Ldmm;Ljd;Ldkv;)Lejj; a method_27267 getBoundingBox + m (Ljd;Ldmm;Ljd;Ldkv;Lkh;)Lejj; a method_34400 getBoundingBox + m (Ljd;Lenp;Ldfy;)Ljava/util/List; a method_16445 filterBlocks + m (Ljd;Lenp;Ldfy;Z)Lit/unimi/dsi/fastutil/objects/ObjectArrayList; a method_15165 filterBlocks + m (Ljn;Lub;)V a method_15183 load + m (Ljn;Luh;Luh;)V a method_15177 loadPalette + m (Lub;)Lub; a method_15175 save + m ([D)Luh; a method_15184 newDoubleList + m ([I)Luh; a method_15169 newIntegerList + m ()Ljava/lang/String; b method_15181 getAuthor + m (Lenp;Ljd;)Lejj; b method_16187 getBoundingBox + m (Lent$c;)I b method_28056 method_28056 + m (Lent$c;)I c method_16185 method_16185 + m ()V +c ent$1 net/minecraft/class_3499$1 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$1 + f [I a field_15594 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_15593 $SwitchMap$net$minecraft$world$level$block$Mirror + m ()V +c ent$a net/minecraft/class_3499$class_5162 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$Palette + f Ljava/util/List; a field_23913 blocks + f Ljava/util/Map; b field_23914 cache + m ()Ljava/util/List; a method_27125 blocks + m (Ldfy;)Ljava/util/List; a method_27126 blocks + m (Ldfy;Lent$c;)Z a method_27127 method_27127 + m (Ldfy;)Ljava/util/List; b method_27128 method_27128 + m (Ljava/util/List;)V +c ent$b net/minecraft/class_3499$class_3500 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$SimplePalette + f Ldtc; a field_15590 DEFAULT_BLOCK_STATE + f Ljs; b field_15591 ids + f I c field_15592 lastId + m (I)Ldtc; a method_15185 stateFor + m (Ldtc;)I a method_15187 idFor + m (Ldtc;I)V a method_15186 addMapping + m ()V + m ()V +c ent$c net/minecraft/class_3499$class_3501 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$StructureBlockInfo + f Ljd; a comp_1341 pos + f Ldtc; b comp_1342 state + f Lub; c comp_1343 nbt + m ()Ljd; a comp_1341 pos + m ()Ldtc; b comp_1342 state + m ()Lub; c comp_1343 nbt + m (Ljd;Ldtc;Lub;)V +c ent$d net/minecraft/class_3499$class_3502 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate$StructureEntityInfo + f Lexc; a field_15599 pos + f Ljd; b field_15600 blockPos + f Lub; c field_15598 nbt + m (Lexc;Ljd;Lub;)V +c enu net/minecraft/class_3485 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager + f Ljava/lang/String; a field_31684 STRUCTURE_RESOURCE_DIRECTORY_NAME + f Lorg/slf4j/Logger; b field_15514 LOGGER + f Ljava/lang/String; c field_52243 STRUCTURE_GENERATED_DIRECTORY_NAME + f Ljava/lang/String; d field_31685 STRUCTURE_FILE_EXTENSION + f Ljava/lang/String; e field_31686 STRUCTURE_TEXT_FILE_EXTENSION + f Ljava/util/Map; f field_15513 structureRepository + f Lcom/mojang/datafixers/DataFixer; g field_15515 fixerUpper + f Laue; h field_25189 resourceManager + f Ljava/nio/file/Path; i field_15512 generatedDir + f Ljava/util/List; j field_39417 sources + f Ljn; k field_40369 blockLookup + f Lakk; l field_52244 RESOURCE_LISTER + m ()Ljava/util/stream/Stream; a method_44226 listTemplates + m (ILjava/lang/String;)Ljava/lang/String; a method_44227 method_44227 + m (Lakr;)Lent; a method_15091 getOrCreate + m (Lakr;Ljava/lang/String;)Ljava/nio/file/Path; a method_15085 createAndValidatePathToGeneratedStructure + m (Lakr;Ljava/lang/Throwable;)V a method_44229 method_44229 + m (Lakr;Ljava/nio/file/Path;)Ljava/util/Optional; a method_44230 loadFromSnbt + m (Laue;)V a method_29300 onResourceManagerReload + m (Lenu$a;Ljava/util/function/Consumer;)Ljava/util/Optional; a method_44231 load + m (Lenu$b;)Ljava/util/stream/Stream; a method_44232 method_44232 + m (Ljava/io/InputStream;)Lent; a method_15090 readStructure + m (Ljava/lang/String;Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Z a method_44233 method_44233 + m (Ljava/nio/file/Path;)Z a method_44242 method_44242 + m (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Consumer;)V a method_44236 listFolderContents + m (Ljava/nio/file/Path;Ljava/lang/Throwable;)V a method_44237 method_44237 + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/lang/String; a method_44238 relativize + m (Ljava/util/function/Consumer;Ljava/lang/String;Ljava/util/function/Function;Ljava/nio/file/Path;Ljava/nio/file/Path;)V a method_61022 method_61022 + m (Lub;)Lent; a method_21891 readStructure + m ()Ljava/util/stream/Stream; b method_44239 listResources + m (Lakr;)Ljava/util/Optional; b method_15094 get + m (Ljava/nio/file/Path;)Ljava/io/InputStream; b method_44244 method_44244 + m ()Ljava/util/stream/Stream; c method_44241 listTestStructures + m (Lakr;)Z c method_15093 save + m ()Ljava/util/stream/Stream; d method_44243 listGenerated + m (Lakr;)V d method_15087 remove + m (Lakr;)Ljava/util/Optional; e method_44245 tryLoad + m (Lakr;)Ljava/util/Optional; f method_15088 loadFromResource + m (Lakr;)Ljava/util/Optional; g method_44246 loadFromTestStructures + m (Lakr;)Ljava/util/Optional; h method_15092 loadFromGenerated + m (Lakr;)Ljava/io/InputStream; i method_44249 method_44249 + m (Laue;Lerf$c;Lcom/mojang/datafixers/DataFixer;Ljn;)V + m ()V +c enu$a net/minecraft/class_3485$class_7513 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager$InputStreamOpener +c enu$b net/minecraft/class_3485$class_7514 net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplateManager$Source + f Ljava/util/function/Function; a comp_852 loader + f Ljava/util/function/Supplier; b comp_853 lister + m ()Ljava/util/function/Function; a comp_852 loader + m ()Ljava/util/function/Supplier; b comp_853 lister + m (Ljava/util/function/Function;Ljava/util/function/Supplier;)V +c env net/minecraft/class_3798 net/minecraft/world/level/levelgen/structure/templatesystem/TagMatchTest + f Lcom/mojang/serialization/MapCodec; a field_25014 CODEC + f Lawu; b field_16747 tag + m (Lenv;)Lawu; a method_28999 method_28999 + m (Lawu;)V + m ()V +c enw net/minecraft/class_6133 net/minecraft/world/level/levelgen/structure/templatesystem/package-info +c enx net/minecraft/class_8244 net/minecraft/world/level/levelgen/structure/templatesystem/rule/blockentity/AppendLoot + f Lcom/mojang/serialization/MapCodec; a field_43336 CODEC + f Lorg/slf4j/Logger; b field_43337 LOGGER + f Lakq; d field_43338 lootTable + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49893 method_49893 + m (Lenx;)Lakq; a method_49894 method_49894 + m (Lub;Luy;)V a method_49895 method_49895 + m (Lakq;)V + m ()V +c eny net/minecraft/class_8245 net/minecraft/world/level/levelgen/structure/templatesystem/rule/blockentity/AppendStatic + f Lcom/mojang/serialization/MapCodec; a field_43339 CODEC + f Lub; b field_43340 tag + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_49896 method_49896 + m (Leny;)Lub; a method_49897 method_49897 + m (Lub;)V + m ()V +c enz net/minecraft/class_8246 net/minecraft/world/level/levelgen/structure/templatesystem/rule/blockentity/Clear + f Lcom/mojang/serialization/MapCodec; a field_43341 CODEC + f Lenz; b field_43342 INSTANCE + m ()V + m ()V +c eoa net/minecraft/class_8247 net/minecraft/world/level/levelgen/structure/templatesystem/rule/blockentity/Passthrough + f Leoa; a field_43343 INSTANCE + f Lcom/mojang/serialization/MapCodec; b field_43344 CODEC + m ()V + m ()V +c eob net/minecraft/class_8248 net/minecraft/world/level/levelgen/structure/templatesystem/rule/blockentity/RuleBlockEntityModifier + f Lcom/mojang/serialization/Codec; c field_43345 CODEC + m ()Leoc; a method_49891 getType + m (Layw;Lub;)Lub; a method_49892 apply + m ()V +c eoc net/minecraft/class_8249 net/minecraft/world/level/levelgen/structure/templatesystem/rule/blockentity/RuleBlockEntityModifierType + f Leoc; a field_43346 CLEAR + f Leoc; b field_43347 PASSTHROUGH + f Leoc; c field_43348 APPEND_STATIC + f Leoc; d field_43349 APPEND_LOOT + m (Lcom/mojang/serialization/MapCodec;)Lcom/mojang/serialization/MapCodec; a method_49898 method_49898 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Leoc; a method_49899 register + m ()V +c eod net/minecraft/class_8250 net/minecraft/world/level/levelgen/structure/templatesystem/rule/blockentity/package-info +c eoe net/minecraft/class_5822 net/minecraft/world/level/levelgen/synth/BlendedNoise + f Layh; a field_37206 CODEC + f Lcom/mojang/serialization/Codec; e field_38269 SCALE_RANGE + f Lcom/mojang/serialization/MapCodec; f field_38270 DATA_CODEC + f Leoi; g field_28774 minLimitNoise + f Leoi; h field_28775 maxLimitNoise + f Leoi; i field_28776 mainNoise + f D j field_38271 xzMultiplier + f D k field_38272 yMultiplier + f D l field_38273 xzFactor + f D m field_38274 yFactor + f D n field_38275 smearScaleMultiplier + f D o field_36630 maxValue + f D p field_34752 xzScale + f D q field_34753 yScale + m (DDDDD)Leoe; a method_42384 createUnseeded + m (Layw;)Leoe; a method_42386 withNewRandom + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_42385 method_42385 + m (Leoe;)Ljava/lang/Double; a method_42387 method_42387 + m (Ljava/lang/StringBuilder;)V a method_39117 parityConfigString + m (Leoe;)Ljava/lang/Double; b method_42388 method_42388 + m (Leoe;)Ljava/lang/Double; c method_42389 method_42389 + m (Leoe;)Ljava/lang/Double; d method_42390 method_42390 + m (Leoe;)Ljava/lang/Double; e method_42391 method_42391 + m (Leoi;Leoi;Leoi;DDDDD)V + m (Layw;DDDDD)V + m ()V +c eof net/minecraft/class_3756 net/minecraft/world/level/levelgen/synth/ImprovedNoise + f D a field_16591 xo + f D b field_16589 yo + f D c field_16588 zo + f F d field_31701 SHIFT_UP_EPSILON + f [B e field_16590 p + m (DDD)D a method_33658 noise + m (DDDDD)D a method_16447 noise + m (DDD[D)D a method_35477 noiseWithDerivative + m (I)I a method_16449 p + m (IDDD)D a method_16448 gradDot + m (IIIDDDD)D a method_16450 sampleAndLerp + m (IIIDDD[D)D a method_35478 sampleWithDerivative + m (Ljava/lang/StringBuilder;)V a method_39118 parityConfigString + m (Layw;)V +c eog net/minecraft/class_5836 net/minecraft/world/level/levelgen/synth/NoiseUtils + m (DD)D a method_35479 biasTowardsExtreme + m (Ljava/lang/StringBuilder;DDD[B)V a method_39119 parityNoiseOctaveConfigString + m (Ljava/lang/StringBuilder;DDD[I)V a method_39120 parityNoiseOctaveConfigString + m ()V +c eoh net/minecraft/class_5216 net/minecraft/world/level/levelgen/synth/NormalNoise + f D a field_31702 INPUT_FACTOR + f D b field_31703 TARGET_DEVIATION + f D c field_24175 valueFactor + f Leoi; d field_24176 first + f Leoi; e field_24177 second + f D f field_36631 maxValue + f Leoh$a; g field_37207 parameters + m ()D a method_40554 maxValue + m (DDD)D a method_27406 getValue + m (I)D a method_27407 expectedDeviation + m (Layw;I[D)Leoh; a method_31927 create + m (Layw;Leoh$a;)Leoh; a method_39186 createLegacyNetherBiome + m (Ljava/lang/StringBuilder;)V a method_39124 parityConfigString + m ()Leoh$a; b method_38475 parameters + m (Layw;Leoh$a;)Leoh; b method_38476 create + m (Layw;Leoh$a;Z)V +c eoh$a net/minecraft/class_5216$class_5487 net/minecraft/world/level/levelgen/synth/NormalNoise$NoiseParameters + f Lcom/mojang/serialization/Codec; a field_35424 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; b field_26438 CODEC + f I c comp_516 firstOctave + f Lit/unimi/dsi/fastutil/doubles/DoubleList; d comp_517 amplitudes + m ()I a comp_516 firstOctave + m (DLit/unimi/dsi/fastutil/doubles/DoubleArrayList;)V a method_41153 method_41153 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_30833 method_30833 + m ()Lit/unimi/dsi/fastutil/doubles/DoubleList; b comp_517 amplitudes + m (ILjava/util/List;)V + m (ID[D)V + m (ILit/unimi/dsi/fastutil/doubles/DoubleList;)V + m ()V +c eoi net/minecraft/class_3537 net/minecraft/world/level/levelgen/synth/PerlinNoise + f I a field_31704 ROUND_OFF + f [Leof; b field_15744 noiseLevels + f I c field_34758 firstOctave + f Lit/unimi/dsi/fastutil/doubles/DoubleList; d field_26445 amplitudes + f D e field_20659 lowestFreqValueFactor + f D f field_20660 lowestFreqInputFactor + f D g field_36632 maxValue + m ()D a method_40555 maxValue + m (D)D a method_40556 maxBrokenValue + m (DDD)D a method_15416 getValue + m (DDDDDZ)D a method_16453 getValue + m (I)Leof; a method_16668 getOctaveNoise + m (Layw;)V a method_34401 skipOctave + m (Layw;ID[D)Leoi; a method_35480 create + m (Layw;ILit/unimi/dsi/fastutil/doubles/DoubleList;)Leoi; a method_39126 createLegacyForLegacyNetherBiome + m (Layw;Ljava/util/List;)Leoi; a method_39127 create + m (Layw;Ljava/util/stream/IntStream;)Leoi; a method_39187 createLegacyForBlendedNoise + m (Lit/unimi/dsi/fastutil/ints/IntSortedSet;)Lcom/mojang/datafixers/util/Pair; a method_30848 makeAmplitudes + m (Ljava/lang/Double;)Ljava/lang/String; a method_39129 method_39129 + m (Ljava/lang/StringBuilder;)V a method_39130 parityConfigString + m ()I b method_38477 firstOctave + m (D)D b method_16452 wrap + m (Layw;ILit/unimi/dsi/fastutil/doubles/DoubleList;)Leoi; b method_30847 create + m (Layw;Ljava/util/stream/IntStream;)Leoi; b method_39128 create + m (Ljava/lang/Double;)Z b method_39131 method_39131 + m ()Lit/unimi/dsi/fastutil/doubles/DoubleList; c method_38478 amplitudes + m (D)D c method_40557 edgeValue + m (Layw;Lcom/mojang/datafixers/util/Pair;Z)V +c eoj net/minecraft/class_3543 net/minecraft/world/level/levelgen/synth/PerlinSimplexNoise + f [Leok; a field_15770 noiseLevels + f D b field_20661 highestFreqValueFactor + f D c field_20662 highestFreqInputFactor + m (DDZ)D a method_16451 getValue + m (Layw;Ljava/util/List;)V + m (Layw;Lit/unimi/dsi/fastutil/ints/IntSortedSet;)V +c eok net/minecraft/class_3541 net/minecraft/world/level/levelgen/synth/SimplexNoise + f [[I a field_15766 GRADIENT + f D b field_15763 xo + f D c field_15762 yo + f D d field_15761 zo + f D e field_15764 SQRT_3 + f D f field_15768 F2 + f D g field_15767 G2 + f [I h field_15765 p + m (DD)D a method_15433 getValue + m (DDD)D a method_22416 getValue + m (I)I a method_16456 p + m (IDDDD)D a method_16455 getCornerNoise3D + m ([IDDD)D a method_15431 dot + m (Layw;)V + m ()V +c eol net/minecraft/class_6135 net/minecraft/world/level/levelgen/synth/package-info +c eom net/minecraft/class_3552 net/minecraft/world/level/lighting/BlockLightEngine + f Ljd$a; g field_16511 mutablePos + m (JLdtc;)I a method_15474 getEmission + m (Ljd;Ldtc;)V a method_51532 method_51532 + m (Ldvl;)V + m (Ldvl;Leon;)V +c eon net/minecraft/class_3547 net/minecraft/world/level/lighting/BlockLightSectionStorage + m (Ldvl;)V +c eon$a net/minecraft/class_3547$class_3548 net/minecraft/world/level/lighting/BlockLightSectionStorage$BlockDataLayerStorageMap + m ()Leon$a; a method_15443 copy + m (Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;)V +c eoo net/minecraft/class_8528 net/minecraft/world/level/lighting/ChunkSkyLightSources + f I a field_44710 NEGATIVE_INFINITY + f I b field_44711 SIZE + f I c field_44712 minY + f Laxc; d field_44713 heightmap + f Ljd$a; e field_44714 mutablePos1 + f Ljd$a; f field_44715 mutablePos2 + m ()I a method_51533 getHighestLowestSourceY + m (I)V a method_51534 fill + m (II)I a method_51535 getLowestSourceY + m (Ldcc;III)Z a method_51536 update + m (Ldcc;IILjd;Ldtc;Ljd;Ldtc;)Z a method_51537 updateEdge + m (Ldcc;Ljd;Ldtc;)I a method_51538 findLowestSourceBelow + m (Ldcc;Ljd;Ldtc;Ljd;Ldtc;)Z a method_51539 isEdgeOccluded + m (Lduy;)V a method_51540 fillFrom + m (Lduy;III)I a method_51541 findLowestSourceY + m (I)I b method_51542 get + m (II)V b method_51543 set + m (I)I c method_51544 extendSourcesBelowWorld + m (II)I c method_51545 index + m (Ldcy;)V +c eop net/minecraft/class_3556 net/minecraft/world/level/lighting/DataLayerStorageMap + f Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap; a field_15791 map + f I b field_31705 CACHE_SIZE + f [J c field_15789 lastSectionKeys + f [Ldvd; d field_15790 lastSections + f Z e field_16447 cacheEnabled + m (J)Ldvd; a method_15502 copyDataLayer + m (JLdvd;)V a method_15499 setLayer + m ()Leop; b method_15504 copy + m (J)Z b method_15503 hasLayer + m ()V c method_15505 clearCache + m (J)Ldvd; c method_15501 getLayer + m ()V d method_16188 disableCache + m (J)Ldvd; d method_15500 removeLayer + m (Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;)V +c eoq net/minecraft/class_3554 net/minecraft/world/level/lighting/DynamicGraphMinFixedPoint + f I a field_31706 NO_COMPUTED_LEVEL + f Leou; b field_43396 priorityQueue + f Lit/unimi/dsi/fastutil/longs/Long2ByteMap; c field_15784 computedLevels + f Z d field_15782 hasWork + f J e field_43397 SOURCE + f I f field_15783 levelCount + m (II)I a method_50014 calculatePriority + m (J)Z a method_15494 isSource + m (JI)V a method_15485 setLevel + m (JIZ)V a method_15487 checkNeighborsAfterUpdate + m (JJI)I a method_15486 getComputedLevel + m (JJIIIZ)V a method_15482 checkEdge + m (JJIZ)V a method_15478 checkEdge + m (Ljava/util/function/LongPredicate;)V a method_24206 removeIf + m (Ljava/util/function/LongPredicate;Lit/unimi/dsi/fastutil/longs/LongList;J)V a method_24207 method_24207 + m ()Z b method_15489 hasWork + m (I)I b method_15492 runUpdates + m (JJI)I b method_15488 computeLevelFromNeighbor + m (JJIZ)V b method_15484 checkNeighbor + m ()I c method_24208 getQueueSize + m (J)I c method_15480 getLevel + m (J)V e method_15483 removeFromQueue + m (J)V f method_15491 checkNode + m (III)V +c eoq$1 net/minecraft/class_3554$1 net/minecraft/world/level/lighting/DynamicGraphMinFixedPoint$1 + f I a field_43398 val$minMapSize + f Leoq; b field_16727 field_16727 + m (Leoq;IFI)V +c eor net/minecraft/class_3562 net/minecraft/world/level/lighting/LayerLightEventListener + m (Lkf;)Ldvd; a method_15544 getDataLayerData + m (Ljd;)I b method_15543 getLightValue +c eor$a net/minecraft/class_3562$class_3563 net/minecraft/world/level/lighting/LayerLightEventListener$DummyLightLayerEventListener + f Leor$a; a field_15812 INSTANCE + f [Leor$a; b field_15811 $VALUES + m ()[Leor$a; c method_36763 $values + m (Ljava/lang/String;I)V + m ()V +c eos net/minecraft/class_3560 net/minecraft/world/level/lighting/LayerLightSectionStorage + f Ldvl; a field_15803 chunkSource + f Lit/unimi/dsi/fastutil/longs/Long2ByteMap; b field_44716 sectionStates + f Leop; c field_15806 visibleSectionData + f Leop; d field_15796 updatingSectionData + f Lit/unimi/dsi/fastutil/longs/LongSet; e field_15802 changedSections + f Lit/unimi/dsi/fastutil/longs/LongSet; f field_16448 sectionsAffectedByLightUpdates + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; g field_15807 queuedSections + f Z h field_44717 hasInconsistencies + f Lddf; i field_15805 layer + f Lit/unimi/dsi/fastutil/longs/LongSet; j field_44718 columnsWithSources + f Lit/unimi/dsi/fastutil/longs/LongSet; k field_19342 columnsToRetainQueuedDataFor + f Lit/unimi/dsi/fastutil/longs/LongSet; l field_15798 toRemove + m ()Z a method_15528 hasInconsistencies + m (J)I a method_15538 getLightValue + m (JB)V a method_51546 putSectionState + m (JI)V a method_15525 setStoredLevel + m (JLdvd;)V a method_15532 queueSectionData + m (JZ)Ldvd; a method_15522 getDataLayer + m (Leop;J)Ldvd; a method_15533 getDataLayer + m (Leov;)V a method_15527 markNewInconsistencies + m ()V b method_15530 swapSectionMap + m (J)Z b method_15524 storingLightForSection + m (JZ)V b method_15535 setLightEnabled + m (J)Ldvd; c method_51547 getDataLayerToWrite + m (JZ)V c method_20600 retainData + m (J)Ldvd; d method_20533 getDataLayerData + m (JZ)V d method_15526 updateSectionStatus + m (J)I e method_15537 getStoredLevel + m (J)V f method_51415 markSectionAndNeighborsAsAffected + m (J)Ldvd; g method_15529 createDataLayer + m (J)V h method_15523 onNodeAdded + m (J)V i method_15534 onNodeRemoved + m (J)Z j method_51548 lightOnInSection + m (J)Leos$b; k method_51549 getDebugSectionType + m (J)V l method_51550 initializeSection + m (J)V m method_51551 removeSection + m (Lddf;Ldvl;Leop;)V +c eos$a net/minecraft/class_3560$class_8529 net/minecraft/world/level/lighting/LayerLightSectionStorage$SectionState + f B a field_44719 EMPTY + f I b field_44720 MIN_NEIGHBORS + f I c field_44721 MAX_NEIGHBORS + f B d field_44722 HAS_DATA_BIT + f B e field_44723 NEIGHBOR_COUNT_BITS + m (B)Z a method_51552 hasData + m (BI)B a method_51553 neighborCount + m (BZ)B a method_51554 hasData + m (B)I b method_51555 neighborCount + m (B)Leos$b; c method_51556 type + m ()V +c eos$b net/minecraft/class_3560$class_8530 net/minecraft/world/level/lighting/LayerLightSectionStorage$SectionType + f Leos$b; a field_44724 EMPTY + f Leos$b; b field_44725 LIGHT_ONLY + f Leos$b; c field_44726 LIGHT_AND_DATA + f Ljava/lang/String; d field_44727 display + f [Leos$b; e field_44728 $VALUES + m ()Ljava/lang/String; a method_51557 display + m ()[Leos$b; b method_51558 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c eot net/minecraft/class_3568 net/minecraft/world/level/lighting/LevelLightEngine + f Leov; a field_15814 blockEngine + f I b field_31714 LIGHT_SECTION_PADDING + f Ldcy; c field_27339 levelHeightAccessor + f Leov; d field_15813 skyEngine + m (Lddf;)Leor; a method_15562 getLayerListener + m (Lddf;Lkf;)Ljava/lang/String; a method_22876 getDebugData + m (Lddf;Lkf;Ldvd;)V a method_15558 queueSectionData + m (Ljd;I)I a method_22363 getRawBrightness + m (Lkf;)Z a method_51559 lightOnInSection + m (Ldcd;Z)V b method_20601 retainData + m (Lddf;Lkf;)Leos$b; b method_51560 getDebugSectionType + m ()I c method_31928 getLightSectionCount + m ()I d method_31929 getMinLightSection + m ()I e method_31930 getMaxLightSection + m (Ldvl;ZZ)V +c eou net/minecraft/class_8257 net/minecraft/world/level/lighting/LeveledPriorityQueue + f I a field_43399 levelCount + f [Lit/unimi/dsi/fastutil/longs/LongLinkedOpenHashSet; b field_43400 queues + f I c field_43401 firstQueuedLevel + m ()J a method_50019 removeFirstLong + m (I)V a method_50020 checkFirstQueuedLevel + m (JI)V a method_50021 enqueue + m (JII)V a method_50022 dequeue + m ()Z b method_50023 isEmpty + m (II)V +c eou$1 net/minecraft/class_8257$1 net/minecraft/world/level/lighting/LeveledPriorityQueue$1 + f I a field_43402 val$minSize + f Leou; b field_43403 field_43403 + m (Leou;IFI)V +c eov net/minecraft/class_3558 net/minecraft/world/level/lighting/LightEngine + f I a field_44729 MAX_LEVEL + f I b field_44730 MIN_OPACITY + f J c field_44731 PULL_LIGHT_IN_ENTRY + f [Lji; d field_16513 PROPAGATION_DIRECTIONS + f Ldvl; e field_15795 chunkSource + f Leos; f field_15793 storage + f I g field_44732 MIN_QUEUE_SIZE + f Lit/unimi/dsi/fastutil/longs/LongOpenHashSet; h field_44733 blockNodesToCheck + f Lit/unimi/dsi/fastutil/longs/LongArrayFIFOQueue; i field_44734 decreaseQueue + f Lit/unimi/dsi/fastutil/longs/LongArrayFIFOQueue; j field_44735 increaseQueue + f Ljd$a; k field_19284 mutablePos + f I l field_31709 CACHE_SIZE + f [J m field_17397 lastChunkPos + f [Ldvk; n field_17398 lastChunk + m (II)Ldvk; a method_17529 getChunk + m (J)V a method_51529 checkNode + m (JJ)V a method_51530 propagateDecrease + m (JJI)V a method_51531 propagateIncrease + m (JLdtc;JLdtc;Lji;)Z a method_50016 shapeOccludes + m (JLdvd;)V a method_15515 queueSectionData + m (Ldcc;Ldtc;Ljd;Ldtc;Ljd;Lji;I)I a method_20049 getLightBlockInto + m (Ldcc;Ljd;Ldtc;Ldtc;)Z a method_51561 hasDifferentLightProperties + m (Ldcc;Ljd;Ldtc;Lji;)Lexv; a method_51562 getOcclusionShape + m (Ldtc;)Z a method_51563 isEmptyShape + m (Ldtc;JLji;)Lexv; a method_20710 getOcclusionShape + m (Ldtc;Ljd;)I a method_50017 getOpacity + m (J)Ljava/lang/String; b method_22875 getDebugData + m (JJ)V b method_51565 enqueueDecrease + m (Ldcd;Z)V b method_20599 retainData + m ()V c method_17530 clearChunkCache + m (J)Leos$b; c method_51568 getDebugSectionType + m (JJ)V c method_51566 enqueueIncrease + m (Ljd;)Ldtc; c method_50018 getState + m ()I d method_51567 propagateIncreases + m ()I e method_51570 propagateDecreases + m (Ldvl;Leos;)V + m ()V +c eov$a net/minecraft/class_3558$class_8531 net/minecraft/world/level/lighting/LightEngine$QueueEntry + f I a field_44737 FROM_LEVEL_BITS + f I b field_44738 DIRECTION_BITS + f J c field_44739 LEVEL_MASK + f J d field_44740 DIRECTIONS_MASK + f J e field_44741 FLAG_FROM_EMPTY_SHAPE + f J f field_44742 FLAG_INCREASE_FROM_EMISSION + m (I)J a method_51571 decreaseAllDirections + m (ILji;)J a method_51572 decreaseSkipOneDirection + m (IZ)J a method_51573 increaseLightFromEmission + m (IZLji;)J a method_51574 increaseSkipOneDirection + m (J)I a method_51575 getFromLevel + m (JI)J a method_51576 withLevel + m (JLji;)Z a method_51577 shouldPropagateInDirection + m (ZZZZZ)J a method_51578 increaseSkySourceInDirections + m (IZLji;)J b method_51579 increaseOnlyOneDirection + m (J)Z b method_51580 isFromEmptyShape + m (JLji;)J b method_51581 withDirection + m (J)Z c method_51582 isIncreaseFromEmission + m (JLji;)J c method_51583 withoutDirection + m ()V +c eow net/minecraft/class_3565 net/minecraft/world/level/lighting/LightEventListener + m ()Z K_ method_15518 hasLightWork + m ()I a method_15516 runLightUpdates + m (Ldcd;Z)V a method_15512 setLightEnabled + m (Ljd;)V a method_15513 checkBlock + m (Ljd;Z)V a method_15552 updateSectionStatus + m (Lkf;Z)V a method_15551 updateSectionStatus + m (Ldcd;)V b method_51471 propagateLightSources +c eox net/minecraft/class_3572 net/minecraft/world/level/lighting/SkyLightEngine + f J g field_44743 REMOVE_TOP_SKY_SOURCE_ENTRY + f J h field_44744 REMOVE_SKY_SOURCE_ENTRY + f J i field_44745 ADD_SKY_SOURCE_ENTRY + f Ljd$a; j field_44746 mutablePos + f Leoo; k field_44747 emptyChunkSources + m (I)Z a method_51584 isSourceLevel + m (III)I a method_51585 getLowestSourceY + m (IIII)V a method_51586 removeSourcesBelow + m (JLji;IZI)V a method_51587 propagateFromEmptySections + m (Lji;II)Z a method_51588 crossedSectionEdge + m (II)Leoo; b method_51589 getChunkSources + m (III)V b method_51590 updateSourcesInColumn + m (IIII)V b method_51591 addSourcesAbove + m (J)I d method_51592 countEmptySectionsBelowIfAtBorder + m (Ldvl;)V + m (Ldvl;Leoy;)V + m ()V +c eox$1 net/minecraft/class_3572$1 net/minecraft/world/level/lighting/SkyLightEngine$1 + f [I a field_15809 $SwitchMap$net$minecraft$core$Direction + m ()V +c eoy net/minecraft/class_3569 net/minecraft/world/level/lighting/SkyLightSectionStorage + m (I)Z a method_15567 hasLightDataAtOrBelow + m (Ldvd;)Ldvd; a method_37460 repeatFirstLayer + m ()I c method_51593 getBottomSectionY + m (JZ)I e method_31931 getLightValue + m (J)Z l method_15568 isAboveData + m (J)I m method_51594 getTopSectionY + m (Ldvl;)V +c eoy$a net/minecraft/class_3569$class_3570 net/minecraft/world/level/lighting/SkyLightSectionStorage$SkyDataLayerStorageMap + f I b field_15822 currentLowestY + f Lit/unimi/dsi/fastutil/longs/Long2IntOpenHashMap; c field_15821 topSections + m ()Leoy$a; a method_15572 copy + m (Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;Lit/unimi/dsi/fastutil/longs/Long2IntOpenHashMap;I)V +c eoz net/minecraft/class_6136 net/minecraft/world/level/lighting/SpatialLongSet + f Leoz$a; a field_31715 map + m (IF)V +c eoz$a net/minecraft/class_6136$class_6137 net/minecraft/world/level/lighting/SpatialLongSet$InternalMap + f I a field_31716 X_BITS + f I b field_31717 Z_BITS + f I c field_31718 Y_BITS + f I d field_31719 Y_OFFSET + f I e field_31720 Z_OFFSET + f I g field_31721 X_OFFSET + f J h field_31722 OUTER_MASK + f I i field_31723 lastPos + f J j field_31724 lastOuterKey + f I k field_31725 minSize + m ()J a method_35481 removeFirstBit + m (IJ)Z a method_35482 replaceBit + m (J)J a method_35483 getOuterKey + m (JI)J a method_35484 getFullKey + m (IJ)Z b method_35485 removeFromEntry + m (J)I b method_35486 getInnerKey + m (J)Z c method_35487 addBit + m (J)Z d method_35488 removeBit + m (J)Z e method_35489 removeFromNullEntry + m (IF)V + m ()V +c epa net/minecraft/class_6138 net/minecraft/world/level/lighting/package-info +c epb net/minecraft/class_3576 net/minecraft/world/level/material/EmptyFluid + m ()V +c epc net/minecraft/class_3609 net/minecraft/world/level/material/FlowingFluid + f Ldtt; a field_15902 FALLING + f Lduc; b field_15900 LEVEL + f I e field_31726 CACHE_SIZE + f Ljava/lang/ThreadLocal; f field_15901 OCCLUSION_CACHE + f Ljava/util/Map; g field_17587 shapes + m (IZ)Lepe; a method_15728 getFlowing + m (Ldcc;Lepd;Ljd;Ldtc;Ljd;Ldtc;)Z a method_15736 isWaterHole + m (Ldcc;Lepd;Ljd;Ldtc;Lji;Ljd;Ldtc;Lepe;)Z a method_15746 canPassThrough + m (Ldcc;Ljd;Ldtc;Lepd;)Z a method_15754 canHoldFluid + m (Ldcc;Ljd;Ldtc;Lji;Ljd;Ldtc;Lepe;Lepd;)Z a method_15738 canSpreadTo + m (Ldcc;Ljd;Lji;)Z a method_15749 isSolidFace + m (Ldcw;)Z a method_15737 canConvertToSource + m (Ldcw;Ljd;Ldtc;)Lepe; a method_15727 getNewLiquid + m (Ldcw;Ljd;Lepe;)V a method_15725 spread + m (Ldcw;Ljd;Lepe;Ldtc;)V a method_15744 spreadToSides + m (Ldcw;Ljd;Lepe;Lepe;)I a method_15753 getSpreadDelay + m (Ldcw;Ljd;Ljd;Ldtc;S)Z a method_15731 method_15731 + m (Ldcw;Ljd;S)Lcom/mojang/datafixers/util/Pair; a method_15734 method_15734 + m (Ldcx;Ljd;Ldtc;)V a method_15730 beforeDestroyingBlock + m (Ldcx;Ljd;Ldtc;Lji;Lepe;)V a method_15745 spreadTo + m (Ldcz;Ljd;)I a method_15740 sourceNeighborCount + m (Ldcz;Ljd;ILji;Ldtc;Ljd;Lit/unimi/dsi/fastutil/shorts/Short2ObjectMap;Lit/unimi/dsi/fastutil/shorts/Short2BooleanMap;)I a method_15742 getSlopeDistance + m (Ldcz;Ljd;S)Lcom/mojang/datafixers/util/Pair; a method_15755 method_15755 + m (Ljd;Ldcz;Ldtc;S)Z a method_15743 method_15743 + m (Ljd;Ljd;)S a method_15747 getCacheKey + m (Lji;Ldcc;Ljd;Ldtc;Ljd;Ldtc;)Z a method_15732 canPassThroughWall + m (Z)Lepe; a method_15729 getSource + m (Ldcc;Ljd;Lepe;)Lexv; b method_17773 method_17773 + m (Ldcw;Ljd;Ldtc;)Ljava/util/Map; b method_15726 getSpread + m (Ldcz;)I b method_15733 getSlopeFindDistance + m (Ldcz;)I c method_15739 getDropOff + m (Lepe;Ldcc;Ljd;)Z c method_17774 hasSameAbove + m ()Lepd; d method_15750 getFlowing + m ()Lepd; e method_15751 getSource + m (Lepe;)I e method_15741 getLegacyLevel + m (Lepe;)Z g method_15748 affectsFlow + m (Lepe;)Z h method_15752 isSourceBlockOfThisType + m ()Lit/unimi/dsi/fastutil/objects/Object2ByteLinkedOpenHashMap; l method_15735 method_15735 + m ()V + m ()V +c epc$1 net/minecraft/class_3609$1 net/minecraft/world/level/material/FlowingFluid$1 + m (I)V +c epd net/minecraft/class_3611 net/minecraft/world/level/material/Fluid + f Lepe; a field_15903 defaultFluidState + f Ljm$c; b field_36431 builtInRegistryHolder + f Ljs; c field_15904 FLUID_STATE_REGISTRY + f Ldtd; d field_15905 stateDefinition + m ()Lcul; a method_15774 getBucket + m (Lawu;)Z a method_15791 is + m (Ldcc;Ljd;Lepe;)Lexc; a method_15782 getFlow + m (Ldcw;Ljd;Lepe;Layw;)V a method_15776 animateTick + m (Ldcz;)I a method_15789 getTickDelay + m (Ldtd$a;)V a method_15775 createFluidStateDefinition + m (Lepd;)Z a method_15780 isSame + m (Lepe;)F a method_20784 getOwnHeight + m (Lepe;Ldcc;Ljd;)F a method_15788 getHeight + m (Lepe;Ldcc;Ljd;Lepd;Lji;)Z a method_15777 canBeReplacedWith + m ()Z b method_15794 isEmpty + m (Ldcw;Ljd;Lepe;)V b method_15778 tick + m (Ldcw;Ljd;Lepe;Layw;)V b method_15792 randomTick + m (Lepe;)Ldtc; b method_15790 createLegacyBlock + m (Lepe;Ldcc;Ljd;)Lexv; b method_17775 getShape + m ()F c method_15784 getExplosionResistance + m (Lepe;)Z c method_15793 isSource + m (Lepe;)I d method_15779 getAmount + m ()Ldtd; f method_15783 getStateDefinition + m (Lepe;)V f method_15781 registerDefaultState + m ()Lepe; g method_15785 defaultFluidState + m ()Llk; h method_15787 getDripParticle + m ()Z i method_15795 isRandomlyTicking + m ()Ljava/util/Optional; j method_32359 getPickupSound + m ()Ljm$c; k method_40178 builtInRegistryHolder + m ()V + m ()V +c epe net/minecraft/class_3610 net/minecraft/world/level/material/FluidState + f Lcom/mojang/serialization/Codec; a field_25018 CODEC + f I b field_31727 AMOUNT_MAX + f I g field_31728 AMOUNT_FULL + m ()Lepd; a method_15772 getType + m (Lawu;)Z a method_15767 is + m (Ldcc;Ljd;)F a method_15763 getHeight + m (Ldcc;Ljd;Lepd;Lji;)Z a method_15764 canBeReplacedWith + m (Ldcw;Ljd;)V a method_15770 tick + m (Ldcw;Ljd;Layw;)V a method_15768 animateTick + m (Lepd;)Z a method_33659 isSourceOfType + m (Ljq;)Z a method_40179 is + m ()Z b method_15771 isSource + m (Ldcc;Ljd;)Z b method_15756 shouldRenderBackwardUpFace + m (Ldcw;Ljd;Layw;)V b method_15757 randomTick + m (Lepd;)Z b method_39360 is + m ()Z c method_15769 isEmpty + m (Ldcc;Ljd;)Lexc; c method_15758 getFlow + m ()F d method_20785 getOwnHeight + m (Ldcc;Ljd;)Lexv; d method_17776 getShape + m ()I e method_15761 getAmount + m ()Z f method_15773 isRandomlyTicking + m ()Ldtc; g method_15759 createLegacyBlock + m ()Llk; h method_15766 getDripParticle + m ()F i method_15760 getExplosionResistance + m ()Ljm; j method_40180 holder + m ()Ljava/util/stream/Stream; k method_40181 getTags + m (Lepd;Lit/unimi/dsi/fastutil/objects/Reference2ObjectArrayMap;Lcom/mojang/serialization/MapCodec;)V + m ()V +c epf net/minecraft/class_3612 net/minecraft/world/level/material/Fluids + f Lepd; a field_15906 EMPTY + f Lepc; b field_15909 FLOWING_WATER + f Lepc; c field_15910 WATER + f Lepc; d field_15907 FLOWING_LAVA + f Lepc; e field_15908 LAVA + m (Ljava/lang/String;Lepd;)Lepd; a method_15796 register + m ()V + m ()V +c epg net/minecraft/class_5636 net/minecraft/world/level/material/FogType + f Lepg; a field_27885 LAVA + f Lepg; b field_27886 WATER + f Lepg; c field_27887 POWDER_SNOW + f Lepg; d field_27888 NONE + f [Lepg; e field_27889 $VALUES + m ()[Lepg; a method_36764 $values + m (Ljava/lang/String;I)V + m ()V +c eph net/minecraft/class_3616 net/minecraft/world/level/material/LavaFluid + f F e field_31729 MIN_LEVEL_CUTOFF + m (Ldcx;Ljd;)V a method_15818 fizz + m (Ldcz;Ljd;)Z a method_15819 hasFlammableNeighbours + m (Ldcz;Ljd;)Z b method_15817 isFlammable + m ()V +c eph$a net/minecraft/class_3616$class_3617 net/minecraft/world/level/material/LavaFluid$Flowing + m ()V +c eph$b net/minecraft/class_3616$class_3618 net/minecraft/world/level/material/LavaFluid$Source + m ()V +c epi net/minecraft/class_3620 net/minecraft/world/level/material/MapColor + f Lepi; A field_15977 COLOR_BROWN + f Lepi; B field_15995 COLOR_GREEN + f Lepi; C field_16020 COLOR_RED + f Lepi; D field_16009 COLOR_BLACK + f Lepi; E field_15994 GOLD + f Lepi; F field_15983 DIAMOND + f Lepi; G field_15980 LAPIS + f Lepi; H field_16001 EMERALD + f Lepi; I field_16017 PODZOL + f Lepi; J field_16012 NETHER + f Lepi; K field_16003 TERRACOTTA_WHITE + f Lepi; L field_15981 TERRACOTTA_ORANGE + f Lepi; M field_15985 TERRACOTTA_MAGENTA + f Lepi; N field_15991 TERRACOTTA_LIGHT_BLUE + f Lepi; O field_16013 TERRACOTTA_YELLOW + f Lepi; P field_16018 TERRACOTTA_LIGHT_GREEN + f Lepi; Q field_15989 TERRACOTTA_PINK + f Lepi; R field_16027 TERRACOTTA_GRAY + f Lepi; S field_15988 TERRACOTTA_LIGHT_GRAY + f Lepi; T field_15990 TERRACOTTA_CYAN + f Lepi; U field_16029 TERRACOTTA_PURPLE + f Lepi; V field_16015 TERRACOTTA_BLUE + f Lepi; W field_15992 TERRACOTTA_BROWN + f Lepi; X field_16028 TERRACOTTA_GREEN + f Lepi; Y field_15982 TERRACOTTA_RED + f Lepi; Z field_16007 TERRACOTTA_BLACK + f Lepi; a field_16008 NONE + f Lepi; aa field_25702 CRIMSON_NYLIUM + f Lepi; ab field_25703 CRIMSON_STEM + f Lepi; ac field_25704 CRIMSON_HYPHAE + f Lepi; ad field_25705 WARPED_NYLIUM + f Lepi; ae field_25706 WARPED_STEM + f Lepi; af field_25707 WARPED_HYPHAE + f Lepi; ag field_25708 WARPED_WART_BLOCK + f Lepi; ah field_33532 DEEPSLATE + f Lepi; ai field_33533 RAW_IRON + f Lepi; aj field_33617 GLOW_LICHEN + f I ak field_16011 col + f I al field_16021 id + f [Lepi; am field_16006 MATERIAL_COLORS + f Lepi; b field_15999 GRASS + f Lepi; c field_15986 SAND + f Lepi; d field_15979 WOOL + f Lepi; e field_16002 FIRE + f Lepi; f field_16016 ICE + f Lepi; g field_16005 METAL + f Lepi; h field_16004 PLANT + f Lepi; i field_16022 SNOW + f Lepi; j field_15976 CLAY + f Lepi; k field_16000 DIRT + f Lepi; l field_16023 STONE + f Lepi; m field_16019 WATER + f Lepi; n field_15996 WOOD + f Lepi; o field_16025 QUARTZ + f Lepi; p field_15987 COLOR_ORANGE + f Lepi; q field_15998 COLOR_MAGENTA + f Lepi; r field_16024 COLOR_LIGHT_BLUE + f Lepi; s field_16010 COLOR_YELLOW + f Lepi; t field_15997 COLOR_LIGHT_GREEN + f Lepi; u field_16030 COLOR_PINK + f Lepi; v field_15978 COLOR_GRAY + f Lepi; w field_15993 COLOR_LIGHT_GRAY + f Lepi; x field_16026 COLOR_CYAN + f Lepi; y field_16014 COLOR_PURPLE + f Lepi; z field_15984 COLOR_BLUE + m (I)Lepi; a method_38479 byId + m (Lepi$a;)I a method_15820 calculateRGBColor + m (I)I b method_38480 getColorFromPackedId + m (Lepi$a;)B b method_38481 getPackedId + m (I)Lepi; c method_38482 byIdUnsafe + m (II)V + m ()V +c epi$a net/minecraft/class_3620$class_6594 net/minecraft/world/level/material/MapColor$Brightness + f Lepi$a; a field_34759 LOW + f Lepi$a; b field_34760 NORMAL + f Lepi$a; c field_34761 HIGH + f Lepi$a; d field_34762 LOWEST + f I e field_34763 id + f I f field_34764 modifier + f [Lepi$a; g field_34765 VALUES + f [Lepi$a; h field_34766 $VALUES + m ()[Lepi$a; a method_38483 $values + m (I)Lepi$a; a method_38484 byId + m (I)Lepi$a; b method_38485 byIdUnsafe + m (Ljava/lang/String;III)V + m ()V +c epj net/minecraft/class_3619 net/minecraft/world/level/material/PushReaction + f Lepj; a field_15974 NORMAL + f Lepj; b field_15971 DESTROY + f Lepj; c field_15972 BLOCK + f Lepj; d field_15975 IGNORE + f Lepj; e field_15970 PUSH_ONLY + f [Lepj; f field_15973 $VALUES + m ()[Lepj; a method_36765 $values + m (Ljava/lang/String;I)V + m ()V +c epk net/minecraft/class_3621 net/minecraft/world/level/material/WaterFluid + m ()V +c epk$a net/minecraft/class_3621$class_3622 net/minecraft/world/level/material/WaterFluid$Flowing + m ()V +c epk$b net/minecraft/class_3621$class_3623 net/minecraft/world/level/material/WaterFluid$Source + m ()V +c epl net/minecraft/class_6139 net/minecraft/world/level/material/package-info +c epm net/minecraft/class_6145 net/minecraft/world/level/package-info +c epn net/minecraft/class_15 net/minecraft/world/level/pathfinder/AmphibiousNodeEvaluator + f Z l field_28358 prefersShallowSwimming + f F m field_65 oldWalkableCost + f F n field_64 oldWaterBorderCost + m (Lepq;Lepq;)Z b method_43413 isVerticalNeighborValid + m (Z)V +c epo net/minecraft/class_5 net/minecraft/world/level/pathfinder/BinaryHeap + f [Lepq; a field_1 heap + f I b field_2 size + m ()V a method_5 clear + m (I)V a method_4 upHeap + m (Lepq;)Lepq; a method_2 insert + m (Lepq;F)V a method_3 changeCost + m ()Lepq; b method_35490 peek + m (I)V b method_7 downHeap + m (Lepq;)V b method_35491 remove + m ()Lepq; c method_6 pop + m ()I d method_35492 size + m ()Z e method_8 isEmpty + m ()[Lepq; f method_35493 getHeap + m ()V +c epp net/minecraft/class_6 net/minecraft/world/level/pathfinder/FlyNodeEvaluator + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; l field_27341 pathTypeByPosCache + f F m field_49843 SMALL_MOB_SIZE + f F n field_41681 SMALL_MOB_INFLATED_START_NODE_BOUNDING_BOX + f I o field_41682 MAX_START_NODE_CANDIDATES + m (III)Lepq; a method_47933 findAcceptedNode + m (IIIJ)Lepv; a method_9 method_9 + m (Lbtp;)Ljava/lang/Iterable; a method_47934 iteratePathfindingStartNodeCandidatePositions + m (Lepq;)Z b method_22877 hasMalus + m (Lepq;)Z c method_22878 isOpen + m ()V +c epq net/minecraft/class_9 net/minecraft/world/level/pathfinder/Node + f I a field_40 x + f I b field_39 y + f I c field_38 z + f I d field_37 heapIdx + f F e field_36 g + f F f field_34 h + f F g field_47 f + f Lepq; h field_35 cameFrom + f Z i field_42 closed + f F j field_46 walkedDistance + f F k field_43 costMalus + f Lepv; l field_41 type + f I m field_44 hash + m ()Ljd; a method_22879 asBlockPos + m (III)Lepq; a method_26 cloneAndMove + m (Lepq;)F a method_31 distanceTo + m (Ljd;)F a method_35494 distanceTo + m (Lvw;)V a method_35495 writeToStream + m (Lvw;Lepq;)V a method_47935 readContents + m ()Lexc; b method_35496 asVec3 + m (III)I b method_30 createHash + m (Lepq;)F b method_44022 distanceToXZ + m (Ljd;)F b method_35497 distanceToSqr + m (Lvw;)Lepq; b method_28 createFromStream + m ()Z c method_27 inOpenSet + m (Lepq;)F c method_32 distanceToSqr + m (Ljd;)F c method_21654 distanceManhattan + m (Lepq;)F d method_21653 distanceManhattan + m (III)V +c epr net/minecraft/class_8 net/minecraft/world/level/pathfinder/NodeEvaluator + f Lepx; a field_49416 currentContext + f Lbtp; b field_33 mob + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; c field_32 nodes + f I d field_31 entityWidth + f I e field_30 entityHeight + f I f field_28 entityDepth + f Z g field_29 canPassDoors + f Z h field_27 canOpenDoors + f Z i field_25 canFloat + f Z j field_40927 canWalkOverFences + m ()Lepq; a method_21 getStart + m (DDD)Lepz; a method_16 getTarget + m (IIII)Lepq; a method_18482 method_18482 + m (Lbtp;Ljd;)Lepv; a method_57615 getPathType + m (Lddj;Lbtp;)V a method_12 prepare + m (Ldtc;)Z a method_57082 isBurningBlock + m (Lepx;III)Lepv; a method_17 getPathType + m (Lepx;IIILbtp;)Lepv; a method_25 getPathTypeOfMob + m (Z)V a method_15 setCanPassDoors + m ([Lepq;Lepq;)I a method_18 getNeighbors + m ()V b method_19 done + m (DDD)Lepz; b method_57083 getTargetNodeAt + m (Ljd;)Lepq; b method_27137 getNode + m (Z)V b method_20 setCanOpenDoors + m (III)Lepq; c method_13 getNode + m (Z)V c method_14 setCanFloat + m ()Z d method_23 canPassDoors + m (Z)V d method_46737 setCanWalkOverFences + m ()Z e method_24 canOpenDoors + m ()Z f method_22 canFloat + m ()Z g method_46738 canWalkOverFences + m ()V +c eps net/minecraft/class_11 net/minecraft/world/level/pathfinder/Path + f Ljava/util/List; a field_52 nodes + f Leps$a; b field_45155 debugData + f I c field_54 nextNodeIndex + f Ljd; d field_20301 target + f F e field_20302 distToTarget + f Z f field_20303 reached + m ()V a method_44 advance + m (I)Lepq; a method_40 getNode + m (ILepq;)V a method_33 replaceNode + m (Lbsr;)Lexc; a method_49 getNextEntityPos + m (Lbsr;I)Lexc; a method_47 getEntityPosAtNode + m (Leps;)Z a method_41 sameAs + m (Lvw;)V a method_35498 writeToStream + m (Lvw;Lepq;)V a method_35499 method_35499 + m (Lvw;[Lepq;)V a method_52602 writeNodeArray + m ([Lepq;[Lepq;Ljava/util/Set;)V a method_35500 setDebug + m ()Z b method_30849 notStarted + m (I)V b method_36 truncateNodes + m (Lvw;)Leps; b method_34 createFromStream + m ()Z c method_46 isDone + m (I)V c method_42 setNextNodeIndex + m (Lvw;)[Lepq; c method_52603 readNodeArray + m ()Lepq; d method_45 getEndNode + m (I)Ljd; d method_31031 getNodePos + m ()I e method_38 getNodeCount + m ()I f method_39 getNextNodeIndex + m ()Ljd; g method_31032 getNextNodePos + m ()Lepq; h method_29301 getNextNode + m ()Lepq; i method_30850 getPreviousNode + m ()Z j method_21655 canReach + m ()Leps$a; k method_52604 debugData + m ()Ljd; l method_48 getTarget + m ()F m method_21656 getDistToTarget + m ()Leps; n method_52605 copy + m (Ljava/util/List;Ljd;Z)V +c eps$a net/minecraft/class_11$class_8644 net/minecraft/world/level/pathfinder/Path$DebugData + f [Lepq; a comp_1587 openSet + f [Lepq; b comp_1588 closedSet + f Ljava/util/Set; c comp_1589 targetNodes + m ()[Lepq; a comp_1587 openSet + m (Lvw;)V a method_52606 write + m (Lvw;Lepz;)V a method_52607 method_52607 + m ()[Lepq; b comp_1588 closedSet + m (Lvw;)Leps$a; b method_52608 read + m ()Ljava/util/Set; c comp_1589 targetNodes + m ([Lepq;[Lepq;Ljava/util/Set;)V +c ept net/minecraft/class_10 net/minecraft/world/level/pathfinder/PathComputationType + f Lept; a field_50 LAND + f Lept; b field_48 WATER + f Lept; c field_51 AIR + f [Lept; d field_49 $VALUES + m ()[Lept; a method_36789 $values + m (Ljava/lang/String;I)V + m ()V +c epu net/minecraft/class_13 net/minecraft/world/level/pathfinder/PathFinder + f F a field_31807 FUDGING + f [Lepq; b field_60 neighbors + f I c field_18708 maxVisitedNodes + f Lepr; d field_61 nodeEvaluator + f Z e field_31808 DEBUG + f Lepo; f field_62 openSet + m (I)[Lepq; a method_52609 method_52609 + m (Lbnf;Lepq;Ljava/util/Map;FIF)Leps; a method_54 findPath + m (Lddj;Lbtp;Ljava/util/Set;FIF)Leps; a method_52 findPath + m (Lepq;Lepq;)F a method_44000 distance + m (Lepq;Ljava/util/Set;)F a method_21658 getBestH + m (Lepq;Ljd;Z)Leps; a method_55 reconstructPath + m (Ljava/util/Map;Lepz;)Leps; a method_21660 method_21660 + m (Ljd;)Lepz; a method_21659 method_21659 + m (Ljava/util/Map;Lepz;)Leps; b method_21661 method_21661 + m (Lepr;I)V +c epv net/minecraft/class_7 net/minecraft/world/level/pathfinder/PathType + f F A field_13 malus + f [Lepv; B field_24 $VALUES + f Lepv; a field_22 BLOCKED + f Lepv; b field_7 OPEN + f Lepv; c field_12 WALKABLE + f Lepv; d field_26446 WALKABLE_DOOR + f Lepv; e field_19 TRAPDOOR + f Lepv; f field_33534 POWDER_SNOW + f Lepv; g field_36432 DANGER_POWDER_SNOW + f Lepv; h field_10 FENCE + f Lepv; i field_14 LAVA + f Lepv; j field_18 WATER + f Lepv; k field_4 WATER_BORDER + f Lepv; l field_21 RAIL + f Lepv; m field_25418 UNPASSABLE_RAIL + f Lepv; n field_9 DANGER_FIRE + f Lepv; o field_3 DAMAGE_FIRE + f Lepv; p field_5 DANGER_OTHER + f Lepv; q field_17 DAMAGE_OTHER + f Lepv; r field_15 DOOR_OPEN + f Lepv; s field_23 DOOR_WOOD_CLOSED + f Lepv; t field_8 DOOR_IRON_CLOSED + f Lepv; u field_16 BREACH + f Lepv; v field_6 LEAVES + f Lepv; w field_21326 STICKY_HONEY + f Lepv; x field_21516 COCOA + f Lepv; y field_43351 DAMAGE_CAUTIOUS + f Lepv; z field_47413 DANGER_TRAPDOOR + m ()F a method_11 getMalus + m ()[Lepv; b method_36788 $values + m (Ljava/lang/String;IF)V + m ()V +c epw net/minecraft/class_9315 net/minecraft/world/level/pathfinder/PathTypeCache + f I a field_49417 SIZE + f I b field_49418 MASK + f [J c field_49419 positions + f [Lepv; d field_49420 pathTypes + m (IJ)Lepv; a method_57616 get + m (J)I a method_57617 index + m (Ldcc;Ljd;)Lepv; a method_57618 getOrCompute + m (Ldcc;Ljd;IJ)Lepv; a method_57619 compute + m (Ljd;)V a method_57620 invalidate + m ()V +c epx net/minecraft/class_9316 net/minecraft/world/level/pathfinder/PathfindingContext + f Ldcg; a field_49421 level + f Lepw; b field_49422 cache + f Ljd; c field_49423 mobPosition + f Ljd$a; d field_49424 mutablePos + m ()Ldcg; a method_57621 level + m (III)Lepv; a method_57622 getPathTypeFromState + m (Ljd;)Ldtc; a method_57623 getBlockState + m ()Ljd; b method_57624 mobPosition + m (Ldcg;Lbtp;)V +c epy net/minecraft/class_12 net/minecraft/world/level/pathfinder/SwimNodeEvaluator + f Z k field_58 allowBreaching + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; l field_34767 pathTypesByPosCache + m (III)Lepq; a method_47936 findAcceptedNode + m (IIIJ)Lepv; a method_38486 method_38486 + m (Lepq;)Z a method_38487 isNodeValid + m (III)Lepv; b method_38489 getCachedBlockType + m (Lepq;)Z b method_57084 hasMalus + m (Z)V +c epz net/minecraft/class_4459 net/minecraft/world/level/pathfinder/Target + f F m field_20304 bestHeuristic + f Lepq; n field_20305 bestNode + f Z o field_20306 reached + m (FLepq;)V a method_21662 updateBest + m (Lvw;)Lepz; c method_21663 createFromStream + m ()Lepq; d method_21664 getBestNode + m ()V e method_21665 setReached + m ()Z f method_35501 isReached + m (Lepq;)V + m (III)V +c eqa net/minecraft/class_14 net/minecraft/world/level/pathfinder/WalkNodeEvaluator + f D k field_31809 SPACE_BETWEEN_WALL_POSTS + f D l field_40928 DEFAULT_MOB_JUMP_HEIGHT + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; m field_49156 pathTypesByPosCacheByMob + f Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; n field_25191 collisionCache + f [Lepq; o field_49157 reusableNeighbors + m (III)Lepq; a method_43570 getBlockedNode + m (IIIIDLji;Lepv;)Lepq; a method_62 findAcceptedNode + m (IIIIDLji;Lepv;Ljd$a;)Lepq; a method_57085 tryJumpOn + m (IIIJ)Lepv; a method_57086 method_57086 + m (IIILepq;)Lepq; a method_57087 tryFindFirstNonWaterBelow + m (IIILepv;)Lepq; a method_57088 getClosedNode + m (IIILepv;F)Lepq; a method_43569 getNodeAndUpdateCostToMax + m (Ldcc;Ljd;)D a method_60 getFloorLevel + m (Lepq;)Z a method_57089 isDiagonalValid + m (Lepq;Lepq;)Z a method_20536 isNeighborValid + m (Lepq;Lepq;Lepq;)Z a method_29579 isDiagonalValid + m (Lepv;)Z a method_43414 doesBlockHavePartialCollision + m (Lepx;IIILepv;)Lepv; a method_59 checkNeighbourBlocks + m (Lepx;Ljd$a;)Lepv; a method_23476 getPathTypeStatic + m (Lewx;)Z a method_29304 hasCollisions + m (Lewx;Ljava/lang/Object;)Z a method_29305 method_29305 + m (Ljd;)Z a method_47893 canStartAt + m (III)Lepv; b method_31932 getCachedPathType + m (Lbtp;Ljd;)Lepv; b method_57625 getPathTypeStatic + m (Ldcc;Ljd;)Lepv; b method_58 getPathTypeFromState + m (Lepq;)Z b method_29578 canReachWithoutCollision + m (Lepx;III)Ljava/util/Set; b method_57090 getPathTypeWithinMobBB + m ()Z c method_37004 isAmphibious + m (Ljd;)Lepq; c method_43415 getStartNode + m (III)Lepq; d method_57091 tryFindFirstGroundNodeBelow + m (Ljd;)D d method_37003 getFloorLevel + m ()D h method_46739 getMobJumpHeight + m ()V +c eqa$1 net/minecraft/class_14$1 net/minecraft/world/level/pathfinder/WalkNodeEvaluator$1 + f [I a field_47414 $SwitchMap$net$minecraft$world$level$pathfinder$PathType + m ()V +c eqb net/minecraft/class_6146 net/minecraft/world/level/pathfinder/package-info +c eqc net/minecraft/class_5454 net/minecraft/world/level/portal/DimensionTransition + f Leqc$a; a field_52245 DO_NOTHING + f Leqc$a; b field_52246 PLAY_PORTAL_SOUND + f Leqc$a; c field_52247 PLACE_PORTAL_TICKET + f Laqu; d comp_2820 newLevel + f Lexc; e comp_2821 pos + f Lexc; f comp_2822 speed + f F g comp_2823 yRot + f F h comp_2824 xRot + f Z i comp_2825 missingRespawnBlock + f Leqc$a; j comp_2864 postDimensionTransition + m ()Laqu; a comp_2820 newLevel + m (Laqu;Lbsr;)Lexc; a method_61023 findAdjustedSharedSpawnPos + m (Laqu;Lbsr;Leqc$a;)Leqc; a method_60635 missingRespawnBlock + m (Lbsr;)V a method_61024 playPortalSound + m ()Lexc; b comp_2821 pos + m (Lbsr;)V b method_61025 placePortalTicket + m ()Lexc; c comp_2822 speed + m (Lbsr;)V c method_61026 method_61026 + m ()F d comp_2823 yRot + m ()F e comp_2824 xRot + m ()Z f comp_2825 missingRespawnBlock + m ()Leqc$a; g comp_2864 postDimensionTransition + m (Laqu;Lexc;Lexc;FFLeqc$a;)V + m (Laqu;Lbsr;Leqc$a;)V + m (Laqu;Lexc;Lexc;FFZLeqc$a;)V + m ()V +c eqc$a net/minecraft/class_5454$class_9823 net/minecraft/world/level/portal/DimensionTransition$PostDimensionTransition + m (Leqc$a;Lbsr;)V a method_61027 method_61027 +c eqd net/minecraft/class_1946 net/minecraft/world/level/portal/PortalForcer + f I a field_31810 TICKET_RADIUS + f I b field_52248 NETHER_PORTAL_RADIUS + f I c field_52249 OVERWORLD_PORTAL_RADIUS + f I d field_31813 FRAME_HEIGHT + f I e field_31814 FRAME_WIDTH + f I f field_31815 FRAME_BOX + f I g field_31816 FRAME_HEIGHT_START + f I h field_31817 FRAME_HEIGHT_END + f I i field_31818 FRAME_WIDTH_START + f I j field_31819 FRAME_WIDTH_END + f I k field_31820 FRAME_BOX_START + f I l field_31821 FRAME_BOX_END + f I m field_31822 NOTHING_FOUND + f Laqu; n field_9286 level + m (Ljd$a;)Z a method_45550 canPortalReplaceBlock + m (Ljd;)Z a method_61028 method_61028 + m (Ljd;Ljd$a;Lji;I)Z a method_30481 canHostFrame + m (Ljd;Ljd;)D a method_61029 method_61029 + m (Ljd;Lji$a;)Ljava/util/Optional; a method_30482 createPortal + m (Ljd;ZLdut;)Ljava/util/Optional; a method_30483 findClosestPortalPosition + m (Ljm;)Z a method_22389 method_22389 + m (Laqu;)V +c eqe net/minecraft/class_2424 net/minecraft/world/level/portal/PortalShape + f I a field_31823 MAX_WIDTH + f I b field_31824 MAX_HEIGHT + f I c field_31825 MIN_WIDTH + f I d field_31826 MIN_HEIGHT + f Ldtb$f; e field_25883 FRAME + f F f field_41086 SAFE_TRAVEL_MAX_ENTITY_XY + f D g field_41087 SAFE_TRAVEL_MAX_VERTICAL_DELTA + f Ldcx; h field_11318 level + f Lji$a; i field_11317 axis + f Lji; j field_11314 rightDir + f I k field_11313 numPortalBlocks + f Ljd; l field_11316 bottomLeft + f I m field_11312 height + f I n field_11311 width + m ()Z a method_10360 isValid + m (DLexc;)Lexc; a method_47381 method_47381 + m (Ldcx;Ljd;Ljava/util/function/Predicate;Lji$a;)Ljava/util/Optional; a method_30486 findPortalShape + m (Ldcx;Ljd;Lji$a;)Ljava/util/Optional; a method_30485 findEmptyPortalShape + m (Ldtc;)Z a method_10359 isEmpty + m (Ldtc;Ldcc;Ljd;)Z a method_30487 method_30487 + m (Ldtc;Ljd;)V a method_30488 method_30488 + m (Leqe;)Z a method_30489 method_30489 + m (Lexc;Laqu;Lbsr;Lbsu;)Lexc; a method_47382 findCollisionFreePosition + m (Ljd$a;)I a method_30490 getDistanceUntilTop + m (Ljd$a;I)Z a method_30491 hasTopFrame + m (Ljd;)Ljd; a method_30492 calculateBottomLeft + m (Ljd;Lji;)I a method_30493 getDistanceUntilEdgeAboveFrame + m (Ll$a;Lji$a;Lexc;Lbsu;)Lexc; a method_30494 getRelativePosition + m ()V b method_10363 createPortalBlocks + m ()Z c method_10362 isComplete + m ()I d method_30495 calculateWidth + m ()I e method_30496 calculateHeight + m (Ldcx;Ljd;Lji$a;)V + m ()V +c eqf net/minecraft/class_6147 net/minecraft/world/level/portal/package-info +c eqg net/minecraft/class_7159 net/minecraft/world/level/redstone/CollectingNeighborUpdater + f Lorg/slf4j/Logger; b field_37829 LOGGER + f Ldcw; c field_37830 level + f I d field_38276 maxChainedNeighborUpdates + f Ljava/util/ArrayDeque; e field_37831 stack + f Ljava/util/List; f field_37832 addedThisLayer + f I g field_37833 count + m ()V a method_41702 runUpdates + m (Ljd;Leqg$c;)V a method_41706 addAndRun + m (Ldcw;I)V + m ()V +c eqg$a net/minecraft/class_7159$class_7160 net/minecraft/world/level/redstone/CollectingNeighborUpdater$FullNeighborUpdate + f Ldtc; a comp_584 state + f Ljd; b comp_585 pos + f Ldfy; c comp_586 block + f Ljd; d comp_587 neighborPos + f Z e comp_588 movedByPiston + m ()Ldtc; a comp_584 state + m ()Ljd; b comp_585 pos + m ()Ldfy; c comp_586 block + m ()Ljd; d comp_587 neighborPos + m ()Z e comp_588 movedByPiston + m (Ldtc;Ljd;Ldfy;Ljd;Z)V +c eqg$b net/minecraft/class_7159$class_7161 net/minecraft/world/level/redstone/CollectingNeighborUpdater$MultiNeighborUpdate + f Ljd; a field_37834 sourcePos + f Ldfy; b field_37835 sourceBlock + f Lji; c field_37836 skipDirection + f I d field_37837 idx + m (Ljd;Ldfy;Lji;)V +c eqg$c net/minecraft/class_7159$class_7162 net/minecraft/world/level/redstone/CollectingNeighborUpdater$NeighborUpdates + m (Ldcw;)Z a method_41707 runNext +c eqg$d net/minecraft/class_7159$class_7272 net/minecraft/world/level/redstone/CollectingNeighborUpdater$ShapeUpdate + f Lji; a comp_666 direction + f Ldtc; b comp_667 state + f Ljd; c comp_668 pos + f Ljd; d comp_669 neighborPos + f I e comp_670 updateFlags + f I f comp_1344 updateLimit + m ()Lji; a comp_666 direction + m ()Ldtc; b comp_667 state + m ()Ljd; c comp_668 pos + m ()Ljd; d comp_669 neighborPos + m ()I e comp_670 updateFlags + m ()I f comp_1344 updateLimit + m (Lji;Ldtc;Ljd;Ljd;II)V +c eqg$e net/minecraft/class_7159$class_7163 net/minecraft/world/level/redstone/CollectingNeighborUpdater$SimpleNeighborUpdate + f Ljd; a comp_589 pos + f Ldfy; b comp_590 block + f Ljd; c comp_591 neighborPos + m ()Ljd; a comp_589 pos + m ()Ldfy; b comp_590 block + m ()Ljd; c comp_591 neighborPos + m (Ljd;Ldfy;Ljd;)V +c eqh net/minecraft/class_7164 net/minecraft/world/level/redstone/InstantNeighborUpdater + f Ldcw; b field_37838 level + m (Ldcw;)V +c eqi net/minecraft/class_7165 net/minecraft/world/level/redstone/NeighborUpdater + f [Lji; a field_37839 UPDATE_ORDER + m (Ldcw;Ldtc;Ljd;Ldfy;Ljd;Z)V a method_41708 executeUpdate + m (Ldcx;Lji;Ldtc;Ljd;Ljd;II)V a method_42393 executeShapeUpdate + m (Ldfy;)Ljava/lang/String; a method_41709 method_41709 + m (Ldtc;Ljd;Ldfy;Ljd;Z)V a method_41703 neighborChanged + m (Ljd;Ldfy;Ljd;)V a method_41704 neighborChanged + m (Ljd;Ldfy;Lji;)V a method_41705 updateNeighborsAtExceptFromFacing + m (Lji;Ldtc;Ljd;Ljd;II)V a method_42392 shapeUpdate + m ()V +c eqj net/minecraft/class_6148 net/minecraft/world/level/redstone/Redstone + f I a field_31827 SIGNAL_MIN + f I b field_31828 SIGNAL_MAX + f I c field_31829 SIGNAL_NONE + m ()V +c eqk net/minecraft/class_6149 net/minecraft/world/level/redstone/package-info +c eql net/minecraft/class_18 net/minecraft/world/level/saveddata/SavedData + f Lorg/slf4j/Logger; a field_17661 LOGGER + f Z b field_72 dirty + m (Ljava/io/File;Ljo$a;)V a method_17919 save + m (Lub;Ljo$a;)Lub; a method_75 save + m (Z)V a method_78 setDirty + m ()V c method_80 setDirty + m ()Z d method_79 isDirty + m ()V + m ()V +c eql$a net/minecraft/class_18$class_8645 net/minecraft/world/level/saveddata/SavedData$Factory + f Ljava/util/function/Supplier; a comp_1590 constructor + f Ljava/util/function/BiFunction; b comp_1591 deserializer + f Lazw; c comp_1592 type + m ()Ljava/util/function/Supplier; a comp_1590 constructor + m ()Ljava/util/function/BiFunction; b comp_1591 deserializer + m ()Lazw; c comp_1592 type + m (Ljava/util/function/Supplier;Ljava/util/function/BiFunction;Lazw;)V +c eqm net/minecraft/class_17 net/minecraft/world/level/saveddata/maps/MapBanner + f Lcom/mojang/serialization/Codec; a field_48918 CODEC + f Lcom/mojang/serialization/Codec; b field_48919 LIST_CODEC + f Ljd; c comp_2312 pos + f Lcti; d comp_2313 color + f Ljava/util/Optional; e comp_2314 name + m ()Ljm; a method_72 getDecoration + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_56812 method_56812 + m (Ldcc;Ljd;)Leqm; a method_73 fromWorld + m ()Ljava/lang/String; b method_71 getId + m ()Ljd; c comp_2312 pos + m ()Lcti; d comp_2313 color + m ()Ljava/util/Optional; e comp_2314 name + m (Ljd;Lcti;Ljava/util/Optional;)V + m ()V +c eqm$1 net/minecraft/class_17$1 net/minecraft/world/level/saveddata/maps/MapBanner$1 + f [I a field_70 $SwitchMap$net$minecraft$world$item$DyeColor + m ()V +c eqn net/minecraft/class_20 net/minecraft/world/level/saveddata/maps/MapDecoration + f Lyx; a field_48920 STREAM_CODEC + f Ljm; b comp_1842 type + f B c comp_1843 x + f B d comp_1844 y + f B e comp_1845 rot + f Ljava/util/Optional; f comp_1846 name + m ()Lakr; a method_58451 getSpriteLocation + m ()Z b method_94 renderOnFrame + m ()Ljm; c comp_1842 type + m ()B d comp_1843 x + m ()B e comp_1844 y + m ()B f comp_1845 rot + m ()Ljava/util/Optional; g comp_1846 name + m (Ljm;BBBLjava/util/Optional;)V + m ()V +c eqo net/minecraft/class_9428 net/minecraft/world/level/saveddata/maps/MapDecorationType + f I a field_50016 NO_MAP_COLOR + f Lcom/mojang/serialization/Codec; b field_50017 CODEC + f Lyx; c field_50018 STREAM_CODEC + f Lakr; d comp_2514 assetId + f Z e comp_2515 showOnItemFrame + f I f comp_2516 mapColor + f Z g comp_2517 explorationMapElement + f Z h comp_2518 trackCount + m ()Z a method_58452 hasMapColor + m ()Lakr; b comp_2514 assetId + m ()Z c comp_2515 showOnItemFrame + m ()I d comp_2516 mapColor + m ()Z e comp_2517 explorationMapElement + m ()Z f comp_2518 trackCount + m (Lakr;ZIZZ)V + m ()V +c eqp net/minecraft/class_21 net/minecraft/world/level/saveddata/maps/MapDecorationTypes + f Ljm; A field_110 RED_X + f Ljm; B field_46177 DESERT_VILLAGE + f Ljm; C field_46178 PLAINS_VILLAGE + f Ljm; D field_46179 SAVANNA_VILLAGE + f Ljm; E field_46180 SNOWY_VILLAGE + f Ljm; F field_46181 TAIGA_VILLAGE + f Ljm; G field_46182 JUNGLE_TEMPLE + f Ljm; H field_46183 SWAMP_HUT + f Ljm; I field_50019 TRIAL_CHAMBERS + f I J field_50020 COPPER_COLOR + f Ljm; a field_91 PLAYER + f Ljm; b field_95 FRAME + f Ljm; c field_89 RED_MARKER + f Ljm; d field_83 BLUE_MARKER + f Ljm; e field_84 TARGET_X + f Ljm; f field_85 TARGET_POINT + f Ljm; g field_86 PLAYER_OFF_MAP + f Ljm; h field_87 PLAYER_OFF_LIMITS + f Ljm; i field_88 WOODLAND_MANSION + f Ljm; j field_98 OCEAN_MONUMENT + f Ljm; k field_96 WHITE_BANNER + f Ljm; l field_92 ORANGE_BANNER + f Ljm; m field_97 MAGENTA_BANNER + f Ljm; n field_90 LIGHT_BLUE_BANNER + f Ljm; o field_93 YELLOW_BANNER + f Ljm; p field_94 LIME_BANNER + f Ljm; q field_100 PINK_BANNER + f Ljm; r field_101 GRAY_BANNER + f Ljm; s field_107 LIGHT_GRAY_BANNER + f Ljm; t field_108 CYAN_BANNER + f Ljm; u field_104 PURPLE_BANNER + f Ljm; v field_105 BLUE_BANNER + f Ljm; w field_106 BROWN_BANNER + f Ljm; x field_102 GREEN_BANNER + f Ljm; y field_99 RED_BANNER + f Ljm; z field_103 BLACK_BANNER + m (Ljava/lang/String;Ljava/lang/String;ZIZZ)Ljm; a method_58453 register + m (Ljava/lang/String;Ljava/lang/String;ZZ)Ljm; a method_58454 register + m (Ljz;)Ljm; a method_58455 bootstrap + m ()V + m ()V +c eqq net/minecraft/class_19 net/minecraft/world/level/saveddata/maps/MapFrame + f Ljd; a field_75 pos + f I b field_74 rotation + f I c field_73 entityId + m ()Lub; a method_84 save + m (Ljd;)Ljava/lang/String; a method_81 frameId + m (Lub;)Leqq; a method_87 load + m ()Ljd; b method_86 getPos + m ()I c method_83 getRotation + m ()I d method_85 getEntityId + m ()Ljava/lang/String; e method_82 getId + m (Ljd;II)V +c eqr net/minecraft/class_9209 net/minecraft/world/level/saveddata/maps/MapId + f Lcom/mojang/serialization/Codec; a field_49425 CODEC + f Lyx; b field_48924 STREAM_CODEC + f I c comp_2315 id + m ()Ljava/lang/String; a method_56814 key + m ()I b comp_2315 id + m (I)V + m ()V +c eqs net/minecraft/class_3978 net/minecraft/world/level/saveddata/maps/MapIndex + f Ljava/lang/String; a field_31830 FILE_NAME + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; b field_17662 usedAuxIds + m ()Leql$a; a method_52610 factory + m ()Leqr; b method_17920 getFreeAuxValueForMap + m (Lub;Ljo$a;)Leqs; b method_32360 load + m ()V +c eqt net/minecraft/class_22 net/minecraft/world/level/saveddata/maps/MapItemSavedData + f I a field_31831 MAX_SCALE + f I b field_33991 TRACKED_DECORATION_LIMIT + f I c field_116 centerX + f I d field_115 centerZ + f Lakq; e field_118 dimension + f B f field_119 scale + f [B g field_122 colors + f Z h field_17403 locked + f Lorg/slf4j/Logger; i field_25019 LOGGER + f I j field_31832 MAP_SIZE + f I k field_31833 HALF_MAP_SIZE + f Ljava/lang/String; l field_52316 FRAME_PREFIX + f Z m field_114 trackingPosition + f Z n field_113 unlimitedTracking + f Ljava/util/List; o field_112 carriedBy + f Ljava/util/Map; p field_120 carriedByPlayers + f Ljava/util/Map; q field_123 bannerMarkers + f Ljava/util/Map; r field_117 decorations + f Ljava/util/Map; s field_121 frameMarkers + f I t field_33992 trackedDecorationCount + m ()Leql$a; a method_52611 factory + m (BZLakq;)Leqt; a method_32362 createForClient + m (DDBZZLakq;)Leqt; a method_32363 createFresh + m (I)Z a method_37343 isTrackedCountOverLimit + m (II)V a method_103 setColorsDirty + m (IIB)Z a method_32365 updateColor + m (Lcmx;)Leqt$a; a method_101 getHoldingPlayer + m (Lcmx;Lcuq;)V a method_102 tickCarriedBy + m (Lcmx;Ljava/lang/String;Lcxr$a;)V a method_57626 method_57626 + m (Lcuq;)Ljava/util/function/Predicate; a method_55784 mapMatcher + m (Lcuq;Leqr;Lcuq;)Z a method_55785 method_55785 + m (Lcuq;Ljd;Ljava/lang/String;Ljm;)V a method_110 addTargetDecoration + m (Ldcc;II)V a method_109 checkBanners + m (Ldcx;Ljd;)Z a method_108 toggleBanner + m (Leqr;Lcmx;)Lzg; a method_100 getUpdatePacket + m (Ljava/lang/String;)V a method_32368 removeDecoration + m (Ljava/lang/String;Lcxr$a;Lcxr;)Lcxr; a method_57627 method_57627 + m (Ljava/util/List;)V a method_32369 addClientSideDecorations + m (Ljd;I)V a method_104 removedFromFrame + m (Ljm;Ldcx;Ljava/lang/String;DDDLwz;)V a method_107 addDecoration + m (Lub;)Ljava/lang/IllegalArgumentException; a method_29009 method_29009 + m (Lub;Luy;)V a method_29008 method_29008 + m ()Leqt; b method_32361 locked + m (I)Ljava/lang/String; b method_61169 getFrameKey + m (IIB)V b method_32370 setColor + m (Ljava/lang/String;)V b method_56815 method_56815 + m (Lub;Ljo$a;)Leqt; b method_32371 load + m ()Leqt; e method_32364 scaled + m ()Ljava/util/Collection; f method_35503 getBanners + m ()Z g method_32372 isExplorationMap + m ()Ljava/lang/Iterable; h method_32373 getDecorations + m ()V i method_32374 setDecorationsDirty + m ()Leqt; j method_52612 method_52612 + m (IIBZZZLakq;)V + m ()V +c eqt$a net/minecraft/class_22$class_23 net/minecraft/world/level/saveddata/maps/MapItemSavedData$HoldingPlayer + f Lcmx; a field_125 player + f I b field_131 step + f Leqt; c field_132 field_132 + f Z d field_130 dirtyData + f I e field_129 minDirtyX + f I f field_128 minDirtyY + f I g field_127 maxDirtyX + f I h field_126 maxDirtyY + f Z i field_27891 dirtyDecorations + f I j field_124 tick + m ()Leqt$b; a method_32375 createPatch + m (II)V a method_111 markColorsDirty + m (Leqr;)Lzg; a method_112 nextUpdatePacket + m ()V b method_32379 markDecorationsDirty + m (Leqt;Lcmx;)V +c eqt$b net/minecraft/class_22$class_5637 net/minecraft/world/level/saveddata/maps/MapItemSavedData$MapPatch + f Lyx; a field_48925 STREAM_CODEC + f I b comp_2316 startX + f I c comp_2317 startY + f I d comp_2318 width + f I e comp_2319 height + f [B f comp_2320 mapColors + m ()I a comp_2316 startX + m (Leqt;)V a method_32380 applyToMap + m (Lio/netty/buffer/ByteBuf;)Ljava/util/Optional; a method_56816 read + m (Lio/netty/buffer/ByteBuf;Ljava/util/Optional;)V a method_56817 write + m ()I b comp_2317 startY + m ()I c comp_2318 width + m ()I d comp_2319 height + m ()[B e comp_2320 mapColors + m (IIII[B)V + m ()V +c equ net/minecraft/class_6150 net/minecraft/world/level/saveddata/maps/package-info +c eqv net/minecraft/class_6151 net/minecraft/world/level/saveddata/package-info +c eqw net/minecraft/class_4565 net/minecraft/world/level/storage/CommandStorage + f Ljava/lang/String; a field_31834 ID_PREFIX + f Ljava/util/Map; b field_20747 namespaces + f Leqz; c field_20748 storage + m ()Ljava/util/stream/Stream; a method_22542 keys + m (Lakr;)Lub; a method_22546 get + m (Lakr;Lub;)V a method_22547 set + m (Ljava/lang/String;)Leqw$a; a method_22544 newStorage + m (Ljava/lang/String;Lub;Ljo$a;)Leqw$a; a method_52613 method_52613 + m (Ljava/util/Map$Entry;)Ljava/util/stream/Stream; a method_22545 method_22545 + m (Ljava/lang/String;)Leql$a; b method_52614 factory + m (Ljava/lang/String;)Ljava/lang/String; c method_22543 createId + m (Ljava/lang/String;)Leqw$a; d method_52615 method_52615 + m (Leqz;)V +c eqw$a net/minecraft/class_4565$class_4566 net/minecraft/world/level/storage/CommandStorage$Container + f Ljava/lang/String; a field_31835 TAG_CONTENTS + f Ljava/util/Map; b field_20749 storage + m (Ljava/lang/String;)Lub; a method_22550 get + m (Ljava/lang/String;Ljava/lang/String;)Lakr; a method_22551 method_22551 + m (Ljava/lang/String;Lub;)V a method_22552 put + m (Lub;)Leqw$a; a method_32383 load + m (Lub;Ljava/lang/String;Lub;)V a method_22553 method_22553 + m (Ljava/lang/String;)Ljava/util/stream/Stream; b method_22554 getKeys + m ()V +c eqx net/minecraft/class_6595 net/minecraft/world/level/storage/DataVersion + f Ljava/lang/String; a field_34768 MAIN_SERIES + f I b field_34769 version + f Ljava/lang/String; c field_34770 series + m ()Z a method_38490 isSideSeries + m (Leqx;)Z a method_38493 isCompatible + m ()Ljava/lang/String; b method_38492 getSeries + m ()I c method_38494 getVersion + m (I)V + m (ILjava/lang/String;)V + m ()V +c eqy net/minecraft/class_27 net/minecraft/world/level/storage/DerivedLevelData + f Lerl; a field_24179 worldData + f Lerk; b field_139 wrapped + m (Lerl;Lerk;)V +c eqz net/minecraft/class_26 net/minecraft/world/level/storage/DimensionDataStorage + f Lorg/slf4j/Logger; a field_136 LOGGER + f Ljava/util/Map; b field_134 cache + f Lcom/mojang/datafixers/DataFixer; c field_17663 fixerUpper + f Ljo$a; d field_48926 registries + f Ljava/io/File; e field_17664 dataFolder + m ()V a method_125 save + m (Leql$a;Ljava/lang/String;)Leql; a method_17924 computeIfAbsent + m (Ljava/io/PushbackInputStream;)Z a method_17921 isGzip + m (Ljava/lang/String;)Ljava/io/File; a method_17922 getDataFile + m (Ljava/lang/String;Lazw;I)Lub; a method_17923 readTagFromDisk + m (Ljava/lang/String;Leql;)V a method_123 set + m (Ljava/util/function/BiFunction;Lazw;Ljava/lang/String;)Leql; a method_120 readSavedData + m (Leql$a;Ljava/lang/String;)Leql; b method_20786 get + m (Ljava/lang/String;Leql;)V b method_32384 method_32384 + m (Ljava/io/File;Lcom/mojang/datafixers/DataFixer;Ljo$a;)V + m ()V +c era net/minecraft/class_9078 net/minecraft/world/level/storage/FileNameDateFormatter + m ()Ljava/time/format/DateTimeFormatter; a method_55786 create + m ()V +c erb net/minecraft/class_5217 net/minecraft/world/level/storage/LevelData + m ()Ljd; a method_56126 getSpawnPos + m (Ldcy;)Ljava/lang/String; a method_27411 method_27411 + m (Lp;Ldcy;)V a method_151 fillCrashReportCategory + m ()F b method_30656 getSpawnAngle + m (Z)V b method_157 setRaining + m ()J c method_188 getGameTime + m ()J d method_217 getDayTime + m ()Ljava/lang/String; e method_27410 method_27410 + m ()Z g method_203 isThundering + m ()Z i method_156 isRaining + m ()Z l method_152 isHardcore + m ()Ldcs; o method_146 getGameRules + m ()Lbqo; q method_207 getDifficulty + m ()Z r method_197 isDifficultyLocked +c erc net/minecraft/class_8895 net/minecraft/world/level/storage/LevelDataAndDimensions + f Lerl; a comp_2008 worldData + f Ldzt$b; b comp_2009 dimensions + m ()Lerl; a comp_2008 worldData + m ()Ldzt$b; b comp_2009 dimensions + m (Lerl;Ldzt$b;)V +c erd net/minecraft/class_5218 net/minecraft/world/level/storage/LevelResource + f Lerd; a field_24180 PLAYER_ADVANCEMENTS_DIR + f Lerd; b field_24181 PLAYER_STATS_DIR + f Lerd; c field_24182 PLAYER_DATA_DIR + f Lerd; d field_24183 PLAYER_OLD_DATA_DIR + f Lerd; e field_24184 LEVEL_DATA_FILE + f Lerd; f field_38978 OLD_LEVEL_DATA_FILE + f Lerd; g field_38979 ICON_FILE + f Lerd; h field_38980 LOCK_FILE + f Lerd; i field_24185 GENERATED_DIR + f Lerd; j field_24186 DATAPACK_DIR + f Lerd; k field_24187 MAP_RESOURCE_FILE + f Lerd; l field_24188 ROOT + f Ljava/lang/String; m field_24189 id + m ()Ljava/lang/String; a method_27423 getId + m (Ljava/lang/String;)V + m ()V +c ere net/minecraft/class_33 net/minecraft/world/level/storage/LevelStorageException + f Lwz; a field_38981 messageComponent + m ()Lwz; a method_43416 getMessageComponent + m (Lwz;)V +c erf net/minecraft/class_32 net/minecraft/world/level/storage/LevelStorageSource + f Ljava/lang/String; a field_44950 ALLOWED_SYMLINKS_CONFIG_NAME + f Lorg/slf4j/Logger; b field_17665 LOGGER + f Ljava/time/format/DateTimeFormatter; c field_200 FORMATTER + f Ljava/lang/String; d field_36348 TAG_DATA + f Ljava/nio/file/PathMatcher; e field_44951 NO_SYMLINKS_ALLOWED + f I f field_46830 UNCOMPRESSED_NBT_QUOTA + f I g field_49426 DISK_SPACE_WARNING_THRESHOLD + f Ljava/nio/file/Path; h field_17666 baseDir + f Ljava/nio/file/Path; i field_17667 backupDir + f Lcom/mojang/datafixers/DataFixer; j field_17668 fixerUpper + f Lews; k field_44952 worldDirValidator + m ()Ljava/lang/String; a method_35504 getName + m (Lakr;)V a method_45551 method_45551 + m (Lcom/mojang/datafixers/DataFixer;ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; a method_59826 method_59826 + m (Lcom/mojang/serialization/Dynamic;)Lddr; a method_29580 readDataConfig + m (Lcom/mojang/serialization/Dynamic;Latp;Z)Lalo$d; a method_54522 getPackConfig + m (Lcom/mojang/serialization/Dynamic;Lddr;Ljz;Lka$b;)Lerc; a method_54523 getLevelDataAndDimensions + m (Lcom/mojang/serialization/Dynamic;Lerf$b;Z)Lerg; a method_54524 makeLevelSummary + m (Lerf$a;)Ljava/util/concurrent/CompletableFuture; a method_43417 loadLevelSummaries + m (Lerf$b;)J a method_54526 getFileModificationTime + m (Lerf$b;Z)Lerg; a method_54527 readLevelSummary + m (Ljava/lang/String;)Z a method_240 isNewLevelIdAcceptable + m (Ljava/nio/file/Path;)Lews; a method_52235 parseValidator + m (Ljava/nio/file/Path;Lcom/mojang/datafixers/DataFixer;)Lcom/mojang/serialization/Dynamic; a method_54528 readLevelDataTagFixed + m (Ljava/util/List;)Ljava/util/List; a method_43495 method_43495 + m ()Lerf$a; b method_235 findLevelCandidates + m (Lcom/mojang/datafixers/DataFixer;ILcom/mojang/serialization/Dynamic;)Lcom/mojang/serialization/Dynamic; b method_59827 method_59827 + m (Lcom/mojang/serialization/Dynamic;)Lcpl; b method_45552 parseFeatureFlagsFromSummary + m (Lerf$b;)Lerg; b method_43418 method_43418 + m (Ljava/lang/String;)Z b method_230 levelExists + m (Ljava/nio/file/Path;)Lerf; b method_26999 createDefault + m ()Ljava/nio/file/Path; c method_19636 getBaseDir + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/stream/Stream; c method_45553 method_45553 + m (Lerf$b;)Z c method_43419 method_43419 + m (Ljava/lang/String;)Ljava/nio/file/Path; c method_52238 getLevelPath + m (Ljava/nio/file/Path;)Lub; c method_54529 readLevelDataTagRaw + m ()Ljava/nio/file/Path; d method_236 getBackupPath + m (Ljava/lang/String;)Lerf$c; d method_52236 validateAndCreateAccess + m (Ljava/nio/file/Path;)Ljava/time/Instant; d method_54530 getFileModificationTime + m ()Lews; e method_52237 getWorldDirValidator + m (Ljava/lang/String;)Lerf$c; e method_27002 createAccess + m (Ljava/nio/file/Path;)Luy; e method_40035 readLightweightData + m ()I f method_17931 getStorageVersion + m (Ljava/nio/file/Path;)Z f method_43420 method_43420 + m (Ljava/nio/file/Path;)Z g method_52616 method_52616 + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Lews;Lcom/mojang/datafixers/DataFixer;)V + m ()V +c erf$a net/minecraft/class_32$class_7410 net/minecraft/world/level/storage/LevelStorageSource$LevelCandidates + f Ljava/util/List; a comp_731 levels + m ()Z a method_43421 isEmpty + m ()Ljava/util/List; b comp_731 levels + m (Ljava/util/List;)V +c erf$b net/minecraft/class_32$class_7411 net/minecraft/world/level/storage/LevelStorageSource$LevelDirectory + f Ljava/nio/file/Path; a comp_732 path + m ()Ljava/lang/String; a method_43422 directoryName + m (Lerd;)Ljava/nio/file/Path; a method_43423 resourcePath + m (Ljava/time/LocalDateTime;)Ljava/nio/file/Path; a method_43424 corruptedDataFile + m ()Ljava/nio/file/Path; b method_43425 dataFile + m (Ljava/time/LocalDateTime;)Ljava/nio/file/Path; b method_54531 rawDataFile + m ()Ljava/nio/file/Path; c method_43426 oldDataFile + m ()Ljava/nio/file/Path; d method_43427 iconFile + m ()Ljava/nio/file/Path; e method_43428 lockFile + m ()Ljava/nio/file/Path; f comp_732 path + m (Ljava/nio/file/Path;)V +c erf$c net/minecraft/class_32$class_5143 net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess + f Lerf; a field_23766 field_23766 + f Laxt; b field_23767 lock + f Lerf$b; c field_23768 levelDirectory + f Ljava/lang/String; d field_23769 levelId + f Ljava/util/Map; e field_24190 resources + m ()J a method_57628 estimateDiskSpace + m (Lakq;)Ljava/nio/file/Path; a method_27424 getDimensionPath + m (Lcom/mojang/serialization/Dynamic;)Lerg; a method_29584 getSummary + m (Lerd;)Ljava/nio/file/Path; a method_27010 getLevelPath + m (Ljava/lang/String;)V a method_27008 renameLevel + m (Ljava/lang/String;Lub;)V a method_54534 method_54534 + m (Ljava/util/function/Consumer;)V a method_54537 modifyLevelDataWithoutDatafix + m (Lka;Lerl;)V a method_27425 saveDataTag + m (Lka;Lerl;Lub;)V a method_27426 saveDataTag + m (Lub;)V a method_54538 saveLevelData + m (Z)Ljava/time/Instant; a method_54539 getFileModificationTime + m ()Z b method_57629 checkForLowDiskSpace + m (Ljava/lang/String;)V b method_54540 renameAndDropPlayer + m (Ljava/lang/String;Lub;)V b method_54541 method_54541 + m (Z)Lcom/mojang/serialization/Dynamic; b method_27013 getDataTag + m ()V c method_54532 safeClose + m ()Lerf; d method_52617 parent + m ()Lerf$b; e method_54543 getLevelDirectory + m ()Ljava/lang/String; f method_27005 getLevelId + m ()Leri; g method_27427 createPlayerStorage + m ()Lcom/mojang/serialization/Dynamic; h method_54545 getDataTag + m ()Lcom/mojang/serialization/Dynamic; i method_54546 getDataTagFallback + m ()Ljava/util/Optional; j method_27014 getIconFile + m ()V k method_27015 deleteLevel + m ()J l method_27016 makeWorldBackup + m ()Z m method_54547 hasWorldData + m ()Z n method_54548 restoreLevelDataFromOld + m ()V o method_27017 checkLock + m (Lerf;Ljava/lang/String;Ljava/nio/file/Path;)V +c erf$c$1 net/minecraft/class_32$class_5143$1 net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess$1 + f Ljava/nio/file/Path; a field_23770 val$lockPath + f Lerf$c; b field_23771 field_23771 + m (Ljava/nio/file/Path;Ljava/io/IOException;)Ljava/nio/file/FileVisitResult; a method_27018 postVisitDirectory + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult; a method_27019 visitFile + m (Lerf$c;Ljava/nio/file/Path;)V +c erf$c$2 net/minecraft/class_32$class_5143$2 net/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess$2 + f Ljava/nio/file/Path; a field_204 val$rootPath + f Ljava/util/zip/ZipOutputStream; b field_201 val$stream + f Lerf$c; c field_203 field_203 + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult; a method_246 visitFile + m (Lerf$c;Ljava/nio/file/Path;Ljava/util/zip/ZipOutputStream;)V +c erg net/minecraft/class_34 net/minecraft/world/level/storage/LevelSummary + f Lwz; a field_46832 PLAY_WORLD + f Ldda; b field_25022 settings + f Lerh; c field_25023 levelVersion + f Ljava/lang/String; d field_205 levelId + f Z e field_209 requiresManualConversion + f Z f field_23772 locked + f Z g field_40371 experimental + f Ljava/nio/file/Path; h field_23773 icon + f Lwz; i field_24191 info + m ()Ljava/lang/String; a method_248 getLevelId + m (Lerg;)I a method_251 compareTo + m ()Ljava/lang/String; b method_252 getLevelName + m ()Ljava/nio/file/Path; c method_27020 getIcon + m ()Z d method_255 requiresManualConversion + m ()Z e method_45554 isExperimental + m ()J f method_249 getLastPlayed + m ()Ldda; g method_35505 getSettings + m ()Ldct; h method_247 getGameMode + m ()Z i method_257 isHardcore + m ()Z j method_259 hasCommands + m ()Lxn; k method_258 getWorldVersionName + m ()Lerh; l method_29586 levelVersion + m ()Z m method_54549 shouldBackup + m ()Z n method_54550 isDowngrade + m ()Lerg$a; o method_33405 backupStatus + m ()Z p method_27021 isLocked + m ()Z q method_33784 isDisabled + m ()Z r method_38496 isCompatible + m ()Lwz; s method_27429 getInfo + m ()Lwz; t method_54551 primaryActionMessage + m ()Z u method_54552 primaryActionActive + m ()Z v method_56127 canUpload + m ()Z w method_54553 canEdit + m ()Z x method_54554 canRecreate + m ()Z y method_54555 canDelete + m ()Lwz; z method_27430 createInfo + m (Ldda;Lerh;Ljava/lang/String;ZZZLjava/nio/file/Path;)V + m ()V +c erg$a net/minecraft/class_34$class_5781 net/minecraft/world/level/storage/LevelSummary$BackupStatus + f Lerg$a; a field_28437 NONE + f Lerg$a; b field_28438 DOWNGRADE + f Lerg$a; c field_28439 UPGRADE_TO_SNAPSHOT + f Z d field_28440 shouldBackup + f Z e field_28441 severe + f Ljava/lang/String; f field_28442 translationKey + f [Lerg$a; g field_28443 $VALUES + m ()Z a method_33406 shouldBackup + m ()Z b method_33407 isSevere + m ()Ljava/lang/String; c method_33408 getTranslationKey + m ()[Lerg$a; d method_36792 $values + m (Ljava/lang/String;IZZLjava/lang/String;)V + m ()V +c erg$b net/minecraft/class_34$class_8896 net/minecraft/world/level/storage/LevelSummary$CorruptedLevelSummary + f Lwz; b field_46833 INFO + f Lwz; c field_46834 RECOVER + f J d field_46835 lastPlayed + m (Lxw;)Lxw; a method_54556 method_54556 + m (Ljava/lang/String;Ljava/nio/file/Path;J)V + m ()V +c erg$c net/minecraft/class_34$class_8578 net/minecraft/world/level/storage/LevelSummary$SymlinkLevelSummary + f Lwz; b field_46836 MORE_INFO_BUTTON + f Lwz; c field_46837 INFO + m (Ljava/lang/String;Ljava/nio/file/Path;)V + m ()V +c erh net/minecraft/class_5315 net/minecraft/world/level/storage/LevelVersion + f I a field_25024 levelDataVersion + f J b field_25025 lastPlayed + f Ljava/lang/String; c field_25026 minecraftVersionName + f Leqx; d field_25027 minecraftVersion + f Z e field_25028 snapshot + m ()I a method_29022 levelDataVersion + m (Lcom/mojang/serialization/Dynamic;)Lerh; a method_29023 parse + m ()J b method_29024 lastPlayed + m ()Ljava/lang/String; c method_29025 minecraftVersionName + m ()Leqx; d method_29026 minecraftVersion + m ()Z e method_29027 snapshot + m (IJLjava/lang/String;ILjava/lang/String;Z)V +c eri net/minecraft/class_29 net/minecraft/world/level/storage/PlayerDataStorage + f Lcom/mojang/datafixers/DataFixer; a field_148 fixerUpper + f Lorg/slf4j/Logger; b field_149 LOGGER + f Ljava/io/File; c field_144 playerDir + f Ljava/time/format/DateTimeFormatter; d field_47840 FORMATTER + m (Lcmx;)V a method_262 save + m (Lcmx;Ljava/lang/String;)V a method_55787 backup + m (Lcmx;Lub;)Lub; a method_55788 method_55788 + m (Lcmx;)Ljava/util/Optional; b method_55789 load + m (Lcmx;Ljava/lang/String;)Ljava/util/Optional; b method_261 load + m (Lcmx;)Ljava/util/Optional; c method_55790 method_55790 + m (Lerf$c;Lcom/mojang/datafixers/DataFixer;)V + m ()V +c erj net/minecraft/class_31 net/minecraft/world/level/storage/PrimaryLevelData + f I A field_17736 wanderingTraderSpawnDelay + f I B field_17737 wanderingTraderSpawnChance + f Ljava/util/UUID; C field_17738 wanderingTraderId + f Ljava/util/Set; D field_21837 knownServerBrands + f Z E field_21838 wasModded + f Ljava/util/Set; F field_43352 removedFeatureFlags + f Lewp; G field_191 scheduledEvents + f Ljava/lang/String; a field_46838 LEVEL_NAME + f Ljava/lang/String; b field_36349 PLAYER + f Ljava/lang/String; c field_31843 WORLD_GEN_SETTINGS + f Lorg/slf4j/Logger; f field_25029 LOGGER + f Ldda; g field_25030 settings + f Ldzw; h field_25425 worldOptions + f Lerj$a; i field_40372 specialWorldProperty + f Lcom/mojang/serialization/Lifecycle; j field_25426 worldGenSettingsLifecycle + f Ljd; k field_48380 spawnPos + f F l field_26367 spawnAngle + f J m field_189 gameTime + f J n field_198 dayTime + f Lub; o field_170 loadedPlayerTag + f I p field_158 version + f I q field_176 clearWeatherTime + f Z r field_190 raining + f I s field_192 rainTime + f Z t field_168 thundering + f I u field_173 thunderTime + f Z v field_185 initialized + f Z w field_157 difficultyLocked + f Ldut$c; x field_24193 worldBorder + f Ldxb$a; y field_25031 endDragonFightData + f Lub; z field_156 customBossEvents + m (Lcom/mojang/serialization/DataResult$Error;)V a method_45557 method_45557 + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/stream/Stream; a method_29032 method_29032 + m (Lcom/mojang/serialization/Dynamic;Ldda;Lerj$a;Ldzw;Lcom/mojang/serialization/Lifecycle;)Lerj; a method_29029 parse + m (Ljava/util/Set;)Luh; a method_49902 stringCollectionToTag + m (Lka;Lub;Lub;)V a method_158 setTagData + m (Lub;Luy;)V a method_45558 method_45558 + m (Lcom/mojang/serialization/Dynamic;)Ljava/util/stream/Stream; b method_49901 method_49901 + m (Lub;Luy;)V b method_29030 method_29030 + m (Lub;ZLjd;FJJIIIZIZZZLdut$c;IILjava/util/UUID;Ljava/util/Set;Ljava/util/Set;Lewp;Lub;Ldxb$a;Ldda;Ldzw;Lerj$a;Lcom/mojang/serialization/Lifecycle;)V + m (Ldda;Ldzw;Lerj$a;Lcom/mojang/serialization/Lifecycle;)V + m ()V +c erj$a net/minecraft/class_31$class_7729 net/minecraft/world/level/storage/PrimaryLevelData$SpecialWorldProperty + f Lerj$a; a field_40373 NONE + f Lerj$a; b field_40374 FLAT + f Lerj$a; c field_40375 DEBUG + f [Lerj$a; d field_40376 $VALUES + m ()[Lerj$a; a method_45559 $values + m (Ljava/lang/String;I)V + m ()V +c erk net/minecraft/class_5268 net/minecraft/world/level/storage/ServerLevelData + m (I)V a method_167 setClearWeatherTime + m (J)V a method_29034 setGameTime + m (Ldct;)V a method_193 setGameType + m (Ldut$c;)V a method_27415 setWorldBorder + m (Ljava/util/UUID;)V a method_18040 setWanderingTraderId + m (Z)V a method_147 setThundering + m (I)V b method_173 setThunderTime + m (J)V b method_29035 setDayTime + m (I)V c method_164 setRainTime + m (Z)V c method_223 setInitialized + m (I)V d method_18041 setWanderingTraderSpawnDelay + m ()Ljava/lang/String; e method_150 getLevelName + m (I)V e method_18042 setWanderingTraderSpawnChance + m ()I f method_155 getClearWeatherTime + m ()I h method_145 getThunderTime + m ()I j method_190 getRainTime + m ()Ldct; k method_210 getGameType + m ()Z m method_194 isAllowCommands + m ()Z n method_222 isInitialized + m ()Ldut$c; p method_27422 getWorldBorder + m ()Lewp; s method_143 getScheduledEvents + m ()I t method_18038 getWanderingTraderSpawnDelay + m ()I u method_18039 getWanderingTraderSpawnChance + m ()Ljava/util/UUID; v method_35506 getWanderingTraderId + m ()Ljava/lang/String; w method_27856 method_27856 + m ()Ljava/lang/String; x method_27858 method_27858 +c erl net/minecraft/class_5219 net/minecraft/world/level/storage/WorldData + f I d field_31844 ANVIL_VERSION_ID + f I e field_31845 MCREGION_VERSION_ID + m ()Z A method_45556 isDebugWorld + m ()Lcom/mojang/serialization/Lifecycle; B method_29588 worldGenSettingsLifecycle + m ()Ldxb$a; C method_29036 endDragonFightData + m ()Lddr; D method_29589 getDataConfiguration + m ()Lub; E method_228 getCustomBossEvents + m ()Z F method_27431 wasModded + m ()Ljava/util/Set; G method_27432 getKnownServerBrands + m ()Ljava/util/Set; H method_49900 getRemovedFeatureFlags + m ()Lerk; I method_27859 overworldData + m ()Ldda; J method_27433 getLevelSettings + m ()Lcpl; K method_45560 enabledFeatures + m ()Ljava/lang/String; a method_27436 method_27436 + m (Lbqo;)V a method_208 setDifficulty + m (Ldct;)V a method_193 setGameType + m (Lddr;)V a method_29590 setDataConfiguration + m (Ldxb$a;)V a method_29037 setEndDragonFightData + m (Ljava/lang/String;Z)V a method_24285 setModdedInfo + m (Lka;Lub;)Lub; a method_163 createTag + m (Lp;)V a method_151 fillCrashReportCategory + m (Lub;)V a method_221 setCustomBossEvents + m ()Ljava/lang/String; b method_27438 method_27438 + m ()Ljava/lang/String; c method_49903 method_49903 + m ()Ljava/lang/String; d method_27439 method_27439 + m (Z)V d method_186 setDifficultyLocked + m ()Ljava/lang/String; e method_150 getLevelName + m (I)Ljava/lang/String; f method_27440 getStorageVersionName + m ()Ldct; k method_210 getGameType + m ()Z l method_152 isHardcore + m ()Z m method_194 isAllowCommands + m ()Ldcs; o method_146 getGameRules + m ()Lbqo; q method_207 getDifficulty + m ()Z r method_197 isDifficultyLocked + m ()Lub; w method_226 getLoadedPlayerTag + m ()I x method_168 getVersion + m ()Ldzw; y method_28057 worldGenOptions + m ()Z z method_45555 isFlatWorld +c erm net/minecraft/class_5269 net/minecraft/world/level/storage/WritableLevelData + m (Ljd;F)V a method_187 setSpawn +c ern net/minecraft/class_39 net/minecraft/world/level/storage/loot/BuiltInLootTables + f Lakq; A field_803 JUNGLE_TEMPLE + f Lakq; B field_751 JUNGLE_TEMPLE_DISPENSER + f Lakq; C field_662 IGLOO_CHEST + f Lakq; D field_484 WOODLAND_MANSION + f Lakq; E field_397 UNDERWATER_RUIN_SMALL + f Lakq; F field_300 UNDERWATER_RUIN_BIG + f Lakq; G field_251 BURIED_TREASURE + f Lakq; H field_841 SHIPWRECK_MAP + f Lakq; I field_880 SHIPWRECK_SUPPLY + f Lakq; J field_665 SHIPWRECK_TREASURE + f Lakq; K field_16593 PILLAGER_OUTPOST + f Lakq; L field_24046 BASTION_TREASURE + f Lakq; M field_24047 BASTION_OTHER + f Lakq; N field_24048 BASTION_BRIDGE + f Lakq; O field_24049 BASTION_HOGLIN_STABLE + f Lakq; P field_38438 ANCIENT_CITY + f Lakq; Q field_38439 ANCIENT_CITY_ICE_BOX + f Lakq; R field_24050 RUINED_PORTAL + f Lakq; S field_47415 TRIAL_CHAMBERS_REWARD + f Lakq; T field_49844 TRIAL_CHAMBERS_REWARD_COMMON + f Lakq; U field_49845 TRIAL_CHAMBERS_REWARD_RARE + f Lakq; V field_49846 TRIAL_CHAMBERS_REWARD_UNIQUE + f Lakq; W field_50194 TRIAL_CHAMBERS_REWARD_OMINOUS + f Lakq; X field_50195 TRIAL_CHAMBERS_REWARD_OMINOUS_COMMON + f Lakq; Y field_50196 TRIAL_CHAMBERS_REWARD_OMINOUS_RARE + f Lakq; Z field_50197 TRIAL_CHAMBERS_REWARD_OMINOUS_UNIQUE + f Lakq; aA field_716 SHEEP_RED + f Lakq; aB field_778 SHEEP_BLACK + f Lakq; aC field_353 FISHING + f Lakq; aD field_266 FISHING_JUNK + f Lakq; aE field_854 FISHING_TREASURE + f Lakq; aF field_795 FISHING_FISH + f Lakq; aG field_16216 CAT_MORNING_GIFT + f Lakq; aH field_19062 ARMORER_GIFT + f Lakq; aI field_19063 BUTCHER_GIFT + f Lakq; aJ field_19064 CARTOGRAPHER_GIFT + f Lakq; aK field_19065 CLERIC_GIFT + f Lakq; aL field_19066 FARMER_GIFT + f Lakq; a field_844 EMPTY + f Lakq; aM field_19067 FISHERMAN_GIFT + f Lakq; aN field_19068 FLETCHER_GIFT + f Lakq; aO field_19069 LEATHERWORKER_GIFT + f Lakq; aP field_19070 LIBRARIAN_GIFT + f Lakq; aQ field_19071 MASON_GIFT + f Lakq; aR field_19072 SHEPHERD_GIFT + f Lakq; aS field_19073 TOOLSMITH_GIFT + f Lakq; aT field_19074 WEAPONSMITH_GIFT + f Lakq; aU field_44748 SNIFFER_DIGGING + f Lakq; aV field_49158 PANDA_SNEEZE + f Lakq; aW field_22402 PIGLIN_BARTERING + f Lakq; aX field_47423 SPAWNER_TRIAL_CHAMBER_KEY + f Lakq; aY field_47424 SPAWNER_TRIAL_CHAMBER_CONSUMABLES + f Lakq; aZ field_50198 SPAWNER_OMINOUS_TRIAL_CHAMBER_KEY + f Lakq; aa field_47416 TRIAL_CHAMBERS_SUPPLY + f Lakq; ab field_47417 TRIAL_CHAMBERS_CORRIDOR + f Lakq; ac field_47418 TRIAL_CHAMBERS_INTERSECTION + f Lakq; ad field_47419 TRIAL_CHAMBERS_INTERSECTION_BARREL + f Lakq; ae field_47420 TRIAL_CHAMBERS_ENTRANCE + f Lakq; af field_47421 TRIAL_CHAMBERS_CORRIDOR_DISPENSER + f Lakq; ag field_47422 TRIAL_CHAMBERS_CHAMBER_DISPENSER + f Lakq; ah field_47425 TRIAL_CHAMBERS_WATER_DISPENSER + f Lakq; ai field_47426 TRIAL_CHAMBERS_CORRIDOR_POT + f Lakq; aj field_50201 EQUIPMENT_TRIAL_CHAMBER + f Lakq; ak field_51414 EQUIPMENT_TRIAL_CHAMBER_RANGED + f Lakq; al field_51415 EQUIPMENT_TRIAL_CHAMBER_MELEE + f Lakq; am field_869 SHEEP_WHITE + f Lakq; an field_814 SHEEP_ORANGE + f Lakq; ao field_224 SHEEP_MAGENTA + f Lakq; ap field_461 SHEEP_LIGHT_BLUE + f Lakq; aq field_385 SHEEP_YELLOW + f Lakq; ar field_702 SHEEP_LIME + f Lakq; as field_629 SHEEP_PINK + f Lakq; at field_878 SHEEP_GRAY + f Lakq; au field_806 SHEEP_LIGHT_GRAY + f Lakq; av field_365 SHEEP_CYAN + f Lakq; aw field_285 SHEEP_PURPLE + f Lakq; ax field_394 SHEEP_BLUE + f Lakq; ay field_489 SHEEP_BROWN + f Lakq; az field_607 SHEEP_GREEN + f Lakq; b field_850 SPAWN_BONUS_CHEST + f Lakq; ba field_50199 SPAWNER_OMINOUS_TRIAL_CHAMBER_CONSUMABLES + f Lakq; bb field_50200 SPAWNER_TRIAL_ITEMS_TO_DROP_WHEN_OMINOUS + f Lakq; bc field_49427 BOGGED_SHEAR + f Lakq; bd field_43353 DESERT_WELL_ARCHAEOLOGY + f Lakq; be field_43354 DESERT_PYRAMID_ARCHAEOLOGY + f Lakq; bf field_44648 TRAIL_RUINS_ARCHAEOLOGY_COMMON + f Lakq; bg field_44649 TRAIL_RUINS_ARCHAEOLOGY_RARE + f Lakq; bh field_43356 OCEAN_RUIN_WARM_ARCHAEOLOGY + f Lakq; bi field_43357 OCEAN_RUIN_COLD_ARCHAEOLOGY + f Ljava/util/Set; bj field_667 LOCATIONS + f Ljava/util/Set; bk field_600 IMMUTABLE_LOCATIONS + f Lakq; c field_274 END_CITY_TREASURE + f Lakq; d field_356 SIMPLE_DUNGEON + f Lakq; e field_434 VILLAGE_WEAPONSMITH + f Lakq; f field_17107 VILLAGE_TOOLSMITH + f Lakq; g field_17009 VILLAGE_ARMORER + f Lakq; h field_16751 VILLAGE_CARTOGRAPHER + f Lakq; i field_17010 VILLAGE_MASON + f Lakq; j field_17011 VILLAGE_SHEPHERD + f Lakq; k field_17012 VILLAGE_BUTCHER + f Lakq; l field_17108 VILLAGE_FLETCHER + f Lakq; m field_18007 VILLAGE_FISHER + f Lakq; n field_16750 VILLAGE_TANNERY + f Lakq; o field_17109 VILLAGE_TEMPLE + f Lakq; p field_16752 VILLAGE_DESERT_HOUSE + f Lakq; q field_16748 VILLAGE_PLAINS_HOUSE + f Lakq; r field_16749 VILLAGE_TAIGA_HOUSE + f Lakq; s field_16754 VILLAGE_SNOWY_HOUSE + f Lakq; t field_16753 VILLAGE_SAVANNA_HOUSE + f Lakq; u field_472 ABANDONED_MINESHAFT + f Lakq; v field_615 NETHER_BRIDGE + f Lakq; w field_683 STRONGHOLD_LIBRARY + f Lakq; x field_800 STRONGHOLD_CROSSING + f Lakq; y field_842 STRONGHOLD_CORRIDOR + f Lakq; z field_885 DESERT_PYRAMID + m ()Ljava/util/Set; a method_270 all + m (Lakq;)Lakq; a method_271 register + m (Ljava/lang/String;)Lakq; a method_269 register + m ()V + m ()V +c ero net/minecraft/class_9666 net/minecraft/world/level/storage/loot/ContainerComponentManipulator + m ()Lkp; a method_59719 type + m (Lcuq;Ljava/lang/Object;Ljava/util/stream/Stream;)V a method_59720 setContents + m (Lcuq;Ljava/util/function/UnaryOperator;)V a method_59721 modifyItems + m (Lcuq;Ljava/util/stream/Stream;)V a method_59722 setContents + m (Ljava/lang/Object;)Ljava/util/stream/Stream; a method_59723 getContents + m (Ljava/lang/Object;Ljava/util/stream/Stream;)Ljava/lang/Object; a method_59724 setContents + m (Ljava/util/function/UnaryOperator;Lcuq;)Lcuq; a method_59725 method_59725 + m ()Ljava/lang/Object; b method_59726 empty +c erp net/minecraft/class_9667 net/minecraft/world/level/storage/loot/ContainerComponentManipulators + f Lero; a field_51416 CONTAINER + f Lero; b field_51417 BUNDLE_CONTENTS + f Lero; c field_51418 CHARGED_PROJECTILES + f Ljava/util/Map; d field_51419 ALL_MANIPULATORS + f Lcom/mojang/serialization/Codec; e field_51420 CODEC + m ()Ljava/lang/String; a method_59727 method_59727 + m (Lero;)Lero; a method_59728 method_59728 + m (Lkp;)Lcom/mojang/serialization/DataResult; a method_59729 method_59729 + m ()V +c erp$1 net/minecraft/class_9667$1 net/minecraft/world/level/storage/loot/ContainerComponentManipulators$1 + m (Lcxo;)Ljava/util/stream/Stream; a method_59730 getContents + m (Lcxo;Ljava/util/stream/Stream;)Lcxo; a method_59731 setContents + m ()Lcxo; c method_59732 empty + m ()V +c erp$2 net/minecraft/class_9667$2 net/minecraft/world/level/storage/loot/ContainerComponentManipulators$2 + m (Lcxf;)Ljava/util/stream/Stream; a method_59733 getContents + m (Lcxf;Ljava/util/stream/Stream;)Lcxf; a method_59734 setContents + m ()Lcxf; c method_59735 empty + m ()V +c erp$3 net/minecraft/class_9667$3 net/minecraft/world/level/storage/loot/ContainerComponentManipulators$3 + m (Lcxg;)Ljava/util/stream/Stream; a method_59736 getContents + m (Lcxg;Ljava/util/stream/Stream;)Lcxg; a method_59737 setContents + m ()Lcxg; c method_59738 empty + m ()V +c erq net/minecraft/class_42 net/minecraft/world/level/storage/loot/IntRange + f Lcom/mojang/serialization/Codec; a field_45790 CODEC + f Lcom/mojang/serialization/Codec; b field_45791 RECORD_CODEC + f Levy; c field_921 min + f Levy; d field_920 max + f Lerq$b; e field_27897 limiter + f Lerq$a; f field_27898 predicate + m ()Ljava/util/Set; a method_32386 getReferencedContextParams + m (I)Lerq; a method_32387 exact + m (II)Lerq; a method_282 range + m (Lcom/mojang/datafixers/util/Either;)Lerq; a method_53260 method_53260 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53261 method_53261 + m (Lerq;)Lcom/mojang/datafixers/util/Either; a method_53262 method_53262 + m (Lerr;I)I a method_32389 clamp + m (Levy;Lerr;I)Z a method_32390 method_32390 + m (Levy;Levy;Lerr;I)Z a method_32391 method_32391 + m ()Ljava/util/OptionalInt; b method_53263 unpackExact + m (I)Lerq; b method_280 lowerBound + m (Lerq;)Ljava/util/Optional; b method_53264 method_53264 + m (Lerr;I)Z b method_32393 test + m (Levy;Lerr;I)I b method_32394 method_32394 + m (Levy;Levy;Lerr;I)I b method_32395 method_32395 + m (I)Lerq; c method_277 upperBound + m (Lerq;)Ljava/util/Optional; c method_53265 method_53265 + m (Lerr;I)Z c method_32396 method_32396 + m (Levy;Lerr;I)Z c method_32397 method_32397 + m (Lerr;I)I d method_279 method_279 + m (Levy;Lerr;I)I d method_32398 method_32398 + m (Ljava/util/Optional;Ljava/util/Optional;)V + m (Levy;Levy;)V + m ()V +c erq$a net/minecraft/class_42$class_5638 net/minecraft/world/level/storage/loot/IntRange$IntChecker +c erq$b net/minecraft/class_42$class_5639 net/minecraft/world/level/storage/loot/IntRange$IntLimiter +c err net/minecraft/class_47 net/minecraft/world/level/storage/loot/LootContext + f Leru; a field_44881 params + f Layw; b field_923 random + f Ljn$a; c field_44490 lootDataResolver + f Ljava/util/Set; d field_927 visitedElements + m ()Ljn$a; a method_51183 getResolver + m (Lakr;Ljava/util/function/Consumer;)V a method_297 addDynamicDrops + m (Lerr$c;)Z a method_51184 hasVisitedElement + m (Lerw;)Lerr$c; a method_51185 createVisitedEntry + m (Letf;)Lerr$c; a method_51186 createVisitedEntry + m (Leuk;)Z a method_300 hasParam + m (Levc;)Lerr$c; a method_51187 createVisitedEntry + m ()Layw; b method_294 getRandom + m (Lerr$c;)Z b method_298 pushVisitedElement + m (Leuk;)Ljava/lang/Object; b method_35508 getParam + m ()F c method_302 getLuck + m (Lerr$c;)V c method_295 popVisitedElement + m (Leuk;)Ljava/lang/Object; c method_296 getParamOrNull + m ()Laqu; d method_299 getLevel + m (Leru;Layw;Ljn$a;)V +c err$a net/minecraft/class_47$class_48 net/minecraft/world/level/storage/loot/LootContext$Builder + f Leru; a field_44882 params + f Layw; b field_934 random + m ()Laqu; a method_313 getLevel + m (J)Lerr$a; a method_304 withOptionalRandomSeed + m (Layw;)Lerr$a; a method_60568 withOptionalRandomSource + m (Ljava/util/Optional;)Lerr; a method_309 create + m (Ljava/util/Optional;Laqu;)Ljava/util/Optional; a method_53266 method_53266 + m (Leru;)V +c err$b net/minecraft/class_47$class_50 net/minecraft/world/level/storage/loot/LootContext$EntityTarget + f Lerr$b; a field_935 THIS + f Lerr$b; b field_936 ATTACKER + f Lerr$b; c field_939 DIRECT_ATTACKER + f Lerr$b; d field_937 ATTACKING_PLAYER + f Lazk$a; e field_45792 CODEC + f Ljava/lang/String; f field_941 name + f Leuk; g field_938 param + f [Lerr$b; h field_940 $VALUES + m ()Leuk; a method_315 getParam + m (Ljava/lang/String;)Lerr$b; a method_314 getByName + m ()[Lerr$b; b method_36793 $values + m (Ljava/lang/String;ILjava/lang/String;Leuk;)V + m ()V +c err$c net/minecraft/class_47$class_8487 net/minecraft/world/level/storage/loot/LootContext$VisitedEntry + f Lert; a comp_1472 type + f Ljava/lang/Object; b comp_1473 value + m ()Lert; a comp_1472 type + m ()Ljava/lang/Object; b comp_1473 value + m (Lert;Ljava/lang/Object;)V +c ers net/minecraft/class_46 net/minecraft/world/level/storage/loot/LootContextUser + m ()Ljava/util/Set; a method_293 getReferencedContextParams + m (Lerx;)V a method_292 validate +c ert net/minecraft/class_8490 net/minecraft/world/level/storage/loot/LootDataType + f Lert; a field_44496 PREDICATE + f Lert; b field_44497 MODIFIER + f Lert; c field_44498 TABLE + f Lakq; d comp_2519 registryKey + f Lcom/mojang/serialization/Codec; e comp_2520 codec + f Lert$a; f comp_2522 validator + f Lorg/slf4j/Logger; g field_44499 LOGGER + m ()Ljava/util/stream/Stream; a method_51215 values + m (Lakr;Lcom/mojang/serialization/DataResult$Error;)V a method_53267 method_53267 + m (Lakr;Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Ljava/util/Optional; a method_51204 deserialize + m (Lerx;Lakq;Lers;)V a method_51207 method_51207 + m (Lerx;Lakq;Lerw;)V a method_51208 method_51208 + m (Lerx;Lakq;Ljava/lang/Object;)V a method_51209 runValidation + m ()Lakq; b comp_2519 registryKey + m ()Lcom/mojang/serialization/Codec; c comp_2520 codec + m ()Lert$a; d comp_2522 validator + m ()Lert$a; e method_51216 createSimpleValidator + m ()Lert$a; f method_51217 createLootTableValidator + m (Lakq;Lcom/mojang/serialization/Codec;Lert$a;)V + m ()V +c ert$a net/minecraft/class_8490$class_8491 net/minecraft/world/level/storage/loot/LootDataType$Validator +c eru net/minecraft/class_8567 net/minecraft/world/level/storage/loot/LootParams + f Laqu; a field_44883 level + f Ljava/util/Map; b field_44884 params + f Ljava/util/Map; c field_44885 dynamicDrops + f F d field_44886 luck + m ()Laqu; a method_51863 getLevel + m (Lakr;Ljava/util/function/Consumer;)V a method_51864 addDynamicDrops + m (Leuk;)Z a method_51865 hasParam + m ()F b method_51866 getLuck + m (Leuk;)Ljava/lang/Object; b method_51867 getParameter + m (Leuk;)Ljava/lang/Object; c method_51868 getOptionalParameter + m (Leuk;)Ljava/lang/Object; d method_51869 getParamOrNull + m (Laqu;Ljava/util/Map;Ljava/util/Map;F)V +c eru$a net/minecraft/class_8567$class_8568 net/minecraft/world/level/storage/loot/LootParams$Builder + f Laqu; a field_44887 level + f Ljava/util/Map; b field_44888 params + f Ljava/util/Map; c field_44889 dynamicDrops + f F d field_44890 luck + m ()Laqu; a method_51870 getLevel + m (F)Leru$a; a method_51871 withLuck + m (Lakr;Leru$b;)Leru$a; a method_51872 withDynamicDrop + m (Leuk;)Ljava/lang/Object; a method_51873 getParameter + m (Leuk;Ljava/lang/Object;)Leru$a; a method_51874 withParameter + m (Leul;)Leru; a method_51875 create + m (Leuk;)Ljava/lang/Object; b method_51876 getOptionalParameter + m (Leuk;Ljava/lang/Object;)Leru$a; b method_51877 withOptionalParameter + m (Laqu;)V +c eru$b net/minecraft/class_8567$class_49 net/minecraft/world/level/storage/loot/LootParams$DynamicDrop +c erv net/minecraft/class_55 net/minecraft/world/level/storage/loot/LootPool + f Lcom/mojang/serialization/Codec; a field_45795 CODEC + f Ljava/util/List; b field_953 entries + f Ljava/util/List; c field_954 conditions + f Ljava/util/function/Predicate; d field_955 compositeCondition + f Ljava/util/List; e field_956 functions + f Ljava/util/function/BiFunction; f field_952 compositeFunction + f Levy; g field_957 rolls + f Levy; h field_958 bonusRolls + m ()Lerv$a; a method_347 lootPool + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53268 method_53268 + m (Lerr;Ljava/util/List;Lorg/apache/commons/lang3/mutable/MutableInt;Lesg;)V a method_342 method_342 + m (Lerv;)Levy; a method_53269 method_53269 + m (Lerx;)V a method_349 validate + m (Ljava/util/function/Consumer;Lerr;)V a method_341 addRandomItems + m (Lerv;)Levy; b method_53270 method_53270 + m (Ljava/util/function/Consumer;Lerr;)V b method_345 addRandomItem + m (Lerv;)Ljava/util/List; c method_53271 method_53271 + m (Lerv;)Ljava/util/List; d method_53272 method_53272 + m (Lerv;)Ljava/util/List; e method_53273 method_53273 + m (Ljava/util/List;Ljava/util/List;Ljava/util/List;Levy;Levy;)V + m ()V +c erv$a net/minecraft/class_55$class_56 net/minecraft/world/level/storage/loot/LootPool$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_960 entries + f Lcom/google/common/collect/ImmutableList$Builder; b field_963 conditions + f Lcom/google/common/collect/ImmutableList$Builder; c field_961 functions + f Levy; d field_959 rolls + f Levy; e field_962 bonusRolls + m ()Lerv$a; a method_354 unwrap + m (Lesh$a;)Lerv$a; a method_351 add + m (Letf$a;)Lerv$a; a method_353 apply + m (Levc$a;)Lerv$a; a method_356 when + m (Levy;)Lerv$a; a method_352 setRolls + m ()Lerv; b method_355 build + m (Levy;)Lerv$a; b method_35509 setBonusRolls + m ()V +c erw net/minecraft/class_52 net/minecraft/world/level/storage/loot/LootTable + f Lerw; a field_948 EMPTY + f Leul; b field_947 DEFAULT_PARAM_SET + f J c field_49428 RANDOMIZE_SEED + f Lcom/mojang/serialization/Codec; d field_50021 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; e field_45796 CODEC + f Lorg/slf4j/Logger; f field_946 LOGGER + f Leul; g field_942 paramSet + f Ljava/util/Optional; h field_44892 randomSequence + f Ljava/util/List; i field_943 pools + f Ljava/util/List; j field_944 functions + f Ljava/util/function/BiFunction; k field_945 compositeFunction + m ()Leul; a method_322 getParamSet + m (Laqu;Ljava/util/function/Consumer;)Ljava/util/function/Consumer; a method_332 createStackSplitter + m (Laqu;Ljava/util/function/Consumer;Lcuq;)V a method_331 method_331 + m (Lbqk;Layw;)Ljava/util/List; a method_321 getAvailableSlots + m (Lbqk;Leru;J)V a method_329 fill + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53274 method_53274 + m (Lerr;)Lit/unimi/dsi/fastutil/objects/ObjectArrayList; a method_319 getRandomItems + m (Lerr;Ljava/util/function/Consumer;)V a method_328 getRandomItemsRaw + m (Leru;)Lit/unimi/dsi/fastutil/objects/ObjectArrayList; a method_51878 getRandomItems + m (Leru;J)Lit/unimi/dsi/fastutil/objects/ObjectArrayList; a method_51879 getRandomItems + m (Leru;JLjava/util/function/Consumer;)V a method_51880 getRandomItems + m (Leru;Layw;)Lit/unimi/dsi/fastutil/objects/ObjectArrayList; a method_60569 getRandomItems + m (Leru;Ljava/util/function/Consumer;)V a method_51881 getRandomItemsRaw + m (Lerw;)Ljava/util/List; a method_53275 method_53275 + m (Lerx;)V a method_330 validate + m (Lit/unimi/dsi/fastutil/objects/ObjectArrayList;ILayw;)V a method_333 shuffleAndSplitItems + m ()Lerw$a; b method_324 lootTable + m (Lerr;Ljava/util/function/Consumer;)V b method_320 getRandomItems + m (Leru;Ljava/util/function/Consumer;)V b method_51882 getRandomItems + m (Lerw;)Ljava/util/List; b method_53276 method_53276 + m (Lerw;)Ljava/util/Optional; c method_53277 method_53277 + m (Lerw;)Leul; d method_53278 method_53278 + m (Leul;Ljava/util/Optional;Ljava/util/List;Ljava/util/List;)V + m ()V +c erw$a net/minecraft/class_52$class_53 net/minecraft/world/level/storage/loot/LootTable$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_949 pools + f Lcom/google/common/collect/ImmutableList$Builder; b field_951 functions + f Leul; c field_950 paramSet + f Ljava/util/Optional; d field_44893 randomSequence + m ()Lerw$a; a method_337 unwrap + m (Lakr;)Lerw$a; a method_51883 setRandomSequence + m (Lerv$a;)Lerw$a; a method_336 withPool + m (Letf$a;)Lerw$a; a method_335 apply + m (Leul;)Lerw$a; a method_334 setParamSet + m ()Lerw; b method_338 build + m ()V +c erx net/minecraft/class_58 net/minecraft/world/level/storage/loot/ValidationContext + f Layu; a field_47427 reporter + f Leul; b field_20756 params + f Ljava/util/Optional; c field_44504 resolver + f Ljava/util/Set; d field_44505 visitedElements + m ()Ljn$a; a method_51220 resolver + m (Lakq;)Z a method_51218 hasVisitedElement + m (Lers;)V a method_22567 validateUser + m (Leul;)Lerx; a method_22568 setParams + m (Ljava/lang/String;)Lerx; a method_364 forChild + m (Ljava/lang/String;Lakq;)Lerx; a method_51219 enterElement + m ()Z b method_61030 allowsReferences + m (Ljava/lang/String;)V b method_360 reportProblem + m ()Layu; c method_60288 reporter + m ()Ljava/lang/UnsupportedOperationException; d method_61031 method_61031 + m (Layu;Leul;Ljn$a;)V + m (Layu;Leul;)V + m (Layu;Leul;Ljava/util/Optional;Ljava/util/Set;)V +c ery net/minecraft/class_65 net/minecraft/world/level/storage/loot/entries/AlternativesEntry + f Lcom/mojang/serialization/MapCodec; a field_45797 CODEC + m (I)[Lesh$a; a method_43733 method_43733 + m (Ljava/util/Collection;Ljava/util/function/Function;)Lery$a; a method_43734 alternatives + m (Ljava/util/List;Lerr;Ljava/util/function/Consumer;)Z a method_387 method_387 + m ([Lesh$a;)Lery$a; a method_386 alternatives + m (Ljava/util/List;Ljava/util/List;)V + m ()V +c ery$a net/minecraft/class_65$class_66 net/minecraft/world/level/storage/loot/entries/AlternativesEntry$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_979 entries + m ()Lery$a; a method_388 getThis + m ([Lesh$a;)V +c erz net/minecraft/class_64 net/minecraft/world/level/storage/loot/entries/ComposableEntryContainer + f Lerz; b field_16883 ALWAYS_FALSE + f Lerz; c field_16884 ALWAYS_TRUE + m (Lerr;Ljava/util/function/Consumer;)Z a method_16776 method_16776 + m (Lerz;Lerr;Ljava/util/function/Consumer;)Z a method_16777 method_16777 + m (Lerz;)Lerz; and method_16778 and + m (Lerr;Ljava/util/function/Consumer;)Z b method_16775 method_16775 + m (Lerz;Lerr;Ljava/util/function/Consumer;)Z b method_16779 method_16779 + m (Lerz;)Lerz; or method_385 or + m ()V +c esa net/minecraft/class_69 net/minecraft/world/level/storage/loot/entries/CompositeEntryBase + f Lerz; a field_983 composedChildren + f Ljava/util/List; d field_982 children + m (Lesa$a;)Lcom/mojang/serialization/MapCodec; a method_53279 createCodec + m (Lesa$a;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53280 method_53280 + m (Lesa;)Ljava/util/List; a method_53281 method_53281 + m (Ljava/util/List;)Lerz; a method_394 compose + m (Ljava/util/List;Ljava/util/List;)V +c esa$a net/minecraft/class_69$class_70 net/minecraft/world/level/storage/loot/entries/CompositeEntryBase$CompositeEntryConstructor +c esb net/minecraft/class_67 net/minecraft/world/level/storage/loot/entries/DynamicLoot + f Lcom/mojang/serialization/MapCodec; a field_45798 CODEC + f Lakr; j field_980 name + m (Lakr;)Lesj$a; a method_390 dynamicEntry + m (Lakr;IILjava/util/List;Ljava/util/List;)Lesj; a method_391 method_391 + m (Lesb;)Lakr; a method_53282 method_53282 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_53283 method_53283 + m (Lakr;IILjava/util/List;Ljava/util/List;)V + m ()V +c esc net/minecraft/class_73 net/minecraft/world/level/storage/loot/entries/EmptyLootItem + f Lcom/mojang/serialization/MapCodec; a field_45799 CODEC + m ()Lesj$a; b method_401 emptyItem + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_53284 method_53284 + m (IILjava/util/List;Ljava/util/List;)V + m ()V +c esd net/minecraft/class_93 net/minecraft/world/level/storage/loot/entries/EntryGroup + f Lcom/mojang/serialization/MapCodec; a field_45800 CODEC + m (Lerz;Lerz;Lerr;Ljava/util/function/Consumer;)Z a method_29315 method_29315 + m (Ljava/util/List;Lerr;Ljava/util/function/Consumer;)Z a method_452 method_452 + m ([Lesh$a;)Lesd$a; a method_35511 list + m (Ljava/util/List;Ljava/util/List;)V + m ()V +c esd$a net/minecraft/class_93$class_6152 net/minecraft/world/level/storage/loot/entries/EntryGroup$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_31846 entries + m ()Lesd$a; a method_35512 getThis + m ([Lesh$a;)V +c ese net/minecraft/class_77 net/minecraft/world/level/storage/loot/entries/LootItem + f Lcom/mojang/serialization/MapCodec; a field_45801 CODEC + f Ljm; j field_987 item + m (Ldcv;)Lesj$a; a method_411 lootTableItem + m (Ldcv;IILjava/util/List;Ljava/util/List;)Lesj; a method_409 method_409 + m (Lese;)Ljm; a method_53285 method_53285 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_53286 method_53286 + m (Ljm;IILjava/util/List;Ljava/util/List;)V + m ()V +c esf net/minecraft/class_75 net/minecraft/world/level/storage/loot/entries/LootPoolEntries + f Lcom/mojang/serialization/Codec; a field_45802 CODEC + f Lesi; b field_25206 EMPTY + f Lesi; c field_25207 ITEM + f Lesi; d field_25208 LOOT_TABLE + f Lesi; e field_25209 DYNAMIC + f Lesi; f field_25210 TAG + f Lesi; g field_25211 ALTERNATIVES + f Lesi; h field_25212 SEQUENCE + f Lesi; i field_25213 GROUP + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lesi; a method_29317 register + m ()V + m ()V +c esg net/minecraft/class_82 net/minecraft/world/level/storage/loot/entries/LootPoolEntry + m (F)I a method_427 getWeight + m (Ljava/util/function/Consumer;Lerr;)V a method_426 createItemStack +c esh net/minecraft/class_79 net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer + f Ljava/util/function/Predicate; a field_989 compositeCondition + f Ljava/util/List; e field_988 conditions + m ()Lesi; a method_29318 getType + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P1; a method_53287 commonFields + m (Lerr;)Z a method_414 canRun + m (Lerx;)V a method_415 validate + m (Lesh;)Ljava/util/List; a method_53288 method_53288 + m (Ljava/util/List;)V +c esh$a net/minecraft/class_79$class_80 net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_990 conditions + m (Lesh$a;)Lery$a; a method_417 otherwise + m (Levc$a;)Lesh$a; a method_421 when + m ()Lesh$a; aH_ method_418 getThis + m ()Lesh; b method_419 build + m (Lesh$a;)Lesd$a; b method_35513 append + m (Lesh$a;)Lesl$a; c method_35514 then + m ()Lesh$a; e method_416 unwrap + m ()Ljava/util/List; f method_420 getConditions + m ()V +c esi net/minecraft/class_5338 net/minecraft/world/level/storage/loot/entries/LootPoolEntryType + f Lcom/mojang/serialization/MapCodec; a comp_1847 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_1847 codec + m (Lcom/mojang/serialization/MapCodec;)V +c esj net/minecraft/class_85 net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer + f Ljava/util/function/BiFunction; a field_997 compositeFunction + f I d field_31847 DEFAULT_WEIGHT + f I f field_31848 DEFAULT_QUALITY + f I g field_995 weight + f I h field_994 quality + f Ljava/util/List; i field_996 functions + f Lesg; j field_998 entry + m (Lesj$d;)Lesj$a; a method_434 simpleBuilder + m (Lesj;)Ljava/util/List; a method_53289 method_53289 + m (Ljava/util/function/Consumer;Lerr;)V a method_433 createItemStack + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P4; b method_53290 singletonFields + m (Lesj;)Ljava/lang/Integer; b method_53291 method_53291 + m (Lesj;)Ljava/lang/Integer; c method_53292 method_53292 + m (IILjava/util/List;Ljava/util/List;)V +c esj$1 net/minecraft/class_85$1 net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer$1 + f Lesj; a field_1002 field_1002 + m (Lesj;)V +c esj$a net/minecraft/class_85$class_86 net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer$Builder + f I a field_1001 weight + f I b field_1000 quality + f Lcom/google/common/collect/ImmutableList$Builder; c field_999 functions + m ()Ljava/util/List; a method_439 getFunctions + m (I)Lesj$a; a method_437 setWeight + m (Letf$a;)Lesj$a; a method_438 apply + m (I)Lesj$a; b method_436 setQuality + m ()V +c esj$b net/minecraft/class_85$class_87 net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer$DummyBuilder + f Lesj$d; c field_1003 constructor + m ()Lesj$b; g method_440 getThis + m (Lesj$d;)V +c esj$c net/minecraft/class_85$class_88 net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer$EntryBase + f Lesj; b field_1004 field_1004 + m (Lesj;)V +c esj$d net/minecraft/class_85$class_89 net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer$EntryConstructor +c esk net/minecraft/class_83 net/minecraft/world/level/storage/loot/entries/NestedLootTable + f Lcom/mojang/serialization/MapCodec; a field_45803 CODEC + f Lcom/mojang/datafixers/util/Either; j field_49429 contents + m (Lakq;)Lesj$a; a method_428 lootTableReference + m (Lakq;IILjava/util/List;Ljava/util/List;)Lesj; a method_430 method_430 + m (Lerr;Lakq;)Lerw; a method_57630 method_57630 + m (Lerw;)Lesj$a; a method_57631 inlineLootTable + m (Lerw;IILjava/util/List;Ljava/util/List;)Lesj; a method_57632 method_57632 + m (Lerx;Lakq;)V a method_51223 method_51223 + m (Lerx;Lakq;Ljm$c;)V a method_57633 method_57633 + m (Lerx;Lerw;)V a method_51222 method_51222 + m (Lesk;)Lcom/mojang/datafixers/util/Either; a method_53293 method_53293 + m (Lerw;)Lerw; b method_57634 method_57634 + m (Lerx;Lakq;)V b method_57635 method_57635 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_53294 method_53294 + m (Lcom/mojang/datafixers/util/Either;IILjava/util/List;Ljava/util/List;)V + m ()V +c esl net/minecraft/class_72 net/minecraft/world/level/storage/loot/entries/SequentialEntry + f Lcom/mojang/serialization/MapCodec; a field_45804 CODEC + m (Ljava/util/List;Lerr;Ljava/util/function/Consumer;)Z a method_400 method_400 + m ([Lesh$a;)Lesl$a; a method_35515 sequential + m (Ljava/util/List;Ljava/util/List;)V + m ()V +c esl$a net/minecraft/class_72$class_6153 net/minecraft/world/level/storage/loot/entries/SequentialEntry$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_31849 entries + m ()Lesl$a; a method_35516 getThis + m ([Lesh$a;)V +c esm net/minecraft/class_91 net/minecraft/world/level/storage/loot/entries/TagEntry + f Lcom/mojang/serialization/MapCodec; a field_45805 CODEC + f Lawu; j field_1005 tag + f Z k field_1006 expand + m (Lawu;)Lesj$a; a method_35517 tagContents + m (Lawu;IILjava/util/List;Ljava/util/List;)Lesj; a method_444 method_444 + m (Lerr;Ljava/util/function/Consumer;)Z a method_447 expandTag + m (Lesm;)Ljava/lang/Boolean; a method_53295 method_53295 + m (Ljava/util/function/Consumer;Ljm;)V a method_449 method_449 + m (Lawu;)Lesj$a; b method_445 expandTag + m (Lawu;IILjava/util/List;Ljava/util/List;)Lesj; b method_35518 method_35518 + m (Lesm;)Lawu; b method_53296 method_53296 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; c method_53297 method_53297 + m (Lawu;ZIILjava/util/List;Ljava/util/List;)V + m ()V +c esm$1 net/minecraft/class_91$1 net/minecraft/world/level/storage/loot/entries/TagEntry$1 + f Ljm; a field_1007 val$item + m (Lesm;Ljm;)V +c esn net/minecraft/class_6154 net/minecraft/world/level/storage/loot/entries/package-info +c eso net/minecraft/class_94 net/minecraft/world/level/storage/loot/functions/ApplyBonusCount + f Lcom/mojang/serialization/MapCodec; a field_45806 CODEC + f Ljava/util/Map; b field_1010 FORMULAS + f Lcom/mojang/serialization/Codec; c field_45807 FORMULA_TYPE_CODEC + f Lcom/mojang/serialization/MapCodec; d field_45808 FORMULA_CODEC + f Ljm; e field_1011 enchantment + f Leso$b; f field_1009 formula + m (Lakr;)Lcom/mojang/serialization/DataResult; a method_53298 method_53298 + m (Leso;)Leso$b; a method_53299 method_53299 + m (Ljm;)Lete$a; a method_455 addOreBonusCount + m (Ljm;FI)Lete$a; a method_463 addBonusBinomialDistributionCount + m (Ljm;I)Lete$a; a method_461 addUniformBonusCount + m (Ljm;IFLjava/util/List;)Letf; a method_459 method_459 + m (Ljm;ILjava/util/List;)Letf; a method_462 method_462 + m (Ljm;Ljava/util/List;)Letf; a method_457 method_457 + m (Lakr;)Ljava/lang/String; b method_53300 method_53300 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53301 method_53301 + m (Leso;)Ljm; b method_53302 method_53302 + m (Ljm;)Lete$a; b method_456 addUniformBonusCount + m (Ljm;Ljava/util/List;)Letf; b method_453 method_453 + m (Ljava/util/List;Ljm;Leso$b;)V + m ()V +c eso$a net/minecraft/class_94$class_95 net/minecraft/world/level/storage/loot/functions/ApplyBonusCount$BinomialWithBonusCount + f Leso$c; a field_1013 TYPE + f I b comp_1848 extraRounds + f F c comp_1849 probability + f Lcom/mojang/serialization/Codec; d field_45811 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53307 method_53307 + m ()I b comp_1848 extraRounds + m ()F c comp_1849 probability + m (IF)V + m ()V +c eso$b net/minecraft/class_94$class_96 net/minecraft/world/level/storage/loot/functions/ApplyBonusCount$Formula + m ()Leso$c; a method_466 getType + m (Layw;II)I a method_467 calculateNewCount +c eso$c net/minecraft/class_94$class_8752 net/minecraft/world/level/storage/loot/functions/ApplyBonusCount$FormulaType + f Lakr; a comp_1850 id + f Lcom/mojang/serialization/Codec; b comp_1851 codec + m ()Lakr; a comp_1850 id + m ()Lcom/mojang/serialization/Codec; b comp_1851 codec + m (Lakr;Lcom/mojang/serialization/Codec;)V +c eso$d net/minecraft/class_94$class_98 net/minecraft/world/level/storage/loot/functions/ApplyBonusCount$OreDrops + f Lcom/mojang/serialization/Codec; a field_45812 CODEC + f Leso$c; b field_1015 TYPE + m ()V + m ()V +c eso$e net/minecraft/class_94$class_100 net/minecraft/world/level/storage/loot/functions/ApplyBonusCount$UniformBonusCount + f Lcom/mojang/serialization/Codec; a field_45813 CODEC + f Leso$c; b field_45814 TYPE + f I c comp_1852 bonusMultiplier + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53308 method_53308 + m ()I b comp_1852 bonusMultiplier + m (I)V + m ()V +c esp net/minecraft/class_104 net/minecraft/world/level/storage/loot/functions/ApplyExplosionDecay + f Lcom/mojang/serialization/MapCodec; a field_45815 CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53309 method_53309 + m ()Lete$a; c method_478 explosionDecay + m (Ljava/util/List;)V + m ()V +c esq net/minecraft/class_4488 net/minecraft/world/level/storage/loot/functions/CopyBlockState + f Lcom/mojang/serialization/MapCodec; a field_45816 CODEC + f Ljm; b field_20449 block + f Ljava/util/Set; c field_20450 properties + m (Ldfy;)Lesq$a; a method_21892 copyState + m (Ldtc;Lcxd;)Lcxd; a method_57636 method_57636 + m (Lesq;)Ljava/util/List; a method_53310 method_53310 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53311 method_53311 + m (Lesq;)Ljm; b method_53312 method_53312 + m (Ljava/util/List;Ljm;Ljava/util/Set;)V + m (Ljava/util/List;Ljm;Ljava/util/List;)V + m ()V +c esq$a net/minecraft/class_4488$class_4489 net/minecraft/world/level/storage/loot/functions/CopyBlockState$Builder + f Ljm; a field_20451 block + f Lcom/google/common/collect/ImmutableSet$Builder; b field_20452 properties + m ()Lesq$a; a method_21897 getThis + m (Lduf;)Lesq$a; a method_21898 copy + m (Ldfy;)V +c esr net/minecraft/class_9317 net/minecraft/world/level/storage/loot/functions/CopyComponentsFunction + f Lcom/mojang/serialization/MapCodec; a field_49430 CODEC + f Lesr$b; b field_49431 source + f Ljava/util/Optional; c field_50202 include + f Ljava/util/Optional; d field_50203 exclude + f Ljava/util/function/Predicate; e field_50204 bakedPredicate + m (Lesr$b;)Lesr$a; a method_57637 copyComponents + m (Lesr;)Ljava/util/Optional; a method_58726 method_58726 + m (Ljava/util/List;Ljava/util/List;)V a method_58727 method_58727 + m (Ljava/util/List;Lkp;)Z a method_58728 method_58728 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_57639 method_57639 + m (Lesr;)Ljava/util/Optional; b method_57638 method_57638 + m (Ljava/util/List;Ljava/util/List;)V b method_58729 method_58729 + m (Lesr;)Lesr$b; c method_57640 method_57640 + m (Ljava/util/List;Lesr$b;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c esr$a net/minecraft/class_9317$class_9318 net/minecraft/world/level/storage/loot/functions/CopyComponentsFunction$Builder + f Lesr$b; a field_49434 source + f Ljava/util/Optional; b field_50205 include + f Ljava/util/Optional; c field_50206 exclude + m ()Lesr$a; a method_57641 getThis + m (Lkp;)Lesr$a; a method_58730 include + m (Lkp;)Lesr$a; b method_58731 exclude + m (Lesr$b;)V +c esr$b net/minecraft/class_9317$class_9319 net/minecraft/world/level/storage/loot/functions/CopyComponentsFunction$Source + f Lesr$b; a field_49436 BLOCK_ENTITY + f Lcom/mojang/serialization/Codec; b field_49437 CODEC + f Ljava/lang/String; c field_49438 name + f [Lesr$b; d field_49439 $VALUES + m ()Ljava/util/Set; a method_57643 getReferencedContextParams + m (Lerr;)Lkm; a method_57644 get + m ()[Lesr$b; b method_57645 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ess net/minecraft/class_3837 net/minecraft/world/level/storage/loot/functions/CopyCustomDataFunction + f Lcom/mojang/serialization/MapCodec; a field_45819 CODEC + f Levq; b field_17013 source + f Ljava/util/List; c field_17014 operations + m (Lerr$b;)Less$a; a method_35519 copyData + m (Less;)Ljava/util/List; a method_53315 method_53315 + m (Levq;)Less$a; a method_16848 copyData + m (Ljava/util/function/Supplier;Luy;Less$b;)V a method_16846 method_16846 + m (Lorg/apache/commons/lang3/mutable/MutableObject;Lcuq;)Luy; a method_57646 method_57646 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53316 method_53316 + m (Less;)Levq; b method_53317 method_53317 + m (Ljava/util/List;Levq;Ljava/util/List;)V + m ()V +c ess$a net/minecraft/class_3837$class_3838 net/minecraft/world/level/storage/loot/functions/CopyCustomDataFunction$Builder + f Levq; a field_17017 source + f Ljava/util/List; b field_17018 ops + m ()Less$a; a method_16855 getThis + m (Ljava/lang/String;Ljava/lang/String;)Less$a; a method_16856 copy + m (Ljava/lang/String;Ljava/lang/String;Less$c;)Less$a; a method_16857 copy + m (Levq;)V +c ess$b net/minecraft/class_3837$class_3839 net/minecraft/world/level/storage/loot/functions/CopyCustomDataFunction$CopyOperation + f Lcom/mojang/serialization/Codec; a field_45820 CODEC + f Lfl$g; b comp_1853 sourcePath + f Lfl$g; c comp_1854 targetPath + f Less$c; d comp_1855 op + m ()Lfl$g; a comp_1853 sourcePath + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53318 method_53318 + m (Ljava/util/function/Supplier;Luy;)V a method_16860 apply + m ()Lfl$g; b comp_1854 targetPath + m ()Less$c; c comp_1855 op + m (Lfl$g;Lfl$g;Less$c;)V + m ()V +c ess$c net/minecraft/class_3837$class_3841 net/minecraft/world/level/storage/loot/functions/CopyCustomDataFunction$MergeStrategy + f Less$c; a field_17032 REPLACE + f Less$c; b field_17033 APPEND + f Less$c; c field_17034 MERGE + f Lcom/mojang/serialization/Codec; d field_45821 CODEC + f Ljava/lang/String; e field_17035 name + f [Less$c; f field_17036 $VALUES + m ()[Less$c; a method_36795 $values + m (Luy;Lfl$g;Ljava/util/List;)V a method_16864 merge + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ess$c$1 net/minecraft/class_3837$class_3841$1 net/minecraft/world/level/storage/loot/functions/CopyCustomDataFunction$MergeStrategy$1 + m (Ljava/lang/String;ILjava/lang/String;)V +c ess$c$2 net/minecraft/class_3837$class_3841$2 net/minecraft/world/level/storage/loot/functions/CopyCustomDataFunction$MergeStrategy$2 + m (Ljava/util/List;Luy;)V a method_16867 method_16867 + m (Luy;Luy;)V a method_16866 method_16866 + m (Ljava/lang/String;ILjava/lang/String;)V +c ess$c$3 net/minecraft/class_3837$class_3841$3 net/minecraft/world/level/storage/loot/functions/CopyCustomDataFunction$MergeStrategy$3 + m (Ljava/util/List;Luy;)V a method_16869 method_16869 + m (Luy;Luy;)V a method_16868 method_16868 + m (Ljava/lang/String;ILjava/lang/String;)V +c est net/minecraft/class_101 net/minecraft/world/level/storage/loot/functions/CopyNameFunction + f Lcom/mojang/serialization/MapCodec; a field_45817 CODEC + f Lest$a; b field_1018 source + m (Lest$a;)Lete$a; a method_473 copyName + m (Lest$a;Ljava/util/List;)Letf; a method_474 method_474 + m (Lest;)Lest$a; a method_53313 method_53313 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53314 method_53314 + m (Ljava/util/List;Lest$a;)V + m ()V +c est$a net/minecraft/class_101$class_102 net/minecraft/world/level/storage/loot/functions/CopyNameFunction$NameSource + f Lest$a; a field_1022 THIS + f Lest$a; b field_51790 ATTACKING_ENTITY + f Lest$a; c field_51791 LAST_DAMAGE_PLAYER + f Lest$a; d field_1023 BLOCK_ENTITY + f Lcom/mojang/serialization/Codec; e field_45818 CODEC + f Ljava/lang/String; f field_1025 name + f Leuk; g field_1024 param + f [Lest$a; h field_1021 $VALUES + m ()[Lest$a; a method_36794 $values + m (Ljava/lang/String;ILjava/lang/String;Leuk;)V + m ()V +c esu net/minecraft/class_109 net/minecraft/world/level/storage/loot/functions/EnchantRandomlyFunction + f Lcom/mojang/serialization/MapCodec; a field_45823 CODEC + f Lorg/slf4j/Logger; b field_1031 LOGGER + f Ljava/util/Optional; c field_51792 options + f Z d field_51793 onlyCompatible + m (Lcuq;Ljm;Layw;)Lcuq; a method_26266 enchantItem + m (Lerr;)Ljava/util/stream/Stream; a method_60289 method_60289 + m (Lesu;)Ljava/lang/Boolean; a method_60290 method_60290 + m (Ljo$a;)Lesu$a; a method_489 randomApplicableEnchantment + m (ZLcuq;Ljm;)Z a method_60291 method_60291 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_60292 method_60292 + m (Lesu;)Ljava/util/Optional; b method_53324 method_53324 + m ()Lesu$a; c method_35520 randomEnchantment + m (Ljava/util/List;Ljava/util/Optional;Z)V + m ()V +c esu$a net/minecraft/class_109$class_4954 net/minecraft/world/level/storage/loot/functions/EnchantRandomlyFunction$Builder + f Ljava/util/Optional; a field_51794 options + f Z b field_51795 onlyCompatible + m ()Lesu$a; a method_25991 getThis + m (Ljm;)Lesu$a; a method_25992 withEnchantment + m (Ljq;)Lesu$a; a method_60293 withOneOf + m ()Lesu$a; e method_60294 allowingIncompatibleEnchantments + m ()V +c esv net/minecraft/class_106 net/minecraft/world/level/storage/loot/functions/EnchantWithLevelsFunction + f Lcom/mojang/serialization/MapCodec; a field_45825 CODEC + f Levy; b field_1026 levels + f Ljava/util/Optional; c field_51796 options + m (Lesv;)Ljava/util/Optional; a method_53329 method_53329 + m (Ljo$a;Levy;)Lesv$a; a method_481 enchantWithLevels + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53330 method_53330 + m (Lesv;)Levy; b method_53331 method_53331 + m (Ljava/util/List;Levy;Ljava/util/Optional;)V + m ()V +c esv$a net/minecraft/class_106$class_107 net/minecraft/world/level/storage/loot/functions/EnchantWithLevelsFunction$Builder + f Levy; a field_1028 levels + f Ljava/util/Optional; b field_51797 options + m ()Lesv$a; a method_483 getThis + m (Ljq;)Lesv$a; a method_60295 fromOptions + m (Levy;)V +c esw net/minecraft/class_125 net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction + f I a field_31854 NO_LIMIT + f Lcom/mojang/serialization/MapCodec; b field_45833 CODEC + f Ljm; c field_51798 enchantment + f Levy; d field_1082 value + f I e field_1083 limit + m (Lesw;)Ljava/lang/Integer; a method_53348 method_53348 + m (Ljo$a;Levy;)Lesw$a; a method_547 lootingMultiplier + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53349 method_53349 + m (Lesw;)Levy; b method_53350 method_53350 + m ()Z c method_549 hasLimit + m (Lesw;)Ljm; c method_60296 method_60296 + m (Ljava/util/List;Ljm;Levy;I)V + m ()V +c esw$a net/minecraft/class_125$class_126 net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction$Builder + f Ljm; a field_51799 enchantment + f Levy; b field_1084 count + f I c field_1085 limit + m ()Lesw$a; a method_552 getThis + m (I)Lesw$a; a method_551 setLimit + m (Ljm;Levy;)V +c esx net/minecraft/class_111 net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction + f Lawu; a field_25032 DEFAULT_DESTINATION + f Ljm; b field_1034 DEFAULT_DECORATION + f B c field_31851 DEFAULT_ZOOM + f I d field_31852 DEFAULT_SEARCH_RADIUS + f Z e field_31853 DEFAULT_SKIP_EXISTING + f Lcom/mojang/serialization/MapCodec; f field_45826 CODEC + f Lawu; h field_1035 destination + f Ljm; i field_1036 mapDecoration + f B j field_1037 zoom + f I k field_1032 searchRadius + f Z l field_1033 skipKnownStructures + m (Lesx;)Ljava/lang/Boolean; a method_53332 method_53332 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53333 method_53333 + m (Lesx;)Ljava/lang/Integer; b method_53334 method_53334 + m ()Lesx$a; c method_492 makeExplorationMap + m (Lesx;)Ljava/lang/Byte; c method_53335 method_53335 + m (Lesx;)Ljm; d method_53336 method_53336 + m (Lesx;)Lawu; e method_53337 method_53337 + m (Ljava/util/List;Lawu;Ljm;BIZ)V + m ()V +c esx$a net/minecraft/class_111$class_112 net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction$Builder + f Lawu; a field_1039 destination + f Ljm; b field_1042 mapDecoration + f B c field_1043 zoom + f I d field_1040 searchRadius + f Z e field_1041 skipKnownStructures + m ()Lesx$a; a method_501 getThis + m (B)Lesx$a; a method_500 setZoom + m (I)Lesx$a; a method_35521 setSearchRadius + m (Lawu;)Lesx$a; a method_502 setDestination + m (Ljm;)Lesx$a; a method_499 setMapDecoration + m (Z)Lesx$a; a method_503 setSkipKnownStructures + m ()V +c esy net/minecraft/class_3668 net/minecraft/world/level/storage/loot/functions/FillPlayerHead + f Lcom/mojang/serialization/MapCodec; a field_45827 CODEC + f Lerr$b; b field_16227 entityTarget + m (Lerr$b;)Lete$a; a method_35522 fillPlayerHead + m (Lerr$b;Ljava/util/List;)Letf; a method_35523 method_35523 + m (Lesy;)Lerr$b; a method_53338 method_53338 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53339 method_53339 + m (Ljava/util/List;Lerr$b;)V + m ()V +c esz net/minecraft/class_9668 net/minecraft/world/level/storage/loot/functions/FilteredFunction + f Lcom/mojang/serialization/MapCodec; a field_51421 CODEC + f Lcs; b field_51422 filter + f Letf; c field_51423 modifier + m (Lesz;)Letf; a method_59739 method_59739 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_59740 method_59740 + m (Lesz;)Lcs; b method_59741 method_59741 + m (Ljava/util/List;Lcs;Letf;)V + m ()V +c eta net/minecraft/class_8492 net/minecraft/world/level/storage/loot/functions/FunctionReference + f Lcom/mojang/serialization/MapCodec; a field_45828 CODEC + f Lorg/slf4j/Logger; b field_44506 LOGGER + f Lakq; c field_44507 name + m (Lakq;)Lete$a; a method_51224 functionReference + m (Lakq;Ljava/util/List;)Letf; a method_51225 method_51225 + m (Lerx;Ljm$c;)V a method_51226 method_51226 + m (Leta;)Lakq; a method_53340 method_53340 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53341 method_53341 + m (Lerx;)V b method_51227 method_51227 + m (Ljava/util/List;Lakq;)V + m ()V +c etb net/minecraft/class_116 net/minecraft/world/level/storage/loot/functions/FunctionUserBuilder + m (Ljava/lang/Iterable;Ljava/util/function/Function;)Letb; a method_43739 apply + m ([Ljava/lang/Object;Ljava/util/function/Function;)Letb; a method_43740 apply + m (Letf$a;)Letb; b method_511 apply + m ()Letb; c method_43732 unwrap +c etc net/minecraft/class_114 net/minecraft/world/level/storage/loot/functions/LimitCount + f Lcom/mojang/serialization/MapCodec; a field_45829 CODEC + f Lerq; b field_1044 limiter + m (Lerq;)Lete$a; a method_506 limitCount + m (Lerq;Ljava/util/List;)Letf; a method_508 method_508 + m (Letc;)Lerq; a method_53342 method_53342 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53343 method_53343 + m (Ljava/util/List;Lerq;)V + m ()V +c etd net/minecraft/class_9368 net/minecraft/world/level/storage/loot/functions/ListOperation + f Lcom/mojang/serialization/MapCodec; a field_51424 UNLIMITED_CODEC + m ()Letd$f; a method_58191 mode + m (I)Lcom/mojang/serialization/MapCodec; a method_58456 codec + m (II)Ljava/lang/String; a method_58457 method_58457 + m (ILetd;)Lcom/mojang/serialization/DataResult; a method_58458 method_58458 + m (Letd$f;)Lcom/mojang/serialization/MapCodec; a method_58459 method_58459 + m (Ljava/util/List;Ljava/util/List;)Ljava/util/List; a method_59742 apply + m (Ljava/util/List;Ljava/util/List;I)Ljava/util/List; a method_58192 apply + m ()V +c etd$a net/minecraft/class_9368$class_9369 net/minecraft/world/level/storage/loot/functions/ListOperation$Append + f Letd$a; b field_49847 INSTANCE + f Lcom/mojang/serialization/MapCodec; c field_49848 MAP_CODEC + f Lorg/slf4j/Logger; d field_49849 LOGGER + m ()Letd$a; b method_58193 method_58193 + m ()V + m ()V +c etd$b net/minecraft/class_9368$class_9370 net/minecraft/world/level/storage/loot/functions/ListOperation$Insert + f Lcom/mojang/serialization/MapCodec; b field_49850 MAP_CODEC + f I c comp_2463 offset + f Lorg/slf4j/Logger; d field_49851 LOGGER + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58194 method_58194 + m ()I b comp_2463 offset + m (I)V + m ()V +c etd$c net/minecraft/class_9368$class_9371 net/minecraft/world/level/storage/loot/functions/ListOperation$ReplaceAll + f Letd$c; b field_49852 INSTANCE + f Lcom/mojang/serialization/MapCodec; c field_49853 MAP_CODEC + m ()Letd$c; b method_58195 method_58195 + m ()V + m ()V +c etd$d net/minecraft/class_9368$class_9372 net/minecraft/world/level/storage/loot/functions/ListOperation$ReplaceSection + f Lcom/mojang/serialization/MapCodec; b field_49854 MAP_CODEC + f I c comp_2464 offset + f Ljava/util/Optional; d comp_2465 size + f Lorg/slf4j/Logger; e field_49855 LOGGER + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58196 method_58196 + m ()I b comp_2464 offset + m ()Ljava/util/Optional; c comp_2465 size + m (I)V + m (ILjava/util/Optional;)V + m ()V +c etd$e net/minecraft/class_9368$class_9677 net/minecraft/world/level/storage/loot/functions/ListOperation$StandAlone + f Ljava/util/List; a comp_2651 value + f Letd; b comp_2652 operation + m ()Ljava/util/List; a comp_2651 value + m (Lcom/mojang/serialization/Codec;I)Lcom/mojang/serialization/Codec; a method_59828 codec + m (Lcom/mojang/serialization/Codec;ILcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_59829 method_59829 + m (Letd$e;)Letd; a method_59830 method_59830 + m (Ljava/util/List;)Ljava/util/List; a method_59831 apply + m ()Letd; b comp_2652 operation + m (Letd$e;)Ljava/util/List; b method_59832 method_59832 + m (Ljava/util/List;Letd;)V +c etd$f net/minecraft/class_9368$class_9373 net/minecraft/world/level/storage/loot/functions/ListOperation$Type + f Letd$f; a field_49856 REPLACE_ALL + f Letd$f; b field_49857 REPLACE_SECTION + f Letd$f; c field_49858 INSERT + f Letd$f; d field_49859 APPEND + f Lcom/mojang/serialization/Codec; e field_49860 CODEC + f Ljava/lang/String; f field_49862 id + f Lcom/mojang/serialization/MapCodec; g field_49863 mapCodec + f [Letd$f; h field_49864 $VALUES + m ()Lcom/mojang/serialization/MapCodec; a method_58197 mapCodec + m ()[Letd$f; b method_58199 $values + m (Ljava/lang/String;ILjava/lang/String;Lcom/mojang/serialization/MapCodec;)V + m ()V +c ete net/minecraft/class_120 net/minecraft/world/level/storage/loot/functions/LootItemConditionalFunction + f Ljava/util/function/Predicate; a field_1048 compositePredicates + f Ljava/util/List; g field_1047 predicates + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/Products$P1; a method_53344 commonFields + m (Lcuq;Lerr;)Lcuq; a method_522 run + m (Lete;)Ljava/util/List; a method_53345 method_53345 + m (Ljava/util/function/Function;)Lete$a; a method_520 simpleBuilder + m (Lcuq;Lerr;)Lcuq; b method_521 apply + m (Ljava/util/List;)V +c ete$a net/minecraft/class_120$class_121 net/minecraft/world/level/storage/loot/functions/LootItemConditionalFunction$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_1049 conditions + m (Levc$a;)Lete$a; a method_524 when + m ()Lete$a; c method_523 getThis + m ()Lete$a; f method_525 unwrap + m ()Ljava/util/List; g method_526 getConditions + m ()V +c ete$b net/minecraft/class_120$class_122 net/minecraft/world/level/storage/loot/functions/LootItemConditionalFunction$DummyBuilder + f Ljava/util/function/Function; a field_1050 constructor + m ()Lete$b; a method_527 getThis + m (Ljava/util/function/Function;)V +c etf net/minecraft/class_117 net/minecraft/world/level/storage/loot/functions/LootItemFunction + m (Ljava/util/function/BiFunction;Ljava/util/function/Consumer;Lerr;)Ljava/util/function/Consumer; a method_513 decorate + m (Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Lerr;Lcuq;)V a method_514 method_514 + m ()Letg; b method_29321 getType +c etf$a net/minecraft/class_117$class_118 net/minecraft/world/level/storage/loot/functions/LootItemFunction$Builder + m ()Letf; b method_515 build +c etg net/minecraft/class_5339 net/minecraft/world/level/storage/loot/functions/LootItemFunctionType + f Lcom/mojang/serialization/MapCodec; a comp_1858 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_1858 codec + m (Lcom/mojang/serialization/MapCodec;)V +c eth net/minecraft/class_131 net/minecraft/world/level/storage/loot/functions/LootItemFunctions + f Letg; A field_25231 SET_LORE + f Letg; B field_25232 FILL_PLAYER_HEAD + f Letg; C field_49443 COPY_CUSTOM_DATA + f Letg; D field_25234 COPY_STATE + f Letg; E field_27342 SET_BANNER_PATTERN + f Letg; F field_35079 SET_POTION + f Letg; G field_39060 SET_INSTRUMENT + f Letg; H field_44508 REFERENCE + f Letg; I field_45830 SEQUENCE + f Letg; J field_49440 COPY_COMPONENTS + f Letg; K field_49865 SET_FIREWORKS + f Letg; L field_49866 SET_FIREWORK_EXPLOSION + f Letg; M field_49867 SET_BOOK_COVER + f Letg; N field_49868 SET_WRITTEN_BOOK_PAGES + f Letg; O field_49869 SET_WRITABLE_BOOK_PAGES + f Letg; P field_50022 TOGGLE_TOOLTIPS + f Letg; Q field_50207 SET_OMINOUS_BOTTLE_AMPLIFIER + f Letg; R field_51425 SET_CUSTOM_MODEL_DATA + f Ljava/util/function/BiFunction; a field_1102 IDENTITY + f Lcom/mojang/serialization/Codec; b field_45831 TYPED_CODEC + f Lcom/mojang/serialization/Codec; c field_50023 ROOT_CODEC + f Lcom/mojang/serialization/Codec; d field_45832 CODEC + f Letg; e field_25214 SET_COUNT + f Letg; f field_51426 SET_ITEM + f Letg; g field_25215 ENCHANT_WITH_LEVELS + f Letg; h field_25216 ENCHANT_RANDOMLY + f Letg; i field_27906 SET_ENCHANTMENTS + f Letg; j field_49441 SET_CUSTOM_DATA + f Letg; k field_49442 SET_COMPONENTS + f Letg; l field_25218 FURNACE_SMELT + f Letg; m field_51800 ENCHANTED_COUNT_INCREASE + f Letg; n field_25220 SET_DAMAGE + f Letg; o field_25221 SET_ATTRIBUTES + f Letg; p field_25222 SET_NAME + f Letg; q field_25223 EXPLORATION_MAP + f Letg; r field_25224 SET_STEW_EFFECT + f Letg; s field_25225 COPY_NAME + f Letg; t field_25226 SET_CONTENTS + f Letg; u field_51427 MODIFY_CONTENTS + f Letg; v field_51428 FILTERED + f Letg; w field_25227 LIMIT_COUNT + f Letg; x field_25228 APPLY_BONUS + f Letg; y field_25229 SET_LOOT_TABLE + f Letg; z field_25230 EXPLOSION_DECAY + m ()Lcom/mojang/serialization/Codec; a method_53346 method_53346 + m (Lcuq;Lerr;)Lcuq; a method_592 method_592 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Letg; a method_29323 register + m (Ljava/util/List;)Ljava/util/function/BiFunction; a method_594 compose + m (Ljava/util/List;Lcuq;Lerr;)Lcuq; a method_53347 method_53347 + m (Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Lcuq;Lerr;)Lcuq; a method_591 method_591 + m ()V + m ()V +c eti net/minecraft/class_9669 net/minecraft/world/level/storage/loot/functions/ModifyContainerContents + f Lcom/mojang/serialization/MapCodec; a field_51429 CODEC + f Lero; b field_51430 component + f Letf; c field_51431 modifier + m (Lerr;Lcuq;)Lcuq; a method_59743 method_59743 + m (Leti;)Letf; a method_59744 method_59744 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_59745 method_59745 + m (Leti;)Lero; b method_59746 method_59746 + m (Ljava/util/List;Lero;Letf;)V + m ()V +c etj net/minecraft/class_5641 net/minecraft/world/level/storage/loot/functions/SequenceFunction + f Lcom/mojang/serialization/MapCodec; a field_45834 CODEC + f Lcom/mojang/serialization/Codec; b field_45835 INLINE_CODEC + f Ljava/util/List; c field_27904 functions + f Ljava/util/function/BiFunction; d field_27905 compositeFunction + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53351 method_53351 + m (Lcuq;Lerr;)Lcuq; a method_32405 apply + m (Letj;)Ljava/util/List; a method_53352 method_53352 + m (Ljava/util/List;)Letj; a method_53353 of + m (Letj;)Ljava/util/List; b method_53354 method_53354 + m (Ljava/util/List;)V + m ()V +c etk net/minecraft/class_137 net/minecraft/world/level/storage/loot/functions/SetAttributesFunction + f Lcom/mojang/serialization/MapCodec; a field_45836 CODEC + f Ljava/util/List; b field_1105 modifiers + f Z c field_51360 replace + m (Lakr;Ljm;Lbuu$a;Levy;)Letk$c; a method_35524 modifier + m (Lerr;Lcuq;Lcxn;)Lcxn; a method_57647 method_57647 + m (Lerr;Lcxn;)Lcxn; a method_59544 updateModifiers + m (Letk$b;)Ljava/util/stream/Stream; a method_32406 method_32406 + m (Letk;)Ljava/lang/Boolean; a method_59545 method_59545 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53356 method_53356 + m (Letk;)Ljava/util/List; b method_53355 method_53355 + m ()Letk$a; c method_35525 setAttributes + m (Ljava/util/List;Ljava/util/List;Z)V + m ()V +c etk$a net/minecraft/class_137$class_6155 net/minecraft/world/level/storage/loot/functions/SetAttributesFunction$Builder + f Z a field_51361 replace + f Ljava/util/List; b field_31855 modifiers + m ()Letk$a; a method_35526 getThis + m (Letk$c;)Letk$a; a method_35527 withModifier + m (Z)V + m ()V +c etk$b net/minecraft/class_137$class_138 net/minecraft/world/level/storage/loot/functions/SetAttributesFunction$Modifier + f Lcom/mojang/serialization/Codec; a field_45837 CODEC + f Lakr; b comp_1864 id + f Ljm; c comp_1860 attribute + f Lbuu$a; d comp_1861 operation + f Levy; e comp_1862 amount + f Ljava/util/List; f comp_1863 slots + f Lcom/mojang/serialization/Codec; g field_45838 SLOTS_CODEC + m ()Lakr; a comp_1864 id + m (Lcom/mojang/datafixers/util/Either;)Ljava/util/List; a method_53357 method_53357 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53358 method_53358 + m (Ljava/util/List;)Lcom/mojang/datafixers/util/Either; a method_53359 method_53359 + m ()Ljm; b comp_1860 attribute + m ()Lbuu$a; c comp_1861 operation + m ()Levy; d comp_1862 amount + m ()Ljava/util/List; e comp_1863 slots + m (Lakr;Ljm;Lbuu$a;Levy;Ljava/util/List;)V + m ()V +c etk$c net/minecraft/class_137$class_6156 net/minecraft/world/level/storage/loot/functions/SetAttributesFunction$ModifierBuilder + f Lakr; a field_31860 id + f Ljm; b field_31857 attribute + f Lbuu$a; c field_31858 operation + f Levy; d field_31859 amount + f Ljava/util/Set; e field_31861 slots + m ()Letk$b; a method_35528 build + m (Lbsz;)Letk$c; a method_35529 forSlot + m (Lakr;Ljm;Lbuu$a;Levy;)V +c etl net/minecraft/class_5592 net/minecraft/world/level/storage/loot/functions/SetBannerPatternFunction + f Lcom/mojang/serialization/MapCodec; a field_45839 CODEC + f Ldpy; b field_27343 patterns + f Z c field_27344 append + m (Ldpy;Ldpy;)Ldpy; a method_57648 method_57648 + m (Letl;)Ljava/lang/Boolean; a method_53360 method_53360 + m (Z)Letl$a; a method_35531 setBannerPattern + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53361 method_53361 + m (Letl;)Ldpy; b method_53362 method_53362 + m (Ljava/util/List;Ldpy;Z)V + m ()V +c etl$a net/minecraft/class_5592$class_6157 net/minecraft/world/level/storage/loot/functions/SetBannerPatternFunction$Builder + f Ldpy$a; a field_31862 patterns + f Z b field_31863 append + m ()Letl$a; a method_35532 getThis + m (Ljm;Lcti;)Letl$a; a method_35533 addPattern + m (Z)V +c etm net/minecraft/class_9374 net/minecraft/world/level/storage/loot/functions/SetBookCoverFunction + f Lcom/mojang/serialization/MapCodec; a field_49870 CODEC + f Ljava/util/Optional; b field_49871 author + f Ljava/util/Optional; c field_49872 title + f Ljava/util/Optional; d field_49873 generation + m (Lcyb;)Lcyb; a method_58200 apply + m (Letm;)Ljava/util/Optional; a method_58201 method_58201 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_58202 method_58202 + m (Letm;)Ljava/util/Optional; b method_58203 method_58203 + m (Letm;)Ljava/util/Optional; c method_58204 method_58204 + m (Ljava/util/List;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c etn net/minecraft/class_9320 net/minecraft/world/level/storage/loot/functions/SetComponentsFunction + f Lcom/mojang/serialization/MapCodec; a field_49444 CODEC + f Lkn; b field_49445 components + m (Letn;)Lkn; a method_57649 method_57649 + m (Lkp;Ljava/lang/Object;)Lete$a; a method_57650 setComponent + m (Lkp;Ljava/lang/Object;Ljava/util/List;)Letf; a method_57651 method_57651 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_57652 method_57652 + m (Ljava/util/List;Lkn;)V + m ()V +c eto net/minecraft/class_134 net/minecraft/world/level/storage/loot/functions/SetContainerContents + f Lcom/mojang/serialization/MapCodec; a field_45841 CODEC + f Lero; b field_51432 component + f Ljava/util/List; c field_1103 entries + m (Lero;)Leto$a; a method_601 setContents + m (Lerr;Ljava/util/stream/Stream$Builder;Lesg;)V a method_600 method_600 + m (Lerr;Ljava/util/stream/Stream$Builder;Lesh;)V a method_599 method_599 + m (Leto;)Ljava/util/List; a method_53363 method_53363 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53364 method_53364 + m (Leto;)Lero; b method_53365 method_53365 + m (Ljava/util/List;Lero;Ljava/util/List;)V + m ()V +c eto$a net/minecraft/class_134$class_135 net/minecraft/world/level/storage/loot/functions/SetContainerContents$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_1104 entries + f Lero; b field_51433 component + m ()Leto$a; a method_603 getThis + m (Lesh$a;)Leto$a; a method_602 withEntry + m (Lero;)V +c etp net/minecraft/class_144 net/minecraft/world/level/storage/loot/functions/SetContainerLootTable + f Lcom/mojang/serialization/MapCodec; a field_45842 CODEC + f Lakq; b field_1116 name + f J c field_1117 seed + f Ljm; d field_34773 type + m (Lakq;JLdqj;Ljava/util/List;)Letf; a method_35536 method_35536 + m (Lakq;Ldqj;Ljava/util/List;)Letf; a method_35537 method_35537 + m (Ldqj;Lakq;)Lete$a; a method_35534 withLootTable + m (Ldqj;Lakq;J)Lete$a; a method_35535 withLootTable + m (Letp;)Ljm; a method_53366 method_53366 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53367 method_53367 + m (Letp;)Ljava/lang/Long; b method_53368 method_53368 + m (Letp;)Lakq; c method_53369 method_53369 + m (Ljava/util/List;Lakq;JLjm;)V + m ()V +c etq net/minecraft/class_159 net/minecraft/world/level/storage/loot/functions/SetCustomDataFunction + f Lcom/mojang/serialization/MapCodec; a field_45849 CODEC + f Lub; b field_1138 tag + m (Letq;)Lub; a method_53391 method_53391 + m (Lub;)Lete$a; a method_57654 setCustomData + m (Lub;Ljava/util/List;)Letf; a method_675 method_675 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53392 method_53392 + m (Lub;)V b method_57655 method_57655 + m (Ljava/util/List;Lub;)V + m ()V +c etr net/minecraft/class_9670 net/minecraft/world/level/storage/loot/functions/SetCustomModelDataFunction + f Lcom/mojang/serialization/MapCodec; a field_51434 CODEC + f Levy; b field_51435 valueProvider + m (Letr;)Levy; a method_59747 method_59747 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_59748 method_59748 + m (Ljava/util/List;Levy;)V + m ()V +c ets net/minecraft/class_5642 net/minecraft/world/level/storage/loot/functions/SetEnchantmentsFunction + f Lcom/mojang/serialization/MapCodec; a field_45843 CODEC + f Ljava/util/Map; b field_27907 enchantments + f Z c field_27908 add + m (Ldai$a;Lerr;Ljm;Levy;)V a method_60297 method_60297 + m (Lerr;Ldai$a;)V a method_57657 method_57657 + m (Lets;)Ljava/lang/Boolean; a method_53370 method_53370 + m (Levy;)Ljava/util/stream/Stream; a method_32409 method_32409 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53371 method_53371 + m (Ldai$a;Lerr;Ljm;Levy;)V b method_57656 method_57656 + m (Lets;)Ljava/util/Map; b method_53372 method_53372 + m (Ljava/util/List;Ljava/util/Map;Z)V + m ()V +c ets$a net/minecraft/class_5642$class_6158 net/minecraft/world/level/storage/loot/functions/SetEnchantmentsFunction$Builder + f Lcom/google/common/collect/ImmutableMap$Builder; a field_31864 enchantments + f Z b field_31865 add + m ()Lets$a; a method_35538 getThis + m (Ljm;Levy;)Lets$a; a method_35539 withEnchantment + m ()V + m (Z)V +c ett net/minecraft/class_9375 net/minecraft/world/level/storage/loot/functions/SetFireworkExplosionFunction + f Lcom/mojang/serialization/MapCodec; a field_49874 CODEC + f Lcxl; b field_49875 DEFAULT_VALUE + f Ljava/util/Optional; c field_49876 shape + f Ljava/util/Optional; d field_49877 colors + f Ljava/util/Optional; e field_49878 fadeColors + f Ljava/util/Optional; f field_49879 trail + f Ljava/util/Optional; h field_49880 twinkle + m (Lcxl;)Lcxl; a method_58205 apply + m (Lett;)Ljava/util/Optional; a method_58206 method_58206 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_58207 method_58207 + m (Lett;)Ljava/util/Optional; b method_58208 method_58208 + m (Lett;)Ljava/util/Optional; c method_58209 method_58209 + m (Lett;)Ljava/util/Optional; d method_58210 method_58210 + m (Lett;)Ljava/util/Optional; e method_58211 method_58211 + m (Ljava/util/List;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c etu net/minecraft/class_9376 net/minecraft/world/level/storage/loot/functions/SetFireworksFunction + f Lcom/mojang/serialization/MapCodec; a field_49881 CODEC + f Lcxm; b field_49882 DEFAULT_VALUE + f Ljava/util/Optional; c field_49883 explosions + f Ljava/util/Optional; d field_49885 flightDuration + m (Lcxm;)Lcxm; a method_58212 apply + m (Lcxm;Letd$e;)Ljava/util/List; a method_59833 method_59833 + m (Letu;)Ljava/util/Optional; a method_58215 method_58215 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_58214 method_58214 + m (Letu;)Ljava/util/Optional; b method_58216 method_58216 + m (Ljava/util/List;Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c etv net/minecraft/class_7431 net/minecraft/world/level/storage/loot/functions/SetInstrumentFunction + f Lcom/mojang/serialization/MapCodec; a field_45844 CODEC + f Lawu; b field_39184 options + m (Lawu;)Lete$a; a method_43571 setInstrumentOptions + m (Lawu;Ljava/util/List;)Letf; a method_43743 method_43743 + m (Letv;)Lawu; a method_53373 method_53373 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53374 method_53374 + m (Ljava/util/List;Lawu;)V + m ()V +c etw net/minecraft/class_141 net/minecraft/world/level/storage/loot/functions/SetItemCountFunction + f Lcom/mojang/serialization/MapCodec; a field_45845 CODEC + f Levy; b field_1114 value + f Z c field_27909 add + m (Letw;)Ljava/lang/Boolean; a method_53375 method_53375 + m (Levy;)Lete$a; a method_621 setCount + m (Levy;Ljava/util/List;)Letf; a method_620 method_620 + m (Levy;Z)Lete$a; a method_35540 setCount + m (Levy;ZLjava/util/List;)Letf; a method_35541 method_35541 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53376 method_53376 + m (Letw;)Levy; b method_53377 method_53377 + m (Ljava/util/List;Levy;Z)V + m ()V +c etx net/minecraft/class_149 net/minecraft/world/level/storage/loot/functions/SetItemDamageFunction + f Lcom/mojang/serialization/MapCodec; a field_45846 CODEC + f Lorg/slf4j/Logger; b field_1121 LOGGER + f Levy; c field_1120 damage + f Z d field_27910 add + m (Letx;)Ljava/lang/Boolean; a method_53378 method_53378 + m (Levy;)Lete$a; a method_633 setDamage + m (Levy;Ljava/util/List;)Letf; a method_634 method_634 + m (Levy;Z)Lete$a; a method_35542 setDamage + m (Levy;ZLjava/util/List;)Letf; a method_35543 method_35543 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53379 method_53379 + m (Letx;)Levy; b method_53380 method_53380 + m (Ljava/util/List;Levy;Z)V + m ()V +c ety net/minecraft/class_9671 net/minecraft/world/level/storage/loot/functions/SetItemFunction + f Lcom/mojang/serialization/MapCodec; a field_51436 CODEC + f Ljm; b field_51437 item + m (Lety;)Ljm; a method_59749 method_59749 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_59750 method_59750 + m (Ljava/util/List;Ljm;)V + m ()V +c etz net/minecraft/class_3671 net/minecraft/world/level/storage/loot/functions/SetLoreFunction + f Lcom/mojang/serialization/MapCodec; a field_45847 CODEC + f Ljava/util/List; b field_16231 lore + f Letd; c field_50024 mode + f Ljava/util/Optional; d field_16233 resolutionContext + m (Lcxp;Lerr;)Ljava/util/List; a method_57658 updateLore + m (Lerr$b;)Ljava/util/Set; a method_53381 method_53381 + m (Lerr;Lcxp;)Lcxp; a method_57659 method_57659 + m (Letz;)Ljava/util/Optional; a method_53382 method_53382 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53383 method_53383 + m (Letz;)Letd; b method_53385 method_53385 + m ()Letz$a; c method_35544 setLore + m (Letz;)Ljava/util/List; c method_53384 method_53384 + m (Ljava/util/List;Ljava/util/List;Letd;Ljava/util/Optional;)V + m ()V +c etz$a net/minecraft/class_3671$class_6159 net/minecraft/world/level/storage/loot/functions/SetLoreFunction$Builder + f Ljava/util/Optional; a field_31867 resolutionContext + f Lcom/google/common/collect/ImmutableList$Builder; b field_31868 lore + f Letd; c field_50025 mode + m ()Letz$a; a method_35545 getThis + m (Lerr$b;)Letz$a; a method_35546 setResolutionContext + m (Letd;)Letz$a; a method_58460 setMode + m (Lwz;)Letz$a; a method_35547 addLine + m ()V +c eua net/minecraft/class_3670 net/minecraft/world/level/storage/loot/functions/SetNameFunction + f Lcom/mojang/serialization/MapCodec; a field_45848 CODEC + f Lorg/slf4j/Logger; b field_16230 LOGGER + f Ljava/util/Optional; c field_16228 name + f Ljava/util/Optional; d field_16229 resolutionContext + f Leua$a; e field_50208 target + m (Lcuq;Lerr;Lwz;)V a method_53386 method_53386 + m (Lerr$b;)Ljava/util/Set; a method_53387 method_53387 + m (Lerr;Lerr$b;)Ljava/util/function/UnaryOperator; a method_16190 createResolver + m (Let;Lbsr;Lwz;)Lwz; a method_16189 method_16189 + m (Leua;)Leua$a; a method_58733 method_58733 + m (Lwz;)Lwz; a method_16191 method_16191 + m (Lwz;Lerr$b;Leua$a;Ljava/util/List;)Letf; a method_35551 method_35551 + m (Lwz;Leua$a;)Lete$a; a method_35549 setName + m (Lwz;Leua$a;Lerr$b;)Lete$a; a method_35550 setName + m (Lwz;Leua$a;Ljava/util/List;)Letf; a method_35552 method_35552 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53389 method_53389 + m (Leua;)Ljava/util/Optional; b method_53388 method_53388 + m (Leua;)Ljava/util/Optional; c method_53390 method_53390 + m (Ljava/util/List;Ljava/util/Optional;Ljava/util/Optional;Leua$a;)V + m ()V +c eua$a net/minecraft/class_3670$class_9475 net/minecraft/world/level/storage/loot/functions/SetNameFunction$Target + f Leua$a; a field_50210 CUSTOM_NAME + f Leua$a; b field_50211 ITEM_NAME + f Lcom/mojang/serialization/Codec; c field_50212 CODEC + f Ljava/lang/String; d field_50213 name + f [Leua$a; e field_50214 $VALUES + m ()Lkp; a method_58734 component + m ()[Leua$a; b method_58735 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c eub net/minecraft/class_9476 net/minecraft/world/level/storage/loot/functions/SetOminousBottleAmplifierFunction + f Lcom/mojang/serialization/MapCodec; a field_50215 CODEC + f Levy; b field_50216 amplifierGenerator + m (Leub;)Levy; a method_58736 method_58736 + m (Levy;)Lete$a; a method_58737 setAmplifier + m (Levy;Ljava/util/List;)Letf; a method_58738 method_58738 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_58739 method_58739 + m ()Levy; c method_58740 amplifier + m (Ljava/util/List;Levy;)V + m ()V +c euc net/minecraft/class_6662 net/minecraft/world/level/storage/loot/functions/SetPotionFunction + f Lcom/mojang/serialization/MapCodec; a field_45850 CODEC + f Ljm; b field_35080 potion + m (Leuc;)Ljm; a method_53393 method_53393 + m (Ljm;)Lete$a; a method_38927 setPotion + m (Ljm;Ljava/util/List;)Letf; a method_38928 method_38928 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53394 method_53394 + m (Ljava/util/List;Ljm;)V + m ()V +c eud net/minecraft/class_152 net/minecraft/world/level/storage/loot/functions/SetStewEffectFunction + f Lcom/mojang/serialization/MapCodec; a field_45851 CODEC + f Lcom/mojang/serialization/Codec; b field_45852 EFFECTS_LIST + f Ljava/util/List; c field_45853 effects + m (Leud$b;)Ljava/util/stream/Stream; a method_32421 method_32421 + m (Leud;)Ljava/util/List; a method_53395 method_53395 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_53396 method_53396 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53397 method_53397 + m (Leud$b;)Ljava/lang/String; b method_53398 method_53398 + m ()Leud$a; c method_637 stewEffect + m (Ljava/util/List;Ljava/util/List;)V + m ()V +c eud$a net/minecraft/class_152$class_153 net/minecraft/world/level/storage/loot/functions/SetStewEffectFunction$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_1123 effects + m ()Leud$a; a method_639 getThis + m (Ljm;Levy;)Leud$a; a method_640 withEffect + m ()V +c eud$b net/minecraft/class_152$class_8754 net/minecraft/world/level/storage/loot/functions/SetStewEffectFunction$EffectEntry + f Lcom/mojang/serialization/Codec; a field_45854 CODEC + f Ljm; b comp_1865 effect + f Levy; c comp_1866 duration + m ()Ljm; a comp_1865 effect + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53399 method_53399 + m ()Levy; b comp_1866 duration + m (Ljm;Levy;)V + m ()V +c eue net/minecraft/class_9377 net/minecraft/world/level/storage/loot/functions/SetWritableBookPagesFunction + f Lcom/mojang/serialization/MapCodec; a field_49886 CODEC + f Ljava/util/List; b field_49887 pages + f Letd; c field_49888 pageOperation + m (Lcya;)Lcya; a method_58217 apply + m (Leue;)Letd; a method_58218 method_58218 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_58219 method_58219 + m (Leue;)Ljava/util/List; b method_58220 method_58220 + m (Ljava/util/List;Ljava/util/List;Letd;)V + m ()V +c euf net/minecraft/class_9378 net/minecraft/world/level/storage/loot/functions/SetWrittenBookPagesFunction + f Lcom/mojang/serialization/Codec; a field_50026 PAGE_CODEC + f Lcom/mojang/serialization/MapCodec; b field_49889 CODEC + f Ljava/util/List; c field_49890 pages + f Letd; d field_49891 pageOperation + m (Lcyb;)Lcyb; a method_58221 apply + m (Leuf;)Letd; a method_58222 method_58222 + m (Lwz;)Lcom/mojang/serialization/DataResult; a method_58461 method_58461 + m (Lwz;Ljava/lang/Object;)Lwz; a method_58462 method_58462 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_58223 method_58223 + m (Leuf;)Ljava/util/List; b method_58224 method_58224 + m (Ljava/util/List;Ljava/util/List;Letd;)V + m ()V +c eug net/minecraft/class_165 net/minecraft/world/level/storage/loot/functions/SmeltItemFunction + f Lcom/mojang/serialization/MapCodec; a field_45855 CODEC + f Lorg/slf4j/Logger; b field_1159 LOGGER + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53400 method_53400 + m ()Lete$a; c method_724 smelted + m (Ljava/util/List;)V + m ()V +c euh net/minecraft/class_9429 net/minecraft/world/level/storage/loot/functions/ToggleTooltips + f Lcom/mojang/serialization/MapCodec; a field_50027 CODEC + f Ljava/util/Map; b field_50028 TOGGLES + f Lcom/mojang/serialization/Codec; c field_50029 TOGGLE_CODEC + f Ljava/util/Map; d field_50030 values + m (Lcuq;Leuh$a;Ljava/lang/Boolean;)V a method_58463 method_58463 + m (Leuh$a;)Leuh$a; a method_58464 method_58464 + m (Leuh;)Ljava/util/Map; a method_58465 method_58465 + m (Lkp;)Lcom/mojang/serialization/DataResult; a method_58466 method_58466 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_58467 method_58467 + m (Lkp;)Ljava/lang/String; b method_58468 method_58468 + m (Ljava/util/List;Ljava/util/Map;)V + m ()V +c euh$a net/minecraft/class_9429$class_9430 net/minecraft/world/level/storage/loot/functions/ToggleTooltips$ComponentToggle + f Lkp; a comp_2523 type + f Leuh$b; b comp_2524 setter + m ()Lkp; a comp_2523 type + m (Lcuq;Z)V a method_58469 applyIfPresent + m ()Leuh$b; b comp_2524 setter + m (Lkp;Leuh$b;)V +c euh$b net/minecraft/class_9429$class_9431 net/minecraft/world/level/storage/loot/functions/ToggleTooltips$TooltipWither +c eui net/minecraft/class_6160 net/minecraft/world/level/storage/loot/functions/package-info +c euj net/minecraft/class_6161 net/minecraft/world/level/storage/loot/package-info +c euk net/minecraft/class_169 net/minecraft/world/level/storage/loot/parameters/LootContextParam + f Lakr; a field_1162 name + m ()Lakr; a method_746 getName + m (Lakr;)V +c eul net/minecraft/class_176 net/minecraft/world/level/storage/loot/parameters/LootContextParamSet + f Ljava/util/Set; a field_1216 required + f Ljava/util/Set; b field_1215 all + m ()Ljava/util/Set; a method_778 getRequired + m (Layu;Lers;)V a method_776 validateUser + m (Lerx;Lers;)V a method_60298 validateUser + m (Leuk;)Z a method_35553 isAllowed + m ()Ljava/util/Set; b method_777 getAllowed + m (Leuk;)Ljava/lang/String; b method_779 method_779 + m ()Leul$a; c method_35554 builder + m (Ljava/util/Set;Ljava/util/Set;)V +c eul$a net/minecraft/class_176$class_177 net/minecraft/world/level/storage/loot/parameters/LootContextParamSet$Builder + f Ljava/util/Set; a field_1218 required + f Ljava/util/Set; b field_1217 optional + m ()Leul; a method_782 build + m (Leuk;)Leul$a; a method_781 required + m (Leuk;)Leul$a; b method_780 optional + m ()V +c eum net/minecraft/class_173 net/minecraft/world/level/storage/loot/parameters/LootContextParamSets + f Lcom/mojang/serialization/Codec; a field_45856 CODEC + f Leul; b field_1175 EMPTY + f Leul; c field_1179 CHEST + f Leul; d field_20761 COMMAND + f Leul; e field_20762 SELECTOR + f Leul; f field_1176 FISHING + f Leul; g field_1173 ENTITY + f Leul; h field_50217 EQUIPMENT + f Leul; i field_42858 ARCHAEOLOGY + f Leul; j field_16235 GIFT + f Leul; k field_22403 PIGLIN_BARTER + f Leul; l field_48928 VAULT + f Leul; m field_1174 ADVANCEMENT_REWARD + f Leul; n field_24423 ADVANCEMENT_ENTITY + f Leul; o field_44788 ADVANCEMENT_LOCATION + f Leul; p field_48381 BLOCK_USE + f Leul; q field_1177 ALL_PARAMS + f Leul; r field_1172 BLOCK + f Leul; s field_49446 SHEARING + f Leul; t field_51801 ENCHANTED_DAMAGE + f Leul; u field_51802 ENCHANTED_ITEM + f Leul; v field_51803 ENCHANTED_LOCATION + f Leul; w field_51804 ENCHANTED_ENTITY + f Leul; x field_52067 HIT_BLOCK + f Lcom/google/common/collect/BiMap; y field_1178 REGISTRY + m (Lakr;)Lcom/mojang/serialization/DataResult; a method_53401 method_53401 + m (Leul$a;)V a method_60792 method_60792 + m (Ljava/lang/String;Ljava/util/function/Consumer;)Leul; a method_759 register + m (Lakr;)Lcom/mojang/serialization/DataResult; b method_53402 method_53402 + m (Leul$a;)V b method_60299 method_60299 + m (Lakr;)Ljava/lang/String; c method_53403 method_53403 + m (Leul$a;)V c method_60300 method_60300 + m (Leul$a;)V d method_60301 method_60301 + m (Leul$a;)V e method_60302 method_60302 + m (Leul$a;)V f method_57660 method_57660 + m (Leul$a;)V g method_760 method_760 + m (Leul$a;)V h method_763 method_763 + m (Leul$a;)V i method_56128 method_56128 + m (Leul$a;)V j method_51722 method_51722 + m (Leul$a;)V k method_27863 method_27863 + m (Leul$a;)V l method_756 method_756 + m (Leul$a;)V m method_56818 method_56818 + m (Leul$a;)V n method_24800 method_24800 + m (Leul$a;)V o method_49269 method_49269 + m (Leul$a;)V p method_49270 method_49270 + m (Leul$a;)V q method_58741 method_58741 + m (Leul$a;)V r method_758 method_758 + m (Leul$a;)V s method_764 method_764 + m (Leul$a;)V t method_22577 method_22577 + m (Leul$a;)V u method_22578 method_22578 + m (Leul$a;)V v method_15970 method_15970 + m (Leul$a;)V w method_755 method_755 + m ()V + m ()V +c eun net/minecraft/class_181 net/minecraft/world/level/storage/loot/parameters/LootContextParams + f Leuk; a field_1226 THIS_ENTITY + f Leuk; b field_1233 LAST_DAMAGE_PLAYER + f Leuk; c field_1231 DAMAGE_SOURCE + f Leuk; d field_1230 ATTACKING_ENTITY + f Leuk; e field_1227 DIRECT_ATTACKING_ENTITY + f Leuk; f field_24424 ORIGIN + f Leuk; g field_1224 BLOCK_STATE + f Leuk; h field_1228 BLOCK_ENTITY + f Leuk; i field_1229 TOOL + f Leuk; j field_1225 EXPLOSION_RADIUS + f Leuk; k field_51805 ENCHANTMENT_LEVEL + f Leuk; l field_51806 ENCHANTMENT_ACTIVE + m (Ljava/lang/String;)Leuk; a method_798 create + m ()V + m ()V +c euo net/minecraft/class_6162 net/minecraft/world/level/storage/loot/parameters/package-info +c eup net/minecraft/class_8548 net/minecraft/world/level/storage/loot/predicates/AllOfCondition + f Lcom/mojang/serialization/MapCodec; a field_45857 CODEC + f Lcom/mojang/serialization/Codec; b field_45858 INLINE_CODEC + m (Ljava/util/List;)Leup; a method_53404 allOf + m ([Levc$a;)Leup$a; a method_51723 allOf + m (Ljava/util/List;)V + m ()V +c eup$a net/minecraft/class_8548$class_8549 net/minecraft/world/level/storage/loot/predicates/AllOfCondition$Builder + m ([Levc$a;)V +c euq net/minecraft/class_8551 net/minecraft/world/level/storage/loot/predicates/AnyOfCondition + f Lcom/mojang/serialization/MapCodec; a field_45859 CODEC + m ([Levc$a;)Leuq$a; a method_51727 anyOf + m (Ljava/util/List;)V + m ()V +c euq$a net/minecraft/class_8551$class_8552 net/minecraft/world/level/storage/loot/predicates/AnyOfCondition$Builder + m ([Levc$a;)V +c eur net/minecraft/class_182 net/minecraft/world/level/storage/loot/predicates/BonusLevelTableCondition + f Lcom/mojang/serialization/MapCodec; a field_45860 CODEC + f Ljm; b comp_1867 enchantment + f Ljava/util/List; c comp_1868 values + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53405 method_53405 + m (Lerr;)Z a method_799 test + m (Ljm;Ljava/util/List;)Levc; a method_801 method_801 + m (Ljm;[F)Levc$a; a method_800 bonusLevelFlatChance + m ()Ljm; c comp_1867 enchantment + m ()Ljava/util/List; d comp_1868 values + m (Ljm;Ljava/util/List;)V + m ()V +c eus net/minecraft/class_186 net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition + f Ljava/util/function/Predicate; a field_1247 composedPredicate + f Ljava/util/List; c field_1246 terms + m (Lerr;)Z a method_825 test + m (Leus;)Ljava/util/List; a method_53406 method_53406 + m (Ljava/util/function/Function;)Lcom/mojang/serialization/MapCodec; a method_53407 createCodec + m (Ljava/util/function/Function;Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53408 method_53408 + m (Leus;)Ljava/util/List; b method_53409 method_53409 + m (Ljava/util/function/Function;)Lcom/mojang/serialization/Codec; b method_53410 createInlineCodec + m (Ljava/util/List;Ljava/util/function/Predicate;)V +c eus$a net/minecraft/class_186$class_187 net/minecraft/world/level/storage/loot/predicates/CompositeLootItemCondition$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_1248 terms + m (Levc$a;)V a method_51730 addTerm + m (Ljava/util/List;)Levc; a method_51724 create + m ([Levc$a;)V +c eut net/minecraft/class_4568 net/minecraft/world/level/storage/loot/predicates/ConditionReference + f Lcom/mojang/serialization/MapCodec; a field_45861 CODEC + f Lakq; b comp_1869 name + f Lorg/slf4j/Logger; c field_20763 LOGGER + m (Lakq;)Levc$a; a method_35555 conditionReference + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53411 method_53411 + m (Lerr;)Z a method_22579 test + m (Lerx;Ljm$c;)V a method_51230 method_51230 + m (Lakq;)Levc; b method_35556 method_35556 + m (Lerx;)V b method_51231 method_51231 + m ()Lakq; c comp_1869 name + m (Lakq;)V + m ()V +c euu net/minecraft/class_192 net/minecraft/world/level/storage/loot/predicates/ConditionUserBuilder + m (Ljava/lang/Iterable;Ljava/util/function/Function;)Leuu; a_ method_43744 when + m (Levc$a;)Leuu; b method_840 when + m ()Leuu; d method_512 unwrap +c euv net/minecraft/class_190 net/minecraft/world/level/storage/loot/predicates/DamageSourceCondition + f Lcom/mojang/serialization/MapCodec; a field_45862 CODEC + f Ljava/util/Optional; b comp_1870 predicate + m (Lbk$a;)Levc$a; a method_837 hasDamageSource + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53412 method_53412 + m (Lerr;)Z a method_834 test + m (Lbk$a;)Levc; b method_836 method_836 + m ()Ljava/util/Optional; c comp_1870 predicate + m (Ljava/util/Optional;)V + m ()V +c euw net/minecraft/class_9752 net/minecraft/world/level/storage/loot/predicates/EnchantmentActiveCheck + f Lcom/mojang/serialization/MapCodec; a field_51807 CODEC + f Z b comp_2780 active + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60303 method_60303 + m (Lerr;)Z a method_60304 test + m ()Levc$a; c method_60305 enchantmentActiveCheck + m ()Levc$a; d method_60306 enchantmentInactiveCheck + m ()Z e comp_2780 active + m ()Levc; f method_60307 method_60307 + m ()Levc; g method_60308 method_60308 + m (Z)V + m ()V +c eux net/minecraft/class_199 net/minecraft/world/level/storage/loot/predicates/EntityHasScoreCondition + f Lcom/mojang/serialization/MapCodec; a field_45863 CODEC + f Ljava/util/Map; b comp_1871 scores + f Lerr$b; c comp_1872 entityTarget + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53413 method_53413 + m (Lerq;)Ljava/util/stream/Stream; a method_32422 method_32422 + m (Lerr$b;)Leux$a; a method_35557 hasScores + m (Lerr;)Z a method_864 test + m (Lerr;Lbsr;Leyg;Ljava/lang/String;Lerq;)Z a method_865 hasScore + m ()Ljava/util/Map; c comp_1871 scores + m ()Lerr$b; d comp_1872 entityTarget + m (Ljava/util/Map;Lerr$b;)V + m ()V +c eux$a net/minecraft/class_199$class_6163 net/minecraft/world/level/storage/loot/predicates/EntityHasScoreCondition$Builder + f Lcom/google/common/collect/ImmutableMap$Builder; a field_31869 scores + f Lerr$b; b field_31870 entityTarget + m (Ljava/lang/String;Lerq;)Leux$a; a method_35558 withScore + m (Lerr$b;)V +c euy net/minecraft/class_201 net/minecraft/world/level/storage/loot/predicates/ExplosionCondition + f Lcom/mojang/serialization/MapCodec; a field_45864 CODEC + f Leuy; b field_1280 INSTANCE + m (Lerr;)Z a method_869 test + m ()Levc$a; c method_871 survivesExplosion + m ()Levc; d method_872 method_872 + m ()V + m ()V +c euz net/minecraft/class_207 net/minecraft/world/level/storage/loot/predicates/InvertedLootItemCondition + f Lcom/mojang/serialization/MapCodec; a field_45865 CODEC + f Levc; b comp_1873 term + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53414 method_53414 + m (Lerr;)Z a method_888 test + m (Leuz;)Levc; a method_887 method_887 + m (Levc$a;)Levc$a; a method_889 invert + m ()Levc; c comp_1873 term + m (Levc;)V + m ()V +c eva net/minecraft/class_205 net/minecraft/world/level/storage/loot/predicates/LocationCheck + f Lcom/mojang/serialization/MapCodec; a field_45866 CODEC + f Ljava/util/Optional; b comp_1874 predicate + f Ljd; c comp_1875 offset + f Lcom/mojang/serialization/MapCodec; g field_45867 OFFSET_CODEC + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53415 method_53415 + m (Ldf$a;)Levc$a; a method_884 checkLocation + m (Ldf$a;Ljd;)Levc$a; a method_30151 checkLocation + m (Lerr;)Z a method_881 test + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; b method_53416 method_53416 + m (Ldf$a;)Levc; b method_882 method_882 + m (Ldf$a;Ljd;)Levc; b method_30152 method_30152 + m ()Ljava/util/Optional; c comp_1874 predicate + m ()Ljd; d comp_1875 offset + m (Ljava/util/Optional;Ljd;)V + m ()V +c evb net/minecraft/class_212 net/minecraft/world/level/storage/loot/predicates/LootItemBlockStatePropertyCondition + f Lcom/mojang/serialization/MapCodec; a field_45868 CODEC + f Ljm; b comp_1876 block + f Ljava/util/Optional; c comp_1877 properties + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53417 method_53417 + m (Ldfy;)Levb$a; a method_900 hasBlockStateProperties + m (Lerr;)Z a method_899 test + m (Levb;)Lcom/mojang/serialization/DataResult; a method_53418 validate + m (Levb;Leb;)Ljava/util/Optional; a method_53419 method_53419 + m (Levb;Ljava/lang/String;)Lcom/mojang/serialization/DataResult; a method_53420 method_53420 + m (Levb;Ljava/lang/String;)Ljava/lang/String; b method_53421 method_53421 + m ()Ljm; c comp_1876 block + m ()Ljava/util/Optional; d comp_1877 properties + m (Ljm;Ljava/util/Optional;)V + m ()V +c evb$a net/minecraft/class_212$class_213 net/minecraft/world/level/storage/loot/predicates/LootItemBlockStatePropertyCondition$Builder + f Ljm; a field_1290 block + f Ljava/util/Optional; b field_1291 properties + m (Leb$a;)Levb$a; a method_22584 setProperties + m (Ldfy;)V +c evc net/minecraft/class_5341 net/minecraft/world/level/storage/loot/predicates/LootItemCondition + f Lcom/mojang/serialization/Codec; d field_51808 TYPED_CODEC + f Lcom/mojang/serialization/Codec; e field_51809 DIRECT_CODEC + f Lcom/mojang/serialization/Codec; f field_51810 CODEC + m ()Levd; b method_29325 getType + m ()Lcom/mojang/serialization/Codec; c method_60309 method_60309 + m ()V +c evc$a net/minecraft/class_5341$class_210 net/minecraft/world/level/storage/loot/predicates/LootItemCondition$Builder + m ()Levc$a; invert method_16780 invert + m (Levc$a;)Leuq$a; or method_893 or +c evd net/minecraft/class_5342 net/minecraft/world/level/storage/loot/predicates/LootItemConditionType + f Lcom/mojang/serialization/MapCodec; a comp_1878 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_1878 codec + m (Lcom/mojang/serialization/MapCodec;)V +c eve net/minecraft/class_217 net/minecraft/world/level/storage/loot/predicates/LootItemConditions + f Levd; a field_25235 INVERTED + f Levd; b field_44789 ANY_OF + f Levd; c field_44790 ALL_OF + f Levd; d field_25237 RANDOM_CHANCE + f Levd; e field_51811 RANDOM_CHANCE_WITH_ENCHANTED_BONUS + f Levd; f field_25239 ENTITY_PROPERTIES + f Levd; g field_25240 KILLED_BY_PLAYER + f Levd; h field_25241 ENTITY_SCORES + f Levd; i field_25242 BLOCK_STATE_PROPERTY + f Levd; j field_25243 MATCH_TOOL + f Levd; k field_25244 TABLE_BONUS + f Levd; l field_25245 SURVIVES_EXPLOSION + f Levd; m field_25246 DAMAGE_SOURCE_PROPERTIES + f Levd; n field_25247 LOCATION_CHECK + f Levd; o field_25248 WEATHER_CHECK + f Levd; p field_25249 REFERENCE + f Levd; q field_25250 TIME_CHECK + f Levd; r field_27911 VALUE_CHECK + f Levd; s field_51812 ENCHANTMENT_ACTIVE_CHECK + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Levd; a method_29327 register + m ()V + m ()V +c evf net/minecraft/class_215 net/minecraft/world/level/storage/loot/predicates/LootItemEntityPropertyCondition + f Lcom/mojang/serialization/MapCodec; a field_45871 CODEC + f Ljava/util/Optional; b comp_1879 predicate + f Lerr$b; c comp_1880 entityTarget + m (Lbv$a;Lerr$b;)Levc; a method_916 method_916 + m (Lbv;Lerr$b;)Levc; a method_27864 method_27864 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53423 method_53423 + m (Lerr$b;)Levc$a; a method_15972 entityPresent + m (Lerr$b;Lbv$a;)Levc$a; a method_917 hasProperties + m (Lerr$b;Lbv;)Levc$a; a method_27865 hasProperties + m (Lerr;)Z a method_914 test + m ()Ljava/util/Optional; c comp_1879 predicate + m ()Lerr$b; d comp_1880 entityTarget + m (Ljava/util/Optional;Lerr$b;)V + m ()V +c evg net/minecraft/class_221 net/minecraft/world/level/storage/loot/predicates/LootItemKilledByPlayerCondition + f Lcom/mojang/serialization/MapCodec; a field_45872 CODEC + f Levg; b field_1297 INSTANCE + m (Lerr;)Z a method_938 test + m ()Levc$a; c method_939 killedByPlayer + m ()Levc; d method_940 method_940 + m ()V + m ()V +c evh net/minecraft/class_219 net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceCondition + f Lcom/mojang/serialization/MapCodec; a field_45873 CODEC + f Levy; b comp_2781 chance + m (F)Levc$a; a method_932 randomChance + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53424 method_53424 + m (Lerr;)Z a method_934 test + m (Levy;)Levc$a; a method_60310 randomChance + m (F)Levc; b method_933 method_933 + m (Levy;)Levc; b method_60311 method_60311 + m ()Levy; c comp_2781 chance + m (Levy;)V + m ()V +c evi net/minecraft/class_225 net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceWithEnchantedBonusCondition + f Lcom/mojang/serialization/MapCodec; a field_45874 CODEC + f F b comp_2865 unenchantedChance + f Ldaj; c comp_2866 enchantedChance + f Ljm; g comp_2783 enchantment + m (FFLjo$b;)Levc; a method_952 method_952 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53425 method_53425 + m (Lerr;)Z a method_950 test + m (Ljo$a;FF)Levc$a; a method_953 randomChanceAndLootingBoost + m ()F c comp_2865 unenchantedChance + m ()Ldaj; d comp_2866 enchantedChance + m ()Ljm; e comp_2783 enchantment + m (FLdaj;Ljm;)V + m ()V +c evj net/minecraft/class_223 net/minecraft/world/level/storage/loot/predicates/MatchTool + f Lcom/mojang/serialization/MapCodec; a field_45875 CODEC + f Ljava/util/Optional; b comp_1884 predicate + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53426 method_53426 + m (Lcs$a;)Levc$a; a method_945 toolMatches + m (Lerr;)Z a method_946 test + m (Lcs$a;)Levc; b method_944 method_944 + m ()Ljava/util/Optional; c comp_1884 predicate + m (Ljava/util/Optional;)V + m ()V +c evk net/minecraft/class_4571 net/minecraft/world/level/storage/loot/predicates/TimeCheck + f Lcom/mojang/serialization/MapCodec; a field_45876 CODEC + f Ljava/util/Optional; b comp_1885 period + f Lerq; c comp_1886 value + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53427 method_53427 + m (Lerq;)Levk$a; a method_35559 time + m (Lerr;)Z a method_22587 test + m ()Ljava/util/Optional; c comp_1885 period + m ()Lerq; d comp_1886 value + m (Ljava/util/Optional;Lerq;)V + m ()V +c evk$a net/minecraft/class_4571$class_6164 net/minecraft/world/level/storage/loot/predicates/TimeCheck$Builder + f Ljava/util/Optional; a field_31871 period + f Lerq; b field_31872 value + m ()Levk; a method_35561 build + m (J)Levk$a; a method_35560 setPeriod + m (Lerq;)V +c evl net/minecraft/class_5644 net/minecraft/world/level/storage/loot/predicates/ValueCheckCondition + f Lcom/mojang/serialization/MapCodec; a field_45877 CODEC + f Levy; b comp_1887 provider + f Lerq; c comp_1888 range + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53428 method_53428 + m (Lerr;)Z a method_32423 test + m (Levy;Lerq;)Levc$a; a method_35562 hasValue + m (Levy;Lerq;)Levc; b method_35563 method_35563 + m ()Levy; c comp_1887 provider + m ()Lerq; d comp_1888 range + m (Levy;Lerq;)V + m ()V +c evm net/minecraft/class_227 net/minecraft/world/level/storage/loot/predicates/WeatherCheck + f Lcom/mojang/serialization/MapCodec; a field_45878 CODEC + f Ljava/util/Optional; b comp_1889 isRaining + f Ljava/util/Optional; c comp_1890 isThundering + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53429 method_53429 + m (Lerr;)Z a method_957 test + m ()Levm$a; c method_35564 weather + m ()Ljava/util/Optional; d comp_1889 isRaining + m ()Ljava/util/Optional; e comp_1890 isThundering + m (Ljava/util/Optional;Ljava/util/Optional;)V + m ()V +c evm$a net/minecraft/class_227$class_6165 net/minecraft/world/level/storage/loot/predicates/WeatherCheck$Builder + f Ljava/util/Optional; a field_31873 isRaining + f Ljava/util/Optional; b field_31874 isThundering + m ()Levm; a method_35566 build + m (Z)Levm$a; a method_35565 setRaining + m (Z)Levm$a; b method_35567 setThundering + m ()V +c evn net/minecraft/class_6166 net/minecraft/world/level/storage/loot/predicates/package-info +c evo net/minecraft/class_5646 net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider + f Levo; a field_27914 BLOCK_ENTITY + f Lcom/mojang/serialization/MapCodec; b field_45879 CODEC + f Lcom/mojang/serialization/Codec; c field_45880 INLINE_CODEC + f Ljava/lang/String; d field_31875 BLOCK_ENTITY_ID + f Levo$a; e field_27915 BLOCK_ENTITY_PROVIDER + f Lcom/mojang/serialization/Codec; f field_45881 GETTER_CODEC + f Levo$a; g field_27916 getter + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53430 method_53430 + m (Lerr$b;)Levq; a method_35568 forContextEntity + m (Levo;)Levo$a; a method_53431 method_53431 + m (Ljava/lang/String;)Levo$a; a method_53432 method_53432 + m (Lerr$b;)Levo$a; b method_32430 forEntity + m (Levo;)Levo$a; b method_53433 method_53433 + m (Levo$a;)V + m ()V +c evo$1 net/minecraft/class_5646$1 net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider$1 + m ()V +c evo$2 net/minecraft/class_5646$2 net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider$2 + f Lerr$b; a field_27917 val$target + m (Lerr$b;)V +c evo$a net/minecraft/class_5646$class_5648 net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider$Getter + m ()Ljava/lang/String; a method_32434 getId + m (Lerr;)Luy; a method_32435 get + m ()Ljava/util/Set; b method_32436 getReferencedContextParams +c evp net/minecraft/class_5650 net/minecraft/world/level/storage/loot/providers/nbt/LootNbtProviderType + f Lcom/mojang/serialization/MapCodec; a comp_1891 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_1891 codec + m (Lcom/mojang/serialization/MapCodec;)V +c evq net/minecraft/class_5651 net/minecraft/world/level/storage/loot/providers/nbt/NbtProvider + m ()Levp; a method_32439 getType + m (Lerr;)Luy; a method_32440 get + m ()Ljava/util/Set; b method_32441 getReferencedContextParams +c evr net/minecraft/class_5652 net/minecraft/world/level/storage/loot/providers/nbt/NbtProviders + f Lcom/mojang/serialization/Codec; a field_45882 CODEC + f Levp; b field_27918 STORAGE + f Levp; c field_27919 CONTEXT + f Lcom/mojang/serialization/Codec; d field_45883 TYPED_CODEC + m ()Lcom/mojang/serialization/Codec; a method_53434 method_53434 + m (Levq;)Lcom/mojang/datafixers/util/Either; a method_53436 method_53436 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Levp; a method_32443 register + m ()V + m ()V +c evs net/minecraft/class_5653 net/minecraft/world/level/storage/loot/providers/nbt/StorageNbtProvider + f Lcom/mojang/serialization/MapCodec; a field_45884 CODEC + f Lakr; b comp_1892 id + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53437 method_53437 + m ()Lakr; c comp_1892 id + m (Lakr;)V + m ()V +c evt net/minecraft/class_6167 net/minecraft/world/level/storage/loot/providers/nbt/package-info +c evu net/minecraft/class_40 net/minecraft/world/level/storage/loot/providers/number/BinomialDistributionGenerator + f Lcom/mojang/serialization/MapCodec; a field_45885 CODEC + f Levy; b comp_1893 n + f Levy; c comp_1894 p + m (IF)Levu; a method_273 binomial + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53438 method_53438 + m ()Levy; c comp_1893 n + m ()Levy; d comp_1894 p + m (Levy;Levy;)V + m ()V +c evv net/minecraft/class_44 net/minecraft/world/level/storage/loot/providers/number/ConstantValue + f Lcom/mojang/serialization/MapCodec; a field_45886 CODEC + f Lcom/mojang/serialization/Codec; b field_45887 INLINE_CODEC + f F c comp_1895 value + m (F)Levv; a method_32448 exactly + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53439 method_53439 + m ()F c comp_1895 value + m (F)V + m ()V +c evw net/minecraft/class_9753 net/minecraft/world/level/storage/loot/providers/number/EnchantmentLevelProvider + f Lcom/mojang/serialization/MapCodec; a field_51813 CODEC + f Ldaj; b comp_2784 amount + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_60312 method_60312 + m (Ldaj;)Levw; a method_60313 forEnchantmentLevel + m ()Ldaj; c comp_2784 amount + m (Ldaj;)V + m ()V +c evx net/minecraft/class_5657 net/minecraft/world/level/storage/loot/providers/number/LootNumberProviderType + f Lcom/mojang/serialization/MapCodec; a comp_1896 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_1896 codec + m (Lcom/mojang/serialization/MapCodec;)V +c evy net/minecraft/class_5658 net/minecraft/world/level/storage/loot/providers/number/NumberProvider + m (Lerr;)I a method_366 getInt + m ()Levx; b method_365 getType + m (Lerr;)F b method_32454 getFloat +c evz net/minecraft/class_5659 net/minecraft/world/level/storage/loot/providers/number/NumberProviders + f Lcom/mojang/serialization/Codec; a field_45888 CODEC + f Levx; b field_27921 CONSTANT + f Levx; c field_27922 UNIFORM + f Levx; d field_27923 BINOMIAL + f Levx; e field_27924 SCORE + f Levx; f field_50032 STORAGE + f Levx; g field_51814 ENCHANTMENT_LEVEL + f Lcom/mojang/serialization/Codec; h field_45889 TYPED_CODEC + m ()Lcom/mojang/serialization/Codec; a method_53440 method_53440 + m (Levy;)Lcom/mojang/datafixers/util/Either; a method_53442 method_53442 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Levx; a method_32456 register + m ()V + m ()V +c ewa net/minecraft/class_5660 net/minecraft/world/level/storage/loot/providers/number/ScoreboardValue + f Lcom/mojang/serialization/MapCodec; a field_45890 CODEC + f Lewh; b comp_1897 target + f Ljava/lang/String; c comp_1898 score + f F d comp_1899 scale + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53443 method_53443 + m (Lerr$b;Ljava/lang/String;)Lewa; a method_35569 fromScoreboard + m (Lerr$b;Ljava/lang/String;F)Lewa; a method_35570 fromScoreboard + m ()Lewh; c comp_1897 target + m ()Ljava/lang/String; d comp_1898 score + m ()F e comp_1899 scale + m (Lewh;Ljava/lang/String;F)V + m ()V +c ewb net/minecraft/class_9432 net/minecraft/world/level/storage/loot/providers/number/StorageValue + f Lcom/mojang/serialization/MapCodec; a field_50033 CODEC + f Lakr; b comp_2525 storage + f Lfl$g; c comp_2526 path + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_58470 method_58470 + m ()Lakr; c comp_2525 storage + m (Lerr;)Ljava/util/Optional; c method_58471 getNumericTag + m ()Lfl$g; d comp_2526 path + m (Lakr;Lfl$g;)V + m ()V +c ewc net/minecraft/class_5662 net/minecraft/world/level/storage/loot/providers/number/UniformGenerator + f Lcom/mojang/serialization/MapCodec; a field_45891 CODEC + f Levy; b comp_1900 min + f Levy; c comp_1901 max + m (FF)Lewc; a method_32462 between + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53444 method_53444 + m ()Levy; c comp_1900 min + m ()Levy; d comp_1901 max + m (Levy;Levy;)V + m ()V +c ewd net/minecraft/class_6168 net/minecraft/world/level/storage/loot/providers/number/package-info +c ewe net/minecraft/class_5664 net/minecraft/world/level/storage/loot/providers/score/ContextScoreboardNameProvider + f Lcom/mojang/serialization/MapCodec; a field_45892 CODEC + f Lcom/mojang/serialization/Codec; b field_45893 INLINE_CODEC + f Lerr$b; c comp_1902 target + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53445 method_53445 + m (Lerr$b;)Lewh; a method_35571 forTarget + m ()Lerr$b; c comp_1902 target + m (Lerr$b;)V + m ()V +c ewf net/minecraft/class_5667 net/minecraft/world/level/storage/loot/providers/score/FixedScoreboardNameProvider + f Lcom/mojang/serialization/MapCodec; a field_45894 CODEC + f Ljava/lang/String; b comp_1903 name + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_53446 method_53446 + m (Ljava/lang/String;)Lewh; a method_35572 forName + m ()Ljava/lang/String; c comp_1903 name + m (Ljava/lang/String;)V + m ()V +c ewg net/minecraft/class_5669 net/minecraft/world/level/storage/loot/providers/score/LootScoreProviderType + f Lcom/mojang/serialization/MapCodec; a comp_1904 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_1904 codec + m (Lcom/mojang/serialization/MapCodec;)V +c ewh net/minecraft/class_5670 net/minecraft/world/level/storage/loot/providers/score/ScoreboardNameProvider + m ()Lewg; a method_32475 getType + m (Lerr;)Leyf; a method_55379 getScoreHolder + m ()Ljava/util/Set; b method_32477 getReferencedContextParams +c ewi net/minecraft/class_5671 net/minecraft/world/level/storage/loot/providers/score/ScoreboardNameProviders + f Lcom/mojang/serialization/Codec; a field_45895 CODEC + f Lewg; b field_27932 FIXED + f Lewg; c field_27933 CONTEXT + f Lcom/mojang/serialization/Codec; d field_45896 TYPED_CODEC + m ()Lcom/mojang/serialization/Codec; a method_53447 method_53447 + m (Lewh;)Lcom/mojang/datafixers/util/Either; a method_53449 method_53449 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lewg; a method_32479 register + m ()V + m ()V +c ewj net/minecraft/class_6169 net/minecraft/world/level/storage/loot/providers/score/package-info +c ewk net/minecraft/class_6170 net/minecraft/world/level/storage/package-info +c ewl net/minecraft/class_231 net/minecraft/world/level/timers/FunctionCallback + f Lakr; a field_1304 functionId + m (Lalg;Lig;)V a method_17938 method_17938 + m (Lnet/minecraft/server/MinecraftServer;Lewp;J)V a method_967 handle + m (Lakr;)V +c ewl$a net/minecraft/class_231$class_232 net/minecraft/world/level/timers/FunctionCallback$Serializer + m (Lub;)Lewl; a method_969 deserialize + m (Lub;Lewl;)V a method_968 serialize + m ()V +c ewm net/minecraft/class_229 net/minecraft/world/level/timers/FunctionTagCallback + f Lakr; a field_1303 tagId + m (Lnet/minecraft/server/MinecraftServer;Lewp;J)V a method_962 handle + m (Lakr;)V +c ewm$a net/minecraft/class_229$class_230 net/minecraft/world/level/timers/FunctionTagCallback$Serializer + m (Lub;)Lewm; a method_965 deserialize + m (Lub;Lewm;)V a method_964 serialize + m ()V +c ewn net/minecraft/class_234 net/minecraft/world/level/timers/TimerCallback + m (Ljava/lang/Object;Lewp;J)V handle method_974 handle +c ewn$a net/minecraft/class_234$class_235 net/minecraft/world/level/timers/TimerCallback$Serializer + f Lakr; a field_1309 id + f Ljava/lang/Class; b field_1310 cls + m ()Lakr; a method_977 getId + m (Lub;Lewn;)V a method_975 serialize + m ()Ljava/lang/Class; b method_978 getCls + m (Lub;)Lewn; b method_976 deserialize + m (Lakr;Ljava/lang/Class;)V +c ewo net/minecraft/class_233 net/minecraft/world/level/timers/TimerCallbacks + f Lewo; a field_1306 SERVER_CALLBACKS + f Lorg/slf4j/Logger; b field_1308 LOGGER + f Ljava/util/Map; c field_1307 idToSerializer + f Ljava/util/Map; d field_1305 classToSerializer + m (Lewn$a;)Lewo; a method_971 register + m (Lewn;)Lub; a method_973 serialize + m (Ljava/lang/Class;)Lewn$a; a method_970 getSerializer + m (Lub;)Lewn; a method_972 deserialize + m ()V + m ()V +c ewp net/minecraft/class_236 net/minecraft/world/level/timers/TimerQueue + f Lorg/slf4j/Logger; a field_1315 LOGGER + f Ljava/lang/String; b field_31876 CALLBACK_DATA_TAG + f Ljava/lang/String; c field_31877 TIMER_NAME_TAG + f Ljava/lang/String; d field_31878 TIMER_TRIGGER_TIME_TAG + f Lewo; e field_1314 callbacksRegistry + f Ljava/util/Queue; f field_1313 queue + f Lcom/google/common/primitives/UnsignedLong; g field_1311 sequentialId + f Lcom/google/common/collect/Table; h field_1312 events + m ()Ljava/util/Set; a method_22592 getEventsIds + m (Lcom/mojang/serialization/Dynamic;)V a method_29040 method_29040 + m (Lewp$a;)Lub; a method_980 storeEvent + m (Ljava/lang/Object;J)V a method_988 tick + m (Ljava/lang/String;)I a method_22593 remove + m (Ljava/lang/String;JLewn;)V a method_985 schedule + m (Lub;)V a method_986 loadEvent + m ()Luh; b method_982 store + m (Lewp$a;)Lcom/google/common/primitives/UnsignedLong; b method_21904 method_21904 + m ()Ljava/util/Comparator; c method_987 createComparator + m (Lewp$a;)J c method_21905 method_21905 + m (Lewo;Ljava/util/stream/Stream;)V + m (Lewo;)V + m ()V +c ewp$a net/minecraft/class_236$class_237 net/minecraft/world/level/timers/TimerQueue$Event + f J a field_1318 triggerTime + f Lcom/google/common/primitives/UnsignedLong; b field_1319 sequentialId + f Ljava/lang/String; c field_1317 id + f Lewn; d field_1316 callback + m (JLcom/google/common/primitives/UnsignedLong;Ljava/lang/String;Lewn;)V +c ewq net/minecraft/class_6171 net/minecraft/world/level/timers/package-info +c ewr net/minecraft/class_8579 net/minecraft/world/level/validation/ContentValidationException + f Ljava/nio/file/Path; a field_44953 directory + f Ljava/util/List; b field_44954 entries + m (Lewt;)Ljava/lang/String; a method_52240 method_52240 + m (Ljava/nio/file/Path;Ljava/util/List;)Ljava/lang/String; a method_52241 getMessage + m (Ljava/nio/file/Path;Ljava/util/List;)V +c ews net/minecraft/class_8580 net/minecraft/world/level/validation/DirectoryValidator + f Ljava/nio/file/PathMatcher; a field_44955 symlinkTargetAllowList + m (Ljava/nio/file/Path;)Ljava/util/List; a method_52618 validateSymlink + m (Ljava/nio/file/Path;Ljava/util/List;)V a method_52242 validateSymlink + m (Ljava/nio/file/Path;Z)Ljava/util/List; a method_52243 validateDirectory + m (Ljava/nio/file/Path;Ljava/util/List;)V b method_52619 validateKnownDirectory + m (Ljava/nio/file/PathMatcher;)V +c ews$1 net/minecraft/class_8580$1 net/minecraft/world/level/validation/DirectoryValidator$1 + f Ljava/util/List; a field_44956 val$issues + f Lews; b field_44957 field_44957 + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult; a method_52244 preVisitDirectory + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult; b method_52245 visitFile + m (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)V c method_52246 validateSymlink + m (Lews;Ljava/util/List;)V +c ewt net/minecraft/class_8581 net/minecraft/world/level/validation/ForbiddenSymlinkInfo + f Ljava/nio/file/Path; a comp_1547 link + f Ljava/nio/file/Path; b comp_1548 target + m ()Ljava/nio/file/Path; a comp_1547 link + m ()Ljava/nio/file/Path; b comp_1548 target + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)V +c ewu net/minecraft/class_8582 net/minecraft/world/level/validation/PathAllowList + f Lorg/slf4j/Logger; a field_44958 LOGGER + f Ljava/lang/String; b field_44959 COMMENT_PREFIX + f Ljava/util/List; c field_44960 entries + f Ljava/util/Map; d field_44961 compiledPaths + m (Ljava/io/BufferedReader;)Lewu; a method_52247 readPlain + m (Ljava/lang/String;)Ljava/util/stream/Stream; a method_52248 method_52248 + m (Ljava/nio/file/FileSystem;)Ljava/nio/file/PathMatcher; a method_52249 getForFileSystem + m (Ljava/nio/file/FileSystem;Lewu$a;)Ljava/nio/file/PathMatcher; a method_52250 method_52250 + m (Ljava/nio/file/FileSystem;Ljava/lang/String;)Ljava/nio/file/PathMatcher; a method_52251 method_52251 + m (Ljava/nio/file/Path;)Z a method_52252 method_52252 + m (Ljava/util/List;Ljava/nio/file/Path;)Z a method_52253 method_52253 + m (Ljava/nio/file/Path;)Z b method_52254 method_52254 + m (Ljava/util/List;)V + m ()V +c ewu$a net/minecraft/class_8582$class_8583 net/minecraft/world/level/validation/PathAllowList$ConfigEntry + f Lewu$b; a comp_1549 type + f Ljava/lang/String; b comp_1550 pattern + m ()Lewu$b; a comp_1549 type + m (Ljava/lang/String;)Ljava/util/Optional; a method_52255 parse + m (Ljava/nio/file/FileSystem;)Ljava/nio/file/PathMatcher; a method_52256 compile + m ()Ljava/lang/String; b comp_1550 pattern + m (Ljava/lang/String;)Lewu$a; b method_52257 glob + m (Ljava/lang/String;)Lewu$a; c method_52258 regex + m (Ljava/lang/String;)Lewu$a; d method_52259 prefix + m (Lewu$b;Ljava/lang/String;)V +c ewu$b net/minecraft/class_8582$class_8584 net/minecraft/world/level/validation/PathAllowList$EntryType + f Lewu$b; a field_44962 FILESYSTEM + f Lewu$b; b field_44963 PREFIX + m (Ljava/lang/String;Ljava/nio/file/Path;)Z a method_52260 method_52260 + m (Ljava/nio/file/FileSystem;Ljava/lang/String;)Ljava/nio/file/PathMatcher; a method_52261 method_52261 + m ()V +c ewv net/minecraft/class_8585 net/minecraft/world/level/validation/package-info +c eww net/minecraft/class_6172 net/minecraft/world/package-info +c ewx net/minecraft/class_238 net/minecraft/world/phys/AABB + f D a field_1323 minX + f D b field_1322 minY + f D c field_1321 minZ + f D d field_1320 maxX + f D e field_1325 maxY + f D f field_1324 maxZ + f D g field_31879 EPSILON + m ()D a method_995 getSize + m (D)Lewx; a method_35574 setMinX + m (DDD)Lewx; a method_1002 contract + m (DDDDDD)Z a method_1003 intersects + m (Lejj;)Lewx; a method_19316 of + m (Lewx;)Lewx; a method_999 intersect + m (Lewx;Lexc;[DLji;DDD)Lji; a method_1007 getDirection + m (Lexc;)Lewx; a method_29968 unitCubeFromLowerCorner + m (Lexc;DDD)Lewx; a method_30048 ofSize + m (Lexc;Lexc;)Z a method_993 intersects + m (Ljava/lang/Iterable;Lexc;Lexc;Ljd;)Lewy; a method_1010 clip + m (Ljd;)Lewx; a method_996 move + m (Ljd;Ljd;)Lewx; a method_54784 encapsulatingFullBlocks + m (Lji$a;)D a method_1001 min + m (Lorg/joml/Vector3f;)Lewx; a method_60314 move + m ([DLji;DDDDDDDDLji;DDD)Lji; a method_998 clipPoint + m ()D b method_17939 getXsize + m (D)Lewx; b method_35575 setMinY + m (DDD)Lewx; b method_1012 expandTowards + m (Lewx;)Lewx; b method_991 minmax + m (Lexc;)Lewx; b method_18804 expandTowards + m (Lexc;Lexc;)Ljava/util/Optional; b method_992 clip + m (Lji$a;)D b method_990 max + m ()D c method_17940 getYsize + m (D)Lewx; c method_35576 setMinZ + m (DDD)Lewx; c method_1009 inflate + m (Lewx;)Z c method_994 intersects + m (Lexc;)Lewx; c method_997 move + m ()D d method_17941 getZsize + m (D)Lewx; d method_35577 setMaxX + m (DDD)Lewx; d method_989 move + m (Lexc;)Z d method_1006 contains + m ()Z e method_1013 hasNaN + m (D)Lewx; e method_35578 setMaxY + m (DDD)Z e method_1008 contains + m (Lexc;)D e method_49271 distanceToSqr + m ()Lexc; f method_1005 getCenter + m (D)Lewx; f method_35579 setMaxZ + m (DDD)Lewx; f method_35580 deflate + m ()Lexc; g method_61124 getBottomCenter + m (D)Lewx; g method_1014 inflate + m ()Lexc; h method_61125 getMinPosition + m (D)Lewx; h method_1011 deflate + m ()Lexc; i method_61126 getMaxPosition + m (DDDDDD)V + m (Ljd;)V + m (Lexc;Lexc;)V +c ewy net/minecraft/class_3965 net/minecraft/world/phys/BlockHitResult + f Lji; b field_17588 direction + f Ljd; c field_17589 blockPos + f Z d field_17590 miss + f Z e field_17591 inside + m ()Ljd; a method_17777 getBlockPos + m (Lexc;Lji;Ljd;)Lewy; a method_17778 miss + m (Ljd;)Lewy; a method_29328 withPosition + m (Lji;)Lewy; a method_17779 withDirection + m ()Lji; b method_17780 getDirection + m ()Z d method_17781 isInside + m (Lexc;Lji;Ljd;Z)V + m (ZLexc;Lji;Ljd;Z)V +c ewz net/minecraft/class_3966 net/minecraft/world/phys/EntityHitResult + f Lbsr; b field_17592 entity + m ()Lbsr; a method_17782 getEntity + m (Lbsr;)V + m (Lbsr;Lexc;)V +c exa net/minecraft/class_239 net/minecraft/world/phys/HitResult + f Lexc; a field_1329 location + m (Lbsr;)D a method_24801 distanceTo + m ()Lexa$a; c method_17783 getType + m ()Lexc; e method_17784 getLocation + m (Lexc;)V +c exa$a net/minecraft/class_239$class_240 net/minecraft/world/phys/HitResult$Type + f Lexa$a; a field_1333 MISS + f Lexa$a; b field_1332 BLOCK + f Lexa$a; c field_1331 ENTITY + f [Lexa$a; d field_1334 $VALUES + m ()[Lexa$a; a method_36796 $values + m (Ljava/lang/String;I)V + m ()V +c exb net/minecraft/class_241 net/minecraft/world/phys/Vec2 + f Lexb; a field_1340 ZERO + f Lexb; b field_1335 ONE + f Lexb; c field_1341 UNIT_X + f Lexb; d field_1338 NEG_UNIT_X + f Lexb; e field_1336 UNIT_Y + f Lexb; f field_1344 NEG_UNIT_Y + f Lexb; g field_1337 MAX + f Lexb; h field_1339 MIN + f F i field_1343 x + f F j field_1342 y + m ()Lexb; a method_35581 normalized + m (F)Lexb; a method_35582 scale + m (Lexb;)F a method_35583 dot + m ()F b method_35584 length + m (F)Lexb; b method_35585 add + m (Lexb;)Lexb; b method_35586 add + m ()F c method_35587 lengthSquared + m (Lexb;)Z c method_1016 equals + m ()Lexb; d method_35588 negated + m (Lexb;)F d method_35589 distanceToSqr + m (FF)V + m ()V +c exc net/minecraft/class_243 net/minecraft/world/phys/Vec3 + f Lcom/mojang/serialization/Codec; a field_38277 CODEC + f Lexc; b field_1353 ZERO + f D c field_1352 x + f D d field_1351 y + f D e field_1350 z + m (D)Lexc; a method_1021 scale + m (DDD)Lexc; a method_1023 subtract + m (F)Lexc; a method_1037 xRot + m (FF)Lexc; a method_1030 directionFromRotation + m (I)Lexc; a method_24457 fromRGB24 + m (Layw;F)Lexc; a method_49272 offsetRandom + m (Lexb;)Lexc; a method_1034 directionFromRotation + m (Lexc;)Lexc; a method_1035 vectorTo + m (Lexc;D)Lexc; a method_35590 lerp + m (Lexc;DD)Z a method_55230 closerThan + m (Ljava/util/EnumSet;)Lexc; a method_1032 align + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_42394 method_42394 + m (Lji$a;)D a method_18043 get + m (Lji$a;D)Lexc; a method_38499 with + m (Lji;D)Lexc; a method_43206 relative + m (Ljw;D)Z a method_24802 closerThan + m (Lkh;)Lexc; a method_24954 atLowerCornerOf + m (Lkh;D)Lexc; a method_26410 upFromBottomCenterOf + m (Lkh;DDD)Lexc; a method_49273 atLowerCornerWithOffset + m (DDD)Lexc; b method_1031 add + m (F)Lexc; b method_1024 yRot + m (Lexc;)D b method_1026 dot + m (Ljava/util/List;)Lexc; b method_42395 method_42395 + m (Lkh;)Lexc; b method_24953 atCenterOf + m (DDD)D c method_1028 distanceToSqr + m (F)Lexc; c method_31033 zRot + m (Lexc;)Lexc; c method_1036 cross + m (Lkh;)Lexc; c method_24955 atBottomCenterOf + m ()Lexc; d method_1029 normalize + m (DDD)Lexc; d method_18805 multiply + m (Lexc;)Lexc; d method_1020 subtract + m ()Lexc; e method_22882 reverse + m (Lexc;)Lexc; e method_1019 add + m ()D f method_1033 length + m (Lexc;)D f method_1022 distanceTo + m ()D g method_1027 lengthSqr + m (Lexc;)D g method_1025 distanceToSqr + m ()D h method_37267 horizontalDistance + m (Lexc;)Lexc; h method_18806 multiply + m ()D i method_37268 horizontalDistanceSqr + m (Lexc;)Ljava/util/List; i method_42396 method_42396 + m ()Lorg/joml/Vector3f; j method_46409 toVector3f + m (DDD)V + m (Lorg/joml/Vector3f;)V + m ()V +c exd net/minecraft/class_6173 net/minecraft/world/phys/package-info +c exe net/minecraft/class_245 net/minecraft/world/phys/shapes/ArrayVoxelShape + f Lit/unimi/dsi/fastutil/doubles/DoubleList; b field_1361 xs + f Lit/unimi/dsi/fastutil/doubles/DoubleList; c field_1362 ys + f Lit/unimi/dsi/fastutil/doubles/DoubleList; d field_1363 zs + m (Lexl;[D[D[D)V + m (Lexl;Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;)V +c exe$1 net/minecraft/class_245$1 net/minecraft/world/phys/shapes/ArrayVoxelShape$1 + f [I a field_1364 $SwitchMap$net$minecraft$core$Direction$Axis + m ()V +c exf net/minecraft/class_244 net/minecraft/world/phys/shapes/BitSetDiscreteVoxelShape + f Ljava/util/BitSet; d field_1359 storage + f I e field_1358 xMin + f I f field_1357 yMin + f I g field_1356 zMin + f I h field_1355 xMax + f I i field_1354 yMax + f I j field_1360 zMax + m (III)I a method_1039 getIndex + m (IIII)Z a method_1059 isZStripFull + m (IIIII)Z a method_31938 isXZRectangleFull + m (IIIIIIIII)Lexf; a method_31939 withFilledBounds + m (IIIZ)V a method_31940 fillUpdateBounds + m (Lexg;Lexl;IILexl;IILexf;II[I[ZIII)Z a method_1038 method_1038 + m (Lexl;Lexl$b;Z)V a method_31941 forAllBoxes + m (Lexl;Lexl;Lexo;Lexo;Lexo;Lexg;)Lexf; a method_1040 join + m (Lexo;Lexg;Lexl;ILexl;ILexf;I[I[ZIII)Z a method_1042 method_1042 + m (Lexo;Lexo;Lexg;Lexl;Lexl;Lexf;[IIII)Z a method_1041 method_1041 + m (IIII)V b method_31942 clearZStrip + m (III)Z d method_58225 isInterior + m (III)V + m (Lexl;)V +c exg net/minecraft/class_247 net/minecraft/world/phys/shapes/BooleanOp + f Lexg; a field_16897 FALSE + f Lexg; b field_16885 NOT_OR + f Lexg; c field_16893 ONLY_SECOND + f Lexg; d field_16894 NOT_FIRST + f Lexg; e field_16886 ONLY_FIRST + f Lexg; f field_16898 NOT_SECOND + f Lexg; g field_16892 NOT_SAME + f Lexg; h field_16888 NOT_AND + f Lexg; i field_16896 AND + f Lexg; j field_16890 SAME + f Lexg; k field_16887 SECOND + f Lexg; l field_16889 CAUSES + f Lexg; m field_16891 FIRST + f Lexg; n field_16899 CAUSED_BY + f Lexg; o field_1366 OR + f Lexg; p field_16895 TRUE + m (ZZ)Z a method_16795 method_16795 + m (ZZ)Z b method_16785 method_16785 + m (ZZ)Z c method_16794 method_16794 + m (ZZ)Z d method_16790 method_16790 + m (ZZ)Z e method_16781 method_16781 + m (ZZ)Z f method_16796 method_16796 + m (ZZ)Z g method_16788 method_16788 + m (ZZ)Z h method_16782 method_16782 + m (ZZ)Z i method_16792 method_16792 + m (ZZ)Z j method_16786 method_16786 + m (ZZ)Z k method_16793 method_16793 + m (ZZ)Z l method_16783 method_16783 + m (ZZ)Z m method_16787 method_16787 + m (ZZ)Z n method_16791 method_16791 + m (ZZ)Z o method_16784 method_16784 + m (ZZ)Z p method_16789 method_16789 + m ()V +c exh net/minecraft/class_3726 net/minecraft/world/phys/shapes/CollisionContext + m ()Lexh; a method_16194 empty + m (Lbsr;)Lexh; a method_16195 of + m (Lcul;)Z a method_17785 isHoldingItem + m (Lepe;Lepe;)Z a method_27866 canStandOnFluid + m (Lexv;Ljd;Z)Z a method_16192 isAbove + m ()Z b method_16193 isDescending +c exi net/minecraft/class_246 net/minecraft/world/phys/shapes/CubePointRange + f I a field_1365 parts + m (I)V +c exj net/minecraft/class_249 net/minecraft/world/phys/shapes/CubeVoxelShape + m (Lexl;)V +c exk net/minecraft/class_248 net/minecraft/world/phys/shapes/DiscreteCubeMerger + f Lexi; a field_1367 result + f I b field_1370 firstDiv + f I c field_1368 secondDiv + m (II)V +c exl net/minecraft/class_251 net/minecraft/world/phys/shapes/DiscreteVoxelShape + f I a field_1374 xSize + f I b field_1373 ySize + f I c field_1372 zSize + f [Lji$a; d field_1375 AXIS_VALUES + m ()Z a method_1056 isEmpty + m (Lexl$a;)V a method_1046 forAllFaces + m (Lexl$a;Lja;)V a method_1061 forAllAxisFaces + m (Lexl$b;Lja;Z)V a method_1052 forAllAxisEdges + m (Lexl$b;Z)V a method_1064 forAllEdges + m (Lja;III)Z a method_1062 isFullWide + m (Lji$a;)I a method_1055 firstFull + m (Lji$a;II)I a method_35592 firstFull + m ()I b method_1050 getXSize + m (III)Z b method_1063 isFull + m (Lexl$b;Z)V b method_1053 forAllBoxes + m (Lja;III)Z b method_1057 isFull + m (Lji$a;)I b method_1045 lastFull + m (Lji$a;II)I b method_1058 lastFull + m ()I c method_1047 getYSize + m (III)V c method_1049 fill + m (Lji$a;)I c method_1051 getSize + m ()I d method_1048 getZSize + m (III)Z e method_1044 isFullWide + m (III)V + m ()V +c exl$a net/minecraft/class_251$class_252 net/minecraft/world/phys/shapes/DiscreteVoxelShape$IntFaceConsumer +c exl$b net/minecraft/class_251$class_253 net/minecraft/world/phys/shapes/DiscreteVoxelShape$IntLineConsumer +c exm net/minecraft/class_3727 net/minecraft/world/phys/shapes/EntityCollisionContext + f Lexh; a field_17593 EMPTY + f Z b field_16451 descending + f D c field_16450 entityBottom + f Lcuq; d field_17594 heldItem + f Ljava/util/function/Predicate; e field_24425 canStandOnFluid + f Lbsr; f field_27935 entity + m (Lepe;)Z a method_27867 method_27867 + m (Lepe;)Z b method_27868 method_27868 + m ()Lbsr; c method_32480 getEntity + m (ZDLcuq;Ljava/util/function/Predicate;Lbsr;)V + m (Lbsr;)V + m ()V +c exm$1 net/minecraft/class_3727$1 net/minecraft/world/phys/shapes/EntityCollisionContext$1 + m (ZDLcuq;Ljava/util/function/Predicate;Lbsr;)V +c exn net/minecraft/class_250 net/minecraft/world/phys/shapes/IdenticalMerger + f Lit/unimi/dsi/fastutil/doubles/DoubleList; a field_1371 coords + m (Lit/unimi/dsi/fastutil/doubles/DoubleList;)V +c exo net/minecraft/class_255 net/minecraft/world/phys/shapes/IndexMerger + m ()Lit/unimi/dsi/fastutil/doubles/DoubleList; a method_1066 getList + m (Lexo$a;)Z a method_1065 forMergedIndexes +c exo$a net/minecraft/class_255$class_256 net/minecraft/world/phys/shapes/IndexMerger$IndexConsumer +c exp net/minecraft/class_254 net/minecraft/world/phys/shapes/IndirectMerger + f Lit/unimi/dsi/fastutil/doubles/DoubleList; a field_27346 EMPTY + f [D b field_1377 result + f [I c field_1376 firstIndices + f [I d field_1378 secondIndices + f I e field_27347 resultLength + m (Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;ZZ)V + m ()V +c exq net/minecraft/class_257 net/minecraft/world/phys/shapes/NonOverlappingMerger + f Lit/unimi/dsi/fastutil/doubles/DoubleList; a field_1381 lower + f Lit/unimi/dsi/fastutil/doubles/DoubleList; b field_1379 upper + f Z c field_1380 swap + m (Lexo$a;III)Z a method_1068 method_1068 + m (Lexo$a;)Z b method_1067 forNonSwappedIndexes + m (Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;Z)V +c exr net/minecraft/class_261 net/minecraft/world/phys/shapes/OffsetDoubleList + f Lit/unimi/dsi/fastutil/doubles/DoubleList; a field_1387 delegate + f D b field_1386 offset + m (Lit/unimi/dsi/fastutil/doubles/DoubleList;D)V +c exs net/minecraft/class_259 net/minecraft/world/phys/shapes/Shapes + f D a field_31880 EPSILON + f D b field_31881 BIG_EPSILON + f Lexv; c field_17669 INFINITY + f Lexv; d field_1385 BLOCK + f Lexv; e field_1384 EMPTY + m ()Lexv; a method_1073 empty + m (DD)I a method_1086 findBits + m (DDDDDD)Lexv; a method_1081 box + m (II)J a method_1079 lcm + m (ILit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;ZZ)Lexo; a method_1069 createIndexMerger + m (Lewx;)Lexv; a method_1078 create + m (Lexg;Lexl;IILexl;IIIII)Z a method_1070 method_1070 + m (Lexo;Lexg;Lexl;ILexl;IIII)Z a method_1076 method_1076 + m (Lexo;Lexo;Lexg;Lexl;Lexl;III)Z a method_1075 method_1075 + m (Lexo;Lexo;Lexo;Lexl;Lexl;Lexg;)Z a method_1071 joinIsNotEmpty + m (Lexv;Lexv;)Lexv; a method_1084 or + m (Lexv;Lexv;Lexg;)Lexv; a method_1072 join + m (Lexv;Lexv;Lji;)Z a method_1083 blockOccudes + m (Lexv;Lji;)Lexv; a method_16344 getFaceShape + m (Lexv;[Lexv;)Lexv; a method_17786 or + m (Lji$a;Lewx;Ljava/lang/Iterable;D)D a method_1085 collide + m ()Lexv; b method_1077 block + m (DDDDDD)Lexv; b method_31943 create + m (Lexv;Lexv;)Z b method_20713 faceShapeOccludes + m (Lexv;Lexv;Lexg;)Lexv; b method_1082 joinUnoptimized + m (Lexv;Lexv;Lji;)Z b method_1080 mergedFaceOccludes + m ()Lexj; c method_1087 method_1087 + m (Lexv;Lexv;Lexg;)Z c method_1074 joinIsNotEmpty + m ()V + m ()V +c exs$a net/minecraft/class_259$class_260 net/minecraft/world/phys/shapes/Shapes$DoubleLineConsumer +c ext net/minecraft/class_263 net/minecraft/world/phys/shapes/SliceShape + f Lexv; b field_1397 delegate + f Lji$a; c field_1396 axis + f Lit/unimi/dsi/fastutil/doubles/DoubleList; d field_1395 SLICE_COORDS + m (Lexl;Lji$a;I)Lexl; a method_1088 makeSlice + m (Lexv;Lji$a;I)V + m ()V +c exu net/minecraft/class_262 net/minecraft/world/phys/shapes/SubShape + f Lexl; d field_1393 parent + f I e field_1392 startX + f I f field_1391 startY + f I g field_1390 startZ + f I h field_1389 endX + f I i field_1388 endY + f I j field_1394 endZ + m (Lji$a;I)I a method_31944 clampToShape + m (Lexl;IIIIII)V +c exv net/minecraft/class_265 net/minecraft/world/phys/shapes/VoxelShape + f Lexl; a field_1401 shape + f [Lexv; b field_19318 faces + m ()Lewx; a method_1107 bounds + m (DDD)Lexv; a method_1096 move + m (DLji$a;I)Z a method_1101 method_1101 + m (Lexc;)Ljava/util/Optional; a method_33661 closestPointTo + m (Lexc;Lexc;Ljd;)Lewy; a method_1092 clip + m (Lexc;[Lexc;DDDDDD)V a method_33662 method_33662 + m (Lexs$a;)V a method_1104 forAllEdges + m (Lexs$a;IIIIII)V a method_1106 method_1106 + m (Lexs$a;Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;Lit/unimi/dsi/fastutil/doubles/DoubleList;IIIIII)V a method_1112 method_1112 + m (Lja;Lewx;D)D a method_1103 collideX + m (Ljava/util/List;DDDDDD)V a method_1111 method_1111 + m (Lji$a;)Lit/unimi/dsi/fastutil/doubles/DoubleList; a method_1109 getCoords + m (Lji$a;D)I a method_1100 findIndex + m (Lji$a;DD)D a method_35593 min + m (Lji$a;I)D a method_1099 get + m (Lji$a;Lewx;D)D a method_1108 collide + m (Lji;)Lexv; a method_20538 getFaceShape + m ([Lexv;DDDDDD)V a method_1094 method_1094 + m ()Lexv; b method_52620 singleEncompassing + m (Lexs$a;)V b method_1089 forAllBoxes + m (Lji$a;)D b method_1091 min + m (Lji$a;DD)D b method_1102 max + m (Lji;)Lexv; b method_1098 calculateFace + m ()Z c method_1110 isEmpty + m (Lji$a;)D c method_1105 max + m ()Lexv; d method_1097 optimize + m ()Ljava/util/List; e method_1090 toAabbs + m (Lexl;)V +c exw net/minecraft/class_6174 net/minecraft/world/phys/shapes/package-info +c exx net/minecraft/class_8646 net/minecraft/world/scores/DisplaySlot + f Lexx; a field_45156 LIST + f Lexx; b field_45157 SIDEBAR + f Lexx; c field_45158 BELOW_NAME + f Lexx; d field_45159 TEAM_BLACK + f Lexx; e field_45160 TEAM_DARK_BLUE + f Lexx; f field_45161 TEAM_DARK_GREEN + f Lexx; g field_45162 TEAM_DARK_AQUA + f Lexx; h field_45163 TEAM_DARK_RED + f Lexx; i field_45164 TEAM_DARK_PURPLE + f Lexx; j field_45165 TEAM_GOLD + f Lexx; k field_45166 TEAM_GRAY + f Lexx; l field_45167 TEAM_DARK_GRAY + f Lexx; m field_45168 TEAM_BLUE + f Lexx; n field_45169 TEAM_GREEN + f Lexx; o field_45170 TEAM_AQUA + f Lexx; p field_45171 TEAM_RED + f Lexx; q field_45172 TEAM_LIGHT_PURPLE + f Lexx; r field_45173 TEAM_YELLOW + f Lexx; s field_45174 TEAM_WHITE + f Lazk$a; t field_45175 CODEC + f Ljava/util/function/IntFunction; u field_45176 BY_ID + f I v field_45177 id + f Ljava/lang/String; w field_45178 name + f [Lexx; x field_45179 $VALUES + m ()I a method_52621 id + m (Ln;)Lexx; a method_52622 teamColorToSlot + m ()[Lexx; b method_52623 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c exx$1 net/minecraft/class_8646$1 net/minecraft/world/scores/DisplaySlot$1 + f [I a field_45180 $SwitchMap$net$minecraft$ChatFormatting + m ()V +c exy net/minecraft/class_266 net/minecraft/world/scores/Objective + f Leyg; a field_1404 scoreboard + f Ljava/lang/String; b field_1405 name + f Leyj; c field_1406 criteria + f Lwz; d field_1402 displayName + f Lwz; e field_24194 formattedDisplayName + f Leyj$a; f field_1403 renderType + f Z g field_47527 displayAutoUpdate + f Lyp; h field_47528 numberFormat + m ()Leyg; a method_1117 getScoreboard + m (Leyj$a;)V a method_1115 setRenderType + m (Lwz;)V a method_1121 setDisplayName + m (Lxw;)Lxw; a method_1119 method_1119 + m (Lyp;)Lyp; a method_55380 numberFormatOrDefault + m (Z)V a method_55381 setDisplayAutoUpdate + m ()Ljava/lang/String; b method_1113 getName + m (Lyp;)V b method_55382 setNumberFormat + m ()Leyj; c method_1116 getCriteria + m ()Lwz; d method_1114 getDisplayName + m ()Z e method_55383 displayAutoUpdate + m ()Lyp; f method_55384 numberFormat + m ()Lwz; g method_1120 getFormattedDisplayName + m ()Leyj$a; h method_1118 getRenderType + m ()Lwz; i method_27441 createFormattedDisplayName + m (Leyg;Ljava/lang/String;Leyj;Lwz;Leyj$a;ZLyp;)V +c exz net/minecraft/class_9011 net/minecraft/world/scores/PlayerScoreEntry + f Ljava/lang/String; a comp_2127 owner + f I b comp_2128 value + f Lwz; c comp_2129 display + f Lyp; d comp_2130 numberFormatOverride + m ()Z a method_55385 isHidden + m (Lyp;)Lxn; a method_55386 formatValue + m ()Lwz; b method_55387 ownerName + m ()Ljava/lang/String; c comp_2127 owner + m ()I d comp_2128 value + m ()Lwz; e comp_2129 display + m ()Lyp; f comp_2130 numberFormatOverride + m (Ljava/lang/String;ILwz;Lyp;)V +c eya net/minecraft/class_9012 net/minecraft/world/scores/PlayerScores + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectOpenHashMap; a field_47529 scores + m ()Z a method_55388 hasScores + m (Lexy;)Leyd; a method_55389 get + m (Lexy;Leyd;)V a method_55390 setScore + m (Lexy;Ljava/util/function/Consumer;)Leyd; a method_55391 getOrCreate + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;Lexy;Leyd;)V a method_55392 method_55392 + m (Ljava/util/function/Consumer;Ljava/lang/Object;)Leyd; a method_55393 method_55393 + m ()Lit/unimi/dsi/fastutil/objects/Object2IntMap; b method_55394 listScores + m (Lexy;)Z b method_55395 remove + m ()Ljava/util/Map; c method_55396 listRawScores + m ()V +c eyb net/minecraft/class_268 net/minecraft/world/scores/PlayerTeam + f I a field_31884 BIT_FRIENDLY_FIRE + f I b field_31885 BIT_SEE_INVISIBLES + f Leyg; c field_1420 scoreboard + f Ljava/lang/String; d field_1421 name + f Ljava/util/Set; e field_1415 players + f Lwz; f field_1414 displayName + f Lwz; g field_1418 playerPrefix + f Lwz; h field_1419 playerSuffix + f Z i field_1417 allowFriendlyFire + f Z j field_1416 seeFriendlyInvisibles + f Leyi$b; k field_1423 nameTagVisibility + f Leyi$b; l field_1422 deathMessageVisibility + f Ln; m field_1424 color + f Leyi$a; n field_1425 collisionRule + f Lxw; o field_24195 displayNameStyle + m ()Leyg; a method_35594 getScoreboard + m (I)V a method_1146 unpackOptions + m (Leyi$a;)V a method_1145 setCollisionRule + m (Leyi$b;)V a method_1149 setNameTagVisibility + m (Leyi;Lwz;)Lxn; a method_1142 formatNameForTeam + m (Ln;)V a method_1141 setColor + m (Lwz;)V a method_1137 setDisplayName + m (Z)V a method_1135 setAllowFriendlyFire + m (Leyi$b;)V b method_1133 setDeathMessageVisibility + m (Lwz;)V b method_1138 setPlayerPrefix + m (Z)V b method_1143 setSeeFriendlyInvisibles + m ()Lwz; c method_1140 getDisplayName + m (Lwz;)V c method_1139 setPlayerSuffix + m ()Lxn; d method_1148 getFormattedDisplayName + m ()Lwz; e method_1144 getPlayerPrefix + m ()Lwz; f method_1136 getPlayerSuffix + m ()I m method_1147 packOptions + m (Leyg;Ljava/lang/String;)V +c eyc net/minecraft/class_9013 net/minecraft/world/scores/ReadOnlyScoreInfo + m ()I a method_55397 value + m (Leyc;Lyp;)Lxn; a method_55398 safeFormatValue + m (Lyp;)Lxn; a method_55399 formatValue + m ()Z b method_1131 isLocked + m ()Lyp; c method_55400 numberFormat +c eyd net/minecraft/class_267 net/minecraft/world/scores/Score + f Ljava/lang/String; a field_47530 TAG_SCORE + f Ljava/lang/String; b field_47531 TAG_LOCKED + f Ljava/lang/String; c field_47532 TAG_DISPLAY + f Ljava/lang/String; d field_47533 TAG_FORMAT + f I e field_47534 value + f Z f field_1411 locked + f Lwz; g field_47535 display + f Lyp; h field_47536 numberFormat + m (I)V a method_55401 value + m (Leyd;Lyp;)V a method_55402 method_55402 + m (Ljo$a;)Lub; a method_55408 write + m (Lub;Ljo$a;)Leyd; a method_55403 read + m (Lub;Luy;)V a method_55404 method_55404 + m (Lwz;)V a method_55405 display + m (Z)V a method_1125 setLocked + m (Lyp;)V b method_55406 numberFormat + m ()Lwz; d method_55407 display + m ()V +c eye net/minecraft/class_9014 net/minecraft/world/scores/ScoreAccess + m ()I a method_55409 get + m (I)V a method_55410 set + m (Lwz;)V a method_55411 display + m (Lyp;)V a method_55412 numberFormatOverride + m ()I b method_55413 increment + m (I)I b method_55414 add + m ()V c method_55415 reset + m ()Z d method_55416 locked + m ()V e method_55417 unlock + m ()V f method_55418 lock + m ()Lwz; g method_55419 display +c eyf net/minecraft/class_9015 net/minecraft/world/scores/ScoreHolder + f Ljava/lang/String; a_ field_47537 WILDCARD_NAME + f Leyf; cC field_47538 WILDCARD + m ()Lwz; S_ method_5476 getDisplayName + m (Lcom/mojang/authlib/GameProfile;)Leyf; a method_55420 fromGameProfile + m (Lxw;)Lxw; a method_55421 method_55421 + m (Ljava/lang/String;)Leyf; c method_55422 forNameOnly + m ()Ljava/lang/String; cB method_5820 getScoreboardName + m ()Lwz; gY method_55423 getFeedbackDisplayName + m ()V +c eyf$1 net/minecraft/class_9015$1 net/minecraft/world/scores/ScoreHolder$1 + m ()V +c eyf$2 net/minecraft/class_9015$2 net/minecraft/world/scores/ScoreHolder$2 + f Ljava/lang/String; b field_47539 val$name + f Lwz; c field_47540 val$feedbackName + m (Ljava/lang/String;Lwz;)V +c eyf$3 net/minecraft/class_9015$3 net/minecraft/world/scores/ScoreHolder$3 + f Ljava/lang/String; b field_47541 val$name + m (Ljava/lang/String;)V +c eyg net/minecraft/class_269 net/minecraft/world/scores/Scoreboard + f Ljava/lang/String; a field_47542 HIDDEN_SCORE_PREFIX + f Lorg/slf4j/Logger; b field_36309 LOGGER + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; c field_1428 objectivesByName + f Lit/unimi/dsi/fastutil/objects/Reference2ObjectMap; d field_1429 objectivesByCriteria + f Ljava/util/Map; e field_1431 playerScores + f Ljava/util/Map; f field_1432 displayObjectives + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; g field_1426 teamsByName + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; h field_1427 teamsByPlayer + m (Lbsr;)V a method_1150 entityRemoved + m (Lexx;)Lexy; a method_1189 getDisplayObjective + m (Lexx;Lexy;)V a method_1158 setDisplayObjective + m (Lexy;)V a method_1185 onObjectiveAdded + m (Lexy;Ljava/util/List;Ljava/lang/String;Leya;)V a method_55424 method_55424 + m (Leyb;)V a method_1160 onTeamAdded + m (Leyf;)V a method_1152 onPlayerRemoved + m (Leyf;Lexy;)V a method_55337 onScoreLockChanged + m (Leyf;Lexy;Leyd;)V a method_1176 onScoreChanged + m (Leyf;Lexy;Z)Leye; a method_55425 getOrCreatePlayerScore + m (Leyj;Leyf;Ljava/util/function/Consumer;)V a method_1162 forAllObjectives + m (Ljava/lang/Object;)Ljava/util/List; a method_1179 method_1179 + m (Ljava/lang/String;)Lexy; a method_1170 getObjective + m (Ljava/lang/String;Leyb;)Z a method_1172 addPlayerToTeam + m (Ljava/lang/String;Leyj;Lwz;Leyj$a;ZLyp;)Lexy; a method_1168 addObjective + m (Ljava/util/function/Consumer;Leyf;Lexy;)V a method_1182 method_1182 + m (Ljo$a;)Luh; a method_1169 savePlayerScores + m (Ljo$a;Ljava/lang/String;Luh;Lexy;Leyd;)V a method_55426 method_55426 + m (Ljo$a;Luh;Ljava/lang/String;Leya;)V a method_55428 method_55428 + m (Lorg/apache/commons/lang3/mutable/MutableBoolean;Leyd;)V a method_55427 method_55427 + m (Luh;Ljo$a;)V a method_1188 loadPlayerScores + m (Lexy;)V b method_1175 onObjectiveChanged + m (Leyb;)V b method_1154 onTeamChanged + m (Leyf;)V b method_55429 resetAllPlayerScores + m (Leyf;Lexy;)V b method_1190 onPlayerScoreRemoved + m (Ljava/lang/String;)Leyb; b method_1153 getPlayerTeam + m (Ljava/lang/String;Leyb;)V b method_1157 removePlayerFromTeam + m ()Ljava/util/Collection; c method_1151 getObjectives + m (Lexy;)V c method_1173 onObjectiveRemoved + m (Leyb;)V c method_1193 onTeamRemoved + m (Leyf;)Lit/unimi/dsi/fastutil/objects/Object2IntMap; c method_1166 listPlayerScores + m (Leyf;Lexy;)Leye; c method_1180 getOrCreatePlayerScore + m (Ljava/lang/String;)Leyb; c method_1171 addPlayerTeam + m ()Ljava/util/Collection; d method_1163 getObjectiveNames + m (Leyb;)V d method_1191 removePlayerTeam + m (Leyf;Lexy;)Leyc; d method_55430 getPlayerScoreInfo + m (Ljava/lang/String;)Z d method_1195 removePlayerFromTeam + m ()Ljava/util/Collection; e method_1178 getTrackedPlayers + m (Leyf;Lexy;)V e method_1155 resetSinglePlayerScore + m (Ljava/lang/String;)Leyb; e method_1164 getPlayersTeam + m ()Ljava/util/Collection; f method_1196 getTeamNames + m (Ljava/lang/String;)Leya; f method_55431 getOrCreatePlayerInfo + m ()Ljava/util/Collection; g method_1159 getPlayerTeams + m (Ljava/lang/String;)Leya; g method_55432 method_55432 + m (Lexy;)Ljava/util/Collection; i method_1184 listPlayerScores + m (Lexy;)V j method_1194 removeObjective + m ()V + m ()V +c eyg$1 net/minecraft/class_269$1 net/minecraft/world/scores/Scoreboard$1 + f Leyd; a field_47543 val$score + f Z b field_47544 val$canModify + f Lorg/apache/commons/lang3/mutable/MutableBoolean; c field_47545 val$requiresSync + f Lexy; d field_47546 val$objective + f Leyf; e field_47547 val$scoreHolder + f Leyg; f field_47548 field_47548 + m (Z)V a method_55433 setLocked + m ()V h method_55434 sendScoreToPlayers + m (Leyg;Leyd;ZLorg/apache/commons/lang3/mutable/MutableBoolean;Lexy;Leyf;)V +c eyh net/minecraft/class_273 net/minecraft/world/scores/ScoreboardSaveData + f Ljava/lang/String; a field_31893 FILE_ID + f Lorg/slf4j/Logger; b field_45181 LOGGER + f Leyg; c field_27936 scoreboard + m (Leyb;Luh;)V a method_1215 loadTeamPlayers + m (Ljava/lang/String;)Leyj; a method_17947 method_17947 + m (Ljo$a;)Luh; a method_1217 saveTeams + m (Lub;)V a method_1221 loadDisplaySlots + m (Lub;Luy;)V a method_55435 method_55435 + m (Luh;Ljo$a;)V a method_1219 loadTeams + m (Ljo$a;)Luh; b method_1216 saveObjectives + m (Lub;)V b method_1222 saveDisplaySlots + m (Lub;Ljo$a;)Leyh; b method_32481 load + m (Luh;Ljo$a;)V b method_1220 loadObjectives + m (Leyg;)V + m ()V +c eyi net/minecraft/class_270 net/minecraft/world/scores/Team + m (Leyi;)Z a method_1206 isAlliedTo + m ()Ljava/lang/String; b method_1197 getName + m (Lwz;)Lxn; d method_1198 getFormattedName + m ()Ljava/util/Collection; g method_1204 getPlayers + m ()Z h method_1205 isAllowFriendlyFire + m ()Z i method_1199 canSeeFriendlyInvisibles + m ()Leyi$b; j method_1201 getNameTagVisibility + m ()Leyi$b; k method_1200 getDeathMessageVisibility + m ()Leyi$a; l method_1203 getCollisionRule + m ()Ln; n method_1202 getColor + m ()V +c eyi$a net/minecraft/class_270$class_271 net/minecraft/world/scores/Team$CollisionRule + f Leyi$a; a field_1437 ALWAYS + f Leyi$a; b field_1435 NEVER + f Leyi$a; c field_1434 PUSH_OTHER_TEAMS + f Leyi$a; d field_1440 PUSH_OWN_TEAM + f Ljava/lang/String; e field_1436 name + f I f field_1433 id + f Ljava/util/Map; g field_1438 BY_NAME + f [Leyi$a; h field_1439 $VALUES + m ()Lwz; a method_1209 getDisplayName + m (Leyi$a;)Leyi$a; a method_1208 method_1208 + m (Ljava/lang/String;)Leyi$a; a method_1210 byName + m ()[Leyi$a; b method_36797 $values + m (Leyi$a;)Ljava/lang/String; b method_1207 method_1207 + m (Ljava/lang/String;ILjava/lang/String;I)V + m ()V +c eyi$b net/minecraft/class_270$class_272 net/minecraft/world/scores/Team$Visibility + f Leyi$b; a field_1442 ALWAYS + f Leyi$b; b field_1443 NEVER + f Leyi$b; c field_1444 HIDE_FOR_OTHER_TEAMS + f Leyi$b; d field_1446 HIDE_FOR_OWN_TEAM + f Ljava/lang/String; e field_1445 name + f I f field_1441 id + f Ljava/util/Map; g field_1447 BY_NAME + f [Leyi$b; h field_1448 $VALUES + m ()[Ljava/lang/String; a method_35595 getAllNames + m (Leyi$b;)Leyi$b; a method_1211 method_1211 + m (Ljava/lang/String;)Leyi$b; a method_1213 byName + m ()Lwz; b method_1214 getDisplayName + m (Leyi$b;)Ljava/lang/String; b method_1212 method_1212 + m ()[Leyi$b; c method_36798 $values + m (Ljava/lang/String;ILjava/lang/String;I)V + m ()V +c eyj net/minecraft/class_274 net/minecraft/world/scores/criteria/ObjectiveCriteria + f Ljava/util/Map; a field_33939 CUSTOM_CRITERIA + f Leyj; b field_1468 DUMMY + f Leyj; c field_1462 TRIGGER + f Leyj; d field_1456 DEATH_COUNT + f Leyj; e field_1463 KILL_COUNT_PLAYERS + f Leyj; f field_1457 KILL_COUNT_ALL + f Leyj; g field_1453 HEALTH + f Leyj; h field_1464 FOOD + f Leyj; i field_1459 AIR + f Leyj; j field_1452 ARMOR + f Leyj; k field_1460 EXPERIENCE + f Leyj; l field_1465 LEVEL + f [Leyj; m field_1466 TEAM_KILL + f [Leyj; n field_1458 KILLED_BY_TEAM + f Ljava/util/Map; o field_1455 CRITERIA_CACHE + f Ljava/lang/String; p field_1454 name + f Z q field_1461 readOnly + f Leyj$a; r field_1467 renderType + m (Lavy;Lakr;)Ljava/util/Optional; a method_1223 getStat + m (Ljava/lang/String;)Ljava/util/Optional; a method_1224 byName + m (Ljava/lang/String;ILavy;)Ljava/util/Optional; a method_17948 method_17948 + m (Ljava/lang/String;ZLeyj$a;)Leyj; a method_37269 registerCustom + m (Ljava/lang/String;)Leyj; b method_37270 registerCustom + m ()Ljava/util/Set; c method_37271 getCustomCriteriaNames + m ()Ljava/lang/String; d method_1225 getName + m ()Z e method_1226 isReadOnly + m ()Leyj$a; f method_1227 getDefaultRenderType + m (Ljava/lang/String;)V + m (Ljava/lang/String;ZLeyj$a;)V + m ()V +c eyj$a net/minecraft/class_274$class_275 net/minecraft/world/scores/criteria/ObjectiveCriteria$RenderType + f Leyj$a; a field_1472 INTEGER + f Leyj$a; b field_1471 HEARTS + f Lazk$a; c field_41683 CODEC + f Ljava/lang/String; d field_1469 id + f [Leyj$a; e field_1473 $VALUES + m ()Ljava/lang/String; a method_1228 getId + m (Ljava/lang/String;)Leyj$a; a method_1229 byId + m ()[Leyj$a; b method_36799 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c eyk net/minecraft/class_6175 net/minecraft/world/scores/criteria/package-info +c eyl net/minecraft/class_6176 net/minecraft/world/scores/package-info +c eym net/minecraft/class_6754 net/minecraft/world/ticks/BlackholeTickAccess + f Leyw; a field_35525 CONTAINER_BLACKHOLE + f Leyp; b field_35526 LEVEL_BLACKHOLE + m ()Leyw; a method_39361 emptyContainer + m ()Leyp; b method_39362 emptyLevelList + m ()V + m ()V +c eym$1 net/minecraft/class_6754$1 net/minecraft/world/ticks/BlackholeTickAccess$1 + m ()V +c eym$2 net/minecraft/class_6754$2 net/minecraft/world/ticks/BlackholeTickAccess$2 + m ()V +c eyn net/minecraft/class_8181 net/minecraft/world/ticks/ContainerSingleItem + m (Lcuq;)V b method_54077 setTheItem + m (I)Lcuq; c method_54078 splitTheItem + m ()Lcuq; f method_54079 getTheItem + m ()Lcuq; h method_54099 removeTheItem +c eyn$a net/minecraft/class_8181$class_9210 net/minecraft/world/ticks/ContainerSingleItem$BlockContainerSingleItem + m ()Ldqh; v method_54080 getContainerBlockEntity +c eyo net/minecraft/class_6755 net/minecraft/world/ticks/LevelChunkTicks + f Ljava/util/Queue; a field_35527 tickQueue + f Ljava/util/List; b field_35528 pendingTicks + f Ljava/util/Set; c field_35529 ticksPerPosition + f Ljava/util/function/BiConsumer; d field_35530 onTickAdded + m (J)V a method_39364 unpack + m (JLjava/util/function/Function;)Luh; a method_39365 save + m (Ljava/util/function/BiConsumer;)V a method_39366 setOnTickAdded + m (Ljava/util/function/Predicate;)V a method_39367 removeIf + m (Luh;Ljava/util/function/Function;Ldcd;)Leyo; a method_39368 load + m ()Leyt; b method_39369 peek + m (Leyt;)V b method_39370 scheduleUnchecked + m ()Leyt; c method_39371 poll + m ()Ljava/util/stream/Stream; d method_39372 getAll + m ()V + m (Ljava/util/List;)V +c eyp net/minecraft/class_6756 net/minecraft/world/ticks/LevelTickAccess + m (Ljd;Ljava/lang/Object;)Z b method_8677 willTickThisTick +c eyq net/minecraft/class_6757 net/minecraft/world/ticks/LevelTicks + f Ljava/util/Comparator; a field_35531 CONTAINER_DRAIN_ORDER + f Ljava/util/function/LongPredicate; b field_35532 tickCheck + f Ljava/util/function/Supplier; c field_35533 profiler + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; d field_35534 allContainers + f Lit/unimi/dsi/fastutil/longs/Long2LongMap; e field_35535 nextTickForContainer + f Ljava/util/Queue; f field_35536 containersToTick + f Ljava/util/Queue; g field_35537 toRunThisTick + f Ljava/util/List; h field_35538 alreadyRunThisTick + f Ljava/util/Set; i field_35539 toRunThisTickSet + f Ljava/util/function/BiConsumer; j field_35540 chunkScheduleUpdater + m (I)Z a method_39373 canScheduleMoreTicks + m (J)V a method_39374 sortContainersToTick + m (JI)V a method_39375 drainContainers + m (JILbnf;)V a method_39376 collectTicks + m (JILjava/util/function/BiConsumer;)V a method_39377 tick + m (Ldcd;)V a method_39378 removeContainer + m (Ldcd;Leyo;)V a method_39379 addContainer + m (Lejj;)V a method_39380 clearArea + m (Lejj;Leyq$a;)V a method_39381 forContainersInArea + m (Lejj;Leyt;)Z a method_48166 method_48166 + m (Lejj;Lkh;)V a method_39383 copyArea + m (Leyo;Leyo;)I a method_39384 method_39384 + m (Leyo;Leyt;)V a method_39385 method_39385 + m (Leyq;Lejj;Lkh;)V a method_48167 copyAreaFrom + m (Lit/unimi/dsi/fastutil/longs/Long2LongOpenHashMap;)V a method_39387 method_39387 + m (Ljava/util/Queue;Leyo;JI)V a method_39389 drainFromCurrentContainer + m (Ljava/util/function/BiConsumer;)V a method_39390 runCollectedTicks + m (Ljava/util/function/Predicate;JLeyo;)V a method_39391 method_39391 + m (Ljava/util/function/Predicate;Ljava/util/List;JLeyo;)V a method_48169 method_48169 + m (Lkh;JJLeyt;)V a method_48168 method_48168 + m ()V b method_39392 rescheduleLeftoverContainers + m (Lejj;Leyt;)Z b method_39382 method_39382 + m (Leyt;)V b method_39393 updateContainerScheduling + m ()V c method_39394 cleanupAfterTick + m (Leyt;)V c method_39395 scheduleForThisTick + m ()V d method_39396 calculateTickSetIfNeeded + m (Ljava/util/function/LongPredicate;Ljava/util/function/Supplier;)V + m ()V +c eyq$a net/minecraft/class_6757$class_6758 net/minecraft/world/ticks/LevelTicks$PosAndContainerConsumer +c eyr net/minecraft/class_4296 net/minecraft/world/ticks/ProtoChunkTicks + f Ljava/util/List; a field_19275 ticks + f Ljava/util/Set; b field_35541 ticksPerPosition + m (Leys;)V a method_39397 schedule + m (Luh;Ljava/util/function/Function;Ldcd;)Leyr; a method_39398 load + m ()Ljava/util/List; b method_39399 scheduledTicks + m ()V +c eys net/minecraft/class_6759 net/minecraft/world/ticks/SavedTick + f Lit/unimi/dsi/fastutil/Hash$Strategy; a field_35542 UNIQUE_TICK_HASH + f Ljava/lang/Object; b comp_248 type + f Ljd; c comp_249 pos + f I d comp_250 delay + f Leyx; e comp_251 priority + f Ljava/lang/String; f field_35543 TAG_ID + f Ljava/lang/String; g field_35544 TAG_X + f Ljava/lang/String; h field_35545 TAG_Y + f Ljava/lang/String; i field_35546 TAG_Z + f Ljava/lang/String; j field_35547 TAG_DELAY + f Ljava/lang/String; k field_35548 TAG_PRIORITY + m ()Ljava/lang/Object; a comp_248 type + m (JJ)Leyt; a method_39400 unpack + m (JLjava/util/function/Consumer;Leys;)V a method_39405 method_39405 + m (Leyt;Ljava/util/function/Function;J)Lub; a method_39401 saveTick + m (Ljava/lang/Object;Ljd;)Leys; a method_39402 probe + m (Ljava/lang/String;Ljd;ILeyx;)Lub; a method_39403 saveTick + m (Ljava/util/function/Function;)Lub; a method_39404 save + m (Lub;Ljava/lang/Object;)Leys; a method_40558 method_40558 + m (Lub;Ljava/util/function/Function;)Ljava/util/Optional; a method_40559 loadTick + m (Luh;Ljava/util/function/Function;Ldcd;Ljava/util/function/Consumer;)V a method_39406 loadTickList + m ()Ljd; b comp_249 pos + m ()I c comp_250 delay + m ()Leyx; d comp_251 priority + m (Ljava/lang/Object;Ljd;ILeyx;)V + m ()V +c eys$1 net/minecraft/class_6759$1 net/minecraft/world/ticks/SavedTick$1 + m (Leys;)I a method_39407 hashCode + m (Leys;Leys;)Z a method_39408 equals + m ()V +c eyt net/minecraft/class_6760 net/minecraft/world/ticks/ScheduledTick + f Ljava/util/Comparator; a field_35549 DRAIN_ORDER + f Ljava/util/Comparator; b field_35550 INTRA_TICK_DRAIN_ORDER + f Lit/unimi/dsi/fastutil/Hash$Strategy; c field_35551 UNIQUE_TICK_HASH + f Ljava/lang/Object; d comp_252 type + f Ljd; e comp_253 pos + f J f comp_254 triggerTick + f Leyx; g comp_255 priority + f J h comp_256 subTickOrder + m ()Ljava/lang/Object; a comp_252 type + m (Leyt;Leyt;)I a method_39409 method_39409 + m (Ljava/lang/Object;Ljd;)Leyt; a method_39410 probe + m ()Ljd; b comp_253 pos + m (Leyt;Leyt;)I b method_39412 method_39412 + m ()J c comp_254 triggerTick + m ()Leyx; d comp_255 priority + m ()J e comp_256 subTickOrder + m (Ljava/lang/Object;Ljd;JJ)V + m (Ljava/lang/Object;Ljd;JLeyx;J)V + m ()V +c eyt$1 net/minecraft/class_6760$1 net/minecraft/world/ticks/ScheduledTick$1 + m (Leyt;)I a method_39413 hashCode + m (Leyt;Leyt;)Z a method_39414 equals + m ()V +c eyu net/minecraft/class_6761 net/minecraft/world/ticks/SerializableTickContainer + m (JLjava/util/function/Function;)Luy; b method_20463 save +c eyv net/minecraft/class_6762 net/minecraft/world/ticks/TickAccess + m ()I a method_20825 count + m (Leyt;)V a method_39363 schedule + m (Ljd;Ljava/lang/Object;)Z a method_8674 hasScheduledTick +c eyw net/minecraft/class_6763 net/minecraft/world/ticks/TickContainerAccess +c eyx net/minecraft/class_1953 net/minecraft/world/ticks/TickPriority + f Leyx; a field_9315 EXTREMELY_HIGH + f Leyx; b field_9313 VERY_HIGH + f Leyx; c field_9310 HIGH + f Leyx; d field_9314 NORMAL + f Leyx; e field_9316 LOW + f Leyx; f field_9309 VERY_LOW + f Leyx; g field_9311 EXTREMELY_LOW + f I h field_9308 value + f [Leyx; i field_9312 $VALUES + m ()I a method_8681 getValue + m (I)Leyx; a method_8680 byValue + m ()[Leyx; b method_36697 $values + m (Ljava/lang/String;II)V + m ()V +c eyy net/minecraft/class_3235 net/minecraft/world/ticks/WorldGenTickAccess + f Ljava/util/function/Function; a field_35552 containerGetter + m (Ljava/util/function/Function;)V +c eyz net/minecraft/class_6764 net/minecraft/world/ticks/package-info +c eza net/minecraft/class_3673 com/mojang/blaze3d/Blaze3D + m ()V a method_15973 youJustLostTheGame + m (Lezu;F)V a method_35596 process + m ()D b method_15974 getTime + m (Lezu;F)V b method_35597 render + m ()V +c ezb net/minecraft/class_6177 com/mojang/blaze3d/DontObfuscate +c ezc net/minecraft/class_6178 com/mojang/blaze3d/FieldsAreNonnullByDefault +c ezd net/minecraft/class_6179 com/mojang/blaze3d/MethodsReturnNonnullByDefault +c eze net/minecraft/class_4224 com/mojang/blaze3d/audio/Channel + f I a field_31894 BUFFER_DURATION_SECONDS + f Lorg/slf4j/Logger; b field_18892 LOGGER + f I c field_31895 QUEUED_BUFFER_COUNT + f I d field_18893 source + f Ljava/util/concurrent/atomic/AtomicBoolean; e field_18894 initialized + f I f field_18895 streamingBufferSize + f Lgut; g field_18896 stream + m ()Leze; a method_19638 create + m (F)V a method_19639 setPitch + m (I)V a method_19640 pumpBuffers + m (Lexc;)V a method_19641 setSelfPosition + m (Lezj;)V a method_19642 attachStaticBuffer + m (Lgut;)V a method_19643 attachBufferStream + m (Ljavax/sound/sampled/AudioFormat;I)I a method_19644 calculateBufferSize + m (Z)V a method_19645 setLooping + m ()V b method_19646 destroy + m (F)V b method_19647 setVolume + m (I)V b method_19648 method_19648 + m (Z)V b method_19649 setRelative + m ()V c method_19650 play + m (F)V c method_19651 linearAttenuation + m (I)V c method_19652 method_19652 + m ()V d method_19653 pause + m ()V e method_19654 unpause + m ()V f method_19655 stop + m ()Z g method_35598 playing + m ()Z h method_19656 stopped + m ()V i method_19657 disableAttenuation + m ()V j method_19658 updateStream + m ()I k method_19659 getState + m ()I l method_19660 removeProcessedBuffers + m (I)V + m ()V +c ezf net/minecraft/class_4225 com/mojang/blaze3d/audio/Library + f Lorg/slf4j/Logger; a field_18897 LOGGER + f I b field_34945 NO_DEVICE + f I c field_31897 DEFAULT_CHANNEL_COUNT + f J d field_18898 currentDevice + f J e field_18899 context + f Z f field_34946 supportsDisconnections + f Ljava/lang/String; g field_34947 defaultDeviceName + f Lezf$a; h field_19183 EMPTY + f Lezf$a; i field_19184 staticChannels + f Lezf$a; j field_19185 streamingChannels + f Lezg; k field_18902 listener + m ()Ljava/lang/String; a method_38500 getDefaultDeviceName + m (Leze;)V a method_19662 releaseChannel + m (Lezf$c;)Leze; a method_19663 acquireChannel + m (Ljava/lang/String;)J a method_38501 openDeviceOrFallback + m (Ljava/lang/String;Z)V a method_19661 init + m (Z)V a method_41711 setHrtf + m ()Ljava/lang/String; b method_38722 getCurrentDeviceName + m (Ljava/lang/String;)Ljava/util/OptionalLong; b method_20050 tryOpenDevice + m ()Z c method_38723 hasDefaultDeviceChanged + m ()V d method_19664 cleanup + m ()Lezg; e method_19665 getListener + m ()Ljava/lang/String; f method_20296 getDebugString + m ()Ljava/util/List; g method_38502 getAvailableSoundDevices + m ()Z h method_38724 isCurrentDeviceDisconnected + m ()I i method_20297 getChannelCount + m ()V + m ()V +c ezf$1 net/minecraft/class_4225$1 com/mojang/blaze3d/audio/Library$1 + m ()V +c ezf$a net/minecraft/class_4225$class_4276 com/mojang/blaze3d/audio/Library$ChannelPool + m ()Leze; a method_19666 acquire + m (Leze;)Z a method_19667 release + m ()V b method_19668 cleanup + m ()I c method_20298 getMaxCount + m ()I d method_20299 getUsedCount +c ezf$b net/minecraft/class_4225$class_4226 com/mojang/blaze3d/audio/Library$CountingChannelPool + f I a field_18903 limit + f Ljava/util/Set; b field_18904 activeChannels + m (I)V +c ezf$c net/minecraft/class_4225$class_4105 com/mojang/blaze3d/audio/Library$Pool + f Lezf$c; a field_18352 STATIC + f Lezf$c; b field_18353 STREAMING + f [Lezf$c; c field_18354 $VALUES + m ()[Lezf$c; a method_36800 $values + m (Ljava/lang/String;I)V + m ()V +c ezg net/minecraft/class_4227 com/mojang/blaze3d/audio/Listener + f F a field_18906 gain + f Lezh; b field_47670 transform + m ()F a method_19669 getGain + m (F)V a method_19670 setGain + m (Lezh;)V a method_55584 setTransform + m ()V b method_19673 reset + m ()Lezh; c method_55585 getTransform + m ()V +c ezh net/minecraft/class_9054 com/mojang/blaze3d/audio/ListenerTransform + f Lezh; a field_47671 INITIAL + f Lexc; b comp_2165 position + f Lexc; c comp_2166 forward + f Lexc; d comp_2167 up + m ()Lexc; a method_55586 right + m ()Lexc; b comp_2165 position + m ()Lexc; c comp_2166 forward + m ()Lexc; d comp_2167 up + m (Lexc;Lexc;Lexc;)V + m ()V +c ezi net/minecraft/class_4230 com/mojang/blaze3d/audio/OpenAlUtil + f Lorg/slf4j/Logger; a field_18915 LOGGER + m (I)Ljava/lang/String; a method_19683 alErrorToString + m (JLjava/lang/String;)Z a method_20051 checkALCError + m (Ljava/lang/String;)Z a method_19684 checkALError + m (Ljavax/sound/sampled/AudioFormat;)I a method_19685 audioFormatToOpenAl + m (I)Ljava/lang/String; b method_20052 alcErrorToString + m ()V + m ()V +c ezj net/minecraft/class_4231 com/mojang/blaze3d/audio/SoundBuffer + f Ljava/nio/ByteBuffer; a field_18916 data + f Ljavax/sound/sampled/AudioFormat; b field_18917 format + f Z c field_18918 hasAlBuffer + f I d field_18919 alBuffer + m ()Ljava/util/OptionalInt; a method_19686 getAlBuffer + m ()V b method_19687 discardAlBuffer + m ()Ljava/util/OptionalInt; c method_19688 releaseAlBuffer + m (Ljava/nio/ByteBuffer;Ljavax/sound/sampled/AudioFormat;)V +c ezk net/minecraft/class_6180 com/mojang/blaze3d/audio/package-info +c ezl net/minecraft/class_379 com/mojang/blaze3d/font/GlyphInfo + m ()F a method_16799 getBoldOffset + m (Z)F a method_16798 getAdvance + m ()F b method_16800 getShadowOffset +c ezl$a net/minecraft/class_379$class_7167 com/mojang/blaze3d/font/GlyphInfo$SpaceGlyphInfo +c ezm net/minecraft/class_390 com/mojang/blaze3d/font/GlyphProvider + f F a field_48382 BASELINE + m ()Lit/unimi/dsi/fastutil/ints/IntSet; a method_27442 getSupportedGlyphs + m (I)Lezl; a method_2040 getGlyph +c ezm$a net/minecraft/class_390$class_9241 com/mojang/blaze3d/font/GlyphProvider$Conditional + f Lezm; a comp_2348 provider + f Lflc$a; b comp_2349 filter + m ()Lezm; a comp_2348 provider + m ()Lflc$a; b comp_2349 filter + m (Lezm;Lflc$a;)V +c ezn net/minecraft/class_383 com/mojang/blaze3d/font/SheetGlyphInfo + m ()I a method_2031 getPixelWidth + m (II)V a method_2030 upload + m ()I b method_2032 getPixelHeight + m ()Z c method_2033 isColored + m ()F d method_2035 getOversample + m ()F e method_2034 getLeft + m ()F f method_2027 getRight + m ()F g method_2028 getTop + m ()F h method_2029 getBottom + m ()F i method_56129 getBearingLeft + m ()F j method_56130 getBearingTop +c ezo net/minecraft/class_7166 com/mojang/blaze3d/font/SpaceProvider + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; b field_37842 glyphs + m (Ljava/lang/Float;)F a method_41714 method_41714 + m (Ljava/lang/Integer;Ljava/lang/Float;)V a method_41716 method_41716 + m (Ljava/util/Map;)V +c ezo$a net/minecraft/class_7166$class_8554 com/mojang/blaze3d/font/SpaceProvider$Definition + f Lcom/mojang/serialization/MapCodec; a field_44791 CODEC + f Ljava/util/Map; c comp_1517 advances + m (Laue;)Lezm; a method_51732 method_51732 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51733 method_51733 + m ()Ljava/util/Map; c comp_1517 advances + m (Ljava/util/Map;)V + m ()V +c ezp net/minecraft/class_395 com/mojang/blaze3d/font/TrueTypeGlyphProvider + f Ljava/nio/ByteBuffer; b field_21839 fontMemory + f Lorg/lwjgl/util/freetype/FT_Face; c field_48383 face + f F d field_2321 oversample + f Lit/unimi/dsi/fastutil/ints/IntSet; e field_2319 skip + m (F)F a method_42397 method_42397 + m ()Lorg/lwjgl/util/freetype/FT_Face; b method_51884 validateFontOpen + m (Ljava/nio/ByteBuffer;Lorg/lwjgl/util/freetype/FT_Face;FFFFLjava/lang/String;)V +c ezp$a net/minecraft/class_395$class_397 com/mojang/blaze3d/font/TrueTypeGlyphProvider$Glyph + f Lezp; a field_2336 field_2336 + f I b field_2338 width + f I c field_2337 height + f F d field_2334 bearingX + f F e field_2333 bearingY + f F f field_2332 advance + f I g field_2335 index + m (Lezp;FFIIFI)V +c ezp$a$1 net/minecraft/class_395$class_397$1 com/mojang/blaze3d/font/TrueTypeGlyphProvider$Glyph$1 + f Lezp$a; a field_37843 field_37843 + m (Lezp$a;)V +c ezq net/minecraft/class_6181 com/mojang/blaze3d/font/package-info +c ezr net/minecraft/class_6182 com/mojang/blaze3d/package-info +c ezs net/minecraft/class_6364 com/mojang/blaze3d/pipeline/MainTarget + f I a field_33724 DEFAULT_WIDTH + f I b field_33725 DEFAULT_HEIGHT + f Lezs$b; l field_33726 DEFAULT_DIMENSIONS + m (Lezs$b;)Z a method_36801 allocateColorAttachment + m (II)V b method_36802 createFrameBuffer + m (Lezs$b;)Z b method_36803 allocateDepthAttachment + m (II)Lezs$b; c method_36804 allocateAttachments + m (II)V + m ()V +c ezs$a net/minecraft/class_6364$class_6365 com/mojang/blaze3d/pipeline/MainTarget$AttachmentState + f Lezs$a; a field_33727 NONE + f Lezs$a; b field_33728 COLOR + f Lezs$a; c field_33729 DEPTH + f Lezs$a; d field_33730 COLOR_DEPTH + f [Lezs$a; e field_33731 VALUES + f [Lezs$a; f field_33732 $VALUES + m ()[Lezs$a; a method_36806 $values + m (Lezs$a;)Lezs$a; a method_36807 with + m (Ljava/lang/String;I)V + m ()V +c ezs$b net/minecraft/class_6364$class_6366 com/mojang/blaze3d/pipeline/MainTarget$Dimension + f I a field_33733 width + f I b field_33734 height + m (II)Ljava/util/List; a method_36808 listWithFallback + m (II)V +c ezt net/minecraft/class_4573 com/mojang/blaze3d/pipeline/RenderCall +c ezu net/minecraft/class_4491 com/mojang/blaze3d/pipeline/RenderPipeline + f Ljava/util/List; a field_20453 renderCalls + f Z b field_31899 isRecording + f I c field_20454 recordingBuffer + f Z d field_31900 isProcessing + f I e field_20455 processedBuffer + f I f field_20456 renderingBuffer + m ()Z a method_35599 canBeginRecording + m (Lezt;)V a method_35600 recordRenderCall + m ()Z b method_35601 beginRecording + m ()V c method_35602 endRecording + m ()Z d method_35603 canBeginProcessing + m ()Z e method_35604 beginProcessing + m ()V f method_35605 processRecordedQueue + m ()V g method_35606 endProcessing + m ()Ljava/util/concurrent/ConcurrentLinkedQueue; h method_35607 startRendering + m ()Ljava/util/concurrent/ConcurrentLinkedQueue; i method_35608 getRecordingQueue + m ()Ljava/util/concurrent/ConcurrentLinkedQueue; j method_35609 getProcessedQueue + m ()V +c ezv net/minecraft/class_276 com/mojang/blaze3d/pipeline/RenderTarget + f I a field_31901 RED_CHANNEL + f I b field_31902 GREEN_CHANNEL + f I c field_1482 width + f I d field_1481 height + f I e field_1480 viewWidth + f I f field_1477 viewHeight + f Z g field_1478 useDepth + f I h field_1476 frameBufferId + f I i field_1475 colorTextureId + f I j field_1474 depthBufferId + f I k field_1483 filterMode + f I l field_31903 BLUE_CHANNEL + f I m field_31904 ALPHA_CHANNEL + f [F n field_1479 clearChannels + m ()V a method_1238 destroyBuffers + m (FFFF)V a method_1236 setClearColor + m (I)V a method_58226 setFilterMode + m (II)V a method_1237 blitToScreen + m (IIZ)V a method_1234 resize + m (IZ)V a method_1232 setFilterMode + m (Lezv;)V a method_29329 copyDepthFrom + m (Z)V a method_1235 bindWrite + m ()V b method_1239 checkStatus + m (IIZ)V b method_1231 createBuffers + m (Z)V b method_1230 clear + m ()V c method_35610 bindRead + m (IIZ)V c method_22594 blitToScreen + m (Z)V c method_22595 _bindWrite + m ()V d method_1242 unbindRead + m (IIZ)V d method_22596 _resize + m (Z)V d method_22597 method_22597 + m ()V e method_1240 unbindWrite + m (IIZ)V e method_1233 _blitToScreen + m ()I f method_30277 getColorTextureId + m (IIZ)V f method_22600 method_22600 + m ()I g method_30278 getDepthTextureId + m ()V h method_22598 method_22598 + m ()[F i method_36809 method_36809 + m (Z)V +c ezw net/minecraft/class_6367 com/mojang/blaze3d/pipeline/TextureTarget + m (IIZZ)V +c ezx net/minecraft/class_6183 com/mojang/blaze3d/pipeline/package-info +c ezy net/minecraft/class_3674 com/mojang/blaze3d/platform/ClipboardManager + f I a field_31905 FORMAT_UNAVAILABLE + f Ljava/nio/ByteBuffer; b field_16236 clipboardScratchBuffer + m (JLjava/lang/String;)V a method_15979 setClipboard + m (JLjava/nio/ByteBuffer;[B)V a method_15978 pushClipboard + m (JLorg/lwjgl/glfw/GLFWErrorCallbackI;)Ljava/lang/String; a method_15977 getClipboard + m ()V +c ezz net/minecraft/class_301 com/mojang/blaze3d/platform/DebugMemoryUntracker + f Ljava/lang/invoke/MethodHandle; a field_1643 UNTRACK + m ()Ljava/lang/invoke/MethodHandle; a method_1408 method_1408 + m (J)V a method_1407 untrack + m (Lorg/lwjgl/system/Pointer;)V a method_1406 untrack + m ()V + m ()V +c faa net/minecraft/class_543 com/mojang/blaze3d/platform/DisplayData + f I a field_3285 width + f I b field_3284 height + f Ljava/util/OptionalInt; c field_3282 fullscreenWidth + f Ljava/util/OptionalInt; d field_3286 fullscreenHeight + f Z e field_3283 isFullscreen + m (IILjava/util/OptionalInt;Ljava/util/OptionalInt;Z)V +c fab net/minecraft/class_1008 com/mojang/blaze3d/platform/GlDebug + f Lorg/slf4j/Logger; a field_4921 LOGGER + f I b field_33669 CIRCULAR_LOG_SIZE + f Ljava/util/Queue; c field_33670 MESSAGE_BUFFER + f Lfab$a; d field_33671 lastEntry + f Ljava/util/List; e field_4915 DEBUG_LEVELS + f Ljava/util/List; f field_4919 DEBUG_LEVELS_ARB + f Z g field_33672 debugEnabled + m ()Ljava/util/List; a method_36478 getLastOpenGlDebugMessages + m (I)Ljava/lang/String; a method_4222 sourceToString + m (IIIIIJJ)V a method_4224 printDebugLog + m (IZ)V a method_4227 enableDebugCallback + m ()Z b method_36479 isDebugEnabled + m (I)Ljava/lang/String; b method_4228 typeToString + m (I)Ljava/lang/String; c method_4226 severityToString + m (I)Ljava/lang/String; d method_4225 printUnknownToken + m ()V + m ()V +c fab$a net/minecraft/class_1008$class_6359 com/mojang/blaze3d/platform/GlDebug$LogEntry + f I a field_33673 id + f I b field_33674 source + f I c field_33675 type + f I d field_33676 severity + f Ljava/lang/String; e field_33677 message + f I f field_33678 count + m (IIIILjava/lang/String;)Z a method_36480 isSame + m (IIIILjava/lang/String;)V +c fac net/minecraft/class_4494 com/mojang/blaze3d/platform/GlUtil + m ()Ljava/lang/String; a method_22088 getVendor + m (I)Ljava/nio/ByteBuffer; a method_35611 allocateMemory + m (Ljava/nio/Buffer;)V a method_35613 freeMemory + m ()Ljava/lang/String; b method_22089 getCpuInfo + m ()Ljava/lang/String; c method_22090 getRenderer + m ()Ljava/lang/String; d method_22091 getOpenGLVersion + m ()V +c fad net/minecraft/class_8518 com/mojang/blaze3d/platform/IconSet + f Lfad; a field_44650 RELEASE + f Lfad; b field_44651 SNAPSHOT + f [Ljava/lang/String; c field_44652 path + f [Lfad; d field_44653 $VALUES + m ()[Lfad; a method_51417 $values + m (Lasq;)Ljava/util/List; a method_51418 getStandardIcons + m (Lasq;Ljava/lang/String;)Latw; a method_51419 getFile + m (Lasq;)Latw; b method_51420 getMacIcon + m (Ljava/lang/String;I[Ljava/lang/String;)V + m ()V +c fae net/minecraft/class_3675 com/mojang/blaze3d/platform/InputConstants + f I A field_31906 KEY_Q + f I B field_31907 KEY_R + f I C field_31908 KEY_S + f I D field_31909 KEY_T + f I E field_31910 KEY_U + f I F field_31911 KEY_V + f I G field_31912 KEY_W + f I H field_31913 KEY_X + f I I field_31914 KEY_Y + f I J field_31915 KEY_Z + f I K field_31916 KEY_F1 + f I L field_31917 KEY_F2 + f I M field_31918 KEY_F3 + f I N field_31919 KEY_F4 + f I O field_31920 KEY_F5 + f I P field_31921 KEY_F6 + f I Q field_31922 KEY_F7 + f I R field_31923 KEY_F8 + f I S field_31924 KEY_F9 + f I T field_31925 KEY_F10 + f I U field_31926 KEY_F11 + f I V field_31927 KEY_F12 + f I W field_31928 KEY_F13 + f I X field_31929 KEY_F14 + f I Y field_31930 KEY_F15 + f I Z field_31931 KEY_F16 + f I aA field_31932 KEY_UP + f I aB field_31933 KEY_ADD + f I aC field_31934 KEY_APOSTROPHE + f I aD field_31935 KEY_BACKSLASH + f I aE field_31936 KEY_COMMA + f I aF field_31937 KEY_EQUALS + f I aG field_31938 KEY_GRAVE + f I aH field_31939 KEY_LBRACKET + f I a field_31940 KEY_0 + f I aI field_31941 KEY_MINUS + f I aJ field_31942 KEY_MULTIPLY + f I aK field_31943 KEY_PERIOD + f I aL field_31944 KEY_RBRACKET + f I aM field_31945 KEY_SEMICOLON + f I aN field_31946 KEY_SLASH + f I aO field_31947 KEY_SPACE + f I aP field_31948 KEY_TAB + f I aQ field_31949 KEY_LALT + f I aR field_31950 KEY_LCONTROL + f I aS field_31951 KEY_LSHIFT + f I aT field_31952 KEY_LWIN + f I aU field_31953 KEY_RALT + f I aV field_31954 KEY_RCONTROL + f I aW field_31955 KEY_RSHIFT + f I aX field_31956 KEY_RWIN + f I aY field_31957 KEY_RETURN + f I aZ field_31958 KEY_ESCAPE + f I aa field_31959 KEY_F17 + f I ab field_31960 KEY_F18 + f I ac field_31961 KEY_F19 + f I ad field_31962 KEY_F20 + f I ae field_31963 KEY_F21 + f I af field_31964 KEY_F22 + f I ag field_31965 KEY_F23 + f I ah field_31966 KEY_F24 + f I ai field_31967 KEY_F25 + f I aj field_31968 KEY_NUMLOCK + f I ak field_31969 KEY_NUMPAD0 + f I al field_31970 KEY_NUMPAD1 + f I am field_31971 KEY_NUMPAD2 + f I an field_31972 KEY_NUMPAD3 + f I ao field_31973 KEY_NUMPAD4 + f I ap field_31974 KEY_NUMPAD5 + f I aq field_31975 KEY_NUMPAD6 + f I ar field_31976 KEY_NUMPAD7 + f I as field_31977 KEY_NUMPAD8 + f I at field_31978 KEY_NUMPAD9 + f I au field_31979 KEY_NUMPADCOMMA + f I av field_31980 KEY_NUMPADENTER + f I aw field_31981 KEY_NUMPADEQUALS + f I ax field_31982 KEY_DOWN + f I ay field_31983 KEY_LEFT + f I az field_31984 KEY_RIGHT + f I b field_31985 KEY_1 + f I ba field_31986 KEY_BACKSPACE + f I bb field_31987 KEY_DELETE + f I bc field_31988 KEY_END + f I bd field_31989 KEY_HOME + f I be field_31990 KEY_INSERT + f I bf field_31991 KEY_PAGEDOWN + f I bg field_31992 KEY_PAGEUP + f I bh field_31993 KEY_CAPSLOCK + f I bi field_31994 KEY_PAUSE + f I bj field_31995 KEY_SCROLLLOCK + f I bk field_31996 KEY_PRINTSCREEN + f I bl field_31997 PRESS + f I bm field_31998 RELEASE + f I bn field_31999 REPEAT + f I bo field_32000 MOUSE_BUTTON_LEFT + f I bp field_32001 MOUSE_BUTTON_MIDDLE + f I bq field_32002 MOUSE_BUTTON_RIGHT + f I br field_32003 MOD_CONTROL + f I bs field_32004 CURSOR + f I bt field_32005 CURSOR_DISABLED + f I bu field_32006 CURSOR_NORMAL + f Lfae$a; bv field_16237 UNKNOWN + f Ljava/lang/invoke/MethodHandle; bw field_20333 GLFW_RAW_MOUSE_MOTION_SUPPORTED + f I bx field_20334 GLFW_RAW_MOUSE_MOTION + f I c field_32007 KEY_2 + f I d field_32008 KEY_3 + f I e field_32009 KEY_4 + f I f field_32010 KEY_5 + f I g field_32011 KEY_6 + f I h field_32012 KEY_7 + f I i field_32013 KEY_8 + f I j field_32014 KEY_9 + f I k field_32015 KEY_A + f I l field_32016 KEY_B + f I m field_32017 KEY_C + f I n field_32018 KEY_D + f I o field_32019 KEY_E + f I p field_32020 KEY_F + f I q field_32021 KEY_G + f I r field_32022 KEY_H + f I s field_32023 KEY_I + f I t field_32024 KEY_J + f I u field_32025 KEY_K + f I v field_32026 KEY_L + f I w field_32027 KEY_M + f I x field_32028 KEY_N + f I y field_32029 KEY_O + f I z field_32030 KEY_P + m ()Z a method_21735 isRawMouseInputSupported + m (II)Lfae$a; a method_15985 getKey + m (JI)Z a method_15987 isKeyDown + m (JIDD)V a method_15984 grabOrReleaseMouse + m (JLorg/lwjgl/glfw/GLFWCursorPosCallbackI;Lorg/lwjgl/glfw/GLFWMouseButtonCallbackI;Lorg/lwjgl/glfw/GLFWScrollCallbackI;Lorg/lwjgl/glfw/GLFWDropCallbackI;)V a method_15983 setupMouseCallbacks + m (JLorg/lwjgl/glfw/GLFWKeyCallbackI;Lorg/lwjgl/glfw/GLFWCharModsCallbackI;)V a method_15986 setupKeyboardCallbacks + m (JZ)V a method_21736 updateRawMouseInput + m (Ljava/lang/String;)Lfae$a; a method_15981 getKey + m ()V + m ()V +c fae$a net/minecraft/class_3675$class_306 com/mojang/blaze3d/platform/InputConstants$Key + f Ljava/lang/String; a field_1663 name + f Lfae$b; b field_1666 type + f I c field_1665 value + f Layi; d field_24196 displayName + f Ljava/util/Map; e field_1664 NAME_MAP + m ()Lfae$b; a method_1442 getType + m (Lfae$b;ILjava/lang/String;)Lwz; a method_27444 method_27444 + m ()I b method_1444 getValue + m ()Ljava/lang/String; c method_1441 getName + m ()Lwz; d method_27445 getDisplayName + m ()Ljava/util/OptionalInt; e method_30103 getNumericKeyValue + m (Ljava/lang/String;Lfae$b;I)V + m ()V +c fae$b net/minecraft/class_3675$class_307 com/mojang/blaze3d/platform/InputConstants$Type + f Lfae$b; a field_1668 KEYSYM + f Lfae$b; b field_1671 SCANCODE + f Lfae$b; c field_1672 MOUSE + f Ljava/lang/String; d field_44919 KEY_KEYBOARD_UNKNOWN + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; e field_1674 map + f Ljava/lang/String; f field_1673 defaultPrefix + f Ljava/util/function/BiFunction; g field_24197 displayTextSupplier + f [Lfae$b; h field_1670 $VALUES + m ()[Lfae$b; a method_36810 $values + m (I)Lfae$a; a method_1447 getOrCreate + m (Lfae$b;Ljava/lang/String;I)V a method_1446 addKey + m (Ljava/lang/Integer;Ljava/lang/String;)Lwz; a method_27447 method_27447 + m (I)Lfae$a; b method_27448 method_27448 + m (Ljava/lang/Integer;Ljava/lang/String;)Lwz; b method_27449 method_27449 + m (Ljava/lang/Integer;Ljava/lang/String;)Lwz; c method_27450 method_27450 + m (Ljava/lang/String;ILjava/lang/String;Ljava/util/function/BiFunction;)V + m ()V +c faf net/minecraft/class_308 com/mojang/blaze3d/platform/Lighting + f Lorg/joml/Vector3f; a field_24426 DIFFUSE_LIGHT_0 + f Lorg/joml/Vector3f; b field_24427 DIFFUSE_LIGHT_1 + f Lorg/joml/Vector3f; c field_24428 NETHER_DIFFUSE_LIGHT_0 + f Lorg/joml/Vector3f; d field_24429 NETHER_DIFFUSE_LIGHT_1 + f Lorg/joml/Vector3f; e field_29567 INVENTORY_DIFFUSE_LIGHT_0 + f Lorg/joml/Vector3f; f field_29568 INVENTORY_DIFFUSE_LIGHT_1 + m ()V a method_1452 setupNetherLevel + m (Lorg/joml/Quaternionf;)V a method_56819 setupForEntityInInventory + m ()V b method_27869 setupLevel + m ()V c method_24210 setupForFlatItems + m ()V d method_24211 setupFor3DItems + m ()V e method_34742 setupForEntityInInventory + m ()V + m ()V +c fag net/minecraft/class_6417 com/mojang/blaze3d/platform/MacosUtil + f I a field_46537 NS_RESIZABLE_WINDOW_MASK + f I b field_34053 NS_FULL_SCREEN_WINDOW_MASK + m (J)V a method_37461 exitNativeFullscreen + m (Latw;)V a method_41718 loadIcon + m (Lca/weblite/objc/NSObject;)Z a method_37462 isInNativeFullscreen + m (J)V b method_54101 clearResizableBit + m (Lca/weblite/objc/NSObject;)J b method_54102 getStyleMask + m (J)Ljava/util/Optional; c method_37463 getNsWindow + m (Lca/weblite/objc/NSObject;)V c method_37464 toggleNativeFullscreen + m (Lca/weblite/objc/NSObject;)V d method_54103 method_54103 + m ()V +c fah net/minecraft/class_313 com/mojang/blaze3d/platform/Monitor + f J a field_1800 monitor + f Ljava/util/List; b field_1797 videoModes + f Lfal; c field_1802 currentMode + f I d field_1799 x + f I e field_1798 y + m ()V a method_1615 refreshVideoModes + m (I)Lfal; a method_1620 getMode + m (Lfal;)I a method_1619 getVideoModeIndex + m (Ljava/util/Optional;)Lfal; a method_1614 getPreferredVidMode + m ()Lfal; b method_1617 getCurrentMode + m ()I c method_1616 getX + m ()I d method_1618 getY + m ()I e method_1621 getModeCount + m ()J f method_1622 getMonitor + m (J)V +c fai net/minecraft/class_3676 com/mojang/blaze3d/platform/MonitorCreator +c faj net/minecraft/class_1011 com/mojang/blaze3d/platform/NativeImage + f Lorg/slf4j/Logger; a field_21684 LOGGER + f Ljava/util/Set; b field_4992 OPEN_OPTIONS + f Lfaj$a; c field_4986 format + f I d field_4991 width + f I e field_4989 height + f Z f field_4990 useStbFree + f J g field_4988 pixels + f J h field_4987 size + m ()I a method_4307 getWidth + m (F)V a method_35620 downloadDepthBuffer + m (II)I a method_4315 getPixelRGBA + m (IIB)V a method_35621 setPixelLuminance + m (III)V a method_4305 setPixelRGBA + m (IIIII)V a method_4326 fillRect + m (IIIIIIIZZ)V a method_4312 upload + m (IIIIIIIZZZZ)V a method_22619 upload + m (IIIIIIZZ)V a method_4304 copyRect + m (IIIILfaj;)V a method_4300 resizeSubRectTo + m (IIIZ)V a method_4301 upload + m (IZ)V a method_4327 downloadTexture + m (Lfaj$a;Ljava/io/InputStream;)Lfaj; a method_4310 read + m (Lfaj$a;Ljava/nio/ByteBuffer;)Lfaj; a method_4303 read + m (Lfaj;)V a method_4317 copyFrom + m (Lfaj;IIIIIIZZ)V a method_47594 copyRect + m (Ljava/io/File;)V a method_4325 writeToFile + m (Ljava/io/InputStream;)Lfaj; a method_4309 read + m (Ljava/nio/ByteBuffer;)Lfaj; a method_4324 read + m (Ljava/nio/channels/WritableByteChannel;)Z a method_24032 writeToChannel + m (Ljava/nio/file/Path;)V a method_4314 writeToFile + m (Ljava/util/function/IntUnaryOperator;)Lfaj; a method_48462 mappedCopy + m (Lorg/lwjgl/util/freetype/FT_Face;I)Z a method_4316 copyFromFont + m (ZZ)V a method_4308 setFilter + m ([B)Lfaj; a method_49277 read + m ()I b method_4323 getHeight + m (II)B b method_35623 getRedOrLuminance + m (III)V b method_35624 blendPixel + m (IIIIIIIZZZZ)V b method_4321 _upload + m (Ljava/util/function/IntUnaryOperator;)V b method_51596 applyToAllPixels + m ()Lfaj$a; c method_4318 format + m (II)B c method_35625 getGreenOrLuminance + m (IIIIIIIZZZZ)V c method_22620 method_22620 + m ()[I d method_48463 getPixelsRGBA + m (II)B d method_35626 getBlueOrLuminance + m ()[I e method_4322 makePixelArray + m (II)B e method_4311 getLuminanceOrAlpha + m ()V f method_35627 drawPixels + m (II)Z f method_36559 isOutsideBounds + m ()[B g method_24036 asByteArray + m ()V h method_4319 flipY + m ()V i method_4302 untrack + m ()V j method_4320 checkAllocated + m (IIZ)V + m (Lfaj$a;IIZ)V + m (Lfaj$a;IIZJ)V + m ()V +c faj$a net/minecraft/class_1011$class_1012 com/mojang/blaze3d/platform/NativeImage$Format + f Lfaj$a; a field_4997 RGBA + f Lfaj$a; b field_5001 RGB + f Lfaj$a; c field_5002 LUMINANCE_ALPHA + f Lfaj$a; d field_4998 LUMINANCE + f I e field_4994 components + f I f field_4993 glFormat + f Z g field_5005 hasRed + f Z h field_5004 hasGreen + f Z i field_5003 hasBlue + f Z j field_5000 hasLuminance + f Z k field_4999 hasAlpha + f I l field_5010 redOffset + f I m field_5009 greenOffset + f I n field_5008 blueOffset + f I o field_5007 luminanceOffset + f I p field_5006 alphaOffset + f Z q field_4996 supportedByStb + f [Lfaj$a; r field_4995 $VALUES + m ()I a method_4335 components + m (I)Lfaj$a; a method_4336 getStbFormat + m ()V b method_4339 setPackPixelStoreState + m ()V c method_4340 setUnpackPixelStoreState + m ()I d method_4333 glFormat + m ()Z e method_35628 hasRed + m ()Z f method_35629 hasGreen + m ()Z g method_35630 hasBlue + m ()Z h method_35631 hasLuminance + m ()Z i method_4329 hasAlpha + m ()I j method_35632 redOffset + m ()I k method_35633 greenOffset + m ()I l method_35634 blueOffset + m ()I m method_35635 luminanceOffset + m ()I n method_4332 alphaOffset + m ()Z o method_35636 hasLuminanceOrRed + m ()Z p method_35637 hasLuminanceOrGreen + m ()Z q method_35638 hasLuminanceOrBlue + m ()Z r method_4337 hasLuminanceOrAlpha + m ()I s method_35639 luminanceOrRedOffset + m ()I t method_35640 luminanceOrGreenOffset + m ()I u method_35641 luminanceOrBlueOffset + m ()I v method_4330 luminanceOrAlphaOffset + m ()Z w method_4338 supportedByStb + m ()[Lfaj$a; x method_36811 $values + m (Ljava/lang/String;IIIZZZZZIIIIIZ)V + m ()V +c faj$b net/minecraft/class_1011$class_1013 com/mojang/blaze3d/platform/NativeImage$InternalGlFormat + f Lfaj$b; a field_5012 RGBA + f Lfaj$b; b field_5011 RGB + f Lfaj$b; c field_33618 RG + f Lfaj$b; d field_33619 RED + f I e field_5015 glFormat + f [Lfaj$b; f field_5014 $VALUES + m ()I a method_4341 glFormat + m ()[Lfaj$b; b method_36812 $values + m (Ljava/lang/String;II)V + m ()V +c faj$c net/minecraft/class_1011$class_1014 com/mojang/blaze3d/platform/NativeImage$WriteCallback + f Ljava/nio/channels/WritableByteChannel; a field_5018 output + f Ljava/io/IOException; b field_5019 exception + m ()V a method_4342 throwIfException + m (Ljava/nio/channels/WritableByteChannel;)V +c fak net/minecraft/class_323 com/mojang/blaze3d/platform/ScreenManager + f Lorg/slf4j/Logger; a field_37266 LOGGER + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; b field_1993 monitors + f Lfai; c field_1991 monitorCreator + m ()V a method_15992 shutdown + m (III)I a method_15991 clamp + m (J)Lfah; a method_1680 getMonitor + m (JI)V a method_1683 onMonitorChange + m (Lfam;)Lfah; a method_1681 findBestMonitor + m (Lfai;)V + m ()V +c fal net/minecraft/class_319 com/mojang/blaze3d/platform/VideoMode + f I a field_1980 width + f I b field_1979 height + f I c field_1978 redBits + f I d field_1977 greenBits + f I e field_1976 blueBits + f I f field_1975 refreshRate + f Ljava/util/regex/Pattern; g field_1981 PATTERN + m ()I a method_1668 getWidth + m (Ljava/lang/String;)Ljava/util/Optional; a method_1665 read + m ()I b method_1669 getHeight + m ()I c method_1666 getRedBits + m ()I d method_1667 getGreenBits + m ()I e method_1672 getBlueBits + m ()I f method_1671 getRefreshRate + m ()Ljava/lang/String; g method_1670 write + m (IIIIII)V + m (Lorg/lwjgl/glfw/GLFWVidMode$Buffer;)V + m (Lorg/lwjgl/glfw/GLFWVidMode;)V + m ()V +c fam net/minecraft/class_1041 com/mojang/blaze3d/platform/Window + f Z A field_16517 vsync + f I a field_52250 BASE_WIDTH + f I b field_52251 BASE_HEIGHT + f Lorg/slf4j/Logger; c field_5178 LOGGER + f Lorg/lwjgl/glfw/GLFWErrorCallback; d field_5190 defaultErrorCallback + f Lfan; e field_5176 eventHandler + f Lfak; f field_5195 screenManager + f J g field_5187 window + f I h field_5175 windowedX + f I i field_5185 windowedY + f I j field_5174 windowedWidth + f I k field_5184 windowedHeight + f Ljava/util/Optional; l field_5193 preferredFullscreenVideoMode + f Z m field_5191 fullscreen + f Z n field_5177 actuallyFullscreen + f I o field_5183 x + f I p field_5198 y + f I q field_5182 width + f I r field_5197 height + f I s field_5181 framebufferWidth + f I t field_5196 framebufferHeight + f I u field_5180 guiScaledWidth + f I v field_5194 guiScaledHeight + f D w field_5179 guiScale + f Ljava/lang/String; x field_5192 errorSection + f Z y field_5186 dirty + f I z field_16238 framerateLimit + m ()Ljava/lang/String; a method_60793 getPlatform + m (D)V a method_15997 setGuiScale + m (I)V a method_15999 setFramerateLimit + m (II)V a method_36813 setWindowed + m (IJ)V a method_4482 defaultErrorCallback + m (IZ)I a method_4476 calculateScale + m (JII)V a method_4478 onMove + m (JZ)V a method_4494 onFocus + m (Lasq;Lfad;)V a method_4491 setIcon + m (Ljava/lang/String;)V a method_4474 setErrorSection + m (Ljava/util/Optional;)V a method_4505 setPreferredFullscreenVideoMode + m (Ljava/util/function/BiConsumer;)V a method_4492 checkGlfwError + m (Z)V a method_4497 updateVsync + m ()I b method_22092 getRefreshRate + m (I)V b method_35642 setWidth + m (IJ)V b method_4501 bootCrash + m (JII)V b method_4504 onFramebufferResize + m (JZ)V b method_30132 onEnter + m (Ljava/lang/String;)V b method_24286 setTitle + m (Z)V b method_21668 updateRawMouseInput + m ()Z c method_22093 shouldClose + m (I)V c method_35643 setHeight + m (JII)V c method_4488 onResize + m (Z)V c method_4485 updateFullscreen + m ()V d method_4513 setDefaultErrorCallback + m ()I e method_16000 getFramerateLimit + m ()V f method_15998 updateDisplay + m ()Ljava/util/Optional; g method_4511 getPreferredFullscreenVideoMode + m ()V h method_4475 changeFullscreenVideoMode + m ()V i method_4500 toggleFullScreen + m ()J j method_4490 getWindow + m ()Z k method_4498 isFullscreen + m ()I l method_4489 getWidth + m ()I m method_4506 getHeight + m ()I n method_4480 getScreenWidth + m ()I o method_4507 getScreenHeight + m ()I p method_4486 getGuiScaledWidth + m ()I q method_4502 getGuiScaledHeight + m ()I r method_4499 getX + m ()I s method_4477 getY + m ()D t method_4495 getGuiScale + m ()Lfah; u method_20831 findBestMonitor + m ()V v method_4481 setBootErrorCallback + m ()V w method_4483 refreshFramebufferSize + m ()V x method_4479 setMode + m (Lfan;Lfak;Lfaa;Ljava/lang/String;Ljava/lang/String;)V + m ()V +c fam$a net/minecraft/class_1041$class_4716 com/mojang/blaze3d/platform/Window$WindowInitFailed + m (Ljava/lang/String;)V +c fan net/minecraft/class_3678 com/mojang/blaze3d/platform/WindowEventHandler + m ()V a method_15993 resizeDisplay + m (Z)V a method_15995 setWindowActive + m ()V b method_30133 cursorEntered +c fao net/minecraft/class_6185 com/mojang/blaze3d/platform/package-info +c fap net/minecraft/class_5913 com/mojang/blaze3d/preprocessor/GlslPreprocessor + f Ljava/lang/String; a field_32036 C_COMMENT + f Ljava/lang/String; b field_33620 LINE_COMMENT + f Ljava/util/regex/Pattern; c field_29200 REGEX_MOJ_IMPORT + f Ljava/util/regex/Pattern; d field_29201 REGEX_VERSION + f Ljava/util/regex/Pattern; e field_33621 REGEX_ENDS_WITH_WHITESPACE + m (Ljava/lang/String;)Ljava/util/List; a method_34229 process + m (Ljava/lang/String;I)Ljava/lang/String; a method_34230 setVersion + m (Ljava/lang/String;Lfap$a;)Ljava/lang/String; a method_34231 processVersions + m (Ljava/lang/String;Lfap$a;Ljava/lang/String;)Ljava/util/List; a method_34232 processImports + m (Ljava/lang/String;Ljava/util/regex/Matcher;)Z a method_36423 isDirectiveEnabled + m (Ljava/lang/String;Ljava/util/regex/Matcher;I)Z a method_36424 isDirectiveDisabled + m (ZLjava/lang/String;)Ljava/lang/String; a method_34233 applyImport + m ()V + m ()V +c fap$a net/minecraft/class_5913$class_5914 com/mojang/blaze3d/preprocessor/GlslPreprocessor$Context + f I a field_29202 glslVersion + f I b field_29203 sourceId + m ()V +c faq net/minecraft/class_6186 com/mojang/blaze3d/preprocessor/package-info +c far net/minecraft/class_278 com/mojang/blaze3d/shaders/AbstractUniform + m (F)V a method_1251 set + m (FF)V a method_1255 set + m (FFF)V a method_1249 set + m (FFFF)V a method_1254 set + m (FFFFFF)V a method_35644 setMat2x3 + m (FFFFFFFF)V a method_35645 setMat2x4 + m (FFFFFFFFF)V a method_35646 setMat3x3 + m (FFFFFFFFFFFF)V a method_35647 setMat3x4 + m (FFFFFFFFFFFFFFFF)V a method_35648 setMat4x4 + m (I)V a method_35649 set + m (II)V a method_35650 set + m (III)V a method_35651 set + m (IIII)V a method_1248 setSafe + m (Lorg/joml/Matrix3f;)V a method_39978 set + m (Lorg/joml/Matrix4f;)V a method_1250 set + m (Lorg/joml/Vector3f;)V a method_34413 set + m (Lorg/joml/Vector4f;)V a method_35652 set + m ([F)V a method_1253 set + m (FFFF)V b method_1252 setSafe + m (FFFFFF)V b method_35653 setMat3x2 + m (FFFFFFFF)V b method_35654 setMat4x2 + m (FFFFFFFFFFFF)V b method_35655 setMat4x3 + m (IIII)V b method_35656 set + m (FFFF)V c method_35657 setMat2x2 + m ()V +c fas net/minecraft/class_277 com/mojang/blaze3d/shaders/BlendMode + f Lfas; a field_1484 lastApplied + f I b field_1491 srcColorFactor + f I c field_1490 srcAlphaFactor + f I d field_1489 dstColorFactor + f I e field_1488 dstAlphaFactor + f I f field_1486 blendFunc + f Z g field_1487 separateBlend + f Z h field_1485 opaque + m ()V a method_1244 apply + m (Ljava/lang/String;)I a method_1247 stringToBlendFunc + m ()Z b method_1245 isOpaque + m (Ljava/lang/String;)I b method_1243 stringToBlendFactor + m (ZZIIIII)V + m ()V + m (III)V + m (IIIII)V +c fat net/minecraft/class_5936 com/mojang/blaze3d/shaders/Effect +c fau net/minecraft/class_5937 com/mojang/blaze3d/shaders/EffectProgram + f Lfap; a field_29329 PREPROCESSOR + f I b field_29330 references + m (Lfat;)V a method_34414 attachToEffect + m (Lfaw$a;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;)Lfau; a method_34415 compileShader + m (Lfaw$a;ILjava/lang/String;)V + m ()V +c fau$1 net/minecraft/class_5937$1 com/mojang/blaze3d/shaders/EffectProgram$1 + m ()V +c fav net/minecraft/class_6854 com/mojang/blaze3d/shaders/FogShape + f Lfav; a field_36350 SPHERE + f Lfav; b field_36351 CYLINDER + f I c field_36352 index + f [Lfav; d field_36353 $VALUES + m ()I a method_40036 getIndex + m ()[Lfav; b method_40037 $values + m (Ljava/lang/String;II)V + m ()V +c faw net/minecraft/class_281 com/mojang/blaze3d/shaders/Program + f I a field_32037 MAX_LOG_LENGTH + f Lfaw$a; b field_1524 type + f Ljava/lang/String; c field_1525 name + f I d field_1523 id + m ()V a method_1282 close + m (Lfaw$a;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;Lfap;)Lfaw; a method_1283 compileShader + m (Lfay;)V a method_1281 attachToShader + m ()Ljava/lang/String; b method_1280 getName + m (Lfaw$a;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;Lfap;)I b method_34416 compileShaderInternal + m ()I c method_34417 getId + m (Lfaw$a;ILjava/lang/String;)V +c faw$a net/minecraft/class_281$class_282 com/mojang/blaze3d/shaders/Program$Type + f Lfaw$a; a field_1530 VERTEX + f Lfaw$a; b field_1531 FRAGMENT + f Ljava/lang/String; c field_1526 name + f Ljava/lang/String; d field_1528 extension + f I e field_1529 glType + f Ljava/util/Map; f field_1527 programs + f [Lfaw$a; g field_1532 $VALUES + m ()Ljava/lang/String; a method_1286 getName + m ()Ljava/lang/String; b method_1284 getExtension + m ()Ljava/util/Map; c method_1289 getPrograms + m ()I d method_1287 getGlType + m ()[Lfaw$a; e method_36815 $values + m (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V + m ()V +c fax net/minecraft/class_285 com/mojang/blaze3d/shaders/ProgramManager + f Lorg/slf4j/Logger; a field_1551 LOGGER + m ()I a method_1306 createProgram + m (I)V a method_22094 glUseProgram + m (Lfay;)V a method_1304 releaseProgram + m (Lfay;)V b method_1307 linkShader + m ()V + m ()V +c fay net/minecraft/class_3679 com/mojang/blaze3d/shaders/Shader + m ()I a method_1270 getId + m ()V b method_1279 markDirty + m ()Lfaw; c method_1274 getVertexProgram + m ()Lfaw; d method_1278 getFragmentProgram + m ()V e method_34418 attachToProgram +c faz net/minecraft/class_284 com/mojang/blaze3d/shaders/Uniform + f I a field_32038 UT_INT1 + f I b field_32039 UT_INT2 + f I c field_32040 UT_INT3 + f I d field_32041 UT_INT4 + f I e field_32042 UT_FLOAT1 + f I f field_32043 UT_FLOAT2 + f I g field_32044 UT_FLOAT3 + f I h field_32045 UT_FLOAT4 + f I i field_32046 UT_MAT2 + f I j field_32047 UT_MAT3 + f I k field_32048 UT_MAT4 + f Lorg/slf4j/Logger; l field_1548 LOGGER + f Z m field_32049 TRANSPOSE_MATRICIES + f I n field_1545 location + f I o field_1544 count + f I p field_1543 type + f Ljava/nio/IntBuffer; q field_1547 intValues + f Ljava/nio/FloatBuffer; r field_1549 floatValues + f Ljava/lang/String; s field_1546 name + f Z t field_1542 dirty + f Lfay; u field_1541 parent + m ()Ljava/lang/String; a method_1298 getName + m (IF)V a method_35659 set + m (IILjava/lang/CharSequence;)V a method_34419 glBindAttribLocation + m (ILjava/lang/CharSequence;)I a method_22096 glGetUniformLocation + m (Ljava/lang/String;)I a method_1299 getTypeFromString + m ()V b method_1300 upload + m (I)V b method_1297 setLocation + m (II)V b method_22095 uploadInteger + m (ILjava/lang/CharSequence;)I b method_22097 glGetAttribLocation + m ()I c method_35660 getLocation + m ()I d method_35661 getCount + m ()I e method_35662 getType + m ()Ljava/nio/IntBuffer; f method_35663 getIntBuffer + m ()Ljava/nio/FloatBuffer; g method_35664 getFloatBuffer + m ()V h method_1302 markDirty + m ()V i method_1303 uploadAsInteger + m ()V j method_1301 uploadAsFloat + m ()V k method_1296 uploadAsMatrix + m (Ljava/lang/String;IILfay;)V + m ()V +c fba net/minecraft/class_6187 com/mojang/blaze3d/shaders/package-info +c fbb net/minecraft/class_7168 com/mojang/blaze3d/systems/TimerQuery + f I a field_37844 nextQueryName + m ()Ljava/util/Optional; a method_41719 getInstance + m ()V b method_41720 beginProfile + m ()Lfbb$a; c method_41721 endProfile + m ()V +c fbb$a net/minecraft/class_7168$class_7169 com/mojang/blaze3d/systems/TimerQuery$FrameProfile + f J a field_37845 NO_RESULT + f J b field_37846 CANCELLED_RESULT + f I c field_37847 queryName + f J d field_37848 result + m ()V a method_41722 cancel + m ()Z b method_41723 isDone + m ()J c method_41724 get + m (I)V +c fbb$b net/minecraft/class_7168$class_7170 com/mojang/blaze3d/systems/TimerQuery$TimerQueryLazyLoader + f Ljava/util/Optional; a field_37849 INSTANCE + m ()Lfbb; a method_41725 instantiate + m ()V + m ()V +c fbc net/minecraft/class_6188 com/mojang/blaze3d/systems/package-info +c fbd net/minecraft/class_287 com/mojang/blaze3d/vertex/BufferBuilder + f J a field_52068 NOT_BUILDING + f J b field_52069 UNKNOWN_ELEMENT + f Z c field_52070 IS_LITTLE_ENDIAN + f Lfbf; d field_52071 buffer + f J e field_52072 vertexPointer + f I f field_1554 vertices + f Lfbn; g field_1565 format + f Lfbn$c; h field_52073 mode + f Z i field_21594 fastFormat + f Z j field_21595 fullFormat + f I k field_52074 vertexSize + f I l field_52075 initialElementsToFill + f [I m field_52076 offsetsByElement + f I n field_52077 elementsToFill + f Z o field_1556 building + m ()Lfbh; a method_60794 build + m (F)B a method_60795 normalIntValue + m (JI)V a method_60797 putRgba + m (Lfbo;)J a method_60798 beginElement + m (SSLfbo;)Lfbm; a method_60799 uvShort + m ()Lfbh; b method_60800 buildOrThrow + m (JI)V b method_60801 putPackedUv + m ()V c method_60802 ensureBuilding + m ()Lfbh; d method_60804 storeMesh + m ()J e method_60805 beginVertex + m ()V f method_60806 endLastVertex + m (Lfbf;Lfbn$c;Lfbn;)V + m ()V +c fbe net/minecraft/class_286 com/mojang/blaze3d/vertex/BufferUploader + f Lfbl; a field_38982 lastImmediateBuffer + m ()V a method_34420 reset + m (Lfbh;)V a method_43433 drawWithShader + m (Lfbl;)V a method_43434 bindImmediateBuffer + m (Lfbn;)Lfbl; a method_43435 bindImmediateBuffer + m ()V b method_43436 invalidate + m (Lfbh;)V b method_43437 draw + m (Lfbh;)V c method_43438 _drawWithShader + m (Lfbh;)Lfbl; d method_43439 upload + m (Lfbh;)V e method_43440 method_43440 + m ()V +c fbf net/minecraft/class_9799 com/mojang/blaze3d/vertex/ByteBufferBuilder + f Lorg/slf4j/Logger; a field_52078 LOGGER + f Lorg/lwjgl/system/MemoryUtil$MemoryAllocator; b field_52079 ALLOCATOR + f I c field_52080 MAX_GROWTH_SIZE + f I d field_52081 BUFFER_FREED_GENERATION + f J e field_52082 pointer + f I f field_52083 capacity + f I g field_52084 writeOffset + f I h field_52085 nextResultOffset + f I i field_52086 resultCount + f I j field_52087 generation + m ()Lfbf$a; a method_60807 build + m (I)J a method_60808 reserve + m ()V b method_60809 clear + m (I)V b method_60810 ensureCapacity + m ()V c method_60811 discard + m (I)V c method_60812 resize + m ()V d method_60813 freeResult + m (I)Z d method_60814 isValid + m ()V e method_60815 discardResults + m ()V f method_60816 checkOpen + m (I)V + m ()V +c fbf$a net/minecraft/class_9799$class_9800 com/mojang/blaze3d/vertex/ByteBufferBuilder$Result + f Lfbf; a field_52088 field_52088 + f I b field_52089 offset + f I c field_52090 capacity + f I d field_52091 generation + f Z e field_52092 closed + m ()Ljava/nio/ByteBuffer; a method_60817 byteBuffer + m (Lfbf;III)V +c fbg net/minecraft/class_290 com/mojang/blaze3d/vertex/DefaultVertexFormat + f Lfbn; a field_29336 BLIT_SCREEN + f Lfbn; b field_1590 BLOCK + f Lfbn; c field_1580 NEW_ENTITY + f Lfbn; d field_1584 PARTICLE + f Lfbn; e field_1592 POSITION + f Lfbn; f field_1576 POSITION_COLOR + f Lfbn; g field_29337 POSITION_COLOR_NORMAL + f Lfbn; h field_21468 POSITION_COLOR_LIGHTMAP + f Lfbn; i field_1585 POSITION_TEX + f Lfbn; j field_1575 POSITION_TEX_COLOR + f Lfbn; k field_20888 POSITION_COLOR_TEX_LIGHTMAP + f Lfbn; l field_1586 POSITION_TEX_LIGHTMAP_COLOR + f Lfbn; m field_1577 POSITION_TEX_COLOR_NORMAL + m ()V + m ()V +c fbh net/minecraft/class_9801 com/mojang/blaze3d/vertex/MeshData + f Lfbf$a; a field_52093 vertexBuffer + f Lfbf$a; b field_52094 indexBuffer + f Lfbh$a; c field_52095 drawState + m ()Ljava/nio/ByteBuffer; a method_60818 vertexBuffer + m (Lfbf;Lfbq;)Lfbh$b; a method_60819 sortQuads + m (Ljava/nio/ByteBuffer;ILfbn;)[Lorg/joml/Vector3f; a method_60820 unpackQuadCentroids + m ()Ljava/nio/ByteBuffer; b method_60821 indexBuffer + m ()Lfbh$a; c method_60822 drawState + m (Lfbf$a;Lfbh$a;)V +c fbh$1 net/minecraft/class_9801$1 com/mojang/blaze3d/vertex/MeshData$1 + f [I a field_27353 $SwitchMap$com$mojang$blaze3d$vertex$VertexFormat$IndexType + m ()V +c fbh$a net/minecraft/class_9801$class_4574 com/mojang/blaze3d/vertex/MeshData$DrawState + f Lfbn; a comp_749 format + f I b comp_750 vertexCount + f I c comp_751 indexCount + f Lfbn$c; d comp_752 mode + f Lfbn$b; e comp_753 indexType + m ()Lfbn; a comp_749 format + m ()I b comp_750 vertexCount + m ()I c comp_751 indexCount + m ()Lfbn$c; d comp_752 mode + m ()Lfbn$b; e comp_753 indexType + m (Lfbn;IILfbn$c;Lfbn$b;)V +c fbh$b net/minecraft/class_9801$class_9802 com/mojang/blaze3d/vertex/MeshData$SortState + f [Lorg/joml/Vector3f; a comp_2840 centroids + f Lfbn$b; b comp_2841 indexType + m ()[Lorg/joml/Vector3f; a comp_2840 centroids + m (JLfbn$b;)Lit/unimi/dsi/fastutil/ints/IntConsumer; a method_60823 indexWriter + m (Lfbf;Lfbq;)Lfbf$a; a method_60824 buildSortedIndexBuffer + m (Lorg/apache/commons/lang3/mutable/MutableLong;I)V a method_60825 method_60825 + m ()Lfbn$b; b comp_2841 indexType + m (Lorg/apache/commons/lang3/mutable/MutableLong;I)V b method_60826 method_60826 + m ([Lorg/joml/Vector3f;Lfbn$b;)V +c fbi net/minecraft/class_4587 com/mojang/blaze3d/vertex/PoseStack + f Ljava/util/Deque; a field_20898 poseStack + m ()V a method_22903 pushPose + m (DDD)V a method_22904 translate + m (FFF)V a method_46416 translate + m (Ljava/util/ArrayDeque;)V a method_22908 method_22908 + m (Lorg/joml/Matrix4f;)V a method_34425 mulPose + m (Lorg/joml/Quaternionf;)V a method_22907 mulPose + m (Lorg/joml/Quaternionf;FFF)V a method_49278 rotateAround + m ()V b method_22909 popPose + m (FFF)V b method_22905 scale + m ()Lfbi$a; c method_23760 last + m ()Z d method_22911 clear + m ()V e method_34426 setIdentity + m ()V +c fbi$a net/minecraft/class_4587$class_4665 com/mojang/blaze3d/vertex/PoseStack$Pose + f Lorg/joml/Matrix4f; a field_21327 pose + f Lorg/joml/Matrix3f; b field_21328 normal + f Z c field_48930 trustedNormals + m ()Lorg/joml/Matrix4f; a method_23761 pose + m (FFFLorg/joml/Vector3f;)Lorg/joml/Vector3f; a method_56820 transformNormal + m (Lorg/joml/Vector3f;Lorg/joml/Vector3f;)Lorg/joml/Vector3f; a method_56821 transformNormal + m ()Lorg/joml/Matrix3f; b method_23762 normal + m ()Lfbi$a; c method_56822 copy + m ()V d method_56823 computeNormalMatrix + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix3f;)V + m (Lfbi$a;)V +c fbj net/minecraft/class_4583 com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator + f Lfbm; a field_20866 delegate + f Lorg/joml/Matrix4f; b field_21053 cameraInversePose + f Lorg/joml/Matrix3f; c field_21054 normalInversePose + f F d field_41091 textureScale + f Lorg/joml/Vector3f; e field_52096 worldPos + f Lorg/joml/Vector3f; f field_52097 normal + f F g field_20870 x + f F h field_20871 y + f F i field_20872 z + m (Lfbm;Lfbi$a;F)V +c fbk net/minecraft/class_289 com/mojang/blaze3d/vertex/Tesselator + f I a field_46841 MAX_BYTES + f Lfbf; b field_52098 buffer + f Lfbk; c field_1573 instance + m ()V a method_54560 init + m (Lfbn$c;Lfbn;)Lfbd; a method_60827 begin + m ()Lfbk; b method_1348 getInstance + m ()V c method_60828 clear + m (I)V + m ()V +c fbl net/minecraft/class_291 com/mojang/blaze3d/vertex/VertexBuffer + f Lfbl$a; a field_44792 usage + f I b field_1594 vertexBufferId + f I c field_27366 indexBufferId + f I d field_29338 arrayObjectId + f Lfbn; e field_29339 format + f Lcom/mojang/blaze3d/systems/RenderSystem$a; f field_38983 sequentialIndices + f Lfbn$b; g field_27367 indexType + f I h field_1593 indexCount + f Lfbn$c; i field_27368 mode + m ()V a method_1353 bind + m (Lfbf$a;)V a method_60829 uploadIndexBuffer + m (Lfbh$a;Ljava/nio/ByteBuffer;)Lfbn; a method_43442 uploadVertexBuffer + m (Lfbh;)V a method_1352 upload + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lgfn;)V a method_34427 drawWithShader + m ()V b method_1354 unbind + m (Lfbh$a;Ljava/nio/ByteBuffer;)Lcom/mojang/blaze3d/systems/RenderSystem$a; b method_43443 uploadIndexBuffer + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lgfn;)V b method_34431 _drawWithShader + m ()V c method_35665 draw + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lgfn;)V c method_34433 method_34433 + m ()Lfbn; d method_34435 getFormat + m ()Z e method_43444 isInvalid + m ()Lfbn$b; f method_43445 getIndexType + m (Lfbl$a;)V +c fbl$a net/minecraft/class_291$class_8555 com/mojang/blaze3d/vertex/VertexBuffer$Usage + f Lfbl$a; a field_44793 STATIC + f Lfbl$a; b field_44794 DYNAMIC + f I c field_44795 id + f [Lfbl$a; d field_44796 $VALUES + m ()[Lfbl$a; a method_51735 $values + m (Ljava/lang/String;II)V + m ()V +c fbm net/minecraft/class_4588 com/mojang/blaze3d/vertex/VertexConsumer + m (FF)Lfbm; a method_22913 setUv + m (FFF)Lfbm; a method_22912 addVertex + m (FFFF)Lfbm; a method_22915 setColor + m (FFFIFFIIFFF)V a method_23919 addVertex + m (I)Lfbm; a method_39415 setColor + m (II)Lfbm; a method_60796 setUv1 + m (IIII)Lfbm; a method_1336 setColor + m (Lfbi$a;FFF)Lfbm; a method_56824 addVertex + m (Lfbi$a;Lgfw;FFFFII)V a method_22919 putBulkData + m (Lfbi$a;Lgfw;[FFFFF[IIZ)V a method_22920 putBulkData + m (Lfbi$a;Lorg/joml/Vector3f;)Lfbm; a method_61032 addVertex + m (Lorg/joml/Matrix4f;FFF)Lfbm; a method_22918 addVertex + m (Lorg/joml/Vector3f;)Lfbm; a method_60830 addVertex + m (FFF)Lfbm; b method_22914 setNormal + m (I)Lfbm; b method_22922 setOverlay + m (II)Lfbm; b method_22921 setUv2 + m (Lfbi$a;FFF)Lfbm; b method_60831 setNormal + m (I)Lfbm; c method_60803 setLight + m (I)Lfbm; d method_60832 setWhiteAlpha +c fbn net/minecraft/class_293 com/mojang/blaze3d/vertex/VertexFormat + f I a field_52099 UNKNOWN_ELEMENT + f Ljava/util/List; b field_1602 elements + f Ljava/util/List; c field_52100 names + f I d field_1600 vertexSize + f I e field_52101 elementsMask + f [I f field_52102 offsetsByElement + f Lfbl; g field_38984 immediateDrawVertexBuffer + m ()Lfbn$a; a method_60833 builder + m (II)I a method_60834 method_60834 + m (Lfbo;)I a method_60835 getOffset + m ()I b method_1362 getVertexSize + m (Lfbo;)Z b method_60836 contains + m ()Ljava/util/List; c method_1357 getElements + m (Lfbo;)Ljava/lang/String; c method_60837 getElementName + m ()Ljava/util/List; d method_34445 getElementAttributeNames + m ()[I e method_60838 getOffsetsByElement + m ()I f method_60839 getElementsMask + m ()V g method_22649 setupBufferState + m ()V h method_22651 clearBufferState + m ()Lfbl; i method_43446 getImmediateDrawVertexBuffer + m ()V j method_34449 _setupBufferState + m ()V k method_34450 _clearBufferState + m (Ljava/util/List;Ljava/util/List;Lit/unimi/dsi/fastutil/ints/IntList;I)V +c fbn$a net/minecraft/class_293$class_9803 com/mojang/blaze3d/vertex/VertexFormat$Builder + f Lcom/google/common/collect/ImmutableMap$Builder; a field_52103 elements + f Lit/unimi/dsi/fastutil/ints/IntList; b field_52104 offsets + f I c field_52105 offset + m ()Lfbn; a method_60840 build + m (I)Lfbn$a; a method_60841 padding + m (Ljava/lang/String;Lfbo;)Lfbn$a; a method_60842 add + m ()V +c fbn$b net/minecraft/class_293$class_5595 com/mojang/blaze3d/vertex/VertexFormat$IndexType + f Lfbn$b; a field_27372 SHORT + f Lfbn$b; b field_27373 INT + f I c field_27374 asGLType + f I d field_27375 bytes + f [Lfbn$b; e field_27376 $VALUES + m ()[Lfbn$b; a method_36816 $values + m (I)Lfbn$b; a method_31972 least + m (Ljava/lang/String;III)V + m ()V +c fbn$c net/minecraft/class_293$class_5596 com/mojang/blaze3d/vertex/VertexFormat$Mode + f Lfbn$c; a field_27377 LINES + f Lfbn$c; b field_27378 LINE_STRIP + f Lfbn$c; c field_29344 DEBUG_LINES + f Lfbn$c; d field_29345 DEBUG_LINE_STRIP + f Lfbn$c; e field_27379 TRIANGLES + f Lfbn$c; f field_27380 TRIANGLE_STRIP + f Lfbn$c; g field_27381 TRIANGLE_FAN + f Lfbn$c; h field_27382 QUADS + f I i field_27383 asGLMode + f I j field_27384 primitiveLength + f I k field_27385 primitiveStride + f Z l field_38878 connectedPrimitives + f [Lfbn$c; m field_27386 $VALUES + m ()[Lfbn$c; a method_36817 $values + m (I)I a method_31973 indexCount + m (Ljava/lang/String;IIIIZ)V + m ()V +c fbo net/minecraft/class_296 com/mojang/blaze3d/vertex/VertexFormatElement + f I a field_52106 MAX_COUNT + f Lfbo; b field_52107 POSITION + f Lfbo; c field_52108 COLOR + f Lfbo; d field_52109 UV0 + f Lfbo; e field_52110 UV + f Lfbo; f field_52111 UV1 + f Lfbo; g field_52112 UV2 + f Lfbo; h field_52113 NORMAL + f I i comp_2842 id + f I j comp_2843 index + f Lfbo$a; k comp_2844 type + f Lfbo$b; l comp_2845 usage + f I m comp_2846 count + f [Lfbo; n field_52114 BY_ID + f Ljava/util/List; o field_52115 ELEMENTS + m ()I a method_60843 mask + m (I)Lfbo; a method_60844 byId + m (IILfbo$a;Lfbo$b;I)Lfbo; a method_60845 register + m (IJI)V a method_22652 setupBufferState + m (ILfbo$b;)Z a method_1383 supportsUsage + m (ILfbo;)Z a method_60846 method_60846 + m ()I b method_60847 byteSize + m (I)Ljava/util/stream/Stream; b method_60848 elementsFromMask + m ()I c comp_2842 id + m ()I d comp_2843 index + m ()Lfbo$a; e comp_2844 type + m ()Lfbo$b; f comp_2845 usage + m ()I g comp_2846 count + m (IILfbo$a;Lfbo$b;I)V + m ()V +c fbo$a net/minecraft/class_296$class_297 com/mojang/blaze3d/vertex/VertexFormatElement$Type + f Lfbo$a; a field_1623 FLOAT + f Lfbo$a; b field_1624 UBYTE + f Lfbo$a; c field_1621 BYTE + f Lfbo$a; d field_1622 USHORT + f Lfbo$a; e field_1625 SHORT + f Lfbo$a; f field_1619 UINT + f Lfbo$a; g field_1617 INT + f I h field_1618 size + f Ljava/lang/String; i field_1626 name + f I j field_1627 glType + f [Lfbo$a; k field_1620 $VALUES + m ()I a method_1391 size + m ()I b method_1390 glType + m ()[Lfbo$a; c method_36818 $values + m (Ljava/lang/String;IILjava/lang/String;I)V + m ()V +c fbo$b net/minecraft/class_296$class_298 com/mojang/blaze3d/vertex/VertexFormatElement$Usage + f Lfbo$b; a field_1633 POSITION + f Lfbo$b; b field_1635 NORMAL + f Lfbo$b; c field_1632 COLOR + f Lfbo$b; d field_1636 UV + f Lfbo$b; e field_20782 GENERIC + f Ljava/lang/String; f field_1630 name + f Lfbo$b$a; g field_20783 setupState + f [Lfbo$b; h field_1631 $VALUES + m ()[Lfbo$b; a method_36819 $values + m (IIIJI)V a method_60849 method_60849 + m (IIIJI)V b method_22662 method_22662 + m (IIIJI)V c method_60850 method_60850 + m (IIIJI)V d method_60851 method_60851 + m (IIIJI)V e method_22667 method_22667 + m (Ljava/lang/String;ILjava/lang/String;Lfbo$b$a;)V + m ()V +c fbo$b$a net/minecraft/class_296$class_298$class_4575 com/mojang/blaze3d/vertex/VertexFormatElement$Usage$SetupState +c fbp net/minecraft/class_4720 com/mojang/blaze3d/vertex/VertexMultiConsumer + m ()Lfbm; a method_35668 create + m (Lfbm;)Lfbm; a method_35669 create + m (Lfbm;Lfbm;)Lfbm; a method_24037 create + m ([Lfbm;)Lfbm; a method_35670 create + m ()V +c fbp$a net/minecraft/class_4720$class_4589 com/mojang/blaze3d/vertex/VertexMultiConsumer$Double + f Lfbm; a field_21685 first + f Lfbm; b field_21686 second + m (Lfbm;Lfbm;)V +c fbp$b net/minecraft/class_4720$class_6189 com/mojang/blaze3d/vertex/VertexMultiConsumer$Multiple + f [Lfbm; a comp_2847 delegates + m ()[Lfbm; a comp_2847 delegates + m (FFFIFFIIFFFLfbm;)V a method_60852 method_60852 + m (FFFLfbm;)V a method_60853 method_60853 + m (FFLfbm;)V a method_60854 method_60854 + m (IIIILfbm;)V a method_60855 method_60855 + m (IILfbm;)V a method_60856 method_60856 + m (Ljava/util/function/Consumer;)V a method_35677 forEach + m (FFFLfbm;)V b method_60857 method_60857 + m (IILfbm;)V b method_60858 method_60858 + m ([Lfbm;)V +c fbq net/minecraft/class_8251 com/mojang/blaze3d/vertex/VertexSorting + f Lfbq; a field_43360 DISTANCE_TO_ORIGIN + f Lfbq; b field_43361 ORTHOGRAPHIC_Z + m (FFF)Lfbq; a method_49906 byDistance + m (Lfbq$a;)Lfbq; a method_49907 byDistance + m (Lfbq$a;[Lorg/joml/Vector3f;)[I a method_49908 method_49908 + m (Lorg/joml/Vector3f;)Lfbq; a method_49909 byDistance + m ([FII)I a method_49910 method_49910 + m (Lorg/joml/Vector3f;)F b method_49911 method_49911 + m ()V +c fbq$a net/minecraft/class_8251$class_8252 com/mojang/blaze3d/vertex/VertexSorting$DistanceFunction +c fbr net/minecraft/class_6190 com/mojang/blaze3d/vertex/package-info +c fbs net/minecraft/class_8647 com/mojang/realmsclient/RealmsAvailability + f Lorg/slf4j/Logger; a field_45182 LOGGER + f Ljava/util/concurrent/CompletableFuture; b field_45183 future + m ()Ljava/util/concurrent/CompletableFuture; a method_52624 get + m (Ljava/util/concurrent/CompletableFuture;)Z a method_52625 shouldRefresh + m ()Ljava/util/concurrent/CompletableFuture; b method_52626 check + m ()Lfbs$a; c method_52627 method_52627 + m ()V + m ()V +c fbs$a net/minecraft/class_8647$class_8648 com/mojang/realmsclient/RealmsAvailability$Result + f Lfbs$b; a comp_1593 type + f Lfdj; b comp_1594 exception + m ()Lfbs$b; a comp_1593 type + m (Lfod;)Lfod; a method_52628 createErrorScreen + m ()Lfdj; b comp_1594 exception + m (Lfbs$b;)V + m (Lfdj;)V + m (Lfbs$b;Lfdj;)V +c fbs$b net/minecraft/class_8647$class_8649 com/mojang/realmsclient/RealmsAvailability$Type + f Lfbs$b; a field_45185 SUCCESS + f Lfbs$b; b field_45186 INCOMPATIBLE_CLIENT + f Lfbs$b; c field_45187 NEEDS_PARENTAL_CONSENT + f Lfbs$b; d field_45188 AUTHENTICATION_ERROR + f Lfbs$b; e field_45189 UNEXPECTED_ERROR + f [Lfbs$b; f field_45190 $VALUES + m ()[Lfbs$b; a method_52629 $values + m (Ljava/lang/String;I)V + m ()V +c fbt net/minecraft/class_4325 com/mojang/realmsclient/RealmsMainScreen + f Lakr; B field_45218 EXPIRES_SOON_SPRITE + f Lakr; C field_45219 OPEN_SPRITE + f Lakr; D field_45191 CLOSED_SPRITE + f Lakr; E field_45192 INVITE_SPRITE + f Lakr; F field_45193 NEWS_SPRITE + f Lorg/slf4j/Logger; G field_19475 LOGGER + f Lakr; H field_45194 LOGO_LOCATION + f Lakr; I field_45195 NO_REALMS_LOCATION + f Lwz; J field_45196 TITLE + f Lwz; K field_45197 LOADING_TEXT + f Lwz; L field_26450 SERVER_UNITIALIZED_TEXT + f Lwz; M field_26451 SUBSCRIPTION_EXPIRED_TEXT + f Lwz; N field_26452 SUBSCRIPTION_RENEW_TEXT + f Lwz; O field_26453 TRIAL_EXPIRED_TEXT + f Lwz; P field_42859 PLAY_TEXT + f Lwz; Q field_42860 LEAVE_SERVER_TEXT + f Lwz; R field_42861 CONFIGURE_SERVER_TEXT + f Lwz; S field_26457 SERVER_EXPIRED_TOOLTIP + f Lwz; T field_26458 SERVER_EXPIRES_SOON_TOOLTIP + f Lwz; U field_26459 SERVER_EXPIRES_IN_DAY_TOOLTIP + f Lwz; V field_26460 SERVER_OPEN_TOOLTIP + f Lwz; W field_26461 SERVER_CLOSED_TOOLTIP + f Lwz; X field_33776 UNITIALIZED_WORLD_NARRATION + f Lwz; Y field_45198 NO_REALMS_TEXT + f Lwz; Z field_45199 NO_PENDING_INVITES + f Lfim; aA field_45215 playButton + f Lfim; aB field_19486 backButton + f Lfim; aC field_19487 renewButton + f Lfim; aD field_19488 configureButton + f Lfim; aE field_19489 leaveButton + f Lfbt$j; aF field_19483 realmSelectionList + f Lfdo; aG field_39681 serverList + f Ljava/util/List; aH field_46669 availableSnapshotServers + f Lfcs; aI field_52116 onlinePlayersPerRealm + f Z aJ field_19500 trialsAvailable + f Ljava/lang/String; aK field_45203 newsLink + f J aL field_37267 lastClickTime + f Lakr; a field_45201 INFO_SPRITE + f Ljava/util/List; aM field_42997 notifications + f Lfim; aN field_45204 addRealmButton + f Lfbt$g; aO field_45205 pendingInvitesButton + f Lfbt$g; aP field_45206 newsButton + f Lfbt$f; aQ field_45207 activeLayoutState + f Lflz; aR field_45208 layout + f Lwz; aa field_45200 PENDING_INVITES + f Lwz; ab field_51815 INCOMPATIBLE_POPUP_TITLE + f Lwz; ac field_51816 INCOMPATIBLE_RELEASE_TYPE_POPUP_MESSAGE + f I ad field_42862 BUTTON_WIDTH + f I ae field_45209 BUTTON_COLUMNS + f I af field_45210 BUTTON_SPACING + f I ag field_45211 CONTENT_WIDTH + f I ah field_44509 LOGO_WIDTH + f I ai field_44510 LOGO_HEIGHT + f I aj field_44511 LOGO_TEXTURE_WIDTH + f I ak field_44512 LOGO_TEXTURE_HEIGHT + f I al field_44513 LOGO_PADDING + f I am field_44514 HEADER_HEIGHT + f I an field_45212 FOOTER_PADDING + f I ao field_46670 NEW_REALM_SPRITE_WIDTH + f I ap field_46671 NEW_REALM_SPRITE_HEIGHT + f I aq field_46215 ENTRY_WIDTH + f I ar field_46216 ITEM_HEIGHT + f Z as field_46672 SNAPSHOT + f Z at field_46673 snapshotToggle + f Ljava/util/concurrent/CompletableFuture; au field_45213 availability + f Lfev$c; av field_45214 dataSubscription + f Ljava/util/Set; aw field_42996 handledSeenNotifications + f Z ax field_19464 regionsPinged + f Lcom/google/common/util/concurrent/RateLimiter; ay field_19477 inviteNarrationLimiter + f Lfod; az field_19482 lastScreen + f Lakr; b field_45216 NEW_REALM_SPRITE + f Lakr; c field_45217 EXPIRED_SPRITE + m (Lfbt;)Lfhx; A method_54342 method_54342 + m (Lfbt;)Lfhx; B method_54318 method_54318 + m ()V C method_54320 updateLayout + m (Lfbt;)Lfgo; C method_54319 method_54319 + m ()Lfma; D method_52630 createHeader + m (Lfbt;)Lfgo; D method_54321 method_54321 + m ()Lfmd; E method_52631 createNoRealmsContent + m (Lfbt;)Lfgo; E method_60859 method_60859 + m ()V F method_52632 updateButtonStates + m ()V G method_54324 debugRefreshDataFetchers + m ()V J method_49550 refreshListAndLayout + m ()V K method_20922 pingRegions + m ()Ljava/util/List; L method_20924 getOwnedNonExpiredRealmIds + m ()Lfcp; M method_38503 getSelectedServer + m ()V N method_53791 openTrialAvailablePopup + m ()V O method_22098 method_22098 + m (Lfbs$a;)V a method_52634 method_52634 + m (Lfbt$f;)V a method_52635 updateLayout + m (Lfbt$k;Lfgo;)Ljava/lang/Object; a method_49552 method_49552 + m (Lfbt$k;Ljava/util/function/Consumer;)V a method_49553 callRealmsClient + m (Lfbt;)Lfgo; a method_36825 method_36825 + m (Lfbt;Lfki;)V a method_52636 method_52636 + m (Lfco;)Z a method_49551 addListEntriesForNotification + m (Lfcp;)Z a method_20874 shouldPlayButtonBeActive + m (Lfcp;Lfjo;)V a method_38504 method_38504 + m (Lfcp;Lfod;)V a method_20853 play + m (Lfcp;Lfod;Lwz;Lwz;Lwz;)V a method_54326 confirmToPlay + m (Lfcp;Lfod;Z)V a method_54327 play + m (Lfcs;)V a method_60860 method_60860 + m (Lfdm$a;)V a method_44615 method_44615 + m (Lfdm;)Lfev$c; a method_44611 initDataFetcher + m (Lfdm;Lfcn;)V a method_44612 method_44612 + m (Lfhz;Ljava/lang/String;I)V a method_52637 renderEnvironment + m (Lfim;)V a method_52638 method_52638 + m (Lfit;Ljava/lang/Boolean;)V a method_54328 method_54328 + m (Lfod;Lfcp;Lfjo;)V a method_54329 method_54329 + m (Ljava/lang/Boolean;)V a method_52639 method_52639 + m (Ljava/lang/Integer;)V a method_44614 method_44614 + m (Ljava/lang/String;I)Lwz; a method_54561 getVersionComponent + m (Ljava/lang/String;Z)Lwz; a method_54562 getVersionComponent + m (Ljava/lang/Throwable;)Ljava/lang/Void; a method_49554 method_49554 + m (Ljava/util/Collection;)V a method_54104 markNotificationsAsSeen + m (Ljava/util/List;Lfby;)Ljava/lang/Object; a method_54105 method_54105 + m (Ljava/util/List;Ljava/lang/Object;)V a method_54106 method_54106 + m (Ljava/util/UUID;)V a method_49557 dismissNotification + m (Ljava/util/UUID;Lfby;)Ljava/lang/Object; a method_49558 method_49558 + m (Ljava/util/UUID;Lfco;)Z a method_49559 method_49559 + m (Ljava/util/UUID;Ljava/lang/Object;)V a method_49560 method_49560 + m (Lwz;Lfim;)V a method_52640 method_52640 + m ()Z b method_54330 isSnapshot + m (Lfbt$f;)Lflz; b method_52641 createLayout + m (Lfbt;)Lfgo; b method_36826 method_36826 + m (Lfbt;Lfki;)V b method_52642 method_52642 + m (Lfcp;)Z b method_20884 shouldRenewButtonBeActive + m (Lfcp;Lfod;)V b method_60861 upgradeRealmAndPlay + m (Lfim;)V b method_52643 method_52643 + m (Lfbt$f;)Lfma; c method_52644 createFooter + m (Lfbt;)Lfgo; c method_36827 method_36827 + m (Lfcp;)Z c method_49285 shouldConfigureButtonBeActive + m (Lfim;)V c method_52645 method_52645 + m (Ljava/util/List;)V c method_49561 method_49561 + m (Lfbt;)Lfhx; d method_55791 method_55791 + m (Lfcp;)Z d method_49288 shouldLeaveButtonBeActive + m (Lfim;)V d method_52646 method_52646 + m (Lfbt;)Lfhx; e method_20885 method_20885 + m (Lfcp;)V e method_20928 onRenew + m (Lfim;)V e method_52647 method_52647 + m ()V f method_53792 refreshPendingInvites + m (Lfbt;)Lfhx; f method_36828 method_36828 + m (Lfcp;)V f method_20903 configureClicked + m (Lfim;)V f method_52648 method_52648 + m ()V g method_53793 refreshServerList + m (Lfbt;)Lfhx; g method_36829 method_36829 + m (Lfcp;)V g method_20906 leaveClicked + m (Lfim;)V g method_52649 method_52649 + m ()V h method_38505 resetScreen + m (Lfbt;)Lfhx; h method_36830 method_36830 + m (Lfcp;)V h method_24991 leaveServer + m (Lfbt;)Lfhx; i method_24992 method_24992 + m (Lfcp;)Z i method_20909 isSelfOwnedServer + m (Lfbt;)Lfhx; j method_53884 method_53884 + m (Lfcp;)Z j method_25001 isSelfOwnedNonExpiredServer + m (Lfbt;)Lfhx; k method_24996 method_24996 + m (Lfbt;)Lfhx; l method_24998 method_24998 + m (Lfbt;)Lfhx; m method_24994 method_24994 + m (Lfbt;)Lfhx; n method_44254 method_44254 + m (Lfbt;)Lfhx; o method_49562 method_49562 + m (Lfbt;)Lfhx; p method_36832 method_36832 + m (Lfbt;)Lfhx; q method_54332 method_54332 + m (Lfbt;)Lfgo; r method_54333 method_54333 + m (Lfbt;)Lfgo; s method_54334 method_54334 + m (Lfbt;)Lfgo; t method_54563 method_54563 + m (Lfbt;)Lfhx; u method_55792 method_55792 + m (Lfbt;)Lfhx; v method_54337 method_54337 + m (Lfbt;)Lfhx; w method_54338 method_54338 + m (Lfbt;)Lfhx; x method_54339 method_54339 + m (Lfbt;)Lfhx; y method_54340 method_54340 + m (Lfbt;)Lfhx; z method_54341 method_54341 + m (Lfod;)V + m ()V +c fbt$1 net/minecraft/class_4325$1 com/mojang/realmsclient/RealmsMainScreen$1 + f Lfcp; a field_34774 val$server + f Lfbt; b field_19509 field_19509 + m (Lfdj;)V a method_25020 method_25020 + m (Lfbt;Ljava/lang/String;Lfcp;)V +c fbt$2 net/minecraft/class_4325$2 com/mojang/realmsclient/RealmsMainScreen$2 + f [I a field_45221 $SwitchMap$com$mojang$realmsclient$client$RealmsClient$Environment + f [I b field_46674 $SwitchMap$com$mojang$realmsclient$dto$RealmsServer$Compatibility + m ()V +c fbt$a net/minecraft/class_4325$class_8840 com/mojang/realmsclient/RealmsMainScreen$AvailableSnapshotEntry + f Lfbt; a field_46675 field_46675 + f Lwz; f field_46676 START_SNAPSHOT_REALM + f I g field_46677 TEXT_PADDING + f Lfka; h field_46678 tooltip + f Lfcp; i field_46679 parent + m (Lfjo;)V a method_54343 method_54343 + m ()V c method_54344 addSnapshotRealm + m (Lfbt;Lfcp;)V + m ()V +c fbt$b net/minecraft/class_4325$class_8200 com/mojang/realmsclient/RealmsMainScreen$ButtonEntry + f Lfbt; a field_42998 field_42998 + f Lfim; f field_42999 button + m (Lfbt;Lfim;)V +c fbt$c net/minecraft/class_4325$class_8201 com/mojang/realmsclient/RealmsMainScreen$CrossButton + f Lfjz; b field_45222 SPRITES + m (Lfim$c;Lwz;)V + m ()V +c fbt$d net/minecraft/class_4325$class_8802 com/mojang/realmsclient/RealmsMainScreen$EmptyEntry + m (Lfbt;)V +c fbt$e net/minecraft/class_4325$class_4866 com/mojang/realmsclient/RealmsMainScreen$Entry + f I a field_46681 STATUS_LIGHT_HEIGHT + f I b field_46680 STATUS_LIGHT_WIDTH + f I c field_52117 PADDING_X + f I d field_52118 PADDING_Y + f Lfbt; e field_22567 field_22567 + m (I)I a method_54345 firstLineY + m (IILwz;)I a method_54346 versionTextX + m (Lfcp;)Lwz; a method_54348 method_54348 + m (Lfcp;Lfhz;IIII)V a method_54350 renderStatusLights + m (Lfhz;IIIILakr;Ljava/util/function/Supplier;)V a method_54351 drawRealmStatus + m (Lfhz;IILfcp;)V a method_54565 renderThirdLine + m (Lfhz;Ljava/lang/String;IIII)V a method_54352 renderClampedString + m ()I b method_54353 lineHeight + m (I)I b method_54354 textX + m ()Lwz; c method_54355 method_54355 + m (I)I c method_54356 secondLineY + m ()Lwz; d method_54358 method_54358 + m (I)I d method_54357 thirdLineY + m ()Lwz; e method_54359 method_54359 + m (Lfbt;)V +c fbt$f net/minecraft/class_4325$class_8650 com/mojang/realmsclient/RealmsMainScreen$LayoutState + f Lfbt$f; a field_45223 LOADING + f Lfbt$f; b field_45224 NO_REALMS + f Lfbt$f; c field_45225 LIST + f [Lfbt$f; d field_45226 $VALUES + m ()[Lfbt$f; a method_52650 $values + m (Ljava/lang/String;I)V + m ()V +c fbt$g net/minecraft/class_4325$class_8651 com/mojang/realmsclient/RealmsMainScreen$NotificationButton + f [Lakr; d field_45227 NOTIFICATION_ICONS + f I u field_45228 UNKNOWN_COUNT + f I v field_45229 SIZE + f I w field_45230 SPRITE_SIZE + f I x field_45231 notificationCount + m ()I a method_53794 notificationCount + m (I)V a method_52651 setNotificationCount + m (Lfhz;)V a method_52652 drawNotificationCounter + m (Lwz;Lakr;Lfim$c;)V + m ()V +c fbt$h net/minecraft/class_4325$class_8202 com/mojang/realmsclient/RealmsMainScreen$NotificationMessageEntry + f Lfbt; a field_43001 field_43001 + f I f field_43002 SIDE_MARGINS + f I g field_43004 OUTLINE_COLOR + f Lwz; h field_43005 text + f I i field_46218 frameItemHeight + f Ljava/util/List; j field_43006 children + f Lfbt$c; k field_43007 dismissButton + f Lfjg; l field_43008 textWidget + f Lfly; m field_43009 gridLayout + f Lflx; n field_43010 textFrame + f I o field_43011 lastEntryWidth + m (Lfco;Lfim;)V a method_49566 method_49566 + m (Lfhz;IIFLfik;)V a method_49565 method_49565 + m (I)V e method_49564 updateEntryWidth + m (I)V f method_49567 refreshLayout + m (Lfbt;Lwz;ILfco;)V +c fbt$i net/minecraft/class_4325$class_8841 com/mojang/realmsclient/RealmsMainScreen$ParentEntry + f Lfbt; a field_46683 field_46683 + f Lfcp; f field_46684 server + f Lfka; g field_46685 tooltip + m (Lfbt;Lfcp;)V +c fbt$j net/minecraft/class_4325$class_4329 com/mojang/realmsclient/RealmsMainScreen$RealmSelectionList + f Lfbt; a field_19517 field_19517 + m (Lfbt$e;)V a method_25024 setSelected + m (Lfbt;)V +c fbt$k net/minecraft/class_4325$class_8203 com/mojang/realmsclient/RealmsMainScreen$RealmsCall +c fbt$l net/minecraft/class_4325$class_4330 com/mojang/realmsclient/RealmsMainScreen$ServerEntry + f Lfbt; a field_19519 field_19519 + f Lwz; f field_52119 ONLINE_PLAYERS_TOOLTIP_HEADER + f I g field_52120 PLAYERS_ONLINE_SPRITE_SIZE + f I h field_32054 SKIN_HEAD_LARGE_WIDTH + f Lfcp; i field_19518 serverData + f Lfka; j field_46686 tooltip + m (Lfhz;II)V a method_54566 renderSecondLine + m (Lfhz;III)V a method_54567 renderFirstLine + m (Lfhz;IIIIII)Z a method_60862 renderOnlinePlayers + m ()Lfcp; c method_38506 getServer + m ()V d method_52653 playRealm + m ()V e method_52654 createUnitializedRealm + m (Lfbt;Lfcp;)V + m ()V +c fbu net/minecraft/class_4428 com/mojang/realmsclient/Unit + f Lfbu; a field_20200 B + f Lfbu; b field_20201 KB + f Lfbu; c field_20202 MB + f Lfbu; d field_20203 GB + f I e field_32055 BASE_UNIT + f [Lfbu; f field_20204 $VALUES + m ()[Lfbu; a method_36844 $values + m (J)Lfbu; a method_25027 getLargest + m (JLfbu;)D a method_25028 convertTo + m (J)Ljava/lang/String; b method_25029 humanReadable + m (JLfbu;)Ljava/lang/String; b method_25030 humanReadable + m (Ljava/lang/String;I)V + m ()V +c fbv net/minecraft/class_4333 com/mojang/realmsclient/client/FileDownload + f Lorg/slf4j/Logger; a field_19522 LOGGER + f Z b field_19523 cancelled + f Z c field_19524 finished + f Z d field_19525 error + f Z e field_19526 extracting + f Ljava/io/File; f field_20490 tempFile + f Ljava/io/File; g field_19528 resourcePackPath + f Lorg/apache/http/client/methods/HttpGet; h field_20491 request + f Ljava/lang/Thread; i field_19530 currentThread + f Lorg/apache/http/client/config/RequestConfig; j field_19531 requestConfig + f [Ljava/lang/String; k field_19532 INVALID_FILE_NAMES + m ()V a method_20948 cancel + m (Lfdd;Lfea$a;Ljava/lang/String;Lerf;)V a method_22099 method_22099 + m (Lfdd;Ljava/lang/String;Lfea$a;Lerf;)V a method_22100 download + m (Ljava/lang/String;)J a method_20955 contentLength + m (Ljava/lang/String;Ljava/io/File;Lerf;)V a method_20956 untarGzipArchive + m ()Z b method_20957 isFinished + m (Ljava/lang/String;)Ljava/lang/String; b method_20960 findAvailableFolderName + m ()Z c method_20961 isError + m ()Z d method_20964 isExtracting + m ()V + m ()V +c fbv$a net/minecraft/class_4333$class_4334 com/mojang/realmsclient/client/FileDownload$DownloadCountingOutputStream + f Ljava/awt/event/ActionListener; a field_19539 listener + m (Ljava/awt/event/ActionListener;)V a method_20969 setListener + m (Ljava/io/OutputStream;)V +c fbv$b net/minecraft/class_4333$class_4335 com/mojang/realmsclient/client/FileDownload$ProgressListener + f Lfbv; a field_19540 field_19540 + f Ljava/lang/String; b field_19541 worldName + f Ljava/io/File; c field_19542 tempFile + f Lerf; d field_19543 levelStorageSource + f Lfea$a; e field_19544 downloadStatus + m (Lfbv;Ljava/lang/String;Ljava/io/File;Lerf;Lfea$a;)V +c fbv$c net/minecraft/class_4333$class_4336 com/mojang/realmsclient/client/FileDownload$ResourcePackProgressListener + f Lfbv; a field_19546 field_19546 + f Ljava/io/File; b field_19547 tempFile + f Lfea$a; c field_19548 downloadStatus + f Lfdd; d field_19549 worldDownload + m (Lfbv;Ljava/io/File;Lfea$a;Lfdd;)V +c fbw net/minecraft/class_4337 com/mojang/realmsclient/client/FileUpload + f Lorg/slf4j/Logger; a field_19550 LOGGER + f I b field_32056 MAX_RETRIES + f Ljava/lang/String; c field_32057 UPLOAD_PATH + f Ljava/io/File; d field_19551 file + f J e field_19552 realmId + f I f field_19553 slotId + f Lfdb; g field_19554 uploadInfo + f Ljava/lang/String; h field_19555 sessionId + f Ljava/lang/String; i field_19556 username + f Ljava/lang/String; j field_19557 clientVersion + f Ljava/lang/String; k field_49104 worldVersion + f Lfcc; l field_19558 uploadStatus + f Ljava/util/concurrent/atomic/AtomicBoolean; m field_19559 cancelled + f Ljava/util/concurrent/CompletableFuture; n field_19560 uploadTask + f Lorg/apache/http/client/config/RequestConfig; o field_19561 requestConfig + m ()V a method_20970 cancel + m (I)Lfet; a method_20971 requestUpload + m (JI)Z a method_20972 shouldRetry + m (Ljava/util/function/Consumer;)V a method_20973 upload + m (Lorg/apache/http/HttpResponse;)J a method_20974 getRetryDelaySeconds + m (Lorg/apache/http/HttpResponse;Lfet$a;)V a method_20975 handleResponse + m (Lorg/apache/http/client/methods/HttpPost;)V a method_20976 setupRequest + m (Lorg/apache/http/client/methods/HttpPost;Lorg/apache/http/impl/client/CloseableHttpClient;)V a method_20977 cleanup + m ()Z b method_20978 isFinished + m (JI)Lfet; b method_20979 retryUploadAfter + m ()Lfet; c method_20980 method_20980 + m (Ljava/io/File;JILfdb;Lfhb;Ljava/lang/String;Ljava/lang/String;Lfcc;)V + m ()V +c fbw$a net/minecraft/class_4337$class_4338 com/mojang/realmsclient/client/FileUpload$CustomInputStreamEntity + f J a field_19562 length + f Ljava/io/InputStream; b field_19563 content + f Lfcc; c field_19564 uploadStatus + m (Ljava/io/InputStream;JLfcc;)V +c fbx net/minecraft/class_4339 com/mojang/realmsclient/client/Ping + m ()Ljava/util/List; a method_20981 pingAllRegions + m (Ljava/lang/String;)I a method_20982 ping + m ([Lfbx$a;)Ljava/util/List; a method_20984 ping + m ()J b method_20985 now + m ()V +c fbx$a net/minecraft/class_4339$class_4340 com/mojang/realmsclient/client/Ping$Region + f Lfbx$a; a field_19565 US_EAST_1 + f Lfbx$a; b field_19566 US_WEST_2 + f Lfbx$a; c field_19567 US_WEST_1 + f Lfbx$a; d field_19568 EU_WEST_1 + f Lfbx$a; e field_19569 AP_SOUTHEAST_1 + f Lfbx$a; f field_19570 AP_SOUTHEAST_2 + f Lfbx$a; g field_19571 AP_NORTHEAST_1 + f Lfbx$a; h field_19572 SA_EAST_1 + f Ljava/lang/String; i field_19573 name + f Ljava/lang/String; j field_19574 endpoint + f [Lfbx$a; k field_19575 $VALUES + m ()[Lfbx$a; a method_36845 $values + m (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V + m ()V +c fby net/minecraft/class_4341 com/mojang/realmsclient/client/RealmsClient + f Ljava/lang/String; A field_32093 PATH_WORLD_GET + f Ljava/lang/String; B field_32094 PATH_WORLD_INVITES + f Ljava/lang/String; C field_32095 PATH_WORLD_UNINVITE + f Ljava/lang/String; D field_32058 PATH_PENDING_INVITES_COUNT + f Ljava/lang/String; E field_32059 PATH_PENDING_INVITES + f Ljava/lang/String; F field_32060 PATH_ACCEPT_INVITE + f Ljava/lang/String; G field_32061 PATH_REJECT_INVITE + f Ljava/lang/String; H field_32062 PATH_UNINVITE_MYSELF + f Ljava/lang/String; I field_32063 PATH_WORLD_UPDATE + f Ljava/lang/String; J field_32064 PATH_SLOT + f Ljava/lang/String; K field_32065 PATH_WORLD_OPEN + f Ljava/lang/String; L field_32066 PATH_WORLD_CLOSE + f Ljava/lang/String; M field_32067 PATH_WORLD_RESET + f Ljava/lang/String; N field_32068 PATH_DELETE_WORLD + f Ljava/lang/String; O field_32069 PATH_WORLD_BACKUPS + f Ljava/lang/String; P field_32070 PATH_WORLD_DOWNLOAD + f Ljava/lang/String; Q field_32071 PATH_WORLD_UPLOAD + f Ljava/lang/String; R field_32072 PATH_CLIENT_COMPATIBLE + f Ljava/lang/String; S field_32073 PATH_TOS_AGREED + f Ljava/lang/String; T field_32074 PATH_NEWS + f Ljava/lang/String; U field_43012 PATH_MARK_NOTIFICATIONS_SEEN + f Ljava/lang/String; V field_43013 PATH_DISMISS_NOTIFICATIONS + f Lfcg; W field_22568 GSON + f Lfby$b; a field_45232 ENVIRONMENT + f Lorg/slf4j/Logger; b field_19578 LOGGER + f Ljava/lang/String; c field_19579 sessionId + f Ljava/lang/String; d field_19580 username + f Lfgo; e field_26901 minecraft + f Ljava/lang/String; f field_32076 WORLDS_RESOURCE_PATH + f Ljava/lang/String; g field_32077 INVITES_RESOURCE_PATH + f Ljava/lang/String; h field_32078 MCO_RESOURCE_PATH + f Ljava/lang/String; i field_32079 SUBSCRIPTION_RESOURCE + f Ljava/lang/String; j field_32080 ACTIVITIES_RESOURCE + f Ljava/lang/String; k field_32081 OPS_RESOURCE + f Ljava/lang/String; l field_32082 REGIONS_RESOURCE + f Ljava/lang/String; m field_32083 TRIALS_RESOURCE + f Ljava/lang/String; n field_43014 NOTIFICATIONS_RESOURCE + f Ljava/lang/String; o field_46687 PATH_LIST_ALL_REALMS + f Ljava/lang/String; p field_46688 PATH_CREATE_SNAPSHOT_REALM + f Ljava/lang/String; q field_46689 PATH_SNAPSHOT_ELIGIBLE_REALMS + f Ljava/lang/String; r field_32084 PATH_INITIALIZE + f Ljava/lang/String; s field_32085 PATH_GET_ACTIVTIES + f Ljava/lang/String; t field_32086 PATH_GET_LIVESTATS + f Ljava/lang/String; u field_32087 PATH_GET_SUBSCRIPTION + f Ljava/lang/String; v field_32088 PATH_OP + f Ljava/lang/String; w field_32089 PATH_PUT_INTO_MINIGAMES_MODE + f Ljava/lang/String; x field_32090 PATH_AVAILABLE + f Ljava/lang/String; y field_32091 PATH_TEMPLATES + f Ljava/lang/String; z field_32092 PATH_WORLD_JOIN + m ()Lfby; a method_44616 create + m (IILfcp$d;)Lfdf; a method_20990 fetchWorldTemplates + m (J)Lfcp; a method_20991 getOwnRealm + m (JI)Z a method_20992 switchSlot + m (JILfcu;)V a method_20993 updateSlot + m (JLffg;)Ljava/lang/Boolean; a method_20995 resetWorldWithSeed + m (JLjava/lang/String;)Lfcp; a method_21004 invite + m (JLjava/lang/String;Ljava/lang/String;)V a method_20996 initializeRealm + m (JLjava/util/UUID;)V a method_20994 uninvite + m (Lfcb;)Ljava/lang/String; a method_20998 execute + m (Lfci;)Z a method_31381 isBlocked + m (Lfck;)V a method_20997 sendPingResults + m (Lfgo;)Lfby; a method_20989 create + m (Ljava/lang/Long;)Lfcp; a method_54360 createSnapshotRealm + m (Ljava/lang/String;)V a method_20999 acceptInvitation + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_21007 url + m (Ljava/util/List;)V a method_49569 notificationsSeen + m ()Lfcr; b method_21015 listRealms + m (J)Lfcz; b method_35684 getActivity + m (JI)Lfdd; b method_21003 requestDownloadInfo + m (JLjava/lang/String;)V b method_21010 restoreWorld + m (JLjava/lang/String;Ljava/lang/String;)V b method_21005 update + m (JLjava/util/UUID;)Lfch; b method_21017 op + m (Ljava/lang/String;)V b method_21006 rejectInvitation + m (Ljava/util/List;)V b method_49570 notificationsDismiss + m ()Ljava/util/List; c method_54361 listSnapshotEligibleRealms + m (J)Lfcq; c method_21009 join + m (JLjava/lang/String;)Ljava/lang/Boolean; c method_21014 putIntoMinigameMode + m (JLjava/util/UUID;)Lfch; c method_21020 deop + m (Ljava/lang/String;)Ljava/lang/String; c method_21011 url + m (Ljava/util/List;)Lcom/google/gson/JsonArray; c method_49571 uuidListToJsonArray + m ()Ljava/util/List; d method_49572 getNotifications + m (J)V d method_21013 uninviteMyselfFrom + m (JLjava/lang/String;)Ljava/lang/Boolean; d method_21023 resetWorldWithTemplate + m ()Lfcs; e method_21018 getLiveStats + m (J)Lfcf; e method_21016 backupsFor + m (JLjava/lang/String;)Lfdb; e method_21026 requestUploadInfo + m ()Z f method_52655 hasParentalConsent + m (J)Ljava/lang/Boolean; f method_21019 open + m ()Lfby$a; g method_21027 clientCompatible + m (J)Ljava/lang/Boolean; g method_21022 close + m ()I h method_21029 pendingInvitesCount + m (J)Lfda; h method_21025 subscriptionFor + m ()Lfcj; i method_21030 pendingInvites + m (J)V i method_21028 deleteRealm + m ()V j method_21031 agreeToTos + m ()Lfcn; k method_21032 getNews + m ()Ljava/lang/Boolean; l method_21033 trialAvailable + m ()Ljava/util/Optional; m method_52656 method_52656 + m (Ljava/lang/String;Ljava/lang/String;Lfgo;)V + m ()V +c fby$a net/minecraft/class_4341$class_4342 com/mojang/realmsclient/client/RealmsClient$CompatibleVersionResponse + f Lfby$a; a field_19582 COMPATIBLE + f Lfby$a; b field_19583 OUTDATED + f Lfby$a; c field_19584 OTHER + f [Lfby$a; d field_19585 $VALUES + m ()[Lfby$a; a method_36846 $values + m (Ljava/lang/String;I)V + m ()V +c fby$b net/minecraft/class_4341$class_4343 com/mojang/realmsclient/client/RealmsClient$Environment + f Lfby$b; a field_19586 PRODUCTION + f Lfby$b; b field_19587 STAGE + f Lfby$b; c field_19588 LOCAL + f Ljava/lang/String; d field_19589 baseUrl + f Ljava/lang/String; e field_19590 protocol + f [Lfby$b; f field_19591 $VALUES + m ()[Lfby$b; a method_36847 $values + m (Ljava/lang/String;)Ljava/util/Optional; a method_52215 byName + m (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V + m ()V +c fbz net/minecraft/class_4344 com/mojang/realmsclient/client/RealmsClientConfig + f Ljava/net/Proxy; a field_19592 proxy + m ()Ljava/net/Proxy; a method_21034 getProxy + m (Ljava/net/Proxy;)V a method_21035 setProxy + m ()V +c fca net/minecraft/class_4345 com/mojang/realmsclient/client/RealmsError + f Lwz; a field_45233 NO_MESSAGE + f Lorg/slf4j/Logger; b field_19593 LOGGER + m ()I a method_21037 errorCode + m (ILjava/lang/String;)Lfca; a method_30162 parse + m ()Lwz; b method_52657 errorMessage + m ()Ljava/lang/String; c method_21036 logMessage + m ()V +c fca$a net/minecraft/class_4345$class_8652 com/mojang/realmsclient/client/RealmsError$AuthenticationError + f I c field_45234 ERROR_CODE + f Ljava/lang/String; d comp_1595 message + m ()Ljava/lang/String; d comp_1595 message + m (Ljava/lang/String;)V +c fca$b net/minecraft/class_4345$class_8653 com/mojang/realmsclient/client/RealmsError$CustomError + f Lfca$b; c field_45235 SERVICE_BUSY + f Lwz; d field_45236 RETRY_MESSAGE + f I e comp_1596 httpCode + f Lwz; f comp_1597 payload + m (I)Lfca$b; a method_52658 retry + m (Lfdi;)Lfca$b; a method_52659 connectivityError + m (Ljava/lang/String;)Lfca$b; a method_52660 unknownCompatibilityResponse + m (I)Lfca$b; b method_52661 noPayload + m ()I d comp_1596 httpCode + m ()Lwz; e comp_1597 payload + m (ILwz;)V + m ()V +c fca$c net/minecraft/class_4345$class_8654 com/mojang/realmsclient/client/RealmsError$ErrorWithJsonPayload + f I c comp_1598 httpCode + f I d comp_1599 code + f Ljava/lang/String; e comp_1600 reason + f Ljava/lang/String; f comp_1601 message + m ()I d comp_1598 httpCode + m ()I e comp_1599 code + m ()Ljava/lang/String; f comp_1600 reason + m ()Ljava/lang/String; g comp_1601 message + m (IILjava/lang/String;Ljava/lang/String;)V +c fca$d net/minecraft/class_4345$class_8655 com/mojang/realmsclient/client/RealmsError$ErrorWithRawPayload + f I c comp_1602 httpCode + f Ljava/lang/String; d comp_1603 payload + m ()I d comp_1602 httpCode + m ()Ljava/lang/String; e comp_1603 payload + m (ILjava/lang/String;)V +c fcb net/minecraft/class_4346 com/mojang/realmsclient/client/Request + f Ljava/net/HttpURLConnection; a field_19596 connection + f Ljava/lang/String; b field_19597 url + f Z c field_19598 connected + f I d field_32096 DEFAULT_READ_TIMEOUT + f I e field_32097 DEFAULT_CONNECT_TIMEOUT + f Ljava/lang/String; f field_46690 IS_SNAPSHOT_KEY + f Ljava/lang/String; g field_46691 COOKIE_KEY + m ()I a method_21038 getRetryAfterHeader + m (Ljava/io/InputStream;)Ljava/lang/String; a method_21039 read + m (Ljava/lang/String;)Lfcb; a method_21040 get + m (Ljava/lang/String;II)Lfcb; a method_21041 get + m (Ljava/lang/String;Ljava/lang/String;)V a method_21042 cookie + m (Ljava/lang/String;Ljava/lang/String;II)Lfcb; a method_21043 post + m (Ljava/net/HttpURLConnection;)I a method_21044 getRetryAfterHeader + m (Ljava/net/HttpURLConnection;Ljava/lang/String;)Ljava/lang/String; a method_21045 getHeader + m (Ljava/net/HttpURLConnection;Ljava/lang/String;Ljava/lang/String;)V a method_21046 cookie + m (Z)V a method_54362 addSnapshotHeader + m ()I b method_21047 responseCode + m (Ljava/lang/String;)Lfcb; b method_21048 delete + m (Ljava/lang/String;Ljava/lang/String;)Lfcb; b method_21049 post + m (Ljava/lang/String;Ljava/lang/String;II)Lfcb; b method_21050 put + m ()Ljava/lang/String; c method_21051 text + m (Ljava/lang/String;)Ljava/lang/String; c method_21052 getHeader + m (Ljava/lang/String;Ljava/lang/String;)Lfcb; c method_21053 put + m ()Lfcb; d method_21054 connect + m ()Lfcb; e method_21055 doConnect + m ()V f method_21056 dispose + m (Ljava/lang/String;II)V +c fcb$a net/minecraft/class_4346$class_4347 com/mojang/realmsclient/client/Request$Delete + m ()Lfcb$a; f method_21057 doConnect + m (Ljava/lang/String;II)V +c fcb$b net/minecraft/class_4346$class_4348 com/mojang/realmsclient/client/Request$Get + m ()Lfcb$b; f method_21058 doConnect + m (Ljava/lang/String;II)V +c fcb$c net/minecraft/class_4346$class_4349 com/mojang/realmsclient/client/Request$Post + f Ljava/lang/String; c field_19599 content + m ()Lfcb$c; f method_21059 doConnect + m (Ljava/lang/String;Ljava/lang/String;II)V +c fcb$d net/minecraft/class_4346$class_4350 com/mojang/realmsclient/client/Request$Put + f Ljava/lang/String; c field_19600 content + m ()Lfcb$d; f method_21060 doConnect + m (Ljava/lang/String;Ljava/lang/String;II)V +c fcc net/minecraft/class_4351 com/mojang/realmsclient/client/UploadStatus + f J a field_19601 bytesWritten + f J b field_19602 totalBytes + m ()V +c fcd net/minecraft/class_6191 com/mojang/realmsclient/client/package-info +c fce net/minecraft/class_4867 com/mojang/realmsclient/dto/Backup + f Ljava/lang/String; a field_22569 backupId + f Ljava/util/Date; b field_22570 lastModifiedDate + f J c field_22571 size + f Ljava/util/Map; d field_22572 metadata + f Ljava/util/Map; e field_22573 changeList + f Lorg/slf4j/Logger; f field_22574 LOGGER + f Z g field_22575 uploadedVersion + m ()Z a method_25032 isUploadedVersion + m (Lcom/google/gson/JsonElement;)Lfce; a method_25033 parse + m (Z)V a method_25035 setUploadedVersion + m ()V + m ()V +c fcf net/minecraft/class_4868 com/mojang/realmsclient/dto/BackupList + f Ljava/util/List; a field_22576 backups + f Lorg/slf4j/Logger; b field_22577 LOGGER + m (Ljava/lang/String;)Lfcf; a method_25036 parse + m ()V + m ()V +c fcg net/minecraft/class_4869 com/mojang/realmsclient/dto/GuardedSerializer + f Lcom/google/gson/Gson; a field_22578 gson + m (Lcom/google/gson/JsonElement;)Ljava/lang/String; a method_49573 toJson + m (Lfcw;)Ljava/lang/String; a method_25037 toJson + m (Ljava/lang/String;Ljava/lang/Class;)Lfcw; a method_25038 fromJson + m ()V +c fch net/minecraft/class_4870 com/mojang/realmsclient/dto/Ops + f Ljava/util/Set; a field_22579 ops + m (Ljava/lang/String;)Lfch; a method_25039 parse + m ()V +c fci net/minecraft/class_4871 com/mojang/realmsclient/dto/PendingInvite + f Ljava/lang/String; a field_22580 invitationId + f Ljava/lang/String; b field_22581 realmName + f Ljava/lang/String; c field_22582 realmOwnerName + f Ljava/util/UUID; d field_22583 realmOwnerUuid + f Ljava/util/Date; e field_22584 date + f Lorg/slf4j/Logger; f field_22585 LOGGER + m (Lcom/google/gson/JsonObject;)Lfci; a method_25040 parse + m ()V + m ()V +c fcj net/minecraft/class_4872 com/mojang/realmsclient/dto/PendingInvitesList + f Ljava/util/List; a field_22586 pendingInvites + f Lorg/slf4j/Logger; b field_22587 LOGGER + m (Ljava/lang/String;)Lfcj; a method_25041 parse + m ()V + m ()V +c fck net/minecraft/class_4873 com/mojang/realmsclient/dto/PingResult + f Ljava/util/List; a field_22588 pingResults + f Ljava/util/List; b field_22589 realmIds + m ()V +c fcl net/minecraft/class_4874 com/mojang/realmsclient/dto/PlayerInfo + f Ljava/lang/String; a field_22590 name + f Ljava/util/UUID; b field_22591 uuid + f Z c field_22592 operator + f Z d field_22593 accepted + f Z e field_22594 online + m ()Ljava/lang/String; a method_25042 getName + m (Ljava/lang/String;)V a method_25043 setName + m (Ljava/util/UUID;)V a method_25046 setUuid + m (Z)V a method_25044 setOperator + m ()Ljava/util/UUID; b method_25045 getUuid + m (Z)V b method_25047 setAccepted + m ()Z c method_25048 isOperator + m (Z)V c method_25049 setOnline + m ()Z d method_25050 getAccepted + m ()Z e method_25051 getOnline + m ()V +c fcm net/minecraft/class_4875 com/mojang/realmsclient/dto/RealmsDescriptionDto + f Ljava/lang/String; a field_22595 name + f Ljava/lang/String; b field_22596 description + m (Ljava/lang/String;Ljava/lang/String;)V +c fcn net/minecraft/class_4876 com/mojang/realmsclient/dto/RealmsNews + f Ljava/lang/String; a field_22597 newsLink + f Lorg/slf4j/Logger; b field_22598 LOGGER + m (Ljava/lang/String;)Lfcn; a method_25052 parse + m ()V + m ()V +c fco net/minecraft/class_8204 com/mojang/realmsclient/dto/RealmsNotification + f Lorg/slf4j/Logger; a field_43015 LOGGER + f Ljava/lang/String; b field_43016 NOTIFICATION_UUID + f Ljava/lang/String; c field_43017 DISMISSABLE + f Ljava/lang/String; d field_43018 SEEN + f Ljava/lang/String; e field_43019 TYPE + f Ljava/lang/String; f field_43020 VISIT_URL + f Ljava/lang/String; g field_46538 INFO_POPUP + f Lwz; h field_46539 BUTTON_TEXT_FALLBACK + f Ljava/util/UUID; i field_43021 uuid + f Z j field_43022 dismissable + f Z k field_43023 seen + f Ljava/lang/String; l field_43024 type + m ()Z a method_49574 seen + m (Lcom/google/gson/JsonObject;)Lfco; a method_49575 parse + m (Ljava/lang/String;)Ljava/util/List; a method_49576 parseList + m ()Z b method_49577 dismissable + m ()Ljava/util/UUID; c method_49578 uuid + m (Ljava/util/UUID;ZZLjava/lang/String;)V + m ()V +c fco$a net/minecraft/class_8204$class_8814 com/mojang/realmsclient/dto/RealmsNotification$InfoPopup + f Ljava/lang/String; a field_46540 TITLE + f Ljava/lang/String; b field_46541 MESSAGE + f Ljava/lang/String; c field_46542 IMAGE + f Ljava/lang/String; d field_46543 URL_BUTTON + f Lfct; e field_46544 title + f Lfct; f field_46545 message + f Lakr; g field_46546 image + f Lfco$b; h field_46547 urlButton + m (Lfco;Lcom/google/gson/JsonObject;)Lfco$a; a method_54107 parse + m (Lfgo;Lfod;Lfjo;Z)V a method_54108 method_54108 + m (Lfod;Ljava/util/function/Consumer;)Lfjo; a method_54109 buildScreen + m (Lfod;Ljava/util/function/Consumer;Lfjo;)V a method_54110 method_54110 + m (Ljava/util/function/Consumer;)V a method_54111 method_54111 + m (Ljava/util/function/Consumer;Lfjo;)V a method_54112 method_54112 + m (Lfco;Lfct;Lfct;Lakr;Lfco$b;)V +c fco$b net/minecraft/class_8204$class_8815 com/mojang/realmsclient/dto/RealmsNotification$UrlButton + f Ljava/lang/String; a comp_1974 url + f Lfct; b comp_1975 urlText + f Ljava/lang/String; c field_46548 URL + f Ljava/lang/String; d field_46549 URL_TEXT + m ()Ljava/lang/String; a comp_1974 url + m (Lcom/google/gson/JsonObject;)Lfco$b; a method_54113 parse + m ()Lfct; b comp_1975 urlText + m (Ljava/lang/String;Lfct;)V +c fco$c net/minecraft/class_8204$class_8205 com/mojang/realmsclient/dto/RealmsNotification$VisitUrl + f Ljava/lang/String; a field_43025 URL + f Ljava/lang/String; b field_43026 BUTTON_TEXT + f Ljava/lang/String; c field_43027 MESSAGE + f Ljava/lang/String; d field_43028 url + f Lfct; e field_43029 buttonText + f Lfct; f field_43030 message + m (Lfco;Lcom/google/gson/JsonObject;)Lfco$c; a method_49579 parse + m (Lfod;)Lfim; a method_49580 buildOpenLinkButton + m ()Lwz; d method_49581 getMessage + m (Lfco;Ljava/lang/String;Lfct;Lfct;)V +c fcp net/minecraft/class_4877 com/mojang/realmsclient/dto/RealmsServer + f J a field_22599 id + f Ljava/lang/String; b field_22600 remoteSubscriptionId + f Ljava/lang/String; c field_22601 name + f Ljava/lang/String; d field_22602 motd + f Lfcp$c; e field_22603 state + f Ljava/lang/String; f field_22604 owner + f Ljava/util/UUID; g field_22605 ownerUUID + f Ljava/util/List; h field_22606 players + f Ljava/util/Map; i field_22607 slots + f Z j field_22608 expired + f Z k field_22609 expiredTrial + f I l field_22610 daysLeft + f Lfcp$d; m field_22611 worldType + f I n field_22612 activeSlot + f Ljava/lang/String; o field_22613 minigameName + f I p field_22614 minigameId + f Ljava/lang/String; q field_22615 minigameImage + f J r field_46692 parentRealmId + f Ljava/lang/String; s field_46693 parentWorldName + f Ljava/lang/String; t field_46694 activeVersion + f Lfcp$a; u field_46695 compatibility + f Lorg/slf4j/Logger; v field_22617 LOGGER + f I w field_46696 NO_VALUE + m ()Ljava/lang/String; a method_25053 getDescription + m (I)Ljava/lang/String; a method_25054 getWorldName + m (Lcom/google/gson/JsonArray;)Ljava/util/List; a method_25055 parseInvited + m (Lcom/google/gson/JsonObject;)Lfcp; a method_25056 parse + m (Lfcl;Lfcl;)I a method_25057 method_25057 + m (Lfcp;)V a method_25058 sortInvited + m (Ljava/lang/String;)V a method_25060 setName + m (Ljava/util/Map;)Ljava/util/Map; a method_25061 cloneSlots + m ()Ljava/lang/String; b method_25062 getName + m (Lcom/google/gson/JsonArray;)Ljava/util/Map; b method_25063 parseSlots + m (Ljava/lang/String;)V b method_25064 setDescription + m ()Ljava/lang/String; c method_25065 getMinigameName + m (Ljava/lang/String;)Lfcp; c method_25066 parse + m ()Z d method_54363 isCompatible + m (Ljava/lang/String;)Lfcp$a; d method_54366 getCompatibility + m ()Z e method_54364 needsUpgrade + m (Ljava/lang/String;)Lfzt; e method_31403 toServerData + m ()Z f method_54365 needsDowngrade + m (Ljava/lang/String;)Lfcp$c; f method_25068 getState + m ()Lfcp; g method_25067 clone + m (Ljava/lang/String;)Lfcp$d; g method_25070 getWorldType + m ()Z h method_54367 isSnapshotRealm + m ()Z i method_60315 isMinigameActive + m ()Ljava/util/Map; j method_25069 createEmptySlots + m ()V + m ()V +c fcp$a net/minecraft/class_4877$class_8842 com/mojang/realmsclient/dto/RealmsServer$Compatibility + f Lfcp$a; a field_46697 UNVERIFIABLE + f Lfcp$a; b field_46698 INCOMPATIBLE + f Lfcp$a; c field_51817 RELEASE_TYPE_INCOMPATIBLE + f Lfcp$a; d field_46699 NEEDS_DOWNGRADE + f Lfcp$a; e field_46700 NEEDS_UPGRADE + f Lfcp$a; f field_46701 COMPATIBLE + f [Lfcp$a; g field_46702 $VALUES + m ()Z a method_54568 isCompatible + m ()Z b method_54569 needsUpgrade + m ()Z c method_54570 needsDowngrade + m ()[Lfcp$a; d method_54368 $values + m (Ljava/lang/String;I)V + m ()V +c fcp$b net/minecraft/class_4877$class_4319 com/mojang/realmsclient/dto/RealmsServer$McoServerComparator + f Ljava/lang/String; a field_19432 refOwner + m (Lfcp;Lfcp;)I a method_20830 compare + m (Ljava/lang/String;)V +c fcp$c net/minecraft/class_4877$class_4320 com/mojang/realmsclient/dto/RealmsServer$State + f Lfcp$c; a field_19433 CLOSED + f Lfcp$c; b field_19434 OPEN + f Lfcp$c; c field_19435 UNINITIALIZED + f [Lfcp$c; d field_19436 $VALUES + m ()[Lfcp$c; a method_36848 $values + m (Ljava/lang/String;I)V + m ()V +c fcp$d net/minecraft/class_4877$class_4321 com/mojang/realmsclient/dto/RealmsServer$WorldType + f Lfcp$d; a field_19437 NORMAL + f Lfcp$d; b field_19438 MINIGAME + f Lfcp$d; c field_19439 ADVENTUREMAP + f Lfcp$d; d field_19440 EXPERIENCE + f Lfcp$d; e field_19441 INSPIRATION + f [Lfcp$d; f field_19442 $VALUES + m ()[Lfcp$d; a method_36849 $values + m (Ljava/lang/String;I)V + m ()V +c fcq net/minecraft/class_4878 com/mojang/realmsclient/dto/RealmsServerAddress + f Ljava/lang/String; a field_22618 address + f Ljava/lang/String; b field_22619 resourcePackUrl + f Ljava/lang/String; c field_22620 resourcePackHash + f Lorg/slf4j/Logger; d field_22621 LOGGER + m (Ljava/lang/String;)Lfcq; a method_25071 parse + m ()V + m ()V +c fcr net/minecraft/class_4879 com/mojang/realmsclient/dto/RealmsServerList + f Ljava/util/List; a field_22622 servers + f Lorg/slf4j/Logger; b field_22623 LOGGER + m (Ljava/lang/String;)Lfcr; a method_25072 parse + m ()V + m ()V +c fcs net/minecraft/class_4881 com/mojang/realmsclient/dto/RealmsServerPlayerLists + f Ljava/util/Map; a field_52121 servers + f Lorg/slf4j/Logger; b field_22628 LOGGER + m (J)Ljava/util/List; a method_60863 getProfileResultsFor + m (Lcom/google/gson/JsonArray;)Ljava/util/List; a method_25073 parsePlayers + m (Ljava/lang/String;)Lfcs; a method_25074 parse + m ()V + m ()V +c fct net/minecraft/class_8206 com/mojang/realmsclient/dto/RealmsText + f Ljava/lang/String; a field_43031 TRANSLATION_KEY + f Ljava/lang/String; b field_43032 ARGS + f Ljava/lang/String; c field_43033 translationKey + f [Ljava/lang/String; d field_43034 args + m ()Lwz; a method_54114 createComponent + m (Lcom/google/gson/JsonObject;)Lfct; a method_49582 parse + m (Lwz;)Lwz; a method_49583 createComponent + m (Ljava/lang/String;[Ljava/lang/String;)V +c fcu net/minecraft/class_4883 com/mojang/realmsclient/dto/RealmsWorldOptions + f Lfcp$a; A field_46842 DEFAULT_COMPATIBILITY + f J B field_32110 DEFAULT_TEMPLATE_ID + f Ljava/lang/String; C field_22646 DEFAULT_TEMPLATE_IMAGE + f Z a field_22632 pvp + f Z b field_22633 spawnAnimals + f Z c field_22634 spawnMonsters + f Z d field_22635 spawnNPCs + f I e field_22636 spawnProtection + f Z f field_22637 commandBlocks + f Z g field_22638 forceGameMode + f I h field_22639 difficulty + f I i field_22640 gameMode + f Ljava/lang/String; j field_46843 version + f Lfcp$a; k field_46844 compatibility + f J l field_22642 templateId + f Ljava/lang/String; m field_22643 templateImage + f Z n field_22645 empty + f Ljava/lang/String; o field_22641 slotName + f Z p field_32100 DEFAULT_FORCE_GAME_MODE + f Z q field_32101 DEFAULT_PVP + f Z r field_32102 DEFAULT_SPAWN_ANIMALS + f Z s field_32103 DEFAULT_SPAWN_MONSTERS + f Z t field_32104 DEFAULT_SPAWN_NPCS + f I u field_32105 DEFAULT_SPAWN_PROTECTION + f Z v field_32106 DEFAULT_COMMAND_BLOCKS + f I w field_32107 DEFAULT_DIFFICULTY + f I x field_32108 DEFAULT_GAME_MODE + f Ljava/lang/String; y field_32109 DEFAULT_SLOT_NAME + f Ljava/lang/String; z field_46845 DEFAULT_VERSION + m ()Lfcu; a method_25076 createDefaults + m (I)Ljava/lang/String; a method_25077 getSlotName + m (Lcom/google/gson/JsonObject;)Lfcu; a method_25078 parse + m (Z)V a method_25079 setEmpty + m ()Lfcu; b method_25080 createEmptyDefaults + m (I)Ljava/lang/String; b method_25081 getDefaultSlotName + m ()Ljava/lang/String; c method_25082 toJson + m ()Lfcu; d method_25083 clone + m (ZZZZIZIIZLjava/lang/String;Ljava/lang/String;Lfcp$a;)V + m ()V +c fcv net/minecraft/class_4884 com/mojang/realmsclient/dto/RealmsWorldResetDto + f Ljava/lang/String; a field_22647 seed + f J b field_22648 worldTemplateId + f I c field_22649 levelType + f Z d field_22650 generateStructures + f Ljava/util/Set; e field_46703 experiments + m (Ljava/lang/String;JIZLjava/util/Set;)V +c fcw net/minecraft/class_4885 com/mojang/realmsclient/dto/ReflectionBasedSerialization +c fcx net/minecraft/class_4886 com/mojang/realmsclient/dto/RegionPingResult + f Ljava/lang/String; a field_22651 regionName + f I b field_22652 ping + m ()I a method_25084 ping + m (Ljava/lang/String;I)V +c fcy net/minecraft/class_6192 com/mojang/realmsclient/dto/ServerActivity + f Ljava/lang/String; a field_32111 profileUuid + f J b field_32112 joinTime + f J c field_32113 leaveTime + m (Lcom/google/gson/JsonObject;)Lfcy; a method_35686 parse + m ()V +c fcz net/minecraft/class_6193 com/mojang/realmsclient/dto/ServerActivityList + f J a field_32114 periodInMillis + f Ljava/util/List; b field_32115 serverActivities + m (Ljava/lang/String;)Lfcz; a method_35687 parse + m ()V +c fda net/minecraft/class_4887 com/mojang/realmsclient/dto/Subscription + f J a field_22653 startDate + f I b field_22654 daysLeft + f Lfda$a; c field_22655 type + f Lorg/slf4j/Logger; d field_22656 LOGGER + m (Ljava/lang/String;)Lfda; a method_25085 parse + m (Ljava/lang/String;)Lfda$a; b method_25086 typeFrom + m ()V + m ()V +c fda$a net/minecraft/class_4887$class_4322 com/mojang/realmsclient/dto/Subscription$SubscriptionType + f Lfda$a; a field_19443 NORMAL + f Lfda$a; b field_19444 RECURRING + f [Lfda$a; c field_19445 $VALUES + m ()[Lfda$a; a method_36850 $values + m (Ljava/lang/String;I)V + m ()V +c fdb net/minecraft/class_4888 com/mojang/realmsclient/dto/UploadInfo + f Lorg/slf4j/Logger; a field_22657 LOGGER + f Ljava/lang/String; b field_32116 DEFAULT_SCHEMA + f I c field_32117 DEFAULT_PORT + f Ljava/util/regex/Pattern; d field_26467 URI_SCHEMA_PATTERN + f Z e field_22658 worldClosed + f Ljava/lang/String; f field_22659 token + f Ljava/net/URI; g field_22660 uploadEndpoint + m ()Ljava/lang/String; a method_25087 getToken + m (II)I a method_30861 selectPortOrDefault + m (Ljava/lang/String;)Lfdb; a method_25088 parse + m (Ljava/lang/String;I)Ljava/net/URI; a method_30862 assembleUri + m (Ljava/lang/String;Ljava/util/regex/Matcher;)Ljava/lang/String; a method_30863 ensureEndpointSchema + m ()Ljava/net/URI; b method_25089 getUploadEndpoint + m (Ljava/lang/String;)Ljava/lang/String; b method_30864 createRequest + m ()Z c method_25091 isWorldClosed + m (ZLjava/lang/String;Ljava/net/URI;)V + m ()V +c fdc net/minecraft/class_4352 com/mojang/realmsclient/dto/ValueObject + m (Ljava/lang/reflect/Field;)Ljava/lang/String; a method_25093 getName + m (Ljava/lang/reflect/Field;)Z b method_25094 isStatic + m ()V +c fdd net/minecraft/class_4889 com/mojang/realmsclient/dto/WorldDownload + f Ljava/lang/String; a field_22662 downloadLink + f Ljava/lang/String; b field_22663 resourcePackUrl + f Ljava/lang/String; c field_22664 resourcePackHash + f Lorg/slf4j/Logger; d field_22665 LOGGER + m (Ljava/lang/String;)Lfdd; a method_25095 parse + m ()V + m ()V +c fde net/minecraft/class_4890 com/mojang/realmsclient/dto/WorldTemplate + f Ljava/lang/String; a field_22666 id + f Ljava/lang/String; b field_22667 name + f Ljava/lang/String; c field_22668 version + f Ljava/lang/String; d field_22669 author + f Ljava/lang/String; e field_22670 link + f Ljava/lang/String; f field_22671 image + f Ljava/lang/String; g field_22672 trailer + f Ljava/lang/String; h field_22673 recommendedPlayers + f Lfde$a; i field_22674 type + f Lorg/slf4j/Logger; j field_22675 LOGGER + m (Lcom/google/gson/JsonObject;)Lfde; a method_25096 parse + m ()V + m ()V +c fde$a net/minecraft/class_4890$class_4323 com/mojang/realmsclient/dto/WorldTemplate$WorldTemplateType + f Lfde$a; a field_19447 WORLD_TEMPLATE + f Lfde$a; b field_19448 MINIGAME + f Lfde$a; c field_19449 ADVENTUREMAP + f Lfde$a; d field_19450 EXPERIENCE + f Lfde$a; e field_19451 INSPIRATION + f [Lfde$a; f field_19452 $VALUES + m ()[Lfde$a; a method_36851 $values + m (Ljava/lang/String;I)V + m ()V +c fdf net/minecraft/class_4891 com/mojang/realmsclient/dto/WorldTemplatePaginatedList + f Ljava/util/List; a field_22676 templates + f I b field_22677 page + f I c field_22678 size + f I d field_22679 total + f Lorg/slf4j/Logger; e field_22680 LOGGER + m ()Z a method_35688 isLastPage + m (Ljava/lang/String;)Lfdf; a method_25097 parse + m ()V + m (I)V + m ()V +c fdg net/minecraft/class_6194 com/mojang/realmsclient/dto/package-info +c fdh net/minecraft/class_4353 com/mojang/realmsclient/exception/RealmsDefaultUncaughtExceptionHandler + f Lorg/slf4j/Logger; a field_19603 logger + m (Lorg/slf4j/Logger;)V +c fdi net/minecraft/class_4354 com/mojang/realmsclient/exception/RealmsHttpException + m (Ljava/lang/String;Ljava/lang/Exception;)V +c fdj net/minecraft/class_4355 com/mojang/realmsclient/exception/RealmsServiceException + f Lfca; a field_36320 realmsError + m (Lfca;)V +c fdk net/minecraft/class_4356 com/mojang/realmsclient/exception/RetryCallException + f I b field_32118 DEFAULT_DELAY + f I c field_19608 delaySeconds + m (II)V +c fdl net/minecraft/class_6195 com/mojang/realmsclient/exception/package-info +c fdm net/minecraft/class_7578 com/mojang/realmsclient/gui/RealmsDataFetcher + f Lfev; a field_39682 dataFetcher + f Lfev$e; b field_43035 notificationsTask + f Lfev$e; c field_39683 serverListUpdateTask + f Lfev$e; d field_39685 pendingInvitesTask + f Lfev$e; e field_39686 trialAvailabilityTask + f Lfev$e; f field_39687 newsTask + f Lfev$e; g field_52122 onlinePlayersTask + f Lfdn; h field_39688 newsManager + f Ljava/util/List; i field_46704 tasks + m ()Ljava/util/List; a method_54369 getTasks + m (Lfby;)Lfdm$a; a method_44617 method_44617 + m (Lfby;)V +c fdm$a net/minecraft/class_7578$class_8843 com/mojang/realmsclient/gui/RealmsDataFetcher$ServerListData + f Ljava/util/List; a comp_1989 serverList + f Ljava/util/List; b comp_1990 availableSnapshotServers + m ()Ljava/util/List; a comp_1989 serverList + m ()Ljava/util/List; b comp_1990 availableSnapshotServers + m (Ljava/util/List;Ljava/util/List;)V +c fdn net/minecraft/class_7579 com/mojang/realmsclient/gui/RealmsNewsManager + f Lffb; a field_39689 newsLocalStorage + f Z b field_39690 hasUnreadNews + f Ljava/lang/String; c field_39691 newsLink + m ()Z a method_44618 hasUnreadNews + m (Lfcn;)V a method_44619 updateUnreadNews + m ()Ljava/lang/String; b method_44620 newsLink + m (Lfcn;)Lffb$a; b method_44621 updateNewsStorage + m (Lffb;)V +c fdo net/minecraft/class_7580 com/mojang/realmsclient/gui/RealmsServerList + f Lfgo; a field_39692 minecraft + f Ljava/util/Set; b field_39693 removedServers + f Ljava/util/List; c field_39694 servers + m ()Z a method_52664 isEmpty + m (Lfcp;)V a method_44622 removeItem + m (Ljava/util/List;)V a method_44623 updateServersList + m (Lfgo;)V +c fdp net/minecraft/class_4367 com/mojang/realmsclient/gui/RealmsWorldSlotButton + f I A field_19675 slotIndex + f Lfdp$b; B field_19677 state + f Lakr; a field_22682 EMPTY_SLOT_LOCATION + f Lakr; b field_22683 DEFAULT_WORLD_SLOT_1 + f Lakr; c field_22684 DEFAULT_WORLD_SLOT_2 + f Lakr; d field_22685 DEFAULT_WORLD_SLOT_3 + f Lakr; u field_22681 SLOT_FRAME_SPRITE + f Lakr; v field_39067 CHECKMARK_SPRITE + f Lwz; w field_26468 SLOT_ACTIVE_TOOLTIP + f Lwz; x field_26469 SWITCH_TO_MINIGAME_SLOT_TOOLTIP + f Lwz; y field_26470 SWITCH_TO_WORLD_SLOT_TOOLTIP + f Lwz; z field_44894 MINIGAME + m ()Lfdp$b; a method_25099 getState + m (Lfcp;)V a method_54571 setServerData + m (Lfcp;ZZ)Lfdp$a; a method_27455 getAction + m (Lfdp$b;Ljava/lang/String;)V a method_54572 setTooltipAndNarration + m (IIIIILfim$c;)V + m ()V +c fdp$a net/minecraft/class_4367$class_4368 com/mojang/realmsclient/gui/RealmsWorldSlotButton$Action + f Lfdp$a; a field_19678 NOTHING + f Lfdp$a; b field_19679 SWITCH_SLOT + f Lfdp$a; c field_19680 JOIN + f [Lfdp$a; d field_19681 $VALUES + m ()[Lfdp$a; a method_36853 $values + m (Ljava/lang/String;I)V + m ()V +c fdp$b net/minecraft/class_4367$class_4370 com/mojang/realmsclient/gui/RealmsWorldSlotButton$State + f Z a field_19686 empty + f Z b field_19687 minigame + f Lfdp$a; c field_19688 action + f Z d field_19682 isCurrentlyActiveSlot + f Ljava/lang/String; e field_19683 slotName + f Ljava/lang/String; f field_46848 slotVersion + f Lfcp$a; g field_46849 compatibility + f J h field_19684 imageId + f Ljava/lang/String; i field_19685 image + m (Lfcp;I)V +c fdq net/minecraft/class_4371 com/mojang/realmsclient/gui/RowButton + f I a field_19690 width + f I b field_19691 height + f I c field_19692 xOffset + f I d field_19693 yOffset + m ()I a method_21109 getRight + m (I)V a method_21110 onClick + m (Lfhz;IIII)V a method_21111 drawForRowAt + m (Lfhz;IIZ)V a method_21112 draw + m (Lfhz;Ljava/util/List;Lgwp;IIII)V a method_21113 drawButtonsInRow + m (Lgwp;Lfji$a;Ljava/util/List;IDD)V a method_21114 rowButtonMouseClicked + m ()I b method_21115 getBottom + m (IIII)V +c fdr net/minecraft/class_6196 com/mojang/realmsclient/gui/package-info +c fds net/minecraft/class_8656 com/mojang/realmsclient/gui/screens/AddRealmPopupScreen + f Lakr; B field_45276 TRIAL_AVAILABLE_SPRITE + f Lfjz; C field_45277 CROSS_BUTTON_SPRITES + f I D field_45255 BG_TEXTURE_WIDTH + f I E field_45256 BG_TEXTURE_HEIGHT + f I F field_45257 BG_BORDER_SIZE + f I G field_45258 IMAGE_WIDTH + f I H field_45259 IMAGE_HEIGHT + f I I field_45260 BUTTON_SPACING + f I J field_45261 PADDING + f I K field_45262 WIDTH + f I L field_45263 HEIGHT + f I M field_45264 TEXT_WIDTH + f I N field_45265 BUTTON_WIDTH + f I O field_45266 CAROUSEL_SWITCH_INTERVAL + f Ljava/util/List; P field_45267 carouselImages + f Lfod; Q field_45268 backgroundScreen + f Z R field_45269 trialAvailable + f Lfim; S field_45270 createTrialButton + f I T field_45271 carouselIndex + f I U field_45272 carouselTick + f Lwz; a field_45273 POPUP_TEXT + f Lwz; b field_45274 CLOSE_TEXT + f Lakr; c field_45275 BACKGROUND_SPRITE + m ()I C method_52680 left + m ()I D method_52681 top + m ()I E method_52682 right + m ()I F method_52683 bottom + m (Lakr;)Z a method_52684 method_52684 + m (Laue;)V a method_52685 updateCarouselImages + m (Lfhz;Lfim;)V a method_52686 renderDiamond + m (Lfim;)V a method_52687 method_52687 + m (Lakr;)Z b method_52688 method_52688 + m (Lfod;Z)V + m ()V +c fdt net/minecraft/class_4379 com/mojang/realmsclient/gui/screens/RealmsBackupInfoScreen + f Lfce; B field_19736 backup + f Lflz; C field_45973 layout + f Lfdt$a; D field_19738 backupInfoList + f Lwz; a field_45972 TITLE + f Lwz; b field_27937 UNKNOWN + f Lfod; c field_19734 lastScreen + m (Lfdt;)Lfhx; a method_29335 method_29335 + m (Lfdt;Lfki;)V a method_53513 method_53513 + m (Lfim;)V a method_25105 method_25105 + m (Ljava/lang/String;)Lwz; a method_21140 gameDifficultyMetadata + m (Ljava/lang/String;Ljava/lang/String;)Lwz; a method_21141 checkForSpecificMetadata + m (Lfdt;)Lfhx; b method_51885 method_51885 + m (Ljava/lang/String;)Lwz; b method_21143 gameModeMetadata + m (Lfod;Lfce;)V + m ()V +c fdt$a net/minecraft/class_4379$class_4380 com/mojang/realmsclient/gui/screens/RealmsBackupInfoScreen$BackupInfoList + f Lfdt; a field_19740 field_19740 + m (Ljava/lang/String;Ljava/lang/String;)V a method_29336 method_29336 + m (Lfdt;Lfgo;)V +c fdt$b net/minecraft/class_4379$class_5344 com/mojang/realmsclient/gui/screens/RealmsBackupInfoScreen$BackupInfoListEntry + f Lfdt; a field_25257 field_25257 + f Lwz; b field_44895 TEMPLATE_NAME + f Lwz; c field_44896 GAME_DIFFICULTY + f Lwz; d field_44897 NAME + f Lwz; e field_44898 GAME_SERVER_VERSION + f Lwz; f field_44899 UPLOADED + f Lwz; g field_44900 ENABLED_PACK + f Lwz; h field_44901 DESCRIPTION + f Lwz; i field_44902 GAME_MODE + f Lwz; j field_44903 SEED + f Lwz; k field_44904 WORLD_TYPE + f Lwz; l field_44905 UNDEFINED + f Ljava/lang/String; m field_25258 key + f Ljava/lang/String; n field_25259 value + m (Ljava/lang/String;)Lwz; a method_51886 translateKey + m (Lfdt;Ljava/lang/String;Ljava/lang/String;)V + m ()V +c fdu net/minecraft/class_4381 com/mojang/realmsclient/gui/screens/RealmsBackupScreen + f Lwz; B field_26472 HAS_CHANGES_TOOLTIP + f Lwz; C field_26474 NO_BACKUPS_LABEL + f Lwz; D field_51818 DOWNLOAD_LATEST + f Ljava/lang/String; E field_32119 UPLOADED_KEY + f I F field_49447 PADDING + f Lfdx; G field_19743 lastScreen + f Ljava/util/List; H field_19744 backups + f Lfdu$a; I field_49448 backupList + f Lflz; J field_49449 layout + f I K field_19748 slotId + f Lfim; L field_19749 downloadButton + f Lfcp; M field_19753 serverData + f Z N field_19752 noBackups + f Lorg/slf4j/Logger; a field_19741 LOGGER + f Lwz; b field_26473 TITLE + f Lwz; c field_26471 RESTORE_TOOLTIP + m ()V C method_57661 fetchRealmsBackups + m ()V D method_21166 downloadClicked + m (Lfdu;)Lfgo; a method_25108 method_25108 + m (Lfdu;Lfki;)V a method_25109 method_25109 + m (Lfim;)V a method_25110 method_25110 + m (Lfjo;)V a method_25111 method_25111 + m (Lfdu;)Lfhx; b method_25115 method_25115 + m (Lfim;)V b method_25113 method_25113 + m (Lfdu;)Lfhx; c method_25116 method_25116 + m (Lfdu;)Lfgo; d method_51237 method_51237 + m (Lfdu;)Lfhx; e method_57662 method_57662 + m (Lfdu;)Lfhx; f method_57663 method_57663 + m (Lfdu;)Lfhx; g method_57664 method_57664 + m (Lfdu;)Lfgo; h method_57665 method_57665 + m (Lfdu;)Lfgo; i method_57666 method_57666 + m (Lfdx;Lfcp;I)V + m ()V +c fdu$1 net/minecraft/class_4381$1 com/mojang/realmsclient/gui/screens/RealmsBackupScreen$1 + f Lfdu; a field_19755 field_19755 + m (Ljava/util/List;)V a method_21171 method_21171 + m (Lfdu;Ljava/lang/String;)V +c fdu$a net/minecraft/class_4381$class_4382 com/mojang/realmsclient/gui/screens/RealmsBackupScreen$BackupObjectSelectionList + f Lfdu; a field_19760 field_19760 + f I m field_49450 ITEM_HEIGHT + m (Lfce;)V a method_21173 addEntry + m (Lfdu;)V +c fdu$b net/minecraft/class_4381$class_4383 com/mojang/realmsclient/gui/screens/RealmsBackupScreen$Entry + f Lfdu; a field_19762 field_19762 + f I b field_44525 Y_PADDING + f Lfce; c field_19761 backup + f Lfim; d field_49452 restoreButton + f Lfim; e field_49451 changesButton + f Ljava/util/List; f field_44527 children + m (Lfce;)V a method_51239 populateChangeList + m (Lfim;)V a method_57668 method_57668 + m (Lfjo;)V a method_57673 method_57673 + m (Ljava/lang/String;)V a method_51241 addToChangeList + m (Ljava/util/Date;)Ljava/lang/String; a method_21176 getMediumDatePresentation + m (Ljava/util/function/Supplier;)Lxn; a method_57669 method_57669 + m (Lfim;)V b method_57670 method_57670 + m (Ljava/util/function/Supplier;)Lxn; b method_57671 method_57671 + m ()Ljava/lang/String; c method_57672 getShortBackupDate + m ()V d method_57674 restoreClicked + m (Lfdu;Lfce;)V +c fdv net/minecraft/class_4384 com/mojang/realmsclient/gui/screens/RealmsBrokenWorldScreen + f Lfod; B field_19764 lastScreen + f Lfcp; C field_20492 serverData + f J D field_19767 serverId + f [Lwz; E field_19769 message + f I F field_19770 leftX + f Ljava/util/List; G field_19778 slotsThatHasBeenDownloaded + f I H field_19779 animTick + f Lakr; a field_45239 SLOT_FRAME_SPRITE + f Lorg/slf4j/Logger; b field_19763 LOGGER + f I c field_32120 DEFAULT_BUTTON_WIDTH + m ()V C method_21178 addButtons + m ()Z D method_21196 isMinigame + m ()V E method_25127 method_25127 + m ()V F method_37404 method_37404 + m ()V G method_25129 method_25129 + m (I)I a method_21179 getFramePositionX + m (ILfim;)V a method_25124 method_25124 + m (ILfjo;)V a method_25125 method_25125 + m (IZ)V a method_25121 method_25121 + m (J)V a method_21181 fetchServerData + m (Lfcp;)V a method_25128 method_25128 + m (Lfhz;IIIIZLjava/lang/String;IJLjava/lang/String;Z)V a method_21180 drawSlotFrame + m (Lfim;)V a method_25122 method_25122 + m ()V b method_25123 doSwitchOrReset + m (I)V b method_21187 downloadWorld + m (ILfim;)V b method_25120 method_25120 + m (J)V b method_22101 method_22101 + m (Lfod;JZ)V + m ()V +c fdw net/minecraft/class_4387 com/mojang/realmsclient/gui/screens/RealmsClientOutdatedScreen + f Lwz; B field_49456 OUTDATED_STABLE_VERSION + f Lfod; C field_19787 lastScreen + f Lflz; D field_49453 layout + f Lwz; a field_26477 INCOMPATIBLE_TITLE + f Lwz; b field_49454 INCOMPATIBLE_CLIENT_VERSION + f Lwz; c field_49455 UNSUPPORTED_SNAPSHOT_VERSION + m ()Lwz; C method_57675 getErrorMessage + m (Lfdw;Lfki;)V a method_57676 method_57676 + m (Lfim;)V a method_57677 method_57677 + m (Lfod;)V + m ()V +c fdx net/minecraft/class_4388 com/mojang/realmsclient/gui/screens/RealmsConfigureWorldScreen + f Lakr; B field_45241 CLOSED_SPRITE + f Lorg/slf4j/Logger; C field_19790 LOGGER + f Lwz; D field_26479 WORLD_LIST_TITLE + f Lwz; E field_26480 TITLE + f Lwz; F field_26482 SERVER_EXPIRED_TOOLTIP + f Lwz; G field_26483 SERVER_EXPIRING_SOON_TOOLTIP + f Lwz; H field_26484 SERVER_EXPIRING_IN_DAY_TOOLTIP + f Lwz; I field_26485 SERVER_OPEN_TOOLTIP + f Lwz; J field_26486 SERVER_CLOSED_TOOLTIP + f I K field_32121 DEFAULT_BUTTON_WIDTH + f I L field_32122 DEFAULT_BUTTON_OFFSET + f Lwz; M field_19791 toolTip + f Lfbt; N field_19792 lastScreen + f Lfcp; O field_20493 serverData + f J P field_19794 serverId + f I Q field_19795 leftX + f I R field_19796 rightX + f Lfim; S field_19799 playersButton + f Lfim; T field_19800 settingsButton + f Lfim; U field_19801 subscriptionButton + f Lfim; V field_19802 optionsButton + f Lfim; W field_19803 backupButton + f Lfim; X field_19804 resetWorldButton + f Lfim; Y field_19805 switchMinigameButton + f Z Z field_19806 stateChanged + f Lakr; a field_22690 EXPIRED_SPRITE + f Ljava/util/List; aa field_33777 slotButtonList + f Lakr; b field_22691 EXPIRES_SOON_SPRITE + f Lakr; c field_45240 OPEN_SPRITE + m ()V C method_21234 disableButtons + m ()V D method_21236 switchToMinigame + m ()Z E method_21238 isMinigame + m ()V F method_21240 hideRegularButtons + m ()V G method_21242 hideMinigameButtons + m ()Lwz; J method_53456 method_53456 + m ()Lwz; K method_53457 method_53457 + m ()Lwz; L method_53458 method_53458 + m ()Lwz; M method_53459 method_53459 + m ()V N method_25149 method_25149 + m ()V O method_25150 method_25150 + m ()V P method_37406 method_37406 + m ()V Q method_25151 method_25151 + m ()V R method_25133 method_25133 + m ()V S method_25134 method_25134 + m (I)Lfdp; a method_21199 addSlotButton + m (II)I a method_21200 centerButton + m (ILfcp;)V a method_21203 switchToFullSlot + m (ILfcp;Lfjo;)V a method_25136 method_25136 + m (ILfim;)V a method_25135 method_25135 + m (J)V a method_21204 fetchServerData + m (Lfcp;)V a method_21206 joinRealm + m (Lfcp;ILfjo;)V a method_25139 method_25139 + m (Lfcu;)V a method_21208 saveSlotSettings + m (Lfde;)V a method_32484 templateSelectionCallback + m (Lfdj;)V a method_25137 method_25137 + m (Lfhz;IIIILakr;Ljava/util/function/Supplier;)V a method_53460 drawRealmStatus + m (Lfim;)V a method_25138 hide + m (Ljava/lang/String;Ljava/lang/String;)V a method_21215 saveSettings + m ()V b method_21217 closeTheWorld + m (I)I b method_21220 leftButton + m (ILfcp;)V b method_21222 switchToEmptySlot + m (J)V b method_22103 method_22103 + m (Lfcp;)V b method_37407 method_37407 + m (Lfhz;IIII)V b method_21201 drawServerStatus + m (Lfim;)V b method_21226 show + m (Z)V b method_21218 openTheWorld + m (Lfim;)V c method_25140 method_25140 + m (Lfim;)V d method_25141 method_25141 + m (Lfim;)V e method_25142 method_25142 + m ()V f method_21198 stateChanged + m (Lfim;)V f method_25144 method_25144 + m ()Lfdx; g method_21219 getNewScreen + m (Lfim;)V g method_25145 method_25145 + m (I)I h method_21228 frame + m (Lfim;)V h method_25146 method_25146 + m (Lfim;)V i method_25147 method_25147 + m (Lfim;)V j method_25148 method_25148 + m (Lfbt;J)V + m ()V +c fdx$1 net/minecraft/class_4388$1 com/mojang/realmsclient/gui/screens/RealmsConfigureWorldScreen$1 + f [I a field_19812 $SwitchMap$com$mojang$realmsclient$gui$RealmsWorldSlotButton$Action + m ()V +c fdy net/minecraft/class_4389 com/mojang/realmsclient/gui/screens/RealmsConfirmScreen + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; a field_22692 callback + f Lwz; b field_19821 title1 + f Lwz; c field_19825 title2 + m (Lfim;)V a method_25152 method_25152 + m (Lfim;)V b method_25153 method_25153 + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Lwz;)V +c fdz net/minecraft/class_4390 com/mojang/realmsclient/gui/screens/RealmsCreateRealmScreen + f I B field_45243 BUTTON_SPACING + f I C field_45244 CONTENT_WIDTH + f Lfbt; D field_19830 lastScreen + f Lflz; E field_45242 layout + f Lfiv; F field_19831 nameBox + f Lfiv; G field_19832 descriptionBox + f Ljava/lang/Runnable; H field_46705 createWorldRunnable + f Lwz; a field_46706 CREATE_REALM_TEXT + f Lwz; b field_26487 NAME_LABEL + f Lwz; c field_26488 DESCRIPTION_LABEL + m ()V C method_25156 method_25156 + m ()V D method_25157 method_25157 + m (J)V a method_54370 createSnapshotWorld + m (JLffg;)V a method_54371 method_54371 + m (Lfcp;)V a method_21245 createWorld + m (Lfdz;Lfki;)V a method_52665 method_52665 + m (Lfim;)V a method_52666 method_52666 + m (Lfim;Ljava/lang/String;)V a method_52667 method_52667 + m (J)V b method_54372 method_54372 + m (Lfcp;)V b method_54373 method_54373 + m (Lfim;)V b method_54374 method_54374 + m (Lfbt;Lfcp;)V + m (Lfbt;J)V + m ()V +c fea net/minecraft/class_4392 com/mojang/realmsclient/gui/screens/RealmsDownloadLatestWorldScreen + f I B field_41769 BAR_TOP + f I C field_41770 BAR_BOTTOM + f I D field_41771 BAR_BORDER + f Lfod; E field_19845 lastScreen + f Lfdd; F field_19846 worldDownload + f Lwz; G field_19847 downloadTitle + f Lcom/google/common/util/concurrent/RateLimiter; H field_19848 narrationRateLimiter + f Lfim; I field_22694 cancelButton + f Ljava/lang/String; J field_19850 worldName + f Lfea$a; K field_19851 downloadStatus + f Lwz; L field_20494 errorMessage + f Lwz; M field_19853 status + f Ljava/lang/String; N field_19854 progress + f Z O field_19855 cancelled + f Z P field_19856 showDots + f Z Q field_19857 finished + f Z R field_19858 extracting + f Ljava/lang/Long; S field_19859 previousWrittenBytes + f Ljava/lang/Long; T field_19860 previousTimeSnapshot + f J U field_19861 bytesPersSecond + f I V field_19862 animTick + f [Ljava/lang/String; W field_19863 DOTS + f I X field_19864 dotIndex + f Z Y field_19867 checked + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; Z field_22693 callback + f Lorg/slf4j/Logger; a field_19844 LOGGER + f Ljava/util/concurrent/locks/ReentrantLock; b field_19868 DOWNLOAD_LOCK + f I c field_41772 BAR_WIDTH + m ()V C method_21265 checkDownloadSize + m ()Lwz; D method_37012 createProgressNarrationMessage + m ()V E method_21278 downloadSave + m ()V F method_21279 downloadCancelled + m ()V G method_22104 method_22104 + m (Lfhz;J)V a method_21266 drawDownloadSpeed0 + m (Lfim;)V a method_25158 method_25158 + m (Lfjo;)V a method_25159 method_25159 + m (Ljava/lang/String;)J a method_21259 getContentLength + m (Lfhz;)V c method_21272 drawDots + m (Lfhz;)V d method_21274 drawProgressBar + m (Lfhz;)V e method_21276 drawDownloadSpeed + m (Lfod;Lfdd;Ljava/lang/String;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;)V + m ()V +c fea$a net/minecraft/class_4392$class_4393 com/mojang/realmsclient/gui/screens/RealmsDownloadLatestWorldScreen$DownloadStatus + f J a field_19871 bytesWritten + f J b field_19872 totalBytes + m ()V +c feb net/minecraft/class_4394 com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen + f Lfod; a field_22695 nextScreen + f Lfeb$a; b field_36321 lines + f Lfjf; c field_36322 line2Split + m (Lfdj;)Lfeb$a; a method_39981 errorMessage + m (Lfim;)V a method_25160 method_25160 + m (Lwz;)Lfeb$a; a method_21282 errorMessage + m (Lwz;Lwz;)Lfeb$a; a method_21283 errorMessage + m (Lfdj;Lfod;)V + m (Lwz;Lfod;)V + m (Lwz;Lwz;Lfod;)V +c feb$a net/minecraft/class_4394$class_8570 com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen$ErrorMessage + f Lwz; a comp_1533 title + f Lwz; b comp_1534 detail + m ()Lwz; a comp_1533 title + m ()Lwz; b comp_1534 detail + m (Lwz;Lwz;)V +c fec net/minecraft/class_4395 com/mojang/realmsclient/gui/screens/RealmsInviteScreen + f Lwz; B field_44943 INVITING_PLAYER_TEXT + f Lwz; C field_26490 NO_SUCH_PLAYER_ERROR_TEXT + f Lflz; D field_49457 layout + f Lfiv; E field_22696 profileName + f Lfim; F field_49458 inviteButton + f Lfcp; G field_19880 serverData + f Lfdx; H field_19881 configureScreen + f Lfod; I field_19882 lastScreen + f Lwz; J field_19887 message + f Lorg/slf4j/Logger; a field_19878 LOGGER + f Lwz; b field_49459 TITLE + f Lwz; c field_26489 NAME_LABEL + m ()V C method_21284 onInvite + m (JLjava/lang/String;)Lfcp; a method_52216 method_52216 + m (Lfcp;)V a method_52217 method_52217 + m (Lfec;Lfki;)V a method_57678 method_57678 + m (Lfim;)V a method_57679 method_57679 + m (Lwz;)V a method_21286 showMessage + m (Lfim;)V b method_25162 method_25162 + m (Lfdx;Lfod;Lfcp;)V + m ()V +c fed net/minecraft/class_4398 com/mojang/realmsclient/gui/screens/RealmsLongRunningMcoTaskScreen + f Lfod; B field_19912 lastScreen + f Lfmd; C field_46111 layout + f Lwz; D field_19914 title + f Lfjb; E field_46112 loadingDotsWidget + f Lorg/slf4j/Logger; a field_19909 LOGGER + f Lgwr; b field_33779 REPEATED_NARRATOR + f Ljava/util/List; c field_46707 queuedTasks + m (Lfed;Lfki;)V a method_53795 method_53795 + m (Lfim;)V a method_25168 method_25168 + m (Lfmc;)V a method_53796 method_53796 + m (Lwz;)V a method_53797 setTitle + m ([Lffn;)V a method_54375 method_54375 + m ()V f method_53798 cancel + m (Lfod;[Lffn;)V + m ()V +c fee net/minecraft/class_8789 com/mojang/realmsclient/gui/screens/RealmsLongRunningMcoTickTaskScreen + f Lffn; a field_46113 task + m (Lfod;Lffn;)V +c fef net/minecraft/class_4399 com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen + f Lakr; B field_45248 TRIAL_AVAILABLE_SPRITE + f Ljava/util/concurrent/CompletableFuture; C field_19927 validClient + f Lfev$c; D field_39695 realmsDataSubscription + f Lfef$a; E field_43037 currentConfiguration + f I F field_19924 numberOfPendingInvites + f Z G field_19926 trialAvailable + f Z H field_19928 hasUnreadNews + f Z I field_43038 hasUnseenNotifications + f Lfef$a; J field_43039 showAll + f Lfef$a; K field_43040 onlyNotifications + f Lakr; a field_45245 UNSEEN_NOTIFICATION_SPRITE + f Lakr; b field_45246 NEWS_SPRITE + f Lakr; c field_45247 INVITE_SPRITE + m ()Lfef$a; C method_49584 getConfiguration + m ()Z D method_25169 getRealmsNotificationsEnabled + m ()Z E method_25170 inTitleScreen + m (Lfbs$a;)Ljava/lang/Boolean; a method_52670 method_52670 + m (Lfdm;Lfcn;)V a method_49585 method_49585 + m (Lfdm;Lfev$c;)V a method_49586 addNewsAndInvitesSubscriptions + m (Ljava/lang/Boolean;)V a method_49587 method_49587 + m (Ljava/lang/Integer;)V a method_49588 method_49588 + m (Lfdm;Lfev$c;)V b method_49590 addNotificationsSubscriptions + m (Lfhz;)V c method_21295 drawIcons + m (Ljava/util/List;)V c method_49591 method_49591 + m ()V + m ()V +c fef$1 net/minecraft/class_4399$1 com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen$1 + f Lfef; a field_43042 field_43042 + m (Lfef;)V +c fef$2 net/minecraft/class_4399$2 com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen$2 + f Lfef; a field_43041 field_43041 + m (Lfef;)V +c fef$a net/minecraft/class_4399$class_8207 com/mojang/realmsclient/gui/screens/RealmsNotificationsScreen$DataFetcherConfiguration + m ()Z a method_49592 showOldNotifications + m (Lfdm;)Lfev$c; a method_49593 initDataFetcher +c feg net/minecraft/class_4400 com/mojang/realmsclient/gui/screens/RealmsParentalConsentScreen + f Lfod; B field_46852 lastScreen + f Lfjg; C field_46853 textWidget + f Lwz; a field_26491 MESSAGE + f I b field_46850 SPACING + f Lfmd; c field_46851 layout + m (Lfeg;Lfki;)V a method_54573 method_54573 + m (Lfim;)V a method_54574 method_54574 + m (Lfod;)V + m ()V +c feh net/minecraft/class_4401 com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen + f Lakr; B field_22703 REJECT_SPRITE + f Lorg/slf4j/Logger; C field_19935 LOGGER + f Lwz; D field_26493 NO_PENDING_INVITES_TEXT + f Lwz; E field_26494 ACCEPT_INVITE + f Lwz; F field_26495 REJECT_INVITE + f Lfod; G field_19936 lastScreen + f Ljava/util/concurrent/CompletableFuture; H field_45249 pendingInvites + f Lwz; I field_19937 toolTip + f Lfeh$b; J field_19939 pendingInvitationSelectionList + f I K field_19941 selectedInvite + f Lfim; L field_19942 acceptButton + f Lfim; M field_19943 rejectButton + f Lakr; a field_45250 ACCEPT_HIGHLIGHTED_SPRITE + f Lakr; b field_22702 ACCEPT_SPRITE + f Lakr; c field_45251 REJECT_HIGHLIGHTED_SPRITE + m ()V C method_21307 updateButtonStates + m ()Ljava/util/List; D method_52671 method_52671 + m (I)Z a method_21314 shouldAcceptAndRejectButtonBeVisible + m (IZ)V a method_52672 handleInvitation + m (IZLjava/lang/Boolean;)V a method_52673 method_52673 + m (Lfci;)Lfeh$a; a method_52674 method_52674 + m (Lfeh;)Lfhx; a method_52675 method_52675 + m (Lfim;)V a method_25175 method_25175 + m (ZLjava/lang/String;)Ljava/lang/Boolean; a method_52676 method_52676 + m (Lfeh;)Lfhx; b method_52677 method_52677 + m (Lfim;)V b method_25177 method_25177 + m (Lfeh;)Lfhx; c method_52678 method_52678 + m (Lfim;)V c method_25179 method_25179 + m (Ljava/util/List;)V c method_52679 method_52679 + m (Lfod;Lwz;)V + m ()V +c feh$a net/minecraft/class_4401$class_4403 com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen$Entry + f Lfeh; a field_19954 field_19954 + f I b field_32123 TEXT_LEFT + f Lfci; c field_19953 pendingInvite + f Ljava/util/List; d field_19955 rowButtons + m (Lfhz;Lfci;IIII)V a method_21324 renderPendingInvitationItem + m (Lfeh;Lfci;)V +c feh$a$a net/minecraft/class_4401$class_4403$class_4404 com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen$Entry$AcceptRowButton + f Lfeh$a; e field_19956 field_19956 + m (Lfeh$a;)V +c feh$a$b net/minecraft/class_4401$class_4403$class_4405 com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen$Entry$RejectRowButton + f Lfeh$a; e field_19957 field_19957 + m (Lfeh$a;)V +c feh$b net/minecraft/class_4401$class_4402 com/mojang/realmsclient/gui/screens/RealmsPendingInvitesScreen$PendingInvitationSelectionList + f Lfeh; a field_19952 field_19952 + m (I)V a method_21321 removeAtIndex + m (Lfeh$a;)V a method_25188 setSelected + m (I)V c method_21322 selectInviteListItem + m (Lfeh;)V +c fei net/minecraft/class_4406 com/mojang/realmsclient/gui/screens/RealmsPlayerScreen + f I B field_49462 PADDING + f Lflz; C field_49463 layout + f Lfdx; D field_19960 lastScreen + f Lfcp; E field_19961 serverData + f Lfei$b; F field_49460 invitedList + f Z G field_19971 stateChanged + f Lorg/slf4j/Logger; a field_19958 LOGGER + f Lwz; b field_49461 TITLE + f Lwz; c field_44908 QUESTION_TITLE + m ()V C method_58475 repopulateInvitedList + m ()V D method_21333 backButtonClicked + m (Lfei;)Lfhx; a method_57680 method_57680 + m (Lfei;Lfki;)V a method_57681 method_57681 + m (Lfim;)V a method_57682 method_57682 + m (Lfei;)Lfhx; b method_57683 method_57683 + m (Lfim;)V b method_25197 method_25197 + m (Lfei;)Lfhx; c method_31124 method_31124 + m (Lfei;)Lfhx; d method_57684 method_57684 + m (Lfei;)Lfhx; e method_57685 method_57685 + m (Lfei;)Lfhx; f method_57686 method_57686 + m (Lfei;)Lfgo; g method_57687 method_57687 + m (Lfei;)Lfhx; h method_57688 method_57688 + m (Lfei;)Lfhx; i method_57689 method_57689 + m (Lfei;)Lfgo; j method_57690 method_57690 + m (Lfdx;Lfcp;)V + m ()V +c fei$a net/minecraft/class_4406$class_4408 com/mojang/realmsclient/gui/screens/RealmsPlayerScreen$Entry + f Lfei; a field_19980 field_19980 + f Lwz; b field_49464 NORMAL_USER_TEXT + f Lwz; c field_49465 OP_TEXT + f Lwz; d field_49466 REMOVE_TEXT + f Lakr; e field_49467 MAKE_OP_SPRITE + f Lakr; f field_49468 REMOVE_OP_SPRITE + f Lakr; g field_49469 REMOVE_PLAYER_SPRITE + f I h field_49470 ICON_WIDTH + f I i field_49471 ICON_HEIGHT + f Lfcl; j field_19979 playerInfo + f Lfim; k field_44536 removeButton + f Lfim; l field_44537 makeOpButton + f Lfim; m field_44538 removeOpButton + m (I)V a method_57691 op + m (ILfim;)V a method_51246 method_51246 + m (Lfch;)V a method_57692 updateOps + m (Lfcl;IZ)V a method_57693 method_57693 + m (Lfcl;Ljava/util/function/Supplier;)Lxn; a method_57694 method_57694 + m (I)V b method_57695 deop + m (ILfim;)V b method_51248 method_51248 + m (Lfcl;Ljava/util/function/Supplier;)Lxn; b method_57696 method_57696 + m ()V c method_57697 updateOpButtons + m (I)V c method_57698 uninvite + m (ILfim;)V c method_51249 method_51249 + m (Lfcl;Ljava/util/function/Supplier;)Lxn; c method_57699 method_57699 + m ()Lfim; d method_57700 activeOpButton + m (Lfei;Lfcl;)V + m ()V +c fei$b net/minecraft/class_4406$class_4407 com/mojang/realmsclient/gui/screens/RealmsPlayerScreen$InvitedObjectSelectionList + f Lfei; a field_19978 field_19978 + f I m field_49472 ITEM_HEIGHT + m (Lfei;)V +c fej net/minecraft/class_9754 com/mojang/realmsclient/gui/screens/RealmsPopups + f I a field_51819 COLOR_INFO + f Lwz; b field_51820 INFO + f Lwz; c field_51821 WARNING + m (Lfod;Lwz;Ljava/util/function/Consumer;)Lfjo; a method_60316 infoPopupScreen + m (Lfod;Lwz;Ljava/util/function/Consumer;)Lfjo; b method_60317 warningPopupScreen + m (Lfod;Lwz;Ljava/util/function/Consumer;)Lfjo; c method_60318 warningAcknowledgePopupScreen + m ()V + m ()V +c fek net/minecraft/class_4409 com/mojang/realmsclient/gui/screens/RealmsResetNormalWorldScreen + f I B field_45279 CONTENT_WIDTH + f Lflz; C field_45280 layout + f Ljava/util/function/Consumer; D field_27938 callback + f Lfiv; E field_19984 seedEdit + f Lffa; F field_27939 levelType + f Z G field_27940 generateStructures + f Ljava/util/Set; H field_46708 experiments + f Lwz; I field_24206 buttonTitle + f Lwz; a field_46114 TITLE + f Lwz; b field_26506 SEED_LABEL + f I c field_45278 BUTTON_SPACING + m ()Lffg; C method_52693 createWorldGenerationInfo + m (Latp;)V a method_54376 method_54376 + m (Latp;Lfim;)V a method_54377 method_54377 + m (Lfek;Lfki;)V a method_52694 method_52694 + m (Lfim;)V a method_32485 method_32485 + m (Lfit;Lffa;)V a method_32486 method_32486 + m (Lfit;Ljava/lang/Boolean;)V a method_32487 method_32487 + m (Lfmd;)V a method_54378 createExperimentsButton + m (Lfim;)V b method_25202 method_25202 + m (Ljava/util/function/Consumer;Lwz;)V + m ()V +c fel net/minecraft/class_4410 com/mojang/realmsclient/gui/screens/RealmsResetWorldScreen + f Lwz; B field_46127 CREATE_REALM_TITLE + f Lwz; C field_46115 CREATE_REALM_SUBTITLE + f Lwz; D field_46116 CREATE_WORLD_TITLE + f Lwz; E field_46117 CREATE_WORLD_SUBTITLE + f Lwz; F field_46118 RESET_WORLD_TITLE + f Lwz; G field_46119 RESET_WORLD_SUBTITLE + f Lwz; H field_46120 RESET_WORLD_RESET_TASK_TITLE + f Lwz; I field_46121 WORLD_TEMPLATES_TITLE + f Lwz; J field_46122 ADVENTURES_TITLE + f Lwz; K field_46123 EXPERIENCES_TITLE + f Lwz; L field_46124 INSPIRATION_TITLE + f Lfod; M field_20000 lastScreen + f Lfcp; N field_20001 serverData + f Lwz; O field_20006 subtitle + f I P field_20008 subtitleColor + f Lwz; Q field_20501 resetTaskTitle + f Lakr; R field_22714 UPLOAD_LOCATION + f Lakr; S field_22715 ADVENTURE_MAP_LOCATION + f Lakr; T field_22716 SURVIVAL_SPAWN_LOCATION + f Lakr; U field_22708 NEW_WORLD_LOCATION + f Lakr; V field_22709 EXPERIENCE_LOCATION + f Lakr; W field_22710 INSPIRATION_LOCATION + f Lfdf; X field_20495 templates + f Lfdf; Y field_20496 adventuremaps + f Lfdf; Z field_20497 experiences + f Lwz; a field_46125 CREATE_WORLD_RESET_TASK_TITLE + f Lfdf; aa field_20498 inspirations + f Lffp; ab field_46709 realmCreationTask + f Ljava/lang/Runnable; ac field_22711 resetWorldRunnable + f Lflz; ad field_46126 layout + f I b field_19998 slot + f Lorg/slf4j/Logger; c field_19999 LOGGER + m ()V C method_54379 method_54379 + m (Lfde;)V a method_32488 templateSelectionCallback + m (Lfel;)Lfgo; a method_25205 method_25205 + m (Lfel;Lfki;)V a method_53799 method_53799 + m (Lffg;)V a method_32489 generationSelectionCallback + m (Lffn;)V a method_54380 runResetTasks + m (Lfim;)V a method_53800 method_53800 + m (Lfod;ILfcp;Ljava/lang/Runnable;)Lfel; a method_53801 forEmptySlot + m (Lfod;Lfcp;Lffp;Ljava/lang/Runnable;)Lfel; a method_53802 forNewRealm + m (Lfod;Lfcp;Ljava/lang/Runnable;)Lfel; a method_53805 forResetSlot + m (Lfel;)Lfhx; b method_53803 method_53803 + m (Lfim;)V b method_53804 method_53804 + m (Lfim;)V c method_53806 method_53806 + m (Lfim;)V d method_53807 method_53807 + m (Lfim;)V e method_25211 method_25211 + m (Lfim;)V f method_25212 method_25212 + m (Lfim;)V g method_25213 method_25213 + m (Lfod;Lfcp;ILwz;Lwz;ILwz;Ljava/lang/Runnable;)V + m (Lfod;Lfcp;ILwz;Lwz;ILwz;Lffp;Ljava/lang/Runnable;)V + m ()V +c fel$1 net/minecraft/class_4410$1 com/mojang/realmsclient/gui/screens/RealmsResetWorldScreen$1 + f Lfel; a field_20021 field_20021 + m (Lfdf;Lfdf;Lfdf;Lfdf;)V a method_21392 method_21392 + m (Lfel;Ljava/lang/String;)V +c fel$a net/minecraft/class_4410$class_4411 com/mojang/realmsclient/gui/screens/RealmsResetWorldScreen$FrameButton + f Lfel; a field_20031 field_20031 + f Lakr; b field_48384 SLOT_FRAME_SPRITE + f I c field_48385 FRAME_SIZE + f I d field_48386 FRAME_WIDTH + f I u field_46130 IMAGE_SIZE + f Lakr; v field_20032 image + m (Lfel;Lfhx;Lwz;Lakr;Lfim$c;)V + m ()V +c fem net/minecraft/class_4416 com/mojang/realmsclient/gui/screens/RealmsSelectFileToUploadScreen + f Lwz; B field_20058 WORLD_TEXT + f Lwz; C field_26507 HARDCORE_TEXT + f Lwz; D field_26508 COMMANDS_TEXT + f Ljava/text/DateFormat; E field_20054 DATE_FORMAT + f Lffp; F field_48387 realmCreationTask + f Lfel; G field_20050 lastScreen + f J H field_20051 realmId + f I I field_20052 slotId + f Lfim; J field_20053 uploadButton + f Ljava/util/List; K field_20055 levelList + f I L field_20056 selectedWorld + f Lfem$b; M field_20057 worldSelectionList + f Lwz; a field_46131 TITLE + f Lorg/slf4j/Logger; b field_20049 LOGGER + f Lwz; c field_44909 UNABLE_TO_LOAD_WORLD + m ()V C method_21396 loadLevelList + m ()V D method_21401 upload + m (I)I a method_25218 method_25218 + m (Lerg;)Lwz; a method_21400 gameModeName + m (Lfem;)Lfhx; a method_30871 method_30871 + m (Lfim;)V a method_38508 method_38508 + m (I)I b method_55436 method_55436 + m (Lerg;)Ljava/lang/String; b method_21404 formatLastPlayed + m (Lfem;)Lfhx; b method_30872 method_30872 + m (Lfim;)V b method_25221 method_25221 + m (Lfem;)Lfhx; c method_25226 method_25226 + m (Lffp;JILfel;)V + m ()V +c fem$a net/minecraft/class_4416$class_4417 com/mojang/realmsclient/gui/screens/RealmsSelectFileToUploadScreen$Entry + f Lfem; a field_20067 field_20067 + f Lerg; b field_22718 levelSummary + f Ljava/lang/String; c field_26509 name + f Lwz; d field_26510 id + f Lwz; e field_26511 info + m (Lfhz;III)V a method_21411 renderItem + m (Lfem;Lerg;)V +c fem$b net/minecraft/class_4416$class_4418 com/mojang/realmsclient/gui/screens/RealmsSelectFileToUploadScreen$WorldSelectionList + f Lfem; a field_20068 field_20068 + m (Lerg;)V a method_21412 addEntry + m (Lfem$a;)V a method_25227 setSelected + m (Lfem;)V +c fen net/minecraft/class_4419 com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen + f Lwz; B field_45978 TRAILER_BUTTON_NAME + f Lwz; C field_45979 PUBLISHER_BUTTON_NAME + f I D field_45974 BUTTON_WIDTH + f I E field_45975 BUTTON_SPACING + f Lflz; F field_45976 layout + f Ljava/util/function/Consumer; G field_27941 callback + f Lfen$b; H field_20071 worldTemplateList + f Lfcp$d; I field_20079 worldType + f Lfim; J field_20074 selectButton + f Lfim; K field_20075 trailerButton + f Lfim; L field_20076 publisherButton + f Lfde; M field_20072 selectedTemplate + f Ljava/lang/String; N field_20078 currentLink + f [Lwz; O field_20081 warning + f Ljava/util/List; P field_20085 noTemplatesMessage + f Lorg/slf4j/Logger; a field_20069 LOGGER + f Lakr; b field_22721 SLOT_FRAME_SPRITE + f Lwz; c field_45977 SELECT_BUTTON_NAME + m ()V C method_21425 updateButtonStates + m ()V D method_21440 selectTemplate + m ()V E method_21442 onTrailer + m ()V F method_21444 onPublish + m ()I G method_53514 getHeaderHeight + m (Lfdf;)V a method_21415 fetchTemplatesAsync + m (Lfdf;Lfby;)Lcom/mojang/datafixers/util/Either; a method_21416 fetchTemplates + m (Lfen;)Lfgo; a method_25229 method_25229 + m (Lfen;Lfki;)V a method_53515 method_53515 + m (Lffe$b;)I a method_25230 method_25230 + m (Lfhz;IILjava/util/List;)V a method_21414 renderMultilineMessage + m (Lfim;)V a method_25231 method_25231 + m ([Lwz;)V a method_21429 setWarning + m (Lfen;)Lfhx; b method_53516 method_53516 + m (Lfim;)V b method_25233 method_25233 + m (Lfen;)Lfhx; c method_25238 method_25238 + m (Lfim;)V c method_25234 method_25234 + m (Lfen;)Lfhx; d method_25239 method_25239 + m (Lfim;)V d method_25236 method_25236 + m (Lfen;)Lfhx; e method_25240 method_25240 + m (Lfen;)Lfhx; f method_25241 method_25241 + m (Lfen;)Lfhx; g method_25242 method_25242 + m (Lfen;)Lfhx; h method_25243 method_25243 + m (Lwz;Ljava/util/function/Consumer;Lfcp$d;)V + m (Lwz;Ljava/util/function/Consumer;Lfcp$d;Lfdf;)V + m ()V +c fen$1 net/minecraft/class_4419$1 com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen$1 + f Lfdf; a field_20091 val$startPage + f Lfen; b field_20092 field_20092 + m (Lcom/mojang/datafixers/util/Either;)Lfdf; a method_21445 method_21445 + m (Lfen;Ljava/lang/String;Lfdf;)V +c fen$a net/minecraft/class_4419$class_4421 com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen$Entry + f Lfde; a field_20094 template + f Lfen; b field_20095 field_20095 + f Lfjz; c field_45980 WEBSITE_LINK_SPRITES + f Lfjz; d field_45981 TRAILER_LINK_SPRITES + f Lwz; e field_45982 PUBLISHER_LINK_TOOLTIP + f Lwz; f field_45983 TRAILER_LINK_TOOLTIP + f J g field_45984 lastClickTime + f Lfiy; h field_45985 websiteButton + f Lfiy; i field_45986 trailerButton + m (Lfen;Lfde;)V + m ()V +c fen$b net/minecraft/class_4419$class_4420 com/mojang/realmsclient/gui/screens/RealmsSelectWorldTemplateScreen$WorldTemplateList + f Lfen; a field_20093 field_20093 + m (Lfde;)V a method_21448 addEntry + m (Lfen$a;)V a method_25249 setSelected + m (Lfen$a;)Lfde; b method_25250 method_25250 + m ()Z c method_21446 isEmpty + m ()Ljava/util/List; d method_21450 getTemplates + m (Lfen;)V + m (Lfen;Ljava/lang/Iterable;)V +c feo net/minecraft/class_4422 com/mojang/realmsclient/gui/screens/RealmsSettingsScreen + f Lfdx; B field_20096 configureWorldScreen + f Lfcp; C field_20097 serverData + f Lfiv; D field_20100 descEdit + f Lfiv; E field_20101 nameEdit + f I a field_32124 COMPONENT_WIDTH + f Lwz; b field_26514 NAME_LABEL + f Lwz; c field_26515 DESCRIPTION_LABEL + m (Lfim;)V a method_54575 method_54575 + m (Lfim;Ljava/lang/String;)V a method_54576 method_54576 + m (Lfjo;)V a method_25254 method_25254 + m (Lfim;)V b method_25253 method_25253 + m (Lfim;)V c method_25251 method_25251 + m ()V g method_21454 save + m (Lfdx;Lfcp;)V + m ()V +c fep net/minecraft/class_4423 com/mojang/realmsclient/gui/screens/RealmsSlotOptionsScreen + f I B field_32125 DEFAULT_DIFFICULTY + f I C field_32126 DEFAULT_GAME_MODE + f Lwz; D field_26516 NAME_LABEL + f Lwz; E field_27942 SPAWN_PROTECTION_TEXT + f Lfiv; F field_20113 nameEdit + f I G field_20114 column1X + f I H field_20116 columnWidth + f Lfcu; I field_20117 options + f Lfcp$d; J field_20118 worldType + f Lbqo; K field_27943 difficulty + f Ldct; L field_20121 gameMode + f Ljava/lang/String; M field_39187 defaultSlotName + f Ljava/lang/String; N field_39188 worldName + f Z O field_20122 pvp + f Z P field_20123 spawnNPCs + f Z Q field_20124 spawnAnimals + f Z R field_20125 spawnMonsters + f I S field_20120 spawnProtection + f Z T field_20127 commandBlocks + f Z U field_20128 forceGameMode + f Lfep$a; V field_20133 spawnProtectionButton + f Ljava/util/List; a field_22723 DIFFICULTIES + f Ljava/util/List; b field_22724 GAME_MODES + f Lfdx; c field_20109 parentScreen + m ()V C method_21486 saveSettings + m (Lfim;)V a method_25255 method_25255 + m (Lfit;Ldct;)V a method_32496 method_32496 + m (Lfit;Lfit;Lbqo;)V a method_32495 method_32495 + m (Lfit;Ljava/lang/Boolean;)V a method_32497 method_32497 + m (Ljava/lang/Boolean;)V a method_32502 method_32502 + m (Ljava/lang/String;)V a method_43757 setWorldName + m (Ljava/util/List;II)Ljava/lang/Object; a method_32498 findByIndex + m (Ljava/util/List;Ljava/lang/Object;I)I a method_32499 findIndex + m (Ljava/util/function/Consumer;Lfjo;)V a method_43755 method_43755 + m (Ljava/util/function/Consumer;Lwz;Lfit;Ljava/lang/Boolean;)V a method_43754 method_43754 + m (Lwz;Ljava/util/function/Consumer;)Lfit$b; a method_43756 confirmDangerousOption + m (Lfim;)V b method_25256 method_25256 + m (Lfit;Ljava/lang/Boolean;)V b method_32500 method_32500 + m (Ljava/lang/Boolean;)V b method_32503 method_32503 + m (Lfit;Ljava/lang/Boolean;)V c method_32505 method_32505 + m (Ljava/lang/Boolean;)V c method_32504 method_32504 + m (Lfdx;Lfcu;Lfcp$d;I)V + m ()V +c fep$a net/minecraft/class_4423$class_4424 com/mojang/realmsclient/gui/screens/RealmsSlotOptionsScreen$SettingsSlider + f Lfep; a field_20145 field_20145 + f D d field_22725 minValue + f D e field_22726 maxValue + m (Lfep;IIIIFF)V +c feq net/minecraft/class_4425 com/mojang/realmsclient/gui/screens/RealmsSubscriptionInfoScreen + f Lwz; B field_20155 TIME_LEFT_LABEL + f Lwz; C field_20156 DAYS_LEFT_LABEL + f Lwz; D field_26517 SUBSCRIPTION_EXPIRED_TEXT + f Lwz; E field_26518 SUBSCRIPTION_LESS_THAN_A_DAY_TEXT + f Lwz; F field_34033 UNKNOWN + f Lwz; G field_43152 RECURRING_INFO + f Lfod; H field_20147 lastScreen + f Lfcp; I field_20148 serverData + f Lfod; J field_20149 mainScreen + f Lwz; K field_20157 daysLeft + f Lwz; L field_20158 startDate + f Lfda$a; M field_20159 type + f Lorg/slf4j/Logger; a field_20146 LOGGER + f Lwz; b field_20153 SUBSCRIPTION_TITLE + f Lwz; c field_20154 SUBSCRIPTION_START_LABEL + m ()V C method_25271 deleteRealm + m (I)Lwz; a method_21499 daysLeftPresentation + m (J)V a method_21500 getSubscription + m (Lfeq;)Lfgo; a method_25267 method_25267 + m (Lfim;)V a method_25268 method_25268 + m (Lfjo;)V a method_60319 method_60319 + m (J)Lwz; b method_21502 localPresentation + m (Lfeq;)Lfgo; b method_25272 method_25272 + m (Lfim;)V b method_25266 method_25266 + m (Lfim;)V c method_25270 method_25270 + m (Lfod;Lfcp;Lfod;)V + m ()V +c feq$1 net/minecraft/class_4425$1 com/mojang/realmsclient/gui/screens/RealmsSubscriptionInfoScreen$1 + f Lfeq; a field_20164 field_20164 + m ()V a method_25273 method_25273 + m (Lfeq;Ljava/lang/String;)V +c fer net/minecraft/class_4426 com/mojang/realmsclient/gui/screens/RealmsTermsScreen + f Lwz; B field_26525 TERMS_LINK_TEXT + f Lfod; C field_22727 lastScreen + f Lfcp; D field_20168 realmsServer + f Z E field_20170 onLink + f Lorg/slf4j/Logger; a field_20165 LOGGER + f Lwz; b field_26523 TITLE + f Lwz; c field_26524 TERMS_STATIC_TEXT + m ()V C method_21505 agreedToTos + m (Lfim;)V a method_25274 method_25274 + m (Lfim;)V b method_25275 method_25275 + m (Lfod;Lfcp;)V + m ()V +c fes net/minecraft/class_4427 com/mojang/realmsclient/gui/screens/RealmsUploadScreen + f I B field_41773 BAR_TOP + f I C field_41774 BAR_BOTTOM + f I D field_41775 BAR_BORDER + f [Ljava/lang/String; E field_20191 DOTS + f Lwz; F field_26526 VERIFYING_TEXT + f Lfel; G field_20175 lastScreen + f Lerg; H field_20176 selectedLevel + f Lffp; I field_48388 realmCreationTask + f J J field_20177 realmId + f I K field_20178 slotId + f Lfcc; L field_20179 uploadStatus + f Lcom/google/common/util/concurrent/RateLimiter; M field_20180 narrationRateLimiter + f [Lwz; N field_20503 errorMessage + f Lwz; O field_20182 status + f Ljava/lang/String; P field_20183 progress + f Z Q field_20184 cancelled + f Z R field_20185 uploadFinished + f Z S field_20186 showDots + f Z T field_20187 uploadStarted + f Lfim; U field_20188 backButton + f Lfim; V field_20189 cancelButton + f I W field_20190 tickCount + f Ljava/lang/Long; X field_20193 previousWrittenBytes + f Ljava/lang/Long; Y field_20194 previousTimeSnapshot + f J Z field_20195 bytesPersSecond + f Lorg/slf4j/Logger; a field_20174 LOGGER + f Lflz; aa field_48389 layout + f Ljava/util/concurrent/locks/ReentrantLock; b field_20196 UPLOAD_LOCK + f I c field_41776 BAR_WIDTH + m ()V C method_21525 onBack + m ()V D method_21528 onCancel + m ()Lwz; E method_37014 createProgressNarrationMessage + m ()V F method_21536 upload + m ()V G method_21538 uploadCancelled + m ()V J method_22106 method_22106 + m ()V K method_25278 method_25278 + m ()V L method_56132 method_56132 + m (Lfes;Lfki;)V a method_56133 method_56133 + m (Lfet;)V a method_22105 method_22105 + m (Lfhz;J)V a method_21526 drawUploadSpeed0 + m (Lfim;)V a method_25276 method_25276 + m (Ljava/io/File;)Z a method_21515 verify + m (Lorg/apache/commons/compress/archivers/tar/TarArchiveOutputStream;Ljava/lang/String;Ljava/lang/String;Z)V a method_21516 addFileToTarGz + m ([Lwz;)V a method_27460 setErrorMessage + m (Lfim;)V b method_25277 method_25277 + m (Ljava/io/File;)Ljava/io/File; b method_21524 tarGzipArchive + m (Lfhz;)V c method_21532 drawProgressBar + m (Lfhz;)V d method_21534 drawUploadSpeed + m (Lffp;JILfel;Lerg;)V + m ()V +c fet net/minecraft/class_4429 com/mojang/realmsclient/gui/screens/UploadResult + f I a field_20205 statusCode + f Ljava/lang/String; b field_20206 errorMessage + m (ILjava/lang/String;)V +c fet$a net/minecraft/class_4429$class_4430 com/mojang/realmsclient/gui/screens/UploadResult$Builder + f I a field_20207 statusCode + f Ljava/lang/String; b field_20208 errorMessage + m ()Lfet; a method_21541 build + m (I)Lfet$a; a method_21542 withStatusCode + m (Ljava/lang/String;)Lfet$a; a method_21543 withErrorMessage + m ()V +c feu net/minecraft/class_6197 com/mojang/realmsclient/gui/screens/package-info +c fev net/minecraft/class_7581 com/mojang/realmsclient/gui/task/DataFetcher + f Lorg/slf4j/Logger; a field_39696 LOGGER + f Ljava/util/concurrent/Executor; b field_39697 executor + f Ljava/util/concurrent/TimeUnit; c field_39698 resolution + f Lazo; d field_39699 timeSource + m ()Lfev$c; a method_44628 createSubscription + m (Ljava/lang/String;Ljava/util/concurrent/Callable;Ljava/time/Duration;Lfew;)Lfev$e; a method_44629 createTask + m (Ljava/util/concurrent/Executor;Ljava/util/concurrent/TimeUnit;Lazo;)V + m ()V +c fev$a net/minecraft/class_7581$class_7582 com/mojang/realmsclient/gui/task/DataFetcher$ComputationResult + f Lcom/mojang/datafixers/util/Either; a comp_888 value + f J b comp_889 time + m ()Lcom/mojang/datafixers/util/Either; a comp_888 value + m ()J b comp_889 time + m (Lcom/mojang/datafixers/util/Either;J)V +c fev$b net/minecraft/class_7581$class_7583 com/mojang/realmsclient/gui/task/DataFetcher$SubscribedTask + f Lfev$e; a field_39701 task + f Ljava/util/function/Consumer; b field_39702 output + f J c field_39703 lastCheckTime + m ()V a method_44630 runCallbackIfNeeded + m (J)V a method_44631 update + m ()V b method_44632 runCallback + m ()V c method_44633 reset + m (Lfev;Lfev$e;Ljava/util/function/Consumer;)V +c fev$c net/minecraft/class_7581$class_7584 com/mojang/realmsclient/gui/task/DataFetcher$Subscription + f Lfev; a field_39704 field_39704 + f Ljava/util/List; b field_39705 subscriptions + m ()V a method_44634 forceUpdate + m (Lfev$e;Ljava/util/function/Consumer;)V a method_44635 subscribe + m ()V b method_44636 tick + m ()V c method_44637 reset + m (Lfev;)V +c fev$d net/minecraft/class_7581$class_7585 com/mojang/realmsclient/gui/task/DataFetcher$SuccessfulComputationResult + f Ljava/lang/Object; a comp_890 value + f J b comp_891 time + m ()Ljava/lang/Object; a comp_890 value + m ()J b comp_891 time + m (Ljava/lang/Object;J)V +c fev$e net/minecraft/class_7581$class_7586 com/mojang/realmsclient/gui/task/DataFetcher$Task + f Lfev; a field_39706 field_39706 + f Ljava/lang/String; b field_39707 id + f Ljava/util/concurrent/Callable; c field_39708 updater + f J d field_39709 period + f Lfew; e field_39710 repeatStrategy + f Ljava/util/concurrent/CompletableFuture; f field_39711 pendingTask + f Lfev$d; g field_39712 lastResult + f J h field_39713 nextUpdate + m ()V a method_44638 reset + m (J)V a method_44639 updateIfNeeded + m (JLjava/lang/Exception;)V a method_44640 method_44640 + m (JLjava/lang/Object;)V a method_44641 method_44641 + m ()Lfev$a; b method_44642 method_44642 + m (Lfev;Ljava/lang/String;Ljava/util/concurrent/Callable;JLfew;)V +c few net/minecraft/class_7587 com/mojang/realmsclient/gui/task/RepeatedDelayStrategy + f Lfew; a field_39714 CONSTANT + m ()J a method_44643 delayCyclesAfterSuccess + m (I)Lfew; a method_44644 exponentialBackoff + m ()J b method_44645 delayCyclesAfterFailure + m ()V +c few$1 net/minecraft/class_7587$1 com/mojang/realmsclient/gui/task/RepeatedDelayStrategy$1 + m ()V +c few$2 net/minecraft/class_7587$2 com/mojang/realmsclient/gui/task/RepeatedDelayStrategy$2 + f I b field_39715 val$maxBackoff + f Lorg/slf4j/Logger; c field_39716 LOGGER + f I d field_39717 failureCount + m (I)V + m ()V +c fex net/minecraft/class_6198 com/mojang/realmsclient/gui/task/package-info +c fey net/minecraft/class_6199 com/mojang/realmsclient/package-info +c fez net/minecraft/class_4431 com/mojang/realmsclient/util/JsonUtils + m (Ljava/lang/String;Lcom/google/gson/JsonObject;)Ljava/lang/String; a method_49594 getRequiredString + m (Ljava/lang/String;Lcom/google/gson/JsonObject;I)I a method_21545 getIntOr + m (Ljava/lang/String;Lcom/google/gson/JsonObject;J)J a method_21546 getLongOr + m (Ljava/lang/String;Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljava/lang/String; a method_54577 getRequiredStringOr + m (Ljava/lang/String;Lcom/google/gson/JsonObject;Ljava/util/UUID;)Ljava/util/UUID; a method_49595 getUuidOr + m (Ljava/lang/String;Lcom/google/gson/JsonObject;Ljava/util/function/Function;)Ljava/lang/Object; a method_49596 getRequired + m (Ljava/lang/String;Lcom/google/gson/JsonObject;Z)Z a method_21548 getBooleanOr + m (Ljava/lang/String;Lcom/google/gson/JsonObject;)Ljava/util/Date; b method_21544 getDateOr + m (Ljava/lang/String;Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljava/lang/String; b method_21547 getStringOr + m (Ljava/lang/String;Lcom/google/gson/JsonObject;Ljava/util/function/Function;)Ljava/lang/Object; b method_54115 getOptional + m ()V +c ffa net/minecraft/class_5672 com/mojang/realmsclient/util/LevelType + f Lffa; a field_27944 DEFAULT + f Lffa; b field_27945 FLAT + f Lffa; c field_27946 LARGE_BIOMES + f Lffa; d field_27947 AMPLIFIED + f I e field_27948 index + f Lwz; f field_27949 name + f [Lffa; g field_27950 $VALUES + m ()Lwz; a method_32506 getName + m ()I b method_32507 getDtoIndex + m ()[Lffa; c method_36856 $values + m (Ljava/lang/String;IILakq;)V + m ()V +c ffb net/minecraft/class_4432 com/mojang/realmsclient/util/RealmsPersistence + f Ljava/lang/String; a field_32128 FILE_NAME + f Lfcg; b field_22729 GSON + f Lorg/slf4j/Logger; c field_39744 LOGGER + m ()Lffb$a; a method_33423 read + m (Lffb$a;)V a method_33424 save + m ()Lffb$a; b method_21549 readFile + m (Lffb$a;)V b method_21550 writeFile + m ()Ljava/nio/file/Path; c method_25279 getPathToData + m ()V + m ()V +c ffb$a net/minecraft/class_4432$class_4433 com/mojang/realmsclient/util/RealmsPersistence$RealmsPersistenceData + f Ljava/lang/String; a field_20209 newsLink + f Z b field_20210 hasUnreadNews + m ()V +c ffc net/minecraft/class_4446 com/mojang/realmsclient/util/RealmsTextureManager + f Ljava/util/Map; a field_20253 TEXTURES + f Lorg/slf4j/Logger; b field_20256 LOGGER + f Lakr; c field_22730 TEMPLATE_ICON_LOCATION + m (Ljava/lang/String;)Lfaj; a method_48970 loadImage + m (Ljava/lang/String;Ljava/lang/String;)Lakr; a method_48971 worldTemplate + m (Ljava/lang/String;Ljava/lang/String;)Lakr; b method_21564 getTexture + m ()V + m ()V +c ffc$a net/minecraft/class_4446$class_4447 com/mojang/realmsclient/util/RealmsTextureManager$RealmsTexture + f Ljava/lang/String; a comp_1254 image + f Lakr; b comp_1255 textureId + m ()Ljava/lang/String; a comp_1254 image + m ()Lakr; b comp_1255 textureId + m (Ljava/lang/String;Lakr;)V +c ffd net/minecraft/class_4448 com/mojang/realmsclient/util/RealmsUtil + f Lwz; a field_44910 RIGHT_NOW + f I b field_32129 MINUTES + f I c field_32130 HOURS + f I d field_32131 DAYS + m (J)Lwz; a method_21567 convertToAgePresentation + m (Lfhz;IIILjava/util/UUID;)V a method_48972 renderPlayerFace + m (Ljava/util/Date;)Lwz; a method_25282 convertToAgePresentationFromInstant + m ()V + m ()V +c ffe net/minecraft/class_4450 com/mojang/realmsclient/util/TextRenderingUtils + m (Ljava/lang/String;)Ljava/util/List; a method_21575 lineBreak + m (Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; a method_21576 split + m (Ljava/lang/String;Ljava/util/List;)Ljava/util/List; a method_21577 decompose + m (Ljava/lang/String;[Lffe$b;)Ljava/util/List; a method_21578 decompose + m (Ljava/util/List;Ljava/util/List;)Ljava/util/List; a method_21579 insertLinks + m ()V +c ffe$a net/minecraft/class_4450$class_4451 com/mojang/realmsclient/util/TextRenderingUtils$Line + f Ljava/util/List; a field_20266 segments + m ([Lffe$b;)V + m (Ljava/util/List;)V +c ffe$b net/minecraft/class_4450$class_4452 com/mojang/realmsclient/util/TextRenderingUtils$LineSegment + f Ljava/lang/String; a field_20267 fullText + f Ljava/lang/String; b field_20268 linkTitle + f Ljava/lang/String; c field_20269 linkUrl + m ()Ljava/lang/String; a method_21580 renderedText + m (Ljava/lang/String;)Lffe$b; a method_21581 text + m (Ljava/lang/String;Ljava/lang/String;)Lffe$b; a method_21582 link + m ()Z b method_21583 isLink + m ()Ljava/lang/String; c method_21584 getLinkUrl + m (Ljava/lang/String;)V + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +c fff net/minecraft/class_4453 com/mojang/realmsclient/util/UploadTokenCache + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; a field_20270 TOKEN_CACHE + m (J)Ljava/lang/String; a method_21585 get + m (JLjava/lang/String;)V a method_21586 put + m (J)V b method_21587 invalidate + m ()V + m ()V +c ffg net/minecraft/class_4413 com/mojang/realmsclient/util/WorldGenerationInfo + f Ljava/lang/String; a comp_1976 seed + f Lffa; b comp_1977 levelType + f Z c comp_1978 generateStructures + f Ljava/util/Set; d comp_1991 experiments + m ()Ljava/lang/String; a comp_1976 seed + m ()Lffa; b comp_1977 levelType + m ()Z c comp_1978 generateStructures + m ()Ljava/util/Set; d comp_1991 experiments + m (Ljava/lang/String;Lffa;ZLjava/util/Set;)V +c ffh net/minecraft/class_6200 com/mojang/realmsclient/util/package-info +c ffi net/minecraft/class_4435 com/mojang/realmsclient/util/task/CloseServerTask + f Lorg/slf4j/Logger; b field_36354 LOGGER + f Lwz; c field_46132 TITLE + f Lfcp; d field_20212 serverData + f Lfdx; e field_20213 configureScreen + m (Lfcp;Lfdx;)V + m ()V +c ffj net/minecraft/class_4438 com/mojang/realmsclient/util/task/ConnectTask + f Lwz; b field_46133 TITLE + f Lgwn; c field_20222 realmsConnect + f Lfcp; d field_26922 server + f Lfcq; e field_20223 address + m (Lfod;Lfcp;Lfcq;)V + m ()V +c ffk net/minecraft/class_8844 com/mojang/realmsclient/util/task/CreateSnapshotRealmTask + f Lorg/slf4j/Logger; b field_46710 LOGGER + f Lwz; c field_46711 TITLE + f J d field_46712 parentId + f Lffg; e field_46713 generationInfo + f Ljava/lang/String; f field_46714 name + f Ljava/lang/String; g field_46715 description + f Lfbt; h field_46716 realmsMainScreen + f Lffp; i field_46717 creationTask + f Lffq; j field_46718 generateWorldTask + m (Lfcp;)V a method_54381 method_54381 + m (Lfcp;)V b method_54382 method_54382 + m (Lfbt;JLffg;Ljava/lang/String;Ljava/lang/String;)V + m ()V +c ffl net/minecraft/class_4436 com/mojang/realmsclient/util/task/DownloadTask + f Lorg/slf4j/Logger; b field_36355 LOGGER + f Lwz; c field_46134 TITLE + f J d field_20214 realmId + f I e field_20215 slot + f Lfod; f field_20216 lastScreen + f Ljava/lang/String; g field_20217 downloadName + m (Z)V a method_25283 method_25283 + m (JILjava/lang/String;Lfod;)V + m ()V +c ffm net/minecraft/class_4439 com/mojang/realmsclient/util/task/GetServerDetailsTask + f Lwz; b field_47580 APPLYING_PACK_TEXT + f Lorg/slf4j/Logger; c field_36356 LOGGER + f Lwz; d field_46135 TITLE + f Lfcp; e field_20224 server + f Lfod; f field_20225 lastScreen + m (Lfcp;)Ljava/util/UUID; a method_55605 generatePackId + m (Lfcq;)Lfed; a method_32511 connectScreen + m (Lfcq;Ljava/lang/Throwable;)Ljava/lang/Void; a method_25286 method_25286 + m (Lfcq;Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture; a method_32515 scheduleResourcePackDownload + m (Lfcq;Ljava/util/UUID;Ljava/util/function/Function;)Lfjo; a method_32512 resourcePackDownloadConfirmationScreen + m (Lfcq;Ljava/util/UUID;Ljava/util/function/Function;Lfjo;)V a method_32513 method_32513 + m (Ljava/util/function/Function;Lfcq;)V a method_32514 method_32514 + m ()Lfcq; f method_32516 fetchServerAddress + m (Lfod;Lfcp;)V + m ()V +c ffn net/minecraft/class_4358 com/mojang/realmsclient/util/task/LongRunningTask + f I a field_32132 NUMBER_OF_RETRIES + f Lorg/slf4j/Logger; b field_22731 LOGGER + f Z c field_46136 aborted + m ()Lwz; a method_53808 getTitle + m (J)V a method_25287 pause + m (Lfdj;)V a method_53809 error + m (Lfgo;Lfod;)V a method_25288 method_25288 + m (Lfgo;Lwz;)V a method_53810 method_53810 + m (Lfod;)V a method_25289 setScreen + m (Ljava/lang/Exception;)V a method_53811 error + m (Lwz;)V a method_21067 error + m ()V b method_21071 abortTask + m ()V c method_21068 tick + m ()Z d method_21065 aborted + m ()V e method_21070 init + m ()V + m ()V +c ffo net/minecraft/class_4437 com/mojang/realmsclient/util/task/OpenServerTask + f Lorg/slf4j/Logger; b field_36357 LOGGER + f Lwz; c field_46137 TITLE + f Lfcp; d field_20218 serverData + f Lfod; e field_20219 returnScreen + f Z f field_20220 join + f Lfgo; g field_34016 minecraft + m ()V f method_37409 method_37409 + m (Lfcp;Lfod;ZLfgo;)V + m ()V +c ffp net/minecraft/class_4445 com/mojang/realmsclient/util/task/RealmCreationTask + f Lorg/slf4j/Logger; b field_36362 LOGGER + f Lwz; c field_46141 TITLE + f Ljava/lang/String; d field_20249 name + f Ljava/lang/String; e field_20250 motd + f J f field_20251 realmId + m (JLjava/lang/String;Ljava/lang/String;)V + m ()V +c ffq net/minecraft/class_5673 com/mojang/realmsclient/util/task/ResettingGeneratedWorldTask + f Lffg; b field_27951 generationInfo + m (Lffg;JLwz;Ljava/lang/Runnable;)V +c ffr net/minecraft/class_5674 com/mojang/realmsclient/util/task/ResettingTemplateWorldTask + f Lfde; b field_27952 template + m (Lfde;JLwz;Ljava/lang/Runnable;)V +c ffs net/minecraft/class_4440 com/mojang/realmsclient/util/task/ResettingWorldTask + f Lorg/slf4j/Logger; b field_36358 LOGGER + f J c field_20232 serverId + f Lwz; d field_20235 title + f Ljava/lang/Runnable; e field_22732 callback + m (Lfby;J)V a method_32517 sendResetRequest + m (JLwz;Ljava/lang/Runnable;)V + m ()V +c fft net/minecraft/class_4441 com/mojang/realmsclient/util/task/RestoreTask + f Lorg/slf4j/Logger; b field_36359 LOGGER + f Lwz; c field_46138 TITLE + f Lfce; d field_20236 backup + f J e field_20237 realmId + f Lfdx; f field_20238 lastScreen + m (Lfce;JLfdx;)V + m ()V +c ffu net/minecraft/class_4442 com/mojang/realmsclient/util/task/SwitchMinigameTask + f Lorg/slf4j/Logger; b field_36360 LOGGER + f Lwz; c field_46139 TITLE + f J d field_20239 realmId + f Lfde; e field_20240 worldTemplate + f Lfdx; f field_20241 lastScreen + m (JLfde;Lfdx;)V + m ()V +c ffv net/minecraft/class_4443 com/mojang/realmsclient/util/task/SwitchSlotTask + f Lorg/slf4j/Logger; b field_36361 LOGGER + f Lwz; c field_46140 TITLE + f J d field_20242 realmId + f I e field_20243 slot + f Ljava/lang/Runnable; f field_22733 callback + m (JILjava/lang/Runnable;)V + m ()V +c ffw net/minecraft/class_6201 com/mojang/realmsclient/util/task/package-info +c ffx net/minecraft/class_4061 net/minecraft/client/AttackIndicatorStatus + f Lffx; a field_18151 OFF + f Lffx; b field_18152 CROSSHAIR + f Lffx; c field_18153 HOTBAR + f Ljava/util/function/IntFunction; d field_18154 BY_ID + f I e field_18155 id + f Ljava/lang/String; f field_18156 key + f [Lffx; g field_18157 $VALUES + m (I)Lffx; a method_18488 byId + m ()[Lffx; c method_36858 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c ffy net/minecraft/class_4184 net/minecraft/client/Camera + f F a field_32133 FOG_DISTANCE_SCALE + f F b field_47841 DEFAULT_CAMERA_DISTANCE + f Lorg/joml/Vector3f; c field_52123 FORWARDS + f Lorg/joml/Vector3f; d field_52124 UP + f Lorg/joml/Vector3f; e field_52125 LEFT + f Z f field_18709 initialized + f Ldcc; g field_18710 level + f Lbsr; h field_18711 entity + f Lexc; i field_18712 position + f Ljd$a; j field_18713 blockPosition + f Lorg/joml/Vector3f; k field_18714 forwards + f Lorg/joml/Vector3f; l field_18715 up + f Lorg/joml/Vector3f; m field_18716 left + f F n field_18717 xRot + f F o field_18718 yRot + f Lorg/joml/Quaternionf; p field_21518 rotation + f Z q field_18719 detached + f F r field_18721 eyeHeight + f F s field_18722 eyeHeightOld + f F t field_47549 partialTickTime + m ()V a method_19317 tick + m (DDD)V a method_19327 setPosition + m (F)F a method_19318 getMaxZoom + m (FF)V a method_19325 setRotation + m (FFF)V a method_19324 move + m (Ldcc;Lbsr;ZZF)V a method_19321 setup + m (Lexc;)V a method_19322 setPosition + m ()Lexc; b method_19326 getPosition + m ()Ljd; c method_19328 getBlockPosition + m ()F d method_19329 getXRot + m ()F e method_19330 getYRot + m ()Lorg/joml/Quaternionf; f method_23767 rotation + m ()Lbsr; g method_19331 getEntity + m ()Z h method_19332 isInitialized + m ()Z i method_19333 isDetached + m ()Lffy$a; j method_36425 getNearPlane + m ()Lepg; k method_19334 getFluidInCamera + m ()Lorg/joml/Vector3f; l method_19335 getLookVector + m ()Lorg/joml/Vector3f; m method_19336 getUpVector + m ()Lorg/joml/Vector3f; n method_35689 getLeftVector + m ()V o method_19337 reset + m ()F p method_55437 getPartialTickTime + m ()V + m ()V +c ffy$a net/minecraft/class_4184$class_6355 net/minecraft/client/Camera$NearPlane + f Lexc; a field_33622 forward + f Lexc; b field_33623 left + f Lexc; c field_33624 up + m ()Lexc; a method_36426 getTopLeft + m (FF)Lexc; a method_36427 getPointOnPlane + m ()Lexc; b method_36429 getTopRight + m ()Lexc; c method_36430 getBottomLeft + m ()Lexc; d method_36431 getBottomRight + m (Lexc;Lexc;Lexc;)V +c ffz net/minecraft/class_5498 net/minecraft/client/CameraType + f Lffz; a field_26664 FIRST_PERSON + f Lffz; b field_26665 THIRD_PERSON_BACK + f Lffz; c field_26666 THIRD_PERSON_FRONT + f [Lffz; d field_26667 VALUES + f Z e field_26668 firstPerson + f Z f field_26669 mirrored + f [Lffz; g field_26670 $VALUES + m ()Z a method_31034 isFirstPerson + m ()Z b method_31035 isMirrored + m ()Lffz; c method_31036 cycle + m ()[Lffz; d method_36859 $values + m (Ljava/lang/String;IZZ)V + m ()V +c fga net/minecraft/class_299 net/minecraft/client/ClientRecipeBook + f Lorg/slf4j/Logger; c field_25622 LOGGER + f Ljava/util/Map; d field_1638 collectionsByTab + f Ljava/util/List; e field_25778 allCollections + m (Lcyz;)Ljava/lang/Object; a method_29969 method_29969 + m (Lfgw;)Ljava/util/List; a method_1396 getCollection + m (Ljava/lang/Iterable;)Ljava/util/Map; a method_30283 categorizeAndGroupRecipes + m (Ljava/lang/Iterable;Lka;)V a method_1401 setupCollections + m (Ljava/util/Map;Lfgw;)Ljava/util/stream/Stream; a method_30280 method_30280 + m (Ljava/util/Map;Lfgw;Ljava/util/List;)V a method_30281 method_30281 + m (Ljava/util/Map;Lka;Lcom/google/common/collect/ImmutableList$Builder;Lfgw;Ljava/util/List;)V a method_30279 method_30279 + m (Lka;Ljava/util/List;)Lfse; a method_48464 method_48464 + m ()Ljava/util/List; b method_1393 getCollections + m (Lfgw;)Ljava/util/List; b method_30282 method_30282 + m (Lfgw;)Ljava/util/List; c method_30284 method_30284 + m (Lczb;)Lfgw; g method_1400 getCategory + m ()V + m ()V +c fga$1 net/minecraft/class_299$1 net/minecraft/client/ClientRecipeBook$1 + f [I a field_40377 $SwitchMap$net$minecraft$world$item$crafting$CraftingBookCategory + f [I b field_40378 $SwitchMap$net$minecraft$world$item$crafting$CookingBookCategory + m ()V +c fgb net/minecraft/class_4063 net/minecraft/client/CloudStatus + f Lfgb; a field_18162 OFF + f Lfgb; b field_18163 FAST + f Lfgb; c field_18164 FANCY + f Lcom/mojang/serialization/Codec; d field_45285 CODEC + f I e field_38440 id + f Ljava/lang/String; f field_45286 legacyName + f Ljava/lang/String; g field_18167 key + f [Lfgb; h field_18168 $VALUES + m ()[Lfgb; e method_36860 $values + m (Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V + m ()V +c fgc net/minecraft/class_8657 net/minecraft/client/CommandHistory + f Lorg/slf4j/Logger; a field_45287 LOGGER + f I b field_45288 MAX_PERSISTED_COMMAND_HISTORY + f Ljava/lang/String; c field_45289 PERSISTED_COMMANDS_FILE_NAME + f Ljava/nio/file/Path; d field_45290 commandsPath + f Laxb; e field_45291 lastCommands + m ()Ljava/util/Collection; a method_52696 history + m (Ljava/lang/String;)V a method_52697 addCommand + m ()V b method_52698 save + m (Ljava/nio/file/Path;)V + m ()V +c fgd net/minecraft/class_5222 net/minecraft/client/ComponentCollector + f Ljava/util/List; a field_25260 parts + m ()Lxe; a method_27461 getResult + m (Lxe;)V a method_27462 append + m ()Lxe; b method_27463 getResultOrEmpty + m ()V c method_35690 reset + m ()V +c fge net/minecraft/class_300 net/minecraft/client/DebugQueryHandler + f Lfzg; a field_1640 connection + f I b field_1641 transactionId + f Ljava/util/function/Consumer; c field_1642 callback + m (ILjava/util/function/Consumer;)V a method_1405 queryEntityTag + m (ILub;)Z a method_1404 handleResponse + m (Ljava/util/function/Consumer;)I a method_1402 startTransaction + m (Ljd;Ljava/util/function/Consumer;)V a method_1403 queryBlockEntityTag + m (Lfzg;)V +c fgf net/minecraft/class_9779 net/minecraft/client/DeltaTracker + f Lfgf; a field_51955 ZERO + f Lfgf; b field_51956 ONE + m ()F a method_60636 getGameTimeDeltaTicks + m (Z)F a method_60637 getGameTimeDeltaPartialTick + m ()F b method_60638 getRealtimeDeltaTicks + m ()V +c fgf$a net/minecraft/class_9779$class_9780 net/minecraft/client/DeltaTracker$DefaultValue + f F c field_51957 value + m (F)V +c fgf$b net/minecraft/class_9779$class_9781 net/minecraft/client/DeltaTracker$Timer + f F c field_51958 deltaTicks + f F d field_51959 deltaTickResidual + f F e field_51960 realtimeDeltaTicks + f F f field_51961 pausedDeltaTickResidual + f J g field_51962 lastMs + f J h field_51963 lastUiMs + f F i field_51964 msPerTick + f Lit/unimi/dsi/fastutil/floats/FloatUnaryOperator; j field_51965 targetMsptProvider + f Z k field_51966 paused + f Z l field_51967 frozen + m (J)I a method_60639 advanceGameTime + m (JZ)I a method_60640 advanceTime + m (J)V b method_60641 advanceRealTime + m (Z)V b method_60642 updatePauseState + m ()V c method_60643 pause + m (Z)V c method_60644 updateFrozenState + m ()V d method_60645 unPause + m (FJLit/unimi/dsi/fastutil/floats/FloatUnaryOperator;)V +c fgg net/minecraft/class_333 net/minecraft/client/GameNarrator + f Lwz; a field_18967 NO_TITLE + f Lorg/slf4j/Logger; b field_18210 LOGGER + f Lfgo; c field_39755 minecraft + f Lcom/mojang/text2speech/Narrator; d field_2055 narrator + m ()Z a method_1791 isActive + m (Lfgq;)V a method_1792 updateNarratorStatus + m (Ljava/lang/String;)V a method_19788 sayNow + m (Lwz;)V a method_44708 sayChat + m (Z)V a method_52183 checkStatus + m ()V b method_1793 clear + m (Ljava/lang/String;)V b method_37016 logNarratedMessage + m (Lwz;)V b method_47976 say + m ()V c method_20371 destroy + m (Lwz;)V c method_37015 sayNow + m ()Lfgq; d method_20602 getStatus + m (Lfgo;)V + m ()V +c fgg$a net/minecraft/class_333$class_8571 net/minecraft/client/GameNarrator$NarratorInitException + m (Ljava/lang/String;)V +c fgh net/minecraft/class_5365 net/minecraft/client/GraphicsStatus + f Lfgh; a field_25427 FAST + f Lfgh; b field_25428 FANCY + f Lfgh; c field_25429 FABULOUS + f Ljava/util/function/IntFunction; d field_25430 BY_ID + f I e field_25431 id + f Ljava/lang/String; f field_25432 key + f [Lfgh; g field_25433 $VALUES + m (I)Lfgh; a method_29592 byId + m ()[Lfgh; c method_36861 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c fgi net/minecraft/class_303 net/minecraft/client/GuiMessage + f I a comp_892 addedTime + f Lwz; b comp_893 content + f Lxl; c comp_915 signature + f Lfgj; d comp_894 tag + m ()Lfgj$a; a method_58742 icon + m ()I b comp_892 addedTime + m ()Lwz; c comp_893 content + m ()Lxl; d comp_915 signature + m ()Lfgj; e comp_894 tag + m (ILwz;Lxl;Lfgj;)V +c fgi$a net/minecraft/class_303$class_7590 net/minecraft/client/GuiMessage$Line + f I a comp_895 addedTime + f Laya; b comp_896 content + f Lfgj; c comp_897 tag + f Z d comp_898 endOfEntry + m ()I a comp_895 addedTime + m ()Laya; b comp_896 content + m ()Lfgj; c comp_897 tag + m ()Z d comp_898 endOfEntry + m (ILaya;Lfgj;Z)V +c fgj net/minecraft/class_7591 net/minecraft/client/GuiMessageTag + f I a comp_899 indicatorColor + f Lfgj$a; b comp_900 icon + f Lwz; c comp_901 text + f Ljava/lang/String; d comp_902 logTag + f Lwz; e field_40379 SYSTEM_TEXT + f Lwz; f field_41092 SYSTEM_TEXT_SINGLE_PLAYER + f Lwz; g field_39756 CHAT_NOT_SECURE_TEXT + f Lwz; h field_39757 CHAT_MODIFIED_TEXT + f Lwz; i field_45897 CHAT_ERROR_TEXT + f I j field_39758 CHAT_NOT_SECURE_INDICATOR_COLOR + f I k field_39759 CHAT_MODIFIED_INDICATOR_COLOR + f Lfgj; l field_39789 SYSTEM + f Lfgj; m field_41093 SYSTEM_SINGLE_PLAYER + f Lfgj; n field_39760 CHAT_NOT_SECURE + f Lfgj; o field_45898 CHAT_ERROR + m ()Lfgj; a method_44751 system + m (Ljava/lang/String;)Lfgj; a method_44710 chatModified + m ()Lfgj; b method_47391 systemSinglePlayer + m ()Lfgj; c method_44709 chatNotSecure + m ()Lfgj; d method_53461 chatError + m ()I e comp_899 indicatorColor + m ()Lfgj$a; f comp_900 icon + m ()Lwz; g comp_901 text + m ()Ljava/lang/String; h comp_902 logTag + m (ILfgj$a;Lwz;Ljava/lang/String;)V + m ()V +c fgj$a net/minecraft/class_7591$class_7592 net/minecraft/client/GuiMessageTag$Icon + f Lfgj$a; a field_39763 CHAT_MODIFIED + f Lakr; b field_45292 sprite + f I c field_39766 width + f I d field_39767 height + f [Lfgj$a; e field_39768 $VALUES + m ()[Lfgj$a; a method_44711 $values + m (Lfhz;II)V a method_44712 draw + m (Ljava/lang/String;ILakr;II)V + m ()V +c fgk net/minecraft/class_302 net/minecraft/client/HotbarManager + f I a field_32135 NUM_HOTBAR_GROUPS + f Lorg/slf4j/Logger; b field_1647 LOGGER + f Ljava/nio/file/Path; c field_1646 optionsFile + f Lcom/mojang/datafixers/DataFixer; d field_1648 fixerUpper + f [Lged; e field_1644 hotbars + f Z f field_1645 loaded + m ()V a method_1409 save + m (I)Lged; a method_1410 get + m (Ljava/lang/String;)V a method_56825 method_56825 + m ()V b method_1411 load + m (Ljava/nio/file/Path;Lcom/mojang/datafixers/DataFixer;)V + m ()V +c fgl net/minecraft/class_8015 net/minecraft/client/InputType + f Lfgl; a field_41777 NONE + f Lfgl; b field_41778 MOUSE + f Lfgl; c field_43097 KEYBOARD_ARROW + f Lfgl; d field_41780 KEYBOARD_TAB + f [Lfgl; e field_41781 $VALUES + m ()Z a method_48182 isMouse + m ()Z b method_48183 isKeyboard + m ()[Lfgl; c method_48184 $values + m (Ljava/lang/String;I)V + m ()V +c fgm net/minecraft/class_304 net/minecraft/client/KeyMapping + f Ljava/lang/String; a field_32136 CATEGORY_MOVEMENT + f Ljava/lang/String; b field_32137 CATEGORY_MISC + f Ljava/lang/String; c field_32138 CATEGORY_MULTIPLAYER + f Ljava/lang/String; d field_32139 CATEGORY_GAMEPLAY + f Ljava/lang/String; e field_32140 CATEGORY_INVENTORY + f Ljava/lang/String; f field_32141 CATEGORY_INTERFACE + f Ljava/lang/String; g field_32142 CATEGORY_CREATIVE + f Ljava/util/Map; h field_1657 ALL + f Ljava/util/Map; i field_1658 MAP + f Ljava/util/Set; j field_1652 CATEGORIES + f Ljava/util/Map; k field_1656 CATEGORY_SORT_ORDER + f Ljava/lang/String; l field_1660 name + f Lfae$a; m field_1654 defaultKey + f Ljava/lang/String; n field_1659 category + f Lfae$a; o field_1655 key + f Z p field_1653 isDown + f I q field_1661 clickCount + m ()V a method_1424 setAll + m (I)Z a method_1433 matchesMouse + m (II)Z a method_1417 matches + m (Lfae$a;)V a method_1420 click + m (Lfae$a;Z)V a method_1416 set + m (Lfgm;)I a method_1430 compareTo + m (Ljava/lang/String;)Ljava/util/function/Supplier; a method_1419 createNameSupplier + m (Ljava/util/HashMap;)V a method_1418 method_1418 + m (Z)V a method_23481 setDown + m ()V b method_1437 releaseAll + m (Lfae$a;)V b method_1422 setKey + m (Lfgm;)Z b method_1435 same + m (Ljava/lang/String;)Lwz; b method_27465 method_27465 + m ()V c method_52231 resetToggleKeys + m ()V d method_1426 resetMapping + m ()Z e method_1434 isDown + m ()Ljava/lang/String; f method_1423 getCategory + m ()Z g method_1436 consumeClick + m ()Ljava/lang/String; h method_1431 getName + m ()Lfae$a; i method_1429 getDefaultKey + m ()Z j method_1415 isUnbound + m ()Lwz; k method_16007 getTranslatedKeyMessage + m ()Z l method_1427 isDefault + m ()Ljava/lang/String; m method_1428 saveString + m ()V n method_1425 release + m (Ljava/lang/String;ILjava/lang/String;)V + m (Ljava/lang/String;Lfae$b;ILjava/lang/String;)V + m ()V +c fgn net/minecraft/class_309 net/minecraft/client/KeyboardHandler + f I a field_32143 DEBUG_CRASH_TIME + f Lfgo; b field_1678 minecraft + f Lezy; c field_16241 clipboardManager + f J d field_1682 debugCrashKeyTime + f J e field_1681 debugCrashKeyReportedTime + f J f field_1680 debugCrashKeyReportedCount + f Z g field_1679 handledDebugKey + m ()Ljava/lang/String; a method_1460 getClipboard + m (I)Z a method_35696 handleChunkDebugKeys + m (IJ)V a method_1461 method_1461 + m (ILfod;[ZIII)V a method_1454 method_1454 + m (J)V a method_1472 setup + m (JII)V a method_1457 charTyped + m (JIIII)V a method_1466 keyPress + m (Lakr;Lbsr;Lub;)V a method_1471 method_1471 + m (Lakr;Lexc;Lub;)V a method_1469 copyCreateEntityCommand + m (Ldtc;Ljd;Lub;)V a method_1475 copyCreateBlockCommand + m (Lfki;CI)V a method_1473 method_1473 + m (Lfki;II)V a method_1458 method_1458 + m (Ljava/lang/String;)V a method_1455 setClipboard + m (Ljava/lang/String;[Ljava/lang/Object;)V a method_1459 debugFeedbackTranslated + m (Ljava/nio/file/Path;Lxw;)Lxw; a method_49711 method_49711 + m (Ln;Lwz;)V a method_37273 debugComponent + m (Lwz;)V a method_37272 debugFeedbackComponent + m (ZZ)V a method_1465 copyRecreateCommand + m ()V b method_1474 tick + m (I)Z b method_1468 handleDebugKeys + m (JII)V b method_22675 method_22675 + m (JIIII)V b method_22676 method_22676 + m (Ldtc;Ljd;Lub;)V b method_1467 method_1467 + m (Ljava/lang/String;[Ljava/lang/Object;)V b method_1456 debugWarningTranslated + m (Lwz;)V b method_1463 method_1463 + m (JII)V c method_22677 method_22677 + m (JIIII)V c method_22678 method_22678 + m (Ljava/lang/String;[Ljava/lang/Object;)V c method_35697 debugFeedback + m (Lwz;)V c method_1464 method_1464 + m (Lfgo;)V +c fgn$1 net/minecraft/class_309$1 net/minecraft/client/KeyboardHandler$1 + f [I a field_1685 $SwitchMap$net$minecraft$world$phys$HitResult$Type + m ()V +c fgo net/minecraft/class_310 net/minecraft/client/Minecraft + f Z A field_32144 wireframe + f Z B field_20907 sectionPath + f Z C field_20908 sectionVisibility + f Z D field_1730 smartCull + f Lfgo; E field_1700 instance + f Lorg/slf4j/Logger; F field_1762 LOGGER + f I G field_32145 MAX_TICKS_PER_UPDATE + f Lakr; H field_36433 REGIONAL_COMPLIANCIES + f Ljava/util/concurrent/CompletableFuture; I field_18009 RESOURCE_RELOAD_INITIAL_TASK + f Lwz; J field_26841 SOCIAL_INTERACTIONS_NOT_AVAILABLE + f J K field_46550 canary + f Ljava/nio/file/Path; L field_1757 resourcePackDirectory + f Ljava/util/concurrent/CompletableFuture; M field_45899 profileFuture + f Lgqm; N field_1764 textureManager + f Lcom/mojang/datafixers/DataFixer; O field_1768 fixerUpper + f Lgfr; P field_1686 virtualScreen + f Lfam; Q field_1704 window + f Lfgf$b; R field_1728 timer + f Lgff; S field_20909 renderBuffers + f Lgkh; T field_1731 entityRenderDispatcher + f Lglh; U field_1742 itemRenderer + f Lfhb; V field_1726 user + f Ljava/util/concurrent/atomic/AtomicReference; W field_17405 progressListener + f Lfgk; X field_1732 hotbarManager + f Lfgl; Y field_41782 lastInputType + f Ljava/lang/String; Z field_1711 launchedVersion + f Lgft; aA field_1756 blockRenderer + f Lgrk; aB field_18008 paintingTextures + f Lgrj; aC field_18173 mobEffectTextures + f Lgri; aD field_50035 mapDecorationTextures + f Lfia; aE field_45293 guiSprites + f Lfkw; aF field_1702 toast + f Lgwi; aG field_1758 tutorial + f Lfsu; aH field_26842 playerSocialManager + f Lfyg; aI field_27387 entityModels + f Lggy; aJ field_27388 blockEntityRenderDispatcher + f Lgvj; aK field_41331 telemetryManager + f Lfzr; aL field_39068 profileKeyPairManager + f Lfdm; aM field_39718 realmsDataFetcher + f Lgej; aN field_44539 quickPlayLog + f Lguo; aO field_1766 singleplayerServer + f Lvt; aP field_1746 pendingConnection + f Z aQ field_1759 isLocalServer + f I aR field_1752 rightClickDelay + f Z aS field_1734 pause + f J aT field_1750 lastNanoTime + f J aU field_1712 lastTime + f I aV field_1735 frames + f Lfnx; aW field_18175 overlay + f Z aX field_46551 clientLevelTeardownInProgress + f Ljava/lang/Thread; aY field_1696 gameThread + f Z a field_1703 ON_OSX + f Z aZ field_1698 running + f Ljava/lang/String; aa field_1720 versionType + f Ljava/net/Proxy; ab field_1739 proxy + f Lerf; ac field_1748 levelSource + f Z ad field_1721 demo + f Z ae field_25033 allowsMultiplayer + f Z af field_25034 allowsChat + f Laub; ag field_1745 resourceManager + f Lasu; ah field_40380 vanillaPackResources + f Lgtc; ai field_40381 downloadedPackSource + f Latp; aj field_1715 resourcePackRepository + f Lgrt; ak field_1717 languageManager + f Lfhq; al field_1751 blockColors + f Lfhu; am field_1760 itemColors + f Lezv; an field_1689 mainRenderTarget + f Lgvf; ao field_1727 soundManager + f Lgva; ap field_1714 musicManager + f Lflb; aq field_1708 fontManager + f Lgrn; ar field_17763 splashManager + f Lget; as field_25671 gpuWarnlistManager + f Lfgu; at field_36434 regionalCompliancies + f Lcom/mojang/authlib/yggdrasil/YggdrasilAuthenticationService; au field_39420 authenticationService + f Lcom/mojang/authlib/minecraft/MinecraftSessionService; av field_1723 minecraftSessionService + f Lcom/mojang/authlib/minecraft/UserApiService; aw field_26902 userApiService + f Ljava/util/concurrent/CompletableFuture; ax field_47680 userPropertiesFuture + f Lgrm; ay field_1707 skinManager + f Lgst; az field_1763 modelManager + f Lakr; b field_1740 DEFAULT_FONT + f Ljava/util/function/Supplier; ba field_1747 delayedCrash + f I bb field_1738 fps + f J bc field_41332 frameTimeNs + f Z bd field_1695 windowActive + f Ljava/util/Queue; be field_17404 progressTasks + f Ljava/util/concurrent/CompletableFuture; bf field_18174 pendingReload + f Lfkx; bg field_26843 socialInteractionsToast + f Lbnf; bh field_16240 profiler + f I bi field_22224 fpsPieRenderTicks + f Lbmz; bj field_22225 fpsPieProfiler + f Lbne; bk field_22226 fpsPieResults + f Lbot; bl field_29569 metricsRecorder + f Lfgx; bm field_33697 reloadStateTracker + f J bn field_37855 savedCpuDuration + f D bo field_37856 gpuUtilization + f Lfbb$a; bp field_37857 currentFrameProfile + f Lfgg; bq field_39769 narrator + f Lfzz; br field_39770 chatListener + f Lgao; bs field_39492 reportingContext + f Lfgc; bt field_45294 commandHistory + f Lews; bu field_45295 directoryValidator + f Z bv field_45900 gameLoadFinished + f J bw field_46552 clientStartTimeMs + f J bx field_46553 clientTickCount + f Ljava/lang/String; by field_1701 debugPath + f Lakr; c field_24211 UNIFORM_FONT + f Lakr; d field_1749 ALT_FONT + f Ljava/lang/String; e field_33735 UPDATE_DRIVERS_ADVICE + f Lgex; f field_1769 levelRenderer + f Lgcp; g field_1713 particleEngine + f Lfhx; h field_1772 font + f Lfhx; i field_39924 fontFilterFishy + f Lges; j field_1773 gameRenderer + f Lgim; k field_1709 debugRenderer + f Lfhy; l field_1705 gui + f Lfgs; m field_1690 options + f Lfgp; n field_1729 mouseHandler + f Lfgn; o field_1774 keyboardHandler + f Ljava/io/File; p field_1697 gameDirectory + f Lfzo; q field_1761 gameMode + f Lfzf; r field_1687 level + f Lgeb; s field_1724 player + f Lbsr; t field_1719 cameraEntity + f Lbsr; u field_1692 crosshairPickEntity + f Lexa; v field_1765 hitResult + f I w field_1771 missTime + f Z x field_1743 noRender + f Lfod; y field_1755 screen + f Ljava/lang/String; z field_1770 fpsString + m ()Z C method_47602 telemetryOptInExtra + m ()Z D method_47595 extraTelemetryAvailable + m ()Z E method_47596 allowsTelemetry + m ()Z F method_29043 allowsMultiplayer + m ()Z G method_35706 allowsRealms + m ()Lcom/mojang/authlib/minecraft/BanDetails; H method_44647 multiplayerBan + m ()Z I method_53518 isNameBanned + m ()Lfgo$a; J method_33884 getChatStatus + m ()Z K method_1530 isDemo + m ()Lfzg; L method_1562 getConnection + m ()Z M method_1498 renderNames + m ()Z N method_1517 useFancyGraphics + m ()Z O method_29611 useShaderTransparency + m ()Z P method_1588 useAmbientOcclusion + m ()Lfgo; Q method_1551 getInstance + m ()Ljava/util/concurrent/CompletableFuture; R method_1513 delayTextureReload + m ()Lfzt; S method_1558 getCurrentServer + m ()Z T method_1542 isLocalServer + m ()Z U method_1496 hasSingleplayerServer + m ()Lguo; V method_1576 getSingleplayerServer + m ()Z W method_47392 isSingleplayer + m ()Lfhb; X method_1548 getUser + m ()Lcom/mojang/authlib/GameProfile; Y method_53462 getGameProfile + m ()Ljava/net/Proxy; Z method_1487 getProxy + m (D)Ljava/lang/String; a method_54116 formatSeconds + m (F)F a method_54785 getTickTargetMillis + m (I)V a method_1524 debugFpsMeterKeyPress + m (IJ)V a method_1506 onFullscreenError + m (Lac;Lfgo;Lgrt;Ljava/lang/String;Lfgs;)Lac; a method_37274 fillSystemReport + m (Lac;Ljava/util/List;)Ljava/nio/file/Path; a method_37275 archiveProfilingReport + m (Lac;Ljava/util/function/Consumer;Ljava/util/List;)V a method_37276 method_37276 + m (Lakr;)Ljava/util/function/Function; a method_1549 getTextureAtlas + m (Lalp;)Ljava/lang/String; a method_41732 method_41732 + m (Lbne;)V a method_37277 method_37277 + m (Lbsr;)V a method_1504 setCameraEntity + m (Lcom/mojang/authlib/GameProfile;Ljava/lang/Runnable;)Lfod; a method_53519 method_53519 + m (Lcom/mojang/authlib/minecraft/BanDetails;Ljava/lang/Runnable;)Lfod; a method_53520 method_53520 + m (Lcom/mojang/authlib/yggdrasil/YggdrasilAuthenticationService;Lfua;)Lcom/mojang/authlib/minecraft/UserApiService; a method_31382 createUserApiService + m (Lcuq;Ldqh;Lka;)V a method_1499 addCustomNbtData + m (Lerf$c;Latp;Lalp;Lalm;Ljava/lang/Thread;)Lguo; a method_29603 method_29603 + m (Lerf$c;Latp;Lalp;Z)V a method_29610 doWorldLoad + m (Lfbb;)V a method_41731 method_41731 + m (Lfgl;)V a method_48185 setLastInputType + m (Lfgo$b;)V a method_53465 onResourceLoadFinished + m (Lfgo$b;Ljava/lang/Throwable;)V a method_53521 method_53521 + m (Lfgo$b;Ljava/util/Optional;)V a method_53522 method_53522 + m (Lfgo;)Ljava/lang/String; a method_37279 method_37279 + m (Lfgo;Lgrt;Ljava/lang/String;Lfgs;Lo;)V a method_22681 fillReport + m (Lfgo;Ljava/io/File;Lo;)V a method_1565 crash + m (Lfhz;Lbne;)V a method_1492 renderFpsMeter + m (Lfnx;)V a method_18502 setOverlay + m (Lfod;)V a method_1507 setScreen + m (Lfod;Z)V a method_18096 disconnect + m (Lfzf;)V a method_18097 updateLevelInEngines + m (Lfzf;Lfob$a;)V a method_1481 setLevel + m (Lgal;)V a method_44376 updateReportEnvironment + m (Lgrp;)V a method_60320 method_60320 + m (Lgrt;)Ljava/lang/String; a method_37280 method_37280 + m (Ljava/io/File;II)Lwz; a method_35698 grabPanoramixScreenshot + m (Ljava/io/File;IIII)Lwz; a method_35699 grabHugeScreenshot + m (Ljava/io/File;Lxw;)Lxw; a method_35700 method_35700 + m (Ljava/lang/Runnable;)Lfod; a method_53523 method_53523 + m (Ljava/lang/Runnable;Z)V a method_53524 method_53524 + m (Ljava/lang/String;)V a method_29041 openChatScreen + m (Ljava/lang/Throwable;Lfgo$b;)V a method_24226 rollbackResourcePacks + m (Ljava/lang/Throwable;Lwz;Lfgo$b;)V a method_31186 clearResourcePacksOnError + m (Ljava/nio/file/Path;Lxw;)Lxw; a method_37281 method_37281 + m (Ljava/util/List;)V a method_53525 addInitialScreens + m (Ljava/util/UUID;)Z a method_29042 isBlocked + m (Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletionStage; a method_18507 method_18507 + m (Ljava/util/concurrent/CompletableFuture;Lfgo$b;)V a method_29339 method_29339 + m (Ljava/util/function/Consumer;)Z a method_34745 debugClientMetricsStart + m (Ljava/util/function/Consumer;DI)V a method_37282 method_37282 + m (Ljava/util/function/Consumer;Lbne;)V a method_34746 method_34746 + m (Ljava/util/function/Consumer;Ljava/nio/file/Path;)V a method_37283 method_37283 + m (Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V a method_37284 method_37284 + m (Ljava/util/function/Consumer;Lwz;)V a method_37285 method_37285 + m (Lo;)V a method_1494 delayCrash + m (Lp;)V a method_54117 fillUptime + m (Lwz;)V a method_49292 addResourcePackLoadFailToast + m (ZLbni;)Lbnf; a method_24458 constructProfiler + m (ZLfgo$b;)Ljava/util/concurrent/CompletableFuture; a method_36561 reloadResourcePacks + m (ZLfgo$b;Ljava/lang/Throwable;)V a method_49293 method_49293 + m (ZLfgo$b;Ljava/util/concurrent/CompletableFuture;Ljava/util/Optional;)V a method_24228 method_24228 + m ()Z aA method_1569 isWindowActive + m ()Lfgk; aB method_1571 getHotbarManager + m ()Lgst; aC method_1554 getModelManager + m ()Lgrk; aD method_18321 getPaintingTextures + m ()Lgrj; aE method_18505 getMobEffectTextures + m ()Lgri; aF method_58476 getMapDecorationTextures + m ()Lfia; aG method_52699 getGuiSprites + m ()Lbnf; aH method_16011 getProfiler + m ()Larh; aI method_35703 getProgressListener + m ()Lgrn; aJ method_18095 getSplashManager + m ()Lfnx; aK method_18506 getOverlay + m ()Lfsu; aL method_31320 getPlayerSocialManager + m ()Lfam; aM method_22683 getWindow + m ()Lfiu; aN method_53526 getDebugOverlay + m ()Lgff; aO method_22940 renderBuffers + m ()Lfyg; aP method_31974 getEntityModels + m ()Z aQ method_33883 isTextFilteringEnabled + m ()V aR method_38932 prepareForMultiplayer + m ()Lazb; aS method_44256 getProfileKeySignatureValidator + m ()Z aT method_55606 canValidateProfileKeys + m ()Lfgl; aU method_48186 getLastInputType + m ()Lfgg; aV method_44713 getNarrator + m ()Lfzz; aW method_44714 getChatListener + m ()Lgao; aX method_44377 getReportingContext + m ()Lfdm; aY method_44646 realmsDataFetcher + m ()Lgej; aZ method_51253 quickPlayLog + m ()Lgqm; aa method_1531 getTextureManager + m ()Laue; ab method_1478 getResourceManager + m ()Latp; ac method_1520 getResourcePackRepository + m ()Lasu; ad method_45573 getVanillaPackResources + m ()Lgtc; ae method_1516 getDownloadedPackSource + m ()Ljava/nio/file/Path; af method_1479 getResourcePackDirectory + m ()Lgrt; ag method_1526 getLanguageManager + m ()Z ah method_1493 isPaused + m ()Lget; ai method_30049 getGpuWarnlistManager + m ()Lgvf; aj method_1483 getSoundManager + m ()Lavm; ak method_1544 getSituationalMusic + m ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; al method_1495 getMinecraftSessionService + m ()Lgrm; am method_1582 getSkinManager + m ()Lbsr; an method_1560 getCameraEntity + m ()Lgft; ao method_1541 getBlockRenderer + m ()Lgkh; ap method_1561 getEntityRenderDispatcher + m ()Lggy; aq method_31975 getBlockEntityRenderDispatcher + m ()Lglh; ar method_1480 getItemRenderer + m ()Lcom/mojang/datafixers/DataFixer; as method_1543 getFixerUpper + m ()Lfgf; at method_60646 getTimer + m ()Lfhq; au method_1505 getBlockColors + m ()Z av method_1555 showOnlyReducedInfo + m ()Lfkw; aw method_1566 getToasts + m ()Lgwi; ax method_1577 getTutorial + m (I)V b method_24041 updateMaxMipLevel + m (Lbsr;)Z b method_27022 shouldEntityAppearGlowing + m (Lfgo$b;)V b method_51736 onGameLoadFinished + m (Lfgo;)Ljava/lang/String; b method_53905 method_53905 + m (Lfod;)V b method_56134 disconnect + m (Ljava/io/File;Lxw;)Lxw; b method_35704 method_35704 + m (Ljava/lang/Object;)Z b method_40189 countryEqualsISO3 + m (Ljava/lang/String;)Ljava/lang/String; b method_37292 method_37292 + m (Ljava/util/UUID;)Z b method_52701 isLocalPlayer + m (Ljava/util/concurrent/CompletableFuture;)V b method_18508 method_18508 + m (Ljava/util/function/Consumer;Lbne;)V b method_37290 method_37290 + m (Ljava/util/function/Consumer;Ljava/nio/file/Path;)V b method_37291 method_37291 + m (Lo;)V b method_43587 delayCrashRaw + m (Lwz;)V b method_35701 method_35701 + m (Z)V b method_20539 pauseGame + m (ZLbni;)V b method_24460 finishProfilers + m ()Ljava/lang/String; bD method_54118 method_54118 + m ()Ljava/lang/String; bE method_54119 method_54119 + m ()Ljava/lang/String; bF method_54120 method_54120 + m ()Ljava/lang/String; bG method_54121 method_54121 + m ()Z bH method_59834 method_59834 + m ()Z bI method_1491 method_1491 + m ()V bJ method_1572 method_1572 + m ()Lcom/mojang/authlib/minecraft/UserApiService$UserProperties; bK method_55608 method_55608 + m ()Lcom/mojang/authlib/yggdrasil/ProfileResult; bL method_53464 method_53464 + m ()I bM method_16010 method_16010 + m ()Lfgc; ba method_52700 commandHistory + m ()Lews; bb method_52702 directoryValidator + m ()Ljava/lang/String; bc method_54578 getLauncherBrand + m ()Ljava/lang/String; bd method_24287 createTitle + m ()V be method_49294 abortResourcePackRecovery + m ()V bf method_54579 handleDelayedCrash + m ()V bg method_17044 selfTest + m ()I bh method_16009 getFramerateLimit + m ()V bi method_1519 emergencySave + m ()V bj method_37286 debugClientMetricsStop + m ()V bk method_41733 debugClientMetricsCancel + m ()Z bl method_1536 startAttack + m ()V bm method_1583 startUseItem + m ()Z bn method_60647 isLevelRunningNormally + m ()Z bo method_31321 isMultiplayerServer + m ()V bp method_1508 handleKeybinds + m ()Lcom/mojang/authlib/minecraft/UserApiService$UserProperties; bq method_55607 userProperties + m ()V br method_1511 pickBlock + m ()Ljava/lang/String; bs method_60864 method_60864 + m ()Ljava/lang/String; bt method_37288 method_37288 + m ()Ljava/lang/String; bu method_37287 method_37287 + m ()Ljava/lang/String; bv method_37289 method_37289 + m ()Z c method_53466 isGameLoadFinished + m (I)Lard; c method_17533 method_17533 + m (Lfgo$b;)Ljava/lang/Runnable; c method_53527 buildInitialScreens + m (Lfgo;)Ljava/lang/String; c method_37278 method_37278 + m (Lfod;)V c method_52703 clearClientLevel + m (Lo;)V c method_54580 emergencySaveAndCrash + m (Lwz;)V c method_1510 method_1510 + m (Z)V c method_1523 runTick + m ()V d method_24288 updateTitle + m (Lfgo$b;)V d method_53528 method_53528 + m (Lfod;)V d method_29970 forceSetScreen + m (Lo;)Lo; d method_1587 fillReport + m (Lwz;)V d method_24229 method_24229 + m (Z)V d method_1590 continueAttack + m ()Layn; e method_24289 checkModStatus + m (Lfgo$b;)V e method_29338 method_29338 + m (Lfod;)V e method_18098 updateScreenAndTick + m (Lo;)Lo; e method_43588 method_43588 + m (Z)V e method_44352 method_44352 + m ()V f method_1514 run + m (Lfod;)V f method_53529 method_53529 + m (Lo;)Lo; f method_43589 method_43589 + m ()V g method_57017 updateFontOptions + m ()Lezv; h method_1522 getMainRenderTarget + m ()Ljava/lang/String; i method_1515 getLaunchedVersion + m ()Ljava/lang/String; j method_1547 getVersionType + m ()Z k method_1573 isEnforceUnicode + m ()Ljava/util/concurrent/CompletableFuture; l method_1521 reloadResourcePacks + m ()Lerf; m method_1586 getLevelSource + m ()V n method_1490 destroy + m ()I o method_47599 getFps + m ()J p method_47600 getFrameTimeNs + m ()V q method_1592 stop + m ()Z r method_22108 isRunning + m ()Lgva; s method_1538 getMusicManager + m ()V t method_1574 tick + m ()Lgvj; u method_47601 getTelemetryManager + m ()D v method_41734 getGpuUtilization + m ()Lfzr; w method_43590 getProfileKeyPairManager + m ()Lftm; x method_41735 createWorldOpenFlows + m ()V y method_18099 disconnect + m ()V z method_55505 clearDownloadedResourcePacks + m (Lfua;)V + m ()V +c fgo$1 net/minecraft/class_310$1 net/minecraft/client/Minecraft$1 + f [I a field_1778 $SwitchMap$net$minecraft$world$phys$HitResult$Type + m ()V +c fgo$a net/minecraft/class_310$class_5859 net/minecraft/client/Minecraft$ChatStatus + f Lfgo$a; a field_28940 ENABLED + f Lfgo$a; b field_28941 DISABLED_BY_OPTIONS + f Lfgo$a; c field_28942 DISABLED_BY_LAUNCHER + f Lfgo$a; d field_28943 DISABLED_BY_PROFILE + f Lwz; e field_39456 INFO_DISABLED_BY_PROFILE + f Lwz; f field_28944 message + f [Lfgo$a; g field_28945 $VALUES + m ()Lwz; a method_33885 getMessage + m (Z)Z a method_33886 isChatAllowed + m ()[Lfgo$a; b method_36862 $values + m (Ljava/lang/String;ILwz;)V + m ()V +c fgo$a$1 net/minecraft/class_310$class_5859$1 net/minecraft/client/Minecraft$ChatStatus$1 + m (Ljava/lang/String;ILwz;)V +c fgo$a$2 net/minecraft/class_310$class_5859$2 net/minecraft/client/Minecraft$ChatStatus$2 + m (Ljava/lang/String;ILwz;)V +c fgo$a$3 net/minecraft/class_310$class_5859$3 net/minecraft/client/Minecraft$ChatStatus$3 + m (Ljava/lang/String;ILwz;)V +c fgo$a$4 net/minecraft/class_310$class_5859$4 net/minecraft/client/Minecraft$ChatStatus$4 + m (Ljava/lang/String;ILwz;)V +c fgo$b net/minecraft/class_310$class_8764 net/minecraft/client/Minecraft$GameLoadCookie + f Lfby; a comp_1906 realmsClient + f Lfua$c; b comp_1907 quickPlayData + m ()Lfby; a comp_1906 realmsClient + m ()Lfua$c; b comp_1907 quickPlayData + m (Lfby;Lfua$c;)V +c fgp net/minecraft/class_312 net/minecraft/client/MouseHandler + f Lorg/slf4j/Logger; a field_52126 LOGGER + f Lfgo; b field_1779 minecraft + f Z c field_1791 isLeftPressed + f Z d field_1790 isMiddlePressed + f Z e field_1788 isRightPressed + f D f field_1795 xpos + f D g field_1794 ypos + f I h field_1781 fakeRightMouse + f I i field_1780 activeButton + f Z j field_1784 ignoreFirstMove + f I k field_1796 clickDepth + f D l field_1792 mousePressedTime + f Lazf; m field_1793 smoothTurnX + f Lazf; n field_1782 smoothTurnY + f D o field_1789 accumulatedDX + f D p field_1787 accumulatedDY + f D q field_45296 accumulatedScrollX + f D r field_45297 accumulatedScrollY + f D s field_47842 lastHandleMovementTime + f Z t field_1783 mouseGrabbed + m ()V a method_55793 handleAccumulatedMovement + m (D)V a method_1606 turnPlayer + m (J)V a method_1607 setup + m (JDD)V a method_1598 onScroll + m (JIII)V a method_1601 onPress + m (JIJ)V a method_29615 method_29615 + m (JLjava/util/List;I)V a method_29616 onDrop + m (Lfod;DD)V a method_55794 method_55794 + m (Lfod;DDDD)V a method_55795 method_55795 + m ([ZLfod;DDI)V a method_1605 method_1605 + m ()Z b method_1608 isLeftPressed + m (JDD)V b method_1600 onMove + m (JIII)V b method_22684 method_22684 + m (JLjava/util/List;I)V b method_29617 method_29617 + m ([ZLfod;DDI)V b method_1611 method_1611 + m ()Z c method_35707 isMiddlePressed + m (JDD)V c method_22685 method_22685 + m (JIII)V c method_22686 method_22686 + m ()Z d method_1609 isRightPressed + m (JDD)V d method_22687 method_22687 + m ()D e method_1603 xpos + m (JDD)V e method_22688 method_22688 + m ()D f method_1604 ypos + m (JDD)V f method_22689 method_22689 + m ()V g method_1599 setIgnoreFirstMove + m ()Z h method_1613 isMouseGrabbed + m ()V i method_1612 grabMouse + m ()V j method_1610 releaseMouse + m ()V k method_30134 cursorEntered + m (Lfgo;)V + m ()V +c fgq net/minecraft/class_4065 net/minecraft/client/NarratorStatus + f Lfgq; a field_18176 OFF + f Lfgq; b field_18177 ALL + f Lfgq; c field_18178 CHAT + f Lfgq; d field_18179 SYSTEM + f Ljava/util/function/IntFunction; e field_18180 BY_ID + f I f field_18181 id + f Lwz; g field_24212 name + f [Lfgq; h field_18183 $VALUES + m ()I a method_18509 getId + m (I)Lfgq; a method_18510 byId + m ()Lwz; b method_18511 getName + m ()Z c method_44715 shouldNarrateChat + m ()Z d method_44716 shouldNarrateSystem + m ()[Lfgq; e method_36864 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c fgr net/minecraft/class_7172 net/minecraft/client/OptionInstance + f Lfgr$e; a field_38278 BOOLEAN_VALUES + f Lfgr$b; b field_41333 BOOLEAN_TO_STRING + f Lorg/slf4j/Logger; c field_37862 LOGGER + f Lfgr$l; d field_37863 tooltip + f Ljava/util/function/Function; e field_37864 toString + f Lfgr$n; f field_37865 values + f Lcom/mojang/serialization/Codec; g field_38279 codec + f Ljava/lang/Object; h field_37866 initialValue + f Ljava/util/function/Consumer; i field_37867 onValueUpdate + f Lwz; j field_38280 caption + f Ljava/lang/Object; k field_37868 value + m ()Lfgr$l; a method_42399 noTooltip + m (Lfgr$b;Ljava/lang/Object;)Lwz; a method_42715 method_42715 + m (Lfgs;)Lfik; a method_57701 createButton + m (Lfgs;III)Lfik; a method_18520 createButton + m (Lfgs;IIILjava/util/function/Consumer;)Lfik; a method_47603 createButton + m (Ljava/lang/Boolean;)V a method_41752 method_41752 + m (Ljava/lang/Object;)V a method_41748 set + m (Ljava/lang/String;Lfgr$l;Lfgr$b;ZLjava/util/function/Consumer;)Lfgr; a method_47604 createBoolean + m (Ljava/lang/String;Lfgr$l;Z)Lfgr; a method_41749 createBoolean + m (Ljava/lang/String;Lfgr$l;ZLjava/util/function/Consumer;)Lfgr; a method_41750 createBoolean + m (Ljava/lang/String;Z)Lfgr; a method_42402 createBoolean + m (Ljava/lang/String;ZLjava/util/function/Consumer;)Lfgr; a method_41751 createBoolean + m (Lwz;)Lfgr$l; a method_42717 cachedConstantTooltip + m (Lwz;Layr;)Lwz; a method_42718 method_42718 + m (Lwz;Ljava/lang/Boolean;)Lwz; a method_47605 method_47605 + m (Lwz;Ljava/lang/Object;)Lfjx; a method_47393 method_47393 + m ()Lfgr$b; b method_42720 forOptionEnum + m (Ljava/lang/Boolean;)V b method_42405 method_42405 + m (Ljava/lang/Object;)Ljava/lang/Object; b method_42403 method_42403 + m ()Ljava/lang/Object; c method_41753 get + m (Ljava/lang/Object;)V c method_47606 method_47606 + m ()Lcom/mojang/serialization/Codec; d method_42404 codec + m (Ljava/lang/Object;)Lfjx; d method_47394 method_47394 + m ()Lfgr$n; e method_41754 values + m (Ljava/lang/String;Lfgr$l;Lfgr$b;Lfgr$n;Ljava/lang/Object;Ljava/util/function/Consumer;)V + m (Ljava/lang/String;Lfgr$l;Lfgr$b;Lfgr$n;Lcom/mojang/serialization/Codec;Ljava/lang/Object;Ljava/util/function/Consumer;)V + m ()V +c fgr$a net/minecraft/class_7172$class_7273 net/minecraft/client/OptionInstance$AltEnum + f Ljava/util/List; a comp_671 values + f Ljava/util/List; b comp_672 altValues + f Ljava/util/function/BooleanSupplier; c comp_673 altCondition + f Lfgr$d$a; d comp_674 valueSetter + f Lcom/mojang/serialization/Codec; e comp_675 codec + m ()Ljava/util/List; b comp_671 values + m ()Ljava/util/List; c comp_672 altValues + m ()Ljava/util/function/BooleanSupplier; d comp_673 altCondition + m (Ljava/util/List;Ljava/util/List;Ljava/util/function/BooleanSupplier;Lfgr$d$a;Lcom/mojang/serialization/Codec;)V +c fgr$b net/minecraft/class_7172$class_7303 net/minecraft/client/OptionInstance$CaptionBasedToString +c fgr$c net/minecraft/class_7172$class_7304 net/minecraft/client/OptionInstance$ClampingLazyMaxIntRange + f I a comp_593 minInclusive + f Ljava/util/function/IntSupplier; b comp_690 maxSupplier + f I c comp_1316 encodableMaxInclusive + m (Ljava/lang/Integer;)Ljava/util/Optional; a method_42408 validateValue + m (Ljava/lang/Integer;I)Ljava/lang/String; a method_49597 method_49597 + m (Ljava/lang/Integer;)Lcom/mojang/serialization/DataResult; c method_42409 method_42409 + m ()Ljava/util/function/IntSupplier; g comp_690 maxSupplier + m ()I h comp_1316 encodableMaxInclusive + m (ILjava/util/function/IntSupplier;I)V +c fgr$d net/minecraft/class_7172$class_7305 net/minecraft/client/OptionInstance$CycleableValueSet + m ()Lfit$c; a method_42721 valueListSupplier + m (Lfgr$l;IIILfgs;Ljava/util/function/Consumer;Lfgr;)Lfik; a method_42723 method_42723 + m (Lfgr;Lfgs;Ljava/util/function/Consumer;Lfit;Ljava/lang/Object;)V a method_42724 method_42724 + m ()Lfgr$d$a; e comp_674 valueSetter +c fgr$d$a net/minecraft/class_7172$class_7305$class_7274 net/minecraft/client/OptionInstance$CycleableValueSet$ValueSetter +c fgr$e net/minecraft/class_7172$class_7173 net/minecraft/client/OptionInstance$Enum + f Ljava/util/List; a comp_592 values + f Lcom/mojang/serialization/Codec; b comp_675 codec + m ()Ljava/util/List; b comp_592 values + m (Ljava/util/List;Lcom/mojang/serialization/Codec;)V +c fgr$f net/minecraft/class_7172$class_7174 net/minecraft/client/OptionInstance$IntRange + f I a comp_593 minInclusive + f I b comp_594 maxInclusive + f Z c comp_2661 applyValueImmediately + m (Ljava/lang/Integer;)Ljava/util/Optional; a method_41761 validateValue + m (II)V + m (IIZ)V +c fgr$g net/minecraft/class_7172$class_7275 net/minecraft/client/OptionInstance$IntRangeBase + m (D)Ljava/lang/Integer; a method_42412 fromSliderValue + m (Ljava/util/function/IntFunction;Ljava/util/function/ToIntFunction;)Lfgr$k; a method_42414 xmap + m ()I b comp_594 maxInclusive + m (Ljava/lang/Integer;)D b method_42415 toSliderValue + m ()I d comp_593 minInclusive +c fgr$g$1 net/minecraft/class_7172$class_7275$1 net/minecraft/client/OptionInstance$IntRangeBase$1 + f Ljava/util/function/ToIntFunction; a field_37869 val$from + f Ljava/util/function/IntFunction; b field_37870 val$to + f Lfgr$g; c field_37871 field_37871 + m (Lfgr$g;Ljava/util/function/ToIntFunction;Ljava/util/function/IntFunction;)V +c fgr$h net/minecraft/class_7172$class_7276 net/minecraft/client/OptionInstance$LazyEnum + f Ljava/util/function/Supplier; a comp_676 values + f Ljava/util/function/Function; b comp_677 validateValue + f Lcom/mojang/serialization/Codec; c comp_675 codec + m ()Ljava/util/function/Supplier; b comp_676 values + m ()Ljava/util/function/Function; c comp_677 validateValue + m (Ljava/util/function/Supplier;Ljava/util/function/Function;Lcom/mojang/serialization/Codec;)V +c fgr$i net/minecraft/class_7172$class_7175 net/minecraft/client/OptionInstance$OptionInstanceSliderButton + f Lfgr; d field_37872 instance + f Lfgr$k; e field_37873 values + f Lfgr$l; f field_37874 tooltipSupplier + f Ljava/util/function/Consumer; m field_41334 onValueChanged + f Ljava/lang/Long; n field_51513 delayedApplyAt + f Z o field_51514 applyValueImmediately + m ()V c method_59868 applyUnsavedValue + m (Lfgs;IIIILfgr;Lfgr$k;Lfgr$l;Ljava/util/function/Consumer;Z)V +c fgr$j net/minecraft/class_7172$class_7306 net/minecraft/client/OptionInstance$SliderableOrCyclableValueSet + m ()Z c method_42722 createCycleButton +c fgr$k net/minecraft/class_7172$class_7176 net/minecraft/client/OptionInstance$SliderableValueSet + m (Lfgs;IIILfgr$l;Ljava/util/function/Consumer;Lfgr;)Lfik; a method_42725 method_42725 + m ()Z aR_ comp_2661 applyValueImmediately + m (D)Ljava/lang/Object; b method_41763 fromSliderValue + m (Ljava/lang/Object;)D b method_41765 toSliderValue +c fgr$l net/minecraft/class_7172$class_7277 net/minecraft/client/OptionInstance$TooltipSupplier +c fgr$m net/minecraft/class_7172$class_7177 net/minecraft/client/OptionInstance$UnitDouble + f Lfgr$m; a field_37875 INSTANCE + f [Lfgr$m; b field_37876 $VALUES + m (D)Ljava/lang/Double; a method_41768 fromSliderValue + m (Ljava/lang/Boolean;)Ljava/lang/Double; a method_42419 method_42419 + m (Ljava/lang/Double;)Ljava/util/Optional; a method_41770 validateValue + m (Ljava/util/function/DoubleFunction;Ljava/util/function/ToDoubleFunction;)Lfgr$k; a method_42420 xmap + m ()[Lfgr$m; b method_41767 $values + m (Ljava/lang/Double;)D b method_41771 toSliderValue + m (Ljava/lang/String;I)V + m ()V +c fgr$m$1 net/minecraft/class_7172$class_7177$1 net/minecraft/client/OptionInstance$UnitDouble$1 + f Ljava/util/function/ToDoubleFunction; a field_38283 val$from + f Ljava/util/function/DoubleFunction; b field_38284 val$to + f Lfgr$m; c field_38285 field_38285 + m (Lfgr$m;Ljava/util/function/ToDoubleFunction;Ljava/util/function/DoubleFunction;)V +c fgr$n net/minecraft/class_7172$class_7178 net/minecraft/client/OptionInstance$ValueSet + m (Lfgr$l;Lfgs;IIILjava/util/function/Consumer;)Ljava/util/function/Function; a method_41756 createButton + m (Ljava/lang/Object;)Ljava/util/Optional; a method_41758 validateValue + m ()Lcom/mojang/serialization/Codec; f comp_675 codec +c fgs net/minecraft/class_315 net/minecraft/client/Options + f Lfgm; A field_1903 keyJump + f Lfgm; B field_1832 keyShift + f Lfgm; C field_1867 keySprint + f Lfgm; D field_1822 keyInventory + f Lfgm; E field_1831 keySwapOffhand + f Lfgm; F field_1869 keyDrop + f Lfgm; G field_1904 keyUse + f Lfgm; H field_1886 keyAttack + f Lfgm; I field_1871 keyPickItem + f Lfgm; J field_1890 keyChat + f Lfgm; K field_1907 keyPlayerList + f Lfgm; L field_1845 keyCommand + f Lfgm; M field_26845 keySocialInteractions + f Lfgm; N field_1835 keyScreenshot + f Lfgm; O field_1824 keyTogglePerspective + f Lfgm; P field_1816 keySmoothCamera + f Lfgm; Q field_1836 keyFullscreen + f Lfgm; R field_1906 keySpectatorOutlines + f Lfgm; S field_1844 keyAdvancements + f [Lfgm; T field_1852 keyHotbarSlots + f Lfgm; U field_1879 keySaveHotbarActivator + f Lfgm; V field_1874 keyLoadHotbarActivator + f [Lfgm; W field_1839 keyMappings + f Lfgo; X field_1863 minecraft + f Z Y field_1842 hideGui + f Ljava/lang/String; Z field_1864 lastMpIp + f Lfgr; aA field_1841 ambientOcclusion + f Lwz; aB field_37880 PRIORITIZE_CHUNK_TOOLTIP_NONE + f Lwz; aC field_37881 PRIORITIZE_CHUNK_TOOLTIP_PLAYER_AFFECTED + f Lwz; aD field_37882 PRIORITIZE_CHUNK_TOOLTIP_NEARBY + f Lfgr; aE field_34787 prioritizeChunkUpdates + f Lfgr; aF field_1877 chatVisibility + f Lfgr; aG field_1820 chatOpacity + f Lfgr; aH field_23932 chatLineSpacing + f I a field_32149 RENDER_DISTANCE_TINY + f Lwz; aI field_49474 MENU_BACKGROUND_BLURRINESS_TOOLTIP + f I aJ field_49475 BLURRINESS_DEFAULT_VALUE + f Lfgr; aK field_49476 menuBackgroundBlurriness + f Lfgr; aL field_18726 textBackgroundOpacity + f Lfgr; aM field_40382 panoramaSpeed + f Lwz; aN field_43043 ACCESSIBILITY_TOOLTIP_CONTRAST_MODE + f Lfgr; aO field_43044 highContrast + f Lfgr; aP field_45987 narratorHotkey + f Ljava/util/Set; aQ field_1892 modelParts + f Lfgr; aR field_1829 mainHand + f Lfgr; aS field_1908 chatScale + f Lfgr; aT field_1915 chatWidth + f Lfgr; aU field_1825 chatHeightUnfocused + f Lfgr; aV field_1838 chatHeightFocused + f Lfgr; aW field_23933 chatDelay + f Lwz; aX field_41783 ACCESSIBILITY_TOOLTIP_NOTIFICATION_DISPLAY_TIME + f Lfgr; aY field_41784 notificationDisplayTime + f Lfgr; aZ field_1856 mipmapLevels + f Z aa field_1914 smoothCamera + f I ab field_43405 AUTO_GUI_SCALE + f Ljava/lang/String; ac field_1883 languageCode + f Z ad field_41785 onboardAccessibility + f Z ae field_25623 syncWrites + f Lorg/slf4j/Logger; af field_1834 LOGGER + f Lcom/google/gson/Gson; ag field_1823 GSON + f Lcom/google/gson/reflect/TypeToken; ah field_1859 LIST_OF_STRINGS_TYPE + f Lcom/google/common/base/Splitter; ai field_1853 OPTION_SPLITTER + f Lwz; aj field_37878 ACCESSIBILITY_TOOLTIP_DARK_MOJANG_BACKGROUND + f Lfgr; ak field_32156 darkMojangStudiosBackground + f Lwz; al field_37879 ACCESSIBILITY_TOOLTIP_HIDE_LIGHTNING_FLASHES + f Lfgr; am field_34786 hideLightningFlash + f Lwz; an field_46854 ACCESSIBILITY_TOOLTIP_HIDE_SPLASH_TEXTS + f Lfgr; ao field_46855 hideSplashTexts + f Lfgr; ap field_1843 sensitivity + f Lfgr; aq field_1870 renderDistance + f Lfgr; ar field_34959 simulationDistance + f I as field_34784 serverRenderDistance + f Lfgr; at field_24214 entityDistanceScaling + f Lfgr; au field_1909 framerateLimit + f Lfgr; av field_1814 cloudStatus + f Lwz; aw field_38289 GRAPHICS_TOOLTIP_FAST + f Lwz; ax field_38286 GRAPHICS_TOOLTIP_FABULOUS + f Lwz; ay field_38287 GRAPHICS_TOOLTIP_FANCY + f Lfgr; az field_25444 graphicsMode + f Lfgr; bA field_18725 backgroundForChatOnly + f Lfgr; bB field_1854 touchscreen + f Lfgr; bC field_1857 fullscreen + f Lfgr; bD field_1891 bobView + f Lwz; bE field_38297 MOVEMENT_TOGGLE + f Lwz; bF field_38298 MOVEMENT_HOLD + f Lfgr; bG field_21332 toggleCrouch + f Lfgr; bH field_21333 toggleSprint + f I b field_32150 RENDER_DISTANCE_SHORT + f Lwz; bI field_38299 CHAT_TOOLTIP_HIDE_MATCHED_NAMES + f Lfgr; bJ field_26926 hideMatchedNames + f Lfgr; bK field_35426 showAutosaveIndicator + f Lwz; bL field_39320 CHAT_TOOLTIP_ONLY_SHOW_SECURE + f Lfgr; bM field_39321 onlyShowSecureChat + f Ljava/io/File; bN field_1897 optionsFile + f Lffz; bO field_26677 cameraType + f Lfgr; bP field_1826 fov + f Lwz; bQ field_41335 TELEMETRY_TOOLTIP + f Lfgr; bR field_41336 telemetryOptInExtra + f Lwz; bS field_38290 ACCESSIBILITY_TOOLTIP_SCREEN_EFFECT + f Lfgr; bT field_26675 screenEffectScale + f Lwz; bU field_38291 ACCESSIBILITY_TOOLTIP_FOV_EFFECT + f Lfgr; bV field_26676 fovEffectScale + f Lwz; bW field_38292 ACCESSIBILITY_TOOLTIP_DARKNESS_EFFECT + f Lfgr; bX field_38293 darknessEffectScale + f Lwz; bY field_42112 ACCESSIBILITY_TOOLTIP_GLINT_SPEED + f Lfgr; bZ field_42113 glintSpeed + f Lfgr; ba field_1895 attackIndicator + f Lfgr; bb field_1878 biomeBlendRadius + f Lfgr; bc field_1889 mouseWheelSensitivity + f Lfgr; bd field_20308 rawMouseInput + f Lfgr; be field_1848 autoJump + f Lfgr; bf field_41094 operatorItemsTab + f Lfgr; bg field_1873 autoSuggestions + f Lfgr; bh field_1900 chatColors + f Lfgr; bi field_1911 chatLinks + f Lfgr; bj field_1817 chatLinksPrompt + f Lfgr; bk field_1884 enableVsync + f Lfgr; bl field_1888 entityShadows + f Lfgr; bm field_1819 forceUnicodeFont + f Lfgr; bn field_49105 japaneseGlyphVariants + f Lfgr; bo field_1865 invertYMouse + f Lfgr; bp field_19244 discreteMouseScroll + f Lwz; bq field_52127 REALMS_NOTIFICATIONS_TOOLTIP + f Lfgr; br field_1830 realmsNotifications + f Lwz; bs field_38294 ALLOW_SERVER_LISTING_TOOLTIP + f Lfgr; bt field_35637 allowServerListing + f Lfgr; bu field_1910 reducedDebugInfo + f Ljava/util/Map; bv field_1916 soundSourceVolumes + f Lfgr; bw field_1818 showSubtitles + f Lwz; bx field_38295 DIRECTIONAL_AUDIO_TOOLTIP_ON + f Lwz; by field_38296 DIRECTIONAL_AUDIO_TOOLTIP_OFF + f Lfgr; bz field_37877 directionalAudio + f I c field_32152 RENDER_DISTANCE_NORMAL + f Lwz; ca field_42114 ACCESSIBILITY_TOOLTIP_GLINT_STRENGTH + f Lfgr; cb field_42115 glintStrength + f Lwz; cc field_42481 ACCESSIBILITY_TOOLTIP_DAMAGE_TILT_STRENGTH + f Lfgr; cd field_42482 damageTiltStrength + f Lfgr; ce field_1840 gamma + f I cf field_43110 MAX_GUI_SCALE_INCLUSIVE + f Lfgr; cg field_1868 guiScale + f Lfgr; ch field_1882 particles + f Lfgr; ci field_1896 narrator + f Lfgr; cj field_34783 soundDevice + f I d field_32153 RENDER_DISTANCE_FAR + f I e field_32154 RENDER_DISTANCE_REALLY_FAR + f I f field_32155 RENDER_DISTANCE_EXTREME + f Ljava/lang/String; g field_34785 DEFAULT_SOUND_DEVICE + f I h field_38300 UNLIMITED_FRAMERATE_CUTOFF + f Ljava/util/List; i field_1887 resourcePacks + f Ljava/util/List; j field_1846 incompatibleResourcePacks + f Ljava/lang/String; k field_1828 fullscreenVideoModeString + f Z l field_1815 hideServerAddress + f Z m field_1827 advancedItemTooltips + f Z n field_1837 pauseOnLostFocus + f I o field_1872 overrideWidth + f I p field_1885 overrideHeight + f Z q field_1876 useNativeTransport + f Lgwk; r field_1875 tutorialStep + f Z s field_26844 joinedFirstServer + f Z t field_28777 hideBundleTutorial + f I u field_1901 glDebugVerbosity + f Z v field_21840 skipMultiplayerWarning + f Lfgm; w field_1894 keyUp + f Lfgm; x field_1913 keyLeft + f Lfgm; y field_1881 keyDown + f Lfgm; z field_1849 keyRight + m ()Lfgr; A method_42561 chatDelay + m ()Lfgr; B method_48191 notificationDisplayTime + m ()Lfgr; C method_42563 mipmapLevels + m ()Lfgr; D method_42565 attackIndicator + m ()Lfgr; E method_41805 biomeBlendRadius + m ()Lfgr; F method_41806 mouseWheelSensitivity + m ()Lfgr; G method_41807 rawMouseInput + m ()Lfgr; H method_42423 autoJump + m ()Lfgr; I method_47395 operatorItemsTab + m ()Lfgr; J method_42425 autoSuggestions + m ()Lfgr; K method_42427 chatColors + m ()Lfgr; L method_42429 chatLinks + m ()Lfgr; M method_42431 chatLinksPrompt + m ()Lfgr; N method_42433 enableVsync + m ()Lfgr; O method_42435 entityShadows + m ()Lfgr; P method_42437 forceUnicodeFont + m ()Lfgr; Q method_57018 japaneseGlyphVariants + m ()Lfgr; R method_42438 invertYMouse + m ()Lfgr; S method_42439 discreteMouseScroll + m ()Lfgr; T method_42440 realmsNotifications + m ()Lfgr; U method_42441 allowServerListing + m ()Lfgr; V method_42442 reducedDebugInfo + m ()Lfgr; W method_42443 showSubtitles + m ()Lfgr; X method_42444 directionalAudio + m ()Lfgr; Y method_42445 backgroundForChatOnly + m ()Lfgr; Z method_42446 touchscreen + m ()Lfgr; a method_41772 darkMojangStudiosBackground + m (D)I a method_41773 unlogMouse + m (F)F a method_19343 getBackgroundOpacity + m (I)I a method_19344 getBackgroundColor + m (Latp;)V a method_49598 updateResourcePacks + m (Lavq;)F a method_1630 getSoundSourceVolume + m (Lavq;Ljava/lang/Double;)V a method_45575 method_45575 + m (Lbtg;)V a method_42455 method_42455 + m (Lcmv;)V a method_42456 method_42456 + m (Lcmy;)Z a method_32594 isModelPartEnabled + m (Lcmy;Z)V a method_1631 toggleModelPart + m (Lcom/mojang/datafixers/util/Pair;)Ljava/lang/String; a method_37293 method_37293 + m (Lffx;)V a method_42458 method_42458 + m (Lffz;)V a method_31043 setCameraType + m (Lfgb;)V a method_42459 method_42459 + m (Lfgh;)V a method_42460 method_42460 + m (Lfgm;Lfae$a;)V a method_1641 setKey + m (Lfgq;)V a method_42463 method_42463 + m (Lfgr;Lfgh;)V a method_42464 method_42464 + m (Lfgs$a;)V a method_33666 processOptions + m (Lfgs$b;)V a method_57019 processDumpedOptions + m (Lfgt;)V a method_42465 method_42465 + m (Lfgv;)V a method_41776 method_41776 + m (Ljava/lang/Boolean;)V a method_47607 method_47607 + m (Ljava/lang/Double;)V a method_42467 method_42467 + m (Ljava/lang/Integer;)V a method_42468 method_42468 + m (Ljava/lang/String;)Z a method_32595 isTrue + m (Ljava/lang/String;Lavq;)Lfgr; a method_45576 createSoundSliderOptionInstance + m (Ljava/util/EnumMap;)V a method_45577 method_45577 + m (Lub;)Lub; a method_1626 dataFix + m (Lub;Ljava/lang/String;)V a method_24230 method_24230 + m (Lwz;D)Lwz; a method_41781 percentValueLabel + m (Lwz;I)Lwz; a method_41782 genericValueLabel + m (Lwz;Lfgh;)Lwz; a method_42497 method_42497 + m (Lwz;Lfgq;)Lwz; a method_42489 method_42489 + m (Lwz;Ljava/lang/Boolean;)Lwz; a method_47608 method_47608 + m (Lwz;Ljava/lang/Double;)Lwz; a method_42492 method_42492 + m (Lwz;Ljava/lang/Integer;)Lwz; a method_42493 method_42493 + m (Lwz;Ljava/lang/String;)Lwz; a method_42523 method_42523 + m (Lwz;Lwz;)Lwz; a method_41783 genericValueLabel + m ()Z aA method_1639 useNativeTransport + m ()Lffz; aB method_31044 getCameraType + m ()Ljava/io/File; aC method_37294 getFile + m ()Ljava/lang/String; aD method_37295 dumpOptionsForReport + m ()I aE method_38521 getEffectiveRenderDistance + m ()V aF method_57020 updateFontOptions + m ()Z aG method_57021 japaneseGlyphVariantsDefault + m ()Ljava/util/List; aH method_42478 method_42478 + m ()I aI method_42479 method_42479 + m ()Z aJ method_42480 method_42480 + m ()Lfgr; aa method_42447 fullscreen + m ()Lfgr; ab method_42448 bobView + m ()Lfgr; ac method_42449 toggleCrouch + m ()Lfgr; ad method_42450 toggleSprint + m ()Lfgr; ae method_42451 hideMatchedNames + m ()Lfgr; af method_42452 showAutosaveIndicator + m ()Lfgr; ag method_44026 onlyShowSecureChat + m ()Lfgr; ah method_41808 fov + m ()Lfgr; ai method_47609 telemetryOptInExtra + m ()Lfgr; aj method_42453 screenEffectScale + m ()Lfgr; ak method_42454 fovEffectScale + m ()Lfgr; al method_42472 darknessEffectScale + m ()Lfgr; am method_48580 glintSpeed + m ()Lfgr; an method_48581 glintStrength + m ()Lfgr; ao method_48974 damageTiltStrength + m ()Lfgr; ap method_42473 gamma + m ()Lfgr; aq method_42474 guiScale + m ()Lfgr; ar method_42475 particles + m ()Lfgr; as method_42476 narrator + m ()Lfgr; at method_42477 soundDevice + m ()V au method_61127 onboardingAccessibilityFinished + m ()V av method_1636 load + m ()V aw method_1640 save + m ()Laqh; ax method_53842 buildPlayerInformation + m ()V ay method_1643 broadcastOptions + m ()Lfgb; az method_1632 getCloudsType + m ()Lfgr; b method_41784 hideLightningFlash + m (F)I b method_19345 getBackgroundColor + m (I)V b method_38520 setServerRenderDistance + m (Latp;)V b method_1627 loadSelectedResourcePacks + m (Lavq;)Lfgr; b method_45578 getSoundSourceOptionInstance + m (Lcmy;Z)V b method_1635 setModelPart + m (Lfgh;)Z b method_42486 method_42486 + m (Lfgv;)Lfjx; b method_47396 method_47396 + m (Ljava/lang/Boolean;)V b method_42466 method_42466 + m (Ljava/lang/Double;)V b method_48975 method_48975 + m (Ljava/lang/Integer;)V b method_42502 method_42502 + m (Ljava/lang/String;)Z b method_32596 isFalse + m (Lwz;D)Lwz; b method_59835 percentValueOrOffLabel + m (Lwz;I)Lwz; b method_60648 genericValueOrOffLabel + m (Lwz;Ljava/lang/Boolean;)Lwz; b method_42491 method_42491 + m (Lwz;Ljava/lang/Double;)Lwz; b method_41788 method_41788 + m (Lwz;Ljava/lang/Integer;)Lwz; b method_42508 method_42508 + m ()Lfgr; c method_54581 hideSplashTexts + m (I)D c method_41793 logMouse + m (Lfgh;)Lfjx; c method_47397 method_47397 + m (Ljava/lang/Boolean;)V c method_42520 method_42520 + m (Ljava/lang/Double;)V c method_48582 method_48582 + m (Ljava/lang/Integer;)V c method_42515 method_42515 + m (Ljava/lang/String;)Ljava/util/List; c method_33671 readListOfStrings + m (Lwz;I)Lwz; c method_41791 pixelValueLabel + m (Lwz;Ljava/lang/Boolean;)Lwz; c method_42506 method_42506 + m (Lwz;Ljava/lang/Double;)Lwz; c method_48189 method_48189 + m (Lwz;Ljava/lang/Integer;)Lwz; c method_42522 method_42522 + m ()Lfgr; d method_42495 sensitivity + m (I)Ljava/lang/Double; d method_48187 method_48187 + m (Ljava/lang/Boolean;)V d method_42513 method_42513 + m (Ljava/lang/Double;)V d method_42501 method_42501 + m (Ljava/lang/Integer;)V d method_41779 method_41779 + m (Ljava/lang/String;)V d method_42509 method_42509 + m (Lwz;Ljava/lang/Boolean;)Lwz; d method_42525 method_42525 + m (Lwz;Ljava/lang/Double;)Lwz; d method_42548 method_42548 + m (Lwz;Ljava/lang/Integer;)Lwz; d method_41789 method_41789 + m ()Lfgr; e method_42503 renderDistance + m (I)Ljava/lang/Double; e method_42504 method_42504 + m (Ljava/lang/Boolean;)V e method_42500 method_42500 + m (Ljava/lang/Double;)V e method_42514 method_42514 + m (Ljava/lang/Integer;)Ljava/lang/Double; e method_42532 method_42532 + m (Ljava/lang/String;)Ljava/util/Optional; e method_42516 method_42516 + m (Lwz;Ljava/lang/Double;)Lwz; e method_41799 method_41799 + m (Lwz;Ljava/lang/Integer;)Lwz; e method_41800 method_41800 + m ()Lfgr; f method_42510 simulationDistance + m (I)Ljava/lang/Integer; f method_42511 method_42511 + m (Ljava/lang/Boolean;)V f method_42530 method_42530 + m (Ljava/lang/Double;)V f method_42526 method_42526 + m (Ljava/lang/Integer;)V f method_41797 method_41797 + m (Lwz;Ljava/lang/Double;)Lwz; f method_41804 method_41804 + m (Lwz;Ljava/lang/Integer;)Lwz; f method_42545 method_42545 + m ()Lfgr; g method_42517 entityDistanceScaling + m (I)Ljava/lang/Double; g method_42518 method_42518 + m (Ljava/lang/Boolean;)Lfjx; g method_47398 method_47398 + m (Ljava/lang/Double;)Ljava/lang/Integer; g method_42536 method_42536 + m (Ljava/lang/Integer;)V g method_42541 method_42541 + m (Lwz;Ljava/lang/Double;)Lwz; g method_42560 method_42560 + m (Lwz;Ljava/lang/Integer;)Lwz; g method_42559 method_42559 + m ()Lfgr; h method_42524 framerateLimit + m (Ljava/lang/Boolean;)V h method_42535 method_42535 + m (Ljava/lang/Double;)V h method_41778 method_41778 + m (Ljava/lang/Integer;)V h method_57704 method_57704 + m (Lwz;Ljava/lang/Double;)Lwz; h method_42564 method_42564 + m ()Lfgr; i method_42528 cloudStatus + m (Ljava/lang/Boolean;)V i method_57022 method_57022 + m (Ljava/lang/Double;)V i method_48188 method_48188 + m (Ljava/lang/Integer;)V i method_42555 method_42555 + m (Lwz;Ljava/lang/Double;)Lwz; i method_42432 method_42432 + m ()Lfgr; j method_42534 graphicsMode + m (Ljava/lang/Boolean;)V j method_42537 method_42537 + m (Ljava/lang/Double;)I j method_48190 method_48190 + m (Ljava/lang/Integer;)I j method_42557 method_42557 + m (Lwz;Ljava/lang/Double;)Lwz; j method_42436 method_42436 + m ()Lfgr; k method_41792 ambientOcclusion + m (Ljava/lang/Boolean;)V k method_42538 method_42538 + m (Ljava/lang/Double;)V k method_42540 method_42540 + m ()Lfgr; l method_41798 prioritizeChunkUpdates + m (Ljava/lang/Boolean;)V l method_41777 method_41777 + m (Ljava/lang/Double;)I l method_42544 method_42544 + m ()Lfgr; m method_42539 chatVisibility + m (Ljava/lang/Boolean;)V m method_49599 method_49599 + m (Ljava/lang/Double;)V m method_41796 method_41796 + m ()Lfgr; n method_42542 chatOpacity + m (Ljava/lang/Boolean;)V n method_47999 method_47999 + m (Ljava/lang/Double;)V n method_41802 method_41802 + m ()Lfgr; o method_42546 chatLineSpacing + m (Ljava/lang/Boolean;)Lfgb; o method_52704 method_52704 + m (Ljava/lang/Double;)V o method_42558 method_42558 + m ()Lfgr; p method_57702 menuBackgroundBlurriness + m (Ljava/lang/Double;)V p method_42562 method_42562 + m ()I q method_57703 getMenuBackgroundBlurriness + m (Ljava/lang/Double;)V q method_45580 method_45580 + m ()Lfgr; r method_42550 textBackgroundOpacity + m (Ljava/lang/Double;)V r method_42566 method_42566 + m ()Lfgr; s method_45581 panoramaSpeed + m (Ljava/lang/Double;)V s method_42568 method_42568 + m ()Lfgr; t method_49600 highContrast + m (Ljava/lang/Double;)V t method_42424 method_42424 + m ()Lfgr; u method_53530 narratorHotkey + m (Ljava/lang/Double;)V u method_42428 method_42428 + m ()Lfgr; v method_42552 mainHand + m (Ljava/lang/Double;)I v method_42430 method_42430 + m ()Lfgr; w method_42554 chatScale + m (Ljava/lang/Double;)V w method_42434 method_42434 + m ()Lfgr; x method_42556 chatWidth + m ()Lfgr; y method_41801 chatHeightUnfocused + m ()Lfgr; z method_41803 chatHeightFocused + m (Lfgo;Ljava/io/File;)V + m ()V +c fgs$1 net/minecraft/class_315$1 net/minecraft/client/Options$1 + m ()V +c fgs$2 net/minecraft/class_315$2 net/minecraft/client/Options$2 + f Lub; a field_28778 val$options + m (Ljava/lang/String;)Ljava/lang/String; a method_33676 getValueOrNull + m (Ljava/lang/String;Lfgr;Lcom/mojang/serialization/DataResult$Error;)V a method_42571 method_42571 + m (Lfgs;Lub;)V +c fgs$3 net/minecraft/class_315$3 net/minecraft/client/Options$3 + f Ljava/io/PrintWriter; a field_28780 val$writer + m (Lfgr;Lcom/mojang/serialization/DataResult$Error;)V a method_42572 method_42572 + m (Ljava/lang/String;)V a method_33677 writePrefix + m (Ljava/lang/String;Ljava/io/PrintWriter;Lcom/google/gson/JsonElement;)V a method_42573 method_42573 + m (Lfgs;Ljava/io/PrintWriter;)V +c fgs$4 net/minecraft/class_315$4 net/minecraft/client/Options$4 + f Ljava/util/List; a field_49106 val$optionsForReport + m (Lfgs;Ljava/util/List;)V +c fgs$5 net/minecraft/class_315$5 net/minecraft/client/Options$5 + f [I a field_37883 $SwitchMap$net$minecraft$client$PrioritizeChunkUpdates + f [I b field_38301 $SwitchMap$net$minecraft$client$GraphicsStatus + m ()V +c fgs$a net/minecraft/class_315$class_5823 net/minecraft/client/Options$FieldAccess + m (Ljava/lang/String;F)F a method_33679 process + m (Ljava/lang/String;I)I a method_33680 process + m (Ljava/lang/String;Ljava/lang/Object;Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/lang/Object; a method_33681 process + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_33683 process + m (Ljava/lang/String;Z)Z a method_33684 process +c fgs$b net/minecraft/class_315$class_9242 net/minecraft/client/Options$OptionAccess + m (Ljava/lang/String;Lfgr;)V a method_42570 process +c fgt net/minecraft/class_4066 net/minecraft/client/ParticleStatus + f Lfgt; a field_18197 ALL + f Lfgt; b field_18198 DECREASED + f Lfgt; c field_18199 MINIMAL + f Ljava/util/function/IntFunction; d field_18200 BY_ID + f I e field_18201 id + f Ljava/lang/String; f field_18202 key + f [Lfgt; g field_18203 $VALUES + m (I)Lfgt; a method_18608 byId + m ()[Lfgt; c method_36865 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c fgu net/minecraft/class_6877 net/minecraft/client/PeriodicNotificationManager + f Lcom/mojang/serialization/Codec; a field_36435 CODEC + f Lorg/slf4j/Logger; b field_36436 LOGGER + f Lakr; c field_36437 notifications + f Lit/unimi/dsi/fastutil/objects/Object2BooleanFunction; d field_36438 selector + f Ljava/util/Timer; e field_36439 timer + f Lfgu$b; f field_36440 notificationTask + m ()V a method_40190 stopTimer + m (JLfgu$a;)J a method_40191 method_40191 + m (Laue;Lbnf;)Ljava/util/Map; a method_40192 prepare + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_40193 method_40193 + m (Lfgu$a;)J a method_40194 method_40194 + m (Ljava/util/List;)J a method_40195 calculateInitialDelay + m (Ljava/util/List;J)J a method_40196 calculateOptimalPeriod + m (Ljava/util/Map$Entry;)Z a method_40197 method_40197 + m (Ljava/util/Map;Laue;Lbnf;)V a method_40198 apply + m ()Ljava/lang/IllegalStateException; b method_40199 method_40199 + m (Lfgu$a;)Z b method_40200 method_40200 + m (Lakr;Lit/unimi/dsi/fastutil/objects/Object2BooleanFunction;)V + m ()V +c fgu$a net/minecraft/class_6877$class_6878 net/minecraft/client/PeriodicNotificationManager$Notification + f J a comp_345 delay + f J b comp_346 period + f Ljava/lang/String; c comp_347 title + f Ljava/lang/String; d comp_348 message + m ()J a comp_345 delay + m ()J b comp_346 period + m ()Ljava/lang/String; c comp_347 title + m ()Ljava/lang/String; d comp_348 message + m (JJLjava/lang/String;Ljava/lang/String;)V +c fgu$b net/minecraft/class_6877$class_6879 net/minecraft/client/PeriodicNotificationManager$NotificationTask + f Lfgo; a field_36441 minecraft + f Ljava/util/List; b field_36442 notifications + f J c field_36443 period + f Ljava/util/concurrent/atomic/AtomicLong; d field_36444 elapsed + m (Lfgu$a;J)V a method_40201 method_40201 + m (Ljava/util/List;J)Lfgu$b; a method_40202 reset + m (Ljava/util/List;JJ)V +c fgv net/minecraft/class_6597 net/minecraft/client/PrioritizeChunkUpdates + f Lfgv; a field_34788 NONE + f Lfgv; b field_34789 PLAYER_AFFECTED + f Lfgv; c field_34790 NEARBY + f Ljava/util/function/IntFunction; d field_34791 BY_ID + f I e field_34792 id + f Ljava/lang/String; f field_34793 key + f [Lfgv; g field_34794 $VALUES + m (I)Lfgv; a method_38523 byId + m ()[Lfgv; c method_38526 $values + m (Ljava/lang/String;IILjava/lang/String;)V + m ()V +c fgw net/minecraft/class_314 net/minecraft/client/RecipeBookCategories + f Lfgw; a field_1809 CRAFTING_SEARCH + f Lfgw; b field_1806 CRAFTING_BUILDING_BLOCKS + f Lfgw; c field_1803 CRAFTING_REDSTONE + f Lfgw; d field_1813 CRAFTING_EQUIPMENT + f Lfgw; e field_1810 CRAFTING_MISC + f Lfgw; f field_1804 FURNACE_SEARCH + f Lfgw; g field_1808 FURNACE_FOOD + f Lfgw; h field_1811 FURNACE_BLOCKS + f Lfgw; i field_1812 FURNACE_MISC + f Lfgw; j field_17110 BLAST_FURNACE_SEARCH + f Lfgw; k field_17111 BLAST_FURNACE_BLOCKS + f Lfgw; l field_17112 BLAST_FURNACE_MISC + f Lfgw; m field_17113 SMOKER_SEARCH + f Lfgw; n field_17114 SMOKER_FOOD + f Lfgw; o field_17764 STONECUTTER + f Lfgw; p field_25624 SMITHING + f Lfgw; q field_17765 CAMPFIRE + f Lfgw; r field_25625 UNKNOWN + f Ljava/util/List; s field_25779 SMOKER_CATEGORIES + f Ljava/util/List; t field_25780 BLAST_FURNACE_CATEGORIES + f Ljava/util/List; u field_25781 FURNACE_CATEGORIES + f Ljava/util/List; v field_25782 CRAFTING_CATEGORIES + f Ljava/util/Map; w field_25783 AGGREGATE_CATEGORIES + f Ljava/util/List; x field_1807 itemIcons + f [Lfgw; y field_1805 $VALUES + m ()Ljava/util/List; a method_1623 getIconItems + m (Lcrj;)Ljava/util/List; a method_30285 getCategories + m ()[Lfgw; b method_36866 $values + m (Ljava/lang/String;I[Lcuq;)V + m ()V +c fgw$1 net/minecraft/class_314$1 net/minecraft/client/RecipeBookCategories$1 + f [I a field_25784 $SwitchMap$net$minecraft$world$inventory$RecipeBookType + m ()V +c fgx net/minecraft/class_6360 net/minecraft/client/ResourceLoadStateTracker + f Lorg/slf4j/Logger; a field_33698 LOGGER + f Lfgx$c; b field_33699 reloadState + f I c field_33700 reloadCount + m ()V a method_36562 finishReload + m (Lfgx$b;Ljava/util/List;)V a method_36563 startReload + m (Ljava/lang/Throwable;)V a method_36564 startRecovery + m (Lo;)V a method_36565 fillCrashReport + m ()V + m ()V +c fgx$a net/minecraft/class_6360$class_6361 net/minecraft/client/ResourceLoadStateTracker$RecoveryInfo + f Ljava/lang/Throwable; a field_33701 error + m ()Ljava/lang/String; a method_36566 method_36566 + m (Lp;)V a method_36567 fillCrashInfo + m (Ljava/lang/Throwable;)V +c fgx$b net/minecraft/class_6360$class_6362 net/minecraft/client/ResourceLoadStateTracker$ReloadReason + f Lfgx$b; a field_33702 INITIAL + f Lfgx$b; b field_33703 MANUAL + f Lfgx$b; c field_33704 UNKNOWN + f Ljava/lang/String; d field_33705 name + f [Lfgx$b; e field_33706 $VALUES + m ()[Lfgx$b; a method_36867 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c fgx$c net/minecraft/class_6360$class_6363 net/minecraft/client/ResourceLoadStateTracker$ReloadState + f Lfgx$b; a field_33707 reloadReason + f Ljava/util/List; b field_33708 packs + f Lfgx$a; c field_33709 recoveryReloadInfo + f Z d field_33710 finished + m ()Ljava/lang/String; a method_36569 method_36569 + m (Lp;)V a method_36573 fillCrashInfo + m (Lfgx$b;Ljava/util/List;)V +c fgy net/minecraft/class_318 net/minecraft/client/Screenshot + f Ljava/lang/String; a field_41337 SCREENSHOT_DIR + f Lorg/slf4j/Logger; b field_1974 LOGGER + f I c field_32157 rowHeight + f Ljava/io/DataOutputStream; d field_32158 outputStream + f [B e field_32159 bytes + f I f field_32160 width + f I g field_32161 height + f Ljava/io/File; h field_32162 file + m ()V a method_35710 saveRow + m (Lezv;)Lfaj; a method_1663 takeScreenshot + m (Lfaj;Ljava/io/File;Ljava/util/function/Consumer;)V a method_1661 method_1661 + m (Ljava/io/File;)Ljava/io/File; a method_1660 getFile + m (Ljava/io/File;Lezv;Ljava/util/function/Consumer;)V a method_1659 grab + m (Ljava/io/File;Ljava/lang/String;Lezv;Ljava/util/function/Consumer;)V a method_22690 grab + m (Ljava/io/File;Lxw;)Lxw; a method_1664 method_1664 + m (Ljava/nio/ByteBuffer;IIII)V a method_35711 addRegion + m ()Ljava/io/File; b method_35712 close + m (Ljava/io/File;Ljava/lang/String;Lezv;Ljava/util/function/Consumer;)V b method_1662 _grab + m (Ljava/io/File;Ljava/lang/String;Lezv;Ljava/util/function/Consumer;)V c method_22691 method_22691 + m (Ljava/io/File;III)V + m ()V +c fgz net/minecraft/class_5225 net/minecraft/client/StringSplitter + f Lfgz$f; a field_24216 widthProvider + m (Laya;)F a method_30875 stringWidth + m (Laya;I)Lxw; a method_30876 componentStyleAtWidth + m (Lfgz$e;Lorg/apache/commons/lang3/mutable/MutableObject;ILxw;I)Z a method_30877 method_30877 + m (Lfgz$e;Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_27480 method_27480 + m (Ljava/lang/String;)F a method_27482 stringWidth + m (Ljava/lang/String;IIZ)I a method_27483 getWordPosition + m (Ljava/lang/String;ILxw;)I a method_27484 plainIndexAtWidth + m (Ljava/lang/String;ILxw;ZLfgz$d;)V a method_27485 splitLines + m (Ljava/util/List;Ljava/lang/String;Lxw;II)V a method_27486 method_27486 + m (Ljava/util/List;Lxe;Ljava/lang/Boolean;)V a method_30878 method_30878 + m (Ljava/util/List;Lxe;Lxe;Ljava/lang/Boolean;)V a method_35713 method_35713 + m (Ljava/util/List;Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_27487 method_27487 + m (Lorg/apache/commons/lang3/mutable/MutableFloat;ILorg/apache/commons/lang3/mutable/MutableInt;ILxw;I)Z a method_27493 method_27493 + m (Lorg/apache/commons/lang3/mutable/MutableFloat;ILxw;I)Z a method_30879 method_30879 + m (Lxe;)F a method_27488 stringWidth + m (Lxe;I)Lxw; a method_27489 componentStyleAtWidth + m (Lxe;ILxw;)Lxe; a method_27490 headByWidth + m (Lxe;ILxw;Ljava/util/function/BiConsumer;)V a method_29971 splitLines + m (Lxe;ILxw;Lxe;)Ljava/util/List; a method_35714 splitLines + m (Ljava/lang/String;ILxw;)Ljava/lang/String; b method_27494 plainHeadByWidth + m (Lorg/apache/commons/lang3/mutable/MutableFloat;ILxw;I)Z b method_27492 method_27492 + m (Lxe;ILxw;)Ljava/util/List; b method_27495 splitLines + m (Ljava/lang/String;ILxw;)Ljava/lang/String; c method_27497 plainTailByWidth + m (Lorg/apache/commons/lang3/mutable/MutableFloat;ILxw;I)Z c method_27496 method_27496 + m (Ljava/lang/String;ILxw;)I d method_35715 formattedIndexByWidth + m (Ljava/lang/String;ILxw;)Ljava/lang/String; e method_35716 formattedHeadByWidth + m (Ljava/lang/String;ILxw;)I f method_35717 findLineBreak + m (Ljava/lang/String;ILxw;)Ljava/util/List; g method_27498 splitLines + m (Lfgz$f;)V +c fgz$1 net/minecraft/class_5225$1 net/minecraft/client/StringSplitter$1 + f Lfgz$e; a field_24217 val$output + f Lfgd; b field_24219 collector + m (Lfgz;Lfgz$e;)V +c fgz$a net/minecraft/class_5225$class_5226 net/minecraft/client/StringSplitter$FlatComponents + f Ljava/util/List; a field_24220 parts + f Ljava/lang/String; b field_24221 flatParts + m ()Lxe; a method_27499 getRemainder + m (I)C a method_27500 charAt + m (IILxw;)Lxe; a method_27501 splitAt + m (Lfgz$c;)Ljava/lang/String; a method_27504 method_27504 + m (Ljava/util/List;)V +c fgz$b net/minecraft/class_5225$class_5227 net/minecraft/client/StringSplitter$LineBreakFinder + f Lfgz; a field_24222 field_24222 + f F b field_24223 maxWidth + f I c field_24224 lineBreak + f Lxw; d field_24225 lineBreakStyle + f Z e field_24226 hadNonZeroWidthChar + f F f field_24227 width + f I g field_24228 lastSpace + f Lxw; h field_24229 lastSpaceStyle + f I i field_24230 nextChar + f I j field_24231 offset + m ()I a method_27505 getSplitPosition + m (I)V a method_27506 addToOffset + m (ILxw;)Z a method_27507 finishIteration + m ()Lxw; b method_27508 getSplitStyle + m ()Z c method_27509 lineBreakFound + m (Lfgz;F)V +c fgz$c net/minecraft/class_5225$class_5345 net/minecraft/client/StringSplitter$LineComponent + f Ljava/lang/String; c field_25261 contents + f Lxw; d field_25262 style + m (Ljava/lang/String;Lxw;)V +c fgz$d net/minecraft/class_5225$class_5229 net/minecraft/client/StringSplitter$LinePosConsumer +c fgz$e net/minecraft/class_5225$class_5230 net/minecraft/client/StringSplitter$WidthLimitedCharSink + f Lfgz; a field_24234 field_24234 + f F b field_24235 maxWidth + f I c field_24236 position + m ()I a method_27513 getPosition + m ()V b method_27514 resetPosition + m (Lfgz;F)V +c fgz$f net/minecraft/class_5225$class_5231 net/minecraft/client/StringSplitter$WidthProvider +c fha net/minecraft/class_4666 net/minecraft/client/ToggleKeyMapping + f Ljava/util/function/BooleanSupplier; h field_21334 needsToggle + m ()V n method_52232 reset + m (Ljava/lang/String;ILjava/lang/String;Ljava/util/function/BooleanSupplier;)V +c fhb net/minecraft/class_320 net/minecraft/client/User + f Ljava/lang/String; a field_1982 name + f Ljava/util/UUID; b field_1985 uuid + f Ljava/lang/String; c field_1983 accessToken + f Ljava/util/Optional; d field_34960 xuid + f Ljava/util/Optional; e field_34961 clientId + f Lfhb$a; f field_1984 type + m ()Ljava/lang/String; a method_1675 getSessionId + m ()Ljava/util/UUID; b method_44717 getProfileId + m ()Ljava/lang/String; c method_1676 getName + m ()Ljava/lang/String; d method_1674 getAccessToken + m ()Ljava/util/Optional; e method_38740 getClientId + m ()Ljava/util/Optional; f method_38741 getXuid + m ()Lfhb$a; g method_35718 getType + m (Ljava/lang/String;Ljava/util/UUID;Ljava/lang/String;Ljava/util/Optional;Ljava/util/Optional;Lfhb$a;)V +c fhb$a net/minecraft/class_320$class_321 net/minecraft/client/User$Type + f Lfhb$a; a field_1990 LEGACY + f Lfhb$a; b field_1988 MOJANG + f Lfhb$a; c field_34962 MSA + f Ljava/util/Map; d field_1989 BY_NAME + f Ljava/lang/String; e field_1986 name + f [Lfhb$a; f field_1987 $VALUES + m ()Ljava/lang/String; a method_38742 getName + m (Lfhb$a;)Ljava/lang/String; a method_1678 method_1678 + m (Ljava/lang/String;)Lfhb$a; a method_1679 byName + m ()[Lfhb$a; b method_36868 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c fhc net/minecraft/class_7179 net/minecraft/client/animation/AnimationChannel + f Lfhc$c; a comp_595 target + f [Lfhe; b comp_596 keyframes + m ()Lfhc$c; a comp_595 target + m ()[Lfhe; b comp_596 keyframes + m (Lfhc$c;[Lfhe;)V +c fhc$a net/minecraft/class_7179$class_7180 net/minecraft/client/animation/AnimationChannel$Interpolation +c fhc$b net/minecraft/class_7179$class_7181 net/minecraft/client/animation/AnimationChannel$Interpolations + f Lfhc$a; a field_37884 LINEAR + f Lfhc$a; b field_37885 CATMULLROM + m (Lorg/joml/Vector3f;F[Lfhe;IIF)Lorg/joml/Vector3f; a method_41815 method_41815 + m (Lorg/joml/Vector3f;F[Lfhe;IIF)Lorg/joml/Vector3f; b method_41816 method_41816 + m ()V + m ()V +c fhc$c net/minecraft/class_7179$class_7182 net/minecraft/client/animation/AnimationChannel$Target +c fhc$d net/minecraft/class_7179$class_7183 net/minecraft/client/animation/AnimationChannel$Targets + f Lfhc$c; a field_37886 POSITION + f Lfhc$c; b field_37887 ROTATION + f Lfhc$c; c field_37888 SCALE + m ()V + m ()V +c fhd net/minecraft/class_7184 net/minecraft/client/animation/AnimationDefinition + f F a comp_597 lengthInSeconds + f Z b comp_598 looping + f Ljava/util/Map; c comp_599 boneAnimations + m ()F a comp_597 lengthInSeconds + m ()Z b comp_598 looping + m ()Ljava/util/Map; c comp_599 boneAnimations + m (FZLjava/util/Map;)V +c fhd$a net/minecraft/class_7184$class_7185 net/minecraft/client/animation/AnimationDefinition$Builder + f F a field_37889 length + f Ljava/util/Map; b field_37890 animationByBone + f Z c field_37891 looping + m ()Lfhd$a; a method_41817 looping + m (F)Lfhd$a; a method_41818 withLength + m (Ljava/lang/String;)Ljava/util/List; a method_41819 method_41819 + m (Ljava/lang/String;Lfhc;)Lfhd$a; a method_41820 addAnimation + m ()Lfhd; b method_41821 build + m (F)V +c fhe net/minecraft/class_7186 net/minecraft/client/animation/Keyframe + f F a comp_600 timestamp + f Lorg/joml/Vector3f; b comp_601 target + f Lfhc$a; c comp_602 interpolation + m ()F a comp_600 timestamp + m ()Lorg/joml/Vector3f; b comp_601 target + m ()Lfhc$a; c comp_602 interpolation + m (FLorg/joml/Vector3f;Lfhc$a;)V +c fhf net/minecraft/class_7187 net/minecraft/client/animation/KeyframeAnimations + m (DDD)Lorg/joml/Vector3f; a method_41822 scaleVec + m (FFF)Lorg/joml/Vector3f; a method_41823 posVec + m (FLorg/joml/Vector3f;FLfyk;Lfhc;)V a method_41824 method_41824 + m (F[Lfhe;I)Z a method_41825 method_41825 + m (Lfhd;J)F a method_41826 getElapsedSeconds + m (Lfvt;Lfhd;JFLorg/joml/Vector3f;)V a method_41827 animate + m (Ljava/util/List;FLorg/joml/Vector3f;FLfyk;)V a method_41828 method_41828 + m (FFF)Lorg/joml/Vector3f; b method_41829 degreeVec + m ()V +c fhg net/minecraft/class_9079 net/minecraft/client/animation/definitions/ArmadilloAnimation + f Lfhd; a field_49108 ARMADILLO_ROLL_UP + f Lfhd; b field_47844 ARMADILLO_WALK + f Lfhd; c field_49109 ARMADILLO_PEEK + f Lfhd; d field_49110 ARMADILLO_ROLL_OUT + m ()V + m ()V +c fhh net/minecraft/class_8928 net/minecraft/client/animation/definitions/BatAnimation + f Lfhd; a field_47103 BAT_RESTING + f Lfhd; b field_47104 BAT_FLYING + m ()V + m ()V +c fhi net/minecraft/class_8972 net/minecraft/client/animation/definitions/BreezeAnimation + f Lfhd; a field_47428 SHOOT + f Lfhd; b field_47429 JUMP + f Lfhd; c field_47430 SLIDE + f Lfhd; d field_47846 SLIDE_BACK + m ()V + m ()V +c fhj net/minecraft/class_7730 net/minecraft/client/animation/definitions/CamelAnimation + f Lfhd; a field_40384 CAMEL_WALK + f Lfhd; b field_40385 CAMEL_SIT + f Lfhd; c field_40749 CAMEL_SIT_POSE + f Lfhd; d field_40386 CAMEL_STANDUP + f Lfhd; e field_40387 CAMEL_DASH + f Lfhd; f field_40388 CAMEL_IDLE + m ()V + m ()V +c fhk net/minecraft/class_7188 net/minecraft/client/animation/definitions/FrogAnimation + f Lfhd; a field_37892 FROG_CROAK + f Lfhd; b field_37893 FROG_WALK + f Lfhd; c field_37894 FROG_JUMP + f Lfhd; d field_37895 FROG_TONGUE + f Lfhd; e field_37896 FROG_SWIM + f Lfhd; f field_37897 FROG_IDLE_WATER + m ()V + m ()V +c fhl net/minecraft/class_8182 net/minecraft/client/animation/definitions/SnifferAnimation + f Lfhd; a field_43406 BABY_TRANSFORM + f Lfhd; b field_42866 SNIFFER_SNIFFSNIFF + f Lfhd; c field_42867 SNIFFER_LONGSNIFF + f Lfhd; d field_42868 SNIFFER_WALK + f Lfhd; e field_42869 SNIFFER_SNIFF_SEARCH + f Lfhd; f field_42870 SNIFFER_DIG + f Lfhd; g field_42871 SNIFFER_STAND_UP + f Lfhd; h field_42872 SNIFFER_BABY_FALL + f Lfhd; i field_42873 SNIFFER_HAPPY + m ()V + m ()V +c fhm net/minecraft/class_7278 net/minecraft/client/animation/definitions/WardenAnimation + f Lfhd; a field_38302 WARDEN_EMERGE + f Lfhd; b field_38303 WARDEN_DIG + f Lfhd; c field_38304 WARDEN_ROAR + f Lfhd; d field_38305 WARDEN_SNIFF + f Lfhd; e field_38306 WARDEN_ATTACK + f Lfhd; f field_38879 WARDEN_SONIC_BOOM + m ()V + m ()V +c fhn net/minecraft/class_7189 net/minecraft/client/animation/definitions/package-info +c fho net/minecraft/class_7190 net/minecraft/client/animation/package-info +c fhp net/minecraft/class_322 net/minecraft/client/color/block/BlockColor +c fhq net/minecraft/class_324 net/minecraft/client/color/block/BlockColors + f I a field_32163 DEFAULT + f Ljs; b field_1995 blockColors + f Ljava/util/Map; c field_20271 coloringStates + m ()Lfhq; a method_1689 createDefault + m (Ldfy;)Ljava/util/Set; a method_21592 getColoringProperties + m (Ldtc;Ldbz;Ljd;I)I a method_1697 getColor + m (Ldtc;Ldcw;Ljd;)I a method_1691 getColor + m (Lduf;[Ldfy;)V a method_21593 addColoringState + m (Lfhp;[Ldfy;)V a method_1690 register + m (Ljava/util/Set;[Ldfy;)V a method_21594 addColoringStates + m (Ldtc;Ldbz;Ljd;I)I b method_1684 method_1684 + m (Ldtc;Ldbz;Ljd;I)I c method_1696 method_1696 + m (Ldtc;Ldbz;Ljd;I)I d method_1698 method_1698 + m (Ldtc;Ldbz;Ljd;I)I e method_1685 method_1685 + m (Ldtc;Ldbz;Ljd;I)I f method_1688 method_1688 + m (Ldtc;Ldbz;Ljd;I)I g method_1694 method_1694 + m (Ldtc;Ldbz;Ljd;I)I h method_1692 method_1692 + m (Ldtc;Ldbz;Ljd;I)I i method_1687 method_1687 + m (Ldtc;Ldbz;Ljd;I)I j method_1695 method_1695 + m (Ldtc;Ldbz;Ljd;I)I k method_49295 method_49295 + m (Ldtc;Ldbz;Ljd;I)I l method_1693 method_1693 + m (Ldtc;Ldbz;Ljd;I)I m method_1686 method_1686 + m ()V +c fhr net/minecraft/class_4700 net/minecraft/client/color/block/BlockTintCache + f I a field_32164 MAX_CACHE_ENTRIES + f Ljava/lang/ThreadLocal; b field_21519 latestChunkOnThread + f Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; c field_21520 cache + f Ljava/util/concurrent/locks/ReentrantReadWriteLock; d field_21521 lock + f Ljava/util/function/ToIntFunction; e field_34795 source + m ()V a method_23768 invalidateAll + m (II)V a method_23769 invalidateForChunk + m (Ljd;)I a method_23770 getColor + m (II)Lfhr$a; b method_23772 findOrCreateChunkCache + m (Ljava/util/function/ToIntFunction;)V +c fhr$a net/minecraft/class_4700$class_6598 net/minecraft/client/color/block/BlockTintCache$CacheData + f Lit/unimi/dsi/fastutil/ints/Int2ObjectArrayMap; a field_34796 cache + f Ljava/util/concurrent/locks/ReentrantReadWriteLock; b field_34797 lock + f I c field_34798 BLOCKS_PER_LAYER + f Z d field_41610 invalidated + m ()Z a method_47894 isInvalidated + m (I)[I a method_38528 getLayer + m ()V b method_47895 invalidate + m (I)[I b method_38529 method_38529 + m ()[I c method_38527 allocateLayer + m ()V + m ()V +c fhr$b net/minecraft/class_4700$class_4701 net/minecraft/client/color/block/BlockTintCache$LatestCacheInfo + f I a field_21522 x + f I b field_21523 z + f Lfhr$a; c field_21524 cache + m ()V +c fhs net/minecraft/class_6202 net/minecraft/client/color/block/package-info +c fht net/minecraft/class_326 net/minecraft/client/color/item/ItemColor +c fhu net/minecraft/class_325 net/minecraft/client/color/item/ItemColors + f I a field_32165 DEFAULT + f Ljs; b field_1996 itemColors + m (Lcuq;I)I a method_1704 getColor + m (Lcwa;Lcuq;I)I a method_1699 method_1699 + m (Lfhq;)Lfhu; a method_1706 createDefault + m (Lfhq;Lcuq;I)I a method_1702 method_1702 + m (Lfht;[Ldcv;)V a method_1708 register + m (Lcuq;I)I b method_57705 method_57705 + m (Lcuq;I)I c method_43767 method_43767 + m (Lcuq;I)I d method_57706 method_57706 + m (Lcuq;I)I e method_57707 method_57707 + m (Lcuq;I)I f method_1701 method_1701 + m (Lcuq;I)I g method_1705 method_1705 + m (Lcuq;I)I h method_1707 method_1707 + m ()V +c fhv net/minecraft/class_6203 net/minecraft/client/color/item/package-info +c fhw net/minecraft/class_8016 net/minecraft/client/gui/ComponentPath + m ()Lfki; a comp_1188 component + m (Lfkh;Lfhw;)Lfhw; a method_48192 path + m (Lfki;)Lfhw; a method_48193 leaf + m (Lfki;[Lfkh;)Lfhw; a method_48194 path + m (Z)V a method_48195 applyFocus +c fhw$a net/minecraft/class_8016$class_8017 net/minecraft/client/gui/ComponentPath$Leaf + f Lfki; a comp_1188 component + m (Lfki;)V +c fhw$b net/minecraft/class_8016$class_8018 net/minecraft/client/gui/ComponentPath$Path + f Lfkh; a comp_1189 component + f Lfhw; b comp_1190 childPath + m ()Lfkh; b comp_1189 component + m ()Lfhw; c comp_1190 childPath + m (Lfkh;Lfhw;)V +c fhx net/minecraft/class_327 net/minecraft/client/gui/Font + f I a field_35427 ALPHA_CUTOFF + f I b field_2000 lineHeight + f Layw; c field_2001 random + f F d field_32166 EFFECT_DEPTH + f Lorg/joml/Vector3f; e field_24237 SHADOW_OFFSET + f Ljava/util/function/Function; f field_1997 fonts + f Z g field_39925 filterFishyGlyphs + f Lfgz; h field_24238 splitter + m ()Z a method_1726 isBidirectional + m (I)I a method_27515 adjustColor + m (ILxw;)F a method_27516 method_27516 + m (Lakr;)Lfld; a method_27526 getFontSet + m (Laya;)I a method_30880 width + m (Laya;FFIILorg/joml/Matrix4f;Lgez;I)V a method_37296 drawInBatch8xOutline + m (Laya;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;II)I a method_22942 drawInBatch + m (Lfhx$b;[FIFIIILxw;I)Z a method_37297 method_37297 + m (Lflh;ZZFFFLorg/joml/Matrix4f;Lfbm;FFFFI)V a method_1710 renderChar + m (Ljava/lang/String;)Ljava/lang/String; a method_1721 bidirectionalShaping + m (Ljava/lang/String;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;II)I a method_27521 drawInBatch + m (Ljava/lang/String;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;IIZ)I a method_27522 drawInBatch + m (Ljava/lang/String;I)Ljava/lang/String; a method_27523 plainSubstrByWidth + m (Ljava/lang/String;IZ)Ljava/lang/String; a method_27524 plainSubstrByWidth + m (Lwz;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;II)I a method_30882 drawInBatch + m (Lxe;)I a method_27525 width + m (Lxe;I)Lxe; a method_1714 substrByWidth + m ()Lfgz; b method_27527 getSplitter + m (Laya;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;II)I b method_1723 drawInternal + m (Ljava/lang/String;)I b method_1727 width + m (Ljava/lang/String;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;II)F b method_1724 renderText + m (Ljava/lang/String;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;IIZ)I b method_27529 drawInternal + m (Ljava/lang/String;I)I b method_1713 wordWrapHeight + m (Lxe;I)I b method_44378 wordWrapHeight + m (Laya;FFIZLorg/joml/Matrix4f;Lgez;Lfhx$a;II)F c method_27530 renderText + m (Lxe;I)Ljava/util/List; c method_1728 split + m (Ljava/util/function/Function;Z)V + m ()V +c fhx$a net/minecraft/class_327$class_6415 net/minecraft/client/gui/Font$DisplayMode + f Lfhx$a; a field_33993 NORMAL + f Lfhx$a; b field_33994 SEE_THROUGH + f Lfhx$a; c field_33995 POLYGON_OFFSET + f [Lfhx$a; d field_33996 $VALUES + m ()[Lfhx$a; a method_37344 $values + m (Ljava/lang/String;I)V + m ()V +c fhx$b net/minecraft/class_327$class_5232 net/minecraft/client/gui/Font$StringRenderOutput + f Lgez; a field_24239 bufferSource + f Lfhx; b field_24240 field_24240 + f Z c field_24241 dropShadow + f F d field_24242 dimFactor + f F e field_24243 r + f F f field_24244 g + f F g field_24245 b + f F h field_24246 a + f Lorg/joml/Matrix4f; i field_24247 pose + f Lfhx$a; j field_33997 mode + f I k field_24249 packedLightCoords + f F l field_24250 x + f F m field_24251 y + f Ljava/util/List; n field_24252 effects + m (IF)F a method_27531 finish + m (Lflh$a;)V a method_27532 addEffect + m (Lfhx;Lgez;FFIZLorg/joml/Matrix4f;Lfhx$a;I)V +c fhy net/minecraft/class_329 net/minecraft/client/gui/Gui + f Lakr; A field_45298 FOOD_FULL_SPRITE + f Lakr; B field_45299 AIR_SPRITE + f Lakr; C field_45300 AIR_BURSTING_SPRITE + f Lakr; D field_45301 HEART_VEHICLE_CONTAINER_SPRITE + f Lakr; E field_45302 HEART_VEHICLE_FULL_SPRITE + f Lakr; F field_45303 HEART_VEHICLE_HALF_SPRITE + f Lakr; G field_2020 VIGNETTE_LOCATION + f Lakr; H field_2019 PUMPKIN_BLUR_LOCATION + f Lakr; I field_27389 SPYGLASS_SCOPE_LOCATION + f Lakr; J field_27960 POWDER_SNOW_OUTLINE_LOCATION + f Ljava/util/Comparator; K field_47550 SCORE_DISPLAY_ORDER + f Lwz; L field_26527 DEMO_EXPIRED_TEXT + f Lwz; M field_35430 SAVING_TEXT + f F N field_32168 MIN_CROSSHAIR_ATTACK_SPEED + f I O field_32169 NUM_HEARTS_PER_ROW + f I P field_32170 LINE_HEIGHT + f Ljava/lang/String; Q field_32171 SPACER + f F R field_32172 PORTAL_OVERLAY_ALPHA_MIN + f I S field_33942 HEART_SIZE + f I T field_33943 HEART_SEPARATION + f F U field_35431 AUTOSAVE_FADE_SPEED_FACTOR + f Layw; V field_2034 random + f Lfgo; W field_2035 minecraft + f Lfin; X field_2021 chat + f I Y field_2042 tickCount + f Lwz; Z field_2018 overlayMessageString + f F a field_2013 vignetteBrightness + f I aa field_2041 overlayMessageTime + f Z ab field_2038 animateOverlayMessageColor + f Z ac field_39458 chatDisabledByPlayerShown + f I ad field_2040 toolHighlightTimer + f Lcuq; ae field_2031 lastToolHighlight + f Lfiu; af field_2026 debugOverlay + f Lfju; ag field_2027 subtitleOverlay + f Lfkl; ah field_2025 spectatorGui + f Lfjn; ai field_2015 tabList + f Lfil; aj field_2030 bossOverlay + f I ak field_2023 titleTime + f Lwz; al field_2016 title + f Lwz; am field_2039 subtitle + f I an field_2037 titleFadeInTime + f I ao field_2017 titleStayTime + f I ap field_2036 titleFadeOutTime + f I aq field_2014 lastHealth + f I ar field_2033 displayHealth + f J as field_2012 lastHealthTime + f J at field_2032 healthBlinkTime + f F au field_35428 autosaveIndicatorValue + f F av field_35429 lastAutosaveIndicatorValue + f Lfib; aw field_47847 layers + f F ax field_27959 scopeScale + f Lakr; b field_45304 CROSSHAIR_SPRITE + f Lakr; c field_45305 CROSSHAIR_ATTACK_INDICATOR_FULL_SPRITE + f Lakr; d field_45306 CROSSHAIR_ATTACK_INDICATOR_BACKGROUND_SPRITE + f Lakr; e field_45307 CROSSHAIR_ATTACK_INDICATOR_PROGRESS_SPRITE + f Lakr; f field_45308 EFFECT_BACKGROUND_AMBIENT_SPRITE + f Lakr; g field_45309 EFFECT_BACKGROUND_SPRITE + f Lakr; h field_45310 HOTBAR_SPRITE + f Lakr; i field_45311 HOTBAR_SELECTION_SPRITE + f Lakr; j field_45312 HOTBAR_OFFHAND_LEFT_SPRITE + f Lakr; k field_45313 HOTBAR_OFFHAND_RIGHT_SPRITE + f Lakr; l field_45314 HOTBAR_ATTACK_INDICATOR_BACKGROUND_SPRITE + f Lakr; m field_45315 HOTBAR_ATTACK_INDICATOR_PROGRESS_SPRITE + f Lakr; n field_45316 JUMP_BAR_BACKGROUND_SPRITE + f Lakr; o field_45317 JUMP_BAR_COOLDOWN_SPRITE + f Lakr; p field_45318 JUMP_BAR_PROGRESS_SPRITE + f Lakr; q field_45319 EXPERIENCE_BAR_BACKGROUND_SPRITE + f Lakr; r field_45320 EXPERIENCE_BAR_PROGRESS_SPRITE + f Lakr; s field_45321 ARMOR_EMPTY_SPRITE + f Lakr; t field_45322 ARMOR_HALF_SPRITE + f Lakr; u field_45323 ARMOR_FULL_SPRITE + f Lakr; v field_45324 FOOD_EMPTY_HUNGER_SPRITE + f Lakr; w field_45325 FOOD_HALF_HUNGER_SPRITE + f Lakr; x field_45326 FOOD_FULL_HUNGER_SPRITE + f Lakr; y field_45327 FOOD_EMPTY_SPRITE + f Lakr; z field_45328 FOOD_HALF_SPRITE + m ()V a method_1742 resetTitleTimes + m (I)I a method_1733 getVisibleVehicleHeartRows + m (III)V a method_34001 setTimes + m (Lbsr;)V a method_1731 updateVignetteBrightness + m (Lbtn;)I a method_1744 getVehicleMaxHearts + m (Lbty;Lfhz;I)V a method_1752 renderJumpMeter + m (Lexa;)Z a method_17534 canRenderCrosshairForSpectator + m (Lexz;)Z a method_1751 method_1751 + m (Leyg;Lyp;Lexz;)Lfhy$a; a method_55439 method_55439 + m (Lfgo;)Z a method_55796 method_55796 + m (Lfhz;)V a method_1749 renderSelectedItemName + m (Lfhz;F)V a method_32598 renderSpyglassOverlay + m (Lfhz;FIILgql;)V a method_18620 method_18620 + m (Lfhz;I)V a method_1754 renderExperienceBar + m (Lfhz;IILfgf;Lcmx;Lcuq;I)V a method_1762 renderSlot + m (Lfhz;Lakr;F)V a method_31977 renderTextureOverlay + m (Lfhz;Lbsr;)V a method_1735 renderVignette + m (Lfhz;Lcmx;II)V a method_58477 renderFood + m (Lfhz;Lcmx;IIII)V a method_58478 renderArmor + m (Lfhz;Lcmx;IIIIFIIIZ)V a method_37298 renderHearts + m (Lfhz;Lexy;)V a method_1757 displayScoreboardSidebar + m (Lfhz;Lfgf;)V a method_1753 render + m (Lfhz;Lfhy$b;IIZZZ)V a method_37299 renderHeart + m (Lwz;)V a method_1732 setNowPlaying + m (Lwz;Z)V a method_1758 setOverlayMessage + m (Z)V a method_39191 tick + m ([Lfhy$a;Lfhz;ILwz;I)V a method_55440 method_55440 + m ()Z b method_44353 isShowingChatDisabledByPlayer + m (I)[Lfhy$a; b method_55441 method_55441 + m (Lfgo;)Z b method_55797 method_55797 + m (Lfhz;)V b method_1760 renderPlayerHealth + m (Lfhz;F)V b method_1746 renderPortalOverlay + m (Lfhz;Lfgf;)V b method_39192 renderSavingIndicator + m (Lwz;)V b method_34002 setSubtitle + m (Z)V b method_44354 setChatDisabledByPlayerShown + m ()V c method_34003 clear + m (Lfhz;)V c method_1741 renderVehicleHealth + m (Lfhz;Lfgf;)V c method_55798 renderCameraOverlays + m (Lwz;)V c method_34004 setTitle + m ()Lfin; d method_1743 getChat + m (Lfhz;Lfgf;)V d method_55799 renderSleepOverlay + m ()I e method_1738 getGuiTicks + m (Lfhz;Lfgf;)V e method_55800 renderOverlayMessage + m ()Lfhx; f method_1756 getFont + m (Lfhz;Lfgf;)V f method_55801 renderTitle + m ()Lfkl; g method_1739 getSpectatorGui + m (Lfhz;Lfgf;)V g method_55802 renderChat + m ()Lfjn; h method_1750 getTabList + m (Lfhz;Lfgf;)V h method_55803 renderScoreboardSidebar + m ()V i method_1747 onDisconnected + m (Lfhz;Lfgf;)V i method_55804 renderTabList + m ()Lfil; j method_1740 getBossOverlay + m (Lfhz;Lfgf;)V j method_1736 renderCrosshair + m ()Lfiu; k method_53531 getDebugOverlay + m (Lfhz;Lfgf;)V k method_1765 renderEffects + m ()V l method_1745 clearCache + m (Lfhz;Lfgf;)V l method_55805 renderHotbarAndDecorations + m ()Z m method_56135 isExperienceBarVisible + m (Lfhz;Lfgf;)V m method_1759 renderItemHotbar + m ()Lcmx; n method_1737 getCameraPlayer + m (Lfhz;Lfgf;)V n method_56136 renderExperienceLevel + m ()Lbtn; o method_1734 getPlayerVehicleWithHealth + m (Lfhz;Lfgf;)V o method_1766 renderDemoOverlay + m ()V p method_1748 tick + m (Lfhz;Lfgf;)V p method_55806 method_55806 + m ()V q method_39193 tickAutosaveIndicator + m (Lfhz;Lfgf;)V q method_55807 method_55807 + m (Lfhz;Lfgf;)V r method_55808 method_55808 + m (Lfgo;)V + m ()V +c fhy$a net/minecraft/class_329$class_9016 net/minecraft/client/gui/Gui$1DisplayEntry + f Lwz; a comp_2131 name + f Lwz; b comp_2132 score + f I c comp_2133 scoreWidth + m ()Lwz; a comp_2131 name + m ()Lwz; b comp_2132 score + m ()I c comp_2133 scoreWidth + m (Lwz;Lwz;I)V +c fhy$b net/minecraft/class_329$class_6411 net/minecraft/client/gui/Gui$HeartType + f Lfhy$b; a field_33944 CONTAINER + f Lfhy$b; b field_33945 NORMAL + f Lfhy$b; c field_33946 POISIONED + f Lfhy$b; d field_33947 WITHERED + f Lfhy$b; e field_33948 ABSORBING + f Lfhy$b; f field_33949 FROZEN + f Lakr; g field_45329 full + f Lakr; h field_45330 fullBlinking + f Lakr; i field_45331 half + f Lakr; j field_45332 halfBlinking + f Lakr; k field_45333 hardcoreFull + f Lakr; l field_45334 hardcoreFullBlinking + f Lakr; m field_45335 hardcoreHalf + f Lakr; n field_45336 hardcoreHalfBlinking + f [Lfhy$b; o field_33952 $VALUES + m ()[Lfhy$b; a method_37300 $values + m (Lcmx;)Lfhy$b; a method_37301 forPlayer + m (ZZZ)Lakr; a method_52705 getSprite + m (Ljava/lang/String;ILakr;Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;Lakr;)V + m ()V +c fhz net/minecraft/class_332 net/minecraft/client/gui/GuiGraphics + f F a field_44931 MAX_GUI_Z + f F b field_44932 MIN_GUI_Z + f I c field_44655 EXTRA_SPACE_AFTER_FIRST_TOOLTIP_LINE + f Lfgo; d field_44656 minecraft + f Lfbi; e field_44657 pose + f Lgez$a; f field_44658 bufferSource + f Lfhz$a; g field_44659 scissorStack + f Lfia; h field_45337 sprites + f Z i field_44797 managed + m ()I a method_51421 guiWidth + m (FFFF)V a method_51422 setColor + m (II)Z a method_58135 containsPointInScissor + m (IIII)V a method_25292 hLine + m (IIIII)V a method_25294 fill + m (IIIIII)V a method_51737 fill + m (IIIIIII)V a method_33284 fillGradient + m (IIIIILgql;)V a method_25298 blit + m (IIIIILgql;FFFF)V a method_48465 blit + m (Lakr;IIFFIIII)V a method_25290 blit + m (Lakr;IIIFFIIII)V a method_25291 blit + m (Lakr;IIII)V a method_52706 blitSprite + m (Lakr;IIIIFFIIII)V a method_25293 blit + m (Lakr;IIIII)V a method_52707 blitSprite + m (Lakr;IIIIIFFFF)V a method_25295 innerBlit + m (Lakr;IIIIIFFFFFFFF)V a method_48466 innerBlit + m (Lakr;IIIIII)V a method_25302 blit + m (Lakr;IIIIIIIFFII)V a method_25297 blit + m (Lakr;IIIIIIII)V a method_52708 blitSprite + m (Lakr;IIIIIIIII)V a method_52709 blitSprite + m (Lbtn;Lcuq;III)V a method_51423 renderItem + m (Lbtn;Ldcw;Lcuq;III)V a method_51424 renderItem + m (Lbtn;Ldcw;Lcuq;IIII)V a method_51425 renderItem + m (Lcuq;)Ljava/lang/String; a method_57708 method_57708 + m (Lcuq;II)V a method_51427 renderItem + m (Lcuq;III)V a method_51428 renderItem + m (Lcuq;IIII)V a method_51429 renderItem + m (Lfbm;IIIIIII)V a method_27533 fillGradient + m (Lfhx;Laya;III)V a method_35719 drawCenteredString + m (Lfhx;Laya;IIIZ)I a method_51430 drawString + m (Lfhx;Lcuq;II)V a method_51431 renderItemDecorations + m (Lfhx;Lcuq;IILjava/lang/String;)V a method_51432 renderItemDecorations + m (Lfhx;Ljava/lang/String;III)V a method_25300 drawCenteredString + m (Lfhx;Ljava/lang/String;IIIZ)I a method_51433 drawString + m (Lfhx;Ljava/util/List;II)V a method_51434 renderComponentTooltip + m (Lfhx;Ljava/util/List;IILfqo;)V a method_51435 renderTooltipInternal + m (Lfhx;Ljava/util/List;Lfqo;II)V a method_51436 renderTooltip + m (Lfhx;Ljava/util/List;Ljava/util/Optional;II)V a method_51437 renderTooltip + m (Lfhx;Lwz;II)V a method_51438 renderTooltip + m (Lfhx;Lwz;III)V a method_27534 drawCenteredString + m (Lfhx;Lwz;IIII)I a method_60649 drawStringWithBackdrop + m (Lfhx;Lwz;IIIZ)I a method_51439 drawString + m (Lfhx;Lxe;IIII)V a method_51440 drawWordWrap + m (Lfhx;Lxw;II)V a method_51441 renderComponentHoverEffect + m (Lfms;)V a method_49698 applyScissor + m (Lgfh;IIII)V a method_51738 hLine + m (Lgfh;IIIII)V a method_51739 fill + m (Lgfh;IIIIII)V a method_48196 fill + m (Lgfh;IIIIIII)V a method_51740 fillGradient + m (Lgql;IIIII)V a method_52710 blitSprite + m (Lgql;IIIIIIIII)V a method_52711 blitSprite + m (Lgql;IIIIIIIIIII)V a method_52712 blitTiledSprite + m (Lgql;Lgsd$a;IIIII)V a method_52713 blitNineSlicedSprite + m (Ljava/lang/Runnable;)V a method_51741 drawManaged + m (Ljava/util/List;Lcsa;)V a method_51442 method_51442 + m ()I b method_51443 guiHeight + m (IIII)V b method_25301 vLine + m (IIIII)V b method_49601 renderOutline + m (IIIIII)V b method_25296 fillGradient + m (Lcuq;)Ljava/lang/String; b method_51449 method_51449 + m (Lcuq;II)V b method_51445 renderFakeItem + m (Lcuq;III)V b method_55231 renderFakeItem + m (Lfhx;Laya;III)I b method_35720 drawString + m (Lfhx;Lcuq;II)V b method_51446 renderTooltip + m (Lfhx;Ljava/lang/String;III)I b method_25303 drawString + m (Lfhx;Ljava/util/List;II)V b method_51447 renderTooltip + m (Lfhx;Lwz;III)I b method_27535 drawString + m (Lgfh;IIII)V b method_51742 vLine + m (Lgfh;IIIII)V b method_57709 fillRenderType + m ()Lfbi; c method_51448 pose + m (IIII)V c method_44379 enableScissor + m (Lcuq;)Ljava/lang/String; c method_51451 method_51451 + m ()Lgez$a; d method_51450 bufferSource + m (IIII)V d method_51743 method_51743 + m ()V e method_51452 flush + m ()V f method_44380 disableScissor + m ()V g method_51744 flushIfUnmanaged + m ()V h method_51887 flushIfManaged + m (Lfgo;Lfbi;Lgez$a;)V + m (Lfgo;Lgez$a;)V +c fhz$a net/minecraft/class_332$class_8214 net/minecraft/client/gui/GuiGraphics$ScissorStack + f Ljava/util/Deque; a field_43099 stack + m ()Lfms; a method_49699 pop + m (II)Z a method_58136 containsPoint + m (Lfms;)Lfms; a method_49700 push + m ()V +c fia net/minecraft/class_8658 net/minecraft/client/gui/GuiSpriteManager + f Ljava/util/Set; a field_45338 METADATA_SECTIONS + m (Lgql;)Lgsd; a method_52714 getSpriteScaling + m (Lgql;)Lgsc; b method_52715 getMetadata + m (Lgqm;)V + m ()V +c fib net/minecraft/class_9080 net/minecraft/client/gui/LayeredDraw + f F a field_47848 Z_SEPARATION + f Ljava/util/List; b field_47849 layers + m (Lfhz;Lfgf;)V a method_55809 render + m (Lfib$a;)Lfib; a method_55810 add + m (Lfib;Ljava/util/function/BooleanSupplier;)Lfib; a method_55811 add + m (Ljava/util/function/BooleanSupplier;Lfib;Lfhz;Lfgf;)V a method_55812 method_55812 + m (Lfhz;Lfgf;)V b method_55813 renderInner + m ()V +c fib$a net/minecraft/class_9080$class_9081 net/minecraft/client/gui/LayeredDraw$Layer +c fic net/minecraft/class_330 net/minecraft/client/gui/MapRenderer + f I a field_32173 WIDTH + f I b field_32174 HEIGHT + f Lgqm; c field_2043 textureManager + f Lgri; d field_50036 decorationTextures + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; e field_2045 maps + m ()V a method_1771 resetData + m (Leqr;Leqt;)V a method_1769 update + m (Leqt;Ljava/lang/Integer;Lfic$a;)Lfic$a; a method_32600 method_32600 + m (Lfbi;Lgez;Leqr;Leqt;ZI)V a method_1773 render + m (Leqr;Leqt;)Lfic$a; b method_32601 getOrCreateMapInstance + m (Lgqm;Lgri;)V +c fic$a net/minecraft/class_330$class_331 net/minecraft/client/gui/MapRenderer$MapInstance + f Lfic; a field_2047 field_2047 + f Leqt; b field_2046 data + f Lgpy; c field_2048 texture + f Lgfh; d field_21689 renderType + f Z e field_34044 requiresUpload + m ()V a method_37450 forceUpload + m (Leqt;)V a method_37451 replaceMapData + m (Lfbi;Lgez;ZI)V a method_1777 draw + m ()V b method_1776 updateTexture + m (Lfic;ILeqt;)V +c fid net/minecraft/class_4264 net/minecraft/client/gui/components/AbstractButton + f Lfjz; a field_45339 SPRITES + f I e field_43050 TEXT_MARGIN + m (Lfhz;Lfhx;I)V a method_48589 renderString + m ()V b method_25306 onPress + m (IIIILwz;)V + m ()V +c fie net/minecraft/class_9017 net/minecraft/client/gui/components/AbstractContainerWidget + f Lfki; a field_47551 focused + f Z b field_47552 isDragging + m (IIIILwz;)V +c fif net/minecraft/class_4892 net/minecraft/client/gui/components/AbstractOptionSliderButton + f Lfgs; a field_22738 options + m (Lfgs;IIIID)V +c fig net/minecraft/class_7528 net/minecraft/client/gui/components/AbstractScrollWidget + f Lfjz; a field_45905 BACKGROUND_SPRITES + f Lakr; b field_45906 SCROLLER_SPRITE + f I c field_39496 INNER_PADDING + f I d field_45907 SCROLL_BAR_WIDTH + f D e field_39497 scrollAmount + f Z f field_39498 scrolling + m ()I a method_44381 innerPadding + m (D)V a method_44382 setScrollAmount + m (II)Z a method_44383 withinContentAreaTopBottom + m (Lfhz;)V a method_44384 renderDecorations + m (Lfhz;IIII)V a method_52233 renderBorder + m ()I b method_44385 totalInnerPadding + m (DD)Z b method_44388 withinContentAreaPoint + m (Lfhz;)V b method_44386 renderBackground + m ()D c method_44387 scrollAmount + m (Lfhz;)V c method_44396 renderScrollBar + m (Lfhz;IIF)V c method_44389 renderContents + m ()I d method_44390 getMaxScrollAmount + m ()Z e method_44392 scrollbarVisible + m ()I f method_53532 scrollbarWidth + m ()I h method_44391 getInnerHeight + m ()D i method_44393 scrollRate + m ()I j method_44394 getScrollBarHeight + m ()I k method_44395 getContentHeight + m (IIIILwz;)V + m ()V +c fih net/minecraft/class_350 net/minecraft/client/gui/components/AbstractSelectionList + f Lakr; a field_45908 SCROLLER_SPRITE + f I b field_45909 SCROLLBAR_WIDTH + f Lfgo; c field_22740 minecraft + f I d field_22741 itemHeight + f Z e field_22744 centerListVertically + f I f field_22748 headerHeight + f Lakr; m field_49477 SCROLLER_BACKGROUND_SPRITE + f Lakr; n field_49478 MENU_LIST_BACKGROUND + f Lakr; o field_49892 INWORLD_MENU_LIST_BACKGROUND + f Ljava/util/List; p field_22739 children + f D q field_22749 scrollAmount + f Z r field_22747 renderHeader + f Z s field_22750 scrolling + f Lfih$a; u field_22751 selected + f Lfih$a; v field_33780 hovered + m ()I J method_57710 getRealRowLeft + m ()I K method_57711 getRealRowRight + m ()I a method_25317 getMaxPosition + m (D)V a method_60321 setClampedScrollAmount + m (I)V a method_25309 scroll + m (II)Z a method_25310 clickedHeader + m (ILflz;)V a method_57712 updateSize + m (Lfhz;)V a method_57713 renderListSeparators + m (Lfhz;II)V a method_25312 renderHeader + m (Lfhz;IIFIIIII)V a method_44397 renderItem + m (Lfhz;IIIII)V a method_44398 renderSelection + m (Lfih$a;)V a method_25313 setSelected + m (Lfmi;Lfih$a;)V a method_37017 narrateListElementPosition + m (Lfmq;)Lfih$a; a method_48197 nextEntry + m (Lfmq;Ljava/util/function/Predicate;)Lfih$a; a method_48198 nextEntry + m (Lfmq;Ljava/util/function/Predicate;Lfih$a;)Lfih$a; a method_48199 nextEntry + m (Ljava/util/Collection;)V a method_25314 replaceEntries + m (ZI)V a method_25315 setRenderHeader + m ()I b method_25322 getRowWidth + m (D)V b method_25307 setScrollAmount + m (DD)Lfih$a; b method_25308 getEntryAtPosition + m (III)V b method_57714 updateSizeAndPosition + m (Lfhz;)V b method_57715 renderListBackground + m (Lfhz;II)V b method_25320 renderDecorations + m (Lfih$a;)I b method_25321 addEntry + m ()I c method_57716 getListOutlinePadding + m (DDI)V c method_25318 updateScrollingState + m (Lfhz;)V c method_49603 enableScissor + m (Lfhz;IIF)V c method_25311 renderListItems + m (Lfih$a;)V c method_44399 addEntryToTop + m (I)Lfih$a; d method_25326 getEntry + m (Lfih$a;)Z d method_44650 removeEntryFromTop + m (I)Z e method_25332 isSelectedItem + m (Lfih$a;)V e method_25324 centerScrollOn + m (I)Z f method_53812 isValidMouseClick + m (Lfih$a;)V f method_25328 ensureVisible + m (I)I g method_25337 getRowTop + m (Lfih$a;)Z g method_25330 removeEntry + m ()Lfih$a; h method_25334 getSelected + m (I)I h method_25319 getRowBottom + m (Lfih$a;)V h method_29621 bindEntryToSelf + m ()Lfih$a; i method_48200 getFirstElement + m (I)Lfih$a; i method_25338 remove + m (Lfih$a;)Z i method_48201 method_48201 + m ()Lfih$a; j method_25336 getFocused + m ()V k method_25339 clearEntries + m ()I l method_25340 getItemCount + m ()Z m method_57717 scrollbarVisible + m ()D n method_25341 getScrollAmount + m ()V o method_60322 clampScrollAmount + m ()I p method_25331 getMaxScroll + m ()I q method_25329 getScrollbarPosition + m ()I r method_57718 getDefaultScrollbarPosition + m ()I s method_25342 getRowLeft + m ()I t method_31383 getRowRight + m ()Lfih$a; v method_37019 getHovered + m (Lfgo;IIII)V + m ()V +c fih$1 net/minecraft/class_350$1 net/minecraft/client/gui/components/AbstractSelectionList$1 + f [I a field_41786 $SwitchMap$net$minecraft$client$gui$navigation$ScreenDirection + m ()V +c fih$a net/minecraft/class_350$class_351 net/minecraft/client/gui/components/AbstractSelectionList$Entry + f Lfih; a field_22752 list + m (Lfhz;IIIIIIIZF)V a method_25343 render + m (Lfhz;IIIIIIIZF)V b method_49568 renderBack + m ()V +c fih$b net/minecraft/class_350$class_352 net/minecraft/client/gui/components/AbstractSelectionList$TrackedList + f Lfih; a field_2145 field_2145 + f Ljava/util/List; b field_2146 delegate + m (I)Lfih$a; a method_1912 get + m (ILfih$a;)Lfih$a; a method_1909 set + m (I)Lfih$a; b method_1911 remove + m (ILfih$a;)V b method_1910 add + m (Lfih;)V +c fii net/minecraft/class_357 net/minecraft/client/gui/components/AbstractSliderButton + f Lakr; a field_45340 SLIDER_SPRITE + f I b field_43054 TEXT_MARGIN + f D c field_22753 value + f Lakr; d field_45341 HIGHLIGHTED_SPRITE + f Lakr; e field_45342 SLIDER_HANDLE_SPRITE + f Lakr; f field_45343 SLIDER_HANDLE_HIGHLIGHTED_SPRITE + f I m field_41790 HANDLE_WIDTH + f I n field_41789 HANDLE_HALF_WIDTH + f Z o field_41796 canChangeValue + m ()V a method_25344 applyValue + m (D)V a method_25345 setValueFromMouse + m ()V b method_25346 updateMessage + m (D)V b method_25347 setValue + m ()Lakr; c method_52716 getSprite + m ()Lakr; e method_52717 getHandleSprite + m (IIIILwz;D)V + m ()V +c fij net/minecraft/class_8130 net/minecraft/client/gui/components/AbstractStringWidget + f Lfhx; a field_42483 font + f I b field_42484 color + m ()Lfhx; a method_48977 getFont + m (I)Lfij; a method_48978 setColor + m ()I b method_48979 getColor + m (IIIILwz;Lfhx;)V +c fik net/minecraft/class_339 net/minecraft/client/gui/components/AbstractWidget + f D a field_43055 PERIOD_PER_SCROLLED_PIXEL + f D b field_43056 MIN_SCROLL_PERIOD + f I c field_22760 x + f I d field_22761 y + f Lwz; e field_22754 message + f I f field_42116 tabOrderGroup + f I g field_22758 width + f I h field_22759 height + f Z i field_22762 isHovered + f Z j field_22763 active + f Z k field_22764 visible + f F l field_22765 alpha + f Z m field_22756 focused + f Lfka; n field_41095 tooltip + m ()Z A method_49606 isHovered + m ()Z B method_25367 isHoveredOrFocused + m ()I F method_55442 getRight + m ()I G method_55443 getBottom + m (DD)V a method_25348 onClick + m (F)V a method_25350 setAlpha + m (IIII)V a method_55444 setRectangle + m (Lfhz;Lfhx;II)V a method_49604 renderScrollingString + m (Lfhz;Lfhx;Lwz;IIIII)V a method_52718 renderScrollingString + m (Lfhz;Lfhx;Lwz;IIIIII)V a method_49605 renderScrollingString + m (Lfjx;)V a method_47400 setTooltip + m (Lfmi;)V a method_47399 updateWidgetNarration + m (Lgvf;)V a method_25354 playDownSound + m (Ljava/time/Duration;)V a method_47402 setTooltipDelay + m ()Lxn; aQ_ method_25360 createNarrationMessage + m (DD)V a_ method_25357 onRelease + m (Lwz;)Lxn; a_ method_32602 wrapDefaultNarrationMessage + m (DDDD)V b method_25349 onDrag + m (II)V b method_55445 setSize + m (Lfhz;IIF)V b method_48579 renderWidget + m (Lwz;)V b method_25355 setMessage + m (Lfmi;)V c method_37021 defaultButtonNarrationText + m (DD)Z d method_25361 clicked + m (I)Z j method_25351 isValidClickButton + m (I)V k method_25358 setWidth + m (I)V l method_53533 setHeight + m (I)V o method_48591 setTabOrderGroup + m ()Lfjx; x method_51254 getTooltip + m ()Lwz; z method_25369 getMessage + m (IIIILwz;)V +c fil net/minecraft/class_337 net/minecraft/client/gui/components/BossHealthOverlay + f I a field_32177 BAR_WIDTH + f I b field_32178 BAR_HEIGHT + f [Lakr; c field_45344 BAR_BACKGROUND_SPRITES + f [Lakr; d field_45345 BAR_PROGRESS_SPRITES + f [Lakr; e field_45346 OVERLAY_BACKGROUND_SPRITES + f [Lakr; f field_45347 OVERLAY_PROGRESS_SPRITES + f Lfgo; g field_2058 minecraft + f Ljava/util/Map; h field_2060 events + m ()V a method_1801 reset + m (Lace;)V a method_1795 update + m (Lfhz;)V a method_1796 render + m (Lfhz;IILbqh;)V a method_1799 drawBar + m (Lfhz;IILbqh;I[Lakr;[Lakr;)V a method_41830 drawBar + m ()Z b method_1798 shouldPlayMusic + m ()Z c method_1797 shouldDarkenScreen + m ()Z d method_1800 shouldCreateWorldFog + m (Lfgo;)V + m ()V +c fil$1 net/minecraft/class_337$1 net/minecraft/client/gui/components/BossHealthOverlay$1 + f Lfil; a field_29071 field_29071 + m (Lfil;)V +c fim net/minecraft/class_4185 net/minecraft/client/gui/components/Button + f I f field_39499 SMALL_WIDTH + f I m field_39500 DEFAULT_WIDTH + f I n field_49479 BIG_WIDTH + f I o field_39501 DEFAULT_HEIGHT + f I p field_46856 DEFAULT_SPACING + f Lfim$b; q field_40754 DEFAULT_NARRATION + f Lfim$c; r field_22767 onPress + f Lfim$b; s field_40755 createNarration + m ()Lxn; a method_46428 method_46428 + m (Ljava/util/function/Supplier;)Lxn; a method_46429 method_46429 + m (Lwz;Lfim$c;)Lfim$a; a method_46430 builder + m (IIIILwz;Lfim$c;Lfim$b;)V + m ()V +c fim$a net/minecraft/class_4185$class_7840 net/minecraft/client/gui/components/Button$Builder + f Lwz; a field_40756 message + f Lfim$c; b field_40757 onPress + f Lfjx; c field_41099 tooltip + f I d field_40759 x + f I e field_40760 y + f I f field_40761 width + f I g field_40762 height + f Lfim$b; h field_40763 createNarration + m ()Lfim; a method_46431 build + m (I)Lfim$a; a method_46432 width + m (II)Lfim$a; a method_46433 pos + m (IIII)Lfim$a; a method_46434 bounds + m (Lfim$b;)Lfim$a; a method_46435 createNarration + m (Lfjx;)Lfim$a; a method_46436 tooltip + m (II)Lfim$a; b method_46437 size + m (Lwz;Lfim$c;)V +c fim$b net/minecraft/class_4185$class_7841 net/minecraft/client/gui/components/Button$CreateNarration +c fim$c net/minecraft/class_4185$class_4241 net/minecraft/client/gui/components/Button$OnPress +c fin net/minecraft/class_338 net/minecraft/client/gui/components/ChatComponent + f Lorg/slf4j/Logger; a field_2065 LOGGER + f I b field_32180 MAX_CHAT_HISTORY + f I c field_39771 MESSAGE_NOT_FOUND + f I d field_39772 MESSAGE_INDENT + f I e field_39773 MESSAGE_TAG_MARGIN_LEFT + f I f field_40389 BOTTOM_MARGIN + f I g field_40390 TIME_BEFORE_MESSAGE_DELETION + f Lwz; h field_40391 DELETED_CHAT_MESSAGE + f Lfgo; i field_2062 minecraft + f Laxb; j field_2063 recentChat + f Ljava/util/List; k field_2061 allMessages + f Ljava/util/List; l field_2064 trimmedMessages + f I m field_2066 chatScrollbarPos + f Z n field_2067 newMessageSinceScroll + f Ljava/util/List; o field_40392 messageDeletionQueue + m ()V a method_45584 tick + m (D)I a method_1806 getWidth + m (DD)Z a method_27146 handleChatQueueClicked + m (DLfgi$a;Lfgj;)Z a method_44718 hasSelectedMessageTag + m (I)V a method_1802 scrollChat + m (ILfin$a;)Z a method_45585 method_45585 + m (Lfgi$a;)I a method_44720 getTagIconLeft + m (Lfgi;)V a method_45027 logChatMessage + m (Lfhz;IIIZ)V a method_1805 render + m (Lfhz;IILfgj$a;)V a method_44719 drawTagIcon + m (Lfin$b;)V a method_58743 restoreState + m (Ljava/lang/String;)V a method_1803 addRecentChat + m (Lwz;)V a method_1812 addMessage + m (Lwz;Lxl;Lfgj;)V a method_44811 addMessage + m (Lxl;)V a method_44812 deleteMessage + m (Z)V a method_1808 clearMessages + m ()V b method_1817 rescaleChat + m (D)I b method_1818 getHeight + m (DD)Lxw; b method_1816 getClickedComponentStyleAt + m (I)D b method_19348 getTimeFactor + m (Lfgi;)V b method_1815 addMessageToDisplayQueue + m (Lxl;)Lfin$a; b method_45587 deleteMessageOrDelay + m ()Laxb; c method_1809 getRecentChat + m (D)D c method_44722 screenToChatX + m (DD)Lfgj; c method_44723 getMessageTagAt + m (Lfgi;)V c method_58744 addMessageToQueue + m ()V d method_1820 resetChatScroll + m (D)D d method_44724 screenToChatY + m (DD)I d method_45588 getMessageEndIndexAt + m (Lfgi;)Lfgi; d method_45586 createDeletedMarker + m ()Z e method_1819 isChatFocused + m (DD)I e method_44725 getMessageLineIndexAt + m ()I f method_1811 getWidth + m ()I g method_1810 getHeight + m ()D h method_1814 getScale + m ()D i method_41831 defaultUnfocusedPct + m ()I j method_1813 getLinesPerPage + m ()Lfin$b; k method_58745 storeState + m ()Z l method_23677 isChatHidden + m ()V m method_45589 processMessageDeletionQueue + m ()V n method_44813 refreshTrimmedMessages + m ()I o method_44752 getLineHeight + m (Lfgo;)V + m ()V +c fin$a net/minecraft/class_338$class_7731 net/minecraft/client/gui/components/ChatComponent$DelayedMessageDeletion + f Lxl; a comp_1021 signature + f I b comp_1022 deletableAfter + m ()Lxl; a comp_1021 signature + m ()I b comp_1022 deletableAfter + m (Lxl;I)V +c fin$b net/minecraft/class_338$class_9477 net/minecraft/client/gui/components/ChatComponent$State + f Ljava/util/List; a field_50218 messages + f Ljava/util/List; b field_50219 history + f Ljava/util/List; c field_50220 delayedMessageDeletions + m (Ljava/util/List;Ljava/util/List;Ljava/util/List;)V +c fio net/minecraft/class_4286 net/minecraft/client/gui/components/Checkbox + f Lakr; a field_45348 CHECKBOX_SELECTED_HIGHLIGHTED_SPRITE + f Lakr; b field_45349 CHECKBOX_SELECTED_SPRITE + f Lakr; c field_45350 CHECKBOX_HIGHLIGHTED_SPRITE + f Lakr; d field_45351 CHECKBOX_SPRITE + f I f field_32181 TEXT_COLOR + f I m field_47105 SPACING + f I n field_47106 BOX_PADDING + f Z o field_19230 selected + f Lfio$b; p field_47107 onValueChange + f Lfjg; q field_52293 textWidget + m ()Z a method_20372 selected + m (ILwz;Lfhx;)I a method_61128 getAdjustedWidth + m (Lfhx;)I a method_54786 getBoxSize + m (Lwz;Lfhx;)Lfio$a; a method_54787 builder + m (Lfhx;)I b method_61129 getAdjustedHeight + m (Lwz;Lfhx;)I b method_61130 getDefaultWidth + m (IIILwz;Lfhx;ZLfio$b;)V + m ()V +c fio$a net/minecraft/class_4286$class_8929 net/minecraft/client/gui/components/Checkbox$Builder + f Lwz; a field_47108 message + f Lfhx; b field_47109 font + f I c field_52294 maxWidth + f I d field_47110 x + f I e field_47111 y + f Lfio$b; f field_47112 onValueChange + f Z g field_47113 selected + f Lfgr; h field_47114 option + f Lfjx; i field_47115 tooltip + m ()Lfio; a method_54788 build + m (I)Lfio$a; a method_61131 maxWidth + m (II)Lfio$a; a method_54789 pos + m (Lfgr;)Lfio$a; a method_54790 selected + m (Lfio$b;)Lfio$a; a method_54791 onValueChange + m (Lfio;Z)V a method_54792 method_54792 + m (Lfjx;)Lfio$a; a method_54793 tooltip + m (Z)Lfio$a; a method_54794 selected + m (Lwz;Lfhx;)V +c fio$b net/minecraft/class_4286$class_8930 net/minecraft/client/gui/components/Checkbox$OnValueChange + f Lfio$b; a field_47116 NOP + m (Lfio;Z)V a method_54795 method_54795 + m ()V +c fip net/minecraft/class_4717 net/minecraft/client/gui/components/CommandSuggestions + f Ljava/util/regex/Pattern; a field_21596 WHITESPACE_PATTERN + f Lxw; b field_25885 UNPARSED_STYLE + f Lxw; c field_25886 LITERAL_STYLE + f Ljava/util/List; d field_25887 ARGUMENT_STYLES + f Lfgo; e field_21597 minecraft + f Lfod; f field_21598 screen + f Lfiv; g field_21599 input + f Lfhx; h field_21600 font + f Z i field_21601 commandsOnly + f Z j field_21602 onlyShowIfCursorPastError + f I k field_21603 lineStartOffset + f I l field_21604 suggestionLineLimit + f Z m field_21605 anchorToBottom + f I n field_21606 fillColor + f Ljava/util/List; o field_21607 commandUsage + f I p field_21608 commandUsagePosition + f I q field_21609 commandUsageWidth + f Lcom/mojang/brigadier/ParseResults; r field_21610 currentParse + f Ljava/util/concurrent/CompletableFuture; s field_21611 pendingSuggestions + f Lfip$a; t field_21612 suggestions + f Z u field_21613 allowSuggestions + f Z v field_21614 keepSuggestions + f Z w field_46191 allowHiding + m ()Z a method_53867 isVisible + m (D)Z a method_23921 mouseScrolled + m (DDI)Z a method_23922 mouseClicked + m (III)Z a method_23924 keyPressed + m (Lcom/mojang/brigadier/ParseResults;Ljava/lang/String;I)Laya; a method_23925 formatText + m (Lcom/mojang/brigadier/exceptions/CommandSyntaxException;)Laya; a method_30505 getExceptionMessage + m (Lcom/mojang/brigadier/suggestion/Suggestions;)Ljava/util/List; a method_30104 sortSuggestions + m (Lfhz;)V a method_44932 renderUsage + m (Lfhz;II)V a method_23923 render + m (Ljava/lang/String;)I a method_23930 getLastWordIndex + m (Ljava/lang/String;I)Laya; a method_23931 formatChat + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_23936 calculateSuggestionSuffix + m (Ln;)Z a method_23929 fillNodeUsage + m (Z)V a method_23933 setAllowSuggestions + m ()Lwz; b method_53868 getUsageNarration + m (Lfhz;II)Z b method_44933 renderSuggestions + m (Z)V b method_53869 setAllowHiding + m ()V c method_44931 hide + m (Z)V c method_23920 showSuggestions + m ()V d method_23934 updateCommandInfo + m ()Lwz; e method_23958 getNarrationMessage + m ()V f method_23937 updateUsageInfo + m ()V g method_23939 method_23939 + m (Lfgo;Lfod;Lfiv;Lfhx;ZZIIZI)V + m ()V +c fip$a net/minecraft/class_4717$class_464 net/minecraft/client/gui/components/CommandSuggestions$SuggestionsList + f Lfip; a field_21615 field_21615 + f Lgfe; b field_2771 rect + f Ljava/lang/String; c field_2768 originalContents + f Ljava/util/List; d field_25709 suggestionList + f I e field_2769 offset + f I f field_2766 current + f Lexb; g field_2767 lastMouse + f Z h field_2765 tabCycles + f I i field_21630 lastNarratedEntry + m ()V a method_2375 useSuggestion + m (D)Z a method_2370 mouseScrolled + m (I)V a method_2371 cycle + m (III)Z a method_2372 mouseClicked + m (Lfhz;II)V a method_2373 render + m ()Lwz; b method_23960 getNarrationMessage + m (I)V b method_2374 select + m (III)Z b method_2377 keyPressed + m (Lfip;IIILjava/util/List;Z)V +c fiq net/minecraft/class_8082 net/minecraft/client/gui/components/CommonButtons + m (ILfim$c;Z)Lfjr; a method_48592 language + m (ILfim$c;Z)Lfjr; b method_48594 accessibility + m ()V +c fir net/minecraft/class_341 net/minecraft/client/gui/components/ComponentRenderUtils + f Laya; a field_25263 INDENT + m (Lfgd;Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_27536 method_27536 + m (Ljava/lang/String;)Ljava/lang/String; a method_1849 stripColor + m (Ljava/util/List;Lxe;Ljava/lang/Boolean;)V a method_30886 method_30886 + m (Lxe;ILfhx;)Ljava/util/List; a method_1850 wrapComponents + m ()V + m ()V +c fis net/minecraft/class_4265 net/minecraft/client/gui/components/ContainerObjectSelectionList + m (Lfis$a;)Z a method_48207 method_48207 + m (Lfgo;IIII)V +c fis$1 net/minecraft/class_4265$1 net/minecraft/client/gui/components/ContainerObjectSelectionList$1 + f [I a field_41804 $SwitchMap$net$minecraft$client$gui$navigation$ScreenDirection + m ()V +c fis$a net/minecraft/class_4265$class_4266 net/minecraft/client/gui/components/ContainerObjectSelectionList$Entry + f Lfki; a field_19077 focused + f Lfmg; b field_33782 lastNarratable + f Z c field_19078 dragging + m (Lfmi;)V a method_37024 updateNarration + m (Lfmo;I)Lfhw; a method_48208 focusPathAtIndex + m ()Ljava/util/List; b method_37025 narratables + m ()V +c fit net/minecraft/class_5676 net/minecraft/client/gui/components/CycleButton + f Ljava/util/function/BooleanSupplier; a field_27961 DEFAULT_ALT_LIST_SELECTOR + f Ljava/util/List; b field_27962 BOOLEAN_OPTIONS + f Lwz; c field_27963 name + f I d field_27964 index + f Ljava/lang/Object; f field_27965 value + f Lfit$c; m field_27966 values + f Ljava/util/function/Function; n field_27967 valueStringifier + f Ljava/util/function/Function; o field_27968 narrationProvider + f Lfit$b; p field_27969 onValueChange + f Z q field_27971 displayOnlyValue + f Lfgr$l; r field_27970 tooltipSupplier + m ()Ljava/lang/Object; a method_32603 getValue + m (I)V a method_32612 cycleValue + m (Ljava/lang/Boolean;)Lwz; a method_32604 method_32604 + m (Ljava/lang/Object;)V a method_32605 setValue + m (Ljava/util/function/Function;)Lfit$a; a method_32606 builder + m (Lwz;Lwz;)Lfit$a; a method_32607 booleanBuilder + m (Lwz;Lwz;Ljava/lang/Boolean;)Lwz; a method_32608 method_32608 + m (I)Ljava/lang/Object; b method_37027 getCycledValue + m (Ljava/lang/Object;)V b method_32609 updateValue + m (Z)Lfit$a; b method_32613 onOffBuilder + m ()Lxn; c method_32611 createDefaultNarrationMessage + m (Ljava/lang/Object;)Lwz; c method_37026 createLabelForValue + m (Ljava/lang/Object;)Lxn; d method_32610 createFullName + m ()Lfit$a; e method_32614 onOffBuilder + m ()V f method_47403 updateTooltip + m (IIIILwz;Lwz;ILjava/lang/Object;Lfit$c;Ljava/util/function/Function;Ljava/util/function/Function;Lfit$b;Lfgr$l;Z)V + m ()V +c fit$a net/minecraft/class_5676$class_5677 net/minecraft/client/gui/components/CycleButton$Builder + f I a field_27972 initialIndex + f Ljava/lang/Object; b field_27973 initialValue + f Ljava/util/function/Function; c field_27974 valueStringifier + f Lfgr$l; d field_27975 tooltipSupplier + f Ljava/util/function/Function; e field_27976 narrationProvider + f Lfit$c; f field_27977 values + f Z g field_27978 displayOnlyValue + m ()Lfit$a; a method_32616 displayOnlyValue + m (IIIILwz;)Lfit; a method_35723 create + m (IIIILwz;Lfit$b;)Lfit; a method_32617 create + m (Lfgr$l;)Lfit$a; a method_32618 withTooltip + m (Lfit$c;)Lfit$a; a method_42729 withValues + m (Lfit;Ljava/lang/Object;)V a method_35724 method_35724 + m (Ljava/lang/Object;)Lfit$a; a method_32619 withInitialValue + m (Ljava/util/Collection;)Lfit$a; a method_32620 withValues + m (Ljava/util/List;Ljava/util/List;)Lfit$a; a method_32621 withValues + m (Ljava/util/function/BooleanSupplier;Ljava/util/List;Ljava/util/List;)Lfit$a; a method_32622 withValues + m (Ljava/util/function/Function;)Lfit$a; a method_32623 withCustomNarration + m (Lwz;Lfit$b;)Lfit; a method_57720 create + m ([Ljava/lang/Object;)Lfit$a; a method_32624 withValues + m (Ljava/lang/Object;)Lfjx; b method_32625 method_32625 + m (Ljava/util/function/Function;)V +c fit$b net/minecraft/class_5676$class_5678 net/minecraft/client/gui/components/CycleButton$OnValueChange +c fit$c net/minecraft/class_5676$class_5680 net/minecraft/client/gui/components/CycleButton$ValueListSupplier + m ()Ljava/util/List; a method_32626 getSelectedList + m (Ljava/util/Collection;)Lfit$c; a method_32627 create + m (Ljava/util/function/BooleanSupplier;Ljava/util/List;Ljava/util/List;)Lfit$c; a method_32628 create + m ()Ljava/util/List; b method_32629 getDefaultList +c fit$c$1 net/minecraft/class_5676$class_5680$1 net/minecraft/client/gui/components/CycleButton$ValueListSupplier$1 + f Ljava/util/List; a field_27979 val$copy + m (Ljava/util/List;)V +c fit$c$2 net/minecraft/class_5676$class_5680$2 net/minecraft/client/gui/components/CycleButton$ValueListSupplier$2 + f Ljava/util/function/BooleanSupplier; a field_27980 val$altSelector + f Ljava/util/List; b field_27981 val$altCopy + f Ljava/util/List; c field_27982 val$defaultCopy + m (Ljava/util/function/BooleanSupplier;Ljava/util/List;Ljava/util/List;)V +c fiu net/minecraft/class_340 net/minecraft/client/gui/components/DebugScreenOverlay + f I a field_32187 COLOR_GREY + f I b field_32188 MARGIN_RIGHT + f I c field_32189 MARGIN_LEFT + f I d field_32190 MARGIN_TOP + f Ljava/util/Map; e field_19274 HEIGHTMAP_NAMES + f Lfgo; f field_2079 minecraft + f Lfiu$a; g field_38985 allocationRateCalculator + f Lfhx; h field_2081 font + f Lexa; i field_2082 block + f Lexa; j field_2083 liquid + f Ldcd; k field_2085 lastPos + f Ldvi; l field_2084 clientChunk + f Ljava/util/concurrent/CompletableFuture; m field_2080 serverChunk + f Z n field_45988 renderDebug + f Z o field_45989 renderProfilerChart + f Z p field_45990 renderFpsCharts + f Z q field_45991 renderNetworkCharts + f Lblr; r field_45992 frameTimeLogger + f Lblr; s field_45993 tickTimeLogger + f Lblr; t field_45994 pingLogger + f Lblr; u field_45995 bandwidthLogger + f Ljava/util/Map; v field_48931 remoteSupportingLoggers + f Lfkd; w field_45910 fpsChart + f Lfkf; x field_45913 tpsChart + f Lfke; y field_45911 pingChart + f Lfkc; z field_45912 bandwidthChart + m ()V a method_1842 clearChunkCache + m (J)V a method_53534 logFrameDuration + m (Lakq;)Ljava/lang/String; a method_40206 method_40206 + m (Laqc;)Ldvi; a method_20541 method_20541 + m (Lawu;)Ljava/lang/String; a method_40203 method_40203 + m (Lddw;)Ljava/lang/String; a method_40204 method_40204 + m (Lfgo;)Ljava/lang/Float; a method_54796 method_54796 + m (Lfhz;)V a method_1846 render + m (Lfhz;Ljava/util/List;Z)V a method_51745 renderLines + m (Lguo;)Ljava/util/Optional; a method_1841 method_1841 + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;Lbtq;)Ljava/lang/String; a method_27870 method_27870 + m (Ljava/util/EnumMap;)V a method_20455 method_20455 + m (Ljava/util/Map$Entry;)Ljava/lang/String; a method_1845 getPropertyValueString + m (Ljm;)Ljava/lang/String; a method_40205 printBiome + m ([JLbls;)V a method_56828 logRemoteSample + m ()Ljava/util/List; b method_1835 getGameInformation + m (J)J b method_1838 bytesToMegabytes + m (Lawu;)Ljava/lang/String; b method_40207 method_40207 + m (Lfhz;)V b method_1847 drawGameInformation + m ()Ljava/util/List; c method_1839 getSystemInformation + m (Lfhz;)V c method_1848 drawSystemInformation + m ()Z d method_53536 showDebugScreen + m (Lfhz;)V d method_51746 method_51746 + m ()Z e method_53537 showProfilerChart + m ()Z f method_53538 showNetworkCharts + m ()Z g method_56829 showFpsCharts + m ()V h method_53539 toggleOverlay + m ()V i method_53540 toggleNetworkCharts + m ()V j method_53541 toggleFpsCharts + m ()V k method_53542 toggleProfilerChart + m ()Lblr; l method_56577 getTickTimeLogger + m ()Lblr; m method_53543 getPingLogger + m ()Lblr; n method_53544 getBandwidthLogger + m ()V o method_53545 reset + m ()Laqu; p method_20603 getServerLevel + m ()Ljava/lang/String; q method_27871 getServerChunkStats + m ()Ldcw; r method_1840 getLevel + m ()Ldvi; s method_1834 getServerChunk + m ()Ldvi; t method_1836 getClientChunk + m (Lfgo;)V + m ()V +c fiu$1 net/minecraft/class_340$1 net/minecraft/client/gui/components/DebugScreenOverlay$1 + f [I a field_2086 $SwitchMap$net$minecraft$core$Direction + m ()V +c fiu$a net/minecraft/class_340$class_7412 net/minecraft/client/gui/components/DebugScreenOverlay$AllocationRateCalculator + f I a field_38986 UPDATE_INTERVAL_MS + f Ljava/util/List; b field_38987 GC_MBEANS + f J c field_38988 lastTime + f J d field_38989 lastHeapUsage + f J e field_38990 lastGcCounts + f J f field_38991 lastRate + m ()J a method_43447 gcCounts + m (J)J a method_43448 bytesAllocatedPerSecond + m ()V + m ()V +c fiv net/minecraft/class_342 net/minecraft/client/gui/components/EditBox + f Ljava/lang/String; A field_2106 suggestion + f Ljava/util/function/Consumer; B field_2088 responder + f Ljava/util/function/Predicate; C field_2104 filter + f Ljava/util/function/BiFunction; D field_2099 formatter + f Lwz; E field_41100 hint + f J F field_45352 focusedTime + f I a field_32194 BACKWARDS + f I b field_32195 FORWARDS + f I c field_32196 DEFAULT_TEXT_COLOR + f Lfjz; d field_45914 SPRITES + f I e field_32197 CURSOR_INSERT_WIDTH + f I f field_32198 CURSOR_INSERT_COLOR + f Ljava/lang/String; m field_32199 CURSOR_APPEND_CHARACTER + f I n field_45354 CURSOR_BLINK_INTERVAL_MS + f Lfhx; o field_2105 font + f Ljava/lang/String; p field_2092 value + f I q field_2108 maxLength + f Z r field_2095 bordered + f Z s field_2096 canLoseFocus + f Z u field_2094 isEditable + f I v field_2103 displayPos + f I w field_2102 cursorPos + f I x field_2101 highlightPos + f I y field_2100 textColor + f I z field_2098 textColorUneditable + m ()Ljava/lang/String; a method_1882 getValue + m (I)V a method_1877 deleteWords + m (II)I a method_1869 getWordPosition + m (IIZ)I a method_1864 getWordPosition + m (IZ)V a method_1855 moveCursor + m (Lfhz;IIII)V a method_1886 renderHighlight + m (Ljava/lang/String;)V a method_1852 setValue + m (Ljava/lang/String;Ljava/lang/Integer;)Laya; a method_1873 method_1873 + m (Ljava/util/function/BiFunction;)V a method_1854 setFormatter + m (Ljava/util/function/Predicate;)V a method_1890 setFilter + m ()Ljava/lang/String; b method_1866 getHighlighted + m (I)V b method_1878 deleteChars + m (IZ)V b method_1883 moveCursorTo + m (Ljava/lang/String;)V b method_1867 insertText + m (Ljava/util/function/Consumer;)V b method_1863 setResponder + m (Z)V b method_1870 moveCursorToStart + m ()Z c method_20315 canConsumeInput + m (I)V c method_55506 deleteCharsToPos + m (Ljava/lang/String;)V c method_1887 setSuggestion + m (Lwz;)V c method_47404 setHint + m (Z)V c method_1872 moveCursorToEnd + m (I)I d method_1853 getWordPosition + m (Ljava/lang/String;)V d method_1874 onValueChange + m (Z)V d method_1858 setBordered + m ()I e method_1881 getCursorPosition + m (I)V e method_1875 setCursorPosition + m (Z)V e method_1888 setEditable + m ()Z f method_1851 isBordered + m (I)V f method_1880 setMaxLength + m (Z)V f method_1856 setCanLoseFocus + m (I)V g method_1868 setTextColor + m (Z)V g method_1862 setVisible + m ()I h method_1859 getInnerWidth + m (I)V h method_1860 setTextColorUneditable + m ()Z i method_1885 isVisible + m (I)V i method_1884 setHighlightPos + m ()I j method_1861 getMaxLength + m ()Z k method_20316 isEditable + m (I)I p method_1889 getScreenX + m (I)V q method_16873 deleteText + m (I)I r method_27537 getCursorPos + m (I)V s method_52719 scrollTo + m (Lfhx;IILwz;)V + m (Lfhx;IIIILwz;)V + m (Lfhx;IIIILfiv;Lwz;)V + m ()V +c fiw net/minecraft/class_8577 net/minecraft/client/gui/components/FittingMultiLineTextWidget + f Lfhx; a field_44947 font + f Lfjg; b field_44948 multilineWidget + m (I)Lfiw; a method_52234 setColor + m ()Z j method_53546 showingScrollBar + m (IIIILwz;Lfhx;)V +c fix net/minecraft/class_8019 net/minecraft/client/gui/components/FocusableTextWidget + f I a field_41802 DEFAULT_PADDING + f Z b field_45355 alwaysShowBorder + f I c field_49480 padding + m (I)V b method_57721 containWithin + m (ILwz;Lfhx;)V + m (ILwz;Lfhx;I)V + m (ILwz;Lfhx;ZI)V +c fiy net/minecraft/class_344 net/minecraft/client/gui/components/ImageButton + f Lfjz; a field_45356 sprites + m (IIIILfjz;Lfim$c;)V + m (IIIILfjz;Lfim$c;Lwz;)V + m (IILfjz;Lfim$c;Lwz;)V +c fiz net/minecraft/class_8208 net/minecraft/client/gui/components/ImageWidget + m (IILakr;)Lfiz; a method_52720 sprite + m (IILakr;II)Lfiz; a method_52721 texture + m (IIII)V +c fiz$a net/minecraft/class_8208$class_8659 net/minecraft/client/gui/components/ImageWidget$Sprite + f Lakr; a field_45357 sprite + m (IIIILakr;)V +c fiz$b net/minecraft/class_8208$class_8660 net/minecraft/client/gui/components/ImageWidget$Texture + f Lakr; a field_45358 texture + f I b field_45359 textureWidth + f I c field_45360 textureHeight + m (IIIILakr;II)V +c fja net/minecraft/class_345 net/minecraft/client/gui/components/LerpingBossEvent + f F h field_2129 targetPercent + f J i field_2128 setTime + f J j field_32204 LERP_MILLISECONDS + m (Ljava/util/UUID;Lwz;FLbqh$a;Lbqh$b;ZZZ)V +c fjb net/minecraft/class_8661 net/minecraft/client/gui/components/LoadingDotsWidget + f Lfhx; a field_45361 font + m (Lfhx;Lwz;)V +c fjc net/minecraft/class_347 net/minecraft/client/gui/components/LockIconButton + f Z a field_2131 locked + m ()Z a method_1896 isLocked + m (Z)V b method_1895 setLocked + m (IILfim$c;)V +c fjc$a net/minecraft/class_347$class_348 net/minecraft/client/gui/components/LockIconButton$Icon + f Lfjc$a; a field_2137 LOCKED + f Lfjc$a; b field_2138 LOCKED_HOVER + f Lfjc$a; c field_2139 LOCKED_DISABLED + f Lfjc$a; d field_2132 UNLOCKED + f Lfjc$a; e field_2133 UNLOCKED_HOVER + f Lfjc$a; f field_2140 UNLOCKED_DISABLED + f Lakr; g field_45362 sprite + f [Lfjc$a; h field_2136 $VALUES + m ()[Lfjc$a; a method_36870 $values + m (Ljava/lang/String;ILakr;)V + m ()V +c fjd net/minecraft/class_8020 net/minecraft/client/gui/components/LogoRenderer + f Lakr; a field_41805 MINECRAFT_LOGO + f Lakr; b field_44540 EASTER_EGG_LOGO + f Lakr; c field_41806 MINECRAFT_EDITION + f I d field_41807 LOGO_WIDTH + f I e field_41808 LOGO_HEIGHT + f I f field_41809 DEFAULT_HEIGHT_OFFSET + f I g field_44541 LOGO_TEXTURE_WIDTH + f I h field_44542 LOGO_TEXTURE_HEIGHT + f I i field_44543 EDITION_WIDTH + f I j field_44544 EDITION_HEIGHT + f I k field_44545 EDITION_TEXTURE_WIDTH + f I l field_44546 EDITION_TEXTURE_HEIGHT + f I m field_44547 EDITION_LOGO_OVERLAP + f Z n field_41810 showEasterEgg + f Z o field_41811 keepLogoThroughFade + m (Lfhz;IF)V a method_48209 renderLogo + m (Lfhz;IFI)V a method_48210 renderLogo + m (Z)V + m ()V +c fje net/minecraft/class_7529 net/minecraft/client/gui/components/MultiLineEditBox + f I a field_39502 CURSOR_INSERT_WIDTH + f I b field_39503 CURSOR_INSERT_COLOR + f Ljava/lang/String; c field_39504 CURSOR_APPEND_CHARACTER + f I d field_39505 TEXT_COLOR + f I e field_39506 PLACEHOLDER_TEXT_COLOR + f I f field_45363 CURSOR_BLINK_INTERVAL_MS + f Lfhx; m field_39507 font + f Lwz; n field_39508 placeholder + f Lfjh; o field_39509 textField + f J p field_45364 focusedTime + m (I)V a method_44402 setCharacterLimit + m (Ljava/lang/String;)V a method_44400 setValue + m (Lfhz;IIII)V b method_44403 renderHighlight + m (Ljava/util/function/Consumer;)V b method_44401 setValueListener + m (DD)V e method_44404 seekCursorScreen + m ()Ljava/lang/String; j method_44405 getValue + m ()V k method_44407 scrollToCursor + m ()D l method_44408 getDisplayableLineCount + m (Lfhx;IIIILwz;Lwz;)V +c fjf net/minecraft/class_5489 net/minecraft/client/gui/components/MultiLineLabel + f Lfjf; a field_26528 EMPTY + m ()I a method_30887 getLineCount + m (Lfhx;II[Lwz;)Lfjf; a method_61132 create + m (Lfhx;I[Lwz;)Lfjf; a method_61133 create + m (Lfhx;Lwz;I)Lfjf; a method_30890 create + m (Lfhx;[Lwz;)Lfjf; a method_30892 create + m (Lfhz;II)V a method_30888 renderCentered + m (Lfhz;IIII)V a method_30889 renderCentered + m ()I b method_44048 getWidth + m (Lfhz;IIII)V b method_30893 renderLeftAligned + m (Lfhz;IIII)I c method_30896 renderLeftAlignedNoShadow + m ()V +c fjf$1 net/minecraft/class_5489$1 net/minecraft/client/gui/components/MultiLineLabel$1 + m ()V +c fjf$2 net/minecraft/class_5489$2 net/minecraft/client/gui/components/MultiLineLabel$2 + f Lfhx; b field_26529 val$font + f [Lwz; c field_52295 val$messages + f I d field_52296 val$maxWidth + f I e field_52297 val$maxLines + f Ljava/util/List; f field_52298 cachedTextAndWidth + f Ltw; g field_52299 splitWithLanguage + m ()Ljava/util/List; c method_61134 getSplitMessage + m (Lfhx;[Lwz;II)V +c fjf$a net/minecraft/class_5489$class_5490 net/minecraft/client/gui/components/MultiLineLabel$TextAndWidth + f Laya; a comp_2877 text + f I b comp_2878 width + m ()Laya; a comp_2877 text + m ()I b comp_2878 width + m (Laya;I)V +c fjg net/minecraft/class_7940 net/minecraft/client/gui/components/MultiLineTextWidget + f Ljava/util/OptionalInt; a field_42486 maxWidth + f Ljava/util/OptionalInt; b field_42487 maxRows + f Laze; c field_42488 cache + f Z d field_41343 centered + m (Lfhx;Lfjg$a;)Lfjf; a method_48980 method_48980 + m (Z)Lfjg; b method_48981 setCentered + m ()Lfjg$a; c method_48982 getFreshCacheKey + m (I)Lfjg; c method_48983 setColor + m (I)Lfjg; d method_48984 setMaxWidth + m (I)Lfjg; e method_48985 setMaxRows + m (Lwz;Lfhx;)V + m (IILwz;Lfhx;)V +c fjg$a net/minecraft/class_7940$class_8131 net/minecraft/client/gui/components/MultiLineTextWidget$CacheKey + f Lwz; a comp_1256 message + f I b comp_1257 maxWidth + f Ljava/util/OptionalInt; c comp_1258 maxRows + m ()Lwz; a comp_1256 message + m ()I b comp_1257 maxWidth + m ()Ljava/util/OptionalInt; c comp_1258 maxRows + m (Lwz;ILjava/util/OptionalInt;)V +c fjh net/minecraft/class_7530 net/minecraft/client/gui/components/MultilineTextField + f I a field_39511 NO_CHARACTER_LIMIT + f I b field_39512 LINE_SEEK_PIXEL_BIAS + f Lfhx; c field_39513 font + f Ljava/util/List; d field_39514 displayLines + f Ljava/lang/String; e field_39515 value + f I f field_39516 cursor + f I g field_39517 selectCursor + f Z h field_39518 selecting + f I i field_39519 characterLimit + f I j field_39520 width + f Ljava/util/function/Consumer; k field_39521 valueListener + f Ljava/lang/Runnable; l field_39522 cursorListener + m ()I a method_44409 characterLimit + m (DD)V a method_44410 seekCursorToPoint + m (I)V a method_44411 setCharacterLimit + m (Lfjy;I)V a method_44412 seekCursor + m (Ljava/lang/Runnable;)V a method_44413 setCursorListener + m (Ljava/lang/String;)V a method_44414 setValue + m (Ljava/util/function/Consumer;)V a method_44415 setValueListener + m (Lxw;II)V a method_44416 method_44416 + m (Z)V a method_44417 setSelecting + m ()Z b method_44418 hasCharacterLimit + m (I)V b method_44419 deleteText + m (Ljava/lang/String;)V b method_44420 insertText + m ()Ljava/lang/String; c method_44421 value + m (I)Lfjh$a; c method_44422 getLineView + m (Ljava/lang/String;)Ljava/lang/String; c method_44423 truncateFullText + m ()I d method_44424 cursor + m (I)V d method_44425 seekCursorLine + m (Ljava/lang/String;)Ljava/lang/String; d method_44426 truncateInsertionText + m ()Lfjh$a; e method_44427 getSelected + m (I)Z e method_44428 keyPressed + m (Ljava/lang/String;)V e method_44429 method_44429 + m ()I f method_44430 getLineCount + m (I)Lfjh$a; f method_44431 getCursorLineView + m ()I g method_44432 getLineAtCursor + m (I)I g method_44433 getWordEndPosition + m ()Ljava/lang/Iterable; h method_44434 iterateLines + m ()Z i method_44435 hasSelection + m ()Ljava/lang/String; j method_44436 getSelectedText + m ()Lfjh$a; k method_44437 getPreviousWord + m ()Lfjh$a; l method_44438 getNextWord + m ()Lfjh$a; m method_44439 getCursorLineView + m ()V n method_44440 onValueChange + m ()V o method_44441 reflowDisplayLines + m ()V p method_44442 method_44442 + m (Lfhx;I)V +c fjh$1 net/minecraft/class_7530$1 net/minecraft/client/gui/components/MultilineTextField$1 + f [I a field_39523 $SwitchMap$net$minecraft$client$gui$components$Whence + m ()V +c fjh$a net/minecraft/class_7530$class_7531 net/minecraft/client/gui/components/MultilineTextField$StringView + f I a comp_862 beginIndex + f I b comp_863 endIndex + f Lfjh$a; c field_39524 EMPTY + m ()I a comp_862 beginIndex + m ()I b comp_863 endIndex + m (II)V + m ()V +c fji net/minecraft/class_4280 net/minecraft/client/gui/components/ObjectSelectionList + f Lwz; a field_33783 USAGE_NARRATION + m (Lfgo;IIII)V + m ()V +c fji$a net/minecraft/class_4280$class_4281 net/minecraft/client/gui/components/ObjectSelectionList$Entry + m ()Lwz; a method_37006 getNarration + m ()V +c fjj net/minecraft/class_353 net/minecraft/client/gui/components/OptionsList + f I a field_49481 BIG_BUTTON_WIDTH + f I m field_49482 DEFAULT_ITEM_HEIGHT + f Lfrh; n field_49483 screen + m (Lfgr;)V a method_20406 addBig + m (Lfik;Lfik;)V a method_20407 addSmall + m (Ljava/util/List;)V a method_58227 addSmall + m ([Lfgr;)V a method_20408 addSmall + m (Lfgr;)Lfik; b method_31046 findOption + m ()V c method_59869 applyUnsavedChanges + m (DD)Ljava/util/Optional; e method_29624 getMouseOver + m (Lfgo;ILfrh;)V +c fjj$a net/minecraft/class_353$class_354 net/minecraft/client/gui/components/OptionsList$Entry + f Ljava/util/List; a field_18214 children + f Lfod; b field_49485 screen + f I c field_49484 X_OFFSET + m (Lfik;Lfik;Lfod;)Lfjj$a; a method_20410 small + m (Ljava/util/List;Lfod;)Lfjj$a; a method_20409 big + m (Ljava/util/List;Lfod;)V +c fjj$b net/minecraft/class_353$class_9379 net/minecraft/client/gui/components/OptionsList$OptionEntry + f Ljava/util/Map; a field_49893 options + m (Lfgs;Lfgr;Lfgr;Lfrh;)Lfjj$b; a method_58228 small + m (Lfgs;Lfgr;Lfrh;)Lfjj$b; a method_58229 big + m (Ljava/util/Map;Lfrh;)V +c fjk net/minecraft/class_7077 net/minecraft/client/gui/components/PlainTextButton + f Lfhx; a field_37257 font + f Lwz; b field_37258 message + f Lwz; c field_37259 underlinedMessage + m (IIIILwz;Lfim$c;Lfhx;)V +c fjl net/minecraft/class_7532 net/minecraft/client/gui/components/PlayerFaceRenderer + f I a field_39525 SKIN_HEAD_U + f I b field_39526 SKIN_HEAD_V + f I c field_39527 SKIN_HEAD_WIDTH + f I d field_39528 SKIN_HEAD_HEIGHT + f I e field_39529 SKIN_HAT_U + f I f field_39530 SKIN_HAT_V + f I g field_39531 SKIN_HAT_WIDTH + f I h field_39532 SKIN_HAT_HEIGHT + f I i field_39533 SKIN_TEX_WIDTH + f I j field_39534 SKIN_TEX_HEIGHT + m (Lfhz;Lakr;III)V a method_44443 draw + m (Lfhz;Lakr;IIIZ)V a method_44444 drawHat + m (Lfhz;Lakr;IIIZZ)V a method_44445 draw + m (Lfhz;Lgrl;III)V a method_52722 draw + m ()V +c fjm net/minecraft/class_8765 net/minecraft/client/gui/components/PlayerSkinWidget + f F a field_45996 MODEL_OFFSET + f F b field_45997 MODEL_HEIGHT + f F c field_45998 Z_OFFSET + f F d field_45999 ROTATION_SENSITIVITY + f F e field_46000 DEFAULT_ROTATION_X + f F f field_46001 DEFAULT_ROTATION_Y + f F m field_46002 ROTATION_X_LIMIT + f Lfjm$a; n field_46003 model + f Ljava/util/function/Supplier; o field_46004 skin + f F p field_46005 rotationX + f F q field_46006 rotationY + m (IILfyg;Ljava/util/function/Supplier;)V +c fjm$a net/minecraft/class_8765$class_8766 net/minecraft/client/gui/components/PlayerSkinWidget$Model + f Lfwp; a comp_1908 wideModel + f Lfwp; b comp_1909 slimModel + m ()Lfwp; a comp_1908 wideModel + m (Lfhz;Lgrl;)V a method_53547 render + m (Lfyg;)Lfjm$a; a method_53548 bake + m ()Lfwp; b comp_1909 slimModel + m (Lfwp;Lfwp;)V +c fjn net/minecraft/class_355 net/minecraft/client/gui/components/PlayerTabOverlay + f I a field_32205 MAX_ROWS_PER_COL + f Lakr; b field_45365 PING_UNKNOWN_SPRITE + f Lakr; c field_45366 PING_1_SPRITE + f Lakr; d field_45367 PING_2_SPRITE + f Lakr; e field_45368 PING_3_SPRITE + f Lakr; f field_45369 PING_4_SPRITE + f Lakr; g field_45370 PING_5_SPRITE + f Lakr; h field_45371 HEART_CONTAINER_BLINKING_SPRITE + f Lakr; i field_45372 HEART_CONTAINER_SPRITE + f Lakr; j field_45373 HEART_FULL_BLINKING_SPRITE + f Lakr; k field_45374 HEART_HALF_BLINKING_SPRITE + f Lakr; l field_45375 HEART_ABSORBING_FULL_BLINKING_SPRITE + f Lakr; m field_45376 HEART_FULL_SPRITE + f Lakr; n field_45377 HEART_ABSORBING_HALF_BLINKING_SPRITE + f Lakr; o field_45378 HEART_HALF_SPRITE + f Ljava/util/Comparator; p field_2156 PLAYER_COMPARATOR + f Lfgo; q field_2155 minecraft + f Lfhy; r field_2157 gui + f Lwz; s field_2154 footer + f Lwz; t field_2153 header + f Z u field_2158 visible + f Ljava/util/Map; v field_40393 healthStates + m ()V a method_1920 reset + m (IIILjava/util/UUID;Lfhz;I)V a method_45590 renderTablistHearts + m (ILjava/util/UUID;)Lfjn$a; a method_45591 method_45591 + m (Lexy;ILfjn$b;IILjava/util/UUID;Lfhz;)V a method_1922 renderTablistScore + m (Lfhz;IIILfzq;)V a method_1923 renderPingIcon + m (Lfhz;ILeyg;Lexy;)V a method_1919 render + m (Lfzq;)Lwz; a method_1918 getNameForDisplay + m (Lfzq;Lxn;)Lwz; a method_27538 decorateName + m (Ljava/util/Set;Ljava/util/UUID;)Z a method_45593 method_45593 + m (Lwz;)V a method_1924 setFooter + m (Z)V a method_1921 setVisible + m ()Ljava/util/List; b method_48213 getPlayerInfos + m (Lfzq;)Ljava/util/UUID; b method_45594 method_45594 + m (Lwz;)V b method_1925 setHeader + m (Lfzq;)Ljava/lang/String; c method_46511 method_46511 + m (Lfzq;)Ljava/lang/String; d method_45595 method_45595 + m (Lfzq;)I e method_45592 method_45592 + m (Lfgo;Lfhy;)V + m ()V +c fjn$a net/minecraft/class_355$class_7732 net/minecraft/client/gui/components/PlayerTabOverlay$HealthState + f J a field_40394 DISPLAY_UPDATE_DELAY + f J b field_40395 DECREASE_BLINK_DURATION + f J c field_40396 INCREASE_BLINK_DURATION + f I d field_40397 lastValue + f I e field_40398 displayedValue + f J f field_40399 lastUpdateTick + f J g field_40400 blinkUntilTick + m ()I a method_45596 displayedValue + m (IJ)V a method_45597 update + m (J)Z a method_45598 isBlinking + m (I)V +c fjn$b net/minecraft/class_355$class_9018 net/minecraft/client/gui/components/PlayerTabOverlay$ScoreDisplayEntry + f Lwz; a comp_2134 name + f I b comp_2135 score + f Lwz; c comp_2136 formattedScore + f I d comp_2137 scoreWidth + m ()Lwz; a comp_2134 name + m ()I b comp_2135 score + m ()Lwz; c comp_2136 formattedScore + m ()I d comp_2137 scoreWidth + m (Lwz;ILwz;I)V +c fjo net/minecraft/class_8816 net/minecraft/client/gui/components/PopupScreen + f Ljava/lang/Runnable; A field_46565 onClose + f I B field_46566 contentWidth + f Lfmd; C field_46567 layout + f Lakr; a field_46554 BACKGROUND_SPRITE + f I b field_46555 SPACING + f I c field_46556 BG_BORDER_WITH_SPACING + f I r field_46557 BUTTON_SPACING + f I s field_46558 IMAGE_SIZE_X + f I u field_46559 IMAGE_SIZE_Y + f I v field_46560 POPUP_DEFAULT_WIDTH + f Lfod; w field_46561 backgroundScreen + f Lakr; x field_46562 image + f Lwz; y field_46563 message + f Ljava/util/List; z field_46564 buttons + m (Lfjo$b;Lfim;)V a method_54122 method_54122 + m (Lfjo;Lfki;)V a method_54123 method_54123 + m ()Lfmd; m method_54124 buildButtonRow + m (Lfod;ILakr;Lwz;Lwz;Ljava/util/List;Ljava/lang/Runnable;)V + m ()V +c fjo$a net/minecraft/class_8816$class_8817 net/minecraft/client/gui/components/PopupScreen$Builder + f Lfod; a field_46568 backgroundScreen + f Lwz; b field_46569 title + f Lwz; c field_46570 message + f I d field_46571 width + f Lakr; e field_46572 image + f Ljava/util/List; f field_46573 buttons + f Ljava/lang/Runnable; g field_46574 onClose + m ()Lfjo; a method_54125 build + m (I)Lfjo$a; a method_54126 setWidth + m (Lakr;)Lfjo$a; a method_54127 setImage + m (Ljava/lang/Runnable;)Lfjo$a; a method_54128 onClose + m (Lwz;)Lfjo$a; a method_54129 setMessage + m (Lwz;Ljava/util/function/Consumer;)Lfjo$a; a method_54130 addButton + m (Lfod;Lwz;)V +c fjo$b net/minecraft/class_8816$class_8818 net/minecraft/client/gui/components/PopupScreen$ButtonOption + f Lwz; a comp_1979 message + f Ljava/util/function/Consumer; b comp_1980 action + m ()Lwz; a comp_1979 message + m ()Ljava/util/function/Consumer; b comp_1980 action + m (Lwz;Ljava/util/function/Consumer;)V +c fjp net/minecraft/class_4068 net/minecraft/client/gui/components/Renderable + m (Lfhz;IIF)V a method_25394 render +c fjq net/minecraft/class_8519 net/minecraft/client/gui/components/SplashRenderer + f Lfjq; a field_44661 CHRISTMAS + f Lfjq; b field_44662 NEW_YEAR + f Lfjq; c field_44663 HALLOWEEN + f I d field_44664 WIDTH_OFFSET + f I e field_44665 HEIGH_OFFSET + f Ljava/lang/String; f field_44666 splash + m (Lfhz;ILfhx;I)V a method_51453 render + m (Ljava/lang/String;)V + m ()V +c fjr net/minecraft/class_8662 net/minecraft/client/gui/components/SpriteIconButton + f Lakr; a field_45379 sprite + f I b field_45380 spriteWidth + f I c field_45381 spriteHeight + m (Lwz;Lfim$c;Z)Lfjr$a; a method_52723 builder + m (IILwz;IILakr;Lfim$c;Lfim$b;)V +c fjr$a net/minecraft/class_8662$class_8663 net/minecraft/client/gui/components/SpriteIconButton$Builder + f Lfim$b; a field_49486 narration + f Lwz; b field_45382 message + f Lfim$c; c field_45383 onPress + f Z d field_45384 iconOnly + f I e field_45385 width + f I f field_45386 height + f Lakr; g field_45387 sprite + f I h field_45388 spriteWidth + f I i field_45389 spriteHeight + m ()Lfjr; a method_52724 build + m (I)Lfjr$a; a method_52725 width + m (II)Lfjr$a; a method_52726 size + m (Lakr;II)Lfjr$a; a method_52727 sprite + m (Lfim$b;)Lfjr$a; a method_57722 narration + m (Lwz;Lfim$c;Z)V +c fjr$b net/minecraft/class_8662$class_8664 net/minecraft/client/gui/components/SpriteIconButton$CenteredIcon + m (IILwz;IILakr;Lfim$c;Lfim$b;)V +c fjr$c net/minecraft/class_8662$class_8665 net/minecraft/client/gui/components/SpriteIconButton$TextAndIcon + m (IILwz;IILakr;Lfim$c;Lfim$b;)V +c fjs net/minecraft/class_361 net/minecraft/client/gui/components/StateSwitchingButton + f Lfjz; a field_45390 sprites + f Z b field_2194 isStateTriggered + m ()Z a method_1965 isStateTriggered + m (Lfjz;)V a method_1962 initTextureValues + m (Z)V b method_1964 setStateTriggered + m (IIIIZ)V +c fjt net/minecraft/class_7842 net/minecraft/client/gui/components/StringWidget + f F a field_42121 alignX + m (Lwz;I)Laya; a method_52728 clipText + m (F)Lfjt; b method_48598 horizontalAlignment + m (I)Lfjt; b method_46438 setColor + m ()Lfjt; c method_48596 alignLeft + m ()Lfjt; e method_48597 alignCenter + m ()Lfjt; f method_48599 alignRight + m (Lwz;Lfhx;)V + m (IILwz;Lfhx;)V + m (IIIILwz;Lfhx;)V +c fju net/minecraft/class_359 net/minecraft/client/gui/components/SubtitleOverlay + f J a field_32214 DISPLAY_TIME + f Lfgo; b field_2182 minecraft + f Ljava/util/List; c field_2183 subtitles + f Z d field_2184 isListening + f Ljava/util/List; e field_47672 audibleSubtitles + m (Lfhz;)V a method_1957 render + m (Lfgo;)V +c fju$a net/minecraft/class_359$class_9772 net/minecraft/client/gui/components/SubtitleOverlay$SoundPlayedAt + f Lexc; a comp_2809 location + f J b comp_2810 time + m ()Lexc; a comp_2809 location + m ()J b comp_2810 time + m (Lexc;J)V +c fju$b net/minecraft/class_359$class_360 net/minecraft/client/gui/components/SubtitleOverlay$Subtitle + f Lwz; a field_2188 text + f F b field_47673 range + f Ljava/util/List; c field_51913 playedAt + m ()Lwz; a method_1960 getText + m (D)V a method_60570 purgeOldInstances + m (JDLfju$a;)Z a method_60571 method_60571 + m (Lexc;)Lfju$a; a method_60572 getClosest + m (Lexc;Lfju$a;)Z a method_60573 method_60573 + m ()Z b method_60574 isStillActive + m (Lexc;)V b method_1958 refresh + m (Lexc;Lfju$a;)D b method_60575 method_60575 + m (Lexc;)Z c method_55589 isAudibleFrom + m (Lwz;FLexc;)V +c fjv net/minecraft/class_8209 net/minecraft/client/gui/components/TabButton + f Lfjz; a field_45391 SPRITES + f I b field_43063 SELECTED_OFFSET + f I c field_43064 TEXT_MARGIN + f I d field_43065 UNDERLINE_HEIGHT + f I e field_43066 UNDERLINE_MARGIN_X + f I f field_43067 UNDERLINE_MARGIN_BOTTOM + f Lfkp; m field_43068 tabManager + f Lfko; n field_43069 tab + m ()Lfko; a method_49609 tab + m (Lfhz;IIII)V a method_58230 renderMenuBackground + m (Lfhz;Lfhx;I)V a method_49608 renderString + m ()Z b method_49611 isSelected + m (Lfhz;Lfhx;I)V b method_49610 renderFocusUnderline + m (Lfkp;Lfko;II)V + m ()V +c fjw net/minecraft/class_8083 net/minecraft/client/gui/components/TabOrderedElement + m ()I I method_48590 getTabOrderGroup +c fjx net/minecraft/class_7919 net/minecraft/client/gui/components/Tooltip + f I a field_41101 MAX_WIDTH + f Lwz; b field_41102 message + f Ljava/util/List; c field_41103 cachedTooltip + f Ltw; d field_51822 splitWithLanguage + f Lwz; e field_41104 narration + m (Lfgo;)Ljava/util/List; a method_47405 toCharSequence + m (Lfgo;Lwz;)Ljava/util/List; a method_47406 splitTooltip + m (Lwz;)Lfjx; a method_47407 create + m (Lwz;Lwz;)Lfjx; a method_47408 create + m (Lwz;Lwz;)V +c fjy net/minecraft/class_7533 net/minecraft/client/gui/components/Whence + f Lfjy; a field_39535 ABSOLUTE + f Lfjy; b field_39536 RELATIVE + f Lfjy; c field_39537 END + f [Lfjy; d field_39538 $VALUES + m ()[Lfjy; a method_44446 $values + m (Ljava/lang/String;I)V + m ()V +c fjz net/minecraft/class_8666 net/minecraft/client/gui/components/WidgetSprites + f Lakr; a comp_1604 enabled + f Lakr; b comp_1605 disabled + f Lakr; c comp_1606 enabledFocused + f Lakr; d comp_1607 disabledFocused + m ()Lakr; a comp_1604 enabled + m (ZZ)Lakr; a method_52729 get + m ()Lakr; b comp_1605 disabled + m ()Lakr; c comp_1606 enabledFocused + m ()Lakr; d comp_1607 disabledFocused + m (Lakr;Lakr;)V + m (Lakr;Lakr;Lakr;)V + m (Lakr;Lakr;Lakr;Lakr;)V +c fka net/minecraft/class_9110 net/minecraft/client/gui/components/WidgetTooltipHolder + f Lfjx; a field_48390 tooltip + f Ljava/time/Duration; b field_48391 delay + f J c field_48392 displayStartTime + f Z d field_48393 wasDisplayed + m ()Lfjx; a method_56137 get + m (Lfjx;)V a method_56138 set + m (Lfmi;)V a method_56139 updateNarration + m (Lfms;ZZ)Lfqo; a method_56140 createTooltipPositioner + m (Ljava/time/Duration;)V a method_56141 setDelay + m (ZZLfms;)V a method_56142 refreshTooltipForNextRenderPass + m ()V +c fkb net/minecraft/class_8755 net/minecraft/client/gui/components/debugchart/AbstractDebugChart + f I a field_45915 COLOR_GREY + f I b field_45916 CHART_HEIGHT + f I c field_45917 LINE_WIDTH + f Lfhx; d field_45918 font + f Lblv; e field_45919 sampleStorage + m (D)Ljava/lang/String; a method_53468 toDisplayString + m (DDIDIDI)I a method_53469 getSampleColor + m (I)I a method_53470 getWidth + m (J)I a method_53471 getSampleColor + m (Lfhz;II)V a method_53472 drawChart + m (Lfhz;III)V a method_56578 drawDimensions + m (Lfhz;Ljava/lang/String;II)V a method_53474 drawStringWithShade + m (D)I b method_53475 getSampleHeight + m (I)J b method_56579 getValueForAggregation + m (Lfhz;III)V b method_56580 drawMainDimension + m (Lfhz;III)V c method_56581 drawAdditionalDimensions + m (Lfhz;III)V d method_53473 renderAdditionalLinesAndLabels + m (Lfhx;Lblv;)V +c fkc net/minecraft/class_8756 net/minecraft/client/gui/components/debugchart/BandwidthDebugChart + f I f field_45920 MIN_COLOR + f I g field_45921 MID_COLOR + f I h field_45922 MAX_COLOR + f I i field_45923 KILOBYTE + f I j field_45924 MEGABYTE + f I k field_45925 CHART_TOP_VALUE + m (Lfhz;IIII)V a method_53476 drawLabeledLineAtValue + m (Lfhz;IIILjava/lang/String;)V a method_53477 drawLineWithLabel + m (D)Ljava/lang/String; c method_53478 toDisplayStringInternal + m (D)I d method_53479 getSampleHeightInternal + m (D)D e method_53480 toBytesPerSecond + m (Lfhx;Lblv;)V +c fkd net/minecraft/class_8757 net/minecraft/client/gui/components/debugchart/FpsDebugChart + f I f field_45926 RED + f I g field_45927 YELLOW + f I h field_45928 GREEN + f I i field_45929 CHART_TOP_FPS + f D j field_45930 CHART_TOP_VALUE + m (D)D c method_53481 toMilliseconds + m (Lfhx;Lblv;)V +c fke net/minecraft/class_8758 net/minecraft/client/gui/components/debugchart/PingDebugChart + f I f field_45931 RED + f I g field_45932 YELLOW + f I h field_45933 GREEN + f I i field_45934 CHART_TOP_VALUE + m (Lfhx;Lblv;)V +c fkf net/minecraft/class_8759 net/minecraft/client/gui/components/debugchart/TpsDebugChart + f I f field_45935 RED + f I g field_45936 YELLOW + f I h field_45937 GREEN + f I i field_48763 TICK_METHOD_COLOR + f I j field_48764 TASK_COLOR + f I k field_48765 OTHER_COLOR + f Ljava/util/function/Supplier; l field_47117 msptSupplier + m (D)D c method_53482 toMilliseconds + m (Lfhx;Lblv;Ljava/util/function/Supplier;)V +c fkg net/minecraft/class_362 net/minecraft/client/gui/components/events/AbstractContainerEventHandler + f Lfki; a field_22780 focused + f Z b field_22781 isDragging + m ()V +c fkh net/minecraft/class_4069 net/minecraft/client/gui/components/events/ContainerEventHandler + m (DDDDLfki;)Z a method_20082 method_20082 + m (DDILfki;)Z a method_20083 method_20083 + m (Lfki;)V a method_25395 setFocused + m (Lfmo$a;)Lfhw; a method_48214 handleArrowNavigation + m (Lfmo$c;)Lfhw; a method_48215 handleTabNavigation + m (Lfmq;Lfki;)Ljava/lang/Integer; a method_48216 method_48216 + m (Lfms;Lfmq;Lfki;Lfmo;)Lfhw; a method_48217 nextFocusPathInDirection + m ()Ljava/util/List; aK_ method_25396 children + m ()Z aM_ method_25397 isDragging + m ()Lfki; aN_ method_25399 getFocused + m (Lfki;)I b method_48609 method_48609 + m (Lfmq;Lfki;)Ljava/lang/Integer; b method_48219 method_48219 + m (Lfms;Lfmq;Lfki;Lfmo;)Lfhw; b method_48220 nextFocusPathVaguelyInDirection + m (DD)Ljava/util/Optional; b_ method_19355 getChildAt + m (Z)V b_ method_25398 setDragging +c fki net/minecraft/class_364 net/minecraft/client/gui/components/events/GuiEventListener + f J t field_37268 DOUBLE_CLICK_THRESHOLD_MS + m ()Lfms; H method_48202 getRectangle + m (CI)Z a method_25400 charTyped + m (DDDD)Z a method_25401 mouseScrolled + m (DDI)Z a method_25402 mouseClicked + m (DDIDD)Z a method_25403 mouseDragged + m (III)Z a method_25404 keyPressed + m (Lfmo;)Lfhw; a method_48205 nextFocusPath + m (Z)V a method_25365 setFocused + m ()Z aO_ method_25370 isFocused + m ()Lfhw; aP_ method_48218 getCurrentFocusPath + m (DDI)Z b method_25406 mouseReleased + m (DD)Z c method_25405 isMouseOver + m (III)Z c method_16803 keyReleased + m (DD)V f method_16014 mouseMoved +c fkj net/minecraft/class_6205 net/minecraft/client/gui/components/events/package-info +c fkk net/minecraft/class_6206 net/minecraft/client/gui/components/package-info +c fkl net/minecraft/class_365 net/minecraft/client/gui/components/spectator/SpectatorGui + f Lakr; a field_45392 HOTBAR_SPRITE + f Lakr; b field_45393 HOTBAR_SELECTION_SPRITE + f J c field_32215 FADE_OUT_DELAY + f J d field_32216 FADE_OUT_TIME + f Lfgo; e field_2201 minecraft + f J f field_2198 lastSelectionTime + f Lftr; g field_2200 menu + m ()Z a method_1980 isMenuActive + m (I)V a method_1977 onHotbarSelected + m (Lfhz;)V a method_1978 renderHotbar + m (Lfhz;FIILftv;)V a method_1975 renderPage + m (Lfhz;IIFFLftt;)V a method_1982 renderSlot + m ()V b method_1983 onMouseMiddleClick + m (I)V b method_1976 onMouseScrolled + m (Lfhz;)V b method_1979 renderTooltip + m ()F c method_1981 getHotbarAlpha + m (Lfgo;)V + m ()V +c fkm net/minecraft/class_6207 net/minecraft/client/gui/components/spectator/package-info +c fkn net/minecraft/class_8086 net/minecraft/client/gui/components/tabs/GridLayoutTab + f Lfly; a field_42139 layout + f Lwz; b field_42140 title + m (Lwz;)V +c fko net/minecraft/class_8087 net/minecraft/client/gui/components/tabs/Tab + m ()Lwz; a method_48610 getTabTitle + m (Lfms;)V a method_48611 doLayout + m (Ljava/util/function/Consumer;)V a method_48612 visitChildren +c fkp net/minecraft/class_8088 net/minecraft/client/gui/components/tabs/TabManager + f Ljava/util/function/Consumer; a field_42141 addWidget + f Ljava/util/function/Consumer; b field_42142 removeWidget + f Lfko; c field_42143 currentTab + f Lfms; d field_42144 tabArea + m ()Lfko; a method_48614 getCurrentTab + m (Lfko;Z)V a method_48615 setCurrentTab + m (Lfms;)V a method_48616 setTabArea + m (Ljava/util/function/Consumer;Ljava/util/function/Consumer;)V +c fkq net/minecraft/class_8089 net/minecraft/client/gui/components/tabs/TabNavigationBar + f I a field_42489 NO_TAB + f I b field_43076 MAX_WIDTH + f I c field_43077 HEIGHT + f I d field_43078 MARGIN + f Lwz; e field_43079 USAGE_NARRATION + f Lfmd; f field_43080 layout + f I g field_42145 width + f Lfkp; h field_42146 tabManager + f Lcom/google/common/collect/ImmutableList; i field_42147 tabs + f Lcom/google/common/collect/ImmutableList; j field_42148 tabButtons + m (I)V a method_48618 setWidth + m (IZ)V a method_48987 selectTab + m (Lfkp;I)Lfkq$a; a method_48623 builder + m (Lfmi;Lfjv;)V a method_49612 narrateListElementPosition + m ()V b method_49613 arrangeElements + m (I)Z b method_48988 keyPressed + m (Lfmi;Lfjv;)V b method_49614 method_49614 + m ()I c method_48989 currentTabIndex + m (I)I c method_48990 getNextTabIndex + m ()Lfjv; d method_49615 currentTabButton + m ()Ljava/util/Optional; h method_49616 method_49616 + m (ILfkp;Ljava/lang/Iterable;)V + m ()V +c fkq$a net/minecraft/class_8089$class_8090 net/minecraft/client/gui/components/tabs/TabNavigationBar$Builder + f I a field_42151 width + f Lfkp; b field_42152 tabManager + f Ljava/util/List; c field_42153 tabs + m ()Lfkq; a method_48627 build + m ([Lfko;)Lfkq$a; a method_48631 addTabs + m (Lfkp;I)V +c fkr net/minecraft/class_8091 net/minecraft/client/gui/components/tabs/package-info +c fks net/minecraft/class_367 net/minecraft/client/gui/components/toasts/AdvancementToast + f I a field_41812 DISPLAY_TIME + f Lakr; d field_45394 BACKGROUND_SPRITE + f Lag; e field_2205 advancement + f Z f field_2206 playedSound + m (Lag;)V + m ()V +c fkt net/minecraft/class_366 net/minecraft/client/gui/components/toasts/RecipeToast + f Lakr; a field_45395 BACKGROUND_SPRITE + f J d field_32217 DISPLAY_TIME + f Lwz; e field_26533 TITLE_TEXT + f Lwz; f field_26534 DESCRIPTION_TEXT + f Ljava/util/List; g field_2202 recipes + f J h field_2204 lastChanged + f Z i field_2203 changed + m (Lczb;)V a method_1984 addItem + m (Lfkw;Lczb;)V a method_1985 addOrUpdate + m (Lczb;)V + m ()V +c fku net/minecraft/class_370 net/minecraft/client/gui/components/toasts/SystemToast + f Lakr; a field_45396 BACKGROUND_SPRITE + f I d field_32219 MAX_LINE_SIZE + f I e field_39926 LINE_SPACING + f I f field_39927 MARGIN + f Lfku$a; g field_2213 id + f Lwz; h field_2215 title + f Ljava/util/List; i field_25037 messageLines + f J j field_2216 lastChanged + f Z k field_2214 changed + f I l field_25038 width + f Z m field_47582 forceHide + m (Lfgo;)V a method_57723 onLowDiskSpace + m (Lfgo;I)V a method_60865 onFileDropFailure + m (Lfgo;Ldcd;)V a method_57724 onChunkLoadFailure + m (Lfgo;Lfku$a;Lwz;Lwz;)Lfku; a method_29047 multiline + m (Lfgo;Ljava/lang/String;)V a method_27023 onWorldAccessFailure + m (Lfhz;IIII)V a method_29046 renderBackgroundRow + m (Lfkw;Lfku$a;)V a method_55507 forceHide + m (Lfkw;Lfku$a;Lwz;Lwz;)V a method_27024 add + m (Lwz;)Lcom/google/common/collect/ImmutableList; a method_29626 nullToEmpty + m (Lwz;Lwz;)V a method_1991 reset + m (Lfgo;Ldcd;)V b method_57725 onChunkSaveFailure + m (Lfgo;Ljava/lang/String;)V b method_27025 onWorldDeleteFailure + m (Lfkw;Lfku$a;Lwz;Lwz;)V b method_1990 addOrUpdate + m ()V c method_55508 forceHide + m (Lfgo;Ljava/lang/String;)V c method_29627 onPackCopyFailure + m ()Lfku$a; d method_1989 getToken + m (Lfku$a;Lwz;Lwz;)V + m (Lfku$a;Lwz;Ljava/util/List;I)V + m ()V +c fku$a net/minecraft/class_370$class_9037 net/minecraft/client/gui/components/toasts/SystemToast$SystemToastId + f Lfku$a; a field_47583 NARRATOR_TOGGLE + f Lfku$a; b field_47584 WORLD_BACKUP + f Lfku$a; c field_47585 PACK_LOAD_FAILURE + f Lfku$a; d field_47586 WORLD_ACCESS_FAILURE + f Lfku$a; e field_47587 PACK_COPY_FAILURE + f Lfku$a; f field_52128 FILE_DROP_FAILURE + f Lfku$a; g field_47588 PERIODIC_NOTIFICATION + f Lfku$a; h field_49487 LOW_DISK_SPACE + f Lfku$a; i field_49488 CHUNK_LOAD_FAILURE + f Lfku$a; j field_49489 CHUNK_SAVE_FAILURE + f Lfku$a; k field_47589 UNSECURE_SERVER_WARNING + f J l field_47590 displayTime + m (J)V + m ()V + m ()V +c fkv net/minecraft/class_368 net/minecraft/client/gui/components/toasts/Toast + f Ljava/lang/Object; b field_2208 NO_TOKEN + f I c field_39928 SLOT_HEIGHT + m ()I a method_29049 width + m (Lfhz;Lfkw;J)Lfkv$a; a method_1986 render + m ()I b method_29050 height + m ()Ljava/lang/Object; e method_1987 getToken + m ()I f method_45072 slotCount + m ()V +c fkv$a net/minecraft/class_368$class_369 net/minecraft/client/gui/components/toasts/Toast$Visibility + f Lfkv$a; a field_2210 SHOW + f Lfkv$a; b field_2209 HIDE + f Lavo; c field_2211 soundEvent + f [Lfkv$a; d field_2212 $VALUES + m ()[Lfkv$a; a method_36872 $values + m (Lgvf;)V a method_1988 playSound + m (Ljava/lang/String;ILavo;)V + m ()V +c fkw net/minecraft/class_374 net/minecraft/client/gui/components/toasts/ToastComponent + f I a field_39929 SLOT_COUNT + f I b field_39930 NO_SPACE + f Lfgo; c field_2238 minecraft + f Ljava/util/List; d field_2239 visible + f Ljava/util/BitSet; e field_39931 occupiedSlots + f Ljava/util/Deque; f field_2240 queued + m ()V a method_2000 clear + m (I)I a method_45073 findFreeIndex + m (ILfhz;Lfkw$a;)Z a method_45074 method_45074 + m (Lfhz;)V a method_1996 render + m (Lfkv;)V a method_1999 addToast + m (Ljava/lang/Class;Ljava/lang/Object;)Lfkv; a method_1997 getToast + m ()Lfgo; b method_1995 getMinecraft + m (Lfkv;)Z b method_45075 method_45075 + m ()D c method_48221 getNotificationDisplayTimeMultiplier + m ()I d method_45076 freeSlots + m (Lfgo;)V +c fkw$a net/minecraft/class_374$class_375 net/minecraft/client/gui/components/toasts/ToastComponent$ToastInstance + f Lfkw; a field_2245 field_2245 + f J b field_32221 ANIMATION_TIME + f Lfkv; c field_2241 toast + f I d field_39932 index + f I e field_39933 slotCount + f J f field_2243 animationTime + f J g field_2242 visibleTime + f Lfkv$a; h field_2244 visibility + m ()Lfkv; a method_2001 getToast + m (ILfhz;)Z a method_2002 render + m (J)F a method_2003 getVisibility + m (Lfkw;Lfkv;II)V +c fkx net/minecraft/class_372 net/minecraft/client/gui/components/toasts/TutorialToast + f I a field_32222 PROGRESS_BAR_WIDTH + f I d field_32223 PROGRESS_BAR_HEIGHT + f I e field_32224 PROGRESS_BAR_X + f I f field_32225 PROGRESS_BAR_Y + f Lakr; g field_45397 BACKGROUND_SPRITE + f Lfkx$a; h field_2225 icon + f Lwz; i field_2224 title + f Lwz; j field_2226 message + f Lfkv$a; k field_2227 visibility + f J l field_2223 lastProgressTime + f F m field_2229 lastProgress + f F n field_2228 progress + f Z o field_2222 progressable + m (F)V a method_1992 updateProgress + m ()V c method_1993 hide + m (Lfkx$a;Lwz;Lwz;Z)V + m ()V +c fkx$a net/minecraft/class_372$class_373 net/minecraft/client/gui/components/toasts/TutorialToast$Icons + f Lfkx$a; a field_2230 MOVEMENT_KEYS + f Lfkx$a; b field_2237 MOUSE + f Lfkx$a; c field_2235 TREE + f Lfkx$a; d field_2233 RECIPE_BOOK + f Lfkx$a; e field_2236 WOODEN_PLANKS + f Lfkx$a; f field_26848 SOCIAL_INTERACTIONS + f Lfkx$a; g field_28782 RIGHT_CLICK + f Lakr; h field_45398 sprite + f [Lfkx$a; i field_2234 $VALUES + m ()[Lfkx$a; a method_36873 $values + m (Lfhz;II)V a method_1994 render + m (Ljava/lang/String;ILakr;)V + m ()V +c fky net/minecraft/class_6208 net/minecraft/client/gui/components/toasts/package-info +c fkz net/minecraft/class_376 net/minecraft/client/gui/font/AllMissingGlyphProvider + m ()V +c fla net/minecraft/class_8532 net/minecraft/client/gui/font/CodepointMap + f I a field_44749 BLOCK_BITS + f I b field_44750 BLOCK_SIZE + f I c field_44751 IN_BLOCK_MASK + f I d field_44752 MAX_BLOCK + f I e field_44753 BLOCK_COUNT + f [Ljava/lang/Object; f field_44754 empty + f [[Ljava/lang/Object; g field_44755 blockMap + f Ljava/util/function/IntFunction; h field_44756 blockConstructor + m ()V a method_51597 clear + m (I)Ljava/lang/Object; a method_51598 get + m (ILjava/lang/Object;)Ljava/lang/Object; a method_51599 put + m (ILjava/util/function/IntFunction;)Ljava/lang/Object; a method_51600 computeIfAbsent + m (Lfla$a;)V a method_51601 forEach + m (Lit/unimi/dsi/fastutil/ints/IntOpenHashSet;ILjava/lang/Object;)V a method_51602 method_51602 + m ()Lit/unimi/dsi/fastutil/ints/IntSet; b method_51603 keySet + m (I)Ljava/lang/Object; b method_51604 remove + m (Ljava/util/function/IntFunction;Ljava/util/function/IntFunction;)V +c fla$a net/minecraft/class_8532$class_8533 net/minecraft/client/gui/font/CodepointMap$Output +c flb net/minecraft/class_378 net/minecraft/client/gui/font/FontManager + f Lakr; a field_24254 MISSING_FONT + f Lorg/slf4j/Logger; b field_2261 LOGGER + f Ljava/lang/String; c field_32226 FONTS_PATH + f Lakk; d field_40409 FONT_DEFINITIONS + f Lcom/google/gson/Gson; e field_44757 GSON + f Lfld; f field_24255 missingFontSet + f Ljava/util/List; g field_44758 providersToClose + f Ljava/util/Map; h field_2259 fontSets + f Lgqm; i field_2260 textureManager + f Lfld; j field_49111 lastFontSetCache + m ()Lfhx; a method_27539 createFont + m (I)[Ljava/util/concurrent/CompletableFuture; a method_51605 method_51605 + m (Lakr;)Lfld; a method_57023 getFontSetRaw + m (Laue;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_51608 prepare + m (Laxs;Lflb$e;)V a method_51609 method_51609 + m (Lbnf;Lflb$d;)V a method_51610 method_51610 + m (Lezm$a;Ljava/util/concurrent/Executor;Ljava/util/List;)Ljava/util/concurrent/CompletableFuture; a method_51611 method_51611 + m (Lfgs;)V a method_57024 updateOptions + m (Lflb$a;Laue;Ljava/util/concurrent/Executor;Lflb$e;Lflc$a;Lflo$b;)V a method_51612 method_51612 + m (Lflb$a;Lflo$b;Laue;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_51613 safeLoad + m (Lflb$d;Lbnf;)V a method_51614 apply + m (Lflb$e;Lflb$a;Lflc$a;Lflo$c;)V a method_51615 method_51615 + m (Lfld;)V a method_27540 method_27540 + m (Lflo$b;Laue;Lflb$a;)Ljava/util/Optional; a method_51616 method_51616 + m (Ljava/util/List;)Ljava/util/Map; a method_51617 resolveProviders + m (Ljava/util/List;I)V a method_51618 method_51618 + m (Ljava/util/List;Lakr;)Ljava/util/List; a method_51619 loadResourceStack + m (Ljava/util/List;Lezm$a;)V a method_51620 finalizeProviderLoading + m (Ljava/util/List;Lezm$a;Ljava/util/concurrent/Executor;Ljava/util/List;)Ljava/util/concurrent/CompletionStage; a method_51621 method_51621 + m (Ljava/util/List;Ljava/util/Map;Ljava/lang/Void;)Lflb$d; a method_51622 method_51622 + m (Ljava/util/Map$Entry;Lakr;Laue;Ljava/util/concurrent/Executor;)Lflb$e; a method_51623 method_51623 + m (Ljava/util/Map;Lakr;Lflb$e;)V a method_51624 method_51624 + m (Ljava/util/Map;Lakr;Ljava/util/List;)V a method_51625 method_51625 + m (Ljava/util/Set;Lakr;Ljava/util/List;)V a method_51607 method_51607 + m (Ljava/util/concurrent/Executor;Ljava/util/List;)Ljava/util/concurrent/CompletionStage; a method_51626 method_51626 + m ()Lfhx; b method_45078 createFontFilterFishy + m (Lakr;)Lfld; b method_57025 getFontSetCached + m (Lfgs;)Ljava/util/Set; b method_57026 getFontOptions + m (Ljava/util/List;Lezm$a;)V b method_51627 method_51627 + m ()Lezm$a; d method_57027 createFallbackProvider + m (Lgqm;)V + m ()V +c flb$a net/minecraft/class_378$class_8534 net/minecraft/client/gui/font/FontManager$BuilderId + f Lakr; a comp_1491 fontId + f Ljava/lang/String; b comp_1492 pack + f I c comp_1493 index + m ()Lakr; a comp_1491 fontId + m ()Ljava/lang/String; b comp_1492 pack + m ()I c comp_1493 index + m (Lakr;Ljava/lang/String;I)V +c flb$b net/minecraft/class_378$class_8535 net/minecraft/client/gui/font/FontManager$BuilderResult + f Lflb$a; a comp_1494 id + f Lflc$a; b comp_2350 filter + f Lcom/mojang/datafixers/util/Either; c comp_1495 result + m ()Lflb$a; a comp_1494 id + m (Lezm$a;)Lezm$a; a method_57028 mergeFilters + m (Lezm;)Ljava/util/List; a method_57029 method_57029 + m (Ljava/util/concurrent/CompletableFuture;)Ljava/util/Optional; a method_51628 method_51628 + m (Ljava/util/function/Function;)Ljava/util/Optional; a method_51629 resolve + m (Ljava/util/function/Function;Lakr;)Ljava/util/Optional; a method_51630 method_51630 + m ()Lflc$a; b comp_2350 filter + m ()Lcom/mojang/datafixers/util/Either; c comp_1495 result + m (Lflb$a;Lflc$a;Lcom/mojang/datafixers/util/Either;)V +c flb$c net/minecraft/class_378$class_8556 net/minecraft/client/gui/font/FontManager$FontDefinitionFile + f Lcom/mojang/serialization/Codec; a field_44798 CODEC + f Ljava/util/List; b comp_1518 providers + m ()Ljava/util/List; a comp_1518 providers + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51747 method_51747 + m (Ljava/util/List;)V + m ()V +c flb$d net/minecraft/class_378$class_8536 net/minecraft/client/gui/font/FontManager$Preparation + f Ljava/util/Map; a comp_2351 fontSets + f Ljava/util/List; b comp_1497 allProviders + m ()Ljava/util/Map; a comp_2351 fontSets + m ()Ljava/util/List; b comp_1497 allProviders + m (Ljava/util/Map;Ljava/util/List;)V +c flb$e net/minecraft/class_378$class_8537 net/minecraft/client/gui/font/FontManager$UnresolvedBuilderBundle + f Lakr; a comp_1498 fontId + f Ljava/util/List; b comp_1499 builders + f Ljava/util/Set; c comp_1500 dependencies + m ()Lakr; a comp_1498 fontId + m (Lflb$a;Lflc$a;Lflo$c;)V a method_51631 add + m (Lflb$a;Lflc$a;Ljava/util/concurrent/CompletableFuture;)V a method_51632 add + m (Lflb$b;)Ljava/util/stream/Stream; a method_51633 method_51633 + m (Ljava/util/function/Function;)Ljava/util/Optional; a method_51634 resolve + m ()Ljava/util/List; b comp_1499 builders + m ()Ljava/util/Set; c comp_1500 dependencies + m ()Ljava/util/stream/Stream; d method_51635 listBuilders + m (Lakr;)V + m (Lakr;Ljava/util/List;Ljava/util/Set;)V +c flc net/minecraft/class_9243 net/minecraft/client/gui/font/FontOption + f Lflc; a field_49112 UNIFORM + f Lflc; b field_49113 JAPANESE_VARIANTS + f Lcom/mojang/serialization/Codec; c field_49114 CODEC + f Ljava/lang/String; d field_49115 name + f [Lflc; e field_49116 $VALUES + m ()[Lflc; a method_57030 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c flc$a net/minecraft/class_9243$class_9244 net/minecraft/client/gui/font/FontOption$Filter + f Lcom/mojang/serialization/Codec; a field_49117 CODEC + f Lflc$a; b field_49118 ALWAYS_PASS + f Ljava/util/Map; c field_49119 values + m (Lflc$a;)Lflc$a; a method_57031 merge + m (Ljava/util/Set;)Z a method_57032 apply + m (Lflc$a;)Ljava/util/Map; b method_57033 method_57033 + m (Ljava/util/Map;)V + m ()V +c fld net/minecraft/class_377 net/minecraft/client/gui/font/FontSet + f Layw; a field_2252 RANDOM + f F b field_39934 LARGE_FORWARD_ADVANCE + f Lgqm; c field_2248 textureManager + f Lakr; d field_2246 name + f Lflh; e field_2256 missingGlyph + f Lflh; f field_20910 whiteGlyph + f Ljava/util/List; g field_49120 allProviders + f Ljava/util/List; h field_49121 activeProviders + f Lfla; i field_2253 glyphs + f Lfla; j field_2257 glyphInfos + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; k field_2249 glyphsByWidth + f Ljava/util/List; l field_2254 textures + m ()Lakr; a method_57034 name + m (I)Lflh; a method_2014 getGlyph + m (IZ)Lezl; a method_2011 getGlyphInfo + m (Lezl;)Lflh; a method_2013 getRandomGlyph + m (Lezn;)Lflh; a method_2012 stitch + m (Ljava/util/List;Ljava/util/Set;)V a method_2004 reload + m (Ljava/util/List;Ljava/util/Set;I)V a method_57035 method_57035 + m (Ljava/util/Set;)V a method_57036 reload + m ()Lflh; b method_22943 whiteGlyph + m (I)Lfld$a; b method_40038 computeGlyphInfo + m (Lezl;)Z b method_45079 hasFishyAdvance + m (Ljava/util/List;Ljava/util/Set;)Ljava/util/List; b method_57037 selectProviders + m ()V c method_57038 resetTextures + m (I)Lflh; c method_41832 computeBakedGlyph + m ()V d method_2010 closeTextures + m (I)Lit/unimi/dsi/fastutil/ints/IntList; d method_57039 method_57039 + m (I)[[Lfld$a; e method_51636 method_51636 + m (I)[Lfld$a; f method_51637 method_51637 + m (I)[[Lflh; g method_51638 method_51638 + m (I)[Lflh; h method_51639 method_51639 + m (Lgqm;Lakr;)V + m ()V +c fld$a net/minecraft/class_377$class_7647 net/minecraft/client/gui/font/FontSet$GlyphInfoFilter + f Lezl; a comp_979 glyphInfo + f Lezl; b comp_980 glyphInfoNotFishy + f Lfld$a; c field_39935 MISSING + m ()Lezl; a comp_979 glyphInfo + m (Z)Lezl; a method_45080 select + m ()Lezl; b comp_980 glyphInfoNotFishy + m (Lezl;Lezl;)V + m ()V +c fle net/minecraft/class_380 net/minecraft/client/gui/font/FontTexture + f I e field_32227 SIZE + f Lflf; f field_44759 renderTypes + f Z g field_2263 colored + f Lfle$a; h field_2264 root + m (I)I a method_51640 method_51640 + m (Lezn;)Lflh; a method_2022 add + m (Lflf;Z)V +c fle$a net/minecraft/class_380$class_381 net/minecraft/client/gui/font/FontTexture$Node + f I a field_2269 x + f I b field_2268 y + f I c field_2267 width + f I d field_2266 height + f Lfle$a; e field_2270 left + f Lfle$a; f field_2271 right + f Z g field_2265 occupied + m (Lezn;)Lfle$a; a method_2024 insert + m (IIII)V +c flf net/minecraft/class_8538 net/minecraft/client/gui/font/GlyphRenderTypes + f Lgfh; a comp_1501 normal + f Lgfh; b comp_1502 seeThrough + f Lgfh; c comp_1503 polygonOffset + m ()Lgfh; a comp_1501 normal + m (Lakr;)Lflf; a method_51641 createForIntensityTexture + m (Lfhx$a;)Lgfh; a method_51642 select + m ()Lgfh; b comp_1502 seeThrough + m (Lakr;)Lflf; b method_51643 createForColorTexture + m ()Lgfh; c comp_1503 polygonOffset + m (Lgfh;Lgfh;Lgfh;)V +c flf$1 net/minecraft/class_8538$1 net/minecraft/client/gui/font/GlyphRenderTypes$1 + f [I a field_34000 $SwitchMap$net$minecraft$client$gui$Font$DisplayMode + m ()V +c flg net/minecraft/class_3728 net/minecraft/client/gui/font/TextFieldHelper + f Ljava/util/function/Supplier; a field_24257 getMessageFn + f Ljava/util/function/Consumer; b field_24258 setMessageFn + f Ljava/util/function/Supplier; c field_16456 getClipboardFn + f Ljava/util/function/Consumer; d field_16458 setClipboardFn + f Ljava/util/function/Predicate; e field_24259 stringValidator + f I f field_16453 cursorPos + f I g field_16452 selectionPos + m ()V a method_27547 cut + m (C)Z a method_16199 charTyped + m (I)Z a method_16202 keyPressed + m (II)V a method_27548 setSelectionRange + m (ILflg$a;)V a method_42574 removeFromCursor + m (IZ)V a method_27549 moveByChars + m (IZLflg$a;)V a method_42575 moveBy + m (Lfgo;)Ljava/util/function/Supplier; a method_27550 createClipboardGetter + m (Lfgo;Ljava/lang/String;)V a method_27551 setClipboardContents + m (Ljava/lang/String;)V a method_16197 insertText + m (Ljava/lang/String;Ljava/lang/String;)V a method_27552 insertText + m (Z)V a method_27553 setCursorToStart + m ()V b method_27554 paste + m (I)V b method_35727 moveByChars + m (IZ)V b method_27555 moveByWords + m (Lfgo;)Ljava/lang/String; b method_27556 getClipboardContents + m (Lfgo;Ljava/lang/String;)V b method_27557 method_27557 + m (Ljava/lang/String;)Ljava/lang/String; b method_16200 getSelected + m (Z)V b method_27558 setCursorToEnd + m ()V c method_27559 copy + m (I)V c method_35728 moveByWords + m (IZ)V c method_27560 setCursorPos + m (Lfgo;)Ljava/util/function/Consumer; c method_27561 createClipboardSetter + m (Ljava/lang/String;)Ljava/lang/String; c method_16198 deleteSelection + m (Z)V c method_27562 resetSelectionIfNeeded + m ()V d method_27563 selectAll + m (I)V d method_42576 removeWordsFromCursor + m (Lfgo;)Ljava/lang/String; d method_27565 method_27565 + m ()V e method_35729 setCursorToStart + m (I)V e method_27564 removeCharsFromCursor + m ()V f method_16204 setCursorToEnd + m (I)V f method_35730 setCursorPos + m ()I g method_16201 getCursorPos + m (I)V g method_35731 setSelectionPos + m ()I h method_16203 getSelectionPos + m (I)I h method_27567 clampToMsgLength + m ()Z i method_27568 isSelecting + m (Ljava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Predicate;)V +c flg$a net/minecraft/class_3728$class_7279 net/minecraft/client/gui/font/TextFieldHelper$CursorStep + f Lflg$a; a field_38308 CHARACTER + f Lflg$a; b field_38309 WORD + f [Lflg$a; c field_38310 $VALUES + m ()[Lflg$a; a method_42577 $values + m (Ljava/lang/String;I)V + m ()V +c flh net/minecraft/class_382 net/minecraft/client/gui/font/glyphs/BakedGlyph + f Lflf; a field_44760 renderTypes + f F b field_2276 u0 + f F c field_2275 u1 + f F d field_2274 v0 + f F e field_2273 v1 + f F f field_2272 left + f F g field_2280 right + f F h field_2279 up + f F i field_2278 down + m (Lfhx$a;)Lgfh; a method_24045 renderType + m (Lflh$a;Lorg/joml/Matrix4f;Lfbm;I)V a method_22944 renderEffect + m (ZFFLorg/joml/Matrix4f;Lfbm;FFFFI)V a method_2025 render + m (Lflf;FFFFFFFF)V +c flh$a net/minecraft/class_382$class_328 net/minecraft/client/gui/font/glyphs/BakedGlyph$Effect + f F a field_2008 x0 + f F b field_2007 y0 + f F c field_2006 x1 + f F d field_2005 y1 + f F e field_20911 depth + f F f field_2004 r + f F g field_2003 g + f F h field_2010 b + f F i field_2009 a + m (FFFFFFFFF)V +c fli net/minecraft/class_384 net/minecraft/client/gui/font/glyphs/EmptyGlyph + f Lfli; a field_38311 INSTANCE + m ()V + m ()V +c flj net/minecraft/class_7191 net/minecraft/client/gui/font/glyphs/SpecialGlyphs + f Lflj; a field_37898 WHITE + f Lflj; b field_37899 MISSING + f Lfaj; c field_37900 image + f [Lflj; d field_37901 $VALUES + m (II)I a method_41833 method_41833 + m (IILflj$a;)Lfaj; a method_41834 generate + m (II)I b method_41835 method_41835 + m ()Lfaj; c method_41836 method_41836 + m ()Lfaj; d method_41837 method_41837 + m ()[Lflj; e method_41838 $values + m (Ljava/lang/String;ILjava/util/function/Supplier;)V + m ()V +c flj$1 net/minecraft/class_7191$1 net/minecraft/client/gui/font/glyphs/SpecialGlyphs$1 + f Lflj; a field_37902 field_37902 + m (Lflj;)V +c flj$a net/minecraft/class_7191$class_7192 net/minecraft/client/gui/font/glyphs/SpecialGlyphs$PixelProvider +c flk net/minecraft/class_6209 net/minecraft/client/gui/font/glyphs/package-info +c fll net/minecraft/class_6210 net/minecraft/client/gui/font/package-info +c flm net/minecraft/class_386 net/minecraft/client/gui/font/providers/BitmapProvider + f Lorg/slf4j/Logger; b field_2286 LOGGER + f Lfaj; c field_2285 image + f Lfla; d field_2284 glyphs + m (Lfaj;Lfla;)V + m ()V +c flm$a net/minecraft/class_386$class_387 net/minecraft/client/gui/font/providers/BitmapProvider$Definition + f Lcom/mojang/serialization/MapCodec; a field_44799 CODEC + f Lakr; c comp_1519 file + f I d comp_1520 height + f I e comp_1521 ascent + f [[I f comp_1522 codepointGrid + f Lcom/mojang/serialization/Codec; g field_44800 CODEPOINT_GRID_CODEC + m (I)[[Lflm$b; a method_51644 method_51644 + m (Laue;)Lezm; a method_2039 load + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51748 method_51748 + m (Lfaj;IIII)I a method_2038 getActualGlyphWidth + m (Lflm$a;)Lcom/mojang/serialization/DataResult; a method_51749 validate + m (Ljava/util/List;)[[I a method_51750 method_51750 + m ([II)Ljava/lang/String; a method_51751 method_51751 + m ([[I)Lcom/mojang/serialization/DataResult; a method_51752 validateDimensions + m (I)[Lflm$b; b method_51645 method_51645 + m (Lflm$a;)Ljava/lang/String; b method_51753 method_51753 + m ([[I)Ljava/util/List; b method_51754 method_51754 + m ()Lakr; c comp_1519 file + m ()I d comp_1520 height + m ()I e comp_1521 ascent + m ()[[I f comp_1522 codepointGrid + m ()Ljava/lang/String; g method_51755 method_51755 + m ()Ljava/lang/String; h method_51756 method_51756 + m (Lakr;II[[I)V + m ()V +c flm$b net/minecraft/class_386$class_388 net/minecraft/client/gui/font/providers/BitmapProvider$Glyph + f F a comp_603 scale + f Lfaj; b comp_604 image + f I c comp_605 offsetX + f I d comp_606 offsetY + f I e comp_607 width + f I f comp_608 height + f I g comp_609 advance + f I h comp_610 ascent + m ()F c comp_603 scale + m ()Lfaj; d comp_604 image + m ()I e comp_605 offsetX + m ()I f comp_606 offsetY + m ()I g comp_607 width + m ()I h comp_608 height + m ()I i comp_609 advance + m ()I j comp_610 ascent + m (FLfaj;IIIIII)V +c flm$b$1 net/minecraft/class_386$class_388$1 net/minecraft/client/gui/font/providers/BitmapProvider$Glyph$1 + f Lflm$b; a field_37903 field_37903 + m (Lflm$b;)V +c fln net/minecraft/class_9111 net/minecraft/client/gui/font/providers/FreeTypeUtil + f Ljava/lang/Object; a field_51483 LIBRARY_LOCK + f Lorg/slf4j/Logger; b field_51484 LOGGER + f J c field_48394 library + m ()J a method_56143 getLibrary + m (I)Ljava/lang/String; a method_56144 describeError + m (ILjava/lang/String;)V a method_59837 assertError + m (Lorg/lwjgl/util/freetype/FT_Vector;)F a method_56146 x + m (Lorg/lwjgl/util/freetype/FT_Vector;FF)Lorg/lwjgl/util/freetype/FT_Vector; a method_56147 setVector + m ()V b method_56148 destroy + m (ILjava/lang/String;)Z b method_56145 checkError + m ()V + m ()V +c flo net/minecraft/class_389 net/minecraft/client/gui/font/providers/GlyphProviderDefinition + f Lcom/mojang/serialization/MapCodec; b field_44801 MAP_CODEC + m ()Lflp; a method_51731 type + m ()Lcom/mojang/datafixers/util/Either; b method_51734 unpack + m ()V +c flo$a net/minecraft/class_389$class_9245 net/minecraft/client/gui/font/providers/GlyphProviderDefinition$Conditional + f Lcom/mojang/serialization/Codec; a field_49122 CODEC + f Lflo; b comp_2352 definition + f Lflc$a; c comp_2353 filter + m ()Lflo; a comp_2352 definition + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_57040 method_57040 + m ()Lflc$a; b comp_2353 filter + m (Lflo;Lflc$a;)V + m ()V +c flo$b net/minecraft/class_389$class_8539 net/minecraft/client/gui/font/providers/GlyphProviderDefinition$Loader +c flo$c net/minecraft/class_389$class_8540 net/minecraft/client/gui/font/providers/GlyphProviderDefinition$Reference + f Lakr; a comp_1504 id + m ()Lakr; a comp_1504 id + m (Lakr;)V +c flp net/minecraft/class_394 net/minecraft/client/gui/font/providers/GlyphProviderType + f Lflp; a field_2312 BITMAP + f Lflp; b field_2317 TTF + f Lflp; c field_37904 SPACE + f Lflp; d field_2313 UNIHEX + f Lflp; e field_44761 REFERENCE + f Lcom/mojang/serialization/Codec; f field_44802 CODEC + f Ljava/lang/String; g field_2314 name + f Lcom/mojang/serialization/MapCodec; h field_44803 codec + f [Lflp; i field_2316 $VALUES + m ()Lcom/mojang/serialization/MapCodec; a method_51758 mapCodec + m ()[Lflp; b method_36876 $values + m (Ljava/lang/String;ILjava/lang/String;Lcom/mojang/serialization/MapCodec;)V + m ()V +c flq net/minecraft/class_8541 net/minecraft/client/gui/font/providers/ProviderReferenceDefinition + f Lcom/mojang/serialization/MapCodec; a field_44762 CODEC + f Lakr; c comp_1523 id + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51647 method_51647 + m ()Lakr; c comp_1523 id + m (Lakr;)V + m ()V +c flr net/minecraft/class_8557 net/minecraft/client/gui/font/providers/TrueTypeGlyphProviderDefinition + f Lcom/mojang/serialization/MapCodec; a field_44804 CODEC + f Lakr; c comp_1524 location + f F d comp_1525 size + f F e comp_1526 oversample + f Lflr$a; f comp_1527 shift + f Ljava/lang/String; g comp_1528 skip + f Lcom/mojang/serialization/Codec; h field_44805 SKIP_LIST_CODEC + m (Laue;)Lezm; a method_51759 load + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51761 method_51761 + m (Ljava/util/List;)Ljava/lang/String; a method_52730 method_52730 + m ()Lakr; c comp_1524 location + m ()F d comp_1525 size + m ()F e comp_1526 oversample + m ()Lflr$a; f comp_1527 shift + m ()Ljava/lang/String; g comp_1528 skip + m (Lakr;FFLflr$a;Ljava/lang/String;)V + m ()V +c flr$a net/minecraft/class_8557$class_8558 net/minecraft/client/gui/font/providers/TrueTypeGlyphProviderDefinition$Shift + f Lflr$a; a field_44806 NONE + f Lcom/mojang/serialization/Codec; b field_44807 CODEC + f F c comp_1529 x + f F d comp_1530 y + m ()F a comp_1529 x + m (Lflr$a;)Ljava/util/List; a method_51764 method_51764 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_51765 method_51765 + m ()F b comp_1530 y + m (Ljava/util/List;)Lflr$a; b method_51766 method_51766 + m (FF)V + m ()V +c fls net/minecraft/class_391 net/minecraft/client/gui/font/providers/UnihexProvider + f Lorg/slf4j/Logger; b field_2303 LOGGER + f I c field_44764 GLYPH_HEIGHT + f I d field_44765 DIGITS_PER_BYTE + f I e field_44766 DIGITS_FOR_WIDTH_8 + f I f field_44767 DIGITS_FOR_WIDTH_16 + f I g field_44768 DIGITS_FOR_WIDTH_24 + f I h field_44769 DIGITS_FOR_WIDTH_32 + f Lfla; i field_44770 glyphs + m (IB)I a method_51651 decodeHex + m (ILit/unimi/dsi/fastutil/bytes/ByteList;I)I a method_51652 decodeHex + m (Ljava/io/InputStream;Lfls$h;)V a method_51653 readFromStream + m (Ljava/io/InputStream;Lit/unimi/dsi/fastutil/bytes/ByteList;I)Z a method_51654 copyUntil + m (Ljava/nio/IntBuffer;III)V a method_51655 unpackBitsToBytes + m (Ljava/nio/IntBuffer;Lfls$f;II)V a method_51656 unpackBitsToBytes + m (Lfla;)V + m ()V +c fls$a net/minecraft/class_391$class_7736 net/minecraft/client/gui/font/providers/UnihexProvider$ByteContents + f [B a comp_1505 contents + m (ILit/unimi/dsi/fastutil/bytes/ByteList;)Lfls$f; a method_51669 read + m ()[B b comp_1505 contents + m ([B)V +c fls$b net/minecraft/class_391$class_392 net/minecraft/client/gui/font/providers/UnihexProvider$Definition + f Lcom/mojang/serialization/MapCodec; a field_44771 CODEC + f Lakr; c field_2304 hexFile + f Ljava/util/List; d field_44772 sizeOverrides + m (I)[[Lfls$d; a method_51657 method_51657 + m (Laue;)Lezm; a method_51658 load + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51659 method_51659 + m (Lfla;ILfls$f;)V a method_51660 method_51660 + m (Lfls$b;)Ljava/util/List; a method_51661 method_51661 + m (Ljava/io/InputStream;)Lfls; a method_51662 loadData + m (I)[Lfls$d; b method_51664 method_51664 + m (Lfls$b;)Lakr; b method_51665 method_51665 + m (I)[[Lfls$f; c method_51666 method_51666 + m (I)[Lfls$f; d method_51667 method_51667 + m (Lakr;Ljava/util/List;)V + m ()V +c fls$c net/minecraft/class_391$class_8542 net/minecraft/client/gui/font/providers/UnihexProvider$Dimensions + f Lcom/mojang/serialization/MapCodec; a field_44773 MAP_CODEC + f Lcom/mojang/serialization/Codec; b field_44774 CODEC + f I c comp_1506 left + f I d comp_1507 right + m ()I a method_51670 pack + m (I)I a method_51671 left + m (II)I a method_51672 pack + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51673 method_51673 + m ()I b comp_1506 left + m (I)I b method_51674 right + m ()I c comp_1507 right + m (II)V + m ()V +c fls$d net/minecraft/class_391$class_393 net/minecraft/client/gui/font/providers/UnihexProvider$Glyph + f Lfls$f; a comp_1508 contents + f I b comp_1509 left + f I c comp_1510 right + m ()I c method_51675 width + m ()Lfls$f; d comp_1508 contents + m ()I e comp_1509 left + m ()I f comp_1510 right + m (Lfls$f;II)V +c fls$d$1 net/minecraft/class_391$class_393$1 net/minecraft/client/gui/font/providers/UnihexProvider$Glyph$1 + f Lfls$d; a field_37906 field_37906 + m (Lfls$d;)V +c fls$e net/minecraft/class_391$class_8543 net/minecraft/client/gui/font/providers/UnihexProvider$IntContents + f [I a comp_1511 contents + f I b comp_1512 bitWidth + f I c field_44775 SIZE_24 + m (ILit/unimi/dsi/fastutil/bytes/ByteList;)Lfls$f; a method_51676 read32 + m ()[I b comp_1511 contents + m (ILit/unimi/dsi/fastutil/bytes/ByteList;)Lfls$f; b method_51677 read24 + m ([II)V +c fls$f net/minecraft/class_391$class_8544 net/minecraft/client/gui/font/providers/UnihexProvider$LineData + m ()I a comp_1512 bitWidth + m (I)I a method_51668 line + m ()I c method_51678 mask + m ()I d method_51679 calculateWidth +c fls$g net/minecraft/class_391$class_8545 net/minecraft/client/gui/font/providers/UnihexProvider$OverrideRange + f Lcom/mojang/serialization/Codec; a field_44776 CODEC + f I b comp_1513 from + f I c comp_1514 to + f Lfls$c; d comp_1515 dimensions + f Lcom/mojang/serialization/Codec; e field_44777 RAW_CODEC + m ()I a comp_1513 from + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51680 method_51680 + m (Lfls$g;)Lcom/mojang/serialization/DataResult; a method_51681 method_51681 + m ()I b comp_1514 to + m (Lfls$g;)Ljava/lang/String; b method_51682 method_51682 + m ()Lfls$c; c comp_1515 dimensions + m (IILfls$c;)V + m ()V +c fls$h net/minecraft/class_391$class_8546 net/minecraft/client/gui/font/providers/UnihexProvider$ReaderOutput +c fls$i net/minecraft/class_391$class_8547 net/minecraft/client/gui/font/providers/UnihexProvider$ShortContents + f [S a comp_1516 contents + m (ILit/unimi/dsi/fastutil/bytes/ByteList;)Lfls$f; a method_51683 read + m ()[S b comp_1516 contents + m ([S)V +c flt net/minecraft/class_6211 net/minecraft/client/gui/font/providers/package-info +c flu net/minecraft/class_7838 net/minecraft/client/gui/layouts/AbstractLayout + f I a field_41813 width + f I b field_41814 height + f I c field_41815 x + f I d field_41816 y + m (ILfmb;)V a method_48223 method_48223 + m (ILfmb;)V b method_48226 method_48226 + m (IIII)V +c flu$a net/minecraft/class_7838$class_7839 net/minecraft/client/gui/layouts/AbstractLayout$AbstractChildWrapper + f Lfmb; a field_40752 child + f Lfmc$a; b field_40753 layoutSettings + m ()I a method_46422 getHeight + m (II)V a method_46423 setX + m ()I b method_46424 getWidth + m (II)V b method_46425 setY + m (Lfmb;Lfmc;)V +c flv net/minecraft/class_8767 net/minecraft/client/gui/layouts/CommonLayouts + f I a field_46007 LABEL_SPACING + m (Lfhx;Lfmb;Lwz;)Lfma; a method_53549 labeledElement + m (Lfhx;Lfmb;Lwz;Ljava/util/function/Consumer;)Lfma; a method_53550 labeledElement + m (Lfmc;)V a method_53551 method_53551 + m ()V +c flw net/minecraft/class_7849 net/minecraft/client/gui/layouts/EqualSpacingLayout + f Lflw$b; c field_40784 orientation + f Ljava/util/List; d field_40785 children + f Lfmc; e field_40787 defaultChildLayoutSettings + m (Lfmb;)Lfmb; a method_46495 addChild + m (Lfmb;Lfmc;)Lfmb; a method_46496 addChild + m (Lfmb;Ljava/util/function/Consumer;)Lfmb; a method_52731 addChild + m (Ljava/util/function/Consumer;Lflw$a;)V a method_48230 method_48230 + m ()Lfmc; b method_46499 newChildLayoutSettings + m ()Lfmc; c method_46500 defaultChildLayoutSetting + m (IILflw$b;)V + m (IIIILflw$b;)V +c flw$a net/minecraft/class_7849$class_7850 net/minecraft/client/gui/layouts/EqualSpacingLayout$ChildContainer + m (Lfmb;Lfmc;)V +c flw$b net/minecraft/class_7849$class_7851 net/minecraft/client/gui/layouts/EqualSpacingLayout$Orientation + f Lflw$b; a field_40789 HORIZONTAL + f Lflw$b; b field_40790 VERTICAL + f [Lflw$b; c field_40791 $VALUES + m ()[Lflw$b; a method_46501 $values + m (Lflw$a;)I a method_46504 getPrimaryLength + m (Lflw$a;I)V a method_46505 setPrimaryPosition + m (Lflw$a;II)V a method_46506 setSecondaryPosition + m (Lfmb;)I a method_46502 getPrimaryLength + m (Lflw$a;)I b method_46508 getSecondaryLength + m (Lfmb;)I b method_46507 getSecondaryLength + m (Lfmb;)I c method_46509 getPrimaryPosition + m (Lfmb;)I d method_46510 getSecondaryPosition + m (Ljava/lang/String;I)V + m ()V +c flx net/minecraft/class_7843 net/minecraft/client/gui/layouts/FrameLayout + f Ljava/util/List; c field_40766 children + f I d field_40768 minWidth + f I e field_40769 minHeight + f Lfmc; f field_40770 defaultChildLayoutSettings + m (I)Lflx; a method_46447 setMinHeight + m (II)Lflx; a method_46446 setMinDimensions + m (IIILjava/util/function/Consumer;F)V a method_46440 alignInDimension + m (Lfmb;)Lfmb; a method_46441 addChild + m (Lfmb;IIII)V a method_46442 centerInRectangle + m (Lfmb;IIIIFF)V a method_46443 alignInRectangle + m (Lfmb;Lfmc;)Lfmb; a method_46444 addChild + m (Lfmb;Lfms;)V a method_48634 centerInRectangle + m (Lfmb;Lfms;FF)V a method_49617 alignInRectangle + m (Lfmb;Ljava/util/function/Consumer;)Lfmb; a method_52732 addChild + m (Ljava/util/function/Consumer;Lflx$a;)V a method_48228 method_48228 + m ()Lfmc; b method_46448 newChildLayoutSettings + m (I)Lflx; b method_46449 setMinWidth + m ()Lfmc; c method_46450 defaultChildLayoutSetting + m ()V + m (II)V + m (IIII)V +c flx$a net/minecraft/class_7843$class_7844 net/minecraft/client/gui/layouts/FrameLayout$ChildContainer + m (Lfmb;Lfmc;)V +c fly net/minecraft/class_7845 net/minecraft/client/gui/layouts/GridLayout + f Ljava/util/List; c field_40771 children + f Ljava/util/List; d field_40772 cellInhabitants + f Lfmc; e field_40773 defaultCellSettings + f I f field_42154 rowSpacing + f I g field_42155 columnSpacing + m (I)Lfly; a method_48635 columnSpacing + m (Lfmb;II)Lfmb; a method_46452 addChild + m (Lfmb;IIII)Lfmb; a method_46453 addChild + m (Lfmb;IIIILfmc;)Lfmb; a method_46454 addChild + m (Lfmb;IIIILjava/util/function/Consumer;)Lfmb; a method_52733 addChild + m (Lfmb;IILfmc;)Lfmb; a method_46455 addChild + m (Lfmb;IILjava/util/function/Consumer;)Lfmb; a method_52734 addChild + m ()Lfmc; b method_46457 newCellSettings + m (I)Lfly; b method_48636 rowSpacing + m ()Lfmc; c method_46458 defaultCellSetting + m (I)Lfly; c method_48637 spacing + m (I)Lfly$b; d method_47610 createRowHelper + m ()V + m (II)V +c fly$a net/minecraft/class_7845$class_7846 net/minecraft/client/gui/layouts/GridLayout$CellInhabitant + f I c field_40774 row + f I d field_40775 column + f I e field_40776 occupiedRows + f I f field_40777 occupiedColumns + m ()I c method_46459 getLastOccupiedRow + m ()I d method_46460 getLastOccupiedColumn + m (Lfmb;IIIILfmc;)V +c fly$b net/minecraft/class_7845$class_7939 net/minecraft/client/gui/layouts/GridLayout$RowHelper + f Lfly; a field_41338 field_41338 + f I b field_41339 columns + f I c field_41340 index + m ()Lfly; a method_48638 getGrid + m (Lfmb;)Lfmb; a method_47612 addChild + m (Lfmb;I)Lfmb; a method_47613 addChild + m (Lfmb;ILfmc;)Lfmb; a method_47614 addChild + m (Lfmb;Lfmc;)Lfmb; a method_47615 addChild + m ()Lfmc; b method_47611 newCellSettings + m ()Lfmc; c method_47616 defaultCellSetting + m (Lfly;I)V +c flz net/minecraft/class_8132 net/minecraft/client/gui/layouts/HeaderAndFooterLayout + f I a field_42490 DEFAULT_HEADER_AND_FOOTER_HEIGHT + f I b field_43136 CONTENT_MARGIN_TOP + f Lflx; c field_42491 headerFrame + f Lflx; d field_42492 footerFrame + f Lflx; e field_42493 contentsFrame + f Lfod; f field_42494 screen + f I g field_42495 headerHeight + f I h field_42496 footerHeight + m (I)V a method_48991 setFooterHeight + m (Lfmb;)Lfmb; a method_48992 addToHeader + m (Lfmb;Ljava/util/function/Consumer;)Lfmb; a method_48993 addToHeader + m (Lwz;Lfhx;)V a method_57726 addTitleHeader + m ()I b method_48994 getFooterHeight + m (I)V b method_48995 setHeaderHeight + m (Lfmb;)Lfmb; b method_48996 addToFooter + m (Lfmb;Ljava/util/function/Consumer;)Lfmb; b method_48997 addToFooter + m ()I c method_48998 getHeaderHeight + m (Lfmb;)Lfmb; c method_48999 addToContents + m (Lfmb;Ljava/util/function/Consumer;)Lfmb; c method_49000 addToContents + m ()I d method_57727 getContentHeight + m (Lfod;)V + m (Lfod;I)V + m (Lfod;II)V +c fma net/minecraft/class_8133 net/minecraft/client/gui/layouts/Layout + m ()V a method_48222 arrangeElements + m (Lfmb;)V a method_49004 method_49004 + m (Ljava/util/function/Consumer;Lfmb;)V a method_49005 method_49005 + m (Ljava/util/function/Consumer;)V b method_48227 visitChildren +c fmb net/minecraft/class_8021 net/minecraft/client/gui/layouts/LayoutElement + m ()I D method_46426 getX + m ()I E method_46427 getY + m ()Lfms; H method_48202 getRectangle + m (Ljava/util/function/Consumer;)V a method_48206 visitWidgets + m (II)V c method_48229 setPosition + m (I)V m method_46421 setX + m (I)V n method_46419 setY + m ()I w method_25364 getHeight + m ()I y method_25368 getWidth +c fmc net/minecraft/class_7847 net/minecraft/client/gui/layouts/LayoutSettings + m ()Lfmc; a method_46461 alignHorizontallyLeft + m (F)Lfmc; a method_46462 alignHorizontally + m (FF)Lfmc; a method_46463 align + m (I)Lfmc; a method_46464 padding + m (II)Lfmc; a method_46465 padding + m (IIII)Lfmc; a method_46466 padding + m ()Lfmc; b method_46467 alignHorizontallyCenter + m (F)Lfmc; b method_46468 alignVertically + m (I)Lfmc; b method_46469 paddingLeft + m ()Lfmc; c method_46470 alignHorizontallyRight + m (I)Lfmc; c method_46471 paddingTop + m ()Lfmc; d method_46472 alignVerticallyTop + m (I)Lfmc; d method_46473 paddingRight + m ()Lfmc; e method_46474 alignVerticallyMiddle + m (I)Lfmc; e method_46475 paddingBottom + m ()Lfmc; f method_46476 alignVerticallyBottom + m (I)Lfmc; f method_46477 paddingHorizontal + m ()Lfmc; g method_46478 copy + m (I)Lfmc; g method_46479 paddingVertical + m ()Lfmc$a; h method_46480 getExposed + m ()Lfmc; i method_46481 defaults +c fmc$a net/minecraft/class_7847$class_7848 net/minecraft/client/gui/layouts/LayoutSettings$LayoutSettingsImpl + f I a field_40778 paddingLeft + f I b field_40779 paddingTop + f I c field_40780 paddingRight + f I d field_40781 paddingBottom + f F e field_40782 xAlignment + f F f field_40783 yAlignment + m (FF)Lfmc$a; b method_46482 align + m (II)Lfmc$a; b method_46483 padding + m (IIII)Lfmc$a; b method_46484 padding + m (F)Lfmc$a; c method_46485 alignHorizontally + m (F)Lfmc$a; d method_46486 alignVertically + m (I)Lfmc$a; h method_46487 padding + m (I)Lfmc$a; i method_46488 paddingLeft + m ()Lfmc$a; j method_46489 copy + m (I)Lfmc$a; j method_46490 paddingTop + m (I)Lfmc$a; k method_46491 paddingRight + m (I)Lfmc$a; l method_46492 paddingBottom + m (I)Lfmc$a; m method_46493 paddingHorizontal + m (I)Lfmc$a; n method_46494 paddingVertical + m ()V + m (Lfmc$a;)V +c fmd net/minecraft/class_8667 net/minecraft/client/gui/layouts/LinearLayout + f Lfly; a field_45400 wrapped + f Lfmd$a; b field_45401 orientation + f I c field_45402 nextChildIndex + m (I)Lfmd; a method_52735 spacing + m (Lfmb;)Lfmb; a method_52736 addChild + m (Lfmb;Lfmc;)Lfmb; a method_52737 addChild + m (Lfmb;Ljava/util/function/Consumer;)Lfmb; a method_52738 addChild + m ()Lfmc; b method_52739 newCellSettings + m ()Lfmc; c method_52740 defaultCellSetting + m ()Lfmd; d method_52741 vertical + m ()Lfmd; e method_52742 horizontal + m (Lfmd$a;)V + m (IILfmd$a;)V +c fmd$a net/minecraft/class_8667$class_8668 net/minecraft/client/gui/layouts/LinearLayout$Orientation + f Lfmd$a; a field_45403 HORIZONTAL + f Lfmd$a; b field_45404 VERTICAL + f [Lfmd$a; c field_45405 $VALUES + m ()[Lfmd$a; a method_52743 $values + m (Lfly;I)V a method_52744 setSpacing + m (Lfly;Lfmb;ILfmc;)Lfmb; a method_52745 addChild + m (Ljava/lang/String;I)V + m ()V +c fme net/minecraft/class_7852 net/minecraft/client/gui/layouts/SpacerElement + f I a field_41818 x + f I b field_41819 y + f I c field_41820 width + f I d field_41821 height + m (I)Lfme; a method_46512 width + m (I)Lfme; b method_46513 height + m (II)V + m (IIII)V +c fmf net/minecraft/class_8022 net/minecraft/client/gui/layouts/package-info +c fmg net/minecraft/class_6379 net/minecraft/client/gui/narration/NarratableEntry + m ()Z C method_37303 isActive + m ()Lfmg$a; u method_37018 narrationPriority +c fmg$a net/minecraft/class_6379$class_6380 net/minecraft/client/gui/narration/NarratableEntry$NarrationPriority + f Lfmg$a; a field_33784 NONE + f Lfmg$a; b field_33785 HOVERED + f Lfmg$a; c field_33786 FOCUSED + f [Lfmg$a; d field_33787 $VALUES + m ()Z a method_37028 isTerminal + m ()[Lfmg$a; b method_37029 $values + m (Ljava/lang/String;I)V + m ()V +c fmh net/minecraft/class_6381 net/minecraft/client/gui/narration/NarratedElementType + f Lfmh; a field_33788 TITLE + f Lfmh; b field_33789 POSITION + f Lfmh; c field_33790 HINT + f Lfmh; d field_33791 USAGE + f [Lfmh; e field_33792 $VALUES + m ()[Lfmh; a method_37030 $values + m (Ljava/lang/String;I)V + m ()V +c fmi net/minecraft/class_6382 net/minecraft/client/gui/narration/NarrationElementOutput + m ()Lfmi; a method_37031 nest + m (Lfmh;Lfmk;)V a method_37032 add + m (Lfmh;Ljava/lang/String;)V a method_37033 add + m (Lfmh;Lwz;)V a method_37034 add + m (Lfmh;[Lwz;)V a method_37035 add +c fmj net/minecraft/class_6383 net/minecraft/client/gui/narration/NarrationSupplier + m (Lfmi;)V b method_37020 updateNarration +c fmk net/minecraft/class_6384 net/minecraft/client/gui/narration/NarrationThunk + f Lfmk; a field_33793 EMPTY + f Ljava/lang/Object; b field_33794 contents + f Ljava/util/function/BiConsumer; c field_33795 converter + m (Ljava/lang/String;)Lfmk; a method_37036 from + m (Ljava/util/List;)Lfmk; a method_37037 from + m (Ljava/util/List;Ljava/util/function/Consumer;Ljava/util/List;)V a method_37038 method_37038 + m (Ljava/util/function/Consumer;)V a method_37039 getText + m (Ljava/util/function/Consumer;Lazs;)V a method_37040 method_37040 + m (Ljava/util/function/Consumer;Lwz;)V a method_37041 method_37041 + m (Lwz;)Lfmk; a method_37042 from + m (Ljava/lang/Object;Ljava/util/function/BiConsumer;)V + m ()V +c fml net/minecraft/class_6385 net/minecraft/client/gui/narration/ScreenNarrationCollector + f I a field_33796 generation + f Ljava/util/Map; b field_33797 entries + m (Lfml$a;)Ljava/lang/Integer; a method_37043 method_37043 + m (Ljava/util/function/Consumer;)V a method_37044 update + m (Z)Ljava/lang/String; a method_37045 collectNarrationText + m (ZLjava/util/function/Consumer;Lfml$a;Lfml$b;)V a method_37046 method_37046 + m (Lfml$a;)Lfmh; b method_37047 method_37047 + m ()V +c fml$1 net/minecraft/class_6385$1 net/minecraft/client/gui/narration/ScreenNarrationCollector$1 + f Ljava/lang/StringBuilder; a field_33798 val$result + f Z b field_33800 firstEntry + m (Ljava/lang/String;)V a method_37048 accept + m (Lfml;Ljava/lang/StringBuilder;)V +c fml$a net/minecraft/class_6385$class_6386 net/minecraft/client/gui/narration/ScreenNarrationCollector$EntryKey + f Lfmh; a field_33801 type + f I b field_33802 depth + m (Lfmh;I)V +c fml$b net/minecraft/class_6385$class_6387 net/minecraft/client/gui/narration/ScreenNarrationCollector$NarrationEntry + f Lfmk; a field_33803 contents + f I b field_33804 generation + f Z c field_33805 alreadyNarrated + m (ILfmk;)Lfml$b; a method_37049 update + m ()V +c fml$c net/minecraft/class_6385$class_6388 net/minecraft/client/gui/narration/ScreenNarrationCollector$Output + f Lfml; a field_33806 field_33806 + f I b field_33807 depth + m (Lfml$a;)Lfml$b; a method_37050 method_37050 + m (Lfml;I)V +c fmm net/minecraft/class_6389 net/minecraft/client/gui/narration/package-info +c fmn net/minecraft/class_8494 net/minecraft/client/gui/navigation/CommonInputs + m (I)Z a method_51255 selected + m ()V +c fmo net/minecraft/class_8023 net/minecraft/client/gui/navigation/FocusNavigationEvent + m ()Lfmq; a method_48231 getVerticalDirectionForInitialFocus +c fmo$a net/minecraft/class_8023$class_8024 net/minecraft/client/gui/navigation/FocusNavigationEvent$ArrowNavigation + f Lfmq; a comp_1191 direction + m ()Lfmq; b comp_1191 direction + m (Lfmq;)V +c fmo$b net/minecraft/class_8023$class_8025 net/minecraft/client/gui/navigation/FocusNavigationEvent$InitialFocus + m ()V +c fmo$c net/minecraft/class_8023$class_8026 net/minecraft/client/gui/navigation/FocusNavigationEvent$TabNavigation + f Z a comp_1192 forward + m ()Z b comp_1192 forward + m (Z)V +c fmp net/minecraft/class_8027 net/minecraft/client/gui/navigation/ScreenAxis + f Lfmp; a field_41822 HORIZONTAL + f Lfmp; b field_41823 VERTICAL + f [Lfmp; c field_41824 $VALUES + m ()Lfmp; a method_48232 orthogonal + m (Z)Lfmq; a method_48233 getDirection + m ()Lfmq; b method_48234 getPositive + m ()Lfmq; c method_48235 getNegative + m ()[Lfmp; d method_48236 $values + m (Ljava/lang/String;I)V + m ()V +c fmq net/minecraft/class_8028 net/minecraft/client/gui/navigation/ScreenDirection + f Lfmq; a field_41826 UP + f Lfmq; b field_41827 DOWN + f Lfmq; c field_41828 LEFT + f Lfmq; d field_41829 RIGHT + f Lit/unimi/dsi/fastutil/ints/IntComparator; e field_41830 coordinateValueComparator + f [Lfmq; f field_41831 $VALUES + m ()Lfmp; a method_48237 getAxis + m (II)Z a method_48238 isAfter + m ()Lfmq; b method_48239 getOpposite + m (II)Z b method_48240 isBefore + m ()Z c method_48241 isPositive + m (II)I c method_48242 method_48242 + m ()Lit/unimi/dsi/fastutil/ints/IntComparator; d method_48243 coordinateValueComparator + m ()[Lfmq; e method_48244 $values + m (Ljava/lang/String;I)V + m ()V +c fmr net/minecraft/class_8029 net/minecraft/client/gui/navigation/ScreenPosition + f I a comp_1193 x + f I b comp_1194 y + m ()I a comp_1193 x + m (Lfmp;)I a method_48245 getCoordinate + m (Lfmp;II)Lfmr; a method_48246 of + m (Lfmq;)Lfmr; a method_48247 step + m ()I b comp_1194 y + m (II)V +c fmr$1 net/minecraft/class_8029$1 net/minecraft/client/gui/navigation/ScreenPosition$1 + f [I a field_41833 $SwitchMap$net$minecraft$client$gui$navigation$ScreenAxis + f [I b field_41834 $SwitchMap$net$minecraft$client$gui$navigation$ScreenDirection + m ()V +c fms net/minecraft/class_8030 net/minecraft/client/gui/navigation/ScreenRectangle + f Lfmr; a comp_1195 position + f I b comp_1196 width + f I c comp_1197 height + f Lfms; d field_41835 EMPTY + m ()Lfms; a method_48248 empty + m (II)Z a method_58137 containsPoint + m (Lfmp;)I a method_48249 getLength + m (Lfmp;IIII)Lfms; a method_48250 of + m (Lfmq;)Lfms; a method_48251 step + m (Lfms;)Z a method_48252 overlaps + m (Lfms;Lfmp;)Z a method_48253 overlapsInAxis + m ()I b method_49618 top + m (Lfmp;)I b method_48254 getCenterInAxis + m (Lfmq;)I b method_48255 getBoundInDirection + m (Lfms;)Lfms; b method_49701 intersection + m ()I c method_49619 bottom + m (Lfmq;)Lfms; c method_48256 getBorder + m ()I d method_49620 left + m ()I e method_49621 right + m ()Lfmr; f comp_1195 position + m ()I g comp_1196 width + m ()I h comp_1197 height + m (IIII)V + m (Lfmr;II)V + m ()V +c fms$1 net/minecraft/class_8030$1 net/minecraft/client/gui/navigation/ScreenRectangle$1 + f [I a field_41836 $SwitchMap$net$minecraft$client$gui$navigation$ScreenAxis + m ()V +c fmt net/minecraft/class_8031 net/minecraft/client/gui/navigation/package-info +c fmu net/minecraft/class_6212 net/minecraft/client/gui/package-info +c fmv net/minecraft/class_8032 net/minecraft/client/gui/screens/AccessibilityOnboardingScreen + f Lflz; A field_49491 layout + f Lwz; a field_49490 TITLE + f Lwz; b field_41837 ONBOARDING_NARRATOR_MESSAGE + f I c field_41838 PADDING + f I r field_41839 TITLE_PADDING + f Lfjd; s field_41841 logoRenderer + f Lfgs; u field_41842 options + f Z v field_42038 narratorAvailable + f Z w field_41843 hasNarrated + f F x field_41844 timer + f Ljava/lang/Runnable; y field_46008 onClose + f Lfix; z field_41845 textWidget + m ()V C method_48260 handleInitialNarrationDelay + m (Lfim;)V a method_48639 method_48639 + m (Lfmc;)V a method_52746 method_52746 + m (Lfod;)V a method_49296 closeAndSetScreen + m (ZLjava/lang/Runnable;)V a method_53552 close + m (Lfim;)V b method_49297 method_49297 + m (Lfod;)V b method_53553 method_53553 + m (Lfim;)V c method_49298 method_49298 + m ()I m method_48259 initTitleYPos + m (Lfgs;Ljava/lang/Runnable;)V + m ()V +c fmw net/minecraft/class_403 net/minecraft/client/gui/screens/AlertScreen + f I a field_39539 LABEL_Y + f Lwz; b field_2346 messageText + f Lfjf; c field_2348 message + f Ljava/lang/Runnable; r field_2345 callback + f Lwz; s field_2349 okButton + f Z u field_39540 shouldCloseOnEsc + m (Lfim;)V a method_19790 method_19790 + m (Ljava/lang/Runnable;Lwz;Lwz;)V + m (Ljava/lang/Runnable;Lwz;Lwz;Lwz;Z)V +c fmx net/minecraft/class_405 net/minecraft/client/gui/screens/BackupConfirmScreen + f Lfmx$a; a field_46857 onProceed + f I b field_32236 id + f Ljava/lang/Runnable; c field_46858 onCancel + f Lwz; r field_2364 description + f Z s field_19232 promptForCacheErase + f Lfjf; u field_2365 message + f Lfio; v field_19234 eraseCache + m (Lfim;)V a method_19791 method_19791 + m (Lfim;)V b method_19792 method_19792 + m (Lfim;)V c method_19793 method_19793 + m (Ljava/lang/Runnable;Lfmx$a;Lwz;Lwz;Z)V +c fmx$a net/minecraft/class_405$class_406 net/minecraft/client/gui/screens/BackupConfirmScreen$Listener +c fmy net/minecraft/class_7588 net/minecraft/client/gui/screens/BanNoticeScreens + f Lwz; a field_46009 NAME_BAN_TITLE + f Lwz; b field_39720 TEMPORARY_BAN_TITLE + f Lwz; c field_39721 PERMANENT_BAN_TITLE + f Lwz; d field_46010 SKIN_BAN_TITLE + f Lwz; e field_46011 SKIN_BAN_DESCRIPTION + m (Lcom/mojang/authlib/minecraft/BanDetails;)Lwz; a method_44651 getBannedTitle + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lcom/mojang/authlib/minecraft/BanDetails;)Lfna; a method_44652 create + m (Ljava/lang/Runnable;)Lfna; a method_53554 createSkinBan + m (Ljava/lang/String;Ljava/lang/Runnable;)Lfna; a method_53556 createNameBan + m (Ljava/net/URI;Ljava/lang/Runnable;Z)V a method_53555 method_53555 + m (Lcom/mojang/authlib/minecraft/BanDetails;)Lwz; b method_44653 getBannedScreenText + m (Ljava/net/URI;Ljava/lang/Runnable;Z)V b method_53557 method_53557 + m (Lcom/mojang/authlib/minecraft/BanDetails;)Lwz; c method_44654 getBanReasonText + m (Lcom/mojang/authlib/minecraft/BanDetails;)Lwz; d method_44655 getBanStatusText + m (Lcom/mojang/authlib/minecraft/BanDetails;)Lwz; e method_44656 getBanDurationText + m (Lcom/mojang/authlib/minecraft/BanDetails;)Z f method_44657 isTemporaryBan + m ()V + m ()V +c fmz net/minecraft/class_408 net/minecraft/client/gui/screens/ChatScreen + f D a field_32237 MOUSE_SCROLL_SPEED + f Lfiv; b field_2382 input + f Lwz; c field_33953 USAGE_TEXT + f I r field_39774 TOOLTIP_MAX_WIDTH + f Ljava/lang/String; s field_2389 historyBuffer + f I u field_2387 historyPos + f Ljava/lang/String; v field_18973 initial + f Lfip; w field_21616 commandSuggestions + m (I)V a method_2114 moveInHistory + m (Ljava/lang/String;)Ljava/lang/String; a method_44054 normalizeChatMessage + m (DD)Lxw; b method_44052 getComponentStyleAt + m (Ljava/lang/String;)V b method_23945 onEdited + m (Ljava/lang/String;Z)V b method_44056 handleChatInput + m (Ljava/lang/String;)V c method_2108 setChatLine + m (Ljava/lang/String;)V + m ()V +c fmz$1 net/minecraft/class_408$1 net/minecraft/client/gui/screens/ChatScreen$1 + f Lfmz; d field_21631 field_21631 + m (Lfmz;Lfhx;IIIILwz;)V +c fna net/minecraft/class_407 net/minecraft/client/gui/screens/ConfirmLinkScreen + f Lwz; r field_2373 COPY_BUTTON_TEXT + f Lwz; s field_2372 WARNING_TEXT + f Ljava/lang/String; u field_2371 url + f Z v field_2370 showWarning + m (Lfod;Ljava/lang/String;)V a method_49623 confirmLinkNow + m (Lfod;Ljava/lang/String;Z)V a method_60866 confirmLinkNow + m (Lfod;Ljava/lang/String;ZLfim;)V a method_49624 method_49624 + m (Lfod;Ljava/net/URI;)V a method_61033 confirmLinkNow + m (Lfod;Ljava/net/URI;Z)V a method_61034 confirmLinkNow + m (Lfod;Ljava/net/URI;ZLfim;)V a method_61035 method_61035 + m (Ljava/lang/String;Lfgo;Lfod;Z)V a method_49622 method_49622 + m (Ljava/net/URI;Lfgo;Lfod;Z)V a method_61036 method_61036 + m (ZLjava/lang/String;)Lxn; a method_44658 confirmMessage + m (Lfim;)V b method_19795 method_19795 + m (Lfod;Ljava/lang/String;)Lfim$c; b method_49625 confirmLink + m (Lfod;Ljava/lang/String;Z)Lfim$c; b method_60867 confirmLink + m (Lfod;Ljava/net/URI;)Lfim$c; b method_61037 confirmLink + m (Lfod;Ljava/net/URI;Z)Lfim$c; b method_61038 confirmLink + m (Lfim;)V c method_19796 method_19796 + m (Z)Lxn; c method_44659 confirmMessage + m (Lfim;)V d method_19797 method_19797 + m ()V l method_2100 copyToClipboard + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Ljava/lang/String;Z)V + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Ljava/lang/String;Z)V + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Ljava/net/URI;Z)V + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Lwz;Ljava/net/URI;Lwz;Z)V + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Lwz;Ljava/lang/String;Lwz;Z)V + m ()V +c fnb net/minecraft/class_410 net/minecraft/client/gui/screens/ConfirmScreen + f Lwz; a field_2402 yesButton + f Lwz; b field_2399 noButton + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; c field_2403 callback + f I r field_39722 MARGIN + f Lwz; s field_2401 message + f Lfjf; u field_2404 multilineMessage + f I v field_2400 delayTicker + f Ljava/util/List; w field_33808 exitButtons + m ()I C method_44661 messageTop + m ()I D method_44662 messageHeight + m (I)V a method_37051 addButtons + m (Lfim;)V a method_37052 addExitButton + m (I)V b method_2125 setDelay + m (Lfim;)V b method_37053 method_37053 + m (Lfim;)V c method_37054 method_37054 + m ()I m method_44660 titleTop + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Lwz;)V + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Lwz;Lwz;Lwz;)V +c fnc net/minecraft/class_412 net/minecraft/client/gui/screens/ConnectScreen + f Lwz; A field_44548 connectFailedTitle + f Lwz; a field_44970 ABORT_CONNECTION + f Lwz; b field_33736 UNKNOWN_HOST_MESSAGE + f Ljava/util/concurrent/atomic/AtomicInteger; c field_2408 UNIQUE_THREAD_ID + f Lorg/slf4j/Logger; r field_2410 LOGGER + f J s field_32238 NARRATION_DELAY_MS + f Lvt; u field_2411 connection + f Lio/netty/channel/ChannelFuture; v field_44971 channelFuture + f Z w field_2409 aborted + f Lfod; x field_2412 parent + f Lwz; y field_2413 status + f J z field_19097 lastNarration + m (Lfgo;Lgax;Lfzt;Lfzy;)V a method_2130 connect + m (Lfim;)V a method_19800 method_19800 + m (Lfod;Lfgo;Lgax;Lfzt;ZLfzy;)V a method_36877 startConnecting + m (Lwz;)V a method_2131 updateStatus + m (Lfod;Lwz;)V + m ()V +c fnc$1 net/minecraft/class_412$1 net/minecraft/client/gui/screens/ConnectScreen$1 + f Lgax; a field_33737 val$hostAndPort + f Lfgo; b field_33738 val$minecraft + f Lfzt; c field_40415 val$server + f Lfzy; d field_48396 val$transferState + f Lfnc; e field_2416 field_2416 + m (Lfgo;)V a method_36878 method_36878 + m (Lfgo;Ljava/lang/String;)V a method_36879 method_36879 + m (Lfzt$a;)Lgtg$c; a method_55509 convertPackStatus + m (Lfnc;Ljava/lang/String;Lgax;Lfgo;Lfzt;Lfzy;)V +c fnc$2 net/minecraft/class_412$2 net/minecraft/client/gui/screens/ConnectScreen$2 + f [I a field_47591 $SwitchMap$net$minecraft$client$multiplayer$ServerData$ServerPackStatus + m ()V +c fnd net/minecraft/class_415 net/minecraft/client/gui/screens/CreateBuffetWorldScreen + f Lwz; a field_26535 BIOME_SELECT_INFO + f I b field_49494 SPACING + f Lflz; c field_49495 layout + f Lfod; r field_24562 parent + f Ljava/util/function/Consumer; s field_24563 applySettings + f Ljz; u field_25888 biomes + f Lfnd$a; v field_2441 list + f Ljm; w field_25040 biome + f Lfim; x field_2438 doneButton + m ()Ljava/util/Optional; C method_41840 method_41840 + m (Lfim;)V a method_19801 method_19801 + m (Lfnd$a$a;)Z a method_29051 method_29051 + m (Lfim;)V b method_28059 method_28059 + m ()V m method_2151 updateButtonValidity + m (Lfod;Lftk;Ljava/util/function/Consumer;)V + m ()V +c fnd$a net/minecraft/class_415$class_4190 net/minecraft/client/gui/screens/CreateBuffetWorldScreen$BiomeList + f Lfnd; a field_18736 field_18736 + m (Lfnd$a$a;)V a method_20089 setSelected + m (Lfnd$a;Lfih$a;)V a method_40075 method_40075 + m (Ljm$c;)Lfnd$a$a; a method_28060 method_28060 + m (Lfnd$a$a;)Ljava/lang/String; b method_40076 method_40076 + m (Lfnd;)V +c fnd$a$a net/minecraft/class_415$class_4190$class_4191 net/minecraft/client/gui/screens/CreateBuffetWorldScreen$BiomeList$Entry + f Lfnd$a; a field_18737 field_18737 + f Ljm$c; b field_24564 biome + f Lwz; c field_26536 name + m (Lfnd$a;Ljm$c;)V +c fne net/minecraft/class_413 net/minecraft/client/gui/screens/CreateFlatWorldScreen + f Lwz; A field_2425 columnHeight + f Lfne$a; B field_2424 list + f Lfim; C field_2421 deleteLayerButton + f Lftc; a field_2422 parent + f Lakr; b field_45406 SLOT_SPRITE + f I c field_32240 SLOT_BG_SIZE + f I r field_32241 SLOT_STAT_HEIGHT + f I s field_32242 SLOT_BG_X + f I u field_32243 SLOT_BG_Y + f I v field_32244 SLOT_FG_X + f I w field_32245 SLOT_FG_Y + f Ljava/util/function/Consumer; x field_24565 applySettings + f Leht; y field_2419 generator + f Lwz; z field_2418 columnType + m ()Z C method_2147 hasValidSelection + m (Leht;)V a method_29054 setConfig + m (Lfim;)V a method_19804 method_19804 + m (Lfim;)V b method_19805 method_19805 + m (Lfim;)V c method_19806 method_19806 + m (Lfim;)V d method_20093 method_20093 + m ()Leht; l method_29055 settings + m ()V m method_2145 updateButtonValidity + m (Lftc;Ljava/util/function/Consumer;Leht;)V + m ()V +c fne$a net/minecraft/class_413$class_4192 net/minecraft/client/gui/screens/CreateFlatWorldScreen$DetailsList + f Lfne; a field_18738 field_18738 + m (Lfne$a$a;)V a method_20094 setSelected + m ()V c method_19372 resetRows + m (Lfne;)V +c fne$a$a net/minecraft/class_413$class_4192$class_4193 net/minecraft/client/gui/screens/CreateFlatWorldScreen$DetailsList$Entry + f Lfne$a; a field_18739 field_18739 + m (Ldtc;)Lcuq; a method_37055 getDisplayItem + m (Lfhz;II)V a method_19373 blitSlotBg + m (Lfhz;IILcuq;)V a method_19375 blitSlot + m (Lfne$a;)V +c fnf net/minecraft/class_8219 net/minecraft/client/gui/screens/CreditsAndAttributionScreen + f I a field_43137 BUTTON_SPACING + f I b field_43138 BUTTON_WIDTH + f Lwz; c field_43139 TITLE + f Lwz; r field_43140 CREDITS_BUTTON + f Lwz; s field_43141 ATTRIBUTION_BUTTON + f Lwz; u field_43142 LICENSES_BUTTON + f Lfod; v field_43143 lastScreen + f Lflz; w field_43144 layout + m ()V C method_49736 method_49736 + m (Lfim;)V a method_49737 method_49737 + m (Lfim;)V b method_49738 method_49738 + m ()V m method_49739 openCreditsScreen + m (Lfod;)V + m ()V +c fng net/minecraft/class_5346 net/minecraft/client/gui/screens/DatapackLoadFailureScreen + f Lfjf; a field_25265 message + f Ljava/lang/Runnable; b field_46859 cancelCallback + f Ljava/lang/Runnable; c field_46860 safeModeCallback + m (Lfim;)V a method_29345 method_29345 + m (Lfim;)V b method_29346 method_29346 + m (Ljava/lang/Runnable;Ljava/lang/Runnable;)V +c fnh net/minecraft/class_418 net/minecraft/client/gui/screens/DeathScreen + f Lakr; a field_45407 DRAFT_REPORT_SPRITE + f I b field_2451 delayTicker + f Lwz; c field_2450 causeOfDeath + f Z r field_18974 hardcore + f Lwz; s field_26537 deathScore + f Ljava/util/List; u field_33809 exitButtons + f Lfim; v field_41684 exitToTitleButton + m ()V C method_22364 exitToTitleScreen + m (I)Lxw; a method_2164 getClickedComponentStyleAt + m (Lfhz;II)V a method_59546 renderDeathBackground + m (Lfim;)V a method_47938 method_47938 + m (Lfim;)V b method_19809 method_19809 + m (Z)V c method_49299 setButtonsActive + m (Z)V f method_47939 method_47939 + m ()V m method_47940 handleExitToTitleScreen + m (Lwz;Z)V + m ()V +c fnh$a net/minecraft/class_418$class_8183 net/minecraft/client/gui/screens/DeathScreen$TitleConfirmScreen + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lwz;Lwz;Lwz;Lwz;)V +c fni net/minecraft/class_417 net/minecraft/client/gui/screens/DemoIntroScreen + f Lakr; a field_2447 DEMO_BACKGROUND_LOCATION + f Lfjf; b field_26538 movementMessage + f Lfjf; c field_26539 durationMessage + m (Lfim;)V a method_19810 method_19810 + m (Lfim;)V b method_19811 method_19811 + m ()V + m ()V +c fnj net/minecraft/class_420 net/minecraft/client/gui/screens/DirectJoinServerScreen + f Lwz; a field_26540 ENTER_IP_LABEL + f Lfim; b field_2462 selectButton + f Lfzt; c field_2460 serverData + f Lfiv; r field_2463 ipEdit + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; s field_19235 callback + f Lfod; u field_21790 lastScreen + m ()V C method_2169 updateSelectButtonStatus + m (Lfim;)V a method_19812 method_19812 + m (Ljava/lang/String;)V a method_19376 method_19376 + m (Lfim;)V b method_19813 method_19813 + m ()V m method_2167 onSelect + m (Lfod;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lfzt;)V + m ()V +c fnk net/minecraft/class_419 net/minecraft/client/gui/screens/DisconnectedScreen + f Lwz; a field_44549 TO_SERVER_LIST + f Lwz; b field_44550 TO_TITLE + f Lwz; c field_52129 REPORT_TO_SERVER_TITLE + f Lwz; r field_52130 OPEN_REPORT_DIR_TITLE + f Lfod; s field_2456 parent + f Lvv; u field_52131 details + f Lwz; v field_44551 buttonText + f Lfmd; w field_44552 layout + m (Lfim;)V a method_51256 method_51256 + m (Ljava/net/URI;)V a method_60868 method_60868 + m (Ljava/nio/file/Path;)V a method_60870 method_60870 + m (Ljava/nio/file/Path;Lfim;)V a method_60869 method_60869 + m (Lfim;)V b method_19814 method_19814 + m (Lfod;Lwz;Lwz;)V + m (Lfod;Lwz;Lwz;Lwz;)V + m (Lfod;Lwz;Lvv;)V + m (Lfod;Lwz;Lvv;Lwz;)V + m ()V +c fnl net/minecraft/class_422 net/minecraft/client/gui/screens/EditServerScreen + f Lwz; a field_26541 NAME_LABEL + f Lwz; b field_26542 IP_LABEL + f Lfim; c field_2472 addButton + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; r field_19236 callback + f Lfzt; s field_2469 serverData + f Lfiv; u field_2474 ipEdit + f Lfiv; v field_2471 nameEdit + f Lfod; w field_21791 lastScreen + m ()V C method_36223 updateAddButtonStatus + m (Lfim;)V a method_36218 method_36218 + m (Lfit;Lfzt$a;)V a method_36219 method_36219 + m (Ljava/lang/String;)V a method_36221 method_36221 + m (Lfim;)V b method_36220 method_36220 + m (Ljava/lang/String;)V b method_36222 method_36222 + m ()V m method_2172 onAdd + m (Lfod;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lfzt;)V + m ()V +c fnm net/minecraft/class_421 net/minecraft/client/gui/screens/ErrorScreen + f Lwz; a field_2467 message + m (Lfim;)V a method_19818 method_19818 + m (Lwz;Lwz;)V +c fnn net/minecraft/class_8573 net/minecraft/client/gui/screens/FaviconTexture + f Lakr; a field_44933 MISSING_LOCATION + f I b field_44934 WIDTH + f I c field_44935 HEIGHT + f Lgqm; d field_44936 textureManager + f Lakr; e field_44937 textureLocation + f Lgpy; f field_44938 texture + f Z g field_44939 closed + m ()V a method_52198 clear + m (Lfaj;)V a method_52199 upload + m (Lgqm;Ljava/lang/String;)Lfnn; a method_52200 forWorld + m ()Lakr; b method_52201 textureLocation + m (Lgqm;Ljava/lang/String;)Lfnn; b method_52202 forServer + m ()V c method_52203 checkOpen + m (Lgqm;Lakr;)V + m ()V +c fno net/minecraft/class_424 net/minecraft/client/gui/screens/GenericMessageScreen + f Lfix; a field_49496 textWidget + m (Lwz;)V +c fnp net/minecraft/class_7534 net/minecraft/client/gui/screens/GenericWaitingScreen + f I a field_39541 TITLE_Y + f I b field_39542 MESSAGE_Y + f I c field_39543 MESSAGE_MAX_WIDTH + f Lwz; r field_39745 messageText + f Lwz; s field_39544 buttonLabel + f Ljava/lang/Runnable; u field_39545 buttonCallback + f Lfjf; v field_39546 message + f Lfim; w field_39547 button + f I x field_39746 disableButtonTicks + m (Lfim;)V a method_44689 method_44689 + m (Lwz;Lwz;Ljava/lang/Runnable;)Lfnp; a method_44690 createWaiting + m (Lwz;Lwz;Lwz;Ljava/lang/Runnable;)Lfnp; a method_44691 createCompleted + m (Lwz;Lwz;Lwz;Ljava/lang/Runnable;I)V +c fnq net/minecraft/class_423 net/minecraft/client/gui/screens/InBedChatScreen + f Lfim; c field_41710 leaveBedButton + m ()V C method_2180 sendWakeUp + m (Lfim;)V a method_19819 method_19819 + m ()V m method_38530 onPlayerWokeUp + m ()V +c fnr net/minecraft/class_3928 net/minecraft/client/gui/screens/LevelLoadingScreen + f J a field_32246 NARRATION_DELAY_MS + f Larh; b field_17406 progressListener + f J c field_19101 lastNarration + f Z r field_33810 done + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; s field_17407 COLORS + m (ILfhz;IIIIILarh;III)V a method_51767 method_51767 + m (Lfhz;Larh;IIII)V a method_17538 renderChunks + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)V a method_17537 method_17537 + m ()Lwz; m method_37057 getFormattedProgress + m (Larh;)V + m ()V +c fns net/minecraft/class_7413 net/minecraft/client/gui/screens/LoadingDotsText + f [Ljava/lang/String; a field_38992 FRAMES + f J b field_38993 INTERVAL_MS + m (J)Ljava/lang/String; a method_43449 get + m ()V + m ()V +c fnt net/minecraft/class_425 net/minecraft/client/gui/screens/LoadingOverlay + f J a field_32247 FADE_OUT_TIME + f J b field_32248 FADE_IN_TIME + f Lakr; c field_2483 MOJANG_STUDIOS_LOGO_LOCATION + f I d field_32249 LOGO_BACKGROUND_COLOR + f I e field_32250 LOGO_BACKGROUND_COLOR_DARK + f Ljava/util/function/IntSupplier; f field_25041 BRAND_BACKGROUND + f I g field_32251 LOGO_SCALE + f F h field_32252 LOGO_QUARTER_FLOAT + f I i field_32253 LOGO_QUARTER + f I j field_32254 LOGO_HALF + f F k field_32255 LOGO_OVERLAP + f F l field_32256 SMOOTHING + f Lfgo; m field_18217 minecraft + f Laua; n field_17767 reload + f Ljava/util/function/Consumer; o field_18218 onFinish + f Z p field_18219 fadeIn + f F q field_17770 currentProgress + f J r field_17771 fadeOutStart + f J s field_18220 fadeInStart + m (II)I a method_35732 replaceAlpha + m (Lfgo;)V a method_18819 registerTextures + m (Lfhz;IIIIF)V a method_18103 drawProgressBar + m ()I b method_35733 method_35733 + m (Lfgo;Laua;Ljava/util/function/Consumer;Z)V + m ()V +c fnt$a net/minecraft/class_425$class_4070 net/minecraft/client/gui/screens/LoadingOverlay$LogoTexture + m ()V +c fnu net/minecraft/class_3929 net/minecraft/client/gui/screens/MenuScreens + f Lorg/slf4j/Logger; a field_17408 LOGGER + f Ljava/util/Map; b field_17409 SCREENS + m ()Z a method_17539 selfTest + m (Lcrc;)Lfnu$a; a method_17540 getConstructor + m (Lcrc;Lfgo;ILwz;)V a method_17541 create + m (Lcrc;Lfnu$a;)V a method_17542 register + m ()V + m ()V +c fnu$a net/minecraft/class_3929$class_3930 net/minecraft/client/gui/screens/MenuScreens$ScreenConstructor + m (Lwz;Lcrc;Lfgo;I)V a method_17543 fromPacket +c fnv net/minecraft/class_8669 net/minecraft/client/gui/screens/NoticeWithLinkScreen + f Lwz; a field_45408 SYMLINK_WORLD_TITLE + f Lwz; b field_45409 SYMLINK_WORLD_MESSAGE_TEXT + f Lwz; c field_45410 SYMLINK_PACK_TITLE + f Lwz; r field_45411 SYMLINK_PACK_MESSAGE_TEXT + f Lwz; s field_45412 message + f Ljava/net/URI; u field_45413 uri + f Ljava/lang/Runnable; v field_46861 onClose + f Lfly; w field_45415 layout + m (Lfim;)V a method_52747 method_52747 + m (Ljava/lang/Runnable;)Lfod; a method_52748 createWorldSymlinkWarningScreen + m (Lfim;)V b method_52749 method_52749 + m (Ljava/lang/Runnable;)Lfod; b method_52750 createPackSymlinkWarningScreen + m (Lfim;)V c method_52751 method_52751 + m (Lwz;Lwz;Ljava/net/URI;Ljava/lang/Runnable;)V + m ()V +c fnw net/minecraft/class_428 net/minecraft/client/gui/screens/OutOfMemoryScreen + f Lwz; a field_49504 TITLE + f Lwz; b field_49505 MESSAGE + f I c field_49506 MESSAGE_WIDTH + f Lflz; r field_49507 layout + m (Lfim;)V a method_19834 method_19834 + m (Lfim;)V b method_19835 method_19835 + m ()V + m ()V +c fnx net/minecraft/class_4071 net/minecraft/client/gui/screens/Overlay + m ()Z a method_18640 isPauseScreen + m ()V +c fny net/minecraft/class_433 net/minecraft/client/gui/screens/PauseScreen + f Lwz; A field_52133 FEEDBACK_SUBSCREEN + f Lwz; B field_52132 SERVER_LINKS + f Lwz; C field_41626 OPTIONS + f Lwz; D field_41627 SHARE_TO_LAN + f Lwz; E field_41628 PLAYER_REPORTING + f Lwz; F field_41611 RETURN_TO_MENU + f Lwz; G field_41613 SAVING_LEVEL + f Lwz; H field_41614 GAME + f Lwz; I field_41615 PAUSED + f Z J field_19319 showPauseMenu + f Lfim; K field_40792 disconnectButton + f Lakr; a field_45416 DRAFT_REPORT_SPRITE + f I b field_41616 COLUMNS + f I c field_41617 MENU_PADDING_TOP + f I r field_41618 BUTTON_PADDING + f I s field_41619 BUTTON_WIDTH_FULL + f I u field_41620 BUTTON_WIDTH_HALF + f Lwz; v field_41621 RETURN_TO_GAME + f Lwz; w field_41622 ADVANCEMENTS + f Lwz; x field_41623 STATS + f Lwz; y field_41624 SEND_FEEDBACK + f Lwz; z field_41625 REPORT_BUGS + m ()V C method_20543 createPauseMenu + m ()V D method_47632 onDisconnect + m ()Lfod; E method_57733 method_57733 + m ()Lfod; F method_47902 method_47902 + m ()Lfod; G method_47903 method_47903 + m ()Lfod; J method_60871 method_60871 + m ()Lfod; K method_47904 method_47904 + m ()Lfod; L method_47896 method_47896 + m (Lalj;)Lfod; a method_60872 method_60872 + m (Lfim;)V a method_19836 method_19836 + m (Lfod;Lfly$b;)V a method_60873 addFeedbackButtons + m (Lfod;Lwz;Ljava/net/URI;)Lfim; a method_47899 openLinkButton + m (Ljava/util/function/Supplier;Lfim;)V a method_47898 method_47898 + m (Lwz;Ljava/util/function/Supplier;)Lfim; a method_47900 openScreenButton + m (Lfim;)V b method_19845 method_19845 + m ()Z m method_53558 showsPauseMenu + m (Z)V + m ()V +c fny$a net/minecraft/class_433$class_9804 net/minecraft/client/gui/screens/PauseScreen$FeedbackSubScreen + f Lfod; a field_52134 parent + f Lwz; b field_52135 TITLE + f Lflz; c field_52136 layout + m (Lfim;)V a method_60874 method_60874 + m (Lfod;)V + m ()V +c fnz net/minecraft/class_430 net/minecraft/client/gui/screens/PresetFlatWorldScreen + f Lwz; A field_2520 shareText + f Lwz; B field_2524 listText + f Lfnz$a; C field_2521 list + f Lfim; D field_2525 selectButton + f Lfiv; E field_2523 export + f Leht; F field_25044 settings + f Lwz; a field_37908 UNKNOWN_PRESET + f Lakr; b field_45417 SLOT_SPRITE + f Lorg/slf4j/Logger; c field_25043 LOGGER + f I r field_32264 SLOT_BG_SIZE + f I s field_32265 SLOT_STAT_HEIGHT + f I u field_32266 SLOT_BG_X + f I v field_32267 SLOT_BG_Y + f I w field_32268 SLOT_FG_X + f I x field_32269 SLOT_FG_Y + f Lakq; y field_27985 DEFAULT_BIOME + f Lfne; z field_2519 parent + m (Lakr;)Lakq; a method_29061 method_29061 + m (Leht;)Ljava/lang/String; a method_29062 save + m (Lfim;)V a method_19846 method_19846 + m (Ljava/lang/String;Ljm$c;)Ljm$c; a method_46741 method_46741 + m (Ljn;Ljava/lang/String;)Ljava/util/List; a method_29058 getLayersInfoFromString + m (Ljn;Ljava/lang/String;I)Lehq; a method_29059 getLayerInfoFromString + m (Ljn;Ljn;Ljn;Ljn;Lfim;)V a method_19847 method_19847 + m (Ljn;Ljn;Ljn;Ljn;Ljava/lang/String;Leht;)Leht; a method_29060 fromString + m (Z)V c method_20102 updateButtonValidity + m ()Ljava/lang/IllegalStateException; m method_40208 method_40208 + m (Lfne;)V + m ()V +c fnz$a net/minecraft/class_430$class_4196 net/minecraft/client/gui/screens/PresetFlatWorldScreen$PresetsList + f Lfnz; a field_18747 field_18747 + m (Lakq;)Ljava/lang/String; a method_47409 method_47409 + m (Lcpl;Ldfy;)Z a method_47410 method_47410 + m (Lehq;)Ldfy; a method_47411 method_47411 + m (Lfnz$a$a;)V a method_20103 setSelected + m (Lfnz;Lka;Lcpl;)V +c fnz$a$a net/minecraft/class_430$class_4196$class_432 net/minecraft/client/gui/screens/PresetFlatWorldScreen$PresetsList$Entry + f Lfnz$a; a field_2532 field_2532 + f Lakr; b field_44668 STATS_ICON_LOCATION + f Lehr; c field_33812 preset + f Lwz; d field_37909 name + m (Lakq;)Lwz; a method_41842 method_41842 + m (Lfhz;II)V a method_2198 blitSlotBg + m (Lfhz;IILcul;)V a method_2200 blitSlot + m ()V b method_19389 select + m (Lfnz$a;Ljm;)V + m ()V +c foa net/minecraft/class_435 net/minecraft/client/gui/screens/ProgressScreen + f Lwz; a field_2541 header + f Lwz; b field_2544 stage + f I c field_2542 progress + f Z r field_2543 stop + f Z s field_33625 clearScreenAfterStop + m (Z)V +c fob net/minecraft/class_434 net/minecraft/client/gui/screens/ReceivingLevelScreen + f Lwz; a field_26544 DOWNLOADING_TERRAIN_TEXT + f J b field_36365 CHUNK_LOADING_START_WAIT_LIMIT_MS + f J c field_36368 createdAt + f Ljava/util/function/BooleanSupplier; r field_46575 levelReceived + f Lfob$a; s field_51485 reason + f Lgql; u field_51486 cachedNetherPortalSprite + m ()Lgql; m method_59838 getNetherPortalSprite + m (Ljava/util/function/BooleanSupplier;Lfob$a;)V + m ()V +c fob$a net/minecraft/class_434$class_9678 net/minecraft/client/gui/screens/ReceivingLevelScreen$Reason + f Lfob$a; a field_51487 NETHER_PORTAL + f Lfob$a; b field_51488 END_PORTAL + f Lfob$a; c field_51489 OTHER + f [Lfob$a; d field_51490 $VALUES + m ()[Lfob$a; a method_59839 $values + m (Ljava/lang/String;I)V + m ()V +c foc net/minecraft/class_8897 net/minecraft/client/gui/screens/RecoverWorldDataScreen + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; A field_46873 callback + f Lfmd; B field_46874 layout + f Lwz; C field_46875 message + f Lfjg; D field_46876 messageWidget + f Lfjg; E field_46877 issuesWidget + f Lerf$c; F field_46878 storageAccess + f Lorg/slf4j/Logger; a field_46862 LOGGER + f I b field_46863 SCREEN_SIDE_MARGIN + f Lwz; c field_46864 TITLE + f Lwz; r field_46865 BUGTRACKER_BUTTON + f Lwz; s field_46866 RESTORE_BUTTON + f Lwz; u field_46867 NO_FALLBACK_TOOLTIP + f Lwz; v field_46868 DONE_TITLE + f Lwz; w field_46869 DONE_SUCCESS + f Lwz; x field_46870 DONE_FAILED + f Lwz; y field_46871 NO_ISSUES + f Lwz; z field_46872 MISSING_FILE + m ()V C method_54582 method_54582 + m (Lerf$c;Z)Ljava/lang/Exception; a method_54583 collectIssue + m (Lerf$c;ZLjava/lang/Exception;)Lwz; a method_54584 buildInfo + m (Lfgo;)V a method_54585 attemptRestore + m (Lfgo;Lfim;)V a method_54586 method_54586 + m (Lfim;)V a method_54587 method_54587 + m ()V m method_54588 method_54588 + m (Lfgo;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lerf$c;)V + m ()V +c fod net/minecraft/class_437 net/minecraft/client/gui/screens/Screen + f J A field_33821 NARRATE_DELAY_KEYBOARD_ACTION + f Lfml; B field_33822 narrationState + f J C field_33823 narrationSuppressTime + f J D field_33824 nextNarrationTime + f Lfmg; E field_33813 lastNarratable + f Lfod$a; F field_41685 deferredTooltipRendering + f Lorg/slf4j/Logger; a field_22782 LOGGER + f Lwz; b field_33814 USAGE_NARRATION + f Lakr; c field_49894 INWORLD_MENU_BACKGROUND + f Lgen; d field_49508 CUBE_MAP + f Lgfb; e field_49509 PANORAMA + f Lakr; f field_49511 MENU_BACKGROUND + f Lakr; g field_49895 HEADER_SEPARATOR + f Lakr; h field_49896 FOOTER_SEPARATOR + f Lakr; i field_49897 INWORLD_HEADER_SEPARATOR + f Lakr; j field_49898 INWORLD_FOOTER_SEPARATOR + f Lwz; k field_22785 title + f Lfgo; l field_22787 minecraft + f I m field_22789 width + f I n field_22790 height + f Lfhx; o field_22793 font + f Lfit; p field_52252 narratorButton + f Ljava/util/concurrent/Executor; q field_44944 screenExecutor + f Ljava/util/List; r field_22786 children + f Ljava/util/List; s field_33815 narratables + f Z u field_42156 initialized + f Ljava/util/List; v field_33816 renderables + f J w field_33817 NARRATE_SUPPRESS_AFTER_INIT_TIME + f J x field_33818 NARRATE_DELAY_NARRATOR_ENABLED + f J y field_33819 NARRATE_DELAY_MOUSE_MOVE + f J z field_33820 NARRATE_DELAY_MOUSE_ACTION + m ()V A method_59840 clearTooltipForNextRenderPass + m ()Lavm; B method_50024 getBackgroundMusic + m ()Z C method_37073 shouldRunNarration + m (F)V a method_57734 renderBlurredBackground + m (J)V a method_37058 suppressNarration + m (JZ)V a method_37059 scheduleNarration + m (Lfgo;II)V a method_25410 resize + m (Lfgo;Lcuq;)Ljava/util/List; a method_25408 getTooltipFromItem + m (Lfhw;)V a method_48263 changeFocus + m (Lfhz;)V a method_57735 renderMenuBackground + m (Lfhz;F)V a method_57728 renderPanorama + m (Lfhz;IIII)V a method_57736 renderMenuBackground + m (Lfhz;Lakr;IIFFII)V a method_57737 renderMenuBackgroundTexture + m (Lfjp;)Lfjp; a method_37060 addRenderableOnly + m (Lfjx;Lfqo;Z)V a method_47412 setTooltipForNextRenderPass + m (Lfmi;)V a method_37062 updateNarrationState + m (Lfmq;)Lfmo$a; a method_48264 createArrowEvent + m (Ljava/lang/Runnable;)V a method_52221 method_52221 + m (Ljava/lang/Runnable;Ljava/lang/String;Ljava/lang/String;)V a method_25412 wrapScreenError + m (Ljava/lang/String;)Ljava/lang/String; a method_25413 method_25413 + m (Ljava/lang/String;CI)Z a method_25414 isValidCharacterForName + m (Ljava/net/URI;Z)V a method_61039 method_61039 + m (Ljava/util/List;)V a method_29638 onFilesDrop + m (Ljava/util/List;Lfmg;)Lfod$b; a method_37061 findNarratableWidget + m (Ljava/util/List;Lfqo;Z)V a method_47942 setTooltipForNextRenderPass + m (Lxw;)Z a method_25430 handleComponentClicked + m ()V aI_ method_56131 setInitialFocus + m ()Z aJ_ method_25422 shouldCloseOnEsc + m ()V aL_ method_49589 added + m ()Z aS_ method_48262 shouldNarrateNavigation + m ()V aT_ method_25426 init + m (Ljava/lang/String;Z)V a_ method_25415 insertText + m (Lfgo;II)V b method_25423 init + m (Lfhz;)V b method_52752 renderTransparentBackground + m (Lfhz;IIF)V b method_25420 renderBackground + m (Lfki;)V b method_48265 setInitialFocus + m (Lfmi;)V b method_37056 updateNarratedWidget + m (Ljava/lang/Runnable;)V b method_52222 method_52222 + m (Ljava/util/List;)V b method_47414 setTooltipForNextRenderPass + m ()V c method_48640 repositionElements + m (I)Z c method_25436 isCut + m (Lfhz;IIF)V c method_47413 renderWithTooltip + m (Lfki;)Lfki; c method_37063 addRenderableWidget + m (Z)V c method_37065 runNarration + m ()V d method_25419 onClose + m (I)Z d method_25437 isPaste + m (Lfki;)Lfki; d method_25429 addWidget + m (Lwz;)V d method_47415 setTooltipForNextRenderPass + m (Z)V d method_37064 triggerImmediateNarration + m ()V e method_25393 tick + m (I)Z e method_25438 isCopy + m (Lfki;)V e method_37066 removeWidget + m (Z)V e method_61040 updateNarratorStatus + m (I)Z f method_25439 isSelectAll + m ()Lwz; i method_25435 getNarrationMessage + m ()V j method_25432 removed + m ()Z k method_25421 isPauseScreen + m ()Lfmo$c; m method_48266 createTabEvent + m ()Lwz; n method_25440 getTitle + m ()V o method_48267 clearFocus + m ()V p method_37067 clearWidgets + m ()V q method_41843 rebuildWidgets + m ()Z r method_25441 hasControlDown + m ()Z s method_25442 hasShiftDown + m ()Z t method_25443 hasAltDown + m ()V u method_37068 afterMouseMove + m ()V v method_37069 afterMouseAction + m ()V x method_37070 afterKeyboardAction + m ()V y method_37071 handleDelayedNarration + m ()Lwz; z method_53870 getUsageNarration + m (Lwz;)V + m ()V +c fod$a net/minecraft/class_437$class_7998 net/minecraft/client/gui/screens/Screen$DeferredTooltipRendering + f Ljava/util/List; a comp_1183 tooltip + f Lfqo; b comp_1184 positioner + m ()Ljava/util/List; a comp_1183 tooltip + m ()Lfqo; b comp_1184 positioner + m (Ljava/util/List;Lfqo;)V +c fod$b net/minecraft/class_437$class_6390 net/minecraft/client/gui/screens/Screen$NarratableSearchResult + f Lfmg; a field_33825 entry + f I b field_33826 index + f Lfmg$a; c field_33827 priority + m (Lfmg;ILfmg$a;)V +c foe net/minecraft/class_436 net/minecraft/client/gui/screens/ShareToLanScreen + f Z A field_2546 commands + f I B field_41110 port + f Lfiv; C field_41111 portEdit + f I a field_41629 PORT_LOWER_BOUND + f I b field_41630 PORT_HIGHER_BOUND + f Lwz; c field_25889 ALLOW_COMMANDS_LABEL + f Lwz; r field_25890 GAME_MODE_LABEL + f Lwz; s field_26545 INFO_TEXT + f Lwz; u field_41108 PORT_INFO_TEXT + f Lwz; v field_41106 PORT_UNAVAILABLE + f Lwz; w field_41109 INVALID_PORT + f I x field_41107 INVALID_PORT_COLOR + f Lfod; y field_2548 lastScreen + f Ldct; z field_2545 gameMode + m (Lfim;)V a method_19850 method_19850 + m (Lfim;Ljava/lang/String;)V a method_47416 method_47416 + m (Lfit;Ldct;)V a method_32638 method_32638 + m (Lfit;Ljava/lang/Boolean;)V a method_32639 method_32639 + m (Lguo;Lfim;)V a method_19851 method_19851 + m (Ljava/lang/String;)Lwz; a method_47417 tryParsePort + m (Lfod;)V + m ()V +c fof net/minecraft/class_442 net/minecraft/client/gui/screens/TitleScreen + f Lfjd; A field_41847 logoRenderer + f Lorg/slf4j/Logger; a field_23775 LOGGER + f Lwz; b field_47850 TITLE + f Lwz; c field_32271 COPYRIGHT_TEXT + f Ljava/lang/String; r field_32272 DEMO_LEVEL_ID + f F s field_49900 FADE_IN_TIME + f Lfjq; u field_2586 splash + f Lfim; v field_2590 resetDemoButton + f Lfef; w field_2592 realmsNotificationsScreen + f F x field_49514 panoramaFade + f Z y field_18222 fading + f J z field_17772 fadeInStart + m ()Lwz; C method_44692 getMultiplayerDisabledReason + m ()Z D method_31129 checkDemoWorldPresence + m ()V E method_54589 method_54589 + m ()Lfjd; F method_48268 method_48268 + m (II)V a method_2249 createNormalMenuOptions + m (Lfim;)V a method_19857 method_19857 + m (Lgqm;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_18105 preloadResources + m (ZLfim;)V a method_19858 method_19858 + m (F)V b method_59752 fadeWidgets + m (II)V b method_2251 createDemoMenuOptions + m (Lfim;)V b method_55814 method_55814 + m (Lfim;)V c method_19860 method_19860 + m (Z)V c method_20375 confirmDemo + m (Lfim;)V d method_19861 method_19861 + m (Lfim;)V e method_41198 method_41198 + m (Lfim;)V f method_20109 method_20109 + m (Lfim;)V g method_19862 method_19862 + m (Lfim;)V h method_19863 method_19863 + m (Lfim;)V i method_19864 method_19864 + m ()Z m method_2253 realmsNotificationsEnabled + m ()V + m (Z)V + m (ZLfjd;)V + m ()V +c fog net/minecraft/class_445 net/minecraft/client/gui/screens/WinScreen + f Ljava/lang/Runnable; A field_2630 onFinished + f F B field_2628 scroll + f Ljava/util/List; C field_2634 lines + f Lit/unimi/dsi/fastutil/ints/IntSet; D field_24261 centeredLines + f I E field_2629 totalScrollLength + f Z F field_34010 speedupActive + f Lit/unimi/dsi/fastutil/ints/IntSet; G field_34011 speedupModifiers + f F H field_2635 scrollSpeed + f F I field_33954 unmodifiedScrollSpeed + f I J field_44778 direction + f Lfjd; K field_41848 logoRenderer + f Lorg/slf4j/Logger; a field_2632 LOGGER + f Lakr; b field_2633 VIGNETTE_LOCATION + f Lwz; c field_33955 SECTION_HEADING + f Ljava/lang/String; r field_32273 NAME_PREFIX + f Ljava/lang/String; s field_24260 OBFUSCATE_TOKEN + f F u field_33957 SPEEDUP_FACTOR + f F v field_34012 SPEEDUP_FACTOR_FAST + f Lakr; w field_52137 END_POEM_LOCATION + f Lakr; x field_52138 CREDITS_LOCATION + f Lakr; y field_52139 POSTCREDITS_LOCATION + f Z z field_2627 poem + m ()V C method_2257 respawn + m ()V D method_37306 addEmptyLine + m (Lakr;Lfog$a;)V a method_39775 wrapCreditsIO + m (Ljava/io/Reader;)V a method_39774 addPoemFile + m (Ljava/lang/String;)V a method_37305 addPoemLines + m (Lwz;Z)V a method_37304 addCreditsLine + m (Ljava/io/Reader;)V b method_39776 addCreditsFile + m (Lfhz;)V c method_57738 renderVignette + m ()F m method_37369 calculateScrollSpeed + m (ZLjava/lang/Runnable;)V + m ()V +c fog$a net/minecraft/class_445$class_6824 net/minecraft/client/gui/screens/WinScreen$CreditsReader +c foh net/minecraft/class_447 net/minecraft/client/gui/screens/achievement/StatsScreen + f I A field_49520 LIST_WIDTH + f I B field_49521 PADDING + f I C field_49522 FOOTER_HEIGHT + f Lflz; D field_49523 layout + f Lfoh$a; E field_2644 statsList + f Lfoh$b; F field_2642 itemStatsList + f Lfoh$c; G field_2646 mobsStatsList + f Lawa; H field_2647 stats + f Lfji; I field_2643 activeList + f Z J field_2645 isLoading + f Lfod; a field_2648 lastScreen + f Lwz; b field_49516 TITLE + f Lakr; c field_45418 SLOT_SPRITE + f Lakr; r field_45419 HEADER_SPRITE + f Lakr; s field_45420 SORT_UP_SPRITE + f Lakr; u field_45421 SORT_DOWN_SPRITE + f Lwz; v field_26546 PENDING_TEXT + f Lwz; w field_46185 NO_VALUE_DISPLAY + f Lwz; x field_49517 GENERAL_BUTTON + f Lwz; y field_49518 ITEMS_BUTTON + f Lwz; z field_49519 MOBS_BUTTON + m ()V C method_2267 initButtons + m ()V D method_2300 onStatsUpdated + m (Lavw;)Ljava/lang/String; a method_27027 getTranslationKey + m (Lfim;)V a method_19869 method_19869 + m (Lfji;)V a method_19390 setActiveList + m (Lfoh;)Lfhx; a method_36880 method_36880 + m (Lfoh;Lfki;)V a method_57739 method_57739 + m (Lfim;)V b method_19866 method_19866 + m (Lfoh;)Lfhx; b method_36881 method_36881 + m (Lfim;)V c method_19867 method_19867 + m (Lfoh;)Lfhx; c method_19391 method_19391 + m (Lfim;)V d method_19868 method_19868 + m (Lfoh;)Lfhx; d method_36882 method_36882 + m (Lfoh;)Lfhx; e method_19392 method_19392 + m (Lfoh;)Lfhx; f method_19393 method_19393 + m (Lfoh;)Lfhx; g method_19396 method_19396 + m (Lfoh;)Lfhx; h method_19398 method_19398 + m (Lfoh;)Lfhx; i method_19400 method_19400 + m (Lfoh;)Lfhx; j method_19401 method_19401 + m (Lfoh;)Lfhx; k method_19394 method_19394 + m (Lfoh;)Lfhx; l method_19395 method_19395 + m ()V m method_2270 initLists + m (Lfoh;)Lfhx; m method_19402 method_19402 + m (Lfoh;)Lfhx; n method_57740 method_57740 + m (Lfoh;)Lfhx; o method_57741 method_57741 + m (Lfoh;)Lfhx; p method_58231 method_58231 + m (Lfod;Lawa;)V + m ()V +c foh$a net/minecraft/class_447$class_4198 net/minecraft/client/gui/screens/achievement/StatsScreen$GeneralStatisticsList + f Lfoh; a field_18750 field_18750 + m (Lavw;)Ljava/lang/String; a method_27028 method_27028 + m (Lfoh;Lfgo;)V +c foh$a$a net/minecraft/class_447$class_4198$class_4197 net/minecraft/client/gui/screens/achievement/StatsScreen$GeneralStatisticsList$Entry + f Lfoh$a; a field_18748 field_18748 + f Lavw; b field_18749 stat + f Lwz; c field_26547 statDisplay + m ()Ljava/lang/String; b method_37074 getValueText + m (Lfoh$a;Lavw;)V +c foh$b net/minecraft/class_447$class_4200 net/minecraft/client/gui/screens/achievement/StatsScreen$ItemStatisticsList + f Ljava/util/List; a field_18754 blockColumns + f Ljava/util/List; m field_18755 itemColumns + f Ljava/util/Comparator; n field_18758 itemStatSorter + f Lavy; o field_18759 sortColumn + f I p field_18756 headerPressed + f I q field_18760 sortOrder + f Lfoh; r field_18752 field_18752 + f I s field_49524 SLOT_BG_SIZE + f I u field_49525 SLOT_STAT_HEIGHT + f I v field_49526 SLOT_BG_Y + f I w field_49527 SORT_NONE + f I x field_49528 SORT_DOWN + f I y field_49529 SORT_UP + f [Lakr; z field_45422 iconSprites + m (I)I a method_57742 getColumnX + m (Lavy;)V a method_19408 sortByColumn + m (I)Lavy; b method_19410 getColumn + m (Lavy;)I b method_19409 getColumnIndex + m (Lfoh;Lfgo;)V +c foh$b$a net/minecraft/class_447$class_4200$class_4199 net/minecraft/client/gui/screens/achievement/StatsScreen$ItemStatisticsList$ItemRow + f Lfoh$b; a field_18751 field_18751 + f Lcul; b field_33830 item + m (Lfhz;Lavw;IIZ)V a method_19405 renderStat + m ()Lcul; b method_37307 getItem + m (Lfoh$b;Lcul;)V +c foh$b$b net/minecraft/class_447$class_4200$class_450 net/minecraft/client/gui/screens/achievement/StatsScreen$ItemStatisticsList$ItemRowComparator + f Lfoh$b; a field_2662 field_2662 + m (Lfoh$b$a;Lfoh$b$a;)I a method_2297 compare + m (Lfoh$b;)V +c foh$c net/minecraft/class_447$class_4202 net/minecraft/client/gui/screens/achievement/StatsScreen$MobsStatisticsList + f Lfoh; a field_18763 field_18763 + m (Lfoh;Lfgo;)V +c foh$c$a net/minecraft/class_447$class_4202$class_4201 net/minecraft/client/gui/screens/achievement/StatsScreen$MobsStatisticsList$MobRow + f Lfoh$c; a field_18761 field_18761 + f Lwz; b field_26548 mobName + f Lwz; c field_26549 kills + f Lwz; d field_26551 killedBy + f Z e field_26550 hasKills + f Z f field_26552 wasKilledBy + m (Lfoh$c;Lbsx;)V +c foi net/minecraft/class_6213 net/minecraft/client/gui/screens/achievement/package-info +c foj net/minecraft/class_454 net/minecraft/client/gui/screens/advancements/AdvancementTab + f Lfgo; a field_2680 minecraft + f Lfon; b field_2687 screen + f Lfok; c field_2684 type + f I d field_2681 index + f Lah; e field_46142 rootNode + f Las; f field_2695 display + f Lcuq; g field_2697 icon + f Lwz; h field_2686 title + f Lfol; i field_2696 root + f Ljava/util/Map; j field_2685 widgets + f D k field_2690 scrollX + f D l field_2689 scrollY + f I m field_2694 minX + f I n field_2693 minY + f I o field_2692 maxX + f I p field_2691 maxY + f F q field_2688 fade + f Z r field_2683 centered + m ()Lfok; a method_35734 getType + m (DD)V a method_2313 scroll + m (IIDD)Z a method_2316 isMouseOver + m (Lag;)Lfol; a method_2308 getWidget + m (Lah;)V a method_2318 addAdvancement + m (Lfgo;Lfon;ILah;)Lfoj; a method_2317 create + m (Lfhz;II)V a method_2315 drawIcon + m (Lfhz;IIII)V a method_2314 drawTooltips + m (Lfhz;IIZ)V a method_2311 drawTab + m (Lfol;Lag;)V a method_2319 addWidget + m ()I b method_35735 getIndex + m (Lfhz;II)V b method_2310 drawContents + m ()Lah; c method_53813 getRootNode + m ()Lwz; d method_2309 getTitle + m ()Las; e method_35736 getDisplay + m ()Lfon; f method_2312 getScreen + m (Lfgo;Lfon;Lfok;ILah;Las;)V +c fok net/minecraft/class_453 net/minecraft/client/gui/screens/advancements/AdvancementTabType + f Lfok; a field_2678 ABOVE + f Lfok; b field_2673 BELOW + f Lfok; c field_2675 LEFT + f Lfok; d field_2677 RIGHT + f Lfok$a; e field_45423 selectedSprites + f Lfok$a; f field_45424 unselectedSprites + f I g field_2671 width + f I h field_2670 height + f I i field_2669 max + f [Lfok; j field_2676 $VALUES + m ()I a method_2304 getMax + m (I)I a method_2302 getX + m (IIIDD)Z a method_2303 isMouseOver + m (Lfhz;IIILcuq;)V a method_2306 drawIcon + m (Lfhz;IIZI)V a method_2301 draw + m ()[Lfok; b method_36883 $values + m (I)I b method_2305 getY + m (Ljava/lang/String;ILfok$a;Lfok$a;III)V + m ()V +c fok$a net/minecraft/class_453$class_8670 net/minecraft/client/gui/screens/advancements/AdvancementTabType$Sprites + f Lakr; a comp_1608 first + f Lakr; b comp_1609 middle + f Lakr; c comp_1610 last + m ()Lakr; a comp_1608 first + m ()Lakr; b comp_1609 middle + m ()Lakr; c comp_1610 last + m (Lakr;Lakr;Lakr;)V +c fol net/minecraft/class_456 net/minecraft/client/gui/screens/advancements/AdvancementWidget + f Lakr; a field_45425 TITLE_BOX_SPRITE + f I b field_32286 HEIGHT + f I c field_32287 BOX_X + f I d field_32288 BOX_WIDTH + f I e field_32289 FRAME_WIDTH + f I f field_32290 ICON_X + f I g field_32291 ICON_Y + f I h field_32292 ICON_WIDTH + f I i field_32293 TITLE_PADDING_LEFT + f I j field_32294 TITLE_PADDING_RIGHT + f I k field_32295 TITLE_X + f I l field_32296 TITLE_Y + f I m field_32297 TITLE_MAX_WIDTH + f [I n field_24262 TEST_SPLIT_OFFSETS + f Lfoj; o field_2703 tab + f Lah; p field_46143 advancementNode + f Las; q field_2712 display + f Laya; r field_2713 title + f I s field_2715 width + f Ljava/util/List; t field_2705 description + f Lfgo; u field_2704 minecraft + f Lfol; v field_2706 parent + f Ljava/util/List; w field_2707 children + f Lai; x field_2714 progress + f I y field_2711 x + f I z field_2710 y + m ()I a method_35737 getWidth + m (IIII)Z a method_2329 isMouseOver + m (Lah;)Lfol; a method_2328 getFirstVisibleParent + m (Lai;)V a method_2333 setProgress + m (Lfgz;Ljava/util/List;)F a method_27572 getMaxWidth + m (Lfhz;II)V a method_2325 draw + m (Lfhz;IIFII)V a method_2331 drawHover + m (Lfhz;IIZ)V a method_2323 drawConnectivity + m (Lfol;)V a method_2322 addChild + m (Lwz;I)Ljava/util/List; a method_2330 findOptimalLines + m ()V b method_2332 attachToParent + m ()I c method_2326 getY + m ()I d method_2327 getX + m ()I e method_61041 getMaxProgressWidth + m (Lfoj;Lfgo;Lah;Las;)V + m ()V +c fom net/minecraft/class_455 net/minecraft/client/gui/screens/advancements/AdvancementWidgetType + f Lfom; a field_2701 OBTAINED + f Lfom; b field_2699 UNOBTAINED + f Lakr; c field_45426 boxSprite + f Lakr; d field_45427 taskFrameSprite + f Lakr; e field_45428 challengeFrameSprite + f Lakr; f field_45429 goalFrameSprite + f [Lfom; g field_2698 $VALUES + m ()Lakr; a method_52753 boxSprite + m (Lam;)Lakr; a method_52754 frameSprite + m ()[Lfom; b method_36884 $values + m (Ljava/lang/String;ILakr;Lakr;Lakr;Lakr;)V + m ()V +c fom$1 net/minecraft/class_455$1 net/minecraft/client/gui/screens/advancements/AdvancementWidgetType$1 + f [I a field_45430 $SwitchMap$net$minecraft$advancements$AdvancementType + m ()V +c fon net/minecraft/class_457 net/minecraft/client/gui/screens/advancements/AdvancementsScreen + f I A field_32308 WINDOW_TITLE_X + f I B field_32309 WINDOW_TITLE_Y + f D C field_45431 SCROLL_SPEED + f Lwz; D field_26553 VERY_SAD_LABEL + f Lwz; E field_26554 NO_ADVANCEMENTS_LABEL + f Lwz; F field_26555 TITLE + f Lflz; G field_49530 layout + f Lfod; H field_49531 lastScreen + f Lfza; I field_2721 advancements + f Ljava/util/Map; J field_2719 tabs + f Lfoj; K field_2720 selectedTab + f Z L field_2718 isScrolling + f I a field_32298 WINDOW_WIDTH + f I b field_32299 WINDOW_HEIGHT + f I c field_32300 WINDOW_INSIDE_WIDTH + f I r field_32301 WINDOW_INSIDE_HEIGHT + f I s field_32302 BACKGROUND_TILE_WIDTH + f I u field_32303 BACKGROUND_TILE_HEIGHT + f I v field_32304 BACKGROUND_TILE_COUNT_X + f I w field_32305 BACKGROUND_TILE_COUNT_Y + f Lakr; x field_2717 WINDOW_LOCATION + f I y field_32306 WINDOW_INSIDE_X + f I z field_32307 WINDOW_INSIDE_Y + m (Lfhz;II)V a method_2334 renderWindow + m (Lfim;)V a method_57743 method_57743 + m (Lfon;Lfki;)V a method_57744 method_57744 + m (Lfhz;IIII)V b method_2337 renderInside + m (Lfhz;IIII)V c method_2338 renderTooltips + m (Lah;)Lfol; e method_2335 getAdvancementWidget + m (Lah;)Lfoj; f method_2336 getTab + m (Lfza;)V + m (Lfza;Lfod;)V + m ()V +c foo net/minecraft/class_6214 net/minecraft/client/gui/screens/advancements/package-info +c fop net/minecraft/class_5289 net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen + f Lfop$a; A field_24568 previousHovered + f Lfop$a; B field_24569 currentlyHovered + f I C field_24570 firstMouseX + f I D field_24571 firstMouseY + f Z E field_24572 setFirstMousePos + f Ljava/util/List; F field_24573 slots + f Lakr; a field_45432 SLOT_SPRITE + f Lakr; b field_45433 SELECTION_SPRITE + f Lakr; c field_24566 GAMEMODE_SWITCHER_LOCATION + f I r field_32310 SPRITE_SHEET_WIDTH + f I s field_32311 SPRITE_SHEET_HEIGHT + f I u field_32312 SLOT_AREA + f I v field_32313 SLOT_PADDING + f I w field_32314 SLOT_AREA_PADDED + f I x field_32315 HELP_TIPS_OFFSET_Y + f I y field_24567 ALL_SLOTS_WIDTH + f Lwz; z field_25454 SELECT_KEY + m ()V C method_28068 switchToHoveredGameMode + m ()Z D method_28069 checkToClose + m (Lfgo;Lfop$a;)V a method_28064 switchToHoveredGameMode + m ()Ldct; m method_30106 getDefaultSelected + m ()V + m ()V +c fop$1 net/minecraft/class_5289$1 net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen$1 + f [I a field_24575 $SwitchMap$net$minecraft$world$level$GameType + m ()V +c fop$a net/minecraft/class_5289$class_5290 net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen$GameModeIcon + f Lfop$a; a field_24576 CREATIVE + f Lfop$a; b field_24577 SURVIVAL + f Lfop$a; c field_24578 ADVENTURE + f Lfop$a; d field_24579 SPECTATOR + f [Lfop$a; e field_24580 VALUES + f I f field_32316 ICON_TOP_LEFT + f Lwz; g field_24581 name + f Ljava/lang/String; h field_24582 command + f Lcuq; i field_24583 renderStack + f I j field_32317 ICON_AREA + f [Lfop$a; k field_24584 $VALUES + m ()Lwz; a method_28070 getName + m (Ldct;)Lfop$a; a method_28076 getFromGameType + m (Lfhz;II)V a method_28074 drawIcon + m ()Ljava/lang/String; b method_28075 getCommand + m ()Lfop$a; c method_28078 getNext + m ()[Lfop$a; d method_36886 $values + m (Ljava/lang/String;ILwz;Ljava/lang/String;Lcuq;)V + m ()V +c fop$b net/minecraft/class_5289$class_5291 net/minecraft/client/gui/screens/debug/GameModeSwitcherScreen$GameModeSlot + f Lfop$a; a field_24586 icon + f Z b field_24587 isSelected + m (Lfhz;)V a method_28080 drawSlot + m (Lfhz;)V b method_28082 drawSelection + m (Z)V b method_28083 setSelected + m (Lfop;Lfop$a;II)V +c foq net/minecraft/class_6391 net/minecraft/client/gui/screens/debug/package-info +c fos net/minecraft/class_463 net/minecraft/client/gui/screens/inventory/AbstractCommandBlockEditScreen + f Lfiv; a field_2751 commandEdit + f Lfiv; b field_2755 previousEdit + f Lfim; c field_2762 doneButton + f Lfim; r field_2753 cancelButton + f Lfit; s field_2760 outputButton + f Lwz; u field_26556 SET_COMMAND_LABEL + f Lwz; v field_26557 COMMAND_LABEL + f Lwz; w field_26558 PREVIOUS_OUTPUT_LABEL + f Lfip; x field_21617 commandSuggestions + m ()I C method_2364 getPreviousY + m ()V D method_2359 onDone + m (Ldbx;)V a method_2352 populateAndSendPacket + m (Lfim;)V a method_19875 method_19875 + m (Lfit;Ljava/lang/Boolean;)V a method_32641 method_32641 + m (Ljava/lang/String;)V a method_2360 onEdited + m (Lfim;)V b method_19876 method_19876 + m (Z)V c method_32642 updatePreviousOutput + m ()Ldbx; m method_2351 getCommandBlock + m ()V + m ()V +c fos$1 net/minecraft/class_463$1 net/minecraft/client/gui/screens/inventory/AbstractCommandBlockEditScreen$1 + f Lfos; d field_21632 field_21632 + m (Lfos;Lfhx;IIIILwz;)V +c fot net/minecraft/class_465 net/minecraft/client/gui/screens/inventory/AbstractContainerScreen + f I A field_2776 leftPos + f I B field_2800 topPos + f Ljava/util/Set; C field_2793 quickCraftSlots + f Z D field_2794 isQuickCrafting + f F E field_32318 SNAPBACK_SPEED + f I F field_32319 QUICKDROP_DELAY + f I G field_32321 HOVER_ITEM_BLIT_OFFSET + f Lcrq; H field_2777 clickedSlot + f Lcrq; I field_2802 snapbackEnd + f Lcrq; J field_2780 quickdropSlot + f Lcrq; K field_2799 lastClickSlot + f Z L field_2789 isSplittingStack + f Lcuq; M field_2782 draggingItem + f I N field_2784 snapbackStartX + f I O field_2796 snapbackStartY + f J P field_2795 snapbackTime + f Lcuq; Q field_2785 snapbackItem + f J R field_2781 quickdropTime + f I S field_2790 quickCraftingType + f I T field_2778 quickCraftingButton + f Z U field_2798 skipNextRelease + f I V field_2803 quickCraftingRemainder + f J W field_2788 lastClickTime + f I X field_2786 lastClickButton + f Z Y field_2783 doubleclick + f Lcuq; Z field_2791 lastQuickMoved + f Lakr; a field_2801 INVENTORY_LOCATION + f I b field_32322 SLOT_ITEM_BLIT_OFFSET + f I c field_2792 imageWidth + f I r field_2779 imageHeight + f I s field_25267 titleLabelX + f I u field_25268 titleLabelY + f I v field_25269 inventoryLabelX + f I w field_25270 inventoryLabelY + f Lcpu; x field_2797 menu + f Lwz; y field_29347 playerInventoryTitle + f Lcrq; z field_2787 hoveredSlot + m ()V C method_37432 containerTick + m ()V G method_2379 recalculateQuickCraftRemaining + m (DDIII)Z a method_2381 hasClickedOutside + m (I)V a method_30107 checkHotbarMouseClicked + m (II)Z a method_2384 checkHotbarKeyPressed + m (IIIIDD)Z a method_2378 isHovering + m (IIZ)V a method_54590 handleSlotStateChanged + m (Lcrq;DD)Z a method_2387 isHovering + m (Lcrq;IILcqe;)V a method_2383 slotClicked + m (Lcuq;)Ljava/util/List; a method_51454 getTooltipFromContainerItem + m (Lfhz;FII)V a method_2389 renderBg + m (Lfhz;II)V a method_2380 renderTooltip + m (Lfhz;III)V a method_33285 renderSlotHighlight + m (Lfhz;Lcrq;)V a method_2385 renderSlot + m (Lfhz;Lcuq;IILjava/lang/String;)V a method_2382 renderFloatingItem + m (DD)Lcrq; b method_2386 findSlot + m (Lfhz;II)V b method_2388 renderLabels + m ()V m method_44339 clearDraggingState + m (Lcpu;Lcmw;Lwz;)V + m ()V +c fou net/minecraft/class_489 net/minecraft/client/gui/screens/inventory/AbstractFurnaceScreen + f Lfrw; E field_2924 recipeBookComponent + f Z F field_2925 widthTooNarrow + f Lakr; G field_18975 texture + f Lakr; H field_45434 litProgressSprite + f Lakr; I field_45435 burnProgressSprite + m (Lfim;)V a method_19877 method_19877 + m (Lcpv;Lfrw;Lcmw;Lwz;Lakr;Lakr;Lakr;)V +c fov net/minecraft/class_7743 net/minecraft/client/gui/screens/inventory/AbstractSignEditScreen + f Ldup; a field_40426 woodType + f Ldrs; b field_40424 sign + f Ldrt; c field_43362 text + f [Ljava/lang/String; r field_40425 messages + f Z s field_43363 isFrontText + f I u field_40427 frame + f I v field_40428 line + f Lflg; w field_40429 signField + m ()Z C method_49912 isValid + m ()V D method_45662 onDone + m ()Ljava/lang/String; E method_45663 method_45663 + m (I)[Ljava/lang/String; a method_45652 method_45652 + m (Lfhz;Ldtc;)V a method_45656 renderSignBackground + m (Lfim;)V a method_45657 method_45657 + m (Ljava/lang/String;)V a method_49913 setMessage + m (ZI)Lwz; a method_49914 method_49914 + m (Lfhz;Ldtc;)V b method_45654 offsetSign + m (Ljava/lang/String;)Z b method_45658 method_45658 + m (Lfhz;)V c method_45659 renderSign + m (Lfhz;)V d method_45655 renderSignText + m ()Lorg/joml/Vector3f; m method_45661 getSignTextScale + m (Ldrs;ZZ)V + m (Ldrs;ZZLwz;)V +c fow net/minecraft/class_471 net/minecraft/client/gui/screens/inventory/AnvilScreen + f Lakr; E field_45436 TEXT_FIELD_SPRITE + f Lakr; F field_45437 TEXT_FIELD_DISABLED_SPRITE + f Lakr; G field_45438 ERROR_SPRITE + f Lakr; H field_2819 ANVIL_LOCATION + f Lwz; I field_26559 TOO_EXPENSIVE_TEXT + f Lfiv; J field_2821 name + f Lcmx; K field_29348 player + m (Ljava/lang/String;)V a method_2403 onNameChanged + m (Lcpw;Lcmw;Lwz;)V + m ()V +c fox net/minecraft/class_466 net/minecraft/client/gui/screens/inventory/BeaconScreen + f Lakr; E field_2808 BEACON_LOCATION + f Lakr; F field_45443 BUTTON_DISABLED_SPRITE + f Lakr; G field_45444 BUTTON_SELECTED_SPRITE + f Lakr; H field_45439 BUTTON_HIGHLIGHTED_SPRITE + f Lakr; I field_45440 BUTTON_SPRITE + f Lakr; J field_45441 CONFIRM_SPRITE + f Lakr; K field_45442 CANCEL_SPRITE + f Lwz; L field_26560 PRIMARY_EFFECT_LABEL + f Lwz; M field_26561 SECONDARY_EFFECT_LABEL + f Ljava/util/List; N field_33832 beaconButtons + f Ljm; O field_17412 primary + f Ljm; P field_17413 secondary + m ()V E method_37078 updateButtons + m (ILfox$a;)V a method_37075 method_37075 + m (Lfik;)V a method_37076 addBeaconButton + m (Lfox;)Lfgo; a method_47418 method_47418 + m (Lfox;)Lfgo; b method_2394 method_2394 + m (Lfox;)Lfgo; c method_2393 method_2393 + m (Lcpy;Lcmw;Lwz;)V + m ()V +c fox$1 net/minecraft/class_466$1 net/minecraft/client/gui/screens/inventory/BeaconScreen$1 + f Lcpy; a field_17414 val$menu + f Lfox; b field_17415 field_17415 + m (Lfox;Lcpy;)V +c fox$a net/minecraft/class_466$class_6392 net/minecraft/client/gui/screens/inventory/BeaconScreen$BeaconButton + m (I)V a method_37080 updateStatus +c fox$b net/minecraft/class_466$class_467 net/minecraft/client/gui/screens/inventory/BeaconScreen$BeaconCancelButton + f Lfox; a field_2809 field_2809 + m (Lfox;II)V +c fox$c net/minecraft/class_466$class_468 net/minecraft/client/gui/screens/inventory/BeaconScreen$BeaconConfirmButton + f Lfox; a field_2810 field_2810 + m (Lfox;II)V +c fox$d net/minecraft/class_466$class_469 net/minecraft/client/gui/screens/inventory/BeaconScreen$BeaconPowerButton + f I a field_33833 tier + f Lfox; b field_2811 field_2811 + f Z c field_17416 isPrimary + f Ljm; d field_2813 effect + f Lgql; f field_18223 sprite + m (Ljm;)V a method_37081 setEffect + m (Ljm;)Lxn; b method_37082 createEffectDescription + m (Lfox;IILjm;ZI)V +c fox$e net/minecraft/class_466$class_470 net/minecraft/client/gui/screens/inventory/BeaconScreen$BeaconScreenButton + f Z a field_2815 selected + m ()Z a method_2402 isSelected + m (Lfhz;)V a method_18641 renderIcon + m (Z)V b method_2401 setSelected + m (II)V + m (IILwz;)V +c fox$f net/minecraft/class_466$class_4072 net/minecraft/client/gui/screens/inventory/BeaconScreen$BeaconSpriteScreenButton + f Lakr; a field_45445 sprite + m (IILakr;Lwz;)V +c fox$g net/minecraft/class_466$class_6393 net/minecraft/client/gui/screens/inventory/BeaconScreen$BeaconUpgradePowerButton + f Lfox; c field_33835 field_33835 + m (Lfox;IILjm;)V +c foy net/minecraft/class_3871 net/minecraft/client/gui/screens/inventory/BlastFurnaceScreen + f Lakr; F field_45446 LIT_PROGRESS_SPRITE + f Lakr; G field_45447 BURN_PROGRESS_SPRITE + f Lakr; H field_17115 TEXTURE + m (Lcpz;Lcmw;Lwz;)V + m ()V +c foz net/minecraft/class_473 net/minecraft/client/gui/screens/inventory/BookEditScreen + f Z A field_2828 isSigning + f I B field_2844 frameTick + f I C field_2840 currentPage + f Ljava/util/List; D field_17116 pages + f Ljava/lang/String; E field_2847 title + f Lflg; F field_24269 pageEdit + f Lflg; G field_24270 titleEdit + f J H field_2830 lastClickTime + f I I field_2827 lastIndex + f Lfqb; J field_2843 forwardButton + f Lfqb; K field_2839 backButton + f Lfim; L field_2848 doneButton + f Lfim; M field_2831 signButton + f Lfim; N field_2841 finalizeButton + f Lfim; O field_2849 cancelButton + f Lbqq; P field_2832 hand + f Lfoz$a; Q field_24268 displayCache + f Lwz; R field_25891 pageMsg + f Lwz; S field_25892 ownerText + f I a field_32323 TEXT_WIDTH + f I b field_32324 TEXT_HEIGHT + f I c field_32326 IMAGE_WIDTH + f I r field_32327 IMAGE_HEIGHT + f Lwz; s field_25893 EDIT_TITLE_LABEL + f Lwz; u field_25894 FINALIZE_WARNING_LABEL + f Laya; v field_25895 BLACK_CURSOR + f Laya; w field_25896 GRAY_CURSOR + f Lcmx; x field_2826 owner + f Lcuq; y field_2835 book + f Z z field_2837 isModified + m ()I C method_17046 getNumPages + m ()V D method_2437 pageBack + m ()V E method_2444 pageForward + m ()V F method_2413 updateButtonVisibility + m ()V G method_17047 eraseEmptyTrailingPages + m ()V J method_37433 updateLocalCopy + m ()V K method_2436 appendPageToBook + m ()V L method_27597 keyUp + m ()V M method_27598 keyDown + m ()V N method_2421 keyHome + m ()V O method_2414 keyEnd + m ()Ljava/lang/String; P method_2427 getCurrentPageText + m ()Lfoz$a; Q method_27576 getDisplayCache + m ()V R method_27577 clearDisplayCache + m ()V S method_27872 clearDisplayCacheAfterPageChange + m ()Lfoz$a; T method_27578 rebuildDisplayCache + m ()Ljava/lang/String; U method_27579 method_27579 + m (I)V a method_27580 changeLine + m (Lfhz;Lfoz$c;Z)V a method_27581 renderCursor + m (Lfhz;[Lgfe;)V a method_27588 renderHighlight + m (Lfim;)V a method_19878 method_19878 + m (Lfoz$c;)Lfoz$c; a method_27582 convertScreenToLocal + m (Lfoz$c;Lfoz$c;)Lgfe; a method_27583 createSelection + m (Ljava/lang/String;)V a method_27584 setClipboard + m (Ljava/lang/String;Lfgz;IIII)Lgfe; a method_27585 createPartialLineSelection + m (Lorg/apache/commons/lang3/mutable/MutableInt;Ljava/lang/String;Lorg/apache/commons/lang3/mutable/MutableBoolean;Lit/unimi/dsi/fastutil/ints/IntList;Ljava/util/List;Lxw;II)V a method_27586 method_27586 + m ([II)I a method_27591 findLineFromPos + m (I)V b method_27589 selectWord + m (III)Z b method_27592 bookKeyPressed + m (Lfim;)V b method_19879 method_19879 + m (Lfoz$c;)Lfoz$c; b method_27590 convertLocalToScreen + m (Ljava/lang/String;)V b method_2439 setCurrentPageText + m (Lfim;)V c method_19880 method_19880 + m (Ljava/lang/String;)Z c method_27593 method_27593 + m (Z)V c method_2407 saveChanges + m (III)Z d method_2446 titleKeyPressed + m (Lfim;)V d method_19881 method_19881 + m (Ljava/lang/String;)V d method_27594 method_27594 + m (Lfim;)V e method_19882 method_19882 + m (Ljava/lang/String;)Z e method_27596 method_27596 + m (Lfim;)V f method_19883 method_19883 + m ()Ljava/lang/String; m method_27595 getClipboard + m (Lcmx;Lcuq;Lbqq;)V + m ()V +c foz$a net/minecraft/class_473$class_5233 net/minecraft/client/gui/screens/inventory/BookEditScreen$DisplayCache + f Lfoz$a; a field_24271 EMPTY + f Ljava/lang/String; b field_24272 fullText + f Lfoz$c; c field_24273 cursor + f Z d field_24274 cursorAtEnd + f [I e field_24275 lineStarts + f [Lfoz$b; f field_24276 lines + f [Lgfe; g field_24277 selection + m (I)I a method_27600 findLineStart + m (II)I a method_27601 changeLine + m (Lfhx;Lfoz$c;)I a method_27602 getIndexAtPosition + m (I)I b method_27604 findLineEnd + m (Ljava/lang/String;Lfoz$c;Z[I[Lfoz$b;[Lgfe;)V + m ()V +c foz$b net/minecraft/class_473$class_475 net/minecraft/client/gui/screens/inventory/BookEditScreen$LineInfo + f Lxw; a field_24278 style + f Ljava/lang/String; b field_24279 contents + f Lwz; c field_24280 asComponent + f I d field_2854 x + f I e field_2853 y + m (Lxw;Ljava/lang/String;II)V +c foz$c net/minecraft/class_473$class_5234 net/minecraft/client/gui/screens/inventory/BookEditScreen$Pos2i + f I a field_24281 x + f I b field_24282 y + m (II)V +c fpa net/minecraft/class_3872 net/minecraft/client/gui/screens/inventory/BookViewScreen + f Ljava/util/List; A field_17120 cachedPageComponents + f I B field_17121 cachedPage + f Lwz; C field_25897 pageMsg + f Lfqb; D field_17122 forwardButton + f Lfqb; E field_17123 backButton + f Z F field_18976 playTurnSound + f I a field_32328 PAGE_INDICATOR_TEXT_Y_OFFSET + f I b field_32329 PAGE_TEXT_X_OFFSET + f I c field_32330 PAGE_TEXT_Y_OFFSET + f Lfpa$a; r field_17417 EMPTY_ACCESS + f Lakr; s field_17117 BOOK_LOCATION + f I u field_32331 TEXT_WIDTH + f I v field_32332 TEXT_HEIGHT + f I w field_32333 IMAGE_WIDTH + f I x field_32334 IMAGE_HEIGHT + f Lfpa$a; y field_17418 bookAccess + f I z field_17119 currentPage + m ()V C method_17558 createPageControlButtons + m ()I D method_17055 getNumPages + m ()V E method_17057 pageBack + m ()V F method_17058 pageForward + m ()V G method_34494 closeScreen + m ()V J method_17059 updateButtonVisibility + m (I)Z a method_17556 setPage + m (Lfim;)V a method_19884 method_19884 + m (Lfpa$a;)V a method_17554 setBookAccess + m (DD)Lxw; b method_17048 getClickedComponentStyleAt + m (I)Z b method_17789 forcePage + m (Lfim;)V b method_19885 method_19885 + m (Lfim;)V c method_19886 method_19886 + m ()V m method_17557 createMenuControls + m (Lfpa$a;)V + m ()V + m (Lfpa$a;Z)V + m ()V +c fpa$a net/minecraft/class_3872$class_3931 net/minecraft/client/gui/screens/inventory/BookViewScreen$BookAccess + f Ljava/util/List; a comp_2438 pages + m ()I a method_17560 getPageCount + m (I)Lxe; a method_17563 getPage + m (Lcuq;)Lfpa$a; a method_17562 fromItem + m ()Ljava/util/List; b comp_2438 pages + m (Ljava/util/List;)V +c fpb net/minecraft/class_472 net/minecraft/client/gui/screens/inventory/BrewingStandScreen + f Lakr; E field_45448 FUEL_LENGTH_SPRITE + f Lakr; F field_45449 BREW_PROGRESS_SPRITE + f Lakr; G field_45450 BUBBLES_SPRITE + f Lakr; H field_2823 BREWING_STAND_LOCATION + f [I I field_2824 BUBBLELENGTHS + m (Lcqa;Lcmw;Lwz;)V + m ()V +c fpc net/minecraft/class_3934 net/minecraft/client/gui/screens/inventory/CartographyTableScreen + f Lakr; E field_45453 ERROR_SPRITE + f Lakr; F field_45454 SCALED_MAP_SPRITE + f Lakr; G field_45455 DUPLICATED_MAP_SPRITE + f Lakr; H field_45451 MAP_SPRITE + f Lakr; I field_45452 LOCKED_SPRITE + f Lakr; J field_17421 BG_LOCATION + m (Lfhz;Leqr;Leqt;IIF)V a method_17566 renderMap + m (Lfhz;Leqr;Leqt;ZZZZ)V a method_17567 renderResultingMap + m (Lcqb;Lcmw;Lwz;)V + m ()V +c fpd net/minecraft/class_477 net/minecraft/client/gui/screens/inventory/CommandBlockEditScreen + f Z A field_2867 autoexec + f Ldqr; u field_2865 autoCommandBlock + f Lfit; v field_2869 modeButton + f Lfit; w field_2871 conditionalButton + f Lfit; x field_2866 autoexecButton + f Ldqr$a; y field_2870 mode + f Z z field_2868 conditional + m ()V E method_2457 updateGui + m (Ldqr$a;)Lwz; a method_32643 method_32643 + m (Lfit;Ldqr$a;)V a method_32644 method_32644 + m (Lfit;Ljava/lang/Boolean;)V a method_32645 method_32645 + m (Lfit;Ljava/lang/Boolean;)V b method_32646 method_32646 + m (Z)V f method_32647 enableControls + m (Ldqr;)V +c fpd$1 net/minecraft/class_477$1 net/minecraft/client/gui/screens/inventory/CommandBlockEditScreen$1 + f [I a field_2875 $SwitchMap$net$minecraft$world$level$block$entity$CommandBlockEntity$Mode + m ()V +c fpe net/minecraft/class_476 net/minecraft/client/gui/screens/inventory/ContainerScreen + f Lakr; E field_2861 CONTAINER_BACKGROUND + f I F field_2864 containerRows + m (Lcqc;Lcmw;Lwz;)V + m ()V +c fpf net/minecraft/class_8898 net/minecraft/client/gui/screens/inventory/CrafterScreen + f Lakr; E field_46882 DISABLED_SLOT_LOCATION_SPRITE + f Lakr; F field_46883 POWERED_REDSTONE_LOCATION_SPRITE + f Lakr; G field_46884 UNPOWERED_REDSTONE_LOCATION_SPRITE + f Lakr; H field_46879 CONTAINER_LOCATION + f Lwz; I field_46880 DISABLED_SLOT_TOOLTIP + f Lcmx; J field_46881 player + m (I)V a method_54797 enableSlot + m (IZ)V a method_54798 updateSlotState + m (Lfhz;Lcqk;)V a method_54591 renderDisabledSlot + m (I)V b method_54799 disableSlot + m (Lfhz;)V c method_54592 renderRedstone + m (Lcqj;Lcmw;Lwz;)V + m ()V +c fpf$1 net/minecraft/class_8898$1 net/minecraft/client/gui/screens/inventory/CrafterScreen$1 + f [I a field_47118 $SwitchMap$net$minecraft$world$inventory$ClickType + m ()V +c fpg net/minecraft/class_479 net/minecraft/client/gui/screens/inventory/CraftingScreen + f Lakr; E field_2878 CRAFTING_TABLE_LOCATION + f Lfsa; F field_2880 recipeBookComponent + f Z G field_2877 widthTooNarrow + m (Lfim;)V a method_19890 method_19890 + m (Lcqm;Lcmw;Lwz;)V + m ()V +c fph net/minecraft/class_478 net/minecraft/client/gui/screens/inventory/CreativeInventoryListener + f Lfgo; a field_2876 minecraft + m (Lfgo;)V +c fpi net/minecraft/class_481 net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen + f Lakr; E field_45459 SCROLLER_SPRITE + f Lakr; F field_45460 SCROLLER_DISABLED_SPRITE + f [Lakr; G field_45461 UNSELECTED_TOP_TABS + f [Lakr; H field_45456 SELECTED_TOP_TABS + f [Lakr; I field_45457 UNSELECTED_BOTTOM_TABS + f [Lakr; J field_45458 SELECTED_BOTTOM_TABS + f I K field_32337 NUM_ROWS + f I L field_32338 NUM_COLS + f I M field_32339 TAB_WIDTH + f I N field_32340 TAB_HEIGHT + f I O field_32341 SCROLLER_WIDTH + f I P field_32342 SCROLLER_HEIGHT + f Lbra; Q field_2895 CONTAINER + f Lwz; R field_26563 TRASH_SLOT_TOOLTIP + f I S field_32343 TEXT_COLOR + f Lcta; T field_2896 selectedTab + f F U field_2890 scrollOffs + f Z V field_2892 scrolling + f Lfiv; W field_2894 searchBox + f Ljava/util/List; X field_2886 originalSlots + f Lcrq; Y field_2889 destroyItemSlot + f Lfph; Z field_2891 listener + f Z aa field_2888 ignoreTextInput + f Z ab field_2887 hasClickedOutside + f Ljava/util/Set; ac field_16201 visibleTags + f Z ad field_41112 displayOperatorCreativeTab + m ()Z E method_47424 isInventoryOpen + m ()V F method_2464 refreshSearchResults + m ()Z J method_2465 canScroll + m (Lcmx;)Z a method_47419 hasPermissions + m (Lcpl;ZLjo$a;)V a method_47420 tryRefreshInvalidatedTabs + m (Lcrq;)Z a method_2470 isCreativeSlot + m (Lcta;)V a method_2466 selectTab + m (Lcta;DD)Z a method_2463 checkTabClicked + m (Lcuq;Ljava/util/List;Lawu;)V a method_51455 method_51455 + m (Lfgo;IZZ)V a method_2462 handleHotbarLoadOrSave + m (Lfhz;Lcta;)V a method_2468 renderTabButton + m (Lfhz;Lcta;II)Z a method_2471 checkTabHovering + m (Lfzw;Lcpl;ZLjo$a;)Z a method_60324 tryRebuildTabContents + m (Ljava/lang/String;)V a method_15871 updateVisibleTags + m (Ljava/lang/String;Lakr;)Z a method_15875 method_15875 + m (Ljava/lang/String;Ljava/lang/String;Lakr;)Z a method_15874 method_15874 + m (Ljava/util/Collection;)V a method_47421 refreshCurrentTabContents + m (Ljava/util/function/Predicate;Lawu;)Z a method_15873 method_15873 + m (DD)Z b method_2467 insideScrollbar + m (Lcta;)I b method_47422 getTabX + m (Lcta;)I c method_47423 getTabY + m (Lgeb;Lcpl;Z)V + m ()V +c fpi$a net/minecraft/class_481$class_482 net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$CustomCreativeSlot + m (Lbqk;III)V +c fpi$b net/minecraft/class_481$class_483 net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$ItemPickerMenu + f Ljv; k field_2897 items + f Lcpu; l field_29349 inventoryMenu + m (F)I a method_47425 getRowIndexForScroll + m (FD)F a method_47426 subtractInputFromScroll + m (F)V b method_2473 scrollTo + m (I)F e method_47427 getScrollForRowIndex + m ()I l method_47428 calculateRowCount + m ()Z m method_2474 canScroll + m (Lcmx;)V +c fpi$c net/minecraft/class_481$class_484 net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen$SlotWrapper + f Lcrq; a field_2898 target + m (Lcrq;III)V +c fpj net/minecraft/class_8064 net/minecraft/client/gui/screens/inventory/CyclingSlotBackground + f I a field_42039 ICON_CHANGE_TICK_RATE + f I b field_42040 ICON_SIZE + f I c field_42041 ICON_TRANSITION_TICK_DURATION + f I d field_42042 slotIndex + f Ljava/util/List; e field_42043 icons + f I f field_42044 tick + f I g field_42045 iconIndex + m (F)F a method_48468 getIconTransitionTransparency + m (Lcpu;Lfhz;FII)V a method_48469 render + m (Lcrq;Lakr;FLfhz;II)V a method_48470 renderIcon + m (Ljava/util/List;)V a method_48471 tick + m (I)V +c fpk net/minecraft/class_480 net/minecraft/client/gui/screens/inventory/DispenserScreen + f Lakr; E field_2885 CONTAINER_LOCATION + m (Lcqo;Lcmw;Lwz;)V + m ()V +c fpl net/minecraft/class_485 net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen + f Lakr; E field_45462 EFFECT_BACKGROUND_LARGE_SPRITE + f Lakr; F field_45463 EFFECT_BACKGROUND_SMALL_SPRITE + m ()Z G method_38934 canSeeEffects + m (Lbrz;)Lwz; a method_38933 getEffectName + m (Lfhz;IILjava/lang/Iterable;)V a method_18644 renderLabels + m (Lfhz;IILjava/lang/Iterable;Z)V a method_18642 renderBackgrounds + m (Lfhz;IILjava/lang/Iterable;Z)V b method_18643 renderIcons + m (Lfhz;II)V c method_2477 renderEffects + m (Lcpu;Lcmw;Lwz;)V + m ()V +c fpm net/minecraft/class_487 net/minecraft/client/gui/screens/inventory/EnchantmentNames + f Lakr; a field_24283 ALT_FONT + f Lxw; b field_24284 ROOT_STYLE + f Lfpm; c field_2917 INSTANCE + f Layw; d field_2918 random + f [Ljava/lang/String; e field_2916 words + m ()Lfpm; a method_2481 getInstance + m (J)V a method_2480 initSeed + m (Lfhx;I)Lxe; a method_2479 getRandomName + m ()V + m ()V +c fpn net/minecraft/class_486 net/minecraft/client/gui/screens/inventory/EnchantmentScreen + f I E field_2915 time + f F F field_2912 flip + f F G field_2914 oFlip + f F H field_2909 flipT + f F I field_2906 flipA + f F J field_2905 open + f F K field_2904 oOpen + f [Lakr; L field_45464 ENABLED_LEVEL_SPRITES + f [Lakr; M field_45465 DISABLED_LEVEL_SPRITES + f Lakr; N field_45466 ENCHANTMENT_SLOT_DISABLED_SPRITE + f Lakr; O field_45467 ENCHANTMENT_SLOT_HIGHLIGHTED_SPRITE + f Lakr; P field_45468 ENCHANTMENT_SLOT_SPRITE + f Lakr; Q field_2910 ENCHANTING_TABLE_LOCATION + f Lakr; R field_2901 ENCHANTING_BOOK_LOCATION + f Layw; S field_2911 random + f Lfus; T field_2908 bookModel + f Lcuq; U field_2913 last + m ()V E method_2478 tickBook + m (Lfhz;IIF)V d method_52223 renderBook + m (Lcqp;Lcmw;Lwz;)V + m ()V +c fpo net/minecraft/class_3873 net/minecraft/client/gui/screens/inventory/FurnaceScreen + f Lakr; F field_45469 LIT_PROGRESS_SPRITE + f Lakr; G field_45470 BURN_PROGRESS_SPRITE + f Lakr; H field_17127 TEXTURE + m (Lcqr;Lcmw;Lwz;)V + m ()V +c fpp net/minecraft/class_3802 net/minecraft/client/gui/screens/inventory/GrindstoneScreen + f Lakr; E field_45471 ERROR_SPRITE + f Lakr; F field_16769 GRINDSTONE_LOCATION + m (Lcqt;Lcmw;Lwz;)V + m ()V +c fpq net/minecraft/class_7744 net/minecraft/client/gui/screens/inventory/HangingSignEditScreen + f F b field_40431 MAGIC_BACKGROUND_SCALE + f Lorg/joml/Vector3f; c field_40432 TEXT_SCALE + f I r field_40433 TEXTURE_WIDTH + f I s field_40434 TEXTURE_HEIGHT + f Lakr; u field_40435 texture + m (Ldrs;ZZ)V + m ()V +c fpr net/minecraft/class_488 net/minecraft/client/gui/screens/inventory/HopperScreen + f Lakr; E field_2919 HOPPER_LOCATION + m (Lcqu;Lcmw;Lwz;)V + m ()V +c fps net/minecraft/class_491 net/minecraft/client/gui/screens/inventory/HorseInventoryScreen + f Lakr; E field_45473 CHEST_SLOTS_SPRITE + f Lakr; F field_45474 SADDLE_SLOT_SPRITE + f Lakr; G field_45475 LLAMA_ARMOR_SLOT_SPRITE + f Lakr; H field_45472 ARMOR_SLOT_SPRITE + f Lakr; I field_2937 HORSE_INVENTORY_LOCATION + f Lchi; J field_2941 horse + f I K field_52253 inventoryColumns + f F L field_2939 xMouse + f F M field_2938 yMouse + m (Lcqv;Lcmw;Lchi;I)V + m ()V +c fpt net/minecraft/class_490 net/minecraft/client/gui/screens/inventory/InventoryScreen + f F E field_2935 xMouse + f F F field_2934 yMouse + f Lfsa; G field_2929 recipeBookComponent + f Z H field_2931 widthTooNarrow + f Z I field_2930 buttonClicked + m (Lfhz;FFFLorg/joml/Vector3f;Lorg/joml/Quaternionf;Lorg/joml/Quaternionf;Lbtn;)V a method_48472 renderEntityInInventory + m (Lfhz;IIIIIFFFLbtn;)V a method_2486 renderEntityInInventoryFollowsMouse + m (Lfim;)V a method_19891 method_19891 + m (Lgkh;Lbtn;Lfhz;)V a method_29977 method_29977 + m (Lcmx;)V +c fpu net/minecraft/class_4894 net/minecraft/client/gui/screens/inventory/ItemCombinerScreen + f Lakr; E field_22794 menuResource + m ()V E method_25445 subInit + m (Lfhz;II)V c method_48467 renderErrorIcon + m (Lfhz;IIF)V d method_25444 renderFg + m (Lcqx;Lcmw;Lwz;Lakr;)V +c fpv net/minecraft/class_3742 net/minecraft/client/gui/screens/inventory/JigsawBlockEditScreen + f Lfiv; A field_23349 targetEdit + f Lfiv; B field_23350 poolEdit + f Lfiv; C field_16519 finalStateEdit + f Lfiv; D field_47123 selectionPriorityEdit + f Lfiv; E field_47124 placementPriorityEdit + f I F field_24052 levels + f Z G field_25271 keepJigsaws + f Lfit; H field_23351 jointButton + f Lfim; I field_19103 doneButton + f Lfim; J field_33958 generateButton + f Ldri$a; K field_23352 joint + f Lwz; a field_26564 JOINT_LABEL + f Lwz; b field_26565 POOL_LABEL + f Lwz; c field_26566 NAME_LABEL + f Lwz; r field_26567 TARGET_LABEL + f Lwz; s field_26568 FINAL_STATE_LABEL + f Lwz; u field_47119 PLACEMENT_PRIORITY_LABEL + f Lwz; v field_47120 PLACEMENT_PRIORITY_TOOLTIP + f Lwz; w field_47121 SELECTION_PRIORITY_LABEL + f Lwz; x field_47122 SELECTION_PRIORITY_TOOLTIP + f Ldri; y field_16522 jigsawEntity + f Lfiv; z field_23348 nameEdit + m ()V C method_16349 onCancel + m ()V D method_16348 sendToServer + m ()V E method_27272 sendGenerate + m ()V F method_20118 updateValidity + m (Lfim;)V a method_19892 method_19892 + m (Lfit;Ldri$a;)V a method_32648 method_32648 + m (Lfit;Ljava/lang/Boolean;)V a method_32649 method_32649 + m (Ljava/lang/String;)Z a method_61042 isValidResourceLocation + m (Lfim;)V b method_19893 method_19893 + m (Ljava/lang/String;)I b method_54800 parseAsInt + m (Lfim;)V c method_27271 method_27271 + m (Ljava/lang/String;)V c method_26412 method_26412 + m (Ljava/lang/String;)V d method_20119 method_20119 + m (Ljava/lang/String;)V e method_20120 method_20120 + m ()V m method_16346 onDone + m (Ldri;)V + m ()V +c fpv$1 net/minecraft/class_3742$1 net/minecraft/client/gui/screens/inventory/JigsawBlockEditScreen$1 + f Lfpv; a field_24053 field_24053 + m (Lfpv;IIIILwz;D)V +c fpw net/minecraft/class_3935 net/minecraft/client/gui/screens/inventory/LecternScreen + f Lcqz; y field_17422 menu + f Lcqh; z field_17423 listener + m ()Lcqz; J method_17573 getMenu + m ()V K method_17574 bookChanged + m ()V L method_17575 pageChanged + m (Lfim;)V a method_19894 method_19894 + m (Lfim;)V b method_19895 method_19895 + m (I)V g method_17572 sendButtonClick + m (Lcqz;Lcmw;Lwz;)V +c fpw$1 net/minecraft/class_3935$1 net/minecraft/client/gui/screens/inventory/LecternScreen$1 + f Lfpw; a field_17424 field_17424 + m (Lfpw;)V +c fpx net/minecraft/class_494 net/minecraft/client/gui/screens/inventory/LoomScreen + f Lakr; E field_45481 BANNER_SLOT_SPRITE + f Lakr; F field_45482 DYE_SLOT_SPRITE + f Lakr; G field_45483 PATTERN_SLOT_SPRITE + f Lakr; H field_45476 SCROLLER_SPRITE + f Lakr; I field_45477 SCROLLER_DISABLED_SPRITE + f Lakr; J field_45478 PATTERN_SELECTED_SPRITE + f Lakr; K field_45479 PATTERN_HIGHLIGHTED_SPRITE + f Lakr; L field_45480 PATTERN_SPRITE + f Lakr; M field_46186 ERROR_SPRITE + f Lakr; N field_2966 BG_LOCATION + f I O field_32346 PATTERN_COLUMNS + f I P field_32347 PATTERN_ROWS + f I Q field_32348 SCROLLER_WIDTH + f I R field_32349 SCROLLER_HEIGHT + f I S field_32350 PATTERN_IMAGE_SIZE + f I T field_32351 SCROLLER_FULL_HEIGHT + f I U field_32352 PATTERNS_X + f I V field_32353 PATTERNS_Y + f Lfyk; W field_21694 flag + f Ldpy; X field_21841 resultBannerPatterns + f Lcuq; Y field_2955 bannerStack + f Lcuq; Z field_2954 dyeStack + f Lcuq; aa field_2967 patternStack + f Z ab field_2965 displayPatterns + f Z ac field_2961 hasMaxPatterns + f F ad field_2968 scrollOffs + f Z ae field_2958 scrolling + f I af field_39190 startRow + m ()I E method_43774 totalRowCount + m ()V F method_17576 containerChanged + m (Lfhz;Ljm;II)V a method_22692 renderPattern + m (Lcra;Lcmw;Lwz;)V + m ()V +c fpy net/minecraft/class_3936 net/minecraft/client/gui/screens/inventory/MenuAccess + m ()Lcpu; D method_17577 getMenu +c fpz net/minecraft/class_492 net/minecraft/client/gui/screens/inventory/MerchantScreen + f Lakr; E field_45490 OUT_OF_STOCK_SPRITE + f Lakr; F field_45491 EXPERIENCE_BAR_BACKGROUND_SPRITE + f Lakr; G field_45492 EXPERIENCE_BAR_CURRENT_SPRITE + f Lakr; H field_45484 EXPERIENCE_BAR_RESULT_SPRITE + f Lakr; I field_45485 SCROLLER_SPRITE + f Lakr; J field_45486 SCROLLER_DISABLED_SPRITE + f Lakr; K field_45487 TRADE_ARROW_OUT_OF_STOCK_SPRITE + f Lakr; L field_45488 TRADE_ARROW_SPRITE + f Lakr; M field_45489 DISCOUNT_STRIKETHRUOGH_SPRITE + f Lakr; N field_2950 VILLAGER_LOCATION + f I O field_32354 TEXTURE_WIDTH + f I P field_32355 TEXTURE_HEIGHT + f I Q field_32356 MERCHANT_MENU_PART_X + f I R field_32357 PROGRESS_BAR_X + f I S field_32358 PROGRESS_BAR_Y + f I T field_32359 SELL_ITEM_1_X + f I U field_32360 SELL_ITEM_2_X + f I V field_32361 BUY_ITEM_X + f I W field_32362 LABEL_Y + f I X field_32363 NUMBER_OF_OFFER_BUTTONS + f I Y field_32364 TRADE_BUTTON_X + f I Z field_32365 TRADE_BUTTON_HEIGHT + f I aa field_32366 TRADE_BUTTON_WIDTH + f I ab field_32367 SCROLLER_HEIGHT + f I ac field_32368 SCROLLER_WIDTH + f I ad field_32369 SCROLL_BAR_HEIGHT + f I ae field_32370 SCROLL_BAR_TOP_POS_Y + f I af field_32371 SCROLL_BAR_START_X + f Lwz; ag field_26569 TRADES_LABEL + f Lwz; ah field_26571 DEPRECATED_TOOLTIP + f I ai field_19161 shopItem + f [Lfpz$a; aj field_19162 tradeOfferButtons + f I ak field_19163 scrollOff + f Z al field_19164 isDragging + m ()V E method_2496 postButtonClick + m (I)Z a method_20220 canScroll + m (Lfhz;IILdbu;)V a method_19413 renderProgressBar + m (Lfhz;IILdbv;)V a method_20221 renderScroller + m (Lfhz;Lcuq;Lcuq;II)V a method_20222 renderAndDecorateCostA + m (Lfhz;Ldbu;II)V a method_20223 renderButtonArrows + m (Lfim;)V a method_19896 method_19896 + m (Lfpz;)Lfhx; a method_20227 method_20227 + m (Lfpz;)Lfhx; b method_20225 method_20225 + m (Lfpz;)Lfhx; c method_20226 method_20226 + m (Lcre;Lcmw;Lwz;)V + m ()V +c fpz$a net/minecraft/class_492$class_493 net/minecraft/client/gui/screens/inventory/MerchantScreen$TradeOfferButton + f I a field_19165 index + f Lfpz; b field_19166 field_19166 + m ()I a method_20228 getIndex + m (Lfhz;II)V a method_25352 renderToolTip + m (Lfpz;IIILfim$c;)V +c fqa net/minecraft/class_496 net/minecraft/client/gui/screens/inventory/MinecartCommandBlockEditScreen + f Ldbx; u field_2976 commandBlock + m (Ldbx;)V +c fqb net/minecraft/class_474 net/minecraft/client/gui/screens/inventory/PageButton + f Lakr; a field_45493 PAGE_FORWARD_HIGHLIGHTED_SPRITE + f Lakr; b field_45494 PAGE_FORWARD_SPRITE + f Lakr; c field_45495 PAGE_BACKWARD_HIGHLIGHTED_SPRITE + f Lakr; d field_45496 PAGE_BACKWARD_SPRITE + f Z u field_2851 isForward + f Z v field_18977 playTurnSound + m (IIZLfim$c;Z)V + m ()V +c fqc net/minecraft/class_495 net/minecraft/client/gui/screens/inventory/ShulkerBoxScreen + f Lakr; E field_2973 CONTAINER_TEXTURE + m (Lcrn;Lcmw;Lwz;)V + m ()V +c fqd net/minecraft/class_498 net/minecraft/client/gui/screens/inventory/SignEditScreen + f F b field_40436 MAGIC_SCALE_NUMBER + f F c field_40437 MAGIC_TEXT_SCALE + f Lorg/joml/Vector3f; r field_40438 TEXT_SCALE + f Lghn$a; s field_21525 signModel + m (Ldrs;ZZ)V + m ()V +c fqe net/minecraft/class_4895 net/minecraft/client/gui/screens/inventory/SmithingScreen + f Lakr; E field_45498 ERROR_SPRITE + f Lakr; F field_42052 EMPTY_SLOT_SMITHING_TEMPLATE_ARMOR_TRIM + f Lakr; G field_42053 EMPTY_SLOT_SMITHING_TEMPLATE_NETHERITE_UPGRADE + f Lwz; H field_42054 MISSING_TEMPLATE_TOOLTIP + f Lwz; I field_42055 ERROR_TOOLTIP + f Ljava/util/List; J field_42056 EMPTY_SLOT_SMITHING_TEMPLATES + f I K field_42057 TITLE_LABEL_X + f I L field_42058 TITLE_LABEL_Y + f I M field_42059 ERROR_ICON_WIDTH + f I N field_42060 ERROR_ICON_HEIGHT + f I O field_42061 ERROR_ICON_X + f I P field_42062 ERROR_ICON_Y + f I Q field_42063 TOOLTIP_WIDTH + f I R field_42068 ARMOR_STAND_Y_ROT + f I S field_42047 ARMOR_STAND_X_ROT + f Lorg/joml/Vector3f; T field_45497 ARMOR_STAND_TRANSLATION + f Lorg/joml/Quaternionf; U field_42048 ARMOR_STAND_ANGLE + f I V field_42049 ARMOR_STAND_SCALE + f I W field_42050 ARMOR_STAND_OFFSET_Y + f I X field_42051 ARMOR_STAND_OFFSET_X + f Lfpj; Y field_42064 templateIcon + f Lfpj; Z field_42065 baseIcon + f Lfpj; aa field_42066 additionalIcon + f Lciw; ab field_42067 armorStandPreview + m ()Ljava/util/Optional; F method_48473 getTemplateItem + m ()Z G method_48474 hasRecipeError + m (Lfhz;IILwz;)V a method_48475 method_48475 + m (Lcuq;)V b method_48641 updateArmorStandPreview + m (Lfhz;II)V d method_48476 renderOnboardingTooltips + m (Lcrt;Lcmw;Lwz;)V + m ()V +c fqf net/minecraft/class_3874 net/minecraft/client/gui/screens/inventory/SmokerScreen + f Lakr; F field_45499 LIT_PROGRESS_SPRITE + f Lakr; G field_45500 BURN_PROGRESS_SPRITE + f Lakr; H field_17128 TEXTURE + m (Lcru;Lcmw;Lwz;)V + m ()V +c fqg net/minecraft/class_3979 net/minecraft/client/gui/screens/inventory/StonecutterScreen + f Lakr; E field_45503 SCROLLER_SPRITE + f Lakr; F field_45504 SCROLLER_DISABLED_SPRITE + f Lakr; G field_45505 RECIPE_SELECTED_SPRITE + f Lakr; H field_45501 RECIPE_HIGHLIGHTED_SPRITE + f Lakr; I field_45502 RECIPE_SPRITE + f Lakr; J field_17673 BG_LOCATION + f I K field_32372 SCROLLER_WIDTH + f I L field_32373 SCROLLER_HEIGHT + f I M field_32374 RECIPES_COLUMNS + f I N field_32375 RECIPES_ROWS + f I O field_32376 RECIPES_IMAGE_SIZE_WIDTH + f I P field_32377 RECIPES_IMAGE_SIZE_HEIGHT + f I Q field_32378 SCROLLER_FULL_HEIGHT + f I R field_32379 RECIPES_X + f I S field_32380 RECIPES_Y + f F T field_17674 scrollOffs + f Z U field_17670 scrolling + f I V field_17671 startIndex + f Z W field_17672 displayRecipes + m ()I E method_17953 getOffscreenRows + m ()Z F method_17954 isScrollBarActive + m ()V G method_17955 containerChanged + m (Lfhz;IIIII)V a method_17952 renderButtons + m (Lfhz;III)V b method_17951 renderRecipes + m (Lcrw;Lcmw;Lwz;)V + m ()V +c fqh net/minecraft/class_497 net/minecraft/client/gui/screens/inventory/StructureBlockEditScreen + f Ldrx; A field_2980 structure + f Ldkv; B field_2996 initialMirror + f Ldmm; C field_3003 initialRotation + f Ldum; D field_3004 initialMode + f Z E field_2985 initialEntityIgnoring + f Z F field_2997 initialShowAir + f Z G field_2983 initialShowBoundingBox + f Lfiv; H field_3005 nameEdit + f Lfiv; I field_2982 posXEdit + f Lfiv; J field_2999 posYEdit + f Lfiv; K field_3010 posZEdit + f Lfiv; L field_2988 sizeXEdit + f Lfiv; M field_2998 sizeYEdit + f Lfiv; N field_2978 sizeZEdit + f Lfiv; O field_3000 integrityEdit + f Lfiv; P field_2992 seedEdit + f Lfiv; Q field_2986 dataEdit + f Lfim; R field_2987 saveButton + f Lfim; S field_3006 loadButton + f Lfim; T field_2995 rot0Button + f Lfim; U field_2981 rot90Button + f Lfim; V field_3007 rot180Button + f Lfim; W field_2993 rot270Button + f Lfim; X field_3009 detectButton + f Lfit; Y field_2990 includeEntitiesButton + f Lfit; Z field_2979 mirrorButton + f Lwz; a field_26572 NAME_LABEL + f Lfit; aa field_3008 toggleAirButton + f Lfit; ab field_3001 toggleBoundingBox + f Ljava/text/DecimalFormat; ac field_2991 decimalFormat + f Lwz; b field_26573 POSITION_LABEL + f Lwz; c field_26574 SIZE_LABEL + f Lwz; r field_26575 INTEGRITY_LABEL + f Lwz; s field_26576 CUSTOM_DATA_LABEL + f Lwz; u field_26577 INCLUDE_ENTITIES_LABEL + f Lwz; v field_26578 DETECT_SIZE_LABEL + f Lwz; w field_26579 SHOW_AIR_LABEL + f Lwz; x field_26580 SHOW_BOUNDING_BOX_LABEL + f Lcom/google/common/collect/ImmutableList; y field_27993 ALL_MODES + f Lcom/google/common/collect/ImmutableList; z field_27994 DEFAULT_MODES + m ()V C method_2514 onCancel + m ()V D method_2510 updateDirectionButtons + m (Ldrx$a;)Z a method_2516 sendToServer + m (Ldum;)V a method_32650 updateMode + m (Lfim;)V a method_19898 method_19898 + m (Lfit;Ldkv;)V a method_32651 method_32651 + m (Lfit;Ldum;)V a method_32652 method_32652 + m (Lfit;Ljava/lang/Boolean;)V a method_32653 method_32653 + m (Lfqh;Ljava/lang/String;CI)Z a method_16017 method_16017 + m (Ljava/lang/String;)J a method_2504 parseSeed + m (Ldum;)Lwz; b method_32654 method_32654 + m (Lfim;)V b method_19899 method_19899 + m (Lfit;Ljava/lang/Boolean;)V b method_32655 method_32655 + m (Ljava/lang/String;)F b method_2500 parseIntegrity + m (Ldum;)Z c method_32656 method_32656 + m (Lfim;)V c method_19900 method_19900 + m (Lfit;Ljava/lang/Boolean;)V c method_32657 method_32657 + m (Ljava/lang/String;)I c method_2517 parseCoordinate + m (Lfim;)V d method_19901 method_19901 + m (Lfim;)V e method_19906 method_19906 + m (Lfim;)V f method_19908 method_19908 + m (Lfim;)V g method_19909 method_19909 + m (Lfim;)V h method_19910 method_19910 + m (Lfim;)V i method_19911 method_19911 + m ()V m method_2515 onDone + m (Ldrx;)V + m ()V +c fqh$1 net/minecraft/class_497$1 net/minecraft/client/gui/screens/inventory/StructureBlockEditScreen$1 + f Lfqh; d field_3023 field_3023 + m (Lfqh;Lfhx;IIIILwz;)V +c fqh$2 net/minecraft/class_497$2 net/minecraft/client/gui/screens/inventory/StructureBlockEditScreen$2 + f [I a field_3025 $SwitchMap$net$minecraft$world$level$block$Rotation + f [I b field_3024 $SwitchMap$net$minecraft$world$level$block$state$properties$StructureMode + m ()V +c fqi net/minecraft/class_6217 net/minecraft/client/gui/screens/inventory/package-info +c fqj net/minecraft/class_7999 net/minecraft/client/gui/screens/inventory/tooltip/BelowOrAboveWidgetTooltipPositioner + f Lfms; a field_46722 screenRectangle + m (Lfms;)V +c fqk net/minecraft/class_9805 net/minecraft/client/gui/screens/inventory/tooltip/ClientActivePlayersTooltip + f I a field_52140 SKIN_SIZE + f I b field_52141 PADDING + f Ljava/util/List; c field_52142 activePlayers + m (Lfqk$a;)V +c fqk$a net/minecraft/class_9805$class_9806 net/minecraft/client/gui/screens/inventory/tooltip/ClientActivePlayersTooltip$ActivePlayersTooltip + f Ljava/util/List; a comp_2848 profiles + m ()Ljava/util/List; a comp_2848 profiles + m (Ljava/util/List;)V +c fql net/minecraft/class_5682 net/minecraft/client/gui/screens/inventory/tooltip/ClientBundleTooltip + f Lakr; a field_45506 BACKGROUND_SPRITE + f I b field_32381 MARGIN_Y + f I c field_32382 BORDER_WIDTH + f I d field_32384 SLOT_SIZE_X + f I e field_32385 SLOT_SIZE_Y + f Lcxf; f field_49537 contents + m (IIIZLfhz;Lfhx;)V a method_33287 renderSlot + m (Lfhz;IILfql$a;)V a method_33288 blit + m ()I b method_52755 backgroundWidth + m ()I c method_52756 backgroundHeight + m ()I d method_33289 gridSizeX + m ()I e method_33290 gridSizeY + m (Lcxf;)V + m ()V +c fql$a net/minecraft/class_5682$class_5771 net/minecraft/client/gui/screens/inventory/tooltip/ClientBundleTooltip$Texture + f Lfql$a; a field_28362 BLOCKED_SLOT + f Lfql$a; b field_28361 SLOT + f Lakr; c field_45507 sprite + f I d field_28370 w + f I e field_28371 h + f [Lfql$a; f field_28372 $VALUES + m ()[Lfql$a; a method_36887 $values + m (Ljava/lang/String;ILakr;II)V + m ()V +c fqm net/minecraft/class_5683 net/minecraft/client/gui/screens/inventory/tooltip/ClientTextTooltip + f Laya; a field_27997 text + m (Laya;)V +c fqn net/minecraft/class_5684 net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent + m ()I a method_32661 getHeight + m (Laya;)Lfqn; a method_32662 create + m (Lcsa;)Lfqn; a method_32663 create + m (Lfhx;)I a method_32664 getWidth + m (Lfhx;IILfhz;)V a method_32666 renderImage + m (Lfhx;IILorg/joml/Matrix4f;Lgez$a;)V a method_32665 renderText +c fqo net/minecraft/class_8000 net/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipPositioner + m (IIIIII)Lorg/joml/Vector2ic; a method_47944 positionTooltip +c fqp net/minecraft/class_8001 net/minecraft/client/gui/screens/inventory/tooltip/DefaultTooltipPositioner + f Lfqo; a field_41687 INSTANCE + m (IILorg/joml/Vector2i;II)V a method_47945 positionTooltip + m ()V + m ()V +c fqq net/minecraft/class_8092 net/minecraft/client/gui/screens/inventory/tooltip/MenuTooltipPositioner + f I a field_42157 MAX_OVERLAP_WITH_WIDGET + f I b field_42158 MAX_DISTANCE_TO_WIDGET + f I c field_42159 MARGIN + f I d field_42160 MOUSE_OFFSET_X + f Lfms; e field_46723 screenRectangle + m (III)I a method_48642 getOffset + m (Lfms;)V +c fqr net/minecraft/class_8002 net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil + f I a field_41688 MOUSE_OFFSET + f I b field_41689 PADDING_LEFT + f I c field_41690 PADDING_RIGHT + f I d field_41691 PADDING_TOP + f I e field_41692 PADDING_BOTTOM + f I f field_41693 PADDING + f I g field_41694 BACKGROUND_COLOR + f I h field_41695 BORDER_COLOR_TOP + f I i field_41696 BORDER_COLOR_BOTTOM + m (Lfhz;IIIII)V a method_47946 renderTooltipBackground + m (Lfhz;IIIIII)V a method_47947 renderVerticalLineGradient + m (Lfhz;IIIIIII)V a method_47948 renderFrameGradient + m (Lfhz;IIIII)V b method_47949 renderVerticalLine + m (Lfhz;IIIIII)V b method_47950 renderRectangle + m (Lfhz;IIIII)V c method_47951 renderHorizontalLine + m ()V +c fqs net/minecraft/class_6664 net/minecraft/client/gui/screens/inventory/tooltip/package-info +c fqt net/minecraft/class_500 net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen + f Lfim; A field_3047 deleteButton + f Lfzt; B field_3051 editingServer + f Lguq$b; C field_3046 lanServerList + f Lguq$a; D field_3045 lanServerDetector + f Z E field_3048 initedOnce + f I a field_41849 BUTTON_ROW_WIDTH + f I b field_41850 TOP_ROW_BUTTON_WIDTH + f I c field_41851 LOWER_ROW_BUTTON_WIDTH + f I r field_41852 FOOTER_HEIGHT + f Lfqx; s field_3043 serverSelectionList + f Lorg/slf4j/Logger; u field_3044 LOGGER + f Lfzv; v field_3037 pinger + f Lfod; w field_3049 lastScreen + f Lfzu; x field_3040 servers + f Lfim; y field_3041 editButton + f Lfim; z field_3050 selectButton + m ()V C method_20121 onSelectedChange + m ()Lfzv; D method_2538 getPinger + m ()Lfzu; E method_2529 getServers + m ()V F method_2534 refreshServerList + m (Lfim;)V a method_19912 method_19912 + m (Lfqx$a;)V a method_2531 setSelected + m (Lfzt;)V a method_2548 join + m (Lfim;)V b method_19913 method_19913 + m (Lfim;)V c method_19914 method_19914 + m (Z)V c method_20377 deleteCallback + m (Lfim;)V d method_19915 method_19915 + m (Lfim;)V e method_19916 method_19916 + m (Lfim;)V f method_19917 method_19917 + m (Z)V f method_20378 editServerCallback + m (Lfim;)V g method_19918 method_19918 + m (Z)V g method_20379 addServerCallback + m (Z)V h method_20380 directJoinCallback + m ()V m method_2536 joinSelectedServer + m (Lfod;)V + m ()V +c fqu net/minecraft/class_4749 net/minecraft/client/gui/screens/multiplayer/SafetyScreen + f Lwz; b field_21843 TITLE + f Lwz; c field_21844 CONTENT + f Lwz; r field_21845 CHECK + f Lwz; s field_21846 NARRATION + f Lfod; u field_39354 previous + m (Lfim;)V a method_57751 method_57751 + m (Lfim;)V b method_57752 method_57752 + m (Lfod;)V + m ()V +c fqv net/minecraft/class_9807 net/minecraft/client/gui/screens/multiplayer/ServerLinksScreen + f I a field_52143 LINK_BUTTON_WIDTH + f I b field_52144 DEFAULT_ITEM_HEIGHT + f Lwz; c field_52145 TITLE + f Lfod; r field_52146 lastScreen + f Lfqv$a; s field_52147 list + f Lflz; u field_52148 layout + f Lalj; v field_52149 links + m (Lfim;)V a method_60875 method_60875 + m (Lfqv;Lfki;)V a method_60876 method_60876 + m (Lfod;Lalj;)V + m ()V +c fqv$a net/minecraft/class_9807$class_9808 net/minecraft/client/gui/screens/multiplayer/ServerLinksScreen$LinkList + m (ILfqv$b;)V a method_60877 method_60877 + m (Lfqv;Lalj$a;)V a method_60878 method_60878 + m (Lfgo;ILfqv;)V +c fqv$b net/minecraft/class_9807$class_9809 net/minecraft/client/gui/screens/multiplayer/ServerLinksScreen$LinkListEntry + f Lfik; a field_52150 button + m (Lfod;Lalj$a;)V +c fqw net/minecraft/class_8671 net/minecraft/client/gui/screens/multiplayer/ServerReconfigScreen + f I a field_45508 DISCONNECT_TIME + f Lvt; b field_45509 connection + f Lfim; c field_45510 disconnectButton + f I r field_45511 delayTicker + f Lfmd; s field_45512 layout + m (Lfim;)V a method_52757 method_52757 + m (Lfqw;Lfki;)V a method_52758 method_52758 + m (Lwz;Lvt;)V +c fqx net/minecraft/class_4267 net/minecraft/client/gui/screens/multiplayer/ServerSelectionList + f Lakr; A field_45530 MOVE_UP_HIGHLIGHTED_SPRITE + f Lakr; B field_45513 MOVE_UP_SPRITE + f Lakr; C field_45514 MOVE_DOWN_HIGHLIGHTED_SPRITE + f Lakr; D field_45515 MOVE_DOWN_SPRITE + f Lorg/slf4j/Logger; E field_19104 LOGGER + f Ljava/util/concurrent/ThreadPoolExecutor; F field_19105 THREAD_POOL + f Lwz; G field_26581 SCANNING_LABEL + f Lwz; H field_26582 CANT_RESOLVE_TEXT + f Lwz; I field_26583 CANT_CONNECT_TEXT + f Lwz; J field_41853 INCOMPATIBLE_STATUS + f Lwz; K field_41854 NO_CONNECTION_STATUS + f Lwz; L field_41855 PINGING_STATUS + f Lwz; M field_41856 ONLINE_STATUS + f Lfqt; N field_19108 screen + f Ljava/util/List; O field_19109 onlineServers + f Lfqx$a; P field_19110 lanHeader + f Ljava/util/List; Q field_19111 networkServers + f Lakr; a field_45516 INCOMPATIBLE_SPRITE + f Lakr; m field_45517 UNREACHABLE_SPRITE + f Lakr; n field_45518 PING_1_SPRITE + f Lakr; o field_45519 PING_2_SPRITE + f Lakr; p field_45520 PING_3_SPRITE + f Lakr; q field_45521 PING_4_SPRITE + f Lakr; r field_45522 PING_5_SPRITE + f Lakr; s field_45523 PINGING_1_SPRITE + f Lakr; u field_45524 PINGING_2_SPRITE + f Lakr; v field_45525 PINGING_3_SPRITE + f Lakr; w field_45526 PINGING_4_SPRITE + f Lakr; x field_45527 PINGING_5_SPRITE + f Lakr; y field_45528 JOIN_HIGHLIGHTED_SPRITE + f Lakr; z field_45529 JOIN_SPRITE + m ()V J method_20131 refreshEntries + m (Lfqx$a;)V a method_20122 setSelected + m (Lfqx;I)I a method_20124 method_20124 + m (Lfqx;Lfih$a;)V a method_22109 method_22109 + m (Lfzu;)V a method_20125 updateOnlineServers + m (Ljava/util/List;)V a method_20126 updateNetworkServers + m (Lfqx;Lfih$a;)V b method_36888 method_36888 + m ()V c method_52204 removed + m (Lfqx;Lfih$a;)V c method_36889 method_36889 + m (Lfqt;Lfgo;IIII)V + m ()V +c fqx$1 net/minecraft/class_4267$1 net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$1 + f [I a field_47851 $SwitchMap$net$minecraft$client$multiplayer$ServerData$State + m ()V +c fqx$a net/minecraft/class_4267$class_504 net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$Entry + m ()V +c fqx$b net/minecraft/class_4267$class_4268 net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$LANHeader + f Lfgo; a field_19112 minecraft + m ()V +c fqx$c net/minecraft/class_4267$class_4269 net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$NetworkServerEntry + f Lfgo; a field_19113 minecraft + f Lgup; b field_19114 serverData + f I c field_32386 ICON_WIDTH + f Lwz; d field_26588 LAN_SERVER_HEADER + f Lwz; e field_26589 HIDDEN_ADDRESS_TEXT + f Lfqt; f field_19115 screen + f J g field_19116 lastClickTime + m ()Lgup; b method_20132 getServerData + m ()Lwz; c method_48273 getServerNarration + m (Lfqt;Lgup;)V + m ()V +c fqx$d net/minecraft/class_4267$class_4270 net/minecraft/client/gui/screens/multiplayer/ServerSelectionList$OnlineServerEntry + f Lfqx; a field_19117 field_19117 + f I b field_32387 ICON_WIDTH + f I c field_32388 ICON_HEIGHT + f I d field_47852 SPACING + f I e field_47853 STATUS_ICON_WIDTH + f I f field_47854 STATUS_ICON_HEIGHT + f Lfqt; g field_19118 screen + f Lfgo; h field_19119 minecraft + f Lfzt; i field_19120 serverData + f Lfnn; j field_19123 icon + f [B k field_42874 lastIconBytes + f J l field_19124 lastClickTime + f Ljava/util/List; m field_47855 onlinePlayersTooltip + f Lakr; n field_47856 statusIcon + f Lwz; o field_47857 statusIconTooltip + m (II)V a method_22110 swap + m (Lfhz;IILakr;)V a method_20134 drawIcon + m ([B)Z a method_49300 uploadServerIcon + m ()V b method_29978 updateServerList + m ()Lfzt; c method_20133 getServerData + m ()V d method_55815 refreshStatus + m ()Z e method_20136 canJoin + m ()V f method_20138 method_20138 + m ()V h method_55816 method_55816 + m ()V i method_29980 method_29980 + m (Lfqx;Lfqt;Lfzt;)V +c fqy net/minecraft/class_7065 net/minecraft/client/gui/screens/multiplayer/WarningScreen + f Lfio; a field_37217 stopShowing + f I b field_49538 MESSAGE_PADDING + f Lwz; c field_37222 message + f Lwz; r field_37220 check + f Lwz; s field_37221 narration + f Lfix; u field_49539 messageWidget + f Lflx; v field_49540 layout + m (Lfmc;)V a method_57753 method_57753 + m (Lfqy;Lfki;)V a method_57754 method_57754 + m ()Lfma; m method_57750 addFooterButtons + m (Lwz;Lwz;Lwz;)V + m (Lwz;Lwz;Lwz;Lwz;)V +c fqz net/minecraft/class_6218 net/minecraft/client/gui/screens/multiplayer/package-info +c fra net/minecraft/class_4189 net/minecraft/client/gui/screens/options/AccessibilityOptionsScreen + f Lwz; a field_49492 TITLE + m (Lfgs;)[Lfgr; a method_41839 options + m (Lfim;)V a method_31384 method_31384 + m (Lfod;Lfgs;)V + m ()V +c frb net/minecraft/class_404 net/minecraft/client/gui/screens/options/ChatOptionsScreen + f Lwz; a field_49493 TITLE + m (Lfgs;)[Lfgr; a method_60327 options + m (Lfod;Lfgs;)V + m ()V +c frc net/minecraft/class_9246 net/minecraft/client/gui/screens/options/FontOptionsScreen + m (Lfgs;)[Lfgr; a method_57041 options + m (Lfod;Lfgs;)V +c frd net/minecraft/class_426 net/minecraft/client/gui/screens/options/LanguageSelectScreen + f Lwz; a field_26543 WARNING_LABEL + f I u field_49497 FOOTER_HEIGHT + f Lfrd$a; v field_2486 languageSelectionList + f Lgrt; w field_2488 languageManager + m ()V F method_52184 onDone + m (Lfim;)V a method_57729 method_57729 + m (Lfrd;)Lfhx; a method_60328 method_60328 + m (Lfim;)V b method_57730 method_57730 + m (Lfrd;)Lfhx; b method_61043 method_61043 + m (Lfod;Lfgs;Lgrt;)V + m ()V +c frd$a net/minecraft/class_426$class_4195 net/minecraft/client/gui/screens/options/LanguageSelectScreen$LanguageSelectionList + f Lfrd; a field_18744 field_18744 + m (Lfrd$a;)I a method_20101 method_20101 + m (Ljava/lang/String;Ljava/lang/String;Lgrs;)V a method_48261 method_48261 + m (Lfrd;Lfgo;)V +c frd$a$a net/minecraft/class_426$class_4195$class_4194 net/minecraft/client/gui/screens/options/LanguageSelectScreen$LanguageSelectionList$Entry + f Lfrd$a; a field_19100 field_19100 + f Ljava/lang/String; b field_41846 code + f Lwz; c field_18743 language + f J d field_44921 lastClickTime + m ()V b method_19381 select + m (Lfrd$a;Ljava/lang/String;Lgrs;)V +c fre net/minecraft/class_4288 net/minecraft/client/gui/screens/options/MouseSettingsScreen + f Lwz; a field_49498 TITLE + m (I)[Lfgr; a method_60330 method_60330 + m (Lfgs;)[Lfgr; a method_41841 options + m (Lfod;Lfgs;)V + m ()V +c frf net/minecraft/class_6777 net/minecraft/client/gui/screens/options/OnlineOptionsScreen + f Lwz; a field_49500 TITLE + f Lfgr; u field_41344 difficultyDisplay + m (Lbqo;Lwz;Lcom/mojang/datafixers/util/Unit;)Lwz; a method_60331 method_60331 + m (Lcom/mojang/datafixers/util/Unit;)V a method_60332 method_60332 + m (Lfgs;Lfgo;)[Lfgr; a method_60333 options + m (Lfzf;)Lfgr; a method_60334 method_60334 + m (Lfod;Lfgs;)V + m ()V +c frg net/minecraft/class_429 net/minecraft/client/gui/screens/options/OptionsScreen + f Lwz; A field_43145 CREDITS_AND_ATTRIBUTION + f I B field_41354 COLUMNS + f Lflz; C field_49502 layout + f Lfod; D field_2501 lastScreen + f Lfgs; E field_2502 options + f Lfit; F field_2500 difficultyButton + f Lfjc; G field_2503 lockButton + f Lwz; a field_49501 TITLE + f Lwz; b field_41345 SKIN_CUSTOMIZATION + f Lwz; c field_41346 SOUNDS + f Lwz; r field_41347 VIDEO + f Lwz; s field_41348 CONTROLS + f Lwz; u field_41349 LANGUAGE + f Lwz; v field_41350 CHAT + f Lwz; w field_41351 RESOURCEPACK + f Lwz; x field_41352 ACCESSIBILITY + f Lwz; y field_41353 TELEMETRY + f Lfjx; z field_50221 TELEMETRY_DISABLED_TOOLTIP + m ()Lfod; C method_49740 method_49740 + m ()Lfod; D method_47629 method_47629 + m ()Lfod; E method_47630 method_47630 + m ()Lfod; F method_47631 method_47631 + m ()Lfod; G method_19825 method_19825 + m ()Lfod; J method_19826 method_19826 + m ()Lfod; K method_19827 method_19827 + m ()Lfod; L method_19828 method_19828 + m ()Lfod; M method_19829 method_19829 + m ()Lfod; N method_19830 method_19830 + m (IILjava/lang/String;Lfgo;)Lfit; a method_39486 createDifficultyButton + m (Latp;)V a method_49626 applyPacks + m (Lfgo;Lfit;Lbqo;)V a method_39487 method_39487 + m (Lfim;)V a method_47623 method_47623 + m (Lfrg;Lfki;)V a method_60335 method_60335 + m (Ljava/util/function/Supplier;Lfim;)V a method_47624 method_47624 + m (Lwz;Ljava/util/function/Supplier;)Lfim; a method_47625 openScreenButton + m (Lfim;)V b method_47626 method_47626 + m (Lfim;)V c method_47627 method_47627 + m (Z)V c method_20374 lockCallback + m ()Lfmb; m method_47628 createOnlineButton + m (Lfod;Lfgs;)V + m ()V +c frh net/minecraft/class_4667 net/minecraft/client/gui/screens/options/OptionsSubScreen + f Lfod; b field_21335 lastScreen + f Lfgs; c field_21336 options + f Lfjj; r field_51824 list + f Lflz; s field_49503 layout + m ()V C method_31387 addFooter + m ()V D method_60329 addContents + m ()V E method_57732 addTitle + m (Lfim;)V a method_57731 method_57731 + m (Lfrh;Lfki;)V a method_60336 method_60336 + m ()V m method_60325 addOptions + m (Lfod;Lfgs;Lwz;)V +c fri net/minecraft/class_440 net/minecraft/client/gui/screens/options/SkinCustomizationScreen + f Lwz; a field_49512 TITLE + m (Lcmy;Lfit;Ljava/lang/Boolean;)V a method_60337 method_60337 + m (Lfod;Lfgs;)V + m ()V +c frj net/minecraft/class_443 net/minecraft/client/gui/screens/options/SoundOptionsScreen + f Lwz; a field_49513 TITLE + m ()[Lfgr; F method_45631 getAllSoundOptionsExceptMaster + m (I)[Lfgr; a method_45627 method_45627 + m (Lavq;)Lfgr; a method_45628 method_45628 + m (Lfgs;)[Lfgr; a method_45629 buttonOptions + m (Lavq;)Z b method_45630 method_45630 + m (Lfod;Lfgs;)V + m ()V +c frk net/minecraft/class_5405 net/minecraft/client/gui/screens/options/UnsupportedGraphicsWarningScreen + f I a field_32260 BUTTON_PADDING + f I b field_32261 BUTTON_MARGIN + f I c field_32262 BUTTON_HEIGHT + f Lwz; r field_33811 narrationMessage + f Ljava/util/List; s field_25675 message + f Lcom/google/common/collect/ImmutableList; u field_25676 buttonOptions + f Lfjf; v field_25677 messageLines + f I w field_25678 contentTop + f I x field_25679 buttonWidth + m (Lwz;Ljava/util/List;Lcom/google/common/collect/ImmutableList;)V +c frk$a net/minecraft/class_5405$class_5406 net/minecraft/client/gui/screens/options/UnsupportedGraphicsWarningScreen$ButtonOption + f Lwz; a field_25680 message + f Lfim$c; b field_25681 onPress + m (Lwz;Lfim$c;)V +c frl net/minecraft/class_446 net/minecraft/client/gui/screens/options/VideoSettingsScreen + f I A field_19186 oldMipmaps + f Lwz; a field_49515 TITLE + f Lwz; u field_25682 FABULOUS + f Lwz; v field_25683 WARNING_MESSAGE + f Lwz; w field_25684 WARNING_TITLE + f Lwz; x field_25685 BUTTON_ACCEPT + f Lwz; y field_25686 BUTTON_CANCEL + f Lget; z field_25688 gpuWarnlistManager + m (Lfah;Lfam;Ljava/lang/Integer;)V a method_60338 method_60338 + m (Lfah;Lwz;Ljava/lang/Integer;)Lwz; a method_60339 method_60339 + m (Lfgs;)[Lfgr; a method_41846 options + m (Lfim;)V a method_30052 method_30052 + m (Lfim;)V b method_30053 method_30053 + m (Lfod;Lfgo;Lfgs;)V + m ()V +c frm net/minecraft/class_458 net/minecraft/client/gui/screens/options/controls/ControlsScreen + f Lwz; a field_49532 TITLE + m (Lfgs;)[Lfgr; a method_58232 options + m (Lfim;)V a method_60340 method_60340 + m (Lfim;)V b method_60341 method_60341 + m (Lfod;Lfgs;)V + m ()V +c frn net/minecraft/class_459 net/minecraft/client/gui/screens/options/controls/KeyBindsList + f I a field_49533 ITEM_HEIGHT + f Lfro; m field_2735 keyBindsScreen + f I n field_2733 maxNameWidth + m ()V J method_49007 refreshEntries + m (Lfrn;)Lfgo; a method_36885 method_36885 + m (Lfrn;)Lfgo; b method_20110 method_20110 + m ()V c method_49006 resetMappingAndUpdateButtons + m (Lfrn;)I c method_57745 method_57745 + m (Lfrn;)Lfgo; d method_20112 method_20112 + m (Lfrn;)I e method_57746 method_57746 + m (Lfrn;)Lfgo; f method_20115 method_20115 + m (Lfrn;)Lfgo; g method_20116 method_20116 + m (Lfrn;)Lfgo; h method_20114 method_20114 + m (Lfrn;)Lfgo; i method_57747 method_57747 + m (Lfro;Lfgo;)V +c frn$a net/minecraft/class_459$class_460 net/minecraft/client/gui/screens/options/controls/KeyBindsList$CategoryEntry + f Lfrn; a field_2738 field_2738 + f Lwz; b field_2736 name + f I c field_2737 width + m (Lfrn;Lwz;)V +c frn$a$1 net/minecraft/class_459$class_460$1 net/minecraft/client/gui/screens/options/controls/KeyBindsList$CategoryEntry$1 + f Lfrn$a; a field_33831 field_33831 + m (Lfrn$a;)V +c frn$b net/minecraft/class_459$class_461 net/minecraft/client/gui/screens/options/controls/KeyBindsList$Entry + m ()V c method_48269 refreshEntry + m ()V +c frn$c net/minecraft/class_459$class_462 net/minecraft/client/gui/screens/options/controls/KeyBindsList$KeyEntry + f Lfrn; a field_2742 field_2742 + f Lwz; b field_49534 RESET_BUTTON_TITLE + f I c field_49535 PADDING + f Lfgm; d field_2740 key + f Lwz; e field_2741 name + f Lfim; f field_2739 changeButton + f Lfim; g field_2743 resetButton + f Z h field_42497 hasCollision + m (Lfgm;Lfim;)V a method_19870 method_19870 + m (Lfgm;Lwz;Ljava/util/function/Supplier;)Lxn; a method_46514 method_46514 + m (Lwz;Ljava/util/function/Supplier;)Lxn; a method_46515 method_46515 + m (Lfgm;Lfim;)V b method_19871 method_19871 + m (Lfrn;Lfgm;Lwz;)V + m ()V +c fro net/minecraft/class_6599 net/minecraft/client/gui/screens/options/controls/KeyBindsScreen + f Lfgm; a field_34799 selectedKey + f J u field_34800 lastKeySelection + f Lwz; v field_49536 TITLE + f Lfrn; w field_34801 keyBindsList + f Lfim; x field_34802 resetButton + m (Lfim;)V a method_57748 method_57748 + m (Lfim;)V b method_60342 method_60342 + m (Lfod;Lfgs;)V + m ()V +c frp net/minecraft/class_9755 net/minecraft/client/gui/screens/options/controls/package-info +c frq net/minecraft/class_9756 net/minecraft/client/gui/screens/options/package-info +c frr net/minecraft/class_6219 net/minecraft/client/gui/screens/package-info +c frs net/minecraft/class_5369 net/minecraft/client/gui/screens/packs/PackSelectionModel + f Latp; a field_25626 repository + f Ljava/util/List; b field_25455 selected + f Ljava/util/List; c field_25456 unselected + f Ljava/util/function/Function; d field_25785 iconGetter + f Ljava/lang/Runnable; e field_25458 onListChanged + f Ljava/util/function/Consumer; f field_25459 output + m ()Ljava/util/stream/Stream; a method_29639 getUnselected + m (Latm;)Lfrs$a; a method_29640 method_29640 + m ()Ljava/util/stream/Stream; b method_29643 getSelected + m (Latm;)Lfrs$a; b method_29644 method_29644 + m ()V c method_29642 commit + m ()V d method_29981 findNewPacks + m ()V e method_49627 updateRepoSelectedList + m (Ljava/lang/Runnable;Ljava/util/function/Function;Latp;Ljava/util/function/Consumer;)V +c frs$a net/minecraft/class_5369$class_5371 net/minecraft/client/gui/screens/packs/PackSelectionModel$Entry + m ()Lakr; a method_30286 getIconTexture + m ()Latn; b method_29648 getCompatibility + m ()Ljava/lang/String; c method_48276 getId + m ()Lwz; d method_29650 getTitle + m ()Lwz; e method_29651 getDescription + m ()Latq; f method_29652 getPackSource + m ()Lwz; g method_29653 getExtendedDescription + m ()Z h method_29654 isFixedPosition + m ()Z i method_29655 isRequired + m ()V j method_29656 select + m ()V k method_29657 unselect + m ()V l method_29658 moveUp + m ()V m method_29659 moveDown + m ()Z n method_29660 isSelected + m ()Z o method_29661 canSelect + m ()Z p method_29662 canUnselect + m ()Z q method_29663 canMoveUp + m ()Z r method_29664 canMoveDown +c frs$b net/minecraft/class_5369$class_5372 net/minecraft/client/gui/screens/packs/PackSelectionModel$EntryBase + f Lfrs; a field_25460 field_25460 + f Latm; b field_25461 pack + m (I)V a method_29665 move + m ()Ljava/util/List; s method_29666 getSelfList + m ()Ljava/util/List; t method_29667 getOtherList + m ()V u method_29668 toggleSelection + m ()V v method_49628 updateHighContrastOptionInstance + m (Lfrs;Latm;)V +c frs$c net/minecraft/class_5369$class_5373 net/minecraft/client/gui/screens/packs/PackSelectionModel$SelectedPackEntry + f Lfrs; b field_25462 field_25462 + m (Lfrs;Latm;)V +c frs$d net/minecraft/class_5369$class_5374 net/minecraft/client/gui/screens/packs/PackSelectionModel$UnselectedPackEntry + f Lfrs; b field_25463 field_25463 + m (Lfrs;Latm;)V +c frt net/minecraft/class_5375 net/minecraft/client/gui/screens/packs/PackSelectionScreen + f Lfrt$a; A field_25787 watcher + f J B field_25788 ticksToReload + f Lfru; C field_25472 availablePackList + f Lfru; D field_25473 selectedPackList + f Ljava/nio/file/Path; E field_25474 packDir + f Lfim; F field_25475 doneButton + f Ljava/util/Map; G field_25789 packIcons + f Lorg/slf4j/Logger; a field_25464 LOGGER + f Lwz; b field_49541 AVAILABLE_TITLE + f Lwz; c field_49542 SELECTED_TITLE + f Lwz; r field_49543 OPEN_PACK_FOLDER_TITLE + f I s field_32395 LIST_WIDTH + f Lwz; u field_25465 DRAG_AND_DROP + f Lwz; v field_25466 DIRECTORY_BUTTON_TOOLTIP + f I w field_32396 RELOAD_COOLDOWN + f Lakr; x field_25786 DEFAULT_ICON + f Lflz; y field_49544 layout + f Lfrs; z field_25468 model + m ()V C method_30291 closeWatcher + m ()V D method_29678 populateLists + m ()V E method_29680 reload + m ()V F method_54593 method_54593 + m ()V G method_54594 method_54594 + m (Latm;)Lakr; a method_30287 getPackIcon + m (Latm;Ljava/lang/String;)Lakr; a method_30288 method_30288 + m (Lfgo;Ljava/util/List;Ljava/nio/file/Path;)V a method_29669 copyPacks + m (Lfim;)V a method_29982 method_29982 + m (Lfrt;Lfki;)V a method_57755 method_57755 + m (Lfru;)V a method_48277 updateFocus + m (Lfru;Ljava/lang/String;Lfrs$a;)V a method_29672 method_29672 + m (Lfru;Ljava/util/stream/Stream;)V a method_29673 updateList + m (Lgqm;Latm;)Lakr; a method_30289 loadPackIcon + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Lorg/apache/commons/lang3/mutable/MutableBoolean;Ljava/nio/file/Path;)V a method_29674 method_29674 + m (Ljava/nio/file/Path;Lorg/apache/commons/lang3/mutable/MutableBoolean;Ljava/nio/file/Path;)V a method_29675 method_29675 + m (Ljava/util/Collection;)Ljava/util/stream/Stream; a method_52760 extractPackNames + m (Ljava/util/List;Z)V a method_29676 method_29676 + m (Lfim;)V b method_29670 method_29670 + m ()V m method_48278 clearSelected + m (Latp;Ljava/util/function/Consumer;Ljava/nio/file/Path;Lwz;)V + m ()V +c frt$1 net/minecraft/class_5375$1 net/minecraft/client/gui/screens/packs/PackSelectionScreen$1 + m (Ljava/nio/file/Path;)Ljava/nio/file/Path; a method_52761 createZipPack + m (Ljava/nio/file/Path;)Ljava/nio/file/Path; b method_52762 createDirectoryPack + m (Lfrt;Lews;)V +c frt$a net/minecraft/class_5375$class_5426 net/minecraft/client/gui/screens/packs/PackSelectionScreen$Watcher + f Ljava/nio/file/WatchService; a field_25790 watcher + f Ljava/nio/file/Path; b field_25791 packPath + m ()Z a method_30292 pollForChanges + m (Ljava/nio/file/Path;)Lfrt$a; a method_30293 create + m (Ljava/nio/file/Path;)V b method_30294 watchDir + m (Ljava/nio/file/Path;)V +c fru net/minecraft/class_521 net/minecraft/client/gui/screens/packs/TransferableSelectionList + f Lakr; a field_45532 SELECT_HIGHLIGHTED_SPRITE + f Lakr; m field_45533 SELECT_SPRITE + f Lakr; n field_45534 UNSELECT_HIGHLIGHTED_SPRITE + f Lakr; o field_45535 UNSELECT_SPRITE + f Lakr; p field_45536 MOVE_UP_HIGHLIGHTED_SPRITE + f Lakr; q field_45537 MOVE_UP_SPRITE + f Lakr; r field_45538 MOVE_DOWN_HIGHLIGHTED_SPRITE + f Lakr; s field_45539 MOVE_DOWN_SPRITE + f Lwz; u field_19126 INCOMPATIBLE_TITLE + f Lwz; v field_19127 INCOMPATIBLE_CONFIRM_TITLE + f Lwz; w field_18978 title + f Lfrt; x field_41715 screen + m (Lfru;)Z a method_58491 method_58491 + m (Lfru;I)I a method_20140 method_20140 + m (Lfgo;Lfrt;IILwz;)V + m ()V +c fru$a net/minecraft/class_521$class_4271 net/minecraft/client/gui/screens/packs/TransferableSelectionList$PackEntry + f Lfgo; a field_19128 minecraft + f I b field_32403 MAX_DESCRIPTION_WIDTH_PIXELS + f I c field_32404 MAX_NAME_WIDTH_PIXELS + f Ljava/lang/String; d field_32405 TOO_LONG_NAME_SUFFIX + f Lfru; e field_19130 parent + f Lfrs$a; f field_19129 pack + f Laya; g field_26590 nameDisplayCache + f Lfjf; h field_26591 descriptionDisplayCache + f Laya; i field_26784 incompatibleNameDisplayCache + f Lfjf; j field_26785 incompatibleDescriptionDisplayCache + m (Lfgo;Lwz;)Laya; a method_31229 cacheName + m ()Ljava/lang/String; b method_48279 getPackId + m (Lfgo;Lwz;)Lfjf; b method_31230 cacheDescription + m (Z)V b method_48477 method_48477 + m ()V c method_48280 keyboardSelection + m ()Z d method_20152 showHoverOverlay + m ()V e method_48281 keyboardMoveUp + m ()V f method_48282 keyboardMoveDown + m ()Z h method_48478 handlePackSelection + m (Lfgo;Lfru;Lfrs$a;)V +c frv net/minecraft/class_6220 net/minecraft/client/gui/screens/packs/package-info +c frw net/minecraft/class_517 net/minecraft/client/gui/screens/recipebook/AbstractFurnaceRecipeBookComponent + f Lfjz; i field_45540 FILTER_SPRITES + f Lcyw; j field_3149 fuels + m (Lcul;)Z a method_49301 method_49301 + m ()Ljava/util/Set; b method_17065 getFuelItems + m ()V + m ()V +c frx net/minecraft/class_3875 net/minecraft/client/gui/screens/recipebook/BlastingRecipeBookComponent + f Lwz; i field_26592 FILTER_NAME + m ()V + m ()V +c fry net/minecraft/class_505 net/minecraft/client/gui/screens/recipebook/GhostRecipe + f Lczb; a field_3079 recipe + f Ljava/util/List; b field_3081 ingredients + f F c field_3080 time + m ()V a method_2571 clear + m (I)Lfry$a; a method_2570 get + m (Lcyw;II)V a method_2569 addIngredient + m (Lczb;)V a method_2565 setRecipe + m (Lfhz;Lfgo;IIZF)V a method_2567 render + m ()I b method_2572 size + m ()Lczb; c method_2566 getRecipe + m ()V +c fry$a net/minecraft/class_505$class_506 net/minecraft/client/gui/screens/recipebook/GhostRecipe$GhostIngredient + f Lfry; a field_3085 field_3085 + f Lcyw; b field_3082 ingredient + f I c field_3084 x + f I d field_3083 y + m ()I a method_2574 getX + m ()I b method_2575 getY + m ()Lcuq; c method_2573 getItem + m (Lfry;Lcyw;II)V +c frz net/minecraft/class_508 net/minecraft/client/gui/screens/recipebook/OverlayRecipeComponent + f I a field_42162 BUTTON_SIZE + f Lakr; b field_45541 OVERLAY_RECIPE_SPRITE + f Lakr; c field_45542 FURNACE_OVERLAY_HIGHLIGHTED_SPRITE + f Lakr; d field_45543 FURNACE_OVERLAY_SPRITE + f Lakr; e field_45544 CRAFTING_OVERLAY_HIGHLIGHTED_SPRITE + f Lakr; f field_45545 CRAFTING_OVERLAY_SPRITE + f Lakr; g field_45546 FURNACE_OVERLAY_DISABLED_HIGHLIGHTED_SPRITE + f Lakr; h field_45547 FURNACE_OVERLAY_DISABLED_SPRITE + f Lakr; i field_45548 CRAFTING_OVERLAY_DISABLED_HIGHLIGHTED_SPRITE + f Lakr; j field_45549 CRAFTING_OVERLAY_DISABLED_SPRITE + f I k field_32406 MAX_ROW + f I l field_32407 MAX_ROW_LARGE + f F m field_33739 ITEM_RENDER_SCALE + f Ljava/util/List; n field_3106 recipeButtons + f Z o field_3107 isVisible + f I p field_3105 x + f I q field_3103 y + f Lfgo; r field_3108 minecraft + f Lfse; s field_3111 collection + f Lczb; u field_3104 lastRecipeClicked + f F v field_3110 time + f Z w field_3112 isFurnaceMenu + m ()Lfse; a method_2614 getRecipeCollection + m (Lfgo;Lfse;IIIIF)V a method_2617 init + m ()Lczb; b method_2615 getLastRecipeClicked + m (Z)V b method_2613 setVisible + m ()Z c method_2616 isVisible + m ()V + m ()V +c frz$a net/minecraft/class_508$class_509 net/minecraft/client/gui/screens/recipebook/OverlayRecipeComponent$OverlayRecipeButton + f Ljava/util/List; a field_3116 ingredientPos + f Lfrz; b field_3113 field_3113 + f Lczb; c field_3114 recipe + f Z d field_3115 isCraftable + m (Lcyw;IIII)V a method_60343 addItemToSlot + m (Lczb;)V a method_2619 calculateIngredientsPositions + m (Lfrz;IILczb;Z)V +c frz$a$a net/minecraft/class_508$class_509$class_510 net/minecraft/client/gui/screens/recipebook/OverlayRecipeComponent$OverlayRecipeButton$Pos + f [Lcuq; a field_3120 ingredients + f I b field_3119 x + f I c field_3118 y + m (Lfrz$a;II[Lcuq;)V +c frz$b net/minecraft/class_508$class_511 net/minecraft/client/gui/screens/recipebook/OverlayRecipeComponent$OverlaySmeltingRecipeButton + m (Lfrz;IILczb;Z)V +c fsa net/minecraft/class_507 net/minecraft/client/gui/screens/recipebook/RecipeBookComponent + f Z A field_33679 visible + f Z B field_34001 widthTooNarrow + f Lfjz; a field_45550 RECIPE_BUTTON_SPRITES + f Lakr; b field_3097 RECIPE_BOOK_LOCATION + f I c field_32408 IMAGE_WIDTH + f I d field_32409 IMAGE_HEIGHT + f Lfry; e field_3092 ghostRecipe + f Lfjs; f field_3088 filterButton + f Lcri; g field_3095 menu + f Lfgo; h field_3091 minecraft + f Lfjz; i field_45551 FILTER_BUTTON_SPRITES + f Lwz; j field_25711 SEARCH_HINT + f I k field_32410 OFFSET_X_POSITION + f Lwz; l field_26593 ONLY_CRAFTABLES_TOOLTIP + f Lwz; m field_26594 ALL_RECIPES_TOOLTIP + f I n field_3102 xOffset + f I o field_3101 width + f I p field_3100 height + f Ljava/util/List; q field_3094 tabButtons + f Lfsc; r field_3098 selectedTab + f Lfiv; s field_3089 searchBox + f Ljava/lang/String; u field_3099 lastSearch + f Lfga; v field_3096 book + f Lfsb; w field_3086 recipeBookPage + f Lcnb; x field_3090 stackedContents + f I y field_3093 timesInventoryChanged + f Z z field_3087 ignoreTextInput + m ()V a method_2585 initFilterButtonTextures + m (DDIIIII)Z a method_2598 hasClickedOutside + m (II)I a method_2595 updateScreenPosition + m (IILfgo;ZLcri;)V a method_2597 init + m (Lcrq;)V a method_2600 slotClicked + m (Lcyw;IIII)V a method_60344 addItemToSlot + m (Lczb;Ljava/util/List;)V a method_2596 setupGhostRecipe + m (Lfhz;IIII)V a method_2601 renderTooltip + m (Lfhz;IIZF)V a method_2581 renderGhostRecipe + m (Lfsc;)Z a method_2582 method_2582 + m (Lfse;)Z a method_2584 method_2584 + m (Lit/unimi/dsi/fastutil/objects/ObjectSet;Lfse;)Z a method_53871 method_53871 + m (Ljava/lang/String;)V a method_2576 pirateSpeechForThePeople + m (Ljava/util/List;Lfik;)V a method_37308 method_37308 + m ()V b method_47429 updateFilterButtonTooltip + m (Lfhz;IIII)V b method_2602 renderGhostRecipeTooltip + m (Lfse;)Z b method_2583 method_2583 + m (Z)V b method_2593 setVisible + m ()Lwz; c method_17064 getRecipeFilterName + m (Lfse;)Z c method_2580 method_2580 + m (Z)V c method_2603 updateCollections + m ()V d method_2579 initVisuals + m (Lfse;)V d method_2577 method_2577 + m ()V e method_2591 toggleVisibility + m ()Z f method_2605 isVisible + m ()V h method_2590 tick + m ()V i method_2592 recipesUpdated + m ()V j method_2588 sendUpdateSettings + m ()Z k method_36485 isVisibleAccordingToBookData + m ()V l method_2606 updateTabs + m ()V m method_2587 updateStackedContents + m ()Z n method_2589 toggleFiltering + m ()V o method_2586 checkSearchStringUpdate + m ()Z p method_2604 isOffsetNextToMainGUI + m ()V + m ()V +c fsb net/minecraft/class_513 net/minecraft/client/gui/screens/recipebook/RecipeBookPage + f I a field_32411 ITEMS_PER_PAGE + f Lfjz; b field_45552 PAGE_FORWARD_SPRITES + f Lfjz; c field_45553 PAGE_BACKWARD_SPRITES + f Ljava/util/List; d field_3131 buttons + f Lfsd; e field_3129 hoveredButton + f Lfrz; f field_3132 overlay + f Lfgo; g field_3126 minecraft + f Ljava/util/List; h field_3134 showListeners + f Ljava/util/List; i field_3127 recipeCollections + f Lfjs; j field_3128 forwardButton + f Lfjs; k field_3130 backButton + f I l field_3124 totalPages + f I m field_3135 currentPage + f Lavs; n field_3136 recipeBook + f Lczb; o field_3125 lastClickedRecipe + f Lfse; p field_3133 lastClickedRecipeCollection + m ()Lczb; a method_2631 getLastClickedRecipe + m (DDIIIII)Z a method_2632 mouseClicked + m (Lfgo;II)V a method_2636 init + m (Lfhz;II)V a method_2628 renderTooltip + m (Lfhz;IIIIF)V a method_2634 render + m (Lfsa;)V a method_2630 addListener + m (Ljava/util/List;)V a method_2629 recipesShown + m (Ljava/util/List;Z)V a method_2627 updateCollections + m (Ljava/util/function/Consumer;)V a method_37083 listButtons + m ()Lfse; b method_2635 getLastClickedRecipeCollection + m ()V c method_2638 setInvisible + m ()Lfgo; d method_2637 getMinecraft + m ()Lavs; e method_2633 getRecipeBook + m ()V f method_2625 updateButtonsForPage + m ()V g method_2626 updateArrowButtons + m ()V + m ()V +c fsc net/minecraft/class_512 net/minecraft/client/gui/screens/recipebook/RecipeBookTabButton + f Lfjz; c field_45554 SPRITES + f Lfgw; d field_3123 category + f F e field_32412 ANIMATION_TIME + f F f field_3122 animationTime + m (Lfga;)Z a method_2624 updateVisibility + m (Lfgo;)V a method_2622 startAnimation + m (Lfhz;Lglh;)V a method_2621 renderIcon + m ()Lfgw; b method_2623 getCategory + m (Lfgw;)V + m ()V +c fsd net/minecraft/class_514 net/minecraft/client/gui/screens/recipebook/RecipeButton + f I a field_32413 TICKS_TO_SWAP + f Lakr; b field_45555 SLOT_MANY_CRAFTABLE_SPRITE + f Lakr; c field_45556 SLOT_CRAFTABLE_SPRITE + f Lakr; d field_45557 SLOT_MANY_UNCRAFTABLE_SPRITE + f Lakr; e field_45558 SLOT_UNCRAFTABLE_SPRITE + f F f field_32414 ANIMATION_TIME + f I m field_32415 BACKGROUND_SIZE + f Lwz; n field_26595 MORE_RECIPES_TOOLTIP + f Lcri; o field_3137 menu + f Lavs; p field_3138 book + f Lfse; q field_3142 collection + f F r field_3140 time + f F s field_3139 animationTime + f I u field_3141 currentIndex + m ()Lfse; a method_2645 getCollection + m (Lfse;Lfsb;)V a method_2640 init + m ()Z b method_2642 isOnlyOption + m ()Lczb; c method_2643 getRecipe + m ()Ljava/util/List; e method_2644 getTooltipText + m ()Ljava/util/List; f method_2639 getOrderedRecipes + m ()V + m ()V +c fse net/minecraft/class_516 net/minecraft/client/gui/screens/recipebook/RecipeCollection + f Lka; a field_42069 registryAccess + f Ljava/util/List; b field_3144 recipes + f Z c field_3148 singleResultItem + f Ljava/util/Set; d field_3146 craftable + f Ljava/util/Set; e field_3145 fitsDimensions + f Ljava/util/Set; f field_3147 known + m ()Lka; a method_48479 registryAccess + m (Lavs;)V a method_2647 updateKnownRecipes + m (Lcnb;IILavs;)V a method_2649 canCraft + m (Lczb;)Z a method_2653 isCraftable + m (Lka;Ljava/util/List;)Z a method_30295 allRecipesHaveSameResult + m (Z)Ljava/util/List; a method_2651 getRecipes + m ()Z b method_2652 hasKnownRecipes + m (Z)Ljava/util/List; b method_2648 getDisplayRecipes + m ()Z c method_2655 hasCraftable + m ()Z d method_2657 hasFitting + m ()Ljava/util/List; e method_2650 getRecipes + m ()Z f method_2656 hasSingleResultItem + m (Lka;Ljava/util/List;)V +c fsf net/minecraft/class_515 net/minecraft/client/gui/screens/recipebook/RecipeShownListener + m (Ljava/util/List;)V a method_2646 recipesShown +c fsg net/minecraft/class_518 net/minecraft/client/gui/screens/recipebook/RecipeUpdateListener + m ()V E method_16891 recipesUpdated + m ()Lfsa; F method_2659 getRecipeBookComponent +c fsh net/minecraft/class_3876 net/minecraft/client/gui/screens/recipebook/SmeltingRecipeBookComponent + f Lwz; i field_26596 FILTER_NAME + m ()V + m ()V +c fsi net/minecraft/class_3877 net/minecraft/client/gui/screens/recipebook/SmokingRecipeBookComponent + f Lwz; i field_26597 FILTER_NAME + m ()V + m ()V +c fsj net/minecraft/class_6221 net/minecraft/client/gui/screens/recipebook/package-info +c fsk net/minecraft/class_8768 net/minecraft/client/gui/screens/reporting/AbstractReportScreen + f Lgak$a; A field_46021 reportBuilder + f Lfim; B field_52300 sendButton + f Lwz; C field_46022 REPORT_SENT_MESSAGE + f Lwz; D field_46023 REPORT_SENDING_TITLE + f Lwz; E field_46024 REPORT_SENT_TITLE + f Lwz; F field_46025 REPORT_ERROR_TITLE + f Lwz; G field_46026 REPORT_SEND_GENERIC_ERROR + f Lwz; H field_46027 DESCRIBE_PLACEHOLDER + f Lwz; I field_46028 MORE_COMMENTS_NARRATION + f Lwz; J field_52301 ATTESTATION_CHECKBOX + f Lorg/slf4j/Logger; K field_46029 LOGGER + f Lfio; L field_52302 attestation + f Lwz; a field_46012 SEND_REPORT + f Lwz; b field_46013 OBSERVED_WHAT_LABEL + f Lwz; c field_46014 SELECT_REASON + f Lwz; r field_46015 MORE_COMMENTS_LABEL + f I s field_52303 BUTTON_WIDTH + f I u field_46016 MARGIN + f I v field_46017 SCREEN_WIDTH + f I w field_46018 SPACING + f Lfod; x field_46019 lastScreen + f Lgao; y field_46020 reportingContext + f Lfmd; z field_52304 layout + m ()V C method_61135 addContent + m ()V D method_61136 createFooter + m ()V E method_53586 onReportChanged + m ()V F method_53571 sendReport + m ()V G method_53559 onReportSendSuccess + m ()V J method_53560 saveDraft + m ()V K method_53561 clearDraft + m ()V L method_53562 method_53562 + m ()V M method_53563 method_53563 + m (IILjava/util/function/Consumer;)Lfje; a method_53564 createCommentBox + m (Lfim;)V a method_61137 method_61137 + m (Lfio;Z)V a method_61138 method_61138 + m (Lfsk;Lfki;)V a method_61139 method_61139 + m (Lgak$b;)V a method_53565 method_53565 + m (Lgak$c;)V a method_53566 method_53566 + m (Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object; a method_53567 method_53567 + m (Ljava/lang/Throwable;)V a method_53568 onReportSendError + m (Ljava/util/concurrent/CompletableFuture;)V a method_53569 method_53569 + m (Lwz;)V a method_53570 displayReportSendError + m (Lfim;)V b method_61140 method_61140 + m ()V m method_61141 createHeader + m (Lwz;Lfod;Lgao;Lgak$a;)V + m ()V +c fsk$a net/minecraft/class_8768$class_7539 net/minecraft/client/gui/screens/reporting/AbstractReportScreen$DiscardReportWarningScreen + f Lfsk; b field_39578 field_39578 + f Lwz; c field_39723 TITLE + f Lwz; r field_39724 MESSAGE + f Lwz; s field_39725 RETURN + f Lwz; u field_40794 DRAFT + f Lwz; v field_39726 DISCARD + m (Lfim;)V a method_57756 method_57756 + m (Lfim;)V b method_57757 method_57757 + m (Lfim;)V c method_57758 method_57758 + m (Lfsk;)V + m ()V +c fsl net/minecraft/class_7538 net/minecraft/client/gui/screens/reporting/ChatReportScreen + f Lwz; C field_46031 TITLE + f Lwz; D field_39574 SELECT_CHAT_MESSAGE + f Lfje; E field_46033 commentBox + f Lfim; F field_46034 selectMessagesButton + f Lfim; G field_46035 selectReasonButton + m (Lfim;)V a method_61142 method_61142 + m (Lfmc;)V a method_61143 method_61143 + m (Lgah$a;)V a method_61144 method_61144 + m (Lgam;)V a method_61145 method_61145 + m (Ljava/lang/String;)V a method_61146 method_61146 + m (Lfim;)V b method_61147 method_61147 + m (Lfod;Lgao;Lgah$a;)V + m (Lfod;Lgao;Ljava/util/UUID;)V + m (Lfod;Lgao;Lgah;)V + m ()V +c fsm net/minecraft/class_7541 net/minecraft/client/gui/screens/reporting/ChatSelectionLogFiller + f Lgaa; a field_39581 log + f Lgai; b field_40439 contextBuilder + f Ljava/util/function/Predicate; c field_39582 canReport + f Lxu; d field_40795 previousLink + f I e field_40440 eventId + f I f field_40441 missedCount + f Lxp; g field_40442 lastMessage + m (ILfsm$a;)V a method_44486 fillNextPage + m (Lfsm$a;Lgad$a;)Z a method_45664 acceptMessage + m (Lgao;Ljava/util/function/Predicate;)V +c fsm$a net/minecraft/class_7541$class_7542 net/minecraft/client/gui/screens/reporting/ChatSelectionLogFiller$Output + m (ILgad$a;)V a method_44490 acceptMessage + m (Lwz;)V a method_44492 acceptDivider +c fsn net/minecraft/class_7543 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen + f Lakr; a field_45559 CHECKMARK_SPRITE + f Lwz; b field_39727 TITLE + f Lwz; c field_39728 CONTEXT_INFO + f Lfod; r field_39584 lastScreen + f Lgao; s field_39585 reportingContext + f Lfim; u field_39586 confirmSelectedButton + f Lfjf; v field_39729 contextInfoLabel + f Lfsn$a; w field_39587 chatSelectionList + f Lgah$a; x field_39588 report + f Ljava/util/function/Consumer; y field_39589 onSelected + f Lfsm; z field_39590 chatLogFiller + m ()V C method_44507 onReachedScrollTop + m ()V D method_44509 updateConfirmSelectedButton + m (Lfim;)V a method_44493 method_44493 + m (Lfsn;)Lfhx; a method_44494 method_44494 + m (Lgad;)Z a method_44495 canReport + m (Lfim;)V b method_44496 method_44496 + m (Lfsn;)Lfhx; b method_44497 method_44497 + m (Lfsn;)Lfhx; c method_44499 method_44499 + m (Lfsn;)Lfhx; d method_44500 method_44500 + m (Lfsn;)Lfhx; e method_44501 method_44501 + m (Lfsn;)Lfhx; f method_44502 method_44502 + m (Lfsn;)Lfhx; g method_44726 method_44726 + m (Lfsn;)Lfhx; h method_44664 method_44664 + m (Lfsn;)Lfhx; i method_44506 method_44506 + m (Lfsn;)Lfhx; j method_44508 method_44508 + m (Lfsn;)Lfhx; k method_44505 method_44505 + m (Lfsn;)Lfhx; l method_44727 method_44727 + m ()V m method_44504 extendLog + m (Lfsn;)Lfhx; m method_44728 method_44728 + m (Lfod;Lgao;Lgah$a;Ljava/util/function/Consumer;)V + m ()V +c fsn$a net/minecraft/class_7543$class_7544 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen$ChatSelectionList + f Lfsn; a field_39592 field_39592 + f Lfsn$a$c; m field_39593 previousHeading + m ()I J method_44665 getFooterTop + m (Lfsn$a$b;)V a method_48283 setSelected + m (Lfsn$a;)Lfgo; a method_44510 method_44510 + m (Lgad$a;Z)V a method_44511 updateHeading + m (Lfmq;)Lfsn$a$b; b method_48284 nextEntry + m (Lfsn$a$b;)Z b method_44693 shouldHighlightEntry + m ()I c method_44513 getMaxVisibleEntries + m (Lfsn;Lfgo;I)V +c fsn$a$a net/minecraft/class_7543$class_7544$class_7545 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen$ChatSelectionList$DividerEntry + f Lfsn$a; a field_39594 field_39594 + f I b field_39595 COLOR + f Lwz; c field_39596 text + m (Lfsn$a;Lwz;)V +c fsn$a$b net/minecraft/class_7543$class_7544$class_7546 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen$ChatSelectionList$Entry + m ()Z b method_44514 isSelected + m ()Z c method_44515 canSelect + m ()Z d method_44694 canReport + m (Lfsn$a;)V +c fsn$a$c net/minecraft/class_7543$class_7544$class_7547 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen$ChatSelectionList$Heading + f Ljava/util/UUID; a comp_866 sender + f Lfsn$a$b; b comp_867 entry + m ()Ljava/util/UUID; a comp_866 sender + m (Lfsn$a$c;)Z a method_44516 canCombine + m ()Lfsn$a$b; b comp_867 entry + m (Ljava/util/UUID;Lfsn$a$b;)V +c fsn$a$d net/minecraft/class_7543$class_7544$class_7548 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen$ChatSelectionList$MessageEntry + f Lfsn$a; a field_39598 field_39598 + f I b field_39751 CHECKMARK_WIDTH + f I c field_39752 CHECKMARK_HEIGHT + f I d field_39599 INDENT_AMOUNT + f I e field_39775 TAG_MARGIN_LEFT + f I f field_39600 chatId + f Lxe; g field_39601 text + f Lwz; h field_39602 narration + f Ljava/util/List; i field_39603 hoverText + f Lfgj$a; j field_39776 tagIcon + f Ljava/util/List; k field_39777 tagHoverText + f Z l field_39604 canReport + f Z m field_39605 playerMessage + m (Lfhz;III)V a method_44695 renderSelectedCheckmark + m (Lfhz;IIIII)V a method_44729 renderTag + m ()I e method_44666 getMaximumTextWidth + m ()I f method_44667 getTextIndent + m ()Z h method_44517 toggleReport + m (Lfsn$a;ILwz;Lwz;Lfgj;ZZ)V +c fsn$a$e net/minecraft/class_7543$class_7544$class_7549 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen$ChatSelectionList$MessageHeadingEntry + f Lfsn$a; a field_39606 field_39606 + f I b field_39607 FACE_SIZE + f I c field_49545 PADDING + f Lwz; d field_39608 heading + f Ljava/util/function/Supplier; e field_39609 skin + f Z f field_39610 canReport + m (Lfsn$a;Lcom/mojang/authlib/GameProfile;Lwz;Z)V +c fsn$a$f net/minecraft/class_7543$class_7544$class_7550 net/minecraft/client/gui/screens/reporting/ChatSelectionScreen$ChatSelectionList$PaddingEntry + m (Lfsn$a;)V +c fso net/minecraft/class_8769 net/minecraft/client/gui/screens/reporting/NameReportScreen + f Lwz; C field_46037 TITLE + f Lfje; D field_46039 commentBox + m (Lfmc;)V a method_61148 method_61148 + m (Ljava/lang/String;)V a method_61149 method_61149 + m (Lfmc;)V b method_61150 method_61150 + m (Lfod;Lgao;Lgaj$a;)V + m (Lfod;Lgao;Ljava/util/UUID;Ljava/lang/String;)V + m (Lfod;Lgao;Lgaj;)V + m ()V +c fsp net/minecraft/class_8770 net/minecraft/client/gui/screens/reporting/ReportPlayerScreen + f Lwz; a field_46041 TITLE + f Lwz; b field_46042 MESSAGE + f Lwz; c field_46043 REPORT_CHAT + f Lwz; r field_46044 REPORT_SKIN + f Lwz; s field_46045 REPORT_NAME + f I u field_46046 SPACING + f Lfod; v field_46047 lastScreen + f Lgao; w field_46048 context + f Lfst; x field_46049 player + f Lfmd; y field_46050 layout + m (Lfim;)V a method_53581 method_53581 + m (Lfsp;Lfki;)V a method_53582 method_53582 + m (Lfim;)V b method_53583 method_53583 + m (Lfim;)V c method_53584 method_53584 + m (Lfim;)V d method_53585 method_53585 + m (Lfod;Lgao;Lfst;)V + m ()V +c fsq net/minecraft/class_7551 net/minecraft/client/gui/screens/reporting/ReportReasonSelectionScreen + f Lwz; a field_39612 REASON_TITLE + f Lwz; b field_39613 REASON_DESCRIPTION + f Lwz; c field_39754 READ_INFO_LABEL + f I r field_49546 DESCRIPTION_BOX_WIDTH + f I s field_49547 DESCRIPTION_BOX_HEIGHT + f I u field_39735 PADDING + f Lfod; v field_39615 lastScreen + f Lfsq$a; w field_39616 reasonSelectionList + f Lgam; x field_39778 currentlySelectedReason + f Ljava/util/function/Consumer; y field_39618 onSelectedReason + f Lflz; z field_49548 layout + m ()I C method_57759 descriptionRight + m ()I D method_44668 descriptionTop + m ()I E method_44669 descriptionBottom + m ()I F method_57760 descriptionWidth + m ()I G method_57761 descriptionHeight + m ()I J method_57762 listHeight + m (Lfim;)V a method_44520 method_44520 + m (Lfsq;)Lfhx; a method_44521 method_44521 + m (Lfsq;Lfki;)V a method_57763 method_57763 + m (Lfsq;)Lfhx; b method_44671 method_44671 + m ()I m method_57764 descriptionLeft + m (Lfod;Lgam;Ljava/util/function/Consumer;)V + m ()V +c fsq$a net/minecraft/class_7551$class_7552 net/minecraft/client/gui/screens/reporting/ReportReasonSelectionScreen$ReasonSelectionList + f Lfsq; a field_39619 field_39619 + m (Lfsq$a$a;)V a method_44730 setSelected + m (Lgam;)Lfsq$a$a; a method_44522 findEntry + m (Lgam;Lfsq$a$a;)Z a method_44523 method_44523 + m (Lfsq;Lfgo;)V +c fsq$a$a net/minecraft/class_7551$class_7552$class_7553 net/minecraft/client/gui/screens/reporting/ReportReasonSelectionScreen$ReasonSelectionList$Entry + f Lfsq$a; a field_39620 field_39620 + f Lgam; b field_39621 reason + m ()Lgam; b method_44524 getReason + m (Lfsq$a;Lgam;)V +c fsr net/minecraft/class_8771 net/minecraft/client/gui/screens/reporting/SkinReportScreen + f I C field_46052 SKIN_WIDTH + f I D field_46053 FORM_WIDTH + f Lwz; E field_46054 TITLE + f Lfje; F field_46056 commentBox + f Lfim; G field_46058 selectReasonButton + m (Lfim;)V a method_61151 method_61151 + m (Lfmc;)V a method_61152 method_61152 + m (Lgam;)V a method_61153 method_61153 + m (Ljava/lang/String;)V a method_61154 method_61154 + m (Lfod;Lgao;Lgap$a;)V + m (Lfod;Lgao;Ljava/util/UUID;Ljava/util/function/Supplier;)V + m (Lfod;Lgao;Lgap;)V + m ()V +c fss net/minecraft/class_7554 net/minecraft/client/gui/screens/reporting/package-info +c fst net/minecraft/class_5519 net/minecraft/client/gui/screens/social/PlayerEntry + f Lwz; A field_26906 BLOCKED + f Lwz; B field_26907 OFFLINE + f Lwz; C field_26908 HIDDEN_OFFLINE + f Lwz; D field_26909 BLOCKED_OFFLINE + f Lwz; E field_39736 REPORT_DISABLED_TOOLTIP + f Lwz; F field_33837 HIDE_TEXT_TOOLTIP + f Lwz; G field_33838 SHOW_TEXT_TOOLTIP + f Lwz; H field_39623 REPORT_PLAYER_TOOLTIP + f I I field_32420 SKIN_SIZE + f I J field_32421 PADDING + f I K field_32422 CHAT_TOGGLE_ICON_SIZE + f I a field_26850 SKIN_SHADE + f I b field_26851 BG_FILL + f I c field_26852 BG_FILL_REMOVED + f I d field_26853 PLAYERNAME_COLOR + f I e field_26903 PLAYER_STATUS_COLOR + f Lakr; f field_45560 DRAFT_REPORT_SPRITE + f Ljava/time/Duration; g field_32418 TOOLTIP_DELAY + f Lfjz; h field_45561 REPORT_BUTTON_SPRITES + f Lfjz; i field_45562 MUTE_BUTTON_SPRITES + f Lfjz; j field_45563 UNMUTE_BUTTON_SPRITES + f Lfgo; k field_26854 minecraft + f Ljava/util/List; l field_26855 children + f Ljava/util/UUID; m field_26856 id + f Ljava/lang/String; n field_26857 playerName + f Ljava/util/function/Supplier; o field_26904 skinGetter + f Z p field_26859 isRemoved + f Z q field_39790 hasRecentMessages + f Z r field_39791 reportingEnabled + f Z s field_40796 hasDraftReport + f Z u field_39937 chatReportable + f Lfim; v field_26860 hideButton + f Lfim; w field_26861 showButton + f Lfim; x field_39622 reportButton + f F y field_26864 tooltipHoverTime + f Lwz; z field_26905 HIDDEN + m (Lfgo;Lfsw;Lgao;)V a method_47633 method_47633 + m (Lfsu;Ljava/util/UUID;Ljava/lang/String;Lfim;)V a method_31326 method_31326 + m (Lgao;Lfgo;Lfsw;Lfim;)V a method_44525 method_44525 + m (Lxn;)Lxn; a method_31389 getEntryNarationMessage + m (ZLwz;)V a method_31329 onHiddenOrShown + m (Lfsu;Ljava/util/UUID;Ljava/lang/String;Lfim;)V b method_31332 method_31332 + m ()Ljava/lang/String; c method_31330 getPlayerName + m (Z)V c method_31335 setRemoved + m ()Ljava/util/UUID; d method_31334 getPlayerId + m (Z)V d method_44753 setHasRecentMessages + m (Z)V e method_47905 updateHideAndShowButton + m ()Ljava/util/function/Supplier; h method_53594 getSkinGetter + m ()Z i method_44754 isRemoved + m ()Z j method_44756 hasRecentMessages + m ()Z k method_53595 isChatReportable + m ()Lfjx; l method_47634 createReportButtonTooltip + m ()Lwz; m method_31390 getStatusComponent + m (Lfgo;Lfsw;Ljava/util/UUID;Ljava/lang/String;Ljava/util/function/Supplier;Z)V + m ()V +c fst$1 net/minecraft/class_5519$1 net/minecraft/client/gui/screens/social/PlayerEntry$1 + f Lfst; b field_41113 field_41113 + m (Lfst;IIIILfjz;Lfim$c;Lwz;)V +c fst$2 net/minecraft/class_5519$2 net/minecraft/client/gui/screens/social/PlayerEntry$2 + f Lfst; b field_26911 field_26911 + m (Lfst;IIIILfjz;Lfim$c;Lwz;)V +c fst$3 net/minecraft/class_5519$3 net/minecraft/client/gui/screens/social/PlayerEntry$3 + f Lfst; b field_41114 field_41114 + m (Lfst;IIIILfjz;Lfim$c;Lwz;)V +c fsu net/minecraft/class_5520 net/minecraft/client/gui/screens/social/PlayerSocialManager + f Lfgo; a field_26865 minecraft + f Ljava/util/Set; b field_26866 hiddenPlayers + f Lcom/mojang/authlib/minecraft/UserApiService; c field_26912 service + f Ljava/util/Map; d field_26927 discoveredNamesToUUID + f Z e field_35081 onlineMode + f Ljava/util/concurrent/CompletableFuture; f field_35082 pendingBlockListRefresh + m ()V a method_38935 startOnlineMode + m (Lfzq;)V a method_31337 addPlayer + m (Ljava/lang/String;)Ljava/util/UUID; a method_31407 getDiscoveredUUID + m (Ljava/util/UUID;)V a method_31338 hidePlayer + m ()V b method_38936 stopOnlineMode + m (Ljava/util/UUID;)V b method_31339 showPlayer + m ()Ljava/util/Set; c method_31336 getHiddenPlayers + m (Ljava/util/UUID;)Z c method_31391 shouldHideMessageFrom + m (Ljava/util/UUID;)Z d method_31340 isHidden + m (Ljava/util/UUID;)Z e method_31392 isBlocked + m (Ljava/util/UUID;)V f method_31341 removePlayer + m (Lfgo;Lcom/mojang/authlib/minecraft/UserApiService;)V +c fsv net/minecraft/class_5521 net/minecraft/client/gui/screens/social/SocialInteractionsPlayerList + f Lfsw; a field_26867 socialInteractionsScreen + f Ljava/util/List; m field_26869 players + f Ljava/lang/String; n field_26870 filter + m ()V J method_44762 sortPlayerEntries + m ()V K method_31349 updateFilteredPlayers + m (Lcom/mojang/authlib/GameProfile;Ljava/util/UUID;)Lfst; a method_44758 method_44758 + m (Lfst;)Z a method_31342 method_31342 + m (Lfzq;Lfsw$a;)V a method_31345 addPlayer + m (Lgaa;)Ljava/util/Collection; a method_45665 collectProfilesFromChatLog + m (Ljava/lang/String;)V a method_31346 setFilter + m (Ljava/util/Collection;D)V a method_44698 updateFiltersAndScroll + m (Ljava/util/Collection;DZ)V a method_31393 updatePlayerList + m (Ljava/util/Collection;Ljava/util/Map;)V a method_44699 addOnlinePlayers + m (Ljava/util/Map;Z)V a method_44759 updatePlayersFromChatLog + m (Ljava/util/UUID;)V a method_31347 removePlayer + m (Lfst;)Ljava/lang/Integer; b method_44760 method_44760 + m ()Z c method_31348 isEmpty + m (Lfst;)Ljava/lang/Integer; c method_44761 method_44761 + m (Lfsw;Lfgo;IIII)V +c fsw net/minecraft/class_5522 net/minecraft/client/gui/screens/social/SocialInteractionsScreen + f Lwz; A field_26880 SEARCH_HINT + f Lwz; B field_26917 EMPTY_SEARCH + f Lwz; C field_26881 EMPTY_HIDDEN + f Lwz; D field_26918 EMPTY_BLOCKED + f Lwz; E field_26919 BLOCKING_HINT + f I F field_32424 BG_BORDER_SIZE + f I G field_32426 BG_WIDTH + f I H field_32427 SEARCH_HEIGHT + f I I field_32428 MARGIN_Y + f I J field_32429 IMAGE_WIDTH + f I K field_32430 BUTTON_HEIGHT + f I L field_32431 ITEM_HEIGHT + f Lflz; M field_49549 layout + f Lfod; N field_49550 lastScreen + f Lfsv; O field_26882 socialInteractionsPlayerList + f Lfiv; P field_26883 searchBox + f Ljava/lang/String; Q field_26884 lastSearch + f Lfsw$a; R field_26885 page + f Lfim; S field_26886 allButton + f Lfim; T field_26887 hiddenButton + f Lfim; U field_26913 blockedButton + f Lfim; V field_26914 blockingHintButton + f Lwz; W field_26888 serverLabel + f I X field_26871 playerCount + f I a field_32433 SEARCH_START + f I b field_32432 LIST_START + f Lwz; c field_49551 TITLE + f Lakr; r field_45564 BACKGROUND_SPRITE + f Lakr; s field_45565 SEARCH_SPRITE + f Lwz; u field_26876 TAB_ALL + f Lwz; v field_26877 TAB_HIDDEN + f Lwz; w field_26915 TAB_BLOCKED + f Lwz; x field_26878 TAB_ALL_SELECTED + f Lwz; y field_26879 TAB_HIDDEN_SELECTED + f Lwz; z field_26916 TAB_BLOCKED_SELECTED + m ()I C method_31361 listEnd + m ()I D method_31362 marginX + m (Lfgo;)V a method_31350 updateServerLabel + m (Lfim;)V a method_57765 method_57765 + m (Lfsw$a;)V a method_31352 showPage + m (Lfsw;Lfki;)V a method_57766 method_57766 + m (Lfzq;)V a method_31353 onAddPlayer + m (Ljava/lang/String;)V a method_31357 checkSearchStringUpdate + m (Ljava/util/UUID;)V a method_31355 onRemovePlayer + m (Lfim;)V b method_31396 method_31396 + m (Lfim;)V c method_31351 method_31351 + m (Lfim;)V d method_31356 method_31356 + m ()I m method_31359 windowHeight + m ()V + m (Lfod;)V + m ()V +c fsw$1 net/minecraft/class_5522$1 net/minecraft/client/gui/screens/social/SocialInteractionsScreen$1 + f Lfsw; d field_26920 field_26920 + m (Lfsw;Lfhx;IIIILwz;)V +c fsw$a net/minecraft/class_5522$class_5523 net/minecraft/client/gui/screens/social/SocialInteractionsScreen$Page + f Lfsw$a; a field_26890 ALL + f Lfsw$a; b field_26891 HIDDEN + f Lfsw$a; c field_26921 BLOCKED + f [Lfsw$a; d field_26892 $VALUES + m ()[Lfsw$a; a method_36890 $values + m (Ljava/lang/String;I)V + m ()V +c fsx net/minecraft/class_6222 net/minecraft/client/gui/screens/social/package-info +c fsy net/minecraft/class_7941 net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget + f I a field_41355 HEADER_HORIZONTAL_PADDING + f Ljava/lang/String; b field_41356 TELEMETRY_REQUIRED_TRANSLATION_KEY + f Ljava/lang/String; c field_41357 TELEMETRY_OPTIONAL_TRANSLATION_KEY + f Ljava/lang/String; d field_47125 TELEMETRY_OPTIONAL_DISABLED_TRANSLATION_KEY + f Lwz; e field_41358 PROPERTY_TITLE + f Lfhx; f field_41359 font + f Lfsy$a; m field_41360 content + f Ljava/util/function/DoubleConsumer; n field_41361 onScrolledListener + m (Lfhz;IIFLfik;)V a method_48285 method_48285 + m (Lfsy$b;Lgvo;Z)V a method_47635 addEventType + m (Lgvo;Lfsy$b;Z)V a method_47636 addEventTypeProperties + m (Ljava/util/function/DoubleConsumer;)V a method_47637 setOnScrolledListener + m (Lwz;Z)Lwz; a method_54801 grayOutIfDisabled + m (Z)V b method_47638 onOptInChanged + m (Z)Lfsy$a; c method_47639 buildContent + m ()V j method_57767 updateLayout + m ()I k method_47640 containerWidth + m (IIIILfhx;)V + m ()V +c fsy$a net/minecraft/class_7941$class_7942 net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget$Content + f Lfma; a comp_1160 container + f Lwz; b comp_1161 narration + m ()Lfma; a comp_1160 container + m ()Lwz; b comp_1161 narration + m (Lfma;Lwz;)V +c fsy$b net/minecraft/class_7941$class_7943 net/minecraft/client/gui/screens/telemetry/TelemetryEventWidget$ContentBuilder + f I a field_41362 width + f Lfmd; b field_45566 layout + f Lxn; c field_41366 narration + m ()Lfsy$a; a method_47641 build + m (I)V a method_47642 addSpacer + m (ILfmc;)V a method_52763 method_52763 + m (Lfhx;Lwz;)V a method_47643 addLine + m (Lfhx;Lwz;I)V a method_47644 addLine + m (Lfmc;)V a method_52764 method_52764 + m (Lfhx;Lwz;)V b method_47645 addHeader + m (I)V +c fsz net/minecraft/class_7944 net/minecraft/client/gui/screens/telemetry/TelemetryInfoScreen + f Lfsy; A field_41375 telemetryEventWidget + f Lfjg; B field_49554 description + f D C field_41376 savedScroll + f Lwz; a field_41369 TITLE + f Lwz; b field_41370 DESCRIPTION + f Lwz; c field_45567 BUTTON_PRIVACY_STATEMENT + f Lwz; r field_41371 BUTTON_GIVE_FEEDBACK + f Lwz; s field_41372 BUTTON_VIEW_DATA + f Lwz; u field_47126 CHECKBOX_OPT_IN + f I v field_41367 SPACING + f Z w field_49552 EXTRA_TELEMETRY_AVAILABLE + f Lfod; x field_41373 lastScreen + f Lfgs; y field_41374 options + f Lflz; z field_49553 layout + m (D)V a method_47646 method_47646 + m (Lfik;Z)V a method_54803 onOptInChanged + m (Lfim;)V a method_52765 openPrivacyStatementLink + m (Lfsz;Lfki;)V a method_48286 method_48286 + m (Lfim;)V b method_47650 openFeedbackLink + m (Lfim;)V c method_47651 openDataFolder + m (Lfim;)V d method_57768 method_57768 + m ()Lfik; m method_54802 createTelemetryCheckbox + m (Lfod;Lfgs;)V + m ()V +c fta net/minecraft/class_7945 net/minecraft/client/gui/screens/telemetry/package-info +c ftb net/minecraft/class_7745 net/minecraft/client/gui/screens/worldselection/ConfirmExperimentalFeaturesScreen + f Lwz; a field_40443 TITLE + f Lwz; b field_40444 MESSAGE + f Lwz; c field_40445 DETAILS_BUTTON + f I r field_42498 COLUMN_SPACING + f I s field_42499 DETAILS_BUTTON_WIDTH + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; u field_40447 callback + f Ljava/util/Collection; v field_40448 enabledPacks + f Lfly; w field_42500 layout + m (Lfim;)V a method_45666 method_45666 + m (Lftb;Lfki;)V a method_49008 method_49008 + m (Lfim;)V b method_45668 method_45668 + m (Lfim;)V c method_45667 method_45667 + m (Ljava/util/Collection;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;)V + m ()V +c ftb$a net/minecraft/class_7745$class_7746 net/minecraft/client/gui/screens/worldselection/ConfirmExperimentalFeaturesScreen$DetailsScreen + f Lftb; a field_40450 field_40450 + f Lwz; b field_49555 TITLE + f Lflz; c field_49556 layout + f Lftb$a$a; r field_50222 list + m (Lfim;)V a method_45671 method_45671 + m (Lftb$a;)Lfhx; a method_45672 method_45672 + m (Lftb$a;Lfki;)V a method_57769 method_57769 + m (Lftb$a;)Lfgo; b method_45673 method_45673 + m (Lftb$a;)Lfhx; c method_45674 method_45674 + m (Lftb;)V + m ()V +c ftb$a$a net/minecraft/class_7745$class_7746$class_7747 net/minecraft/client/gui/screens/worldselection/ConfirmExperimentalFeaturesScreen$DetailsScreen$PackList + m (Lftb$a;Lfgo;Ljava/util/Collection;)V +c ftb$a$b net/minecraft/class_7745$class_7746$class_7748 net/minecraft/client/gui/screens/worldselection/ConfirmExperimentalFeaturesScreen$DetailsScreen$PackListEntry + f Lftb$a; a field_40453 field_40453 + f Lwz; b field_40454 packId + f Lwz; c field_40455 message + f Lfjf; d field_40456 splitMessage + m (Lftb$a;Lwz;Lwz;Lfjf;)V +c ftc net/minecraft/class_525 net/minecraft/client/gui/screens/worldselection/CreateWorldScreen + f I A field_42171 VERTICAL_BUTTON_SPACING + f Lflz; B field_49557 layout + f Lftl; C field_42172 uiState + f Lfkp; D field_42173 tabManager + f Z E field_42502 recreated + f Lews; F field_45568 packValidator + f Lfod; G field_3187 lastScreen + f Ljava/nio/file/Path; H field_25477 tempDataPackDir + f Latp; I field_25792 tempDataPackRepository + f Lfkq; J field_42164 tabNavigationBar + f Lakr; a field_49902 TAB_HEADER_BACKGROUND + f I b field_42165 GROUP_BOTTOM + f I c field_42166 TAB_COLUMN_WIDTH + f Lorg/slf4j/Logger; r field_25480 LOGGER + f Ljava/lang/String; s field_32434 TEMP_WORLD_PREFIX + f Lwz; u field_25898 GAME_MODEL_LABEL + f Lwz; v field_26600 NAME_LABEL + f Lwz; w field_42501 EXPERIMENTS_LABEL + f Lwz; x field_42169 ALLOW_COMMANDS_INFO + f Lwz; y field_37911 PREPARING_WORLD_DATA + f I z field_42170 HORIZONTAL_BUTTON_SPACING + m ()V C method_30297 popScreen + m ()V D method_2736 onCreate + m ()Ljava/nio/file/Path; E method_29693 getTempDataPackDir + m ()V F method_29695 removeTempDataPackDir + m ()Ljava/util/Optional; G method_41848 createNewWorldDirectory + m (Lalo$a;)Lalo$b; a method_45678 method_45678 + m (Latp;)V a method_49009 method_49009 + m (Latp;Lddr;)Lalo$c; a method_41849 createDefaultLoadConfig + m (Latp;Lddr;Ljava/util/function/Consumer;)V a method_45679 applyNewPackConfig + m (Latp;Lddr;Ljava/util/function/Consumer;Z)V a method_48643 method_48643 + m (Latp;ZLjava/util/function/Consumer;)V a method_29682 tryApplyNewDataPacks + m (Latu;Lalc;Ljt;Lftc$a;)Lftk; a method_45681 method_45681 + m (Lcom/mojang/serialization/DynamicOps;Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult; a method_45682 method_45682 + m (Lddr;)V a method_49010 openExperimentsScreen + m (Ldzt$b;Ljt;Lcom/mojang/serialization/Lifecycle;)V a method_45683 method_45683 + m (Lerj$a;Ljt;Lcom/mojang/serialization/Lifecycle;)V a method_41847 createNewWorld + m (Lfgo;Lfod;)V a method_31130 openFresh + m (Lfgo;Lfod;Ldda;Lftk;Ljava/nio/file/Path;)Lftc; a method_40212 createFromExisting + m (Lfgo;Lwz;)V a method_41852 queueLoadScreen + m (Lfik;)V a method_48644 method_48644 + m (Lfim;)V a method_19921 method_19921 + m (Lftc;)Lfhx; a method_48646 method_48646 + m (Lftc;Lfki;)V a method_48649 method_48649 + m (Lftk;)Lftk; a method_59841 method_59841 + m (Ljava/lang/String;)Ljava/lang/IllegalStateException; a method_58746 method_58746 + m (Ljava/nio/file/Path;)Z a method_41853 method_41853 + m (Ljava/nio/file/Path;Lfgo;)Ljava/nio/file/Path; a method_29685 createTempDataPackDirFromExistingWorld + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)Z a method_29686 method_29686 + m (Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;)V a method_29687 copyBetweenDirs + m (Ljava/util/List;Ljava/lang/String;)Z a method_29983 method_29983 + m (Ljava/util/function/Consumer;Ljava/lang/Void;Ljava/lang/Throwable;)Ljava/lang/Object; a method_49629 method_49629 + m (Ljava/util/function/Consumer;Z)V a method_48654 method_48654 + m (Lorg/apache/commons/lang3/mutable/MutableObject;Ljava/nio/file/Path;Ljava/nio/file/Path;)V a method_29688 method_29688 + m (Lalo$a;)Lalo$b; b method_45686 method_45686 + m (Latp;)V b method_49011 method_49011 + m (Latu;Lalc;Ljt;Lftc$a;)Lftk; b method_41851 method_41851 + m (Lddr;)V b method_29694 openDataPackSelectionScreen + m (Lfim;)V b method_19922 method_19922 + m (Lftc;)Lfhx; b method_48647 method_48647 + m (Lftc;Lfki;)V b method_48650 method_48650 + m (Ljava/nio/file/Path;)V b method_29689 method_29689 + m (Ljava/nio/file/Path;Ljava/nio/file/Path;)V b method_41855 method_41855 + m (Lddr;)Lcom/mojang/datafixers/util/Pair; c method_30296 getDataPackSelectionSettings + m (Lftc;)Lfhx; c method_48651 method_48651 + m (Z)Ldda; c method_40213 createLevelSettings + m (Lftc;)Lfhx; d method_48652 method_48652 + m (Lftc;)Lfgo; e method_48653 method_48653 + m (Lftc;)Lfgo; f method_48655 method_48655 + m (Lftc;)Lfgo; g method_48656 method_48656 + m ()Lftl; m method_48657 getUiState + m (Lfgo;Lfod;Lftk;Ljava/util/Optional;Ljava/util/OptionalLong;)V + m ()V +c ftc$a net/minecraft/class_525$class_7749 net/minecraft/client/gui/screens/worldselection/CreateWorldScreen$DataPackReloadCookie + f Ldzu; a comp_1025 worldGenSettings + f Lddr; b comp_1026 dataConfiguration + m ()Ldzu; a comp_1025 worldGenSettings + m ()Lddr; b comp_1026 dataConfiguration + m (Ldzu;Lddr;)V +c ftc$b net/minecraft/class_525$class_8093 net/minecraft/client/gui/screens/worldselection/CreateWorldScreen$GameTab + f Lftc; b field_42174 field_42174 + f Lwz; c field_42175 TITLE + f Lwz; d field_42176 ALLOW_COMMANDS + f Lfiv; e field_42177 nameEdit + m (Lfim;)V a method_49012 method_49012 + m (Lfit;Lbqo;)V a method_48658 method_48658 + m (Lfit;Lftl$a;)V a method_48659 method_48659 + m (Lfit;Lftl;)V a method_48660 method_48660 + m (Lfit;Ljava/lang/Boolean;)V a method_48661 method_48661 + m (Lftl$a;)Lwz; a method_48662 method_48662 + m (Lftl;)V a method_49702 method_49702 + m (Ljava/lang/Boolean;)Lfjx; a method_48663 method_48663 + m (Lfit;Lftl;)V b method_48664 method_48664 + m (Lfit;Lftl;)V c method_48665 method_48665 + m (Lftc;)V + m ()V +c ftc$c net/minecraft/class_525$class_8094 net/minecraft/client/gui/screens/worldselection/CreateWorldScreen$MoreTab + f Lftc; b field_42178 field_42178 + f Lwz; c field_42179 TITLE + f Lwz; d field_42180 GAME_RULES_LABEL + f Lwz; e field_42181 DATA_PACKS_LABEL + m (Lfim;)V a method_49013 method_49013 + m (Ljava/util/Optional;)V a method_48667 method_48667 + m ()V b method_48669 openGameRulesScreen + m (Lfim;)V b method_49014 method_49014 + m (Lfim;)V c method_48668 method_48668 + m (Lftc;)V + m ()V +c ftc$d net/minecraft/class_525$class_8095 net/minecraft/client/gui/screens/worldselection/CreateWorldScreen$WorldTab + f Lftc; b field_42182 field_42182 + f Lwz; c field_42183 TITLE + f Lwz; d field_42184 AMPLIFIED_HELP_TEXT + f Lwz; e field_42185 GENERATE_STRUCTURES + f Lwz; f field_42186 GENERATE_STRUCTURES_INFO + f Lwz; g field_42187 BONUS_CHEST + f Lwz; h field_42188 SEED_LABEL + f Lwz; i field_42189 SEED_EMPTY_HINT + f I j field_42190 WORLD_TAB_WIDTH + f Lfiv; k field_42191 seedEdit + f Lfim; l field_42192 customizeTypeButton + m (Lfim;)V a method_48670 method_48670 + m (Lfit;)Lxn; a method_48671 createTypeButtonNarration + m (Lfit;Lftl$b;)V a method_48672 method_48672 + m (Lfit;Lftl;)V a method_48673 method_48673 + m (Lfly$b;Lfmb;)V a method_48674 method_48674 + m (Lftj;Lftl;)V a method_48675 method_48675 + m (Lftl;)V a method_48676 method_48676 + m (Ljava/lang/String;)V a method_48677 method_48677 + m ()V b method_48678 openPresetEditor + m ()Lfit$c; c method_48679 createWorldTypeValueSupplier + m ()Z d method_48680 method_48680 + m ()Z e method_48681 method_48681 + m (Lftc;)V + m ()V +c ftc$d$1 net/minecraft/class_525$class_8095$1 net/minecraft/client/gui/screens/worldselection/CreateWorldScreen$WorldTab$1 + f Lftc; d field_42193 field_42193 + m (Lftc$d;Lfhx;IILwz;Lftc;)V +c ftc$d$2 net/minecraft/class_525$class_8095$2 net/minecraft/client/gui/screens/worldselection/CreateWorldScreen$WorldTab$2 + f Lftc$d; a field_42195 field_42195 + m (Lftc$d;)V +c ftd net/minecraft/class_5235 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen + f Lwz; a field_49558 TITLE + f I b field_49559 SPACING + f Lflz; c field_49560 layout + f Ljava/util/function/Consumer; r field_24293 exitCallback + f Ljava/util/Set; s field_24295 invalidEntries + f Ldcs; u field_24298 gameRules + f Lftd$g; v field_49903 ruleList + f Lfim; w field_24296 doneButton + m (Lfim;)V a method_57770 method_57770 + m (Lftd$f;)V a method_27620 markInvalid + m (Lftd;)Lfgo; a method_27621 method_27621 + m (Lftd;Lfki;)V a method_48682 method_48682 + m (Lfim;)V b method_27619 method_27619 + m (Lftd$f;)V b method_27626 clearInvalid + m (Lftd;)Lfgo; b method_29984 method_29984 + m (Lftd;)Lfgo; c method_27629 method_27629 + m (Lftd;)Lfgo; d method_29985 method_29985 + m (Lftd;)Lfgo; e method_29986 method_29986 + m (Lftd;)Lfgo; f method_27627 method_27627 + m (Lftd;)Lfhx; g method_57771 method_57771 + m ()V m method_27632 updateDoneButton + m (Ldcs;Ljava/util/function/Consumer;)V + m ()V +c ftd$a net/minecraft/class_5235$class_5236 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$BooleanRuleEntry + f Lfit; c field_24300 checkbox + m (Ldcs$a;Lfit;Ljava/lang/Boolean;)V a method_32674 method_32674 + m (Ljava/lang/String;Lfit;)Lxn; a method_32675 method_32675 + m (Lftd;Lwz;Ljava/util/List;Ljava/lang/String;Ldcs$a;)V +c ftd$b net/minecraft/class_5235$class_5237 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$CategoryRuleEntry + f Lftd; a field_24305 field_24305 + f Lwz; b field_24306 label + m (Lftd;Lwz;)V +c ftd$b$1 net/minecraft/class_5235$class_5237$1 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$CategoryRuleEntry$1 + f Lftd$b; a field_33845 field_33845 + m (Lftd$b;)V +c ftd$c net/minecraft/class_5235$class_5238 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$EntryFactory +c ftd$d net/minecraft/class_5235$class_5400 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$GameRuleEntry + f Ljava/util/List; a field_25630 children + f Lftd; b field_25631 field_25631 + f Ljava/util/List; c field_25629 label + m (Lfhz;II)V a method_29989 renderLabel + m (Lftd;Ljava/util/List;Lwz;)V +c ftd$e net/minecraft/class_5235$class_5239 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$IntegerRuleEntry + f Lftd; c field_24307 field_24307 + f Lfiv; d field_24309 input + m (Ldcs$d;Ljava/lang/String;)V a method_27635 method_27635 + m (Lftd;Lwz;Ljava/util/List;Ljava/lang/String;Ldcs$d;)V +c ftd$f net/minecraft/class_5235$class_5240 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$RuleEntry + f Ljava/util/List; a field_24311 tooltip + m (Ljava/util/List;)V +c ftd$g net/minecraft/class_5235$class_5241 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$RuleList + f Lftd; a field_24313 field_24313 + f I m field_49561 ITEM_HEIGHT + m (Ljava/util/Map$Entry;)V a method_27637 method_27637 + m (Ljava/util/Map$Entry;)V b method_27638 method_27638 + m (Lftd;Ldcs;)V +c ftd$g$1 net/minecraft/class_5235$class_5241$1 net/minecraft/client/gui/screens/worldselection/EditGameRulesScreen$RuleList$1 + f Lftd; a field_24314 field_24314 + f Ldcs; b field_24315 val$gameRules + f Ljava/util/Map; c field_24316 val$entries + f Lftd$g; d field_24317 field_24317 + m (Ldcs$b;)Ljava/util/Map; a method_27639 method_27639 + m (Ldcs$e;Lftd$c;)V a method_27640 addEntry + m (Lwz;Ljava/util/List;Ljava/lang/String;Ldcs$a;)Lftd$f; a method_27641 method_27641 + m (Lwz;Ljava/util/List;Ljava/lang/String;Ldcs$d;)Lftd$f; a method_27642 method_27642 + m (Lftd$g;Lftd;Ldcs;Ljava/util/Map;)V +c fte net/minecraft/class_524 net/minecraft/client/gui/screens/worldselection/EditWorldScreen + f I A field_46894 VERTICAL_SPACING + f I B field_46895 HALF_WIDTH + f Lfmd; C field_46896 layout + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; D field_3169 callback + f Lerf$c; E field_23777 levelAccess + f Lfiv; F field_48397 nameEdit + f Lorg/slf4j/Logger; a field_23776 LOGGER + f Lwz; b field_26603 NAME_LABEL + f Lwz; c field_46885 RESET_ICON_BUTTON + f Lwz; r field_46886 FOLDER_BUTTON + f Lwz; s field_46887 BACKUP_BUTTON + f Lwz; u field_46888 BACKUP_FOLDER_BUTTON + f Lwz; v field_46889 OPTIMIZE_BUTTON + f Lwz; w field_46890 OPTIMIZE_TITLE + f Lwz; x field_46891 OPTIMIIZE_DESCRIPTION + f Lwz; y field_46892 SAVE_BUTTON + f I z field_46893 DEFAULT_WIDTH + m (Lerf$c;)Z a method_2701 makeBackupAndShowToast + m (Lerf$c;Lfgo;ZZ)V a method_54595 method_54595 + m (Lerf$c;Lfim;)V a method_54596 method_54596 + m (Lfgo;)V a method_54597 method_54597 + m (Lfgo;Lerf$c;Lfim;)V a method_54598 method_54598 + m (Lfgo;Lerf$c;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;)Lfte; a method_54599 create + m (Lfgo;Lfim;)V a method_54600 method_54600 + m (Lfim;)V a method_54601 method_54601 + m (Lfim;Ljava/lang/String;)V a method_54602 method_54602 + m (Lfte;Lfki;)V a method_54604 method_54604 + m (Ljava/lang/String;)V a method_2691 onRename + m (Ljava/nio/file/Path;)Z a method_54605 method_54605 + m (Lerf$c;Lfim;)V b method_54606 method_54606 + m (Lfim;)V b method_54603 method_54603 + m (Ljava/nio/file/Path;)V b method_54607 method_54607 + m (Lerf$c;Lfim;)V c method_54608 method_54608 + m (Lfgo;Lerf$c;Ljava/lang/String;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;)V + m ()V +c ftf net/minecraft/class_8134 net/minecraft/client/gui/screens/worldselection/ExperimentsScreen + f Lwz; a field_49562 TITLE + f Lwz; b field_50043 INFO + f I c field_42503 MAIN_CONTENT_WIDTH + f Lflz; r field_42504 layout + f Lfod; s field_42505 parent + f Latp; u field_42506 packRepository + f Ljava/util/function/Consumer; v field_42507 output + f Lit/unimi/dsi/fastutil/objects/Object2BooleanMap; w field_42508 packs + m (Latm;)Lwz; a method_49016 getHumanReadableTitle + m (Latm;Ljava/lang/Boolean;)V a method_49017 method_49017 + m (Lfim;)V a method_49018 method_49018 + m (Lfmc;)V a method_52767 method_52767 + m (Lftf;Lfki;)V a method_49019 method_49019 + m (Lftj$a;Latm;Ljava/lang/Boolean;)V a method_49020 method_49020 + m (Ljava/util/List;Ljava/util/List;Latm;Ljava/lang/Boolean;)V a method_49021 method_49021 + m (Latm;)Z b method_49022 method_49022 + m (Lfim;)V b method_49023 method_49023 + m ()V m method_49024 onDone + m (Lfod;Latp;Ljava/util/function/Consumer;)V + m ()V +c ftg net/minecraft/class_527 net/minecraft/client/gui/screens/worldselection/OptimizeWorldScreen + f Lorg/slf4j/Logger; a field_25482 LOGGER + f Ljava/util/function/ToIntFunction; b field_3232 DIMENSION_COLORS + f Lit/unimi/dsi/fastutil/booleans/BooleanConsumer; c field_3233 callback + f Lbqf; r field_3234 upgrader + m (Lfgo;Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lcom/mojang/datafixers/DataFixer;Lerf$c;Z)Lftg; a method_27031 create + m (Lfim;)V a method_19938 method_19938 + m (Lit/unimi/dsi/fastutil/objects/Reference2IntOpenHashMap;)V a method_2747 method_2747 + m (Lit/unimi/dsi/fastutil/booleans/BooleanConsumer;Lcom/mojang/datafixers/DataFixer;Lerf$c;Ldda;ZLka;)V + m ()V +c fth net/minecraft/class_5293 net/minecraft/client/gui/screens/worldselection/PresetEditor + f Ljava/util/Map; a field_37912 EDITORS + m (Leht;)Lftk$a; a method_41856 flatWorldConfigurator + m (Leht;Lka$b;Ldzt;)Ldzt; a method_41857 method_41857 + m (Lftc;Leht;)V a method_41858 method_41858 + m (Lftc;Lftk;)Lfod; a method_41859 method_41859 + m (Lftc;Ljm;)V a method_41860 method_41860 + m (Ljm;)Lftk$a; a method_41861 fixedBiomeConfigurator + m (Ljm;Lka$b;Ldzt;)Ldzt; a method_41862 method_41862 + m (Lftc;Lftk;)Lfod; b method_41863 method_41863 + m ()V +c fti net/minecraft/class_526 net/minecraft/client/gui/screens/worldselection/SelectWorldScreen + f Ldzw; a field_40457 TEST_OPTIONS + f Lfod; b field_3221 lastScreen + f Lfiv; c field_3220 searchBox + f Lorg/slf4j/Logger; r field_28783 LOGGER + f Lfim; s field_3219 deleteButton + f Lfim; u field_3224 selectButton + f Lfim; v field_3215 renameButton + f Lfim; w field_3216 copyButton + f Lftn; x field_3218 list + m (Lerg;)V a method_19940 updateButtonStatus + m (Lfim;)V a method_35739 method_35739 + m (Ljava/lang/String;)V a method_2744 method_2744 + m (Lfim;)V b method_19939 method_19939 + m (Lfim;)V c method_19941 method_19941 + m (Lfim;)V d method_19942 method_19942 + m (Lfim;)V e method_19943 method_19943 + m (Lfim;)V f method_19944 method_19944 + m (Lfim;)V g method_19945 method_19945 + m (Lfod;)V + m ()V +c ftj net/minecraft/class_8096 net/minecraft/client/gui/screens/worldselection/SwitchGrid + f I a field_42196 DEFAULT_SWITCH_BUTTON_WIDTH + f Ljava/util/List; b field_42197 switches + m ()V a method_48683 refreshStates + m (I)Lftj$a; a method_48684 builder + m (Ljava/util/List;)V +c ftj$a net/minecraft/class_8096$class_8097 net/minecraft/client/gui/screens/worldselection/SwitchGrid$Builder + f I a field_42198 width + f Ljava/util/List; b field_42199 switchBuilders + f I c field_42200 paddingLeft + f I d field_42509 rowSpacing + f I e field_42510 rowCount + f Ljava/util/Optional; f field_42511 infoUnderneath + m ()V a method_49025 increaseRow + m (I)Lftj$a; a method_48685 withPaddingLeft + m (IZ)Lftj$a; a method_49026 withInfoUnderneath + m (Ljava/util/function/Consumer;)Lftj; a method_48686 build + m (Lwz;Ljava/util/function/BooleanSupplier;Ljava/util/function/Consumer;)Lftj$d; a method_48687 addSwitch + m (I)Lftj$a; b method_49027 withRowSpacing + m (I)V +c ftj$b net/minecraft/class_8096$class_8135 net/minecraft/client/gui/screens/worldselection/SwitchGrid$InfoUnderneathSettings + f I a comp_1259 maxInfoRows + f Z b comp_1260 alwaysMaxHeight + m ()I a comp_1259 maxInfoRows + m ()Z b comp_1260 alwaysMaxHeight + m (IZ)V +c ftj$c net/minecraft/class_8096$class_8098 net/minecraft/client/gui/screens/worldselection/SwitchGrid$LabeledSwitch + f Lfit; a comp_1261 button + f Ljava/util/function/BooleanSupplier; b comp_1262 stateSupplier + f Ljava/util/function/BooleanSupplier; c comp_1263 isActiveCondition + m ()V a method_48688 refreshState + m ()Lfit; b comp_1261 button + m ()Ljava/util/function/BooleanSupplier; c comp_1262 stateSupplier + m ()Ljava/util/function/BooleanSupplier; d comp_1263 isActiveCondition + m (Lfit;Ljava/util/function/BooleanSupplier;Ljava/util/function/BooleanSupplier;)V +c ftj$d net/minecraft/class_8096$class_8099 net/minecraft/client/gui/screens/worldselection/SwitchGrid$SwitchBuilder + f Lwz; a field_42204 label + f Ljava/util/function/BooleanSupplier; b field_42205 stateSupplier + f Ljava/util/function/Consumer; c field_42206 onClicked + f Lwz; d field_42207 info + f Ljava/util/function/BooleanSupplier; e field_42208 isActiveCondition + f I f field_42209 buttonWidth + m (Lfit;)Lxn; a method_49028 method_49028 + m (Lfit;Ljava/lang/Boolean;)V a method_48690 method_48690 + m (Lfjx;Ljava/lang/Boolean;)Lfjx; a method_49029 method_49029 + m (Lftj$a;Lfly;I)Lftj$c; a method_48691 build + m (Lftj$a;Lfly;ILftj$b;)V a method_49030 method_49030 + m (Ljava/util/function/BooleanSupplier;)Lftj$d; a method_48693 withIsActiveCondition + m (Lwz;)Lftj$d; a method_48694 withInfo + m (Lfit;)Lxn; b method_49031 method_49031 + m (Lwz;Ljava/util/function/BooleanSupplier;Ljava/util/function/Consumer;I)V +c ftk net/minecraft/class_7193 net/minecraft/client/gui/screens/worldselection/WorldCreationContext + f Ldzw; a comp_616 options + f Ljz; b comp_1027 datapackDimensions + f Ldzt; c comp_1028 selectedDimensions + f Ljt; d comp_1029 worldgenRegistries + f Lalc; e comp_619 dataPackResources + f Lddr; f comp_1030 dataConfiguration + m ()Lka$b; a method_45689 worldgenLoadContext + m (Ldzw;Ldzt;)Lftk; a method_41864 withSettings + m (Lftk$a;)Lftk; a method_41866 withDimensions + m (Lftk$b;)Lftk; a method_45690 withOptions + m ()V b method_60345 validate + m ()Ldzw; c comp_616 options + m ()Ljz; d comp_1027 datapackDimensions + m ()Ldzt; e comp_1028 selectedDimensions + m ()Ljt; f comp_1029 worldgenRegistries + m ()Lalc; g comp_619 dataPackResources + m ()Lddr; h comp_1030 dataConfiguration + m (Ldzu;Ljt;Lalc;Lddr;)V + m (Ldzw;Ldzt;Ljt;Lalc;Lddr;)V + m (Ldzw;Ljz;Ldzt;Ljt;Lalc;Lddr;)V +c ftk$a net/minecraft/class_7193$class_7195 net/minecraft/client/gui/screens/worldselection/WorldCreationContext$DimensionsUpdater +c ftk$b net/minecraft/class_7193$class_7194 net/minecraft/client/gui/screens/worldselection/WorldCreationContext$OptionsModifier +c ftl net/minecraft/class_8100 net/minecraft/client/gui/screens/worldselection/WorldCreationUiState + f Lwz; a field_43104 DEFAULT_WORLD_NAME + f Ljava/util/List; b field_42210 listeners + f Ljava/lang/String; c field_42211 name + f Lftl$a; d field_42213 gameMode + f Lbqo; e field_42214 difficulty + f Ljava/lang/Boolean; f field_42215 allowCommands + f Ljava/lang/String; g field_42216 seed + f Z h field_42217 generateStructures + f Z i field_42218 bonusChest + f Ljava/nio/file/Path; j field_43105 savesFolder + f Ljava/lang/String; k field_43106 targetFolder + f Lftk; l field_42219 settings + f Lftl$b; m field_42220 worldType + f Ljava/util/List; n field_42221 normalPresetList + f Ljava/util/List; o field_42222 altPresetList + f Ldcs; p field_42223 gameRules + m ()V a method_48695 onChanged + m (Lbqo;)V a method_48696 setDifficulty + m (Ldcs;)V a method_48697 setGameRules + m (Lddr;)Z a method_48698 tryUpdateDataConfiguration + m (Ldzw;)Ldzw; a method_48699 method_48699 + m (Lftk$a;)V a method_48700 updateDimensions + m (Lftk;)V a method_48701 setSettings + m (Lftk;Lakq;)Ljava/util/Optional; a method_48702 method_48702 + m (Lftk;Ljava/util/Optional;)Ljava/util/Optional; a method_48703 findPreset + m (Lftl$a;)V a method_48704 setGameMode + m (Lftl$b;)V a method_48705 setWorldType + m (Ljava/lang/String;)V a method_48710 setName + m (Ljava/util/List;)Z a method_48711 method_48711 + m (Ljava/util/function/Consumer;)V a method_48712 addListener + m (Ljm;Lka$b;Ldzt;)Ldzt; a method_48706 method_48706 + m (Ljq$c;)Ljava/util/List; a method_48707 method_48707 + m (Ljz;)Ljava/util/List; a method_48708 method_48708 + m (Ljz;Lawu;)Ljava/util/Optional; a method_48709 getNonEmptyList + m (Z)V a method_48713 setAllowCommands + m (ZLdzw;)Ldzw; a method_48714 method_48714 + m ()Ljava/lang/String; b method_48715 getName + m (Ljava/lang/String;)V b method_48716 setSeed + m (Z)V b method_48717 setGenerateStructures + m (ZLdzw;)Ldzw; b method_48718 method_48718 + m ()Ljava/lang/String; c method_49703 getTargetFolder + m (Ljava/lang/String;)Ljava/lang/String; c method_49704 findResultFolder + m (Z)V c method_48720 setBonusChest + m ()Lftl$a; d method_48721 getGameMode + m ()Lbqo; e method_48722 getDifficulty + m ()Z f method_48723 isHardcore + m ()Z g method_48724 isAllowCommands + m ()Ljava/lang/String; h method_48725 getSeed + m ()Z i method_48726 isGenerateStructures + m ()Z j method_48727 isBonusChest + m ()Lftk; k method_48728 getSettings + m ()Z l method_48729 isDebug + m ()Lftl$b; m method_48730 getWorldType + m ()Lfth; n method_48731 getPresetEditor + m ()Ljava/util/List; o method_48732 getNormalPresetList + m ()Ljava/util/List; p method_48733 getAltPresetList + m ()Ldcs; q method_48734 getGameRules + m ()V r method_48735 updatePresetLists + m (Ljava/nio/file/Path;Lftk;Ljava/util/Optional;Ljava/util/OptionalLong;)V + m ()V +c ftl$a net/minecraft/class_8100$class_4539 net/minecraft/client/gui/screens/worldselection/WorldCreationUiState$SelectedGameMode + f Lftl$a; a field_20624 SURVIVAL + f Lftl$a; b field_20625 HARDCORE + f Lftl$a; c field_20626 CREATIVE + f Lftl$a; d field_20627 DEBUG + f Ldct; e field_20629 gameType + f Lwz; f field_42224 displayName + f Lwz; g field_42225 info + f [Lftl$a; h field_20630 $VALUES + m ()Lwz; a method_48736 getInfo + m ()[Lftl$a; b method_36891 $values + m (Ljava/lang/String;ILjava/lang/String;Ldct;)V + m ()V +c ftl$b net/minecraft/class_8100$class_8101 net/minecraft/client/gui/screens/worldselection/WorldCreationUiState$WorldTypeEntry + f Ljm; a comp_1238 preset + f Lwz; b field_42226 CUSTOM_WORLD_DESCRIPTION + m ()Lwz; a method_48737 describePreset + m (Lakq;)Z a method_48738 method_48738 + m ()Z b method_48739 isAmplified + m (Lakq;)Lwz; b method_48740 method_48740 + m ()Ljm; c comp_1238 preset + m (Ljm;)V + m ()V +c ftm net/minecraft/class_7196 net/minecraft/client/gui/screens/worldselection/WorldOpenFlows + f Lorg/slf4j/Logger; a field_37913 LOGGER + f Ljava/util/UUID; b field_47592 WORLD_PACK_ID + f Lfgo; c field_37914 minecraft + f Lerf; d field_37915 levelSource + m ()Ljava/util/concurrent/CompletableFuture; a method_43324 promptBundledPackLoadFailure + m (Lalo$d;Lalo$f;Lalo$e;)Ljava/lang/Object; a method_45694 loadWorldDataBlocking + m (Lalp;Lerf$c;Ljava/lang/Runnable;)V a method_57772 method_57772 + m (Latu;Lalc;Ljt;Lftm$a;)Lcom/mojang/datafixers/util/Pair; a method_45695 method_45695 + m (Lcom/mojang/serialization/Dynamic;Lalo$a;)Lalo$b; a method_54609 method_54609 + m (Lcom/mojang/serialization/Dynamic;ZLatp;)Lalp; a method_54610 loadWorldStem + m (Lerf$c;)Lcom/mojang/datafixers/util/Pair; a method_45696 recreateWorldData + m (Lerf$c;Lalc;Ljt;Lerl;)V a method_41889 createLevelFromExistingSettings + m (Lerf$c;Lalp;Latp;)V a method_57773 openWorldDoLoad + m (Lerf$c;Lalp;Latp;Lgtc;Ljava/lang/Runnable;Z)V a method_57774 method_57774 + m (Lerf$c;Lalp;Latp;Ljava/lang/Runnable;)V a method_57775 openWorldCheckWorldStemCompatibility + m (Lerf$c;Lalp;Lgtc;Latp;Ljava/lang/Runnable;)V a method_57776 openWorldCheckDiskSpace + m (Lerf$c;Lalp;Lgtc;Latp;Ljava/lang/Runnable;Ljava/lang/Boolean;)V a method_57777 method_57777 + m (Lerf$c;Lcom/mojang/serialization/Dynamic;Ljava/lang/Runnable;)V a method_57778 method_57778 + m (Lerf$c;Lcom/mojang/serialization/Dynamic;Ljava/lang/Runnable;ZZ)V a method_57779 method_57779 + m (Lerf$c;Lcom/mojang/serialization/Dynamic;ZLjava/lang/Runnable;)V a method_57780 openWorldLoadLevelStem + m (Lerf$c;Lerg;Lcom/mojang/serialization/Dynamic;Ljava/lang/Runnable;)V a method_57781 openWorldCheckVersionCompatibility + m (Lerf$c;Ljava/lang/Runnable;)V a method_57782 openWorldLoadLevelData + m (Lerf$c;Ljava/lang/Runnable;Z)V a method_57783 method_57783 + m (Lerf$c;Ljava/lang/Runnable;ZZ)V a method_54617 method_54617 + m (Lerf$c;ZLjava/lang/Runnable;Ljava/lang/Runnable;)V a method_41898 askForBackup + m (Lfgo;Lftc;Lcom/mojang/serialization/Lifecycle;Ljava/lang/Runnable;Z)V a method_41892 confirmWorldCreation + m (Lgtc;Lerf$c;)Ljava/util/concurrent/CompletableFuture; a method_55510 loadBundledResourcePack + m (Ljava/lang/Runnable;Lfgo;Lftc;Z)V a method_41893 method_41893 + m (Ljava/lang/String;)Lerf$c; a method_41901 createWorldAccess + m (Ljava/lang/String;Ldda;Ldzw;Ljava/util/function/Function;Lfod;)V a method_41895 createFreshLevel + m (Ljava/lang/String;Ljava/lang/Runnable;)V a method_57784 openWorld + m (Ljava/lang/Throwable;)Ljava/lang/Void; a method_57785 method_57785 + m (Ljava/lang/Void;)Ljava/lang/Boolean; a method_57786 method_57786 + m (Ljava/util/function/Function;Ldda;Ldzw;Lalo$a;)Lalo$b; a method_45698 method_45698 + m ()V b method_54621 method_54621 + m (Lcom/mojang/serialization/Dynamic;Lalo$a;)Lalo$b; b method_54622 method_54622 + m (Lerf$c;Lalp;Latp;Ljava/lang/Runnable;)V b method_57787 openWorldLoadBundledResourcePack + m (Lerf$c;Ljava/lang/Runnable;)V b method_57788 method_57788 + m (Ljava/lang/Throwable;)Ljava/util/concurrent/CompletionStage; b method_57789 method_57789 + m (Lerf$c;Lalp;Latp;Ljava/lang/Runnable;)V c method_57790 method_57790 + m (Lerf$c;Ljava/lang/Runnable;)V c method_57791 method_57791 + m (Lfgo;Lerf;)V + m ()V +c ftm$a net/minecraft/class_7196$class_7750 net/minecraft/client/gui/screens/worldselection/WorldOpenFlows$1Data + f Ldda; a comp_1031 levelSettings + f Ldzw; b comp_1032 options + f Ljz; c comp_1033 existingDimensions + m ()Ldda; a comp_1031 levelSettings + m ()Ldzw; b comp_1032 options + m ()Ljz; c comp_1033 existingDimensions + m (Ldda;Ldzw;Ljz;)V +c ftn net/minecraft/class_528 net/minecraft/client/gui/screens/worldselection/WorldSelectionList + f Lwz; A field_26610 WORLD_LOCKED_TOOLTIP + f Lwz; B field_34803 WORLD_REQUIRES_CONVERSION + f Lwz; C field_46897 INCOMPATIBLE_VERSION_TOOLTIP + f Lwz; D field_45569 WORLD_EXPERIMENTAL + f Lfti; E field_3237 screen + f Ljava/util/concurrent/CompletableFuture; F field_39739 pendingLevels + f Ljava/util/List; G field_39740 currentlyDisplayedLevels + f Ljava/lang/String; H field_39738 filter + f Lftn$b; I field_38994 loadingHeader + f Ljava/time/format/DateTimeFormatter; a field_19132 DATE_FORMAT + f Lakr; m field_45570 ERROR_HIGHLIGHTED_SPRITE + f Lakr; n field_45571 ERROR_SPRITE + f Lakr; o field_45572 MARKED_JOIN_HIGHLIGHTED_SPRITE + f Lakr; p field_45573 MARKED_JOIN_SPRITE + f Lakr; q field_45574 WARNING_HIGHLIGHTED_SPRITE + f Lakr; r field_45575 WARNING_SPRITE + f Lakr; s field_45576 JOIN_HIGHLIGHTED_SPRITE + f Lakr; u field_45577 JOIN_SPRITE + f Lorg/slf4j/Logger; v field_3238 LOGGER + f Lwz; w field_26606 FROM_NEWER_TOOLTIP_1 + f Lwz; x field_26607 FROM_NEWER_TOOLTIP_2 + f Lwz; y field_26608 SNAPSHOT_TOOLTIP_1 + f Lwz; z field_26609 SNAPSHOT_TOOLTIP_2 + m ()Lfti; J method_2752 getScreen + m ()Ljava/util/List; K method_44679 pollLevelsIgnoreErrors + m ()V L method_44680 reloadWorldList + m ()Ljava/util/concurrent/CompletableFuture; M method_43462 loadLevels + m ()V N method_43463 fillLoadingLevels + m ()V O method_43464 notifyListUpdated + m (Lftn$a;)V a method_20157 setSelected + m (Lftn;)Lfgo; a method_43452 method_43452 + m (Ljava/lang/String;)V a method_44677 updateFilter + m (Ljava/lang/String;Lerg;)Z a method_43453 filterAccepts + m (Ljava/lang/String;Ljava/util/List;)V a method_43454 fillLevels + m (Ljava/lang/Throwable;)Ljava/util/List; a method_43455 method_43455 + m (Ljava/util/List;)V a method_44678 handleNewLevels + m ()Ljava/util/Optional; c method_20159 getSelectedOpt + m (Lwz;)V c method_43460 handleLevelLoadFailure + m (Lfti;Lfgo;IIIILjava/lang/String;Lftn;)V + m ()V +c ftn$a net/minecraft/class_528$class_7414 net/minecraft/client/gui/screens/worldselection/WorldSelectionList$Entry + m ()V +c ftn$b net/minecraft/class_528$class_7415 net/minecraft/client/gui/screens/worldselection/WorldSelectionList$LoadingHeader + f Lwz; a field_38997 LOADING_LABEL + f Lfgo; b field_38998 minecraft + m (Lfgo;)V + m ()V +c ftn$c net/minecraft/class_528$class_4272 net/minecraft/client/gui/screens/worldselection/WorldSelectionList$WorldListEntry + f Lftn; a field_19135 field_19135 + f I b field_32435 ICON_WIDTH + f I c field_32436 ICON_HEIGHT + f Lfgo; d field_19136 minecraft + f Lfti; e field_19137 screen + f Lerg; f field_19138 summary + f Lfnn; g field_19141 icon + f Ljava/nio/file/Path; h field_19140 iconFile + f J i field_19142 lastClickTime + m (Ldda;Lftk;Ljava/nio/file/Path;Z)V a method_20165 method_20165 + m (Lerf$c;Z)V a method_54628 method_54628 + m ()Z b method_54629 canJoin + m (Z)V b method_20170 method_20170 + m ()V c method_20164 joinWorld + m ()V d method_20169 deleteWorld + m ()V e method_33685 doDeleteWorld + m ()V f method_20171 editWorld + m ()V h method_20173 recreateWorld + m ()Ljava/lang/String; i method_35740 getLevelName + m ()V j method_52265 validateIconFile + m ()V k method_29990 queueLoadScreen + m ()V l method_52205 loadIcon + m ()V m method_20176 method_20176 + m ()V n method_54630 method_54630 + m ()V o method_54631 method_54631 + m ()V p method_54632 method_54632 + m ()V q method_20179 method_20179 + m (Lftn;Lftn;Lerg;)V +c fto net/minecraft/class_6223 net/minecraft/client/gui/screens/worldselection/package-info +c ftp net/minecraft/class_530 net/minecraft/client/gui/spectator/PlayerMenuItem + f Lcom/mojang/authlib/GameProfile; a field_3253 profile + f Ljava/util/function/Supplier; b field_45578 skin + f Lwz; c field_26611 name + m (Lcom/mojang/authlib/GameProfile;)V +c ftq net/minecraft/class_534 net/minecraft/client/gui/spectator/RootSpectatorMenuCategory + f Lwz; a field_26612 PROMPT_TEXT + f Ljava/util/List; b field_3266 items + m ()V + m ()V +c ftr net/minecraft/class_531 net/minecraft/client/gui/spectator/SpectatorMenu + f Lftt; a field_3260 EMPTY_SLOT + f Lakr; b field_45579 CLOSE_SPRITE + f Lakr; c field_45580 SCROLL_LEFT_SPRITE + f Lakr; d field_45581 SCROLL_RIGHT_SPRITE + f Lftt; e field_3261 CLOSE_ITEM + f Lftt; f field_3262 SCROLL_LEFT + f Lftt; g field_3256 SCROLL_RIGHT_ENABLED + f Lftt; h field_3259 SCROLL_RIGHT_DISABLED + f I i field_32443 MAX_PER_PAGE + f Lwz; j field_26613 CLOSE_MENU_TEXT + f Lwz; k field_26614 PREVIOUS_PAGE_TEXT + f Lwz; l field_26615 NEXT_PAGE_TEXT + f Lftu; m field_3255 listener + f Lfts; n field_3258 category + f I o field_3254 selectedSlot + f I p field_3263 page + m ()Ljava/util/List; a method_2770 getItems + m (I)Lftt; a method_2777 getItem + m (Lfts;)V a method_2778 selectCategory + m ()Lftt; b method_2774 getSelectedItem + m (I)V b method_2771 selectSlot + m ()Lfts; c method_2776 getSelectedCategory + m ()V d method_2779 exit + m ()I e method_2773 getSelectedSlot + m ()Lftv; f method_2772 getCurrentPage + m (Lftu;)V + m ()V +c ftr$1 net/minecraft/class_531$1 net/minecraft/client/gui/spectator/SpectatorMenu$1 + m ()V +c ftr$a net/minecraft/class_531$class_532 net/minecraft/client/gui/spectator/SpectatorMenu$CloseSpectatorItem + m ()V +c ftr$b net/minecraft/class_531$class_533 net/minecraft/client/gui/spectator/SpectatorMenu$ScrollMenuItem + f I a field_3264 direction + f Z b field_3265 enabled + m (IZ)V +c fts net/minecraft/class_535 net/minecraft/client/gui/spectator/SpectatorMenuCategory + m ()Ljava/util/List; a method_2780 getItems + m ()Lwz; b method_2781 getPrompt +c ftt net/minecraft/class_537 net/minecraft/client/gui/spectator/SpectatorMenuItem + m (Lfhz;FI)V a method_2784 renderIcon + m (Lftr;)V a method_2783 selectItem + m ()Lwz; aU_ method_16892 getName + m ()Z aV_ method_16893 isEnabled +c ftu net/minecraft/class_536 net/minecraft/client/gui/spectator/SpectatorMenuListener + m (Lftr;)V a method_2782 onSpectatorMenuClosed +c ftv net/minecraft/class_539 net/minecraft/client/gui/spectator/categories/SpectatorPage + f I a field_32444 NO_SELECTION + f Ljava/util/List; b field_3271 items + f I c field_3269 selection + m ()I a method_2787 getSelectedSlot + m (I)Lftt; a method_2786 getItem + m (Ljava/util/List;I)V +c ftw net/minecraft/class_538 net/minecraft/client/gui/spectator/categories/TeleportToPlayerMenuCategory + f Lakr; a field_45582 TELEPORT_TO_PLAYER_SPRITE + f Ljava/util/Comparator; b field_3267 PROFILE_ORDER + f Lwz; c field_26616 TELEPORT_TEXT + f Lwz; d field_26617 TELEPORT_PROMPT + f Ljava/util/List; e field_3268 items + m (Lfzq;)Lftt; a method_46520 method_46520 + m (Lfzq;)Z b method_46521 method_46521 + m (Lfzq;)Ljava/util/UUID; c method_2785 method_2785 + m ()V + m (Ljava/util/Collection;)V + m ()V +c ftx net/minecraft/class_540 net/minecraft/client/gui/spectator/categories/TeleportToTeamMenuCategory + f Lakr; a field_45583 TELEPORT_TO_TEAM_SPRITE + f Lwz; b field_26618 TELEPORT_TEXT + f Lwz; c field_26619 TELEPORT_PROMPT + f Ljava/util/List; d field_3272 items + m (Lfgo;Leyb;)Ljava/util/stream/Stream; a method_47431 method_47431 + m (Lfgo;Leyg;)Ljava/util/List; a method_47432 createTeamEntries + m ()V + m ()V +c ftx$a net/minecraft/class_540$class_541 net/minecraft/client/gui/spectator/categories/TeleportToTeamMenuCategory$TeamSelectionItem + f Leyb; a field_3275 team + f Ljava/util/function/Supplier; b field_41115 iconSkin + f Ljava/util/List; c field_3274 players + m (Lfgo;Leyb;)Ljava/util/Optional; a method_47433 create + m (Leyb;Ljava/util/List;Ljava/util/function/Supplier;)V +c fty net/minecraft/class_6224 net/minecraft/client/gui/spectator/categories/package-info +c ftz net/minecraft/class_6225 net/minecraft/client/gui/spectator/package-info +c fua net/minecraft/class_542 net/minecraft/client/main/GameConfig + f Lfua$d; a field_3278 user + f Lfaa; b field_3279 display + f Lfua$a; c field_3277 location + f Lfua$b; d field_3280 game + f Lfua$c; e field_44553 quickPlay + m (Lfua$d;Lfaa;Lfua$a;Lfua$b;Lfua$c;)V +c fua$a net/minecraft/class_542$class_544 net/minecraft/client/main/GameConfig$FolderData + f Ljava/io/File; a field_3287 gameDirectory + f Ljava/io/File; b field_3290 resourcePackDirectory + f Ljava/io/File; c field_3289 assetDirectory + f Ljava/lang/String; d field_3288 assetIndex + m ()Ljava/nio/file/Path; a method_45701 getExternalAssetSource + m (Ljava/io/File;Ljava/io/File;Ljava/io/File;Ljava/lang/String;)V +c fua$b net/minecraft/class_542$class_545 net/minecraft/client/main/GameConfig$GameData + f Z a field_3292 demo + f Ljava/lang/String; b field_3293 launchVersion + f Ljava/lang/String; c field_3291 versionType + f Z d field_25061 disableMultiplayer + f Z e field_25062 disableChat + m (ZLjava/lang/String;Ljava/lang/String;ZZ)V +c fua$c net/minecraft/class_542$class_8495 net/minecraft/client/main/GameConfig$QuickPlayData + f Ljava/lang/String; a comp_1476 path + f Ljava/lang/String; b comp_1477 singleplayer + f Ljava/lang/String; c comp_1478 multiplayer + f Ljava/lang/String; d comp_1479 realms + m ()Z a method_51257 isEnabled + m ()Ljava/lang/String; b comp_1476 path + m ()Ljava/lang/String; c comp_1477 singleplayer + m ()Ljava/lang/String; d comp_1478 multiplayer + m ()Ljava/lang/String; e comp_1479 realms + m (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +c fua$d net/minecraft/class_542$class_547 net/minecraft/client/main/GameConfig$UserData + f Lfhb; a field_3299 user + f Lcom/mojang/authlib/properties/PropertyMap; b field_3298 userProperties + f Lcom/mojang/authlib/properties/PropertyMap; c field_3297 profileProperties + f Ljava/net/Proxy; d field_3296 proxy + m (Lfhb;Lcom/mojang/authlib/properties/PropertyMap;Lcom/mojang/authlib/properties/PropertyMap;Ljava/net/Proxy;)V +c fub net/minecraft/class_4718 net/minecraft/client/main/SilentInitException + m (Ljava/lang/String;)V + m (Ljava/lang/String;Ljava/lang/Throwable;)V +c fuc net/minecraft/class_6226 net/minecraft/client/main/package-info +c fud net/minecraft/class_3968 net/minecraft/client/model/AbstractZombieModel + m (Lckd;)Z a method_17790 isAggressive + m (Lckd;FFFFF)V a method_17791 setupAnim + m (Lfyk;)V +c fue net/minecraft/class_8184 net/minecraft/client/model/AgeableHierarchicalModel + f F a field_42875 youngScaleFactor + f F b field_42876 bodyYOffset + m (FF)V + m (FFLjava/util/function/Function;)V +c fuf net/minecraft/class_4592 net/minecraft/client/model/AgeableListModel + f Z a field_20915 scaleHead + f F b field_20916 babyYHeadOffset + f F f field_20917 babyZHeadOffset + f F g field_20918 babyHeadScale + f F h field_20919 babyBodyScale + f F i field_20920 bodyYOffset + m ()Ljava/lang/Iterable; a method_22946 headParts + m (Lfbi;Lfbm;IIILfyk;)V a method_22947 method_22947 + m ()Ljava/lang/Iterable; b method_22948 bodyParts + m (Lfbi;Lfbm;IIILfyk;)V b method_22949 method_22949 + m (Lfbi;Lfbm;IIILfyk;)V c method_22950 method_22950 + m (Lfbi;Lfbm;IIILfyk;)V d method_22951 method_22951 + m (ZFF)V + m (ZFFFFF)V + m (Ljava/util/function/Function;ZFFFFF)V + m ()V +c fug net/minecraft/class_7308 net/minecraft/client/model/AllayModel + f Lfyk; a field_38442 root + f Lfyk; b field_39459 head + f Lfyk; f field_38443 body + f Lfyk; g field_38444 right_arm + f Lfyk; h field_38445 left_arm + f Lfyk; i field_38446 right_wing + f Lfyk; j field_38447 left_wing + f F k field_38999 FLYING_ANIMATION_X_ROT + f F l field_39000 MAX_HAND_HOLDING_ITEM_X_ROT_RAD + f F m field_39001 MIN_HAND_HOLDING_ITEM_X_ROT_RAD + m (Lcgk;FFFFF)V a method_42732 setupAnim + m ()Lfyq; b method_42733 createBodyLayer + m (Lfyk;)V +c fuh net/minecraft/class_4896 net/minecraft/client/model/AnimationUtils + m (Lfyk;FF)V a method_29350 bobModelPart + m (Lfyk;Lfyk;F)V a method_32789 bobArms + m (Lfyk;Lfyk;Lbtn;Z)V a method_25446 animateCrossbowCharge + m (Lfyk;Lfyk;Lbtp;FF)V a method_29351 swingWeaponDown + m (Lfyk;Lfyk;Lfyk;Z)V a method_25447 animateCrossbowHold + m (Lfyk;Lfyk;ZFF)V a method_29352 animateZombieArms + m ()V +c fui net/minecraft/class_9082 net/minecraft/client/model/ArmadilloModel + f F a field_47858 BABY_Y_OFFSET + f F b field_47860 MAX_DOWN_HEAD_ROTATION_EXTENT + f F f field_47861 MAX_UP_HEAD_ROTATION_EXTENT + f F g field_47862 MAX_WALK_ANIMATION_SPEED + f F h field_47863 WALK_ANIMATION_SCALE_FACTOR + f Ljava/lang/String; i field_47864 HEAD_CUBE + f Ljava/lang/String; j field_47865 RIGHT_EAR_CUBE + f Ljava/lang/String; k field_47866 LEFT_EAR_CUBE + f Lfyk; l field_47867 root + f Lfyk; m field_47868 body + f Lfyk; n field_47869 rightHindLeg + f Lfyk; o field_47870 leftHindLeg + f Lfyk; p field_47871 cube + f Lfyk; q field_47872 head + f Lfyk; r field_47873 tail + m (Lcgn;FFFFF)V a method_55817 setupAnim + m ()Lfyq; b method_55818 createBodyLayer + m (Lfyk;)V +c fuj net/minecraft/class_3881 net/minecraft/client/model/ArmedModel + m (Lbtg;Lfbi;)V a method_2803 translateToHand +c fuk net/minecraft/class_548 net/minecraft/client/model/ArmorStandArmorModel + m (Lciw;FFFFF)V a method_17066 setupAnim + m (Lfyo;)Lfyq; a method_32686 createBodyLayer + m (Lfyk;)V +c ful net/minecraft/class_551 net/minecraft/client/model/ArmorStandModel + f Lfyk; A field_3313 shoulderStick + f Lfyk; B field_3312 basePlate + f Ljava/lang/String; a field_32445 RIGHT_BODY_STICK + f Ljava/lang/String; b field_32446 LEFT_BODY_STICK + f Ljava/lang/String; w field_32447 SHOULDER_STICK + f Ljava/lang/String; x field_32448 BASE_PLATE + f Lfyk; y field_27391 rightBodyStick + f Lfyk; z field_27392 leftBodyStick + m (Lciw;FFF)V a method_24223 prepareMobModel + m ()Lfyq; c method_31979 createBodyLayer + m (Lfyk;)V +c fum net/minecraft/class_5772 net/minecraft/client/model/AxolotlModel + f F a field_32449 SWIMMING_LEG_XROT + f Lfyk; b field_28373 tail + f Lfyk; f field_28374 leftHindLeg + f Lfyk; g field_28375 rightHindLeg + f Lfyk; h field_28376 leftFrontLeg + f Lfyk; i field_28377 rightFrontLeg + f Lfyk; j field_28378 body + f Lfyk; k field_28379 head + f Lfyk; l field_28380 topGills + f Lfyk; m field_28381 leftGills + f Lfyk; n field_28382 rightGills + m (F)V a method_33297 setupWaterHoveringAnimation + m (FF)F a method_37091 lerpTo + m (FFF)F a method_37092 lerpTo + m (Lcgq;)V a method_37093 saveAnimationValues + m (Lcgq;FF)V a method_33292 setupInitialAnimationValues + m (Lcgq;FFFFF)V a method_33293 setupAnim + m (Lfyk;)Lorg/joml/Vector3f; a method_37094 getRotationVector + m (Lfyk;FFF)V a method_37095 lerpPart + m (Lfyk;Lorg/joml/Vector3f;)V a method_37096 setRotationFromVector + m (F)V b method_33298 setupPlayDeadAnimation + m (FF)V b method_33291 setupLayStillOnGroundAnimation + m ()Lfyq; c method_33296 createBodyLayer + m (FF)V c method_33294 setupGroundCrawlingAnimation + m ()V d method_33299 applyMirrorLegRotations + m (FF)V d method_33295 setupSwimmingAnimation + m (Lfyk;)V +c fun net/minecraft/class_553 net/minecraft/client/model/BatModel + f Lfyk; a field_27393 root + f Lfyk; b field_3321 head + f Lfyk; f field_3323 body + f Lfyk; g field_3322 rightWing + f Lfyk; h field_3320 leftWing + f Lfyk; i field_3319 rightWingTip + f Lfyk; j field_3324 leftWingTip + f Lfyk; k field_47127 feet + m (F)V a method_54805 applyHeadRotation + m (Lcez;FFFFF)V a method_17069 setupAnim + m ()Lfyq; b method_31980 createBodyLayer + m (Lfyk;)V +c fuo net/minecraft/class_4495 net/minecraft/client/model/BeeModel + f F a field_32450 BEE_Y_BASE + f Ljava/lang/String; b field_32451 BONE + f Ljava/lang/String; f field_32452 STINGER + f Ljava/lang/String; g field_32453 LEFT_ANTENNA + f Ljava/lang/String; h field_32454 RIGHT_ANTENNA + f Ljava/lang/String; i field_32455 FRONT_LEGS + f Ljava/lang/String; j field_32456 MIDDLE_LEGS + f Ljava/lang/String; k field_32457 BACK_LEGS + f Lfyk; l field_20504 bone + f Lfyk; m field_20506 rightWing + f Lfyk; n field_20507 leftWing + f Lfyk; o field_20508 frontLeg + f Lfyk; p field_20509 midLeg + f Lfyk; q field_20510 backLeg + f Lfyk; r field_20511 stinger + f Lfyk; s field_20512 leftAntenna + f Lfyk; t field_20513 rightAntenna + f F u field_20514 rollAmount + m (Lcff;FFF)V a method_22111 prepareMobModel + m (Lcff;FFFFF)V a method_22112 setupAnim + m ()Lfyq; c method_31981 createBodyLayer + m (Lfyk;)V +c fup net/minecraft/class_555 net/minecraft/client/model/BlazeModel + f Lfyk; a field_27394 root + f [Lfyk; b field_3328 upperBodyParts + f Lfyk; f field_27395 head + m (I)Ljava/lang/String; a method_31983 getPartName + m (Lfyk;I)Lfyk; a method_31984 method_31984 + m ()Lfyq; b method_31982 createBodyLayer + m (Lfyk;)V +c fuq net/minecraft/class_554 net/minecraft/client/model/BoatModel + f Ljava/lang/String; a field_32458 LEFT_PADDLE + f Ljava/lang/String; b field_32459 RIGHT_PADDLE + f Ljava/lang/String; f field_32460 WATER_PATCH + f Ljava/lang/String; g field_32461 BOTTOM + f Ljava/lang/String; h field_32462 BACK + f Ljava/lang/String; i field_32463 FRONT + f Ljava/lang/String; j field_32464 RIGHT + f Ljava/lang/String; k field_32465 LEFT + f Lfyk; l field_27396 leftPaddle + f Lfyk; m field_27397 rightPaddle + f Lfyk; n field_3326 waterPatch + f Lcom/google/common/collect/ImmutableList; o field_20922 parts + m ()Lfyq; a method_31985 createBodyModel + m (Lcov;FFFFF)V a method_22952 setupAnim + m (Lcov;ILfyk;F)V a method_2797 animatePaddle + m (Lfyk;)Lcom/google/common/collect/ImmutableList$Builder; a method_45702 createPartsBuilder + m (Lfyt;)V a method_45703 createChildren + m ()Lcom/google/common/collect/ImmutableList; b method_22953 parts + m (Lfyk;)V +c fur net/minecraft/class_9321 net/minecraft/client/model/BoggedModel + f Lfyk; a field_49563 mushrooms + m (Lcjn;FFF)V a method_57792 prepareMobModel + m ()Lfyq; c method_57793 createBodyLayer + m (Lfyk;)V +c fus net/minecraft/class_557 net/minecraft/client/model/BookModel + f Ljava/lang/String; a field_32466 LEFT_PAGES + f Ljava/lang/String; b field_32467 RIGHT_PAGES + f Ljava/lang/String; c field_32468 FLIP_PAGE_1 + f Ljava/lang/String; d field_32469 FLIP_PAGE_2 + f Lfyk; e field_27398 root + f Lfyk; f field_3336 leftLid + f Lfyk; g field_3338 rightLid + f Lfyk; h field_3337 leftPages + f Lfyk; i field_3335 rightPages + f Lfyk; j field_3334 flipPage1 + f Lfyk; k field_3339 flipPage2 + m ()Lfyq; a method_31986 createBodyLayer + m (FFFF)V a method_17073 setupAnim + m (Lfbi;Lfbm;III)V b method_24184 render + m (Lfyk;)V +c fut net/minecraft/class_8973 net/minecraft/client/model/BreezeModel + f F a field_47431 WIND_TOP_SPEED + f F b field_47432 WIND_MIDDLE_SPEED + f F f field_47433 WIND_BOTTOM_SPEED + f Lfyk; g field_47434 root + f Lfyk; h field_47435 head + f Lfyk; i field_47874 eyes + f Lfyk; j field_47875 wind + f Lfyk; k field_47437 windTop + f Lfyk; l field_47438 windMid + f Lfyk; m field_47439 windBottom + f Lfyk; n field_47440 rods + m (II)Lfyq; a method_55233 createBodyLayer + m (Lckz;FFFFF)V a method_55232 setupAnim + m ()Lfyk; b method_55819 head + m ()Lfyk; c method_55820 eyes + m ()Lfyk; d method_55821 rods + m ()Lfyk; e method_55822 wind + m (Lfyk;)V +c fuu net/minecraft/class_7751 net/minecraft/client/model/CamelModel + f F a field_40459 MAX_WALK_ANIMATION_SPEED + f F b field_42227 WALK_ANIMATION_SCALE_FACTOR + f F f field_43083 BABY_SCALE + f F g field_43084 BABY_Y_OFFSET + f Ljava/lang/String; h field_40460 SADDLE + f Ljava/lang/String; i field_40461 BRIDLE + f Ljava/lang/String; j field_40462 REINS + f Lfyk; k field_40463 root + f Lfyk; l field_40464 head + f [Lfyk; m field_40465 saddleParts + f [Lfyk; n field_40466 ridingParts + m (Lcgv;)V a method_45704 toggleInvisibleParts + m (Lcgv;FFF)V a method_45705 applyHeadRotation + m (Lcgv;FFFFF)V a method_45706 setupAnim + m ()Lfyq; b method_45707 createBodyLayer + m (Lfyk;)V +c fuv net/minecraft/class_3680 net/minecraft/client/model/CatModel + f F q field_16245 lieDownAmount + f F r field_16244 lieDownAmountTail + f F s field_16243 relaxStateOneAmount + m (Lcfh;FFF)V a method_17074 prepareMobModel + m (Lcfh;FFFFF)V a method_17075 setupAnim + m (Lfyk;)V +c fuw net/minecraft/class_7752 net/minecraft/client/model/ChestBoatModel + f Ljava/lang/String; a field_40467 CHEST_BOTTOM + f Ljava/lang/String; b field_40468 CHEST_LID + f Ljava/lang/String; f field_40469 CHEST_LOCK + m ()Lfyq; e method_45708 createBodyModel + m (Lfyk;)V +c fux net/minecraft/class_7753 net/minecraft/client/model/ChestRaftModel + f Ljava/lang/String; a field_40470 CHEST_BOTTOM + f Ljava/lang/String; b field_40471 CHEST_LID + f Ljava/lang/String; f field_40472 CHEST_LOCK + m ()Lfyq; a method_45709 createBodyModel + m (Lfyk;)V +c fuy net/minecraft/class_559 net/minecraft/client/model/ChestedHorseModel + f Lfyk; g field_27399 leftChest + f Lfyk; h field_27400 rightChest + m (Lchh;FFFFF)V a method_17076 setupAnim + m ()Lfyq; c method_31987 createBodyLayer + m (Lfyk;)V +c fuz net/minecraft/class_558 net/minecraft/client/model/ChickenModel + f Ljava/lang/String; a field_32471 RED_THING + f Lfyk; b field_3344 head + f Lfyk; f field_3346 body + f Lfyk; g field_27401 rightLeg + f Lfyk; h field_27402 leftLeg + f Lfyk; i field_27403 rightWing + f Lfyk; j field_27404 leftWing + f Lfyk; k field_3340 beak + f Lfyk; l field_3342 redThing + m ()Lfyq; c method_31988 createBodyLayer + m (Lfyk;)V +c fva net/minecraft/class_561 net/minecraft/client/model/CodModel + f Lfyk; a field_27405 root + f Lfyk; b field_3350 tailFin + m ()Lfyq; b method_31989 createBodyLayer + m (Lfyk;)V +c fvb net/minecraft/class_4593 net/minecraft/client/model/ColorableAgeableListModel + f I a field_52151 color + m (I)V a method_22955 setColor + m ()V +c fvc net/minecraft/class_4594 net/minecraft/client/model/ColorableHierarchicalModel + f I a field_52152 color + m (I)V a method_22956 setColor + m ()V +c fvd net/minecraft/class_560 net/minecraft/client/model/CowModel + m ()Lfyq; c method_31990 createBodyLayer + m ()Lfyk; d method_2800 getHead + m (Lfyk;)V +c fve net/minecraft/class_562 net/minecraft/client/model/CreeperModel + f Lfyk; a field_27406 root + f Lfyk; b field_3360 head + f Lfyk; f field_27407 rightHindLeg + f Lfyk; g field_27408 leftHindLeg + f Lfyk; h field_27409 rightFrontLeg + f Lfyk; i field_27410 leftFrontLeg + f I j field_32472 Y_OFFSET + m (Lfyo;)Lfyq; a method_31991 createBodyLayer + m (Lfyk;)V +c fvf net/minecraft/class_889 net/minecraft/client/model/DolphinModel + f Lfyk; a field_27411 root + f Lfyk; b field_4658 body + f Lfyk; f field_4657 tail + f Lfyk; g field_4655 tailFin + m ()Lfyq; b method_31992 createBodyLayer + m (Lfyk;)V +c fvg net/minecraft/class_564 net/minecraft/client/model/DrownedModel + m (Lckw;FFF)V a method_17077 prepareMobModel + m (Lckw;FFFFF)V a method_17134 setupAnim + m (Lfyo;)Lfyq; a method_31993 createBodyLayer + m (Lfyk;)V +c fvh net/minecraft/class_563 net/minecraft/client/model/ElytraModel + f Lfyk; a field_27412 rightWing + f Lfyk; b field_3365 leftWing + m (Lbtn;FFFFF)V a method_17079 setupAnim + m ()Lfyq; c method_31994 createLayer + m (Lfyk;)V +c fvi net/minecraft/class_566 net/minecraft/client/model/EndermanModel + f Z a field_3371 carrying + f Z b field_3370 creepy + m ()Lfyq; c method_31995 createBodyLayer + m (Lfyk;)V +c fvj net/minecraft/class_565 net/minecraft/client/model/EndermiteModel + f I a field_32473 BODY_COUNT + f [[I b field_3366 BODY_SIZES + f [[I f field_3369 BODY_TEXS + f Lfyk; g field_27413 root + f [Lfyk; h field_3368 bodyParts + m (I)Ljava/lang/String; a method_31997 createSegmentName + m ()Lfyq; b method_31996 createBodyLayer + m (Lfyk;)V + m ()V +c fvk net/minecraft/class_583 net/minecraft/client/model/EntityModel + f F c field_3447 attackTime + f Z d field_3449 riding + f Z e field_3448 young + m (Lbsr;FFF)V a method_2816 prepareMobModel + m (Lbsr;FFFFF)V a method_2819 setupAnim + m (Lfvk;)V a method_17081 copyPropertiesTo + m ()V + m (Ljava/util/function/Function;)V +c fvl net/minecraft/class_568 net/minecraft/client/model/EvokerFangsModel + f Ljava/lang/String; a field_32474 BASE + f Ljava/lang/String; b field_32475 UPPER_JAW + f Ljava/lang/String; f field_32476 LOWER_JAW + f Lfyk; g field_27414 root + f Lfyk; h field_3374 base + f Lfyk; i field_3376 upperJaw + f Lfyk; j field_3375 lowerJaw + m ()Lfyq; b method_31998 createBodyLayer + m (Lfyk;)V +c fvm net/minecraft/class_4041 net/minecraft/client/model/FoxModel + f Lfyk; a field_18015 head + f Lfyk; b field_18019 body + f Lfyk; f field_27415 rightHindLeg + f Lfyk; g field_27416 leftHindLeg + f Lfyk; h field_27417 rightFrontLeg + f Lfyk; i field_27418 leftFrontLeg + f Lfyk; j field_18024 tail + f I k field_32477 LEG_SIZE + f F l field_32478 HEAD_HEIGHT + f F m field_32479 LEG_POS + f F n field_18025 legMotionPos + m (Lcfo;FFF)V a method_18330 prepareMobModel + m (Lcfo;FFFFF)V a method_18332 setupAnim + m ()Lfyq; c method_31999 createBodyLayer + m (Lfyk;)V +c fvn net/minecraft/class_7198 net/minecraft/client/model/FrogModel + f F a field_39193 MAX_WALK_ANIMATION_SPEED + f F b field_42228 MAX_SWIM_ANIMATION_SPEED + f F f field_42229 WALK_ANIMATION_SCALE_FACTOR + f Lfyk; g field_37919 root + f Lfyk; h field_37920 body + f Lfyk; i field_37921 head + f Lfyk; j field_37922 eyes + f Lfyk; k field_37923 tongue + f Lfyk; l field_37924 leftArm + f Lfyk; m field_37925 rightArm + f Lfyk; n field_37926 leftLeg + f Lfyk; o field_37927 rightLeg + f Lfyk; p field_38448 croakingBody + m (Lcgy;FFFFF)V a method_41907 setupAnim + m ()Lfyq; b method_41905 createBodyLayer + m (Lfyk;)V +c fvo net/minecraft/class_567 net/minecraft/client/model/GhastModel + f Lfyk; a field_27419 root + f [Lfyk; b field_3372 tentacles + m (I)Ljava/lang/String; a method_32001 createTentacleName + m ()Lfyq; b method_32000 createBodyLayer + m (Lfyk;)V +c fvp net/minecraft/class_3969 net/minecraft/client/model/GiantZombieModel + m (Lcjy;)Z a method_17792 isAggressive + m (Lfyk;)V +c fvq net/minecraft/class_6227 net/minecraft/client/model/GoatModel + m (Lche;FFFFF)V a method_35741 setupAnim + m ()Lfyq; c method_35742 createBodyLayer + m (Lfyk;)V +c fvr net/minecraft/class_570 net/minecraft/client/model/GuardianModel + f [F a field_17131 SPIKE_X_ROT + f [F b field_17132 SPIKE_Y_ROT + f [F f field_17133 SPIKE_Z_ROT + f [F g field_17134 SPIKE_X + f [F h field_17135 SPIKE_Y + f [F i field_17136 SPIKE_Z + f Ljava/lang/String; j field_32480 EYE + f Ljava/lang/String; k field_32481 TAIL_0 + f Ljava/lang/String; l field_32482 TAIL_1 + f Ljava/lang/String; m field_32483 TAIL_2 + f Lfyk; n field_27420 root + f Lfyk; o field_3379 head + f Lfyk; p field_3381 eye + f [Lfyk; q field_3380 spikeParts + f [Lfyk; r field_3378 tailParts + m (FF)V a method_24185 setupSpikes + m (I)Ljava/lang/String; a method_32003 createSpikeName + m (IFF)F a method_32004 getSpikeOffset + m (Lcjz;FFFFF)V a method_17083 setupAnim + m ()Lfyq; b method_32002 createBodyLayer + m (IFF)F b method_32005 getSpikeX + m (IFF)F c method_32006 getSpikeY + m (IFF)F d method_32007 getSpikeZ + m (Lfyk;)V + m ()V +c fvs net/minecraft/class_3882 net/minecraft/client/model/HeadedModel + m ()Lfyk; d method_2838 getHead +c fvt net/minecraft/class_5597 net/minecraft/client/model/HierarchicalModel + f Lorg/joml/Vector3f; a field_39195 ANIMATION_VECTOR_CACHE + m ()Lfyk; a method_32008 root + m (Lbsm;Lfhd;F)V a method_43781 animate + m (Lbsm;Lfhd;FF)V a method_43782 animate + m (Lfhd;)V a method_52185 applyStatic + m (Lfhd;FFFF)V a method_48741 animateWalk + m (Lfhd;Lbsm;)V a method_43783 method_43783 + m (Ljava/lang/String;)Ljava/util/Optional; a method_41909 getAnyDescendantWithName + m (Ljava/lang/String;Lfyk;)Lfyk; a method_41910 method_41910 + m (Ljava/lang/String;Lfyk;)Z b method_41911 method_41911 + m ()V + m (Ljava/util/function/Function;)V + m ()V +c fvu net/minecraft/class_4791 net/minecraft/client/model/HoglinModel + f F a field_32484 DEFAULT_HEAD_X_ROT + f F b field_32485 ATTACK_HEAD_X_ROT_END + f Lfyk; f field_22227 head + f Lfyk; g field_22228 rightEar + f Lfyk; h field_22229 leftEar + f Lfyk; i field_22230 body + f Lfyk; j field_27421 rightFrontLeg + f Lfyk; k field_27422 leftFrontLeg + f Lfyk; l field_27423 rightHindLeg + f Lfyk; m field_27424 leftHindLeg + f Lfyk; n field_25484 mane + m (Lbtp;FFFFF)V a method_24461 setupAnim + m ()Lfyq; c method_32009 createBodyLayer + m (Lfyk;)V +c fvv net/minecraft/class_549 net/minecraft/client/model/HorseModel + f Lfyk; A field_27428 leftFrontLeg + f Lfyk; B field_27429 rightHindBabyLeg + f Lfyk; C field_27430 leftHindBabyLeg + f Lfyk; D field_27431 rightFrontBabyLeg + f Lfyk; E field_27432 leftFrontBabyLeg + f Lfyk; F field_3300 tail + f [Lfyk; G field_3304 saddleParts + f [Lfyk; H field_3301 ridingParts + f Ljava/lang/String; a field_32486 HEAD_PARTS + f Lfyk; b field_3305 body + f Lfyk; f field_3307 headParts + f F g field_32487 DEG_125 + f F h field_32488 DEG_60 + f F i field_32489 DEG_45 + f F j field_32490 DEG_30 + f F k field_32491 DEG_15 + f Ljava/lang/String; l field_32492 LEFT_HIND_BABY_LEG + f Ljava/lang/String; m field_32493 RIGHT_HIND_BABY_LEG + f Ljava/lang/String; n field_32494 LEFT_FRONT_BABY_LEG + f Ljava/lang/String; o field_32495 RIGHT_FRONT_BABY_LEG + f Ljava/lang/String; p field_32496 SADDLE + f Ljava/lang/String; q field_32497 LEFT_SADDLE_MOUTH + f Ljava/lang/String; r field_32498 LEFT_SADDLE_LINE + f Ljava/lang/String; s field_32499 RIGHT_SADDLE_MOUTH + f Ljava/lang/String; t field_32500 RIGHT_SADDLE_LINE + f Ljava/lang/String; u field_32501 HEAD_SADDLE + f Ljava/lang/String; w field_32502 MOUTH_SADDLE_WRAP + f Lfyk; x field_27425 rightHindLeg + f Lfyk; y field_27426 leftHindLeg + f Lfyk; z field_27427 rightFrontLeg + m (Lchi;FFF)V a method_17084 prepareMobModel + m (Lchi;FFFFF)V a method_17085 setupAnim + m (Lfyo;)Lfys; a method_32010 createBodyMesh + m (Lfyk;)V +c fvw net/minecraft/class_8136 net/minecraft/client/model/HumanoidArmorModel + m (Lfyo;)Lfys; a method_49032 createBodyLayer + m (Lfyk;)V +c fvx net/minecraft/class_572 net/minecraft/client/model/HumanoidModel + f F A field_46724 HORIZONTAL_SHIELD_MOVEMENT_LIMIT + f F a field_42512 DUCK_WALK_ROTATION + f F b field_32503 SPYGLASS_ARM_ROT_Y + f F f field_32505 OVERLAY_SCALE + f F g field_32506 HAT_OVERLAY_SCALE + f F h field_42513 LEGGINGS_OVERLAY_SCALE + f F i field_39069 TOOT_HORN_XROT_BASE + f F j field_39070 TOOT_HORN_YROT_BASE + f Lfyk; k field_3398 head + f Lfyk; l field_3394 hat + f Lfyk; m field_3391 body + f Lfyk; n field_3401 rightArm + f Lfyk; o field_27433 leftArm + f Lfyk; p field_3392 rightLeg + f Lfyk; q field_3397 leftLeg + f Lfvx$a; r field_3399 leftArmPose + f Lfvx$a; s field_3395 rightArmPose + f Z t field_3400 crouching + f F u field_3396 swimAmount + f F w field_32504 SPYGLASS_ARM_ROT_X + f F x field_32507 SPYGLASS_ARM_CROUCH_ROT_X + f F y field_46576 HIGHEST_SHIELD_BLOCKING_ANGLE + f F z field_46577 LOWEST_SHIELD_BLOCKING_ANGLE + m (F)F a method_2807 quadraticArmUpdate + m (FFF)F a method_2804 rotlerpRad + m (Lbtg;)Lfyk; a method_2808 getArm + m (Lbtn;)V a method_30154 poseRightArm + m (Lbtn;F)V a method_29353 setupAttackAnimation + m (Lbtn;FFF)V a method_17086 prepareMobModel + m (Lbtn;FFFFF)V a method_17087 setupAnim + m (Lfvx;)V a method_2818 copyPropertiesTo + m (Lfyk;Z)V a method_54131 poseBlockingArm + m (Lfyo;F)Lfys; a method_32011 createMesh + m (Lbtn;)V b method_30155 poseLeftArm + m (Lbtn;)Lbtg; c method_2806 getAttackArm + m (Z)V c_ method_2805 setAllVisible + m (Lfyk;)V + m (Lfyk;Ljava/util/function/Function;)V +c fvx$a net/minecraft/class_572$class_573 net/minecraft/client/model/HumanoidModel$ArmPose + f Lfvx$a; a field_3409 EMPTY + f Lfvx$a; b field_3410 ITEM + f Lfvx$a; c field_3406 BLOCK + f Lfvx$a; d field_3403 BOW_AND_ARROW + f Lfvx$a; e field_3407 THROW_SPEAR + f Lfvx$a; f field_3405 CROSSBOW_CHARGE + f Lfvx$a; g field_3408 CROSSBOW_HOLD + f Lfvx$a; h field_27434 SPYGLASS + f Lfvx$a; i field_39071 TOOT_HORN + f Lfvx$a; j field_42877 BRUSH + f Z k field_25722 twoHanded + f [Lfvx$a; l field_3404 $VALUES + m ()Z a method_30156 isTwoHanded + m ()[Lfvx$a; b method_36892 $values + m (Ljava/lang/String;IZ)V + m ()V +c fvy net/minecraft/class_575 net/minecraft/client/model/IllagerModel + f Lfyk; a field_27435 root + f Lfyk; b field_3422 head + f Lfyk; f field_3419 hat + f Lfyk; g field_3423 arms + f Lfyk; h field_3420 leftLeg + f Lfyk; i field_3418 rightLeg + f Lfyk; j field_3426 rightArm + f Lfyk; k field_3417 leftArm + m (Lbtg;)Lfyk; a method_2813 getArm + m (Lcjk;FFFFF)V a method_17094 setupAnim + m ()Lfyq; b method_32012 createBodyLayer + m ()Lfyk; c method_2812 getHat + m (Lfyk;)V +c fvz net/minecraft/class_574 net/minecraft/client/model/IronGolemModel + f Lfyk; a field_27436 root + f Lfyk; b field_3415 head + f Lfyk; f field_27437 rightArm + f Lfyk; g field_27438 leftArm + f Lfyk; h field_27439 rightLeg + f Lfyk; i field_27440 leftLeg + m (Lcfq;FFF)V a method_17095 prepareMobModel + m (Lcfq;FFFFF)V a method_17097 setupAnim + m ()Lfyq; b method_32013 createBodyLayer + m ()Lfyk; c method_2809 getFlowerHoldingArm + m (Lfyk;)V +c fwa net/minecraft/class_576 net/minecraft/client/model/LavaSlimeModel + f I a field_32508 SEGMENT_COUNT + f Lfyk; b field_27441 root + f [Lfyk; f field_3427 bodyCubes + m (I)Ljava/lang/String; a method_32015 getSegmentName + m (Lckm;FFF)V a method_17098 prepareMobModel + m (Lckm;FFFFF)V a method_22958 setupAnim + m (Lfyk;I)Lfyk; a method_32016 method_32016 + m ()Lfyq; b method_32014 createBodyLayer + m (Lfyk;)V +c fwb net/minecraft/class_579 net/minecraft/client/model/LeashKnotModel + f Ljava/lang/String; a field_32509 KNOT + f Lfyk; b field_27442 root + f Lfyk; f field_3431 knot + m ()Lfyq; b method_32017 createBodyLayer + m (Lfyk;)V +c fwc net/minecraft/class_4595 net/minecraft/client/model/ListModel + m (Lfbi;Lfbm;IIILfyk;)V a method_22961 method_22961 + m ()Ljava/lang/Iterable; d method_22960 parts + m ()V + m (Ljava/util/function/Function;)V +c fwd net/minecraft/class_578 net/minecraft/client/model/LlamaModel + f Lfyk; a field_27443 head + f Lfyk; b field_27444 body + f Lfyk; f field_27445 rightHindLeg + f Lfyk; g field_27446 leftHindLeg + f Lfyk; h field_27447 rightFrontLeg + f Lfyk; i field_27448 leftFrontLeg + f Lfyk; j field_27449 rightChest + f Lfyk; k field_27450 leftChest + m (Lchh;FFFFF)V a method_22962 setupAnim + m (Lfbi;Lfbm;IIILfyk;)V a method_22963 method_22963 + m (Lfyo;)Lfyq; a method_32018 createBodyLayer + m (Lfbi;Lfbm;IIILfyk;)V b method_22964 method_22964 + m (Lfyk;)V +c fwe net/minecraft/class_581 net/minecraft/client/model/LlamaSpitModel + f Ljava/lang/String; a field_32510 MAIN + f Lfyk; b field_27451 root + m ()Lfyq; b method_32019 createBodyLayer + m (Lfyk;)V +c fwf net/minecraft/class_580 net/minecraft/client/model/MinecartModel + f Lfyk; a field_27452 root + m ()Lfyq; b method_32020 createBodyLayer + m (Lfyk;)V +c fwg net/minecraft/class_3879 net/minecraft/client/model/Model + f Ljava/util/function/Function; v field_21343 renderType + m (Lakr;)Lgfh; a method_23500 renderType + m (Lfbi;Lfbm;II)V a method_60879 renderToBuffer + m (Lfbi;Lfbm;III)V a method_2828 renderToBuffer + m (Ljava/util/function/Function;)V +c fwh net/minecraft/class_4496 net/minecraft/client/model/ModelUtils + m (FFF)F a method_22114 rotlerpRad + m ()V +c fwi net/minecraft/class_582 net/minecraft/client/model/OcelotModel + f F A field_32512 BODY_WALK_Z + f F B field_32513 TAIL_1_WALK_Y + f F C field_32514 TAIL_1_WALK_Z + f F D field_32515 TAIL_2_WALK_Y + f F E field_32516 TAIL_2_WALK_Z + f F F field_32517 FRONT_LEG_Z + f Ljava/lang/String; G field_32518 TAIL_1 + f Ljava/lang/String; H field_32519 TAIL_2 + f I a field_32520 SITTING_STATE + f F b field_32521 BACK_LEG_Y + f F f field_32522 BACK_LEG_Z + f F g field_32523 FRONT_LEG_Y + f Lfyk; h field_27454 leftHindLeg + f Lfyk; i field_27455 rightHindLeg + f Lfyk; j field_27456 leftFrontLeg + f Lfyk; k field_27457 rightFrontLeg + f Lfyk; l field_3436 tail1 + f Lfyk; m field_3442 tail2 + f Lfyk; n field_3435 head + f Lfyk; o field_3437 body + f I p field_3434 state + f I q field_32524 CROUCH_STATE + f I r field_32525 WALK_STATE + f I s field_32526 SPRINT_STATE + f F t field_32527 XO + f F u field_32528 YO + f F w field_32529 ZO + f F x field_32530 HEAD_WALK_Y + f F y field_32531 HEAD_WALK_Z + f F z field_32532 BODY_WALK_Y + m (Lfyo;)Lfys; a method_32021 createBodyMesh + m (Lfyk;)V +c fwj net/minecraft/class_586 net/minecraft/client/model/PandaModel + f F j field_3470 sitAmount + f F k field_3469 lieOnBackAmount + f F l field_3468 rollAmount + m (Lcft;FFF)V a method_17102 prepareMobModel + m (Lcft;FFFFF)V a method_17103 setupAnim + m ()Lfyq; c method_32022 createBodyLayer + m (Lfyk;)V +c fwk net/minecraft/class_584 net/minecraft/client/model/ParrotModel + f Ljava/lang/String; a field_32533 FEATHER + f Lfyk; b field_27458 root + f Lfyk; f field_3458 body + f Lfyk; g field_3460 tail + f Lfyk; h field_27459 leftWing + f Lfyk; i field_27460 rightWing + f Lfyk; j field_3452 head + f Lfyk; k field_3456 feather + f Lfyk; l field_27461 leftLeg + f Lfyk; m field_27462 rightLeg + m (Lcfu;)Lfwk$a; a method_17107 getState + m (Lcfu;FFF)V a method_17108 prepareMobModel + m (Lcfu;FFFFF)V a method_17112 setupAnim + m (Lfbi;Lfbm;IIFFFFI)V a method_17106 renderOnShoulder + m (Lfwk$a;)V a method_17110 prepare + m (Lfwk$a;IFFFFF)V a method_17111 setupAnim + m ()Lfyq; b method_32023 createBodyLayer + m (Lfyk;)V +c fwk$a net/minecraft/class_584$class_585 net/minecraft/client/model/ParrotModel$State + f Lfwk$a; a field_3462 FLYING + f Lfwk$a; b field_3465 STANDING + f Lfwk$a; c field_3466 SITTING + f Lfwk$a; d field_3463 PARTY + f Lfwk$a; e field_3464 ON_SHOULDER + f [Lfwk$a; f field_3467 $VALUES + m ()[Lfwk$a; a method_36893 $values + m (Ljava/lang/String;I)V + m ()V +c fwl net/minecraft/class_588 net/minecraft/client/model/PhantomModel + f Ljava/lang/String; a field_32534 TAIL_BASE + f Ljava/lang/String; b field_32535 TAIL_TIP + f Lfyk; f field_27463 root + f Lfyk; g field_3477 leftWingBase + f Lfyk; h field_3476 leftWingTip + f Lfyk; i field_3474 rightWingBase + f Lfyk; j field_3472 rightWingTip + f Lfyk; k field_3471 tailBase + f Lfyk; l field_3473 tailTip + m (Lckf;FFFFF)V a method_33686 setupAnim + m ()Lfyq; b method_32024 createBodyLayer + m (Lfyk;)V +c fwm net/minecraft/class_587 net/minecraft/client/model/PigModel + m (Lfyo;)Lfyq; a method_32025 createBodyLayer + m (Lfyk;)V +c fwn net/minecraft/class_7946 net/minecraft/client/model/PiglinHeadModel + f Lfyk; a field_41379 head + f Lfyk; b field_41380 leftEar + f Lfyk; c field_41381 rightEar + m ()Lfys; a method_47655 createHeadModel + m (Lfyk;)V +c fwo net/minecraft/class_4840 net/minecraft/client/model/PiglinModel + f Lfyk; A field_27465 leftEar + f Lfym; B field_25634 bodyDefault + f Lfym; C field_25635 headDefault + f Lfym; D field_25632 leftArmDefault + f Lfym; E field_25633 rightArmDefault + f Lfyk; a field_27464 rightEar + m (Lbtp;)V a method_29354 holdWeaponHigh + m (Lbtp;F)V a method_29355 setupAttackAnimation + m (Lbtp;FFFFF)V a method_24803 setupAnim + m (Lfyo;)Lfys; a method_32026 createMesh + m (Lfyo;Lfys;)V a method_47656 addHead + m (Lfyk;)V +c fwp net/minecraft/class_591 net/minecraft/client/model/PlayerModel + f Ljava/lang/String; A field_32539 CLOAK + f Ljava/lang/String; B field_32540 LEFT_SLEEVE + f Ljava/lang/String; C field_32541 RIGHT_SLEEVE + f Ljava/lang/String; D field_32536 LEFT_PANTS + f Ljava/lang/String; E field_32537 RIGHT_PANTS + f Ljava/util/List; F field_27466 parts + f Lfyk; G field_3485 cloak + f Lfyk; H field_3481 ear + f Z I field_3480 slim + f Ljava/lang/String; a field_32538 EAR + f Lfyk; b field_3484 leftSleeve + f Lfyk; w field_3486 rightSleeve + f Lfyk; x field_3482 leftPants + f Lfyk; y field_3479 rightPants + f Lfyk; z field_3483 jacket + m (Layw;)Lfyk; a method_22697 getRandomModelPart + m (Lfyk;)Z a method_32027 method_32027 + m (Lfyo;Z)Lfys; a method_32028 createMesh + m (Lfbi;Lfbm;II)V b method_2824 renderEars + m (Lfbi;Lfbm;II)V c method_2823 renderCloak + m (Lfyk;Z)V +c fwq net/minecraft/class_590 net/minecraft/client/model/PolarBearModel + m (Lcfw;FFFFF)V a method_17114 setupAnim + m ()Lfyq; c method_32029 createBodyLayer + m (Lfyk;)V +c fwr net/minecraft/class_592 net/minecraft/client/model/PufferfishBigModel + f Lfyk; a field_27467 root + f Lfyk; b field_27468 leftBlueFin + f Lfyk; f field_27469 rightBlueFin + m ()Lfyq; b method_32030 createBodyLayer + m (Lfyk;)V +c fws net/minecraft/class_595 net/minecraft/client/model/PufferfishMidModel + f Lfyk; a field_27470 root + f Lfyk; b field_27471 leftBlueFin + f Lfyk; f field_27472 rightBlueFin + m ()Lfyq; b method_32031 createBodyLayer + m (Lfyk;)V +c fwt net/minecraft/class_594 net/minecraft/client/model/PufferfishSmallModel + f Lfyk; a field_27473 root + f Lfyk; b field_27474 leftFin + f Lfyk; f field_27475 rightFin + m ()Lfyq; b method_32032 createBodyLayer + m (Lfyk;)V +c fwu net/minecraft/class_597 net/minecraft/client/model/QuadrupedModel + f Lfyk; a field_3535 head + f Lfyk; b field_3538 body + f Lfyk; f field_27476 rightHindLeg + f Lfyk; g field_27477 leftHindLeg + f Lfyk; h field_27478 rightFrontLeg + f Lfyk; i field_27479 leftFrontLeg + m (ILfyo;)Lfys; a method_32033 createBodyMesh + m (Lfyk;ZFFFFI)V +c fwv net/minecraft/class_596 net/minecraft/client/model/RabbitModel + f F a field_32542 REAR_JUMP_ANGLE + f F b field_32543 FRONT_JUMP_ANGLE + f Ljava/lang/String; f field_32544 LEFT_HAUNCH + f Ljava/lang/String; g field_32545 RIGHT_HAUNCH + f Lfyk; h field_27480 leftRearFoot + f Lfyk; i field_27481 rightRearFoot + f Lfyk; j field_27482 leftHaunch + f Lfyk; k field_27483 rightHaunch + f Lfyk; l field_3528 body + f Lfyk; m field_27484 leftFrontLeg + f Lfyk; n field_27485 rightFrontLeg + f Lfyk; o field_27486 head + f Lfyk; p field_27487 rightEar + f Lfyk; q field_27488 leftEar + f Lfyk; r field_3524 tail + f Lfyk; s field_3530 nose + f F t field_3531 jumpRotation + f F u field_32546 NEW_SCALE + m ()Lfyq; a method_32034 createBodyLayer + m (Lcfy;FFF)V a method_17115 prepareMobModel + m (Lcfy;FFFFF)V a method_17117 setupAnim + m (Lfbi;Lfbm;IIILfyk;)V a method_22966 method_22966 + m (Lfbi;Lfbm;IIILfyk;)V b method_22967 method_22967 + m (Lfbi;Lfbm;IIILfyk;)V c method_22968 method_22968 + m (Lfyk;)V +c fww net/minecraft/class_7754 net/minecraft/client/model/RaftModel + f Ljava/lang/String; a field_40473 LEFT_PADDLE + f Ljava/lang/String; b field_40474 RIGHT_PADDLE + f Ljava/lang/String; f field_40475 BOTTOM + f Lfyk; g field_40476 leftPaddle + f Lfyk; h field_40477 rightPaddle + f Lcom/google/common/collect/ImmutableList; i field_40478 parts + m (Lcov;FFFFF)V a method_45711 setupAnim + m (Lcov;ILfyk;F)V a method_45712 animatePaddle + m (Lfyk;)Lcom/google/common/collect/ImmutableList$Builder; a method_45710 createPartsBuilder + m (Lfyt;)V a method_45713 createChildren + m ()Lfyq; b method_45714 createBodyModel + m ()Lcom/google/common/collect/ImmutableList; c method_45715 parts + m (Lfyk;)V +c fwx net/minecraft/class_571 net/minecraft/client/model/RavagerModel + f Lfyk; a field_27489 root + f Lfyk; b field_3386 head + f Lfyk; f field_3388 mouth + f Lfyk; g field_27490 rightHindLeg + f Lfyk; h field_27491 leftHindLeg + f Lfyk; i field_27492 rightFrontLeg + f Lfyk; j field_27493 leftFrontLeg + f Lfyk; k field_3384 neck + m (Lcki;FFF)V a method_17089 prepareMobModel + m (Lcki;FFFFF)V a method_17091 setupAnim + m ()Lfyq; b method_32035 createBodyLayer + m (Lfyk;)V +c fwy net/minecraft/class_599 net/minecraft/client/model/SalmonModel + f Ljava/lang/String; a field_32547 BODY_FRONT + f Ljava/lang/String; b field_32548 BODY_BACK + f Lfyk; f field_27494 root + f Lfyk; g field_3548 bodyBack + m ()Lfyq; b method_32036 createBodyLayer + m (Lfyk;)V +c fwz net/minecraft/class_598 net/minecraft/client/model/SheepFurModel + f F j field_3541 headXRot + m (Lcga;FFF)V a method_17118 prepareMobModel + m (Lcga;FFFFF)V a method_17119 setupAnim + m ()Lfyq; c method_32037 createFurLayer + m (Lfyk;)V +c fxa net/minecraft/class_601 net/minecraft/client/model/SheepModel + f F j field_3552 headXRot + m (Lcga;FFF)V a method_17120 prepareMobModel + m (Lcga;FFFFF)V a method_17121 setupAnim + m ()Lfyq; c method_32038 createBodyLayer + m (Lfyk;)V +c fxb net/minecraft/class_600 net/minecraft/client/model/ShieldModel + f Ljava/lang/String; a field_32549 PLATE + f Ljava/lang/String; b field_32550 HANDLE + f I c field_32551 SHIELD_WIDTH + f I d field_32552 SHIELD_HEIGHT + f Lfyk; e field_27495 root + f Lfyk; f field_3550 plate + f Lfyk; g field_3551 handle + m ()Lfyq; a method_32039 createLayer + m ()Lfyk; b method_23774 plate + m ()Lfyk; c method_23775 handle + m (Lfyk;)V +c fxc net/minecraft/class_603 net/minecraft/client/model/ShulkerBulletModel + f Ljava/lang/String; a field_32553 MAIN + f Lfyk; b field_27496 root + f Lfyk; f field_3556 main + m ()Lfyq; b method_32040 createBodyLayer + m (Lfyk;)V +c fxd net/minecraft/class_602 net/minecraft/client/model/ShulkerModel + f Ljava/lang/String; a field_32554 LID + f Ljava/lang/String; b field_32555 BASE + f Lfyk; f field_3553 base + f Lfyk; g field_3555 lid + f Lfyk; h field_3554 head + m ()Lfyq; a method_32041 createBodyLayer + m (Lckj;FFFFF)V a method_17122 setupAnim + m ()Lfyk; b method_2829 getLid + m ()Lfyk; c method_2830 getHead + m (Lfyk;)V +c fxe net/minecraft/class_604 net/minecraft/client/model/SilverfishModel + f I a field_32556 BODY_COUNT + f Lfyk; b field_27497 root + f [Lfyk; f field_3560 bodyParts + f [Lfyk; g field_3557 bodyLayers + f [[I h field_3558 BODY_SIZES + f [[I i field_3559 BODY_TEXS + m (I)Ljava/lang/String; a method_32043 getLayerName + m (Lfyk;I)Lfyk; a method_32044 method_32044 + m ()Lfyq; b method_32042 createBodyLayer + m (I)Ljava/lang/String; b method_32045 getSegmentName + m (Lfyk;I)Lfyk; b method_32046 method_32046 + m (Lfyk;)V + m ()V +c fxf net/minecraft/class_606 net/minecraft/client/model/SkeletonModel + m (Lbtp;FFF)V a method_19689 prepareMobModel + m (Lbtp;FFFFF)V a method_19690 setupAnim + m (Lfyt;)V a method_57794 createDefaultSkeletonMesh + m ()Lfyq; e method_32047 createBodyLayer + m (Lfyk;)V +c fxg net/minecraft/class_607 net/minecraft/client/model/SkullModel + f Lfyk; a field_3564 head + f Lfyk; b field_27498 root + m ()Lfys; a method_32048 createHeadModel + m ()Lfyq; b method_32049 createHumanoidHeadLayer + m ()Lfyq; c method_32050 createMobHeadLayer + m (Lfyk;)V +c fxh net/minecraft/class_5598 net/minecraft/client/model/SkullModelBase + m (FFF)V a method_2821 setupAnim + m ()V +c fxi net/minecraft/class_609 net/minecraft/client/model/SlimeModel + f Lfyk; a field_27499 root + m ()Lfyq; b method_32051 createOuterBodyLayer + m ()Lfyq; c method_32052 createInnerBodyLayer + m (Lfyk;)V +c fxj net/minecraft/class_8185 net/minecraft/client/model/SnifferModel + f F a field_43364 WALK_ANIMATION_SPEED_MAX + f F b field_43407 WALK_ANIMATION_SCALE_FACTOR + f Lfyk; f field_42881 root + f Lfyk; g field_43085 head + m (Lchv;FFFFF)V a method_49302 setupAnim + m ()Lfyq; b method_49303 createBodyLayer + m (Lfyk;)V +c fxk net/minecraft/class_608 net/minecraft/client/model/SnowGolemModel + f Ljava/lang/String; a field_32557 UPPER_BODY + f Lfyk; b field_27500 root + f Lfyk; f field_27501 upperBody + f Lfyk; g field_3568 head + f Lfyk; h field_27502 leftArm + f Lfyk; i field_27503 rightArm + m ()Lfyq; b method_32053 createBodyLayer + m ()Lfyk; c method_2834 getHead + m (Lfyk;)V +c fxl net/minecraft/class_611 net/minecraft/client/model/SpiderModel + f Ljava/lang/String; a field_32558 BODY_0 + f Ljava/lang/String; b field_32559 BODY_1 + f Ljava/lang/String; f field_32560 RIGHT_MIDDLE_FRONT_LEG + f Ljava/lang/String; g field_32561 LEFT_MIDDLE_FRONT_LEG + f Ljava/lang/String; h field_32562 RIGHT_MIDDLE_HIND_LEG + f Ljava/lang/String; i field_32563 LEFT_MIDDLE_HIND_LEG + f Lfyk; j field_27504 root + f Lfyk; k field_3583 head + f Lfyk; l field_27505 rightHindLeg + f Lfyk; m field_27506 leftHindLeg + f Lfyk; n field_27507 rightMiddleHindLeg + f Lfyk; o field_27508 leftMiddleHindLeg + f Lfyk; p field_27509 rightMiddleFrontLeg + f Lfyk; q field_27510 leftMiddleFrontLeg + f Lfyk; r field_27511 rightFrontLeg + f Lfyk; s field_27512 leftFrontLeg + m ()Lfyq; b method_32054 createSpiderBodyLayer + m (Lfyk;)V +c fxm net/minecraft/class_610 net/minecraft/client/model/SquidModel + f [Lfyk; a field_3574 tentacles + f Lfyk; b field_27513 root + m (I)Ljava/lang/String; a method_32056 createTentacleName + m (Lfyk;I)Lfyk; a method_32057 method_32057 + m ()Lfyq; b method_32055 createBodyLayer + m (Lfyk;)V +c fxn net/minecraft/class_4997 net/minecraft/client/model/StriderModel + f Ljava/lang/String; a field_32564 RIGHT_BOTTOM_BRISTLE + f Ljava/lang/String; b field_32565 RIGHT_MIDDLE_BRISTLE + f Ljava/lang/String; f field_32566 RIGHT_TOP_BRISTLE + f Ljava/lang/String; g field_32567 LEFT_TOP_BRISTLE + f Ljava/lang/String; h field_32568 LEFT_MIDDLE_BRISTLE + f Ljava/lang/String; i field_32569 LEFT_BOTTOM_BRISTLE + f Lfyk; j field_27514 root + f Lfyk; k field_23353 rightLeg + f Lfyk; l field_23354 leftLeg + f Lfyk; m field_23355 body + f Lfyk; n field_27515 rightBottomBristle + f Lfyk; o field_27516 rightMiddleBristle + f Lfyk; p field_27517 rightTopBristle + f Lfyk; q field_27518 leftTopBristle + f Lfyk; r field_27519 leftMiddleBristle + f Lfyk; s field_27520 leftBottomBristle + m (Lckq;FFFFF)V a method_26414 setupAnim + m ()Lfyq; b method_32058 createBodyLayer + m (Lfyk;)V +c fxo net/minecraft/class_7201 net/minecraft/client/model/TadpoleModel + f Lfyk; a field_37933 root + f Lfyk; b field_37934 tail + m (Lchb;FFFFF)V a method_41916 setupAnim + m ()Lfyq; c method_41917 createBodyLayer + m (Lfyk;)V +c fxp net/minecraft/class_613 net/minecraft/client/model/TridentModel + f Lakr; a field_3592 TEXTURE + f Lfyk; b field_27521 root + m ()Lfyq; a method_32059 createLayer + m (Lfyk;)V + m ()V +c fxq net/minecraft/class_612 net/minecraft/client/model/TropicalFishModelA + f Lfyk; a field_27522 root + f Lfyk; b field_27523 tail + m (Lfyo;)Lfyq; a method_32060 createBodyLayer + m (Lfyk;)V +c fxr net/minecraft/class_615 net/minecraft/client/model/TropicalFishModelB + f Lfyk; a field_27524 root + f Lfyk; b field_3599 tail + m (Lfyo;)Lfyq; a method_32061 createBodyLayer + m (Lfyk;)V +c fxs net/minecraft/class_614 net/minecraft/client/model/TurtleModel + f Ljava/lang/String; j field_32570 EGG_BELLY + f Lfyk; k field_3594 eggBelly + m (Lcgf;FFFFF)V a method_17125 setupAnim + m ()Lfyq; c method_32062 createBodyLayer + m (Lfyk;)V +c fxt net/minecraft/class_617 net/minecraft/client/model/VexModel + f Lfyk; a field_41116 root + f Lfyk; b field_41117 body + f Lfyk; f field_41118 rightArm + f Lfyk; g field_41119 leftArm + f Lfyk; h field_3602 rightWing + f Lfyk; i field_3601 leftWing + f Lfyk; j field_41711 head + m (Lckr;FFFFF)V a method_17127 setupAnim + m (Lcuq;Lcuq;F)V a method_48293 setArmsCharging + m (Lfbi;Z)V a method_47977 offsetStackPosition + m ()Lfyq; b method_32063 createBodyLayer + m (Lfyk;)V +c fxu net/minecraft/class_3884 net/minecraft/client/model/VillagerHeadModel + m (Z)V a method_17150 hatVisible +c fxv net/minecraft/class_620 net/minecraft/client/model/VillagerModel + f Lfyk; a field_27525 nose + f Lfyk; b field_27526 root + f Lfyk; f field_27527 head + f Lfyk; g field_27528 hat + f Lfyk; h field_27529 hatRim + f Lfyk; i field_27530 rightLeg + f Lfyk; j field_27531 leftLeg + m ()Lfys; b method_32064 createBodyModel + m (Lfyk;)V +c fxw net/minecraft/class_7280 net/minecraft/client/model/WardenModel + f Lfyk; a field_38315 bone + f Lfyk; b field_38316 body + f Lfyk; f field_38317 head + f Lfyk; g field_38318 rightTendril + f Lfyk; h field_38319 leftTendril + f Lfyk; i field_38320 leftLeg + f Lfyk; j field_38321 leftArm + f Lfyk; k field_38449 leftRibcage + f Lfyk; l field_38322 rightArm + f Lfyk; m field_38323 rightLeg + f Lfyk; n field_38450 rightRibcage + f F o field_38324 DEFAULT_ARM_X_Y + f F p field_38325 DEFAULT_ARM_Z + f Lfyk; q field_38327 root + f Ljava/util/List; r field_38451 tendrilsLayerModelParts + f Ljava/util/List; s field_38452 heartLayerModelParts + f Ljava/util/List; t field_38453 bioluminescentLayerModelParts + f Ljava/util/List; u field_38454 pulsatingSpotsLayerModelParts + m (F)V a method_42734 animateIdlePose + m (FF)V a method_42735 animateHeadLookTarget + m (Lcmb;FF)V a method_42736 animateTendrils + m (Lcmb;FFFFF)V a method_42580 setupAnim + m ()Lfyq; b method_42578 createBodyLayer + m (FF)V b method_42737 animateWalk + m ()Ljava/util/List; c method_42738 getTendrilsLayerModelParts + m ()Ljava/util/List; d method_42739 getHeartLayerModelParts + m ()Ljava/util/List; e method_42740 getBioluminescentLayerModelParts + m ()Ljava/util/List; f method_42741 getPulsatingSpotsLayerModelParts + m ()V g method_42742 resetArmPoses + m (Lfyk;)V +c fxx net/minecraft/class_7755 net/minecraft/client/model/WaterPatchModel + m ()Lfyk; c method_22954 waterPatch +c fxy net/minecraft/class_8974 net/minecraft/client/model/WindChargeModel + f I a field_48704 ROTATION_SPEED + f Lfyk; b field_47441 bone + f Lfyk; f field_48705 windCharge + f Lfyk; g field_48706 wind + m (Lcof;FFFFF)V a method_55239 setupAnim + m ()Lfyq; b method_55240 createBodyLayer + m (Lfyk;)V +c fxz net/minecraft/class_622 net/minecraft/client/model/WitchModel + f Z b field_3614 holdingItem + m (Z)V b method_2840 setHoldingItem + m ()Lfyq; c method_32065 createBodyLayer + m ()Lfyk; e method_2839 getNose + m (Lfyk;)V +c fya net/minecraft/class_621 net/minecraft/client/model/WitherBossModel + f Ljava/lang/String; a field_32571 RIBCAGE + f Ljava/lang/String; b field_32572 CENTER_HEAD + f Ljava/lang/String; f field_32573 RIGHT_HEAD + f Ljava/lang/String; g field_32574 LEFT_HEAD + f F h field_32575 RIBCAGE_X_ROT_OFFSET + f F i field_32576 TAIL_X_ROT_OFFSET + f Lfyk; j field_27532 root + f Lfyk; k field_27533 centerHead + f Lfyk; l field_27534 rightHead + f Lfyk; m field_27535 leftHead + f Lfyk; n field_27536 ribcage + f Lfyk; o field_27537 tail + m (Lciu;FFF)V a method_17128 prepareMobModel + m (Lciu;FFFFF)V a method_17130 setupAnim + m (Lciu;Lfyk;I)V a method_32066 setupHeadRotation + m (Lfyo;)Lfyq; a method_32067 createBodyLayer + m (Lfyk;)V +c fyb net/minecraft/class_624 net/minecraft/client/model/WolfModel + f Ljava/lang/String; a field_32577 REAL_HEAD + f Ljava/lang/String; b field_32578 UPPER_BODY + f Ljava/lang/String; f field_32579 REAL_TAIL + f Lfyk; g field_3621 head + f Lfyk; h field_20788 realHead + f Lfyk; i field_3623 body + f Lfyk; j field_27538 rightHindLeg + f Lfyk; k field_27539 leftHindLeg + f Lfyk; l field_27540 rightFrontLeg + f Lfyk; m field_27541 leftFrontLeg + f Lfyk; n field_3617 tail + f Lfyk; o field_20789 realTail + f Lfyk; p field_3619 upperBody + f I q field_32580 LEG_SIZE + m (Lcgh;FFF)V a method_17131 prepareMobModel + m (Lcgh;FFFFF)V a method_17133 setupAnim + m (Lfyo;)Lfys; a method_32068 createMeshDefinition + m (Lfyk;)V +c fyc net/minecraft/class_623 net/minecraft/client/model/ZombieModel + m (Lckw;)Z a method_17793 isAggressive + m (Lfyk;)V +c fyd net/minecraft/class_619 net/minecraft/client/model/ZombieVillagerModel + f Lfyk; a field_17144 hatRim + m (Lckw;FFFFF)V a method_17135 setupAnim + m (Lfyo;)Lfyq; a method_32069 createArmorLayer + m ()Lfyq; c method_32070 createBodyLayer + m (Lfyk;)V +c fye net/minecraft/class_626 net/minecraft/client/model/dragon/DragonHeadModel + f Lfyk; a field_3638 head + f Lfyk; b field_3639 jaw + m ()Lfyq; a method_32071 createHeadLayer + m (Lfyk;)V +c fyf net/minecraft/class_6228 net/minecraft/client/model/dragon/package-info +c fyg net/minecraft/class_5599 net/minecraft/client/model/geom/EntityModelSet + f Ljava/util/Map; a field_27542 roots + m (Lfyi;)Lfyk; a method_32072 bakeLayer + m ()V +c fyh net/minecraft/class_5600 net/minecraft/client/model/geom/LayerDefinitions + f Lfyo; a field_27543 FISH_PATTERN_DEFORMATION + f Lfyo; b field_27544 OUTER_ARMOR_DEFORMATION + f Lfyo; c field_27545 INNER_ARMOR_DEFORMATION + m ()Ljava/util/Map; a method_32073 createRoots + m (Lcom/google/common/collect/ImmutableMap$Builder;Lfyq;Ldup;)V a method_45716 method_45716 + m (Lcom/google/common/collect/ImmutableMap;Lfyi;)Z a method_32075 method_32075 + m (Lcom/google/common/collect/ImmutableMap$Builder;Lfyq;Ldup;)V b method_32074 method_32074 + m ()V + m ()V +c fyi net/minecraft/class_5601 net/minecraft/client/model/geom/ModelLayerLocation + f Lakr; a field_27546 model + f Ljava/lang/String; b field_27547 layer + m ()Lakr; a method_35743 getModel + m ()Ljava/lang/String; b method_35744 getLayer + m (Lakr;Ljava/lang/String;)V +c fyj net/minecraft/class_5602 net/minecraft/client/model/geom/ModelLayers + f Lfyi; A field_27691 CHICKEN + f Lfyi; B field_27692 COD + f Lfyi; C field_27693 COMMAND_BLOCK_MINECART + f Lfyi; D field_27694 CONDUIT_CAGE + f Lfyi; E field_27695 CONDUIT_EYE + f Lfyi; F field_27696 CONDUIT_SHELL + f Lfyi; G field_27697 CONDUIT_WIND + f Lfyi; H field_27698 COW + f Lfyi; I field_27699 CREEPER + f Lfyi; J field_27700 CREEPER_ARMOR + f Lfyi; K field_27548 CREEPER_HEAD + f Lfyi; L field_42882 DECORATED_POT_BASE + f Lfyi; M field_42883 DECORATED_POT_SIDES + f Lfyi; N field_27549 DOLPHIN + f Lfyi; O field_27550 DONKEY + f Lfyi; P field_27551 DOUBLE_CHEST_LEFT + f Lfyi; Q field_27552 DOUBLE_CHEST_RIGHT + f Lfyi; R field_27553 DRAGON_SKULL + f Lfyi; S field_27554 DROWNED + f Lfyi; T field_27555 DROWNED_INNER_ARMOR + f Lfyi; U field_27556 DROWNED_OUTER_ARMOR + f Lfyi; V field_27557 DROWNED_OUTER_LAYER + f Lfyi; W field_27558 ELDER_GUARDIAN + f Lfyi; X field_27559 ELYTRA + f Lfyi; Y field_27560 ENDERMAN + f Lfyi; Z field_27561 ENDERMITE + f Lfyi; aA field_27612 LLAMA_SPIT + f Lfyi; aB field_27613 MAGMA_CUBE + f Lfyi; aC field_27614 MINECART + f Lfyi; aD field_27615 MOOSHROOM + f Lfyi; aE field_27616 MULE + f Lfyi; aF field_27617 OCELOT + f Lfyi; aG field_27618 PANDA + f Lfyi; aH field_27619 PARROT + f Lfyi; aI field_27620 PHANTOM + f Lfyi; aJ field_27621 PIG + f Lfyi; aK field_27622 PIGLIN + f Lfyi; aL field_27623 PIGLIN_BRUTE + f Lfyi; a field_38455 ALLAY + f Lfyi; aM field_27624 PIGLIN_BRUTE_INNER_ARMOR + f Lfyi; aN field_27625 PIGLIN_BRUTE_OUTER_ARMOR + f Lfyi; aO field_41382 PIGLIN_HEAD + f Lfyi; aP field_27626 PIGLIN_INNER_ARMOR + f Lfyi; aQ field_27574 PIGLIN_OUTER_ARMOR + f Lfyi; aR field_27575 PIG_SADDLE + f Lfyi; aS field_27576 PILLAGER + f Lfyi; aT field_27577 PLAYER + f Lfyi; aU field_27578 PLAYER_HEAD + f Lfyi; aV field_27579 PLAYER_INNER_ARMOR + f Lfyi; aW field_27580 PLAYER_OUTER_ARMOR + f Lfyi; aX field_27581 PLAYER_SLIM + f Lfyi; aY field_27582 PLAYER_SLIM_INNER_ARMOR + f Lfyi; aZ field_27583 PLAYER_SLIM_OUTER_ARMOR + f Lfyi; aa field_27562 ENDER_DRAGON + f Lfyi; ab field_27563 END_CRYSTAL + f Lfyi; ac field_27564 EVOKER + f Lfyi; ad field_27565 EVOKER_FANGS + f Lfyi; ae field_27566 FOX + f Lfyi; af field_37935 FROG + f Lfyi; ag field_27567 FURNACE_MINECART + f Lfyi; ah field_27568 GHAST + f Lfyi; ai field_27569 GIANT + f Lfyi; aj field_27570 GIANT_INNER_ARMOR + f Lfyi; ak field_27571 GIANT_OUTER_ARMOR + f Lfyi; al field_28456 GLOW_SQUID + f Lfyi; am field_32581 GOAT + f Lfyi; an field_27572 GUARDIAN + f Lfyi; ao field_27573 HOGLIN + f Lfyi; ap field_27601 HOPPER_MINECART + f Lfyi; aq field_27602 HORSE + f Lfyi; ar field_27603 HORSE_ARMOR + f Lfyi; as field_27604 HUSK + f Lfyi; at field_27605 HUSK_INNER_ARMOR + f Lfyi; au field_27606 HUSK_OUTER_ARMOR + f Lfyi; av field_27607 ILLUSIONER + f Lfyi; aw field_27608 IRON_GOLEM + f Lfyi; ax field_27609 LEASH_KNOT + f Lfyi; ay field_27610 LLAMA + f Lfyi; az field_27611 LLAMA_DECOR + f Lfyi; bA field_27660 STRAY + f Lfyi; bB field_27661 STRAY_INNER_ARMOR + f Lfyi; bC field_27662 STRAY_OUTER_ARMOR + f Lfyi; bD field_27663 STRAY_OUTER_LAYER + f Lfyi; bE field_27664 STRIDER + f Lfyi; bF field_27665 STRIDER_SADDLE + f Lfyi; bG field_37936 TADPOLE + f Lfyi; bH field_27666 TNT_MINECART + f Lfyi; bI field_27667 TRADER_LLAMA + f Lfyi; bJ field_27668 TRIDENT + f Lfyi; bK field_27669 TROPICAL_FISH_LARGE + f Lfyi; bL field_27670 TROPICAL_FISH_LARGE_PATTERN + f Lfyi; b field_47876 ARMADILLO + f Lfyi; bM field_27671 TROPICAL_FISH_SMALL + f Lfyi; bN field_27672 TROPICAL_FISH_SMALL_PATTERN + f Lfyi; bO field_27673 TURTLE + f Lfyi; bP field_27674 VEX + f Lfyi; bQ field_27675 VILLAGER + f Lfyi; bR field_27676 VINDICATOR + f Lfyi; bS field_38328 WARDEN + f Lfyi; bT field_27627 WANDERING_TRADER + f Lfyi; bU field_47442 WIND_CHARGE + f Lfyi; bV field_27628 WITCH + f Lfyi; bW field_27629 WITHER + f Lfyi; bX field_27630 WITHER_ARMOR + f Lfyi; bY field_27631 WITHER_SKELETON + f Lfyi; bZ field_27632 WITHER_SKELETON_INNER_ARMOR + f Lfyi; ba field_27584 PLAYER_SPIN_ATTACK + f Lfyi; bb field_27585 POLAR_BEAR + f Lfyi; bc field_27587 PUFFERFISH_BIG + f Lfyi; bd field_27588 PUFFERFISH_MEDIUM + f Lfyi; be field_27589 PUFFERFISH_SMALL + f Lfyi; bf field_27590 RABBIT + f Lfyi; bg field_27591 RAVAGER + f Lfyi; bh field_27592 SALMON + f Lfyi; bi field_27593 SHEEP + f Lfyi; bj field_27594 SHEEP_FUR + f Lfyi; bk field_27595 SHIELD + f Lfyi; bl field_27596 SHULKER + f Lfyi; bm field_27597 SHULKER_BULLET + f Lfyi; bn field_27598 SILVERFISH + f Lfyi; bo field_27599 SKELETON + f Lfyi; bp field_27600 SKELETON_HORSE + f Lfyi; bq field_27651 SKELETON_INNER_ARMOR + f Lfyi; br field_27652 SKELETON_OUTER_ARMOR + f Lfyi; bs field_27653 SKELETON_SKULL + f Lfyi; bt field_27654 SLIME + f Lfyi; bu field_27655 SLIME_OUTER + f Lfyi; bv field_42884 SNIFFER + f Lfyi; bw field_27656 SNOW_GOLEM + f Lfyi; bx field_27657 SPAWNER_MINECART + f Lfyi; by field_27658 SPIDER + f Lfyi; bz field_27659 SQUID + f Lfyi; c field_27586 ARMOR_STAND + f Lfyi; ca field_27633 WITHER_SKELETON_OUTER_ARMOR + f Lfyi; cb field_27634 WITHER_SKELETON_SKULL + f Lfyi; cc field_27635 WITHER_SKULL + f Lfyi; cd field_27636 WOLF + f Lfyi; ce field_47877 WOLF_ARMOR + f Lfyi; cf field_27637 ZOGLIN + f Lfyi; cg field_27638 ZOMBIE + f Lfyi; ch field_27640 ZOMBIE_HEAD + f Lfyi; ci field_27641 ZOMBIE_HORSE + f Lfyi; cj field_27642 ZOMBIE_INNER_ARMOR + f Lfyi; ck field_27643 ZOMBIE_OUTER_ARMOR + f Lfyi; cl field_27644 ZOMBIE_VILLAGER + f Lfyi; cm field_27645 ZOMBIE_VILLAGER_INNER_ARMOR + f Lfyi; cn field_27646 ZOMBIE_VILLAGER_OUTER_ARMOR + f Lfyi; co field_27647 ZOMBIFIED_PIGLIN + f Lfyi; cp field_27648 ZOMBIFIED_PIGLIN_INNER_ARMOR + f Lfyi; cq field_27649 ZOMBIFIED_PIGLIN_OUTER_ARMOR + f Ljava/lang/String; cr field_32582 DEFAULT_LAYER + f Ljava/util/Set; cs field_27650 ALL_MODELS + f Lfyi; d field_27639 ARMOR_STAND_INNER_ARMOR + f Lfyi; e field_27677 ARMOR_STAND_OUTER_ARMOR + f Lfyi; f field_28383 AXOLOTL + f Lfyi; g field_27678 BANNER + f Lfyi; h field_27679 BAT + f Lfyi; i field_27680 BED_FOOT + f Lfyi; j field_27681 BED_HEAD + f Lfyi; k field_27682 BEE + f Lfyi; l field_27683 BELL + f Lfyi; m field_27684 BLAZE + f Lfyi; n field_49159 BOGGED + f Lfyi; o field_49160 BOGGED_INNER_ARMOR + f Lfyi; p field_49161 BOGGED_OUTER_ARMOR + f Lfyi; q field_49162 BOGGED_OUTER_LAYER + f Lfyi; r field_27685 BOOK + f Lfyi; s field_47443 BREEZE + f Lfyi; t field_52153 BREEZE_WIND + f Lfyi; u field_27686 CAT + f Lfyi; v field_27687 CAT_COLLAR + f Lfyi; w field_40479 CAMEL + f Lfyi; x field_27688 CAVE_SPIDER + f Lfyi; y field_27689 CHEST + f Lfyi; z field_27690 CHEST_MINECART + m ()Ljava/util/stream/Stream; a method_32076 getKnownLocations + m (Lcov$b;)Lfyi; a method_45717 createRaftModelName + m (Ldup;)Lfyi; a method_32078 createSignModelName + m (Ljava/lang/String;)Lfyi; a method_32079 register + m (Ljava/lang/String;Ljava/lang/String;)Lfyi; a method_32080 register + m (Lcov$b;)Lfyi; b method_45718 createChestRaftModelName + m (Ldup;)Lfyi; b method_45719 createHangingSignModelName + m (Ljava/lang/String;)Lfyi; b method_32081 registerInnerArmor + m (Ljava/lang/String;Ljava/lang/String;)Lfyi; b method_32082 createLocation + m (Lcov$b;)Lfyi; c method_32077 createBoatModelName + m (Ljava/lang/String;)Lfyi; c method_32083 registerOuterArmor + m (Lcov$b;)Lfyi; d method_42582 createChestBoatModelName + m ()V + m ()V +c fyk net/minecraft/class_630 net/minecraft/client/model/geom/ModelPart + f F a field_37937 DEFAULT_SCALE + f F b field_3657 x + f F c field_3656 y + f F d field_3655 z + f F e field_3654 xRot + f F f field_3675 yRot + f F g field_3674 zRot + f F h field_37938 xScale + f F i field_37939 yScale + f F j field_37940 zScale + f Z k field_3665 visible + f Z l field_38456 skipDraw + f Ljava/util/List; m field_3663 cubes + f Ljava/util/Map; n field_3661 children + f Lfym; o field_37941 initialPose + m ()Lfym; a method_32084 storePose + m (FFF)V a method_2851 setPos + m (Layw;)Lfyk$a; a method_22700 getRandomCube + m (Lfbi$a;Lfbm;III)V a method_22702 compile + m (Lfbi;)V a method_22703 translateAndRotate + m (Lfbi;Lfbm;II)V a method_22698 render + m (Lfbi;Lfbm;III)V a method_22699 render + m (Lfbi;Lfyk$d;)V a method_35745 visit + m (Lfbi;Lfyk$d;Ljava/lang/String;)V a method_35746 visit + m (Lfbi;Lfyk$d;Ljava/lang/String;Ljava/lang/String;Lfyk;)V a method_35747 method_35747 + m (Lfyk;)V a method_17138 copyFrom + m (Lfym;)V a method_41918 setInitialPose + m (Ljava/lang/String;)Z a method_41919 hasChild + m (Lorg/joml/Vector3f;)V a method_41920 offsetPos + m ()Lfym; b method_41921 getInitialPose + m (FFF)V b method_33425 setRotation + m (Lfym;)V b method_32085 loadPose + m (Ljava/lang/String;)Lfyk; b method_32086 getChild + m (Lorg/joml/Vector3f;)V b method_41922 offsetRotation + m ()V c method_41923 resetPose + m (Lorg/joml/Vector3f;)V c method_41924 offsetScale + m ()Z d method_32087 isEmpty + m ()Ljava/util/stream/Stream; e method_32088 getAllParts + m (Ljava/util/List;Ljava/util/Map;)V +c fyk$a net/minecraft/class_630$class_628 net/minecraft/client/model/geom/ModelPart$Cube + f F a field_3645 minX + f F b field_3644 minY + f F c field_3643 minZ + f F d field_3648 maxX + f F e field_3647 maxY + f F f field_3646 maxZ + f [Lfyk$b; g field_3649 polygons + m (Lfbi$a;Lfbm;III)V a method_32089 compile + m (IIFFFFFFFFFZFFLjava/util/Set;)V +c fyk$b net/minecraft/class_630$class_593 net/minecraft/client/model/geom/ModelPart$Polygon + f [Lfyk$c; a field_3502 vertices + f Lorg/joml/Vector3f; b field_21618 normal + m ([Lfyk$c;FFFFFFZLji;)V +c fyk$c net/minecraft/class_630$class_618 net/minecraft/client/model/geom/ModelPart$Vertex + f Lorg/joml/Vector3f; a field_3605 pos + f F b field_3604 u + f F c field_3603 v + m (FF)Lfyk$c; a method_2837 remap + m (FFFFF)V + m (Lorg/joml/Vector3f;FF)V +c fyk$d net/minecraft/class_630$class_6229 net/minecraft/client/model/geom/ModelPart$Visitor + m (Lfbi$a;Ljava/lang/String;ILfyk$a;)V visit method_35748 visit +c fyl net/minecraft/class_6230 net/minecraft/client/model/geom/PartNames + f Ljava/lang/String; A field_32638 RIGHT_HIND_FOOT + f Ljava/lang/String; B field_32639 LEFT_FRONT_FOOT + f Ljava/lang/String; C field_32583 RIGHT_FRONT_FOOT + f Ljava/lang/String; D field_47128 FEET + f Ljava/lang/String; E field_32584 LEFT_HIND_LEG_TIP + f Ljava/lang/String; F field_32585 RIGHT_HIND_LEG_TIP + f Ljava/lang/String; G field_32586 LEFT_FRONT_LEG_TIP + f Ljava/lang/String; H field_32587 RIGHT_FRONT_LEG_TIP + f Ljava/lang/String; I field_32588 LEFT_LID + f Ljava/lang/String; J field_32589 RIGHT_LID + f Ljava/lang/String; K field_32590 LEFT_CHEST + f Ljava/lang/String; L field_32591 RIGHT_CHEST + f Ljava/lang/String; M field_32592 LEFT_HORN + f Ljava/lang/String; N field_32593 RIGHT_HORN + f Ljava/lang/String; O field_32594 LEFT_EYE + f Ljava/lang/String; P field_32595 RIGHT_EYE + f Ljava/lang/String; Q field_32596 JAW + f Ljava/lang/String; R field_32597 NOSE + f Ljava/lang/String; S field_32598 ARMS + f Ljava/lang/String; T field_32599 TAIL + f Ljava/lang/String; U field_32600 CUBE + f Ljava/lang/String; V field_32601 BEAK + f Ljava/lang/String; W field_32602 BACK_FIN + f Ljava/lang/String; X field_32603 MANE + f Ljava/lang/String; Y field_32604 NECK + f Ljava/lang/String; Z field_32605 MOUTH + f Ljava/lang/String; aA field_49564 MUSHROOMS + f Ljava/lang/String; aB field_38331 BONE + f Ljava/lang/String; a field_32609 LEFT_FIN + f Ljava/lang/String; aa field_32606 HEAD + f Ljava/lang/String; ab field_32607 HAT + f Ljava/lang/String; ac field_32608 BODY + f Ljava/lang/String; ad field_32610 HAT_RIM + f Ljava/lang/String; ae field_32611 JACKET + f Ljava/lang/String; af field_32612 TOP_GILLS + f Ljava/lang/String; ag field_32613 LEFT_GILLS + f Ljava/lang/String; ah field_32614 RIGHT_GILLS + f Ljava/lang/String; ai field_37942 ROOT + f Ljava/lang/String; aj field_37943 CROAKING_BODY + f Ljava/lang/String; ak field_37944 TONGUE + f Ljava/lang/String; al field_37945 TONGUE_R1 + f Ljava/lang/String; am field_37946 LEFT_HAND + f Ljava/lang/String; an field_37947 RIGHT_HAND + f Ljava/lang/String; ao field_37948 LEFT_FOOT + f Ljava/lang/String; ap field_37949 RIGHT_FOOT + f Ljava/lang/String; aq field_37950 EYES + f Ljava/lang/String; ar field_38329 RIGHT_TENDRIL + f Ljava/lang/String; as field_38330 LEFT_TENDRIL + f Ljava/lang/String; at field_38457 RIGHT_RIBCAGE + f Ljava/lang/String; au field_38458 LEFT_RIBCAGE + f Ljava/lang/String; av field_47446 WIND_BODY + f Ljava/lang/String; aw field_47447 WIND_TOP + f Ljava/lang/String; ax field_47448 WIND_MID + f Ljava/lang/String; ay field_47449 WIND_BOTTOM + f Ljava/lang/String; az field_47450 RODS + f Ljava/lang/String; b field_32615 RIGHT_FIN + f Ljava/lang/String; c field_32616 TOP_FIN + f Ljava/lang/String; d field_32617 BOTTOM_FIN + f Ljava/lang/String; e field_32618 TAIL_FIN + f Ljava/lang/String; f field_32619 LEFT_BLUE_FIN + f Ljava/lang/String; g field_32620 RIGHT_BLUE_FIN + f Ljava/lang/String; h field_32621 LEFT_ARM + f Ljava/lang/String; i field_32622 RIGHT_ARM + f Ljava/lang/String; j field_32623 LEFT_WING + f Ljava/lang/String; k field_32624 RIGHT_WING + f Ljava/lang/String; l field_32625 LEFT_WING_BASE + f Ljava/lang/String; m field_32626 RIGHT_WING_BASE + f Ljava/lang/String; n field_32627 LEFT_WING_TIP + f Ljava/lang/String; o field_32628 RIGHT_WING_TIP + f Ljava/lang/String; p field_32629 LEFT_EAR + f Ljava/lang/String; q field_32630 RIGHT_EAR + f Ljava/lang/String; r field_32631 LEFT_LEG + f Ljava/lang/String; s field_32632 RIGHT_LEG + f Ljava/lang/String; t field_32633 LEFT_HIND_LEG + f Ljava/lang/String; u field_32634 RIGHT_HIND_LEG + f Ljava/lang/String; v field_42885 LEFT_MID_LEG + f Ljava/lang/String; w field_42886 RIGHT_MID_LEG + f Ljava/lang/String; x field_32635 LEFT_FRONT_LEG + f Ljava/lang/String; y field_32636 RIGHT_FRONT_LEG + f Ljava/lang/String; z field_32637 LEFT_HIND_FOOT + m ()V +c fym net/minecraft/class_5603 net/minecraft/client/model/geom/PartPose + f Lfym; a field_27701 ZERO + f F b field_27702 x + f F c field_27703 y + f F d field_27704 z + f F e field_27705 xRot + f F f field_27706 yRot + f F g field_27707 zRot + m (FFF)Lfym; a method_32090 offset + m (FFFFFF)Lfym; a method_32091 offsetAndRotation + m (FFF)Lfym; b method_32092 rotation + m (FFFFFF)V + m ()V +c fyn net/minecraft/class_5604 net/minecraft/client/model/geom/builders/CubeDefinition + f Ljava/lang/String; a field_27708 comment + f Lorg/joml/Vector3f; b field_27709 origin + f Lorg/joml/Vector3f; c field_27710 dimensions + f Lfyo; d field_27711 grow + f Z e field_27712 mirror + f Lfyu; f field_27713 texCoord + f Lfyu; g field_27714 texScale + f Ljava/util/Set; h field_42887 visibleFaces + m (II)Lfyk$a; a method_32093 bake + m (Ljava/lang/String;FFFFFFFFLfyo;ZFFLjava/util/Set;)V +c fyo net/minecraft/class_5605 net/minecraft/client/model/geom/builders/CubeDeformation + f Lfyo; a field_27715 NONE + f F b field_27716 growX + f F c field_27717 growY + f F d field_27718 growZ + m (F)Lfyo; a method_32094 extend + m (FFF)Lfyo; a method_32095 extend + m (FFF)V + m (F)V + m ()V +c fyp net/minecraft/class_5606 net/minecraft/client/model/geom/builders/CubeListBuilder + f Ljava/util/Set; a field_42888 ALL_VISIBLE + f Ljava/util/List; b field_27719 cubes + f I c field_27720 xTexOffs + f I d field_27721 yTexOffs + f Z e field_27722 mirror + m ()Lfyp; a method_32096 mirror + m (FFFFFF)Lfyp; a method_32097 addBox + m (FFFFFFLfyo;)Lfyp; a method_32098 addBox + m (FFFFFFLfyo;FF)Lfyp; a method_32099 addBox + m (FFFFFFLjava/util/Set;)Lfyp; a method_49304 addBox + m (FFFFFFZ)Lfyp; a method_32100 addBox + m (II)Lfyp; a method_32101 texOffs + m (Ljava/lang/String;FFFFFF)Lfyp; a method_32102 addBox + m (Ljava/lang/String;FFFFFFLfyo;)Lfyp; a method_32103 addBox + m (Ljava/lang/String;FFFIIIII)Lfyp; a method_32104 addBox + m (Ljava/lang/String;FFFIIILfyo;II)Lfyp; a method_32105 addBox + m (Z)Lfyp; a method_32106 mirror + m ()Ljava/util/List; b method_32107 getCubes + m ()Lfyp; c method_32108 create + m ()V + m ()V +c fyq net/minecraft/class_5607 net/minecraft/client/model/geom/builders/LayerDefinition + f Lfys; a field_27723 mesh + f Lfyr; b field_27724 material + m ()Lfyk; a method_32109 bakeRoot + m (Lfys;II)Lfyq; a method_32110 create + m (Lfys;Lfyr;)V +c fyr net/minecraft/class_5608 net/minecraft/client/model/geom/builders/MaterialDefinition + f I a field_27725 xTexSize + f I b field_27726 yTexSize + m (II)V +c fys net/minecraft/class_5609 net/minecraft/client/model/geom/builders/MeshDefinition + f Lfyt; a field_27727 root + m ()Lfyt; a method_32111 getRoot + m ()V +c fyt net/minecraft/class_5610 net/minecraft/client/model/geom/builders/PartDefinition + f Ljava/util/List; a field_27728 cubes + f Lfym; b field_27729 partPose + f Ljava/util/Map; c field_27730 children + m (II)Lfyk; a method_32112 bake + m (IILfyn;)Lfyk$a; a method_32113 method_32113 + m (IILjava/util/Map$Entry;)Lfyk; a method_32114 method_32114 + m (Lfyk;Lfyk;)Lfyk; a method_32115 method_32115 + m (Ljava/lang/String;)Lfyt; a method_32116 getChild + m (Ljava/lang/String;Lfyp;Lfym;)Lfyt; a method_32117 addOrReplaceChild + m (Ljava/util/List;Lfym;)V +c fyu net/minecraft/class_5611 net/minecraft/client/model/geom/builders/UVPair + f F a field_27731 u + f F b field_27732 v + m ()F a method_32118 u + m ()F b method_32119 v + m (FF)V +c fyv net/minecraft/class_6231 net/minecraft/client/model/geom/builders/package-info +c fyw net/minecraft/class_6232 net/minecraft/client/model/geom/package-info +c fyx net/minecraft/class_6233 net/minecraft/client/model/package-info +c fyy net/minecraft/class_7434 net/minecraft/client/multiplayer/AccountProfileKeyPairManager + f Lorg/slf4j/Logger; b field_39074 LOGGER + f Ljava/time/Duration; c field_40797 MINIMUM_PROFILE_KEY_REFRESH_INTERVAL + f Ljava/nio/file/Path; d field_39075 PROFILE_KEY_PAIR_DIR + f Lcom/mojang/authlib/minecraft/UserApiService; e field_39958 userApiService + f Ljava/nio/file/Path; f field_39076 profileKeyPairPath + f Ljava/util/concurrent/CompletableFuture; g field_39959 keyPair + f Ljava/time/Instant; h field_40798 nextProfileKeyRefreshTime + m (Lcmz;)V a method_43600 writeProfileKeyPair + m (Lcom/google/gson/JsonElement;)V a method_43601 method_43601 + m (Lcom/mojang/authlib/minecraft/UserApiService;)Lcmz; a method_43605 fetchProfileKeyPair + m (Lcom/mojang/authlib/yggdrasil/response/KeyPairResponse;)Lcna$a; a method_44076 parsePublicKey + m (Ljava/util/Optional;)Ljava/util/concurrent/CompletableFuture; a method_43602 readOrFetchProfileKeyPair + m (Ljava/util/Optional;)Ljava/util/Optional; b method_44291 method_44291 + m ()Ljava/util/Optional; c method_43606 readProfileKeyPair + m (Lcom/mojang/authlib/minecraft/UserApiService;Ljava/util/UUID;Ljava/nio/file/Path;)V + m ()V +c fyz net/minecraft/class_8760 net/minecraft/client/multiplayer/ChunkBatchSizeCalculator + f I a field_45939 MAX_OLD_SAMPLES_WEIGHT + f I b field_45940 CLAMP_COEFFICIENT + f D c field_45941 aggregatedNanosPerChunk + f I d field_45942 oldSamplesWeight + f J e field_45943 chunkBatchStartTime + m ()V a method_53483 onBatchStart + m (I)V a method_53484 onBatchFinished + m ()F b method_53485 getDesiredChunksPerTick + m ()V +c fza net/minecraft/class_632 net/minecraft/client/multiplayer/ClientAdvancements + f Lorg/slf4j/Logger; a field_3686 LOGGER + f Lfgo; b field_3684 minecraft + f Lgvs; c field_44808 telemetryManager + f Lal; d field_46144 tree + f Ljava/util/Map; e field_3681 progress + f Lfza$a; f field_3682 listener + f Lag; g field_3685 selectedTab + m ()Lal; a method_53814 getTree + m (Lafz;)V a method_2861 update + m (Lag;Z)V a method_2864 setSelectedTab + m (Lakr;)Lag; a method_53815 get + m (Lfza$a;)V a method_2862 setListener + m (Lfza$a;Lag;Lai;)V a method_53816 method_53816 + m (Lfgo;Lgvs;)V + m ()V +c fza$a net/minecraft/class_632$class_633 net/minecraft/client/multiplayer/ClientAdvancements$Listener + m (Lag;)V a method_2866 onSelectedTabChanged + m (Lah;Lai;)V a method_2865 onUpdateAdvancementProgress +c fzb net/minecraft/class_631 net/minecraft/client/multiplayer/ClientChunkCache + f Lorg/slf4j/Logger; a field_3679 LOGGER + f Ldvi; b field_3676 emptyChunk + f Leot; c field_3677 lightEngine + f Lfzb$a; d field_16246 storage + f Lfzf; e field_16525 level + m (I)V a method_20180 updateViewRadius + m (IILvw;)V a method_49630 replaceBiomes + m (IILvw;Lub;Ljava/util/function/Consumer;)Ldvi; a method_16020 replaceWithPacketData + m (Ldcd;)V a method_2859 drop + m (Ldvi;II)Z a method_20181 isValidChunk + m (I)I b method_20230 calculateStorageRange + m (IILdvz;Z)Ldvi; b method_2857 getChunk + m (II)V d method_20317 updateViewCenter + m (Lfzf;I)V + m ()V +c fzb$a net/minecraft/class_631$class_3681 net/minecraft/client/multiplayer/ClientChunkCache$Storage + f Lfzb; a field_16254 field_16254 + f Ljava/util/concurrent/atomic/AtomicReferenceArray; b field_16251 chunks + f I c field_16253 chunkRadius + f I d field_16252 viewRange + f I e field_19204 viewCenterX + f I f field_19205 viewCenterZ + f I g field_19143 chunkCount + m (I)Ldvi; a method_16033 getChunk + m (II)I a method_16027 getIndex + m (ILdvi;)V a method_16031 replace + m (ILdvi;Ldvi;)Ldvi; a method_20183 replace + m (Ljava/lang/String;)V a method_35751 dumpChunks + m (II)Z b method_16034 inRange + m (Lfzb;I)V +c fzc net/minecraft/class_8673 net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl + f Lfgo; a field_45588 minecraft + f Lvt; b field_45589 connection + f Lfzt; c field_45590 serverData + f Ljava/lang/String; d field_45591 serverBrand + f Lgvs; e field_45592 telemetryManager + f Lfod; f field_45593 postDisconnectScreen + f Z g field_51516 isTransferring + f Z h field_51520 strictErrorHandling + f Ljava/util/Map; i field_48399 serverCookies + f Ljava/util/Map; j field_52154 customReportDetails + f Lalj; k field_52155 serverLinks + f Lwz; l field_45594 GENERIC_DISCONNECT_MESSAGE + f Lorg/slf4j/Logger; m field_45944 LOGGER + f Ljava/util/List; n field_45595 deferredPackets + m (Laaj;)V a method_11152 handleCustomPayload + m (Lalj$a;)Ljava/util/List; a method_60880 method_60880 + m (Ljava/lang/String;)Ljava/net/URL; a method_52773 parseResourcePackUrl + m (Ljava/util/UUID;)V a method_55511 method_55511 + m (Ljava/util/UUID;Ljava/net/URL;Ljava/lang/String;ZLwz;)Lfod; a method_55609 addOrUpdatePackPrompt + m (Lwz;Lwz;)Lwz; a method_52778 preparePackPrompt + m (Lzg;Ljava/lang/Throwable;)Ljava/util/Optional; a method_60882 storeDisconnectionReport + m (Lzg;Ljava/util/function/BooleanSupplier;Ljava/time/Duration;)V a method_52779 sendWhen + m (Lvv;)Lfod; b method_52786 createDisconnectScreen + m (Lzg;)V b method_52787 send + m ()V e method_52789 sendDeferredPackets + m ()Ljava/lang/String; f method_52790 serverBrand + m ()Lfod; g method_52788 method_52788 + m ()Ljava/lang/String; h method_55610 method_55610 + m ()Ljava/lang/String; i method_55611 method_55611 + m ()V j method_55513 method_55513 + m ()Z k method_52792 method_52792 + m (Lfgo;Lvt;Lfzj;)V + m ()V +c fzc$a net/minecraft/class_8673$class_8137 net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl$DeferredPacket + f Lzg; a comp_1264 packet + f Ljava/util/function/BooleanSupplier; b comp_1265 sendCondition + f J c comp_1266 expirationTime + m ()Lzg; a comp_1264 packet + m ()Ljava/util/function/BooleanSupplier; b comp_1265 sendCondition + m ()J c comp_1266 expirationTime + m (Lzg;Ljava/util/function/BooleanSupplier;J)V +c fzc$b net/minecraft/class_8673$class_9058 net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl$PackConfirmScreen + f Lfzc; r field_47681 field_47681 + f Ljava/util/List; s field_47682 requests + f Lfod; u field_47683 parentScreen + m (Lfgo;Lfod;ZLjava/util/List;Lfzc;Z)V a method_55612 method_55612 + m (Lfgo;Ljava/util/UUID;Ljava/net/URL;Ljava/lang/String;ZLwz;)Lfzc$b; a method_55613 update + m (Lfzc;Lfgo;Lfod;Ljava/util/List;ZLwz;)V +c fzc$b$a net/minecraft/class_8673$class_9058$class_9059 net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl$PackConfirmScreen$PendingRequest + f Ljava/util/UUID; a comp_2172 id + f Ljava/net/URL; b comp_2173 url + f Ljava/lang/String; c comp_2174 hash + m ()Ljava/util/UUID; a comp_2172 id + m ()Ljava/net/URL; b comp_2173 url + m ()Ljava/lang/String; c comp_2174 hash + m (Ljava/util/UUID;Ljava/net/URL;Ljava/lang/String;)V +c fzd net/minecraft/class_8674 net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl + f Lfin$b; l field_50223 chatState + f Lorg/slf4j/Logger; m field_45596 LOGGER + f Lcom/mojang/authlib/GameProfile; n field_45597 localGameProfile + f Lcpl; o field_45599 enabledFeatures + f Lka$b; p field_45598 receivedRegistries + f Lfzs; q field_48766 registryDataCollector + f Lfzl; r field_49123 knownPacks + m (Lauh;)Lka$b; a method_57043 method_57043 + m (Ljava/util/function/Function;)Ljava/lang/Object; a method_57044 runWithResources + m (Laaj;)V b method_52797 handleUnknownCustomPayload + m (Lfgo;Lvt;Lfzj;)V + m ()V +c fze net/minecraft/class_635 net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl + f Lorg/slf4j/Logger; a field_3710 LOGGER + f Lfgo; b field_3708 minecraft + f Lfzt; c field_40481 serverData + f Lfod; d field_3706 parent + f Ljava/util/function/Consumer; e field_3711 updateStatus + f Lvt; f field_3707 connection + f Z g field_41383 newWorld + f Ljava/time/Duration; h field_41384 worldLoadDuration + f Ljava/lang/String; i field_44809 minigameName + f Ljava/util/Map; j field_48400 cookies + f Z k field_48401 wasTransferredTo + f Ljava/util/concurrent/atomic/AtomicReference; l field_46192 state + m (Laiz;Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;)V a method_56151 setEncryption + m (Lfze$a;)V a method_53872 switchState + m (Lfze$a;Lfze$a;)Lfze$a; a method_53873 method_53873 + m (Ljava/lang/String;)V a method_51768 setMinigameName + m (Ljava/lang/String;Laiz;Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;)V a method_2894 method_2894 + m (Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;)V a method_56152 method_56152 + m (Ljava/lang/String;)Lwz; b method_2892 authenticateServer + m ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; d method_2891 getMinecraftSessionService + m ()Ljava/lang/String; e method_55614 method_55614 + m ()Ljava/lang/String; f method_55615 method_55615 + m (Lvt;Lfgo;Lfzt;Lfod;ZLjava/time/Duration;Ljava/util/function/Consumer;Lfzy;)V + m ()V +c fze$a net/minecraft/class_635$class_8798 net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl$State + f Lfze$a; a field_46193 CONNECTING + f Lfze$a; b field_46194 AUTHORIZING + f Lfze$a; c field_46195 ENCRYPTING + f Lfze$a; d field_46196 JOINING + f Lwz; e field_46197 message + f Ljava/util/Set; f field_46198 fromStates + f [Lfze$a; g field_46199 $VALUES + m ()[Lfze$a; a method_53874 $values + m (Ljava/lang/String;ILwz;Ljava/util/Set;)V + m ()V +c fzf net/minecraft/class_638 net/minecraft/client/multiplayer/ClientLevel + f Lfzg; D field_3727 connection + f Lgex; E field_17780 levelRenderer + f Lfzf$a; F field_24430 clientLevelData + f Lgeo; G field_24606 effects + f Lbrc; H field_47129 tickRateManager + f Lfgo; I field_3729 minecraft + f Ljava/util/List; J field_18226 players + f Ljava/util/Map; K field_17675 mapData + f J L field_32640 CLOUD_COLOR + f I M field_21526 skyFlashTime + f Lit/unimi/dsi/fastutil/objects/Object2ObjectArrayMap; N field_21527 tintCaches + f Lfzb; O field_24605 chunkSource + f Ljava/util/Deque; P field_34804 lightUpdateQueue + f I Q field_35163 serverSimulationDistance + f Lgas; R field_37951 blockStatePredictionHandler + f Ljava/util/Set; S field_35432 MARKER_PARTICLE_ITEMS + f Lorg/slf4j/Logger; a field_37952 LOGGER + f D b field_32641 FLUID_PARTICLE_SPAWN_OFFSET + f I c field_34805 NORMAL_LIGHT_UPDATES_PER_FRAME + f I d field_34806 LIGHT_UPDATE_QUEUE_SIZE_THRESHOLD + f Ldxm; e field_27733 tickingEntities + f Ldxs; f field_27734 entityStorage + m ()Lgas; a method_41925 getBlockStatePredictionHandler + m (DDDDDLlk;)V a method_2932 spawnFluidParticle + m (DDDLavo;Lavq;FFZJ)V a method_43207 playSound + m (IIIILayw;Ldfy;Ljd$a;)V a method_2943 doAnimateTick + m (ILbsr$c;)V a method_2945 removeEntity + m (Lbsr;)V a method_18646 tickNonPassenger + m (Lbsr;Lbsr;)V a method_18647 tickPassenger + m (Ldcd;)V a method_23782 onChunkLoaded + m (Ldcd;Ldch;Lfhr;)V a method_32121 method_32121 + m (Ldch;Lfhr;)V a method_23779 method_23779 + m (Lddy;III)Lexc; a method_32689 method_32689 + m (Ldvi;)V a method_18110 unload + m (Lexc;F)Lexc; a method_23777 getSkyColor + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectArrayMap;)V a method_23778 method_23778 + m (Ljava/lang/Runnable;)V a method_38536 queueLightUpdate + m (Ljava/util/Map;)V a method_35753 addMapData + m (Ljava/util/function/BooleanSupplier;)V a method_8441 tick + m (Ljd$a;Lddv;)V a method_24462 method_24462 + m (Ljd;)I a method_38535 method_38535 + m (Ljd;F)V a method_27873 setDefaultSpawnPos + m (Ljd;Ldtc;Lexc;)V a method_41926 syncBlockState + m (Ljd;Ldtc;Llk;Z)V a method_2938 trySpawnDripParticles + m (Ljd;Llk;Lexv;D)V a method_2948 spawnParticle + m ()V b method_38534 pollLightUpdates + m (I)V b method_41927 handleBlockChangedAck + m (III)V b method_2941 animateTick + m (J)V b method_29089 setGameTime + m (Leqr;Leqt;)V b method_47437 overrideMapData + m (Ljd;)I b method_38537 method_38537 + m (Ljd;Ldch;)I b method_23780 calculateBlockTint + m (Ljd;Ldtc;I)V b method_41928 setServerVerifiedBlockState + m ()Z c method_38743 isLightUpdateQueueEmpty + m (III)V c method_18113 setSectionDirtyWithNeighbors + m (J)V c method_8435 setDayTime + m (Lbsr;)V c method_53875 addEntity + m (Ljd;)I c method_38538 method_38538 + m ()Lgeo; d method_28103 effects + m (Lbsr;)Ljava/lang/String; d method_18649 method_18649 + m ()Ljava/lang/Iterable; e method_18112 entitiesForRendering + m (Lbsr;)V e method_32124 method_32124 + m ()V f method_18116 tickEntities + m ()V g method_23784 clearTintCaches + m (F)F g method_23783 getSkyDarken + m ()I h method_18120 getEntityCount + m (F)Lexc; h method_23785 getCloudColor + m (I)V h method_39023 setServerSimulationDistance + m ()Lfzb; i method_2935 getChunkSource + m (F)F i method_23787 getStarBrightness + m ()I j method_23789 getSkyFlashTime + m ()Lfzf$a; k method_28104 getLevelData + m ()Ljava/util/Map; l method_35754 getAllMapData + m ()I m method_39024 getServerSimulationDistance + m ()V n method_29090 tickTime + m ()Ldfy; p method_35752 getMarkerParticleTarget + m ()Ljava/lang/String; q method_54633 method_54633 + m ()Ljava/lang/String; u method_2933 method_2933 + m ()Ljava/lang/String; w method_2946 method_2946 + m (Lfzg;Lfzf$a;Lakq;Ljm;IILjava/util/function/Supplier;Lgex;ZJ)V + m ()V +c fzf$1 net/minecraft/class_638$1 net/minecraft/client/multiplayer/ClientLevel$1 + f [I a field_22436 $SwitchMap$net$minecraft$core$Direction + m ()V +c fzf$a net/minecraft/class_638$class_5271 net/minecraft/client/multiplayer/ClientLevel$ClientLevelData + f Z a field_24433 hardcore + f Ldcs; b field_24434 gameRules + f Z c field_24607 isFlat + f Ljd; d field_48402 spawnPos + f F e field_26372 spawnAngle + f J f field_24438 gameTime + f J g field_24439 dayTime + f Z h field_24440 raining + f Lbqo; i field_24441 difficulty + f Z j field_24442 difficultyLocked + m (J)V a method_177 setGameTime + m (Lbqo;)V a method_27875 setDifficulty + m (Ldcy;)D a method_28105 getHorizonHeight + m (Z)V a method_27876 setDifficultyLocked + m (J)V b method_165 setDayTime + m ()F e method_28106 getClearColorScale + m (Lbqo;ZZ)V +c fzf$b net/minecraft/class_638$class_5612 net/minecraft/client/multiplayer/ClientLevel$EntityCallbacks + f Lfzf; a field_27735 field_27735 + m (Lbsr;)V a method_32125 onCreated + m (Lbsr;)V b method_32126 onDestroyed + m (Lbsr;)V c method_32127 onTickingStart + m (Lbsr;)V d method_32128 onTickingEnd + m (Lbsr;)V e method_32129 onTrackingStart + m (Lbsr;)V f method_32130 onTrackingEnd + m (Lbsr;)V g method_43208 onSectionChange + m (Lfzf;)V +c fzg net/minecraft/class_634 net/minecraft/client/multiplayer/ClientPacketListener + f I A field_19144 serverChunkRadius + f I B field_35164 serverSimulationDistance + f Layw; C field_3687 random + f Lcom/mojang/brigadier/CommandDispatcher; D field_3696 commands + f Lczd; E field_3688 recipeManager + f Ljava/util/UUID; F field_16771 id + f Ljava/util/Set; G field_25273 levels + f Lka$b; H field_25063 registryAccess + f Lcpl; I field_45600 enabledFeatures + f Lcwt; J field_51439 potionBrewing + f Lxk; K field_40799 chatSession + f Lxt$c; L field_39808 signedMessageEncoder + f Lxh; M field_39858 lastSeenMessages + f Lxm; N field_40483 messageSignatureCache + f Lfyz; O field_45945 chunkBatchSizeCalculator + f Lfzp; P field_45946 pingDebugMonitor + f Lfzk; Q field_48933 debugSampleSubscriber + f Lfzn; R field_46578 levelLoadStatusManager + f Z S field_48403 serverEnforcesSecureChat + f Z T field_45947 seenInsecureChatWarning + f Z U field_46187 closed + f Leyg; V field_47878 scoreboard + f Lfzw; W field_51825 searchTrees + f Lorg/slf4j/Logger; l field_3695 LOGGER + f Lwz; m field_39916 UNSECURE_SERVER_TOAST_TITLE + f Lwz; n field_39917 UNSERURE_SERVER_TOAST + f Lwz; o field_40485 INVALID_PACKET + f Lwz; p field_40486 CHAT_VALIDATION_FAILED_ERROR + f Lwz; q field_45603 RECONFIGURE_SCREEN_MESSAGE + f I r field_40487 PENDING_OFFSET_THRESHOLD + f Lcom/mojang/authlib/GameProfile; s field_3697 localGameProfile + f Lfzf; t field_3699 level + f Lfzf$a; u field_24321 levelData + f Ljava/util/Map; v field_3693 playerInfoMap + f Ljava/util/Set; w field_40489 listedPlayers + f Lfza; x field_3700 advancements + f Lfzi; y field_3691 suggestionsProvider + f Lfge; z field_3692 debugQueryHandler + m ()V A method_60346 updateSearchTrees + m ()Lfzw; B method_60347 searchTrees + m ()Lalj; C method_60885 serverLinks + m ()Z D method_46529 enforcesSecureChat + m ()V E method_45737 sendChatAcknowledgement + m ()V F method_34018 method_34018 + m (I)V a method_37472 method_37472 + m (IILadf;)V a method_38539 updateLevelChunk + m (IILadk;)V a method_38543 applyLightData + m (IILeot;Lddf;Ljava/util/BitSet;Ljava/util/BitSet;Ljava/util/Iterator;)V a method_2870 readSectionList + m (Lacb;Ldqh;)V a method_38542 method_38542 + m (Laea$a;Laea$b;Lfzq;)V a method_45726 applyPlayerInfoUpdate + m (Laea$b;Lfzq;)V a method_45727 initializeChatSession + m (Lbsr;)V a method_43209 postAddEntitySoundInstance + m (Lbtn;Lcom/mojang/datafixers/util/Pair;)V a method_34008 method_34008 + m (Lcmx;)Lcuq; a method_19691 findTotem + m (Lcmz;)V a method_47657 setKeyPair + m (Lcpl;)Z a method_45720 isFeatureEnabled + m (Lcpu;Lczb;)V a method_34009 method_34009 + m (Ldcd;)V a method_51685 method_51685 + m (Ldvi;II)V a method_38541 enableChunkLight + m (Leyb;Lafh$b;)V a method_34010 method_34010 + m (Lfga;Lczb;)V a method_34011 method_34011 + m (Lfga;Lfse;)V a method_34012 method_34012 + m (Lgeb;Lfzf;Lfob$a;)V a method_54133 startWaitingForNewLevel + m (Ljava/lang/String;)Lfzq; a method_2874 getPlayerInfo + m (Ljava/time/Instant;JLxh$a;Ljava/lang/String;)Lxl; a method_45722 method_45722 + m (Ljava/util/Optional;)V a method_46525 method_46525 + m (Ljava/util/UUID;)Lfzq; a method_2871 getPlayerInfo + m (Ljd;Ldtc;)V a method_34007 method_34007 + m (Lxp;Z)V a method_44940 markMessageAsProcessed + m (ZLakq;Lakq;)Lfob$a; a method_59842 determineLevelLoadingReason + m (IILadk;)V b method_38545 method_38545 + m (Laaj;)V b method_52801 handleUnknownCustomPayload + m (Labv;)Lbsr; b method_53876 createEntityFromPacket + m (Lada;)V b method_51684 queueLightRemoval + m (Ljava/lang/String;)V b method_45729 sendChat + m (Ljava/util/Optional;)V b method_46528 method_46528 + m (IILadk;)V c method_51769 method_51769 + m (Ljava/lang/String;)V c method_45730 sendCommand + m (Ljava/lang/String;)Z d method_45731 sendUnsignedCommand + m (Ljava/lang/String;)Lcom/mojang/brigadier/ParseResults; e method_45733 parseCommand + m ()Lfzi; g method_2875 getSuggestionsProvider + m ()V h method_47658 close + m ()V i method_54134 clearLevel + m ()Lczd; j method_2877 getRecipeManager + m ()Lvt; k method_48296 getConnection + m ()Ljava/util/Collection; l method_45732 getListedOnlinePlayers + m ()Ljava/util/Collection; m method_2880 getOnlinePlayers + m ()Ljava/util/Collection; n method_31363 getOnlinePlayerIds + m ()Lcom/mojang/authlib/GameProfile; o method_2879 getLocalGameProfile + m ()Lfza; p method_2869 getAdvancements + m ()Lcom/mojang/brigadier/CommandDispatcher; q method_2886 getCommands + m ()Lfzf; r method_2890 getLevel + m ()Lfge; s method_2876 getDebugQueryHandler + m ()Ljava/util/UUID; t method_16690 getId + m ()Ljava/util/Set; u method_29356 levels + m ()Lka$b; v method_29091 registryAccess + m ()Lfzt; w method_45734 getServerData + m ()Lcpl; x method_45735 enabledFeatures + m ()Leyg; y method_55823 scoreboard + m ()Lcwt; z method_59754 potionBrewing + m (Lfgo;Lvt;Lfzj;)V + m ()V +c fzg$1 net/minecraft/class_634$1 net/minecraft/client/multiplayer/ClientPacketListener$1 + f [I a field_3705 $SwitchMap$net$minecraft$network$protocol$game$ClientboundRecipePacket$State + f [I b field_3702 $SwitchMap$net$minecraft$network$protocol$game$ClientboundPlayerInfoUpdatePacket$Action + m ()V +c fzh net/minecraft/class_7756 net/minecraft/client/multiplayer/ClientRegistryLayer + f Lfzh; a field_40490 STATIC + f Lfzh; b field_40491 REMOTE + f Ljava/util/List; c field_40492 VALUES + f Lka$b; d field_40493 STATIC_ACCESS + f [Lfzh; e field_40494 $VALUES + m ()Ljt; a method_45738 createRegistryAccess + m ()[Lfzh; b method_45739 $values + m (Ljava/lang/String;I)V + m ()V +c fzi net/minecraft/class_637 net/minecraft/client/multiplayer/ClientSuggestionProvider + f Lfzg; a field_3722 connection + f Lfgo; b field_3725 minecraft + f I c field_3724 pendingSuggestionsId + f Ljava/util/concurrent/CompletableFuture; d field_3723 pendingSuggestionsFuture + f Ljava/util/Set; e field_39794 customCompletionSuggestions + m (D)Ljava/lang/String; a method_2929 prettyPrint + m (I)Ljava/lang/String; a method_2930 prettyPrint + m (ILcom/mojang/brigadier/suggestion/Suggestions;)V a method_2931 completeCustomSuggestions + m (Lact$a;Ljava/util/List;)V a method_44764 modifyCustomCompletions + m (Ley$a;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;Ljz;)Ljava/util/concurrent/CompletableFuture; a method_41232 method_41232 + m (Lcom/mojang/brigadier/context/CommandContext;)Ljava/util/concurrent/CompletableFuture; b method_41233 method_41233 + m (Lfzg;Lfgo;)V +c fzi$1 net/minecraft/class_637$1 net/minecraft/client/multiplayer/ClientSuggestionProvider$1 + f [I a field_39795 $SwitchMap$net$minecraft$network$protocol$game$ClientboundCustomChatCompletionsPacket$Action + m ()V +c fzj net/minecraft/class_8675 net/minecraft/client/multiplayer/CommonListenerCookie + f Lcom/mojang/authlib/GameProfile; a comp_1611 localGameProfile + f Lgvs; b comp_1612 telemetryManager + f Lka$b; c comp_1613 receivedRegistries + f Lcpl; d comp_1614 enabledFeatures + f Ljava/lang/String; e comp_1615 serverBrand + f Lfzt; f comp_1616 serverData + f Lfod; g comp_1617 postDisconnectScreen + f Ljava/util/Map; h comp_2205 serverCookies + f Lfin$b; i comp_2553 chatState + f Z j comp_2663 strictErrorHandling + f Ljava/util/Map; k comp_2849 customReportDetails + f Lalj; l comp_2850 serverLinks + m ()Lcom/mojang/authlib/GameProfile; a comp_1611 localGameProfile + m ()Lgvs; b comp_1612 telemetryManager + m ()Lka$b; c comp_1613 receivedRegistries + m ()Lcpl; d comp_1614 enabledFeatures + m ()Ljava/lang/String; e comp_1615 serverBrand + m ()Lfzt; f comp_1616 serverData + m ()Lfod; g comp_1617 postDisconnectScreen + m ()Ljava/util/Map; h comp_2205 serverCookies + m ()Lfin$b; i comp_2553 chatState + m ()Z j comp_2663 strictErrorHandling + m ()Ljava/util/Map; k comp_2849 customReportDetails + m ()Lalj; l comp_2850 serverLinks + m (Lcom/mojang/authlib/GameProfile;Lgvs;Lka$b;Lcpl;Ljava/lang/String;Lfzt;Lfod;Ljava/util/Map;Lfin$b;ZLjava/util/Map;Lalj;)V +c fzk net/minecraft/class_9211 net/minecraft/client/multiplayer/DebugSampleSubscriber + f I a field_48934 REQUEST_INTERVAL_MS + f Lfzg; b field_48935 connection + f Lfiu; c field_48936 debugScreenOverlay + f Ljava/util/EnumMap; d field_48937 lastRequested + m ()V a method_56830 tick + m (Lbls;)V a method_56831 sendSubscriptionRequestIfNeeded + m (Lfzg;Lfiu;)V +c fzl net/minecraft/class_9247 net/minecraft/client/multiplayer/KnownPacksManager + f Latp; a field_49124 repository + f Ljava/util/Map; b field_49125 knownPackToId + m ()Latu; a method_57046 createResourceManager + m (Lcom/google/common/collect/ImmutableMap$Builder;Lasp;Latl;)V a method_57047 method_57047 + m (Lcom/google/common/collect/ImmutableMap$Builder;Latm;)V a method_57048 method_57048 + m (Ljava/util/List;)Ljava/util/List; a method_57049 trySelectingPacks + m ()V +c fzm net/minecraft/class_8676 net/minecraft/client/multiplayer/LegacyServerPinger + f Lcom/google/common/base/Splitter; a field_45604 SPLITTER + f Lgax; b field_45605 address + f Lfzm$a; c field_45606 output + m (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)V a method_3005 channelRead0 + m (Lgax;Lfzm$a;)V + m ()V +c fzm$a net/minecraft/class_8676$class_8677 net/minecraft/client/multiplayer/LegacyServerPinger$Output +c fzn net/minecraft/class_8819 net/minecraft/client/multiplayer/LevelLoadStatusManager + f Lgeb; a field_46579 player + f Lfzf; b field_46580 level + f Lgex; c field_46581 levelRenderer + f Lfzn$a; d field_46582 status + m ()V a method_54135 tick + m ()Z b method_54136 levelReady + m ()V c method_54137 loadingPacketsReceived + m (Lgeb;Lfzf;Lgex;)V +c fzn$a net/minecraft/class_8819$class_8820 net/minecraft/client/multiplayer/LevelLoadStatusManager$Status + f Lfzn$a; a field_46584 WAITING_FOR_SERVER + f Lfzn$a; b field_46585 WAITING_FOR_PLAYER_CHUNK + f Lfzn$a; c field_46586 LEVEL_READY + f [Lfzn$a; d field_46587 $VALUES + m ()[Lfzn$a; a method_54138 $values + m (Ljava/lang/String;I)V + m ()V +c fzo net/minecraft/class_636 net/minecraft/client/multiplayer/MultiPlayerGameMode + f Lorg/slf4j/Logger; a field_20316 LOGGER + f Lfgo; b field_3712 minecraft + f Lfzg; c field_3720 connection + f Ljd; d field_3714 destroyBlockPos + f Lcuq; e field_3718 destroyingItem + f F f field_3715 destroyProgress + f F g field_3713 destroyTicks + f I h field_3716 destroyDelay + f Z i field_3717 isDestroying + f Ldct; j field_3719 localPlayerMode + f Ldct; k field_24608 previousLocalPlayerMode + f I l field_3721 carriedIndex + m ()Z a method_2908 canHurtPlayer + m (I)V a method_2916 handlePickItem + m (II)V a method_2900 handleInventoryButtonClick + m (IIILcqe;Lcmx;)V a method_2906 handleInventoryMouseClick + m (IIZ)V a method_54634 handleSlotStateChanged + m (ILczb;Z)V a method_2912 handlePlaceRecipe + m (Lbqq;Lcmx;Lorg/apache/commons/lang3/mutable/MutableObject;I)Lzg; a method_41929 method_41929 + m (Lcmx;)V a method_2903 adjustPlayer + m (Lcmx;Lbqq;)Lbqr; a method_2919 useItem + m (Lcmx;Lbsr;)V a method_2918 attack + m (Lcmx;Lbsr;Lbqq;)Lbqr; a method_2905 interact + m (Lcmx;Lbsr;Lewz;Lbqq;)Lbqr; a method_2917 interactAt + m (Lcuq;)V a method_2915 handleCreativeModeItemDrop + m (Lcuq;I)V a method_2909 handleCreativeModeItemAdd + m (Ldct;)V a method_2907 setLocalMode + m (Ldct;Ldct;)V a method_32790 setLocalMode + m (Ldtc;Ljd;Lji;I)Lzg; a method_41930 method_41930 + m (Lfzf;Lawa;Lfga;)Lgeb; a method_29357 createPlayer + m (Lfzf;Lawa;Lfga;ZZ)Lgeb; a method_2901 createPlayer + m (Lfzf;Lgat;)V a method_41931 startPrediction + m (Lgeb;Lbqq;Lewy;)Lbqr; a method_2896 useItemOn + m (Ljd;)Z a method_2899 destroyBlock + m (Ljd;Lji;)Z a method_2910 startDestroyBlock + m (Ljd;Lji;I)Lzg; a method_41932 method_41932 + m (Lorg/apache/commons/lang3/mutable/MutableObject;Lgeb;Lbqq;Lewy;I)Lzg; a method_41933 method_41933 + m ()V b method_2925 stopDestroyBlock + m (Lcmx;)V b method_2897 releaseUsingItem + m (Lgeb;Lbqq;Lewy;)Lbqr; b method_41934 performUseItemOn + m (Ljd;)Z b method_2922 sameDestroyTarget + m (Ljd;Lji;)Z b method_2902 continueDestroyBlock + m (Ljd;Lji;I)Lzg; b method_41935 method_41935 + m ()V c method_2927 tick + m (Ljd;Lji;I)Lzg; c method_41936 method_41936 + m ()Z d method_2913 hasExperience + m ()Z e method_2924 hasMissTime + m ()Z f method_2914 hasInfiniteItems + m ()Z g method_2895 isServerControlledInventory + m ()Z h method_2928 isAlwaysFlying + m ()Ldct; i method_28107 getPreviousPlayerMode + m ()Ldct; j method_2920 getPlayerMode + m ()Z k method_2923 isDestroying + m ()I l method_51888 getDestroyStage + m ()V m method_2911 ensureHasSentCarriedItem + m (Lfgo;Lfzg;)V + m ()V +c fzp net/minecraft/class_8761 net/minecraft/client/multiplayer/PingDebugMonitor + f Lfzg; a field_45948 connection + f Lblr; b field_45949 delayTimer + m ()V a method_53486 tick + m (Lajj;)V a method_53487 onPongReceived + m (Lfzg;Lblr;)V +c fzq net/minecraft/class_640 net/minecraft/client/multiplayer/PlayerInfo + f Lcom/mojang/authlib/GameProfile; a field_3741 profile + f Ljava/util/function/Supplier; b field_45607 skinLookup + f Ldct; c field_3744 gameMode + f I d field_3739 latency + f Lwz; e field_3743 tabListDisplayName + f Lxq; f field_40495 chatSession + f Lxv; g field_39809 messageValidator + m ()Lcom/mojang/authlib/GameProfile; a method_2966 getProfile + m (I)V a method_2970 setLatency + m (Lcom/mojang/authlib/GameProfile;)Ljava/util/function/Supplier; a method_52803 createSkinLookup + m (Ldct;)V a method_2963 setGameMode + m (Ljava/util/concurrent/CompletableFuture;Lgrl;Z)Lgrl; a method_52806 method_52806 + m (Ljava/util/function/Supplier;)Lgrl; a method_52807 method_52807 + m (Lwz;)V a method_2962 setTabListDisplayName + m (Lxq;)V a method_45740 setChatSession + m (Z)V a method_46530 clearChatSession + m ()Lxq; b method_45741 getChatSession + m (Lcom/mojang/authlib/GameProfile;)Ljava/util/function/Supplier; b method_52808 method_52808 + m (Z)Lxv; b method_46531 fallbackMessageValidator + m ()Lxv; c method_44817 getMessageValidator + m ()Z d method_45742 hasVerifiableChat + m ()Ldct; e method_2958 getGameMode + m ()I f method_2959 getLatency + m ()Lgrl; g method_52810 getSkin + m ()Leyb; h method_2955 getTeam + m ()Lwz; i method_2971 getTabListDisplayName + m (Lcom/mojang/authlib/GameProfile;Z)V +c fzr net/minecraft/class_7853 net/minecraft/client/multiplayer/ProfileKeyPairManager + f Lfzr; a field_40800 EMPTY_KEY_MANAGER + m ()Ljava/util/concurrent/CompletableFuture; a method_46522 prepareKeyPair + m (Lcom/mojang/authlib/minecraft/UserApiService;Lfhb;Ljava/nio/file/Path;)Lfzr; a method_46532 create + m ()Z b method_46523 shouldRefreshKeyPair + m ()V +c fzr$1 net/minecraft/class_7853$1 net/minecraft/client/multiplayer/ProfileKeyPairManager$1 + m ()V +c fzs net/minecraft/class_9173 net/minecraft/client/multiplayer/RegistryDataCollector + f Lfzs$a; a field_48767 contentsCollector + f Lfzx; b field_48768 tagCollector + m (Lakq;Ljava/util/List;)V a method_56583 appendContents + m (Lauh;Lka;Z)Lka$b; a method_56585 collectGameRegistries + m (Ljava/util/Map;)V a method_56586 appendTags + m ()V +c fzs$a net/minecraft/class_9173$class_9174 net/minecraft/client/multiplayer/RegistryDataCollector$ContentsCollector + f Ljava/util/Map; a field_48769 elements + m (Lakq;)Ljava/util/List; a method_56587 method_56587 + m (Lakq;Ljava/util/List;)V a method_56588 append + m (Lauh;Lka;)Lka; a method_56589 loadRegistries + m ()V +c fzt net/minecraft/class_642 net/minecraft/client/multiplayer/ServerData + f Ljava/lang/String; a field_3752 name + f Ljava/lang/String; b field_3761 ip + f Lwz; c field_3753 status + f Lwz; d field_3757 motd + f Lajq$b; e field_41861 players + f J f field_3758 ping + f I g field_3756 protocol + f Lwz; h field_3760 version + f Ljava/util/List; i field_3762 playerList + f Lorg/slf4j/Logger; j field_42889 LOGGER + f I k field_46206 MAX_ICON_SIZE + f Lfzt$a; l field_3755 packStatus + f [B m field_42890 iconBytes + f Lfzt$c; n field_45608 type + f Lfzt$b; o field_47879 state + m ()Lub; a method_2992 write + m (Lfzt$a;)V a method_2995 setResourcePackStatus + m (Lfzt$b;)V a method_55824 setState + m (Lfzt;)V a method_44292 copyNameIconFrom + m (Lub;)Lfzt; a method_2993 read + m ([B)V a method_49305 setIconBytes + m ()Lfzt$a; b method_2990 getResourcePackStatus + m (Lfzt;)V b method_2996 copyFrom + m ([B)[B b method_53885 validateIcon + m ()[B c method_49306 getIconBytes + m ()Z d method_2994 isLan + m ()Z e method_52811 isRealm + m ()Lfzt$c; f method_55616 type + m ()Lfzt$b; g method_55825 state + m (Ljava/lang/String;Ljava/lang/String;Lfzt$c;)V + m ()V +c fzt$a net/minecraft/class_642$class_643 net/minecraft/client/multiplayer/ServerData$ServerPackStatus + f Lfzt$a; a field_3768 ENABLED + f Lfzt$a; b field_3764 DISABLED + f Lfzt$a; c field_3767 PROMPT + f Lwz; d field_3765 name + f [Lfzt$a; e field_3766 $VALUES + m ()Lwz; a method_2997 getName + m ()[Lfzt$a; b method_36896 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c fzt$b net/minecraft/class_642$class_9083 net/minecraft/client/multiplayer/ServerData$State + f Lfzt$b; a field_47880 INITIAL + f Lfzt$b; b field_47881 PINGING + f Lfzt$b; c field_47882 UNREACHABLE + f Lfzt$b; d field_47883 INCOMPATIBLE + f Lfzt$b; e field_47884 SUCCESSFUL + f [Lfzt$b; f field_47885 $VALUES + m ()[Lfzt$b; a method_55826 $values + m (Ljava/lang/String;I)V + m ()V +c fzt$c net/minecraft/class_642$class_8678 net/minecraft/client/multiplayer/ServerData$Type + f Lfzt$c; a field_45609 LAN + f Lfzt$c; b field_45610 REALM + f Lfzt$c; c field_45611 OTHER + f [Lfzt$c; d field_45612 $VALUES + m ()[Lfzt$c; a method_52812 $values + m (Ljava/lang/String;I)V + m ()V +c fzu net/minecraft/class_641 net/minecraft/client/multiplayer/ServerList + f Lorg/slf4j/Logger; a field_3751 LOGGER + f Lbpk; b field_39360 IO_MAILBOX + f I c field_39437 MAX_HIDDEN_SERVERS + f Lfgo; d field_3750 minecraft + f Ljava/util/List; e field_3749 serverList + f Ljava/util/List; f field_39438 hiddenServerList + m ()V a method_2981 load + m (I)Lfzt; a method_2982 get + m (II)V a method_2985 swap + m (ILfzt;)V a method_2980 replace + m (Lfzt;)V a method_2983 remove + m (Lfzt;Ljava/util/List;)Z a method_44294 set + m (Lfzt;Z)V a method_2988 add + m (Ljava/lang/String;)Lfzt; a method_44295 get + m ()V b method_2987 save + m (Lfzt;)V b method_2986 saveSingleServer + m (Ljava/lang/String;)Lfzt; b method_44296 unhide + m ()I c method_2984 size + m (Lfzt;)V c method_44090 method_44090 + m (Lfgo;)V + m ()V +c fzv net/minecraft/class_644 net/minecraft/client/multiplayer/ServerStatusPinger + f Lorg/slf4j/Logger; a field_3771 LOGGER + f Lwz; b field_33740 CANT_CONNECT_MESSAGE + f Ljava/util/List; c field_3769 connections + m ()V a method_3000 tick + m (II)Lwz; a method_27647 formatPlayerCount + m (Lfzt;Ljava/lang/Runnable;Ljava/lang/Runnable;)V a method_3003 pingServer + m (Ljava/net/InetSocketAddress;Lgax;Lfzt;)V a method_3001 pingLegacyServer + m (Lwz;Lfzt;)V a method_36897 onPingFailed + m ()V b method_3004 removeAll + m ()V + m ()V +c fzv$1 net/minecraft/class_644$1 net/minecraft/client/multiplayer/ServerStatusPinger$1 + f Lvt; a field_3774 val$connection + f Lfzt; b field_3776 val$data + f Ljava/lang/Runnable; c field_25636 val$onPersistentDataChange + f Ljava/lang/Runnable; d field_47886 val$onPongResponse + f Ljava/net/InetSocketAddress; e field_33741 val$address + f Lgax; f field_45613 val$rawAddress + f Lfzv; g field_3777 field_3777 + f Z h field_3775 success + f Z i field_3773 receivedPing + f J j field_3772 pingStart + m (Lfzt;)V a method_49307 method_49307 + m (Lfzt;Lajq$b;)V a method_49308 method_49308 + m (Lfzt;Lajq$c;)V a method_49309 method_49309 + m (Lfzt;Ljava/lang/Runnable;Lajq$a;)V a method_49310 method_49310 + m (Lfzt;)V b method_49311 method_49311 + m (Lfzv;Lvt;Lfzt;Ljava/lang/Runnable;Ljava/lang/Runnable;Ljava/net/InetSocketAddress;Lgax;)V +c fzv$2 net/minecraft/class_644$2 net/minecraft/client/multiplayer/ServerStatusPinger$2 + f Lgax; a field_3778 val$rawAddress + f Lfzt; b field_3779 val$data + m (Lfzt;ILjava/lang/String;Ljava/lang/String;II)V a method_52813 method_52813 + m (Lfzv;Lgax;Lfzt;)V +c fzw net/minecraft/class_1124 net/minecraft/client/multiplayer/SessionSearchTrees + f Lfzw$a; a field_46200 RECIPE_COLLECTIONS + f Lfzw$a; b field_5495 CREATIVE_NAMES + f Lfzw$a; c field_5494 CREATIVE_TAGS + f Ljava/util/concurrent/CompletableFuture; d field_51826 creativeByNameSearch + f Ljava/util/concurrent/CompletableFuture; e field_51827 creativeByTagSearch + f Ljava/util/concurrent/CompletableFuture; f field_51828 recipeSearch + f Ljava/util/Map; g field_51829 reloaders + m ()V a method_60348 rebuildAfterLanguageChange + m (Lcul$b;Lcwm;Lcuq;)Ljava/util/stream/Stream; a method_60349 method_60349 + m (Lcul$b;Lcwm;Ljava/util/List;)Lguk; a method_60350 method_60350 + m (Lcuq;)Ljava/util/stream/Stream; a method_60351 method_60351 + m (Lfga;Lka$b;)V a method_60352 updateRecipes + m (Lfzw$a;Ljava/lang/Runnable;)V a method_60353 register + m (Ljava/lang/String;)Z a method_60354 method_60354 + m (Ljava/util/List;)V a method_60355 updateCreativeTags + m (Ljava/util/stream/Stream;Lcul$b;Lcwm;)Ljava/util/stream/Stream; a method_60356 getTooltipLines + m (Ljo$a;Ljava/util/List;)V a method_60357 updateCreativeTooltips + m (Ljz;Lka$b;Lczb;)Lakr; a method_60358 method_60358 + m (Ljz;Lka$b;Lfse;)Ljava/util/stream/Stream; a method_60359 method_60359 + m (Lka$b;Lcul$b;Lcwm;Lfse;)Ljava/util/stream/Stream; a method_60360 method_60360 + m (Lka$b;Lcul$b;Lcwm;Ljz;Ljava/util/List;)Lguk; a method_60361 method_60361 + m (Lka$b;Lczb;)Lcuq; a method_60362 method_60362 + m (Lwz;)Ljava/lang/String; a method_60363 method_60363 + m ()Lguk; b method_60364 recipes + m (Lcul$b;Lcwm;Lcuq;)Ljava/util/stream/Stream; b method_60365 method_60365 + m (Lcuq;)Ljava/util/stream/Stream; b method_60366 method_60366 + m (Lfga;Lka$b;)V b method_60367 method_60367 + m (Ljava/util/List;)V b method_60368 method_60368 + m (Ljo$a;Ljava/util/List;)V b method_60369 method_60369 + m ()Lguk; c method_60370 creativeTagSearch + m (Ljava/util/List;)Lguk; c method_60371 method_60371 + m ()Lguk; d method_60372 creativeNameSearch + m ()V + m ()V +c fzw$a net/minecraft/class_1124$class_1125 net/minecraft/client/multiplayer/SessionSearchTrees$Key + m ()V +c fzx net/minecraft/class_9175 net/minecraft/client/multiplayer/TagCollector + f Ljava/util/Map; a field_48770 tags + m ()V a method_57054 refreshBuiltInTagDependentData + m (Lakq;)Z a method_57051 method_57051 + m (Lakq;Lawx$a;)V a method_56590 append + m (Ljava/util/function/Predicate;Lka;Lakq;Lawx$a;)V a method_56592 method_56592 + m (Lka$d;)V a method_57052 method_57052 + m (Lka;Ljava/util/function/Predicate;)V a method_56591 applyTags + m (Lka;Z)V a method_57053 updateTags + m (Lka$d;)Z b method_57055 method_57055 + m ()V +c fzy net/minecraft/class_9112 net/minecraft/client/multiplayer/TransferState + f Ljava/util/Map; a comp_2206 cookies + m ()Ljava/util/Map; a comp_2206 cookies + m (Ljava/util/Map;)V +c fzz net/minecraft/class_7594 net/minecraft/client/multiplayer/chat/ChatListener + f Lwz; a field_45950 CHAT_VALIDATION_ERROR + f Lfgo; b field_39779 minecraft + f Ljava/util/Deque; c field_39796 delayedMessageQueue + f J d field_39797 messageDelay + f J e field_39798 previousMessageTime + m ()V a method_44765 tick + m (D)V a method_44766 setMessageDelay + m (Ljava/util/UUID;)Z a method_44738 isSenderLocalPlayer + m (Ljava/util/UUID;Lwv$a;)V a method_53488 handleChatMessageError + m (Lwv$a;Lwz;)V a method_44772 narrateChatMessage + m (Lwv$a;Lwz;Ljava/time/Instant;)Z a method_45745 method_45745 + m (Lwv$a;Lxp;Lwz;Lcom/mojang/authlib/GameProfile;ZLjava/time/Instant;)Z a method_44943 showMessageToPlayer + m (Lwz;)Ljava/util/UUID; a method_44734 guessChatUUID + m (Lwz;Ljava/time/Instant;)V a method_44735 logSystemMessage + m (Lwz;Lwv$a;)V a method_45746 handleDisguisedChatMessage + m (Lwz;Z)V a method_44736 handleSystemMessage + m (Lxl;)Z a method_44819 removeFromDelayedMessageQueue + m (Lxl;Lfzz$a;)Z a method_45747 method_45747 + m (Lxl;Ljava/util/function/BooleanSupplier;)V a method_44818 handleMessage + m (Lxp;Lcom/mojang/authlib/GameProfile;Lwv$a;)V a method_45748 handlePlayerChatMessage + m (Lxp;Lwv$a;Lcom/mojang/authlib/GameProfile;Lgab;)V a method_44737 logPlayerMessage + m (Lxp;Lwz;Ljava/time/Instant;)Lgab; a method_44732 evaluateTrustLevel + m ()V b method_44769 acceptNextDelayedMessage + m (Ljava/util/UUID;Lwv$a;)Z b method_53489 method_53489 + m (Lwv$a;Lxp;Lwz;Lcom/mojang/authlib/GameProfile;ZLjava/time/Instant;)Z b method_45749 method_45749 + m ()J c method_44944 queueSize + m ()V d method_44945 clearQueue + m ()Z e method_44775 willDelayMessages + m (Lfgo;)V + m ()V +c fzz$a net/minecraft/class_7594$class_7627 net/minecraft/client/multiplayer/chat/ChatListener$Message + f Lxl; a comp_1034 signature + f Ljava/util/function/BooleanSupplier; b comp_1035 handler + m ()Z a method_45750 accept + m ()Lxl; b comp_1034 signature + m ()Ljava/util/function/BooleanSupplier; c comp_1035 handler + m (Lxl;Ljava/util/function/BooleanSupplier;)V +c gaa net/minecraft/class_7555 net/minecraft/client/multiplayer/chat/ChatLog + f [Lgac; a field_40496 buffer + f I b field_40497 nextId + m ()I a method_45751 start + m (I)Lcom/mojang/serialization/Codec; a method_46533 codec + m (II)[Lgac; a method_46534 method_46534 + m (ILjava/util/List;)Lcom/mojang/serialization/DataResult; a method_46535 method_46535 + m (Lgac;)V a method_44535 push + m ()I b method_45752 end + m (I)Lgac; b method_44532 lookup + m (II)Ljava/lang/String; b method_49632 method_49632 + m ()Ljava/util/List; c method_46536 loggedChatEvents + m (I)I c method_45753 index + m ()I d method_46537 size + m (I)V + m (ILjava/util/List;)V +c gab net/minecraft/class_7595 net/minecraft/client/multiplayer/chat/ChatTrustLevel + f Lgab; a field_39780 SECURE + f Lgab; b field_39781 MODIFIED + f Lgab; c field_39782 NOT_SECURE + f Lcom/mojang/serialization/Codec; d field_40801 CODEC + f Ljava/lang/String; e field_40802 serializedName + f [Lgab; f field_39784 $VALUES + m ()Z a method_44740 isNotSecure + m (Lwz;)Z a method_45754 containsModifiedStyle + m (Lxp;)Lfgj; a method_44741 createTag + m (Lxp;Lwz;)Z a method_45755 isModified + m (Lxp;Lwz;Ljava/time/Instant;)Lgab; a method_44742 evaluate + m (Lxw;)Z a method_45756 isModifiedStyle + m (Lxw;Ljava/lang/String;)Ljava/util/Optional; a method_45757 method_45757 + m ()[Lgab; b method_44743 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gac net/minecraft/class_7629 net/minecraft/client/multiplayer/chat/LoggedChatEvent + f Lcom/mojang/serialization/Codec; a field_40803 CODEC + m ()Lgac$a; a method_46538 type + m ()V +c gac$a net/minecraft/class_7629$class_7854 net/minecraft/client/multiplayer/chat/LoggedChatEvent$Type + f Lgac$a; a field_40804 PLAYER + f Lgac$a; b field_40805 SYSTEM + f Ljava/lang/String; c field_40806 serializedName + f Ljava/util/function/Supplier; d field_40807 codec + f [Lgac$a; e field_40808 $VALUES + m ()Lcom/mojang/serialization/MapCodec; a method_46539 codec + m ()Lcom/mojang/serialization/MapCodec; b method_46540 method_46540 + m ()Lcom/mojang/serialization/MapCodec; d method_46541 method_46541 + m ()[Lgac$a; e method_46542 $values + m (Ljava/lang/String;ILjava/lang/String;Ljava/util/function/Supplier;)V + m ()V +c gad net/minecraft/class_7557 net/minecraft/client/multiplayer/chat/LoggedChatMessage + m (Lcom/mojang/authlib/GameProfile;Lxp;Lgab;)Lgad$a; a method_44552 player + m (Ljava/util/UUID;)Z a method_44553 canReport + m (Lwz;Ljava/time/Instant;)Lgad$b; a method_44554 system + m ()Lwz; b method_44551 toContentComponent + m ()Lwz; c method_44555 toNarrationComponent +c gad$a net/minecraft/class_7557$class_7558 net/minecraft/client/multiplayer/chat/LoggedChatMessage$Player + f Lcom/mojang/serialization/MapCodec; b field_40809 CODEC + f Lcom/mojang/authlib/GameProfile; c comp_868 profile + f Lxp; d comp_870 message + f Lgab; e comp_905 trustLevel + f Ljava/time/format/DateTimeFormatter; f field_39637 TIME_FORMATTER + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_46543 method_46543 + m ()Lwz; d method_44556 toHeadingComponent + m ()Ljava/util/UUID; e method_44557 profileId + m ()Lcom/mojang/authlib/GameProfile; f comp_868 profile + m ()Lxp; g comp_870 message + m ()Lgab; h comp_905 trustLevel + m ()Lwz; i method_44558 getTimeComponent + m (Lcom/mojang/authlib/GameProfile;Lxp;Lgab;)V + m ()V +c gad$b net/minecraft/class_7557$class_7559 net/minecraft/client/multiplayer/chat/LoggedChatMessage$System + f Lcom/mojang/serialization/MapCodec; b field_40810 CODEC + f Lwz; c comp_871 message + f Ljava/time/Instant; d comp_872 timeStamp + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_46544 method_46544 + m ()Lwz; d comp_871 message + m ()Ljava/time/Instant; e comp_872 timeStamp + m (Lwz;Ljava/time/Instant;)V + m ()V +c gae net/minecraft/class_7562 net/minecraft/client/multiplayer/chat/package-info +c gaf net/minecraft/class_7563 net/minecraft/client/multiplayer/chat/report/AbuseReportSender + m ()Z a method_44561 isEnabled + m (Lgal;Lcom/mojang/authlib/minecraft/UserApiService;)Lgaf; a method_44562 create + m (Ljava/util/UUID;Lgan;Lcom/mojang/authlib/minecraft/report/AbuseReport;)Ljava/util/concurrent/CompletableFuture; a method_44563 send + m ()Lcom/mojang/authlib/minecraft/report/AbuseReportLimits; b method_44564 reportLimits +c gaf$1 net/minecraft/class_7563$1 net/minecraft/client/multiplayer/chat/report/AbuseReportSender$1 + f [I a field_39641 $SwitchMap$com$mojang$authlib$exceptions$MinecraftClientException$ErrorType + m ()V +c gaf$a net/minecraft/class_7563$class_7564 net/minecraft/client/multiplayer/chat/report/AbuseReportSender$SendException + m (Lwz;Ljava/lang/Throwable;)V +c gaf$b net/minecraft/class_7563$class_7565 net/minecraft/client/multiplayer/chat/report/AbuseReportSender$Services + f Lgal; a comp_875 environment + f Lcom/mojang/authlib/minecraft/UserApiService; b comp_876 userApiService + f Lwz; c field_39642 SERVICE_UNAVAILABLE_TEXT + f Lwz; d field_39643 HTTP_ERROR_TEXT + f Lwz; e field_39644 JSON_ERROR_TEXT + m (Lcom/mojang/authlib/exceptions/MinecraftClientException;)Lwz; a method_44565 getErrorDescription + m (Lcom/mojang/authlib/exceptions/MinecraftClientHttpException;)Lwz; a method_44566 getHttpErrorDescription + m (Ljava/util/UUID;Lcom/mojang/authlib/minecraft/report/AbuseReport;Lgan;)Lcom/mojang/datafixers/util/Unit; a method_44567 method_44567 + m ()Lgal; c comp_875 environment + m ()Lcom/mojang/authlib/minecraft/UserApiService; d comp_876 userApiService + m (Lgal;Lcom/mojang/authlib/minecraft/UserApiService;)V + m ()V +c gag net/minecraft/class_8186 net/minecraft/client/multiplayer/chat/report/BanReason + f Lgag; a field_42891 GENERIC_VIOLATION + f Lgag; b field_42892 FALSE_REPORTING + f Lgag; c field_42893 HATE_SPEECH + f Lgag; d field_42894 HATE_TERRORISM_NOTORIOUS_FIGURE + f Lgag; e field_42895 HARASSMENT_OR_BULLYING + f Lgag; f field_42896 DEFAMATION_IMPERSONATION_FALSE_INFORMATION + f Lgag; g field_42897 DRUGS + f Lgag; h field_42898 FRAUD + f Lgag; i field_42899 SPAM_OR_ADVERTISING + f Lgag; j field_42900 NUDITY_OR_PORNOGRAPHY + f Lgag; k field_42901 SEXUALLY_INAPPROPRIATE + f Lgag; l field_42902 EXTREME_VIOLENCE_OR_GORE + f Lgag; m field_42903 IMMINENT_HARM_TO_PERSON_OR_PROPERTY + f Lwz; n field_42904 title + f [Lgag; o field_42905 $VALUES + m ()Lwz; a method_49312 title + m (I)Lgag; a method_49313 byId + m ()[Lgag; b method_49314 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gah net/minecraft/class_7566 net/minecraft/client/multiplayer/chat/report/ChatReport + f Lit/unimi/dsi/fastutil/ints/IntSet; g field_46059 reportedMessages + m ()Lgah; a method_44585 copy + m (ILcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V a method_44569 toggleReported + m (Ljava/util/UUID;Ljava/time/Instant;Ljava/util/UUID;)V +c gah$a net/minecraft/class_7566$class_8772 net/minecraft/client/multiplayer/chat/report/ChatReport$Builder + m ()Lit/unimi/dsi/fastutil/ints/IntSet; a method_53597 reportedMessages + m (I)V a method_53598 toggleReported + m (Lgad$a;Z)Lcom/mojang/authlib/minecraft/report/ReportChatMessage; a method_53599 buildReportedChatMessage + m (Ljava/util/List;ILgad$a;)V a method_53601 method_53601 + m (I)Z b method_53603 isReported + m (Lgao;)Lcom/mojang/authlib/minecraft/report/ReportEvidence; b method_53604 buildEvidence + m ()Lgah$a; d method_53606 copy + m (Lgah;Lcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V + m (Ljava/util/UUID;Lcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V +c gai net/minecraft/class_7757 net/minecraft/client/multiplayer/chat/report/ChatReportContextBuilder + f I a field_40498 leadingCount + f Ljava/util/List; b field_40499 activeCollectors + m ()Z a method_45758 isActive + m (Lgaa;Lit/unimi/dsi/fastutil/ints/IntCollection;Lgai$b;)V a method_45759 collectAllContext + m (Lxp;)V a method_45760 trackContext + m (Lxp;)Z b method_45761 acceptContext + m (I)V +c gai$a net/minecraft/class_7757$class_7758 net/minecraft/client/multiplayer/chat/report/ChatReportContextBuilder$Collector + f Lgai; a field_40500 field_40500 + f Ljava/util/Set; b field_40501 lastSeenSignatures + f Lxp; c field_40502 lastChainMessage + f Z d field_40503 collectingChain + f I e field_40504 count + m ()Z a method_45762 isComplete + m (Lxp;)Z a method_45763 accept + m (Lgai;Lxp;)V +c gai$b net/minecraft/class_7757$class_7632 net/minecraft/client/multiplayer/chat/report/ChatReportContextBuilder$Handler +c gaj net/minecraft/class_8773 net/minecraft/client/multiplayer/chat/report/NameReport + f Ljava/lang/String; g field_46060 reportedName + m ()Ljava/lang/String; a method_53607 getReportedName + m ()Lgaj; c method_53608 copy + m (Ljava/util/UUID;Ljava/time/Instant;Ljava/util/UUID;Ljava/lang/String;)V +c gaj$a net/minecraft/class_8773$class_8774 net/minecraft/client/multiplayer/chat/report/NameReport$Builder + m (Lgaj;Lcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V + m (Ljava/util/UUID;Ljava/lang/String;Lcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V +c gak net/minecraft/class_7855 net/minecraft/client/multiplayer/chat/report/Report + f Ljava/util/UUID; a field_40813 reportId + f Ljava/time/Instant; b field_40814 createdAt + f Ljava/util/UUID; c field_40815 reportedProfileId + f Ljava/lang/String; d field_40817 comments + f Lgam; e field_40818 reason + f Z f field_52305 attested + m (Lfod;Lgao;)Lfod; a method_53596 createScreen + m (Ljava/util/UUID;)Z a method_46549 isReportedPlayer + m ()Lgak; b method_46547 copy + m (Ljava/util/UUID;Ljava/time/Instant;Ljava/util/UUID;)V +c gak$a net/minecraft/class_7855$class_8775 net/minecraft/client/multiplayer/chat/report/Report$Builder + f Lgak; a field_46061 report + f Lcom/mojang/authlib/minecraft/report/AbuseReportLimits; b field_46062 limits + m (Lgam;)V a method_53609 setReason + m (Lgao;)Lcom/mojang/datafixers/util/Either; a method_53600 build + m (Ljava/lang/String;)V a method_53610 setComments + m (Z)V a method_61155 setAttested + m ()Z b method_53602 hasContent + m ()Lgak$b; c method_53605 checkBuildable + m ()Lgak; e method_53611 report + m ()Ljava/util/UUID; f method_53612 reportedProfileId + m ()Ljava/lang/String; g method_53613 comments + m ()Z h method_61156 attested + m ()Lgam; i method_53614 reason + m (Lgak;Lcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V +c gak$b net/minecraft/class_7855$class_7567 net/minecraft/client/multiplayer/chat/report/Report$CannotBuildReason + f Lgak$b; a field_39655 NO_REASON + f Lgak$b; b field_39656 NO_REPORTED_MESSAGES + f Lgak$b; c field_39657 TOO_MANY_MESSAGES + f Lgak$b; d field_39658 COMMENT_TOO_LONG + f Lgak$b; e field_52306 NOT_ATTESTED + f Lwz; f comp_877 message + m ()Lfjx; a method_53615 tooltip + m ()Lwz; b comp_877 message + m (Lwz;)V + m ()V +c gak$c net/minecraft/class_7855$class_7568 net/minecraft/client/multiplayer/chat/report/Report$Result + f Ljava/util/UUID; a comp_878 id + f Lgan; b comp_1910 reportType + f Lcom/mojang/authlib/minecraft/report/AbuseReport; c comp_879 report + m ()Ljava/util/UUID; a comp_878 id + m ()Lgan; b comp_1910 reportType + m ()Lcom/mojang/authlib/minecraft/report/AbuseReport; c comp_879 report + m (Ljava/util/UUID;Lgan;Lcom/mojang/authlib/minecraft/report/AbuseReport;)V +c gal net/minecraft/class_7569 net/minecraft/client/multiplayer/chat/report/ReportEnvironment + f Ljava/lang/String; a comp_880 clientVersion + f Lgal$a; b comp_881 server + m ()Lgal; a method_44586 local + m (Lfcp;)Lgal; a method_44587 realm + m (Lgal$a;)Lgal; a method_44588 create + m (Ljava/lang/String;)Lgal; a method_44589 thirdParty + m ()Lcom/mojang/authlib/yggdrasil/request/AbuseReportRequest$ClientInfo; b method_44590 clientInfo + m ()Lcom/mojang/authlib/yggdrasil/request/AbuseReportRequest$ThirdPartyServerInfo; c method_44591 thirdPartyServerInfo + m ()Lcom/mojang/authlib/yggdrasil/request/AbuseReportRequest$RealmInfo; d method_44592 realmInfo + m ()Ljava/lang/String; e comp_880 clientVersion + m ()Lgal$a; f comp_881 server + m ()Ljava/lang/String; g method_44593 getClientVersion + m (Ljava/lang/String;Lgal$a;)V +c gal$a net/minecraft/class_7569$class_7570 net/minecraft/client/multiplayer/chat/report/ReportEnvironment$Server +c gal$a$a net/minecraft/class_7569$class_7570$class_7571 net/minecraft/client/multiplayer/chat/report/ReportEnvironment$Server$Realm + f J a comp_882 realmId + f I b comp_883 slotId + m ()J a comp_882 realmId + m ()I b comp_883 slotId + m (Lfcp;)V + m (JI)V +c gal$a$b net/minecraft/class_7569$class_7570$class_7572 net/minecraft/client/multiplayer/chat/report/ReportEnvironment$Server$ThirdParty + f Ljava/lang/String; a comp_884 ip + m ()Ljava/lang/String; a comp_884 ip + m (Ljava/lang/String;)V +c gam net/minecraft/class_7573 net/minecraft/client/multiplayer/chat/report/ReportReason + f Lgam; a field_46063 GENERIC + f Lgam; b field_39659 HATE_SPEECH + f Lgam; c field_39664 HARASSMENT_OR_BULLYING + f Lgam; d field_39667 SELF_HARM_OR_SUICIDE + f Lgam; e field_39662 IMMINENT_HARM + f Lgam; f field_39666 DEFAMATION_IMPERSONATION_FALSE_INFORMATION + f Lgam; g field_39670 ALCOHOL_TOBACCO_DRUGS + f Lgam; h field_39661 CHILD_SEXUAL_EXPLOITATION_OR_ABUSE + f Lgam; i field_39660 TERRORISM_OR_VIOLENT_EXTREMISM + f Lgam; j field_39663 NON_CONSENSUAL_INTIMATE_IMAGERY + f Ljava/lang/String; k field_39671 backendName + f Lwz; l field_39672 title + f Lwz; m field_39673 description + f [Lgam; n field_39674 $VALUES + m ()Ljava/lang/String; a method_44594 backendName + m ()Lwz; b method_44595 title + m ()Lwz; c method_44596 description + m ()[Lgam; d method_44597 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gan net/minecraft/class_8776 net/minecraft/client/multiplayer/chat/report/ReportType + f Lgan; a field_46064 CHAT + f Lgan; b field_46065 SKIN + f Lgan; c field_46066 USERNAME + f Ljava/lang/String; d field_46067 backendName + f [Lgan; e field_46068 $VALUES + m ()Ljava/lang/String; a method_53616 backendName + m ()[Lgan; b method_53617 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gao net/minecraft/class_7574 net/minecraft/client/multiplayer/chat/report/ReportingContext + f I a field_39675 LOG_CAPACITY + f Lgaf; b field_40819 sender + f Lgal; c field_40820 environment + f Lgaa; d field_40821 chatLog + f Lgak; e field_40822 draftReport + m ()Lgaf; a method_46550 sender + m (Lfgo;Lfod;Ljava/lang/Runnable;Z)V a method_46552 draftReportHandled + m (Lfgo;Lgak;Lfod;Ljava/lang/Runnable;Z)V a method_46551 method_46551 + m (Lgak;)V a method_46553 setReportDraft + m (Lgal;)Z a method_44598 matches + m (Lgal;Lcom/mojang/authlib/minecraft/UserApiService;)Lgao; a method_44599 create + m (Ljava/util/UUID;)Z a method_46554 hasDraftReportFor + m ()Lgaa; b method_46555 chatLog + m ()Z c method_46556 hasDraftReport + m (Lgaf;Lgal;Lgaa;)V +c gap net/minecraft/class_8777 net/minecraft/client/multiplayer/chat/report/SkinReport + f Ljava/util/function/Supplier; g field_46069 skinGetter + m ()Ljava/util/function/Supplier; a method_53618 getSkinGetter + m ()Lgap; c method_53619 copy + m (Ljava/util/UUID;Ljava/time/Instant;Ljava/util/UUID;Ljava/util/function/Supplier;)V +c gap$a net/minecraft/class_8777$class_8778 net/minecraft/client/multiplayer/chat/report/SkinReport$Builder + m (Lgap;Lcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V + m (Ljava/util/UUID;Ljava/util/function/Supplier;Lcom/mojang/authlib/minecraft/report/AbuseReportLimits;)V +c gaq net/minecraft/class_7575 net/minecraft/client/multiplayer/chat/report/package-info +c gar net/minecraft/class_6235 net/minecraft/client/multiplayer/package-info +c gas net/minecraft/class_7202 net/minecraft/client/multiplayer/prediction/BlockStatePredictionHandler + f Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap; a field_37953 serverVerifiedStates + f I b field_37954 currentSequenceNr + f Z c field_37955 isPredicting + m ()Lgas; a method_41937 startPredicting + m (ILfzf;)V a method_41938 endPredictionsUpTo + m (Ldtc;Lgeb;Ljava/lang/Long;Lgas$a;)Lgas$a; a method_41939 method_41939 + m (Ljd;Ldtc;)Z a method_41940 updateKnownServerState + m (Ljd;Ldtc;Lgeb;)V a method_41941 retainKnownServerState + m ()I b method_41942 currentSequence + m ()Z c method_41943 isPredicting + m ()V +c gas$a net/minecraft/class_7202$class_7203 net/minecraft/client/multiplayer/prediction/BlockStatePredictionHandler$ServerVerifiedState + f Lexc; a field_37956 playerPos + f I b field_37957 sequence + f Ldtc; c field_37958 blockState + m (I)Lgas$a; a method_41944 setSequence + m (Ldtc;)V a method_41945 setBlockState + m (ILdtc;Lexc;)V +c gat net/minecraft/class_7204 net/minecraft/client/multiplayer/prediction/PredictiveAction +c gau net/minecraft/class_7205 net/minecraft/client/multiplayer/prediction/package-info +c gav net/minecraft/class_6394 net/minecraft/client/multiplayer/resolver/AddressCheck + m ()Lgav; a method_37097 createFromService + m (Lgaw;)Z a method_37098 isAllowed + m (Lgax;)Z a method_37099 isAllowed +c gav$1 net/minecraft/class_6394$1 net/minecraft/client/multiplayer/resolver/AddressCheck$1 + f Lcom/google/common/collect/ImmutableList; a field_33846 val$blockLists + m (Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Predicate;)Z a method_37100 method_37100 + m (Ljava/lang/String;Ljava/util/function/Predicate;)Z a method_37101 method_37101 + m (Lcom/google/common/collect/ImmutableList;)V +c gaw net/minecraft/class_6368 net/minecraft/client/multiplayer/resolver/ResolvedServerAddress + m ()Ljava/lang/String; a method_36898 getHostName + m (Ljava/net/InetSocketAddress;)Lgaw; a method_36899 from + m ()Ljava/lang/String; b method_36900 getHostIp + m ()I c method_36901 getPort + m ()Ljava/net/InetSocketAddress; d method_36902 asInetSocketAddress +c gaw$1 net/minecraft/class_6368$1 net/minecraft/client/multiplayer/resolver/ResolvedServerAddress$1 + f Ljava/net/InetSocketAddress; a field_33742 val$address + m (Ljava/net/InetSocketAddress;)V +c gax net/minecraft/class_639 net/minecraft/client/multiplayer/resolver/ServerAddress + f Lorg/slf4j/Logger; a field_33416 LOGGER + f Lcom/google/common/net/HostAndPort; b field_33417 hostAndPort + f Lgax; c field_33418 INVALID + m ()Ljava/lang/String; a method_2952 getHost + m (Ljava/lang/String;)Lgax; a method_2950 parseString + m ()I b method_2954 getPort + m (Ljava/lang/String;)Z b method_36224 isValidAddress + m (Ljava/lang/String;)I c method_2951 parsePort + m (Ljava/lang/String;I)V + m (Lcom/google/common/net/HostAndPort;)V + m ()V +c gay net/minecraft/class_6369 net/minecraft/client/multiplayer/resolver/ServerAddressResolver + f Lorg/slf4j/Logger; a field_33743 LOGGER + f Lgay; b field_33744 SYSTEM + m (Lgax;)Ljava/util/Optional; a method_36903 method_36903 + m ()V +c gaz net/minecraft/class_6370 net/minecraft/client/multiplayer/resolver/ServerNameResolver + f Lgaz; a field_33745 DEFAULT + f Lgay; b field_33746 resolver + f Lgba; c field_33747 redirectHandler + f Lgav; d field_33847 addressCheck + m (Lgax;)Ljava/util/Optional; a method_36907 resolveAddress + m (Lgay;Lgba;Lgav;)V + m ()V +c gba net/minecraft/class_6371 net/minecraft/client/multiplayer/resolver/ServerRedirectHandler + f Lorg/slf4j/Logger; a field_33749 LOGGER + f Lgba; b field_33750 EMPTY + m (Lgax;)Ljava/util/Optional; a method_36910 method_36910 + m (Ljavax/naming/directory/DirContext;Lgax;)Ljava/util/Optional; a method_36911 method_36911 + m ()Lgba; createDnsSrvRedirectHandler method_36909 createDnsSrvRedirectHandler + m ()V +c gbb net/minecraft/class_6372 net/minecraft/client/multiplayer/resolver/package-info +c gbc net/minecraft/class_6236 net/minecraft/client/package-info +c gbd net/minecraft/class_4792 net/minecraft/client/particle/AshParticle + m (Lfzf;DDDDDDFLgdi;)V +c gbd$a net/minecraft/class_4792$class_4793 net/minecraft/client/particle/AshParticle$Provider + f Lgdi; a field_22235 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_24463 createParticle + m (Lgdi;)V +c gbe net/minecraft/class_645 net/minecraft/client/particle/AttackSweepParticle + f Lgdi; a field_17781 sprites + m (Lfzf;DDDDLgdi;)V +c gbe$a net/minecraft/class_645$class_646 net/minecraft/client/particle/AttackSweepParticle$Provider + f Lgdi; a field_17782 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3006 createParticle + m (Lgdi;)V +c gbf net/minecraft/class_4794 net/minecraft/client/particle/BaseAshSmokeParticle + f Lgdi; a field_22237 sprites + m (Lfzf;DDDFFFDDDFLgdi;FIFZ)V +c gbg net/minecraft/class_6734 net/minecraft/client/particle/BlockMarker + m (Lfzf;DDDLdtc;)V +c gbg$a net/minecraft/class_6734$class_6735 net/minecraft/client/particle/BlockMarker$Provider + m (Lle;Lfzf;DDDDDD)Lgcn; a method_39196 createParticle + m ()V +c gbh net/minecraft/class_647 net/minecraft/client/particle/BreakingItemParticle + f F a field_17783 uo + f F b field_17784 vo + m (Lfzf;DDDDDDLcuq;)V + m (Lfzf;DDDLcuq;)V +c gbh$a net/minecraft/class_647$class_9478 net/minecraft/client/particle/BreakingItemParticle$CobwebProvider + m (Llq;Lfzf;DDDDDD)Lgcn; a method_58747 createParticle + m ()V +c gbh$b net/minecraft/class_647$class_648 net/minecraft/client/particle/BreakingItemParticle$Provider + m (Lli;Lfzf;DDDDDD)Lgcn; a method_3007 createParticle + m ()V +c gbh$c net/minecraft/class_647$class_649 net/minecraft/client/particle/BreakingItemParticle$SlimeProvider + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3008 createParticle + m ()V +c gbh$d net/minecraft/class_647$class_650 net/minecraft/client/particle/BreakingItemParticle$SnowballProvider + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3009 createParticle + m ()V +c gbi net/minecraft/class_653 net/minecraft/client/particle/BubbleColumnUpParticle + m (Lfzf;DDDDDD)V +c gbi$a net/minecraft/class_653$class_654 net/minecraft/client/particle/BubbleColumnUpParticle$Provider + f Lgdi; a field_17786 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3011 createParticle + m (Lgdi;)V +c gbj net/minecraft/class_655 net/minecraft/client/particle/BubbleParticle + m (Lfzf;DDDDDD)V +c gbj$a net/minecraft/class_655$class_656 net/minecraft/client/particle/BubbleParticle$Provider + f Lgdi; a field_17785 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3012 createParticle + m (Lgdi;)V +c gbk net/minecraft/class_661 net/minecraft/client/particle/BubblePopParticle + f Lgdi; a field_17787 sprites + m (Lfzf;DDDDDDLgdi;)V +c gbk$a net/minecraft/class_661$class_662 net/minecraft/client/particle/BubblePopParticle$Provider + f Lgdi; a field_17788 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3016 createParticle + m (Lgdi;)V +c gbl net/minecraft/class_3937 net/minecraft/client/particle/CampfireSmokeParticle + m (Lfzf;DDDDDDZ)V +c gbl$a net/minecraft/class_3937$class_3938 net/minecraft/client/particle/CampfireSmokeParticle$CosyProvider + f Lgdi; a field_18290 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_17579 createParticle + m (Lgdi;)V +c gbl$b net/minecraft/class_3937$class_3995 net/minecraft/client/particle/CampfireSmokeParticle$SignalProvider + f Lgdi; a field_17789 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_18820 createParticle + m (Lgdi;)V +c gbm net/minecraft/class_8253 net/minecraft/client/particle/CherryParticle + f I F field_43366 CURVE_ENDPOINT_TIME + f F G field_43367 FALL_ACC + f F H field_43368 WIND_BIG + f F I field_43369 rotSpeed + f F J field_43370 particleRandom + f F K field_43371 spinAcceleration + f F a field_43372 ACCELERATION_SCALE + f I b field_43373 INITIAL_LIFETIME + m (Lfzf;DDDLgdi;)V +c gbn net/minecraft/class_657 net/minecraft/client/particle/CritParticle + m (Lfzf;DDDDDD)V +c gbn$a net/minecraft/class_657$class_658 net/minecraft/client/particle/CritParticle$DamageIndicatorProvider + f Lgdi; a field_17790 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3013 createParticle + m (Lgdi;)V +c gbn$b net/minecraft/class_657$class_659 net/minecraft/client/particle/CritParticle$MagicProvider + f Lgdi; a field_17791 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3014 createParticle + m (Lgdi;)V +c gbn$c net/minecraft/class_657$class_3939 net/minecraft/client/particle/CritParticle$Provider + f Lgdi; a field_18291 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_17580 createParticle + m (Lgdi;)V +c gbo net/minecraft/class_666 net/minecraft/client/particle/DragonBreathParticle + f F F field_32648 COLOR_MIN_RED + f F G field_32649 COLOR_MIN_GREEN + f F H field_32650 COLOR_MIN_BLUE + f F I field_32651 COLOR_MAX_RED + f F J field_32652 COLOR_MAX_GREEN + f F K field_32653 COLOR_MAX_BLUE + f Z L field_3792 hasHitGround + f Lgdi; M field_17793 sprites + f I a field_32654 COLOR_MIN + f I b field_32655 COLOR_MAX + m (Lfzf;DDDDDDLgdi;)V +c gbo$a net/minecraft/class_666$class_667 net/minecraft/client/particle/DragonBreathParticle$Provider + f Lgdi; a field_17794 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3019 createParticle + m (Lgdi;)V +c gbp net/minecraft/class_663 net/minecraft/client/particle/DripParticle + f Z a field_22437 isGlowing + f Lepd; b field_3789 type + m (Llq;Lfzf;DDDDDD)Lgdn; a method_49316 createWaterHangParticle + m (Llq;Lfzf;DDDDDD)Lgdn; b method_49317 createWaterFallParticle + m (Llq;Lfzf;DDDDDD)Lgdn; c method_49318 createLavaHangParticle + m (Llq;Lfzf;DDDDDD)Lgdn; d method_49319 createLavaFallParticle + m (Llq;Lfzf;DDDDDD)Lgdn; e method_49320 createLavaLandParticle + m (Llq;Lfzf;DDDDDD)Lgdn; f method_49324 createHoneyHangParticle + m ()Lepd; g method_32791 getType + m (Llq;Lfzf;DDDDDD)Lgdn; g method_49325 createHoneyFallParticle + m ()V h method_18821 preMoveUpdate + m (Llq;Lfzf;DDDDDD)Lgdn; h method_49326 createHoneyLandParticle + m ()V i method_18822 postMoveUpdate + m (Llq;Lfzf;DDDDDD)Lgdn; i method_49327 createDripstoneWaterHangParticle + m (Llq;Lfzf;DDDDDD)Lgdn; j method_49328 createDripstoneWaterFallParticle + m (Llq;Lfzf;DDDDDD)Lgdn; k method_49329 createDripstoneLavaHangParticle + m (Llq;Lfzf;DDDDDD)Lgdn; l method_49330 createDripstoneLavaFallParticle + m (Llq;Lfzf;DDDDDD)Lgdn; m method_49331 createNectarFallParticle + m (Llq;Lfzf;DDDDDD)Lgdn; n method_49332 createSporeBlossomFallParticle + m (Llq;Lfzf;DDDDDD)Lgdn; o method_49333 createObsidianTearHangParticle + m (Llq;Lfzf;DDDDDD)Lgdn; p method_49334 createObsidianTearFallParticle + m (Llq;Lfzf;DDDDDD)Lgdn; q method_49335 createObsidianTearLandParticle + m (Lfzf;DDDLepd;)V +c gbp$a net/minecraft/class_663$class_4082 net/minecraft/client/particle/DripParticle$CoolingDripHangParticle + m (Lfzf;DDDLepd;Llk;)V +c gbp$b net/minecraft/class_663$class_4084 net/minecraft/client/particle/DripParticle$DripHangParticle + f Llk; b field_18293 fallingParticle + m (Lfzf;DDDLepd;Llk;)V +c gbp$c net/minecraft/class_663$class_4085 net/minecraft/client/particle/DripParticle$DripLandParticle + m (Lfzf;DDDLepd;)V +c gbp$d net/minecraft/class_663$class_5692 net/minecraft/client/particle/DripParticle$DripstoneFallAndLandParticle + m (Lfzf;DDDLepd;Llk;)V +c gbp$e net/minecraft/class_663$class_4083 net/minecraft/client/particle/DripParticle$FallAndLandParticle + f Llk; b field_18292 landParticle + m (Lfzf;DDDLepd;Llk;)V +c gbp$f net/minecraft/class_663$class_4497 net/minecraft/client/particle/DripParticle$FallingParticle + m (Lfzf;DDDLepd;)V + m (Lfzf;DDDLepd;I)V +c gbp$g net/minecraft/class_663$class_4498 net/minecraft/client/particle/DripParticle$HoneyFallAndLandParticle + m (Lfzf;DDDLepd;Llk;)V +c gbq net/minecraft/class_5734 net/minecraft/client/particle/DustColorTransitionParticle + f Lorg/joml/Vector3f; a field_28244 fromColor + f Lorg/joml/Vector3f; b field_28245 toColor + m (Lorg/joml/Vector3f;F)Lorg/joml/Vector3f; a method_33073 randomizeColor + m (F)V f method_33074 lerpColors + m (Lfzf;DDDDDDLlg;Lgdi;)V +c gbq$a net/minecraft/class_5734$class_5735 net/minecraft/client/particle/DustColorTransitionParticle$Provider + f Lgdi; a field_28246 sprites + m (Llg;Lfzf;DDDDDD)Lgcn; a method_33075 createParticle + m (Lgdi;)V +c gbr net/minecraft/class_671 net/minecraft/client/particle/DustParticle + m (Lfzf;DDDDDDLlh;Lgdi;)V +c gbr$a net/minecraft/class_671$class_672 net/minecraft/client/particle/DustParticle$Provider + f Lgdi; a field_17802 sprites + m (Llh;Lfzf;DDDDDD)Lgcn; a method_3022 createParticle + m (Lgdi;)V +c gbs net/minecraft/class_5736 net/minecraft/client/particle/DustParticleBase + f Lgdi; a field_28247 sprites + m (FF)F a method_33076 randomizeColor + m (Lfzf;DDDDDDLln;Lgdi;)V +c gbt net/minecraft/class_8845 net/minecraft/client/particle/DustPlumeParticle + f I a field_46725 COLOR_RGB24 + m (Lfzf;DDDDDDFLgdi;)V +c gbt$a net/minecraft/class_8845$class_8846 net/minecraft/client/particle/DustPlumeParticle$Provider + f Lgdi; a field_46726 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_54387 createParticle + m (Lgdi;)V +c gbu net/minecraft/class_675 net/minecraft/client/particle/EndRodParticle + m (Lfzf;DDDDDDLgdi;)V +c gbu$a net/minecraft/class_675$class_676 net/minecraft/client/particle/EndRodParticle$Provider + f Lgdi; a field_17805 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3024 createParticle + m (Lgdi;)V +c gbv net/minecraft/class_673 net/minecraft/client/particle/ExplodeParticle + f Lgdi; a field_17806 sprites + m (Lfzf;DDDDDDLgdi;)V +c gbv$a net/minecraft/class_673$class_674 net/minecraft/client/particle/ExplodeParticle$Provider + f Lgdi; a field_17807 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3023 createParticle + m (Lgdi;)V +c gbw net/minecraft/class_682 net/minecraft/client/particle/FallingDustParticle + f F a field_3809 rotSpeed + f Lgdi; b field_17808 sprites + m (Lfzf;DDDFFFLgdi;)V +c gbw$a net/minecraft/class_682$class_683 net/minecraft/client/particle/FallingDustParticle$Provider + f Lgdi; a field_17809 sprite + m (Lle;Lfzf;DDDDDD)Lgcn; a method_3033 createParticle + m (Lgdi;)V +c gbx net/minecraft/class_677 net/minecraft/client/particle/FireworkParticles + m ()V +c gbx$1 net/minecraft/class_677$1 net/minecraft/client/particle/FireworkParticles$1 + f [I a field_3797 $SwitchMap$net$minecraft$world$item$component$FireworkExplosion$Shape + m ()V +c gbx$a net/minecraft/class_677$class_3997 net/minecraft/client/particle/FireworkParticles$FlashProvider + f Lgdi; a field_17810 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_18121 createParticle + m (Lgdi;)V +c gbx$b net/minecraft/class_677$class_678 net/minecraft/client/particle/FireworkParticles$OverlayParticle + m (Lfzf;DDD)V +c gbx$c net/minecraft/class_677$class_680 net/minecraft/client/particle/FireworkParticles$SparkParticle + f Z F field_3803 twinkle + f Lgcp; G field_3798 engine + f F H field_3801 fadeR + f F I field_3800 fadeG + f F J field_3799 fadeB + f Z K field_3802 hasFade + f Z b field_3804 trail + m (Z)V a method_3027 setTrail + m (Z)V b method_3026 setTwinkle + m (Lfzf;DDDDDDLgcp;Lgdi;)V +c gbx$d net/minecraft/class_677$class_679 net/minecraft/client/particle/FireworkParticles$SparkProvider + f Lgdi; a field_17811 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3025 createParticle + m (Lgdi;)V +c gbx$e net/minecraft/class_677$class_681 net/minecraft/client/particle/FireworkParticles$Starter + f I D field_3808 life + f Lgcp; E field_3805 engine + f Ljava/util/List; F field_3806 explosions + f Z G field_3807 twinkleDelay + f [[D a field_49565 CREEPER_PARTICLE_COORDS + f [[D b field_49566 STAR_PARTICLE_COORDS + m (DDDDDDLit/unimi/dsi/fastutil/ints/IntList;Lit/unimi/dsi/fastutil/ints/IntList;ZZ)V a method_3030 createParticle + m (DILit/unimi/dsi/fastutil/ints/IntList;Lit/unimi/dsi/fastutil/ints/IntList;ZZ)V a method_3031 createParticleBall + m (D[[DLit/unimi/dsi/fastutil/ints/IntList;Lit/unimi/dsi/fastutil/ints/IntList;ZZZ)V a method_3028 createParticleShape + m (Lit/unimi/dsi/fastutil/ints/IntList;Lit/unimi/dsi/fastutil/ints/IntList;ZZ)V a method_3032 createParticleBurst + m ()Z c method_3029 isFarAwayFromCamera + m (Lfzf;DDDDDDLgcp;Ljava/util/List;)V + m ()V +c gby net/minecraft/class_687 net/minecraft/client/particle/FlameParticle + m (Lfzf;DDDDDD)V +c gby$a net/minecraft/class_687$class_688 net/minecraft/client/particle/FlameParticle$Provider + f Lgdi; a field_17812 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3036 createParticle + m (Lgdi;)V +c gby$b net/minecraft/class_687$class_5613 net/minecraft/client/particle/FlameParticle$SmallFlameProvider + f Lgdi; a field_27736 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_32131 createParticle + m (Lgdi;)V +c gbz net/minecraft/class_9479 net/minecraft/client/particle/FlyStraightTowardsParticle + f D F field_50224 zStart + f I G field_50225 startColor + f I H field_50226 endColor + f D a field_50227 xStart + f D b field_50228 yStart + m (Lfzf;DDDDDDII)V +c gbz$a net/minecraft/class_9479$class_9480 net/minecraft/client/particle/FlyStraightTowardsParticle$OminousSpawnProvider + f Lgdi; a field_50229 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_58748 createParticle + m (Lgdi;)V +c gca net/minecraft/class_668 net/minecraft/client/particle/FlyTowardsPositionParticle + f D F field_3793 zStart + f Z G field_48938 isGlowing + f Lgcn$a; H field_48939 lifetimeAlpha + f D a field_3795 xStart + f D b field_3794 yStart + m (Lfzf;DDDDDD)V + m (Lfzf;DDDDDDZLgcn$a;)V +c gca$a net/minecraft/class_668$class_670 net/minecraft/client/particle/FlyTowardsPositionParticle$EnchantProvider + f Lgdi; a field_17803 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3021 createParticle + m (Lgdi;)V +c gca$b net/minecraft/class_668$class_669 net/minecraft/client/particle/FlyTowardsPositionParticle$NautilusProvider + f Lgdi; a field_17804 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3020 createParticle + m (Lgdi;)V +c gca$c net/minecraft/class_668$class_9212 net/minecraft/client/particle/FlyTowardsPositionParticle$VaultConnectionProvider + f Lgdi; a field_48940 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_56832 createParticle + m (Lgdi;)V +c gcb net/minecraft/class_5786 net/minecraft/client/particle/GlowParticle + f Layw; a field_28457 RANDOM + f Lgdi; b field_28458 sprites + m (Lfzf;DDDDDDLgdi;)V + m ()V +c gcb$a net/minecraft/class_5786$class_5956 net/minecraft/client/particle/GlowParticle$ElectricSparkProvider + f D a field_29570 SPEED_FACTOR + f Lgdi; b field_29571 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_34748 createParticle + m (Lgdi;)V +c gcb$b net/minecraft/class_5786$class_5957 net/minecraft/client/particle/GlowParticle$GlowSquidProvider + f Lgdi; a field_29572 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_34749 createParticle + m (Lgdi;)V +c gcb$c net/minecraft/class_5786$class_5958 net/minecraft/client/particle/GlowParticle$ScrapeProvider + f D a field_29573 SPEED_FACTOR + f Lgdi; b field_29574 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_34750 createParticle + m (Lgdi;)V +c gcb$d net/minecraft/class_5786$class_5959 net/minecraft/client/particle/GlowParticle$WaxOffProvider + f D a field_29575 SPEED_FACTOR + f Lgdi; b field_29576 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_34751 createParticle + m (Lgdi;)V +c gcb$e net/minecraft/class_5786$class_5960 net/minecraft/client/particle/GlowParticle$WaxOnProvider + f D a field_29577 SPEED_FACTOR + f Lgdi; b field_29578 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_34752 createParticle + m (Lgdi;)V +c gcc net/minecraft/class_8977 net/minecraft/client/particle/GustParticle + f Lgdi; a field_47454 sprites + m (Lfzf;DDDLgdi;)V +c gcc$a net/minecraft/class_8977$class_8978 net/minecraft/client/particle/GustParticle$Provider + f Lgdi; a field_47455 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_55243 createParticle + m (Lgdi;)V +c gcc$b net/minecraft/class_8977$class_9481 net/minecraft/client/particle/GustParticle$SmallProvider + f Lgdi; a field_50230 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_58749 createParticle + m (Lgdi;)V +c gcd net/minecraft/class_8979 net/minecraft/client/particle/GustSeedParticle + f D a field_49126 scale + f I b field_49127 tickDelayInBetween + m (Lfzf;DDDDII)V +c gcd$a net/minecraft/class_8979$class_8980 net/minecraft/client/particle/GustSeedParticle$Provider + f D a field_49128 scale + f I b field_49129 lifetime + f I c field_49130 tickDelayInBetween + m (Llq;Lfzf;DDDDDD)Lgcn; a method_55244 createParticle + m (DII)V +c gce net/minecraft/class_684 net/minecraft/client/particle/HeartParticle + m (Lfzf;DDD)V +c gce$a net/minecraft/class_684$class_685 net/minecraft/client/particle/HeartParticle$AngryVillagerProvider + f Lgdi; a field_17813 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3034 createParticle + m (Lgdi;)V +c gce$b net/minecraft/class_684$class_686 net/minecraft/client/particle/HeartParticle$Provider + f Lgdi; a field_17814 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3035 createParticle + m (Lgdi;)V +c gcf net/minecraft/class_691 net/minecraft/client/particle/HugeExplosionParticle + f Lgdi; a field_17815 sprites + m (Lfzf;DDDDLgdi;)V +c gcf$a net/minecraft/class_691$class_692 net/minecraft/client/particle/HugeExplosionParticle$Provider + f Lgdi; a field_17816 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3038 createParticle + m (Lgdi;)V +c gcg net/minecraft/class_689 net/minecraft/client/particle/HugeExplosionSeedParticle + m (Lfzf;DDD)V +c gcg$a net/minecraft/class_689$class_690 net/minecraft/client/particle/HugeExplosionSeedParticle$Provider + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3037 createParticle + m ()V +c gch net/minecraft/class_693 net/minecraft/client/particle/ItemPickupParticle + f Lbsr; D field_3823 itemEntity + f Lbsr; E field_3821 target + f I F field_3826 life + f Lgkh; G field_3824 entityRenderDispatcher + f D H field_47684 targetX + f D I field_47685 targetY + f D J field_47686 targetZ + f D K field_47687 targetXOld + f D L field_47688 targetYOld + f D M field_47689 targetZOld + f I a field_32656 LIFE_TIME + f Lgff; b field_20944 renderBuffers + m (Lbsr;)Lbsr; a method_29358 getSafeCopy + m ()V c method_55617 updatePosition + m ()V d method_55618 saveOldPosition + m (Lgkh;Lgff;Lfzf;Lbsr;Lbsr;)V + m (Lgkh;Lgff;Lfzf;Lbsr;Lbsr;Lexc;)V +c gci net/minecraft/class_696 net/minecraft/client/particle/LargeSmokeParticle + m (Lfzf;DDDDDDLgdi;)V +c gci$a net/minecraft/class_696$class_697 net/minecraft/client/particle/LargeSmokeParticle$Provider + f Lgdi; a field_17817 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3040 createParticle + m (Lgdi;)V +c gcj net/minecraft/class_694 net/minecraft/client/particle/LavaParticle + m (Lfzf;DDD)V +c gcj$a net/minecraft/class_694$class_695 net/minecraft/client/particle/LavaParticle$Provider + f Lgdi; a field_17818 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3039 createParticle + m (Lgdi;)V +c gck net/minecraft/class_700 net/minecraft/client/particle/MobAppearanceParticle + f Lfwg; a field_21793 model + f Lgfh; b field_21792 renderType + m (Lfzf;DDD)V +c gck$a net/minecraft/class_700$class_701 net/minecraft/client/particle/MobAppearanceParticle$Provider + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3042 createParticle + m ()V +c gcl net/minecraft/class_3998 net/minecraft/client/particle/NoRenderParticle + m (Lfzf;DDD)V + m (Lfzf;DDDDDD)V +c gcm net/minecraft/class_698 net/minecraft/client/particle/NoteParticle + m (Lfzf;DDDD)V +c gcm$a net/minecraft/class_698$class_699 net/minecraft/client/particle/NoteParticle$Provider + f Lgdi; a field_17819 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3041 createParticle + m (Lgdi;)V +c gcn net/minecraft/class_703 net/minecraft/client/particle/Particle + f F A field_3857 oRoll + f F B field_28786 friction + f Z C field_28787 speedUpWhenYMotionIsBlocked + f Lewx; D field_3872 bb + f Z E field_21507 stoppedByCollision + f Lewx; a field_3860 INITIAL_AABB + f D b field_36193 MAXIMUM_COLLISION_VELOCITY_SQUARED + f Lfzf; c field_3851 level + f D d field_3858 xo + f D e field_3838 yo + f D f field_3856 zo + f D g field_3874 x + f D h field_3854 y + f D i field_3871 z + f D j field_3852 xd + f D k field_3869 yd + f D l field_3850 zd + f Z m field_3845 onGround + f Z n field_3862 hasPhysics + f Z o field_3843 removed + f F p field_3849 bbWidth + f F q field_3867 bbHeight + f Layw; r field_3840 random + f I s field_3866 age + f I t field_3847 lifetime + f F u field_3844 gravity + f F v field_3861 rCol + f F w field_3842 gCol + f F x field_3859 bCol + f F y field_3841 alpha + f F z field_3839 roll + m ()V a method_3070 tick + m (DDD)V a method_3069 move + m (F)I a method_3068 getLightColor + m (FFF)V a method_3084 setColor + m (I)V a method_3077 setLifetime + m (Lewx;)V a method_3067 setBoundingBox + m (Lfbm;Lffy;F)V a method_3074 render + m ()Lgcr; b method_18122 getRenderType + m (DDD)V b method_34753 setParticleSpeed + m (FF)V b method_3080 setSize + m (DDD)V c method_3063 setPos + m (F)Lgcn; c method_3075 setPower + m (F)Lgcn; d method_3087 scale + m (F)V e method_3083 setAlpha + m ()I j method_3082 getLifetime + m ()V k method_3085 remove + m ()V l method_3072 setLocationFromBoundingbox + m ()Z m method_3086 isAlive + m ()Lewx; n method_3064 getBoundingBox + m ()Ljava/util/Optional; o method_34019 getParticleGroup + m (Lfzf;DDD)V + m (Lfzf;DDDDDD)V + m ()V +c gcn$a net/minecraft/class_703$class_9213 net/minecraft/client/particle/Particle$LifetimeAlpha + f Lgcn$a; a field_48941 ALWAYS_OPAQUE + f F b comp_2321 startAlpha + f F c comp_2322 endAlpha + f F d comp_2323 startAtNormalizedAge + f F e comp_2324 endAtNormalizedAge + m ()Z a method_56833 isOpaque + m (IIF)F a method_56834 currentAlphaForAge + m ()F b comp_2321 startAlpha + m ()F c comp_2322 endAlpha + m ()F d comp_2323 startAtNormalizedAge + m ()F e comp_2324 endAtNormalizedAge + m (FFFF)V + m ()V +c gco net/minecraft/class_4089 net/minecraft/client/particle/ParticleDescription + f Ljava/util/List; a field_18299 textures + m ()Ljava/util/List; a method_18826 getTextures + m (Lcom/google/gson/JsonElement;)Ljava/lang/String; a method_18827 method_18827 + m (Lcom/google/gson/JsonObject;)Lgco; a method_18828 fromJson + m (Ljava/util/List;)V +c gcp net/minecraft/class_702 net/minecraft/client/particle/ParticleEngine + f Lfzf; a field_3834 level + f Lorg/slf4j/Logger; b field_40505 LOGGER + f Lakk; c field_40506 PARTICLE_LISTER + f Lakr; d field_41385 PARTICLES_ATLAS_INFO + f I e field_32657 MAX_PARTICLES_PER_LAYER + f Ljava/util/List; f field_17820 RENDER_ORDER + f Ljava/util/Map; g field_3830 particles + f Ljava/util/Queue; h field_3837 trackingEmitters + f Lgqm; i field_3831 textureManager + f Layw; j field_3832 random + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; k field_3835 providers + f Ljava/util/Queue; l field_3836 particlesToAdd + f Ljava/util/Map; m field_18300 spriteSets + f Lgqk; n field_18301 textureAtlas + f Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; o field_29072 trackedParticleCounts + m ()V a method_18829 close + m (Lakr;Lauc;)Ljava/util/Optional; a method_18836 loadParticleDescription + m (Laue;)Ljava/util/Map; a method_45771 method_45771 + m (Lbnf;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Void;)V a method_45766 method_45766 + m (Lbsr;Llk;)V a method_3061 createTrackingEmitter + m (Lbsr;Llk;I)V a method_3051 createTrackingEmitter + m (Lfzf;)V a method_3045 setLevel + m (Lgcn;)V a method_3058 add + m (Lgcq$a;Lgdi;)Lgcq; a method_49336 method_49336 + m (Lgcq$a;Lgdi;Llk;Lfzf;DDDDDD)Lgcn; a method_49337 method_49337 + m (Lgcr;)Ljava/util/Queue; a method_18125 method_18125 + m (Lgcr;Ljava/util/Queue;)V a method_18126 method_18126 + m (Lgdi;)Lgcq; a method_49915 method_49915 + m (Lgdi;Llq;Lfzf;DDDDDD)Lgcn; a method_49916 method_49916 + m (Lgey;Lffy;F)V a method_3049 render + m (Lgqg$a;Ljava/util/Set;Lgql;Lgcp$a;)V a method_45767 method_45767 + m (Ljava/util/Collection;)V a method_3048 tickParticleList + m (Ljava/util/List;Ljava/util/concurrent/Executor;Lakr;Lauc;)V a method_45768 method_45768 + m (Ljava/util/concurrent/Executor;Ljava/util/Map;)Ljava/util/concurrent/CompletionStage; a method_45772 method_45772 + m (Ljd;Ldtc;)V a method_3046 destroy + m (Ljd;Ldtc;DDDDDD)V a method_34020 method_34020 + m (Ljd;Lji;)V a method_3054 crack + m (Llj;)Z a method_34021 hasSpaceInParticleLimit + m (Llj;I)V a method_34022 updateCount + m (Llk;DDDDDD)Lgcn; a method_3056 createParticle + m (Lll;Lgcp$c;)V a method_18834 register + m (Lll;Lgcq$a;)V a method_49338 register + m (Lll;Lgcq;)V a method_3043 register + m ()V b method_3057 tick + m (Lakr;Lauc;)Lgcp$a; b method_45770 method_45770 + m (Lgcn;)V b method_3059 tickParticle + m (Llj;)V b method_34023 method_34023 + m (Llk;DDDDDD)Lgcn; b method_3055 makeParticle + m ()Ljava/lang/String; d method_3052 countParticles + m ()V e method_3062 registerProviders + m ()V f method_48015 clearParticles + m (Lfzf;Lgqm;)V + m ()V +c gcp$a net/minecraft/class_702$class_7759 net/minecraft/client/particle/ParticleEngine$1ParticleDefinition + f Lakr; a comp_1036 id + f Ljava/util/Optional; b comp_1037 sprites + m ()Lakr; a comp_1036 id + m ()Ljava/util/Optional; b comp_1037 sprites + m (Lakr;Ljava/util/Optional;)V +c gcp$b net/minecraft/class_702$class_4090 net/minecraft/client/particle/ParticleEngine$MutableSpriteSet + f Ljava/util/List; a field_18303 sprites + m (Ljava/util/List;)V a method_18838 rebind + m ()V +c gcp$c net/minecraft/class_702$class_4091 net/minecraft/client/particle/ParticleEngine$SpriteParticleRegistration +c gcq net/minecraft/class_707 net/minecraft/client/particle/ParticleProvider + m (Llk;Lfzf;DDDDDD)Lgcn; createParticle method_3090 createParticle +c gcq$a net/minecraft/class_707$class_8187 net/minecraft/client/particle/ParticleProvider$Sprite +c gcr net/minecraft/class_3999 net/minecraft/client/particle/ParticleRenderType + f Lgcr; a field_17827 TERRAIN_SHEET + f Lgcr; b field_17828 PARTICLE_SHEET_OPAQUE + f Lgcr; c field_17829 PARTICLE_SHEET_TRANSLUCENT + f Lgcr; d field_17830 PARTICLE_SHEET_LIT + f Lgcr; e field_17831 CUSTOM + f Lgcr; f field_17832 NO_RENDER + m (Lfbk;Lgqm;)Lfbd; a method_18130 begin + m ()V +c gcr$1 net/minecraft/class_3999$1 net/minecraft/client/particle/ParticleRenderType$1 + m ()V +c gcr$2 net/minecraft/class_3999$2 net/minecraft/client/particle/ParticleRenderType$2 + m ()V +c gcr$3 net/minecraft/class_3999$3 net/minecraft/client/particle/ParticleRenderType$3 + m ()V +c gcr$4 net/minecraft/class_3999$4 net/minecraft/client/particle/ParticleRenderType$4 + m ()V +c gcr$5 net/minecraft/class_3999$5 net/minecraft/client/particle/ParticleRenderType$5 + m ()V +c gcr$6 net/minecraft/class_3999$6 net/minecraft/client/particle/ParticleRenderType$6 + m ()V +c gcs net/minecraft/class_704 net/minecraft/client/particle/PlayerCloudParticle + f Lgdi; a field_17862 sprites + m (Lfzf;DDDDDDLgdi;)V +c gcs$a net/minecraft/class_704$class_705 net/minecraft/client/particle/PlayerCloudParticle$Provider + f Lgdi; a field_17863 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3088 createParticle + m (Lgdi;)V +c gcs$b net/minecraft/class_704$class_706 net/minecraft/client/particle/PlayerCloudParticle$SneezeProvider + f Lgdi; a field_17864 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3089 createParticle + m (Lgdi;)V +c gct net/minecraft/class_709 net/minecraft/client/particle/PortalParticle + f D F field_3884 zStart + f D a field_3886 xStart + f D b field_3885 yStart + m (Lfzf;DDDDDD)V +c gct$a net/minecraft/class_709$class_710 net/minecraft/client/particle/PortalParticle$Provider + f Lgdi; a field_17865 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3094 createParticle + m (Lgdi;)V +c gcu net/minecraft/class_4974 net/minecraft/client/particle/ReversePortalParticle + m (Lfzf;DDDDDD)V +c gcu$a net/minecraft/class_4974$class_4975 net/minecraft/client/particle/ReversePortalParticle$ReversePortalProvider + f Lgdi; a field_23188 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_26268 createParticle + m (Lgdi;)V +c gcv net/minecraft/class_4955 net/minecraft/client/particle/RisingParticle + m (Lfzf;DDDDDD)V +c gcw net/minecraft/class_7206 net/minecraft/client/particle/SculkChargeParticle + f Lgdi; a field_37959 sprites + m (Lfzf;DDDDDDLgdi;)V +c gcw$a net/minecraft/class_7206$class_7207 net/minecraft/client/particle/SculkChargeParticle$Provider + f Lgdi; a comp_620 sprite + m ()Lgdi; a comp_620 sprite + m (Llo;Lfzf;DDDDDD)Lgcn; a method_41946 createParticle + m (Lgdi;)V +c gcx net/minecraft/class_7208 net/minecraft/client/particle/SculkChargePopParticle + f Lgdi; a field_37960 sprites + m (Lfzf;DDDDDDLgdi;)V +c gcx$a net/minecraft/class_7208$class_7209 net/minecraft/client/particle/SculkChargePopParticle$Provider + f Lgdi; a comp_621 sprite + m ()Lgdi; a comp_621 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_41947 createParticle + m (Lgdi;)V +c gcy net/minecraft/class_7281 net/minecraft/client/particle/ShriekParticle + f F a field_38332 MAGICAL_X_ROT + f I b field_38333 delay + m (Lfzf;DDDI)V +c gcy$a net/minecraft/class_7281$class_7282 net/minecraft/client/particle/ShriekParticle$Provider + f Lgdi; a field_38336 sprite + m (Llp;Lfzf;DDDDDD)Lgcn; a method_42587 createParticle + m (Lgdi;)V +c gcz net/minecraft/class_708 net/minecraft/client/particle/SimpleAnimatedParticle + f F F field_3877 fadeG + f F G field_3876 fadeB + f Z H field_3880 hasFade + f Lgdi; a field_17866 sprites + f F b field_3878 fadeR + m (I)V b method_3093 setColor + m (I)V c method_3092 setFadeColor + m (Lfzf;DDDLgdi;F)V +c gda net/minecraft/class_3940 net/minecraft/client/particle/SingleQuadParticle + f F D field_17867 quadSize + m (Lfbm;Lffy;Lorg/joml/Quaternionf;F)V a method_60373 renderRotatedQuad + m (Lfbm;Lorg/joml/Quaternionf;FFFF)V a method_60374 renderRotatedQuad + m (Lfbm;Lorg/joml/Quaternionf;FFFFFFFFI)V a method_60375 renderVertex + m (F)F b method_18132 getQuadSize + m ()F c method_18133 getU0 + m ()F d method_18134 getU1 + m ()F e method_18135 getV0 + m ()F f method_18136 getV1 + m ()Lgda$a; p method_55245 getFacingCameraMode + m (Lfzf;DDD)V + m (Lfzf;DDDDDD)V +c gda$a net/minecraft/class_3940$class_8981 net/minecraft/client/particle/SingleQuadParticle$FacingCameraMode + f Lgda$a; a field_47457 LOOKAT_XYZ + f Lgda$a; b field_47458 LOOKAT_Y + m (Lorg/joml/Quaternionf;Lffy;F)V a method_55246 method_55246 + m (Lorg/joml/Quaternionf;Lffy;F)V b method_55247 method_55247 + m ()V +c gdb net/minecraft/class_717 net/minecraft/client/particle/SmokeParticle + m (Lfzf;DDDDDDFLgdi;)V +c gdb$a net/minecraft/class_717$class_718 net/minecraft/client/particle/SmokeParticle$Provider + f Lgdi; a field_17869 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3101 createParticle + m (Lgdi;)V +c gdc net/minecraft/class_5685 net/minecraft/client/particle/SnowflakeParticle + f Lgdi; a field_28003 sprites + m (Lfzf;DDDDDDLgdi;)V +c gdc$a net/minecraft/class_5685$class_5686 net/minecraft/client/particle/SnowflakeParticle$Provider + f Lgdi; a field_28004 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_32690 createParticle + m (Lgdi;)V +c gdd net/minecraft/class_7452 net/minecraft/client/particle/SonicBoomParticle + m (Lfzf;DDDDLgdi;)V +c gdd$a net/minecraft/class_7452$class_7453 net/minecraft/client/particle/SonicBoomParticle$Provider + f Lgdi; a field_39196 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_43785 createParticle + m (Lgdi;)V +c gde net/minecraft/class_4956 net/minecraft/client/particle/SoulParticle + f Z a field_37961 isGlowing + f Lgdi; b field_23091 sprites + m (Lfzf;DDDDDDLgdi;)V +c gde$a net/minecraft/class_4956$class_7210 net/minecraft/client/particle/SoulParticle$EmissiveProvider + f Lgdi; a field_37962 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_41948 createParticle + m (Lgdi;)V +c gde$b net/minecraft/class_4956$class_4957 net/minecraft/client/particle/SoulParticle$Provider + f Lgdi; a field_23092 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_25994 createParticle + m (Lgdi;)V +c gdf net/minecraft/class_711 net/minecraft/client/particle/SpellParticle + f F F field_51440 originalAlpha + f Layw; a field_3888 RANDOM + f Lgdi; b field_17870 sprites + m ()Z g method_37102 isCloseToScopingPlayer + m (Lfzf;DDDDDDLgdi;)V + m ()V +c gdf$a net/minecraft/class_711$class_713 net/minecraft/client/particle/SpellParticle$InstantProvider + f Lgdi; a field_17872 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3097 createParticle + m (Lgdi;)V +c gdf$b net/minecraft/class_711$class_714 net/minecraft/client/particle/SpellParticle$MobEffectProvider + f Lgdi; a field_17873 sprite + m (Llf;Lfzf;DDDDDD)Lgcn; a method_3098 createParticle + m (Lgdi;)V +c gdf$c net/minecraft/class_711$class_715 net/minecraft/client/particle/SpellParticle$Provider + f Lgdi; a field_17874 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3099 createParticle + m (Lgdi;)V +c gdf$d net/minecraft/class_711$class_716 net/minecraft/client/particle/SpellParticle$WitchProvider + f Lgdi; a field_17875 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3100 createParticle + m (Lgdi;)V +c gdg net/minecraft/class_721 net/minecraft/client/particle/SpitParticle + m (Lfzf;DDDDDDLgdi;)V +c gdg$a net/minecraft/class_721$class_722 net/minecraft/client/particle/SpitParticle$Provider + f Lgdi; a field_17876 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3103 createParticle + m (Lgdi;)V +c gdh net/minecraft/class_719 net/minecraft/client/particle/SplashParticle + m (Lfzf;DDDDDD)V +c gdh$a net/minecraft/class_719$class_720 net/minecraft/client/particle/SplashParticle$Provider + f Lgdi; a field_17877 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3102 createParticle + m (Lgdi;)V +c gdi net/minecraft/class_4002 net/minecraft/client/particle/SpriteSet + m (II)Lgql; a method_18138 get + m (Layw;)Lgql; a method_18139 get +c gdj net/minecraft/class_725 net/minecraft/client/particle/SquidInkParticle + m (Lfzf;DDDDDDILgdi;)V +c gdj$a net/minecraft/class_725$class_5788 net/minecraft/client/particle/SquidInkParticle$GlowInkProvider + f Lgdi; a field_28460 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_33427 createParticle + m (Lgdi;)V +c gdj$b net/minecraft/class_725$class_726 net/minecraft/client/particle/SquidInkParticle$Provider + f Lgdi; a field_17878 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3105 createParticle + m (Lgdi;)V +c gdk net/minecraft/class_723 net/minecraft/client/particle/SuspendedParticle + m (Lfzf;Lgdi;DDD)V + m (Lfzf;Lgdi;DDDDDD)V +c gdk$a net/minecraft/class_723$class_4795 net/minecraft/client/particle/SuspendedParticle$CrimsonSporeProvider + f Lgdi; a field_22238 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_24464 createParticle + m (Lgdi;)V +c gdk$b net/minecraft/class_723$class_5877 net/minecraft/client/particle/SuspendedParticle$SporeBlossomAirProvider + f Lgdi; a field_29073 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_34024 createParticle + m (Lgdi;)V +c gdk$b$1 net/minecraft/class_723$class_5877$1 net/minecraft/client/particle/SuspendedParticle$SporeBlossomAirProvider$1 + m (Lgdk$b;Lfzf;Lgdi;DDDDDD)V +c gdk$c net/minecraft/class_723$class_4796 net/minecraft/client/particle/SuspendedParticle$UnderwaterProvider + f Lgdi; a field_22239 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_24465 createParticle + m (Lgdi;)V +c gdk$d net/minecraft/class_723$class_4797 net/minecraft/client/particle/SuspendedParticle$WarpedSporeProvider + f Lgdi; a field_22240 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_24466 createParticle + m (Lgdi;)V +c gdl net/minecraft/class_729 net/minecraft/client/particle/SuspendedTownParticle + m (Lfzf;DDDDDD)V +c gdl$a net/minecraft/class_729$class_3991 net/minecraft/client/particle/SuspendedTownParticle$ComposterFillProvider + f Lgdi; a field_17880 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_18044 createParticle + m (Lgdi;)V +c gdl$b net/minecraft/class_729$class_730 net/minecraft/client/particle/SuspendedTownParticle$DolphinSpeedProvider + f Lgdi; a field_17881 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3110 createParticle + m (Lgdi;)V +c gdl$c net/minecraft/class_729$class_8254 net/minecraft/client/particle/SuspendedTownParticle$EggCrackProvider + f Lgdi; a field_43374 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_49917 createParticle + m (Lgdi;)V +c gdl$d net/minecraft/class_729$class_731 net/minecraft/client/particle/SuspendedTownParticle$HappyVillagerProvider + f Lgdi; a field_17882 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3111 createParticle + m (Lgdi;)V +c gdl$e net/minecraft/class_729$class_732 net/minecraft/client/particle/SuspendedTownParticle$Provider + f Lgdi; a field_17883 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3112 createParticle + m (Lgdi;)V +c gdm net/minecraft/class_727 net/minecraft/client/particle/TerrainParticle + f F F field_17885 vo + f Ljd; a field_3891 pos + f F b field_17884 uo + m (Lle;Lfzf;DDDDDD)Lgdm; a method_58750 createTerrainParticle + m (Lfzf;DDDDDDLdtc;)V + m (Lfzf;DDDDDDLdtc;Ljd;)V +c gdm$a net/minecraft/class_727$class_9482 net/minecraft/client/particle/TerrainParticle$DustPillarProvider + m (Lle;Lfzf;DDDDDD)Lgcn; a method_58751 createParticle + m ()V +c gdm$b net/minecraft/class_727$class_728 net/minecraft/client/particle/TerrainParticle$Provider + m (Lle;Lfzf;DDDDDD)Lgcn; a method_3109 createParticle + m ()V +c gdn net/minecraft/class_4003 net/minecraft/client/particle/TextureSheetParticle + f Lgql; E field_17886 sprite + m (Lgdi;)V a method_18140 pickSprite + m (Lgql;)V a method_18141 setSprite + m (Lgdi;)V b method_18142 setSpriteFromAge + m (Lfzf;DDD)V + m (Lfzf;DDDDDD)V +c gdo net/minecraft/class_734 net/minecraft/client/particle/TotemParticle + m (Lfzf;DDDDDDLgdi;)V +c gdo$a net/minecraft/class_734$class_735 net/minecraft/client/particle/TotemParticle$Provider + f Lgdi; a field_17887 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3113 createParticle + m (Lgdi;)V +c gdp net/minecraft/class_733 net/minecraft/client/particle/TrackingEmitter + f I D field_3895 lifeTime + f Llk; E field_3893 particleType + f Lbsr; a field_3894 entity + f I b field_3896 life + m (Lfzf;Lbsr;Llk;)V + m (Lfzf;Lbsr;Llk;I)V + m (Lfzf;Lbsr;Llk;ILexc;)V +c gdq net/minecraft/class_8982 net/minecraft/client/particle/TrialSpawnerDetectionParticle + f Lgdi; a field_47459 sprites + f I b field_47460 BASE_LIFETIME + m (Lfzf;DDDDDDFLgdi;)V +c gdq$a net/minecraft/class_8982$class_8983 net/minecraft/client/particle/TrialSpawnerDetectionParticle$Provider + f Lgdi; a field_47461 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_55248 createParticle + m (Lgdi;)V +c gdr net/minecraft/class_5737 net/minecraft/client/particle/VibrationSignalParticle + f F F field_28248 rotO + f F G field_40507 pitch + f F H field_40508 pitchO + f Ldyd; a field_28249 target + f F b field_28250 rot + m (Lfzf;DDDLdyd;I)V +c gdr$a net/minecraft/class_5737$class_5738 net/minecraft/client/particle/VibrationSignalParticle$Provider + f Lgdi; a field_28251 sprite + m (Llr;Lfzf;DDDDDD)Lgcn; a method_33080 createParticle + m (Lgdi;)V +c gds net/minecraft/class_738 net/minecraft/client/particle/WakeParticle + f Lgdi; a field_17888 sprites + m (Lfzf;DDDDDDLgdi;)V +c gds$a net/minecraft/class_738$class_739 net/minecraft/client/particle/WakeParticle$Provider + f Lgdi; a field_17889 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3115 createParticle + m (Lgdi;)V +c gdt net/minecraft/class_736 net/minecraft/client/particle/WaterCurrentDownParticle + f F a field_3897 angle + m (Lfzf;DDD)V +c gdt$a net/minecraft/class_736$class_737 net/minecraft/client/particle/WaterCurrentDownParticle$Provider + f Lgdi; a field_17890 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3114 createParticle + m (Lgdi;)V +c gdu net/minecraft/class_740 net/minecraft/client/particle/WaterDropParticle + m (Lfzf;DDD)V +c gdu$a net/minecraft/class_740$class_741 net/minecraft/client/particle/WaterDropParticle$Provider + f Lgdi; a field_17891 sprite + m (Llq;Lfzf;DDDDDD)Lgcn; a method_3116 createParticle + m (Lgdi;)V +c gdv net/minecraft/class_5165 net/minecraft/client/particle/WhiteAshParticle + f I a field_32658 COLOR_RGB24 + m (Lfzf;DDDDDDFLgdi;)V +c gdv$a net/minecraft/class_5165$class_5166 net/minecraft/client/particle/WhiteAshParticle$Provider + f Lgdi; a field_23936 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_27150 createParticle + m (Lgdi;)V +c gdw net/minecraft/class_8899 net/minecraft/client/particle/WhiteSmokeParticle + f I a field_46898 COLOR_RGB24 + m (Lfzf;DDDDDDFLgdi;)V +c gdw$a net/minecraft/class_8899$class_8900 net/minecraft/client/particle/WhiteSmokeParticle$Provider + f Lgdi; a field_46899 sprites + m (Llq;Lfzf;DDDDDD)Lgcn; a method_54635 createParticle + m (Lgdi;)V +c gdx net/minecraft/class_6240 net/minecraft/client/particle/package-info +c gdy net/minecraft/class_742 net/minecraft/client/player/AbstractClientPlayer + f Lexc; b field_42906 deltaMovementOnPreviousTick + f F c field_3900 elytraRotX + f F d field_3899 elytraRotY + f F e field_3898 elytraRotZ + f Lfzf; f field_17892 clientLevel + f Lfzq; g field_3901 playerInfo + m (F)Lexc; G method_49339 getDeltaMovementLerped + m ()Lfzq; a method_3123 getPlayerInfo + m ()Lgrl; b method_52814 getSkin + m ()F c method_3118 getFieldOfViewModifier + m (Lfzf;Lcom/mojang/authlib/GameProfile;)V +c gdz net/minecraft/class_744 net/minecraft/client/player/Input + f F a field_3907 leftImpulse + f F b field_3905 forwardImpulse + f Z c field_3910 up + f Z d field_3909 down + f Z e field_3908 left + f Z f field_3906 right + f Z g field_3904 jumping + f Z h field_3903 shiftKeyDown + m ()Lexb; a method_3128 getMoveVector + m (ZF)V a method_3129 tick + m ()Z b method_20622 hasForwardImpulse + m ()V +c gea net/minecraft/class_743 net/minecraft/client/player/KeyboardInput + f Lfgs; i field_3902 options + m (ZZ)F a method_40218 calculateImpulse + m (Lfgs;)V +c geb net/minecraft/class_746 net/minecraft/client/player/LocalPlayer + f Lfgo; cA field_3937 minecraft + f I cB field_3935 sprintTriggerTime + f F cD field_3932 yBob + f F cE field_3916 xBob + f F cF field_3931 yBobO + f F cG field_3914 xBobO + f F cH field_44911 spinningEffectIntensity + f F cI field_44912 oSpinningEffectIntensity + f I cJ field_32671 POSITION_REMINDER_INTERVAL + f I cK field_32672 WATER_VISION_MAX_TIME + f I cL field_32673 WATER_VISION_QUICK_TIME + f F cM field_32674 WATER_VISION_QUICK_PERCENT + f D cN field_32675 SUFFOCATING_COLLISION_CHECK_SCALE + f D cO field_36194 MINOR_COLLISION_ANGLE_THRESHOLD_RADIAN + f Lawa; cP field_3928 stats + f Lfga; cQ field_3930 recipeBook + f Ljava/util/List; cR field_3933 ambientSoundHandlers + f I cS field_3912 permissionLevel + f D cT field_3926 xLast + f D cU field_3940 yLast1 + f D cV field_3924 zLast + f F cW field_3941 yRotLast + f F cX field_3925 xRotLast + f Z cY field_3920 lastOnGround + f Z cZ field_23093 crouching + f Lgdz; cz field_3913 input + f Z da field_3936 wasShiftKeyDown + f Z db field_3919 wasSprinting + f I dc field_3923 positionReminder + f Z dd field_3918 flashOnSetHealth + f I de field_3938 jumpRidingTicks + f F df field_3922 jumpRidingScale + f Z dg field_3915 startedUsingItem + f Lbqq; dh field_3945 usingItemHand + f Z di field_3942 handsBusy + f Z dj field_3927 autoJumpEnabled + f I dk field_3934 autoJumpTime + f Z dl field_3939 wasFallFlying + f I dm field_3917 waterVisionTime + f Z dn field_20663 showDeathScreen + f Z do field_46188 doLimitedCrafting + f Lorg/slf4j/Logger; g field_39078 LOGGER + f Lfzg; h field_3944 connection + m ()Ldlr$a; A method_60886 getActivePortalLocalTransition + m ()Z B method_3144 isHandsBusy + m ()Z C method_3149 isAutoJumpEnabled + m ()F D method_3140 getWaterVision + m ()V E method_3136 sendPosition + m ()V F method_46742 sendIsSprintingIfNeeded + m ()Z H method_22119 canAutoJump + m (F)V H method_3138 hurtTo + m ()Z I method_22120 isMoving + m ()Z J method_48300 canStartSprinting + m ()Z L method_20623 hasEnoughImpulseToStartSprinting + m ()Z N method_46743 hasEnoughFoodToStartSprinting + m (FII)V a method_3145 setExperienceValues + m (I)V a method_3147 setPermissionLevel + m (Lczb;)V a method_3141 removeRecipeHighlight + m (Ldct;)V a method_51889 onGameModeChanged + m (Lexv;)Ljava/util/stream/Stream; a method_3139 method_3139 + m (Z)Z a method_7290 drop + m (Z)V b method_22420 setShowDeathScreen + m (DD)V c method_30673 moveTowardsClosestSpace + m (Ljd;)Z c method_30674 suffocatesAt + m ()F d method_26269 getCurrentMood + m (Lbsr;)Z d method_48301 vehicleCanSprint + m ()V e method_3137 clientSideCloseContainer + m (FF)V g method_3148 updateAutoJump + m ()V h method_3133 sendRidingJump + m ()V i method_3132 sendOpenInventory + m ()Lawa; j method_3143 getStats + m ()Lfga; m method_3130 getRecipeBook + m ()Z o method_22419 shouldShowDeathScreen + m ()Z p method_53847 getDoLimitedCrafting + m ()Lbty; q method_45773 jumpableVehicle + m ()F v method_3151 getJumpRidingScale + m ()Z w method_20303 isMovingSlowly + m ()Z x method_3134 isControlledCamera + m (Z)V x method_53848 setDoLimitedCrafting + m ()V y method_33689 resetPos + m (Z)V y method_60887 handleConfusionTransitionEffect + m (Lfgo;Lfzf;Lfzg;Lawa;Lfga;ZZ)V + m ()V +c gec net/minecraft/class_745 net/minecraft/client/player/RemotePlayer + f Lexc; g field_42907 lerpDeltaMovement + f I h field_42908 lerpDeltaMovementSteps + m (Lfzf;Lcom/mojang/authlib/GameProfile;)V +c ged net/minecraft/class_748 net/minecraft/client/player/inventory/Hotbar + f Lcom/mojang/serialization/Codec; a field_48942 CODEC + f Lorg/slf4j/Logger; b field_48943 LOGGER + f I c field_48944 SIZE + f Lcom/mojang/serialization/DynamicOps; d field_48945 DEFAULT_OPS + f Lcom/mojang/serialization/Dynamic; e field_48946 EMPTY_STACK + f Ljava/util/List; f field_48947 items + m ()Z a method_56835 isEmpty + m (Lcmw;Lka;)V a method_56836 storeFrom + m (Lcom/mojang/serialization/Dynamic;)Z a method_56837 isEmpty + m (Lged;)Ljava/util/List; a method_56838 method_56838 + m (Ljava/lang/String;)V a method_56841 method_56841 + m (Ljava/util/List;)Lcom/mojang/serialization/DataResult; a method_56842 method_56842 + m (Ljo$a;)Ljava/util/List; a method_56839 load + m (Ljo$a;Lcom/mojang/serialization/Dynamic;)Lcuq; a method_56840 method_56840 + m (Luy;)Lcom/mojang/serialization/Dynamic; a method_56843 method_56843 + m (Ljava/lang/String;)V b method_56844 method_56844 + m (Ljava/util/List;)V + m ()V + m ()V +c gee net/minecraft/class_6241 net/minecraft/client/player/inventory/package-info +c gef net/minecraft/class_6242 net/minecraft/client/player/package-info +c geg net/minecraft/class_6412 net/minecraft/client/profiling/ClientMetricsSamplersProvider + f Lgex; a field_33959 levelRenderer + f Ljava/util/Set; b field_33960 samplers + f Lbou; c field_33961 samplerFactory + m ()V a method_37309 registerStaticSamplers + m (Ljava/util/function/LongSupplier;Lgex;)V +c geh net/minecraft/class_6244 net/minecraft/client/profiling/package-info +c gei net/minecraft/class_8496 net/minecraft/client/quickplay/QuickPlay + f Lwz; a field_44554 ERROR_TITLE + f Lwz; b field_44555 INVALID_IDENTIFIER + f Lwz; c field_44556 REALM_CONNECT + f Lwz; d field_44557 REALM_PERMISSION + f Lwz; e field_44558 TO_TITLE + f Lwz; f field_44559 TO_WORLD_LIST + f Lwz; g field_44560 TO_REALMS_LIST + m (JLfcp;)Z a method_51258 method_51258 + m (Lfgo;)V a method_54636 method_54636 + m (Lfgo;Lfby;Ljava/lang/String;)V a method_51259 joinRealmsWorld + m (Lfgo;Lfua$c;Lfby;)V a method_51260 connect + m (Lfgo;Ljava/lang/String;)V a method_51261 joinSingleplayerWorld + m (Lfgo;Ljava/lang/String;)V b method_51263 joinMultiplayerWorld + m ()V + m ()V +c gej net/minecraft/class_8497 net/minecraft/client/quickplay/QuickPlayLog + f Lgej; a field_44561 INACTIVE + f Lorg/slf4j/Logger; b field_44562 LOGGER + f Lcom/google/gson/Gson; c field_44563 GSON + f Ljava/nio/file/Path; d field_44564 path + f Lgej$b; e field_44565 worldData + m (Lcom/google/gson/JsonElement;)V a method_51264 method_51264 + m (Lfgo;)V a method_51265 log + m (Lgej$c;Ljava/lang/String;Ljava/lang/String;)V a method_51266 setWorldData + m (Ljava/lang/String;)Lgej; a method_51267 of + m (Lfgo;)V b method_51268 method_51268 + m (Ljava/lang/String;)V + m ()V +c gej$1 net/minecraft/class_8497$1 net/minecraft/client/quickplay/QuickPlayLog$1 + m (Ljava/lang/String;)V +c gej$a net/minecraft/class_8497$class_8498 net/minecraft/client/quickplay/QuickPlayLog$QuickPlayEntry + f Lcom/mojang/serialization/Codec; a field_44566 CODEC + f Lgej$b; b comp_1480 quickPlayWorld + f Ljava/time/Instant; c comp_1481 lastPlayedTime + f Ldct; d comp_1482 gamemode + m ()Lgej$b; a comp_1480 quickPlayWorld + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51269 method_51269 + m ()Ljava/time/Instant; b comp_1481 lastPlayedTime + m ()Ldct; c comp_1482 gamemode + m (Lgej$b;Ljava/time/Instant;Ldct;)V + m ()V +c gej$b net/minecraft/class_8497$class_8499 net/minecraft/client/quickplay/QuickPlayLog$QuickPlayWorld + f Lcom/mojang/serialization/MapCodec; a field_44567 MAP_CODEC + f Lgej$c; b comp_1483 type + f Ljava/lang/String; c comp_1484 id + f Ljava/lang/String; d comp_1485 name + m ()Lgej$c; a comp_1483 type + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_51270 method_51270 + m ()Ljava/lang/String; b comp_1484 id + m ()Ljava/lang/String; c comp_1485 name + m (Lgej$c;Ljava/lang/String;Ljava/lang/String;)V + m ()V +c gej$c net/minecraft/class_8497$class_8500 net/minecraft/client/quickplay/QuickPlayLog$Type + f Lgej$c; a field_44568 SINGLEPLAYER + f Lgej$c; b field_44569 MULTIPLAYER + f Lgej$c; c field_44570 REALMS + f Lcom/mojang/serialization/Codec; d field_44571 CODEC + f Ljava/lang/String; e field_44572 name + f [Lgej$c; f field_44573 $VALUES + m ()[Lgej$c; a method_51271 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gek net/minecraft/class_8501 net/minecraft/client/quickplay/package-info +c gel net/minecraft/class_1163 net/minecraft/client/renderer/BiomeColors + f Ldch; a field_5665 GRASS_COLOR_RESOLVER + f Ldch; b field_5664 FOLIAGE_COLOR_RESOLVER + f Ldch; c field_5666 WATER_COLOR_RESOLVER + m (Ldbz;Ljd;)I a method_4962 getAverageGrassColor + m (Ldbz;Ljd;Ldch;)I a method_4965 getAverageColor + m (Lddw;DD)I a method_23790 method_23790 + m (Ldbz;Ljd;)I b method_4966 getAverageFoliageColor + m (Lddw;DD)I b method_23791 method_23791 + m (Ldbz;Ljd;)I c method_4961 getAverageWaterColor + m ()V + m ()V +c gem net/minecraft/class_756 net/minecraft/client/renderer/BlockEntityWithoutLevelRenderer + f [Ldrr; a field_3981 SHULKER_BOXES + f Ldrr; b field_3984 DEFAULT_SHULKER_BOX + f Ldqo; c field_3976 chest + f Ldqo; d field_3978 trappedChest + f Ldrd; e field_3977 enderChest + f Ldpw; f field_3983 banner + f Ldqd; g field_3982 bed + f Ldqt; h field_3979 conduit + f Ldqx; i field_42909 decoratedPot + f Lfxb; j field_3980 shieldModel + f Lfxp; k field_3985 tridentModel + f Ljava/util/Map; l field_27737 skullModels + f Lggy; m field_27738 blockEntityRenderDispatcher + f Lfyg; n field_27739 entityModelSet + m (I)[Ldrr; a method_3165 method_3165 + m (Lcti;)Ldrr; a method_32132 method_32132 + m (Lcuq;Lcun;Lfbi;Lgez;II)V a method_3166 renderByItem + m (Lcuq;Lcxu;)V a method_57795 method_57795 + m (Lggy;Lfyg;)V + m ()V +c gen net/minecraft/class_751 net/minecraft/client/renderer/CubeMap + f I a field_32680 SIDES + f [Lakr; b field_3952 images + m (Lfgo;FFF)V a method_3156 render + m (Lgqm;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_18143 preload + m (Lakr;)V +c geo net/minecraft/class_5294 net/minecraft/client/renderer/DimensionSpecialEffects + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; a field_24609 EFFECTS + f [F b field_24610 sunriseCol + f F c field_24611 cloudLevel + f Z d field_24612 hasGround + f Lgeo$d; e field_25637 skyType + f Z f field_24613 forceBrightLightmap + f Z g field_25638 constantAmbientLight + m ()F a method_28108 getCloudHeight + m (FF)[F a method_28109 getSunriseColor + m (II)Z a method_28110 isFoggyAt + m (Ldwy;)Lgeo; a method_28111 forType + m (Lexc;F)Lexc; a method_28112 getBrightnessDependentFogColor + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectArrayMap;)V a method_29092 method_29092 + m ()Z b method_28113 hasGround + m ()Lgeo$d; c method_29992 skyType + m ()Z d method_28114 forceBrightLightmap + m ()Z e method_29993 constantAmbientLight + m (FZLgeo$d;ZZ)V + m ()V +c geo$a net/minecraft/class_5294$class_5295 net/minecraft/client/renderer/DimensionSpecialEffects$EndEffects + m ()V +c geo$b net/minecraft/class_5294$class_5296 net/minecraft/client/renderer/DimensionSpecialEffects$NetherEffects + m ()V +c geo$c net/minecraft/class_5294$class_5297 net/minecraft/client/renderer/DimensionSpecialEffects$OverworldEffects + f I a field_32681 CLOUD_LEVEL + m ()V +c geo$d net/minecraft/class_5294$class_5401 net/minecraft/client/renderer/DimensionSpecialEffects$SkyType + f Lgeo$d; a field_25639 NONE + f Lgeo$d; b field_25640 NORMAL + f Lgeo$d; c field_25641 END + f [Lgeo$d; d field_25642 $VALUES + m ()[Lgeo$d; a method_36912 $values + m (Ljava/lang/String;I)V + m ()V +c gep net/minecraft/class_280 net/minecraft/client/renderer/EffectInstance + f Ljava/lang/String; a field_32682 EFFECT_SHADER_PATH + f Lorg/slf4j/Logger; b field_1514 LOGGER + f Lfar; c field_1520 DUMMY_UNIFORM + f Z d field_32683 ALWAYS_REAPPLY + f Lgep; e field_1512 lastAppliedEffect + f I f field_1505 lastProgramId + f Ljava/util/Map; g field_1516 samplerMap + f Ljava/util/List; h field_1503 samplerNames + f Ljava/util/List; i field_1506 samplerLocations + f Ljava/util/List; j field_1515 uniforms + f Ljava/util/List; k field_1507 uniformLocations + f Ljava/util/Map; l field_1510 uniformMap + f I m field_1521 programId + f Ljava/lang/String; n field_1509 name + f Z o field_1511 dirty + f Lfas; p field_1517 blend + f Ljava/util/List; q field_1518 attributes + f Ljava/util/List; r field_1504 attributeNames + f Lfau; s field_1508 vertexProgram + f Lfau; t field_1519 fragmentProgram + m (Lauh;Lfaw$a;Ljava/lang/String;)Lfau; a method_16036 getOrCreate + m (Lcom/google/gson/JsonElement;)V a method_1276 parseSamplerNode + m (Lcom/google/gson/JsonObject;)Lfas; a method_16035 parseBlendNode + m (Ljava/lang/String;)Lfaz; a method_1271 getUniform + m (Ljava/lang/String;Ljava/util/function/IntSupplier;)V a method_1269 setSampler + m (Lcom/google/gson/JsonElement;)V b method_1272 parseUniformNode + m (Ljava/lang/String;)Lfar; b method_1275 safeGetUniform + m ()V f method_1273 clear + m ()V g method_1277 apply + m ()Ljava/lang/String; h method_35763 getName + m ()V i method_1268 updateLocations + m (Lauh;Ljava/lang/String;)V + m ()V +c geq net/minecraft/class_753 net/minecraft/client/renderer/FaceInfo + f Lgeq; a field_3965 DOWN + f Lgeq; b field_3960 UP + f Lgeq; c field_3962 NORTH + f Lgeq; d field_3963 SOUTH + f Lgeq; e field_3966 WEST + f Lgeq; f field_3961 EAST + f [Lgeq; g field_3958 BY_FACING + f [Lgeq$b; h field_3959 infos + f [Lgeq; i field_3964 $VALUES + m ()[Lgeq; a method_36913 $values + m (I)Lgeq$b; a method_3162 getVertexInfo + m (Lji;)Lgeq; a method_3163 fromFacing + m ([Lgeq;)V a method_3161 method_3161 + m (Ljava/lang/String;I[Lgeq$b;)V + m ()V +c geq$a net/minecraft/class_753$class_754 net/minecraft/client/renderer/FaceInfo$Constants + f I a field_3972 MAX_Z + f I b field_3971 MAX_Y + f I c field_3970 MAX_X + f I d field_3969 MIN_Z + f I e field_3968 MIN_Y + f I f field_3967 MIN_X + m ()V + m ()V +c geq$b net/minecraft/class_753$class_755 net/minecraft/client/renderer/FaceInfo$VertexInfo + f I a field_3975 xFace + f I b field_3974 yFace + f I c field_3973 zFace + m (III)V +c ger net/minecraft/class_758 net/minecraft/client/renderer/FogRenderer + f F a field_32684 BIOME_FOG_TRANSITION_TIME + f I b field_32685 WATER_FOG_DISTANCE + f Ljava/util/List; c field_38338 MOB_EFFECT_FOG + f F d field_4034 fogRed + f F e field_4033 fogGreen + f F f field_4032 fogBlue + f I g field_4031 targetBiomeFog + f I h field_4041 previousBiomeFog + f J i field_4042 biomeChangedTime + m ()V a method_23792 setupNoFog + m (Lbsr;F)Lger$e; a method_42588 getPriorityFogFunction + m (Lbtn;FLger$e;)Z a method_42589 method_42589 + m (Lffy;FLfzf;IF)V a method_3210 setupColor + m (Lffy;Lger$d;FZF)V a method_3211 setupFog + m (Lfzf;Lddy;FIII)Lexc; a method_24873 method_24873 + m ()V b method_3212 levelFogColor + m ()V + m ()V +c ger$a net/minecraft/class_758$class_7283 net/minecraft/client/renderer/FogRenderer$BlindnessFogFunction + m ()V +c ger$b net/minecraft/class_758$class_7284 net/minecraft/client/renderer/FogRenderer$DarknessFogFunction + m ()V +c ger$c net/minecraft/class_758$class_7285 net/minecraft/client/renderer/FogRenderer$FogData + f Lger$d; a field_38339 mode + f F b field_38340 start + f F c field_38341 end + f Lfav; d field_38342 shape + m (Lger$d;)V +c ger$d net/minecraft/class_758$class_4596 net/minecraft/client/renderer/FogRenderer$FogMode + f Lger$d; a field_20945 FOG_SKY + f Lger$d; b field_20946 FOG_TERRAIN + f [Lger$d; c field_20947 $VALUES + m ()[Lger$d; a method_36914 $values + m (Ljava/lang/String;I)V + m ()V +c ger$e net/minecraft/class_758$class_7286 net/minecraft/client/renderer/FogRenderer$MobEffectFogFunction + m ()Ljm; a method_42590 getMobEffect + m (Lbtn;F)Z a method_42593 isEnabled + m (Lbtn;Lbrz;FF)F a method_42592 getModifiedVoidDarkness + m (Lger$c;Lbtn;Lbrz;FF)V a method_42591 setupFog +c ges net/minecraft/class_757 net/minecraft/client/renderer/GameRenderer + f Lgey; A field_4028 lightTexture + f Lgqc; B field_20949 overlayTexture + f Z C field_4001 panoramicMode + f F D field_4005 zoom + f F E field_3988 zoomX + f F F field_4004 zoomY + f Lcuq; G field_4006 itemActivationItem + f I H field_4007 itemActivationTicks + f F I field_4029 itemActivationOffX + f F J field_4003 itemActivationOffY + f Lgfc; K field_4024 postEffect + f Lgfc; L field_49567 blurEffect + f Z M field_4013 effectActive + f Lffy; N field_18765 mainCamera + f Ljava/util/Map; O field_29350 shaders + f Lgfn; P field_29351 positionShader + f Lgfn; Q field_29352 positionColorShader + f Lgfn; R field_29354 positionTexShader + f Lgfn; S field_29355 positionTexColorShader + f Lgfn; T field_29358 particleShader + f Lgfn; U field_29359 positionColorLightmapShader + f Lgfn; V field_29360 positionColorTexLightmapShader + f Lgfn; W field_29363 rendertypeSolidShader + f Lgfn; X field_29364 rendertypeCutoutMippedShader + f Lgfn; Y field_29365 rendertypeCutoutShader + f Lgfn; Z field_29366 rendertypeTranslucentShader + f Lgfn; aA field_29402 rendertypeGlintDirectShader + f Lgfn; aB field_29367 rendertypeEntityGlintShader + f Lgfn; aC field_29368 rendertypeEntityGlintDirectShader + f Lgfn; aD field_29369 rendertypeTextShader + f Lgfn; aE field_42515 rendertypeTextBackgroundShader + f Lgfn; aF field_33626 rendertypeTextIntensityShader + f Lgfn; aG field_29370 rendertypeTextSeeThroughShader + f Lgfn; aH field_42516 rendertypeTextBackgroundSeeThroughShader + f I a field_49904 MAX_BLUR_RADIUS + f Lgfn; aI field_33627 rendertypeTextIntensitySeeThroughShader + f Lgfn; aJ field_29371 rendertypeLightningShader + f Lgfn; aK field_29372 rendertypeTripwireShader + f Lgfn; aL field_29373 rendertypeEndPortalShader + f Lgfn; aM field_29374 rendertypeEndGatewayShader + f Lgfn; aN field_48948 rendertypeCloudsShader + f Lgfn; aO field_29375 rendertypeLinesShader + f Lgfn; aP field_29376 rendertypeCrumblingShader + f Lgfn; aQ field_44810 rendertypeGuiShader + f Lgfn; aR field_44811 rendertypeGuiOverlayShader + f Lgfn; aS field_44812 rendertypeGuiTextHighlightShader + f Lgfn; aT field_44813 rendertypeGuiGhostRecipeOverlayShader + f Lgfn; aa field_29377 rendertypeTranslucentMovingBlockShader + f Lgfn; ab field_29379 rendertypeArmorCutoutNoCullShader + f Lgfn; ac field_29380 rendertypeEntitySolidShader + f Lgfn; ad field_29381 rendertypeEntityCutoutShader + f Lgfn; ae field_29382 rendertypeEntityCutoutNoCullShader + f Lgfn; af field_29383 rendertypeEntityCutoutNoCullZOffsetShader + f Lgfn; ag field_29384 rendertypeItemEntityTranslucentCullShader + f Lgfn; ah field_29385 rendertypeEntityTranslucentCullShader + f Lgfn; ai field_29386 rendertypeEntityTranslucentShader + f Lgfn; aj field_38343 rendertypeEntityTranslucentEmissiveShader + f Lgfn; ak field_29387 rendertypeEntitySmoothCutoutShader + f Lgfn; al field_29388 rendertypeBeaconBeamShader + f Lgfn; am field_29389 rendertypeEntityDecalShader + f Lgfn; an field_29390 rendertypeEntityNoOutlineShader + f Lgfn; ao field_29391 rendertypeEntityShadowShader + f Lgfn; ap field_29392 rendertypeEntityAlphaShader + f Lgfn; aq field_29393 rendertypeEyesShader + f Lgfn; ar field_29394 rendertypeEnergySwirlShader + f Lgfn; as field_47462 rendertypeBreezeWindShader + f Lgfn; at field_29395 rendertypeLeashShader + f Lgfn; au field_29396 rendertypeWaterMaskShader + f Lgfn; av field_29397 rendertypeOutlineShader + f Lgfn; aw field_29398 rendertypeArmorGlintShader + f Lgfn; ax field_29399 rendertypeArmorEntityGlintShader + f Lgfn; ay field_29400 rendertypeGlintTranslucentShader + f Lgfn; az field_29401 rendertypeGlintShader + f F b field_32686 PROJECTION_Z_NEAR + f Lgev; c field_4012 itemInHandRenderer + f I d field_32687 ITEM_ACTIVATION_ANIMATION_LENGTH + f Lgfn; e field_29403 blitShader + f Lakr; f field_26730 NAUSEA_LOCATION + f Lakr; g field_49568 BLUR_LOCATION + f Lorg/slf4j/Logger; h field_3993 LOGGER + f Z i field_32688 DEPTH_BUFFER_DEBUG + f F j field_44940 GUI_Z_NEAR + f Lfgo; k field_4015 minecraft + f Laue; l field_4018 resourceManager + f Layw; m field_3994 random + f F n field_4025 renderDistance + f Lfic; o field_4026 mapRenderer + f Lgff; p field_20948 renderBuffers + f I q field_47130 confusionAnimationTick + f F r field_4019 fov + f F s field_3999 oldFov + f F t field_4002 darkenWorldAmount + f F u field_3997 darkenWorldAmountO + f Z v field_3992 renderHand + f Z w field_4009 renderBlockOutline + f J x field_4017 lastScreenshotAttempt + f Z y field_34055 hasWorldScreenshot + f J z field_3998 lastActiveTime + m ()Lgfn; A method_34501 getRendertypeArmorCutoutNoCullShader + m (Lgfn;)V A method_36536 method_36536 + m ()Lgfn; B method_34502 getRendertypeEntitySolidShader + m (Lgfn;)V B method_36537 method_36537 + m ()Lgfn; C method_34503 getRendertypeEntityCutoutShader + m (Lgfn;)V C method_36538 method_36538 + m ()Lgfn; D method_34504 getRendertypeEntityCutoutNoCullShader + m (Lgfn;)V D method_36539 method_36539 + m ()Lgfn; E method_34505 getRendertypeEntityCutoutNoCullZOffsetShader + m (Lgfn;)V E method_36540 method_36540 + m ()Lgfn; F method_34506 getRendertypeItemEntityTranslucentCullShader + m (Lgfn;)V F method_36541 method_36541 + m ()Lgfn; G method_34507 getRendertypeEntityTranslucentCullShader + m (Lgfn;)V G method_36486 method_36486 + m ()Lgfn; H method_34508 getRendertypeEntityTranslucentShader + m (Lgfn;)V H method_36487 method_36487 + m ()Lgfn; I method_42595 getRendertypeEntityTranslucentEmissiveShader + m (Lgfn;)V I method_42594 method_42594 + m ()Lgfn; J method_34509 getRendertypeEntitySmoothCutoutShader + m (Lgfn;)V J method_36488 method_36488 + m ()Lgfn; K method_34510 getRendertypeBeaconBeamShader + m (Lgfn;)V K method_36489 method_36489 + m ()Lgfn; L method_34511 getRendertypeEntityDecalShader + m (Lgfn;)V L method_54637 method_54637 + m ()Lgfn; M method_34512 getRendertypeEntityNoOutlineShader + m (Lgfn;)V M method_36492 method_36492 + m ()Lgfn; N method_34513 getRendertypeEntityShadowShader + m (Lgfn;)V N method_36493 method_36493 + m ()Lgfn; O method_34514 getRendertypeEntityAlphaShader + m (Lgfn;)V O method_36494 method_36494 + m ()Lgfn; P method_34515 getRendertypeEyesShader + m (Lgfn;)V P method_36495 method_36495 + m ()Lgfn; Q method_34516 getRendertypeEnergySwirlShader + m (Lgfn;)V Q method_36496 method_36496 + m ()Lgfn; R method_55249 getRendertypeBreezeWindShader + m (Lgfn;)V R method_36497 method_36497 + m ()Lgfn; S method_34517 getRendertypeLeashShader + m (Lgfn;)V S method_36498 method_36498 + m ()Lgfn; T method_34518 getRendertypeWaterMaskShader + m (Lgfn;)V T method_36499 method_36499 + m ()Lgfn; U method_34519 getRendertypeOutlineShader + m (Lgfn;)V U method_56845 method_56845 + m ()Lgfn; V method_34520 getRendertypeArmorGlintShader + m (Lgfn;)V V method_36504 method_36504 + m ()Lgfn; W method_34523 getRendertypeArmorEntityGlintShader + m (Lgfn;)V W method_36505 method_36505 + m ()Lgfn; X method_34524 getRendertypeGlintTranslucentShader + m (Lgfn;)V X method_36506 method_36506 + m ()Lgfn; Y method_34525 getRendertypeGlintShader + m (Lgfn;)V Y method_36507 method_36507 + m ()Lgfn; Z method_34526 getRendertypeGlintDirectShader + m (Lgfn;)V Z method_36508 method_36508 + m ()Z a method_35765 isPanoramicMode + m (D)Lorg/joml/Matrix4f; a method_22973 getProjectionMatrix + m (F)V a method_57796 processBlurEffect + m (FFF)V a method_35766 renderZoomed + m (II)V a method_3169 resize + m (Lakr;)V a method_3168 loadEffect + m (Lauh;)V a method_34521 preloadUiShader + m (Lauh;Ljava/lang/String;Lfbn;)Lgfn; a method_34522 preloadShader + m (Lbsr;)V a method_3167 checkEntityPostEffect + m (Lbsr;DDF)Lexa; a method_56153 pick + m (Lbtn;F)F a method_3174 getNightVisionScale + m (Lcom/mojang/datafixers/util/Pair;)V a method_36512 method_36512 + m (Lcuq;)V a method_3189 displayItemActivation + m (Lexa;Lexc;D)Lexa; a method_56154 filterHitResult + m (Lfaj;Ljava/nio/file/Path;)V a method_3181 method_3181 + m (Lfbi;F)V a method_3198 bobHurt + m (Lfbi;Lfhz;)V a method_60888 method_60888 + m (Lffy;FLorg/joml/Matrix4f;)V a method_3172 renderItemInHand + m (Lffy;FZ)D a method_3196 getFov + m (Lfgf;)V a method_3188 renderLevel + m (Lfgf;Z)V a method_3192 render + m (Lfhz;F)V a method_3171 renderItemActivationAnimation + m (Lgfn;)V a method_55250 method_55250 + m (Ljava/lang/String;)Lgfn; a method_35767 getShader + m (Ljava/nio/file/Path;)V a method_3176 takeAutoScreenshot + m (Lorg/joml/Matrix4f;)V a method_22709 resetProjectionMatrix + m (Z)V a method_35768 setRenderHand + m ()Ljava/lang/String; aA method_18655 method_18655 + m ()Lgfn; aa method_34527 getRendertypeEntityGlintShader + m (Lgfn;)V aa method_36509 method_36509 + m ()Lgfn; ab method_34528 getRendertypeEntityGlintDirectShader + m (Lgfn;)V ab method_36510 method_36510 + m ()Lgfn; ac method_34529 getRendertypeTextShader + m (Lgfn;)V ac method_36511 method_36511 + m ()Lgfn; ad method_49037 getRendertypeTextBackgroundShader + m ()Lgfn; ae method_36432 getRendertypeTextIntensityShader + m ()Lgfn; af method_34530 getRendertypeTextSeeThroughShader + m ()Lgfn; ag method_49038 getRendertypeTextBackgroundSeeThroughShader + m ()Lgfn; ah method_36433 getRendertypeTextIntensitySeeThroughShader + m ()Lgfn; ai method_34531 getRendertypeLightningShader + m ()Lgfn; aj method_34532 getRendertypeTripwireShader + m ()Lgfn; ak method_34533 getRendertypeEndPortalShader + m ()Lgfn; al method_34534 getRendertypeEndGatewayShader + m ()Lgfn; am method_56846 getRendertypeCloudsShader + m ()Lgfn; an method_34535 getRendertypeLinesShader + m ()Lgfn; ao method_34536 getRendertypeCrumblingShader + m ()Lgfn; ap method_51771 getRendertypeGuiShader + m ()Lgfn; aq method_51772 getRendertypeGuiOverlayShader + m ()Lgfn; ar method_51773 getRendertypeGuiTextHighlightShader + m ()Lgfn; as method_51774 getRendertypeGuiGhostRecipeOverlayShader + m ()V at method_34537 shutdownShaders + m ()V au method_3199 tickFov + m ()V av method_37473 tryTakeScreenshotIfNeeded + m ()Z aw method_3202 shouldRenderBlockOutline + m ()Ljava/lang/String; ax method_37103 method_37103 + m ()Ljava/lang/String; ay method_3173 method_3173 + m ()Ljava/lang/String; az method_3205 method_3205 + m ()V b method_3207 shutdownEffect + m (F)V b method_3190 pick + m (II)Ljava/lang/String; b method_3191 method_3191 + m (Lauh;)V b method_57797 loadBlurEffect + m (Lbsr;)Z b method_18144 method_18144 + m (Lcom/mojang/datafixers/util/Pair;)V b method_36516 method_36516 + m (Lfbi;F)V b method_3186 bobView + m (Lfhz;F)V b method_31136 renderConfusionOverlay + m (Lgfn;)V b method_51770 method_51770 + m (Ljava/nio/file/Path;)V b method_37474 method_37474 + m (Z)V b method_35769 setRenderBlockOutline + m ()V c method_3184 togglePostEffect + m (F)F c method_3195 getDarkenWorldAmount + m (Lauh;)V c method_34538 reloadShaders + m (Lgfn;)V c method_51775 method_51775 + m (Z)V c method_35770 setPanoramicMode + m ()Laty; d method_45774 createReloadListener + m (Lgfn;)V d method_51776 method_51776 + m ()V e method_3182 tick + m (Lgfn;)V e method_51777 method_51777 + m ()Lgfc; f method_3183 currentEffect + m (Lgfn;)V f method_36513 method_36513 + m ()F g method_32796 getDepthFar + m (Lgfn;)V g method_36517 method_36517 + m ()V h method_3203 resetData + m (Lgfn;)V h method_36502 method_36502 + m ()Lfic; i method_3194 getMapRenderer + m (Lgfn;)V i method_36518 method_36518 + m ()Lfgo; j method_35772 getMinecraft + m (Lgfn;)V j method_36519 method_36519 + m ()F k method_3193 getRenderDistance + m (Lgfn;)V k method_36520 method_36520 + m ()Lffy; l method_19418 getMainCamera + m (Lgfn;)V l method_36521 method_36521 + m ()Lgey; m method_22974 lightTexture + m (Lgfn;)V m method_36522 method_36522 + m ()Lgqc; n method_22975 overlayTexture + m (Lgfn;)V n method_49039 method_49039 + m ()Lgfn; o method_34539 getPositionShader + m (Lgfn;)V o method_36523 method_36523 + m ()Lgfn; p method_34540 getPositionColorShader + m (Lgfn;)V p method_36524 method_36524 + m ()Lgfn; q method_34542 getPositionTexShader + m (Lgfn;)V q method_49040 method_49040 + m ()Lgfn; r method_34543 getPositionTexColorShader + m (Lgfn;)V r method_36525 method_36525 + m ()Lgfn; s method_34546 getParticleShader + m (Lgfn;)V s method_36526 method_36526 + m ()Lgfn; t method_34547 getPositionColorLightmapShader + m (Lgfn;)V t method_36527 method_36527 + m ()Lgfn; u method_34548 getPositionColorTexLightmapShader + m (Lgfn;)V u method_36529 method_36529 + m ()Lgfn; v method_34495 getRendertypeSolidShader + m (Lgfn;)V v method_36530 method_36530 + m ()Lgfn; w method_34496 getRendertypeCutoutMippedShader + m (Lgfn;)V w method_36531 method_36531 + m ()Lgfn; x method_34497 getRendertypeCutoutShader + m (Lgfn;)V x method_36533 method_36533 + m ()Lgfn; y method_34498 getRendertypeTranslucentShader + m (Lgfn;)V y method_36534 method_36534 + m ()Lgfn; z method_34499 getRendertypeTranslucentMovingBlockShader + m (Lgfn;)V z method_36535 method_36535 + m (Lfgo;Lgev;Laue;Lgff;)V + m ()V +c ges$1 net/minecraft/class_757$1 net/minecraft/client/renderer/GameRenderer$1 + f Lges; a field_40509 field_40509 + m (Lakr;)Z a method_45775 method_45775 + m (Laue;Lbnf;)Lges$a; a method_45776 prepare + m (Lges$a;Laue;Lbnf;)V a method_45777 apply + m (Ljava/util/Map;Lakr;Lauc;)V a method_45778 method_45778 + m ([B)Ljava/io/InputStream; a method_45779 method_45779 + m (Lges;)V +c ges$a net/minecraft/class_757$class_7760 net/minecraft/client/renderer/GameRenderer$ResourceCache + f Lauh; a comp_1038 original + f Ljava/util/Map; c comp_1039 cache + m ()Lauh; a comp_1038 original + m ()Ljava/util/Map; b comp_1039 cache + m (Lauh;Ljava/util/Map;)V +c get net/minecraft/class_5407 net/minecraft/client/renderer/GpuWarnlistManager + f Lorg/slf4j/Logger; a field_25716 LOGGER + f Lakr; b field_25689 GPU_WARNLIST_LOCATION + f Lcom/google/common/collect/ImmutableMap; c field_25690 warnings + f Z d field_25717 showWarning + f Z e field_25718 warningDismissed + f Z f field_25719 skipFabulous + m ()Z a method_30055 hasWarnings + m (Laue;Lbnf;)Lget$a; a method_30056 prepare + m (Lcom/google/gson/JsonArray;Ljava/util/List;)V a method_30057 compilePatterns + m (Lget$a;Laue;Lbnf;)V a method_30058 apply + m (Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V a method_30919 method_30919 + m (Ljava/util/List;Lcom/google/gson/JsonElement;)V a method_30059 method_30059 + m ()Z b method_30137 willShowWarning + m (Laue;Lbnf;)Lcom/google/gson/JsonObject; c method_30061 parseJson + m ()V d method_30138 showWarning + m ()V e method_30139 dismissWarning + m ()V f method_30140 dismissWarningAndSkipFabulous + m ()Z g method_30141 isShowingWarning + m ()Z h method_30142 isSkippingFabulous + m ()V i method_30143 resetWarnings + m ()Ljava/lang/String; j method_30060 getRendererWarnings + m ()Ljava/lang/String; k method_30062 getVersionWarnings + m ()Ljava/lang/String; l method_30063 getVendorWarnings + m ()Ljava/lang/String; m method_30920 getAllWarnings + m ()V + m ()V +c get$a net/minecraft/class_5407$class_5408 net/minecraft/client/renderer/GpuWarnlistManager$Preparations + f Ljava/util/List; a field_25691 rendererPatterns + f Ljava/util/List; b field_25692 versionPatterns + f Ljava/util/List; c field_25693 vendorPatterns + m ()Lcom/google/common/collect/ImmutableMap; a method_30064 apply + m (Ljava/util/List;Ljava/lang/String;)Ljava/lang/String; a method_30066 matchAny + m (Ljava/util/List;Ljava/util/List;Ljava/util/List;)V +c geu net/minecraft/class_4696 net/minecraft/client/renderer/ItemBlockRenderTypes + f Ljava/util/Map; a field_21469 TYPE_BY_BLOCK + f Ljava/util/Map; b field_21471 TYPE_BY_FLUID + f Z c field_21472 renderCutout + m (Lcuq;Z)Lgfh; a method_23678 getRenderType + m (Ldtc;)Lgfh; a method_23679 getChunkRenderType + m (Ldtc;Z)Lgfh; a method_23683 getRenderType + m (Lepe;)Lgfh; a method_23680 getRenderLayer + m (Ljava/util/HashMap;)V a method_23681 method_23681 + m (Z)V a method_23682 setFancy + m (Ldtc;)Lgfh; b method_29359 getMovingBlockRenderType + m (Ljava/util/HashMap;)V b method_23685 method_23685 + m ()V + m ()V +c gev net/minecraft/class_759 net/minecraft/client/renderer/ItemInHandRenderer + f F A field_32689 ARM_SWING_Z_ROT_AMOUNT + f F B field_32690 ARM_HEIGHT_SCALE + f F C field_32691 ARM_POS_SCALE + f F D field_32692 ARM_POS_X + f F E field_32693 ARM_POS_Y + f F F field_32694 ARM_POS_Z + f F G field_32695 ARM_PRESWING_ROT_Y + f F H field_32696 ARM_PREROTATION_X_OFFSET + f F I field_32697 ARM_PREROTATION_Y_OFFSET + f F J field_32698 ARM_PREROTATION_Z_OFFSET + f F K field_32699 ARM_POSTROTATION_X_OFFSET + f I L field_32700 ARM_ROT_X + f I M field_32701 ARM_ROT_Y + f I N field_32702 ARM_ROT_Z + f F O field_32703 MAP_SWING_X_POS_SCALE + f F P field_32704 MAP_SWING_Z_POS_SCALE + f F Q field_32705 MAP_HANDS_POS_X + f F R field_32706 MAP_HANDS_POS_Y + f F S field_32707 MAP_HANDS_POS_Z + f F T field_32708 MAP_HANDS_HEIGHT_SCALE + f F U field_32709 MAP_HANDS_TILT_SCALE + f F V field_32710 MAP_PLAYER_PITCH_SCALE + f F W field_32711 MAP_HANDS_Z_ROT_AMOUNT + f F X field_32712 MAPHAND_X_ROT_AMOUNT + f F Y field_32713 MAPHAND_Y_ROT_AMOUNT + f F Z field_32714 MAPHAND_Z_ROT_AMOUNT + f F aA field_4051 oOffHandHeight + f Lgkh; aB field_4046 entityRenderDispatcher + f Lglh; aC field_4044 itemRenderer + f Lgfh; a field_21807 MAP_BACKGROUND + f F aa field_32715 MAP_HAND_X_POS + f F ab field_32716 MAP_HAND_Y_POS + f F ac field_32717 MAP_HAND_Z_POS + f F ad field_32718 MAP_SWING_X_ROT_AMOUNT + f F ae field_32719 MAP_PRE_ROT_SCALE + f F af field_32720 MAP_GLOBAL_X_POS + f F ag field_32721 MAP_GLOBAL_Y_POS + f F ah field_32722 MAP_GLOBAL_Z_POS + f F ai field_32723 MAP_FINAL_SCALE + f I aj field_32724 MAP_BORDER + f I ak field_32725 MAP_HEIGHT + f I al field_32726 MAP_WIDTH + f F am field_32727 BOW_CHARGE_X_POS_SCALE + f F an field_32728 BOW_CHARGE_Y_POS_SCALE + f F ao field_32729 BOW_CHARGE_Z_POS_SCALE + f F ap field_32730 BOW_CHARGE_SHAKE_X_SCALE + f F aq field_32731 BOW_CHARGE_SHAKE_Y_SCALE + f F ar field_32732 BOW_CHARGE_SHAKE_Z_SCALE + f F as field_32733 BOW_CHARGE_Z_SCALE + f F at field_32734 BOW_MIN_SHAKE_CHARGE + f Lfgo; au field_4050 minecraft + f Lcuq; av field_4047 mainHandItem + f Lcuq; aw field_4048 offHandItem + f F ax field_4043 mainHandHeight + f F ay field_4053 oMainHandHeight + f F az field_4052 offHandHeight + f Lgfh; b field_21808 MAP_BACKGROUND_CHECKERBOARD + f F c field_32735 ITEM_SWING_X_POS_SCALE + f F d field_32736 ITEM_SWING_Y_POS_SCALE + f F e field_32737 ITEM_SWING_Z_POS_SCALE + f F f field_32738 ITEM_HEIGHT_SCALE + f F g field_32739 ITEM_POS_X + f F h field_32740 ITEM_POS_Y + f F i field_32741 ITEM_POS_Z + f F j field_32742 ITEM_PRESWING_ROT_Y + f F k field_32743 ITEM_SWING_X_ROT_AMOUNT + f F l field_32744 ITEM_SWING_Y_ROT_AMOUNT + f F m field_32745 ITEM_SWING_Z_ROT_AMOUNT + f F n field_32746 EAT_JIGGLE_X_ROT_AMOUNT + f F o field_32747 EAT_JIGGLE_Y_ROT_AMOUNT + f F p field_32748 EAT_JIGGLE_Z_ROT_AMOUNT + f F q field_32749 EAT_JIGGLE_X_POS_SCALE + f F r field_32750 EAT_JIGGLE_Y_POS_SCALE + f F s field_32751 EAT_JIGGLE_Z_POS_SCALE + f D t field_32752 EAT_JIGGLE_EXPONENT + f F u field_32753 EAT_EXTRA_JIGGLE_CUTOFF + f F v field_32754 EAT_EXTRA_JIGGLE_SCALE + f F w field_32755 ARM_SWING_X_POS_SCALE + f F x field_32756 ARM_SWING_Y_POS_SCALE + f F y field_32757 ARM_SWING_Z_POS_SCALE + f F z field_32758 ARM_SWING_Y_ROT_AMOUNT + m ()V a method_3220 tick + m (F)F a method_3227 calculateMapTilt + m (FLfbi;Lgez$a;Lgeb;I)V a method_22976 renderHandsWithItems + m (Lbqq;)V a method_3215 itemUsed + m (Lbtn;Lcuq;Lcun;ZLfbi;Lgez;I)V a method_3233 renderItem + m (Lcuq;)Z a method_33302 isChargedCrossbow + m (Lfbi;FLbtg;Lcuq;Lcmx;)V a method_3218 applyEatTransform + m (Lfbi;FLbtg;Lcuq;Lcmx;F)V a method_49340 applyBrushTransform + m (Lfbi;Lbtg;F)V a method_3217 applyItemArmAttackTransform + m (Lfbi;Lgez;IFFF)V a method_3231 renderTwoHandedMap + m (Lfbi;Lgez;IFFLbtg;)V a method_3219 renderPlayerArm + m (Lfbi;Lgez;IFLbtg;FLcuq;)V a method_3222 renderOneHandedMap + m (Lfbi;Lgez;ILbtg;)V a method_3216 renderMapHand + m (Lfbi;Lgez;ILcuq;)V a method_3223 renderMap + m (Lgdy;FFLbqq;FLcuq;FLfbi;Lgez;I)V a method_3228 renderArmWithItem + m (Lgeb;)Lgev$a; a method_33303 evaluateWhichHandsToRender + m (Lfbi;Lbtg;F)V b method_3224 applyItemArmTransform + m (Lgeb;)Lgev$a; b method_33304 selectionUsingItemWhileHoldingBowLike + m (Lfgo;Lgkh;Lglh;)V + m ()V +c gev$1 net/minecraft/class_759$1 net/minecraft/client/renderer/ItemInHandRenderer$1 + f [I a field_4054 $SwitchMap$net$minecraft$world$item$UseAnim + m ()V +c gev$a net/minecraft/class_759$class_5773 net/minecraft/client/renderer/ItemInHandRenderer$HandRenderSelection + f Lgev$a; a field_28384 RENDER_BOTH_HANDS + f Lgev$a; b field_28385 RENDER_MAIN_HAND_ONLY + f Lgev$a; c field_28386 RENDER_OFF_HAND_ONLY + f Z d field_28387 renderMainHand + f Z e field_28388 renderOffHand + f [Lgev$a; f field_28389 $VALUES + m ()[Lgev$a; a method_36915 $values + m (Lbqq;)Lgev$a; a method_33305 onlyForHand + m (Ljava/lang/String;IZZ)V + m ()V +c gew net/minecraft/class_763 net/minecraft/client/renderer/ItemModelShaper + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a field_4129 shapes + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; b field_4130 shapesCache + f Lgst; c field_4128 modelManager + m ()Lgst; a method_3303 getModelManager + m (Lcul;)Lgsm; a method_3304 getItemModel + m (Lcul;Lgsu;)V a method_3309 register + m (Lcuq;)Lgsm; a method_3308 getItemModel + m ()V b method_3310 rebuildCache + m (Lcul;)I b method_3306 getIndex + m (Lgst;)V +c gex net/minecraft/class_761 net/minecraft/client/renderer/LevelRenderer + f Lfbl; A field_4087 skyBuffer + f Lfbl; B field_4102 darkBuffer + f Z C field_4107 generateClouds + f Lfbl; D field_4094 cloudBuffer + f Lgfi; E field_21799 frameTimes + f I F field_4073 ticks + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; G field_4058 destroyingBlocks + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; H field_20950 destructionProgress + f Ljava/util/Map; I field_4119 playingJukeboxSongs + f Lezv; J field_4101 entityTarget + f Lgfc; K field_4059 entityEffect + f Lezv; L field_25274 translucentTarget + f Lezv; M field_25275 itemEntityTarget + f Lezv; N field_25276 particlesTarget + f Lezv; O field_25277 weatherTarget + f Lezv; P field_25278 cloudsTarget + f Lgfc; Q field_25279 transparencyChain + f I R field_4084 lastCameraSectionX + f I S field_4105 lastCameraSectionY + f I T field_4121 lastCameraSectionZ + f D U field_4069 prevCamX + f D V field_4081 prevCamY + f D W field_4096 prevCamZ + f D X field_4115 prevCamRotX + f D Y field_4064 prevCamRotY + f I Z field_4082 prevCloudX + f I a field_32759 SECTION_SIZE + f I aa field_4097 prevCloudY + f I ab field_4116 prevCloudZ + f Lexc; ac field_4072 prevCloudColor + f Lfgb; ad field_4080 prevCloudsType + f Lgia; ae field_45614 sectionRenderDispatcher + f I af field_4062 lastViewDistance + f I ag field_4089 renderedEntities + f I ah field_4110 culledEntities + f Lgie; ai field_27740 cullingFrustum + f Z aj field_4090 captureFrustum + f Lgie; ak field_4056 capturedFrustum + f [Lorg/joml/Vector4f; al field_4065 frustumPoints + f Lorg/joml/Vector3d; am field_4091 frustumPos + f D an field_4083 xTransparentOld + f D ao field_4103 yTransparentOld + f D ap field_4118 zTransparentOld + f I aq field_20793 rainSoundTime + f [F ar field_20794 rainSizeX + f [F as field_20795 rainSizeZ + f I b field_34812 HALF_SECTION_SIZE + f Lakr; c field_4108 CLOUDS_LOCATION + f [Lji; d field_4095 DIRECTIONS + f Lorg/slf4j/Logger; e field_4060 LOGGER + f F f field_32762 SKY_DISC_RADIUS + f I g field_32763 MIN_FOG_DISTANCE + f I h field_32764 RAIN_RADIUS + f I i field_32765 RAIN_DIAMETER + f I j field_32766 TRANSPARENT_SORT_COUNT + f Lakr; k field_4098 MOON_LOCATION + f Lakr; l field_4111 SUN_LOCATION + f Lakr; m field_4061 END_SKY_LOCATION + f Lakr; n field_4071 FORCEFIELD_LOCATION + f Lakr; o field_20797 RAIN_LOCATION + f Lakr; p field_20798 SNOW_LOCATION + f Lfgo; q field_4088 minecraft + f Lgkh; r field_4109 entityRenderDispatcher + f Lggy; s field_27741 blockEntityRenderDispatcher + f Lgff; t field_20951 renderBuffers + f Lfzf; u field_4085 level + f Lgfm; v field_45615 sectionOcclusionGraph + f Lit/unimi/dsi/fastutil/objects/ObjectArrayList; w field_45616 visibleSections + f Ljava/util/Set; x field_4055 globalBlockEntities + f Lgfq; y field_4112 viewArea + f Lfbl; z field_4113 starBuffer + m ()V A method_3265 createDarkSky + m ()V B method_3277 createLightSky + m ()V C method_3293 createStars + m ()V a method_3296 initOutline + m (DDD)Ljava/lang/String; a method_3264 method_3264 + m (F)Lexc; a method_51778 mixColor + m (FFFF)Lexc; a method_51779 shiftHue + m (II)V a method_3242 resize + m (III)V a method_18145 setSectionDirtyWithNeighbors + m (IIIIII)V a method_18146 setBlocksDirty + m (IIIZ)V a method_3295 setSectionDirty + m (ILjd;I)V a method_8564 globalLevelEvent + m (ILjd;Layw;Llq;)V a method_54638 shootParticles + m (J)Ljava/util/SortedSet; a method_22988 method_22988 + m (Lapx;)V a method_22987 removeProgress + m (Lasq;)Lxn; a method_41949 method_41949 + m (Layw;)Lexc; a method_41950 method_41950 + m (Lbsr;DDDFLfbi;Lgez;)V a method_22977 renderEntity + m (Ldbz;Ldtc;Ljd;)I a method_23793 getLightColor + m (Ldbz;Ljd;)I a method_23794 getLightColor + m (Ldcc;Ljd;Ldtc;Ldtc;I)V a method_8570 blockChanged + m (Ldcd;)V a method_52815 onChunkLoaded + m (Ldcw;Ljd;Z)V a method_3247 notifyNearbyEntities + m (Lexc;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V a method_32133 prepareCullFrustum + m (Lfbi;)V a method_22979 checkPoseStack + m (Lfbi;Lfbm;DDDDDDFFFF)V a method_22980 renderLineBox + m (Lfbi;Lfbm;DDDDDDFFFFFFF)V a method_22981 renderLineBox + m (Lfbi;Lfbm;FFFFFFFFFF)V a method_49041 addChainedFilledBoxVertices + m (Lfbi;Lfbm;Lbsr;DDDLjd;Ldtc;)V a method_22712 renderHitOutline + m (Lfbi;Lfbm;Lewx;FFFF)V a method_22982 renderLineBox + m (Lfbi;Lfbm;Lexv;DDDFFFF)V a method_3291 renderShape + m (Lfbi;Lfbm;Lexv;DDDFFFFZ)V a method_22983 renderVoxelShape + m (Lfbi;Lfbm;Lji;FFFFFFFFFF)V a method_61044 renderFace + m (Lfbi;Lgez;Lffy;)V a method_22989 renderDebug + m (Lfbi;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;FDDD)V a method_3259 renderClouds + m (Lfbk;)Lfbh; a method_3255 drawStars + m (Lfbk;DDDLexc;)Lfbh; a method_3239 buildClouds + m (Lfbk;F)Lfbh; a method_34550 buildSkyDisc + m (Lfbm;DDDDDDFFFF)V a method_35773 renderLineBox + m (Lfbm;Lfbi$a;DDDFFFFDDDDDD)V a method_3278 method_3278 + m (Lfbm;Lorg/joml/Matrix4f;I)V a method_22984 addFrustumVertex + m (Lfbm;Lorg/joml/Matrix4f;IIIIIII)V a method_22985 addFrustumQuad + m (Lffy;)V a method_22713 tickRain + m (Lffy;FZF)V a method_37365 method_37365 + m (Lffy;Lgie;ZZ)V a method_3273 setupRender + m (Lfgf;ZLffy;Lges;Lgey;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V a method_22710 renderLevel + m (Lfzf;)V a method_3244 setLevel + m (Lgey;FDDD)V a method_22714 renderSnowAndRain + m (Lgez$a;Lfbm;Lgfh;)Lfbm; a method_22986 method_22986 + m (Lgfh;)Ljava/lang/String; a method_3248 method_3248 + m (Lgfh;DDDLorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V a method_3251 renderSectionLayer + m (Lgia$b;)V a method_38550 addRecentlyCompiledSection + m (Lgie;)Lgie; a method_52816 offsetFrustum + m (Ljava/util/Collection;Ljava/util/Collection;)V a method_3245 updateGlobalBlockEntities + m (Ljd;)V a method_60889 stopJukeboxSongAndNotifyNearby + m (Ljd;Ldtc;Ldtc;)V a method_21596 setBlockDirty + m (Ljd;Ljm$c;)V a method_60890 method_60890 + m (Ljd;Z)V a method_16037 setBlockDirty + m (Ljm;Ljd;)V a method_60891 playJukeboxSong + m (Llk;)Ljava/lang/String; a method_56847 method_56847 + m (Llk;DDDDDD)V a method_3276 addParticle + m (Llk;ZDDDDDD)V a method_8568 addParticle + m (Llk;ZZDDDDDD)V a method_8563 addParticle + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;DDDLgie;)V a method_3275 captureFrustum + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;FLffy;ZLjava/lang/Runnable;)V a method_3257 renderSky + m (Z)Lfgt; a method_3268 calculateParticleLevel + m ()V b method_3254 doEntityOutline + m (III)V b method_8571 setSectionDirty + m (ILjd;I)V b method_8567 levelEvent + m (Lfbi;)V b method_3250 renderEndSky + m (Lfbi;Lfbm;DDDDDDFFFF)V b method_3258 addChainedFilledBoxVertices + m (Lffy;)Z b method_43788 doesMobEffectBlockSky + m (Lgie;)V b method_38551 applyFrustum + m (Ljd;)Z b method_40050 isSectionCompiled + m (Llk;ZDDDDDD)Lgcn; b method_3282 addParticleInternal + m (Llk;ZZDDDDDD)Lgcn; b method_3288 addParticleInternal + m (ILjd;I)V c method_8569 destroyBlockProgress + m (Lffy;)V c method_3269 compileSections + m (Ljd;)V c method_60892 stopJukeboxSong + m ()Z d method_3270 shouldShowEntityOutlines + m (Lffy;)V d method_3243 renderWorldBorder + m ()V e method_35774 graphicsChanged + m ()V f method_3279 allChanged + m ()Ljava/lang/String; g method_3289 getSectionStatistics + m ()Lgia; h method_34810 getSectionRenderDispatcher + m ()D i method_34811 getTotalSections + m ()D j method_34812 getLastViewDistance + m ()I k method_3246 countRenderedSections + m ()Ljava/lang/String; l method_3272 getEntityStatistics + m ()V m method_35775 captureFrustum + m ()V n method_35776 killFrustum + m ()V o method_3252 tick + m ()V p method_3267 clear + m ()Z q method_3281 hasRenderedAllSections + m ()V r method_3292 needsUpdate + m ()Lezv; s method_22990 entityTarget + m ()Lezv; t method_29360 getTranslucentTarget + m ()Lezv; u method_29361 getItemEntityTarget + m ()Lezv; v method_29362 getParticlesTarget + m ()Lezv; w method_29363 getWeatherTarget + m ()Lezv; x method_29364 getCloudsTarget + m ()V y method_29365 initTransparency + m ()V z method_29701 deinitTransparency + m (Lfgo;Lgkh;Lggy;Lgff;)V + m ()V +c gex$1 net/minecraft/class_761$1 net/minecraft/client/renderer/LevelRenderer$1 + f [I a field_52254 $SwitchMap$net$minecraft$core$Direction + m ()V +c gex$a net/minecraft/class_761$class_5347 net/minecraft/client/renderer/LevelRenderer$TransparencyShaderException + m (Ljava/lang/String;Ljava/lang/Throwable;)V +c gey net/minecraft/class_765 net/minecraft/client/renderer/LightTexture + f I a field_32767 FULL_BRIGHT + f I b field_32768 FULL_SKY + f I c field_32769 FULL_BLOCK + f Lgpy; d field_4138 lightTexture + f Lfaj; e field_4133 lightPixels + f Lakr; f field_4136 lightTextureLocation + f Z g field_4135 updateLightTexture + f F h field_21528 blockLightRedFlicker + f Lges; i field_4134 renderer + f Lfgo; j field_4137 minecraft + m ()V a method_3314 tick + m (F)V a method_3313 updateLightTexture + m (I)I a method_24186 block + m (II)I a method_23687 pack + m (Lbtn;FF)F a method_42596 calculateDarknessScale + m (Ldwy;I)F a method_23284 getBrightness + m (Lorg/joml/Vector3f;)V a method_46557 clampColor + m ()V b method_3315 turnOffLightLayer + m (F)F b method_42597 getDarknessGamma + m (I)I b method_24187 sky + m ()V c method_3316 turnOnLightLayer + m (F)F c method_23795 notGamma + m (Lges;Lfgo;)V +c gez net/minecraft/class_4597 net/minecraft/client/renderer/MultiBufferSource + m (Lfbf;)Lgez$a; a method_22991 immediate + m (Ljava/util/SequencedMap;Lfbf;)Lgez$a; a method_22992 immediateWithBuffers +c gez$a net/minecraft/class_4597$class_4598 net/minecraft/client/renderer/MultiBufferSource$BufferSource + f Lfbf; a field_52156 sharedBuffer + f Ljava/util/SequencedMap; b field_20953 fixedBuffers + f Ljava/util/Map; c field_52157 startedBuilders + f Lgfh; d field_52158 lastSharedType + m ()V a method_37104 endLastBatch + m (Lgfh;)V a method_22994 endBatch + m (Lgfh;Lfbd;)V a method_60893 endBatch + m ()V b method_22993 endBatch + m (Lfbf;Ljava/util/SequencedMap;)V +c gfa net/minecraft/class_4618 net/minecraft/client/renderer/OutlineBufferSource + f Lgez$a; a field_21058 bufferSource + f Lgez$a; b field_21059 outlineBufferSource + f I c field_21060 teamR + f I d field_21061 teamG + f I e field_21062 teamB + f I f field_21063 teamA + m ()V a method_23285 endOutlineBatch + m (IIII)V a method_23286 setColor + m (Lgez$a;)V +c gfa$a net/minecraft/class_4618$class_4586 net/minecraft/client/renderer/OutlineBufferSource$EntityOutlineGenerator + f Lfbm; a comp_2851 delegate + f I b comp_2852 color + m ()Lfbm; a comp_2851 delegate + m ()I b comp_2852 color + m (Lfbm;IIII)V + m (Lfbm;I)V +c gfb net/minecraft/class_766 net/minecraft/client/renderer/PanoramaRenderer + f Lakr; a field_49905 PANORAMA_OVERLAY + f Lfgo; b field_4139 minecraft + f Lgen; c field_4141 cubeMap + f F d field_40510 spin + f F e field_40511 bob + m (FF)F a method_45780 wrap + m (Lfhz;IIFF)V a method_3317 render + m (Lgen;)V + m ()V +c gfc net/minecraft/class_279 net/minecraft/client/renderer/PostChain + f Ljava/lang/String; a field_32770 MAIN_RENDER_TARGET + f Lezv; b field_1499 screenTarget + f Lauh; c field_49569 resourceProvider + f Ljava/lang/String; d field_1494 name + f Ljava/util/List; e field_1497 passes + f Ljava/util/Map; f field_1495 customRenderTargets + f Ljava/util/List; g field_1496 fullSizedTargets + f Lorg/joml/Matrix4f; h field_1498 shaderOrthoMatrix + f I i field_1493 screenWidth + f I j field_1492 screenHeight + f F k field_1501 time + f F l field_1500 lastStamp + m ()Ljava/lang/String; a method_1260 getName + m (F)V a method_1258 process + m (I)V a method_58233 setFilterMode + m (II)V a method_1259 resize + m (Lcom/google/gson/JsonElement;)V a method_1265 parseTargetNode + m (Lgqm;Lakr;)V a method_1256 load + m (Lgqm;Lcom/google/gson/JsonElement;)V a method_1257 parsePassNode + m (Ljava/lang/String;)Lezv; a method_1264 getTempTarget + m (Ljava/lang/String;F)V a method_57799 setUniform + m (Ljava/lang/String;II)V a method_1261 addTempTarget + m (Ljava/lang/String;Lezv;Lezv;Z)Lgfd; a method_1262 addPass + m ()V b method_1267 updateOrthoMatrix + m (Lcom/google/gson/JsonElement;)V b method_1263 parseUniformNode + m (Ljava/lang/String;)Lezv; b method_1266 getRenderTarget + m (Ljava/lang/String;)Laku; c method_43210 method_43210 + m (Lgqm;Lauh;Lezv;Lakr;)V +c gfd net/minecraft/class_283 net/minecraft/client/renderer/PostPass + f Lezv; a field_1536 inTarget + f Lezv; b field_1538 outTarget + f Lgep; c field_1540 effect + f Ljava/util/List; d field_1534 auxAssets + f Ljava/util/List; e field_1539 auxNames + f Ljava/util/List; f field_1533 auxWidths + f Ljava/util/List; g field_1537 auxHeights + f Lorg/joml/Matrix4f; h field_1535 shaderOrthoMatrix + f I i field_49906 filterMode + m ()Ljava/lang/String; a method_35777 getName + m (F)V a method_1293 process + m (Ljava/lang/String;Ljava/util/function/IntSupplier;II)V a method_1292 addAuxAsset + m (Lorg/joml/Matrix4f;)V a method_1291 setOrthoMatrix + m ()Lgep; b method_1295 getEffect + m ()I c method_58234 getFilterMode + m (Lauh;Ljava/lang/String;Lezv;Lezv;Z)V +c gfe net/minecraft/class_768 net/minecraft/client/renderer/Rect2i + f I a field_4145 xPos + f I b field_4144 yPos + f I c field_4143 width + f I d field_4142 height + m ()I a method_3321 getX + m (I)V a method_35778 setX + m (II)V a method_35779 setPosition + m (Lgfe;)Lgfe; a method_35780 intersect + m ()I b method_3322 getY + m (I)V b method_35781 setY + m (II)Z b method_3318 contains + m ()I c method_3319 getWidth + m (I)V c method_35782 setWidth + m ()I d method_3320 getHeight + m (I)V d method_35783 setHeight + m (IIII)V +c gff net/minecraft/class_4599 net/minecraft/client/renderer/RenderBuffers + f Lgfk; a field_20956 fixedBufferPack + f Lgfl; b field_46900 sectionBufferPool + f Lgez$a; c field_46901 bufferSource + f Lgez$a; d field_20959 crumblingBufferSource + f Lgfa; e field_20961 outlineBufferSource + m ()Lgfk; a method_22997 fixedBufferPack + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectLinkedOpenHashMap;)V a method_54639 method_54639 + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectLinkedOpenHashMap;Lgfh;)V a method_23798 put + m ()Lgfl; b method_54640 sectionBufferPool + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectLinkedOpenHashMap;Lgfh;)V b method_54641 method_54641 + m ()Lgez$a; c method_23000 bufferSource + m ()Lgez$a; d method_23001 crumblingBufferSource + m ()Lgfa; e method_23003 outlineBufferSource + m (I)V +c gfg net/minecraft/class_4668 net/minecraft/client/renderer/RenderStateShard + f Lgfg$m; A field_29407 RENDERTYPE_ENTITY_TRANSLUCENT_SHADER + f Lgfg$m; B field_38344 RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER + f Lgfg$m; C field_29408 RENDERTYPE_ENTITY_SMOOTH_CUTOUT_SHADER + f Lgfg$m; D field_29409 RENDERTYPE_BEACON_BEAM_SHADER + f Lgfg$m; E field_29410 RENDERTYPE_ENTITY_DECAL_SHADER + f Lgfg$m; F field_29411 RENDERTYPE_ENTITY_NO_OUTLINE_SHADER + f Lgfg$m; G field_29412 RENDERTYPE_ENTITY_SHADOW_SHADER + f Lgfg$m; H field_29413 RENDERTYPE_ENTITY_ALPHA_SHADER + f Lgfg$m; I field_29414 RENDERTYPE_EYES_SHADER + f Lgfg$m; J field_29415 RENDERTYPE_ENERGY_SWIRL_SHADER + f Lgfg$m; K field_29416 RENDERTYPE_LEASH_SHADER + f Lgfg$m; L field_29417 RENDERTYPE_WATER_MASK_SHADER + f Lgfg$m; M field_29418 RENDERTYPE_OUTLINE_SHADER + f Lgfg$m; N field_29420 RENDERTYPE_ARMOR_ENTITY_GLINT_SHADER + f Lgfg$m; O field_29421 RENDERTYPE_GLINT_TRANSLUCENT_SHADER + f Lgfg$m; P field_29422 RENDERTYPE_GLINT_SHADER + f Lgfg$m; Q field_29424 RENDERTYPE_ENTITY_GLINT_SHADER + f Lgfg$m; R field_29425 RENDERTYPE_ENTITY_GLINT_DIRECT_SHADER + f Lgfg$m; S field_29426 RENDERTYPE_CRUMBLING_SHADER + f Lgfg$m; T field_29427 RENDERTYPE_TEXT_SHADER + f Lgfg$m; U field_42517 RENDERTYPE_TEXT_BACKGROUND_SHADER + f Lgfg$m; V field_33628 RENDERTYPE_TEXT_INTENSITY_SHADER + f Lgfg$m; W field_29428 RENDERTYPE_TEXT_SEE_THROUGH_SHADER + f Lgfg$m; X field_42518 RENDERTYPE_TEXT_BACKGROUND_SEE_THROUGH_SHADER + f Lgfg$m; Y field_33629 RENDERTYPE_TEXT_INTENSITY_SEE_THROUGH_SHADER + f Lgfg$m; Z field_29429 RENDERTYPE_LIGHTNING_SHADER + f Lgfg$q; aA field_21349 COLOR_DEPTH_WRITE + f Lgfg$q; aB field_21350 COLOR_WRITE + f Lgfg$q; aC field_21351 DEPTH_WRITE + f D a field_42230 MAX_ENCHANTMENT_GLINT_SPEED_MILLIS + f Lgfg$f; aD field_21352 NO_LAYERING + f Lgfg$f; aE field_21353 POLYGON_OFFSET_LAYERING + f Lgfg$f; aF field_22241 VIEW_OFFSET_Z_LAYERING + f Lgfg$k; aG field_21358 MAIN_TARGET + f Lgfg$k; aH field_21359 OUTLINE_TARGET + f Lgfg$k; aI field_25280 TRANSLUCENT_TARGET + f Lgfg$k; aJ field_25281 PARTICLES_TARGET + f Lgfg$k; aK field_25282 WEATHER_TARGET + f Lgfg$k; aL field_25283 CLOUDS_TARGET + f Lgfg$k; aM field_25643 ITEM_ENTITY_TARGET + f Lgfg$h; aN field_21360 DEFAULT_LINE + f Lgfg$b; aO field_44815 NO_COLOR_LOGIC + f Lgfg$b; aP field_44816 OR_REVERSE_COLOR_LOGIC + f F aQ field_32771 VIEW_SCALE_Z_EPSILON + f Ljava/lang/Runnable; aR field_21361 setupState + f Ljava/lang/Runnable; aS field_21362 clearState + f Lgfg$m; aa field_29430 RENDERTYPE_TRIPWIRE_SHADER + f Lgfg$m; ab field_29431 RENDERTYPE_END_PORTAL_SHADER + f Lgfg$m; ac field_29432 RENDERTYPE_END_GATEWAY_SHADER + f Lgfg$m; ad field_48949 RENDERTYPE_CLOUDS_SHADER + f Lgfg$m; ae field_29433 RENDERTYPE_LINES_SHADER + f Lgfg$m; af field_44817 RENDERTYPE_GUI_SHADER + f Lgfg$m; ag field_44818 RENDERTYPE_GUI_OVERLAY_SHADER + f Lgfg$m; ah field_44819 RENDERTYPE_GUI_TEXT_HIGHLIGHT_SHADER + f Lgfg$m; ai field_44820 RENDERTYPE_GUI_GHOST_RECIPE_OVERLAY_SHADER + f Lgfg$m; aj field_47463 RENDERTYPE_BREEZE_WIND_SHADER + f Lgfg$n; ak field_21376 BLOCK_SHEET_MIPPED + f Lgfg$n; al field_21377 BLOCK_SHEET + f Lgfg$e; am field_21378 NO_TEXTURE + f Lgfg$o; an field_21379 DEFAULT_TEXTURING + f Lgfg$o; ao field_21381 GLINT_TEXTURING + f Lgfg$o; ap field_21382 ENTITY_GLINT_TEXTURING + f Lgfg$g; aq field_21383 LIGHTMAP + f Lgfg$g; ar field_21384 NO_LIGHTMAP + f Lgfg$l; as field_21385 OVERLAY + f Lgfg$l; at field_21386 NO_OVERLAY + f Lgfg$c; au field_21344 CULL + f Lgfg$c; av field_21345 NO_CULL + f Lgfg$d; aw field_21346 NO_DEPTH_TEST + f Lgfg$d; ax field_21347 EQUAL_DEPTH_TEST + f Lgfg$d; ay field_21348 LEQUAL_DEPTH_TEST + f Lgfg$d; az field_44814 GREATER_DEPTH_TEST + f Ljava/lang/String; b field_21363 name + f Lgfg$p; c field_21364 NO_TRANSPARENCY + f Lgfg$p; d field_21366 ADDITIVE_TRANSPARENCY + f Lgfg$p; e field_21367 LIGHTNING_TRANSPARENCY + f Lgfg$p; f field_21368 GLINT_TRANSPARENCY + f Lgfg$p; g field_21369 CRUMBLING_TRANSPARENCY + f Lgfg$p; h field_21370 TRANSLUCENT_TRANSPARENCY + f Lgfg$m; i field_29434 NO_SHADER + f Lgfg$m; j field_29437 POSITION_COLOR_LIGHTMAP_SHADER + f Lgfg$m; k field_29438 POSITION_SHADER + f Lgfg$m; l field_29440 POSITION_TEX_SHADER + f Lgfg$m; m field_29441 POSITION_COLOR_TEX_LIGHTMAP_SHADER + f Lgfg$m; n field_29442 POSITION_COLOR_SHADER + f Lgfg$m; o field_29443 RENDERTYPE_SOLID_SHADER + f Lgfg$m; p field_29444 RENDERTYPE_CUTOUT_MIPPED_SHADER + f Lgfg$m; q field_29445 RENDERTYPE_CUTOUT_SHADER + f Lgfg$m; r field_29446 RENDERTYPE_TRANSLUCENT_SHADER + f Lgfg$m; s field_29447 RENDERTYPE_TRANSLUCENT_MOVING_BLOCK_SHADER + f Lgfg$m; t field_29449 RENDERTYPE_ARMOR_CUTOUT_NO_CULL_SHADER + f Lgfg$m; u field_29450 RENDERTYPE_ENTITY_SOLID_SHADER + f Lgfg$m; v field_29451 RENDERTYPE_ENTITY_CUTOUT_SHADER + f Lgfg$m; w field_29452 RENDERTYPE_ENTITY_CUTOUT_NO_CULL_SHADER + f Lgfg$m; x field_29404 RENDERTYPE_ENTITY_CUTOUT_NO_CULL_Z_OFFSET_SHADER + f Lgfg$m; y field_29405 RENDERTYPE_ITEM_ENTITY_TRANSLUCENT_CULL_SHADER + f Lgfg$m; z field_29406 RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER + m ()V A method_23537 method_23537 + m ()V B method_23538 method_23538 + m ()V C method_23539 method_23539 + m ()V D method_23540 method_23540 + m ()V E method_23541 method_23541 + m ()V F method_23542 method_23542 + m ()V G method_23502 method_23502 + m ()V H method_29368 method_29368 + m ()V I method_23504 method_23504 + m ()V J method_23505 method_23505 + m ()V K method_29994 method_29994 + m ()V L method_30675 method_30675 + m ()V M method_29995 method_29995 + m ()V N method_29370 method_29370 + m ()V O method_23510 method_23510 + m ()V P method_23511 method_23511 + m ()V Q method_23514 method_23514 + m ()V R method_23515 method_23515 + m ()V a method_23516 setupRenderState + m (F)V a method_23517 setupGlintTexturing + m ()V b method_23518 clearRenderState + m ()V c method_51780 method_51780 + m ()V d method_51781 method_51781 + m ()V e method_51782 method_51782 + m ()V f method_51783 method_51783 + m ()V g method_29376 method_29376 + m ()V h method_29377 method_29377 + m ()V i method_29378 method_29378 + m ()V j method_23519 method_23519 + m ()V k method_23520 method_23520 + m ()V l method_34552 method_34552 + m ()V m method_23522 method_23522 + m ()V n method_34553 method_34553 + m ()V o method_34554 method_34554 + m ()V p method_34555 method_34555 + m ()V q method_23524 method_23524 + m ()V r method_34556 method_34556 + m ()V s method_23801 method_23801 + m ()V t method_24467 method_24467 + m ()V u method_23531 method_23531 + m ()V v method_23532 method_23532 + m ()V w method_23533 method_23533 + m ()V x method_23534 method_23534 + m ()V y method_23535 method_23535 + m ()V z method_23536 method_23536 + m (Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)V + m ()V +c gfg$a net/minecraft/class_4668$class_4670 net/minecraft/client/renderer/RenderStateShard$BooleanStateShard + f Z aQ field_21390 enabled + m (Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;Z)V +c gfg$b net/minecraft/class_4668$class_8559 net/minecraft/client/renderer/RenderStateShard$ColorLogicStateShard + m (Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)V +c gfg$c net/minecraft/class_4668$class_4671 net/minecraft/client/renderer/RenderStateShard$CullStateShard + m (Z)V a method_23545 method_23545 + m (Z)V b method_23546 method_23546 + m (Z)V +c gfg$d net/minecraft/class_4668$class_4672 net/minecraft/client/renderer/RenderStateShard$DepthTestStateShard + f Ljava/lang/String; aQ field_22242 functionName + m (I)V a method_23547 method_23547 + m (I)V b method_23548 method_23548 + m (Ljava/lang/String;I)V +c gfg$e net/minecraft/class_4668$class_5939 net/minecraft/client/renderer/RenderStateShard$EmptyTextureStateShard + m ()Ljava/util/Optional; c method_23564 cutoutTexture + m ()V d method_34557 method_34557 + m ()V e method_34558 method_34558 + m (Ljava/lang/Runnable;Ljava/lang/Runnable;)V + m ()V +c gfg$f net/minecraft/class_4668$class_4675 net/minecraft/client/renderer/RenderStateShard$LayeringStateShard + m (Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)V +c gfg$g net/minecraft/class_4668$class_4676 net/minecraft/client/renderer/RenderStateShard$LightmapStateShard + m (Z)V a method_23551 method_23551 + m (Z)V b method_23552 method_23552 + m (Z)V +c gfg$h net/minecraft/class_4668$class_4677 net/minecraft/client/renderer/RenderStateShard$LineStateShard + f Ljava/util/OptionalDouble; aQ field_21392 width + m (Ljava/util/OptionalDouble;)V a method_23553 method_23553 + m (Ljava/util/OptionalDouble;)V b method_23554 method_23554 + m (Ljava/util/OptionalDouble;)V +c gfg$i net/minecraft/class_4668$class_5940 net/minecraft/client/renderer/RenderStateShard$MultiTextureStateShard + f Ljava/util/Optional; aQ field_29453 cutoutTexture + m (Lcom/google/common/collect/ImmutableList;)V a method_34559 method_34559 + m ()Lgfg$i$a; d method_34560 builder + m ()V e method_34561 method_34561 + m (Lcom/google/common/collect/ImmutableList;)V +c gfg$i$a net/minecraft/class_4668$class_5940$class_5941 net/minecraft/client/renderer/RenderStateShard$MultiTextureStateShard$Builder + f Lcom/google/common/collect/ImmutableList$Builder; a field_29454 builder + m ()Lgfg$i; a method_34562 build + m (Lakr;ZZ)Lgfg$i$a; a method_34563 add + m ()V +c gfg$j net/minecraft/class_4668$class_4682 net/minecraft/client/renderer/RenderStateShard$OffsetTexturingStateShard + m (FF)V a method_23561 method_23561 + m ()V c method_23562 method_23562 + m (FF)V +c gfg$k net/minecraft/class_4668$class_4678 net/minecraft/client/renderer/RenderStateShard$OutputStateShard + m (Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)V +c gfg$l net/minecraft/class_4668$class_4679 net/minecraft/client/renderer/RenderStateShard$OverlayStateShard + m (Z)V a method_23555 method_23555 + m (Z)V b method_23556 method_23556 + m (Z)V +c gfg$m net/minecraft/class_4668$class_5942 net/minecraft/client/renderer/RenderStateShard$ShaderStateShard + f Ljava/util/Optional; aQ field_29455 shader + m (Ljava/util/function/Supplier;)V a method_34564 method_34564 + m ()V c method_34565 method_34565 + m ()V d method_34566 method_34566 + m ()Lgfn; e method_34567 method_34567 + m ()V f method_34568 method_34568 + m (Ljava/util/function/Supplier;)V + m ()V +c gfg$n net/minecraft/class_4668$class_4683 net/minecraft/client/renderer/RenderStateShard$TextureStateShard + f Ljava/util/Optional; aQ field_21397 texture + f Z aR field_21398 blur + f Z aS field_21399 mipmap + m (Lakr;ZZ)V a method_23563 method_23563 + m ()V d method_23567 method_23567 + m (Lakr;ZZ)V +c gfg$o net/minecraft/class_4668$class_4684 net/minecraft/client/renderer/RenderStateShard$TexturingStateShard + m (Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)V +c gfg$p net/minecraft/class_4668$class_4685 net/minecraft/client/renderer/RenderStateShard$TransparencyStateShard + m (Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)V +c gfg$q net/minecraft/class_4668$class_4686 net/minecraft/client/renderer/RenderStateShard$WriteMaskStateShard + f Z aQ field_21400 writeColor + f Z aR field_21401 writeDepth + m (ZZ)V a method_23568 method_23568 + m (ZZ)V b method_23569 method_23569 + m (ZZ)V +c gfh net/minecraft/class_1921 net/minecraft/client/renderer/RenderType + f I aQ field_32772 BIG_BUFFER_SIZE + f I aR field_32774 SMALL_BUFFER_SIZE + f I aS field_32775 TRANSIENT_BUFFER_SIZE + f Lgfh$a; aT field_21695 LINES + f Lgfh$a; aU field_29456 LINE_STRIP + f I aV field_32777 MEGABYTE + f Lgfh; aW field_9178 SOLID + f Lgfh; aX field_9175 CUTOUT_MIPPED + f Lgfh; aY field_9174 CUTOUT + f Lgfh; aZ field_9179 TRANSLUCENT + f Lgfh; bA field_42519 TEXT_BACKGROUND + f Ljava/util/function/Function; bB field_33630 TEXT_INTENSITY + f Ljava/util/function/Function; bC field_34002 TEXT_POLYGON_OFFSET + f Ljava/util/function/Function; bD field_34003 TEXT_INTENSITY_POLYGON_OFFSET + f Ljava/util/function/Function; bE field_29639 TEXT_SEE_THROUGH + f Lgfh; bF field_42520 TEXT_BACKGROUND_SEE_THROUGH + f Ljava/util/function/Function; bG field_33631 TEXT_INTENSITY_SEE_THROUGH + f Lgfh; bH field_20970 LIGHTNING + f Lgfh; bI field_52255 DRAGON_RAYS + f Lgfh; bJ field_52307 DRAGON_RAYS_DEPTH + f Lgfh; bK field_25644 TRIPWIRE + f Lgfh; bL field_29457 END_PORTAL + f Lgfh; bM field_29458 END_GATEWAY + f Lgfh; bN field_48950 CLOUDS + f Lgfh; bO field_48951 CLOUDS_DEPTH_ONLY + f Ljava/util/function/Function; bP field_42521 DEBUG_LINE_STRIP + f Lgfh$a; bQ field_42522 DEBUG_FILLED_BOX + f Lgfh$a; bR field_42523 DEBUG_QUADS + f Lgfh$a; bS field_52256 DEBUG_STRUCTURE_QUADS + f Lgfh$a; bT field_44673 DEBUG_SECTION_QUADS + f Lgfh$a; bU field_44821 GUI + f Lgfh$a; bV field_44822 GUI_OVERLAY + f Lgfh$a; bW field_44823 GUI_TEXT_HIGHLIGHT + f Lgfh$a; bX field_44824 GUI_GHOST_RECIPE_OVERLAY + f Lcom/google/common/collect/ImmutableList; bY field_39002 CHUNK_BUFFER_LAYERS + f Lfbn; bZ field_20972 format + f Lgfh; ba field_25285 TRANSLUCENT_MOVING_BLOCK + f Ljava/util/function/Function; bb field_29622 ARMOR_CUTOUT_NO_CULL + f Ljava/util/function/Function; bc field_29623 ENTITY_SOLID + f Ljava/util/function/Function; bd field_29624 ENTITY_CUTOUT + f Ljava/util/function/BiFunction; be field_29625 ENTITY_CUTOUT_NO_CULL + f Ljava/util/function/BiFunction; bf field_29626 ENTITY_CUTOUT_NO_CULL_Z_OFFSET + f Ljava/util/function/Function; bg field_29627 ITEM_ENTITY_TRANSLUCENT_CULL + f Ljava/util/function/Function; bh field_29628 ENTITY_TRANSLUCENT_CULL + f Ljava/util/function/BiFunction; bi field_29629 ENTITY_TRANSLUCENT + f Ljava/util/function/BiFunction; bj field_38345 ENTITY_TRANSLUCENT_EMISSIVE + f Ljava/util/function/Function; bk field_29630 ENTITY_SMOOTH_CUTOUT + f Ljava/util/function/BiFunction; bl field_29631 BEACON_BEAM + f Ljava/util/function/Function; bm field_29632 ENTITY_DECAL + f Ljava/util/function/Function; bn field_29633 ENTITY_NO_OUTLINE + f Ljava/util/function/Function; bo field_29634 ENTITY_SHADOW + f Ljava/util/function/Function; bp field_29635 DRAGON_EXPLOSION_ALPHA + f Ljava/util/function/BiFunction; bq field_29636 EYES + f Lgfh; br field_20964 LEASH + f Lgfh; bs field_20965 WATER_MASK + f Lgfh; bt field_24473 ARMOR_ENTITY_GLINT + f Lgfh; bu field_26373 GLINT_TRANSLUCENT + f Lgfh; bv field_20967 GLINT + f Lgfh; bw field_20968 ENTITY_GLINT + f Lgfh; bx field_25488 ENTITY_GLINT_DIRECT + f Ljava/util/function/Function; by field_29637 CRUMBLING + f Ljava/util/function/Function; bz field_29638 TEXT + f Lfbn$c; ca field_20973 mode + f I cb field_20806 bufferSize + f Z cc field_20975 affectsCrumbling + f Z cd field_21402 sortOnUpload + m ()Lgfh; A method_49047 debugFilledBox + m (Lakr;)Lgfh; A method_37348 method_37348 + m ()Lgfh; B method_49042 debugQuads + m (Lakr;)Lgfh; B method_36436 method_36436 + m ()Lgfh; C method_61045 debugStructureQuads + m (Lakr;)Lgfh; C method_36437 method_36437 + m ()Lgfh; D method_51456 debugSectionQuads + m (Lakr;)Lgfh; D method_34833 method_34833 + m ()Lgfh; E method_51784 gui + m (Lakr;)Lgfh; E method_34834 method_34834 + m ()Lgfh; F method_51785 guiOverlay + m (Lakr;)Lgfh; F method_34835 method_34835 + m ()Lgfh; G method_51786 guiTextHighlight + m (Lakr;)Lgfh; G method_34837 method_34837 + m ()Lgfh; H method_51787 guiGhostRecipeOverlay + m (Lakr;)Lgfh; H method_34838 method_34838 + m ()Ljava/util/List; I method_22720 chunkBufferLayers + m (Lakr;)Lgfh; I method_34839 method_34839 + m ()I J method_22722 bufferSize + m (Lakr;)Lgfh; J method_34840 method_34840 + m ()Lfbn; K method_23031 format + m (Lakr;)Lgfh; K method_34822 method_34822 + m ()Lfbn$c; L method_23033 mode + m (Lakr;)Lgfh; L method_34823 method_34823 + m ()Ljava/util/Optional; M method_23289 outline + m (Lakr;)Lgfh; M method_34824 method_34824 + m ()Z N method_24295 isOutline + m (Lakr;)Lgfh; N method_34825 method_34825 + m ()Z O method_23037 affectsCrumbling + m (Lakr;)Lgfh; O method_34826 method_34826 + m ()Z P method_43332 canConsolidateConsecutiveGeometry + m (Lakr;)Lgfh; P method_34827 method_34827 + m ()Z Q method_60894 sortOnUpload + m ()Lgfh$b; R method_29381 translucentMovingBlockState + m ()Lgfh$b; S method_29996 tripwireState + m (D)Lgfh; a method_49043 debugLineStrip + m (Lakr;)Lgfh; a method_25448 armorCutoutNoCull + m (Lakr;FF)Lgfh; a method_55251 breezeWind + m (Lakr;Lgfg$p;)Lgfh; a method_34836 method_34836 + m (Lakr;Ljava/lang/Boolean;)Lgfh; a method_34829 method_34829 + m (Lakr;Z)Lgfh; a method_24293 entityCutoutNoCull + m (Lfbh;)V a method_60895 draw + m (Lgfg$m;)Lgfh$b; a method_34569 translucentState + m (Ljava/lang/Double;)Lgfh$a; a method_49044 method_49044 + m (Ljava/lang/String;Lakr;Z)Lgfh$a; a method_53490 createArmorCutoutNoCull + m (Ljava/lang/String;Lfbn;Lfbn$c;ILgfh$b;)Lgfh$a; a method_24048 create + m (Ljava/lang/String;Lfbn;Lfbn$c;IZZLgfh$b;)Lgfh$a; a method_24049 create + m (Z)Lgfh$a; a method_56848 createClouds + m (Lakr;)Lgfh; b method_53491 createArmorDecalCutoutNoCull + m (Lakr;FF)Lgfh; b method_23018 energySwirl + m (Lakr;Ljava/lang/Boolean;)Lgfh; b method_42598 method_42598 + m (Lakr;Z)Lgfh; b method_28115 entityCutoutNoCullZOffset + m ()Lgfh; c method_23577 solid + m (Lakr;)Lgfh; c method_23572 entitySolid + m (Lakr;Ljava/lang/Boolean;)Lgfh; c method_34830 method_34830 + m (Lakr;Z)Lgfh; c method_24294 entityTranslucent + m ()Lgfh; d method_23579 cutoutMipped + m (Lakr;)Lgfh; d method_23576 entityCutout + m (Lakr;Ljava/lang/Boolean;)Lgfh; d method_34831 method_34831 + m (Lakr;Z)Lgfh; d method_42599 entityTranslucentEmissive + m ()Lgfh; e method_23581 cutout + m (Lakr;)Lgfh; e method_23578 entityCutoutNoCull + m (Lakr;Ljava/lang/Boolean;)Lgfh; e method_34832 method_34832 + m (Lakr;Z)Lgfh; e method_23592 beaconBeam + m ()Lgfh; f method_23583 translucent + m (Lakr;)Lgfh; f method_28116 entityCutoutNoCullZOffset + m ()Lgfh; g method_29380 translucentMovingBlock + m (Lakr;)Lgfh; g method_29379 itemEntityTranslucentCull + m ()Lgfh; h method_23587 leash + m (Lakr;)Lgfh; h method_23689 entityTranslucentCull + m ()Lgfh; i method_23589 waterMask + m (Lakr;)Lgfh; i method_23580 entityTranslucent + m ()Lgfh; j method_27949 armorEntityGlint + m (Lakr;)Lgfh; j method_42600 entityTranslucentEmissive + m ()Lgfh; k method_30676 glintTranslucent + m (Lakr;)Lgfh; k method_23584 entitySmoothCutout + m ()Lgfh; l method_23590 glint + m (Lakr;)Lgfh; l method_23586 entityDecal + m ()Lgfh; m method_23591 entityGlint + m (Lakr;)Lgfh; m method_23588 entityNoOutline + m ()Lgfh; n method_29707 entityGlintDirect + m (Lakr;)Lgfh; n method_24469 entityShadow + m ()Lgfh; o method_49045 textBackground + m (Lakr;)Lgfh; o method_23573 dragonExplosionAlpha + m ()Lgfh; p method_49046 textBackgroundSeeThrough + m (Lakr;)Lgfh; p method_23026 eyes + m ()Lgfh; q method_23593 lightning + m (Lakr;)Lgfh; q method_55252 breezeEyes + m ()Lgfh; r method_61046 dragonRays + m (Lakr;)Lgfh; r method_23287 outline + m ()Lgfh; s method_61157 dragonRaysDepth + m (Lakr;)Lgfh; s method_23570 crumbling + m ()Lgfh; t method_29997 tripwire + m (Lakr;)Lgfh; t method_23028 text + m ()Lgfh; u method_23574 endPortal + m (Lakr;)Lgfh; u method_36434 textIntensity + m ()Lgfh; v method_34571 endGateway + m (Lakr;)Lgfh; v method_37345 textPolygonOffset + m ()Lgfh; w method_56849 clouds + m (Lakr;)Lgfh; w method_37346 textIntensityPolygonOffset + m ()Lgfh; x method_56850 cloudsDepthOnly + m (Lakr;)Lgfh; x method_23030 textSeeThrough + m ()Lgfh; y method_23594 lines + m (Lakr;)Lgfh; y method_36435 textIntensitySeeThrough + m ()Lgfh; z method_34572 lineStrip + m (Lakr;)Lgfh; z method_37347 method_37347 + m (Ljava/lang/String;Lfbn;Lfbn$c;IZZLjava/lang/Runnable;Ljava/lang/Runnable;)V + m ()V +c gfh$a net/minecraft/class_1921$class_4687 net/minecraft/client/renderer/RenderType$CompositeRenderType + f Ljava/util/function/BiFunction; aV field_29640 OUTLINE + f Lgfh$b; aW field_21403 state + f Ljava/util/Optional; aX field_21697 outline + f Z aY field_21851 isOutline + m ()Lgfh$b; R method_35784 state + m (Lakr;Lgfg$c;)Lgfh; a method_34844 method_34844 + m (Lgfh$b;)V a method_34842 method_34842 + m (Lgfh$b;Lakr;)Lgfh; a method_34843 method_34843 + m (Lgfh$b;)V b method_23595 method_23595 + m (Ljava/lang/String;Lfbn;Lfbn$c;IZZLgfh$b;)V + m ()V +c gfh$b net/minecraft/class_1921$class_4688 net/minecraft/client/renderer/RenderType$CompositeState + f Lgfg$e; a field_21406 textureState + f Lgfg$m; b field_29461 shaderState + f Lgfg$p; c field_21407 transparencyState + f Lgfg$d; d field_21411 depthTestState + f Lgfg$c; e field_21412 cullState + f Lgfg$g; f field_21413 lightmapState + f Lgfg$l; g field_21414 overlayState + f Lgfg$f; h field_21416 layeringState + f Lgfg$k; i field_21417 outputState + f Lgfg$o; j field_21418 texturingState + f Lgfg$q; k field_21419 writeMaskState + f Lgfg$h; l field_21420 lineState + f Lgfg$b; m field_44825 colorLogicState + f Lgfh$c; n field_21852 outlineProperty + f Lcom/google/common/collect/ImmutableList; o field_21422 states + m ()Lgfh$b$a; a method_23598 builder + m (Lgfg$e;Lgfg$m;Lgfg$p;Lgfg$d;Lgfg$c;Lgfg$g;Lgfg$l;Lgfg$f;Lgfg$k;Lgfg$o;Lgfg$q;Lgfg$h;Lgfg$b;Lgfh$c;)V +c gfh$b$a net/minecraft/class_1921$class_4688$class_4689 net/minecraft/client/renderer/RenderType$CompositeState$CompositeStateBuilder + f Lgfg$e; a field_29462 textureState + f Lgfg$m; b field_29463 shaderState + f Lgfg$p; c field_21424 transparencyState + f Lgfg$d; d field_21428 depthTestState + f Lgfg$c; e field_21429 cullState + f Lgfg$g; f field_21430 lightmapState + f Lgfg$l; g field_21431 overlayState + f Lgfg$f; h field_21433 layeringState + f Lgfg$k; i field_21434 outputState + f Lgfg$o; j field_21435 texturingState + f Lgfg$q; k field_21436 writeMaskState + f Lgfg$h; l field_21437 lineState + f Lgfg$b; m field_44826 colorLogicState + m (Lgfg$b;)Lgfh$b$a; a method_51788 setColorLogicState + m (Lgfg$c;)Lgfh$b$a; a method_23603 setCullState + m (Lgfg$d;)Lgfh$b$a; a method_23604 setDepthTestState + m (Lgfg$e;)Lgfh$b$a; a method_34577 setTextureState + m (Lgfg$f;)Lgfh$b$a; a method_23607 setLayeringState + m (Lgfg$g;)Lgfh$b$a; a method_23608 setLightmapState + m (Lgfg$h;)Lgfh$b$a; a method_23609 setLineState + m (Lgfg$k;)Lgfh$b$a; a method_23610 setOutputState + m (Lgfg$l;)Lgfh$b$a; a method_23611 setOverlayState + m (Lgfg$m;)Lgfh$b$a; a method_34578 setShaderState + m (Lgfg$o;)Lgfh$b$a; a method_23614 setTexturingState + m (Lgfg$p;)Lgfh$b$a; a method_23615 setTransparencyState + m (Lgfg$q;)Lgfh$b$a; a method_23616 setWriteMaskState + m (Lgfh$c;)Lgfh$b; a method_24297 createCompositeState + m (Z)Lgfh$b; a method_23617 createCompositeState + m ()V +c gfh$c net/minecraft/class_1921$class_4750 net/minecraft/client/renderer/RenderType$OutlineProperty + f Lgfh$c; a field_21853 NONE + f Lgfh$c; b field_21854 IS_OUTLINE + f Lgfh$c; c field_21855 AFFECTS_OUTLINE + f Ljava/lang/String; d field_22243 name + f [Lgfh$c; e field_21856 $VALUES + m ()[Lgfh$c; a method_36916 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gfi net/minecraft/class_4740 net/minecraft/client/renderer/RunningTrimmedMean + f [J a field_21800 values + f I b field_21801 count + f I c field_21802 cursor + m (J)J a method_24214 registerValueAndGetMean + m (I)V +c gfj net/minecraft/class_4603 net/minecraft/client/renderer/ScreenEffectRenderer + f Lakr; a field_20986 UNDERWATER_LOCATION + m (Lcmx;)Ldtc; a method_24225 getViewBlockingState + m (Lfgo;Lfbi;)V a method_23067 renderScreenEffect + m (Lgql;Lfbi;)V a method_23068 renderTex + m (Lfgo;Lfbi;)V b method_23069 renderWater + m (Lfgo;Lfbi;)V c method_23070 renderFire + m ()V + m ()V +c gfk net/minecraft/class_750 net/minecraft/client/renderer/SectionBufferBuilderPack + f I a field_46902 TOTAL_BUFFERS_SIZE + f Ljava/util/List; b field_52159 RENDER_TYPES + f Ljava/util/Map; c field_3951 buffers + m ()V a method_22705 clearAll + m (Lgfh;)Lfbf; a method_3154 buffer + m (Lit/unimi/dsi/fastutil/objects/Reference2ObjectArrayMap;)V a method_60896 method_60896 + m ()V b method_23501 discardAll + m ()V + m ()V +c gfl net/minecraft/class_8901 net/minecraft/client/renderer/SectionBufferBuilderPool + f Lorg/slf4j/Logger; a field_46904 LOGGER + f Ljava/util/Queue; b field_46905 freeBuffers + f I c field_46906 freeBufferCount + m ()Lgfk; a method_54642 acquire + m (I)Lgfl; a method_54643 allocate + m (Lgfk;)V a method_54644 release + m ()Z b method_54645 isEmpty + m ()I c method_54646 getFreeBufferCount + m (Ljava/util/List;)V + m ()V +c gfm net/minecraft/class_8679 net/minecraft/client/renderer/SectionOcclusionGraph + f Lorg/slf4j/Logger; a field_45617 LOGGER + f [Lji; b field_45618 DIRECTIONS + f I c field_45619 MINIMUM_ADVANCED_CULLING_DISTANCE + f D d field_45620 CEILED_SECTION_DIAGONAL + f Z e field_45621 needsFullUpdate + f Ljava/util/concurrent/Future; f field_45622 fullUpdateTask + f Lgfq; g field_45623 viewArea + f Ljava/util/concurrent/atomic/AtomicReference; h field_45624 currentGraph + f Ljava/util/concurrent/atomic/AtomicReference; i field_45625 nextGraphEvents + f Ljava/util/concurrent/atomic/AtomicBoolean; j field_45626 needsFrustumUpdate + m ()V a method_52817 invalidate + m (J)Ljava/util/List; a method_52818 method_52818 + m (Ldcd;)V a method_52819 onChunkLoaded + m (Lffy;Lexc;Z)V a method_52820 method_52820 + m (Lffy;Ljava/util/Queue;)V a method_52821 initializeQueueForFullUpdate + m (Lgfm$a;Ldcd;)V a method_52822 addNeighbors + m (Lgfm$b;)V a method_52823 queueSectionsWithNewNeighbors + m (Lgfm$b;Lgfm$d;)V a method_52824 method_52824 + m (Lgfm$c;Lexc;Ljava/util/Queue;ZLjava/util/function/Consumer;)V a method_52825 runUpdates + m (Lgfq;)V a method_52826 waitAndReset + m (Lgia$b;)V a method_52827 onSectionCompiled + m (Lgie;Ljava/util/List;)V a method_52828 addSectionsInFrustum + m (Lgie;Ljava/util/List;Lgia$b;)V a method_52829 method_52829 + m (Ljd;Lgfm$d;)D a method_52830 method_52830 + m (Ljd;Lgia$b;Lji;)Lgia$b; a method_52831 getRelativeFrom + m (Ljd;Ljd;)Z a method_52832 isInViewDistance + m (ZLffy;Lexc;)V a method_52833 scheduleFullUpdate + m (ZLffy;Lgie;Ljava/util/List;)V a method_52834 update + m (ZLgie;Ljava/util/List;Lexc;)V a method_52835 runPartialUpdate + m ()Z b method_52836 consumeFrustumUpdate + m (Lgia$b;)Lgfm$d; b method_52837 getNode + m (Lgia$b;)V c method_52838 method_52838 + m ()V + m ()V +c gfm$a net/minecraft/class_8679$class_8680 net/minecraft/client/renderer/SectionOcclusionGraph$GraphEvents + f Lit/unimi/dsi/fastutil/longs/LongSet; a comp_1618 chunksWhichReceivedNeighbors + f Ljava/util/concurrent/BlockingQueue; b comp_1619 sectionsToPropagateFrom + m ()Lit/unimi/dsi/fastutil/longs/LongSet; a comp_1618 chunksWhichReceivedNeighbors + m ()Ljava/util/concurrent/BlockingQueue; b comp_1619 sectionsToPropagateFrom + m ()V + m (Lit/unimi/dsi/fastutil/longs/LongSet;Ljava/util/concurrent/BlockingQueue;)V +c gfm$b net/minecraft/class_8679$class_8681 net/minecraft/client/renderer/SectionOcclusionGraph$GraphState + f Lgfm$c; a comp_1620 storage + f Lgfm$a; b comp_1621 events + m ()Lgfm$c; a comp_1620 storage + m ()Lgfm$a; b comp_1621 events + m (I)V + m (Lgfm$c;Lgfm$a;)V +c gfm$c net/minecraft/class_8679$class_6600 net/minecraft/client/renderer/SectionOcclusionGraph$GraphStorage + f Lgfm$e; a field_45627 sectionToNodeMap + f Ljava/util/LinkedHashSet; b field_34819 renderSections + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; c field_45628 chunksWaitingForNeighbors + m (I)V +c gfm$d net/minecraft/class_8679$class_762 net/minecraft/client/renderer/SectionOcclusionGraph$Node + f Lgia$b; a field_4124 section + f I b field_4122 step + f B c field_4125 sourceDirections + f B d field_4126 directions + m ()Z a method_34813 hasSourceDirections + m (BLji;)V a method_3299 setDirections + m (I)Z a method_34814 hasSourceDirection + m (Lji;)Z a method_3298 hasDirection + m (Lji;)V b method_34816 addSourceDirection + m (Lgia$b;Lji;I)V +c gfm$e net/minecraft/class_8679$class_5972 net/minecraft/client/renderer/SectionOcclusionGraph$SectionToNodeMap + f [Lgfm$d; a field_29620 nodes + m (Lgia$b;)Lgfm$d; a method_34820 get + m (Lgia$b;Lgfm$d;)V a method_34821 put + m (I)V +c gfn net/minecraft/class_5944 net/minecraft/client/renderer/ShaderInstance + f Ljava/util/List; A field_29490 uniforms + f Ljava/util/List; B field_29491 uniformLocations + f Ljava/util/Map; C field_29492 uniformMap + f I D field_29493 programId + f Ljava/lang/String; E field_29494 name + f Z F field_29495 dirty + f Lfaw; G field_29467 vertexProgram + f Lfaw; H field_29468 fragmentProgram + f Lfbn; I field_29469 vertexFormat + f Ljava/lang/String; a field_32778 SHADER_PATH + f Lfaz; b field_29470 MODEL_VIEW_MATRIX + f Lfaz; c field_29471 PROJECTION_MATRIX + f Lfaz; d field_29472 TEXTURE_MATRIX + f Lfaz; e field_29473 SCREEN_SIZE + f Lfaz; f field_29474 COLOR_MODULATOR + f Lfaz; g field_29475 LIGHT0_DIRECTION + f Lfaz; h field_29476 LIGHT1_DIRECTION + f Lfaz; i field_42231 GLINT_ALPHA + f Lfaz; j field_29477 FOG_START + f Lfaz; k field_29478 FOG_END + f Lfaz; l field_29479 FOG_COLOR + f Lfaz; m field_36373 FOG_SHAPE + f Lfaz; n field_29480 LINE_WIDTH + f Lfaz; o field_29481 GAME_TIME + f Lfaz; p field_29482 CHUNK_OFFSET + f Ljava/lang/String; q field_40512 SHADER_CORE_PATH + f Ljava/lang/String; r field_32779 SHADER_INCLUDE_PATH + f Lorg/slf4j/Logger; s field_29483 LOGGER + f Lfar; t field_29484 DUMMY_UNIFORM + f Z u field_32780 ALWAYS_REAPPLY + f Lgfn; v field_29485 lastAppliedShader + f I w field_29486 lastProgramId + f Ljava/util/Map; x field_29487 samplerMap + f Ljava/util/List; y field_29488 samplerNames + f Ljava/util/List; z field_29489 samplerLocations + m (Lauh;Lfaw$a;Ljava/lang/String;)Lfaw; a method_34579 getOrCreate + m (Lcom/google/gson/JsonElement;)V a method_34580 parseSamplerNode + m (Lfbn$c;Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lfam;)V a method_60897 setDefaultUniforms + m (Ljava/lang/String;)Lfaz; a method_34582 getUniform + m (Ljava/lang/String;Ljava/lang/Object;)V a method_34583 setSampler + m (Lcom/google/gson/JsonElement;)V b method_34584 parseUniformNode + m (Ljava/lang/String;)Lfar; b method_35785 safeGetUniform + m ()V f method_34585 clear + m ()V g method_34586 apply + m ()Lfbn; h method_35786 getVertexFormat + m ()Ljava/lang/String; i method_35787 getName + m ()V j method_34588 updateLocations + m (Lauh;Ljava/lang/String;Lfbn;)V + m ()V +c gfn$1 net/minecraft/class_5944$1 net/minecraft/client/renderer/ShaderInstance$1 + f Ljava/lang/String; a field_29496 val$relativePath + f Lauh; b field_29497 val$resourceProvider + f Ljava/util/Set; c field_29498 importedPaths + m (Ljava/lang/String;Lauh;)V +c gfo net/minecraft/class_4722 net/minecraft/client/renderer/Sheets + f Lgsq; A field_21722 CHEST_LOCATION_RIGHT + f Lgsq; B field_21723 ENDER_CHEST_LOCATION + f Lgfh; C field_21724 SHULKER_BOX_SHEET_TYPE + f Lgfh; D field_21725 BED_SHEET_TYPE + f Lgfh; E field_21726 BANNER_SHEET_TYPE + f Lgfh; F field_21727 SHIELD_SHEET_TYPE + f Lgfh; G field_21728 SIGN_SHEET_TYPE + f Lgfh; H field_21729 CHEST_SHEET_TYPE + f Lgfh; I field_42070 ARMOR_TRIMS_SHEET_TYPE + f Lgfh; J field_46070 ARMOR_TRIMS_DECAL_SHEET_TYPE + f Lgfh; K field_21700 SOLID_BLOCK_SHEET + f Lgfh; L field_21701 CUTOUT_BLOCK_SHEET + f Lgfh; M field_25286 TRANSLUCENT_ITEM_CULL_BLOCK_SHEET + f Lgfh; N field_21703 TRANSLUCENT_CULL_BLOCK_SHEET + f Ljava/util/Map; O field_28252 BANNER_MATERIALS + f Ljava/util/Map; P field_28253 SHIELD_MATERIALS + f Lakr; a field_21704 SHULKER_SHEET + f Lakr; b field_21705 BED_SHEET + f Lakr; c field_21706 BANNER_SHEET + f Lakr; d field_21707 SHIELD_SHEET + f Lakr; e field_21708 SIGN_SHEET + f Lakr; f field_21709 CHEST_SHEET + f Lakr; g field_42071 ARMOR_TRIMS_SHEET + f Lakr; h field_42910 DECORATED_POT_SHEET + f Lgsq; i field_21710 DEFAULT_SHULKER_TEXTURE_LOCATION + f Ljava/util/List; j field_21711 SHULKER_TEXTURE_LOCATION + f Ljava/util/Map; k field_21712 SIGN_MATERIALS + f Ljava/util/Map; l field_40515 HANGING_SIGN_MATERIALS + f Lgsq; m field_49769 BANNER_BASE + f Lgsq; n field_49770 SHIELD_BASE + f Ljava/util/Map; o field_42911 DECORATED_POT_MATERIALS + f Lgsq; p field_51914 DECORATED_POT_BASE + f Lgsq; q field_51915 DECORATED_POT_SIDE + f [Lgsq; r field_21713 BED_TEXTURES + f Lgsq; s field_21714 CHEST_TRAP_LOCATION + f Lgsq; t field_21715 CHEST_TRAP_LOCATION_LEFT + f Lgsq; u field_21716 CHEST_TRAP_LOCATION_RIGHT + f Lgsq; v field_21717 CHEST_XMAS_LOCATION + f Lgsq; w field_21718 CHEST_XMAS_LOCATION_LEFT + f Lgsq; x field_21719 CHEST_XMAS_LOCATION_RIGHT + f Lgsq; y field_21720 CHEST_LOCATION + f Lgsq; z field_21721 CHEST_LOCATION_LEFT + m ()Lgfh; a method_24059 bannerSheet + m (I)[Lgsq; a method_24060 method_24060 + m (Lakq;)Lgsq; a method_49341 getDecoratedPotMaterial + m (Lakr;)Lgsq; a method_49342 createDecoratedPotMaterial + m (Lcti;)Lgsq; a method_24061 method_24061 + m (Ldqh;Ldtu;Z)Lgsq; a method_24062 chooseMaterial + m (Ldtu;Lgsq;Lgsq;Lgsq;)Lgsq; a method_24063 chooseMaterial + m (Ldup;)Lgsq; a method_33082 getSignMaterial + m (Ljava/lang/String;)Lgsq; a method_24065 chestMaterial + m (Ljm$c;)Lgsq; a method_60576 method_60576 + m (Ljm;)Lgsq; a method_33081 getBannerMaterial + m (Z)Lgfh; a method_48480 armorTrimsSheet + m ()Lgfh; b method_24067 shieldSheet + m (Lakr;)Lgsq; b method_58138 method_58138 + m (Ldup;)Lgsq; b method_45781 getHangingSignMaterial + m (Ljava/lang/String;)Lgsq; b method_24068 method_24068 + m (Ljm;)Lgsq; b method_33083 getShieldMaterial + m ()Lgfh; c method_24069 bedSheet + m (Lakr;)Lgsq; c method_58139 method_58139 + m (Ldup;)Lgsq; c method_24064 createSignMaterial + m ()Lgfh; d method_24070 shulkerBoxSheet + m (Ldup;)Lgsq; d method_45782 createHangingSignMaterial + m ()Lgfh; e method_24071 signSheet + m ()Lgfh; f method_45783 hangingSignSheet + m ()Lgfh; g method_24072 chestSheet + m ()Lgfh; h method_24073 solidBlockSheet + m ()Lgfh; i method_24074 cutoutBlockSheet + m ()Lgfh; j method_29382 translucentItemSheet + m ()Lgfh; k method_24076 translucentCullBlockSheet + m ()V + m ()V +c gfo$1 net/minecraft/class_4722$1 net/minecraft/client/renderer/Sheets$1 + f [I a field_21482 $SwitchMap$net$minecraft$world$level$block$state$properties$ChestType + m ()V +c gfp net/minecraft/class_4723 net/minecraft/client/renderer/SpriteCoordinateExpander + f Lfbm; a field_21730 delegate + f Lgql; b field_21731 sprite + m (Lfbm;Lgql;)V +c gfq net/minecraft/class_769 net/minecraft/client/renderer/ViewArea + f Lgex; a field_4146 levelRenderer + f Ldcw; b field_4151 level + f I c field_4149 sectionGridSizeY + f I d field_4148 sectionGridSizeX + f I e field_4147 sectionGridSizeZ + f [Lgia$b; f field_4150 sections + f I g field_45629 viewDistance + m ()V a method_3327 releaseAllBuffers + m (DD)V a method_3330 repositionCamera + m (I)V a method_3325 setViewDistance + m (III)I a method_3326 getSectionIndex + m (IIIZ)V a method_16040 setDirty + m (Lgia;)V a method_3324 createSections + m (Ljd;)Lgia$b; a method_3323 getRenderSectionAt + m ()I b method_52839 getViewDistance + m ()Ldcy; c method_52840 getLevelHeightAccessor + m (Lgia;Ldcw;ILgex;)V +c gfr net/minecraft/class_3682 net/minecraft/client/renderer/VirtualScreen + f Lfgo; a field_16256 minecraft + f Lfak; b field_16255 screenManager + m (Lfaa;Ljava/lang/String;Ljava/lang/String;)Lfam; a method_16038 newWindow + m (Lfgo;)V +c gfs net/minecraft/class_773 net/minecraft/client/renderer/block/BlockModelShaper + f Ljava/util/Map; a field_4162 modelByStateCache + f Lgst; b field_4163 modelManager + m ()Lgst; a method_3333 getModelManager + m (Lakr;Ldtc;)Lgsu; a method_3336 stateToModelLocation + m (Ldtc;)Lgql; a method_3339 getParticleIcon + m (Lduf;Ljava/lang/Comparable;)Ljava/lang/String; a method_3334 getValue + m (Ljava/util/Map;)V a method_45784 replaceCache + m (Ldtc;)Lgsm; b method_3335 getBlockModel + m (Ljava/util/Map;)Ljava/lang/String; b method_3338 statePropertiesToString + m (Ldtc;)Lgsu; c method_3340 stateToModelLocation + m (Lgst;)V +c gft net/minecraft/class_776 net/minecraft/client/renderer/block/BlockRenderDispatcher + f Lgfs; a field_4168 blockModelShaper + f Lgfv; b field_4170 modelRenderer + f Lgem; c field_27742 blockEntityRenderer + f Lgfu; d field_4167 liquidBlockRenderer + f Layw; e field_4169 random + f Lfhq; f field_20987 blockColors + m ()Lgfs; a method_3351 getBlockModelShaper + m (Ldtc;)Lgsm; a method_3349 getBlockModel + m (Ldtc;Lfbi;Lgez;II)V a method_3353 renderSingleBlock + m (Ldtc;Ljd;Ldbz;Lfbi;Lfbm;)V a method_23071 renderBreakingTexture + m (Ldtc;Ljd;Ldbz;Lfbi;Lfbm;ZLayw;)V a method_3355 renderBatched + m (Ljd;Ldbz;Lfbm;Ldtc;Lepe;)V a method_3352 renderLiquid + m ()Lgfv; b method_3350 getModelRenderer + m (Lgfs;Lgem;Lfhq;)V +c gft$1 net/minecraft/class_776$1 net/minecraft/client/renderer/block/BlockRenderDispatcher$1 + f [I a field_4172 $SwitchMap$net$minecraft$world$level$block$RenderShape + m ()V +c gfu net/minecraft/class_775 net/minecraft/client/renderer/block/LiquidBlockRenderer + f F a field_32781 MAX_FLUID_HEIGHT + f [Lgql; b field_4165 lavaIcons + f [Lgql; c field_4166 waterIcons + f Lgql; d field_4164 waterOverlay + m ()V a method_3345 setupSprites + m (Ldbz;Lepd;FFFLjd;)F a method_40077 calculateAverageHeight + m (Ldbz;Lepd;Ljd;)F a method_40078 getHeight + m (Ldbz;Lepd;Ljd;Ldtc;Lepe;)F a method_40079 getHeight + m (Ldbz;Ljd;)I a method_3343 getLightColor + m (Ldbz;Ljd;Lepe;Ldtc;Lji;Lepe;)Z a method_29708 shouldRenderFace + m (Ldbz;Ljd;Lfbm;Ldtc;Lepe;)V a method_3347 tesselate + m (Ldcc;Ljd;Ldtc;Lji;)Z a method_29709 isFaceOccludedBySelf + m (Ldcc;Ljd;Lji;FLdtc;)Z a method_3344 isFaceOccludedByNeighbor + m (Ldcc;Lji;FLjd;Ldtc;)Z a method_29710 isFaceOccludedByState + m (Lepe;Lepe;)Z a method_3348 isNeighborSameFluid + m (Lfbm;FFFFFFFFI)V a method_23072 vertex + m ([FF)V a method_40080 addWeightedHeight + m ()V +c gfu$1 net/minecraft/class_775$1 net/minecraft/client/renderer/block/LiquidBlockRenderer$1 + f [I a field_36387 $SwitchMap$net$minecraft$core$Direction + m ()V +c gfv net/minecraft/class_778 net/minecraft/client/renderer/block/ModelBlockRenderer + f I a field_32782 FACE_CUBIC + f I b field_32783 FACE_PARTIAL + f [Lji; c field_27743 DIRECTIONS + f Lfhq; d field_4178 blockColors + f I e field_32784 CACHE_SIZE + f Ljava/lang/ThreadLocal; f field_4179 CACHE + m ()V a method_20544 enableCaching + m (Ldbz;Ldtc;Ljd;IIZLfbi;Lfbm;Ljava/util/List;Ljava/util/BitSet;)V a method_3370 renderModelFaceFlat + m (Ldbz;Ldtc;Ljd;Lfbi;Lfbm;Ljava/util/List;[FLjava/util/BitSet;Lgfv$b;I)V a method_3363 renderModelFaceAO + m (Ldbz;Ldtc;Ljd;Lfbm;Lfbi$a;Lgfw;FFFFIIIII)V a method_23073 putQuadData + m (Ldbz;Ldtc;Ljd;[ILji;[FLjava/util/BitSet;)V a method_3364 calculateShape + m (Ldbz;Lgsm;Ldtc;Ljd;Lfbi;Lfbm;ZLayw;JI)V a method_3374 tesselateBlock + m (Lfbi$a;Lfbm;FFFLjava/util/List;II)V a method_3365 renderQuadList + m (Lfbi$a;Lfbm;Ldtc;Lgsm;FFFII)V a method_3367 renderModel + m ()V b method_20545 clearCache + m (Ldbz;Lgsm;Ldtc;Ljd;Lfbi;Lfbm;ZLayw;JI)V b method_3361 tesselateWithAO + m (Ldbz;Lgsm;Ldtc;Ljd;Lfbi;Lfbm;ZLayw;JI)V c method_3373 tesselateWithoutAO + m (Lfhq;)V + m ()V +c gfv$1 net/minecraft/class_778$1 net/minecraft/client/renderer/block/ModelBlockRenderer$1 + f [I a field_4197 $SwitchMap$net$minecraft$core$Direction + m ()V +c gfv$a net/minecraft/class_778$class_779 net/minecraft/client/renderer/block/ModelBlockRenderer$AdjacencyInfo + f Lgfv$a; a field_4181 DOWN + f Lgfv$a; b field_4182 UP + f Lgfv$a; c field_4183 NORTH + f Lgfv$a; d field_4184 SOUTH + f Lgfv$a; e field_4187 WEST + f Lgfv$a; f field_4186 EAST + f [Lji; g field_4191 corners + f Z h field_4189 doNonCubicWeight + f [Lgfv$e; i field_4192 vert0Weights + f [Lgfv$e; j field_4185 vert1Weights + f [Lgfv$e; k field_4180 vert2Weights + f [Lgfv$e; l field_4188 vert3Weights + f [Lgfv$a; m field_4190 BY_FACING + f [Lgfv$a; n field_4193 $VALUES + m ()[Lgfv$a; a method_36917 $values + m (Lji;)Lgfv$a; a method_3378 fromFacing + m ([Lgfv$a;)V a method_3383 method_3383 + m (Ljava/lang/String;I[Lji;FZ[Lgfv$e;[Lgfv$e;[Lgfv$e;[Lgfv$e;)V + m ()V +c gfv$b net/minecraft/class_778$class_780 net/minecraft/client/renderer/block/ModelBlockRenderer$AmbientOcclusionFace + f [F a field_4196 brightness + f [I b field_4194 lightmap + m (IIII)I a method_3386 blend + m (IIIIFFFF)I a method_3389 blend + m (Ldbz;Ldtc;Ljd;Lji;[FLjava/util/BitSet;Z)V a method_3388 calculate + m ()V +c gfv$c net/minecraft/class_778$class_781 net/minecraft/client/renderer/block/ModelBlockRenderer$AmbientVertexRemap + f Lgfv$c; a field_4199 DOWN + f Lgfv$c; b field_4200 UP + f Lgfv$c; c field_4204 NORTH + f Lgfv$c; d field_4205 SOUTH + f Lgfv$c; e field_4206 WEST + f Lgfv$c; f field_4207 EAST + f I g field_4203 vert0 + f I h field_4201 vert1 + f I i field_4198 vert2 + f I j field_4209 vert3 + f [Lgfv$c; k field_4202 BY_FACING + f [Lgfv$c; l field_4208 $VALUES + m ()[Lgfv$c; a method_36918 $values + m (Lji;)Lgfv$c; a method_3394 fromFacing + m ([Lgfv$c;)V a method_3390 method_3390 + m (Ljava/lang/String;IIIII)V + m ()V +c gfv$d net/minecraft/class_778$class_4303 net/minecraft/client/renderer/block/ModelBlockRenderer$Cache + f Z a field_19320 enabled + f Lit/unimi/dsi/fastutil/longs/Long2IntLinkedOpenHashMap; b field_19321 colorCache + f Lit/unimi/dsi/fastutil/longs/Long2FloatLinkedOpenHashMap; c field_19322 brightnessCache + m ()V a method_20548 enable + m (Ldtc;Ldbz;Ljd;)I a method_20549 getLightColor + m ()V b method_20550 disable + m (Ldtc;Ldbz;Ljd;)F b method_20551 getShadeBrightness + m ()Lit/unimi/dsi/fastutil/longs/Long2FloatLinkedOpenHashMap; c method_20552 method_20552 + m ()Lit/unimi/dsi/fastutil/longs/Long2IntLinkedOpenHashMap; d method_20553 method_20553 + m ()V +c gfv$d$1 net/minecraft/class_778$class_4303$1 net/minecraft/client/renderer/block/ModelBlockRenderer$Cache$1 + f Lgfv$d; a field_19323 field_19323 + m (Lgfv$d;IF)V +c gfv$d$2 net/minecraft/class_778$class_4303$2 net/minecraft/client/renderer/block/ModelBlockRenderer$Cache$2 + f Lgfv$d; a field_19324 field_19324 + m (Lgfv$d;IF)V +c gfv$e net/minecraft/class_778$class_782 net/minecraft/client/renderer/block/ModelBlockRenderer$SizeInfo + f Lgfv$e; a field_4210 DOWN + f Lgfv$e; b field_4212 UP + f Lgfv$e; c field_4211 NORTH + f Lgfv$e; d field_4213 SOUTH + f Lgfv$e; e field_4215 WEST + f Lgfv$e; f field_4219 EAST + f Lgfv$e; g field_4220 FLIP_DOWN + f Lgfv$e; h field_4217 FLIP_UP + f Lgfv$e; i field_4218 FLIP_NORTH + f Lgfv$e; j field_4221 FLIP_SOUTH + f Lgfv$e; k field_4216 FLIP_WEST + f Lgfv$e; l field_4214 FLIP_EAST + f I m field_4222 shape + f [Lgfv$e; n field_4223 $VALUES + m ()[Lgfv$e; a method_36919 $values + m (Ljava/lang/String;ILji;Z)V + m ()V +c gfw net/minecraft/class_777 net/minecraft/client/renderer/block/model/BakedQuad + f [I a field_4175 vertices + f I b field_4174 tintIndex + f Lji; c field_4173 direction + f Lgql; d field_4176 sprite + f Z e field_22441 shade + m ()Lgql; a method_35788 getSprite + m ()[I b method_3357 getVertices + m ()Z c method_3360 isTinted + m ()I d method_3359 getTintIndex + m ()Lji; e method_3358 getDirection + m ()Z f method_24874 isShade + m ([IILji;Lgql;Z)V +c gfx net/minecraft/class_785 net/minecraft/client/renderer/block/model/BlockElement + f Lorg/joml/Vector3f; a field_4228 from + f Lorg/joml/Vector3f; b field_4231 to + f Ljava/util/Map; c field_4230 faces + f Lgfz; d field_4232 rotation + f Z e field_4229 shade + f Z f field_32785 DEFAULT_RESCALE + f F g field_32786 MIN_EXTENT + f F h field_32787 MAX_EXTENT + m ()V a method_3402 fillUvs + m (Lji;)[F a method_3401 uvsByFace + m (Lorg/joml/Vector3f;Lorg/joml/Vector3f;Ljava/util/Map;Lgfz;Z)V +c gfx$1 net/minecraft/class_785$1 net/minecraft/client/renderer/block/model/BlockElement$1 + f [I a field_4233 $SwitchMap$net$minecraft$core$Direction + m ()V +c gfx$a net/minecraft/class_785$class_786 net/minecraft/client/renderer/block/model/BlockElement$Deserializer + f Z a field_32788 DEFAULT_SHADE + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/Map; a method_3412 getFaces + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lgfx; a method_3406 deserialize + m (Lcom/google/gson/JsonObject;)Lgfz; a method_3410 getRotation + m (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lorg/joml/Vector3f; a method_3409 getVector3f + m (Ljava/lang/String;)Lji; a method_3408 getFacing + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/Map; b method_3404 filterNullFromFaces + m (Lcom/google/gson/JsonObject;)F b method_3403 getAngle + m (Lcom/google/gson/JsonObject;)Lji$a; c method_3411 getAxis + m (Lcom/google/gson/JsonObject;)Lorg/joml/Vector3f; d method_3405 getTo + m (Lcom/google/gson/JsonObject;)Lorg/joml/Vector3f; e method_3407 getFrom + m ()V +c gfy net/minecraft/class_783 net/minecraft/client/renderer/block/model/BlockElementFace + f I a field_32789 NO_TINT + f Lji; b comp_2867 cullForDirection + f I c comp_2868 tintIndex + f Ljava/lang/String; d comp_2869 texture + f Lgga; e comp_2870 uv + m ()Lji; a comp_2867 cullForDirection + m ()I b comp_2868 tintIndex + m ()Ljava/lang/String; c comp_2869 texture + m ()Lgga; d comp_2870 uv + m (Lji;ILjava/lang/String;Lgga;)V +c gfy$a net/minecraft/class_783$class_784 net/minecraft/client/renderer/block/model/BlockElementFace$Deserializer + f I a field_32790 DEFAULT_TINT_INDEX + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lgfy; a method_3397 deserialize + m (Lcom/google/gson/JsonObject;)I a method_3400 getTintIndex + m (Lcom/google/gson/JsonObject;)Ljava/lang/String; b method_3399 getTexture + m (Lcom/google/gson/JsonObject;)Lji; c method_3398 getCullFacing + m ()V +c gfz net/minecraft/class_789 net/minecraft/client/renderer/block/model/BlockElementRotation + f Lorg/joml/Vector3f; a comp_1118 origin + f Lji$a; b comp_1119 axis + f F c comp_1120 angle + f Z d comp_1121 rescale + m ()Lorg/joml/Vector3f; a comp_1118 origin + m ()Lji$a; b comp_1119 axis + m ()F c comp_1120 angle + m ()Z d comp_1121 rescale + m (Lorg/joml/Vector3f;Lji$a;FZ)V +c gga net/minecraft/class_787 net/minecraft/client/renderer/block/model/BlockFaceUV + f [F a field_4235 uvs + f I b field_4234 rotation + m (I)F a method_3415 getU + m ([F)V a method_3417 setMissingUv + m (I)F b method_3416 getV + m (I)I c method_3414 getReverseIndex + m (I)I d method_3413 getShiftedIndex + m ([FI)V +c gga$a net/minecraft/class_787$class_788 net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer + f I a field_32791 DEFAULT_ROTATION + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lgga; a method_3418 deserialize + m (Lcom/google/gson/JsonObject;)I a method_3420 getRotation + m (Lcom/google/gson/JsonObject;)[F b method_3419 getUVs + m ()V +c ggb net/minecraft/class_793 net/minecraft/client/renderer/block/model/BlockModel + f Lcom/google/gson/Gson; a field_4254 GSON + f Ljava/lang/String; b field_32792 PARTICLE_TEXTURE_REFERENCE + f Ljava/lang/String; c field_4252 name + f Ljava/util/Map; d field_4251 textureMap + f Lggb; e field_4253 parent + f Lakr; f field_4247 parentLocation + f Lorg/slf4j/Logger; g field_4248 LOGGER + f Lggd; h field_4249 FACE_BAKERY + f C i field_32793 REFERENCE_CHAR + f Z j field_42912 DEFAULT_AMBIENT_OCCLUSION + f Ljava/util/List; k field_4245 elements + f Lggb$b; l field_21857 guiLight + f Ljava/lang/Boolean; m field_4244 hasAmbientOcclusion + f Lggi; n field_4250 transforms + f Ljava/util/List; o field_4255 overrides + m ()Ljava/util/List; a method_3433 getElements + m (Lcun;)Lggh; a method_3438 getTransform + m (Lgfx;Lgfy;Lgql;Lji;Lgsv;)Lgfw; a method_3447 bakeFace + m (Lgsr;Lggb;)Lggg; a method_3440 getItemOverrides + m (Lgsr;Lggb;Ljava/util/function/Function;Lgsv;Z)Lgsm; a method_3446 bake + m (Ljava/io/Reader;)Lggb; a method_3437 fromStream + m (Ljava/lang/String;)Lggb; a method_3430 fromString + m (Ljava/util/function/Function;Lggf;)V a method_45786 method_45786 + m ()Z b method_3444 hasAmbientOcclusion + m (Ljava/lang/String;)Z b method_3432 hasTexture + m ()Lggb$b; c method_24298 getGuiLight + m (Ljava/lang/String;)Lgsq; c method_24077 getMaterial + m ()Z d method_35789 isResolved + m (Ljava/lang/String;)Lcom/mojang/datafixers/util/Either; d method_3442 findTextureEntry + m ()Ljava/util/List; e method_3434 getOverrides + m (Ljava/lang/String;)Z e method_3439 isTextureReference + m ()Lggb; g method_3431 getRootModel + m ()Lggi; h method_3443 getTransforms + m (Lakr;Ljava/util/List;Ljava/util/Map;Ljava/lang/Boolean;Lggb$b;Lggi;Ljava/util/List;)V + m ()V +c ggb$a net/minecraft/class_793$class_795 net/minecraft/client/renderer/block/model/BlockModel$Deserializer + m (Lakr;Ljava/lang/String;)Lcom/mojang/datafixers/util/Either; a method_24079 parseTextureLocationOrReference + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/List; a method_3452 getOverrides + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggb; a method_3451 deserialize + m (Lcom/google/gson/JsonObject;)Ljava/lang/Boolean; a method_3453 getAmbientOcclusion + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/List; b method_3449 getElements + m (Lcom/google/gson/JsonObject;)Ljava/util/Map; b method_3448 getTextureMap + m (Lcom/google/gson/JsonObject;)Ljava/lang/String; c method_3450 getParentName + m ()V +c ggb$b net/minecraft/class_793$class_4751 net/minecraft/client/renderer/block/model/BlockModel$GuiLight + f Lggb$b; a field_21858 FRONT + f Lggb$b; b field_21859 SIDE + f Ljava/lang/String; c field_21860 name + f [Lggb$b; d field_21861 $VALUES + m ()Z a method_24299 lightLikeBlock + m (Ljava/lang/String;)Lggb$b; a method_24300 getByName + m ()[Lggb$b; b method_36920 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c ggb$c net/minecraft/class_793$class_6246 net/minecraft/client/renderer/block/model/BlockModel$LoopException + m (Ljava/lang/String;)V +c ggc net/minecraft/class_790 net/minecraft/client/renderer/block/model/BlockModelDefinition + f Ljava/util/Map; a field_4241 variants + f Lggo; b field_4240 multiPart + m ()Ljava/util/Map; a method_3423 getVariants + m (Lggc$a;Lcom/google/gson/JsonElement;)Lggc; a method_45787 fromJsonElement + m (Lggc$a;Ljava/io/Reader;)Lggc; a method_3424 fromStream + m (Ljava/lang/String;)Z a method_35790 hasVariant + m ()Ljava/util/Set; b method_35791 getMultiVariants + m (Ljava/lang/String;)Lggj; b method_35792 getVariant + m ()Z c method_3422 isMultiPart + m ()Lggo; d method_3421 getMultiPart + m (Ljava/util/Map;Lggo;)V + m (Ljava/util/List;)V +c ggc$a net/minecraft/class_790$class_791 net/minecraft/client/renderer/block/model/BlockModelDefinition$Context + f Lcom/google/gson/Gson; a field_4243 gson + f Ldtd; b field_4242 definition + m ()Ldtd; a method_3425 getDefinition + m (Ldtd;)V a method_3426 setDefinition + m ()V +c ggc$b net/minecraft/class_790$class_792 net/minecraft/client/renderer/block/model/BlockModelDefinition$Deserializer + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/Map; a method_3429 getVariants + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggc; a method_3428 deserialize + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Lggo; b method_3427 getMultiPart + m ()V +c ggc$c net/minecraft/class_790$class_6247 net/minecraft/client/renderer/block/model/BlockModelDefinition$MissingVariantException + f Lggc; a field_32795 field_32795 + m (Lggc;)V +c ggd net/minecraft/class_796 net/minecraft/client/renderer/block/model/FaceBakery + f I a field_32796 VERTEX_INT_SIZE + f I b field_32797 VERTEX_COUNT + f I c field_32798 UV_INDEX + f F d field_4260 RESCALE_22_5 + f F e field_4259 RESCALE_45 + f I f field_32799 COLOR_INDEX + m (Lgga;Lgql;Lji;[FLj;Lgfz;Z)[I a method_3458 makeVertices + m (Lgga;Lji;Lj;)Lgga; a method_3454 recomputeUVs + m (Lorg/joml/Vector3f;Lgfz;)V a method_3463 applyElementRotation + m (Lorg/joml/Vector3f;Lj;)V a method_3455 applyModelRotation + m (Lorg/joml/Vector3f;Lorg/joml/Vector3f;)[F a method_3459 setupShape + m (Lorg/joml/Vector3f;Lorg/joml/Vector3f;Lgfy;Lgql;Lji;Lgsv;Lgfz;Z)Lgfw; a method_3468 bakeQuad + m (Lorg/joml/Vector3f;Lorg/joml/Vector3f;Lorg/joml/Matrix4f;Lorg/joml/Vector3f;)V a method_3464 rotateVertexBy + m ([I)Lji; a method_3467 calculateFacing + m ([IILji;Lgga;[FLgql;Lj;Lgfz;Z)V a method_3461 bakeVertex + m ([IILorg/joml/Vector3f;Lgql;Lgga;)V a method_3460 fillVertex + m ([ILji;)V a method_3462 recalculateWinding + m ()V + m ()V +c ggd$1 net/minecraft/class_796$1 net/minecraft/client/renderer/block/model/FaceBakery$1 + f [I a field_4265 $SwitchMap$net$minecraft$core$Direction$Axis + m ()V +c gge net/minecraft/class_801 net/minecraft/client/renderer/block/model/ItemModelGenerator + f Ljava/util/List; a field_4270 LAYERS + f F b field_32806 MIN_Z + f F c field_32807 MAX_Z + m (IILgqf;Ljava/util/List;I)V a method_33428 method_33428 + m (ILjava/lang/String;Lgqf;)Ljava/util/List; a method_3480 processFrames + m (Lgge$b;Ljava/util/List;Lgqf;IIIIIZ)V a method_3476 checkTransition + m (Lgqf;)Ljava/util/List; a method_3478 getSpans + m (Lgqf;IIIII)Z a method_3477 isTransparent + m (Lgqf;Ljava/lang/String;I)Ljava/util/List; a method_3481 createSideElements + m (Ljava/util/List;Lgge$b;II)V a method_3482 createOrExpandSpan + m (Ljava/util/function/Function;Lggb;)Lggb; a method_3479 generateBlockModel + m ()V + m ()V +c gge$a net/minecraft/class_801$class_802 net/minecraft/client/renderer/block/model/ItemModelGenerator$Span + f Lgge$b; a field_4271 facing + f I b field_4274 min + f I c field_4273 max + f I d field_4272 anchor + m ()Lgge$b; a method_3484 getFacing + m (I)V a method_3483 expand + m ()I b method_3487 getMin + m ()I c method_3485 getMax + m ()I d method_3486 getAnchor + m (Lgge$b;II)V +c gge$b net/minecraft/class_801$class_803 net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing + f Lgge$b; a field_4281 UP + f Lgge$b; b field_4277 DOWN + f Lgge$b; c field_4278 LEFT + f Lgge$b; d field_4283 RIGHT + f Lji; e field_4276 direction + f I f field_4280 xOffset + f I g field_4279 yOffset + f [Lgge$b; h field_4282 $VALUES + m ()Lji; a method_3488 getDirection + m ()I b method_3490 getXOffset + m ()I c method_3489 getYOffset + m ()Z d method_3491 isHorizontal + m ()[Lgge$b; e method_36921 $values + m (Ljava/lang/String;ILji;II)V + m ()V +c ggf net/minecraft/class_799 net/minecraft/client/renderer/block/model/ItemOverride + f Lakr; a field_4268 model + f Ljava/util/List; b field_4269 predicates + m ()Lakr; a method_3472 getModel + m ()Ljava/util/stream/Stream; b method_33690 getPredicates + m (Lakr;Ljava/util/List;)V +c ggf$a net/minecraft/class_799$class_800 net/minecraft/client/renderer/block/model/ItemOverride$Deserializer + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggf; a method_3475 deserialize + m (Lcom/google/gson/JsonObject;)Ljava/util/List; a method_3474 getPredicates + m (Ljava/util/Map$Entry;)Lggf$b; a method_33691 method_33691 + m ()V +c ggf$b net/minecraft/class_799$class_5826 net/minecraft/client/renderer/block/model/ItemOverride$Predicate + f Lakr; a field_28790 property + f F b field_28791 value + m ()Lakr; a method_33692 getProperty + m ()F b method_33693 getValue + m (Lakr;F)V +c ggg net/minecraft/class_806 net/minecraft/client/renderer/block/model/ItemOverrides + f Lggg; a field_4292 EMPTY + f F b field_42072 NO_OVERRIDE + f [Lggg$a; c field_28792 overrides + f [Lakr; d field_28793 properties + m (I)[Lggg$b; a method_33694 method_33694 + m (Lgsm;Lcuq;Lfzf;Lbtn;I)Lgsm; a method_3495 resolve + m (Lgsr;Lggb;Lggf;)Lgsm; a method_33695 bakeModel + m (Lit/unimi/dsi/fastutil/objects/Object2IntMap;Lggf$b;)Lggg$b; a method_33696 method_33696 + m (I)[Lakr; b method_33697 method_33697 + m ()V + m (Lgsr;Lggb;Ljava/util/List;)V + m ()V +c ggg$a net/minecraft/class_806$class_5827 net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride + f [Lggg$b; a field_28794 matchers + f Lgsm; b field_28795 model + m ([F)Z a method_33700 test + m ([Lggg$b;Lgsm;)V +c ggg$b net/minecraft/class_806$class_5828 net/minecraft/client/renderer/block/model/ItemOverrides$PropertyMatcher + f I a field_28796 index + f F b field_28797 value + m (IF)V +c ggh net/minecraft/class_804 net/minecraft/client/renderer/block/model/ItemTransform + f Lggh; a field_4284 NO_TRANSFORM + f Lorg/joml/Vector3f; b field_4287 rotation + f Lorg/joml/Vector3f; c field_4286 translation + f Lorg/joml/Vector3f; d field_4285 scale + m (ZLfbi;)V a method_23075 apply + m (Lorg/joml/Vector3f;Lorg/joml/Vector3f;Lorg/joml/Vector3f;)V + m ()V +c ggh$a net/minecraft/class_804$class_805 net/minecraft/client/renderer/block/model/ItemTransform$Deserializer + f F a field_32808 MAX_TRANSLATION + f F b field_32809 MAX_SCALE + f Lorg/joml/Vector3f; c field_4288 DEFAULT_ROTATION + f Lorg/joml/Vector3f; d field_4290 DEFAULT_TRANSLATION + f Lorg/joml/Vector3f; e field_4289 DEFAULT_SCALE + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggh; a method_3494 deserialize + m (Lcom/google/gson/JsonObject;Ljava/lang/String;Lorg/joml/Vector3f;)Lorg/joml/Vector3f; a method_3493 getVector3f + m ()V + m ()V +c ggi net/minecraft/class_809 net/minecraft/client/renderer/block/model/ItemTransforms + f Lggi; a field_4301 NO_TRANSFORMS + f Lggh; b field_4305 thirdPersonLeftHand + f Lggh; c field_4307 thirdPersonRightHand + f Lggh; d field_4302 firstPersonLeftHand + f Lggh; e field_4304 firstPersonRightHand + f Lggh; f field_4311 head + f Lggh; g field_4300 gui + f Lggh; h field_4303 ground + f Lggh; i field_4306 fixed + m (Lcun;)Lggh; a method_3503 getTransform + m (Lcun;)Z b method_3501 hasTransform + m ()V + m (Lggi;)V + m (Lggh;Lggh;Lggh;Lggh;Lggh;Lggh;Lggh;Lggh;)V + m ()V +c ggi$1 net/minecraft/class_809$1 net/minecraft/client/renderer/block/model/ItemTransforms$1 + f [I a field_4313 $SwitchMap$net$minecraft$world$item$ItemDisplayContext + m ()V +c ggi$a net/minecraft/class_809$class_810 net/minecraft/client/renderer/block/model/ItemTransforms$Deserializer + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;Lcun;)Lggh; a method_3504 getTransform + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggi; a method_3505 deserialize + m ()V +c ggj net/minecraft/class_807 net/minecraft/client/renderer/block/model/MultiVariant + f Ljava/util/List; a field_4294 variants + m ()Ljava/util/List; a method_3497 getVariants + m (Ljava/util/function/Function;Lakr;)V a method_45788 method_45788 + m (Ljava/util/List;)V +c ggj$a net/minecraft/class_807$class_808 net/minecraft/client/renderer/block/model/MultiVariant$Deserializer + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggj; a method_3499 deserialize + m ()V +c ggk net/minecraft/class_813 net/minecraft/client/renderer/block/model/Variant + f Lakr; a field_4326 modelLocation + f Lj; b field_4328 rotation + f Z c field_4327 uvLock + f I d field_4325 weight + m ()Lakr; a method_3510 getModelLocation + m ()I d method_3511 getWeight + m (Lakr;Lj;ZI)V +c ggk$a net/minecraft/class_813$class_814 net/minecraft/client/renderer/block/model/Variant$Deserializer + f Z a field_32810 DEFAULT_UVLOCK + f I b field_32811 DEFAULT_WEIGHT + f I c field_32812 DEFAULT_X_ROTATION + f I d field_32813 DEFAULT_Y_ROTATION + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggk; a method_3513 deserialize + m (Lcom/google/gson/JsonObject;)Lgsn; a method_3515 getBlockRotation + m (Lcom/google/gson/JsonObject;)Lakr; b method_3514 getModel + m (Lcom/google/gson/JsonObject;)I c method_3517 getWeight + m (Lcom/google/gson/JsonObject;)Z d method_3516 getUvLock + m ()V +c ggl net/minecraft/class_812 net/minecraft/client/renderer/block/model/multipart/AndCondition + f Ljava/lang/String; a field_32814 TOKEN + f Ljava/lang/Iterable; d field_4324 conditions + m (Ldtc;Ljava/util/function/Predicate;)Z a method_3507 method_3507 + m (Ldtd;Lggm;)Ljava/util/function/Predicate; a method_3508 method_3508 + m (Ljava/util/List;Ldtc;)Z a method_3506 method_3506 + m (Ljava/lang/Iterable;)V +c ggm net/minecraft/class_815 net/minecraft/client/renderer/block/model/multipart/Condition + f Lggm; b field_16900 TRUE + f Lggm; c field_16901 FALSE + m (Ldtc;)Z a method_16811 method_16811 + m (Ldtd;)Ljava/util/function/Predicate; a method_16810 method_16810 + m (Ldtc;)Z b method_16809 method_16809 + m (Ldtd;)Ljava/util/function/Predicate; b method_16808 method_16808 + m ()V +c ggn net/minecraft/class_818 net/minecraft/client/renderer/block/model/multipart/KeyValueCondition + f Lcom/google/common/base/Splitter; a field_4334 PIPE_SPLITTER + f Ljava/lang/String; d field_4333 key + f Ljava/lang/String; e field_4332 value + m (Ldtc;Ljava/util/function/Predicate;)Z a method_3527 method_3527 + m (Ldtd;Lduf;Ljava/lang/String;)Ljava/util/function/Predicate; a method_3525 getBlockStatePredicate + m (Lduf;Ljava/util/Optional;Ldtc;)Z a method_3528 method_3528 + m (Ljava/util/List;Ldtc;)Z a method_3524 method_3524 + m (Ldtd;Lduf;Ljava/lang/String;)Ljava/util/function/Predicate; b method_3526 method_3526 + m (Ljava/lang/String;Ljava/lang/String;)V + m ()V +c ggo net/minecraft/class_816 net/minecraft/client/renderer/block/model/multipart/MultiPart + f Ldtd; a field_4329 definition + f Ljava/util/List; b field_4330 selectors + m ()Ljava/util/List; a method_3519 getSelectors + m (Lggq;)Ljava/util/stream/Stream; a method_3518 method_3518 + m (Ljava/util/function/Function;Lggq;)V a method_45789 method_45789 + m ()Ljava/util/Set; b method_3520 getMultiVariants + m (Ldtd;Ljava/util/List;)V +c ggo$a net/minecraft/class_816$class_817 net/minecraft/client/renderer/block/model/multipart/MultiPart$Deserializer + f Lggc$a; a field_4331 context + m (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonArray;)Ljava/util/List; a method_3522 getSelectors + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggo; a method_3523 deserialize + m (Lggc$a;)V +c ggp net/minecraft/class_821 net/minecraft/client/renderer/block/model/multipart/OrCondition + f Ljava/lang/String; a field_32815 TOKEN + f Ljava/lang/Iterable; d field_4337 conditions + m (Ldtc;Ljava/util/function/Predicate;)Z a method_3539 method_3539 + m (Ldtd;Lggm;)Ljava/util/function/Predicate; a method_3540 method_3540 + m (Ljava/util/List;Ldtc;)Z a method_3538 method_3538 + m (Ljava/lang/Iterable;)V +c ggq net/minecraft/class_819 net/minecraft/client/renderer/block/model/multipart/Selector + f Lggm; a field_4335 condition + f Lggj; b field_4336 variant + m ()Lggj; a method_3529 getVariant + m (Ldtd;)Ljava/util/function/Predicate; a method_3530 getPredicate + m (Lggm;Lggj;)V +c ggq$a net/minecraft/class_819$class_820 net/minecraft/client/renderer/block/model/multipart/Selector$Deserializer + m (Lcom/google/gson/JsonElement;)Lggm; a method_3537 method_3537 + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lggq; a method_3535 deserialize + m (Lcom/google/gson/JsonObject;)Lggm; a method_3536 getCondition + m (Ljava/util/Map$Entry;)Lggm; a method_3533 getKeyValueCondition + m (Lcom/google/gson/JsonElement;)Lggm; b method_3534 method_3534 + m (Lcom/google/gson/JsonObject;)Lggm; b method_3531 getSelector + m ()V +c ggr net/minecraft/class_6248 net/minecraft/client/renderer/block/model/multipart/package-info +c ggs net/minecraft/class_6249 net/minecraft/client/renderer/block/model/package-info +c ggt net/minecraft/class_6250 net/minecraft/client/renderer/block/package-info +c ggu net/minecraft/class_823 net/minecraft/client/renderer/blockentity/BannerRenderer + f Ljava/lang/String; a field_32816 FLAG + f I b field_32817 BANNER_WIDTH + f I c field_32818 BANNER_HEIGHT + f I d field_32819 MAX_PATTERNS + f Ljava/lang/String; e field_32820 POLE + f Ljava/lang/String; f field_32821 BAR + f Lfyk; g field_20810 flag + f Lfyk; h field_20811 pole + f Lfyk; i field_20812 bar + m ()Lfyq; a method_32135 createBodyLayer + m (Ldpw;FLfbi;Lgez;II)V a method_3546 render + m (Lfbi;Lgez;IILfyk;Lgsq;Lcti;)V a method_58140 renderPatternLayer + m (Lfbi;Lgez;IILfyk;Lgsq;ZLcti;Ldpy;)V a method_29999 renderPatterns + m (Lfbi;Lgez;IILfyk;Lgsq;ZLcti;Ldpy;Z)V a method_23802 renderPatterns + m (Lgha$a;)V +c ggv net/minecraft/class_822 net/minecraft/client/renderer/blockentity/BeaconRenderer + f Lakr; a field_4338 BEAM_LOCATION + f I b field_32822 MAX_RENDER_Y + m (Ldqc;)Z a method_3542 shouldRenderOffScreen + m (Ldqc;FLfbi;Lgez;II)V a method_3541 render + m (Ldqc;Lexc;)Z a method_33891 shouldRender + m (Lfbi$a;Lfbm;IIFFFF)V a method_23076 addVertex + m (Lfbi$a;Lfbm;IIIFFFFFFFF)V a method_22740 renderQuad + m (Lfbi;Lfbm;IIIFFFFFFFFFFFF)V a method_22741 renderPart + m (Lfbi;Lgez;FJIII)V a method_3543 renderBeaconBeam + m (Lfbi;Lgez;Lakr;FFJIIIFF)V a method_3545 renderBeaconBeam + m (Lgha$a;)V + m ()V +c ggw net/minecraft/class_825 net/minecraft/client/renderer/blockentity/BedRenderer + f Lfyk; a field_27744 headRoot + f Lfyk; b field_27745 footRoot + m (Ldcx;Ljd;)Z a method_24188 method_24188 + m (Ldqd;FLfbi;Lgez;II)V a method_3557 render + m (Lfbi;Lgez;Lfyk;Lji;Lgsq;IIZ)V a method_3558 renderPiece + m ()Lfyq; b method_32136 createHeadLayer + m ()Lfyq; c method_32137 createFootLayer + m (Lgha$a;)V +c ggx net/minecraft/class_3880 net/minecraft/client/renderer/blockentity/BellRenderer + f Lgsq; a field_17145 BELL_RESOURCE_LOCATION + f Ljava/lang/String; b field_32823 BELL_BODY + f Lfyk; c field_20816 bellBody + m (Ldqf;FLfbi;Lgez;II)V a method_17139 render + m ()Lfyq; b method_32138 createBodyLayer + m (Lgha$a;)V + m ()V +c ggy net/minecraft/class_824 net/minecraft/client/renderer/blockentity/BlockEntityRenderDispatcher + f Ldcw; a field_4348 level + f Lffy; b field_4344 camera + f Lexa; c field_4350 cameraHitResult + f Ljava/util/Map; d field_4345 renderers + f Lfhx; e field_4342 font + f Lfyg; f field_27746 entityModelSet + f Ljava/util/function/Supplier; g field_27747 blockRenderDispatcher + f Ljava/util/function/Supplier; h field_38880 itemRenderer + f Ljava/util/function/Supplier; i field_38881 entityRenderer + m (Ldcw;)V a method_3551 setLevel + m (Ldcw;Lffy;Lexa;)V a method_3549 prepare + m (Ldqh;)Lggz; a method_3550 getRenderer + m (Ldqh;FLfbi;Lgez;)V a method_3555 render + m (Ldqh;Lfbi;Lgez;II)Z a method_23077 renderItem + m (Ldqh;Ljava/lang/Runnable;)V a method_3554 tryRender + m (Lggz;Ldqh;FLfbi;Lgez;)V a method_23079 setupAndRender + m (Lggz;Ldqh;Lfbi;Lgez;II)V a method_23080 method_23080 + m (Lggz;Ldqh;FLfbi;Lgez;)V b method_23081 method_23081 + m (Lfhx;Lfyg;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;)V +c ggz net/minecraft/class_827 net/minecraft/client/renderer/blockentity/BlockEntityRenderer + m (Ldqh;)Z a method_3563 shouldRenderOffScreen + m (Ldqh;FLfbi;Lgez;II)V a method_3569 render + m (Ldqh;Lexc;)Z a method_33892 shouldRender + m ()I aW_ method_33893 getViewDistance +c gha net/minecraft/class_5614 net/minecraft/client/renderer/blockentity/BlockEntityRendererProvider +c gha$a net/minecraft/class_5614$class_5615 net/minecraft/client/renderer/blockentity/BlockEntityRendererProvider$Context + f Lggy; a field_27748 blockEntityRenderDispatcher + f Lgft; b field_27749 blockRenderDispatcher + f Lglh; c field_38882 itemRenderer + f Lgkh; d field_38883 entityRenderer + f Lfyg; e field_27750 modelSet + f Lfhx; f field_27751 font + m ()Lggy; a method_32139 getBlockEntityRenderDispatcher + m (Lfyi;)Lfyk; a method_32140 bakeLayer + m ()Lgft; b method_32141 getBlockRenderDispatcher + m ()Lgkh; c method_43334 getEntityRenderer + m ()Lglh; d method_43335 getItemRenderer + m ()Lfyg; e method_32142 getModelSet + m ()Lfhx; f method_32143 getFont + m (Lggy;Lgft;Lglh;Lgkh;Lfyg;Lfhx;)V +c ghb net/minecraft/class_5616 net/minecraft/client/renderer/blockentity/BlockEntityRenderers + f Ljava/util/Map; a field_27752 PROVIDERS + m (Lcom/google/common/collect/ImmutableMap$Builder;Lgha$a;Ldqj;Lgha;)V a method_32145 method_32145 + m (Ldqj;Lgha;)V a method_32144 register + m (Lgha$a;)Ljava/util/Map; a method_32146 createEntityRenderers + m ()V + m ()V +c ghc net/minecraft/class_4737 net/minecraft/client/renderer/blockentity/BrightnessCombiner + m ()Lit/unimi/dsi/fastutil/ints/Int2IntFunction; a method_24189 acceptNone + m (I)I a method_24190 method_24190 + m (Ldqh;)Lit/unimi/dsi/fastutil/ints/Int2IntFunction; a method_24191 acceptSingle + m (Ldqh;Ldqh;)Lit/unimi/dsi/fastutil/ints/Int2IntFunction; a method_24192 acceptDouble + m (Ldqh;Ldqh;I)I a method_24193 method_24193 + m (I)I b method_24194 method_24194 + m ()V +c ghd net/minecraft/class_8189 net/minecraft/client/renderer/blockentity/BrushableBlockRenderer + f Lglh; a field_42928 itemRenderer + m (Ldql;FLfbi;Lgez;II)V a method_49348 render + m (Lji;I)[F a method_49349 translations + m (Lgha$a;)V +c ghd$1 net/minecraft/class_8189$1 net/minecraft/client/renderer/blockentity/BrushableBlockRenderer$1 + f [I a field_42929 $SwitchMap$net$minecraft$core$Direction + m ()V +c ghe net/minecraft/class_3941 net/minecraft/client/renderer/blockentity/CampfireRenderer + f F a field_32824 SIZE + f Lglh; b field_38884 itemRenderer + m (Ldqn;FLfbi;Lgez;II)V a method_17581 render + m (Lgha$a;)V +c ghf net/minecraft/class_826 net/minecraft/client/renderer/blockentity/ChestRenderer + f Ljava/lang/String; a field_32825 BOTTOM + f Ljava/lang/String; b field_32826 LID + f Ljava/lang/String; c field_32827 LOCK + f Lfyk; d field_20817 lid + f Lfyk; e field_20818 bottom + f Lfyk; f field_20819 lock + f Lfyk; g field_20820 doubleLeftLid + f Lfyk; h field_20821 doubleLeftBottom + f Lfyk; i field_20822 doubleLeftLock + f Lfyk; j field_21479 doubleRightLid + f Lfyk; k field_21480 doubleRightBottom + f Lfyk; l field_21481 doubleRightLock + f Z m field_4365 xmasTextures + m (Lfbi;Lfbm;Lfyk;Lfyk;Lfyk;FII)V a method_22749 render + m ()Lfyq; b method_32147 createSingleBodyLayer + m ()Lfyq; c method_32148 createDoubleBodyRightLayer + m ()Lfyq; d method_32149 createDoubleBodyLeftLayer + m (Lgha$a;)V +c ghg net/minecraft/class_829 net/minecraft/client/renderer/blockentity/ConduitRenderer + f Lgsq; a field_4377 SHELL_TEXTURE + f Lgsq; b field_4378 ACTIVE_SHELL_TEXTURE + f Lgsq; c field_4373 WIND_TEXTURE + f Lgsq; d field_4371 VERTICAL_WIND_TEXTURE + f Lgsq; e field_4379 OPEN_EYE_TEXTURE + f Lgsq; f field_4380 CLOSED_EYE_TEXTURE + f Lfyk; g field_20823 eye + f Lfyk; h field_20824 wind + f Lfyk; i field_20825 shell + f Lfyk; j field_20826 cage + f Lggy; k field_27753 renderer + m (Ldqt;FLfbi;Lgez;II)V a method_22750 render + m ()Lfyq; b method_32150 createEyeLayer + m ()Lfyq; c method_32151 createWindLayer + m ()Lfyq; d method_32152 createShellLayer + m ()Lfyq; e method_32153 createCageLayer + m (Lgha$a;)V + m ()V +c ghh net/minecraft/class_8188 net/minecraft/client/renderer/blockentity/DecoratedPotRenderer + f Ljava/lang/String; a field_42913 NECK + f Ljava/lang/String; b field_42914 FRONT + f Ljava/lang/String; c field_42915 BACK + f Ljava/lang/String; d field_42916 LEFT + f Ljava/lang/String; e field_42917 RIGHT + f Ljava/lang/String; f field_42918 TOP + f Ljava/lang/String; g field_42919 BOTTOM + f Lfyk; h field_42920 neck + f Lfyk; i field_42921 frontSide + f Lfyk; j field_42922 backSide + f Lfyk; k field_42923 leftSide + f Lfyk; l field_42924 rightSide + f Lfyk; m field_42925 top + f Lfyk; n field_42926 bottom + f F o field_46728 WOBBLE_AMPLITUDE + m (Ldqx;FLfbi;Lgez;II)V a method_49344 render + m (Lfyk;Lfbi;Lgez;IILgsq;)V a method_49345 renderSide + m (Ljava/util/Optional;)Lgsq; a method_49343 getSideMaterial + m ()Lfyq; b method_49346 createBaseLayer + m ()Lfyq; c method_49347 createSidesLayer + m (Lgha$a;)V +c ghi net/minecraft/class_828 net/minecraft/client/renderer/blockentity/EnchantTableRenderer + f Lgsq; a field_4369 BOOK_LOCATION + f Lfus; b field_4370 bookModel + m (Ldrc;FLfbi;Lgez;II)V a method_3571 render + m (Lgha$a;)V + m ()V +c ghj net/minecraft/class_7761 net/minecraft/client/renderer/blockentity/HangingSignRenderer + f Ljava/lang/String; a field_40522 PLANK + f Ljava/lang/String; b field_40523 V_CHAINS + f Ljava/lang/String; c field_40516 NORMAL_CHAINS + f Ljava/lang/String; d field_40517 CHAIN_L_1 + f Ljava/lang/String; e field_40518 CHAIN_L_2 + f Ljava/lang/String; f field_40519 CHAIN_R_1 + f Ljava/lang/String; g field_40520 CHAIN_R_2 + f Ljava/lang/String; h field_40521 BOARD + f F i field_44574 MODEL_RENDER_SCALE + f F j field_44575 TEXT_RENDER_SCALE + f Lexc; k field_44576 TEXT_OFFSET + f Ljava/util/Map; l field_40524 hangingSignModels + m (Lgha$a;Ldup;)Lghj$a; a method_45794 method_45794 + m (Ldup;)Ldup; b method_45796 method_45796 + m ()Lfyq; e method_45795 createHangingSignLayer + m (Lgha$a;)V + m ()V +c ghj$a net/minecraft/class_7761$class_7762 net/minecraft/client/renderer/blockentity/HangingSignRenderer$HangingSignModel + f Lfyk; a field_40525 root + f Lfyk; b field_40526 plank + f Lfyk; c field_40527 vChains + f Lfyk; d field_40528 normalChains + m (Ldtc;)V a method_45797 evaluateVisibleParts + m (Lfyk;)V +c ghk net/minecraft/class_3942 net/minecraft/client/renderer/blockentity/LecternRenderer + f Lfus; a field_17428 bookModel + m (Ldrk;FLfbi;Lgez;II)V a method_17582 render + m (Lgha$a;)V +c ghl net/minecraft/class_835 net/minecraft/client/renderer/blockentity/PistonHeadRenderer + f Lgft; a field_4389 blockRenderer + m (Ldsy;FLfbi;Lgez;II)V a method_3576 render + m (Ljd;Ldtc;Lfbi;Lgez;Ldcw;ZI)V a method_3575 renderBlock + m (Lgha$a;)V +c ghm net/minecraft/class_834 net/minecraft/client/renderer/blockentity/ShulkerBoxRenderer + f Lfxd; a field_4387 model + m (Ldrr;FLfbi;Lgez;II)V a method_3574 render + m (Lgha$a;)V +c ghn net/minecraft/class_837 net/minecraft/client/renderer/blockentity/SignRenderer + f Ljava/lang/String; a field_32830 STICK + f I b field_33962 BLACK_TEXT_OUTLINE_COLOR + f I c field_33963 OUTLINE_RENDER_DISTANCE + f F d field_44577 RENDER_SCALE + f Lexc; e field_44578 TEXT_OFFSET + f Ljava/util/Map; f field_27754 signModels + f Lfhx; g field_27755 font + m (ILwz;)Laya; a method_45799 method_45799 + m (Ldrs;FLfbi;Lgez;II)V a method_23083 render + m (Ldrs;Lfbi;Lgez;IILdtc;Ldmz;Ldup;Lfwg;)V a method_49920 renderSignWithText + m (Ldrt;)I a method_37311 getDarkColor + m (Ldup;)Lgsq; a method_45792 getSignMaterial + m (Lfbi;FLdtc;)V a method_49918 translateSign + m (Lfbi;IILfwg;Lfbm;)V a method_45793 renderSignModel + m (Lfbi;Lgez;IILdup;Lfwg;)V a method_45800 renderSign + m (Lfbi;ZLexc;)V a method_49919 translateSignText + m (Lfyg;Ldup;)Lghn$a; a method_32157 createSignModel + m (Lgha$a;Ldup;)Lghn$a; a method_32158 method_32158 + m (Ljd;I)Z a method_37312 isOutlineVisible + m (Ljd;Ldrt;Lfbi;Lgez;IIIZ)V a method_45798 renderSignText + m ()F b method_51272 getSignModelRenderScale + m (Ldup;)Ldup; b method_32156 method_32156 + m ()F c method_51273 getSignTextRenderScale + m ()Lexc; d method_45790 getTextOffset + m ()Lfyq; f method_32154 createSignLayer + m (Lgha$a;)V + m ()V +c ghn$a net/minecraft/class_837$class_4702 net/minecraft/client/renderer/blockentity/SignRenderer$SignModel + f Lfyk; a field_27756 root + f Lfyk; b field_21531 stick + m (Lfyk;)V +c gho net/minecraft/class_836 net/minecraft/client/renderer/blockentity/SkullBlockRenderer + f Ljava/util/Map; a field_4391 modelByType + f Ljava/util/Map; b field_4390 SKIN_BY_TYPE + m (Ldnb$a;Lcxu;)Lgfh; a method_3578 getRenderType + m (Ldru;FLfbi;Lgez;II)V a method_3577 render + m (Lfyg;)Ljava/util/Map; a method_32160 createSkullRenderers + m (Ljava/util/HashMap;)V a method_3580 method_3580 + m (Lji;FFLfbi;Lgez;ILfxh;Lgfh;)V a method_32161 renderSkull + m (Lgha$a;)V + m ()V +c ghp net/minecraft/class_839 net/minecraft/client/renderer/blockentity/SpawnerRenderer + f Lgkh; a field_38885 entityRenderer + m (FLfbi;Lgez;ILbsr;Lgkh;DD)V a method_55253 renderEntityInSpawner + m (Ldrw;FLfbi;Lgez;II)V a method_3589 render + m (Lgha$a;)V +c ghq net/minecraft/class_838 net/minecraft/client/renderer/blockentity/StructureBlockRenderer + m (Ldrx;)Z a method_3588 shouldRenderOffScreen + m (Ldrx;FLfbi;Lgez;II)V a method_3587 render + m (Ldrx;Lfbm;Lfbi;)V a method_61047 renderStructureVoids + m (Ldrx;Lgez;Lfbi;)V a method_3585 renderInvisibleBlocks + m (Ljd;Ljd;Lfbi;Lfbm;Lji;III)V a method_61048 method_61048 + m (Lgha$a;)V +c ghq$1 net/minecraft/class_838$1 net/minecraft/client/renderer/blockentity/StructureBlockRenderer$1 + f [I a field_4402 $SwitchMap$net$minecraft$world$level$block$Mirror + f [I b field_4401 $SwitchMap$net$minecraft$world$level$block$Rotation + m ()V +c ghr net/minecraft/class_841 net/minecraft/client/renderer/blockentity/TheEndGatewayRenderer + f Lakr; c field_4409 BEAM_LOCATION + m (Ldry;FLfbi;Lgez;II)V a method_22751 render + m (Lgha$a;)V + m ()V +c ghs net/minecraft/class_840 net/minecraft/client/renderer/blockentity/TheEndPortalRenderer + f Lakr; a field_4406 END_SKY_LOCATION + f Lakr; b field_4407 END_PORTAL_LOCATION + m (Ldrz;FLfbi;Lgez;II)V a method_3591 render + m (Ldrz;Lorg/joml/Matrix4f;Lfbm;)V a method_23084 renderCube + m (Ldrz;Lorg/joml/Matrix4f;Lfbm;FFFFFFFFLji;)V a method_23085 renderFace + m ()F b method_3594 getOffsetUp + m ()F c method_35793 getOffsetDown + m ()Lgfh; d method_34589 renderType + m (Lgha$a;)V + m ()V +c ght net/minecraft/class_8984 net/minecraft/client/renderer/blockentity/TrialSpawnerRenderer + f Lgkh; a field_47464 entityRenderer + m (Ldsc;FLfbi;Lgez;II)V a method_55254 render + m (Lgha$a;)V +c ghu net/minecraft/class_9214 net/minecraft/client/renderer/blockentity/VaultRenderer + f Lglh; a field_48952 itemRenderer + f Layw; b field_48953 random + m (FLdcw;Lfbi;Lgez;ILcuq;Lglh;FFLayw;)V a method_56851 renderItemInside + m (Ldsk;FLfbi;Lgez;II)V a method_56852 render + m (Lgha$a;)V +c ghv net/minecraft/class_6252 net/minecraft/client/renderer/blockentity/package-info +c ghw net/minecraft/class_6849 net/minecraft/client/renderer/chunk/RenderChunk + f Ljava/util/Map; a field_36310 blockEntities + f Ljava/util/List; b field_36311 sections + f Z c field_36312 debug + f Ldvi; d field_36313 wrapped + m (III)Ljava/lang/String; a method_39961 method_39961 + m (Ljd;)Ldqh; a method_39962 getBlockEntity + m (Ljd;)Ldtc; b method_39963 getBlockState + m (Ldvi;)V +c ghx net/minecraft/class_853 net/minecraft/client/renderer/chunk/RenderChunkRegion + f I a field_52160 RADIUS + f I b field_52161 SIZE + f [Lghw; c field_4483 chunks + f Ldcw; d field_4490 level + f I e field_52162 minChunkX + f I f field_52163 minChunkZ + m (II)Lghw; a method_60898 getChunk + m (IIII)I a method_60899 index + m (Ldcw;II[Lghw;)V +c ghy net/minecraft/class_6850 net/minecraft/client/renderer/chunk/RenderRegionCache + f Lit/unimi/dsi/fastutil/longs/Long2ObjectMap; a field_36314 chunkInfoCache + m (Ldcw;II)Lghy$a; a method_60900 getChunkInfo + m (Ldcw;J)Lghy$a; a method_60901 method_60901 + m (Ldcw;Lkf;)Lghx; a method_39969 createRegion + m ()V +c ghy$a net/minecraft/class_6850$class_6851 net/minecraft/client/renderer/chunk/RenderRegionCache$ChunkInfo + f Ldvi; a field_36315 chunk + f Lghw; b field_36316 renderChunk + m ()Ldvi; a method_39971 chunk + m ()Lghw; b method_39972 renderChunk + m (Ldvi;)V +c ghz net/minecraft/class_9810 net/minecraft/client/renderer/chunk/SectionCompiler + f Lgft; a field_52164 blockRenderer + f Lggy; b field_52165 blockEntityRenderer + m (Lghz$a;Ldqh;)V a method_60902 handleBlockEntity + m (Ljava/util/Map;Lgfk;Lgfh;)Lfbd; a method_60903 getOrBeginLayer + m (Lkf;Lghx;Lfbq;Lgfk;)Lghz$a; a method_60904 compile + m (Lgft;Lggy;)V +c ghz$a net/minecraft/class_9810$class_9811 net/minecraft/client/renderer/chunk/SectionCompiler$Results + f Ljava/util/List; a field_52166 globalBlockEntities + f Ljava/util/List; b field_52167 blockEntities + f Ljava/util/Map; c field_52168 renderedLayers + f Lgic; d field_52169 visibilitySet + f Lfbh$b; e field_52170 transparencyState + m ()V a method_60905 release + m ()V +c gia net/minecraft/class_846 net/minecraft/client/renderer/chunk/SectionRenderDispatcher + f I a field_35300 MAX_HIGH_PRIORITY_QUOTA + f Ljava/util/concurrent/PriorityBlockingQueue; b field_35301 toBatchHighPriority + f Ljava/util/Queue; c field_35302 toBatchLowPriority + f I d field_35303 highPriorityQuota + f Ljava/util/Queue; e field_4443 toUpload + f Lgfk; f field_20828 fixedBuffers + f Lgfl; g field_46907 bufferPool + f I h field_20992 toBatchCount + f Z i field_46908 closed + f Lbpk; j field_20829 mailbox + f Ljava/util/concurrent/Executor; k field_20830 executor + f Lfzf; l field_20831 level + f Lgex; m field_20832 renderer + f Lexc; n field_18766 camera + f Lghz; o field_52171 sectionCompiler + m ()Ljava/lang/String; a method_3622 getStats + m (Lexc;)V a method_19419 setCamera + m (Lfbf$a;Lfbl;)Ljava/util/concurrent/CompletableFuture; a method_60906 uploadSectionIndexBuffer + m (Lfbh;Lfbl;)Ljava/util/concurrent/CompletableFuture; a method_3635 uploadSectionLayer + m (Lfbl;Lfbf$a;)V a method_60907 method_60907 + m (Lfbl;Lfbh;)V a method_43610 method_43610 + m (Lfzf;)V a method_22752 setLevel + m (Lgfk;Lgia$c;Ljava/lang/Throwable;)V a method_22755 method_22755 + m (Lgia$b$a;)V a method_22756 schedule + m (Lgia$b$a;Lgfk;)Ljava/util/concurrent/CompletableFuture; a method_22757 method_22757 + m (Lgia$b;Lghy;)V a method_3627 rebuildSectionSync + m (Lgia$c;Lgfk;)V a method_23618 method_23618 + m (Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletionStage; a method_38555 method_38555 + m ()I b method_34845 getToBatchCount + m (Lgia$b$a;)V b method_23086 method_23086 + m ()I c method_34846 getToUpload + m ()I d method_34847 getFreeBufferCount + m ()Lexc; e method_19420 getCameraPosition + m ()V f method_22761 uploadAllPendingUploads + m ()V g method_3632 blockUntilClear + m ()Z h method_3630 isQueueEmpty + m ()V i method_3619 dispose + m ()V j method_22763 runTask + m ()Lgia$b$a; k method_39132 pollTask + m ()V l method_3633 clearBatchQueue + m (Lfzf;Lgex;Ljava/util/concurrent/Executor;Lgff;Lgft;Lggy;)V +c gia$a net/minecraft/class_846$class_849 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$CompiledSection + f Lgia$a; a field_4451 UNCOMPILED + f Lgia$a; b field_52172 EMPTY + f Ljava/util/Set; c field_4450 hasBlocks + f Ljava/util/List; d field_4456 renderableBlockEntities + f Lgic; e field_4455 visibilitySet + f Lfbh$b; f field_4453 transparencyState + m ()Z a method_3645 hasNoRenderableLayers + m (Lgfh;)Z a method_3641 isEmpty + m (Lji;Lji;)Z a method_3650 facesCanSeeEachother + m ()Ljava/util/List; b method_3642 getRenderableBlockEntities + m ()V + m ()V +c gia$a$1 net/minecraft/class_846$class_849$1 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$CompiledSection$1 + m ()V +c gia$a$2 net/minecraft/class_846$class_849$2 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$CompiledSection$2 + m ()V +c gia$b net/minecraft/class_846$class_851 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$RenderSection + f I a field_32832 SIZE + f I b field_29641 index + f Ljava/util/concurrent/atomic/AtomicReference; c field_4459 compiled + f Lgia; d field_20833 field_20833 + f Ljava/util/concurrent/atomic/AtomicInteger; e field_36374 initialCompilationCancelCount + f Lgia$b$b; f field_20834 lastRebuildTask + f Lgia$b$c; g field_4461 lastResortTransparencyTask + f Ljava/util/Set; h field_4457 globalBlockEntities + f Ljava/util/Map; i field_4462 buffers + f Lewx; j field_4458 bb + f Z k field_4464 dirty + f Ljd$a; l field_4467 origin + f [Ljd$a; m field_4472 relativeOrigins + f Z n field_4463 playerChanged + m ()Z a method_3673 hasAllNeighbors + m (III)V a method_3653 setOrigin + m (Lgfh;)Lfbl; a method_3656 getBuffer + m (Lgfh;Lgia;)Z a method_22773 resortTransparency + m (Lghy;)Lgia$b$a; a method_3674 createCompileTask + m (Lgia$a;)V a method_60908 setCompiled + m (Lgia;Lghy;)V a method_22777 rebuildSectionAsync + m (Ljava/util/Collection;)V a method_22778 updateGlobalBlockEntities + m (Ljd;)Z a method_3651 doesChunkExistAt + m (Lji;)Ljd; a method_3676 getRelativeOrigin + m (Z)V a method_3654 setDirty + m ([Ljd$a;)V a method_3660 method_3660 + m ()Lewx; b method_40051 getBoundingBox + m (III)Z b method_52841 isAxisAlignedWith + m (Lgfh;)Lfbl; b method_22779 method_22779 + m (Lghy;)V b method_22781 compileSync + m ()D c method_3668 getDistToPlayerSqr + m (Lgfh;)Lgfh; c method_22780 method_22780 + m ()Lgia$a; d method_3677 getCompiled + m ()V e method_3659 releaseBuffers + m ()Ljd; f method_3670 getOrigin + m ()V g method_3662 setNotDirty + m ()Z h method_3672 isDirty + m ()Z i method_3661 isDirtyFromPlayer + m ()Z j method_3663 cancelTasks + m ()V k method_3675 reset + m ()Lfbq; l method_60909 createVertexSorting + m (Lgia;IIII)V +c gia$b$a net/minecraft/class_846$class_851$class_4577 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$RenderSection$CompileTask + f D a field_20835 distAtCreation + f Ljava/util/concurrent/atomic/AtomicBoolean; b field_20836 isCancelled + f Z c field_35304 isHighPriority + m ()V a method_22782 cancel + m (Lgfk;)Ljava/util/concurrent/CompletableFuture; a method_22783 doTask + m (Lgia$b$a;)I a method_22784 compareTo + m ()Ljava/lang/String; b method_38556 name + m (Lgia$b;DZ)V +c gia$b$b net/minecraft/class_846$class_851$class_4578 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$RenderSection$RebuildTask + f Lghx; d field_20838 region + f Lgia$b; e field_20839 field_20839 + m (Lgia$a;Ljava/util/List;Ljava/lang/Throwable;)Lgia$c; a method_23619 method_23619 + m (Ljava/util/List;Lgia$a;Lgfh;Lfbh;)V a method_22788 method_22788 + m (Lgia$b;DLghx;Z)V +c gia$b$c net/minecraft/class_846$class_851$class_4579 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$RenderSection$ResortTransparencyTask + f Lgia$b; d field_20840 field_20840 + f Lgia$a; e field_20841 compiledSection + m (Lgia$c;Ljava/lang/Throwable;)Lgia$c; a method_22789 method_22789 + m (Ljava/lang/Void;)Lgia$c; a method_22790 method_22790 + m (Lgia$b;DLgia$a;)V +c gia$c net/minecraft/class_846$class_4690 net/minecraft/client/renderer/chunk/SectionRenderDispatcher$SectionTaskResult + f Lgia$c; a field_21438 SUCCESSFUL + f Lgia$c; b field_21439 CANCELLED + f [Lgia$c; c field_21440 $VALUES + m ()[Lgia$c; a method_36923 $values + m (Ljava/lang/String;I)V + m ()V +c gib net/minecraft/class_852 net/minecraft/client/renderer/chunk/VisGraph + f I a field_32833 SIZE_IN_BITS + f I b field_32834 LEN + f I c field_32835 MASK + f I d field_32836 SIZE + f I e field_32837 X_SHIFT + f I f field_32838 Z_SHIFT + f I g field_32839 Y_SHIFT + f I h field_4477 DX + f I i field_4476 DZ + f I j field_4475 DY + f I k field_32840 INVALID_INDEX + f [Lji; l field_4479 DIRECTIONS + f Ljava/util/BitSet; m field_4478 bitSet + f [I n field_4474 INDEX_OF_EDGES + f I o field_4473 empty + m ()Lgic; a method_3679 resolve + m (I)Ljava/util/Set; a method_3687 floodFill + m (III)I a method_3681 getIndex + m (ILjava/util/Set;)V a method_3684 addEdges + m (ILji;)I a method_3685 getNeighborIndexAtFace + m (Ljd;)V a method_3682 setOpaque + m ([I)V a method_3680 method_3680 + m (Ljd;)I b method_3683 getIndex + m ()V + m ()V +c gib$1 net/minecraft/class_852$1 net/minecraft/client/renderer/chunk/VisGraph$1 + f [I a field_4480 $SwitchMap$net$minecraft$core$Direction + m ()V +c gic net/minecraft/class_854 net/minecraft/client/renderer/chunk/VisibilitySet + f I a field_4491 FACINGS + f Ljava/util/BitSet; b field_4492 data + m (Ljava/util/Set;)V a method_3693 add + m (Lji;Lji;)Z a method_3695 visibilityBetween + m (Lji;Lji;Z)V a method_3692 set + m (Z)V a method_3694 setAll + m ()V + m ()V +c gid net/minecraft/class_6253 net/minecraft/client/renderer/chunk/package-info +c gie net/minecraft/class_4604 net/minecraft/client/renderer/culling/Frustum + f I a field_34820 OFFSET_STEP + f Lorg/joml/FrustumIntersection; b field_40823 intersection + f Lorg/joml/Matrix4f; c field_40824 matrix + f Lorg/joml/Vector4f; d field_34821 viewVector + f D e field_20995 camX + f D f field_20996 camY + f D g field_20997 camZ + m (DDD)V a method_23088 prepare + m (DDDDDD)Z a method_23089 cubeInFrustum + m (I)Lgie; a method_38557 offsetToFullyIncludeCameraCube + m (Lewx;)Z a method_23093 isVisible + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V a method_23092 calculateFrustum + m (Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V + m (Lgie;)V +c gif net/minecraft/class_6254 net/minecraft/client/renderer/culling/package-info +c gig net/minecraft/class_4703 net/minecraft/client/renderer/debug/BeeDebugRenderer + f Lfgo; A field_21532 minecraft + f Ljava/util/Map; B field_21533 hives + f Ljava/util/Map; C field_21534 beeInfosPerEntity + f Ljava/util/UUID; D field_21535 lastLookedAtUuid + f Z a field_32841 SHOW_GOAL_FOR_ALL_BEES + f Z b field_32842 SHOW_NAME_FOR_ALL_BEES + f Z c field_32843 SHOW_HIVE_FOR_ALL_BEES + f Z d field_32844 SHOW_FLOWER_POS_FOR_ALL_BEES + f Z e field_32845 SHOW_TRAVEL_TICKS_FOR_ALL_BEES + f Z f field_32846 SHOW_PATH_FOR_ALL_BEES + f Z g field_32847 SHOW_GOAL_FOR_SELECTED_BEE + f Z h field_32848 SHOW_NAME_FOR_SELECTED_BEE + f Z i field_32849 SHOW_HIVE_FOR_SELECTED_BEE + f Z j field_32850 SHOW_FLOWER_POS_FOR_SELECTED_BEE + f Z k field_32851 SHOW_TRAVEL_TICKS_FOR_SELECTED_BEE + f Z l field_32852 SHOW_PATH_FOR_SELECTED_BEE + f Z m field_32853 SHOW_HIVE_MEMBERS + f Z n field_32854 SHOW_BLACKLISTS + f I o field_32855 MAX_RENDER_DIST_FOR_HIVE_OVERLAY + f I p field_32856 MAX_RENDER_DIST_FOR_BEE_OVERLAY + f I q field_32857 MAX_TARGETING_DIST + f I r field_32858 HIVE_TIMEOUT + f F s field_32859 TEXT_SCALE + f I t field_32860 WHITE + f I u field_32861 YELLOW + f I v field_32862 ORANGE + f I w field_32863 GREEN + f I x field_32864 GRAY + f I y field_32865 PINK + f I z field_32866 RED + m (I)V a method_35794 removeBeeInfo + m (ILaaf$a;)Z a method_35795 method_35795 + m (JLjava/util/Map$Entry;)Z a method_23803 method_23803 + m (Laaf$a;)V a method_23805 addOrUpdateBeeInfo + m (Laaf$a;Ljd;)Ljava/lang/String; a method_23806 getPosDescription + m (Laaq$a;)Ljava/util/Set; a method_35796 getHiveMemberNames + m (Laaq$a;J)V a method_23807 addOrUpdateHiveInfo + m (Lbsr;)V a method_23804 method_23804 + m (Lfbi;Lgez;)V a method_23823 doRender + m (Lfbi;Lgez;Laaf$a;)V a method_23820 renderPath + m (Lfbi;Lgez;Laaq$a;Ljava/util/Collection;)V a method_23821 renderHiveInfo + m (Lfbi;Lgez;Ljava/lang/String;Laaq$a;II)V a method_23815 renderTextOverHive + m (Lfbi;Lgez;Ljava/lang/String;Ljd;II)V a method_23816 renderTextOverPos + m (Lfbi;Lgez;Ljd;)V a method_23808 highlightHive + m (Lfbi;Lgez;Ljd;Ljava/util/List;)V a method_23813 renderGhostHive + m (Lfbi;Lgez;Ljd;Ljava/util/Set;)V a method_23817 method_23817 + m (Lfbi;Lgez;Ljw;ILjava/lang/String;IF)V a method_23814 renderTextOverMob + m (Ljava/util/Collection;)Ljava/lang/String; a method_23825 getBeeUuidsAsString + m (Ljava/util/Map$Entry;)Z a method_23953 method_23953 + m (Ljava/util/Map;Laaf$a;)V a method_23818 method_23818 + m (Ljava/util/Map;Laaf$a;Ljd;)V a method_24083 method_24083 + m (Ljd;)Ljava/util/Collection; a method_23822 getHiveMembers + m (Ljd;Laaf$a;)Z a method_23810 method_23810 + m (Ljd;Lfbi;Lgez;Ljd;Ljava/util/List;)V a method_23812 method_23812 + m (Ljd;Ljava/util/Map;Lfbi;Lgez;Lgig$a;)V a method_23811 method_23811 + m ()V b method_23952 clearRemovedBees + m (Laaf$a;)Z b method_23827 isBeeSelected + m (Lfbi;Lgez;)V b method_23826 renderFlowerInfos + m (Lfbi;Lgez;Laaf$a;)V b method_23824 renderBeeInfo + m (Ljava/util/Map;Laaf$a;)V b method_24082 method_24082 + m (Ljd;)Ljava/util/List; b method_30109 method_30109 + m ()V c method_23819 clearRemovedHives + m (Laaf$a;)Z c method_23829 isPlayerCloseEnoughToMob + m (Lfbi;Lgez;Laaf$a;)V c method_23831 method_23831 + m (Ljd;)Ljava/util/Set; c method_30110 method_30110 + m ()Ljava/util/Map; d method_24084 createHiveBlacklistMap + m (Ljd;)Ljava/util/Set; d method_30111 method_30111 + m ()Lffy; e method_23828 getCamera + m ()Ljava/util/Map; f method_23830 getGhostHives + m ()V g method_23832 updateLastLookedAtUuid + m (Lfgo;)V +c gig$a net/minecraft/class_4703$class_8682 net/minecraft/client/renderer/debug/BeeDebugRenderer$HiveDebugInfo + f Laaq$a; a comp_1622 info + f J b comp_1623 lastSeen + m ()Laaq$a; a comp_1622 info + m ()J b comp_1623 lastSeen + m (Laaq$a;J)V +c gih net/minecraft/class_4207 net/minecraft/client/renderer/debug/BrainDebugRenderer + f F A field_32897 TEXT_SCALE + f I B field_32898 WHITE + f I C field_32867 YELLOW + f I D field_32868 CYAN + f I E field_32869 GREEN + f I F field_32870 GRAY + f I G field_32871 PINK + f I H field_32872 RED + f I I field_32873 ORANGE + f Lfgo; J field_18786 minecraft + f Ljava/util/Map; K field_18787 pois + f Ljava/util/Map; L field_18921 brainDumpsPerEntity + f Ljava/util/UUID; M field_18922 lastLookedAtUuid + f Lorg/slf4j/Logger; a field_18920 LOGGER + f Z b field_32874 SHOW_NAME_FOR_ALL + f Z c field_32875 SHOW_PROFESSION_FOR_ALL + f Z d field_32876 SHOW_BEHAVIORS_FOR_ALL + f Z e field_32877 SHOW_ACTIVITIES_FOR_ALL + f Z f field_32878 SHOW_INVENTORY_FOR_ALL + f Z g field_32879 SHOW_GOSSIPS_FOR_ALL + f Z h field_32880 SHOW_PATH_FOR_ALL + f Z i field_32881 SHOW_HEALTH_FOR_ALL + f Z j field_32882 SHOW_WANTS_GOLEM_FOR_ALL + f Z k field_38346 SHOW_ANGER_LEVEL_FOR_ALL + f Z l field_32883 SHOW_NAME_FOR_SELECTED + f Z m field_32884 SHOW_PROFESSION_FOR_SELECTED + f Z n field_32885 SHOW_BEHAVIORS_FOR_SELECTED + f Z o field_32886 SHOW_ACTIVITIES_FOR_SELECTED + f Z p field_32887 SHOW_MEMORIES_FOR_SELECTED + f Z q field_32888 SHOW_INVENTORY_FOR_SELECTED + f Z r field_32889 SHOW_GOSSIPS_FOR_SELECTED + f Z s field_32890 SHOW_PATH_FOR_SELECTED + f Z t field_32891 SHOW_HEALTH_FOR_SELECTED + f Z u field_32892 SHOW_WANTS_GOLEM_FOR_SELECTED + f Z v field_38347 SHOW_ANGER_LEVEL_FOR_SELECTED + f Z w field_32893 SHOW_POI_INFO + f I x field_32894 MAX_RENDER_DIST_FOR_BRAIN_INFO + f I y field_32895 MAX_RENDER_DIST_FOR_POI_INFO + f I z field_32896 MAX_TARGETING_DIST + m (I)V a method_35797 removeBrainDump + m (ILaag$a;)Z a method_35798 method_35798 + m (Laag$a;)V a method_19432 addOrUpdateBrainDump + m (Lbsr;)V a method_23126 method_23126 + m (Lfbi;Lgez;DDDLaag$a;)V a method_23148 method_23148 + m (Lfbi;Lgez;Laag$a;DDD)V a method_23136 renderPath + m (Lfbi;Lgez;Lgih$a;)V a method_23137 renderPoiInfo + m (Lfbi;Lgez;Ljava/lang/String;Lgih$a;II)V a method_23133 renderTextOverPoi + m (Lfbi;Lgez;Ljava/lang/String;Ljd;II)V a method_23134 renderTextOverPos + m (Lfbi;Lgez;Ljd;)V a method_23138 highlightPoi + m (Lfbi;Lgez;Ljd;Ljava/util/List;)V a method_23131 renderGhostPoi + m (Lfbi;Lgez;Ljw;ILjava/lang/String;IF)V a method_23132 renderTextOverMob + m (Lgih$a;)V a method_19701 addPoi + m (Ljava/util/Map$Entry;)Z a method_24804 method_24804 + m (Ljd;)V a method_19434 removePoi + m (Ljd;I)V a method_19702 setFreeTicketCount + m (Ljd;Laag$a;)Z a method_29384 method_29384 + m (Ljd;Lfbi;Lgez;Lgih$a;)V a method_23128 method_23128 + m (Ljd;Lfbi;Lgez;Ljd;Ljava/util/List;)V a method_23129 method_23129 + m ()V b method_24805 clearRemovedEntities + m (Laag$a;)Z b method_23145 isMobSelected + m (Lfbi;Lgez;DDD)V b method_23135 doRender + m (Lfbi;Lgez;Laag$a;DDD)V b method_23140 renderBrainInfo + m (Lgih$a;)Ljava/util/Set; b method_23141 getTicketHolderNames + m (Ljd;)Ljava/util/Collection; b method_23142 getTicketHolders + m (Ljd;Laag$a;)Z b method_23127 method_23127 + m ()Ljava/util/Map; c method_23144 getGhostPois + m (Laag$a;)Z c method_23147 isPlayerCloseEnoughToMob + m (Lgih$a;)Ljava/util/Set; c method_29385 getPotentialTicketHolderNames + m (Ljd;)Ljava/util/Collection; c method_29386 getPotentialTicketHolders + m ()V d method_23146 updateLastLookedAtUuid + m (Ljd;)Ljava/util/List; d method_30112 method_30112 + m (Lfgo;)V + m ()V +c gih$a net/minecraft/class_4207$class_4233 net/minecraft/client/renderer/debug/BrainDebugRenderer$PoiInfo + f Ljd; a field_18931 pos + f Ljava/lang/String; b field_18932 type + f I c field_18933 freeTicketCount + m (Ljd;Ljava/lang/String;I)V +c gii net/minecraft/class_8985 net/minecraft/client/renderer/debug/BreezeDebugRenderer + f I a field_47465 JUMP_TARGET_LINE_COLOR + f I b field_47466 TARGET_LINE_COLOR + f I c field_47467 INNER_CIRCLE_COLOR + f I d field_47468 MIDDLE_CIRCLE_COLOR + f I e field_47469 OUTER_CIRCLE_COLOR + f I f field_47470 CIRCLE_VERTICES + f F g field_47471 SEGMENT_SIZE_RADIANS + f Lfgo; h field_47472 minecraft + f Ljava/util/Map; i field_47473 perEntity + m ()V a method_55255 clear + m (ILorg/joml/Matrix4f;DDDLfbm;Lexc;FI)V a method_55256 drawCircleVertex + m (Laai$a;)V a method_55266 add + m (Lbsr;)Lexc; a method_55257 method_55257 + m (Lckz;)Z a method_55258 method_55258 + m (Lfbi;Lgez;DDD)V a method_55259 render + m (Lfbi;Lgez;DDDLckz;Lexc;)V a method_55260 method_55260 + m (Lfbi;Lgez;DDDLckz;Ljd;)V a method_55261 method_55261 + m (Lfbi;Lgez;DDDLexc;Lexc;I)V a method_55262 drawLine + m (Lgeb;Lfbi;Lgez;DDDLckz;)V a method_55263 method_55263 + m (Lgeb;Ljava/lang/Integer;)Lbsr; a method_55264 method_55264 + m (Lorg/joml/Matrix4f;DDDLfbm;Lexc;FI)V a method_55265 drawCircle + m (Lfgo;)V + m ()V +c gij net/minecraft/class_862 net/minecraft/client/renderer/debug/ChunkBorderRenderer + f Lfgo; a field_4516 minecraft + f I b field_35557 CELL_BORDER + f I c field_35558 YELLOW + m (Lfgo;)V + m ()V +c gik net/minecraft/class_860 net/minecraft/client/renderer/debug/ChunkDebugRenderer + f Lfgo; a field_4509 minecraft + f D b field_4510 lastUpdateTime + f I c field_4511 radius + f Lgik$a; d field_20998 data + m (Lfgo;)V +c gik$a net/minecraft/class_860$class_4605 net/minecraft/client/renderer/debug/ChunkDebugRenderer$ChunkData + f Ljava/util/Map; a field_21000 clientData + f Ljava/util/concurrent/CompletableFuture; b field_21001 serverData + m (Lguo;Lakq;II)Ljava/util/Map; a method_23096 method_23096 + m (Lgik;Lguo;DD)V +c gil net/minecraft/class_865 net/minecraft/client/renderer/debug/CollisionBoxRenderer + f Lfgo; a field_4540 minecraft + f D b field_4541 lastUpdateTime + f Ljava/util/List; c field_4542 shapes + m (Lfgo;)V +c gim net/minecraft/class_863 net/minecraft/client/renderer/debug/DebugRenderer + f Lgiu; a field_4523 pathfindingRenderer + f Lgim$a; b field_4528 waterDebugRenderer + f Lgim$a; c field_4532 chunkBorderRenderer + f Lgim$a; d field_4538 heightMapRenderer + f Lgim$a; e field_4534 collisionBoxRenderer + f Lgim$a; f field_44827 supportBlockRenderer + f Lgim$a; g field_4535 neighborsUpdateRenderer + f Lgix; h field_4539 structureRenderer + f Lgim$a; i field_4536 lightDebugRenderer + f Lgim$a; j field_4537 worldGenAttemptRenderer + f Lgim$a; k field_4517 solidFaceRenderer + f Lgim$a; l field_4533 chunkRenderer + f Lgih; m field_18777 brainDebugRenderer + f Lgiz; n field_22408 villageSectionsDebugRenderer + f Lgig; o field_21547 beeDebugRenderer + f Lgiv; p field_19325 raidDebugRenderer + f Lgip; q field_18778 goalSelectorRenderer + f Lgio; r field_20519 gameTestDebugRenderer + f Lgin; s field_28254 gameEventListenerRenderer + f Lgis; t field_44674 skyLightSectionDebugRenderer + f Lgii; u field_47474 breezeDebugRenderer + f Z v field_4531 renderChunkborder + m ()V a method_20413 clear + m (Lbsr;)Z a method_23100 method_23100 + m (Lbsr;I)Ljava/util/Optional; a method_23101 getTargetedEntity + m (Lfbi;Lgez$a;DDD)V a method_23099 render + m (Lfbi;Lgez;DDDDDDFFFF)V a method_23098 renderFilledBox + m (Lfbi;Lgez;Lewx;FFFF)V a method_23102 renderFilledBox + m (Lfbi;Lgez;Ljava/lang/String;DDDI)V a method_23105 renderFloatingText + m (Lfbi;Lgez;Ljava/lang/String;DDDIF)V a method_23106 renderFloatingText + m (Lfbi;Lgez;Ljava/lang/String;DDDIFZFZ)V a method_23107 renderFloatingText + m (Lfbi;Lgez;Ljava/lang/String;IIII)V a method_23108 renderFloatingText + m (Lfbi;Lgez;Ljd;FFFF)V a method_54808 renderFilledUnitCube + m (Lfbi;Lgez;Ljd;FFFFF)V a method_23103 renderFilledBox + m (Lfbi;Lgez;Ljd;Ljd;FFFF)V a method_23104 renderFilledBox + m ()Z b method_3713 switchRenderChunkborder + m (Lfgo;)V +c gim$a net/minecraft/class_863$class_864 net/minecraft/client/renderer/debug/DebugRenderer$SimpleDebugRenderer + m ()V a method_20414 clear + m (Lfbi;Lgez;DDD)V a method_23109 render +c gin net/minecraft/class_5739 net/minecraft/client/renderer/debug/GameEventListenerRenderer + f Lfgo; a field_28255 minecraft + f I b field_32899 LISTENER_RENDER_DIST + f F c field_32900 BOX_HEIGHT + f Ljava/util/List; d field_28256 trackedGameEvents + f Ljava/util/List; e field_28257 trackedListeners + m (Lakq;Lexc;)V a method_33087 trackGameEvent + m (Ldcw;Lexc;Lgin$b;)Z a method_33086 method_33086 + m (Ldyd;I)V a method_33088 trackListener + m (Lfbi;Lfbm;DDDLexc;)V a method_33090 method_33090 + m (Lfbi;Lgez;Lewx;FFFF)V a method_33089 renderFilledBox + m (Lfbi;Lgez;Lexc;)V a method_33092 method_33092 + m (Lgin$b;Lfbi;Lfbm;DDDLexc;)V a method_33091 method_33091 + m (Lfgo;)V +c gin$a net/minecraft/class_5739$class_5740 net/minecraft/client/renderer/debug/GameEventListenerRenderer$TrackedGameEvent + f J a comp_678 timeStamp + f Lakq; b comp_679 gameEvent + f Lexc; c comp_680 position + m ()Z a method_33093 isExpired + m ()J b comp_678 timeStamp + m ()Lakq; c comp_679 gameEvent + m ()Lexc; d comp_680 position + m (JLakq;Lexc;)V +c gin$b net/minecraft/class_5739$class_5741 net/minecraft/client/renderer/debug/GameEventListenerRenderer$TrackedListener + f Ldyd; a field_28261 listenerSource + f I b field_28262 listenerRange + m (Ldcw;)Ljava/util/Optional; a method_33094 getPosition + m (Ldcw;Lexc;)Z a method_33095 isExpired + m (Lexc;Lexc;)Z a method_42601 method_42601 + m (Ldyd;I)V +c gio net/minecraft/class_4503 net/minecraft/client/renderer/debug/GameTestDebugRenderer + f F a field_32901 PADDING + f Ljava/util/Map; b field_20520 markers + m (JLjava/util/Map$Entry;)Z a method_23110 method_23110 + m (Lfbi;Lgez;Ljd;Lgio$a;)V a method_23111 renderMarker + m (Ljd;ILjava/lang/String;I)V a method_22123 addMarker + m (Lfbi;Lgez;Ljd;Lgio$a;)V b method_49048 method_49048 + m ()V +c gio$a net/minecraft/class_4503$class_4504 net/minecraft/client/renderer/debug/GameTestDebugRenderer$Marker + f I a field_20521 color + f Ljava/lang/String; b field_20522 text + f J c field_20523 removeAtTime + m ()F a method_23112 getR + m ()F b method_23113 getG + m ()F c method_23114 getB + m ()F d method_23115 getA + m (ILjava/lang/String;J)V +c gip net/minecraft/class_4205 net/minecraft/client/renderer/debug/GoalSelectorDebugRenderer + f I a field_32902 MAX_RENDER_DIST + f Lfgo; b field_18780 minecraft + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; c field_18781 goalSelectors + m (I)V a method_35799 removeGoalSelector + m (ILjd;Ljava/util/List;)V a method_19430 addGoalSelector + m (Lfgo;)V +c gip$a net/minecraft/class_4205$class_8683 net/minecraft/client/renderer/debug/GoalSelectorDebugRenderer$EntityGoalInfo + f Ljd; a comp_1624 entityPos + f Ljava/util/List; b comp_1625 goals + m ()Ljd; a comp_1624 entityPos + m ()Ljava/util/List; b comp_1625 goals + m (Ljd;Ljava/util/List;)V +c giq net/minecraft/class_867 net/minecraft/client/renderer/debug/HeightMapRenderer + f Lfgo; a field_4613 minecraft + f I b field_32903 CHUNK_DIST + f F c field_32904 BOX_HEIGHT + m (Ldyy$a;)Lorg/joml/Vector3f; a method_27037 getColor + m (Lfgo;)V +c giq$1 net/minecraft/class_867$1 net/minecraft/client/renderer/debug/HeightMapRenderer$1 + f [I a field_23778 $SwitchMap$net$minecraft$world$level$levelgen$Heightmap$Types + m ()V +c gir net/minecraft/class_866 net/minecraft/client/renderer/debug/LightDebugRenderer + f Lfgo; a field_4612 minecraft + f I b field_32905 MAX_RENDER_DIST + m (Lfgo;)V +c gis net/minecraft/class_8520 net/minecraft/client/renderer/debug/LightSectionDebugRenderer + f Ljava/time/Duration; a field_44675 REFRESH_INTERVAL + f I b field_44676 RADIUS + f Lorg/joml/Vector4f; c field_44677 LIGHT_AND_BLOCKS_COLOR + f Lorg/joml/Vector4f; d field_44678 LIGHT_ONLY_COLOR + f Lfgo; e field_44679 minecraft + f Lddf; f field_44680 lightLayer + f Ljava/time/Instant; g field_44681 lastUpdateTime + f Lgis$a; h field_44682 data + m (Lfbi;Lexl;Lkf;Lfbm;DDDLorg/joml/Vector4f;)V a method_51457 renderFaces + m (Lfbi;Lexl;Lkf;Lgez;DDDLorg/joml/Vector4f;)V a method_51458 renderEdges + m (Lfbi;Lfbm;DDDIIIIIILorg/joml/Vector4f;)V a method_51459 renderEdge + m (Lfbi;Lfbm;Lji;DDDIIILorg/joml/Vector4f;)V a method_51460 renderFace + m (Lkf;Lfbi;Lfbm;DDDLorg/joml/Vector4f;Lji;III)V a method_51461 method_51461 + m (Lkf;Lgez;Lfbi;DDDLorg/joml/Vector4f;IIIIII)V a method_51462 method_51462 + m (Lfgo;Lddf;)V + m ()V +c gis$a net/minecraft/class_8520$class_8521 net/minecraft/client/renderer/debug/LightSectionDebugRenderer$SectionData + f Lexl; a field_44684 lightAndBlocksShape + f Lexl; b field_44685 lightShape + f Lkf; c field_44686 minPos + m (Leot;Lkf;ILddf;)V +c git net/minecraft/class_869 net/minecraft/client/renderer/debug/NeighborsUpdateRenderer + f Lfgo; a field_4622 minecraft + f Ljava/util/Map; b field_4623 lastUpdate + m (JLjd;)V a method_3870 addUpdate + m (Ljava/lang/Long;)Ljava/util/Map; a method_30113 method_30113 + m (Lfgo;)V +c giu net/minecraft/class_868 net/minecraft/client/renderer/debug/PathfindingRenderer + f Ljava/util/Map; a field_4616 pathMap + f Ljava/util/Map; b field_4617 pathMaxDist + f Ljava/util/Map; c field_4615 creationMap + f J d field_32906 TIMEOUT + f F e field_32907 MAX_RENDER_DIST + f Z f field_32908 SHOW_OPEN_CLOSED + f Z g field_32909 SHOW_OPEN_CLOSED_COST_MALUS + f Z h field_32910 SHOW_OPEN_CLOSED_NODE_TYPE_WITH_TEXT + f Z i field_32911 SHOW_OPEN_CLOSED_NODE_TYPE_WITH_BOX + f Z j field_32912 SHOW_GROUND_LABELS + f F k field_32913 TEXT_SCALE + m (ILeps;F)V a method_3869 addPath + m (Lfbi;Lfbm;Leps;DDD)V a method_23117 renderPathLine + m (Lfbi;Lgez;Leps;FZZDDD)V a method_23118 renderPath + m (Ljd;DDD)F a method_23119 distanceToCamera + m ()V +c giv net/minecraft/class_4304 net/minecraft/client/renderer/debug/RaidDebugRenderer + f I a field_32914 MAX_RENDER_DIST + f F b field_32915 TEXT_SCALE + f Lfgo; c field_19326 minecraft + f Ljava/util/Collection; d field_19327 raidCenters + m (Lfbi;Lgez;Ljava/lang/String;Ljd;I)V a method_23123 renderTextOverBlock + m (Lfbi;Lgez;Ljd;)V a method_23122 highlightRaidCenter + m (Ljava/util/Collection;)V a method_20561 setRaidCenters + m ()Lffy; b method_23125 getCamera + m (Lfgo;)V +c giw net/minecraft/class_871 net/minecraft/client/renderer/debug/SolidFaceRenderer + f Lfgo; a field_4628 minecraft + m (Lfgo;)V +c gix net/minecraft/class_870 net/minecraft/client/renderer/debug/StructureRenderer + f Lfgo; a field_4624 minecraft + f Ljava/util/Map; b field_4626 postMainBoxes + f Ljava/util/Map; c field_4627 postPieces + f I d field_32916 MAX_RENDER_DIST + m (Lakq;)Ljava/util/Map; a method_52842 method_52842 + m (Lejj;Ljava/util/List;Lakq;)V a method_3871 addBoundingBox + m (Lakq;)Ljava/util/Map; b method_52843 method_52843 + m (Lfgo;)V +c giy net/minecraft/class_8560 net/minecraft/client/renderer/debug/SupportBlockRenderer + f Lfgo; a field_44828 minecraft + f D b field_44829 lastUpdateTime + f Ljava/util/List; c field_44830 surroundEntities + m (Lbsr;)D a method_51789 getBias + m (Lfbi;Lgez;DDDLbsr;Ljava/util/function/DoubleSupplier;FFF)V a method_51790 drawHighlights + m (Ljava/util/function/DoubleSupplier;Lbsr;Lfbi;DDDLgez;FFFLjd;)V a method_51792 method_51792 + m (Ljd;Lfbi;DDDLgez;DFFF)V a method_51791 highlightPosition + m ()D b method_51793 method_51793 + m (Lbsr;)D b method_51794 method_51794 + m (Lfgo;)V +c giz net/minecraft/class_4841 net/minecraft/client/renderer/debug/VillageSectionsDebugRenderer + f I a field_32917 MAX_RENDER_DIST_FOR_VILLAGE_SECTIONS + f Ljava/util/Set; b field_22409 villageSections + m (Lfbi;Lgez;Lkf;)V a method_24810 highlightVillageSection + m (Ljd;Lfbi;Lgez;Lkf;)V a method_49049 method_49049 + m (Lkf;)V a method_24808 setVillageSection + m (Lkf;)V b method_24809 setNotVillageSection + m ()V +c gja net/minecraft/class_872 net/minecraft/client/renderer/debug/WaterDebugRenderer + f Lfgo; a field_4629 minecraft + m (Lfgo;)V +c gjb net/minecraft/class_873 net/minecraft/client/renderer/debug/WorldGenAttemptRenderer + f Ljava/util/List; a field_4640 toRender + f Ljava/util/List; b field_4635 scales + f Ljava/util/List; c field_4637 alphas + f Ljava/util/List; d field_4639 reds + f Ljava/util/List; e field_4636 greens + f Ljava/util/List; f field_4638 blues + m (Ljd;FFFFF)V a method_3872 addPos + m ()V +c gjc net/minecraft/class_6255 net/minecraft/client/renderer/debug/package-info +c gjd net/minecraft/class_875 net/minecraft/client/renderer/entity/AbstractHorseRenderer + f F a field_4641 scale + m (Lchi;Lfbi;F)V a method_3874 scale + m (Lgkj$a;Lfvv;F)V +c gje net/minecraft/class_968 net/minecraft/client/renderer/entity/AbstractZombieRenderer + f Lakr; a field_4819 ZOMBIE_LOCATION + m (Lckw;)Lakr; a method_4163 getTextureLocation + m (Lckw;)Z b method_25449 isShaking + m (Lgkj$a;Lfyc;Lfyc;Lfyc;)V + m ()V +c gjf net/minecraft/class_7310 net/minecraft/client/renderer/entity/AllayRenderer + f Lakr; a field_38461 ALLAY_TEXTURE + m (Lcgk;)Lakr; a method_42744 getTextureLocation + m (Lcgk;Ljd;)I a method_42745 getBlockLightLevel + m (Lgkj$a;)V + m ()V +c gjg net/minecraft/class_9084 net/minecraft/client/renderer/entity/ArmadilloRenderer + f Lakr; a field_47887 ARMADILLO_LOCATION + m (Lcgn;)Lakr; a method_55827 getTextureLocation + m (Lgkj$a;)V + m ()V +c gjh net/minecraft/class_877 net/minecraft/client/renderer/entity/ArmorStandRenderer + f Lakr; a field_4642 DEFAULT_SKIN_LOCATION + m (Lciw;)Lakr; a method_3880 getTextureLocation + m (Lciw;Lfbi;FFFF)V a method_3877 setupRotations + m (Lciw;ZZZ)Lgfh; a method_24301 getRenderType + m (Lciw;)Z b method_3878 shouldShowName + m (Lgkj$a;)V + m ()V +c gji net/minecraft/class_876 net/minecraft/client/renderer/entity/ArrowRenderer + m (Lcnd;FFLfbi;Lgez;I)V a method_3875 render + m (Lfbi$a;Lfbm;IIIFFIIII)V a method_23153 vertex + m (Lgkj$a;)V +c gjj net/minecraft/class_5774 net/minecraft/client/renderer/entity/AxolotlRenderer + f Ljava/util/Map; a field_28390 TEXTURE_BY_TYPE + m (Lcgq;)Lakr; a method_33306 getTextureLocation + m (Ljava/util/HashMap;)V a method_33307 method_33307 + m (Lgkj$a;)V + m ()V +c gjk net/minecraft/class_879 net/minecraft/client/renderer/entity/BatRenderer + f Lakr; a field_4645 BAT_LOCATION + m (Lcez;)Lakr; a method_3883 getTextureLocation + m (Lgkj$a;)V + m ()V +c gjl net/minecraft/class_4505 net/minecraft/client/renderer/entity/BeeRenderer + f Lakr; a field_20524 ANGRY_BEE_TEXTURE + f Lakr; i field_20525 ANGRY_NECTAR_BEE_TEXTURE + f Lakr; j field_20526 BEE_TEXTURE + f Lakr; k field_20527 NECTAR_BEE_TEXTURE + m (Lcff;)Lakr; a method_22129 getTextureLocation + m (Lgkj$a;)V + m ()V +c gjm net/minecraft/class_878 net/minecraft/client/renderer/entity/BlazeRenderer + f Lakr; a field_4644 BLAZE_LOCATION + m (Lcjm;)Lakr; a method_3881 getTextureLocation + m (Lcjm;Ljd;)I a method_24085 getBlockLightLevel + m (Lgkj$a;)V + m ()V +c gjn net/minecraft/class_881 net/minecraft/client/renderer/entity/BoatRenderer + f Ljava/util/Map; a field_27758 boatResources + m (Lcov$b;)Lcov$b; a method_32162 method_32162 + m (Lcov$b;Z)Lakr; a method_42602 getTextureLocation + m (Lcov;)Lakr; a method_3891 getTextureLocation + m (Lcov;FFLfbi;Lgez;I)V a method_3888 render + m (Lgkj$a;Lcov$b;Z)Lfwc; a method_42603 createBoatModel + m (ZLgkj$a;Lcov$b;)Lcom/mojang/datafixers/util/Pair; a method_32163 method_32163 + m (Lgkj$a;Z)V +c gjo net/minecraft/class_9255 net/minecraft/client/renderer/entity/BoggedRenderer + f Lakr; a field_49163 BOGGED_SKELETON_LOCATION + f Lakr; i field_49164 BOGGED_OUTER_LAYER_LOCATION + m (Lcjn;)Lakr; a method_57803 getTextureLocation + m (Lgkj$a;)V + m ()V +c gjp net/minecraft/class_8986 net/minecraft/client/renderer/entity/BreezeRenderer + f Lakr; a field_47475 TEXTURE_LOCATION + m (Lckz;)Lakr; a method_55267 getTextureLocation + m (Lckz;FFLfbi;Lgez;I)V a method_55829 render + m (Lfut;[Lfyk;)Lfut; a method_55830 enable + m (Lgkj$a;)V + m ()V +c gjq net/minecraft/class_7763 net/minecraft/client/renderer/entity/CamelRenderer + f Lakr; a field_40529 CAMEL_LOCATION + m (Lcgv;)Lakr; a method_45801 getTextureLocation + m (Lgkj$a;Lfyi;)V + m ()V +c gjr net/minecraft/class_929 net/minecraft/client/renderer/entity/CatRenderer + m (Lcfh;)Lakr; a method_4078 getTextureLocation + m (Lcfh;Lfbi;F)V a method_4079 scale + m (Lcfh;Lfbi;FFFF)V a method_16045 setupRotations + m (Lgkj$a;)V +c gjs net/minecraft/class_880 net/minecraft/client/renderer/entity/CaveSpiderRenderer + f Lakr; a field_4646 CAVE_SPIDER_LOCATION + f F i field_32918 SCALE + m (Lcjo;)Lakr; a method_3885 getTextureLocation + m (Lcjo;Lfbi;F)V a method_3886 scale + m (Lgkj$a;)V + m ()V +c gjt net/minecraft/class_883 net/minecraft/client/renderer/entity/ChestedHorseRenderer + f Ljava/util/Map; a field_4650 MAP + m (Lchh;)Lakr; a method_3894 getTextureLocation + m (Lgkj$a;FLfyi;)V + m ()V +c gju net/minecraft/class_882 net/minecraft/client/renderer/entity/ChickenRenderer + f Lakr; a field_4649 CHICKEN_LOCATION + m (Lcfj;)Lakr; a method_3892 getTextureLocation + m (Lcfj;F)F a method_3893 getBob + m (Lgkj$a;)V + m ()V +c gjv net/minecraft/class_885 net/minecraft/client/renderer/entity/CodRenderer + f Lakr; a field_4652 COD_LOCATION + m (Lcfk;)Lakr; a method_3897 getTextureLocation + m (Lcfk;Lfbi;FFFF)V a method_3896 setupRotations + m (Lgkj$a;)V + m ()V +c gjw net/minecraft/class_884 net/minecraft/client/renderer/entity/CowRenderer + f Lakr; a field_4651 COW_LOCATION + m (Lcfl;)Lakr; a method_3895 getTextureLocation + m (Lgkj$a;)V + m ()V +c gjx net/minecraft/class_887 net/minecraft/client/renderer/entity/CreeperRenderer + f Lakr; a field_4653 CREEPER_LOCATION + m (Lcjp;)Lakr; a method_3899 getTextureLocation + m (Lcjp;F)F a method_23154 getWhiteOverlayProgress + m (Lcjp;Lfbi;F)V a method_3900 scale + m (Lgkj$a;)V + m ()V +c gjy net/minecraft/class_8138 net/minecraft/client/renderer/entity/DisplayRenderer + f Lgkh; a field_42525 entityRenderDispatcher + m (Lbsq$k;Lbsq;FLorg/joml/Quaternionf;)Lorg/joml/Quaternionf; a method_49053 calculateOrientation + m (Lbsq;)Lakr; a method_49050 getTextureLocation + m (Lbsq;F)F a method_52844 entityYRot + m (Lbsq;FFLfbi;Lgez;I)V a method_49051 render + m (Lbsq;Ljava/lang/Object;Lfbi;Lgez;IF)V a method_49052 renderInner + m (Lffy;)F a method_52845 cameraYrot + m (Lbsq;)Ljava/lang/Object; b method_49921 getSubState + m (Lbsq;F)F b method_52846 entityXRot + m (Lffy;)F b method_52847 cameraXRot + m (Lgkj$a;)V +c gjy$1 net/minecraft/class_8138$1 net/minecraft/client/renderer/entity/DisplayRenderer$1 + f [I a field_42526 $SwitchMap$net$minecraft$world$entity$Display$BillboardConstraints + f [I b field_42527 $SwitchMap$net$minecraft$world$entity$Display$TextDisplay$Align + m ()V +c gjy$a net/minecraft/class_8138$class_8139 net/minecraft/client/renderer/entity/DisplayRenderer$BlockDisplayRenderer + f Lgft; a field_42528 blockRenderer + m (Lbsq$b;)Lbsq$b$a; a method_49922 getSubState + m (Lbsq$b;Lbsq$b$a;Lfbi;Lgez;IF)V a method_49054 renderInner + m (Lgkj$a;)V +c gjy$b net/minecraft/class_8138$class_8140 net/minecraft/client/renderer/entity/DisplayRenderer$ItemDisplayRenderer + f Lglh; a field_42529 itemRenderer + m (Lbsq$g;)Lbsq$g$a; a method_49923 getSubState + m (Lbsq$g;Lbsq$g$a;Lfbi;Lgez;IF)V a method_49055 renderInner + m (Lgkj$a;)V +c gjy$c net/minecraft/class_8138$class_8141 net/minecraft/client/renderer/entity/DisplayRenderer$TextDisplayRenderer + f Lfhx; a field_42531 font + m (Lbsq$l;)Lbsq$l$e; a method_49924 getSubState + m (Lbsq$l;Lbsq$l$e;Lfbi;Lgez;IF)V a method_49056 renderInner + m (Lwz;I)Lbsq$l$b; a method_49057 splitLines + m (Lgkj$a;)V +c gjz net/minecraft/class_888 net/minecraft/client/renderer/entity/DolphinRenderer + f Lakr; a field_4654 DOLPHIN_LOCATION + m (Lcfm;)Lakr; a method_3903 getTextureLocation + m (Lgkj$a;)V + m ()V +c gka net/minecraft/class_891 net/minecraft/client/renderer/entity/DragonFireballRenderer + f Lakr; a field_4661 TEXTURE_LOCATION + f Lgfh; g field_21735 RENDER_TYPE + m (Lcng;)Lakr; a method_3905 getTextureLocation + m (Lcng;FFLfbi;Lgez;I)V a method_3906 render + m (Lcng;Ljd;)I a method_24086 getBlockLightLevel + m (Lfbm;Lfbi$a;IFIII)V a method_23837 vertex + m (Lgkj$a;)V + m ()V +c gkb net/minecraft/class_890 net/minecraft/client/renderer/entity/DrownedRenderer + f Lakr; a field_4659 DROWNED_LOCATION + m (Lcjr;Lfbi;FFFF)V a method_4164 setupRotations + m (Lgkj$a;)V + m ()V +c gkc net/minecraft/class_893 net/minecraft/client/renderer/entity/ElderGuardianRenderer + f Lakr; a field_4665 GUARDIAN_ELDER_LOCATION + m (Lcjz;Lfbi;F)V a method_3910 scale + m (Lgkj$a;)V + m ()V +c gkd net/minecraft/class_892 net/minecraft/client/renderer/entity/EndCrystalRenderer + f Lakr; a field_4663 END_CRYSTAL_LOCATION + f Lgfh; g field_21736 RENDER_TYPE + f F h field_21002 SIN_45 + f Ljava/lang/String; i field_32919 GLASS + f Ljava/lang/String; j field_32920 BASE + f Lfyk; k field_21003 cube + f Lfyk; l field_21004 glass + f Lfyk; m field_21005 base + m ()Lfyq; a method_32164 createBodyLayer + m (Lchz;)Lakr; a method_3909 getTextureLocation + m (Lchz;F)F a method_23155 getY + m (Lchz;FFLfbi;Lgez;I)V a method_3908 render + m (Lchz;Lgie;DDD)Z a method_3907 shouldRender + m (Lgkj$a;)V + m ()V +c gke net/minecraft/class_895 net/minecraft/client/renderer/entity/EnderDragonRenderer + f Lakr; a field_4668 CRYSTAL_BEAM_LOCATION + f Lakr; g field_4669 DRAGON_EXPLODING_LOCATION + f Lakr; h field_4670 DRAGON_LOCATION + f Lakr; i field_21006 DRAGON_EYES_LOCATION + f Lgfh; j field_21737 RENDER_TYPE + f Lgfh; k field_21738 DECAL + f Lgfh; l field_21739 EYES + f Lgfh; m field_21740 BEAM + f F n field_21007 HALF_SQRT_3 + f Lgke$a; o field_21008 model + m ()Lfyq; a method_32165 createBodyLayer + m (FFFFILfbi;Lgez;I)V a method_3917 renderCrystalBeams + m (Lcia;)Lakr; a method_3914 getTextureLocation + m (Lcia;FFLfbi;Lgez;I)V a method_3918 render + m (Lfbi;FLfbm;)V a method_61158 renderRays + m (Lgkj$a;)V + m ()V +c gke$a net/minecraft/class_895$class_625 net/minecraft/client/renderer/entity/EnderDragonRenderer$DragonModel + f Lfyk; a field_3630 head + f Lfyk; b field_3637 neck + f Lfyk; f field_3631 jaw + f Lfyk; g field_3627 body + f Lfyk; h field_3629 leftWing + f Lfyk; i field_21548 leftWingTip + f Lfyk; j field_21549 leftFrontLeg + f Lfyk; k field_21550 leftFrontLegTip + f Lfyk; l field_21551 leftFrontFoot + f Lfyk; m field_21552 leftRearLeg + f Lfyk; n field_21553 leftRearLegTip + f Lfyk; o field_21554 leftRearFoot + f Lfyk; p field_21555 rightWing + f Lfyk; q field_3635 rightWingTip + f Lfyk; r field_3632 rightFrontLeg + f Lfyk; s field_3634 rightFrontLegTip + f Lfyk; t field_3625 rightFrontFoot + f Lfyk; u field_3633 rightRearLeg + f Lfyk; w field_3626 rightRearLegTip + f Lfyk; x field_3628 rightRearFoot + f Lcia; y field_21441 entity + f F z field_21442 a + m (Lcia;FFF)V a method_23620 prepareMobModel + m (Lcia;FFFFF)V a method_23621 setupAnim + m (Lfbi;Lfbm;IIFLfyk;Lfyk;Lfyk;Lfyk;Lfyk;Lfyk;Lfyk;I)V a method_23838 renderSide + m (Lfyk;)V +c gkf net/minecraft/class_894 net/minecraft/client/renderer/entity/EndermanRenderer + f Lakr; a field_4666 ENDERMAN_LOCATION + f Layw; i field_4667 random + m (Lcjt;)Lakr; a method_3912 getTextureLocation + m (Lcjt;F)Lexc; a method_23160 getRenderOffset + m (Lcjt;FFLfbi;Lgez;I)V a method_3911 render + m (Lgkj$a;)V + m ()V +c gkg net/minecraft/class_896 net/minecraft/client/renderer/entity/EndermiteRenderer + f Lakr; a field_4671 ENDERMITE_LOCATION + m (Lcju;)F a method_3919 getFlipDegrees + m (Lcju;)Lakr; b method_3920 getTextureLocation + m (Lgkj$a;)V + m ()V +c gkh net/minecraft/class_898 net/minecraft/client/renderer/entity/EntityRenderDispatcher + f Lgqm; a field_4685 textureManager + f Lffy; b field_4686 camera + f Lbsr; c field_4678 crosshairPickEntity + f Lfgs; d field_4692 options + f Lgfh; e field_21009 SHADOW_RENDER_TYPE + f F f field_43377 MAX_SHADOW_RADIUS + f F g field_43378 SHADOW_POWER_FALLOFF_Y + f Ljava/util/Map; h field_4696 renderers + f Ljava/util/Map; i field_4687 playerRenderers + f Ldcw; j field_4684 level + f Lorg/joml/Quaternionf; k field_21794 cameraOrientation + f Lglh; l field_27759 itemRenderer + f Lgft; m field_38886 blockRenderDispatcher + f Lgev; n field_38887 itemInHandRenderer + f Lfhx; o field_4689 font + f Lfyg; p field_27760 entityModels + f Z q field_4681 shouldRenderShadow + f Z r field_4680 renderHitBoxes + m ()Z a method_3958 shouldRenderHitBoxes + m (DDD)D a method_3959 distanceToSqr + m (Lbsr;)Lgki; a method_3953 getRenderer + m (Lbsr;DDDFFLfbi;Lgez;I)V a method_3954 render + m (Lbsr;F)I a method_23839 getPackedLightCoords + m (Lbsr;Lgie;DDD)Z a method_3950 shouldRender + m (Ldcw;)V a method_3944 setLevel + m (Ldcw;Lffy;Lbsr;)V a method_3941 prepare + m (Lfbi$a;Lfbm;FFFFF)V a method_23161 fireVertex + m (Lfbi$a;Lfbm;IFFFFF)V a method_23162 shadowVertex + m (Lfbi$a;Lfbm;Lduy;Ldcz;Ljd;DDDFF)V a method_23163 renderBlockShadow + m (Lfbi;Lbsr;Lgez;)V a method_61170 renderServerSideHitbox + m (Lfbi;Lfbm;Lbsr;FFFF)V a method_3956 renderHitbox + m (Lfbi;Lfbm;Lorg/joml/Vector3f;Lexc;I)V a method_61171 renderVector + m (Lfbi;Lgez;Lbsr;FFLdcz;F)V a method_23166 renderShadow + m (Lfbi;Lgez;Lbsr;Lorg/joml/Quaternionf;)V a method_23165 renderFlame + m (Lorg/joml/Quaternionf;)V a method_24196 overrideCameraOrientation + m (Z)V a method_3948 setRenderShadow + m ()Lorg/joml/Quaternionf; b method_24197 cameraOrientation + m (Lbsr;)D b method_23168 distanceToSqr + m (Z)V b method_3955 setRenderHitBoxes + m (Lbsr;)Lbsr; c method_61172 getServerSideEntity + m ()Lgev; d method_43336 getItemInHandRenderer + m (Lfgo;Lgqm;Lglh;Lgft;Lfhx;Lfgs;Lfyg;)V + m ()V +c gki net/minecraft/class_897 net/minecraft/client/renderer/entity/EntityRenderer + f Lfhx; a field_27761 font + f F b field_32921 NAMETAG_SCALE + f I c field_52257 LEASH_RENDER_STEPS + f Lgkh; d field_4676 entityRenderDispatcher + f F e field_4673 shadowRadius + f F f field_4672 shadowStrength + m (Lbsr;)Lakr; a method_3931 getTextureLocation + m (Lbsr;F)Lexc; a method_23169 getRenderOffset + m (Lbsr;FFLfbi;Lgez;I)V a method_3936 render + m (Lbsr;FLfbi;Lgez;Lbsr;)V a method_61049 renderLeash + m (Lbsr;Lgie;DDD)Z a method_3933 shouldRender + m (Lbsr;Ljd;)I a method_24087 getBlockLightLevel + m (Lbsr;Lwz;Lfbi;Lgez;IF)V a method_3926 renderNameTag + m (Lfbm;Lorg/joml/Matrix4f;FFFIIIIFFFFIZ)V a method_61050 addVertexPair + m ()Lfhx; b method_3932 getFont + m (Lbsr;)Z b method_3921 shouldShowName + m (Lbsr;F)I b method_24088 getPackedLightCoords + m (Lbsr;Ljd;)I b method_27950 getSkyLightLevel + m (Lbsr;)F c method_55831 getShadowRadius + m (Lgkj$a;)V +c gkj net/minecraft/class_5617 net/minecraft/client/renderer/entity/EntityRendererProvider +c gkj$a net/minecraft/class_5617$class_5618 net/minecraft/client/renderer/entity/EntityRendererProvider$Context + f Lgkh; a field_27762 entityRenderDispatcher + f Lglh; b field_27763 itemRenderer + f Lgft; c field_38888 blockRenderDispatcher + f Lgev; d field_38889 itemInHandRenderer + f Laue; e field_27764 resourceManager + f Lfyg; f field_27765 modelSet + f Lfhx; g field_27766 font + m ()Lgkh; a method_32166 getEntityRenderDispatcher + m (Lfyi;)Lfyk; a method_32167 bakeLayer + m ()Lglh; b method_32168 getItemRenderer + m ()Lgft; c method_43337 getBlockRenderDispatcher + m ()Lgev; d method_43338 getItemInHandRenderer + m ()Laue; e method_32169 getResourceManager + m ()Lfyg; f method_32170 getModelSet + m ()Lgst; g method_48481 getModelManager + m ()Lfhx; h method_32171 getFont + m (Lgkh;Lglh;Lgft;Lgev;Laue;Lfyg;Lfhx;)V +c gkk net/minecraft/class_5619 net/minecraft/client/renderer/entity/EntityRenderers + f Lorg/slf4j/Logger; a field_27767 LOGGER + f Ljava/util/Map; b field_27768 PROVIDERS + f Ljava/util/Map; c field_27769 PLAYER_PROVIDERS + m (Lgkj$a;)Lgki; A method_32197 method_32197 + m (Lgkj$a;)Lgki; B method_32198 method_32198 + m ()Z a method_32172 validateRegistrations + m (Lbsx;Lgkj;)V a method_32173 register + m (Lcom/google/common/collect/ImmutableMap$Builder;Lgkj$a;Lbsx;Lgkj;)V a method_32174 method_32174 + m (Lcom/google/common/collect/ImmutableMap$Builder;Lgkj$a;Lgrl$a;Lgkj;)V a method_32175 method_32175 + m (Lgkj$a;)Ljava/util/Map; a method_32176 createEntityRenderers + m (Lgkj$a;)Ljava/util/Map; b method_32177 createPlayerRenderers + m (Lgkj$a;)Lgki; c method_32178 method_32178 + m (Lgkj$a;)Lgki; d method_32179 method_32179 + m (Lgkj$a;)Lgki; e method_32180 method_32180 + m (Lgkj$a;)Lgki; f method_33429 method_33429 + m (Lgkj$a;)Lgki; g method_32181 method_32181 + m (Lgkj$a;)Lgki; h method_32182 method_32182 + m (Lgkj$a;)Lgki; i method_32183 method_32183 + m (Lgkj$a;)Lgki; j method_32184 method_32184 + m (Lgkj$a;)Lgki; k method_32185 method_32185 + m (Lgkj$a;)Lgki; l method_32186 method_32186 + m (Lgkj$a;)Lgki; m method_32187 method_32187 + m (Lgkj$a;)Lgki; n method_32188 method_32188 + m (Lgkj$a;)Lgki; o method_32189 method_32189 + m (Lgkj$a;)Lgki; p method_33430 method_33430 + m (Lgkj$a;)Lgki; q method_32190 method_32190 + m (Lgkj$a;)Lgki; r method_32191 method_32191 + m (Lgkj$a;)Lgki; s method_32192 method_32192 + m (Lgkj$a;)Lgki; t method_32193 method_32193 + m (Lgkj$a;)Lgki; u method_32194 method_32194 + m (Lgkj$a;)Lgki; v method_32195 method_32195 + m (Lgkj$a;)Lgki; w method_32196 method_32196 + m (Lgkj$a;)Lgki; x method_42604 method_42604 + m (Lgkj$a;)Lgki; y method_45802 method_45802 + m (Lgkj$a;)Lgki; z method_42605 method_42605 + m ()V + m ()V +c gkl net/minecraft/class_900 net/minecraft/client/renderer/entity/EvokerFangsRenderer + f Lakr; a field_4699 TEXTURE_LOCATION + f Lfvl; g field_4700 model + m (Lcnh;)Lakr; a method_3963 getTextureLocation + m (Lcnh;FFLfbi;Lgez;I)V a method_3962 render + m (Lgkj$a;)V + m ()V +c gkm net/minecraft/class_899 net/minecraft/client/renderer/entity/EvokerRenderer + f Lakr; a field_4697 EVOKER_ILLAGER + m (Lckn;)Lakr; a method_3961 getTextureLocation + m (Lgkj$a;)V + m ()V +c gkm$1 net/minecraft/class_899$1 net/minecraft/client/renderer/entity/EvokerRenderer$1 + m (Lfbi;Lgez;ILckn;FFFFFF)V a method_23170 render + m (Lgkm;Lgmf;Lgev;)V +c gkn net/minecraft/class_902 net/minecraft/client/renderer/entity/ExperienceOrbRenderer + f Lakr; a field_4701 EXPERIENCE_ORB_LOCATION + f Lgfh; g field_21741 RENDER_TYPE + m (Lbtc;)Lakr; a method_3967 getTextureLocation + m (Lbtc;FFLfbi;Lgez;I)V a method_3966 render + m (Lbtc;Ljd;)I a method_24089 getBlockLightLevel + m (Lfbm;Lfbi$a;FFIIIFFI)V a method_23171 vertex + m (Lgkj$a;)V + m ()V +c gko net/minecraft/class_901 net/minecraft/client/renderer/entity/FallingBlockRenderer + f Lgft; a field_38890 dispatcher + m (Lcjg;)Lakr; a method_3964 getTextureLocation + m (Lcjg;FFLfbi;Lgez;I)V a method_3965 render + m (Lgkj$a;)V +c gkp net/minecraft/class_903 net/minecraft/client/renderer/entity/FireworkEntityRenderer + f Lglh; a field_4703 itemRenderer + m (Lcnk;)Lakr; a method_3969 getTextureLocation + m (Lcnk;FFLfbi;Lgez;I)V a method_3968 render + m (Lgkj$a;)V +c gkq net/minecraft/class_906 net/minecraft/client/renderer/entity/FishingHookRenderer + f Lakr; a field_4707 TEXTURE_LOCATION + f Lgfh; g field_21742 RENDER_TYPE + f D h field_33632 VIEW_BOBBING_SCALE + m (FFFLfbm;Lfbi$a;FF)V a method_23172 stringVertex + m (II)F a method_23954 fraction + m (Lcmx;FF)Lexc; a method_59755 getPlayerHandPos + m (Lcnl;)Lakr; a method_3975 getTextureLocation + m (Lcnl;FFLfbi;Lgez;I)V a method_3974 render + m (Lfbm;Lfbi$a;IFIII)V a method_23840 vertex + m (Lgkj$a;)V + m ()V +c gkr net/minecraft/class_4042 net/minecraft/client/renderer/entity/FoxRenderer + f Lakr; a field_18026 RED_FOX_TEXTURE + f Lakr; i field_18027 RED_FOX_SLEEP_TEXTURE + f Lakr; j field_18028 SNOW_FOX_TEXTURE + f Lakr; k field_18029 SNOW_FOX_SLEEP_TEXTURE + m (Lcfo;)Lakr; a method_18333 getTextureLocation + m (Lcfo;Lfbi;FFFF)V a method_18334 setupRotations + m (Lgkj$a;)V + m ()V +c gks net/minecraft/class_7213 net/minecraft/client/renderer/entity/FrogRenderer + m (Lcgy;)Lakr; a method_41964 getTextureLocation + m (Lgkj$a;)V +c gkt net/minecraft/class_905 net/minecraft/client/renderer/entity/GhastRenderer + f Lakr; a field_4705 GHAST_LOCATION + f Lakr; i field_4706 GHAST_SHOOTING_LOCATION + m (Lcjx;)Lakr; a method_3972 getTextureLocation + m (Lcjx;Lfbi;F)V a method_3973 scale + m (Lgkj$a;)V + m ()V +c gku net/minecraft/class_908 net/minecraft/client/renderer/entity/GiantMobRenderer + f Lakr; a field_4710 ZOMBIE_LOCATION + f F i field_4711 scale + m (Lcjy;)Lakr; a method_3981 getTextureLocation + m (Lcjy;Lfbi;F)V a method_3980 scale + m (Lgkj$a;F)V + m ()V +c gkv net/minecraft/class_5789 net/minecraft/client/renderer/entity/GlowSquidRenderer + f Lakr; a field_28461 GLOW_SQUID_LOCATION + m (Lbte;)Lakr; a method_33431 getTextureLocation + m (Lbte;Ljd;)I a method_33432 getBlockLightLevel + m (Lgkj$a;Lfxm;)V + m ()V +c gkw net/minecraft/class_6256 net/minecraft/client/renderer/entity/GoatRenderer + f Lakr; a field_32923 GOAT_LOCATION + m (Lche;)Lakr; a method_35800 getTextureLocation + m (Lgkj$a;)V + m ()V +c gkx net/minecraft/class_907 net/minecraft/client/renderer/entity/GuardianRenderer + f Lakr; a field_4708 GUARDIAN_LOCATION + f Lakr; i field_4709 GUARDIAN_BEAM_LOCATION + f Lgfh; j field_21743 BEAM_RENDER_TYPE + m (Lbtn;DF)Lexc; a method_3979 getPosition + m (Lcjz;)Lakr; a method_3976 getTextureLocation + m (Lcjz;FFLfbi;Lgez;I)V a method_3977 render + m (Lcjz;Lgie;DDD)Z a method_3978 shouldRender + m (Lfbm;Lfbi$a;FFFIIIFF)V a method_23173 vertex + m (Lgkj$a;)V + m (Lgkj$a;FLfyi;)V + m ()V +c gky net/minecraft/class_4798 net/minecraft/client/renderer/entity/HoglinRenderer + f Lakr; a field_22244 HOGLIN_LOCATION + m (Lclh;)Lakr; a method_24472 getTextureLocation + m (Lclh;)Z b method_27038 isShaking + m (Lgkj$a;)V + m ()V +c gkz net/minecraft/class_910 net/minecraft/client/renderer/entity/HorseRenderer + f Ljava/util/Map; a field_4714 LOCATION_BY_VARIANT + m (Lchk;)Lakr; a method_3983 getTextureLocation + m (Ljava/util/EnumMap;)V a method_27151 method_27151 + m (Lgkj$a;)V + m ()V +c gla net/minecraft/class_909 net/minecraft/client/renderer/entity/HumanoidMobRenderer + m (Lgkj$a;Lfvx;F)V + m (Lgkj$a;Lfvx;FFFF)V +c glb net/minecraft/class_912 net/minecraft/client/renderer/entity/HuskRenderer + f Lakr; a field_4716 HUSK_LOCATION + m (Lckw;Lfbi;F)V a method_3985 scale + m (Lgkj$a;)V + m ()V +c glc net/minecraft/class_3729 net/minecraft/client/renderer/entity/IllagerRenderer + m (Lcjk;Lfbi;F)V a method_16460 scale + m (Lgkj$a;Lfvy;F)V +c gld net/minecraft/class_914 net/minecraft/client/renderer/entity/IllusionerRenderer + f Lakr; a field_4718 ILLUSIONER + m (Lckb;)Lakr; a method_3990 getTextureLocation + m (Lckb;FFLfbi;Lgez;I)V a method_3991 render + m (Lckb;)Z b method_3988 isBodyVisible + m (Lgkj$a;)V + m ()V +c gld$1 net/minecraft/class_914$1 net/minecraft/client/renderer/entity/IllusionerRenderer$1 + m (Lfbi;Lgez;ILckb;FFFFFF)V a method_17149 render + m (Lgld;Lgmf;Lgev;)V +c gle net/minecraft/class_913 net/minecraft/client/renderer/entity/IronGolemRenderer + f Lakr; a field_4717 GOLEM_LOCATION + m (Lcfq;)Lakr; a method_3987 getTextureLocation + m (Lcfq;Lfbi;FFFF)V a method_3986 setupRotations + m (Lgkj$a;)V + m ()V +c glf net/minecraft/class_916 net/minecraft/client/renderer/entity/ItemEntityRenderer + f F a field_32924 ITEM_BUNDLE_OFFSET_SCALE + f F g field_32929 FLAT_ITEM_BUNDLE_OFFSET_X + f F h field_32930 FLAT_ITEM_BUNDLE_OFFSET_Y + f F i field_32931 FLAT_ITEM_BUNDLE_OFFSET_Z + f Lglh; j field_4726 itemRenderer + f Layw; k field_4725 random + m (I)I a method_56855 getRenderedAmount + m (Lcjh;)Lakr; a method_3999 getTextureLocation + m (Lcjh;FFLfbi;Lgez;I)V a method_3996 render + m (Lcuq;)I a method_56856 getSeedForItemStack + m (Lglh;Lfbi;Lgez;ILcuq;Layw;Ldcw;)V a method_56857 renderMultipleFromCount + m (Lglh;Lfbi;Lgez;ILcuq;Lgsm;ZLayw;)V a method_56858 renderMultipleFromCount + m (Lgkj$a;)V +c glg net/minecraft/class_915 net/minecraft/client/renderer/entity/ItemFrameRenderer + f I a field_32932 GLOW_FRAME_BRIGHTNESS + f I g field_32933 BRIGHT_MAP_LIGHT_ADJUSTMENT + f Lgsu; h field_4721 FRAME_LOCATION + f Lgsu; i field_4723 MAP_FRAME_LOCATION + f Lgsu; j field_28462 GLOW_FRAME_LOCATION + f Lgsu; k field_28463 GLOW_MAP_FRAME_LOCATION + f Lglh; l field_4720 itemRenderer + f Lgft; m field_38891 blockRenderer + m (Lcja;)Lakr; a method_3993 getTextureLocation + m (Lcja;F)Lexc; a method_23174 getRenderOffset + m (Lcja;FFLfbi;Lgez;I)V a method_3994 render + m (Lcja;II)I a method_33433 getLightVal + m (Lcja;Lcuq;)Lgsu; a method_33434 getFrameModelResourceLoc + m (Lcja;Ljd;)I a method_33435 getBlockLightLevel + m (Lcja;Lwz;Lfbi;Lgez;IF)V a method_23175 renderNameTag + m (Lcja;)Z b method_23176 shouldShowName + m (Lgkj$a;)V + m ()V +c glh net/minecraft/class_918 net/minecraft/client/renderer/entity/ItemRenderer + f Lakr; a field_43086 ENCHANTED_GLINT_ENTITY + f Lakr; b field_43087 ENCHANTED_GLINT_ITEM + f I c field_32937 GUI_SLOT_CENTER_X + f I d field_32938 GUI_SLOT_CENTER_Y + f I e field_32934 ITEM_COUNT_BLIT_OFFSET + f F f field_32935 COMPASS_FOIL_UI_SCALE + f F g field_32936 COMPASS_FOIL_FIRST_PERSON_SCALE + f F h field_41120 COMPASS_FOIL_TEXTURE_SCALE + f Lgsu; i field_40530 TRIDENT_IN_HAND_MODEL + f Lgsu; j field_40531 SPYGLASS_IN_HAND_MODEL + f Ljava/util/Set; k field_4728 IGNORED + f Lgsu; l field_40532 TRIDENT_MODEL + f Lgsu; m field_40533 SPYGLASS_MODEL + f Lfgo; n field_42073 minecraft + f Lgew; o field_4732 itemModelShaper + f Lgqm; p field_4729 textureManager + f Lfhu; q field_4733 itemColors + f Lgem; r field_27770 blockEntityRenderer + m ()Lgew; a method_4012 getItemModelShaper + m (Lbtn;Lcuq;Lcun;ZLfbi;Lgez;Ldcw;III)V a method_23177 renderStatic + m (Lcuq;)Z a method_51795 hasAnimatedTexture + m (Lcuq;Lcun;IILfbi;Lgez;Ldcw;I)V a method_23178 renderStatic + m (Lcuq;Lcun;ZLfbi;Lgez;IILgsm;)V a method_23179 render + m (Lcuq;Ldcw;Lbtn;I)Lgsm; a method_4019 getModel + m (Lfbi;Lfbm;Ljava/util/List;Lcuq;II)V a method_23180 renderQuadList + m (Lgez;Lgfh;Lfbi$a;)Lfbm; a method_30114 getCompassFoilBuffer + m (Lgez;Lgfh;Z)Lfbm; a method_27952 getArmorFoilBuffer + m (Lgez;Lgfh;ZZ)Lfbm; a method_23181 getFoilBuffer + m (Lgsm;Lcuq;IILfbi;Lfbm;)V a method_23182 renderModelLists + m (Lgez;Lgfh;ZZ)Lfbm; b method_29711 getFoilBufferDirect + m (Lfgo;Lgqm;Lgst;Lfhu;Lgem;)V + m ()V +c gli net/minecraft/class_920 net/minecraft/client/renderer/entity/LeashKnotRenderer + f Lakr; a field_4734 KNOT_LOCATION + f Lfwb; g field_4735 model + m (Lcjb;)Lakr; a method_4036 getTextureLocation + m (Lcjb;FFLfbi;Lgez;I)V a method_4035 render + m (Lgkj$a;)V + m ()V +c glj net/minecraft/class_919 net/minecraft/client/renderer/entity/LightningBoltRenderer + m (Lbtm;)Lakr; a method_4033 getTextureLocation + m (Lbtm;FFLfbi;Lgez;I)V a method_4034 render + m (Lorg/joml/Matrix4f;Lfbm;FFIFFFFFFFZZZZ)V a method_23183 quad + m (Lgkj$a;)V +c glk net/minecraft/class_922 net/minecraft/client/renderer/entity/LivingEntityRenderer + f Lorg/slf4j/Logger; a field_21011 LOGGER + f Lfvk; g field_4737 model + f Ljava/util/List; h field_4738 layers + f F i field_32939 EYE_BED_OFFSET + m (Lbtn;)Z a method_25450 isShaking + m (Lbtn;F)F a method_4045 getBob + m (Lbtn;FFLfbi;Lgez;I)V a method_4054 render + m (Lbtn;Lfbi;F)V a method_4042 scale + m (Lbtn;Lfbi;FFFF)V a method_4058 setupRotations + m (Lbtn;ZZZ)Lgfh; a method_24302 getRenderType + m (Lgov;)Z a method_4046 addLayer + m (Lji;)F a method_18656 sleepDirectionToRotation + m (Lbtn;)Z b method_4055 shouldShowName + m (Lbtn;F)F b method_23185 getWhiteOverlayProgress + m (Lbtn;)F c method_4039 getFlipDegrees + m (Lbtn;F)I c method_23622 getOverlayCoords + m (Lbtn;)Z d method_4056 isBodyVisible + m (Lbtn;F)F d method_4044 getAttackAnim + m (Lbtn;)Z e method_38563 isEntityUpsideDown + m (Lbtn;)F f method_55832 getShadowRadius + m (Lgkj$a;Lfvk;F)V + m ()V +c glk$1 net/minecraft/class_922$1 net/minecraft/client/renderer/entity/LivingEntityRenderer$1 + f [I a field_18227 $SwitchMap$net$minecraft$core$Direction + f [I b field_4743 $SwitchMap$net$minecraft$world$scores$Team$Visibility + m ()V +c gll net/minecraft/class_921 net/minecraft/client/renderer/entity/LlamaRenderer + f Lakr; a field_41631 CREAMY + f Lakr; i field_41632 WHITE + f Lakr; j field_41633 BROWN + f Lakr; k field_41634 GRAY + m (Lchl;)Lakr; a method_4037 getTextureLocation + m (Lgkj$a;Lfyi;)V + m ()V +c gll$1 net/minecraft/class_921$1 net/minecraft/client/renderer/entity/LlamaRenderer$1 + f [I a field_41635 $SwitchMap$net$minecraft$world$entity$animal$horse$Llama$Variant + m ()V +c glm net/minecraft/class_923 net/minecraft/client/renderer/entity/LlamaSpitRenderer + f Lakr; a field_4745 LLAMA_SPIT_LOCATION + f Lfwe; g field_4744 model + m (Lcno;)Lakr; a method_4062 getTextureLocation + m (Lcno;FFLfbi;Lgez;I)V a method_4061 render + m (Lgkj$a;)V + m ()V +c gln net/minecraft/class_917 net/minecraft/client/renderer/entity/MagmaCubeRenderer + f Lakr; a field_4727 MAGMACUBE_LOCATION + m (Lckc;)Lakr; a method_4001 getTextureLocation + m (Lckc;FFLfbi;Lgez;I)V a method_48302 render + m (Lckc;Lfbi;F)V a method_4000 scale + m (Lckc;Ljd;)I a method_24090 getBlockLightLevel + m (Lgkj$a;)V + m ()V +c glo net/minecraft/class_925 net/minecraft/client/renderer/entity/MinecartRenderer + f Lfvk; a field_4747 model + f Lakr; g field_4746 MINECART_LOCATION + f Lgft; h field_38892 blockRenderer + m (Lcot;)Lakr; a method_4065 getTextureLocation + m (Lcot;FFLfbi;Lgez;I)V a method_4063 render + m (Lcot;FLdtc;Lfbi;Lgez;I)V a method_4064 renderMinecartContents + m (Lgkj$a;Lfyi;)V + m ()V +c glp net/minecraft/class_927 net/minecraft/client/renderer/entity/MobRenderer + m (Lbtp;)Z a method_4071 shouldShowName + m (Lbtp;)F b method_55833 getShadowRadius + m (Lgkj$a;Lfvk;F)V +c glq net/minecraft/class_926 net/minecraft/client/renderer/entity/MushroomCowRenderer + f Ljava/util/Map; a field_4748 TEXTURES + m (Lcfr;)Lakr; a method_4066 getTextureLocation + m (Ljava/util/HashMap;)V a method_18657 method_18657 + m (Lgkj$a;)V + m ()V +c glr net/minecraft/class_6344 net/minecraft/client/renderer/entity/NoopRenderer + m (Lgkj$a;)V +c gls net/minecraft/class_3683 net/minecraft/client/renderer/entity/OcelotRenderer + f Lakr; a field_16259 CAT_OCELOT_LOCATION + m (Lcfs;)Lakr; a method_16046 getTextureLocation + m (Lgkj$a;)V + m ()V +c glt net/minecraft/class_9483 net/minecraft/client/renderer/entity/OminousItemSpawnerRenderer + f F a field_50231 ROTATION_SPEED + f I g field_50232 TICKS_SCALING + f Lglh; h field_50233 itemRenderer + m (Lbtu;)Lakr; a method_58752 getTextureLocation + m (Lbtu;FFLfbi;Lgez;I)V a method_58753 render + m (Lgkj$a;)V +c glu net/minecraft/class_928 net/minecraft/client/renderer/entity/PaintingRenderer + m (Lcjc;)Lakr; a method_4077 getTextureLocation + m (Lcjc;FFLfbi;Lgez;I)V a method_4075 render + m (Lfbi$a;Lfbm;FFFFFIIII)V a method_23188 vertex + m (Lfbi;Lfbm;Lcjc;IILgql;Lgql;)V a method_4074 renderPainting + m (Lgkj$a;)V +c glv net/minecraft/class_931 net/minecraft/client/renderer/entity/PandaRenderer + f Ljava/util/Map; a field_17595 TEXTURES + m (FFIFF)F a method_4086 getAngle + m (Lcft;)Lakr; a method_4083 getTextureLocation + m (Lcft;Lfbi;FFFF)V a method_4085 setupRotations + m (Ljava/util/EnumMap;)V a method_17796 method_17796 + m (Lgkj$a;)V + m ()V +c glw net/minecraft/class_930 net/minecraft/client/renderer/entity/ParrotRenderer + f Lakr; a field_41636 RED_BLUE + f Lakr; i field_41637 BLUE + f Lakr; j field_41638 GREEN + f Lakr; k field_41639 YELLOW_BLUE + f Lakr; l field_41640 GREY + m (Lcfu$b;)Lakr; a method_47906 getVariantTexture + m (Lcfu;)Lakr; a method_4080 getTextureLocation + m (Lcfu;F)F a method_4081 getBob + m (Lgkj$a;)V + m ()V +c glw$1 net/minecraft/class_930$1 net/minecraft/client/renderer/entity/ParrotRenderer$1 + f [I a field_41641 $SwitchMap$net$minecraft$world$entity$animal$Parrot$Variant + m ()V +c glx net/minecraft/class_933 net/minecraft/client/renderer/entity/PhantomRenderer + f Lakr; a field_4756 PHANTOM_LOCATION + m (Lckf;)Lakr; a method_4090 getTextureLocation + m (Lckf;Lfbi;F)V a method_4088 scale + m (Lckf;Lfbi;FFFF)V a method_4089 setupRotations + m (Lgkj$a;)V + m ()V +c gly net/minecraft/class_932 net/minecraft/client/renderer/entity/PigRenderer + f Lakr; a field_4755 PIG_LOCATION + m (Lcfv;)Lakr; a method_4087 getTextureLocation + m (Lgkj$a;)V + m ()V +c glz net/minecraft/class_4842 net/minecraft/client/renderer/entity/PiglinRenderer + f Ljava/util/Map; a field_25793 TEXTURES + f F i field_32942 PIGLIN_CUSTOM_HEAD_SCALE + m (Lfyg;Lfyi;Z)Lfwo; a method_24875 createModel + m (Lbtp;)Lakr; c method_3982 getTextureLocation + m (Lbtp;)Z d method_25451 isShaking + m (Lgkj$a;Lfyi;Lfyi;Lfyi;Z)V + m ()V +c gma net/minecraft/class_934 net/minecraft/client/renderer/entity/PillagerRenderer + f Lakr; a field_4757 PILLAGER + m (Lckg;)Lakr; a method_4092 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmb net/minecraft/class_937 net/minecraft/client/renderer/entity/PolarBearRenderer + f Lakr; a field_4766 BEAR_LOCATION + m (Lcfw;)Lakr; a method_4097 getTextureLocation + m (Lcfw;Lfbi;F)V a method_4099 scale + m (Lgkj$a;)V + m ()V +c gmc net/minecraft/class_936 net/minecraft/client/renderer/entity/PufferfishRenderer + f Lakr; a field_4762 PUFFER_LOCATION + f I i field_4765 puffStateO + f Lfvk; j field_4761 small + f Lfvk; k field_4764 mid + f Lfvk; l field_4763 big + m (Lcfx;)Lakr; a method_4096 getTextureLocation + m (Lcfx;FFLfbi;Lgez;I)V a method_4094 render + m (Lcfx;Lfbi;FFFF)V a method_4095 setupRotations + m (Lgkj$a;)V + m ()V +c gmd net/minecraft/class_939 net/minecraft/client/renderer/entity/RabbitRenderer + f Lakr; a field_4770 RABBIT_BROWN_LOCATION + f Lakr; i field_4773 RABBIT_WHITE_LOCATION + f Lakr; j field_4775 RABBIT_BLACK_LOCATION + f Lakr; k field_4768 RABBIT_GOLD_LOCATION + f Lakr; l field_4774 RABBIT_SALT_LOCATION + f Lakr; m field_4772 RABBIT_WHITE_SPLOTCHED_LOCATION + f Lakr; n field_4771 RABBIT_TOAST_LOCATION + f Lakr; o field_4769 RABBIT_EVIL_LOCATION + m (Lcfy;)Lakr; a method_4102 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmd$1 net/minecraft/class_939$1 net/minecraft/client/renderer/entity/RabbitRenderer$1 + f [I a field_41642 $SwitchMap$net$minecraft$world$entity$animal$Rabbit$Variant + m ()V +c gme net/minecraft/class_911 net/minecraft/client/renderer/entity/RavagerRenderer + f Lakr; a field_4715 TEXTURE_LOCATION + m (Lcki;)Lakr; a method_3984 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmf net/minecraft/class_3883 net/minecraft/client/renderer/entity/RenderLayerParent + m ()Lfvk; a method_4038 getModel + m (Lbsr;)Lakr; a method_3931 getTextureLocation +c gmg net/minecraft/class_938 net/minecraft/client/renderer/entity/SalmonRenderer + f Lakr; a field_4767 SALMON_LOCATION + m (Lcfz;)Lakr; a method_4101 getTextureLocation + m (Lcfz;Lfbi;FFFF)V a method_4100 setupRotations + m (Lgkj$a;)V + m ()V +c gmh net/minecraft/class_941 net/minecraft/client/renderer/entity/SheepRenderer + f Lakr; a field_4778 SHEEP_LOCATION + m (Lcga;)Lakr; a method_4106 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmi net/minecraft/class_940 net/minecraft/client/renderer/entity/ShulkerBulletRenderer + f Lakr; a field_4776 TEXTURE_LOCATION + f Lgfh; g field_21744 RENDER_TYPE + f Lfxc; h field_4777 model + m (Lcns;)Lakr; a method_4105 getTextureLocation + m (Lcns;FFLfbi;Lgez;I)V a method_4103 render + m (Lcns;Ljd;)I a method_24091 getBlockLightLevel + m (Lgkj$a;)V + m ()V +c gmj net/minecraft/class_943 net/minecraft/client/renderer/entity/ShulkerRenderer + f Lakr; a field_4781 DEFAULT_TEXTURE_LOCATION + f [Lakr; i field_4780 TEXTURE_LOCATION + m (I)[Lakr; a method_22791 method_22791 + m (Lckj;)Lakr; a method_4111 getTextureLocation + m (Lckj;F)Lexc; a method_23189 getRenderOffset + m (Lckj;Lfbi;FFFF)V a method_4114 setupRotations + m (Lckj;Lgie;DDD)Z a method_4112 shouldRender + m (Lckj;Lgie;Lexc;)Z a method_33436 method_33436 + m (Lcti;)Lakr; a method_37105 getTextureLocation + m (Lgsq;)Lakr; a method_22792 method_22792 + m (Ljava/lang/String;)Ljava/lang/String; a method_60910 method_60910 + m (Ljava/lang/String;)Ljava/lang/String; b method_60911 method_60911 + m (Lgkj$a;)V + m ()V +c gmk net/minecraft/class_942 net/minecraft/client/renderer/entity/SilverfishRenderer + f Lakr; a field_4779 SILVERFISH_LOCATION + m (Lckk;)F a method_4107 getFlipDegrees + m (Lckk;)Lakr; b method_4108 getTextureLocation + m (Lgkj$a;)V + m ()V +c gml net/minecraft/class_946 net/minecraft/client/renderer/entity/SkeletonRenderer + f Lakr; a field_4785 SKELETON_LOCATION + m (Lcjl;)Lakr; a method_4119 getTextureLocation + m (Lcjl;)Z b method_35801 isShaking + m (Lgkj$a;)V + m (Lgkj$a;Lfyi;Lfyi;Lfyi;)V + m (Lgkj$a;Lfyi;Lfyi;Lfxf;)V + m ()V +c gmm net/minecraft/class_945 net/minecraft/client/renderer/entity/SlimeRenderer + f Lakr; a field_4784 SLIME_LOCATION + m (Lckm;)Lakr; a method_4116 getTextureLocation + m (Lckm;FFLfbi;Lgez;I)V a method_4117 render + m (Lckm;Lfbi;F)V a method_4118 scale + m (Lgkj$a;)V + m ()V +c gmn net/minecraft/class_8190 net/minecraft/client/renderer/entity/SnifferRenderer + f Lakr; a field_42930 SNIFFER_LOCATION + m (Lchv;)Lakr; a method_49350 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmo net/minecraft/class_948 net/minecraft/client/renderer/entity/SnowGolemRenderer + f Lakr; a field_4788 SNOW_GOLEM_LOCATION + m (Lcgc;)Lakr; a method_4122 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmp net/minecraft/class_947 net/minecraft/client/renderer/entity/SpectralArrowRenderer + f Lakr; a field_4787 SPECTRAL_ARROW_LOCATION + m (Lcnv;)Lakr; a method_4120 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmq net/minecraft/class_949 net/minecraft/client/renderer/entity/SpiderRenderer + f Lakr; a field_4789 SPIDER_LOCATION + m (Lcko;)Lakr; a method_4123 getTextureLocation + m (Lcko;)F b method_4124 getFlipDegrees + m (Lgkj$a;)V + m (Lgkj$a;Lfyi;)V + m ()V +c gmr net/minecraft/class_951 net/minecraft/client/renderer/entity/SquidRenderer + f Lakr; a field_4791 SQUID_LOCATION + m (Lcgd;)Lakr; a method_4127 getTextureLocation + m (Lcgd;F)F a method_4125 getBob + m (Lcgd;Lfbi;FFFF)V a method_4126 setupRotations + m (Lgkj$a;Lfxm;)V + m ()V +c gms net/minecraft/class_950 net/minecraft/client/renderer/entity/StrayRenderer + f Lakr; a field_4790 STRAY_SKELETON_LOCATION + f Lakr; i field_49165 STRAY_CLOTHES_LOCATION + m (Lckp;)Lakr; a method_57817 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmt net/minecraft/class_4999 net/minecraft/client/renderer/entity/StriderRenderer + f Lakr; a field_23372 STRIDER_LOCATION + f Lakr; i field_23937 COLD_LOCATION + f F j field_47888 SHADOW_RADIUS + m (Lckq;)Lakr; a method_26421 getTextureLocation + m (Lckq;Lfbi;F)V a method_56155 scale + m (Lckq;)F b method_55834 getShadowRadius + m (Lckq;)Z c method_26423 isShaking + m (Lgkj$a;)V + m ()V +c gmu net/minecraft/class_7214 net/minecraft/client/renderer/entity/TadpoleRenderer + f Lakr; a field_37969 TADPOLE_TEXTURE + m (Lchb;)Lakr; a method_41966 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmv net/minecraft/class_953 net/minecraft/client/renderer/entity/ThrownItemRenderer + f F a field_32943 MIN_CAMERA_DISTANCE_SQUARED + f Lglh; g field_4792 itemRenderer + f F h field_17147 scale + f Z i field_21745 fullBright + m (Lgkj$a;FZ)V + m (Lgkj$a;)V +c gmw net/minecraft/class_955 net/minecraft/client/renderer/entity/ThrownTridentRenderer + f Lakr; a field_4796 TRIDENT_LOCATION + f Lfxp; g field_4797 model + m (Lcoc;)Lakr; a method_4134 getTextureLocation + m (Lcoc;FFLfbi;Lgez;I)V a method_4133 render + m (Lgkj$a;)V + m ()V +c gmx net/minecraft/class_954 net/minecraft/client/renderer/entity/TippableArrowRenderer + f Lakr; a field_4795 NORMAL_ARROW_LOCATION + f Lakr; g field_4794 TIPPED_ARROW_LOCATION + m (Lcnf;)Lakr; a method_4130 getTextureLocation + m (Lgkj$a;)V + m ()V +c gmy net/minecraft/class_957 net/minecraft/client/renderer/entity/TntMinecartRenderer + f Lgft; g field_38893 blockRenderer + m (Lcpf;FLdtc;Lfbi;Lgez;I)V a method_4137 renderMinecartContents + m (Lgft;Ldtc;Lfbi;Lgez;IZ)V a method_23190 renderWhiteSolidBlock + m (Lgkj$a;)V +c gmz net/minecraft/class_956 net/minecraft/client/renderer/entity/TntRenderer + f Lgft; a field_38894 blockRenderer + m (Lcji;)Lakr; a method_4136 getTextureLocation + m (Lcji;FFLfbi;Lgez;I)V a method_4135 render + m (Lgkj$a;)V +c gna net/minecraft/class_959 net/minecraft/client/renderer/entity/TropicalFishRenderer + f Lfvc; a field_4800 modelA + f Lfvc; i field_4799 modelB + f Lakr; j field_41643 MODEL_A_TEXTURE + f Lakr; k field_41644 MODEL_B_TEXTURE + m (Lcge;)Lakr; a method_4141 getTextureLocation + m (Lcge;FFLfbi;Lgez;I)V a method_4140 render + m (Lcge;Lfbi;FFFF)V a method_4142 setupRotations + m (Lgkj$a;)V + m ()V +c gna$1 net/minecraft/class_959$1 net/minecraft/client/renderer/entity/TropicalFishRenderer$1 + f [I a field_41645 $SwitchMap$net$minecraft$world$entity$animal$TropicalFish$Base + m ()V +c gnb net/minecraft/class_958 net/minecraft/client/renderer/entity/TurtleRenderer + f Lakr; a field_4798 TURTLE_LOCATION + m (Lcgf;)F a method_55835 getShadowRadius + m (Lcgf;)Lakr; b method_4139 getTextureLocation + m (Lgkj$a;)V + m ()V +c gnc net/minecraft/class_961 net/minecraft/client/renderer/entity/UndeadHorseRenderer + f Ljava/util/Map; a field_4803 MAP + m (Lchi;)Lakr; a method_4145 getTextureLocation + m (Lgkj$a;Lfyi;)V + m ()V +c gnd net/minecraft/class_960 net/minecraft/client/renderer/entity/VexRenderer + f Lakr; a field_4801 VEX_LOCATION + f Lakr; i field_4802 VEX_CHARGING_LOCATION + m (Lckr;)Lakr; a method_4144 getTextureLocation + m (Lckr;Ljd;)I a method_24092 getBlockLightLevel + m (Lgkj$a;)V + m ()V +c gne net/minecraft/class_963 net/minecraft/client/renderer/entity/VillagerRenderer + f Lakr; a field_4807 VILLAGER_BASE_SKIN + m (Lcmk;)Lakr; a method_4151 getTextureLocation + m (Lcmk;Lfbi;F)V a method_4149 scale + m (Lcmk;)F b method_55836 getShadowRadius + m (Lgkj$a;)V + m ()V +c gnf net/minecraft/class_962 net/minecraft/client/renderer/entity/VindicatorRenderer + f Lakr; a field_4804 VINDICATOR + m (Lcks;)Lakr; a method_4147 getTextureLocation + m (Lgkj$a;)V + m ()V +c gnf$1 net/minecraft/class_962$1 net/minecraft/client/renderer/entity/VindicatorRenderer$1 + m (Lfbi;Lgez;ILcks;FFFFFF)V a method_17156 render + m (Lgnf;Lgmf;Lgev;)V +c gng net/minecraft/class_3992 net/minecraft/client/renderer/entity/WanderingTraderRenderer + f Lakr; a field_17739 VILLAGER_BASE_SKIN + m (Lcmq;)Lakr; a method_18045 getTextureLocation + m (Lcmq;Lfbi;F)V a method_18046 scale + m (Lgkj$a;)V + m ()V +c gnh net/minecraft/class_7287 net/minecraft/client/renderer/entity/WardenRenderer + f Lakr; a field_38349 TEXTURE + f Lakr; i field_38350 BIOLUMINESCENT_LAYER_TEXTURE + f Lakr; j field_38352 HEART_TEXTURE + f Lakr; k field_38353 PULSATING_SPOTS_TEXTURE_1 + f Lakr; l field_38354 PULSATING_SPOTS_TEXTURE_2 + m (Lcmb;)Lakr; a method_42606 getTextureLocation + m (Lcmb;FF)F a method_42607 method_42607 + m (Lcmb;FF)F b method_42609 method_42609 + m (Lcmb;FF)F c method_42610 method_42610 + m (Lcmb;FF)F d method_42611 method_42611 + m (Lcmb;FF)F e method_42612 method_42612 + m (Lgkj$a;)V + m ()V +c gni net/minecraft/class_8987 net/minecraft/client/renderer/entity/WindChargeRenderer + f F a field_52258 MIN_CAMERA_DISTANCE_SQUARED + f Lakr; g field_47477 TEXTURE_LOCATION + f Lfxy; h field_47478 model + m (F)F a method_55268 xOffset + m (Lcof;)Lakr; a method_55269 getTextureLocation + m (Lcof;FFLfbi;Lgez;I)V a method_55270 render + m (Lgkj$a;)V + m ()V +c gnj net/minecraft/class_965 net/minecraft/client/renderer/entity/WitchRenderer + f Lakr; a field_4814 WITCH_LOCATION + m (Lckt;)Lakr; a method_4154 getTextureLocation + m (Lckt;FFLfbi;Lgez;I)V a method_4155 render + m (Lckt;Lfbi;F)V a method_4157 scale + m (Lgkj$a;)V + m ()V +c gnk net/minecraft/class_964 net/minecraft/client/renderer/entity/WitherBossRenderer + f Lakr; a field_4812 WITHER_INVULNERABLE_LOCATION + f Lakr; i field_4813 WITHER_LOCATION + m (Lciu;)Lakr; a method_4153 getTextureLocation + m (Lciu;Lfbi;F)V a method_4152 scale + m (Lciu;Ljd;)I a method_24093 getBlockLightLevel + m (Lgkj$a;)V + m ()V +c gnl net/minecraft/class_967 net/minecraft/client/renderer/entity/WitherSkeletonRenderer + f Lakr; a field_4818 WITHER_SKELETON_LOCATION + m (Lcku;)Lakr; a method_57818 getTextureLocation + m (Lcku;Lfbi;F)V a method_4161 scale + m (Lgkj$a;)V + m ()V +c gnm net/minecraft/class_966 net/minecraft/client/renderer/entity/WitherSkullRenderer + f Lakr; a field_4817 WITHER_INVULNERABLE_LOCATION + f Lakr; g field_4815 WITHER_LOCATION + f Lfxg; h field_4816 model + m ()Lfyq; a method_32199 createSkullLayer + m (Lcod;)Lakr; a method_4160 getTextureLocation + m (Lcod;FFLfbi;Lgez;I)V a method_4159 render + m (Lcod;Ljd;)I a method_24094 getBlockLightLevel + m (Lgkj$a;)V + m ()V +c gnn net/minecraft/class_969 net/minecraft/client/renderer/entity/WolfRenderer + m (Lcgh;)Lakr; a method_4165 getTextureLocation + m (Lcgh;F)F a method_4167 getBob + m (Lcgh;FFLfbi;Lgez;I)V a method_4166 render + m (Lgkj$a;)V +c gno net/minecraft/class_5144 net/minecraft/client/renderer/entity/ZoglinRenderer + f Lakr; a field_23779 ZOGLIN_LOCATION + m (Lckv;)Lakr; a method_27039 getTextureLocation + m (Lgkj$a;)V + m ()V +c gnp net/minecraft/class_3886 net/minecraft/client/renderer/entity/ZombieRenderer + m (Lgkj$a;)V + m (Lgkj$a;Lfyi;Lfyi;Lfyi;)V +c gnq net/minecraft/class_971 net/minecraft/client/renderer/entity/ZombieVillagerRenderer + f Lakr; a field_4835 ZOMBIE_VILLAGER_LOCATION + m (Lckx;)Lakr; a method_4175 getTextureLocation + m (Lckx;)Z b method_25452 isShaking + m (Lgkj$a;)V + m ()V +c gnr net/minecraft/class_973 net/minecraft/client/renderer/entity/layers/ArrowLayer + f Lgkh; a field_17153 dispatcher + m (Lgkj$a;Lglk;)V +c gns net/minecraft/class_4506 net/minecraft/client/renderer/entity/layers/BeeStingerLayer + f Lakr; a field_20529 BEE_STINGER_LOCATION + m (Lfbm;Lfbi$a;FIFFI)V a method_23295 vertex + m (Lglk;)V + m ()V +c gnt net/minecraft/class_8988 net/minecraft/client/renderer/entity/layers/BreezeEyesLayer + f Lgfh; a field_47889 BREEZE_EYES + m (Lfbi;Lgez;ILckz;FFFFFF)V a method_55272 render + m (Lgmf;)V + m ()V +c gnu net/minecraft/class_8989 net/minecraft/client/renderer/entity/layers/BreezeWindLayer + f Lakr; a field_47484 TEXTURE_LOCATION + f Lfut; b field_47485 model + m (F)F a method_55273 xOffset + m (Lfbi;Lgez;ILckz;FFFFFF)V a method_55275 render + m (Lgkj$a;Lgmf;)V + m ()V +c gnv net/minecraft/class_972 net/minecraft/client/renderer/entity/layers/CapeLayer + m (Lfbi;Lgez;ILgdy;FFFFFF)V a method_4177 render + m (Lgmf;)V +c gnw net/minecraft/class_975 net/minecraft/client/renderer/entity/layers/CarriedBlockLayer + f Lgft; a field_38895 blockRenderer + m (Lfbi;Lgez;ILcjt;FFFFFF)V a method_4179 render + m (Lgmf;Lgft;)V +c gnx net/minecraft/class_3684 net/minecraft/client/renderer/entity/layers/CatCollarLayer + f Lakr; a field_16260 CAT_COLLAR_LOCATION + f Lfuv; b field_16261 catModel + m (Lfbi;Lgez;ILcfh;FFFFFF)V a method_16047 render + m (Lgmf;Lfyg;)V + m ()V +c gny net/minecraft/class_974 net/minecraft/client/renderer/entity/layers/CreeperPowerLayer + f Lakr; a field_4842 POWER_LOCATION + f Lfve; b field_4844 model + m (Lgmf;Lfyg;)V + m ()V +c gnz net/minecraft/class_4004 net/minecraft/client/renderer/entity/layers/CrossedArmsItemLayer + f Lgev; a field_38896 itemInHandRenderer + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_4208 render + m (Lgmf;Lgev;)V +c goa net/minecraft/class_976 net/minecraft/client/renderer/entity/layers/CustomHeadLayer + f F a field_24474 scaleX + f F b field_24475 scaleY + f F c field_24476 scaleZ + f Ljava/util/Map; d field_27771 skullModels + f Lgev; e field_38897 itemInHandRenderer + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_17159 render + m (Lfbi;Z)V a method_32798 translateToHead + m (Lgmf;Lfyg;Lgev;)V + m (Lgmf;Lfyg;FFFLgev;)V +c gob net/minecraft/class_978 net/minecraft/client/renderer/entity/layers/Deadmau5EarsLayer + m (Lfbi;Lgez;ILgdy;FFFFFF)V a method_4181 render + m (Lgmf;)V +c goc net/minecraft/class_977 net/minecraft/client/renderer/entity/layers/DolphinCarryingItemLayer + f Lgev; a field_38898 itemInHandRenderer + m (Lfbi;Lgez;ILcfm;FFFFFF)V a method_17160 render + m (Lgmf;Lgev;)V +c god net/minecraft/class_980 net/minecraft/client/renderer/entity/layers/DrownedOuterLayer + f Lakr; a field_4854 DROWNED_OUTER_LAYER_LOCATION + f Lfvg; b field_4855 model + m (Lfbi;Lgez;ILcjr;FFFFFF)V a method_4182 render + m (Lgmf;Lfyg;)V + m ()V +c goe net/minecraft/class_979 net/minecraft/client/renderer/entity/layers/ElytraLayer + f Lakr; a field_4850 WINGS_LOCATION + f Lfvh; b field_4852 elytraModel + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_17161 render + m (Lgmf;Lfyg;)V + m ()V +c gof net/minecraft/class_985 net/minecraft/client/renderer/entity/layers/EnderEyesLayer + f Lgfh; a field_4876 ENDERMAN_EYES + m (Lgmf;)V + m ()V +c gog net/minecraft/class_4607 net/minecraft/client/renderer/entity/layers/EnergySwirlLayer + m ()Lakr; a method_23201 getTextureLocation + m (F)F a method_23202 xOffset + m ()Lfvk; b method_23203 model + m (Lgmf;)V +c goh net/minecraft/class_4606 net/minecraft/client/renderer/entity/layers/EyesLayer + m ()Lgfh; a method_23193 renderType + m (Lgmf;)V +c goi net/minecraft/class_4043 net/minecraft/client/renderer/entity/layers/FoxHeldItemLayer + f Lgev; a field_38899 itemInHandRenderer + m (Lfbi;Lgez;ILcfo;FFFFFF)V a method_18335 render + m (Lgmf;Lgev;)V +c goj net/minecraft/class_4073 net/minecraft/client/renderer/entity/layers/HorseArmorLayer + f Lfvv; a field_18228 model + m (Lfbi;Lgez;ILchk;FFFFFF)V a method_18658 render + m (Lgmf;Lfyg;)V +c gok net/minecraft/class_5167 net/minecraft/client/renderer/entity/layers/HorseMarkingLayer + f Ljava/util/Map; a field_23938 LOCATION_BY_MARKINGS + m (Lfbi;Lgez;ILchk;FFFFFF)V a method_27152 render + m (Ljava/util/EnumMap;)V a method_27153 method_27153 + m (Lgmf;)V + m ()V +c gol net/minecraft/class_970 net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer + f Ljava/util/Map; a field_4829 ARMOR_LOCATION_CACHE + f Lfvx; b field_4830 innerModel + f Lfvx; c field_4831 outerModel + f Lgqk; d field_42074 armorTrimAtlas + m (Lbsy;)Lfvx; a method_4172 getArmorModel + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_17157 render + m (Lfbi;Lgez;ILfvx;)V a method_52224 renderGlint + m (Lfbi;Lgez;ILfvx;ILakr;)V a method_23192 renderModel + m (Lfbi;Lgez;Lbtn;Lbsy;ILfvx;)V a method_4169 renderArmorPiece + m (Lfvx;Lbsy;)V a method_4170 setPartVisibility + m (Ljm;Lfbi;Lgez;ILcwx;Lfvx;Z)V a method_48482 renderTrim + m (Lbsy;)Z b method_4173 usesInnerModel + m (Lgmf;Lfvx;Lfvx;Lgst;)V + m ()V +c gol$1 net/minecraft/class_970$1 net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer$1 + f [I a field_4878 $SwitchMap$net$minecraft$world$entity$EquipmentSlot + m ()V +c gom net/minecraft/class_4691 net/minecraft/client/renderer/entity/layers/IronGolemCrackinessLayer + f Ljava/util/Map; a field_21443 resourceLocations + m (Lfbi;Lgez;ILcfq;FFFFFF)V a method_23623 render + m (Lgmf;)V + m ()V +c gon net/minecraft/class_986 net/minecraft/client/renderer/entity/layers/IronGolemFlowerLayer + f Lgft; a field_38900 blockRenderer + m (Lfbi;Lgez;ILcfq;FFFFFF)V a method_4188 render + m (Lgmf;Lgft;)V +c goo net/minecraft/class_989 net/minecraft/client/renderer/entity/layers/ItemInHandLayer + f Lgev; a field_38901 itemInHandRenderer + m (Lbtn;Lcuq;Lcun;Lbtg;Lfbi;Lgez;I)V a method_4192 renderArmWithItem + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_17162 render + m (Lgmf;Lgev;)V +c gop net/minecraft/class_988 net/minecraft/client/renderer/entity/layers/LlamaDecorLayer + f [Lakr; a field_4880 TEXTURE_LOCATION + f Lakr; b field_17740 TRADER_LLAMA + f Lfwd; c field_4881 model + m (Lfbi;Lgez;ILchl;FFFFFF)V a method_4191 render + m (Lgmf;Lfyg;)V + m ()V +c goq net/minecraft/class_991 net/minecraft/client/renderer/entity/layers/MushroomCowMushroomLayer + f Lgft; a field_38902 blockRenderer + m (Lfbi;Lgez;ILcfr;FFFFFF)V a method_4195 render + m (Lfbi;Lgez;IZLdtc;ILgsm;)V a method_37314 renderMushroomBlock + m (Lgmf;Lgft;)V +c gor net/minecraft/class_990 net/minecraft/client/renderer/entity/layers/PandaHoldsItemLayer + f Lgev; a field_38903 itemInHandRenderer + m (Lfbi;Lgez;ILcft;FFFFFF)V a method_4194 render + m (Lgmf;Lgev;)V +c gos net/minecraft/class_983 net/minecraft/client/renderer/entity/layers/ParrotOnShoulderLayer + f Lfwk; a field_17154 model + m (Lbsx;)Z a method_17957 method_17957 + m (Lfbi;Lgez;ILcmx;FFFFFF)V a method_4185 render + m (Lfbi;Lgez;ILcmx;FFFFZ)V a method_4186 render + m (Lfbi;ZLcmx;Lub;Lgez;IFFFFLbsx;)V a method_17958 method_17958 + m (Lgmf;Lfyg;)V +c got net/minecraft/class_993 net/minecraft/client/renderer/entity/layers/PhantomEyesLayer + f Lgfh; a field_4890 PHANTOM_EYES + m (Lgmf;)V + m ()V +c gou net/minecraft/class_5697 net/minecraft/client/renderer/entity/layers/PlayerItemInHandLayer + f Lgev; a field_38904 itemInHandRenderer + f F b field_32944 X_ROT_MIN + f F c field_32945 X_ROT_MAX + m (Lbtn;Lcuq;Lbtg;Lfbi;Lgez;I)V a method_32799 renderArmWithSpyglass + m (Lgmf;Lgev;)V +c gov net/minecraft/class_3887 net/minecraft/client/renderer/entity/layers/RenderLayer + f Lgmf; a field_17155 renderer + m (Lbsr;)Lakr; a method_23194 getTextureLocation + m (Lfbi;Lgez;ILbsr;FFFFFF)V a method_4199 render + m (Lfvk;Lakr;Lfbi;Lgez;ILbtn;I)V a method_23199 renderColoredCutoutModel + m (Lfvk;Lfvk;Lakr;Lfbi;Lgez;ILbtn;FFFFFFI)V a method_23196 coloredCutoutModelCopyLayerRender + m ()Lfvk; c method_17165 getParentModel + m (Lgmf;)V +c gow net/minecraft/class_992 net/minecraft/client/renderer/entity/layers/SaddleLayer + f Lakr; a field_4888 textureLocation + f Lfvk; b field_4887 model + m (Lgmf;Lfvk;Lakr;)V +c gox net/minecraft/class_994 net/minecraft/client/renderer/entity/layers/SheepFurLayer + f Lakr; a field_4892 SHEEP_FUR_LOCATION + f Lfwz; b field_4891 model + m (Lfbi;Lgez;ILcga;FFFFFF)V a method_4198 render + m (Lgmf;Lfyg;)V + m ()V +c goy net/minecraft/class_944 net/minecraft/client/renderer/entity/layers/ShulkerHeadLayer + m (Lfbi;Lgez;ILckj;FFFFFF)V a method_4115 render + m (Lgmf;)V +c goz net/minecraft/class_1002 net/minecraft/client/renderer/entity/layers/SkeletonClothingLayer + f Lfxf; a field_4908 layerModel + f Lakr; b field_49166 clothesLocation + m (Lfbi;Lgez;ILbtp;FFFFFF)V a method_23204 render + m (Lgmf;Lfyg;Lfyi;Lakr;)V +c gpa net/minecraft/class_997 net/minecraft/client/renderer/entity/layers/SlimeOuterLayer + f Lfvk; a field_4895 model + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_23200 render + m (Lgmf;Lfyg;)V +c gpb net/minecraft/class_996 net/minecraft/client/renderer/entity/layers/SnowGolemHeadLayer + f Lgft; a field_38905 blockRenderer + f Lglh; b field_38906 itemRenderer + m (Lfbi;Lgez;ILcgc;FFFFFF)V a method_4201 render + m (Lgmf;Lgft;Lglh;)V +c gpc net/minecraft/class_1000 net/minecraft/client/renderer/entity/layers/SpiderEyesLayer + f Lgfh; a field_4902 SPIDER_EYES + m (Lgmf;)V + m ()V +c gpd net/minecraft/class_998 net/minecraft/client/renderer/entity/layers/SpinAttackEffectLayer + f Lakr; a field_4898 TEXTURE + f Ljava/lang/String; b field_32946 BOX + f Lfyk; c field_21012 box + m ()Lfyq; a method_32200 createLayer + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_4203 render + m (Lgmf;Lfyg;)V + m ()V +c gpe net/minecraft/class_4507 net/minecraft/client/renderer/entity/layers/StuckInBodyLayer + m (Lbtn;)I a method_22134 numStuck + m (Lfbi;Lgez;ILbsr;FFFF)V a method_22130 renderStuckItem + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_22132 render + m (Lglk;)V +c gpf net/minecraft/class_1001 net/minecraft/client/renderer/entity/layers/TropicalFishPatternLayer + f Lakr; a field_41646 KOB_TEXTURE + f Lakr; b field_41647 SUNSTREAK_TEXTURE + f Lakr; c field_41648 SNOOPER_TEXTURE + f Lakr; d field_41649 DASHER_TEXTURE + f Lakr; e field_41650 BRINELY_TEXTURE + f Lakr; f field_41651 SPOTTY_TEXTURE + f Lakr; g field_41652 FLOPPER_TEXTURE + f Lakr; h field_41653 STRIPEY_TEXTURE + f Lakr; i field_41654 GLITTER_TEXTURE + f Lakr; j field_41655 BLOCKFISH_TEXTURE + f Lakr; k field_41656 BETTY_TEXTURE + f Lakr; l field_41657 CLAYFISH_TEXTURE + f Lfxq; m field_17157 modelA + f Lfxr; n field_4903 modelB + m (Lfbi;Lgez;ILcge;FFFFFF)V a method_4205 render + m (Lgmf;Lfyg;)V + m ()V +c gpf$1 net/minecraft/class_1001$1 net/minecraft/client/renderer/entity/layers/TropicalFishPatternLayer$1 + f [I a field_41658 $SwitchMap$net$minecraft$world$entity$animal$TropicalFish$Base + f [I b field_41659 $SwitchMap$net$minecraft$world$entity$animal$TropicalFish$Pattern + m ()V +c gpg net/minecraft/class_3885 net/minecraft/client/renderer/entity/layers/VillagerProfessionLayer + f Lit/unimi/dsi/fastutil/ints/Int2ObjectMap; a field_17148 LEVEL_LOCATIONS + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; b field_17149 typeHatCache + f Lit/unimi/dsi/fastutil/objects/Object2ObjectMap; c field_17150 professionHatCache + f Laue; d field_17151 resourceManager + f Ljava/lang/String; e field_17152 path + m (Lauc;)Ljava/util/Optional; a method_43211 method_43211 + m (Lfbi;Lgez;ILbtn;FFFFFF)V a method_17151 render + m (Lit/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap;)V a method_17152 method_17152 + m (Lit/unimi/dsi/fastutil/objects/Object2ObjectMap;Ljava/lang/String;Ljh;Ljava/lang/Object;)Lgrz$a; a method_17153 getHatData + m (Ljava/lang/String;Lakr;)Lakr; a method_17155 getResourceLocation + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_45803 method_45803 + m (Ljava/lang/String;Ljh;Ljava/lang/Object;Ljava/lang/Object;)Lgrz$a; a method_17154 method_17154 + m (Lgmf;Laue;Ljava/lang/String;)V + m ()V +c gph net/minecraft/class_7288 net/minecraft/client/renderer/entity/layers/WardenEmissiveLayer + f Lakr; a field_38355 texture + f Lgph$a; b field_38356 alphaFunction + f Lgph$b; c field_38464 drawSelector + m ()V a method_42746 onlyDrawSelectedParts + m (Lfbi;Lgez;ILcmb;FFFFFF)V a method_42613 render + m (Lfyk;)V a method_42747 method_42747 + m ()V b method_42748 resetDrawForAllParts + m (Lfyk;)V b method_42749 method_42749 + m (Lfyk;)V c method_42750 method_42750 + m (Lgmf;Lakr;Lgph$a;Lgph$b;)V +c gph$a net/minecraft/class_7288$class_7289 net/minecraft/client/renderer/entity/layers/WardenEmissiveLayer$AlphaFunction +c gph$b net/minecraft/class_7288$class_7311 net/minecraft/client/renderer/entity/layers/WardenEmissiveLayer$DrawSelector +c gpi net/minecraft/class_1005 net/minecraft/client/renderer/entity/layers/WitchItemLayer + m (Lgmf;Lgev;)V +c gpj net/minecraft/class_1004 net/minecraft/client/renderer/entity/layers/WitherArmorLayer + f Lakr; a field_4910 WITHER_ARMOR_LOCATION + f Lfya; b field_4909 model + m (Lgmf;Lfyg;)V + m ()V +c gpk net/minecraft/class_9085 net/minecraft/client/renderer/entity/layers/WolfArmorLayer + f Lfyb; a field_47890 model + f Ljava/util/Map; b field_49582 ARMOR_CRACK_LOCATIONS + m (Lfbi;Lgez;ILcgh;FFFFFF)V a method_55837 render + m (Lfbi;Lgez;ILcuq;)V a method_57819 maybeRenderCracks + m (Lfbi;Lgez;ILcuq;Lcse;)V a method_57820 maybeRenderColoredLayer + m (Lgmf;Lfyg;)V + m ()V +c gpl net/minecraft/class_1006 net/minecraft/client/renderer/entity/layers/WolfCollarLayer + f Lakr; a field_4913 WOLF_COLLAR_LOCATION + m (Lfbi;Lgez;ILcgh;FFFFFF)V a method_4209 render + m (Lgmf;)V + m ()V +c gpm net/minecraft/class_6257 net/minecraft/client/renderer/entity/layers/package-info +c gpn net/minecraft/class_6258 net/minecraft/client/renderer/entity/package-info +c gpo net/minecraft/class_1007 net/minecraft/client/renderer/entity/player/PlayerRenderer + m (Lfbi;Lgez;ILgdy;)V a method_4220 renderRightHand + m (Lfbi;Lgez;ILgdy;Lfyk;Lfyk;)V a method_23205 renderHand + m (Lgdy;)Lakr; a method_4216 getTextureLocation + m (Lgdy;F)Lexc; a method_23206 getRenderOffset + m (Lgdy;FFLfbi;Lgez;I)V a method_4215 render + m (Lgdy;Lbqq;)Lfvx$a; a method_4210 getArmPose + m (Lgdy;Lfbi;F)V a method_4217 scale + m (Lgdy;Lfbi;FFFF)V a method_4212 setupRotations + m (Lgdy;Lwz;Lfbi;Lgez;IF)V a method_4213 renderNameTag + m (Lfbi;Lgez;ILgdy;)V b method_4221 renderLeftHand + m (Lgdy;)V b method_4218 setModelProperties + m (Lgkj$a;Z)V +c gpp net/minecraft/class_6259 net/minecraft/client/renderer/entity/player/package-info +c gpq net/minecraft/class_6395 net/minecraft/client/renderer/item/ClampedItemPropertyFunction +c gpr net/minecraft/class_7391 net/minecraft/client/renderer/item/CompassItemPropertyFunction + f I a field_38798 DEFAULT_ROTATION + f Lgpr$a; b field_38799 compassTarget + f Lgpr$b; c field_24449 wobble + f Lgpr$b; d field_24450 wobbleRandom + m (I)I a method_32800 hash + m (IJ)F a method_43212 getRandomlySpinningRotation + m (Lbsr;)D a method_43213 getWrappedVisualRotationY + m (Lbsr;JLjd;)F a method_43214 getRotationTowardsCompassTarget + m (Lbsr;Lfzf;)Lfzf; a method_43215 tryFetchLevelIfMissing + m (Lbsr;Ljd;)D a method_43216 getAngleFromEntityToPos + m (Lbsr;Ljl;)Z a method_43217 isValidCompassTargetPos + m (Lcuq;Lfzf;ILbsr;)F a method_43218 getCompassRotation + m (Lgpr$a;)V +c gpr$a net/minecraft/class_7391$class_7392 net/minecraft/client/renderer/item/CompassItemPropertyFunction$CompassTarget +c gpr$b net/minecraft/class_7391$class_5171 net/minecraft/client/renderer/item/CompassItemPropertyFunction$CompassWobble + f D a field_23980 rotation + f D b field_23981 deltaRotation + f J c field_23982 lastUpdateTick + m (J)Z a method_27316 shouldUpdate + m (JD)V a method_27190 update + m ()V +c gps net/minecraft/class_5272 net/minecraft/client/renderer/item/ItemProperties + f Ljava/util/Map; a field_24443 GENERIC_PROPERTIES + f Lakr; b field_24444 DAMAGED + f Lakr; c field_24445 DAMAGE + f Lgpq; d field_24446 PROPERTY_DAMAGED + f Lgpq; e field_24447 PROPERTY_DAMAGE + f Ljava/util/Map; f field_24448 PROPERTIES + m (Lakr;Lgpq;)Lgpq; a method_27881 registerGeneric + m (Lcul;)Ljava/util/Map; a method_27877 method_27877 + m (Lcul;Lakr;Lgpq;)V a method_27879 register + m (Lcuq;Lakr;)Lgpt; a method_27878 getProperty + m (Lcuq;Lfzf;Lbtn;I)F a method_43611 method_43611 + m (Lfzf;Lcuq;Lbsr;)Ljl; a method_43219 method_43219 + m (Lgpt;)V a method_37106 registerCustomModelData + m (Lcuq;Lfzf;Lbtn;I)F b method_35803 method_35803 + m (Lfzf;Lcuq;Lbsr;)Ljl; b method_43220 method_43220 + m (Lcuq;Lfzf;Lbtn;I)F c method_27880 method_27880 + m (Lcuq;Lfzf;Lbtn;I)F d method_27882 method_27882 + m (Lcuq;Lfzf;Lbtn;I)F e method_27883 method_27883 + m (Lcuq;Lfzf;Lbtn;I)F f method_27884 method_27884 + m (Lcuq;Lfzf;Lbtn;I)F g method_27885 method_27885 + m (Lcuq;Lfzf;Lbtn;I)F h method_27886 method_27886 + m (Lcuq;Lfzf;Lbtn;I)F i method_27887 method_27887 + m (Lcuq;Lfzf;Lbtn;I)F j method_27888 method_27888 + m (Lcuq;Lfzf;Lbtn;I)F k method_32202 method_32202 + m (Lcuq;Lfzf;Lbtn;I)F l method_27889 method_27889 + m (Lcuq;Lfzf;Lbtn;I)F m method_49351 method_49351 + m (Lcuq;Lfzf;Lbtn;I)F n method_27890 method_27890 + m (Lcuq;Lfzf;Lbtn;I)F o method_27891 method_27891 + m (Lcuq;Lfzf;Lbtn;I)F p method_48484 method_48484 + m (Lcuq;Lfzf;Lbtn;I)F q method_27892 method_27892 + m (Lcuq;Lfzf;Lbtn;I)F r method_27893 method_27893 + m (Lcuq;Lfzf;Lbtn;I)F s method_27894 method_27894 + m (Lcuq;Lfzf;Lbtn;I)F t method_27895 method_27895 + m ()V + m ()V +c gps$1 net/minecraft/class_5272$1 net/minecraft/client/renderer/item/ItemProperties$1 + f D a field_7911 rotation + f D b field_7910 rota + f J c field_7913 lastUpdateTick + m (Ldcw;D)D a method_7736 wobble + m ()V +c gpt net/minecraft/class_1800 net/minecraft/client/renderer/item/ItemPropertyFunction +c gpu net/minecraft/class_6260 net/minecraft/client/renderer/item/package-info +c gpv net/minecraft/class_6261 net/minecraft/client/renderer/package-info +c gpw net/minecraft/class_1044 net/minecraft/client/renderer/texture/AbstractTexture + f I a field_32948 NOT_ASSIGNED + f I b field_5204 id + f Z c field_5205 blur + f Z d field_5203 mipmap + m ()I a method_4624 getId + m (Laue;)V a method_4625 load + m (Lgqm;Laue;Lakr;Ljava/util/concurrent/Executor;)V a method_18169 reset + m (ZZ)V a method_4527 setFilter + m ()V b method_4528 releaseId + m ()V c method_23207 bind + m ()V d method_23208 method_23208 + m ()V e method_22604 method_22604 + m ()V +c gpx net/minecraft/class_8215 net/minecraft/client/renderer/texture/Dumpable + m (Lakr;Ljava/nio/file/Path;)V a method_49712 dumpContents +c gpy net/minecraft/class_1043 net/minecraft/client/renderer/texture/DynamicTexture + f Lorg/slf4j/Logger; e field_25794 LOGGER + f Lfaj; f field_5200 pixels + m (Lfaj;)V a method_4526 setPixels + m ()V d method_4524 upload + m ()Lfaj; e method_4525 getPixels + m ()V f method_22793 method_22793 + m (Lfaj;)V + m (IIZ)V + m ()V +c gpz net/minecraft/class_1046 net/minecraft/client/renderer/texture/HttpTexture + f Lorg/slf4j/Logger; f field_5212 LOGGER + f I g field_34017 SKIN_WIDTH + f I h field_34018 SKIN_HEIGHT + f I i field_34019 LEGACY_SKIN_HEIGHT + f Ljava/io/File; j field_5210 file + f Ljava/lang/String; k field_5214 urlString + f Z l field_20842 processLegacySkin + f Ljava/lang/Runnable; m field_20843 onDownloaded + f Ljava/util/concurrent/CompletableFuture; n field_20844 future + f Z o field_5215 uploaded + m (Lfaj;)V a method_4534 loadCallback + m (Lfaj;IIII)V a method_22794 doNotchTransparencyHack + m (Ljava/io/InputStream;)Lfaj; a method_22795 load + m (Lfaj;)V b method_4531 upload + m (Lfaj;IIII)V b method_22796 setNoAlpha + m (Ljava/io/InputStream;)V b method_22797 method_22797 + m (Laue;)V c method_22799 method_22799 + m (Lfaj;)Lfaj; c method_22798 processLegacySkin + m ()V d method_22801 method_22801 + m (Lfaj;)V d method_22800 method_22800 + m (Lfaj;)V e method_22802 method_22802 + m (Ljava/io/File;Ljava/lang/String;Lakr;ZLjava/lang/Runnable;)V + m ()V +c gqa net/minecraft/class_4725 net/minecraft/client/renderer/texture/MipmapGenerator + f I a field_32949 ALPHA_CUTOUT_CUTOFF + f [F b field_21747 POW22 + m (I)F a method_24099 getPow22 + m (IIIII)I a method_24100 gammaBlend + m (IIIIZ)I a method_24101 alphaBlend + m (Lfaj;)Z a method_45804 hasTransparentPixel + m ([F)V a method_24103 method_24103 + m ([Lfaj;I)[Lfaj; a method_24102 generateMipLevels + m ()V + m ()V +c gqb net/minecraft/class_1047 net/minecraft/client/renderer/texture/MissingTextureAtlasSprite + f I a field_32950 MISSING_IMAGE_WIDTH + f I b field_32951 MISSING_IMAGE_HEIGHT + f Ljava/lang/String; c field_32952 MISSING_TEXTURE_NAME + f Lakr; d field_5219 MISSING_TEXTURE_LOCATION + f Laug; e field_45630 SPRITE_METADATA + f Lgpy; f field_5220 missingTexture + m ()Lgqf; a method_45805 create + m (II)Lfaj; a method_45806 generateMissingImage + m ()Lakr; b method_4539 getLocation + m ()Lgpy; c method_4540 getTexture + m ()V + m ()V +c gqc net/minecraft/class_4608 net/minecraft/client/renderer/texture/OverlayTexture + f I a field_32953 NO_WHITE_U + f I b field_32954 RED_OVERLAY_V + f I c field_32955 WHITE_OVERLAY_V + f I d field_21444 NO_OVERLAY + f I e field_32956 SIZE + f Lgpy; f field_21013 texture + m ()V a method_23209 setupOverlayColor + m (F)I a method_23210 u + m (FZ)I a method_23624 pack + m (II)I a method_23625 pack + m (Z)I a method_23212 v + m ()V b method_23213 teardownOverlayColor + m ()V + m ()V +c gqd net/minecraft/class_4005 net/minecraft/client/renderer/texture/PreloadedTexture + f Ljava/util/concurrent/CompletableFuture; f field_17894 future + m (Laue;Lakr;)Lgqe$a; a method_18151 method_18151 + m (Lgqe$a;)Ljava/lang/Void; a method_18149 method_18149 + m (Lgqm;)V a method_18150 method_18150 + m (Ljava/lang/Runnable;)V a method_22807 method_22807 + m (Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor; a method_22808 executor + m (Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V a method_22809 method_22809 + m (Laue;)Lgqe$a; c method_18152 method_18152 + m ()Ljava/util/concurrent/CompletableFuture; d method_18148 getFuture + m (Laue;Lakr;Ljava/util/concurrent/Executor;)V +c gqe net/minecraft/class_1049 net/minecraft/client/renderer/texture/SimpleTexture + f Lakr; e field_5224 location + f Lorg/slf4j/Logger; f field_5225 LOGGER + m (Lfaj;ZZ)V a method_22810 doLoad + m (Laue;)Lgqe$a; b method_18153 getTextureImage + m (Lfaj;ZZ)V b method_22811 method_22811 + m (Lakr;)V + m ()V +c gqe$a net/minecraft/class_1049$class_4006 net/minecraft/client/renderer/texture/SimpleTexture$TextureImage + f Lgsi; a field_17895 metadata + f Lfaj; b field_17896 image + f Ljava/io/IOException; c field_17897 exception + m ()Lgsi; a method_18155 getTextureMetadata + m (Laue;Lakr;)Lgqe$a; a method_18156 load + m ()Lfaj; b method_18157 getImage + m ()V c method_18158 throwIfError + m (Ljava/io/IOException;)V + m (Lgsi;Lfaj;)V +c gqf net/minecraft/class_7764 net/minecraft/client/renderer/texture/SpriteContents + f Lorg/slf4j/Logger; a field_40535 LOGGER + f Lakr; b field_40536 name + f I c field_40537 width + f I d field_40538 height + f Lfaj; e field_40539 originalImage + f [Lfaj; f field_40540 byMipLevel + f Lgqf$a; g field_40541 animatedTexture + f Laug; h field_45631 metadata + m (I)V a method_45808 increaseMipLevel + m (II)V a method_45809 uploadFirstFrame + m (III)Z a method_45810 isTransparent + m (IIII[Lfaj;)V a method_45811 upload + m (Lgry;IILgrw;)Lgqf$a; a method_45812 createAnimatedTexture + m (Lit/unimi/dsi/fastutil/ints/IntSet;I)Z a method_45813 method_45813 + m (Ljava/util/List;II)V a method_45814 method_45814 + m ()Ljava/util/stream/IntStream; d method_45817 getUniqueFrames + m ()Lgqh; e method_45818 createTicker + m ()Laug; f method_52848 metadata + m ()I g method_45819 getFrameCount + m ()Ljava/lang/String; h method_45820 method_45820 + m ()Ljava/lang/String; i method_45821 method_45821 + m ()Ljava/lang/String; j method_45822 method_45822 + m (Lakr;Lgry;Lfaj;Laug;)V + m ()V +c gqf$a net/minecraft/class_7764$class_5790 net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture + f Lgqf; a field_28469 field_28469 + f Ljava/util/List; b field_28472 frames + f I c field_28473 frameRowSize + f Z d field_40542 interpolateFrames + m ()Lgqh; a method_45823 createTicker + m (I)I a method_33446 getFrameX + m (II)V a method_33445 uploadFirstFrame + m (III)V a method_33455 uploadFrame + m (Lgqf$b;)I a method_33449 method_33449 + m ()Ljava/util/stream/IntStream; b method_33450 getUniqueFrames + m (I)I b method_33451 getFrameY + m (Lgqf;Ljava/util/List;IZ)V +c gqf$b net/minecraft/class_7764$class_5791 net/minecraft/client/renderer/texture/SpriteContents$FrameInfo + f I a field_28475 index + f I b field_28476 time + m (II)V +c gqf$c net/minecraft/class_7764$class_4728 net/minecraft/client/renderer/texture/SpriteContents$InterpolationData + f Lgqf; a field_21757 field_21757 + f [Lfaj; b field_21758 activeFrame + m (DII)I a method_24129 mix + m (IILgqf$d;)V a method_24128 uploadInterpolatedFrame + m (Lgqf$a;IIII)I a method_24130 getPixel + m (Lgqf;)V +c gqf$d net/minecraft/class_7764$class_7765 net/minecraft/client/renderer/texture/SpriteContents$Ticker + f I a field_40544 frame + f I b field_40545 subFrame + f Lgqf$a; c field_40546 animationInfo + f Lgqf$c; d field_40547 interpolationData + m (II)V b method_45825 method_45825 + m (Lgqf;Lgqf$a;Lgqf$c;)V +c gqg net/minecraft/class_7766 net/minecraft/client/renderer/texture/SpriteLoader + f Ljava/util/Set; a field_45632 DEFAULT_METADATA_SECTIONS + f Lorg/slf4j/Logger; b field_40548 LOGGER + f Lakr; c field_40549 location + f I d field_40550 maxSupportedTextureSize + f I e field_43111 minWidth + f I f field_43112 minHeight + m (ILgql;)V a method_45826 method_45826 + m (ILjava/util/concurrent/Executor;Ljava/util/List;)Lgqg$a; a method_47659 method_47659 + m (Laue;Lakr;)Ljava/util/List; a method_47660 method_47660 + m (Laue;Lakr;ILjava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_52849 loadAndStitch + m (Laue;Lakr;ILjava/util/concurrent/Executor;Ljava/util/Collection;)Ljava/util/concurrent/CompletableFuture; a method_47661 loadAndStitch + m (Lgqi$a;)Ljava/lang/String; a method_45835 method_45835 + m (Lgqi;II)Ljava/util/Map; a method_45836 getStitchedSprites + m (Lgqk;)Lgqg; a method_45837 create + m (Lgqo;Ljava/util/List;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_47664 runSpriteSuppliers + m (Lgqo;Ljava/util/concurrent/Executor;Ljava/util/List;)Ljava/util/concurrent/CompletionStage; a method_47665 method_47665 + m (Lgqo;Ljava/util/concurrent/Executor;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; a method_47666 method_47666 + m (Ljava/util/List;)Ljava/util/List; a method_47662 method_47662 + m (Ljava/util/List;ILjava/util/concurrent/Executor;)Lgqg$a; a method_47663 stitch + m (Ljava/util/Map;I)V a method_45840 method_45840 + m (Ljava/util/Map;IILgqf;II)V a method_45841 method_45841 + m (Ljava/util/function/Function;Lgqo;)Lgqf; a method_52850 method_52850 + m (Lakr;III)V + m ()V +c gqg$a net/minecraft/class_7766$class_7767 net/minecraft/client/renderer/texture/SpriteLoader$Preparations + f I a comp_1040 width + f I b comp_1041 height + f I c comp_1042 mipLevel + f Lgql; d comp_1043 missing + f Ljava/util/Map; e comp_1044 regions + f Ljava/util/concurrent/CompletableFuture; f comp_1045 readyForUpload + m ()Ljava/util/concurrent/CompletableFuture; a method_45845 waitForUpload + m (Ljava/lang/Void;)Lgqg$a; a method_45846 method_45846 + m ()I b comp_1040 width + m ()I c comp_1041 height + m ()I d comp_1042 mipLevel + m ()Lgql; e comp_1043 missing + m ()Ljava/util/Map; f comp_1044 regions + m ()Ljava/util/concurrent/CompletableFuture; g comp_1045 readyForUpload + m (IIILgql;Ljava/util/Map;Ljava/util/concurrent/CompletableFuture;)V +c gqh net/minecraft/class_7768 net/minecraft/client/renderer/texture/SpriteTicker + m (II)V a method_45824 tickAndUpload +c gqi net/minecraft/class_1055 net/minecraft/client/renderer/texture/Stitcher + f Ljava/util/Comparator; a field_18030 HOLDER_COMPARATOR + f I b field_5243 mipLevel + f Ljava/util/List; c field_5237 texturesToBeStitched + f Ljava/util/List; d field_5239 storage + f I e field_5242 storageX + f I f field_5241 storageY + f I g field_5240 maxWidth + f I h field_5238 maxHeight + m ()I a method_4554 getWidth + m (II)I a method_4551 smallestFittingMinTexel + m (Lgqi$a;)V a method_4553 registerSprite + m (Lgqi$b;)Z a method_4550 addToStorage + m (Lgqi$d;)V a method_4549 gatherSprites + m ()I b method_4555 getHeight + m (Lgqi$b;)Z b method_4552 expand + m ()V c method_4557 stitch + m (Lgqi$b;)Lgqi$a; c method_21686 method_21686 + m (Lgqi$b;)Lakr; d method_18337 method_18337 + m (Lgqi$b;)Ljava/lang/Integer; e method_18338 method_18338 + m (Lgqi$b;)Ljava/lang/Integer; f method_18339 method_18339 + m (III)V + m ()V +c gqi$a net/minecraft/class_1055$class_7769 net/minecraft/client/renderer/texture/Stitcher$Entry + m ()I a method_45807 width + m ()I b method_45815 height + m ()Lakr; c method_45816 name +c gqi$b net/minecraft/class_1055$class_1056 net/minecraft/client/renderer/texture/Stitcher$Holder + f Lgqi$a; a comp_1046 entry + f I b comp_1047 width + f I c comp_1048 height + m ()Lgqi$a; a comp_1046 entry + m ()I b comp_1047 width + m ()I c comp_1048 height + m (Lgqi$a;I)V + m (Lgqi$a;II)V +c gqi$c net/minecraft/class_1055$class_1057 net/minecraft/client/renderer/texture/Stitcher$Region + f I a field_5253 originX + f I b field_5252 originY + f I c field_5251 width + f I d field_5250 height + f Ljava/util/List; e field_5255 subSlots + f Lgqi$b; f field_5254 holder + m ()I a method_4569 getX + m (Lgqi$b;)Z a method_4566 add + m (Lgqi$d;)V a method_4568 walk + m ()I b method_4567 getY + m (IIII)V +c gqi$d net/minecraft/class_1055$class_4726 net/minecraft/client/renderer/texture/Stitcher$SpriteLoader +c gqj net/minecraft/class_1054 net/minecraft/client/renderer/texture/StitcherException + f Ljava/util/Collection; a field_20311 allSprites + m ()Ljava/util/Collection; a method_21687 getAllSprites + m (Lgqi$a;Ljava/util/Collection;)V +c gqk net/minecraft/class_1059 net/minecraft/client/renderer/texture/TextureAtlas + f Lakr; e field_5275 LOCATION_BLOCKS + f Lakr; f field_17898 LOCATION_PARTICLES + f Lorg/slf4j/Logger; g field_5278 LOGGER + f Ljava/util/List; h field_5277 sprites + f Ljava/util/List; i field_5276 animatedTextures + f Ljava/util/Map; j field_5280 texturesByName + f Lgql; k field_46207 missingSprite + f Lakr; l field_21749 location + f I m field_17899 maxSupportedTextureSize + f I n field_43113 width + f I o field_43114 height + f I p field_43115 mipLevel + m (Lakr;)Lgql; a method_4608 getSprite + m (Lgqg$a;)V a method_45848 upload + m (Ljava/nio/file/Path;Ljava/lang/String;Ljava/util/Map;)V a method_45849 dumpSpriteNames + m (Lgqg$a;)V b method_24198 updateFilter + m ()V d method_4612 cycleAnimationFrames + m ()V f method_4601 clearTextureData + m ()Lakr; g method_24106 location + m ()I h method_45850 maxSupportedTextureSize + m ()I i method_49713 getWidth + m ()I j method_49714 getHeight + m (Lakr;)V + m ()V +c gql net/minecraft/class_1058 net/minecraft/client/renderer/texture/TextureAtlasSprite + f Lakr; a field_40552 atlasLocation + f Lgqf; b field_40553 contents + f I c field_5258 x + f I d field_5256 y + f F e field_5270 u0 + f F f field_5269 u1 + f F g field_5268 v0 + f F h field_5267 v1 + m ()I a method_35806 getX + m (F)F a method_4580 getU + m (Lfbm;)Lfbm; a method_24108 wrap + m ()I b method_35807 getY + m (F)F b method_35804 getUOffset + m ()F c method_4594 getU0 + m (F)F c method_4570 getV + m ()F d method_4577 getU1 + m (F)F d method_35805 getVOffset + m ()Lgqf; e method_45851 contents + m ()Lgql$a; f method_33437 createTicker + m ()F g method_4593 getV0 + m ()F h method_4575 getV1 + m ()Lakr; i method_45852 atlasLocation + m ()V j method_4584 uploadFirstFrame + m ()F k method_23842 uvShrinkRatio + m ()F l method_23841 atlasSize + m (Lakr;Lgqf;IIII)V +c gql$1 net/minecraft/class_1058$1 net/minecraft/client/renderer/texture/TextureAtlasSprite$1 + f Lgqh; a field_40554 val$ticker + f Lgql; b field_40555 field_40555 + m (Lgql;Lgqh;)V +c gql$a net/minecraft/class_1058$class_7770 net/minecraft/client/renderer/texture/TextureAtlasSprite$Ticker + m ()V a method_45853 tickAndUpload +c gqm net/minecraft/class_1060 net/minecraft/client/renderer/texture/TextureManager + f Lakr; a field_5285 INTENTIONAL_MISSING_TEXTURE + f Lorg/slf4j/Logger; b field_5288 LOGGER + f Ljava/util/Map; c field_5286 byPath + f Ljava/util/Set; d field_5284 tickableTextures + f Ljava/util/Map; e field_5283 prefixRegister + f Laue; f field_5287 resourceManager + m (Lakr;)V a method_22813 bindForSetup + m (Lakr;Lgpw;)V a method_4616 register + m (Lakr;Lgqd;)V a method_18166 method_18166 + m (Lakr;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_18168 preload + m (Laue;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Void;)V a method_18167 method_18167 + m (Lgpw;)Ljava/lang/String; a method_4621 method_4621 + m (Ljava/lang/Runnable;)V a method_22812 execute + m (Ljava/lang/String;Lgpy;)Lakr; a method_4617 register + m (Ljava/nio/file/Path;)V a method_49715 dumpAllSheets + m (Ljava/nio/file/Path;Lakr;Lgpw;)V a method_49716 method_49716 + m (Ljava/util/concurrent/CompletableFuture;)V a method_45854 method_45854 + m (Lakr;)Lgpw; b method_4619 getTexture + m (Lakr;Lgpw;)Lgpw; b method_34590 getTexture + m (Ljava/lang/Runnable;)V b method_22814 method_22814 + m (Ljava/nio/file/Path;)V b method_49717 _dumpAllSheets + m (Lakr;)V c method_4615 release + m (Lakr;Lgpw;)V c method_30299 safeClose + m (Ljava/lang/Runnable;)V c method_22815 method_22815 + m (Ljava/nio/file/Path;)V c method_49718 method_49718 + m (Lakr;)V d method_4618 _bind + m (Lakr;Lgpw;)Lgpw; d method_24303 loadTexture + m (Lakr;)V e method_22816 method_22816 + m (Laue;)V + m ()V +c gqn net/minecraft/class_1061 net/minecraft/client/renderer/texture/Tickable + m ()V e method_4622 tick +c gqo net/minecraft/class_8684 net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader + f Lorg/slf4j/Logger; a field_45633 LOGGER + m (Ljava/util/Collection;Lakr;Lauc;)Lgqf; a method_52851 method_52851 + m ()V +c gqp net/minecraft/class_7948 net/minecraft/client/renderer/texture/atlas/SpriteSource + f Lakk; a field_42075 TEXTURE_ID_CONVERTER + m ()Lgqr; a method_47672 type + m (Laue;Lgqp$a;)V a method_47673 run + m ()V +c gqp$a net/minecraft/class_7948$class_7949 net/minecraft/client/renderer/texture/atlas/SpriteSource$Output + m (Lakr;Lauc;)V a method_47674 add + m (Lakr;Lauc;Lgqo;)Lgqf; a method_47675 method_47675 + m (Lakr;Lgqp$b;)V a method_47670 add + m (Ljava/util/function/Predicate;)V a method_47671 removeAll +c gqp$b net/minecraft/class_7948$class_7950 net/minecraft/client/renderer/texture/atlas/SpriteSource$SpriteSupplier + m ()V a method_47676 discard +c gqq net/minecraft/class_7947 net/minecraft/client/renderer/texture/atlas/SpriteSourceList + f Lorg/slf4j/Logger; a field_41386 LOGGER + f Lakk; b field_41387 ATLAS_INFO_CONVERTER + f Ljava/util/List; c field_41388 sources + m (Laue;)Ljava/util/List; a method_47667 list + m (Laue;Lakr;)Lgqq; a method_47668 load + m (Laue;Lgqp$a;Lgqp;)V a method_47669 method_47669 + m (Lgqo;)Lgqf; a method_52852 method_52852 + m (Ljava/util/List;)V + m ()V +c gqq$1 net/minecraft/class_7947$1 net/minecraft/client/renderer/texture/atlas/SpriteSourceList$1 + f Ljava/util/Map; a field_41389 val$sprites + m (Lgqq;Ljava/util/Map;)V +c gqr net/minecraft/class_7951 net/minecraft/client/renderer/texture/atlas/SpriteSourceType + f Lcom/mojang/serialization/MapCodec; a comp_1162 codec + m ()Lcom/mojang/serialization/MapCodec; a comp_1162 codec + m (Lcom/mojang/serialization/MapCodec;)V +c gqs net/minecraft/class_7952 net/minecraft/client/renderer/texture/atlas/SpriteSources + f Lgqr; a field_41391 SINGLE_FILE + f Lgqr; b field_41392 DIRECTORY + f Lgqr; c field_41393 FILTER + f Lgqr; d field_41394 UNSTITCHER + f Lgqr; e field_42076 PALETTED_PERMUTATIONS + f Lcom/mojang/serialization/Codec; f field_41395 TYPE_CODEC + f Lcom/mojang/serialization/Codec; g field_41396 CODEC + f Lcom/mojang/serialization/Codec; h field_41397 FILE_CODEC + f Lcom/google/common/collect/BiMap; i field_41398 TYPES + m (Lakr;)Ljava/lang/String; a method_49634 method_49634 + m (Lgqr;)Lcom/mojang/serialization/DataResult; a method_47679 method_47679 + m (Ljava/lang/String;Lcom/mojang/serialization/MapCodec;)Lgqr; a method_47680 register + m (Lakr;)Lcom/mojang/serialization/DataResult; b method_47677 method_47677 + m (Lakr;)Ljava/lang/String; c method_49635 method_49635 + m ()V + m ()V +c gqt net/minecraft/class_7953 net/minecraft/client/renderer/texture/atlas/package-info +c gqu net/minecraft/class_7954 net/minecraft/client/renderer/texture/atlas/sources/DirectoryLister + f Lcom/mojang/serialization/MapCodec; b field_41399 CODEC + f Ljava/lang/String; c field_41400 sourcePath + f Ljava/lang/String; d field_41401 idPrefix + m (Lakk;Lgqp$a;Lakr;Lauc;)V a method_47683 method_47683 + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_47684 method_47684 + m (Lgqu;)Ljava/lang/String; a method_47685 method_47685 + m (Lgqu;)Ljava/lang/String; b method_47686 method_47686 + m (Ljava/lang/String;Ljava/lang/String;)V + m ()V +c gqv net/minecraft/class_7958 net/minecraft/client/renderer/texture/atlas/sources/LazyLoadedImage + f Lakr; a field_41416 id + f Lauc; b field_41417 resource + f Ljava/util/concurrent/atomic/AtomicReference; c field_41418 image + f Ljava/util/concurrent/atomic/AtomicInteger; d field_41419 referenceCount + m ()Lfaj; a method_47697 get + m ()V b method_47698 release + m (Lakr;Lauc;I)V +c gqw net/minecraft/class_8066 net/minecraft/client/renderer/texture/atlas/sources/PalettedPermutations + f Lcom/mojang/serialization/MapCodec; b field_42077 CODEC + f Lorg/slf4j/Logger; c field_42078 LOGGER + f Ljava/util/List; d field_42079 textures + f Ljava/util/Map; e field_42080 permutations + f Lakr; f field_42081 paletteKey + m (Laue;)[I a method_48485 method_48485 + m (Laue;Lakr;)[I a method_48486 loadPaletteEntryFromImage + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_48487 method_48487 + m (Lgqw;)Ljava/util/Map; a method_48488 method_48488 + m (Lit/unimi/dsi/fastutil/ints/Int2IntMap;I)I a method_48489 method_48489 + m (Ljava/util/Map;Ljava/util/function/Supplier;Laue;Ljava/lang/String;Lakr;)V a method_48490 method_48490 + m (Ljava/util/function/Supplier;Laue;Lakr;)Ljava/util/function/IntUnaryOperator; a method_48491 method_48491 + m ([I[I)Ljava/util/function/IntUnaryOperator; a method_48492 createPaletteMapping + m (Lgqw;)Lakr; b method_48493 method_48493 + m (Lgqw;)Ljava/util/List; c method_48494 method_48494 + m (Ljava/util/List;Lakr;Ljava/util/Map;)V + m ()V +c gqw$a net/minecraft/class_8066$class_8067 net/minecraft/client/renderer/texture/atlas/sources/PalettedPermutations$PalettedSpriteSupplier + f Lgqv; a comp_1216 baseImage + f Ljava/util/function/Supplier; b comp_1217 palette + f Lakr; c comp_1218 permutationLocation + m (Lgqo;)Lgqf; a method_52853 apply + m ()Lgqv; b comp_1216 baseImage + m ()Ljava/util/function/Supplier; c comp_1217 palette + m ()Lakr; d comp_1218 permutationLocation + m (Lgqv;Ljava/util/function/Supplier;Lakr;)V +c gqx net/minecraft/class_7955 net/minecraft/client/renderer/texture/atlas/sources/SingleFile + f Lcom/mojang/serialization/MapCodec; b field_41402 CODEC + f Lorg/slf4j/Logger; c field_41403 LOGGER + f Lakr; d field_41405 resourceId + f Ljava/util/Optional; e field_41406 spriteId + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_47687 method_47687 + m (Lgqx;)Ljava/util/Optional; a method_47688 method_47688 + m (Lgqx;)Lakr; b method_47689 method_47689 + m (Lakr;Ljava/util/Optional;)V + m ()V +c gqy net/minecraft/class_7956 net/minecraft/client/renderer/texture/atlas/sources/SourceFilter + f Lcom/mojang/serialization/MapCodec; b field_41407 CODEC + f Layx; c field_41408 filter + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_47690 method_47690 + m (Lgqy;)Layx; a method_47691 method_47691 + m (Layx;)V + m ()V +c gqz net/minecraft/class_7957 net/minecraft/client/renderer/texture/atlas/sources/Unstitcher + f Lcom/mojang/serialization/MapCodec; b field_41409 CODEC + f Lorg/slf4j/Logger; c field_41410 LOGGER + f Lakr; d field_41412 resource + f Ljava/util/List; e field_41413 regions + f D f field_41414 xDivisor + f D g field_41415 yDivisor + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_47692 method_47692 + m (Lgqz;)Ljava/lang/Double; a method_47693 method_47693 + m (Lgqz;)Ljava/lang/Double; b method_47694 method_47694 + m (Lgqz;)Ljava/util/List; c method_47695 method_47695 + m (Lgqz;)Lakr; d method_47696 method_47696 + m (Lakr;Ljava/util/List;DD)V + m ()V +c gqz$a net/minecraft/class_7957$class_7959 net/minecraft/client/renderer/texture/atlas/sources/Unstitcher$Region + f Lcom/mojang/serialization/Codec; a field_41420 CODEC + f Lakr; b comp_1163 sprite + f D c comp_1164 x + f D d comp_1165 y + f D e comp_1166 width + f D f comp_1167 height + m ()Lakr; a comp_1163 sprite + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_47699 method_47699 + m ()D b comp_1164 x + m ()D c comp_1165 y + m ()D d comp_1166 width + m ()D e comp_1167 height + m (Lakr;DDDD)V + m ()V +c gqz$b net/minecraft/class_7957$class_7960 net/minecraft/client/renderer/texture/atlas/sources/Unstitcher$RegionInstance + f Lgqv; a field_41421 image + f Lgqz$a; b field_41422 region + f D c field_41423 xDivisor + f D d field_41424 yDivisor + m (Lgqo;)Lgqf; a method_47700 apply + m (Lgqv;Lgqz$a;DD)V +c gra net/minecraft/class_7961 net/minecraft/client/renderer/texture/atlas/sources/package-info +c grb net/minecraft/class_6262 net/minecraft/client/renderer/texture/package-info +c grc net/minecraft/class_1065 net/minecraft/client/resources/ClientPackSource + f Ljava/lang/String; c field_43088 HIGH_CONTRAST_PACK + f Latf; d field_40556 VERSION_METADATA_SECTION + f Lasi; e field_40557 BUILT_IN_METADATA + f Ljava/util/Map; f field_40559 SPECIAL_PACK_NAMES + f Lasp; g field_49131 VANILLA_PACK_INFO + f Lasr; h field_49132 VANILLA_SELECTION_CONFIG + f Lasr; i field_49133 BUILT_IN_SELECTION_CONFIG + f Lakr; j field_40560 PACKS_DIR + f Ljava/nio/file/Path; k field_40561 externalAssetDir + m (Ljava/lang/String;Lwz;)Lasp; a method_57056 createBuiltInPackLocation + m (Ljava/nio/file/Path;)Ljava/nio/file/Path; a method_45856 findExplodedAssetPacks + m (Ljava/nio/file/Path;)Lasu; b method_45857 createVanillaPackSource + m (Ljava/nio/file/Path;Lews;)V + m ()V +c grd net/minecraft/class_1068 net/minecraft/client/resources/DefaultPlayerSkin + f [Lgrl; a field_41121 DEFAULT_SKINS + m ()Lakr; a method_4649 getDefaultTexture + m (Lcom/mojang/authlib/GameProfile;)Lgrl; a method_52854 get + m (Ljava/lang/String;Lgrl$a;)Lgrl; a method_52855 create + m (Ljava/util/UUID;)Lgrl; a method_4648 get + m ()V + m ()V +c gre net/minecraft/class_1070 net/minecraft/client/resources/FoliageColorReloadListener + f Lakr; a field_5303 LOCATION + m (Laue;Lbnf;)[I a method_18660 prepare + m ([ILaue;Lbnf;)V a method_18659 apply + m ()V + m ()V +c grf net/minecraft/class_1069 net/minecraft/client/resources/GrassColorReloadListener + f Lakr; a field_5302 LOCATION + m (Laue;Lbnf;)[I a method_18662 prepare + m ([ILaue;Lbnf;)V a method_18661 apply + m ()V + m ()V +c grg net/minecraft/class_1064 net/minecraft/client/resources/IndexedAssetSource + f Lcom/google/common/base/Splitter; a field_40563 PATH_SPLITTER + f Lorg/slf4j/Logger; b field_5290 LOGGER + m (Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/Path; a method_45858 createIndexFs + m ()V + m ()V +c grh net/minecraft/class_3685 net/minecraft/client/resources/LegacyStuffWrapper + m (Laue;Lakr;)[I a method_16049 getPixels + m ()V +c gri net/minecraft/class_9443 net/minecraft/client/resources/MapDecorationTextureManager + m (Leqn;)Lgql; a method_58516 get + m (Lgqm;)V +c grj net/minecraft/class_4074 net/minecraft/client/resources/MobEffectTextureManager + m (Ljm;)Lgql; a method_18663 get + m (Lgqm;)V +c grk net/minecraft/class_4044 net/minecraft/client/resources/PaintingTextureManager + f Lakr; a field_18032 BACK_SPRITE_LOCATION + m ()Lgql; a method_18342 getBackSprite + m (Lcjd;)Lgql; a method_18345 get + m (Lgqm;)V + m ()V +c grl net/minecraft/class_8685 net/minecraft/client/resources/PlayerSkin + f Lakr; a comp_1626 texture + f Ljava/lang/String; b comp_1911 textureUrl + f Lakr; c comp_1627 capeTexture + f Lakr; d comp_1628 elytraTexture + f Lgrl$a; e comp_1629 model + f Z f comp_1630 secure + m ()Lakr; a comp_1626 texture + m ()Ljava/lang/String; b comp_1911 textureUrl + m ()Lakr; c comp_1627 capeTexture + m ()Lakr; d comp_1628 elytraTexture + m ()Lgrl$a; e comp_1629 model + m ()Z f comp_1630 secure + m (Lakr;Ljava/lang/String;Lakr;Lakr;Lgrl$a;Z)V +c grl$a net/minecraft/class_8685$class_7920 net/minecraft/client/resources/PlayerSkin$Model + f Lgrl$a; a field_41122 SLIM + f Lgrl$a; b field_41123 WIDE + f Ljava/lang/String; c field_41124 id + f [Lgrl$a; d field_41125 $VALUES + m ()Ljava/lang/String; a method_52856 id + m (Ljava/lang/String;)Lgrl$a; a method_52857 byName + m ()[Lgrl$a; b method_47439 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c grm net/minecraft/class_1071 net/minecraft/client/resources/SkinManager + f Lorg/slf4j/Logger; a field_46909 LOGGER + f Lcom/mojang/authlib/minecraft/MinecraftSessionService; b field_46910 sessionService + f Lcom/google/common/cache/LoadingCache; c field_45634 skinCache + f Lgrm$b; d field_45635 skinTextures + f Lgrm$b; e field_45636 capeTextures + f Lgrm$b; f field_45637 elytraTextures + m (Lcom/mojang/authlib/GameProfile;)Ljava/util/function/Supplier; a method_52858 lookupInsecure + m (Ljava/util/UUID;Lcom/mojang/authlib/minecraft/MinecraftProfileTextures;)Ljava/util/concurrent/CompletableFuture; a method_52859 registerTextures + m (Ljava/util/concurrent/CompletableFuture;Lgrl;)Lgrl; a method_52860 method_52860 + m (Ljava/util/concurrent/CompletableFuture;Ljava/lang/String;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Lgrl$a;Lcom/mojang/authlib/minecraft/MinecraftProfileTextures;Ljava/lang/Void;)Lgrl; a method_52861 method_52861 + m (Lcom/mojang/authlib/GameProfile;)Lgrl; b method_52862 getInsecureSkin + m (Lcom/mojang/authlib/GameProfile;)Ljava/util/concurrent/CompletableFuture; c method_52863 getOrLoad + m (Lgqm;Ljava/nio/file/Path;Lcom/mojang/authlib/minecraft/MinecraftSessionService;Ljava/util/concurrent/Executor;)V + m ()V +c grm$1 net/minecraft/class_1071$1 net/minecraft/client/resources/SkinManager$1 + f Lcom/mojang/authlib/minecraft/MinecraftSessionService; a field_25795 val$sessionService + f Ljava/util/concurrent/Executor; b field_45638 val$mainThreadExecutor + f Lgrm; c field_25796 field_25796 + m (Lgrm$a;)Ljava/util/concurrent/CompletableFuture; a method_52868 load + m (Lgrm$a;Lcom/mojang/authlib/minecraft/MinecraftProfileTextures;)Ljava/util/concurrent/CompletionStage; a method_52866 method_52866 + m (Lgrm$a;Lcom/mojang/authlib/minecraft/MinecraftSessionService;)Lcom/mojang/authlib/minecraft/MinecraftProfileTextures; a method_54647 method_54647 + m (Lgrm;Lcom/mojang/authlib/minecraft/MinecraftSessionService;Ljava/util/concurrent/Executor;)V +c grm$2 net/minecraft/class_1071$2 net/minecraft/client/resources/SkinManager$2 + f [I a field_39908 $SwitchMap$com$mojang$authlib$minecraft$MinecraftProfileTexture$Type + m ()V +c grm$a net/minecraft/class_1071$class_8686 net/minecraft/client/resources/SkinManager$CacheKey + f Ljava/util/UUID; a comp_2010 profileId + f Lcom/mojang/authlib/properties/Property; b comp_2011 packedTextures + m ()Ljava/util/UUID; a comp_2010 profileId + m ()Lcom/mojang/authlib/properties/Property; b comp_2011 packedTextures + m (Ljava/util/UUID;Lcom/mojang/authlib/properties/Property;)V +c grm$b net/minecraft/class_1071$class_8687 net/minecraft/client/resources/SkinManager$TextureCache + f Lgqm; a field_45639 textureManager + f Ljava/nio/file/Path; b field_45640 root + f Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type; c field_45641 type + f Ljava/util/Map; d field_45642 textures + m (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;)Ljava/util/concurrent/CompletableFuture; a method_52870 getOrLoad + m (Ljava/lang/String;)Lakr; a method_52871 getTextureLocation + m (Ljava/util/concurrent/CompletableFuture;Lakr;)V a method_52872 method_52872 + m (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;)Ljava/util/concurrent/CompletableFuture; b method_52873 registerTexture + m (Lgqm;Ljava/nio/file/Path;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;)V +c grn net/minecraft/class_4008 net/minecraft/client/resources/SplashManager + f Lakr; a field_17904 SPLASHES_LOCATION + f Layw; b field_17905 RANDOM + f Ljava/util/List; c field_17906 splashes + f Lfhb; d field_18934 user + m ()Lfjq; a method_18174 getSplash + m (Laue;Lbnf;)Ljava/util/List; a method_18176 prepare + m (Ljava/lang/String;)Z a method_18664 method_18664 + m (Ljava/util/List;Laue;Lbnf;)V a method_18175 apply + m (Lfhb;)V + m ()V +c gro net/minecraft/class_4075 net/minecraft/client/resources/TextureAtlasHolder + f Lgqk; a field_18230 textureAtlas + f Lakr; b field_41425 atlasInfoLocation + f Ljava/util/Set; c field_45644 metadataSections + m (Lakr;)Lgql; a method_18667 getSprite + m (Lbnf;Lgqg$a;)V a method_45860 method_45860 + m (Lgqg$a;Lbnf;)V a method_18666 apply + m (Lgqm;Lakr;Lakr;)V + m (Lgqm;Lakr;Lakr;Ljava/util/Set;)V +c grp net/minecraft/class_1078 net/minecraft/client/resources/language/ClientLanguage + f Lorg/slf4j/Logger; b field_5332 LOGGER + f Ljava/util/Map; c field_5330 storage + f Z d field_25289 defaultRightToLeft + m (Laue;Ljava/util/List;Z)Lgrp; a method_4675 loadFrom + m (Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)V a method_4676 appendFrom + m (Ljava/util/Map;Z)V + m ()V +c grq net/minecraft/class_5491 net/minecraft/client/resources/language/FormattedBidiReorder + m (Ljava/lang/String;)Ljava/lang/String; a method_30921 shape + m (Lxe;Z)Laya; a method_30922 reorder + m ()V +c grr net/minecraft/class_1074 net/minecraft/client/resources/language/I18n + f Ltw; a field_25290 language + m (Ljava/lang/String;)Z a method_4663 exists + m (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; a method_4662 get + m (Ltw;)V a method_29391 setLanguage + m ()V + m ()V +c grs net/minecraft/class_1077 net/minecraft/client/resources/language/LanguageInfo + f Lcom/mojang/serialization/Codec; a field_41862 CODEC + f Ljava/lang/String; b comp_1198 region + f Ljava/lang/String; c comp_1199 name + f Z d comp_1200 bidirectional + m ()Lwz; a method_48303 toComponent + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_48304 method_48304 + m ()Ljava/lang/String; b comp_1198 region + m ()Ljava/lang/String; c comp_1199 name + m ()Z d comp_1200 bidirectional + m (Ljava/lang/String;Ljava/lang/String;Z)V + m ()V +c grt net/minecraft/class_1076 net/minecraft/client/resources/language/LanguageManager + f Lorg/slf4j/Logger; a field_5325 LOGGER + f Lgrs; b field_25291 DEFAULT_LANGUAGE + f Ljava/util/Map; c field_5324 languages + f Ljava/lang/String; d field_5323 currentCode + f Ljava/util/function/Consumer; e field_51830 reloadCallback + m ()Ljava/lang/String; a method_4669 getSelected + m (Ljava/lang/String;)V a method_4667 setSelected + m (Ljava/util/Map;Lasq;)V a method_29392 method_29392 + m (Ljava/util/stream/Stream;)Ljava/util/Map; a method_29393 extractLanguages + m ()Ljava/util/SortedMap; b method_4665 getLanguages + m (Ljava/lang/String;)Lgrs; b method_4668 getLanguage + m (Ljava/lang/String;Ljava/util/function/Consumer;)V + m ()V +c gru net/minecraft/class_6263 net/minecraft/client/resources/language/package-info +c grv net/minecraft/class_1080 net/minecraft/client/resources/metadata/animation/AnimationFrame + f I a field_32973 UNKNOWN_FRAME_TIME + f I b field_5341 index + f I c field_5340 time + m ()I a method_4690 getIndex + m (I)I a method_4691 getTime + m (I)V + m (II)V +c grw net/minecraft/class_1079 net/minecraft/client/resources/metadata/animation/AnimationMetadataSection + f Lgrx; a field_5337 SERIALIZER + f Ljava/lang/String; b field_32974 SECTION_NAME + f I c field_32975 DEFAULT_FRAME_TIME + f I d field_32976 UNKNOWN_SIZE + f Lgrw; e field_21768 EMPTY + f Ljava/util/List; f field_5339 frames + f I g field_5338 frameWidth + f I h field_5336 frameHeight + f I i field_5334 defaultFrameTime + f Z j field_5335 interpolatedFrames + m ()I a method_4684 getDefaultFrameTime + m (II)Lgry; a method_24143 calculateFrameSize + m (Lgrw$a;)V a method_33460 forEachFrame + m ()Z b method_4685 isInterpolatedFrames + m (Ljava/util/List;IIIZ)V + m ()V +c grw$1 net/minecraft/class_1079$1 net/minecraft/client/resources/metadata/animation/AnimationMetadataSection$1 + m (Ljava/util/List;IIIZ)V +c grw$a net/minecraft/class_1079$class_5792 net/minecraft/client/resources/metadata/animation/AnimationMetadataSection$FrameOutput +c grx net/minecraft/class_1081 net/minecraft/client/resources/metadata/animation/AnimationMetadataSectionSerializer + m (ILcom/google/gson/JsonElement;)Lgrv; a method_4693 getFrame + m (Lcom/google/gson/JsonObject;)Lgrw; b method_4692 fromJson + m ()V +c gry net/minecraft/class_7771 net/minecraft/client/resources/metadata/animation/FrameSize + f I a comp_1049 width + f I b comp_1050 height + m ()I a comp_1049 width + m ()I b comp_1050 height + m (II)V +c grz net/minecraft/class_3888 net/minecraft/client/resources/metadata/animation/VillagerMetaDataSection + f Lgsa; a field_17158 SERIALIZER + f Ljava/lang/String; b field_32977 SECTION_NAME + f Lgrz$a; c field_17159 hat + m ()Lgrz$a; a method_17167 getHat + m (Lgrz$a;)V + m ()V +c grz$a net/minecraft/class_3888$class_3889 net/minecraft/client/resources/metadata/animation/VillagerMetaDataSection$Hat + f Lgrz$a; a field_17160 NONE + f Lgrz$a; b field_17161 PARTIAL + f Lgrz$a; c field_17162 FULL + f Ljava/util/Map; d field_17163 BY_NAME + f Ljava/lang/String; e field_17164 name + f [Lgrz$a; f field_17165 $VALUES + m ()Ljava/lang/String; a method_17168 getName + m (Lgrz$a;)Lgrz$a; a method_17169 method_17169 + m (Ljava/lang/String;)Lgrz$a; a method_17170 getByName + m ()[Lgrz$a; b method_36924 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gsa net/minecraft/class_3890 net/minecraft/client/resources/metadata/animation/VillagerMetadataSectionSerializer + m (Lcom/google/gson/JsonObject;)Lgrz; b method_17171 fromJson + m ()V +c gsb net/minecraft/class_6264 net/minecraft/client/resources/metadata/animation/package-info +c gsc net/minecraft/class_8689 net/minecraft/client/resources/metadata/gui/GuiMetadataSection + f Lgsc; a field_45645 DEFAULT + f Lcom/mojang/serialization/Codec; b field_45646 CODEC + f Late; c field_45647 TYPE + f Lgsd; d comp_1636 scaling + m ()Lgsd; a comp_1636 scaling + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52875 method_52875 + m (Lgsd;)V + m ()V +c gsd net/minecraft/class_8690 net/minecraft/client/resources/metadata/gui/GuiSpriteScaling + f Lcom/mojang/serialization/Codec; a field_45648 CODEC + f Lgsd; b field_45649 DEFAULT + m ()Lgsd$d; a method_52876 type + m ()V +c gsd$a net/minecraft/class_8690$class_8691 net/minecraft/client/resources/metadata/gui/GuiSpriteScaling$NineSlice + f Lcom/mojang/serialization/MapCodec; c field_45650 CODEC + f I d comp_1637 width + f I e comp_1638 height + f Lgsd$a$a; f comp_1639 border + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52877 method_52877 + m (Lgsd$a$a;Lgsd$a;)Ljava/lang/String; a method_53492 method_53492 + m (Lgsd$a;)Lcom/mojang/serialization/DataResult; a method_53493 validate + m ()I b comp_1637 width + m (Lgsd$a$a;Lgsd$a;)Ljava/lang/String; b method_53494 method_53494 + m ()I c comp_1638 height + m ()Lgsd$a$a; d comp_1639 border + m (IILgsd$a$a;)V + m ()V +c gsd$a$a net/minecraft/class_8690$class_8691$class_8692 net/minecraft/client/resources/metadata/gui/GuiSpriteScaling$NineSlice$Border + f I a comp_1640 left + f I b comp_1641 top + f I c comp_1642 right + f I d comp_1643 bottom + f Lcom/mojang/serialization/Codec; e field_45651 VALUE_CODEC + f Lcom/mojang/serialization/Codec; f field_45652 RECORD_CODEC + f Lcom/mojang/serialization/Codec; g field_45653 CODEC + m ()I a comp_1640 left + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52879 method_52879 + m (Lgsd$a$a;)Lcom/mojang/datafixers/util/Either; a method_52880 method_52880 + m (Ljava/lang/Integer;)Lgsd$a$a; a method_52881 method_52881 + m ()I b comp_1641 top + m (Lgsd$a$a;)Lcom/mojang/serialization/DataResult; b method_52882 method_52882 + m ()I c comp_1642 right + m ()I d comp_1643 bottom + m ()Ljava/util/OptionalInt; e method_52883 unpackValue + m ()Ljava/lang/String; f method_52884 method_52884 + m (IIII)V + m ()V +c gsd$b net/minecraft/class_8690$class_8693 net/minecraft/client/resources/metadata/gui/GuiSpriteScaling$Stretch + f Lcom/mojang/serialization/MapCodec; c field_45654 CODEC + m ()V + m ()V +c gsd$c net/minecraft/class_8690$class_8694 net/minecraft/client/resources/metadata/gui/GuiSpriteScaling$Tile + f Lcom/mojang/serialization/MapCodec; c field_45655 CODEC + f I d comp_1644 width + f I e comp_1645 height + m (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App; a method_52885 method_52885 + m ()I b comp_1644 width + m ()I c comp_1645 height + m (II)V + m ()V +c gsd$d net/minecraft/class_8690$class_8695 net/minecraft/client/resources/metadata/gui/GuiSpriteScaling$Type + f Lgsd$d; a field_45656 STRETCH + f Lgsd$d; b field_45657 TILE + f Lgsd$d; c field_45658 NINE_SLICE + f Lcom/mojang/serialization/Codec; d field_45659 CODEC + f Ljava/lang/String; e field_45660 key + f Lcom/mojang/serialization/MapCodec; f field_45661 codec + f [Lgsd$d; g field_45662 $VALUES + m ()Lcom/mojang/serialization/MapCodec; a method_52886 codec + m ()[Lgsd$d; b method_52887 $values + m (Ljava/lang/String;ILjava/lang/String;Lcom/mojang/serialization/MapCodec;)V + m ()V +c gse net/minecraft/class_8696 net/minecraft/client/resources/metadata/gui/package-info +c gsf net/minecraft/class_1082 net/minecraft/client/resources/metadata/language/LanguageMetadataSection + f Lcom/mojang/serialization/Codec; a field_41863 LANGUAGE_CODE_CODEC + f Lcom/mojang/serialization/Codec; b field_41864 CODEC + f Late; c field_41865 TYPE + f Ljava/util/Map; d comp_1201 languages + m ()Ljava/util/Map; a comp_1201 languages + m (Ljava/util/Map;)V + m ()V +c gsg net/minecraft/class_6265 net/minecraft/client/resources/metadata/language/package-info +c gsh net/minecraft/class_6266 net/minecraft/client/resources/metadata/package-info +c gsi net/minecraft/class_1084 net/minecraft/client/resources/metadata/texture/TextureMetadataSection + f Lgsj; a field_5344 SERIALIZER + f Z b field_32980 DEFAULT_BLUR + f Z c field_32981 DEFAULT_CLAMP + f Z d field_5346 blur + f Z e field_5345 clamp + m ()Z a method_4696 isBlur + m ()Z b method_4697 isClamp + m (ZZ)V + m ()V +c gsj net/minecraft/class_1085 net/minecraft/client/resources/metadata/texture/TextureMetadataSectionSerializer + m (Lcom/google/gson/JsonObject;)Lgsi; b method_4698 fromJson + m ()V +c gsk net/minecraft/class_6267 net/minecraft/client/resources/metadata/texture/package-info +c gsl net/minecraft/class_4724 net/minecraft/client/resources/model/AtlasSet + f Ljava/util/Map; a field_21746 atlases + m (Lakr;)Lgqk; a method_24098 getAtlas + m (Laue;ILjava/util/concurrent/Executor;)Ljava/util/Map; a method_45862 scheduleLoad + m (Laue;ILjava/util/concurrent/Executor;Ljava/util/Map$Entry;)Ljava/util/concurrent/CompletableFuture; a method_45863 method_45863 + m (Lgqm;Ljava/util/Map$Entry;)Lgsl$a; a method_45864 method_45864 + m (Lgsl$a;Lgqg$a;)Lgsl$b; a method_45867 method_45867 + m (Ljava/util/Map;Lgqm;)V +c gsl$a net/minecraft/class_4724$class_7772 net/minecraft/client/resources/model/AtlasSet$AtlasEntry + f Lgqk; a comp_1051 atlas + f Lakr; b comp_1168 atlasInfoLocation + m ()Lgqk; a comp_1051 atlas + m ()Lakr; b comp_1168 atlasInfoLocation + m (Lgqk;Lakr;)V +c gsl$b net/minecraft/class_4724$class_7774 net/minecraft/client/resources/model/AtlasSet$StitchResult + f Lgqk; a field_40564 atlas + f Lgqg$a; b field_40565 preparations + m ()Lgql; a method_45868 missing + m (Lakr;)Lgql; a method_45869 getSprite + m ()Ljava/util/concurrent/CompletableFuture; b method_45870 readyForUpload + m ()V c method_45871 upload + m (Lgqk;Lgqg$a;)V +c gsm net/minecraft/class_1087 net/minecraft/client/resources/model/BakedModel + m ()Z a method_4708 useAmbientOcclusion + m (Ldtc;Lji;Layw;)Ljava/util/List; a method_4707 getQuads + m ()Z b method_4712 isGui3d + m ()Z c method_24304 usesBlockLight + m ()Z d method_4713 isCustomRenderer + m ()Lgql; e method_4711 getParticleIcon + m ()Lggi; f method_4709 getTransforms + m ()Lggg; g method_4710 getOverrides +c gsn net/minecraft/class_1086 net/minecraft/client/resources/model/BlockModelRotation + f Lgsn; a field_5350 X0_Y0 + f Lgsn; b field_5366 X0_Y90 + f Lgsn; c field_5355 X0_Y180 + f Lgsn; d field_5347 X0_Y270 + f Lgsn; e field_5351 X90_Y0 + f Lgsn; f field_5360 X90_Y90 + f Lgsn; g field_5367 X90_Y180 + f Lgsn; h field_5354 X90_Y270 + f Lgsn; i field_5358 X180_Y0 + f Lgsn; j field_5348 X180_Y90 + f Lgsn; k field_5356 X180_Y180 + f Lgsn; l field_5359 X180_Y270 + f Lgsn; m field_5353 X270_Y0 + f Lgsn; n field_5349 X270_Y90 + f Lgsn; o field_5361 X270_Y180 + f Lgsn; p field_5352 X270_Y270 + f I q field_32982 DEGREES + f Ljava/util/Map; r field_5357 BY_INDEX + f Lj; s field_23373 transformation + f Lh; t field_23374 actualRotation + f I u field_5364 index + f [Lgsn; v field_5365 $VALUES + m ()Lh; a method_35808 actualRotation + m (II)Lgsn; a method_4699 by + m (Lgsn;)Lgsn; a method_4700 method_4700 + m (II)I b method_4703 getIndex + m (Lgsn;)Ljava/lang/Integer; b method_4701 method_4701 + m ()[Lgsn; d method_36925 $values + m (Ljava/lang/String;III)V + m ()V +c gso net/minecraft/class_9824 net/minecraft/client/resources/model/BlockStateModelLoader + f I a field_52259 SINGLETON_MODEL_GROUP + f Lakk; b field_52260 BLOCKSTATE_LISTER + f Lorg/slf4j/Logger; c field_52261 LOGGER + f I d field_52262 INVISIBLE_MODEL_GROUP + f Lcom/google/common/base/Splitter; e field_52263 COMMA_SPLITTER + f Lcom/google/common/base/Splitter; f field_52264 EQUAL_SPLITTER + f Ldtd; g field_52265 ITEM_FRAME_FAKE_DEFINITION + f Ljava/util/Map; h field_52266 STATIC_DEFINITIONS + f Ljava/util/Map; i field_52267 blockStateResources + f Lbnf; j field_52268 profiler + f Lfhq; k field_52269 blockColors + f Ljava/util/function/BiConsumer; l field_52270 discoveredModelOutput + f I m field_52271 nextModelGroup + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; n field_52272 modelGroups + f Lgso$c; o field_52273 missingModel + f Lggc$a; p field_52274 context + m ()V a method_61051 loadAllBlockStates + m (ILdtc;)V a method_61052 method_61052 + m (Lakr;Ldtd;)V a method_61053 loadBlockStateDefinitions + m (Ldfy;Ljava/util/Map;Ldtc;)Z a method_61054 method_61054 + m (Ldtc;Lggj;Ljava/util/List;)Lgso$d; a method_61055 method_61055 + m (Ldtc;Lggo;Ljava/util/List;)Lgso$d; a method_61056 method_61056 + m (Ldtd;Ljava/lang/String;)Ljava/util/function/Predicate; a method_61057 predicate + m (Lduf;Ljava/lang/String;)Ljava/lang/Comparable; a method_61058 getValueHelper + m (Lgso$c;Ljava/util/Map$Entry;)Z a method_61059 method_61059 + m (Lgso$d;)Ljava/util/Set; a method_61060 method_61060 + m (Lgso$d;Ljava/util/Set;)V a method_61061 method_61061 + m (Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;)V a method_61062 method_61062 + m (Ljava/lang/Iterable;)V a method_61063 registerModelGroup + m (Ljava/util/List;Ldtd;Ljava/util/Map;Ljava/util/List;Lggo;Lggc;Lakr;Lgso$b;Ljava/lang/String;Lggj;)V a method_61064 method_61064 + m (Ljava/util/Map;Lakr;Ldtc;)V a method_61065 method_61065 + m (Ljava/util/Map;Lakr;Ljava/util/Map;Lgsu;Ldtc;)V a method_61066 method_61066 + m (Ljava/util/Map;Lggj;Ljava/util/List;Lggo;Lggc;Ldtc;)V a method_61067 method_61067 + m (Ljava/util/Map;Lggo;Ljava/util/List;Ldtc;)V a method_61068 method_61068 + m ()Lit/unimi/dsi/fastutil/objects/Object2IntMap; b method_61069 getModelGroups + m (Lgso$d;)Lgso$d; b method_61070 method_61070 + m (Ljava/util/Map;Lbnf;Lgsy;Lfhq;Ljava/util/function/BiConsumer;)V + m ()V +c gso$a net/minecraft/class_9824$class_1089 net/minecraft/client/resources/model/BlockStateModelLoader$BlockStateDefinitionException + m (Ljava/lang/String;)V +c gso$b net/minecraft/class_9824$class_7777 net/minecraft/client/resources/model/BlockStateModelLoader$LoadedJson + f Ljava/lang/String; a comp_1056 source + f Lcom/google/gson/JsonElement; b comp_1057 data + m ()Ljava/lang/String; a comp_1056 source + m (Lakr;Lggc$a;)Lggc; a method_61071 parse + m ()Lcom/google/gson/JsonElement; b comp_1057 data + m (Ljava/lang/String;Lcom/google/gson/JsonElement;)V +c gso$c net/minecraft/class_9824$class_9825 net/minecraft/client/resources/model/BlockStateModelLoader$LoadedModel + f Lgsy; a comp_2871 model + f Ljava/util/function/Supplier; b comp_2872 key + m ()Lgsy; a comp_2871 model + m ()Ljava/util/function/Supplier; b comp_2872 key + m (Lgsy;Ljava/util/function/Supplier;)V +c gso$d net/minecraft/class_9824$class_4455 net/minecraft/client/resources/model/BlockStateModelLoader$ModelGroupKey + f Ljava/util/List; a comp_2873 models + f Ljava/util/List; b comp_2874 coloringValues + m ()Ljava/util/List; a comp_2873 models + m (Ldtc;Lggo;Ljava/util/Collection;)Lgso$d; a method_21607 create + m (Ldtc;Lgsy;Ljava/util/Collection;)Lgso$d; a method_21608 create + m (Ldtc;Ljava/util/Collection;)Ljava/util/List; a method_21609 getColoringValues + m (Ldtd;Ldtc;Lggq;)Z a method_21610 method_21610 + m ()Ljava/util/List; b comp_2874 coloringValues + m (Ljava/util/List;Ljava/util/List;)V +c gsp net/minecraft/class_1090 net/minecraft/client/resources/model/BuiltInModel + f Lggi; a field_5404 itemTransforms + f Lggg; b field_5405 overrides + f Lgql; c field_16594 particleTexture + f Z d field_21862 usesBlockLight + m (Lggi;Lggg;Lgql;Z)V +c gsq net/minecraft/class_4730 net/minecraft/client/resources/model/Material + f Ljava/util/Comparator; a field_40566 COMPARATOR + f Lakr; b field_21769 atlasLocation + f Lakr; c field_21770 texture + f Lgfh; d field_21771 renderType + m ()Lakr; a method_24144 atlasLocation + m (Lgez;Ljava/util/function/Function;)Lfbm; a method_24145 buffer + m (Lgez;Ljava/util/function/Function;Z)Lfbm; a method_30001 buffer + m (Ljava/util/function/Function;)Lgfh; a method_24146 renderType + m ()Lakr; b method_24147 texture + m ()Lgql; c method_24148 sprite + m (Lakr;Lakr;)V + m ()V +c gsr net/minecraft/class_7775 net/minecraft/client/resources/model/ModelBaker + m (Lakr;)Lgsy; a method_45872 getModel + m (Lakr;Lgsv;)Lgsm; a method_45873 bake +c gss net/minecraft/class_1088 net/minecraft/client/resources/model/ModelBakery + f Ljava/util/Set; A field_5390 loadingStack + f Ljava/util/Map; B field_5376 unbakedCache + f Ljava/util/Map; C field_5398 bakedCache + f Ljava/util/Map; D field_5394 topLevelModels + f Ljava/util/Map; E field_5387 bakedTopLevelModels + f Lgsy; F field_52275 missingModel + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; G field_20274 modelGroups + f Lgsq; a field_5397 FIRE_0 + f Lgsq; b field_5370 FIRE_1 + f Lgsq; c field_5381 LAVA_FLOW + f Lgsq; d field_5391 WATER_FLOW + f Lgsq; e field_5388 WATER_OVERLAY + f Lgsq; f field_20847 BANNER_BASE + f Lgsq; g field_21557 SHIELD_BASE + f Lgsq; h field_21558 NO_PATTERN_SHIELD + f I i field_32983 DESTROY_STAGE_COUNT + f Ljava/util/List; j field_20848 DESTROY_STAGES + f Ljava/util/List; k field_21020 BREAKING_LOCATIONS + f Ljava/util/List; l field_21772 DESTROY_TYPES + f Lakr; m field_5374 MISSING_MODEL_LOCATION + f Lgsu; n field_52276 MISSING_MODEL_VARIANT + f Lakk; o field_40570 MODEL_LISTER + f Ljava/lang/String; p field_5371 MISSING_MODEL_MESH + f Lggb; q field_5400 GENERATION_MARKER + f Lggb; r field_5389 BLOCK_ENTITY_MARKER + f Lorg/slf4j/Logger; s field_5380 LOGGER + f Ljava/lang/String; t field_32986 BUILTIN_SLASH + f Ljava/lang/String; u field_32987 BUILTIN_SLASH_GENERATED + f Ljava/lang/String; v field_32988 BUILTIN_BLOCK_ENTITY + f Ljava/lang/String; w field_32989 MISSING_MODEL_NAME + f Ljava/util/Map; x field_5396 BUILTIN_MODELS + f Lgge; y field_5384 ITEM_MODEL_GENERATOR + f Ljava/util/Map; z field_40567 modelResources + m ()Ljava/util/Map; a method_4734 getBakedTopLevelModels + m (I)Lakr; a method_22820 method_22820 + m (Lakr;)Lgsy; a method_4726 getModel + m (Lggb;)V a method_4721 method_4721 + m (Lgss$c;)V a method_45876 bakeModels + m (Lgss$c;Lgsu;Lgsy;)V a method_61072 method_61072 + m (Lgsu;)V a method_61073 loadSpecialItemModelAndDependencies + m (Lgsu;Lgsy;)V a method_61074 registerModelAndLoadDependencies + m (Lgsy;)V a method_45875 method_45875 + m (Ljava/lang/String;)Ljava/lang/String; a method_60912 method_60912 + m ()Lit/unimi/dsi/fastutil/objects/Object2IntMap; b method_21605 getModelGroups + m (Lakr;)V b method_61075 loadItemModelAndDependencies + m (Lggb;)V b method_4719 method_4719 + m (Lgsu;Lgsy;)V b method_61076 registerModel + m (Lakr;)Lggb; c method_4718 loadBlockModel + m (Lakr;)Lakr; d method_23216 method_23216 + m (Lfhq;Lbnf;Ljava/util/Map;Ljava/util/Map;)V + m ()V +c gss$a net/minecraft/class_1088$class_7776 net/minecraft/client/resources/model/ModelBakery$BakedCacheKey + f Lakr; a comp_1053 id + f Lj; b comp_1054 transformation + f Z c comp_1055 isUvLocked + m ()Lakr; a comp_1053 id + m ()Lj; b comp_1054 transformation + m ()Z c comp_1055 isUvLocked + m (Lakr;Lj;Z)V +c gss$b net/minecraft/class_1088$class_7778 net/minecraft/client/resources/model/ModelBakery$ModelBakerImpl + f Lgss; a field_40571 field_40571 + f Ljava/util/function/Function; b field_40572 modelTextureGetter + m (Lgss$c;Lgsu;Lgsq;)Lgql; a method_45878 method_45878 + m (Lgsy;Lgsv;)Lgsm; a method_61077 bakeUncached + m (Lgss;Lgss$c;Lgsu;)V +c gss$c net/minecraft/class_1088$class_9826 net/minecraft/client/resources/model/ModelBakery$TextureGetter +c gst net/minecraft/class_1092 net/minecraft/client/resources/model/ModelManager + f Lorg/slf4j/Logger; a field_40573 LOGGER + f Ljava/util/Map; b field_40574 VANILLA_ATLASES + f Ljava/util/Map; c field_5408 bakedRegistry + f Lgsl; d field_21775 atlases + f Lgfs; e field_5410 blockModelShaper + f Lfhq; f field_20277 blockColors + f I g field_21777 maxMipmapLevels + f Lgsm; h field_5407 missingModel + f Lit/unimi/dsi/fastutil/objects/Object2IntMap; i field_20278 modelGroups + m ()Lgsm; a method_4744 getMissingModel + m (I)V a method_24152 updateMaxMipLevel + m (Lakr;)Lgqk; a method_24153 getAtlas + m (Laue;)Ljava/util/Map; a method_45880 method_45880 + m (Laue;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_45881 loadBlockModels + m (Lbnf;Lgst$a;)V a method_45882 method_45882 + m (Lbnf;Ljava/util/Map;Lgss;)Lgst$a; a method_45883 loadModels + m (Lbnf;Ljava/util/Map;Ljava/util/Map;)Lgss; a method_45884 method_45884 + m (Lbnf;Ljava/util/Map;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Void;)Lgst$a; a method_45885 method_45885 + m (Ldtc;Ldtc;)Z a method_21611 requiresRender + m (Lgsq;)Ljava/lang/String; a method_45886 method_45886 + m (Lgst$a;)Ljava/util/concurrent/CompletionStage; a method_45887 method_45887 + m (Lgst$a;Lbnf;)V a method_18179 apply + m (Lgst$a;Ljava/lang/Void;)Lgst$a; a method_45888 method_45888 + m (Lgsu;)Lgsm; a method_4742 getModel + m (Lgsu;Ljava/util/Collection;)V a method_45879 method_45879 + m (Ljava/util/List;)Ljava/util/Map; a method_45889 method_45889 + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; a method_45890 method_45890 + m (Ljava/util/Map;Lcom/google/common/collect/Multimap;Lgsu;Lgsq;)Lgql; a method_45891 method_45891 + m (Ljava/util/Map;Lgsm;Ljava/util/Map;Ldtc;)V a method_45892 method_45892 + m (Ljava/util/concurrent/Executor;Ljava/util/Map;)Ljava/util/concurrent/CompletionStage; a method_45893 method_45893 + m ()Lgfs; b method_4743 getBlockModelShaper + m (I)[Ljava/util/concurrent/CompletableFuture; b method_45894 method_45894 + m (Laue;)Ljava/util/Map; b method_45895 method_45895 + m (Laue;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; b method_45896 loadBlockStates + m (Ljava/util/List;)Ljava/util/Map; b method_45897 method_45897 + m (Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair; b method_45898 method_45898 + m (Ljava/util/concurrent/Executor;Ljava/util/Map;)Ljava/util/concurrent/CompletionStage; b method_45899 method_45899 + m (I)[Ljava/util/concurrent/CompletableFuture; c method_45900 method_45900 + m (Ljava/util/Map$Entry;)Lgsl$b; c method_45902 method_45902 + m (Lgqm;Lfhq;I)V + m ()V +c gst$a net/minecraft/class_1092$class_7779 net/minecraft/client/resources/model/ModelManager$ReloadState + f Lgss; a comp_1058 modelBakery + f Lgsm; b comp_1059 missingModel + f Ljava/util/Map; c comp_1060 modelCache + f Ljava/util/Map; d comp_1061 atlasPreparations + f Ljava/util/concurrent/CompletableFuture; e comp_1062 readyForUpload + m ()Lgss; a comp_1058 modelBakery + m ()Lgsm; b comp_1059 missingModel + m ()Ljava/util/Map; c comp_1060 modelCache + m ()Ljava/util/Map; d comp_1061 atlasPreparations + m ()Ljava/util/concurrent/CompletableFuture; e comp_1062 readyForUpload + m (Lgss;Lgsm;Ljava/util/Map;Ljava/util/Map;Ljava/util/concurrent/CompletableFuture;)V +c gsu net/minecraft/class_1091 net/minecraft/client/resources/model/ModelResourceLocation + f Ljava/lang/String; a field_52277 INVENTORY_VARIANT + f Lakr; b comp_2875 id + f Ljava/lang/String; c comp_2876 variant + m ()Ljava/lang/String; a method_4740 getVariant + m (Lakr;)Lgsu; a method_61078 inventory + m (Ljava/lang/String;)Ljava/lang/String; a method_45911 lowercaseVariant + m (Ljava/lang/String;Ljava/lang/String;)Lgsu; a method_45910 vanilla + m ()Lakr; b comp_2875 id + m ()Ljava/lang/String; c comp_2876 variant + m (Lakr;Ljava/lang/String;)V +c gsv net/minecraft/class_3665 net/minecraft/client/resources/model/ModelState + m ()Lj; b method_3509 getRotation + m ()Z c method_3512 isUvLocked +c gsw net/minecraft/class_1095 net/minecraft/client/resources/model/MultiPartBakedModel + f Z a field_5430 hasAmbientOcclusion + f Z b field_5429 isGui3d + f Z c field_21863 usesBlockLight + f Lgql; d field_5425 particleIcon + f Lggi; e field_5426 transforms + f Lggg; f field_5428 overrides + f Ljava/util/List; g field_5427 selectors + f Ljava/util/Map; h field_5431 selectorCache + m (Ljava/util/List;)V +c gsw$a net/minecraft/class_1095$class_1096 net/minecraft/client/resources/model/MultiPartBakedModel$Builder + f Ljava/util/List; a field_5432 selectors + m ()Lgsm; a method_4750 build + m (Ljava/util/function/Predicate;Lgsm;)V a method_4749 add + m ()V +c gsx net/minecraft/class_1093 net/minecraft/client/resources/model/SimpleBakedModel + f Ljava/util/List; a field_5411 unculledFaces + f Ljava/util/Map; b field_5414 culledFaces + f Z c field_5415 hasAmbientOcclusion + f Z d field_5413 isGui3d + f Z e field_21864 usesBlockLight + f Lgql; f field_5416 particleIcon + f Lggi; g field_5417 transforms + f Lggg; h field_5412 overrides + m (Ljava/util/List;Ljava/util/Map;ZZZLgql;Lggi;Lggg;)V +c gsx$a net/minecraft/class_1093$class_1094 net/minecraft/client/resources/model/SimpleBakedModel$Builder + f Ljava/util/List; a field_5419 unculledFaces + f Ljava/util/Map; b field_5422 culledFaces + f Lggg; c field_5423 overrides + f Z d field_5421 hasAmbientOcclusion + f Lgql; e field_5424 particleIcon + f Z f field_5420 usesBlockLight + f Z g field_21865 isGui3d + f Lggi; h field_5418 transforms + m ()Lgsx$a; a method_35809 item + m (Lgfw;)Lgsx$a; a method_4748 addUnculledFace + m (Lgql;)Lgsx$a; a method_4747 particle + m (Lji;Lgfw;)Lgsx$a; a method_4745 addCulledFace + m ()Lgsm; b method_4746 build + m (Lggb;Lggg;Z)V + m (ZZZLggi;Lggg;)V +c gsy net/minecraft/class_1100 net/minecraft/client/resources/model/UnbakedModel + m (Lgsr;Ljava/util/function/Function;Lgsv;)Lgsm; a method_4753 bake + m (Ljava/util/function/Function;)V a method_45785 resolveParents + m ()Ljava/util/Collection; f method_4755 getDependencies +c gsz net/minecraft/class_1097 net/minecraft/client/resources/model/WeightedBakedModel + f I a field_5433 totalWeight + f Ljava/util/List; b field_5434 list + f Lgsm; c field_5435 wrapped + m (Ldtc;Lji;Layw;Lbpd$b;)Ljava/util/List; a method_33461 method_33461 + m (Ljava/util/List;)V +c gsz$a net/minecraft/class_1097$class_1098 net/minecraft/client/resources/model/WeightedBakedModel$Builder + f Ljava/util/List; a field_5436 list + m ()Lgsm; a method_4751 build + m (Lgsm;I)Lgsz$a; a method_4752 add + m ()V +c gta net/minecraft/class_6268 net/minecraft/client/resources/model/package-info +c gtb net/minecraft/class_6269 net/minecraft/client/resources/package-info +c gtc net/minecraft/class_1066 net/minecraft/client/resources/server/DownloadedPackSource + f Lwz; a field_40562 SERVER_NAME + f Ljava/util/regex/Pattern; b field_5296 SHA1 + f Lorg/slf4j/Logger; c field_5298 LOGGER + f Latr; d field_47593 EMPTY_SOURCE + f Lasr; e field_49134 DOWNLOADED_PACK_SELECTION + f Lgte; f field_47594 LOG_ONLY_FEEDBACK + f Lfgo; g field_47595 minecraft + f Latr; h field_47596 packSource + f Lgtf$a; i field_47597 pendingReload + f Lgtg; j field_47598 manager + f Lasl; k field_47599 downloadQueue + f Latq; l field_47600 packType + f Lgte; m field_47601 packFeedback + f I n field_47690 packIdSerialNumber + m ()Latr; a method_55514 createRepositorySource + m (I)Layf$a; a method_55515 createDownloadNotifier + m (Lasl;Ljava/util/concurrent/Executor;Lfhb;Ljava/net/Proxy;)Lgtd; a method_55516 createDownloader + m (Lgtf$a;)V a method_55517 startReload + m (Ljava/lang/String;)Lcom/google/common/hash/HashCode; a method_55518 tryParseSha1Hash + m (Ljava/util/List;)Ljava/util/List; a method_55519 loadRequestedPacks + m (Ljava/util/UUID;)V a method_55520 popPack + m (Ljava/util/UUID;Ljava/net/URL;Ljava/lang/String;)V a method_55523 pushPack + m (Ljava/util/UUID;Ljava/nio/file/Path;)V a method_55524 pushLocalPack + m (Ljava/util/concurrent/Executor;)Ljava/lang/Runnable; a method_55525 createUpdateScheduler + m (Ljava/util/function/Consumer;)V a method_55526 method_55526 + m (Lvt;)Lgte; a method_55527 createPackResponseSender + m (Lvt;Lgtg$c;)V a method_55528 configureForServerControl + m ()V b method_55530 onRecovery + m (Ljava/util/List;)Latr; b method_55531 configureSource + m (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture; b method_55532 waitForPackFeedback + m (Ljava/util/function/Consumer;)V b method_55534 method_55534 + m ()V c method_55535 onRecoveryFailure + m ()V d method_55536 onReloadSuccess + m ()V e method_55537 popAll + m ()V f method_55538 configureForLocalWorld + m ()V g method_55539 allowServerPacks + m ()V h method_55540 rejectServerPacks + m ()V i method_55541 cleanupAfterDisconnect + m ()Lgtf; j method_55542 createReloadConfig + m (Lfgo;Ljava/nio/file/Path;Lfua$d;)V + m ()V +c gtc$1 net/minecraft/class_1066$1 net/minecraft/client/resources/server/DownloadedPackSource$1 + m ()V +c gtc$2 net/minecraft/class_1066$2 net/minecraft/client/resources/server/DownloadedPackSource$2 + f Lgtc; a field_47691 field_47691 + m (Lgtc;)V +c gtc$3 net/minecraft/class_1066$3 net/minecraft/client/resources/server/DownloadedPackSource$3 + f I a field_47602 val$totalCount + f Lgtc; b field_47603 field_47603 + f Lfku$a; c field_47604 toastId + f Lwz; d field_47605 title + f Lwz; e field_47606 message + f I f field_47607 count + f I g field_47692 failCount + f Ljava/util/OptionalLong; h field_47608 totalBytes + m ()V b method_55544 updateToast + m (J)V b method_55543 updateProgress + m (Lgtc;I)V +c gtc$4 net/minecraft/class_1066$4 net/minecraft/client/resources/server/DownloadedPackSource$4 + f Lfhb; a field_47609 val$user + f Lasl; b field_47610 val$downloadQueue + f Ljava/net/Proxy; c field_47611 val$proxy + f Ljava/util/concurrent/Executor; d field_47612 val$mainThreadExecutor + f Lgtc; e field_47613 field_47613 + f I f field_47614 MAX_PACK_SIZE_BYTES + f Lcom/google/common/hash/HashFunction; g field_47615 CACHE_HASHING_FUNCTION + m ()Ljava/util/Map; a method_55545 createDownloadHeaders + m (Lgtc;Lfhb;Lasl;Ljava/net/Proxy;Ljava/util/concurrent/Executor;)V + m ()V +c gtc$5 net/minecraft/class_1066$5 net/minecraft/client/resources/server/DownloadedPackSource$5 + f Ljava/util/concurrent/Executor; a field_47616 val$mainThreadExecutor + f Lgtc; b field_47617 field_47617 + f Z c field_47618 scheduledInMainExecutor + f Z d field_47619 hasUpdates + m ()V a method_55547 runAllUpdates + m (Lgtc;Ljava/util/concurrent/Executor;)V +c gtc$6 net/minecraft/class_1066$6 net/minecraft/client/resources/server/DownloadedPackSource$6 + f Lvt; a field_47693 val$connection + m (Lvt;)V +c gtc$7 net/minecraft/class_1066$7 net/minecraft/client/resources/server/DownloadedPackSource$7 + f Lgte; a field_47694 val$original + f Ljava/util/UUID; b field_47695 val$packId + f Ljava/util/concurrent/CompletableFuture; c field_47696 val$result + f Lgtc; d field_47697 field_47697 + m (Lgtc;Lgte;Ljava/util/UUID;Ljava/util/concurrent/CompletableFuture;)V +c gtc$8 net/minecraft/class_1066$8 net/minecraft/client/resources/server/DownloadedPackSource$8 + f [I a field_47698 $SwitchMap$net$minecraft$client$resources$server$PackLoadFeedback$Update + f [I b field_47621 $SwitchMap$net$minecraft$client$resources$server$PackLoadFeedback$FinalResult + f [I c field_47620 $SwitchMap$net$minecraft$client$resources$server$ServerPackManager$PackPromptStatus + m ()V +c gtd net/minecraft/class_9038 net/minecraft/client/resources/server/PackDownloader + m (Ljava/util/Map;Ljava/util/function/Consumer;)V a method_55546 download +c gte net/minecraft/class_9039 net/minecraft/client/resources/server/PackLoadFeedback + m (Ljava/util/UUID;Lgte$a;)V a method_55619 reportFinalResult + m (Ljava/util/UUID;Lgte$b;)V a method_55620 reportUpdate +c gte$a net/minecraft/class_9039$class_9040 net/minecraft/client/resources/server/PackLoadFeedback$FinalResult + f Lgte$a; a field_47623 DECLINED + f Lgte$a; b field_47624 APPLIED + f Lgte$a; c field_47625 DISCARDED + f Lgte$a; d field_47626 DOWNLOAD_FAILED + f Lgte$a; e field_47627 ACTIVATION_FAILED + f [Lgte$a; f field_47628 $VALUES + m ()[Lgte$a; a method_55548 $values + m (Ljava/lang/String;I)V + m ()V +c gte$b net/minecraft/class_9039$class_9060 net/minecraft/client/resources/server/PackLoadFeedback$Update + f Lgte$b; a field_47699 ACCEPTED + f Lgte$b; b field_47700 DOWNLOADED + f [Lgte$b; c field_47701 $VALUES + m ()[Lgte$b; a method_55621 $values + m (Ljava/lang/String;I)V + m ()V +c gtf net/minecraft/class_9041 net/minecraft/client/resources/server/PackReloadConfig +c gtf$a net/minecraft/class_9041$class_9042 net/minecraft/client/resources/server/PackReloadConfig$Callbacks + m ()V a method_55549 onSuccess + m (Z)V a method_55550 onFailure + m ()Ljava/util/List; b method_55551 packsToLoad +c gtf$b net/minecraft/class_9041$class_9043 net/minecraft/client/resources/server/PackReloadConfig$IdAndPath + f Ljava/util/UUID; a comp_2154 id + f Ljava/nio/file/Path; b comp_2155 path + m ()Ljava/util/UUID; a comp_2154 id + m ()Ljava/nio/file/Path; b comp_2155 path + m (Ljava/util/UUID;Ljava/nio/file/Path;)V +c gtg net/minecraft/class_9044 net/minecraft/client/resources/server/ServerPackManager + f Lgtd; a field_47629 downloader + f Lgte; b field_47630 packLoadFeedback + f Lgtf; c field_47631 reloadConfig + f Ljava/lang/Runnable; d field_47632 updateRequest + f Lgtg$c; e field_47633 packPromptStatus + f Ljava/util/List; f field_47634 packs + m ()V a method_55552 popAll + m (Lgtg$e;)V a method_55553 acceptPack + m (Ljava/util/Collection;Lasl$b;)V a method_55554 onDownload + m (Ljava/util/List;Lasl$b;)V a method_55555 method_55555 + m (Ljava/util/UUID;)V a method_55556 popPack + m (Ljava/util/UUID;Lgtg$e;)V a method_55557 pushNewPack + m (Ljava/util/UUID;Ljava/net/URL;Lcom/google/common/hash/HashCode;)V a method_55558 pushPack + m (Ljava/util/UUID;Ljava/nio/file/Path;)V a method_55559 pushLocalPack + m ()V b method_55560 allowServerPacks + m (Lgtg$e;)Z b method_55561 method_55561 + m (Ljava/util/UUID;)V b method_55562 markExistingPacksAsRemoved + m ()V c method_55563 rejectServerPacks + m (Ljava/util/UUID;)Lgtg$e; c method_55564 findPackInfo + m ()V d method_55565 resetPromptStatus + m ()V e method_55566 tick + m ()V f method_55567 registerForUpdate + m ()V g method_55568 cleanupRemovedPacks + m ()Z h method_55569 updateDownloads + m ()V i method_55570 triggerReloadIfNeeded + m (Lgtd;Lgte;Lgtf;Ljava/lang/Runnable;Lgtg$c;)V +c gtg$1 net/minecraft/class_9044$1 net/minecraft/client/resources/server/ServerPackManager$1 + f Ljava/util/List; a field_47635 val$packsToLoad + f Ljava/util/List; b field_47636 val$packsToUnload + f Lgtg; c field_47637 field_47637 + m (Lgtg$e;)Lgtf$b; a method_55571 method_55571 + m (Lgtg;Ljava/util/List;Ljava/util/List;)V +c gtg$a net/minecraft/class_9044$class_9045 net/minecraft/client/resources/server/ServerPackManager$ActivationStatus + f Lgtg$a; a field_47639 INACTIVE + f Lgtg$a; b field_47640 PENDING + f Lgtg$a; c field_47641 ACTIVE + f [Lgtg$a; d field_47642 $VALUES + m ()[Lgtg$a; a method_55572 $values + m (Ljava/lang/String;I)V + m ()V +c gtg$b net/minecraft/class_9044$class_9046 net/minecraft/client/resources/server/ServerPackManager$PackDownloadStatus + f Lgtg$b; a field_47643 REQUESTED + f Lgtg$b; b field_47644 PENDING + f Lgtg$b; c field_47645 DONE + f [Lgtg$b; d field_47646 $VALUES + m ()[Lgtg$b; a method_55573 $values + m (Ljava/lang/String;I)V + m ()V +c gtg$c net/minecraft/class_9044$class_9047 net/minecraft/client/resources/server/ServerPackManager$PackPromptStatus + f Lgtg$c; a field_47647 PENDING + f Lgtg$c; b field_47648 ALLOWED + f Lgtg$c; c field_47649 DECLINED + f [Lgtg$c; d field_47650 $VALUES + m ()[Lgtg$c; a method_55574 $values + m (Ljava/lang/String;I)V + m ()V +c gtg$d net/minecraft/class_9044$class_9048 net/minecraft/client/resources/server/ServerPackManager$RemovalReason + f Lgtg$d; a field_47651 DOWNLOAD_FAILED + f Lgtg$d; b field_47652 ACTIVATION_FAILED + f Lgtg$d; c field_47653 DECLINED + f Lgtg$d; d field_47654 DISCARDED + f Lgtg$d; e field_47655 SERVER_REMOVED + f Lgtg$d; f field_47656 SERVER_REPLACED + f Lgte$a; g field_47657 serverResponse + f [Lgtg$d; h field_47658 $VALUES + m ()[Lgtg$d; a method_55575 $values + m (Ljava/lang/String;ILgte$a;)V + m ()V +c gtg$e net/minecraft/class_9044$class_9049 net/minecraft/client/resources/server/ServerPackManager$ServerPackData + f Ljava/util/UUID; a field_47659 id + f Ljava/net/URL; b field_47660 url + f Lcom/google/common/hash/HashCode; c field_47661 hash + f Ljava/nio/file/Path; d field_47662 path + f Lgtg$d; e field_47663 removalReason + f Lgtg$b; f field_47664 downloadStatus + f Lgtg$a; g field_47665 activationStatus + f Z h field_47666 promptAccepted + m ()Z a method_55576 isRemoved + m (Lgtg$d;)V a method_55577 setRemovalReasonIfNotSet + m (Ljava/util/UUID;Ljava/net/URL;Lcom/google/common/hash/HashCode;)V +c gth net/minecraft/class_9050 net/minecraft/client/resources/server/package-info +c gti net/minecraft/class_1102 net/minecraft/client/resources/sounds/AbstractSoundInstance + f Lgtx; a field_5444 sound + f Lavq; b field_5447 source + f Lakr; c field_5448 location + f F d field_5442 volume + f F e field_5441 pitch + f D f field_5439 x + f D g field_5450 y + f D h field_5449 z + f Z i field_5446 looping + f I j field_5451 delay + f Lgua$a; k field_5440 attenuation + f Z l field_18936 relative + f Layw; m field_38800 random + m (Lavo;Lavq;Layw;)V + m (Lakr;Lavq;Layw;)V +c gtj net/minecraft/class_1101 net/minecraft/client/resources/sounds/AbstractTickableSoundInstance + f Z n field_5438 stopped + m ()V n method_24876 stop + m (Lavo;Lavq;Layw;)V +c gtk net/minecraft/class_1104 net/minecraft/client/resources/sounds/AmbientSoundHandler + m ()V a method_4756 tick +c gtl net/minecraft/class_4508 net/minecraft/client/resources/sounds/BeeAggressiveSoundInstance + m (Lcff;)V +c gtm net/minecraft/class_4509 net/minecraft/client/resources/sounds/BeeFlyingSoundInstance + m (Lcff;)V +c gtn net/minecraft/class_4510 net/minecraft/client/resources/sounds/BeeSoundInstance + f Lcff; n field_20530 bee + f F o field_32991 VOLUME_MIN + f F p field_32992 VOLUME_MAX + f F q field_32993 PITCH_MIN + f Z r field_20531 hasSwitched + m ()Lgtj; o method_22135 getAlternativeSoundInstance + m ()Z p method_22136 shouldSwitchSounds + m ()F u method_22137 getMinPitch + m ()F v method_22138 getMaxPitch + m (Lcff;Lavo;Lavq;)V +c gto net/minecraft/class_4897 net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler + f I a field_32994 LOOP_SOUND_CROSS_FADE_TIME + f F b field_32995 SKY_MOOD_RECOVERY_RATE + f Lgeb; c field_22796 player + f Lgvf; d field_22797 soundManager + f Lddy; e field_22798 biomeManager + f Layw; f field_22799 random + f Lit/unimi/dsi/fastutil/objects/Object2ObjectArrayMap; g field_22800 loopSounds + f Ljava/util/Optional; h field_22801 moodSettings + f Ljava/util/Optional; i field_22802 additionsSettings + f F j field_23189 moodiness + f Lddw; k field_22804 previousBiome + m (Lddt;)V a method_26270 method_26270 + m (Lddu;)V a method_26271 method_26271 + m (Lddw;Ljm;)V a method_25460 method_25460 + m (Ljm;Lddw;Lgto$a;)Lgto$a; a method_25459 method_25459 + m ()F b method_26272 getMoodiness + m (Lgeb;Lgvf;Lddy;)V +c gto$a net/minecraft/class_4897$class_4898 net/minecraft/client/resources/sounds/BiomeAmbientSoundsHandler$LoopSoundInstance + f I n field_22805 fadeDirection + f I o field_22806 fade + m ()V o method_25464 fadeOut + m ()V p method_25465 fadeIn + m (Lavo;)V +c gtp net/minecraft/class_4277 net/minecraft/client/resources/sounds/BubbleColumnAmbientSoundHandler + f Lgeb; a field_19192 player + f Z b field_19193 wasInBubbleColumn + f Z c field_19194 firstTick + m (Ldtc;)Z a method_29714 method_29714 + m (Lgeb;)V +c gtq net/minecraft/class_1103 net/minecraft/client/resources/sounds/ElytraOnPlayerSoundInstance + f I n field_32996 DELAY + f Lgeb; o field_5452 player + f I p field_5453 time + m (Lgeb;)V +c gtr net/minecraft/class_1106 net/minecraft/client/resources/sounds/EntityBoundSoundInstance + f Lbsr; n field_5455 entity + m (Lavo;Lavq;FFLbsr;J)V +c gts net/minecraft/class_1105 net/minecraft/client/resources/sounds/GuardianAttackSoundInstance + f F n field_32997 VOLUME_MIN + f F o field_32998 VOLUME_SCALE + f F p field_32999 PITCH_MIN + f F q field_33000 PITCH_SCALE + f Lcjz; r field_5454 guardian + m (Lcjz;)V +c gtt net/minecraft/class_1108 net/minecraft/client/resources/sounds/MinecartSoundInstance + f F n field_33001 VOLUME_MIN + f F o field_33002 VOLUME_MAX + f F p field_33003 PITCH_MIN + f F q field_33004 PITCH_MAX + f F r field_33005 PITCH_DELTA + f Lcot; s field_5458 minecart + f F t field_5459 pitch + m (Lcot;)V +c gtu net/minecraft/class_1107 net/minecraft/client/resources/sounds/RidingMinecartSoundInstance + f F n field_33006 VOLUME_MIN + f F o field_33007 VOLUME_MAX + f Lcmx; p field_5457 player + f Lcot; q field_5456 minecart + f Z r field_27773 underwaterSound + m (Lcmx;Lcot;Z)V +c gtv net/minecraft/class_1109 net/minecraft/client/resources/sounds/SimpleSoundInstance + m (Lavo;)Lgtv; a method_4759 forMusic + m (Lavo;F)Lgtv; a method_4758 forUI + m (Lavo;FF)Lgtv; a method_4757 forUI + m (Lavo;Layw;DDD)Lgtv; a method_25467 forAmbientMood + m (Lavo;Lexc;)Lgtv; a method_4760 forJukeboxSong + m (Ljm;F)Lgtv; a method_47978 forUI + m (Lavo;)Lgtv; b method_25466 forAmbientAddition + m (Lavo;FF)Lgtv; b method_24877 forLocalAmbience + m (Lavo;Lavq;FFLayw;Ljd;)V + m (Lavo;Lavq;FFLayw;DDD)V + m (Lavo;Lavq;FFLayw;ZILgua$a;DDD)V + m (Lakr;Lavq;FFLayw;ZILgua$a;DDDZ)V +c gtw net/minecraft/class_8191 net/minecraft/client/resources/sounds/SnifferSoundInstance + f F n field_42931 VOLUME + f F o field_42932 PITCH + f Lchv; p field_42933 sniffer + m (Lchv;)V +c gtx net/minecraft/class_1111 net/minecraft/client/resources/sounds/Sound + f Lakk; a field_40575 SOUND_LISTER + f Lakr; b field_5469 location + f Lbpz; c field_5466 volume + f Lbpz; d field_5464 pitch + f I e field_5468 weight + f Lgtx$a; f field_5470 type + f Z g field_5467 stream + f Z h field_5465 preload + f I i field_5463 attenuationDistance + m ()Lakr; a method_4767 getLocation + m (Layw;)Lgtx; a method_4765 getSound + m ()Lakr; b method_4766 getPath + m ()Lbpz; c method_4771 getVolume + m ()Lbpz; d method_4772 getPitch + m ()Lgtx$a; f method_4768 getType + m ()Z g method_4769 shouldStream + m ()Z h method_4764 shouldPreload + m ()I i method_4770 getAttenuationDistance + m (Lakr;Lbpz;Lbpz;ILgtx$a;ZZI)V + m ()V +c gtx$a net/minecraft/class_1111$class_1112 net/minecraft/client/resources/sounds/Sound$Type + f Lgtx$a; a field_5474 FILE + f Lgtx$a; b field_5473 SOUND_EVENT + f Ljava/lang/String; c field_5472 name + f [Lgtx$a; d field_5471 $VALUES + m ()[Lgtx$a; a method_36926 $values + m (Ljava/lang/String;)Lgtx$a; a method_4773 getByName + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gty net/minecraft/class_1110 net/minecraft/client/resources/sounds/SoundEventRegistration + f Ljava/util/List; a field_5460 sounds + f Z b field_5462 replace + f Ljava/lang/String; c field_5461 subtitle + m ()Ljava/util/List; a method_4761 getSounds + m ()Z b method_4763 isReplace + m ()Ljava/lang/String; c method_4762 getSubtitle + m (Ljava/util/List;ZLjava/lang/String;)V +c gtz net/minecraft/class_1115 net/minecraft/client/resources/sounds/SoundEventRegistrationSerializer + f Lbpu; a field_38801 DEFAULT_FLOAT + m (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lgty; a method_4791 deserialize + m (Lcom/google/gson/JsonObject;)Ljava/util/List; a method_4792 getSounds + m (Lcom/google/gson/JsonObject;Lgtx$a;)Lgtx$a; a method_4789 getType + m (Lcom/google/gson/JsonObject;)Lgtx; b method_4790 getSound + m ()V + m ()V +c gua net/minecraft/class_1113 net/minecraft/client/resources/sounds/SoundInstance + m ()Lakr; a method_4775 getLocation + m (Lgvf;)Lgvg; a method_4783 resolve + m ()Lgtx; b method_4776 getSound + m ()Lavq; c method_4774 getSource + m ()Z d method_4786 isLooping + m ()I e method_4780 getDelay + m ()F f method_4781 getVolume + m ()F g method_4782 getPitch + m ()D h method_4784 getX + m ()D i method_4779 getY + m ()D j method_4778 getZ + m ()Lgua$a; k method_4777 getAttenuation + m ()Z l method_4787 isRelative + m ()Z r method_4785 canStartSilent + m ()Z s method_26273 canPlaySound + m ()Layw; t method_43221 createUnseededRandom +c gua$a net/minecraft/class_1113$class_1114 net/minecraft/client/resources/sounds/SoundInstance$Attenuation + f Lgua$a; a field_5478 NONE + f Lgua$a; b field_5476 LINEAR + f [Lgua$a; c field_5477 $VALUES + m ()[Lgua$a; a method_36927 $values + m (Ljava/lang/String;I)V + m ()V +c gub net/minecraft/class_1117 net/minecraft/client/resources/sounds/TickableSoundInstance + m ()Z m method_4793 isStopped + m ()V q method_16896 tick +c guc net/minecraft/class_1116 net/minecraft/client/resources/sounds/UnderwaterAmbientSoundHandler + f F a field_33008 CHANCE_PER_TICK + f F b field_33009 RARE_CHANCE_PER_TICK + f F c field_33010 ULTRA_RARE_CHANCE_PER_TICK + f I d field_33011 MINIMUM_TICK_DELAY + f Lgeb; e field_5481 player + f Lgvf; f field_5479 soundManager + f I g field_5480 tickDelay + m (Lgeb;Lgvf;)V +c gud net/minecraft/class_1118 net/minecraft/client/resources/sounds/UnderwaterAmbientSoundInstances + m ()V +c gud$a net/minecraft/class_1118$class_1119 net/minecraft/client/resources/sounds/UnderwaterAmbientSoundInstances$SubSound + f Lgeb; n field_5482 player + m (Lgeb;Lavo;)V +c gud$b net/minecraft/class_1118$class_1120 net/minecraft/client/resources/sounds/UnderwaterAmbientSoundInstances$UnderwaterAmbientSoundInstance + f I n field_33012 FADE_DURATION + f Lgeb; o field_5483 player + f I p field_5484 fade + m (Lgeb;)V +c gue net/minecraft/class_6270 net/minecraft/client/resources/sounds/package-info +c guf net/minecraft/class_1126 net/minecraft/client/searchtree/FullTextSearchTree + f Lguk; c field_39198 plainTextSearchTree + m (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/List;)V +c gug net/minecraft/class_1121 net/minecraft/client/searchtree/IdSearchTree + f Ljava/util/Comparator; a field_39199 additionOrder + f Lguj; b field_39200 resourceLocationSearchTree + m (Ljava/lang/String;)Ljava/util/List; a method_43791 searchPlainText + m (Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; a method_43792 searchResourceLocation + m (Ljava/util/function/Function;Ljava/util/List;)V +c guh net/minecraft/class_1122 net/minecraft/client/searchtree/IntersectionIterator + f Lcom/google/common/collect/PeekingIterator; a field_5490 firstIterator + f Lcom/google/common/collect/PeekingIterator; b field_5491 secondIterator + f Ljava/util/Comparator; c field_5492 comparator + m (Ljava/util/Iterator;Ljava/util/Iterator;Ljava/util/Comparator;)V +c gui net/minecraft/class_1127 net/minecraft/client/searchtree/MergingUniqueIterator + f Lcom/google/common/collect/PeekingIterator; a field_5499 firstIterator + f Lcom/google/common/collect/PeekingIterator; b field_5500 secondIterator + f Ljava/util/Comparator; c field_5501 comparator + m (Ljava/util/Iterator;Ljava/util/Iterator;Ljava/util/Comparator;)V +c guj net/minecraft/class_7455 net/minecraft/client/searchtree/ResourceLocationSearchTree + m ()Lguj; a method_43799 empty + m (Lgul;Ljava/lang/Object;Lgul;Lakr;)V a method_43800 method_43800 + m (Ljava/lang/String;)Ljava/util/List; a method_43801 searchNamespace + m (Ljava/util/List;Ljava/util/function/Function;)Lguj; a method_43802 create + m (Ljava/lang/String;)Ljava/util/List; b method_43803 searchPath +c guj$1 net/minecraft/class_7455$1 net/minecraft/client/searchtree/ResourceLocationSearchTree$1 + m ()V +c guj$2 net/minecraft/class_7455$2 net/minecraft/client/searchtree/ResourceLocationSearchTree$2 + f Lgul; a field_39201 val$namespaceTree + f Lgul; b field_39202 val$pathTree + m (Lgul;Lgul;)V +c guk net/minecraft/class_1129 net/minecraft/client/searchtree/SearchTree + m (Lgul;Ljava/lang/Object;Ljava/lang/String;)V a method_60376 method_60376 + m (Ljava/lang/String;)Ljava/util/List; a method_60377 method_60377 + m (Ljava/lang/String;)Ljava/util/List; search method_4810 search +c gul net/minecraft/class_1128 net/minecraft/client/searchtree/SuffixArray + f Ljava/util/List; a field_5503 list + f Z b field_5508 DEBUG_COMPARISONS + f Z c field_5507 DEBUG_ARRAY + f Lorg/slf4j/Logger; d field_5510 LOGGER + f I e field_33013 END_OF_TEXT_MARKER + f I f field_33014 END_OF_DATA + f Lit/unimi/dsi/fastutil/ints/IntList; g field_5505 chars + f Lit/unimi/dsi/fastutil/ints/IntList; h field_5509 wordStarts + f Lit/unimi/dsi/fastutil/ints/IntList; i field_5504 suffixToT + f Lit/unimi/dsi/fastutil/ints/IntList; j field_5506 offsets + f I k field_5502 maxStringLength + m ()V a method_4807 generate + m (I)Ljava/lang/String; a method_4808 getString + m (Ljava/lang/Object;Ljava/lang/String;)V a method_4806 add + m (Ljava/lang/String;)Ljava/util/List; a method_4804 search + m (Ljava/lang/String;I)I a method_4805 compare + m ([I[III)I a method_38937 method_38937 + m ([I[I[III)V a method_4803 method_4803 + m ()V b method_4809 print + m ()V + m ()V +c gum net/minecraft/class_6272 net/minecraft/client/searchtree/package-info +c gun net/minecraft/class_1130 net/minecraft/client/server/IntegratedPlayerList + f Lub; h field_5514 playerData + m ()Lguo; b method_4811 getServer + m (Lguo;Ljt;Leri;)V +c guo net/minecraft/class_1132 net/minecraft/client/server/IntegratedServer + f Lorg/slf4j/Logger; k field_5520 LOGGER + f I l field_34964 MIN_SIM_DISTANCE + f Lfgo; m field_5518 minecraft + f Z n field_5524 paused + f I o field_5522 publishedPort + f Ldct; p field_28075 publishedGameType + f Lgur; q field_5519 lanPinger + f Ljava/util/UUID; r field_5521 uuid + f I s field_34965 previousSimulationDistance + m ()Lblr; a method_56881 getTickTimeLogger + m (Lcmz;)V a method_48006 method_48006 + m (Ldcd;)V a method_61079 method_61079 + m (Ljava/util/Optional;)V a method_48007 method_48007 + m (Ljava/util/UUID;)V a method_4817 setUUID + m ()V b method_36439 tickPaused + m (Ldcd;)V b method_61080 method_61080 + m ()V c method_57823 warnOnLowDiskSpace + m ()V d method_61081 method_61081 + m ()V h method_4816 method_4816 + m ()Ljava/lang/String; s method_4815 method_4815 + m (Ljava/lang/Thread;Lfgo;Lerf$c;Latp;Lalp;Lalm;Lare;)V + m ()V +c gup net/minecraft/class_1131 net/minecraft/client/server/LanServer + f Ljava/lang/String; a field_5515 motd + f Ljava/lang/String; b field_5517 address + f J c field_5516 pingTime + m ()Ljava/lang/String; a method_4813 getMotd + m ()Ljava/lang/String; b method_4812 getAddress + m ()V c method_4814 updatePingTime + m (Ljava/lang/String;Ljava/lang/String;)V +c guq net/minecraft/class_1134 net/minecraft/client/server/LanServerDetection + f Ljava/util/concurrent/atomic/AtomicInteger; a field_5531 UNIQUE_THREAD_ID + f Lorg/slf4j/Logger; b field_5532 LOGGER + m ()V + m ()V +c guq$a net/minecraft/class_1134$class_1135 net/minecraft/client/server/LanServerDetection$LanServerDetector + f Lguq$b; a field_5533 serverList + f Ljava/net/InetAddress; b field_5534 pingGroup + f Ljava/net/MulticastSocket; c field_5535 socket + m (Lguq$b;)V +c guq$b net/minecraft/class_1134$class_1136 net/minecraft/client/server/LanServerDetection$LanServerList + f Ljava/util/List; a field_5536 servers + f Z b field_5537 isDirty + m ()Ljava/util/List; a method_45912 takeDirtyServers + m (Ljava/lang/String;Ljava/net/InetAddress;)V a method_4824 addServer + m ()V +c gur net/minecraft/class_1133 net/minecraft/client/server/LanServerPinger + f Ljava/lang/String; a field_33016 MULTICAST_GROUP + f I b field_33017 PING_PORT + f Ljava/util/concurrent/atomic/AtomicInteger; c field_5525 UNIQUE_THREAD_ID + f Lorg/slf4j/Logger; d field_5529 LOGGER + f J e field_33018 PING_INTERVAL + f Ljava/lang/String; f field_5526 motd + f Ljava/net/DatagramSocket; g field_5528 socket + f Z h field_5527 isRunning + f Ljava/lang/String; i field_5530 serverAddress + m (Ljava/lang/String;)Ljava/lang/String; a method_4819 parseMotd + m (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a method_4818 createPingString + m (Ljava/lang/String;)Ljava/lang/String; b method_4820 parseAddress + m (Ljava/lang/String;Ljava/lang/String;)V + m ()V +c gus net/minecraft/class_6273 net/minecraft/client/server/package-info +c gut net/minecraft/class_4234 net/minecraft/client/sounds/AudioStream + m ()Ljavax/sound/sampled/AudioFormat; a method_19719 getFormat + m (I)Ljava/nio/ByteBuffer; a method_19720 read +c guu net/minecraft/class_4235 net/minecraft/client/sounds/ChannelAccess + f Ljava/util/Set; a field_18937 channels + f Lezf; b field_18938 library + f Ljava/util/concurrent/Executor; c field_18939 executor + m ()V a method_19722 scheduleTick + m (Lezf$c;)Ljava/util/concurrent/CompletableFuture; a method_19723 createHandle + m (Lezf$c;Ljava/util/concurrent/CompletableFuture;)V a method_19724 method_19724 + m (Lguu$a;)Leze; a method_19725 method_19725 + m (Ljava/util/function/Consumer;)V a method_19727 executeOnChannels + m ()V b method_19728 clear + m (Ljava/util/function/Consumer;)V b method_19730 method_19730 + m ()V c method_19731 method_19731 + m (Lezf;Ljava/util/concurrent/Executor;)V +c guu$a net/minecraft/class_4235$class_4236 net/minecraft/client/sounds/ChannelAccess$ChannelHandle + f Lguu; a field_18940 field_18940 + f Leze; b field_18941 channel + f Z c field_18942 stopped + m ()Z a method_19732 isStopped + m (Ljava/util/function/Consumer;)V a method_19735 execute + m ()V b method_19736 release + m (Ljava/util/function/Consumer;)V b method_19737 method_19737 + m (Lguu;Leze;)V +c guv net/minecraft/class_4229 net/minecraft/client/sounds/ChunkedSampleByteBuf + f Ljava/util/List; a field_18911 buffers + f I b field_18912 bufferSize + f I c field_18913 byteCount + f Ljava/nio/ByteBuffer; d field_18914 currentBuffer + m ()Ljava/nio/ByteBuffer; a method_19679 get + m ()I b method_59756 size + m (I)V +c guw net/minecraft/class_9672 net/minecraft/client/sounds/FiniteAudioStream + m ()Ljava/nio/ByteBuffer; b method_59757 readAll +c gux net/minecraft/class_9673 net/minecraft/client/sounds/FloatSampleSource + f I a field_51441 EXPECTED_MAX_FRAME_SIZE + m (Lit/unimi/dsi/fastutil/floats/FloatConsumer;)Z a method_59758 readChunk +c guy net/minecraft/class_4228 net/minecraft/client/sounds/JOrbisAudioStream + f I b field_51442 BUFSIZE + f I c field_51443 PAGEOUT_RECAPTURE + f I d field_51444 PAGEOUT_NEED_MORE_DATA + f I e field_51445 PAGEOUT_OK + f I f field_51446 PACKETOUT_ERROR + f I g field_51447 PACKETOUT_NEED_MORE_DATA + f I h field_51448 PACKETOUT_OK + f Lcom/jcraft/jogg/SyncState; i field_51449 syncState + f Lcom/jcraft/jogg/Page; j field_51450 page + f Lcom/jcraft/jogg/StreamState; k field_51451 streamState + f Lcom/jcraft/jogg/Packet; l field_51452 packet + f Lcom/jcraft/jorbis/Info; m field_51453 info + f Lcom/jcraft/jorbis/DspState; n field_51454 dspState + f Lcom/jcraft/jorbis/Block; o field_51455 block + f Ljavax/sound/sampled/AudioFormat; p field_18908 audioFormat + f Ljava/io/InputStream; q field_18909 input + f J r field_51456 samplesWritten + f J s field_51457 totalSamplesInStream + m (Lcom/jcraft/jogg/Page;)Lcom/jcraft/jogg/Packet; a method_59759 readIdentificationPacket + m ([FIJLit/unimi/dsi/fastutil/floats/FloatConsumer;)V a method_59760 copyMono + m ([FI[FIJLit/unimi/dsi/fastutil/floats/FloatConsumer;)V a method_59761 copyStereo + m ([[FI[IJLit/unimi/dsi/fastutil/floats/FloatConsumer;)V a method_59762 copyAnyChannels + m (I)Z b method_59763 isError + m ()Z c method_59764 readToBuffer + m (I)J c method_59765 getSamplesToWrite + m ()Lcom/jcraft/jogg/Page; d method_59766 readPage + m ()Lcom/jcraft/jogg/Packet; e method_59767 readPacket + m (Ljava/io/InputStream;)V +c guz net/minecraft/class_4856 net/minecraft/client/sounds/LoopingAudioStream + f Lguz$a; a field_22443 provider + f Lgut; b field_22444 stream + f Ljava/io/BufferedInputStream; c field_22445 bufferedInputStream + m (Lguz$a;Ljava/io/InputStream;)V +c guz$a net/minecraft/class_4856$class_4857 net/minecraft/client/sounds/LoopingAudioStream$AudioStreamProvider +c guz$b net/minecraft/class_4856$class_4858 net/minecraft/client/sounds/LoopingAudioStream$NoCloseBuffer + m (Ljava/io/InputStream;)V +c gva net/minecraft/class_1142 net/minecraft/client/sounds/MusicManager + f I a field_33019 STARTING_DELAY + f Layw; b field_5571 random + f Lfgo; c field_5575 minecraft + f Lgua; d field_5574 currentMusic + f I e field_5572 nextSongDelay + m ()V a method_18669 tick + m (Lavm;)V a method_4858 startPlaying + m ()V b method_4859 stopPlaying + m (Lavm;)V b method_50025 stopPlaying + m (Lavm;)Z c method_4860 isPlayingMusic + m (Lfgo;)V +c gvb net/minecraft/class_4237 net/minecraft/client/sounds/SoundBufferLibrary + f Lauh; a field_18943 resourceManager + f Ljava/util/Map; b field_18944 cache + m ()V a method_19738 clear + m (I)[Ljava/util/concurrent/CompletableFuture; a method_19739 method_19739 + m (Lakr;)Ljava/util/concurrent/CompletableFuture; a method_19743 getCompleteBuffer + m (Lakr;Z)Ljava/util/concurrent/CompletableFuture; a method_19744 getStream + m (Lgtx;)Ljava/util/concurrent/CompletableFuture; a method_19740 method_19740 + m (Ljava/util/Collection;)Ljava/util/concurrent/CompletableFuture; a method_19741 preload + m (Ljava/util/concurrent/CompletableFuture;)V a method_19742 method_19742 + m (Lakr;)Ljava/util/concurrent/CompletableFuture; b method_19746 method_19746 + m (Lakr;Z)Lgut; b method_19745 method_19745 + m (Lakr;)Lezj; c method_19747 method_19747 + m (Lauh;)V +c gvc net/minecraft/class_1140 net/minecraft/client/sounds/SoundEngine + f Ljava/util/Map; A field_5566 queuedSounds + f Ljava/util/Map; B field_18952 soundDeleteTime + f Ljava/util/List; C field_5558 listeners + f Ljava/util/List; D field_20532 queuedTickableSounds + f Ljava/util/List; E field_5551 preloadQueue + f Ljava/lang/String; a field_33020 MISSING_SOUND + f Ljava/lang/String; b field_34827 OPEN_AL_SOFT_PREFIX + f I c field_34828 OPEN_AL_SOFT_PREFIX_LENGTH + f Lorg/slf4j/Marker; d field_5553 MARKER + f Lorg/slf4j/Logger; e field_5559 LOGGER + f F f field_33021 PITCH_MIN + f F g field_33022 PITCH_MAX + f F h field_33023 VOLUME_MIN + f F i field_33024 VOLUME_MAX + f I j field_33025 MIN_SOURCE_LIFETIME + f Ljava/util/Set; k field_5561 ONLY_WARN_ONCE + f J l field_34966 DEFAULT_DEVICE_CHECK_INTERVAL_MS + f Lgvf; m field_5552 soundManager + f Lfgs; n field_5555 options + f Z o field_5563 loaded + f Lezf; p field_18945 library + f Lezg; q field_18946 listener + f Lgvb; r field_18947 soundBuffers + f Lgvd; s field_18948 executor + f Lguu; t field_18949 channelAccess + f I u field_5550 tickCount + f J v field_34967 lastDeviceCheckTime + f Ljava/util/concurrent/atomic/AtomicReference; w field_35083 devicePoolState + f Ljava/util/Map; x field_18950 instanceToChannel + f Lcom/google/common/collect/Multimap; y field_18951 instanceBySource + f Ljava/util/List; z field_5557 tickingSounds + m ()V a method_4837 reload + m (FFLexc;Leze;)V a method_19748 method_19748 + m (FFLgua$a;FZZLexc;ZLeze;)V a method_19749 method_19749 + m (FLavq;)F a method_43222 calculateVolume + m (FLeze;)V a method_19750 method_19750 + m (Lakr;Lavq;)V a method_4838 stop + m (Lavq;)F a method_4850 getVolume + m (Lavq;F)V a method_4844 updateCategoryVolume + m (Lezh;)V a method_19751 method_19751 + m (Lezj;Leze;)V a method_19752 method_19752 + m (Lffy;)V a method_4840 updateSource + m (Lgtx;)V a method_4851 requestPreload + m (Lgua;)V a method_19753 stop + m (Lgua;I)V a method_4852 playDelayed + m (Lgua;Lguu$a;)V a method_19754 method_19754 + m (Lgub;)V a method_22139 queueTickingSound + m (Lgut;Leze;)V a method_19755 method_19755 + m (Lguu$a;)V a method_19756 method_19756 + m (Lguu$a;Lezj;)V a method_19757 method_19757 + m (Lguu$a;Lgut;)V a method_19758 method_19758 + m (Lgve;)V a method_4855 addEventListener + m (Ljava/lang/String;)V a method_38938 method_38938 + m (Ljava/util/stream/Stream;)V a method_19759 method_19759 + m (Z)V a method_20185 tick + m ()V b method_4856 destroy + m (Lgua;)Z b method_4835 isActive + m (Lgve;)V b method_4847 removeEventListener + m (Ljava/util/stream/Stream;)V b method_19760 method_19760 + m ()V c method_54648 emergencyShutdown + m (Lgua;)V c method_4854 play + m ()V d method_4843 stopAll + m (Lgua;)Z d method_24878 requiresManualLooping + m ()V e method_19761 pause + m (Lgua;)Z e method_24879 shouldLoopManually + m ()V f method_19762 resume + m (Lgua;)Z f method_24880 shouldLoopAutomatically + m ()Ljava/lang/String; g method_20304 getDebugString + m (Lgua;)F g method_4849 calculatePitch + m ()Ljava/util/List; h method_38564 getAvailableSoundDevices + m (Lgua;)F h method_4853 calculateVolume + m ()Lezh; i method_55592 getListenerTransform + m ()V j method_4846 loadLibrary + m ()Z k method_38744 shouldChangeDevice + m ()V l method_4857 tickNonPaused + m (Lgvf;Lfgs;Lauh;)V + m ()V +c gvc$a net/minecraft/class_1140$class_6665 net/minecraft/client/sounds/SoundEngine$DeviceCheckState + f Lgvc$a; a field_35084 ONGOING + f Lgvc$a; b field_35085 CHANGE_DETECTED + f Lgvc$a; c field_35086 NO_CHANGE + f [Lgvc$a; d field_35087 $VALUES + m ()[Lgvc$a; a method_38939 $values + m (Ljava/lang/String;I)V + m ()V +c gvd net/minecraft/class_4238 net/minecraft/client/sounds/SoundEngineExecutor + f Ljava/lang/Thread; a field_18953 thread + f Z b field_18954 shutdown + m ()V a method_19763 flush + m ()Ljava/lang/Thread; b method_19764 createThread + m ()V c method_19765 run + m ()Z d method_19766 method_19766 + m ()V +c gve net/minecraft/class_1145 net/minecraft/client/sounds/SoundEventListener + m (Lgua;Lgvg;F)V a method_4884 onPlaySound +c gvf net/minecraft/class_1144 net/minecraft/client/sounds/SoundManager + f Lakr; a field_52173 EMPTY_SOUND_LOCATION + f Lgtx; b field_5592 EMPTY_SOUND + f Lakr; c field_42934 INTENTIONALLY_EMPTY_SOUND_LOCATION + f Lgvg; d field_42935 INTENTIONALLY_EMPTY_SOUND_EVENT + f Lgtx; e field_42936 INTENTIONALLY_EMPTY_SOUND + f Lorg/slf4j/Logger; f field_5593 LOGGER + f Ljava/lang/String; g field_33026 SOUNDS_PATH + f Lcom/google/gson/Gson; h field_5594 GSON + f Lcom/google/gson/reflect/TypeToken; i field_5591 SOUND_EVENT_REGISTRATION_TYPE + f Ljava/util/Map; j field_5588 registry + f Lgvc; k field_5590 soundEngine + f Ljava/util/Map; l field_40576 soundCache + m ()Ljava/util/List; a method_38565 getAvailableSoundDevices + m (Lakr;)Lgvg; a method_4869 getSoundEvent + m (Lakr;Lavq;)V a method_4875 stop + m (Laue;Lbnf;)Lgvf$a; a method_18180 prepare + m (Lavq;F)V a method_4865 updateSourceVolume + m (Lffy;)V a method_4876 updateSource + m (Lgtx;Lakr;Lauh;)Z a method_4868 validateSoundResource + m (Lgua;)V a method_4873 play + m (Lgua;I)V a method_4872 playDelayed + m (Lgub;)V a method_22140 queueTickingSound + m (Lgve;)V a method_4878 addListener + m (Lgvf$a;Laue;Lbnf;)V a method_18182 apply + m (Z)V a method_18670 tick + m ()Lezh; b method_55593 getListenerTransform + m (Lgua;)V b method_4870 stop + m (Lgve;)V b method_4866 removeListener + m (Lgua;)Z c method_4877 isActive + m ()Ljava/util/Collection; d method_4864 getAvailableSounds + m ()V e method_4879 pause + m ()V f method_4881 stop + m ()V g method_4882 destroy + m ()V h method_54649 emergencyShutdown + m ()V i method_4880 resume + m ()Ljava/lang/String; j method_20305 getDebugString + m ()V k method_38566 reload + m (Lfgs;)V + m ()V +c gvf$1 net/minecraft/class_1144$1 net/minecraft/client/sounds/SoundManager$1 + m ()V +c gvf$2 net/minecraft/class_1144$2 net/minecraft/client/sounds/SoundManager$2 + f [I a field_5598 $SwitchMap$net$minecraft$client$resources$sounds$Sound$Type + m ()V +c gvf$a net/minecraft/class_1144$class_4009 net/minecraft/client/sounds/SoundManager$Preparations + f Ljava/util/Map; a field_17908 registry + f Ljava/util/Map; b field_40577 soundCache + m (Lakr;Lgty;)V a method_18187 handleRegistration + m (Laue;)V a method_45913 listResources + m (Ljava/util/Map;Ljava/util/Map;Lgvc;)V a method_18186 apply + m ()V +c gvf$a$1 net/minecraft/class_1144$class_4009$1 net/minecraft/client/sounds/SoundManager$Preparations$1 + f Lakr; a field_5596 val$soundLocation + f Lgtx; b field_5595 val$sound + f Lgvf$a; c field_5597 field_5597 + m (Layw;)Lgtx; a method_4883 getSound + m (Lgvf$a;Lakr;Lgtx;)V +c gvg net/minecraft/class_1146 net/minecraft/client/sounds/WeighedSoundEvents + f Ljava/util/List; a field_5600 list + f Lwz; b field_5599 subtitle + m ()Lwz; a method_4886 getSubtitle + m (Layw;)Lgtx; a method_4887 getSound + m (Lgvh;)V a method_4885 addSound + m (Lakr;Ljava/lang/String;)V +c gvh net/minecraft/class_1148 net/minecraft/client/sounds/Weighted + m (Lgvc;)V a method_18188 preloadIfRequired + m (Layw;)Ljava/lang/Object; b method_4893 getSound + m ()I e method_4894 getWeight +c gvi net/minecraft/class_6274 net/minecraft/client/sounds/package-info +c gvj net/minecraft/class_6628 net/minecraft/client/telemetry/ClientTelemetryManager + f Ljava/util/concurrent/atomic/AtomicInteger; a field_34948 THREAD_COUNT + f Ljava/util/concurrent/Executor; b field_34949 EXECUTOR + f Lfgo; c field_47702 minecraft + f Lcom/mojang/authlib/minecraft/UserApiService; d field_41426 userApiService + f Lgvr; e field_41427 deviceSessionProperties + f Ljava/nio/file/Path; f field_41428 logDirectory + f Ljava/util/concurrent/CompletableFuture; g field_41429 logManager + f Ljava/util/function/Supplier; h field_44831 outsideSessionSender + m ()Lgvn; a method_51796 getOutsideSessionSender + m (Lgvk;Lcom/mojang/authlib/minecraft/TelemetrySession;Ljava/util/Optional;)V a method_47702 method_47702 + m (Lgvr$a;Ljava/lang/String;)V a method_47703 method_47703 + m (Ljava/lang/Runnable;)Ljava/lang/Thread; a method_38731 method_38731 + m (Ljava/util/Optional;)V a method_47704 method_47704 + m (Ljava/util/concurrent/CompletableFuture;Lcom/mojang/authlib/minecraft/TelemetrySession;Lgvo;Ljava/util/function/Consumer;)V a method_47705 method_47705 + m (ZLjava/time/Duration;Ljava/lang/String;)Lgvs; a method_47706 createWorldSessionManager + m ()Ljava/nio/file/Path; b method_47701 getLogDirectory + m (Lgvr$a;Ljava/lang/String;)V b method_47708 method_47708 + m (Ljava/util/Optional;)Ljava/util/concurrent/CompletionStage; b method_47709 method_47709 + m ()Lgvn; c method_47707 createEventSender + m ()Ljava/util/concurrent/CompletableFuture; d method_47710 method_47710 + m (Lfgo;Lcom/mojang/authlib/minecraft/UserApiService;Lfhb;)V + m ()V +c gvk net/minecraft/class_7962 net/minecraft/client/telemetry/TelemetryEventInstance + f Lcom/mojang/serialization/Codec; a field_41430 CODEC + f Lgvo; b comp_1169 type + f Lgvr; c comp_1170 properties + m ()Lgvo; a comp_1169 type + m (Lcom/mojang/authlib/minecraft/TelemetrySession;)Lcom/mojang/authlib/minecraft/TelemetryEvent; a method_47711 export + m (Lgvo;Lgvq;)V a method_47712 method_47712 + m ()Lgvr; b comp_1170 properties + m (Lgvo;Lgvr;)V + m ()V +c gvl net/minecraft/class_7963 net/minecraft/client/telemetry/TelemetryEventLog + f Lorg/slf4j/Logger; a field_41431 LOGGER + f Lbly; b field_41432 log + f Lbpk; c field_41433 mailbox + m ()Lgvm; a method_47713 logger + m (Lgvk;)V a method_47714 method_47714 + m ()V b method_47715 method_47715 + m (Lgvk;)V b method_47716 method_47716 + m (Ljava/nio/channels/FileChannel;Ljava/util/concurrent/Executor;)V + m ()V +c gvm net/minecraft/class_7964 net/minecraft/client/telemetry/TelemetryEventLogger +c gvn net/minecraft/class_7965 net/minecraft/client/telemetry/TelemetryEventSender + f Lgvn; a field_41434 DISABLED + m (Lgvo;Ljava/util/function/Consumer;)V a method_47717 method_47717 + m (Ljava/util/function/Consumer;Lgvo;Ljava/util/function/Consumer;)V a method_47718 method_47718 + m (Ljava/util/function/Consumer;Ljava/util/function/Consumer;Lgvr$a;)V a method_47719 method_47719 + m ()V +c gvo net/minecraft/class_7966 net/minecraft/client/telemetry/TelemetryEventType + f Lcom/mojang/serialization/Codec; a field_41435 CODEC + f Lgvo; b field_41436 WORLD_LOADED + f Lgvo; c field_41437 PERFORMANCE_METRICS + f Lgvo; d field_41438 WORLD_LOAD_TIMES + f Lgvo; e field_41439 WORLD_UNLOADED + f Lgvo; f field_44832 ADVANCEMENT_MADE + f Lgvo; g field_44833 GAME_LOAD_TIMES + f Ljava/util/Map; h field_41440 REGISTRY + f Ljava/util/List; i field_41441 GLOBAL_PROPERTIES + f Ljava/util/List; j field_41442 WORLD_SESSION_PROPERTIES + f Ljava/lang/String; k field_41443 id + f Ljava/lang/String; l field_41444 exportKey + f Ljava/util/List; m field_41445 properties + f Z n field_41446 isOptIn + f Lcom/mojang/serialization/MapCodec; o field_41447 codec + m ()Ljava/lang/String; a method_47720 id + m (Lcom/mojang/authlib/minecraft/TelemetrySession;Lgvr;)Lcom/mojang/authlib/minecraft/TelemetryEvent; a method_47721 export + m (Lgvq;)Z a method_47722 contains + m (Lgvr;)Lgvk; a method_47723 method_47723 + m (Ljava/lang/String;)Lxn; a method_47724 makeTranslation + m (Ljava/lang/String;Ljava/lang/String;)Lgvo$a; a method_47725 builder + m ()Ljava/util/List; b method_47726 properties + m (Ljava/lang/String;)Lcom/mojang/serialization/DataResult; b method_47727 method_47727 + m ()Lcom/mojang/serialization/MapCodec; c method_47728 codec + m (Ljava/lang/String;)Ljava/lang/String; c method_49636 method_49636 + m ()Z d method_47729 isOptIn + m ()Lxn; e method_47730 title + m ()Lxn; f method_47731 description + m ()Ljava/util/List; g method_47732 values + m (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Z)V + m ()V +c gvo$a net/minecraft/class_7966$class_7967 net/minecraft/client/telemetry/TelemetryEventType$Builder + f Ljava/lang/String; a field_41448 id + f Ljava/lang/String; b field_41449 exportKey + f Ljava/util/List; c field_41450 properties + f Z d field_41451 isOptIn + m ()Lgvo$a; a method_47733 optIn + m (Lgvq;)Lgvo$a; a method_47734 define + m (Ljava/util/List;)Lgvo$a; a method_47735 defineAll + m ()Lgvo; b method_47736 register + m (Ljava/lang/String;Ljava/lang/String;)V +c gvp net/minecraft/class_7968 net/minecraft/client/telemetry/TelemetryLogManager + f Lorg/slf4j/Logger; a field_41452 LOGGER + f Ljava/lang/String; b field_41453 RAW_EXTENSION + f I c field_41454 EXPIRY_DAYS + f Lblx; d field_41455 directory + f Ljava/util/concurrent/CompletableFuture; e field_41456 sessionLog + m ()Ljava/util/concurrent/CompletableFuture; a method_47737 openLogger + m (Ljava/nio/file/Path;)Ljava/util/concurrent/CompletableFuture; a method_47738 open + m (Ljava/util/Optional;)V a method_47739 method_47739 + m ()Ljava/util/Optional; b method_47740 method_47740 + m (Ljava/nio/file/Path;)Ljava/util/Optional; b method_47741 method_47741 + m (Ljava/util/Optional;)Ljava/util/Optional; b method_47742 method_47742 + m (Lblx;)V + m ()V +c gvq net/minecraft/class_7969 net/minecraft/client/telemetry/TelemetryProperty + f Lgvq; A field_44834 LOAD_TIME_PRE_WINDOW_MS + f Lgvq; B field_44835 LOAD_TIME_BOOTSTRAP_MS + f Lgvq; C field_44836 LOAD_TIME_LOADING_OVERLAY_MS + f Lgvq; D field_44837 ADVANCEMENT_ID + f Lgvq; E field_44838 ADVANCEMENT_GAME_TIME + f Ljava/lang/String; F comp_1171 id + f Ljava/lang/String; G comp_1172 exportKey + f Lcom/mojang/serialization/Codec; H comp_1173 codec + f Lgvq$a; I comp_1174 exporter + f Ljava/time/format/DateTimeFormatter; J field_41457 TIMESTAMP_FORMATTER + f Lgvq; a field_41458 USER_ID + f Lgvq; b field_41459 CLIENT_ID + f Lgvq; c field_41460 MINECRAFT_SESSION_ID + f Lgvq; d field_41461 GAME_VERSION + f Lgvq; e field_41462 OPERATING_SYSTEM + f Lgvq; f field_41463 PLATFORM + f Lgvq; g field_41464 CLIENT_MODDED + f Lgvq; h field_44839 LAUNCHER_NAME + f Lgvq; i field_41465 WORLD_SESSION_ID + f Lgvq; j field_41466 SERVER_MODDED + f Lgvq; k field_41467 SERVER_TYPE + f Lgvq; l field_41468 OPT_IN + f Lgvq; m field_41469 EVENT_TIMESTAMP_UTC + f Lgvq; n field_41470 GAME_MODE + f Lgvq; o field_44840 REALMS_MAP_CONTENT + f Lgvq; p field_41471 SECONDS_SINCE_LOAD + f Lgvq; q field_41472 TICKS_SINCE_LOAD + f Lgvq; r field_41473 FRAME_RATE_SAMPLES + f Lgvq; s field_41474 RENDER_TIME_SAMPLES + f Lgvq; t field_41475 USED_MEMORY_SAMPLES + f Lgvq; u field_41476 NUMBER_OF_SAMPLES + f Lgvq; v field_41477 RENDER_DISTANCE + f Lgvq; w field_41478 DEDICATED_MEMORY_KB + f Lgvq; x field_41479 WORLD_LOAD_TIME_MS + f Lgvq; y field_41480 NEW_WORLD + f Lgvq; z field_44841 LOAD_TIME_TOTAL_TIME_MS + m ()Lxn; a method_47743 title + m (Lcom/mojang/authlib/minecraft/TelemetryPropertyContainer;Ljava/lang/String;Lgvq$b;)V a method_47744 method_47744 + m (Lcom/mojang/authlib/minecraft/TelemetryPropertyContainer;Ljava/lang/String;Lgvq$c;)V a method_47745 method_47745 + m (Lcom/mojang/authlib/minecraft/TelemetryPropertyContainer;Ljava/lang/String;Lgvu$a;)V a method_51797 method_51797 + m (Lcom/mojang/authlib/minecraft/TelemetryPropertyContainer;Ljava/lang/String;Lit/unimi/dsi/fastutil/longs/LongList;)V a method_47746 method_47746 + m (Lcom/mojang/authlib/minecraft/TelemetryPropertyContainer;Ljava/lang/String;Ljava/time/Instant;)V a method_47747 method_47747 + m (Lcom/mojang/authlib/minecraft/TelemetryPropertyContainer;Ljava/lang/String;Ljava/util/UUID;)V a method_47748 method_47748 + m (Lgvr;Lcom/mojang/authlib/minecraft/TelemetryPropertyContainer;)V a method_47749 export + m (Ljava/lang/String;Ljava/lang/String;)Lgvq; a method_47750 bool + m (Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Codec;Lgvq$a;)Lgvq; a method_47751 create + m ()Ljava/lang/String; b comp_1171 id + m (Ljava/lang/String;Ljava/lang/String;)Lgvq; b method_47752 string + m ()Ljava/lang/String; c comp_1172 exportKey + m (Ljava/lang/String;Ljava/lang/String;)Lgvq; c method_47753 integer + m ()Lcom/mojang/serialization/Codec; d comp_1173 codec + m (Ljava/lang/String;Ljava/lang/String;)Lgvq; d method_51798 makeLong + m ()Lgvq$a; e comp_1174 exporter + m (Ljava/lang/String;Ljava/lang/String;)Lgvq; e method_47754 uuid + m (Ljava/lang/String;Ljava/lang/String;)Lgvq; f method_51799 gameLoadMeasurement + m (Ljava/lang/String;Ljava/lang/String;)Lgvq; g method_47755 longSamples + m (Ljava/lang/String;Ljava/lang/String;Lcom/mojang/serialization/Codec;Lgvq$a;)V + m ()V +c gvq$a net/minecraft/class_7969$class_7970 net/minecraft/client/telemetry/TelemetryProperty$Exporter +c gvq$b net/minecraft/class_7969$class_7971 net/minecraft/client/telemetry/TelemetryProperty$GameMode + f Lgvq$b; a field_41481 SURVIVAL + f Lgvq$b; b field_41482 CREATIVE + f Lgvq$b; c field_41483 ADVENTURE + f Lgvq$b; d field_41484 SPECTATOR + f Lgvq$b; e field_41485 HARDCORE + f Lcom/mojang/serialization/Codec; f field_41486 CODEC + f Ljava/lang/String; g field_41487 key + f I h field_41488 id + f [Lgvq$b; i field_41489 $VALUES + m ()I a method_47756 id + m ()[Lgvq$b; b method_47757 $values + m (Ljava/lang/String;ILjava/lang/String;I)V + m ()V +c gvq$c net/minecraft/class_7969$class_7972 net/minecraft/client/telemetry/TelemetryProperty$ServerType + f Lgvq$c; a field_41490 REALM + f Lgvq$c; b field_41491 LOCAL + f Lgvq$c; c field_41492 OTHER + f Lcom/mojang/serialization/Codec; d field_41493 CODEC + f Ljava/lang/String; e field_41494 key + f [Lgvq$c; f field_41495 $VALUES + m ()[Lgvq$c; a method_47758 $values + m (Ljava/lang/String;ILjava/lang/String;)V + m ()V +c gvr net/minecraft/class_7973 net/minecraft/client/telemetry/TelemetryPropertyMap + f Ljava/util/Map; a field_41496 entries + m ()Lgvr$a; a method_47759 builder + m (Lgvq;)Ljava/lang/Object; a method_47760 get + m (Ljava/util/List;)Lcom/mojang/serialization/MapCodec; a method_47761 createCodec + m ()Ljava/util/Set; b method_47762 propertySet + m (Ljava/util/Map;)V +c gvr$1 net/minecraft/class_7973$1 net/minecraft/client/telemetry/TelemetryPropertyMap$1 + f Ljava/util/List; a field_41497 val$properties + m (Lcom/mojang/serialization/DataResult;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/MapLike;Lgvq;)Lcom/mojang/serialization/DataResult; a method_47763 decodeProperty + m (Lgvq;Lgvr$a;Ljava/lang/Object;)Lgvr$a; a method_47764 method_47764 + m (Lgvr;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/RecordBuilder;)Lcom/mojang/serialization/RecordBuilder; a method_47765 encode + m (Lgvr;Lcom/mojang/serialization/RecordBuilder;Lgvq;)Lcom/mojang/serialization/RecordBuilder; a method_47766 encodeProperty + m (Ljava/util/List;)V +c gvr$a net/minecraft/class_7973$class_7974 net/minecraft/client/telemetry/TelemetryPropertyMap$Builder + f Ljava/util/Map; a field_41498 entries + m ()Lgvr; a method_47767 build + m (Lgvq;Ljava/lang/Object;)Lgvr$a; a method_47768 put + m (Lgvr;)Lgvr$a; a method_47769 putAll + m (Lgvq;Ljava/lang/Object;)Lgvr$a; b method_51800 putIfNotNull + m ()V +c gvs net/minecraft/class_7975 net/minecraft/client/telemetry/WorldSessionTelemetryManager + f Ljava/util/UUID; a field_41499 worldSessionId + f Lgvn; b field_41500 eventSender + f Lgvw; c field_41501 worldLoadEvent + f Lgvy; d field_41502 worldUnloadEvent + f Lgvv; e field_41503 performanceMetricsEvent + f Lgvx; f field_41504 worldLoadTimesEvent + m ()V a method_47770 tick + m (J)V a method_47771 setTime + m (Lakr;JLgvr$a;)V a method_51801 method_51801 + m (Ldct;Z)V a method_47772 onPlayerInfoReceived + m (Ldcw;Lag;)V a method_51802 onAdvancementDone + m (Lgvr$a;)V a method_47773 method_47773 + m (Ljava/lang/String;)V a method_47774 onServerBrandReceived + m ()V b method_47775 worldSessionStart + m ()V c method_47776 onDisconnect + m (Lgvn;ZLjava/time/Duration;Ljava/lang/String;)V +c gvt net/minecraft/class_7976 net/minecraft/client/telemetry/events/AggregatedTelemetryEvent + f I a field_41505 SAMPLE_INTERVAL_MS + f I b field_41506 SAMPLES_PER_EVENT + f I c field_41507 sampleCount + f Z d field_41508 ticking + f Ljava/time/Instant; e field_41509 lastSampleTime + m ()V a method_47777 start + m (Lgvn;)V a method_47778 tick + m ()Z b method_47779 shouldTakeSample + m (Lgvn;)V b method_47784 sendEvent + m ()Z c method_47780 shouldSentEvent + m ()V d method_47781 stop + m ()I e method_47782 getSampleCount + m ()V f method_47783 takeSample + m ()V +c gvu net/minecraft/class_8561 net/minecraft/client/telemetry/events/GameLoadTimesEvent + f Lgvu; a field_44842 INSTANCE + f Lorg/slf4j/Logger; b field_44843 LOGGER + f Lcom/google/common/base/Ticker; c field_44844 timeSource + f Ljava/util/Map; d field_44845 measurements + f Ljava/util/OptionalLong; e field_44846 bootstrapTime + m (J)V a method_51803 setBootstrapTime + m (Lcom/google/common/base/Stopwatch;Lgvq;)Lcom/google/common/base/Stopwatch; a method_51804 method_51804 + m (Lgvn;)V a method_51805 send + m (Lgvq;)V a method_51806 beginStep + m (Lgvq;Lcom/google/common/base/Stopwatch;)V a method_51807 beginStep + m (Lgvq;Ljava/util/function/Function;)V a method_51808 beginStep + m (Lgvr$a;)V a method_51809 method_51809 + m (Lgvr$a;J)V a method_51810 method_51810 + m (Lgvr$a;Lgvq;Lcom/google/common/base/Stopwatch;)V a method_51811 method_51811 + m (Lgvq;)V b method_51812 endStep + m (Lgvq;)Lcom/google/common/base/Stopwatch; c method_51813 method_51813 + m (Lcom/google/common/base/Ticker;)V + m ()V +c gvu$a net/minecraft/class_8561$class_8562 net/minecraft/client/telemetry/events/GameLoadTimesEvent$Measurement + f Lcom/mojang/serialization/Codec; a field_44847 CODEC + f I b comp_1531 millis + m ()I a comp_1531 millis + m (Lgvu$a;)Ljava/lang/Integer; a method_51814 method_51814 + m (I)V + m ()V +c gvv net/minecraft/class_7977 net/minecraft/client/telemetry/events/PerformanceMetricsEvent + f J a field_41510 DEDICATED_MEMORY_KB + f Lit/unimi/dsi/fastutil/longs/LongList; b field_41511 fpsSamples + f Lit/unimi/dsi/fastutil/longs/LongList; c field_41512 frameTimeSamples + f Lit/unimi/dsi/fastutil/longs/LongList; d field_41513 usedMemorySamples + m (J)J a method_47785 toKilobytes + m (Lgvr$a;)V a method_47979 method_47979 + m ()V g method_47788 resetValues + m ()V h method_47789 takeUsedMemorySample + m ()V + m ()V +c gvw net/minecraft/class_7979 net/minecraft/client/telemetry/events/WorldLoadEvent + f Z a field_41516 eventSent + f Lgvq$b; b field_41517 gameMode + f Ljava/lang/String; c field_41518 serverBrand + f Ljava/lang/String; d field_44848 minigameName + m ()Lgvq$c; a method_47794 getServerType + m (Ldct;Z)V a method_47791 setGameMode + m (Lgvn;)Z a method_47980 send + m (Lgvr$a;)V a method_47792 addProperties + m (Ljava/lang/String;)V a method_47793 setServerBrand + m (Lgvr$a;)V b method_47795 method_47795 + m (Ljava/lang/String;)V +c gvw$1 net/minecraft/class_7979$1 net/minecraft/client/telemetry/events/WorldLoadEvent$1 + f [I a field_34955 $SwitchMap$net$minecraft$world$level$GameType + m ()V +c gvx net/minecraft/class_7981 net/minecraft/client/telemetry/events/WorldLoadTimesEvent + f Z a field_41519 newWorld + f Ljava/time/Duration; b field_41520 worldLoadDuration + m (Lgvn;)V a method_47981 send + m (Lgvr$a;)V a method_47796 method_47796 + m (ZLjava/time/Duration;)V +c gvy net/minecraft/class_7982 net/minecraft/client/telemetry/events/WorldUnloadEvent + f I a field_41712 NOT_TRACKING_TIME + f Ljava/util/Optional; b field_41521 worldLoadedTime + f J c field_41522 totalTicks + f J d field_41523 lastGameTime + m ()V a method_47982 onPlayerInfoReceived + m (J)V a method_47798 setTime + m (Lgvn;)V a method_47786 send + m (Lgvn;Ljava/time/Instant;)V a method_47799 method_47799 + m (Ljava/time/Instant;)I a method_47800 getTimeInSecondsSinceLoad + m (Ljava/time/Instant;Lgvr$a;)V a method_47801 method_47801 + m ()V +c gvz net/minecraft/class_7983 net/minecraft/client/telemetry/events/package-info +c gwa net/minecraft/class_7984 net/minecraft/client/telemetry/package-info +c gwb net/minecraft/class_5829 net/minecraft/client/tutorial/BundleTutorial + f Lgwi; a field_28798 tutorial + f Lfgs; b field_28799 options + f Lfkx; c field_28800 toast + m ()V a method_33701 showToast + m (Lcuq;Lcuq;Lcqd;)V a method_33702 onInventoryAction + m ()V b method_33703 clearToast + m (Lgwi;Lfgs;)V +c gwc net/minecraft/class_1150 net/minecraft/client/tutorial/CompletedTutorialStepInstance + m (Lgwi;)V +c gwd net/minecraft/class_1149 net/minecraft/client/tutorial/CraftPlanksTutorialStep + f I a field_33027 HINT_DELAY + f Lwz; b field_5611 CRAFT_TITLE + f Lwz; c field_5612 CRAFT_DESCRIPTION + f Lgwi; d field_5608 tutorial + f Lfkx; e field_5610 toast + f I f field_5609 timeWaiting + m (Lgeb;Lawu;)Z a method_4895 hasCraftedPlanksPreviously + m (Lgwi;)V + m ()V +c gwe net/minecraft/class_1152 net/minecraft/client/tutorial/FindTreeTutorialStepInstance + f I a field_33028 HINT_DELAY + f Lwz; b field_5631 TITLE + f Lwz; c field_5628 DESCRIPTION + f Lgwi; d field_5630 tutorial + f Lfkx; e field_5633 toast + f I f field_5629 timeWaiting + m (Lgeb;)Z a method_4896 hasPunchedTreesPreviously + m (Lcuq;)Z b method_43340 method_43340 + m (Lgeb;)Z b method_43341 hasCollectedTreeItems + m (Lgwi;)V + m ()V +c gwf net/minecraft/class_1151 net/minecraft/client/tutorial/MovementTutorialStepInstance + f I a field_33029 MINIMUM_TIME_MOVED + f I b field_33030 MINIMUM_TIME_LOOKED + f I c field_33031 MOVE_HINT_DELAY + f I d field_33032 LOOK_HINT_DELAY + f I e field_33033 INCOMPLETE + f Lwz; f field_5624 MOVE_TITLE + f Lwz; g field_5617 MOVE_DESCRIPTION + f Lwz; h field_5621 LOOK_TITLE + f Lwz; i field_5614 LOOK_DESCRIPTION + f Lgwi; j field_5618 tutorial + f Lfkx; k field_5622 moveToast + f Lfkx; l field_5623 lookToast + f I m field_5616 timeWaiting + f I n field_5615 timeMoved + f I o field_5627 timeLooked + f Z p field_5620 moved + f Z q field_5619 turned + f I r field_5626 moveCompleted + f I s field_5625 lookCompleted + m (Lgwi;)V + m ()V +c gwg net/minecraft/class_1154 net/minecraft/client/tutorial/OpenInventoryTutorialStep + f I a field_33034 HINT_DELAY + f Lwz; b field_5643 TITLE + f Lwz; c field_5644 DESCRIPTION + f Lgwi; d field_5640 tutorial + f Lfkx; e field_5642 toast + f I f field_5641 timeWaiting + m (Lgwi;)V + m ()V +c gwh net/minecraft/class_1153 net/minecraft/client/tutorial/PunchTreeTutorialStepInstance + f I a field_33035 HINT_DELAY + f Lwz; b field_5638 TITLE + f Lwz; c field_5639 DESCRIPTION + f Lgwi; d field_5634 tutorial + f Lfkx; e field_5637 toast + f I f field_5636 timeWaiting + f I g field_5635 resetCount + m (Lgwi;)V + m ()V +c gwi net/minecraft/class_1156 net/minecraft/client/tutorial/Tutorial + f Lfgo; a field_5645 minecraft + f Lgwj; b field_5646 instance + f Ljava/util/List; c field_26893 timedToasts + f Lgwb; d field_28801 bundleTutorial + m ()V a method_4912 onOpenInventory + m (DD)V a method_4908 onMouse + m (Lcuq;)V a method_4906 onGetItem + m (Lcuq;Lcuq;Lcqd;)V a method_33704 onInventoryAction + m (Lfkx;)V a method_31364 removeTimedToast + m (Lfkx;I)V a method_31365 addTimedToast + m (Lfkx;Lgwi$a;)Z a method_31366 method_31366 + m (Lfzf;Lexa;)V a method_4911 onLookAt + m (Lfzf;Ljd;Ldtc;F)V a method_4907 onDestroyBlock + m (Lgdz;)V a method_4909 onInput + m (Lgwk;)V a method_4910 setStep + m (Ljava/lang/String;)Lwz; a method_4913 key + m ()V b method_4915 stop + m ()V c method_4916 start + m ()V d method_4917 tick + m ()Lfgo; e method_4914 getMinecraft + m ()Z f method_4905 isSurvival + m (Lfgo;Lfgs;)V +c gwi$a net/minecraft/class_1156$class_5524 net/minecraft/client/tutorial/Tutorial$TimedToast + f Lfkx; a field_26894 toast + f I b field_26895 durationTicks + f I c field_26896 progress + m ()Z a method_31368 updateProgress + m (Lfkx;I)V +c gwj net/minecraft/class_1155 net/minecraft/client/tutorial/TutorialStepInstance + m ()V a method_4899 tick + m (DD)V a method_4901 onMouse + m (Lcuq;)V a method_4897 onGetItem + m (Lfzf;Lexa;)V a method_4898 onLookAt + m (Lfzf;Ljd;Ldtc;F)V a method_4900 onDestroyBlock + m (Lgdz;)V a method_4903 onInput + m ()V b method_4902 clear + m ()V c method_4904 onOpenInventory +c gwk net/minecraft/class_1157 net/minecraft/client/tutorial/TutorialSteps + f Lgwk; a field_5650 MOVEMENT + f Lgwk; b field_5648 FIND_TREE + f Lgwk; c field_5649 PUNCH_TREE + f Lgwk; d field_5652 OPEN_INVENTORY + f Lgwk; e field_5655 CRAFT_PLANKS + f Lgwk; f field_5653 NONE + f Ljava/lang/String; g field_5651 name + f Ljava/util/function/Function; h field_5647 constructor + f [Lgwk; i field_5654 $VALUES + m ()Ljava/lang/String; a method_4920 getName + m (Lgwi;)Lgwj; a method_4918 create + m (Ljava/lang/String;)Lgwk; a method_4919 getByName + m ()[Lgwk; b method_36929 $values + m (Ljava/lang/String;ILjava/lang/String;Ljava/util/function/Function;)V + m ()V +c gwl net/minecraft/class_6275 net/minecraft/client/tutorial/package-info +c gwm net/minecraft/class_4899 net/minecraft/realms/DisconnectedRealmsScreen + f I B field_22811 textHeight + f Lwz; a field_22808 reason + f Lfjf; b field_22809 message + f Lfod; c field_22810 parent + m (Lfim;)V a method_25468 method_25468 + m (Lfod;Lwz;Lwz;)V +c gwn net/minecraft/class_4902 net/minecraft/realms/RealmsConnect + f Lorg/slf4j/Logger; a field_22814 LOGGER + f Lfod; b field_22815 onlineScreen + f Z c field_22816 aborted + f Lvt; d field_22817 connection + m ()V a method_25477 abort + m (Lfcp;Lgax;)V a method_25480 connect + m ()V b method_25481 tick + m (Lfod;)V + m ()V +c gwn$1 net/minecraft/class_4902$1 net/minecraft/realms/RealmsConnect$1 + f Ljava/lang/String; a field_11112 val$hostname + f I b field_11114 val$port + f Lfgo; c field_22818 val$minecraft + f Lfcp; d field_26928 val$server + f Lgwn; e field_11113 field_11113 + m (Lfgo;Lgwm;)V a method_25486 method_25486 + m (Lwz;)V a method_10210 method_10210 + m (Lgwn;Ljava/lang/String;Ljava/lang/String;ILfgo;Lfcp;)V +c gwo net/minecraft/class_4903 net/minecraft/realms/RealmsLabel + f Lwz; a field_22819 text + f I b field_22820 x + f I c field_22821 y + f I d field_22822 color + m ()Lwz; a method_25487 getText + m (Lwz;III)V +c gwp net/minecraft/class_4904 net/minecraft/realms/RealmsObjectSelectionList + m ()V J method_25493 clear + m (Lfji$a;)I a method_25491 addEntry + m (I)V b method_25489 selectItem + m (I)V p method_25492 setSelectedItem + m (IIII)V +c gwq net/minecraft/class_4905 net/minecraft/realms/RealmsScreen + f I A field_39676 SKIN_FACE_SIZE + f Ljava/util/List; a field_33848 labels + f I r field_33055 TITLE_HEIGHT + f I s field_33057 EXPIRATION_NOTIFICATION_DAYS + f J u field_33058 SIZE_LIMIT + f I v field_33061 COLOR_DARK_GRAY + f I w field_33062 COLOR_MEDIUM_GRAY + f I x field_33063 COLOR_GREEN + f I y field_33040 COLOR_LINK + f I z field_33041 COLOR_LINK_HOVER + m (Lgwo;)Lgwo; a method_37107 addLabel + m (I)I g method_25494 row + m ()Lwz; m method_25495 createLabelNarration + m (Lwz;)V +c gwr net/minecraft/class_4907 net/minecraft/realms/RepeatedNarrator + f F a field_22825 permitsPerSecond + f Ljava/util/concurrent/atomic/AtomicReference; b field_22826 params + m (Lfgg;Lwz;)V a method_25499 narrate + m (Lwz;Lgwr$a;)Lgwr$a; a method_25500 method_25500 + m (Ljava/time/Duration;)V +c gwr$a net/minecraft/class_4907$class_4908 net/minecraft/realms/RepeatedNarrator$Params + f Lwz; a field_22827 narration + f Lcom/google/common/util/concurrent/RateLimiter; b field_22828 rateLimiter + m (Lwz;Lcom/google/common/util/concurrent/RateLimiter;)V +c gws net/minecraft/class_6276 net/minecraft/realms/package-info +c net/minecraft/data/Main net/minecraft/data/Main net/minecraft/data/Main + m (Ljava/lang/String;)Ljava/nio/file/Path; a method_4967 method_4967 + m (Ljava/nio/file/Path;Ljava/util/Collection;ZZZZZLae;Z)Llz; a method_4968 createStandardGenerator + m (Ljava/util/Collection;Lmc;)Lpf; a method_46595 method_46595 + m (Ljava/util/concurrent/CompletableFuture;Lpz;Lmc;)Lqe; a method_46599 method_46599 + m (Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture;)Lma$a; a method_46839 bindRegistries + m (Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture;Lmc;)Lma; a method_46840 method_46840 + m (Lmc;)Lnm; a method_52888 method_52888 + m (Ljava/util/Collection;Lmc;)Lph; b method_46598 method_46598 + m (Lmc;)Lnm; b method_46597 method_46597 + m ()V +c net/minecraft/server/Main net/minecraft/server/Main net/minecraft/server/Main + f Lorg/slf4j/Logger; a field_24625 LOGGER + m ()Z a method_28126 method_28126 + m (Lalo$c;Lcom/mojang/serialization/Dynamic;Ljoptsimple/OptionSet;Ljoptsimple/OptionSpec;Lapp;Ljoptsimple/OptionSpec;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; a method_43612 method_43612 + m (Lapo;Lcom/mojang/serialization/Dynamic;ZLatp;)Lalo$c; a method_46219 loadOrCreateConfig + m (Lcom/mojang/serialization/Dynamic;Ljoptsimple/OptionSet;Ljoptsimple/OptionSpec;Lapp;Ljoptsimple/OptionSpec;Lalo$a;)Lalo$b; a method_43613 method_43613 + m (Lerf$c;Latp;Lalp;Lapp;Lalm;Ljoptsimple/OptionSet;Ljoptsimple/OptionSpec;Ljoptsimple/OptionSpec;Ljoptsimple/OptionSpec;Ljoptsimple/OptionSpec;Ljoptsimple/OptionSpec;Ljava/lang/Thread;)Lapn; a method_29734 method_29734 + m (Lerf$c;Lcom/mojang/datafixers/DataFixer;ZLjava/util/function/BooleanSupplier;Lka;Z)V a method_29173 forceUpgrade + m (Ljava/nio/file/Path;)V a method_49066 writePidFile + m ()V + m ()V +c net/minecraft/server/Main$1 net/minecraft/server/Main$1 net/minecraft/server/Main$1 + f Lapn; a field_4611 val$dedicatedServer + m (Ljava/lang/String;Lapn;)V +c net/minecraft/client/main/Main net/minecraft/client/main/Main net/minecraft/client/main/Main + m (Ljava/lang/Integer;)Ljava/util/OptionalInt; a method_21612 ofNullable + m (Ljava/lang/String;)Ljava/lang/String; a method_53858 unescapeJavaArgument + m (Ljoptsimple/OptionSet;Ljoptsimple/OptionSpec;)Ljava/lang/Object; a method_11428 parseArgument + m (Ljava/lang/String;)Ljava/util/Optional; b method_38752 emptyStringToEmptyOptional + m (Ljava/lang/String;)Z c method_11429 stringHasValue + m ()V + m ()V +c net/minecraft/client/main/Main$1 net/minecraft/client/main/Main$1 net/minecraft/client/main/Main$1 + f Ljava/lang/String; a field_12139 val$proxyUser + f Ljava/lang/String; b field_12140 val$proxyPass + m (Ljava/lang/String;Ljava/lang/String;)V +c net/minecraft/server/MinecraftServer net/minecraft/server/MinecraftServer net/minecraft/server/MinecraftServer + f Lbnf; A field_16258 profiler + f Ljava/util/function/Consumer; B field_33975 onMetricsRecordingStopped + f Ljava/util/function/Consumer; C field_33976 onMetricsRecordingFinished + f Z D field_33977 willStartRecordingMetrics + f Lnet/minecraft/server/MinecraftServer$c; E field_33978 debugCommandProfiler + f Z F field_33979 debugCommandProfilerDelayStart + f Lart; G field_4563 connection + f Lare; H field_17439 progressListenerFactory + f Lajq; I field_4593 status + f Lajq$a; J field_42958 statusIcon + f Layw; K field_4602 random + f Lcom/mojang/datafixers/DataFixer; L field_4587 fixerUpper + f Ljava/lang/String; M field_4585 localIp + f I N field_4555 port + f Ljt; O field_25132 registries + f Ljava/util/Map; P field_4589 levels + f Laur; Q field_4550 playerList + f Z R field_4544 running + f Z S field_4561 stopped + f I T field_4572 tickCount + f I U field_47135 ticksUntilAutosave + f Z V field_4543 onlineMode + f Z W field_4560 preventProxyConnections + f Z X field_4604 pvp + f Z Y field_4554 allowFlight + f Ljava/lang/String; Z field_4564 motd + f Lenu; aA field_24370 structureTemplateManager + f Lall; aB field_47142 tickRateManager + f Lcwt; aC field_51466 potionBrewing + f Z aD field_35437 isSaving + f Ljava/util/concurrent/atomic/AtomicReference; aE field_51917 fatalException + f I aa field_4596 playerIdleTimeout + f [J ab field_47136 tickTimesNanos + f J ac field_47137 aggregatedTickTimesNanos + f Ljava/security/KeyPair; ad field_4552 keyPair + f Lcom/mojang/authlib/GameProfile; ae field_39214 singleplayerProfile + f Z af field_4549 isDemo + f Z ag field_4547 isReady + f J ah field_47138 lastOverloadWarningNanos + f J ai field_4551 lastServerStatus + f Ljava/lang/Thread; aj field_16257 serverThread + f J ak field_48773 lastTickNanos + f J al field_48774 taskExecutionStartNanos + f J am field_48775 idleTimeNanos + f J an field_47139 nextTickTimeNanos + f J ao field_47140 delayedTasksMaxNextTickTimeNanos + f Z ap field_19249 mayHaveDelayedTasks + f Latp; aq field_4595 packRepository + f Lalk; ar field_4558 scoreboard + f Leqw; as field_20850 commandStorage + f Lalt; at field_4548 customBossEvents + f Lalg; au field_4591 functionManager + f Z av field_4570 enforceWhitelist + f F aw field_47141 smoothedTickTimeMillis + f Ljava/util/concurrent/Executor; ax field_17200 executor + f Ljava/lang/String; ay field_17601 serverId + f Lnet/minecraft/server/MinecraftServer$a; az field_25318 resources + f Ljava/lang/String; b field_34982 VANILLA_BRAND + f I c field_33211 ABSOLUTE_MAX_WORLD_SIZE + f Ldda; d field_17704 DEMO_SETTINGS + f Lcom/mojang/authlib/GameProfile; e field_35641 ANONYMOUS_PLAYER_PROFILE + f Lerf$c; f field_23784 storageSource + f Leri; g field_24371 playerDataStorage + f Ljava/net/Proxy; h field_4599 proxy + f Lalm; i field_39440 services + f Lerl; j field_24372 worldData + f Lorg/slf4j/Logger; k field_4546 LOGGER + f F l field_33212 AVERAGE_TICK_TIME_SMOOTHING + f I m field_33213 TICK_STATS_SPAN + f J n field_47143 OVERLOADED_THRESHOLD_NANOS + f I o field_47144 OVERLOADED_TICKS_THRESHOLD + f J p field_47145 OVERLOADED_WARNING_INTERVAL_NANOS + f I q field_47146 OVERLOADED_TICKS_WARNING_INTERVAL + f J r field_47147 STATUS_EXPIRE_TIME_NANOS + f J s field_47148 PREPARE_LEVELS_DEFAULT_DELAY_NANOS + f I t field_33218 MAX_STATUS_PLAYER_SAMPLE + f I u field_48466 SPAWN_POSITION_SEARCH_RADIUS + f I v field_33220 AUTOSAVE_INTERVAL + f I w field_47149 MIMINUM_AUTOSAVE_TICKS + f I x field_33221 MAX_TICK_LATENCY + f Ljava/util/List; y field_4568 tickables + f Lbot; z field_22250 metricsRecorder + m ()Ljava/util/Optional; C method_3725 getWorldScreenshotFile + m ()Ljava/nio/file/Path; D method_3831 getServerDirectory + m ()Z E method_54809 isPaused + m ()V F method_54831 onTickRateChanged + m ()V G method_49749 forceTimeSynchronization + m ()Z H method_16043 isShutdown + m ()Laqu; I method_30002 overworld + m ()Ljava/util/Set; J method_29435 levelKeys + m ()Ljava/lang/Iterable; K method_3738 getAllLevels + m ()[Ljava/lang/String; O method_3858 getPlayerNames + m ()Layn; P method_24307 getModdedStatus + m ()Ljava/security/KeyPair; Q method_3716 getKeyPair + m ()I R method_3756 getPort + m ()Lcom/mojang/authlib/GameProfile; S method_43824 getSingleplayerProfile + m ()Z T method_3724 isSingleplayer + m ()V U method_31400 initializeKeyPair + m ()Z V method_3783 isSpawningMonsters + m ()Z W method_3799 isDemo + m ()Ljava/util/Optional; X method_43659 getServerResourcePack + m ()Z Y method_32303 isResourcePackRequired + m ()Z Z method_3828 usesAuthentication + m (I)V a method_3779 setPort + m (J)V a method_56602 logTickMethodTime + m (Lac;)Lac; a method_3859 fillServerSystemReport + m (Lakq;)Laqu; a method_3847 getLevel + m (Laln;)Z a method_19464 shouldRun + m (Laqu;)I a method_3829 getSpawnRadius + m (Laqu;Laqs;Lerk;Ljm$c;)V a method_46841 method_46841 + m (Laqu;Lerk;ZZ)V a method_27901 setInitialSpawn + m (Laqu;Ljd;Lcmx;)Z a method_3785 isUnderSpawnProtection + m (Laqv;)Larz; a method_31371 createTextFilterForPlayer + m (Laqv;Lbls;)V a method_56625 subscribeToDebugSample + m (Lard;)V a method_3786 createLevels + m (Latp;Lcpl;)V a method_59847 enableForcedFeaturePacks + m (Latp;Lddr;ZZ)Lddr; a method_29736 configurePackRepository + m (Latp;Ljava/util/Collection;Lcpl;Z)Lddr; a method_59848 configureRepositoryWithSelection + m (Latp;Z)Ldck; a method_29735 getSelectedPacks + m (Latu;Lalc;)Lnet/minecraft/server/MinecraftServer$a; a method_40374 method_40374 + m (Latu;Lalc;Ljava/lang/Throwable;)V a method_40375 method_40375 + m (Laur;)V a method_3846 setPlayerList + m (Layp$a;)Ljava/lang/String; a method_38580 method_38580 + m (Lbne;)V a method_37318 method_37318 + m (Lbqo;Z)V a method_3776 setDifficulty + m (Lcom/google/common/collect/ImmutableList;)Ljava/util/concurrent/CompletionStage; a method_29437 method_29437 + m (Lcom/mojang/authlib/GameProfile;)Z a method_19466 isSingleplayerOwner + m (Ldct;)V a method_3838 setDefaultGameType + m (Ldct;ZI)Z a method_3763 publishServer + m (Ldcw;)Z a method_60671 isLevelEnabled + m (Ldws;)Ljava/lang/String; a method_61087 method_61087 + m (Ldws;Lo;Ldcd;)V a method_61088 method_61088 + m (Leqz;)V a method_17976 readScoreboard + m (Lerd;)Ljava/nio/file/Path; a method_27050 getWorldPath + m (Lerl;)V a method_17977 setupDebugLevel + m (Let;)V a method_3728 kickUnlistedPlayers + m (Ljava/lang/Runnable;)Laln; a method_16209 wrapRunnable + m (Ljava/lang/RuntimeException;)V a method_60582 setFatalException + m (Ljava/lang/Thread;Ljava/lang/Throwable;)V a method_3854 method_3854 + m (Ljava/lang/Throwable;)Lo; a method_40376 constructOrExtractCrashReport + m (Ljava/nio/file/Path;)V a method_37113 dumpServerProperties + m (Ljava/util/Collection;)Ljava/util/concurrent/CompletableFuture; a method_29439 reloadResources + m (Ljava/util/Collection;Ljava/lang/String;)Z a method_29738 method_29738 + m (Ljava/util/Collection;Lnet/minecraft/server/MinecraftServer$a;)V a method_29440 method_29440 + m (Ljava/util/concurrent/atomic/AtomicReference;)V a method_29739 method_29739 + m (Ljava/util/function/BooleanSupplier;)V a method_3748 tickServer + m (Ljava/util/function/Consumer;Lbne;)V a method_37319 method_37319 + m (Ljava/util/function/Consumer;Ljava/util/function/Consumer;)V a method_37320 startRecordingMetrics + m (Ljava/util/function/Function;)Lnet/minecraft/server/MinecraftServer; a method_29740 spin + m (Ljz;)Ljava/util/Optional; a method_46842 method_46842 + m (Lo;)V a method_3744 onServerCrash + m (Lo;Ldcd;Ldws;)V a method_61089 storeChunkIoError + m (Lwz;Lwv$a;Ljava/lang/String;)V a method_43614 logChatMessage + m (Z)V a method_3747 halt + m (ZZZ)Z a method_3723 saveAllChunks + m ()I aA method_3773 getCompressionThreshold + m ()Z aB method_43500 enforceSecureProfile + m ()J aC method_3826 getNextTickTime + m ()Lcom/mojang/datafixers/DataFixer; aD method_3855 getFixerUpper + m ()Lale; aE method_3851 getAdvancements + m ()Lalg; aF method_3740 getFunctions + m ()Latp; aG method_3836 getPackRepository + m ()Leu; aH method_3734 getCommands + m ()Let; aI method_3739 createCommandSourceStack + m ()Lczd; aJ method_3772 getRecipeManager + m ()Lalk; aK method_3845 getScoreboard + m ()Leqw; aL method_22827 getCommandStorage + m ()Ldcs; aM method_3767 getGameRules + m ()Lalt; aN method_3837 getCustomBossEvents + m ()Z aO method_3729 isEnforceWhitelist + m ()F aP method_54832 getCurrentSmoothedTickTime + m ()Lall; aQ method_54833 tickRateManager + m ()J aR method_54834 getAverageTickTimeNanos + m ()[J aS method_54835 getTickTimesNanos + m ()Lbnf; aT method_16044 getProfiler + m ()V aU method_24490 endMetricsRecordingTick + m ()Z aV method_37321 isRecordingMetrics + m ()V aW method_37322 stopRecordingMetrics + m ()V aX method_37323 finishRecordingMetrics + m ()V aY method_42062 cancelRecordingMetrics + m ()Z aZ method_27051 forceSynchronousWrites + m (Ljava/lang/String;)V a_ method_3842 setLocalIp + m ()Z aa method_3775 getPreventProxyConnections + m ()Z ab method_3796 isSpawningAnimals + m ()Z ac method_3736 areNpcsEnabled + m ()Z ad method_3852 isPvpAllowed + m ()Z ae method_3718 isFlightAllowed + m ()Z ag method_3750 isStopped + m ()Laur; ah method_3760 getPlayerList + m ()Lart; ai method_3787 getConnection + m ()Z aj method_3820 isReady + m ()Z ak method_3727 hasGui + m ()I al method_3780 getTickCount + m ()I am method_3841 getSpawnProtectionRadius + m ()Z an method_27902 repliesToStatus + m ()Z ao method_39424 hidesOnlinePlayers + m ()Ljava/net/Proxy; ap method_36113 getProxy + m ()I aq method_3862 getPlayerIdleTimeout + m ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; ar method_3844 getSessionService + m ()Lazb; as method_44301 getProfileKeySignatureValidator + m ()Lcom/mojang/authlib/GameProfileRepository; at method_3719 getProfileRepository + m ()Laun; au method_3793 getProfileCache + m ()Lajq; av method_3765 getStatus + m ()V aw method_3856 invalidateStatus + m ()I ax method_3749 getAbsoluteMaxWorldSize + m (I)I b method_27903 getScaledTrackingDistance + m (Lac;)Lac; b method_37324 fillSystemReport + m (Laln;)V b method_24306 doRunTask + m (Laqu;)V b method_49750 synchronizeTime + m (Laqv;)Laqw; b method_32816 createGameModeForPlayer + m (Lard;)V b method_3774 prepareLevels + m (Lcom/mojang/authlib/GameProfile;)V b method_43825 setSingleplayerProfile + m (Ljava/lang/Runnable;)V b method_3742 addTickable + m (Ljava/lang/String;)V b method_17819 setId + m (Ljava/nio/file/Path;)V b method_21613 saveDebugReport + m (Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList; b method_29442 method_29442 + m (Z)V b method_19467 setDifficultyLocked + m (ZZZ)Z b method_39218 saveEverything + m ()Ljava/util/Optional; bD method_49384 loadStatusIcon + m ()I bE method_54837 computeNextAutosaveInterval + m ()Lajq; bF method_49385 buildServerStatus + m ()Lajq$b; bG method_49386 buildPlayerStatus + m ()V bH method_27729 updateMobSpawningFlags + m ()V bI method_24487 startMetricsRecordingTick + m ()Ljava/lang/String; bJ method_37325 method_37325 + m ()Ljava/lang/String; bK method_57961 method_57961 + m ()Ljava/lang/String; bL method_41237 method_41237 + m ()Ljava/lang/String; bM method_46222 method_46222 + m ()Ljava/lang/String; bN method_59849 method_59849 + m ()Ljava/lang/String; bO method_46223 method_46223 + m ()Ljava/lang/String; bP method_37327 method_37327 + m ()Ljava/lang/String; bQ method_39965 method_39965 + m ()Ljava/util/Optional; bR method_49383 method_49383 + m ()Z bS method_5387 method_5387 + m ()Z bT method_54836 method_54836 + m ()Z bU method_40055 method_40055 + m ()Lenu; ba method_27727 getStructureManager + m ()Lerl; bb method_27728 getWorldData + m ()Lka$b; bc method_30611 registryAccess + m ()Ljt; bd method_46221 registries + m ()Lalb$b; be method_58576 reloadableRegistries + m ()Ldct; bf method_3761 getForcedGameType + m ()Laue; bg method_34864 getResourceManager + m ()Z bh method_39219 isCurrentlySaving + m ()Z bi method_24488 isTimeProfilerRunning + m ()V bj method_3832 startTimeProfiler + m ()Lbne; bk method_24489 stopTimeProfiler + m ()I bl method_41239 getMaxChainedNeighborUpdates + m ()Lwu; bm method_43929 getChatDecorator + m ()Z bn method_52344 logIPs + m ()Z bo method_56040 acceptsTransfers + m ()Lcwt; bp method_59777 potionBrewing + m ()Lalj; bq method_60672 serverLinks + m ()V br method_56603 logFullTickTime + m ()V bs method_56604 startMeasuringTaskExecutionTime + m ()V bt method_56605 finishMeasuringTaskExecutionTime + m ()Z bu method_3866 haveTime + m ()Z bv method_20415 pollTaskInternal + m (I)V c method_3803 setPlayerIdleTimeout + m (Laqu;)Ljava/lang/String; c method_3733 method_3733 + m (Laqv;)V c method_19465 sendDifficultyUpdate + m (Lcom/mojang/authlib/GameProfile;)I c method_3835 getProfilePermissions + m (Ljava/lang/String;)Ljava/nio/file/Path; c method_3758 getFile + m (Ljava/nio/file/Path;)V c method_21692 dumpMiscStats + m (Ljava/util/function/BooleanSupplier;)V c method_3813 tickChildren + m (Z)V c method_3730 setDemo + m (Laqu;)Z d method_40056 method_40056 + m (Laqv;)V d method_53501 method_53501 + m (Ljava/lang/String;)V d method_3834 setMotd + m (Ljava/nio/file/Path;)V d method_21615 dumpGameRules + m (Ljava/util/function/BooleanSupplier;)Z d method_60583 method_60583 + m (Z)V d method_3864 setUsesAuthentication + m ()Z e method_3823 initServer + m (Ljava/nio/file/Path;)V e method_21616 dumpClasspath + m (Z)V e method_3764 setPreventProxyConnections + m ()Lblu; f method_56593 getTickTimeLogger + m (Ljava/nio/file/Path;)V f method_21713 dumpThreads + m (Z)V f method_3815 setPvpAllowed + m ()Z g method_56626 isTickTimeLoggingEnabled + m (Ljava/nio/file/Path;)V g method_38584 dumpNativeModules + m (Z)V g method_3745 setFlightAllowed + m (Ljava/nio/file/Path;)V h method_37370 method_37370 + m (Z)V h method_3731 setEnforceWhitelist + m ()V i method_3821 onServerExit + m (Ljava/nio/file/Path;)V i method_37328 method_37328 + m ()Z j method_3754 isHardcore + m (Ljava/nio/file/Path;)Ljava/util/Optional; j method_49387 method_49387 + m ()I k method_3798 getOperatorUserPermissionLevel + m (Ljava/nio/file/Path;)Z k method_49388 method_49388 + m ()I l method_21714 getFunctionCompilationLevel + m (Ljava/nio/file/Path;)Z l method_49389 method_49389 + m ()Z m method_3732 shouldRconBroadcast + m (Ljava/nio/file/Path;)V m method_37329 method_37329 + m ()Z n method_3816 isDedicatedServer + m ()I o method_30612 getRateLimitPacketsPerSecond + m ()Z p method_3759 isEpollEnabled + m ()Z q method_3812 isCommandBlockEnabled + m ()Z r method_3860 isPublished + m ()V t method_27731 forceDifficulty + m ()V t_ method_3735 loadLevel + m ()Ldct; u_ method_3790 getDefaultGameType + m ()V v method_3782 stopServer + m ()V v_ method_16208 waitUntilNextTick + m ()Ljava/lang/String; w method_3819 getLocalIp + m ()Z x method_3806 isRunning + m ()V y method_29741 runServer + m ()Z z method_60584 throwIfFatalException + m (Ljava/lang/Thread;Lerf$c;Latp;Lalp;Ljava/net/Proxy;Lcom/mojang/datafixers/DataFixer;Lalm;Lare;)V + m ()V +c net/minecraft/server/MinecraftServer$1 net/minecraft/server/MinecraftServer$1 net/minecraft/server/MinecraftServer$1 + f Ljava/util/List; a field_34851 val$entries + f Ldcs; b field_34852 val$gameRules + m (Lnet/minecraft/server/MinecraftServer;Ljava/util/List;Ldcs;)V +c net/minecraft/server/MinecraftServer$a net/minecraft/server/MinecraftServer$class_6897 net/minecraft/server/MinecraftServer$ReloadableResources + f Latu; a comp_352 resourceManager + f Lalc; b comp_353 managers + m ()Latu; a comp_352 resourceManager + m ()Lalc; b comp_353 managers + m (Latu;Lalc;)V +c net/minecraft/server/MinecraftServer$b net/minecraft/server/MinecraftServer$class_7460 net/minecraft/server/MinecraftServer$ServerResourcePackInfo + f Ljava/util/UUID; a comp_2156 id + f Ljava/lang/String; b comp_784 url + f Ljava/lang/String; c comp_785 hash + f Z d comp_786 isRequired + f Lwz; e comp_787 prompt + m ()Ljava/util/UUID; a comp_2156 id + m ()Ljava/lang/String; b comp_784 url + m ()Ljava/lang/String; c comp_785 hash + m ()Z d comp_786 isRequired + m ()Lwz; e comp_787 prompt + m (Ljava/util/UUID;Ljava/lang/String;Ljava/lang/String;ZLwz;)V +c net/minecraft/server/MinecraftServer$c net/minecraft/server/MinecraftServer$class_6414 net/minecraft/server/MinecraftServer$TimeProfiler + f J a field_33980 startNanos + f I b field_33981 startTick + m (JI)Lbne; a method_37330 stop + m (JI)V +c net/minecraft/server/MinecraftServer$c$1 net/minecraft/server/MinecraftServer$class_6414$1 net/minecraft/server/MinecraftServer$TimeProfiler$1 + f J a field_39215 val$stopNanos + f I b field_39216 val$stopTick + f Lnet/minecraft/server/MinecraftServer$c; c field_39217 field_39217 + m (Lnet/minecraft/server/MinecraftServer$c;JI)V +c com/mojang/blaze3d/systems/RenderSystem$1 com/mojang/blaze3d/systems/RenderSystem$1 com/mojang/blaze3d/systems/RenderSystem$1 + f [I a field_38976 $SwitchMap$com$mojang$blaze3d$vertex$VertexFormat$Mode + f [I b field_27331 $SwitchMap$com$mojang$blaze3d$vertex$VertexFormat$IndexType + m ()V +c com/mojang/blaze3d/systems/RenderSystem$a com/mojang/blaze3d/systems/RenderSystem$class_5590 com/mojang/blaze3d/systems/RenderSystem$AutoStorageIndexBuffer + f I a field_27332 vertexStride + f I b field_27333 indexStride + f Lcom/mojang/blaze3d/systems/RenderSystem$a$a; c field_27334 generator + f I d field_27335 name + f Lfbn$b; e field_27336 type + f I f field_27337 indexCount + m ()Lfbn$b; a method_31924 type + m (I)Z a method_43409 hasStorage + m (Ljava/nio/ByteBuffer;)Lit/unimi/dsi/fastutil/ints/IntConsumer; a method_31922 intConsumer + m (Ljava/nio/ByteBuffer;I)V a method_31923 method_31923 + m (I)V b method_43410 bind + m (I)V c method_31920 ensureStorage + m (IILcom/mojang/blaze3d/systems/RenderSystem$a$a;)V +c com/mojang/blaze3d/systems/RenderSystem$a$a com/mojang/blaze3d/systems/RenderSystem$class_5590$class_5591 com/mojang/blaze3d/systems/RenderSystem$AutoStorageIndexBuffer$IndexGenerator +c net/minecraft/client/ClientBrandRetriever net/minecraft/client/ClientBrandRetriever net/minecraft/client/ClientBrandRetriever + f Ljava/lang/String; a field_33204 VANILLA_NAME + m ()V +c com/mojang/blaze3d/platform/GlStateManager$a com/mojang/blaze3d/platform/GlStateManager$class_1017 com/mojang/blaze3d/platform/GlStateManager$BlendState + f Lcom/mojang/blaze3d/platform/GlStateManager$b; a field_5045 mode + f I b field_5049 srcRgb + f I c field_5048 dstRgb + f I d field_5047 srcAlpha + f I e field_5046 dstAlpha + m ()V +c com/mojang/blaze3d/platform/GlStateManager$b com/mojang/blaze3d/platform/GlStateManager$class_1018 com/mojang/blaze3d/platform/GlStateManager$BooleanState + f I a field_5050 state + f Z b field_5051 enabled + m ()V a method_4469 disable + m (Z)V a method_4470 setEnabled + m ()V b method_4471 enable + m (I)V +c com/mojang/blaze3d/platform/GlStateManager$c com/mojang/blaze3d/platform/GlStateManager$class_1021 com/mojang/blaze3d/platform/GlStateManager$ColorLogicState + f Lcom/mojang/blaze3d/platform/GlStateManager$b; a field_5058 enable + f I b field_5059 op + m ()V +c com/mojang/blaze3d/platform/GlStateManager$d com/mojang/blaze3d/platform/GlStateManager$class_1022 com/mojang/blaze3d/platform/GlStateManager$ColorMask + f Z a field_5063 red + f Z b field_5062 green + f Z c field_5061 blue + f Z d field_5060 alpha + m ()V +c com/mojang/blaze3d/platform/GlStateManager$e com/mojang/blaze3d/platform/GlStateManager$class_1025 com/mojang/blaze3d/platform/GlStateManager$CullState + f Lcom/mojang/blaze3d/platform/GlStateManager$b; a field_5072 enable + f I b field_5073 mode + m ()V +c com/mojang/blaze3d/platform/GlStateManager$f com/mojang/blaze3d/platform/GlStateManager$class_1026 com/mojang/blaze3d/platform/GlStateManager$DepthState + f Lcom/mojang/blaze3d/platform/GlStateManager$b; a field_5074 mode + f Z b field_5076 mask + f I c field_5075 func + m ()V +c com/mojang/blaze3d/platform/GlStateManager$g com/mojang/blaze3d/platform/GlStateManager$class_1030 com/mojang/blaze3d/platform/GlStateManager$LogicOp + f Lcom/mojang/blaze3d/platform/GlStateManager$g; a field_5120 AND + f Lcom/mojang/blaze3d/platform/GlStateManager$g; b field_5112 AND_INVERTED + f Lcom/mojang/blaze3d/platform/GlStateManager$g; c field_5117 AND_REVERSE + f Lcom/mojang/blaze3d/platform/GlStateManager$g; d field_5103 CLEAR + f Lcom/mojang/blaze3d/platform/GlStateManager$g; e field_5118 COPY + f Lcom/mojang/blaze3d/platform/GlStateManager$g; f field_5113 COPY_INVERTED + f Lcom/mojang/blaze3d/platform/GlStateManager$g; g field_5119 EQUIV + f Lcom/mojang/blaze3d/platform/GlStateManager$g; h field_5109 INVERT + f Lcom/mojang/blaze3d/platform/GlStateManager$g; i field_5114 NAND + f Lcom/mojang/blaze3d/platform/GlStateManager$g; j field_5115 NOOP + f Lcom/mojang/blaze3d/platform/GlStateManager$g; k field_5104 NOR + f Lcom/mojang/blaze3d/platform/GlStateManager$g; l field_5105 OR + f Lcom/mojang/blaze3d/platform/GlStateManager$g; m field_5116 OR_INVERTED + f Lcom/mojang/blaze3d/platform/GlStateManager$g; n field_5110 OR_REVERSE + f Lcom/mojang/blaze3d/platform/GlStateManager$g; o field_5107 SET + f Lcom/mojang/blaze3d/platform/GlStateManager$g; p field_5111 XOR + f I q field_5108 value + f [Lcom/mojang/blaze3d/platform/GlStateManager$g; r field_5106 $VALUES + m ()[Lcom/mojang/blaze3d/platform/GlStateManager$g; a method_36748 $values + m (Ljava/lang/String;II)V + m ()V +c com/mojang/blaze3d/platform/GlStateManager$h com/mojang/blaze3d/platform/GlStateManager$class_1031 com/mojang/blaze3d/platform/GlStateManager$PolygonOffsetState + f Lcom/mojang/blaze3d/platform/GlStateManager$b; a field_5123 fill + f Lcom/mojang/blaze3d/platform/GlStateManager$b; b field_5121 line + f F c field_5124 factor + f F d field_5122 units + m ()V +c com/mojang/blaze3d/platform/GlStateManager$i com/mojang/blaze3d/platform/GlStateManager$class_5518 com/mojang/blaze3d/platform/GlStateManager$ScissorState + f Lcom/mojang/blaze3d/platform/GlStateManager$b; a field_26840 mode + m ()V +c com/mojang/blaze3d/platform/GlStateManager$j com/mojang/blaze3d/platform/GlStateManager$class_1034 com/mojang/blaze3d/platform/GlStateManager$StencilFunc + f I a field_5148 func + f I b field_16203 ref + f I c field_5147 mask + m ()V +c com/mojang/blaze3d/platform/GlStateManager$k com/mojang/blaze3d/platform/GlStateManager$class_1035 com/mojang/blaze3d/platform/GlStateManager$StencilState + f Lcom/mojang/blaze3d/platform/GlStateManager$j; a field_5149 func + f I b field_5153 mask + f I c field_5152 fail + f I d field_5151 zfail + f I e field_5150 zpass + m ()V +c com/mojang/blaze3d/platform/GlStateManager$l com/mojang/blaze3d/platform/GlStateManager$class_1039 com/mojang/blaze3d/platform/GlStateManager$TextureState + f I a field_5167 binding + m ()V +c com/mojang/blaze3d/platform/GlStateManager$m com/mojang/blaze3d/platform/GlStateManager$class_1040 com/mojang/blaze3d/platform/GlStateManager$Viewport + f Lcom/mojang/blaze3d/platform/GlStateManager$m; a field_5169 INSTANCE + f I b field_5172 x + f I c field_5171 y + f I d field_5170 width + f I e field_5168 height + f [Lcom/mojang/blaze3d/platform/GlStateManager$m; f field_5173 $VALUES + m ()I a method_35330 x + m ()I b method_35331 y + m ()I c method_35332 width + m ()I d method_35333 height + m ()[Lcom/mojang/blaze3d/platform/GlStateManager$m; e method_36749 $values + m (Ljava/lang/String;I)V + m ()V +c com/mojang/blaze3d/platform/GlStateManager$DestFactor com/mojang/blaze3d/platform/GlStateManager$class_4534 com/mojang/blaze3d/platform/GlStateManager$DestFactor + m (Ljava/lang/String;II)V + m ()V +c com/mojang/blaze3d/platform/GlStateManager$SourceFactor com/mojang/blaze3d/platform/GlStateManager$class_4535 com/mojang/blaze3d/platform/GlStateManager$SourceFactor + m (Ljava/lang/String;II)V + m ()V +c net/minecraft/util/profiling/jfr/event/NetworkSummaryEvent$a net/minecraft/util/profiling/jfr/event/NetworkSummaryEvent$class_6778 net/minecraft/util/profiling/jfr/event/NetworkSummaryEvent$Fields + f Ljava/lang/String; a field_35642 REMOTE_ADDRESS + f Ljava/lang/String; b field_35643 SENT_BYTES + f Ljava/lang/String; c field_35644 RECEIVED_BYTES + f Ljava/lang/String; d field_35645 SENT_PACKETS + f Ljava/lang/String; e field_35646 RECEIVED_PACKETS + m ()V +c net/minecraft/util/profiling/jfr/event/NetworkSummaryEvent$b net/minecraft/util/profiling/jfr/event/NetworkSummaryEvent$class_6779 net/minecraft/util/profiling/jfr/event/NetworkSummaryEvent$SumAggregation + f Ljava/util/concurrent/atomic/AtomicLong; a field_35647 sentBytes + f Ljava/util/concurrent/atomic/AtomicInteger; b field_35648 sentPackets + f Ljava/util/concurrent/atomic/AtomicLong; c field_35649 receivedBytes + f Ljava/util/concurrent/atomic/AtomicInteger; d field_35650 receivedPackets + f Lnet/minecraft/util/profiling/jfr/event/NetworkSummaryEvent; e field_35651 event + m ()V a method_39494 commitEvent + m (I)V a method_39495 trackSentPacket + m (I)V b method_39496 trackReceivedPacket + m (Ljava/lang/String;)V +c net/minecraft/util/profiling/jfr/event/ServerTickTimeEvent$a net/minecraft/util/profiling/jfr/event/ServerTickTimeEvent$class_6601 net/minecraft/util/profiling/jfr/event/ServerTickTimeEvent$Fields + f Ljava/lang/String; a field_34854 AVERAGE_TICK_DURATION + m ()V +c net/minecraft/util/profiling/jfr/event/ChunkGenerationEvent$a net/minecraft/util/profiling/jfr/event/ChunkGenerationEvent$class_6602 net/minecraft/util/profiling/jfr/event/ChunkGenerationEvent$Fields + f Ljava/lang/String; a field_34855 WORLD_POS_X + f Ljava/lang/String; b field_34856 WORLD_POS_Z + f Ljava/lang/String; c field_34857 CHUNK_POS_X + f Ljava/lang/String; d field_34858 CHUNK_POS_Z + f Ljava/lang/String; e field_34859 STATUS + f Ljava/lang/String; f field_34861 LEVEL + m ()V diff --git a/neoforge/build.gradle b/neoforge/build.gradle new file mode 100644 index 00000000..00973c18 --- /dev/null +++ b/neoforge/build.gradle @@ -0,0 +1,106 @@ +plugins { + id "com.github.johnrengelman.shadow" version "7.1.2" +} +architectury { + platformSetupLoomIde() + neoForge() +} + +loom { + neoForge { + runs { + all {} + + data { + data() + programArgs("--all", "--mod", "integrated_cobblemon") + programArgs("--existing", project(":common").file("src/main/resources").absolutePath) + programArgs("--output", project(":common").file("src/main/generated/resources").absolutePath) + all {} + } + } + } +} + +configurations { + common + shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentForge.extendsFrom common +} + +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"))) + + modLocalRuntime("com.telepathicgrunt:CommandStructures-Neoforge:${project.commandstructures_neoforge}") + 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}") +// 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}") +// modLocalRuntime("curse.maven:alexsmobs-${alexsmobs_curseforge_id}:${alexsmobs_curseforge_file_id}") +// modLocalRuntime("curse.maven:citadel-${citadel_curseforge_id}:${citadel_curseforge_file_id}") +// modLocalRuntime("curse.maven:rs-${rs_curseforge_id}:${rs_curseforge_file_id}") +// modLocalRuntime("curse.maven:biomesoplenty-${bop_curseforge_id}:${bop_curseforge_file_id}") +// modLocalRuntime("curse.maven:tb-${tb_curseforge_id}:${tb_curseforge_file_id}") +// modLocalRuntime("curse.maven:quark-${quark_curseforge_id}:${quark_curseforge_file_id}") +// modLocalRuntime("curse.maven:zeta-${zeta_curseforge_id}:${zeta_curseforge_file_id}") +// +// modLocalRuntime("curse.maven:sup-${sup_curseforge_id}:${sup_curseforge_file_id}") +// modLocalRuntime("curse.maven:midnight-${midnight_curseforge_id}:${midnight_curseforge_file_id}") +// modLocalRuntime("curse.maven:waystones-${waystones_curseforge_id}:${waystones_curseforge_file_id}") +// modLocalRuntime("curse.maven:balm-${balm_curseforge_id}:${balm_curseforge_file_id}") +// implementation("curse.maven:if-${if_curseforge_id}:${if_curseforge_file_id}") +// modLocalRuntime("curse.maven:citadel-${citadel_curseforge_id}:${citadel_curseforge_file_id}") + + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionNeoForge")) { transitive = false } + +// implementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-common:${rootProject.mixin_extras}")) +// implementation(include("com.github.llamalad7.mixinextras:mixinextras-forge:${rootProject.mixin_extras}")) +} + +processResources { + inputs.property "version", project.version + + filesMatching("META-INF/neoforge.mods.toml") { + expand "version": project.version + } +} + +shadowJar { + exclude "fabric.mod.json" + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + archiveClassifier.set("dev-shadow") +} + +remapJar { + input.set shadowJar.archiveFile + dependsOn shadowJar + archiveClassifier.set(null) +} + +jar { + archiveClassifier.set("dev") +} + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} diff --git a/neoforge/gradle.properties b/neoforge/gradle.properties new file mode 100644 index 00000000..2914393d --- /dev/null +++ b/neoforge/gradle.properties @@ -0,0 +1 @@ +loom.platform=neoforge \ No newline at end of file diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java new file mode 100644 index 00000000..8f9c677c --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java @@ -0,0 +1,291 @@ +package com.craisinlord.antarchy.neoforge; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.config.ModConfig; +import net.neoforged.fml.event.config.ModConfigEvent; + +public final class AntarchyConfigModuleNeoforge { + private AntarchyConfigModuleNeoforge() {} + + public static void init(ModContainer modContainer) { + modContainer.registerConfig(ModConfig.Type.COMMON, AntarchyMobsConfig.SPEC, "antarchy/antarchy_mobs.toml"); + modContainer.registerConfig(ModConfig.Type.COMMON, AntarchyToolsConfig.SPEC, "antarchy/antarchy_tools.toml"); + modContainer.registerConfig(ModConfig.Type.COMMON, AntarchyMiscConfig.SPEC, "antarchy/antarchy_misc.toml"); + AntarchyNeoforge.modEventBusTempHolder.addListener(AntarchyConfigModuleNeoforge::onConfigChange); + } + + private static void onConfigChange(ModConfigEvent event) { + if (event instanceof ModConfigEvent.Reloading) { + return; + } + var spec = event.getConfig().getSpec(); + if (spec == AntarchyMobsConfig.SPEC) { + bakeMobsConfig(); + return; + } + + if (spec == AntarchyToolsConfig.SPEC) { + bakeToolsConfig(); + return; + } + + if (spec == AntarchyMiscConfig.SPEC) { + bakeMiscConfig(); + } + } + + private static void bakeMobsConfig() { + AntarchySettings.setAntsStealFromChests(AntarchyMobsConfig.antsStealFromChests()); + + AntarchySettings.setBrownAntRequiresReagent(AntarchyMobsConfig.brownAntRequiresReagent()); + AntarchySettings.setBrownAntHealth(AntarchyMobsConfig.brownAntHealth()); + AntarchySettings.setBrownAntMovementSpeed(AntarchyMobsConfig.brownAntMovementSpeed()); + AntarchySettings.setBrownAntAttackDamage(AntarchyMobsConfig.brownAntAttackDamage()); + AntarchySettings.setBrownAntDestinationDimension(AntarchyMobsConfig.brownAntDestinationDimension()); + + AntarchySettings.setRedAntRequiresReagent(AntarchyMobsConfig.redAntRequiresReagent()); + AntarchySettings.setRedAntHealth(AntarchyMobsConfig.redAntHealth()); + AntarchySettings.setRedAntMovementSpeed(AntarchyMobsConfig.redAntMovementSpeed()); + AntarchySettings.setRedAntAttackDamage(AntarchyMobsConfig.redAntAttackDamage()); + AntarchySettings.setRedAntDestinationDimension(AntarchyMobsConfig.redAntDestinationDimension()); + + AntarchySettings.setRainbowAntRequiresReagent(AntarchyMobsConfig.rainbowAntRequiresReagent()); + AntarchySettings.setRainbowAntHealth(AntarchyMobsConfig.rainbowAntHealth()); + AntarchySettings.setRainbowAntMovementSpeed(AntarchyMobsConfig.rainbowAntMovementSpeed()); + AntarchySettings.setRainbowAntAttackDamage(AntarchyMobsConfig.rainbowAntAttackDamage()); + AntarchySettings.setRainbowAntNonInfinityFallbackDimension(AntarchyMobsConfig.rainbowAntNonInfinityFallbackDimension()); + + AntarchySettings.setTermiteRequiresReagent(AntarchyMobsConfig.termiteRequiresReagent()); + AntarchySettings.setTermiteHealth(AntarchyMobsConfig.termiteHealth()); + AntarchySettings.setTermiteMovementSpeed(AntarchyMobsConfig.termiteMovementSpeed()); + AntarchySettings.setTermiteAttackDamage(AntarchyMobsConfig.termiteAttackDamage()); + AntarchySettings.setTermiteDestinationDimension(AntarchyMobsConfig.termiteDestinationDimension()); + + AntarchySettings.setEasterBunnyEnabled(AntarchyMobsConfig.easterBunnyEnabled()); + AntarchySettings.setEasterBunnyNaturalSpawnChancePercent(AntarchyMobsConfig.easterBunnyNaturalSpawnChancePercent()); + + AntarchySettings.setWaspHealth(AntarchyMobsConfig.waspHealth()); + AntarchySettings.setWaspAttackDamage(AntarchyMobsConfig.waspAttackDamage()); + AntarchySettings.setWaspMovementSpeed(AntarchyMobsConfig.waspMovementSpeed()); + + AntarchySettings.setBomberHealth(AntarchyMobsConfig.bomberHealth()); + AntarchySettings.setBomberAttackDamage(AntarchyMobsConfig.bomberAttackDamage()); + AntarchySettings.setBomberExplosionDamage(AntarchyMobsConfig.bomberExplosionDamage()); + AntarchySettings.setBomberExplosionRadius(AntarchyMobsConfig.bomberExplosionRadius()); + + AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth()); + AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage()); + AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier()); + AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled()); + AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled()); + + AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth()); + AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage()); + AntarchySettings.setBrutalflySpitDamage(AntarchyMobsConfig.brutalflySpitDamage()); + + AntarchySettings.setMantisHealth(AntarchyMobsConfig.mantisHealth()); + AntarchySettings.setMantisAttackDamage(AntarchyMobsConfig.mantisAttackDamage()); + AntarchySettings.setMantisMovementSpeed(AntarchyMobsConfig.mantisMovementSpeed()); + AntarchySettings.setMantisFlyingSpeed(AntarchyMobsConfig.mantisFlyingSpeed()); + AntarchySettings.setMantisIgnoreLightLevel(AntarchyMobsConfig.mantisIgnoreLightLevel()); + + AntarchySettings.setTriffidHealth(AntarchyMobsConfig.triffidHealth()); + AntarchySettings.setTriffidAttackDamage(AntarchyMobsConfig.triffidAttackDamage()); + AntarchySettings.setTriffidGrabDamage(AntarchyMobsConfig.triffidGrabDamage()); + + AntarchySettings.setCaterpillarPupationTimeSeconds(AntarchyMobsConfig.caterpillarPupationTimeSeconds()); + + AntarchySettings.setReverieHealth(AntarchyMobsConfig.reverieHealth()); + AntarchySettings.setReverieInterestRadius(AntarchyMobsConfig.reverieInterestRadius()); + AntarchySettings.setReverieAbandonPlayerDistance(AntarchyMobsConfig.reverieAbandonPlayerDistance()); + AntarchySettings.setReverieNoticeDurationTicks(AntarchyMobsConfig.reverieNoticeDurationTicks()); + AntarchySettings.setReverieInterestDurationTicks(AntarchyMobsConfig.reverieInterestDurationTicks()); + AntarchySettings.setReverieRebindCooldownTicks(AntarchyMobsConfig.reverieRebindCooldownTicks()); + AntarchySettings.setReverieDamageReactionDurationTicks(AntarchyMobsConfig.reverieDamageReactionDurationTicks()); + AntarchySettings.setReverieDangerousFallDistance(AntarchyMobsConfig.reverieDangerousFallDistance()); + AntarchySettings.setReverieDangerousFallSpeed(AntarchyMobsConfig.reverieDangerousFallSpeed()); + AntarchySettings.setReverieWarningThreatRadius(AntarchyMobsConfig.reverieWarningThreatRadius()); + AntarchySettings.setReverieWarningThreatVerticalRange(AntarchyMobsConfig.reverieWarningThreatVerticalRange()); + AntarchySettings.setReverieDuplicationCooldownTicks(AntarchyMobsConfig.reverieDuplicationCooldownTicks()); + + AntarchySettings.setBasiliskPetrifyingGazeEnabled(AntarchyMobsConfig.basiliskPetrifyingGazeEnabled()); + AntarchySettings.setBasiliskSpawnMaxLightLevel(AntarchyMobsConfig.basiliskSpawnMaxLightLevel()); + + AntarchySettings.setLucidAttackRange(AntarchyMobsConfig.lucidAttackRange()); + AntarchySettings.setLucidPearlInvertedDurationSeconds(AntarchyMobsConfig.lucidPearlInvertedDurationSeconds()); + + AntarchySettings.setDreadHallucinationSoundsEnabled(AntarchyMobsConfig.dreadHallucinationSoundsEnabled()); + AntarchySettings.setDreadHallucinationSoundMinInterval(AntarchyMobsConfig.dreadHallucinationSoundMinInterval()); + AntarchySettings.setDreadHallucinationSoundMaxInterval(AntarchyMobsConfig.dreadHallucinationSoundMaxInterval()); + AntarchySettings.setDreadHallucinationMobsEnabled(AntarchyMobsConfig.dreadHallucinationMobsEnabled()); + AntarchySettings.setDreadHallucinationMobMinInterval(AntarchyMobsConfig.dreadHallucinationMobMinInterval()); + AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval()); + } + + private static void bakeToolsConfig() { + AntarchySettings.setBasiliskDaggerAttackDamage(AntarchyToolsConfig.basiliskDaggerAttackDamage()); + AntarchySettings.setBasiliskDaggerAttackSpeed(AntarchyToolsConfig.basiliskDaggerAttackSpeed()); + AntarchySettings.setBasiliskDaggerPoisonDurationTicks(AntarchyToolsConfig.basiliskDaggerPoisonDurationTicks()); + AntarchySettings.setBasiliskDaggerPoisonAmplifier(AntarchyToolsConfig.basiliskDaggerPoisonAmplifier()); + + AntarchySettings.setUltimateSwordAttackDamage(AntarchyToolsConfig.ultimateSwordAttackDamage()); + AntarchySettings.setUltimateSwordAttackSpeed(AntarchyToolsConfig.ultimateSwordAttackSpeed()); + AntarchySettings.setUltimatePickaxeAttackDamage(AntarchyToolsConfig.ultimatePickaxeAttackDamage()); + AntarchySettings.setUltimatePickaxeAttackSpeed(AntarchyToolsConfig.ultimatePickaxeAttackSpeed()); + AntarchySettings.setUltimateAxeAttackDamage(AntarchyToolsConfig.ultimateAxeAttackDamage()); + AntarchySettings.setUltimateAxeAttackSpeed(AntarchyToolsConfig.ultimateAxeAttackSpeed()); + AntarchySettings.setUltimateShovelAttackDamage(AntarchyToolsConfig.ultimateShovelAttackDamage()); + AntarchySettings.setUltimateShovelAttackSpeed(AntarchyToolsConfig.ultimateShovelAttackSpeed()); + AntarchySettings.setUltimateHoeAttackDamage(AntarchyToolsConfig.ultimateHoeAttackDamage()); + AntarchySettings.setUltimateHoeAttackSpeed(AntarchyToolsConfig.ultimateHoeAttackSpeed()); + AntarchySettings.setUltimateToolEnchantability(AntarchyToolsConfig.ultimateToolEnchantability()); + AntarchySettings.setUltimateToolsThreeByThreeEnabled(AntarchyToolsConfig.ultimateToolsThreeByThreeEnabled()); + + AntarchySettings.setUltimateBowAttackDamage(AntarchyToolsConfig.ultimateBowAttackDamage()); + AntarchySettings.setUltimateBowPlayerHeal(AntarchyToolsConfig.ultimateBowPlayerHeal()); + AntarchySettings.setUltimateBowDrawSpeedMultiplier(AntarchyToolsConfig.ultimateBowDrawSpeedMultiplier()); + AntarchySettings.setUltimateBowComesEnchantedWithFlame(AntarchyToolsConfig.ultimateBowComesEnchantedWithFlame()); + AntarchySettings.setUltimateBowEnchantability(AntarchyToolsConfig.ultimateBowEnchantability()); + + AntarchySettings.setUltimateCrossbowAttackDamage(AntarchyToolsConfig.ultimateCrossbowAttackDamage()); + AntarchySettings.setUltimateCrossbowChargeSpeedMultiplier(AntarchyToolsConfig.ultimateCrossbowChargeSpeedMultiplier()); + AntarchySettings.setUltimateCrossbowEnchantability(AntarchyToolsConfig.ultimateCrossbowEnchantability()); + + AntarchySettings.setUltimateMaceDamageMultiplier(AntarchyToolsConfig.ultimateMaceDamageMultiplier()); + AntarchySettings.setUltimateMaceAttackSpeed(AntarchyToolsConfig.ultimateMaceAttackSpeed()); + AntarchySettings.setUltimateMaceEnchantability(AntarchyToolsConfig.ultimateMaceEnchantability()); + + AntarchySettings.setUltimateArmorComesEnchanted(AntarchyToolsConfig.ultimateArmorComesEnchanted()); + AntarchySettings.setUltimateArmorEnchantability(AntarchyToolsConfig.ultimateArmorEnchantability()); + AntarchySettings.setUltimateHelmetArmorValue(AntarchyToolsConfig.ultimateHelmetArmorValue()); + AntarchySettings.setUltimateChestplateArmorValue(AntarchyToolsConfig.ultimateChestplateArmorValue()); + AntarchySettings.setUltimateLeggingsArmorValue(AntarchyToolsConfig.ultimateLeggingsArmorValue()); + AntarchySettings.setUltimateBootsArmorValue(AntarchyToolsConfig.ultimateBootsArmorValue()); + AntarchySettings.setUltimateHelmetArmorToughness(AntarchyToolsConfig.ultimateHelmetArmorToughness()); + AntarchySettings.setUltimateChestplateArmorToughness(AntarchyToolsConfig.ultimateChestplateArmorToughness()); + AntarchySettings.setUltimateLeggingsArmorToughness(AntarchyToolsConfig.ultimateLeggingsArmorToughness()); + AntarchySettings.setUltimateBootsArmorToughness(AntarchyToolsConfig.ultimateBootsArmorToughness()); + AntarchySettings.setUltimateArmorKnockbackResistance(AntarchyToolsConfig.ultimateArmorKnockbackResistance()); + + AntarchySettings.setBattleAxeAttackDamage(AntarchyToolsConfig.battleAxeAttackDamage()); + AntarchySettings.setBattleAxeAttackSpeed(AntarchyToolsConfig.battleAxeAttackSpeed()); + + AntarchySettings.setBigBerthaAttackDamage(AntarchyToolsConfig.bigBerthaAttackDamage()); + AntarchySettings.setBigBerthaReachBonus(AntarchyToolsConfig.bigBerthaReachBonus()); + AntarchySettings.setBigBerthaAttackSpeed(AntarchyToolsConfig.bigBerthaAttackSpeed()); + AntarchySettings.setBigBerthaBasiliskParalyzeDurationTicks(AntarchyToolsConfig.bigBerthaBasiliskParalyzeDurationTicks()); + AntarchySettings.setBigBerthaKrakenSlowTicks(AntarchyToolsConfig.bigBerthaKrakenSlowTicks()); + AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds()); + AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds()); + AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent()); + AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage()); + AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus()); + AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks()); + AntarchySettings.setScorpionWhipTetherMaxRange(AntarchyToolsConfig.scorpionWhipTetherMaxRange()); + AntarchySettings.setScorpionWhipReelCooldownTicks(AntarchyToolsConfig.scorpionWhipReelCooldownTicks()); + AntarchySettings.setScorpionWhipSnapBonusDamage(AntarchyToolsConfig.scorpionWhipSnapBonusDamage()); + AntarchySettings.setScorpionWhipSnapCooldownTicks(AntarchyToolsConfig.scorpionWhipSnapCooldownTicks()); + AntarchySettings.setScorpionWhipPullStrength(AntarchyToolsConfig.scorpionWhipPullStrength()); + AntarchySettings.setScorpionWhipHeavyPullMultiplier(AntarchyToolsConfig.scorpionWhipHeavyPullMultiplier()); + AntarchySettings.setScorpionWhipSelfPullMultiplier(AntarchyToolsConfig.scorpionWhipSelfPullMultiplier()); + AntarchySettings.setBloodCrystalKatanaAttackDamage(AntarchyToolsConfig.bloodCrystalKatanaAttackDamage()); + AntarchySettings.setBloodCrystalKatanaLaunchStrength(AntarchyToolsConfig.bloodCrystalKatanaLaunchStrength()); + AntarchySettings.setBloodCrystalKatanaTrailDurationTicks(AntarchyToolsConfig.bloodCrystalKatanaTrailDurationTicks()); + + AntarchySettings.setNightmareHelmetArmorValue(AntarchyToolsConfig.nightmareHelmetArmorValue()); + AntarchySettings.setNightmareChestplateArmorValue(AntarchyToolsConfig.nightmareChestplateArmorValue()); + AntarchySettings.setNightmareLeggingsArmorValue(AntarchyToolsConfig.nightmareLeggingsArmorValue()); + AntarchySettings.setNightmareBootsArmorValue(AntarchyToolsConfig.nightmareBootsArmorValue()); + AntarchySettings.setNightmareHelmetArmorToughness(AntarchyToolsConfig.nightmareHelmetArmorToughness()); + AntarchySettings.setNightmareChestplateArmorToughness(AntarchyToolsConfig.nightmareChestplateArmorToughness()); + AntarchySettings.setNightmareLeggingsArmorToughness(AntarchyToolsConfig.nightmareLeggingsArmorToughness()); + AntarchySettings.setNightmareBootsArmorToughness(AntarchyToolsConfig.nightmareBootsArmorToughness()); + AntarchySettings.setNightmareArmorKnockbackResistance(AntarchyToolsConfig.nightmareArmorKnockbackResistance()); + AntarchySettings.setNightmareArmorDreadAuraRangePerPiece(AntarchyToolsConfig.nightmareArmorDreadAuraRangePerPiece()); + AntarchySettings.setNightmareSwordBaseDamage(AntarchyToolsConfig.nightmareSwordBaseDamage()); + AntarchySettings.setNightmareSwordAttackSpeed(AntarchyToolsConfig.nightmareSwordAttackSpeed()); + AntarchySettings.setNightmareSwordScalingFactor(AntarchyToolsConfig.nightmareSwordScalingFactor()); + AntarchySettings.setFallenKingCrownArmorValue(AntarchyToolsConfig.fallenKingCrownArmorValue()); + AntarchySettings.setFallenKingCrownArmorToughness(AntarchyToolsConfig.fallenKingCrownArmorToughness()); + + AntarchySettings.setSquidzookaCooldownSeconds(AntarchyToolsConfig.squidzookaCooldownSeconds()); + AntarchySettings.setSquidzookaLaunchVelocity(AntarchyToolsConfig.squidzookaLaunchVelocity()); + + AntarchySettings.setSizeChangingRaysEnabled(AntarchyToolsConfig.sizeChangingRaysEnabled()); + AntarchySettings.setSizeRayCooldownSeconds(AntarchyToolsConfig.sizeRayCooldownSeconds()); + AntarchySettings.setSizeRayMinScale(AntarchyToolsConfig.sizeRayMinScale()); + AntarchySettings.setSizeRayMaxScale(AntarchyToolsConfig.sizeRayMaxScale()); + AntarchySettings.setSizeRayDeltaPerHit(AntarchyToolsConfig.sizeRayDeltaPerHit()); + AntarchySettings.setShrinkingPotionDelta(AntarchyToolsConfig.shrinkingPotionDelta()); + AntarchySettings.setGrowthPotionDelta(AntarchyToolsConfig.growthPotionDelta()); + + AntarchySettings.setInvertProjectilesFromInvertedPlayers(AntarchyToolsConfig.invertProjectilesFromInvertedPlayers()); + + AntarchySettings.setGravityGunEnabled(AntarchyToolsConfig.gravityGunEnabled()); + AntarchySettings.setGravityGunBlocksEnabled(AntarchyToolsConfig.gravityGunBlocksEnabled()); + AntarchySettings.setGravityGunEntitiesEnabled(AntarchyToolsConfig.gravityGunEntitiesEnabled()); + AntarchySettings.setGravityGunRange(AntarchyToolsConfig.gravityGunRange()); + AntarchySettings.setGravityGunThrowStrength(AntarchyToolsConfig.gravityGunThrowStrength()); + AntarchySettings.setGravityGunBlastStrength(AntarchyToolsConfig.gravityGunBlastStrength()); + AntarchySettings.setGravityGunCooldownSeconds(AntarchyToolsConfig.gravityGunCooldownSeconds()); + AntarchySettings.setGravityGunMaxHoldDistance(AntarchyToolsConfig.gravityGunMaxHoldDistance()); + + AntarchySettings.setDuctTapeRepairPercentPerUse(AntarchyToolsConfig.ductTapeRepairPercentPerUse()); + AntarchySettings.setPotentNyxiteInvertedDurationSeconds(AntarchyToolsConfig.potentNyxiteInvertedDurationSeconds()); + AntarchySettings.setCorneaEarNightVisionSeconds(AntarchyToolsConfig.corneaEarNightVisionSeconds()); + AntarchySettings.setAntDanceRadius(AntarchyMobsConfig.antDanceRadius()); + + AntarchySettings.setMogglesVisionRadius(AntarchyToolsConfig.mogglesVisionRadius()); + AntarchySettings.setMogglesVisionMaxLight(AntarchyToolsConfig.mogglesVisionMaxLight()); + AntarchySettings.setMogglesVisionAlpha(AntarchyToolsConfig.mogglesVisionAlpha()); + } + + private static void bakeMiscConfig() { + AntarchySettings.setRainbowAntsLeadToInfinityDimensions(AntarchyMiscConfig.rainbowAntsLeadToInfinityDimensions()); + AntarchySettings.setDisableInfinityBookPortalCreation(AntarchyMiscConfig.disableInfinityBookPortalCreation()); + AntarchySettings.setHushweedSporeLifetimeSeconds(AntarchyMiscConfig.hushweedSporeLifetimeSeconds()); + AntarchySettings.setDiamondMinecartEnabled(AntarchyMiscConfig.diamondMinecartEnabled()); + AntarchySettings.setDiamondMinecartPlacesRails(AntarchyMiscConfig.diamondMinecartPlacesRails()); + AntarchySettings.setDiamondMinecartCruiseSpeed(AntarchyMiscConfig.diamondMinecartCruiseSpeed()); + AntarchySettings.setDiamondMinecartMaxSpeed(AntarchyMiscConfig.diamondMinecartMaxSpeed()); + AntarchySettings.setDiamondMinecartAcceleration(AntarchyMiscConfig.diamondMinecartAcceleration()); + AntarchySettings.setDiamondMinecartDeceleration(AntarchyMiscConfig.diamondMinecartDeceleration()); + AntarchySettings.setDiamondMinecartCoastDeceleration(AntarchyMiscConfig.diamondMinecartCoastDeceleration()); + AntarchySettings.setDiamondMinecartMobDamageEnabled(AntarchyMiscConfig.diamondMinecartMobDamageEnabled()); + AntarchySettings.setDiamondMinecartMaxMobDamage(AntarchyMiscConfig.diamondMinecartMaxMobDamage()); + + + // Misc + + AntarchySettings.setElythiaFireflyParticlesEnabled(AntarchyMiscConfig.elythiaFireflyParticlesEnabled()); + + AntarchySettings.setDreamSandEnabled(AntarchyMiscConfig.dreamSandEnabled()); + AntarchySettings.setDreamSandJumpVelocityMultiplier(AntarchyMiscConfig.dreamSandJumpVelocityMultiplier()); + AntarchySettings.setDreamSandGravityMultiplier(AntarchyMiscConfig.dreamSandGravityMultiplier()); + AntarchySettings.setDreamSandFallDamageMultiplier(AntarchyMiscConfig.dreamSandFallDamageMultiplier()); + AntarchySettings.setDreamSandEffectDurationSeconds(AntarchyMiscConfig.dreamSandEffectDurationSeconds()); + + AntarchySettings.setIchorWitherEnabled(AntarchyMiscConfig.ichorWitherEnabled()); + + AntarchySettings.setDuplicatorTreeEnabled(AntarchyMiscConfig.duplicatorTreeEnabled()); + AntarchySettings.setGlowingTorchflowers(AntarchyMiscConfig.glowingTorchflowers()); + AntarchySettings.setGlowVinesUnderLeaves(AntarchyMiscConfig.glowVinesUnderLeaves()); + AntarchySettings.setEntitySpecificFireOverlayEnabled(AntarchyMiscConfig.entitySpecificFireOverlayEnabled()); + + AntarchySettings.setBloodCrystalArmorShieldRechargeTicks(AntarchyToolsConfig.bloodCrystalArmorShieldRechargeTicks()); + AntarchySettings.setBloodCrystalAppleShieldCount(AntarchyToolsConfig.bloodCrystalAppleShieldCount()); + AntarchySettings.setBloodCrystalAppleDurationTicks(AntarchyToolsConfig.bloodCrystalAppleDurationTicks()); + AntarchySettings.setBloodCrystalAppleShieldRechargeTicks(AntarchyToolsConfig.bloodCrystalAppleShieldRechargeTicks()); + AntarchySettings.setBloodCrystalHardMaxShields(AntarchyToolsConfig.bloodCrystalHardMaxShields()); + AntarchySettings.setBloodCrystalHelmetDefense(AntarchyToolsConfig.bloodCrystalHelmetDefense()); + AntarchySettings.setBloodCrystalChestplateDefense(AntarchyToolsConfig.bloodCrystalChestplateDefense()); + AntarchySettings.setBloodCrystalLeggingsDefense(AntarchyToolsConfig.bloodCrystalLeggingsDefense()); + AntarchySettings.setBloodCrystalBootsDefense(AntarchyToolsConfig.bloodCrystalBootsDefense()); + AntarchySettings.setBloodCrystalArmorToughness(AntarchyToolsConfig.bloodCrystalArmorToughness()); + AntarchySettings.setBloodCrystalHelmetDurability(AntarchyToolsConfig.bloodCrystalHelmetDurability()); + AntarchySettings.setBloodCrystalChestplateDurability(AntarchyToolsConfig.bloodCrystalChestplateDurability()); + AntarchySettings.setBloodCrystalLeggingsDurability(AntarchyToolsConfig.bloodCrystalLeggingsDurability()); + AntarchySettings.setBloodCrystalBootsDurability(AntarchyToolsConfig.bloodCrystalBootsDurability()); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMiscConfig.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMiscConfig.java new file mode 100644 index 00000000..133ecc2d --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMiscConfig.java @@ -0,0 +1,160 @@ +package com.craisinlord.antarchy.neoforge; + +import net.neoforged.neoforge.common.ModConfigSpec; + +public final class AntarchyMiscConfig { + public static final ModConfigSpec SPEC; + + // Elythia + private static final ModConfigSpec.BooleanValue ELYTHIA_FIREFLY_PARTICLES_ENABLED; + + // Dream Sand + private static final ModConfigSpec.BooleanValue DREAM_SAND_ENABLED; + private static final ModConfigSpec.DoubleValue DREAM_SAND_JUMP_VELOCITY_MULTIPLIER; + private static final ModConfigSpec.DoubleValue DREAM_SAND_GRAVITY_MULTIPLIER; + private static final ModConfigSpec.DoubleValue DREAM_SAND_FALL_DAMAGE_MULTIPLIER; + private static final ModConfigSpec.DoubleValue DREAM_SAND_EFFECT_DURATION_SECONDS; + + // Ichor + private static final ModConfigSpec.BooleanValue ICHOR_WITHER_ENABLED; + + // Hushweed + private static final ModConfigSpec.DoubleValue HUSHWEED_SPORE_LIFETIME_SECONDS; + + // Infinite Dimensions + private static final ModConfigSpec.BooleanValue DISABLE_INFINITY_BOOK_PORTAL_CREATION; + private static final ModConfigSpec.BooleanValue RAINBOW_ANTS_LEAD_TO_INFINITY_DIMENSIONS; + + // Diamond Minecart + private static final ModConfigSpec.BooleanValue DIAMOND_MINECART_ENABLED; + private static final ModConfigSpec.BooleanValue DIAMOND_MINECART_PLACES_RAILS; + private static final ModConfigSpec.DoubleValue DIAMOND_MINECART_CRUISE_SPEED; + private static final ModConfigSpec.DoubleValue DIAMOND_MINECART_MAX_SPEED; + private static final ModConfigSpec.DoubleValue DIAMOND_MINECART_ACCELERATION; + private static final ModConfigSpec.DoubleValue DIAMOND_MINECART_DECELERATION; + private static final ModConfigSpec.DoubleValue DIAMOND_MINECART_COAST_DECELERATION; + private static final ModConfigSpec.BooleanValue DIAMOND_MINECART_MOB_DAMAGE_ENABLED; + private static final ModConfigSpec.DoubleValue DIAMOND_MINECART_MAX_MOB_DAMAGE; + + // World / misc toggles + private static final ModConfigSpec.BooleanValue DUPLICATOR_TREE_ENABLED; + private static final ModConfigSpec.BooleanValue GLOWING_TORCHFLOWERS; + private static final ModConfigSpec.BooleanValue GLOW_VINES_UNDER_LEAVES; + private static final ModConfigSpec.BooleanValue ENTITY_SPECIFIC_FIRE_OVERLAY_ENABLED; + + static { + ModConfigSpec.Builder b = new ModConfigSpec.Builder(); + + + // Elythia + + b.push("elythia"); + ELYTHIA_FIREFLY_PARTICLES_ENABLED = b + .comment("Whether firefly ambient particles appear at night in the Elythia dimension.") + .define("fireflyParticlesEnabled", true); + b.pop(); + + + // Dream Sand + + b.push("dreamSand"); + DREAM_SAND_ENABLED = b.comment("If true, jumping from dream sand applies temporary low gravity until solid ground is touched.").define("enabled", true); + DREAM_SAND_JUMP_VELOCITY_MULTIPLIER = b.comment("Multiplier applied to upward jump velocity when leaving dream sand.") .defineInRange("jumpVelocityMultiplier", 1.3D, 0.0D, 16.0D); + DREAM_SAND_GRAVITY_MULTIPLIER = b.comment("Multiplier applied to downward velocity while low gravity is active.") .defineInRange("gravityMultiplier", 0.45D, 0.0D, 1.0D); + DREAM_SAND_FALL_DAMAGE_MULTIPLIER = b.comment("Multiplier applied to fall damage during the low-gravity phase.") .defineInRange("fallDamageMultiplier", 0.35D, 0.0D, 1.0D); + DREAM_SAND_EFFECT_DURATION_SECONDS = b.comment("Seconds the low-gravity effect remains active after leaving dream sand.") .defineInRange("effectDurationSeconds", 7.0D, 0.0D, 60.0D); + b.pop(); + + + // Ichor + + b.push("ichor"); + ICHOR_WITHER_ENABLED = b + .comment("If true, players submerged in ichor receive a Wither effect.") + .define("witherEnabled", true); + b.pop(); + + + // Hushweed + + b.push("hushweed"); + HUSHWEED_SPORE_LIFETIME_SECONDS = b + .comment("How long (in seconds) a Hushweed spore projectile stays alive before disappearing.") + .defineInRange("sporeLifetimeSeconds", 5.0D, 0.1D, 120.0D); + b.pop(); + + + // Infinity Dimensions + + b.push("infinityDimensions"); + DISABLE_INFINITY_BOOK_PORTAL_CREATION = b + .comment("If true, book and quills cannot be thrown into nether portals to create random dimensions.") + .define("disableInfinityBookPortalCreation", false); + RAINBOW_ANTS_LEAD_TO_INFINITY_DIMENSIONS = b + .comment( + "Whether rainbow ants open randomly generated Infinity dimensions.", + "Only works if the Infinite Dimensions mod is installed." + ) + .define("rainbowAntsLeadToInfinityDimensions", net.neoforged.fml.ModList.get().isLoaded("infinity")); + b.pop(); + + + // Diamond Minecart + + b.push("diamondMinecart"); + DIAMOND_MINECART_ENABLED = b.comment("Master toggle. If false, acts like a regular minecart.") .define("enabled", true); + DIAMOND_MINECART_PLACES_RAILS = b.comment("Whether the cart automatically places rails from the rider's inventory.") .define("placesRails", true); + DIAMOND_MINECART_CRUISE_SPEED = b.comment("Cruise speed in blocks/tick while ridden (even without holding W).") .defineInRange("cruiseSpeed", 0.6D, 0.05D, 2.0D); + DIAMOND_MINECART_MAX_SPEED = b.comment("Maximum boosted speed in blocks/tick when W is held. Vanilla cap is 0.4.") .defineInRange("maxSpeed", 1.0D, 0.05D, 2.0D); + DIAMOND_MINECART_ACCELERATION = b.comment("Speed gained per tick while accelerating.") .defineInRange("acceleration", 0.03D, 0.001D, 0.5D); + DIAMOND_MINECART_DECELERATION = b.comment("Speed lost per tick while S is held (active braking).") .defineInRange("deceleration", 0.04D, 0.001D, 0.5D); + DIAMOND_MINECART_COAST_DECELERATION = b.comment("Speed lost per tick when neither W nor S is held (coasting friction).") .defineInRange("coastDeceleration", 0.01D, 0.001D, 0.5D); + DIAMOND_MINECART_MOB_DAMAGE_ENABLED = b.comment("Whether the cart deals damage to mobs it collides with at speed.") .define("mobDamageEnabled", true); + DIAMOND_MINECART_MAX_MOB_DAMAGE = b.comment("Maximum damage dealt at full speed. Scales linearly with current speed.") .defineInRange("maxMobDamage", 8.0D, 0.0D, 200.0D); + b.pop(); + + + // World / visual toggles + + b.push("world"); + DUPLICATOR_TREE_ENABLED = b.comment("If false, duplicator trees do not generate and duplicator saplings produce nothing.").define("duplicatorTreeEnabled", true); + GLOWING_TORCHFLOWERS = b.comment("Whether fully-grown torchflower blocks emit light.") .define("glowingTorchflowers", true); + GLOW_VINES_UNDER_LEAVES = b.comment("Whether glow vines can be placed and survive when attached under leaf blocks.") .define("glowVinesUnderLeaves", true); + ENTITY_SPECIFIC_FIRE_OVERLAY_ENABLED = b.comment("If true, burning entities use soul fire / dream fire overlays where appropriate.") .define("entitySpecificFireOverlayEnabled", true); + b.pop(); + + SPEC = b.build(); + } + + private AntarchyMiscConfig() {} + + static boolean elythiaFireflyParticlesEnabled() { return ELYTHIA_FIREFLY_PARTICLES_ENABLED.get(); } + + static boolean dreamSandEnabled() { return DREAM_SAND_ENABLED.get(); } + static double dreamSandJumpVelocityMultiplier() { return DREAM_SAND_JUMP_VELOCITY_MULTIPLIER.get(); } + static double dreamSandGravityMultiplier() { return DREAM_SAND_GRAVITY_MULTIPLIER.get(); } + static double dreamSandFallDamageMultiplier() { return DREAM_SAND_FALL_DAMAGE_MULTIPLIER.get(); } + static double dreamSandEffectDurationSeconds() { return DREAM_SAND_EFFECT_DURATION_SECONDS.get(); } + + static boolean ichorWitherEnabled() { return ICHOR_WITHER_ENABLED.get(); } + + static boolean duplicatorTreeEnabled() { return DUPLICATOR_TREE_ENABLED.get(); } + static boolean glowingTorchflowers() { return GLOWING_TORCHFLOWERS.get(); } + static boolean glowVinesUnderLeaves() { return GLOW_VINES_UNDER_LEAVES.get(); } + static boolean entitySpecificFireOverlayEnabled() { return ENTITY_SPECIFIC_FIRE_OVERLAY_ENABLED.get(); } + + static double hushweedSporeLifetimeSeconds() { return HUSHWEED_SPORE_LIFETIME_SECONDS.get(); } + + static boolean disableInfinityBookPortalCreation() { return DISABLE_INFINITY_BOOK_PORTAL_CREATION.get(); } + static boolean rainbowAntsLeadToInfinityDimensions() { return RAINBOW_ANTS_LEAD_TO_INFINITY_DIMENSIONS.get(); } + + static boolean diamondMinecartEnabled() { return DIAMOND_MINECART_ENABLED.get(); } + static boolean diamondMinecartPlacesRails() { return DIAMOND_MINECART_PLACES_RAILS.get(); } + static double diamondMinecartCruiseSpeed() { return DIAMOND_MINECART_CRUISE_SPEED.get(); } + static double diamondMinecartMaxSpeed() { return DIAMOND_MINECART_MAX_SPEED.get(); } + static double diamondMinecartAcceleration() { return DIAMOND_MINECART_ACCELERATION.get(); } + static double diamondMinecartDeceleration() { return DIAMOND_MINECART_DECELERATION.get(); } + static double diamondMinecartCoastDeceleration() { return DIAMOND_MINECART_COAST_DECELERATION.get(); } + static boolean diamondMinecartMobDamageEnabled() { return DIAMOND_MINECART_MOB_DAMAGE_ENABLED.get(); } + static double diamondMinecartMaxMobDamage() { return DIAMOND_MINECART_MAX_MOB_DAMAGE.get(); } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java new file mode 100644 index 00000000..97af8e9c --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java @@ -0,0 +1,465 @@ +package com.craisinlord.antarchy.neoforge; + +import net.neoforged.neoforge.common.ModConfigSpec; + +public final class AntarchyMobsConfig { + public static final ModConfigSpec SPEC; + + // ------------------------------------------------------------------------- + // Ants + // ------------------------------------------------------------------------- + private static final ModConfigSpec.BooleanValue ANTS_STEAL_FROM_CHESTS; + + private static final ModConfigSpec.BooleanValue BROWN_ANT_REQUIRES_REAGENT; + private static final ModConfigSpec.DoubleValue BROWN_ANT_HEALTH; + private static final ModConfigSpec.DoubleValue BROWN_ANT_MOVEMENT_SPEED; + private static final ModConfigSpec.DoubleValue BROWN_ANT_ATTACK_DAMAGE; + private static final ModConfigSpec.ConfigValue BROWN_ANT_DESTINATION_DIMENSION; + + private static final ModConfigSpec.BooleanValue RED_ANT_REQUIRES_REAGENT; + private static final ModConfigSpec.DoubleValue RED_ANT_HEALTH; + private static final ModConfigSpec.DoubleValue RED_ANT_MOVEMENT_SPEED; + private static final ModConfigSpec.DoubleValue RED_ANT_ATTACK_DAMAGE; + private static final ModConfigSpec.ConfigValue RED_ANT_DESTINATION_DIMENSION; + + private static final ModConfigSpec.BooleanValue RAINBOW_ANT_REQUIRES_REAGENT; + private static final ModConfigSpec.DoubleValue RAINBOW_ANT_HEALTH; + private static final ModConfigSpec.DoubleValue RAINBOW_ANT_MOVEMENT_SPEED; + private static final ModConfigSpec.DoubleValue RAINBOW_ANT_ATTACK_DAMAGE; + private static final ModConfigSpec.ConfigValue RAINBOW_ANT_NON_INFINITY_FALLBACK_DIMENSION; + + private static final ModConfigSpec.BooleanValue TERMITE_REQUIRES_REAGENT; + private static final ModConfigSpec.DoubleValue TERMITE_HEALTH; + private static final ModConfigSpec.DoubleValue TERMITE_MOVEMENT_SPEED; + private static final ModConfigSpec.DoubleValue TERMITE_ATTACK_DAMAGE; + private static final ModConfigSpec.ConfigValue TERMITE_DESTINATION_DIMENSION; + + + // ------------------------------------------------------------------------- + // Easter Bunny + // ------------------------------------------------------------------------- + private static final ModConfigSpec.BooleanValue EASTER_BUNNY_ENABLED; + private static final ModConfigSpec.IntValue EASTER_BUNNY_NATURAL_SPAWN_CHANCE_PERCENT; + + // ------------------------------------------------------------------------- + // Wasp + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue WASP_HEALTH; + private static final ModConfigSpec.DoubleValue WASP_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue WASP_MOVEMENT_SPEED; + + // ------------------------------------------------------------------------- + // Bomber + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue BOMBER_HEALTH; + private static final ModConfigSpec.DoubleValue BOMBER_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue BOMBER_EXPLOSION_DAMAGE; + private static final ModConfigSpec.DoubleValue BOMBER_EXPLOSION_RADIUS; + + // ------------------------------------------------------------------------- + // Kraken + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue KRAKEN_HEALTH; + private static final ModConfigSpec.DoubleValue KRAKEN_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER; + private static final ModConfigSpec.BooleanValue KRAKEN_SQUID_SPAWN_ENABLED; + private static final ModConfigSpec.BooleanValue KRAKEN_MASS_SPAWN_ENABLED; + + // ------------------------------------------------------------------------- + // Brutalfly + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue BRUTALFLY_HEALTH; + private static final ModConfigSpec.DoubleValue BRUTALFLY_SWIPE_DAMAGE; + private static final ModConfigSpec.DoubleValue BRUTALFLY_SPIT_DAMAGE; + + // ------------------------------------------------------------------------- + // Mantis + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue MANTIS_HEALTH; + private static final ModConfigSpec.DoubleValue MANTIS_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue MANTIS_MOVEMENT_SPEED; + private static final ModConfigSpec.DoubleValue MANTIS_FLYING_SPEED; + private static final ModConfigSpec.BooleanValue MANTIS_IGNORE_LIGHT_LEVEL; + + // ------------------------------------------------------------------------- + // Triffid + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue TRIFFID_HEALTH; + private static final ModConfigSpec.DoubleValue TRIFFID_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue TRIFFID_GRAB_DAMAGE; + + // ------------------------------------------------------------------------- + // Caterpillar + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue CATERPILLAR_PUPATION_TIME_SECONDS; + + // ------------------------------------------------------------------------- + // Ant Dance + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue ANT_DANCE_RADIUS; + + // ------------------------------------------------------------------------- + // Reverie + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue REVERIE_HEALTH; + private static final ModConfigSpec.DoubleValue REVERIE_INTEREST_RADIUS; + private static final ModConfigSpec.DoubleValue REVERIE_ABANDON_PLAYER_DISTANCE; + private static final ModConfigSpec.IntValue REVERIE_NOTICE_DURATION_TICKS; + private static final ModConfigSpec.IntValue REVERIE_INTEREST_DURATION_TICKS; + private static final ModConfigSpec.IntValue REVERIE_REBIND_COOLDOWN_TICKS; + private static final ModConfigSpec.IntValue REVERIE_DAMAGE_REACTION_DURATION_TICKS; + private static final ModConfigSpec.DoubleValue REVERIE_DANGEROUS_FALL_DISTANCE; + private static final ModConfigSpec.DoubleValue REVERIE_DANGEROUS_FALL_SPEED; + private static final ModConfigSpec.DoubleValue REVERIE_WARNING_THREAT_RADIUS; + private static final ModConfigSpec.DoubleValue REVERIE_WARNING_THREAT_VERTICAL_RANGE; + private static final ModConfigSpec.IntValue REVERIE_DUPLICATION_COOLDOWN_TICKS; + + // ------------------------------------------------------------------------- + // Basilisk + // ------------------------------------------------------------------------- + private static final ModConfigSpec.BooleanValue BASILISK_PETRIFYING_GAZE_ENABLED; + private static final ModConfigSpec.IntValue BASILISK_SPAWN_MAX_LIGHT_LEVEL; + + // ------------------------------------------------------------------------- + // Lucid + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue LUCID_ATTACK_RANGE; + private static final ModConfigSpec.DoubleValue LUCID_PEARL_INVERTED_DURATION_SECONDS; + + // ------------------------------------------------------------------------- + // Dread effect + // ------------------------------------------------------------------------- + private static final ModConfigSpec.BooleanValue DREAD_HALLUCINATION_SOUNDS_ENABLED; + private static final ModConfigSpec.DoubleValue DREAD_HALLUCINATION_SOUND_MIN_INTERVAL; + private static final ModConfigSpec.DoubleValue DREAD_HALLUCINATION_SOUND_MAX_INTERVAL; + private static final ModConfigSpec.BooleanValue DREAD_HALLUCINATION_MOBS_ENABLED; + private static final ModConfigSpec.DoubleValue DREAD_HALLUCINATION_MOB_MIN_INTERVAL; + private static final ModConfigSpec.DoubleValue DREAD_HALLUCINATION_MOB_MAX_INTERVAL; + + static { + ModConfigSpec.Builder b = new ModConfigSpec.Builder(); + + + // Ants (shared) + + ANTS_STEAL_FROM_CHESTS = b + .comment("Whether ants will steal edible items from nearby chest inventories.") + .define("antsStealFromChests", true); + + b.push("brownAnt"); + BROWN_ANT_REQUIRES_REAGENT = b + .comment( + "If true, brown ants must be activated once with a reagent before they teleport.", + "Reagent tag: data/antarchy/tags/item/brown_ant_activation_items.json", + "Breeding foods tag: data/antarchy/tags/item/brown_ant_breeding_foods.json" + ) + .define("requiresReagent", false); + BROWN_ANT_HEALTH = b.comment("Base max health.") .defineInRange("health", 5.0D, 0.1D, 1024.0D); + BROWN_ANT_MOVEMENT_SPEED = b.comment("Base movement speed.") .defineInRange("movementSpeed", 0.28D, 0.0D, 10.0D); + BROWN_ANT_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 1.0D, 0.0D, 1024.0D); + BROWN_ANT_DESTINATION_DIMENSION = b + .comment("Dimension id brown ants teleport players to.") + .define("destinationDimension", "antarchy:elythia", AntarchyMobsConfig::isValidDimensionId); + b.pop(); + + b.push("redAnt"); + RED_ANT_REQUIRES_REAGENT = b + .comment( + "If true, red ants must be activated once with a reagent before they teleport.", + "Reagent tag: data/antarchy/tags/item/red_ant_activation_items.json", + "Breeding foods tag: data/antarchy/tags/item/red_ant_breeding_foods.json" + ) + .define("requiresReagent", false); + RED_ANT_HEALTH = b.comment("Base max health.") .defineInRange("health", 5.0D, 0.1D, 1024.0D); + RED_ANT_MOVEMENT_SPEED = b.comment("Base movement speed.") .defineInRange("movementSpeed", 0.30D, 0.0D, 10.0D); + RED_ANT_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 3.0D, 0.0D, 1024.0D); + RED_ANT_DESTINATION_DIMENSION = b + .comment("Dimension id red ants teleport players to.") + .define("destinationDimension", "antarchy:thoraxis", AntarchyMobsConfig::isValidDimensionId); + b.pop(); + + b.push("rainbowAnt"); + RAINBOW_ANT_REQUIRES_REAGENT = b + .comment( + "If true, rainbow ants must be activated with a reagent before opening an Infinity destination.", + "Reagent tag: data/antarchy/tags/item/rainbow_ant_activation_items.json", + "Breeding foods tag: data/antarchy/tags/item/rainbow_ant_breeding_foods.json" + ) + .define("requiresReagent", true); + RAINBOW_ANT_HEALTH = b.comment("Base max health.") .defineInRange("health", 5.0D, 0.1D, 1024.0D); + RAINBOW_ANT_MOVEMENT_SPEED = b.comment("Base movement speed.") .defineInRange("movementSpeed", 0.28D, 0.0D, 10.0D); + RAINBOW_ANT_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 1.0D, 0.0D, 1024.0D); + RAINBOW_ANT_NON_INFINITY_FALLBACK_DIMENSION = b + .comment("Dimension used by rainbow ants when Infinity behavior is disabled.") + .define("nonInfinityFallbackDimension", "antarchy:elythia", AntarchyMobsConfig::isValidDimensionId); + b.pop(); + + b.push("termite"); + TERMITE_REQUIRES_REAGENT = b + .comment( + "If true, termites must be activated once with a reagent before they teleport.", + "Reagent tag: data/antarchy/tags/item/termite_activation_items.json", + "Breeding foods tag: data/antarchy/tags/item/termite_breeding_foods.json" + ) + .define("requiresReagent", false); + TERMITE_HEALTH = b.comment("Base max health.") .defineInRange("health", 5.0D, 0.1D, 1024.0D); + TERMITE_MOVEMENT_SPEED = b.comment("Base movement speed.") .defineInRange("movementSpeed", 0.28D, 0.0D, 10.0D); + TERMITE_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 1.0D, 0.0D, 1024.0D); + TERMITE_DESTINATION_DIMENSION = b + .comment("Dimension id termites teleport players to.") + .define("destinationDimension", "antarchy:cavaryn", AntarchyMobsConfig::isValidDimensionId); + b.pop(); + + + // Easter Bunny + + b.push("easterBunny"); + EASTER_BUNNY_ENABLED = b + .comment( + "If false, Easter Bunnies stop laying spawn eggs.", + "Blacklist tag: data/antarchy/tags/item/easter_bunny_spawn_egg_blacklist.json" + ) + .define("enabled", true); + EASTER_BUNNY_NATURAL_SPAWN_CHANCE_PERCENT = b + .comment( + "Percent chance a naturally spawned rabbit is replaced by an Easter Bunny.", + "Only applies to natural and chunk-generation spawns, not breeding." + ) + .defineInRange("naturalSpawnChancePercent", 1, 0, 100); + b.pop(); + + + // Wasp + + b.push("wasp"); + WASP_HEALTH = b.comment("Base max health.") .defineInRange("health", 16.0D, 1.0D, 32768.0D); + WASP_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 4.0D, 0.0D, 1024.0D); + WASP_MOVEMENT_SPEED = b.comment("Base wasp speed used for both flying and movement. Vanilla bee default is 0.3, so 0.39 is 30% faster.").defineInRange("movementSpeed", 0.39D, 0.0D, 10.0D); + b.pop(); + + + // Bomber + + b.push("bomber"); + BOMBER_HEALTH = b.comment("Base max health.") .defineInRange("health", 10.0D, 1.0D, 32768.0D); + BOMBER_ATTACK_DAMAGE = b.comment("Direct damage dealt on contact before detonation.") .defineInRange("attackDamage", 4.0D, 0.0D, 1024.0D); + BOMBER_EXPLOSION_DAMAGE = b.comment("Extra damage dealt at the center of the explosion.") .defineInRange("explosionDamage", 8.0D, 0.0D, 1024.0D); + BOMBER_EXPLOSION_RADIUS = b.comment("Explosion radius when a bomber detonates. TNT uses 4.0.").defineInRange("explosionRadius", 4.0D, 0.0D, 128.0D); + b.pop(); + + + // Kraken + + b.push("kraken"); + KRAKEN_HEALTH = b.comment("Base max health.") .defineInRange("health", 750.0D, 1.0D, 32768.0D); + KRAKEN_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 45.0D, 0.0D, 1024.0D); + KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER = b.comment("Damage multiplier from projectiles. 0.5 means 50% damage.") .defineInRange("projectileDamageTakenMultiplier", 0.5D, 0.0D, 10.0D); + KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true); + KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, killing a Missile Squid has a 1/100 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true); + b.pop(); + + + // Brutalfly + + b.push("brutalfly"); + BRUTALFLY_HEALTH = b.comment("Base max health.") .defineInRange("health", 200.0D, 1.0D, 32768.0D); + BRUTALFLY_SWIPE_DAMAGE = b.comment("Damage dealt by a claw swipe.") .defineInRange("swipeDamage", 15.0D, 0.0D, 1024.0D); + BRUTALFLY_SPIT_DAMAGE = b.comment("Direct hit damage from a spit orb before lingering effect.").defineInRange("spitDamage", 5.0D, 0.0D, 1024.0D); + b.pop(); + + + // Mantis + + b.push("mantis"); + MANTIS_HEALTH = b.comment("Base max health.") .defineInRange("health", 50.0D, 1.0D, 32768.0D); + MANTIS_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 9.0D, 0.0D, 1024.0D); + MANTIS_MOVEMENT_SPEED = b.comment("Base movement speed.") .defineInRange("movementSpeed", 0.42D, 0.0D, 10.0D); + MANTIS_FLYING_SPEED = b.comment("Base flying speed.") .defineInRange("flyingSpeed", 0.77D, 0.0D, 10.0D); + MANTIS_IGNORE_LIGHT_LEVEL = b.comment("If false, mantises only spawn naturally in darkness (standard monster rules). If true, light level is ignored.").define("ignoreLightLevel", false); + b.pop(); + + + // Triffid + + b.push("triffid"); + TRIFFID_HEALTH = b.comment("Base max health.") .defineInRange("health", 80.0D, 1.0D, 32768.0D); + TRIFFID_ATTACK_DAMAGE = b.comment("Damage dealt by the sweep attack.") .defineInRange("attackDamage", 10.0D, 0.0D, 1024.0D); + TRIFFID_GRAB_DAMAGE = b.comment("Damage dealt by the grab attack.") .defineInRange("grabDamage", 15.0D, 0.0D, 1024.0D); + b.pop(); + + + // Caterpillar + + b.push("caterpillar"); + CATERPILLAR_PUPATION_TIME_SECONDS = b + .comment("Time in seconds before a caterpillar emerges from its chrysalis.") + .defineInRange("pupationTimeSeconds", 600.0D, 1.0D, 3600.0D); + b.pop(); + + + // Ant Dance + + b.push("antDance"); + ANT_DANCE_RADIUS = b + .comment("Radius in blocks where ants will dance around a playing jukebox.") + .defineInRange("radius", 5.0D, 1.0D, 32.0D); + b.pop(); + + + // Reverie + + b.push("reverie"); + REVERIE_HEALTH = b.comment("Base max health.") .defineInRange("health", 20.0D, 1.0D, 1024.0D); + REVERIE_INTEREST_RADIUS = b.comment("How far the Reverie notices and starts following a player.") .defineInRange("interestRadius", 16.0D, 1.0D, 64.0D); + REVERIE_ABANDON_PLAYER_DISTANCE = b.comment("Distance where the Reverie gives up and returns to ambient wandering.") .defineInRange("abandonPlayerDistance", 24.0D, 1.0D, 96.0D); + REVERIE_NOTICE_DURATION_TICKS = b.comment("Ticks the Reverie watches a player before becoming bound.") .defineInRange("noticeDurationTicks", 20, 1, 200); + REVERIE_INTEREST_DURATION_TICKS = b.comment("Ticks the Reverie stays interested after a color/state change.") .defineInRange("interestDurationTicks", 360, 20, 7200); + REVERIE_REBIND_COOLDOWN_TICKS = b.comment("Ticks the Reverie waits after unbinding before it can bind again.") .defineInRange("rebindCooldownTicks", 100, 0, 24000); + REVERIE_DAMAGE_REACTION_DURATION_TICKS = b.comment("Ticks the Reverie stays in its hurt warning reaction after being damaged.") .defineInRange("damageReactionDurationTicks", 40, 1, 400); + REVERIE_DANGEROUS_FALL_DISTANCE = b.comment("Minimum fall distance before the Reverie considers its player in danger. Vanilla fall damage starts at 3.").defineInRange("dangerousFallDistance", 3.0D, 0.0D, 64.0D); + REVERIE_DANGEROUS_FALL_SPEED = b.comment("Minimum vertical speed before a dangerous fall triggers purple protection.") .defineInRange("dangerousFallSpeed", 0.18D, 0.0D, 4.0D); + REVERIE_WARNING_THREAT_RADIUS = b.comment("Horizontal scan radius for hostiles that trigger red warning mode.") .defineInRange("warningThreatRadius", 10.0D, 1.0D, 64.0D); + REVERIE_WARNING_THREAT_VERTICAL_RANGE = b.comment("Vertical scan range for hostiles that trigger red warning mode.") .defineInRange("warningThreatVerticalRange", 5.0D, 1.0D, 32.0D); + REVERIE_DUPLICATION_COOLDOWN_TICKS = b.comment("Cooldown in ticks before Blood Crystal can duplicate the Reverie again.") .defineInRange("duplicationCooldownTicks", 6000, 20, 24000); + b.pop(); + + + // Basilisk + + b.push("basilisk"); + BASILISK_PETRIFYING_GAZE_ENABLED = b + .comment("If false, the Basilisk will not use its petrifying gaze and will never apply the Paralyzed effect.") + .define("petrifyingGazeEnabled", true); + BASILISK_SPAWN_MAX_LIGHT_LEVEL = b + .comment("Maximum local raw light level where basilisk natural spawning is allowed.") + .defineInRange("spawnMaxLightLevel", 5, 0, 15); + b.pop(); + + + // Lucid + + b.push("lucid"); + LUCID_ATTACK_RANGE = b + .comment("Attack range in blocks. The Lucid fires its gravity blast when a target enters this radius.") + .defineInRange("attackRange", 9.0D, 1.0D, 32.0D); + LUCID_PEARL_INVERTED_DURATION_SECONDS = b + .comment("How long the Inverted effect from a Lucid pearl lasts, in seconds.") + .defineInRange("pearlInvertedDurationSeconds", 6.0D, 0.0D, 3600.0D); + b.pop(); + + + // Dread effect + + b.push("dread"); + + b.push("hallucinationSounds"); + DREAD_HALLUCINATION_SOUNDS_ENABLED = b.comment("If false, the Dread effect will not play random hallucination sounds. Sound pool tag: data/antarchy/tags/sound_event/dread_hallucination_sounds.json").define("enabled", true); + DREAD_HALLUCINATION_SOUND_MIN_INTERVAL = b.comment("Minimum seconds between hallucination sound triggers.").defineInRange("minIntervalSeconds", 3.0D, 0.1D, 300.0D); + DREAD_HALLUCINATION_SOUND_MAX_INTERVAL = b.comment("Maximum seconds between hallucination sound triggers.").defineInRange("maxIntervalSeconds", 10.0D, 0.1D, 300.0D); + b.pop(); + + b.push("hallucinationMobs"); + DREAD_HALLUCINATION_MOBS_ENABLED = b.comment("If false, the Dread effect will not render apparitions.").define("enabled", true); + DREAD_HALLUCINATION_MOB_MIN_INTERVAL = b.comment("Minimum seconds between apparition spawns.").defineInRange("minIntervalSeconds", 6.0D, 0.1D, 300.0D); + DREAD_HALLUCINATION_MOB_MAX_INTERVAL = b.comment("Maximum seconds between apparition spawns.").defineInRange("maxIntervalSeconds", 16.0D, 0.1D, 300.0D); + b.pop(); + + b.pop(); // dread + + SPEC = b.build(); + } + + private AntarchyMobsConfig() {} + + private static boolean isValidDimensionId(Object value) { + return value instanceof String s && net.minecraft.resources.ResourceLocation.tryParse(s) != null; + } + + static boolean antsStealFromChests() { return ANTS_STEAL_FROM_CHESTS.get(); } + + static boolean brownAntRequiresReagent() { return BROWN_ANT_REQUIRES_REAGENT.get(); } + static double brownAntHealth() { return BROWN_ANT_HEALTH.get(); } + static double brownAntMovementSpeed() { return BROWN_ANT_MOVEMENT_SPEED.get(); } + static double brownAntAttackDamage() { return BROWN_ANT_ATTACK_DAMAGE.get(); } + static String brownAntDestinationDimension() { return BROWN_ANT_DESTINATION_DIMENSION.get(); } + + static boolean redAntRequiresReagent() { return RED_ANT_REQUIRES_REAGENT.get(); } + static double redAntHealth() { return RED_ANT_HEALTH.get(); } + static double redAntMovementSpeed() { return RED_ANT_MOVEMENT_SPEED.get(); } + static double redAntAttackDamage() { return RED_ANT_ATTACK_DAMAGE.get(); } + static String redAntDestinationDimension() { return RED_ANT_DESTINATION_DIMENSION.get(); } + + static boolean rainbowAntRequiresReagent() { return RAINBOW_ANT_REQUIRES_REAGENT.get(); } + static double rainbowAntHealth() { return RAINBOW_ANT_HEALTH.get(); } + static double rainbowAntMovementSpeed() { return RAINBOW_ANT_MOVEMENT_SPEED.get(); } + static double rainbowAntAttackDamage() { return RAINBOW_ANT_ATTACK_DAMAGE.get(); } + static String rainbowAntNonInfinityFallbackDimension() { return RAINBOW_ANT_NON_INFINITY_FALLBACK_DIMENSION.get(); } + + static boolean termiteRequiresReagent() { return TERMITE_REQUIRES_REAGENT.get(); } + static double termiteHealth() { return TERMITE_HEALTH.get(); } + static double termiteMovementSpeed() { return TERMITE_MOVEMENT_SPEED.get(); } + static double termiteAttackDamage() { return TERMITE_ATTACK_DAMAGE.get(); } + static String termiteDestinationDimension() { return TERMITE_DESTINATION_DIMENSION.get(); } + + + static boolean easterBunnyEnabled() { return EASTER_BUNNY_ENABLED.get(); } + static int easterBunnyNaturalSpawnChancePercent() { return EASTER_BUNNY_NATURAL_SPAWN_CHANCE_PERCENT.get(); } + + static double waspHealth() { return WASP_HEALTH.get(); } + static double waspAttackDamage() { return WASP_ATTACK_DAMAGE.get(); } + static double waspMovementSpeed() { return WASP_MOVEMENT_SPEED.get(); } + + static double bomberHealth() { return BOMBER_HEALTH.get(); } + static double bomberAttackDamage() { return BOMBER_ATTACK_DAMAGE.get(); } + static double bomberExplosionDamage() { return BOMBER_EXPLOSION_DAMAGE.get(); } + static double bomberExplosionRadius() { return BOMBER_EXPLOSION_RADIUS.get(); } + + static double krakenHealth() { return KRAKEN_HEALTH.get(); } + static double krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); } + static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); } + static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); } + static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.get(); } + + static double brutalflyHealth() { return BRUTALFLY_HEALTH.get(); } + static double brutalflySwipeDamage() { return BRUTALFLY_SWIPE_DAMAGE.get(); } + static double brutalflySpitDamage() { return BRUTALFLY_SPIT_DAMAGE.get(); } + + static double mantisHealth() { return MANTIS_HEALTH.get(); } + static double mantisAttackDamage() { return MANTIS_ATTACK_DAMAGE.get(); } + static double mantisMovementSpeed() { return MANTIS_MOVEMENT_SPEED.get(); } + static double mantisFlyingSpeed() { return MANTIS_FLYING_SPEED.get(); } + static boolean mantisIgnoreLightLevel() { return MANTIS_IGNORE_LIGHT_LEVEL.get(); } + + static double triffidHealth() { return TRIFFID_HEALTH.get(); } + static double triffidAttackDamage() { return TRIFFID_ATTACK_DAMAGE.get(); } + static double triffidGrabDamage() { return TRIFFID_GRAB_DAMAGE.get(); } + + static double caterpillarPupationTimeSeconds() { return CATERPILLAR_PUPATION_TIME_SECONDS.get(); } + static double antDanceRadius() { return ANT_DANCE_RADIUS.get(); } + + static double reverieHealth() { return REVERIE_HEALTH.get(); } + static double reverieInterestRadius() { return REVERIE_INTEREST_RADIUS.get(); } + static double reverieAbandonPlayerDistance() { return REVERIE_ABANDON_PLAYER_DISTANCE.get(); } + static int reverieNoticeDurationTicks() { return REVERIE_NOTICE_DURATION_TICKS.get(); } + static int reverieInterestDurationTicks() { return REVERIE_INTEREST_DURATION_TICKS.get(); } + static int reverieRebindCooldownTicks() { return REVERIE_REBIND_COOLDOWN_TICKS.get(); } + static int reverieDamageReactionDurationTicks() { return REVERIE_DAMAGE_REACTION_DURATION_TICKS.get(); } + static double reverieDangerousFallDistance() { return REVERIE_DANGEROUS_FALL_DISTANCE.get(); } + static double reverieDangerousFallSpeed() { return REVERIE_DANGEROUS_FALL_SPEED.get(); } + static double reverieWarningThreatRadius() { return REVERIE_WARNING_THREAT_RADIUS.get(); } + static double reverieWarningThreatVerticalRange() { return REVERIE_WARNING_THREAT_VERTICAL_RANGE.get(); } + static int reverieDuplicationCooldownTicks() { return REVERIE_DUPLICATION_COOLDOWN_TICKS.get(); } + + static boolean basiliskPetrifyingGazeEnabled() { return BASILISK_PETRIFYING_GAZE_ENABLED.get(); } + static int basiliskSpawnMaxLightLevel() { return BASILISK_SPAWN_MAX_LIGHT_LEVEL.get(); } + + static double lucidAttackRange() { return LUCID_ATTACK_RANGE.get(); } + static double lucidPearlInvertedDurationSeconds() { return LUCID_PEARL_INVERTED_DURATION_SECONDS.get(); } + + static boolean dreadHallucinationSoundsEnabled() { return DREAD_HALLUCINATION_SOUNDS_ENABLED.get(); } + static double dreadHallucinationSoundMinInterval() { return DREAD_HALLUCINATION_SOUND_MIN_INTERVAL.get(); } + static double dreadHallucinationSoundMaxInterval() { return DREAD_HALLUCINATION_SOUND_MAX_INTERVAL.get(); } + static boolean dreadHallucinationMobsEnabled() { return DREAD_HALLUCINATION_MOBS_ENABLED.get(); } + static double dreadHallucinationMobMinInterval() { return DREAD_HALLUCINATION_MOB_MIN_INTERVAL.get(); } + static double dreadHallucinationMobMaxInterval() { return DREAD_HALLUCINATION_MOB_MAX_INTERVAL.get(); } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoForgeContentOLD.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoForgeContentOLD.java new file mode 100644 index 00000000..86b2a79a --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoForgeContentOLD.java @@ -0,0 +1,3489 @@ +package com.craisinlord.antarchy.neoforge; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.bloodglass.BloodglassAccess; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.item.BloodCrystalShardItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.network.BloodCrystalKatanaTrailPayload; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluidType; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.HoneyedAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.trades.DrTrayaurusTradeManager; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.content.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherManager; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherManager; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.command.GravityCommand; +import com.craisinlord.antarchy.content.command.CaterpillarCommand; +import com.craisinlord.antarchy.neoforge.network.AntarchyGravityNetworking; +import com.craisinlord.antarchy.neoforge.network.BrutalflyElytraNetworking; +import com.craisinlord.antarchy.neoforge.network.MultipartNetworking; +import com.craisinlord.antarchy.neoforge.network.ThoraxisWeatherNetworking; +import com.craisinlord.antarchy.neoforge.entity.multipart.MultipartPartEntity; +import java.util.List; + +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoForgeEvents; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeCreativeModeTabs; +import com.mojang.serialization.MapCodec; + +import java.util.Comparator; + +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.monster.Enemy; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.ComposterBlock; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.LightLayer; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.neoforged.fml.ModList; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.common.NeoForgeMod; +import net.neoforged.neoforge.fluids.FluidInteractionRegistry; +import net.neoforged.neoforge.common.ItemAbilities; +import net.neoforged.neoforge.common.DeferredSpawnEggItem; +import net.neoforged.neoforge.common.SoundActions; +import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; +import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent; +import net.neoforged.neoforge.event.AddReloadListenerEvent; +import net.neoforged.neoforge.event.RegisterCommandsEvent; +import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; +import net.neoforged.neoforge.event.entity.EntityAttributeModificationEvent; +import net.neoforged.neoforge.event.entity.living.LivingEquipmentChangeEvent; +import net.neoforged.neoforge.event.entity.RegisterSpawnPlacementsEvent; +import net.neoforged.neoforge.event.entity.living.LivingDeathEvent; +import net.neoforged.neoforge.event.entity.living.LivingEvent; +import net.neoforged.neoforge.event.entity.living.LivingFallEvent; +import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent; +import net.neoforged.neoforge.event.entity.living.MobSpawnEvent; +import net.neoforged.neoforge.event.entity.living.MobEffectEvent; +import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; +import net.neoforged.neoforge.event.level.BlockEvent; +import net.neoforged.neoforge.network.PacketDistributor; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; +import net.neoforged.neoforge.event.tick.LevelTickEvent; +import net.neoforged.neoforge.event.tick.PlayerTickEvent; +import net.neoforged.neoforge.event.tick.EntityTickEvent; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.NeoForgeRegistries; + +public final class AntarchyNeoForgeContentOLD { +// public static final boolean CREATE_LOADED = isModLoaded("create"); +// private static final ResourceLocation THORAXIS_DIMENSION_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis"); +// private static final long THORAXIS_SPAWN_DEBUG_INTERVAL = 200L; +// private static long lastThoraxisSpawnSummaryLogTick = Long.MIN_VALUE; +// private static long lastThoraxisSpawnPlacementLogTick = Long.MIN_VALUE; +// private static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Antarchy.MODID); +// private static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Antarchy.MODID); +// private static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Antarchy.MODID); +// private static final DeferredRegister ARMOR_MATERIALS = DeferredRegister.create(Registries.ARMOR_MATERIAL, Antarchy.MODID); +// private static final DeferredRegister> ENTITY_TYPES = DeferredRegister.create(Registries.ENTITY_TYPE, Antarchy.MODID); +// private static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, Antarchy.MODID); +// private static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(Registries.PARTICLE_TYPE, Antarchy.MODID); +// private static final DeferredRegister> FEATURES = DeferredRegister.create(Registries.FEATURE, Antarchy.MODID); +// private static final DeferredRegister> BIOME_SOURCES = DeferredRegister.create(Registries.BIOME_SOURCE, Antarchy.MODID); +// private static final DeferredRegister> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, Antarchy.MODID); +// private static final DeferredRegister> ENTITY_SUB_PREDICATES = DeferredRegister.create(Registries.ENTITY_SUB_PREDICATE_TYPE, Antarchy.MODID); +// private static final DeferredRegister ATTRIBUTES = DeferredRegister.create(Registries.ATTRIBUTE, Antarchy.MODID); +// private static final DeferredHolder DOUBLE_DAMAGE_CHANCE = ATTRIBUTES.register( +// "double_damage_chance", +// () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.double_damage_chance", 0.0, 0.0, 1.0).setSyncable(true) +// ); +// private static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(Registries.MOB_EFFECT, Antarchy.MODID); +// private static final DeferredRegister POTIONS = DeferredRegister.create(Registries.POTION, Antarchy.MODID); +// private static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(Registries.SOUND_EVENT, Antarchy.MODID); +// private static final DeferredRegister FLUID_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.FLUID_TYPES, Antarchy.MODID); +// private static final DeferredRegister FLUIDS = DeferredRegister.create(Registries.FLUID, Antarchy.MODID); +// private static final Tier ULTIMATE_TIER = new SimpleToolTier( +// 3072, +// 10.5F, +// 0.0F, +// Tiers.NETHERITE.getIncorrectBlocksForDrops(), +// 25, +// AntarchyNeoForgeContentOLD::ultimateRepairIngredient +// ); +// private static final Tier BLOOD_CRYSTAL_KATANA_TIER = new SimpleToolTier( +// 1200, +// 8.0F, +// 0.0F, +// Tiers.DIAMOND.getIncorrectBlocksForDrops(), +// 18, +// AntarchyNeoForgeContentOLD::bloodCrystalRepairIngredient +// ); +// public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); +// public static final DeferredHolder SQUIDZOOKA_FIRE = registerSoundEvent("squidzooka_fire"); +// public static final DeferredHolder SHRINK_RAY_SOUND = registerSoundEvent("shrink_ray"); +// public static final DeferredHolder GROWTH_RAY_SOUND = registerSoundEvent("growth_ray"); +// public static final DeferredHolder SIZE_RAY_CHARGE = registerSoundEvent("size_ray_charge"); +// public static final DeferredHolder ANT_AMBIENT = registerSoundEvent("ant_ambient"); +// public static final DeferredHolder ANT_IDLE = registerSoundEvent("ant_idle"); +// public static final DeferredHolder ANT_HURT = registerSoundEvent("ant_hurt"); +// public static final DeferredHolder ANT_BITE = registerSoundEvent("ant_bite"); +// public static final DeferredHolder ANT_GATHER = registerSoundEvent("ant_gather"); +// public static final DeferredHolder ANT_NEST = registerSoundEvent("ant_nest"); +// public static final DeferredHolder CLOUD_SHARK_BITE = registerSoundEvent("cloud_shark_bite"); +// public static final DeferredHolder CLOUD_SHARK_IDLE = registerSoundEvent("cloud_shark_idle"); +// public static final DeferredHolder CLOUD_SHARK_HURT = registerSoundEvent("cloud_shark_hurt"); +// public static final DeferredHolder CLOUD_SHARK_DEATH = registerSoundEvent("cloud_shark_death"); +// public static final DeferredHolder CLOUD_SHARK_FLY = registerSoundEvent("cloud_shark_fly"); +// public static final DeferredHolder CATERPILLAR_IDLE = registerSoundEvent("caterpillar_idle"); +// public static final DeferredHolder CATERPILLAR_HURT = registerSoundEvent("caterpillar_hurt"); +// public static final DeferredHolder CATERPILLAR_CRAWL = registerSoundEvent("caterpillar_crawl"); +// public static final DeferredHolder BUTTERFLY_HURT = registerSoundEvent("butterfly_hurt"); +// public static final DeferredHolder BRUTALFLY_IDLE = registerSoundEvent("brutalfly_idle"); +// public static final DeferredHolder BRUTALFLY_DEATH = registerSoundEvent("brutalfly_death"); +// public static final DeferredHolder ELYTHIA_FIREFLY_AMBIENT = registerSoundEvent("ambient.elythia.firefly"); +// public static final DeferredHolder MISSILE_SQUID_AMBIENT = registerSoundEvent("missile_squid_ambient"); +// public static final DeferredHolder MISSILE_SQUID_HURT = registerSoundEvent("missile_squid_hurt"); +// public static final DeferredHolder MISSILE_SQUID_DEATH = registerSoundEvent("missile_squid_death"); +// public static final DeferredHolder MISSILE_SQUID_ATTACK = registerSoundEvent("missile_squid_attack"); +// public static final DeferredHolder KRAKEN_FLYING_LOOP = registerSoundEvent("kraken_flying_loop"); +// public static final DeferredHolder KRAKEN_FLYING_SIDEWAYS_LOOP = registerSoundEvent("kraken_flying_sideways_loop"); +// public static final DeferredHolder KRAKEN_ATTACK = registerSoundEvent("kraken_attack"); +// public static final DeferredHolder KRAKEN_SPIN = registerSoundEvent("kraken_spin"); +// public static final DeferredHolder KRAKEN_ROAR = registerSoundEvent("kraken_roar"); +// public static final DeferredHolder KRAKEN_SUMMON = registerSoundEvent("kraken_summon"); +// public static final DeferredHolder KRAKEN_HURT = registerSoundEvent("kraken_hurt"); +// public static final DeferredHolder KRAKEN_DEATH = registerSoundEvent("kraken_death"); +// public static final DeferredHolder BASILISK_IDLE_LOOP = registerSoundEvent("basilisk_idle_loop"); +// public static final DeferredHolder BASILISK_SLITHER_LOOP = registerSoundEvent("basilisk_slither_loop"); +// public static final DeferredHolder BASILISK_BITE = registerSoundEvent("basilisk_bite"); +// public static final DeferredHolder BASILISK_HISS = registerSoundEvent("basilisk_hiss"); +// public static final DeferredHolder BASILISK_HURT = registerSoundEvent("basilisk_hurt"); +// public static final DeferredHolder BASILISK_DEATH = registerSoundEvent("basilisk_death"); +// public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_AMBIENT = registerSoundEvent("thoraxis_nightmare_wastes_ambient"); +// public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_ADDITIONS = registerSoundEvent("thoraxis_nightmare_wastes_additions"); +// public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_MOOD = registerSoundEvent("thoraxis_nightmare_wastes_mood"); +// public static final DeferredHolder THORAXIS_DREAM_DUNES_AMBIENT = registerSoundEvent("thoraxis_dream_dunes_ambient"); +// public static final DeferredHolder THORAXIS_DREAM_DUNES_ADDITIONS = registerSoundEvent("thoraxis_dream_dunes_additions"); +// public static final DeferredHolder THORAXIS_DREAM_DUNES_MOOD = registerSoundEvent("thoraxis_dream_dunes_mood"); +// public static final DeferredHolder THORAXIS_LUCID_POOLS_AMBIENT = registerSoundEvent("thoraxis_lucid_pools_ambient"); +// public static final DeferredHolder THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions"); +// public static final DeferredHolder THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood"); +// public static final DeferredHolder LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); +// public static final DeferredHolder LUCID_FLYING = registerSoundEvent("lucid_flying"); +// public static final DeferredHolder LUCID_ATTACK = registerSoundEvent("lucid_attack"); +// public static final DeferredHolder LUCID_BOLT_SOUND = registerSoundEvent("lucid_bolt"); +// public static final DeferredHolder LUCID_HURT = registerSoundEvent("lucid_hurt"); +// public static final DeferredHolder LUCID_DEATH = registerSoundEvent("lucid_death"); +// public static final DeferredHolder REVERIE_IDLE = registerSoundEvent("reverie_idle"); +// public static final DeferredHolder REVERIE_HURT = registerSoundEvent("reverie_hurt"); +// public static final DeferredHolder REVERIE_WORRY = registerSoundEvent("reverie_worry"); +// public static final DeferredHolder REVERIE_SAVE = registerSoundEvent("reverie_save"); +// public static final DeferredHolder REVERIE_JOIN_PLAYER = registerSoundEvent("reverie_join_player"); +// public static final DeferredHolder REVERIE_ALERT = registerSoundEvent("reverie_alert"); +// public static final DeferredHolder FLYING_SQUIRREL_IDLE = registerSoundEvent("flying_squirrel_idle"); +// public static final DeferredHolder FLYING_SQUIRREL_BEG = registerSoundEvent("flying_squirrel_beg"); +// public static final DeferredHolder FLYING_SQUIRREL_NUT = registerSoundEvent("flying_squirrel_nut"); +// public static final DeferredHolder FLYING_SQUIRREL_GLIDE_LOOP = registerSoundEvent("flying_squirrel_glide_loop"); +// public static final DeferredHolder FLYING_SQUIRREL_HURT = registerSoundEvent("flying_squirrel_hurt"); +// public static final DeferredHolder FLYING_SQUIRREL_DEATH = registerSoundEvent("flying_squirrel_death"); +// public static final DeferredHolder NIGHTMARE_IDLE = registerSoundEvent("nightmare_idle"); +// public static final DeferredHolder NIGHTMARE_HURT = registerSoundEvent("nightmare_hurt"); +// public static final DeferredHolder NIGHTMARE_ROAR = registerSoundEvent("nightmare_roar"); +// public static final DeferredHolder NIGHTMARE_DEATH = registerSoundEvent("nightmare_death"); +// public static final DeferredHolder NIGHTMARE_BITE = registerSoundEvent("nightmare_bite"); +// public static final DeferredHolder NIGHTMARE_FLAP = registerSoundEvent("nightmare_flap"); +// public static final DeferredHolder TRIFFID_ATTACK = registerSoundEvent("triffid_attack"); +// public static final DeferredHolder TRIFFID_GRAB = registerSoundEvent("triffid_grab"); +// public static final DeferredHolder TRIFFID_HURT = registerSoundEvent("triffid_hurt"); +// public static final DeferredHolder TRIFFID_DEATH = registerSoundEvent("triffid_death"); +// public static final DeferredHolder TRIFFID_HISS = registerSoundEvent("triffid_hiss"); +// public static final DeferredHolder TRIFFID_GROWL = registerSoundEvent("triffid_growl"); +// public static final DeferredHolder MANTIS_AMBIENT = registerSoundEvent("mantis_ambient"); +// public static final DeferredHolder MANTIS_HURT = registerSoundEvent("mantis_hurt"); +// public static final DeferredHolder MANTIS_ATTACK = registerSoundEvent("mantis_attack"); +// public static final DeferredHolder MANTIS_FLY_LOOP = registerSoundEvent("mantis_fly_loop"); +// public static final DeferredHolder GRAVITY_GUN_PICKUP = registerSoundEvent("gravity_gun_pickup"); +// public static final DeferredHolder GRAVITY_GUN_DROP = registerSoundEvent("gravity_gun_drop"); +// public static final DeferredHolder GRAVITY_GUN_HOLD_LOOP = registerSoundEvent("gravity_gun_hold_loop"); +// public static final DeferredHolder GRAVITY_GUN_LAUNCH = registerSoundEvent("gravity_gun_launch"); +// public static final DeferredHolder GRAVITY_GUN_DRYFIRE = registerSoundEvent("gravity_gun_dryfire"); +// public static final DeferredHolder BED_BUG_AMBIENT = registerSoundEvent("bed_bug_ambient"); +// public static final DeferredHolder BED_BUG_HURT = registerSoundEvent("bed_bug_hurt"); +// public static final DeferredHolder BED_BUG_ATTACK = registerSoundEvent("bed_bug_attack"); +// public static final DeferredHolder WASP_IDLE = registerSoundEvent("wasp_idle"); +// public static final DeferredHolder WASP_HURT = registerSoundEvent("wasp_hurt"); +// public static final DeferredHolder WASP_ATTACK = registerSoundEvent("wasp_attack"); +// public static final DeferredHolder WASP_DEATH = registerSoundEvent("wasp_death"); +// public static final DeferredHolder SCORPION_AMBIENT = registerSoundEvent("scorpion_ambient"); +// public static final DeferredHolder SCORPION_HURT = registerSoundEvent("scorpion_hurt"); +// public static final DeferredHolder SCORPION_ATTACK = registerSoundEvent("scorpion_attack"); +// public static final DeferredHolder EMPEROR_SCORPION_AMBIENT = registerSoundEvent("emperor_scorpion_ambient"); +// public static final DeferredHolder EMPEROR_SCORPION_HURT = registerSoundEvent("emperor_scorpion_hurt"); +// public static final DeferredHolder EMPEROR_SCORPION_ATTACK = registerSoundEvent("emperor_scorpion_attack"); +// public static final DeferredHolder EMPEROR_SCORPION_ROAR = registerSoundEvent("emperor_scorpion_roar"); +// public static final DeferredHolder MOLEWORM_AMBIENT = registerSoundEvent("moleworm_ambient"); +// public static final DeferredHolder MOLEWORM_HURT = registerSoundEvent("moleworm_hurt"); +// public static final DeferredHolder MOLEWORM_ATTACK = registerSoundEvent("moleworm_attack"); +// public static final DeferredHolder MOLEWORM_DIG = registerSoundEvent("moleworm_dig"); +// public static final DeferredHolder MOLEVORE_AMBIENT = registerSoundEvent("molevore_ambient"); +// public static final DeferredHolder MOLEVORE_HURT = registerSoundEvent("molevore_hurt"); +// public static final DeferredHolder MOLEVORE_ATTACK = registerSoundEvent("molevore_attack"); +// public static final DeferredHolder MOLEVORE_DIG = registerSoundEvent("molevore_dig"); +// public static final DeferredHolder DUCT_TAPE_USE = registerSoundEvent("duct_tape_use"); +// public static final DeferredHolder POTENT_NYXITE_HYPNOTIC_GAS = registerSoundEvent("potent_nyxite_hypnotic_gas"); +// public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_START = registerSoundEvent("potent_nyxite_geyser_eruption_start"); +// public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_ACTIVE = registerSoundEvent("potent_nyxite_geyser_eruption_active"); +// public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_START = registerSoundEvent("potent_nyxite_geyser_continuous_start"); +// public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_ACTIVE = registerSoundEvent("potent_nyxite_geyser_continuous_active"); +// private static final DeferredHolder ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate", +// () -> new ArmorMaterial( +// createUltimateArmorDefense(), +// 10, +// SoundEvents.ARMOR_EQUIP_DIAMOND, +// AntarchyNeoForgeContentOLD::ultimateRepairIngredient, +// List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ultimate_armor"))), +// 2.0F, +// (float) AntarchySettings.ultimateArmorKnockbackResistance() +// )); +// private static final DeferredHolder NIGHTMARE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("nightmare", +// () -> new ArmorMaterial( +// createNightmareArmorDefense(), +// 10, +// SoundEvents.ARMOR_EQUIP_NETHERITE, +// () -> Ingredient.of(NIGHTMARE_SCALE.get()), +// List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_armor"))), +// 3.0F, +// (float) AntarchySettings.nightmareArmorKnockbackResistance() +// )); +// private static final DeferredHolder BLOOD_CRYSTAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("blood_crystal", +// () -> new ArmorMaterial( +// createBloodCrystalArmorDefense(), +// 30, +// SoundEvents.ARMOR_EQUIP_DIAMOND, +// AntarchyNeoForgeContentOLD::bloodCrystalRepairIngredient, +// List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal"))), +// 0.0F, +// 0.0F +// )); +// private static final DeferredHolder MOGGLES_ARMOR_MATERIAL = ARMOR_MATERIALS.register("moggles", +// () -> new ArmorMaterial( +// createMogglesArmorDefense(), +// 12, +// SoundEvents.ARMOR_EQUIP_GOLD, +// () -> Ingredient.of(Items.GOLD_INGOT), +// List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "moggles"))), +// 0.0F, +// 0.0F +// )); +// private static final DeferredHolder FALLEN_KING_CROWN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("fallen_king_crown", +// () -> new ArmorMaterial( +// createFallenKingCrownDefense(), +// 25, +// SoundEvents.ARMOR_EQUIP_GOLD, +// () -> Ingredient.of(Items.GOLD_INGOT), +// List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "fallen_king_crown"))), +// 0.0F, +// 0.0F +// )); +// public static final DeferredBlock DUPLICATOR_LOG = BLOCKS.register("duplicator_log", +// () -> new DuplicatorLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_LOG).randomTicks())); +// public static final DeferredBlock OURANWOOD_LOG = BLOCKS.register("ouranwood_log", +// () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); +// public static final DeferredBlock OURANWOOD_WOOD = BLOCKS.register("ouranwood_wood", +// () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); +// public static final DeferredBlock MOSSY_OURANWOOD_LOG = BLOCKS.register("mossy_ouranwood_log", +// () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); +// public static final DeferredBlock MOSSY_OURANWOOD_WOOD = BLOCKS.register("mossy_ouranwood_wood", +// () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); +// public static final DeferredBlock STRIPPED_OURANWOOD_LOG = BLOCKS.register("stripped_ouranwood_log", +// () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); +// public static final DeferredBlock STRIPPED_OURANWOOD_WOOD = BLOCKS.register("stripped_ouranwood_wood", +// () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); +// public static final DeferredBlock OURANWOOD_PLANKS = BLOCKS.register("ouranwood_planks", +// () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); +// public static final DeferredBlock OURANWOOD_STAIRS = BLOCKS.register("ouranwood_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(OURANWOOD_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); +// public static final DeferredBlock OURANWOOD_SLAB = BLOCKS.register("ouranwood_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); +// public static final DeferredBlock OURANWOOD_FENCE = BLOCKS.register("ouranwood_fence", +// () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); +// public static final DeferredBlock OURANWOOD_FENCE_GATE = BLOCKS.register("ouranwood_fence_gate", +// () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); +// public static final DeferredBlock OURANWOOD_DOOR = BLOCKS.register("ouranwood_door", +// () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); +// public static final DeferredBlock OURANWOOD_TRAPDOOR = BLOCKS.register("ouranwood_trapdoor", +// () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); +// public static final DeferredBlock OURANWOOD_PRESSURE_PLATE = BLOCKS.register("ouranwood_pressure_plate", +// () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); +// public static final DeferredBlock OURANWOOD_BUTTON = BLOCKS.register("ouranwood_button", +// () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); +// public static final DeferredBlock OURANWOOD_LEAVES = BLOCKS.register("ouranwood_leaves", +// () -> new OuranwoodLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); +// public static final DeferredBlock OURANWOOD_ACORN_BLOCK = BLOCKS.register("ouranwood_acorn", +// () -> new OuranwoodAcornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); +// public static final DeferredBlock ORANGE_MILKWEED = BLOCKS.register("orange_milkweed", +// () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); +// public static final DeferredBlock PINK_MILKWEED = BLOCKS.register("pink_milkweed", +// () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); +// public static final DeferredBlock TORCHFLOWER_BUSH = BLOCKS.register("torchflower_bush", +// () -> new TorchflowerBushBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY) +// .lightLevel(state -> AntarchySettings.glowingTorchflowers() ? 15 : 0))); +// public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", +// () -> new net.minecraft.world.level.block.StandingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); +// public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", +// () -> new net.minecraft.world.level.block.WallSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); +// public static final DeferredBlock OURANWOOD_HANGING_SIGN = BLOCKS.register("ouranwood_hanging_sign", +// () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); +// public static final DeferredBlock OURANWOOD_WALL_HANGING_SIGN = BLOCKS.register("ouranwood_wall_hanging_sign", +// () -> new net.minecraft.world.level.block.WallHangingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); +// public static final DeferredBlock DUPLICATOR_SAPLING = BLOCKS.register("duplicator_sapling", +// () -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); +// public static final DeferredBlock DUCT_TAPE = BLOCKS.register("duct_tape", +// () -> new DuctTapeBlock(BlockBehaviour.Properties.of() +// .strength(0.2F) +// .sound(SoundType.WOOL) +// .noOcclusion() +// .replaceable())); +// public static final DeferredBlock INFESTED_ROOTED_DIRT = BLOCKS.register("infested_rooted_dirt", +// () -> new InfestedRootedDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.ROOTED_DIRT).randomTicks())); +// public static final DeferredBlock INFESTED_COARSE_DIRT = BLOCKS.register("infested_coarse_dirt", +// () -> new InfestedCoarseDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).randomTicks())); +// public static final DeferredBlock NYXITE = BLOCKS.register("nyxite", +// () -> new Block(nyxiteProperties())); +// public static final DeferredBlock POLISHED_NYXITE = BLOCKS.register("polished_nyxite", +// () -> new Block(nyxiteProperties())); +// public static final DeferredBlock CHISELED_NYXITE = BLOCKS.register("chiseled_nyxite", +// () -> new Block(nyxiteProperties())); +// public static final DeferredBlock NYXITE_BRICKS = BLOCKS.register("nyxite_bricks", +// () -> new Block(nyxiteProperties())); +// public static final DeferredBlock NYXITE_STAIRS = BLOCKS.register("nyxite_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(NYXITE.get().defaultBlockState(), nyxiteProperties())); +// public static final DeferredBlock NYXITE_SLAB = BLOCKS.register("nyxite_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); +// public static final DeferredBlock NYXITE_WALL = BLOCKS.register("nyxite_wall", +// () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); +// public static final DeferredBlock POLISHED_NYXITE_STAIRS = BLOCKS.register("polished_nyxite_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(POLISHED_NYXITE.get().defaultBlockState(), nyxiteProperties())); +// public static final DeferredBlock POLISHED_NYXITE_SLAB = BLOCKS.register("polished_nyxite_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); +// public static final DeferredBlock POLISHED_NYXITE_WALL = BLOCKS.register("polished_nyxite_wall", +// () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); +// public static final DeferredBlock NYXITE_BRICK_STAIRS = BLOCKS.register("nyxite_brick_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(NYXITE_BRICKS.get().defaultBlockState(), nyxiteProperties())); +// public static final DeferredBlock NYXITE_BRICK_SLAB = BLOCKS.register("nyxite_brick_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); +// public static final DeferredBlock NYXITE_BRICK_WALL = BLOCKS.register("nyxite_brick_wall", +// () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); +// public static final DeferredBlock TRIFFID_GOO_BLOCK = BLOCKS.register("triffid_goo_block", +// () -> new com.craisinlord.antarchy.content.block.TriffidGooBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SLIME_BLOCK).noOcclusion().isViewBlocking((s, l, p) -> false).isSuffocating((s, l, p) -> false))); +// public static final DeferredBlock CLOUD_BLOCK = BLOCKS.register("cloud_block", +// () -> new com.craisinlord.antarchy.content.block.CloudBlock( +// AntarchyNeoForgeContentOLD::cloudBucketItem, +// BlockBehaviour.Properties.ofFullCopy(Blocks.POWDER_SNOW).noLootTable().noOcclusion() +// )); +// public static final DeferredBlock PALE_NYXITE = BLOCKS.register("pale_nyxite", +// () -> new Block(nyxiteProperties())); +// public static final DeferredBlock NYXITE_SPIKE = BLOCKS.register("nyxite_spike", +// () -> new NyxiteSpikeBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POINTED_DRIPSTONE))); +// public static final DeferredBlock POTENT_NYXITE = BLOCKS.register("potent_nyxite", +// () -> new PotentNyxiteBlock( +// AntarchyNeoForgeContentOLD::potentNyxiteBlockEntityType, +// BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK).lightLevel(state -> 3) +// )); +// public static final DeferredBlock UMBRAL_MOSS_BLOCK = BLOCKS.register("umbral_moss_block", +// () -> new UmbralMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); +// public static final DeferredBlock UMBRAL_MOSS_CARPET = BLOCKS.register("umbral_moss_carpet", +// () -> new UmbralMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion())); +// public static final DeferredHolder, SimpleParticleType> DREAM_FIRE_FLAME = PARTICLE_TYPES.register("dream_fire_flame", +// () -> new SimpleParticleType(true)); +// public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas", +// () -> new SimpleParticleType(true)); +// public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD = PARTICLE_TYPES.register("hypnotic_gas_cloud", +// () -> new SimpleParticleType(true)); +// public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_DOWN = PARTICLE_TYPES.register("hypnotic_gas_down", +// () -> new SimpleParticleType(true)); +// public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD_DOWN = PARTICLE_TYPES.register("hypnotic_gas_cloud_down", +// () -> new SimpleParticleType(true)); +// public static final DeferredHolder, SimpleParticleType> FIREFLY = PARTICLE_TYPES.register("firefly", +// () -> new SimpleParticleType(true)); +// public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", +// () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); +// public static final DeferredHolder, ParticleType> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", +// () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); +// public static final DeferredHolder, ParticleType> INVERTED_GEYSER_POOF = PARTICLE_TYPES.register("inverted_geyser_poof", +// () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); +// public static final DeferredHolder, ParticleType> INVERTED_GEYSER_ERUPTION = PARTICLE_TYPES.register("inverted_geyser_eruption", +// () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); +// public static final DeferredBlock DREAM_TORCH = BLOCKS.register("dream_torch", +// () -> new DreamTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); +// public static final DeferredBlock DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch", +// () -> new DreamWallTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_WALL_TORCH))); +// public static final DeferredBlock DREAM_LANTERN = BLOCKS.register("dream_lantern", +// () -> new net.minecraft.world.level.block.LanternBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_LANTERN))); +// public static final DeferredBlock DREAM_CAMPFIRE = BLOCKS.register("dream_campfire", +// () -> new DreamCampfireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_CAMPFIRE))); +// public static final DeferredBlock DREAM_FIRE = BLOCKS.register("dream_fire", +// () -> new DreamFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); +// public static final DeferredBlock DREAM_CEILING_FIRE = BLOCKS.register("dream_fire_ceiling", +// () -> new DreamCeilingFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); +// public static final DeferredBlock BED_BUG_EGG = BLOCKS.register("bed_bug_egg", +// () -> new BedBugEggBlock(BlockBehaviour.Properties.of() +// .strength(0.15F) +// .sound(SoundType.METAL) +// .randomTicks() +// .noOcclusion() +// .noCollission() +// .replaceable())); +// public static final DeferredBlock WASP_NEST = BLOCKS.register("wasp_nest", +// () -> new WaspNestBlock(AntarchyNeoForgeContentOLD::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST))); +// public static final DeferredBlock OURANWOOD_SQUIRREL_NEST = BLOCKS.register("ouranwood_squirrel_nest", +// () -> new com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).noLootTable())); +// public static final DeferredBlock HUSHWEED = BLOCKS.register("hushweed", +// () -> new HushweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AZALEA).noCollission().noOcclusion())); +// public static final DeferredHolder DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new); +// public static final DeferredHolder PARALYZED = MOB_EFFECTS.register("paralyzed", ParalyzedMobEffect::new); +// public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); +// public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); +// private static final DeferredHolder BLOODGLASS_MAX_HEARTS = ATTRIBUTES.register( +// "bloodglass_max_hearts", +// () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.bloodglass_max_hearts", 0.0, 0.0, 8.0).setSyncable(true) +// ); +// public static final DeferredHolder INVERSION = POTIONS.register("inversion", +// () -> new Potion(new MobEffectInstance(INVERTED, 600))); +// public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", +// () -> new Potion("inversion", new MobEffectInstance(INVERTED, 2400))); +// public static final DeferredHolder SHRINKING_EFFECT = MOB_EFFECTS.register("shrinking", ShrinkMobEffect::new); +// public static final DeferredHolder GROWTH_EFFECT = MOB_EFFECTS.register("growth", GrowthMobEffect::new); +// public static final DeferredHolder PARALYSIS = POTIONS.register("paralysis", +// () -> new Potion(new MobEffectInstance(PARALYZED, 200))); +// public static final DeferredHolder LONG_PARALYSIS = POTIONS.register("long_paralysis", +// () -> new Potion("paralysis", new MobEffectInstance(PARALYZED, 400))); +// public static final DeferredHolder HASTE = POTIONS.register("haste", +// () -> new Potion(new MobEffectInstance(MobEffects.DIG_SPEED, 1200, 0))); +// public static final DeferredHolder STRONG_HASTE = POTIONS.register("strong_haste", +// () -> new Potion("haste", new MobEffectInstance(MobEffects.DIG_SPEED, 600, 1))); +// public static final DeferredHolder SHRINKING = POTIONS.register("shrinking", +// () -> new Potion(new MobEffectInstance(SHRINKING_EFFECT, 1200, 0))); +// public static final DeferredHolder STRONG_SHRINKING = POTIONS.register("strong_shrinking", +// () -> new Potion("shrinking", new MobEffectInstance(SHRINKING_EFFECT, 900, 1))); +// public static final DeferredHolder EXTREME_SHRINKING = POTIONS.register("extreme_shrinking", +// () -> new Potion("shrinking", new MobEffectInstance(SHRINKING_EFFECT, 600, 2))); +// public static final DeferredHolder GROWING = POTIONS.register("growing", +// () -> new Potion(new MobEffectInstance(GROWTH_EFFECT, 1200, 0))); +// public static final DeferredHolder STRONG_GROWING = POTIONS.register("strong_growing", +// () -> new Potion("growing", new MobEffectInstance(GROWTH_EFFECT, 900, 1))); +// public static final DeferredHolder EXTREME_GROWING = POTIONS.register("extreme_growing", +// () -> new Potion("growing", new MobEffectInstance(GROWTH_EFFECT, 600, 2))); +// public static final DeferredHolder ICHOR_TYPE = FLUID_TYPES.register("ichor", +// () -> new FluidType(FluidType.Properties.create() +// .descriptionId("block.antarchy.ichor") +// .fallDistanceModifier(0.0F) +// .supportsBoating(true) +// .sound(SoundActions.BUCKET_FILL, SoundEvents.BUCKET_FILL) +// .sound(SoundActions.BUCKET_EMPTY, SoundEvents.BUCKET_EMPTY) +// .density(1200) +// .viscosity(1400))); +// public static final DeferredHolder ANTIWATER_TYPE = FLUID_TYPES.register("antiwater", +// () -> new AntiwaterFluidType(FluidType.Properties.create() +// .descriptionId("block.antarchy.antiwater") +// .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))); +// public static final DeferredHolder ICHOR = FLUIDS.register("ichor", +// () -> new BaseFlowingFluid.Source(ichorProperties())); +// public static final DeferredHolder FLOWING_ICHOR = FLUIDS.register("flowing_ichor", +// () -> new BaseFlowingFluid.Flowing(ichorProperties())); +// public static final DeferredBlock ICHOR_BLOCK = BLOCKS.register("ichor", +// () -> new LiquidBlock((net.minecraft.world.level.material.FlowingFluid) ICHOR.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); +// +// public static final DeferredHolder ANTIWATER = FLUIDS.register("antiwater", +// () -> new AntiwaterFluid.Source(antiwaterProperties())); +// public static final DeferredHolder FLOWING_ANTIWATER = FLUIDS.register("flowing_antiwater", +// () -> new AntiwaterFluid.Flowing(antiwaterProperties())); +// public static final DeferredBlock ANTIWATER_BLOCK = BLOCKS.register("antiwater", +// () -> new AntiwaterLiquidBlock((net.minecraft.world.level.material.FlowingFluid) ANTIWATER.get(), +// BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); +// public static final DeferredHolder, EntityType> RED_ANT = ENTITY_TYPES.register("red_ant", +// () -> buildAntType(RedAntEntity::new, MobCategory.CREATURE, "red_ant")); +// public static final DeferredHolder, EntityType> BROWN_ANT = ENTITY_TYPES.register("brown_ant", +// () -> buildAntType(BrownAntEntity::new, MobCategory.CREATURE, "brown_ant")); +// public static final DeferredHolder, EntityType> RAINBOW_ANT = ENTITY_TYPES.register("rainbow_ant", +// () -> buildAntType(RainbowAntEntity::new, MobCategory.CREATURE, "rainbow_ant")); +// public static final DeferredHolder, EntityType> MOLEWORM = ENTITY_TYPES.register("moleworm", +// () -> EntityType.Builder.of(MolewormEntity::new, MobCategory.MONSTER) +// .sized(0.4F, 0.3F) +// .clientTrackingRange(8) +// .build("moleworm")); +// public static final DeferredHolder, EntityType> MANTIS = ENTITY_TYPES.register("mantis", +// () -> EntityType.Builder.of(MantisEntity::new, MobCategory.MONSTER) +// .sized(3.125F, 2.5F) +// .clientTrackingRange(8) +// .build("mantis")); +// public static final DeferredHolder, EntityType> OURANWOOD_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_boat", +// () -> EntityType.Builder.of(OuranwoodBoatEntity::new, MobCategory.MISC) +// .sized(1.375F, 0.5625F) +// .clientTrackingRange(10) +// .updateInterval(10) +// .build("ouranwood_boat")); +// public static final DeferredHolder, EntityType> OURANWOOD_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_chest_boat", +// () -> EntityType.Builder.of(OuranwoodChestBoatEntity::new, MobCategory.MISC) +// .sized(1.375F, 0.5625F) +// .clientTrackingRange(10) +// .updateInterval(10) +// .build("ouranwood_chest_boat")); +// public static final DeferredHolder, EntityType> MOLEVORE = ENTITY_TYPES.register("molevore", +// () -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER) +// .sized(1.95F, 1.1F) +// .clientTrackingRange(10) +// .build("molevore")); +// public static final DeferredHolder, EntityType> TRIFFID = ENTITY_TYPES.register("triffid", +// () -> EntityType.Builder.of(TriffidEntity::new, MobCategory.MONSTER) +// .sized(2.0F, 5.0F) +// .clientTrackingRange(10) +// .build("triffid")); +// public static final DeferredHolder, EntityType> BED_BUG = ENTITY_TYPES.register("bed_bug", +// () -> EntityType.Builder.of(BedBugEntity::new, MobCategory.CREATURE) +// .sized(1.15F, 0.8F) +// .clientTrackingRange(8) +// .build("bed_bug")); +// public static final DeferredHolder, EntityType> WASP = ENTITY_TYPES.register("wasp", +// () -> EntityType.Builder.of(WaspEntity::new, MobCategory.MONSTER) +// .sized(0.8625F, 1.365F) +// .clientTrackingRange(8) +// .build("wasp")); +// public static final DeferredHolder, EntityType> BOMBER = ENTITY_TYPES.register("bomber", +// () -> EntityType.Builder.of(BomberEntity::new, MobCategory.MONSTER) +// .sized(0.55F, 0.75F) +// .clientTrackingRange(8) +// .build("bomber")); +// public static final DeferredHolder, EntityType> SHRINK_RAY_PROJECTILE = ENTITY_TYPES.register("shrink_ray_projectile", +// () -> EntityType.Builder.of(SizeRayProjectileEntity::createShrink, MobCategory.MISC) +// .sized(0.5F, 0.5F) +// .clientTrackingRange(8) +// .updateInterval(1) +// .build("shrink_ray_projectile")); +// public static final DeferredHolder, EntityType> GROWTH_RAY_PROJECTILE = ENTITY_TYPES.register("growth_ray_projectile", +// () -> EntityType.Builder.of(SizeRayProjectileEntity::createGrowth, MobCategory.MISC) +// .sized(0.5F, 0.5F) +// .clientTrackingRange(8) +// .updateInterval(1) +// .build("growth_ray_projectile")); +// public static final DeferredBlock RED_ANT_NEST = BLOCKS.register("red_ant_nest", +// () -> new AntNestBlock( +// RED_ANT, +// AntarchyNeoForgeContentOLD::antNestBlockEntityType, +// true, +// BlockBehaviour.Properties.ofFullCopy(Blocks.MAGMA_BLOCK).lightLevel(state -> 3).noLootTable() +// )); +// public static final DeferredBlock BROWN_ANT_NEST = BLOCKS.register("brown_ant_nest", +// () -> new AntNestBlock(BROWN_ANT, AntarchyNeoForgeContentOLD::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); +// public static final DeferredBlock RAINBOW_ANT_NEST = BLOCKS.register("rainbow_ant_nest", +// () -> new AntNestBlock(RAINBOW_ANT, AntarchyNeoForgeContentOLD::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); +// public static final DeferredBlock URANIUM_ORE = BLOCKS.register("uranium_ore", +// () -> createOre(Blocks.EMERALD_ORE, 4, 8)); +// public static final DeferredBlock DEEPSLATE_URANIUM_ORE = BLOCKS.register("deepslate_uranium_ore", +// () -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8)); +// public static final DeferredBlock TITANIUM_ORE = BLOCKS.register("titanium_ore", +// () -> createOre(Blocks.DIAMOND_ORE, 4, 8)); +// public static final DeferredBlock DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore", +// () -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8)); +// public static final DeferredBlock URANIUM_BLOCK = BLOCKS.register("uranium_block", +// () -> createStorageBlock(Blocks.EMERALD_BLOCK)); +// public static final DeferredBlock TITANIUM_BLOCK = BLOCKS.register("titanium_block", +// () -> createStorageBlock(Blocks.DIAMOND_BLOCK)); +// public static final DeferredBlock RAW_URANIUM_BLOCK = BLOCKS.register("raw_uranium_block", +// () -> createRawStorageBlock(Blocks.RAW_GOLD_BLOCK)); +// public static final DeferredBlock RAW_TITANIUM_BLOCK = BLOCKS.register("raw_titanium_block", +// () -> createRawStorageBlock(Blocks.RAW_IRON_BLOCK)); +// public static final DeferredBlock CUT_URANIUM = BLOCKS.register("cut_uranium", +// () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); +// public static final DeferredBlock CUT_TITANIUM = BLOCKS.register("cut_titanium", +// () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); +// public static final DeferredBlock CUT_URANIUM_SLAB = BLOCKS.register("cut_uranium_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); +// public static final DeferredBlock CUT_TITANIUM_SLAB = BLOCKS.register("cut_titanium_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); +// public static final DeferredBlock CUT_URANIUM_STAIRS = BLOCKS.register("cut_uranium_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); +// public static final DeferredBlock CUT_TITANIUM_STAIRS = BLOCKS.register("cut_titanium_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); +// public static final DeferredBlock CHISELED_URANIUM = BLOCKS.register("chiseled_uranium", +// () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); +// public static final DeferredBlock CHISELED_TITANIUM = BLOCKS.register("chiseled_titanium", +// () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); +// public static final DeferredBlock URANIUM_BULB = BLOCKS.register("uranium_bulb", +// () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); +// public static final DeferredBlock TITANIUM_BULB = BLOCKS.register("titanium_bulb", +// () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); +// public static final DeferredBlock URANIUM_DOOR = BLOCKS.register("uranium_door", +// () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); +// public static final DeferredBlock TITANIUM_DOOR = BLOCKS.register("titanium_door", +// () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); +// public static final DeferredBlock URANIUM_TRAPDOOR = BLOCKS.register("uranium_trapdoor", +// () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); +// public static final DeferredBlock TITANIUM_TRAPDOOR = BLOCKS.register("titanium_trapdoor", +// () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); +// public static final DeferredBlock URANIUM_BARS = BLOCKS.register("uranium_bars", +// () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); +// public static final DeferredBlock TITANIUM_BARS = BLOCKS.register("titanium_bars", +// () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); +// public static final DeferredBlock ANTIMETAL = BLOCKS.register("antimetal", +// () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BASALT))); +// public static final DeferredBlock POLISHED_ANTIMETAL = BLOCKS.register("polished_antimetal", +// () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POLISHED_BASALT))); +// public static final DeferredBlock ANTIMETAL_SCAFFOLDING = BLOCKS.register("antimetal_scaffolding", +// () -> new com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SCAFFOLDING))); +// public static final DeferredBlock CORNEA_STALK = BLOCKS.register("cornea_stalk", +// () -> new CorneaStalkBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SWEET_BERRY_BUSH).randomTicks())); +// public static final DeferredBlock SMALL_BLOOD_CRYSTAL_BUD = BLOCKS.register("small_blood_crystal_bud", +// () -> new AmethystClusterBlock(3.0F, 4.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.SMALL_AMETHYST_BUD))); +// public static final DeferredBlock MEDIUM_BLOOD_CRYSTAL_BUD = BLOCKS.register("medium_blood_crystal_bud", +// () -> new AmethystClusterBlock(4.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.MEDIUM_AMETHYST_BUD))); +// public static final DeferredBlock LARGE_BLOOD_CRYSTAL_BUD = BLOCKS.register("large_blood_crystal_bud", +// () -> new AmethystClusterBlock(5.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.LARGE_AMETHYST_BUD))); +// public static final DeferredBlock BUDDING_BLOOD_CRYSTAL = BLOCKS.register("budding_blood_crystal", +// () -> new BuddingBloodCrystalBlock( +// BlockBehaviour.Properties.ofFullCopy(Blocks.BUDDING_AMETHYST), +// AntarchyNeoForgeContentOLD::smallBloodCrystalBudBlock, +// AntarchyNeoForgeContentOLD::mediumBloodCrystalBudBlock, +// AntarchyNeoForgeContentOLD::largeBloodCrystalBudBlock, +// AntarchyNeoForgeContentOLD::bloodCrystalCrystalBlock +// )); +// public static final DeferredBlock BLOOD_CRYSTAL = BLOCKS.register("blood_crystal_block", +// () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); +// public static final DeferredBlock BLOOD_CRYSTAL_CRYSTAL = BLOCKS.register("blood_crystal_cluster", +// () -> new AmethystClusterBlock(7.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_CLUSTER))); +// public static final DeferredBlock DREAM_SAND = BLOCKS.register("dream_sand", +// () -> new DreamSandBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SAND))); +// public static final DeferredBlock DREAM_SANDSTONE = BLOCKS.register("dream_sandstone", +// () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE))); +// public static final DeferredBlock CHISELED_DREAM_SANDSTONE = BLOCKS.register("chiseled_dream_sandstone", +// () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CHISELED_SANDSTONE))); +// public static final DeferredBlock CUT_DREAM_SANDSTONE = BLOCKS.register("cut_dream_sandstone", +// () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE))); +// public static final DeferredBlock SMOOTH_DREAM_SANDSTONE = BLOCKS.register("smooth_dream_sandstone", +// () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE))); +// public static final DeferredBlock DREAM_SANDSTONE_STAIRS = BLOCKS.register("dream_sandstone_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_STAIRS))); +// public static final DeferredBlock DREAM_SANDSTONE_SLAB = BLOCKS.register("dream_sandstone_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_SLAB))); +// public static final DeferredBlock DREAM_SANDSTONE_WALL = BLOCKS.register("dream_sandstone_wall", +// () -> new net.minecraft.world.level.block.WallBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_WALL))); +// public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_STAIRS = BLOCKS.register("smooth_dream_sandstone_stairs", +// () -> new net.minecraft.world.level.block.StairBlock(SMOOTH_DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_STAIRS))); +// public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_SLAB = BLOCKS.register("smooth_dream_sandstone_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_SLAB))); +// public static final DeferredBlock CUT_DREAM_SANDSTONE_SLAB = BLOCKS.register("cut_dream_sandstone_slab", +// () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB))); +// public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", +// () -> BlockEntityType.Builder.of( +// AntNestBlockEntity::new, +// RED_ANT_NEST.get(), +// BROWN_ANT_NEST.get(), +// RAINBOW_ANT_NEST.get() +// ).build(null)); +// public static final DeferredHolder, BlockEntityType> DREAM_CAMPFIRE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("dream_campfire", +// () -> BlockEntityType.Builder.of( +// DreamCampfireBlockEntity::new, +// DREAM_CAMPFIRE.get() +// ).build(null)); +// public static final DeferredHolder, BlockEntityType> WASP_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("wasp_nest", +// () -> BlockEntityType.Builder.of( +// WaspNestBlockEntity::new, +// WASP_NEST.get() +// ).build(null)); +// public static final DeferredHolder, BlockEntityType> HUSHWEED_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("hushweed", +// () -> BlockEntityType.Builder.of( +// HushweedBlockEntity::new, +// HUSHWEED.get() +// ).build(null)); +// public static final DeferredHolder, BlockEntityType> POTENT_NYXITE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("potent_nyxite", +// () -> BlockEntityType.Builder.of( +// (pos, state) -> new PotentNyxiteBlockEntity(pos, state, AntarchyNeoForgeContentOLD::potentNyxiteBlockEntityType), +// POTENT_NYXITE.get() +// ).build(null)); +// public static final DeferredHolder, RedAntNestFeature> RED_ANT_NEST_FEATURE = FEATURES.register("red_ant_nest", +// () -> new RedAntNestFeature(SimpleBlockConfiguration.CODEC)); +// public static final DeferredHolder, BrownAntNestFeature> BROWN_ANT_NEST_FEATURE = FEATURES.register("brown_ant_nest", +// () -> new BrownAntNestFeature(SimpleBlockConfiguration.CODEC)); +// public static final DeferredHolder, RainbowAntNestFeature> RAINBOW_ANT_NEST_FEATURE = FEATURES.register("rainbow_ant_nest", +// () -> new RainbowAntNestFeature(SimpleBlockConfiguration.CODEC)); +// public static final DeferredHolder, TermiteNestFeature> TERMITE_NEST_FEATURE = FEATURES.register("termite_nest", +// () -> new TermiteNestFeature(SimpleBlockConfiguration.CODEC)); +// public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_LARGE_TREE = FEATURES.register("ouranwood_large_tree", +// () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); +// public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_YOUNG_TREE = FEATURES.register("ouranwood_young_tree", +// () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); +// public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_MEDIUM_TREE = FEATURES.register("ouranwood_medium_tree", +// () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); +// public static final DeferredHolder, OuranwoodCocoonTreeFeature> OURANWOOD_COCOON_TREE = FEATURES.register("ouranwood_cocoon_tree", +// () -> new OuranwoodCocoonTreeFeature(OuranwoodTreeConfiguration.CODEC)); +// public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", +// () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); +// public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora", +// () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.MEADOW)); +// public static final DeferredHolder, ElythiaFloraFeature> FLOWER_FOREST_MILKWEED = FEATURES.register("flower_forest_milkweed", +// () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FLOWER_FOREST_MILKWEED)); +// public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", +// () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); +// public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_TORCHFLOWER_FIELDS_FLORA = FEATURES.register("elythia_torchflower_fields_flora", +// () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.TORCHFLOWER_FIELDS)); +// public static final DeferredHolder, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover", +// () -> new ElythiaSurfaceCoverFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, ElythiaUndergroundFeature> ELYTHIA_UNDERGROUND = FEATURES.register("elythia_underground", +// () -> new ElythiaUndergroundFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, BrutalflyCocoonFeature> BRUTALFLY_COCOON = FEATURES.register("brutalfly_cocoon", +// () -> new BrutalflyCocoonFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, MolewormTunnelsFeature> ELYTHIA_MOLEWORM_TUNNELS = FEATURES.register("elythia_moleworm_tunnels", +// () -> new MolewormTunnelsFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, MolewormCaveEntranceFeature> ELYTHIA_MOLEWORM_CAVE_ENTRANCES = FEATURES.register("elythia_moleworm_cave_entrances", +// () -> new MolewormCaveEntranceFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, MolewormWarrensFeature> ELYTHIA_MOLEWORM_WARRENS = FEATURES.register("elythia_moleworm_warrens", +// () -> new MolewormWarrensFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, MolewormSurfaceMoundsFeature> ELYTHIA_MOLEWORM_SURFACE_MOUNDS = FEATURES.register("elythia_moleworm_surface_mounds", +// () -> new MolewormSurfaceMoundsFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, TriffidPatchFeature> TRIFFID_PATCH = FEATURES.register("triffid_patch", +// () -> new TriffidPatchFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, MapCodec> ELYTHIA_BIOME_SOURCE = BIOME_SOURCES.register("elythia_biome_source", +// () -> ElythiaBiomeSource.CODEC); +// public static final DeferredHolder, MapCodec> ELYTHIA_RIVER_CARVE = DENSITY_FUNCTION_TYPES.register("elythia_river_carve", +// () -> ElythiaRiverCarveFunction.CODEC); +// public static final DeferredHolder, ElythiaPondFeature> ELYTHIA_POND = FEATURES.register("elythia_pond", +// () -> new ElythiaPondFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, ElythiaTuffBoulderFeature> ELYTHIA_TUFF_BOULDER = FEATURES.register("elythia_tuff_boulder", +// () -> new ElythiaTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, ElythiaLargeTuffBoulderFeature> ELYTHIA_LARGE_TUFF_BOULDER = FEATURES.register("elythia_large_tuff_boulder", +// () -> new ElythiaLargeTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, ThoraxisFissureFeature> THORAXIS_FISSURE = FEATURES.register("thoraxis_fissure", +// () -> new ThoraxisFissureFeature(ThoraxisFissureConfiguration.CODEC)); +// public static final DeferredHolder, ThoraxisRibColumnsFeature> THORAXIS_RIB_COLUMNS = FEATURES.register("thoraxis_rib_columns", +// () -> new ThoraxisRibColumnsFeature(ThoraxisRibColumnsConfiguration.CODEC)); +// public static final DeferredHolder, ThoraxisSpikeFeature> THORAXIS_SPIKE = FEATURES.register("thoraxis_spike", +// () -> new ThoraxisSpikeFeature(ThoraxisSpikeConfiguration.CODEC)); +// public static final DeferredHolder, NyxiteSpikeFeature> NYXITE_SPIKES = FEATURES.register("nyxite_spikes", +// () -> new NyxiteSpikeFeature(NyxiteSpikeConfiguration.CODEC)); +// public static final DeferredHolder, AntiwaterSpringsFeature> ANTIWATER_SPRINGS = FEATURES.register("antiwater_springs", +// () -> new AntiwaterSpringsFeature(AntiwaterSpringsConfiguration.CODEC)); +// public static final DeferredHolder, PotentNyxiteFeature> POTENT_NYXITE_FEATURE = FEATURES.register("potent_nyxite", +// () -> new PotentNyxiteFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, ThoraxisBloodCrystalFeature> THORAXIS_BLOOD_CRYSTAL_SPIRES = FEATURES.register("thoraxis_blood_crystal_spires", +// () -> new ThoraxisBloodCrystalFeature(ThoraxisBloodCrystalConfiguration.CODEC)); +// public static final DeferredHolder, CloudSeaCalciteFeature> CLOUD_SEA_CALCITE_BANKS = FEATURES.register("cloud_sea_calcite_banks", +// () -> new CloudSeaCalciteFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, BedBugNestFeature> BED_BUG_NEST = FEATURES.register("bed_bug_nest", +// () -> new BedBugNestFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, BedBugSurfaceClusterFeature> BED_BUG_SURFACE_CLUSTER = FEATURES.register("bed_bug_surface_cluster", +// () -> new BedBugSurfaceClusterFeature(NoneFeatureConfiguration.CODEC)); +// public static final DeferredHolder, ThoraxisAntiwaterPoolFeature> THORAXIS_ANTIWATER_POOL = FEATURES.register("thoraxis_antiwater_pool", +// () -> new ThoraxisAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); +// public static final DeferredHolder, LucidAntiwaterPoolFeature> LUCID_ANTIWATER_POOL = FEATURES.register("lucid_antiwater_pool", +// () -> new LucidAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); +// public static final DeferredHolder, ThoraxisDuneFeature> THORAXIS_DUNE = FEATURES.register("thoraxis_dune", +// () -> new ThoraxisDuneFeature(ThoraxisDuneConfiguration.CODEC)); +// public static final DeferredHolder, MapCodec> THORAXIS_BIOME_SOURCE = BIOME_SOURCES.register("thoraxis_biome_source", +// () -> ThoraxisBiomeSource.CODEC); +// +// public static final DeferredItem DUPLICATOR_LOG_ITEM = ITEMS.registerSimpleBlockItem(DUPLICATOR_LOG); +// public static final DeferredItem OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_LOG); +// public static final DeferredItem OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_WOOD); +// public static final DeferredItem MOSSY_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_OURANWOOD_LOG); +// public static final DeferredItem MOSSY_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_OURANWOOD_WOOD); +// public static final DeferredItem STRIPPED_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_OURANWOOD_LOG); +// public static final DeferredItem STRIPPED_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_OURANWOOD_WOOD); +// public static final DeferredItem OURANWOOD_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_PLANKS); +// public static final DeferredItem OURANWOOD_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_STAIRS); +// public static final DeferredItem OURANWOOD_SLAB_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_SLAB); +// public static final DeferredItem OURANWOOD_FENCE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_FENCE); +// public static final DeferredItem OURANWOOD_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_FENCE_GATE); +// public static final DeferredItem OURANWOOD_DOOR_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_DOOR); +// public static final DeferredItem OURANWOOD_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_TRAPDOOR); +// public static final DeferredItem OURANWOOD_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_PRESSURE_PLATE); +// public static final DeferredItem OURANWOOD_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_BUTTON); +// public static final DeferredItem OURANWOOD_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_LEAVES); +// public static final DeferredItem OURANWOOD_ACORN = ITEMS.registerSimpleBlockItem(OURANWOOD_ACORN_BLOCK); +// public static final DeferredItem ORANGE_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(ORANGE_MILKWEED); +// public static final DeferredItem PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(PINK_MILKWEED); +// public static final DeferredItem TORCHFLOWER_BUSH_ITEM = ITEMS.registerSimpleBlockItem(TORCHFLOWER_BUSH); +// public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", +// () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), OURANWOOD_SIGN.get(), OURANWOOD_WALL_SIGN.get())); +// public static final DeferredItem OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign", +// () -> new net.minecraft.world.item.HangingSignItem(OURANWOOD_HANGING_SIGN.get(), OURANWOOD_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); +// public static final DeferredItem OURANWOOD_BOAT = ITEMS.register("ouranwood_boat", +// () -> new OuranwoodBoatOnlyItem(OURANWOOD_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); +// public static final DeferredItem OURANWOOD_CHEST_BOAT = ITEMS.register("ouranwood_chest_boat", +// () -> new OuranwoodChestBoatItem(OURANWOOD_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); +// public static final DeferredItem DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(DUPLICATOR_SAPLING); +// public static final DeferredItem RED_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(RED_ANT_NEST); +// public static final DeferredItem BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(BROWN_ANT_NEST); +// public static final DeferredItem RAINBOW_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(RAINBOW_ANT_NEST); +// public static final DeferredItem URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_ORE); +// public static final DeferredItem DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(DEEPSLATE_URANIUM_ORE); +// public static final DeferredItem TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_ORE); +// public static final DeferredItem DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(DEEPSLATE_TITANIUM_ORE); +// public static final DeferredItem URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_BLOCK); +// public static final DeferredItem TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_BLOCK); +// public static final DeferredItem RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(RAW_URANIUM_BLOCK); +// public static final DeferredItem RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(RAW_TITANIUM_BLOCK); +// public static final DeferredItem CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM); +// public static final DeferredItem CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM); +// public static final DeferredItem CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM_SLAB); +// public static final DeferredItem CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM_SLAB); +// public static final DeferredItem CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM_STAIRS); +// public static final DeferredItem CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM_STAIRS); +// public static final DeferredItem CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_URANIUM); +// public static final DeferredItem CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_TITANIUM); +// public static final DeferredItem URANIUM_BULB_ITEM = ITEMS.register("uranium_bulb", +// () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(URANIUM_BULB.get(), new Item.Properties())); +// public static final DeferredItem TITANIUM_BULB_ITEM = ITEMS.register("titanium_bulb", +// () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(TITANIUM_BULB.get(), new Item.Properties())); +// public static final DeferredItem URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_DOOR); +// public static final DeferredItem TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_DOOR); +// public static final DeferredItem URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_TRAPDOOR); +// public static final DeferredItem TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_TRAPDOOR); +// public static final DeferredItem URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_BARS); +// public static final DeferredItem TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_BARS); +// public static final DeferredItem ANTIMETAL_ITEM = ITEMS.register("antimetal", +// () -> new AntimetalBlockItem(ANTIMETAL.get(), new Item.Properties())); +// public static final DeferredItem POLISHED_ANTIMETAL_ITEM = ITEMS.register("polished_antimetal", +// () -> new AntimetalBlockItem(POLISHED_ANTIMETAL.get(), new Item.Properties())); +// public static final DeferredItem ANTIMETAL_SCAFFOLDING_ITEM = ITEMS.register("antimetal_scaffolding", +// () -> new AntimetalScaffoldingItem(ANTIMETAL_SCAFFOLDING.get(), new Item.Properties())); +// public static final DeferredItem SMALL_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(SMALL_BLOOD_CRYSTAL_BUD); +// public static final DeferredItem MEDIUM_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(MEDIUM_BLOOD_CRYSTAL_BUD); +// public static final DeferredItem LARGE_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(LARGE_BLOOD_CRYSTAL_BUD); +// public static final DeferredItem BUDDING_BLOOD_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(BUDDING_BLOOD_CRYSTAL); +// public static final DeferredItem BLOOD_CRYSTAL_ITEM = ITEMS.register("blood_crystal_block", +// () -> new net.minecraft.world.item.BlockItem(BLOOD_CRYSTAL.get(), new Item.Properties())); +// public static final DeferredItem BLOOD_CRYSTAL_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(BLOOD_CRYSTAL_CRYSTAL); +// public static final DeferredItem DREAM_SAND_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SAND); +// public static final DeferredItem DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE); +// public static final DeferredItem CHISELED_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_DREAM_SANDSTONE); +// public static final DeferredItem CUT_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(CUT_DREAM_SANDSTONE); +// public static final DeferredItem SMOOTH_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE); +// public static final DeferredItem DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_STAIRS); +// public static final DeferredItem DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_SLAB); +// public static final DeferredItem DREAM_SANDSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_WALL); +// public static final DeferredItem SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE_STAIRS); +// public static final DeferredItem SMOOTH_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE_SLAB); +// public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_DREAM_SANDSTONE_SLAB); +// public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", +// () -> new DuctTapeBlockItem(DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); +// public static final DeferredItem INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(INFESTED_ROOTED_DIRT); +// public static final DeferredItem INFESTED_COARSE_DIRT_ITEM = ITEMS.registerSimpleBlockItem(INFESTED_COARSE_DIRT); +// public static final DeferredItem NYXITE_ITEM = ITEMS.registerSimpleBlockItem(NYXITE); +// public static final DeferredItem POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE); +// public static final DeferredItem CHISELED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_NYXITE); +// public static final DeferredItem NYXITE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICKS); +// public static final DeferredItem NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_STAIRS); +// public static final DeferredItem NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_SLAB); +// public static final DeferredItem NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_WALL); +// public static final DeferredItem POLISHED_NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_STAIRS); +// public static final DeferredItem POLISHED_NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_SLAB); +// public static final DeferredItem POLISHED_NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_WALL); +// public static final DeferredItem NYXITE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_STAIRS); +// public static final DeferredItem NYXITE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_SLAB); +// public static final DeferredItem NYXITE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_WALL); +// public static final DeferredItem TRIFFID_GOO_BLOCK_ITEM = ITEMS.register("triffid_goo_block", +// () -> new com.craisinlord.antarchy.content.item.TriffidGooBlockItem(TRIFFID_GOO_BLOCK.get(), new Item.Properties())); +// public static final DeferredItem PALE_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(PALE_NYXITE); +// public static final DeferredItem NYXITE_SPIKE_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_SPIKE); +// public static final DeferredItem POTENT_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(POTENT_NYXITE); +// public static final DeferredItem UMBRAL_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(UMBRAL_MOSS_BLOCK); +// public static final DeferredItem UMBRAL_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(UMBRAL_MOSS_CARPET); +// public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", +// () -> new StandingAndWallBlockItem(DREAM_TORCH.get(), DREAM_WALL_TORCH.get(), new Item.Properties(), Direction.UP)); +// public static final DeferredItem DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(DREAM_LANTERN); +// public static final DeferredItem DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(DREAM_CAMPFIRE); +// public static final DeferredItem BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(BED_BUG_EGG); +// public static final DeferredItem WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(WASP_NEST); +// public static final DeferredItem HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(HUSHWEED); +// public static final DeferredItem ICHOR_BUCKET = ITEMS.register("ichor_bucket", +// () -> new BucketItem(ICHOR.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); +// public static final DeferredItem ANTIWATER_BUCKET = ITEMS.register("antiwater_bucket", +// () -> new BucketItem(ANTIWATER.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); +// public static final DeferredItem CLOUD_BUCKET = ITEMS.register("cloud_bucket", +// () -> new com.craisinlord.antarchy.content.item.CloudBucketItem(CLOUD_BLOCK.get(), new Item.Properties().craftRemainder(Items.BUCKET))); +// public static final DeferredItem BLOOD_CRYSTAL_SHARD = ITEMS.register("blood_crystal_shard", +// () -> new BloodCrystalShardItem(new Item.Properties())); +// public static final DeferredItem BLOOD_CRYSTAL_APPLE = ITEMS.register("blood_crystal_apple", +// () -> new BloodCrystalAppleItem(new Item.Properties() +// .rarity(Rarity.RARE) +// .food(new net.minecraft.world.food.FoodProperties.Builder() +// .nutrition(4) +// .saturationModifier(1.2f) +// .effect(() -> new MobEffectInstance(net.minecraft.world.effect.MobEffects.REGENERATION, 100, 1), 1.0f) +// .alwaysEdible() +// .build()))); +// public static final DeferredItem BLOOD_CRYSTAL_HELMET = ITEMS.register("blood_crystal_helmet", +// () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.RARE))); +// public static final DeferredItem BLOOD_CRYSTAL_CHESTPLATE = ITEMS.register("blood_crystal_chestplate", +// () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.RARE))); +// public static final DeferredItem BLOOD_CRYSTAL_LEGGINGS = ITEMS.register("blood_crystal_leggings", +// () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.RARE))); +// public static final DeferredItem BLOOD_CRYSTAL_BOOTS = ITEMS.register("blood_crystal_boots", +// () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.RARE))); +// public static final DeferredItem BLOOD_CRYSTAL_KATANA = ITEMS.register("blood_crystal_katana", +// () -> new BloodCrystalKatanaItem( +// BLOOD_CRYSTAL_KATANA_TIER, +// new Item.Properties().stacksTo(1).durability(1200).rarity(Rarity.RARE), +// AntarchySettings.bloodCrystalKatanaAttackDamage(), +// -2.2F +// )); +// public static final DeferredItem MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem JUMPY_BUG_LEG = ITEMS.register("jumpy_bug_leg", +// () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); +// public static final DeferredItem BRUTALFLY_WING = ITEMS.registerSimpleItem("brutalfly_wing", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem BRUTALFLY_ELYTRA = ITEMS.register("brutalfly_elytra", +// () -> new BrutalflyElytraItem(new Item.Properties().rarity(Rarity.UNCOMMON).durability(480))); +// public static final DeferredItem CORNEA_EAR = ITEMS.register("cornea_ear", +// () -> new CorneaEarItem(new Item.Properties() +// .rarity(Rarity.UNCOMMON) +// .food(new FoodProperties.Builder() +// .nutrition(2) +// .saturationModifier(0.4F) +// .build()))); +// public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.register("primordial_scute", +// () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); +// public static final DeferredItem TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo", +// new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem VORTEX_EYE = ITEMS.register("vortex_eye", +// () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); +// public static final DeferredItem RAW_URANIUM_SCRAP = ITEMS.registerSimpleItem("raw_uranium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem RAW_TITANIUM_SCRAP = ITEMS.registerSimpleItem("raw_titanium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem RAW_URANIUM = ITEMS.registerSimpleItem("raw_uranium", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem RAW_TITANIUM = ITEMS.registerSimpleItem("raw_titanium", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem MUD_PIE = ITEMS.register("mud_pie", +// () -> new Item(new Item.Properties() +// .food(new FoodProperties.Builder() +// .nutrition(10) +// .saturationModifier(0.9F) +// .effect(() -> new MobEffectInstance(MobEffects.CONFUSION, 200), 1.0F) +// .build()))); +// public static final DeferredItem RAINBOW_SUGAR = ITEMS.register("rainbow_sugar", +// () -> new RainbowSugarItem(new Item.Properties() +// .rarity(Rarity.UNCOMMON) +// .food(new FoodProperties.Builder().nutrition(1).saturationModifier(0.0F).alwaysEdible().build()))); +// public static final DeferredItem URANIUM_NUGGET = ITEMS.registerSimpleItem("uranium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem TITANIUM_NUGGET = ITEMS.registerSimpleItem("titanium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem URANIUM_INGOT = ITEMS.registerSimpleItem("uranium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); +// public static final DeferredItem TITANIUM_INGOT = ITEMS.registerSimpleItem("titanium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); +// public static final DeferredItem MOLEVORE_NOSE = ITEMS.registerSimpleItem("molevore_nose", new Item.Properties().rarity(Rarity.RARE)); +// public static final DeferredItem MOLEWORM_ITEM = ITEMS.register("moleworm", +// () -> new Item(new Item.Properties() +// .food(new FoodProperties.Builder() +// .nutrition(1) +// .saturationModifier(0.0F) +// .effect(() -> new MobEffectInstance(MobEffects.HUNGER, 600), 0.8F) +// .build()))); +// public static final DeferredItem CLOUD_SHARK_FIN = ITEMS.registerSimpleItem("cloud_shark_fin", new Item.Properties().rarity(Rarity.UNCOMMON)); +// public static final DeferredItem CLOUD_SHARK_FIN_SOUP = ITEMS.register("cloud_shark_fin_soup", +// () -> new CloudSharkFinSoupItem(new Item.Properties() +// .stacksTo(1) +// .craftRemainder(Items.BOWL) +// .food(new FoodProperties.Builder() +// .nutrition(10) +// .saturationModifier(0.8F) +// .effect(() -> new MobEffectInstance(MobEffects.DAMAGE_BOOST, 600, 0), 1.0F) +// .effect(() -> new MobEffectInstance(MobEffects.SLOW_FALLING, 600, 0), 1.0F) +// .build()))); +// public static final DeferredItem KRAKEN_TOOTH = ITEMS.register("kraken_tooth", +// () -> new Item(new Item.Properties().rarity(net.minecraft.world.item.Rarity.RARE))); +// public static final DeferredItem BASILISK_FANG = ITEMS.registerSimpleItem("basilisk_fang", new Item.Properties().rarity(Rarity.RARE)); +// public static final DeferredItem BASILISK_DAGGER = ITEMS.register("basilisk_dagger", +// () -> new BasiliskDaggerItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE), 4, -1.8F)); +// public static final DeferredItem EMPEROR_SCORPION_STINGER = ITEMS.registerSimpleItem("emperor_scorpion_stinger", new Item.Properties().rarity(Rarity.RARE)); +// public static final DeferredItem SCORPION_WHIP = ITEMS.register("scorpion_whip", +// () -> new ScorpionWhipItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE).durability(384))); +// public static final DeferredItem MOGGLES = ITEMS.register("moggles", +// () -> new MogglesItem(MOGGLES_ARMOR_MATERIAL, new Item.Properties().rarity(Rarity.RARE).stacksTo(1))); +// public static final DeferredItem FALLEN_KING_CROWN = ITEMS.register("fallen_king_crown", +// () -> new com.craisinlord.antarchy.content.item.FallenKingCrownItem( +// FALLEN_KING_CROWN_ARMOR_MATERIAL, +// new Item.Properties().rarity(Rarity.RARE) +// )); +// public static final DeferredItem ULTIMATE_HELMET = ITEMS.register("ultimate_helmet", +// () -> new UltimateArmorItem( +// ULTIMATE_ARMOR_MATERIAL, +// ArmorItem.Type.HELMET, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.HELMET.getDurability(41)) +// )); +// public static final DeferredItem ULTIMATE_CHESTPLATE = ITEMS.register("ultimate_chestplate", +// () -> new UltimateArmorItem( +// ULTIMATE_ARMOR_MATERIAL, +// ArmorItem.Type.CHESTPLATE, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) +// )); +// public static final DeferredItem ULTIMATE_LEGGINGS = ITEMS.register("ultimate_leggings", +// () -> new UltimateArmorItem( +// ULTIMATE_ARMOR_MATERIAL, +// ArmorItem.Type.LEGGINGS, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) +// )); +// public static final DeferredItem ULTIMATE_BOOTS = ITEMS.register("ultimate_boots", +// () -> new UltimateArmorItem( +// ULTIMATE_ARMOR_MATERIAL, +// ArmorItem.Type.BOOTS, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.BOOTS.getDurability(41)) +// )); +// public static final DeferredItem ULTIMATE_SWORD = ITEMS.register("ultimate_sword", +// () -> new UltimateSwordItem( +// ULTIMATE_TIER, +// new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), +// AntarchySettings::ultimateSwordAttackDamage, +// -2.4F +// )); +// public static final DeferredItem ULTIMATE_PICKAXE = ITEMS.register("ultimate_pickaxe", +// () -> new UltimatePickaxeItem( +// ULTIMATE_TIER, +// new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), +// AntarchySettings::ultimatePickaxeAttackDamage, +// -2.8F +// )); +// public static final DeferredItem ULTIMATE_AXE = ITEMS.register("ultimate_axe", +// () -> new UltimateAxeItem( +// ULTIMATE_TIER, +// new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), +// AntarchySettings::ultimateAxeAttackDamage, +// -3.0F +// )); +// public static final DeferredItem ULTIMATE_SHOVEL = ITEMS.register("ultimate_shovel", +// () -> new UtlimateShovelItem( +// ULTIMATE_TIER, +// new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), +// AntarchySettings::ultimateShovelAttackDamage, +// -3.0F +// )); +// public static final DeferredItem ULTIMATE_HOE = ITEMS.register("ultimate_hoe", +// () -> new UltimateHoeItem( +// ULTIMATE_TIER, +// new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), +// AntarchySettings::ultimateHoeAttackDamage, +// 0.0F +// )); +// public static final DeferredItem ULTIMATE_BOW = ITEMS.register("ultimate_bow", +// () -> new UltimateBowItem(new Item.Properties().stacksTo(1).durability(768).rarity(Rarity.EPIC).fireResistant())); +// public static final DeferredItem ULTIMATE_CROSSBOW = ITEMS.register("ultimate_crossbow", +// () -> new UltimateCrossbowItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); +// // public static final DeferredItem ULTIMATE_MACE = ITEMS.register("ultimate_mace", +//// () -> new UltimateMaceItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); +// public static final DeferredItem NIGHTMARE_HELMET = ITEMS.register("nightmare_helmet", +// () -> new NightmareArmorItem( +// NIGHTMARE_ARMOR_MATERIAL, +// ArmorItem.Type.HELMET, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.HELMET.getDurability(41)) +// )); +// public static final DeferredItem NIGHTMARE_CHESTPLATE = ITEMS.register("nightmare_chestplate", +// () -> new NightmareArmorItem( +// NIGHTMARE_ARMOR_MATERIAL, +// ArmorItem.Type.CHESTPLATE, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) +// )); +// public static final DeferredItem NIGHTMARE_LEGGINGS = ITEMS.register("nightmare_leggings", +// () -> new NightmareArmorItem( +// NIGHTMARE_ARMOR_MATERIAL, +// ArmorItem.Type.LEGGINGS, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) +// )); +// public static final DeferredItem NIGHTMARE_BOOTS = ITEMS.register("nightmare_boots", +// () -> new NightmareArmorItem( +// NIGHTMARE_ARMOR_MATERIAL, +// ArmorItem.Type.BOOTS, +// new Item.Properties() +// .rarity(Rarity.EPIC) +// .fireResistant() +// .durability(ArmorItem.Type.BOOTS.getDurability(41)) +// )); +// public static final DeferredItem NIGHTMARE_SWORD = ITEMS.register("nightmare_sword", +// () -> new NightmareSwordItem( +// ULTIMATE_TIER, +// new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), +// -2.4F +// )); +// public static final DeferredItem SHRINK_RAY = ITEMS.register("shrink_ray", +// () -> new SizeRayItem( +// new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), +// SHRINK_RAY_PROJECTILE, +// SizeRayProjectileEntity.SizeRayType.SHRINK, +// ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/shrink_ray.geo.json"), +// ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/shrink_ray.png"), +// ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/shrink_ray.animation.json"), +// "shrink_ray_active" +// )); +// public static final DeferredItem GROWTH_RAY = ITEMS.register("growth_ray", +// () -> new SizeRayItem( +// new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), +// GROWTH_RAY_PROJECTILE, +// SizeRayProjectileEntity.SizeRayType.GROWTH, +// ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/growth_ray.geo.json"), +// ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/growth_ray.png"), +// ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/growth_ray.animation.json"), +// "growth_ray_active" +// )); +// public static final DeferredItem GRAVITY_GUN = ITEMS.register("gravity_gun", +// () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); +// public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", +// () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); +// public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", +// () -> new BattleAxeItem( +// Tiers.NETHERITE, +// new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant(), +// AntarchySettings::battleAxeAttackDamage, +// -3.1F +// )); +// public static final DeferredHolder, EntityType> DIAMOND_MINECART = ENTITY_TYPES.register("diamond_minecart", +// () -> EntityType.Builder.of((entityType, level) -> new DiamondMinecartEntity(entityType, level, diamondMinecartItem()), MobCategory.MISC) +// .sized(0.98F, 0.7F) +// .clientTrackingRange(8) +// .build("diamond_minecart")); +// public static final DeferredItem DIAMOND_MINECART_ITEM = ITEMS.register("diamond_minecart", +// () -> new DiamondMinecartItem(DIAMOND_MINECART, new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); +// public static final DeferredItem REVERIE_BOTTLE = ITEMS.register("reverie_bottle", +// () -> new ReverieBottleItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); +// public static final DeferredItem BIG_BERTHA_BLADE = ITEMS.registerSimpleItem( +// "big_bertha_blade", +// new Item.Properties().rarity(Rarity.EPIC).fireResistant() +// ); +// public static final DeferredItem BIG_BERTHA_HANDLE = ITEMS.registerSimpleItem( +// "big_bertha_handle", +// new Item.Properties().rarity(Rarity.EPIC).fireResistant() +// ); +// public static final DeferredItem BIG_BERTHA_HILT = ITEMS.registerSimpleItem( +// "big_bertha_hilt", +// new Item.Properties().rarity(Rarity.EPIC).fireResistant() +// ); +// public static final DeferredItem BIG_BERTHA = ITEMS.register("big_bertha", +// () -> new BigBerthaItem( +// Tiers.NETHERITE, +// new Item.Properties() +// .stacksTo(1) +// .rarity(Rarity.EPIC) +// .fireResistant() +// )); +// +// public static final DeferredHolder, EntityType> EASTER_BUNNY = ENTITY_TYPES.register("easter_bunny", +// () -> EntityType.Builder.of(EasterBunnyEntity::new, MobCategory.CREATURE) +// .sized(0.5F, 1.0F) +// .clientTrackingRange(8) +// .build("easter_bunny")); +// public static final DeferredHolder, EntityType> FLYING_SQUIRREL = ENTITY_TYPES.register("flying_squirrel", +// () -> EntityType.Builder.of(FlyingSquirrelEntity::new, MobCategory.CREATURE) +// .sized(0.6F, 0.7F) +// .clientTrackingRange(8) +// .build("flying_squirrel")); +// public static final DeferredHolder, EntityType> CATERPILLAR = ENTITY_TYPES.register("caterpillar", +// () -> EntityType.Builder.of(CaterpillarEntity::new, MobCategory.CREATURE) +// .sized(0.8775F, 0.585F) +// .clientTrackingRange(8) +// .build("caterpillar")); +// public static final DeferredHolder, EntityType> BUTTERFLY = ENTITY_TYPES.register("butterfly", +// () -> EntityType.Builder.of(ButterflyEntity::new, MobCategory.AMBIENT) +// .sized(1.125F, 1.375F) +// .clientTrackingRange(8) +// .build("butterfly")); +// public static final DeferredHolder, EntityType> REVERIE = ENTITY_TYPES.register("reverie", +// () -> EntityType.Builder.of(ReverieEntity::new, MobCategory.AMBIENT) +// .sized(0.7F, 0.7F) +// .clientTrackingRange(8) +// .build("reverie")); +// public static final DeferredHolder, EntityType> BRUTALFLY = ENTITY_TYPES.register("brutalfly", +// () -> EntityType.Builder.of(BrutalflyEntity::new, MobCategory.MONSTER) +// .sized(2.4F, 2.1F) +// .clientTrackingRange(12) +// .build("brutalfly")); +// public static final DeferredHolder, EntityType> APPLE_COW = ENTITY_TYPES.register("apple_cow", +// () -> buildCowType(AppleCow::new, "apple_cow")); +// public static final DeferredHolder, EntityType> GOLDEN_APPLE_COW = ENTITY_TYPES.register("golden_apple_cow", +// () -> buildCowType(GoldenAppleCow::new, "golden_apple_cow")); +// public static final DeferredHolder, EntityType> ENCHANTED_GOLDEN_APPLE_COW = ENTITY_TYPES.register("enchanted_golden_apple_cow", +// () -> buildCowType(EnchantedGoldenAppleCow::new, "enchanted_golden_apple_cow")); +// public static final DeferredHolder, EntityType> HONEYED_APPLE_COW = CREATE_LOADED +// ? ENTITY_TYPES.register("honeyed_apple_cow", () -> buildCowType(HoneyedAppleCow::new, "honeyed_apple_cow")) +// : null; +// public static final DeferredHolder, EntityType> DR_TRAYAURUS = ENTITY_TYPES.register("dr_trayaurus", +// () -> EntityType.Builder.of(DrTrayaurusEntity::new, MobCategory.MISC) +// .sized(0.6F, 1.95F) +// .clientTrackingRange(10) +// .build("dr_trayaurus")); +// public static final DeferredHolder, EntityType> CLOUD_SHARK = ENTITY_TYPES.register("cloud_shark", +// () -> EntityType.Builder.of(CloudSharkEntity::new, MobCategory.MONSTER) +// .sized(2.4F, 0.9F) +// .clientTrackingRange(10) +// .build("cloud_shark")); +// public static final DeferredHolder, EntityType> KRAKEN = ENTITY_TYPES.register("kraken", +// () -> EntityType.Builder.of(KrakenEntity::new, MobCategory.MONSTER) +// .sized(5.2F, 9.8F) +// .clientTrackingRange(12) +// .build("kraken")); +// public static final DeferredHolder, EntityType> MISSILE_SQUID = ENTITY_TYPES.register("missile_squid", +// () -> EntityType.Builder.of(MissileSquidEntity::new, MobCategory.MONSTER) +// .sized(1.62F, 3.18F) +// .clientTrackingRange(10) +// .build("missile_squid")); +// public static final DeferredHolder, EntityType> NIGHTMARE = ENTITY_TYPES.register("nightmare", +// () -> EntityType.Builder.of(NightmareEntity::new, MobCategory.MONSTER) +// .sized(3.0F, 3.8F) +// .clientTrackingRange(12) +// .build("nightmare")); +// public static final DeferredHolder, EntityType> LUCID = ENTITY_TYPES.register("lucid", +// () -> EntityType.Builder.of(LucidEntity::new, MobCategory.MONSTER) +// .sized(2.0F, 2.0F) +// .clientTrackingRange(10) +// .build("lucid")); +// public static final DeferredHolder, EntityType> LUCID_BOLT = ENTITY_TYPES.register("lucid_bolt", +// () -> EntityType.Builder.of(LucidBoltEntity::new, MobCategory.MISC) +// .sized(0.3F, 0.3F) +// .clientTrackingRange(8) +// .updateInterval(1) +// .build("lucid_bolt")); +// public static final DeferredHolder, EntityType> SCORPION = ENTITY_TYPES.register("scorpion", +// () -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER) +// .sized(1.5F, 1.0F) +// .clientTrackingRange(8) +// .build("scorpion")); +// public static final DeferredHolder, EntityType> BASILISK = ENTITY_TYPES.register("basilisk", +// () -> EntityType.Builder.of(BasiliskEntity::new, MobCategory.MONSTER) +// .sized(2.0F, 3.5F) +// .clientTrackingRange(14) +// .build("basilisk")); +// public static final DeferredHolder, EntityType> EMPEROR_SCORPION = ENTITY_TYPES.register("emperor_scorpion", +// () -> EntityType.Builder.of(EmperorScorpionEntity::new, MobCategory.MONSTER) +// .sized(4.05F, 1.35F) +// .clientTrackingRange(10) +// .build("emperor_scorpion")); +// public static final DeferredHolder, EntityType> LUCID_PEARL_PROJECTILE = ENTITY_TYPES.register("lucid_pearl_projectile", +// () -> EntityType.Builder.of(LucidEyeProjectileEntity::new, MobCategory.MISC) +// .sized(0.25F, 0.25F) +// .clientTrackingRange(8) +// .updateInterval(1) +// .build("lucid_pearl_projectile")); +// public static final DeferredHolder, EntityType> HUSH_PROJECTILE = ENTITY_TYPES.register("hush_projectile", +// () -> EntityType.Builder.of(HushProjectileEntity::new, MobCategory.MISC) +// .sized(0.35F, 0.35F) +// .clientTrackingRange(8) +// .updateInterval(1) +// .build("hush_projectile")); +// public static final DeferredHolder, EntityType> BRUTALFLY_ORB = ENTITY_TYPES.register("brutalfly_orb", +// () -> EntityType.Builder.of(BrutalflyOrbEntity::new, MobCategory.MISC) +// .sized(0.75F, 0.75F) +// .clientTrackingRange(10) +// .updateInterval(1) +// .build("brutalfly_orb")); +// public static final DeferredHolder, EntityType> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block", +// () -> EntityType.Builder.of( +// com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity::new, MobCategory.MISC) +// .sized(0.98F, 0.98F) +// .clientTrackingRange(10) +// .updateInterval(1) +// .build("upward_falling_block")); +// +// public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", +// () -> new DeferredSpawnEggItem(EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties())); +// public static final DeferredItem FLYING_SQUIRREL_SPAWN_EGG = ITEMS.register("flying_squirrel_spawn_egg", +// () -> new DeferredSpawnEggItem(FLYING_SQUIRREL, 0x7D6649, 0xDCC59C, new Item.Properties())); +// public static final DeferredItem CATERPILLAR_SPAWN_EGG = ITEMS.register("caterpillar_spawn_egg", +// () -> new DeferredSpawnEggItem(CATERPILLAR, 0xA8D96A, 0xF4E04D, new Item.Properties())); +// public static final DeferredItem BUTTERFLY_SPAWN_EGG = ITEMS.register("butterfly_spawn_egg", +// () -> new DeferredSpawnEggItem(BUTTERFLY, 0x111111, 0xFF7A00, new Item.Properties())); +// public static final DeferredItem REVERIE_SPAWN_EGG = ITEMS.register("reverie_spawn_egg", +// () -> new DeferredSpawnEggItem(REVERIE, 0xF2F2F2, 0xBFC3C7, new Item.Properties())); +// public static final DeferredItem BRUTALFLY_SPAWN_EGG = ITEMS.register("brutalfly_spawn_egg", +// () -> new DeferredSpawnEggItem(BRUTALFLY, 0x4A2214, 0xFF8A1D, new Item.Properties().rarity(Rarity.EPIC))); +// public static final DeferredItem RED_ANT_SPAWN_EGG = ITEMS.register("red_ant_spawn_egg", +// () -> new DeferredSpawnEggItem(RED_ANT, 0xA31818, 0x2B0909, new Item.Properties())); +// public static final DeferredItem BROWN_ANT_SPAWN_EGG = ITEMS.register("brown_ant_spawn_egg", +// () -> new DeferredSpawnEggItem(BROWN_ANT, 0x6A4320, 0x26160A, new Item.Properties())); +// public static final DeferredItem RAINBOW_ANT_SPAWN_EGG = ITEMS.register("rainbow_ant_spawn_egg", +// () -> new DeferredSpawnEggItem(RAINBOW_ANT, 0x56D4F0, 0xF66DBB, new Item.Properties())); +// public static final DeferredItem MOLEWORM_SPAWN_EGG = ITEMS.register("moleworm_spawn_egg", +// () -> new DeferredSpawnEggItem(MOLEWORM, 0x7A6150, 0xD2B8A3, new Item.Properties())); +// public static final DeferredItem MANTIS_SPAWN_EGG = ITEMS.register("mantis_spawn_egg", +// () -> new DeferredSpawnEggItem(MANTIS, 0xF8F8F2, 0x63B44A, new Item.Properties())); +// public static final DeferredItem MOLEVORE_SPAWN_EGG = ITEMS.register("molevore_spawn_egg", +// () -> new DeferredSpawnEggItem(MOLEVORE, 0x3E2E24, 0xB67B4F, new Item.Properties().rarity(Rarity.UNCOMMON))); +// public static final DeferredItem TRIFFID_SPAWN_EGG = ITEMS.register("triffid_spawn_egg", +// () -> new DeferredSpawnEggItem(TRIFFID, 0x4C8F3A, 0xFF2FB3, new Item.Properties().rarity(Rarity.UNCOMMON))); +// public static final DeferredItem APPLE_COW_SPAWN_EGG = ITEMS.register("apple_cow_spawn_egg", +// () -> new DeferredSpawnEggItem(APPLE_COW, 0xFF1A1A, 0x32FF32, new Item.Properties())); +// public static final DeferredItem GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("golden_apple_cow_spawn_egg", +// () -> new DeferredSpawnEggItem(GOLDEN_APPLE_COW, 0xFFE14A, 0x32FF32, new Item.Properties())); +// public static final DeferredItem ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("enchanted_golden_apple_cow_spawn_egg", +// () -> new DeferredSpawnEggItem(ENCHANTED_GOLDEN_APPLE_COW, 0x7040B6, 0xFFE14A, new Item.Properties())); +// public static final DeferredItem HONEYED_APPLE_COW_SPAWN_EGG = CREATE_LOADED +// ? ITEMS.register("honeyed_apple_cow_spawn_egg", () -> new DeferredSpawnEggItem(HONEYED_APPLE_COW, 0xC07A23, 0xF0C75A, new Item.Properties())) +// : null; +// public static final DeferredItem DR_TRAYAURUS_SPAWN_EGG = ITEMS.register("dr_trayaurus_spawn_egg", +// () -> new DeferredSpawnEggItem(DR_TRAYAURUS, 0xB7A27B, 0x4A3D29, new Item.Properties())); +// public static final DeferredItem WASP_SPAWN_EGG = ITEMS.register("wasp_spawn_egg", +// () -> new DeferredSpawnEggItem(WASP, 0x111111, 0xF1D800, new Item.Properties())); +// public static final DeferredItem BOMBER_SPAWN_EGG = ITEMS.register("bomber_spawn_egg", +// () -> new DeferredSpawnEggItem(BOMBER, 0x7A7A7A, 0xB32020, new Item.Properties())); +// public static final DeferredItem CLOUD_SHARK_SPAWN_EGG = ITEMS.register("cloud_shark_spawn_egg", +// () -> new DeferredSpawnEggItem(CLOUD_SHARK, 0xDDEAF4, 0x7F96A8, new Item.Properties())); +// public static final DeferredItem KRAKEN_SPAWN_EGG = ITEMS.register("kraken_spawn_egg", +// () -> new DeferredSpawnEggItem(KRAKEN, 0x163C53, 0x4F8E99, new Item.Properties().rarity(Rarity.EPIC))); +// public static final DeferredItem MISSILE_SQUID_SPAWN_EGG = ITEMS.register("missile_squid_spawn_egg", +// () -> new DeferredSpawnEggItem(MISSILE_SQUID, 0xD88FA7, 0x8D5269, new Item.Properties().rarity(Rarity.UNCOMMON))); +// public static final DeferredItem NIGHTMARE_SPAWN_EGG = ITEMS.register("nightmare_spawn_egg", +// () -> new DeferredSpawnEggItem(NIGHTMARE, 0x22121C, 0xB51B2D, new Item.Properties().rarity(Rarity.RARE))); +// public static final DeferredItem BED_BUG_SPAWN_EGG = ITEMS.register("bed_bug_spawn_egg", +// () -> new DeferredSpawnEggItem(BED_BUG, 0x3B2218, 0x611111, new Item.Properties())); +// public static final DeferredItem LUCID_SPAWN_EGG = ITEMS.register("lucid_spawn_egg", +// () -> new DeferredSpawnEggItem(LUCID, 0xE53935, 0xF4D03F, new Item.Properties().rarity(Rarity.RARE))); +// public static final DeferredItem SCORPION_SPAWN_EGG = ITEMS.register("scorpion_spawn_egg", +// () -> new DeferredSpawnEggItem(SCORPION, 0xA8D8FF, 0xE04B5A, new Item.Properties())); +// public static final DeferredItem BASILISK_SPAWN_EGG = ITEMS.register("basilisk_spawn_egg", +// () -> new DeferredSpawnEggItem(BASILISK, 0x4A7C40, 0xD4A040, new Item.Properties())); +// public static final DeferredItem EMPEROR_SCORPION_SPAWN_EGG = ITEMS.register("emperor_scorpion_spawn_egg", +// () -> new DeferredSpawnEggItem(EMPEROR_SCORPION, 0x1A1A0A, 0x8B2200, new Item.Properties())); +// public static final DeferredItem LUCID_EYE = ITEMS.register("lucid_eye", +// () -> new LucidEyeItem(new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON))); +// public static final DeferredItem LUCID_PEARL = ITEMS.register("lucid_pearl", +// () -> new LucidPearlItem( +// new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON), +// LUCID_PEARL_PROJECTILE +// )); +// +// private AntarchyNeoForgeContentOLD() { +// } +// +// public static void register(IEventBus modEventBus) { +// com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity.TYPE = UPWARD_FALLING_BLOCK; +// ScorpionWhipTetherSync.setSink((player, targetId) -> PacketDistributor.sendToPlayersTrackingEntityAndSelf( +// player, +// new com.craisinlord.antarchy.content.network.ScorpionWhipTetherPayload(player.getId(), targetId) +// )); +// BloodCrystalKatanaItem.setTrailCallback((player, durationTicks) -> PacketDistributor.sendToPlayersTrackingEntityAndSelf( +// player, +// new BloodCrystalKatanaTrailPayload(player.getId(), durationTicks) +// )); +// BLOCKS.register(modEventBus); +// ITEMS.register(modEventBus); +// CREATIVE_MODE_TABS.register(modEventBus); +// ARMOR_MATERIALS.register(modEventBus); +// ENTITY_TYPES.register(modEventBus); +// BLOCK_ENTITY_TYPES.register(modEventBus); +// PARTICLE_TYPES.register(modEventBus); +// SOUND_EVENTS.register(modEventBus); +// FLUID_TYPES.register(modEventBus); +// FEATURES.register(modEventBus); +// BIOME_SOURCES.register(modEventBus); +// DENSITY_FUNCTION_TYPES.register(modEventBus); +// ENTITY_SUB_PREDICATES.register(modEventBus); +// ATTRIBUTES.register(modEventBus); +// MOB_EFFECTS.register(modEventBus); +// POTIONS.register(modEventBus); +// FLUIDS.register(modEventBus); +// AntarchySoundEvents.bind( +// SQUIDZOOKA_FIRE, +// SHRINK_RAY_SOUND, +// GROWTH_RAY_SOUND, +// SIZE_RAY_CHARGE, +// ANT_AMBIENT, +// ANT_IDLE, +// ANT_HURT, +// ANT_BITE, +// ANT_GATHER, +// ANT_NEST, +// CLOUD_SHARK_BITE, +// CLOUD_SHARK_IDLE, +// CLOUD_SHARK_HURT, +// CLOUD_SHARK_DEATH, +// CLOUD_SHARK_FLY, +// CATERPILLAR_IDLE, +// CATERPILLAR_HURT, +// CATERPILLAR_CRAWL, +// BUTTERFLY_HURT, +// BRUTALFLY_IDLE, +// BRUTALFLY_DEATH, +// ELYTHIA_FIREFLY_AMBIENT, +// MISSILE_SQUID_AMBIENT, +// MISSILE_SQUID_HURT, +// MISSILE_SQUID_DEATH, +// MISSILE_SQUID_ATTACK, +// KRAKEN_FLYING_LOOP, +// KRAKEN_FLYING_SIDEWAYS_LOOP, +// KRAKEN_ATTACK, +// KRAKEN_SPIN, +// KRAKEN_ROAR, +// KRAKEN_SUMMON, +// KRAKEN_HURT, +// KRAKEN_DEATH, +// BASILISK_IDLE_LOOP, +// BASILISK_SLITHER_LOOP, +// BASILISK_BITE, +// BASILISK_HISS, +// BASILISK_HURT, +// BASILISK_DEATH, +// THORAXIS_NIGHTMARE_WASTES_AMBIENT, +// THORAXIS_NIGHTMARE_WASTES_ADDITIONS, +// THORAXIS_NIGHTMARE_WASTES_MOOD, +// THORAXIS_DREAM_DUNES_AMBIENT, +// THORAXIS_DREAM_DUNES_ADDITIONS, +// THORAXIS_DREAM_DUNES_MOOD, +// THORAXIS_LUCID_POOLS_AMBIENT, +// THORAXIS_LUCID_POOLS_ADDITIONS, +// THORAXIS_LUCID_POOLS_MOOD, +// LUCID_AMBIENT, +// LUCID_FLYING, +// LUCID_ATTACK, +// LUCID_BOLT_SOUND, +// LUCID_HURT, +// LUCID_DEATH, +// REVERIE_IDLE, +// REVERIE_HURT, +// REVERIE_WORRY, +// REVERIE_SAVE, +// REVERIE_JOIN_PLAYER, +// REVERIE_ALERT, +// FLYING_SQUIRREL_IDLE, +// FLYING_SQUIRREL_BEG, +// FLYING_SQUIRREL_NUT, +// FLYING_SQUIRREL_GLIDE_LOOP, +// FLYING_SQUIRREL_HURT, +// FLYING_SQUIRREL_DEATH, +// NIGHTMARE_IDLE, +// NIGHTMARE_HURT, +// NIGHTMARE_ROAR, +// NIGHTMARE_DEATH, +// NIGHTMARE_BITE, +// NIGHTMARE_FLAP, +// TRIFFID_ATTACK, +// TRIFFID_GRAB, +// TRIFFID_HURT, +// TRIFFID_DEATH, +// TRIFFID_HISS, +// TRIFFID_GROWL, +// MANTIS_AMBIENT, +// MANTIS_HURT, +// MANTIS_ATTACK, +// MANTIS_FLY_LOOP, +// GRAVITY_GUN_PICKUP, +// GRAVITY_GUN_DROP, +// GRAVITY_GUN_HOLD_LOOP, +// GRAVITY_GUN_LAUNCH, +// GRAVITY_GUN_DRYFIRE, +// BED_BUG_AMBIENT, +// BED_BUG_HURT, +// BED_BUG_ATTACK, +// WASP_IDLE, +// WASP_HURT, +// WASP_ATTACK, +// WASP_DEATH, +// SCORPION_AMBIENT, +// SCORPION_HURT, +// SCORPION_ATTACK, +// EMPEROR_SCORPION_AMBIENT, +// EMPEROR_SCORPION_HURT, +// EMPEROR_SCORPION_ATTACK, +// EMPEROR_SCORPION_ROAR, +// MOLEWORM_AMBIENT, +// MOLEWORM_HURT, +// MOLEWORM_ATTACK, +// MOLEWORM_DIG, +// MOLEVORE_AMBIENT, +// MOLEVORE_HURT, +// MOLEVORE_ATTACK, +// MOLEVORE_DIG, +// DUCT_TAPE_USE +// ); +// AntarchyNeoForgeEvents.register(modEventBus); +// modEventBus.addListener(AntarchyNeoForgeContentOLD::onCommonSetup); +// modEventBus.addListener(AntarchyNeoForgeContentOLD::registerPayloadHandlers); +// modEventBus.addListener(AntarchyNeoForgeContentOLD::registerEntityAttributes); +// modEventBus.addListener(AntarchyNeoForgeContentOLD::buildCreativeTabs); +// modEventBus.addListener(AntarchyNeoForgeContentOLD::registerSpawnPlacements); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::registerBrewingRecipes); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleNaturalRabbitReplacement); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBlockToolModification); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::onMobEffectApplicable); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::onInvertedEffectRemoved); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::onInvertedEffectExpired); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleUltimateBowDamage); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleUltimateCrossbowDamage); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleNightmareSwordDamage); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleNightmareArmorDoubleDamage); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::tickLightningDragonStorms); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleScorpionWhipAttackEntity); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleScorpionWhipLeftClickBlock); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleScorpionWhipRightClickBlock); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleScorpionWhipRightClickItem); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleParalyzedAttackEntity); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleParalyzedLeftClickBlock); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleParalyzedRightClickBlock); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleParalyzedRightClickItem); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleParalyzedEntityInteract); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleParalyzedEntityInteractSpecific); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleDreamSandJump); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::tickDreadAndIchor); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::tickScorpionWhips); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::tickDreamSandLowGravity); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleAntiwaterDamage); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleAntiwaterFall); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleDreamSandFall); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodCrystalBootsFall); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodglassShield); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodCrystalArmorEquip); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodglassWardApplied); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodglassWardRemoved); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodglassWardExpired); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::tickBloodglassRecharge); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodglassPlayerDeath); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodglassRespawn); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleBloodglassLogin); +// modEventBus.addListener(AntarchyNeoForgeContentOLD::modifyEntityAttributes); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::tickOverheadInversion); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::tickDuctTapeStickiness); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleDreadDeath); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleFallenKingCrownKill); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleDreadBedSleep); +// // NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContent::registerCommands); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleStartTracking); +// // NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContent::handlePlayerLogin); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::handleDreamSandLogout); +// // NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContent::handleDreamSandDimensionChange); +// // NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContent::tickThoraxisWeather); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::debugThoraxisSpawnPlacements); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::debugThoraxisSpawnState); +// NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeContentOLD::registerReloadListeners); +// +// if (isModLoaded("infinity")) { +// InfinityCompat.bind(new NeoForgeInfinityCompat()); +// } +// +// com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyGravityNetworking::syncEntity); +// +// AntarchyObjects.bind( +// EASTER_BUNNY, +// FLYING_SQUIRREL, +// KRAKEN, +// MISSILE_SQUID, +// MOLEWORM, +// MANTIS, +// BED_BUG, +// WASP, +// BOMBER, +// SCORPION, +// CATERPILLAR, +// BUTTERFLY, +// REVERIE, +// TRIFFID, +// BRUTALFLY, +// BRUTALFLY_ORB, +// HUSH_PROJECTILE, +// () -> DUPLICATOR_LOG.get(), +// () -> DUPLICATOR_SAPLING.get(), +// () -> DUCT_TAPE.get(), +// () -> INFESTED_ROOTED_DIRT.get(), +// () -> INFESTED_COARSE_DIRT.get(), +// () -> NYXITE.get(), +// () -> CLOUD_BLOCK.get(), +// () -> TRIFFID_GOO_BLOCK.get(), +// () -> PALE_NYXITE.get(), +// () -> NYXITE_SPIKE.get(), +// () -> POTENT_NYXITE.get(), +// () -> ANTIMETAL.get(), +// () -> POLISHED_ANTIMETAL.get(), +// () -> BUDDING_BLOOD_CRYSTAL.get(), +// () -> SMALL_BLOOD_CRYSTAL_BUD.get(), +// () -> MEDIUM_BLOOD_CRYSTAL_BUD.get(), +// () -> LARGE_BLOOD_CRYSTAL_BUD.get(), +// () -> BLOOD_CRYSTAL_CRYSTAL.get(), +// () -> OURANWOOD_ACORN.get(), +// () -> KRAKEN_TOOTH.get(), +// () -> MOGGLES.get(), +// () -> REVERIE_BOTTLE.get(), +// () -> DREAD, +// () -> PARALYZED, +// () -> INVERTED, +// () -> OURANWOOD_ACORN_BLOCK.get(), +// () -> MOSSY_OURANWOOD_LOG.get(), +// () -> MOSSY_OURANWOOD_WOOD.get(), +// () -> ORANGE_MILKWEED.get(), +// () -> PINK_MILKWEED.get(), +// () -> TORCHFLOWER_BUSH.get(), +// () -> BED_BUG_EGG.get(), +// () -> WASP_NEST.get(), +// () -> HUSHWEED.get(), +// () -> OURANWOOD_SQUIRREL_NEST.get(), +// () -> ANT_NEST_BLOCK_ENTITY.get(), +// () -> DREAM_CAMPFIRE_BLOCK_ENTITY.get(), +// () -> WASP_NEST_BLOCK_ENTITY.get(), +// () -> HUSHWEED_BLOCK_ENTITY.get(), +// () -> DOUBLE_DAMAGE_CHANCE, +// () -> BLOODGLASS_MAX_HEARTS, +// () -> BLOODGLASS_WARD +// ); +// } +// +// static void onCommonSetup(FMLCommonSetupEvent event) { +// BloodCrystalShardItem.SYNC_BLOODGLASS = AntarchyNeoForgeContentOLD::syncBloodglass; +// event.enqueueWork(() -> { +// DispenserBlock.registerBehavior(SHRINK_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); +// DispenserBlock.registerBehavior(GROWTH_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); +// LucidEyeProjectileEntity.defaultItemSupplier = () -> LUCID_PEARL.get(); +// LucidEntity.invertedEffectSupplier = () -> INVERTED; +// FluidInteractionRegistry.addInteraction( +// ANTIWATER_TYPE.get(), +// new FluidInteractionRegistry.InteractionInformation( +// NeoForgeMod.WATER_TYPE.value(), +// fluidState -> fluidState.isSource() +// ? ANTIMETAL.get().defaultBlockState() +// : NYXITE.get().defaultBlockState() +// ) +// ); +// LucidEntity.boltEntityTypeSupplier = () -> LUCID_BOLT.get(); +// LucidBoltEntity.invertedEffectSupplier = () -> INVERTED; +// LucidEyeProjectileEntity.invertedEffectSupplier = () -> INVERTED; +// MultipartFramework.bootstrap( +// (owner, partIndex, spec) -> new MultipartPartEntity((Entity) owner, owner, partIndex, spec), +// new MultipartFramework.NetworkBridge() { +// @Override +// public void sendAttack(java.util.UUID parentId, int partIndex, float damage) { +// net.neoforged.neoforge.network.PacketDistributor.sendToServer( +// new com.craisinlord.antarchy.content.entity.multipart.network.MultipartAttackPayload(parentId, partIndex, damage) +// ); +// } +// +// @Override +// public void sendInteract(java.util.UUID parentId, int partIndex, int handId) { +// net.neoforged.neoforge.network.PacketDistributor.sendToServer( +// new com.craisinlord.antarchy.content.entity.multipart.network.MultipartInteractPayload(parentId, partIndex, handId) +// ); +// } +// } +// ); +// ComposterBlock.COMPOSTABLES.put(UMBRAL_MOSS_BLOCK.get().asItem(), 0.65f); +// ComposterBlock.COMPOSTABLES.put(UMBRAL_MOSS_CARPET.get().asItem(), 0.3f); +// ComposterBlock.COMPOSTABLES.put(HUSHWEED.get().asItem(), 0.65f); +// ComposterBlock.COMPOSTABLES.put(CORNEA_EAR.get(), 0.65f); +// }); +// } +// +// static void registerPayloadHandlers(RegisterPayloadHandlersEvent event) { +// var registrar = event.registrar("1"); +// AntarchyGravityNetworking.register(registrar); +// BrutalflyElytraNetworking.register(registrar); +// registrar.playToClient( +// com.craisinlord.antarchy.content.network.BloodglassStatePayload.TYPE, +// com.craisinlord.antarchy.content.network.BloodglassStatePayload.STREAM_CODEC, +// (payload, ctx) -> ctx.enqueueWork(() -> +// com.craisinlord.antarchy.content.client.BloodglassClientState.update(payload.shieldsActive(), payload.shieldsMax()) +// ) +// ); +// registrar.playToClient( +// BloodCrystalKatanaTrailPayload.TYPE, +// BloodCrystalKatanaTrailPayload.STREAM_CODEC, +// (payload, ctx) -> ctx.enqueueWork(() -> +// com.craisinlord.antarchy.content.client.BloodCrystalKatanaTrailClientState.trigger(payload.entityId(), payload.durationTicks()) +// ) +// ); +// registrar.playToClient( +// com.craisinlord.antarchy.content.network.ScorpionWhipTetherPayload.TYPE, +// com.craisinlord.antarchy.content.network.ScorpionWhipTetherPayload.STREAM_CODEC, +// (payload, ctx) -> ctx.enqueueWork(() -> +// com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState.update(payload.playerId(), payload.targetId()) +// ) +// ); +// MultipartNetworking.register(registrar); +// // ThoraxisWeatherNetworking.register(registrar); +// } +// +// static void registerEntityAttributes(EntityAttributeCreationEvent event) { +// AttributeSupplier rabbitAttributes = Rabbit.createAttributes().build(); +// event.put(EASTER_BUNNY.get(), rabbitAttributes); +// event.put(FLYING_SQUIRREL.get(), FlyingSquirrelEntity.createAttributes().build()); +// event.put(CATERPILLAR.get(), CaterpillarEntity.createAttributes().build()); +// event.put(BUTTERFLY.get(), ButterflyEntity.createAttributes().build()); +// event.put(REVERIE.get(), ReverieEntity.createAttributes().build()); +// event.put(BRUTALFLY.get(), BrutalflyEntity.createAttributes().build()); +// +// AttributeSupplier cowAttributes = Cow.createAttributes().build(); +// event.put(APPLE_COW.get(), cowAttributes); +// event.put(GOLDEN_APPLE_COW.get(), cowAttributes); +// event.put(ENCHANTED_GOLDEN_APPLE_COW.get(), cowAttributes); +// if (CREATE_LOADED && HONEYED_APPLE_COW != null) { +// event.put(HONEYED_APPLE_COW.get(), cowAttributes); +// } +// event.put(DR_TRAYAURUS.get(), Villager.createAttributes().build()); +// event.put(CLOUD_SHARK.get(), CloudSharkEntity.createAttributes().build()); +// event.put(KRAKEN.get(), KrakenEntity.createAttributes().build()); +// event.put(MISSILE_SQUID.get(), MissileSquidEntity.createAttributes().build()); +// event.put(NIGHTMARE.get(), NightmareEntity.createAttributes().build()); +// event.put(BED_BUG.get(), BedBugEntity.createAttributes().build()); +// event.put(WASP.get(), WaspEntity.createAttributes().build()); +// event.put(BOMBER.get(), BomberEntity.createAttributes().build()); +// event.put(MANTIS.get(), MantisEntity.createAttributes().build()); +// event.put(TRIFFID.get(), TriffidEntity.createAttributes().build()); +// event.put(LUCID.get(), LucidEntity.createAttributes().build()); +// event.put(SCORPION.get(), ScorpionEntity.createAttributes().build()); +// event.put(BASILISK.get(), BasiliskEntity.createAttributes().build()); +// event.put(EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build()); +// +// AttributeSupplier redAntAttributes = buildAntAttributes(AntarchySettings.redAntHealth(), AntarchySettings.redAntMovementSpeed(), AntarchySettings.redAntAttackDamage()).build(); +// AttributeSupplier brownAntAttributes = buildAntAttributes(AntarchySettings.brownAntHealth(), AntarchySettings.brownAntMovementSpeed(), AntarchySettings.brownAntAttackDamage()).build(); +// AttributeSupplier rainbowAntAttributes = buildAntAttributes(AntarchySettings.rainbowAntHealth(), AntarchySettings.rainbowAntMovementSpeed(), AntarchySettings.rainbowAntAttackDamage()).build(); +// AttributeSupplier termiteAttributes = buildAntAttributes(AntarchySettings.termiteHealth(), AntarchySettings.termiteMovementSpeed(), AntarchySettings.termiteAttackDamage()).build(); +// event.put(RED_ANT.get(), redAntAttributes); +// event.put(BROWN_ANT.get(), brownAntAttributes); +// event.put(RAINBOW_ANT.get(), rainbowAntAttributes); +// event.put(MOLEWORM.get(), MolewormEntity.createAttributes().build()); +// event.put(MOLEVORE.get(), MolevoreEntity.createAttributes().build()); +// } +// +//// static void buildCreativeTabs(BuildCreativeModeTabContentsEvent event) { +//// if (event.getTabKey() == .getKey()) { +//// java.util.ArrayList sortedItems = new java.util.ArrayList<>(); +//// for (var holder : ITEMS.getEntries()) { +//// Item item = holder.get(); +//// if (item != Items.AIR) sortedItems.add(item); +//// } +//// sortedItems.sort(Comparator +//// .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); +//// } +//// +//// if (event.getTabKey() == CreativeModeTabs.SPAWN_EGGS) { +//// event.accept(EASTER_BUNNY_SPAWN_EGG.get()); +//// event.accept(FLYING_SQUIRREL_SPAWN_EGG.get()); +//// event.accept(CATERPILLAR_SPAWN_EGG.get()); +//// event.accept(BUTTERFLY_SPAWN_EGG.get()); +//// event.accept(REVERIE_SPAWN_EGG.get()); +//// event.accept(BRUTALFLY_SPAWN_EGG.get()); +//// event.accept(RED_ANT_SPAWN_EGG.get()); +//// event.accept(BROWN_ANT_SPAWN_EGG.get()); +//// event.accept(RAINBOW_ANT_SPAWN_EGG.get()); +//// event.accept(MOLEWORM_SPAWN_EGG.get()); +//// event.accept(MANTIS_SPAWN_EGG.get()); +//// event.accept(MOLEVORE_SPAWN_EGG.get()); +//// event.accept(TRIFFID_SPAWN_EGG.get()); +//// event.accept(APPLE_COW_SPAWN_EGG.get()); +//// event.accept(GOLDEN_APPLE_COW_SPAWN_EGG.get()); +//// event.accept(ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG.get()); +//// event.accept(DR_TRAYAURUS_SPAWN_EGG.get()); +//// event.accept(WASP_SPAWN_EGG.get()); +//// event.accept(BOMBER_SPAWN_EGG.get()); +//// event.accept(CLOUD_SHARK_SPAWN_EGG.get()); +//// event.accept(KRAKEN_SPAWN_EGG.get()); +//// event.accept(MISSILE_SQUID_SPAWN_EGG.get()); +//// event.accept(NIGHTMARE_SPAWN_EGG.get()); +//// event.accept(BED_BUG_SPAWN_EGG.get()); +//// event.accept(LUCID_SPAWN_EGG.get()); +//// event.accept(SCORPION_SPAWN_EGG.get()); +//// event.accept(BASILISK_SPAWN_EGG.get()); +//// event.accept(EMPEROR_SCORPION_SPAWN_EGG.get()); +////// if (CREATE_LOADED && HONEYED_APPLE_COW_SPAWN_EGG != null) { +////// event.accept(HONEYED_APPLE_COW_SPAWN_EGG.get()); +////// } +//// } +//// +//// if (event.getTabKey() == CreativeModeTabs.NATURAL_BLOCKS) { +//// event.accept(OURANWOOD_LEAVES_ITEM.get()); +//// event.accept(OURANWOOD_ACORN.get()); +//// event.accept(DUPLICATOR_LOG_ITEM.get()); +//// event.accept(DUPLICATOR_SAPLING_ITEM.get()); +//// event.accept(ORANGE_MILKWEED_ITEM.get()); +//// event.accept(PINK_MILKWEED_ITEM.get()); +//// event.accept(TORCHFLOWER_BUSH_ITEM.get()); +//// event.accept(HUSHWEED_ITEM.get()); +//// event.accept(INFESTED_ROOTED_DIRT_ITEM.get()); +//// event.accept(INFESTED_COARSE_DIRT_ITEM.get()); +//// event.accept(TRIFFID_GOO_BLOCK_ITEM.get()); +//// event.accept(BED_BUG_EGG_ITEM.get()); +//// event.accept(WASP_NEST_ITEM.get()); +//// event.accept(RED_ANT_NEST_ITEM.get()); +//// event.accept(BROWN_ANT_NEST_ITEM.get()); +//// event.accept(RAINBOW_ANT_NEST_ITEM.get()); +//// event.accept(URANIUM_ORE_ITEM.get()); +//// event.accept(DEEPSLATE_URANIUM_ORE_ITEM.get()); +//// event.accept(TITANIUM_ORE_ITEM.get()); +//// event.accept(DEEPSLATE_TITANIUM_ORE_ITEM.get()); +//// } +//// +//// if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) { +//// event.insertAfter(new ItemStack(Items.SHEARS), new ItemStack(DUCT_TAPE_ITEM.get()), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); +//// event.insertAfter(new ItemStack(Items.MINECART), new ItemStack(DIAMOND_MINECART_ITEM.get()), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); +//// event.accept(ICHOR_BUCKET.get()); +//// event.accept(ANTIWATER_BUCKET.get()); +//// event.accept(CLOUD_BUCKET.get()); +//// event.accept(REVERIE_BOTTLE.get()); +//// event.accept(ULTIMATE_PICKAXE.get()); +//// event.accept(ULTIMATE_AXE.get()); +//// event.accept(ULTIMATE_SHOVEL.get()); +//// event.accept(ULTIMATE_HOE.get()); +//// } +//// +//// if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) { +//// event.accept(RAW_URANIUM_SCRAP.get()); +//// event.accept(RAW_TITANIUM_SCRAP.get()); +//// event.accept(RAW_URANIUM.get()); +//// event.accept(RAW_TITANIUM.get()); +//// event.accept(URANIUM_NUGGET.get()); +//// event.accept(TITANIUM_NUGGET.get()); +//// event.accept(URANIUM_INGOT.get()); +//// event.accept(TITANIUM_INGOT.get()); +//// event.accept(CLOUD_SHARK_FIN.get()); +//// event.accept(CLOUD_SHARK_FIN_SOUP.get()); +//// event.accept(BASILISK_FANG.get()); +//// event.accept(NIGHTMARE_SCALE.get()); +//// event.accept(MOLEVORE_NOSE.get()); +//// event.accept(MOLEWORM_ITEM.get()); +//// event.accept(MUD_PIE.get()); +//// event.accept(LUCID_EYE.get()); +//// event.accept(BLOOD_CRYSTAL_SHARD.get()); +//// event.accept(BLOOD_CRYSTAL_APPLE.get()); +//// event.accept(MANTIS_CLAW.get()); +//// event.accept(BRUTALFLY_WING.get()); +//// event.accept(PRIMORDIAL_SCUTE.get()); +//// event.accept(TRIFFID_GOO.get()); +//// event.accept(VORTEX_EYE.get()); +//// event.accept(EMPEROR_SCORPION_STINGER.get()); +//// event.accept(KRAKEN_TOOTH.get()); +//// event.accept(JUMPY_BUG_LEG.get()); +//// event.accept(CORNEA_EAR.get()); +//// event.accept(RAINBOW_SUGAR.get()); +//// event.accept(BIG_BERTHA_BLADE.get()); +//// event.accept(BIG_BERTHA_HANDLE.get()); +//// event.accept(BIG_BERTHA_HILT.get()); +//// } +//// +//// if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) { +//// event.accept(OURANWOOD_LOG_ITEM.get()); +//// event.accept(OURANWOOD_WOOD_ITEM.get()); +//// event.accept(MOSSY_OURANWOOD_LOG_ITEM.get()); +//// event.accept(MOSSY_OURANWOOD_WOOD_ITEM.get()); +//// event.accept(STRIPPED_OURANWOOD_LOG_ITEM.get()); +//// event.accept(STRIPPED_OURANWOOD_WOOD_ITEM.get()); +//// event.accept(OURANWOOD_PLANKS_ITEM.get()); +//// event.accept(OURANWOOD_STAIRS_ITEM.get()); +//// event.accept(OURANWOOD_SLAB_ITEM.get()); +//// event.accept(OURANWOOD_FENCE_ITEM.get()); +//// event.accept(OURANWOOD_FENCE_GATE_ITEM.get()); +//// event.accept(OURANWOOD_BOAT.get()); +//// event.accept(OURANWOOD_CHEST_BOAT.get()); +//// event.accept(OURANWOOD_DOOR_ITEM.get()); +//// event.accept(OURANWOOD_TRAPDOOR_ITEM.get()); +//// event.accept(OURANWOOD_PRESSURE_PLATE_ITEM.get()); +//// event.accept(OURANWOOD_BUTTON_ITEM.get()); +//// event.accept(OURANWOOD_SIGN_ITEM.get()); +//// event.accept(OURANWOOD_HANGING_SIGN_ITEM.get()); +//// event.accept(NYXITE_ITEM.get()); +//// event.accept(NYXITE_STAIRS_ITEM.get()); +//// event.accept(NYXITE_SLAB_ITEM.get()); +//// event.accept(NYXITE_WALL_ITEM.get()); +//// event.accept(POLISHED_NYXITE_ITEM.get()); +//// event.accept(POLISHED_NYXITE_STAIRS_ITEM.get()); +//// event.accept(POLISHED_NYXITE_SLAB_ITEM.get()); +//// event.accept(POLISHED_NYXITE_WALL_ITEM.get()); +//// event.accept(NYXITE_BRICKS_ITEM.get()); +//// event.accept(NYXITE_BRICK_STAIRS_ITEM.get()); +//// event.accept(NYXITE_BRICK_SLAB_ITEM.get()); +//// event.accept(NYXITE_BRICK_WALL_ITEM.get()); +//// event.accept(CHISELED_NYXITE_ITEM.get()); +//// event.accept(PALE_NYXITE_ITEM.get()); +//// event.accept(NYXITE_SPIKE_ITEM.get()); +//// event.accept(POTENT_NYXITE_ITEM.get()); +//// event.accept(UMBRAL_MOSS_BLOCK_ITEM.get()); +//// event.accept(UMBRAL_MOSS_CARPET_ITEM.get()); +//// event.accept(ANTIMETAL_ITEM.get()); +//// event.accept(POLISHED_ANTIMETAL_ITEM.get()); +//// event.accept(ANTIMETAL_SCAFFOLDING_ITEM.get()); +//// event.accept(DREAM_TORCH_ITEM.get()); +//// event.accept(DREAM_LANTERN_ITEM.get()); +//// event.accept(DREAM_CAMPFIRE_ITEM.get()); +//// event.accept(DREAM_SAND_ITEM.get()); +//// event.accept(DREAM_SANDSTONE_ITEM.get()); +//// event.accept(CHISELED_DREAM_SANDSTONE_ITEM.get()); +//// event.accept(CUT_DREAM_SANDSTONE_ITEM.get()); +//// event.accept(SMOOTH_DREAM_SANDSTONE_ITEM.get()); +//// event.accept(DREAM_SANDSTONE_STAIRS_ITEM.get()); +//// event.accept(DREAM_SANDSTONE_SLAB_ITEM.get()); +//// event.accept(DREAM_SANDSTONE_WALL_ITEM.get()); +//// event.accept(SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM.get()); +//// event.accept(SMOOTH_DREAM_SANDSTONE_SLAB_ITEM.get()); +//// event.accept(CUT_DREAM_SANDSTONE_SLAB_ITEM.get()); +//// event.accept(BUDDING_BLOOD_CRYSTAL_ITEM.get()); +//// event.accept(BLOOD_CRYSTAL_ITEM.get()); +//// event.accept(BLOOD_CRYSTAL_CRYSTAL_ITEM.get()); +//// event.accept(SMALL_BLOOD_CRYSTAL_BUD_ITEM.get()); +//// event.accept(MEDIUM_BLOOD_CRYSTAL_BUD_ITEM.get()); +//// event.accept(LARGE_BLOOD_CRYSTAL_BUD_ITEM.get()); +//// event.accept(URANIUM_BLOCK_ITEM.get()); +//// event.accept(RAW_URANIUM_BLOCK_ITEM.get()); +//// event.accept(CUT_URANIUM_ITEM.get()); +//// event.accept(CUT_URANIUM_STAIRS_ITEM.get()); +//// event.accept(CUT_URANIUM_SLAB_ITEM.get()); +//// event.accept(CHISELED_URANIUM_ITEM.get()); +//// event.accept(URANIUM_DOOR_ITEM.get()); +//// event.accept(URANIUM_TRAPDOOR_ITEM.get()); +//// event.accept(URANIUM_BARS_ITEM.get()); +//// event.accept(URANIUM_BULB_ITEM.get()); +//// event.accept(TITANIUM_BLOCK_ITEM.get()); +//// event.accept(RAW_TITANIUM_BLOCK_ITEM.get()); +//// event.accept(CUT_TITANIUM_ITEM.get()); +//// event.accept(CUT_TITANIUM_STAIRS_ITEM.get()); +//// event.accept(CUT_TITANIUM_SLAB_ITEM.get()); +//// event.accept(CHISELED_TITANIUM_ITEM.get()); +//// event.accept(TITANIUM_DOOR_ITEM.get()); +//// event.accept(TITANIUM_TRAPDOOR_ITEM.get()); +//// event.accept(TITANIUM_BARS_ITEM.get()); +//// event.accept(TITANIUM_BULB_ITEM.get()); +//// } +//// +//// if (event.getTabKey() == CreativeModeTabs.COMBAT) { +//// event.accept(BATTLE_AXE.get()); +//// event.accept(BIG_BERTHA.get()); +//// event.accept(BASILISK_DAGGER.get()); +//// event.accept(UltimateGearHelper.createUltimateArmorStack(ULTIMATE_HELMET.get(), event.getParameters().holders())); +//// event.accept(UltimateGearHelper.createUltimateArmorStack(ULTIMATE_CHESTPLATE.get(), event.getParameters().holders())); +//// event.accept(UltimateGearHelper.createUltimateArmorStack(ULTIMATE_LEGGINGS.get(), event.getParameters().holders())); +//// event.accept(UltimateGearHelper.createUltimateArmorStack(ULTIMATE_BOOTS.get(), event.getParameters().holders())); +//// event.accept(ULTIMATE_SWORD.get()); +//// event.accept(UltimateGearHelper.createUltimateBowStack(ULTIMATE_BOW.get(), event.getParameters().holders())); +//// event.accept(ULTIMATE_CROSSBOW.get()); +////// event.accept(ULTIMATE_MACE.get()); +//// event.accept(SQUIDZOOKA.get()); +//// event.accept(SHRINK_RAY.get()); +//// event.accept(GROWTH_RAY.get()); +//// event.accept(GRAVITY_GUN.get()); +//// event.accept(LUCID_PEARL.get()); +//// event.accept(NIGHTMARE_HELMET.get()); +//// event.accept(NIGHTMARE_CHESTPLATE.get()); +//// event.accept(NIGHTMARE_LEGGINGS.get()); +//// event.accept(NIGHTMARE_BOOTS.get()); +//// event.accept(NIGHTMARE_SWORD.get()); +//// event.accept(BLOOD_CRYSTAL_KATANA.get()); +//// event.accept(BLOOD_CRYSTAL_HELMET.get()); +//// event.accept(BLOOD_CRYSTAL_CHESTPLATE.get()); +//// event.accept(BLOOD_CRYSTAL_LEGGINGS.get()); +//// event.accept(BLOOD_CRYSTAL_BOOTS.get()); +//// event.accept(MOGGLES.get()); +//// event.accept(SCORPION_WHIP.get()); +//// event.accept(FALLEN_KING_CROWN.get()); +//// event.accept(BRUTALFLY_ELYTRA.get()); +//// event.accept(PotionContents.createItemStack(Items.POTION, SHRINKING)); +//// event.accept(PotionContents.createItemStack(Items.POTION, STRONG_SHRINKING)); +//// event.accept(PotionContents.createItemStack(Items.POTION, EXTREME_SHRINKING)); +//// event.accept(PotionContents.createItemStack(Items.POTION, PARALYSIS)); +//// event.accept(PotionContents.createItemStack(Items.POTION, LONG_PARALYSIS)); +//// event.accept(PotionContents.createItemStack(Items.POTION, HASTE)); +//// event.accept(PotionContents.createItemStack(Items.POTION, STRONG_HASTE)); +//// event.accept(PotionContents.createItemStack(Items.POTION, GROWING)); +//// event.accept(PotionContents.createItemStack(Items.POTION, STRONG_GROWING)); +//// event.accept(PotionContents.createItemStack(Items.POTION, EXTREME_GROWING)); +//// } +//// } +//// +//// static void registerSpawnPlacements(RegisterSpawnPlacementsEvent event) { +//// event.register(FLYING_SQUIRREL.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, FlyingSquirrelEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(CATERPILLAR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CaterpillarEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(BUTTERFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ButterflyEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(REVERIE.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ReverieEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(BRUTALFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(ENCHANTED_GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(CLOUD_SHARK.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CloudSharkEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(WASP.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WaspEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(BOMBER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BomberEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(KRAKEN.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, KrakenEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(MISSILE_SQUID.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MissileSquidEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(MOLEWORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolewormEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MantisEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(MOLEVORE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolevoreEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(BED_BUG.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BedBugEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(LUCID.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, LucidEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ScorpionEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(BASILISK.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BasiliskEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// event.register(EMPEROR_SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EmperorScorpionEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); +//// if (CREATE_LOADED && HONEYED_APPLE_COW != null) { +//// event.register(HONEYED_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); +//// } +//// } +// +// private static EntityType buildCowType(EntityType.EntityFactory factory, String name) { +// return EntityType.Builder.of(factory, MobCategory.CREATURE) +// .sized(0.9F, 1.4F) +// .clientTrackingRange(10) +// .build(name); +// } +// +// private static EntityType buildAntType(EntityType.EntityFactory factory, MobCategory category, String name) { +// return EntityType.Builder.of(factory, category) +// .sized(0.6375F, 0.2125F) +// .clientTrackingRange(8) +// .build(name); +// } +// +// private static AttributeSupplier.Builder buildAntAttributes(double health, double speed, double attackDamage) { +// return net.minecraft.world.entity.Mob.createMobAttributes() +// .add(Attributes.MAX_HEALTH, health) +// .add(Attributes.MOVEMENT_SPEED, speed) +// .add(Attributes.ATTACK_DAMAGE, attackDamage); +// } +// +// static void handleBlockToolModification(BlockEvent.BlockToolModificationEvent event) { +// if (event.getItemAbility() != ItemAbilities.AXE_STRIP) { +// return; +// } +// +// BlockState state = event.getState(); +// if (!state.hasProperty(RotatedPillarBlock.AXIS)) { +// return; +// } +// +// if (state.is(OURANWOOD_LOG.get())) { +// event.setFinalState(STRIPPED_OURANWOOD_LOG.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); +// return; +// } +// +// if (state.is(MOSSY_OURANWOOD_LOG.get())) { +// event.setFinalState(STRIPPED_OURANWOOD_LOG.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); +// return; +// } +// +// if (state.is(OURANWOOD_WOOD.get())) { +// event.setFinalState(STRIPPED_OURANWOOD_WOOD.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); +// return; +// } +// +// if (state.is(MOSSY_OURANWOOD_WOOD.get())) { +// event.setFinalState(STRIPPED_OURANWOOD_WOOD.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); +// } +// } +// +// static void registerBrewingRecipes(RegisterBrewingRecipesEvent event) { +// event.getBuilder().addMix(Potions.AWKWARD, LUCID_EYE.get(), INVERSION); +// event.getBuilder().addMix(INVERSION, Items.REDSTONE, LONG_INVERSION); +// event.getBuilder().addMix(Potions.AWKWARD, BASILISK_FANG.get(), PARALYSIS); +// event.getBuilder().addMix(PARALYSIS, Items.REDSTONE, LONG_PARALYSIS); +// event.getBuilder().addMix(Potions.AWKWARD, MOLEWORM_ITEM.get(), HASTE); +// event.getBuilder().addMix(HASTE, Items.GLOWSTONE_DUST, STRONG_HASTE); +// event.getBuilder().addMix(Potions.AWKWARD, CLOUD_SHARK_FIN.get(), Potions.SLOW_FALLING); +// event.getBuilder().addMix(Potions.AWKWARD, CORNEA_EAR.get(), Potions.NIGHT_VISION); +// event.getBuilder().addMix(Potions.AWKWARD, URANIUM_NUGGET.get(), SHRINKING); +// event.getBuilder().addMix(SHRINKING, Items.GLOWSTONE_DUST, STRONG_SHRINKING); +// event.getBuilder().addMix(STRONG_SHRINKING, Items.GLOWSTONE_DUST, EXTREME_SHRINKING); +// event.getBuilder().addMix(Potions.AWKWARD, TITANIUM_NUGGET.get(), GROWING); +// event.getBuilder().addMix(GROWING, Items.GLOWSTONE_DUST, STRONG_GROWING); +// event.getBuilder().addMix(STRONG_GROWING, Items.GLOWSTONE_DUST, EXTREME_GROWING); +// +// } +// +// static void onMobEffectApplicable(MobEffectEvent.Applicable event) { +// if (event.getEffectInstance() == null) { +// return; +// } +// +// if (event.getEffectInstance().is(DREAD) && !(event.getEntity() instanceof Player)) { +// event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); +// return; +// } +// +// if (event.getEntity() instanceof Player player && isWearingFullNightmareArmor(player) +// && (event.getEffectInstance().is(net.minecraft.world.effect.MobEffects.WITHER) +// || event.getEffectInstance().is(DREAD))) { +// event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); +// return; +// } +// +// if (event.getEntity().getType().is(AntarchyTags.Entities.INVERTED_IMMUNE) +// && event.getEffectInstance().is(INVERTED)) { +// event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); +// return; +// } +// +// if (event.getEntity().getType().is(AntarchyTags.Entities.SIZE_CHANGING_IMMUNE) +// && (event.getEffectInstance().is(SHRINKING_EFFECT) || event.getEffectInstance().is(GROWTH_EFFECT))) { +// event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); +// return; +// } +// +// if (event.getEntity().getType().is(AntarchyTags.Entities.PARALYSIS_IMMUNE) +// && event.getEffectInstance().is(PARALYZED)) { +// event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); +// return; +// } +// +// if (event.getEntity() instanceof Player player +// && event.getEffectInstance().is(INVERTED) +// && !player.hasEffect(INVERTED)) { +// notifyNearbyReveriesOfInversionChange(player); +// } +// } +// +// +// static void onInvertedEffectRemoved(MobEffectEvent.Remove event) { +// if (!event.getEffect().is(INVERTED)) return; +// LivingEntity entity = event.getEntity(); +// if (!entity.level().isClientSide()) { +// com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection( +// entity, +// com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN, +// new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12)); +// if (entity instanceof Player player) { +// notifyNearbyReveriesOfInversionChange(player); +// } +// } +// } +// +// +// static void onInvertedEffectExpired(MobEffectEvent.Expired event) { +// if (event.getEffectInstance() == null) return; +// if (!event.getEffectInstance().is(INVERTED)) return; +// LivingEntity entity = event.getEntity(); +// if (!entity.level().isClientSide()) { +// com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection( +// entity, +// com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN, +// new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12)); +// if (entity instanceof Player player) { +// notifyNearbyReveriesOfInversionChange(player); +// } +// } +// } +// +// private static void notifyNearbyReveriesOfInversionChange(Player player) { +// for (ReverieEntity reverie : player.level().getEntitiesOfClass( +// ReverieEntity.class, +// player.getBoundingBox().inflate(48.0D) +// )) { +// reverie.syncFocusInversionState(); +// } +// } +// +// private static BlockEntityType antNestBlockEntityType() { +// return ANT_NEST_BLOCK_ENTITY.get(); +// } +// +// private static BlockEntityType waspNestBlockEntityType() { +// return WASP_NEST_BLOCK_ENTITY.get(); +// } +// +// private static BlockEntityType potentNyxiteBlockEntityType() { +// return POTENT_NYXITE_BLOCK_ENTITY.get(); +// } +// +// private static Block smallBloodCrystalBudBlock() { +// return SMALL_BLOOD_CRYSTAL_BUD.get(); +// } +// +// private static Item cloudBucketItem() { +// return CLOUD_BUCKET.get(); +// } +// +// private static Block mediumBloodCrystalBudBlock() { +// return MEDIUM_BLOOD_CRYSTAL_BUD.get(); +// } +// +// private static Block largeBloodCrystalBudBlock() { +// return LARGE_BLOOD_CRYSTAL_BUD.get(); +// } +// +// private static Block bloodCrystalCrystalBlock() { +// return BLOOD_CRYSTAL_CRYSTAL.get(); +// } +// +// private static Block createDirtOre(Block copyFrom) { +// return new Block(dirtOreProperties()); +// } +// +// private static Block createDirtOre(Block copyFrom, int minExperience, int maxExperience) { +// return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), dirtOreProperties()); +// } +// +// private static BlockBehaviour.Properties dirtOreProperties() { +// return BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT) +// .sound(SoundType.ROOTED_DIRT) +// .strength(0.65F, 0.8F) +// .requiresCorrectToolForDrops(); +// } +// +// private static BlockBehaviour.Properties nyxiteProperties() { +// return BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK); +// } +// +// private static Block createOre(Block copyFrom) { +// return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); +// } +// +// private static Block createOre(Block copyFrom, int minExperience, int maxExperience) { +// return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); +// } +// +// private static Block createStorageBlock(Block copyFrom) { +// return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); +// } +// +// private static Block createHorizontalFacingStorageBlock(Block copyFrom) { +// return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); +// } +// +// private static final class SimpleHorizontalFacingBlock extends HorizontalDirectionalBlock { +// private static final MapCodec CODEC = simpleCodec(SimpleHorizontalFacingBlock::new); +// +// private SimpleHorizontalFacingBlock(BlockBehaviour.Properties properties) { +// super(properties); +// registerDefaultState(stateDefinition.any().setValue(FACING, Direction.NORTH)); +// } +// +// @Override +// protected MapCodec codec() { +// return CODEC; +// } +// +// @Override +// protected void createBlockStateDefinition(StateDefinition.Builder builder) { +// builder.add(FACING); +// } +// +// @Override +// public BlockState getStateForPlacement(BlockPlaceContext context) { +// return defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); +// } +// +// @Override +// protected BlockState rotate(BlockState state, Rotation rotation) { +// return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); +// } +// +// @Override +// protected BlockState mirror(BlockState state, Mirror mirror) { +// return state.rotate(mirror.getRotation(state.getValue(FACING))); +// } +// } +// +// private static Block createRawStorageBlock(Block copyFrom) { +// return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom) +// .strength(3.5F, 6.0F) +// .requiresCorrectToolForDrops()); +// } +// +// private static Item diamondMinecartItem() { +// return DIAMOND_MINECART_ITEM.get(); +// } +// +// static void handleUltimateBowDamage(LivingIncomingDamageEvent event) { +// if (!UltimateGearHelper.isUltimateBowArrow(event.getSource().getDirectEntity())) { +// return; +// } +// +// LivingEntity target = event.getEntity(); +// if (target instanceof Player player) { +// event.setAmount(0.0F); +// event.setInvulnerabilityTicks(0); +// player.clearFire(); +// player.heal((float) AntarchySettings.ultimateBowPlayerHeal()); +// return; +// } +// +// // Shared item code now scales arrow base damage directly so attribute and projectile +// // modifiers stay in the damage pipeline. Leave non-player hits untouched here. +// } +// +// static void handleUltimateCrossbowDamage(LivingIncomingDamageEvent event) { +// if (!UltimateGearHelper.isUltimateCrossbowProjectile(event.getSource().getDirectEntity())) { +// return; +// } +// } +// +// +// static void handleNightmareSwordDamage(LivingIncomingDamageEvent event) { +// net.minecraft.world.damagesource.DamageSource source = event.getSource(); +// if (!(source.getEntity() instanceof Player attacker)) return; +// if (!(attacker.getMainHandItem().getItem() instanceof NightmareSwordItem)) return; +// +// float maxHealth = attacker.getMaxHealth(); +// if (maxHealth <= 0) return; +// float missingFraction = (maxHealth - attacker.getHealth()) / maxHealth; +// float baseDamage = (float) AntarchySettings.nightmareSwordBaseDamage(); +// float scalingFactor = (float) AntarchySettings.nightmareSwordScalingFactor(); +// +// event.setAmount(baseDamage + missingFraction * scalingFactor * baseDamage); +// } +// +// static void handleNightmareArmorDoubleDamage(LivingIncomingDamageEvent event) { +// net.minecraft.world.damagesource.DamageSource source = event.getSource(); +// if (!(source.getEntity() instanceof net.minecraft.world.entity.LivingEntity attacker)) return; +// if (!attacker.getAttributes().hasAttribute(DOUBLE_DAMAGE_CHANCE)) return; +// double chance = attacker.getAttributeValue(DOUBLE_DAMAGE_CHANCE); +// if (chance <= 0.0) return; +// if (attacker.getRandom().nextDouble() < chance) { +// event.setAmount(event.getAmount() * 2.0F); +// LivingEntity victim = event.getEntity(); +// if (victim.level() instanceof ServerLevel serverLevel) { +// serverLevel.playSound(null, victim.blockPosition(), +// AntarchySoundEvents.NIGHTMARE_BITE.get(), +// net.minecraft.sounds.SoundSource.PLAYERS, 0.9f, 0.85f + victim.getRandom().nextFloat() * 0.3f); +// serverLevel.sendParticles( +// new net.minecraft.core.particles.DustParticleOptions(new org.joml.Vector3f(0.55f, 0.0f, 0.05f), 1.4f), +// victim.getX(), victim.getY() + victim.getBbHeight() * 0.5, victim.getZ(), +// 30, 0.4, 0.5, 0.4, 0.15); +// } +// } +// } +// +// private static boolean isWearingFullNightmareArmor(Player player) { +// for (ItemStack stack : player.getArmorSlots()) { +// if (!(stack.getItem() instanceof NightmareArmorItem)) return false; +// } +// return true; +// } +// +// static void handleAntiwaterDamage(LivingIncomingDamageEvent event) { +// if (!event.getSource().is(DamageTypes.FALL)) { +// return; +// } +// +// LivingEntity livingEntity = event.getEntity(); +// if (!intersectsAntiwater(livingEntity, livingEntity.getBoundingBox().inflate(0.05D))) { +// return; +// } +// +// event.setCanceled(true); +// } +// +// private static void tickLightningDragonStorms(LevelTickEvent.Post event) { +// if (event.getLevel() instanceof net.minecraft.server.level.ServerLevel serverLevel) { +// LightningDragonStormManager.tick(serverLevel); +// } +// } +// +// static void handleScorpionWhipAttackEntity(AttackEntityEvent event) { +// if (!(event.getEntity() instanceof ServerPlayer player)) { +// return; +// } +// +// if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem) || !(event.getTarget() instanceof LivingEntity target)) { +// return; +// } +// +// if (ScorpionWhipTetherManager.hasTether(player)) { +// event.setCanceled(true); +// if (ScorpionWhipTetherManager.isTetheredTo(player, target)) { +// player.resetAttackStrengthTicker(); +// } +// } +// } +// +// static void handleScorpionWhipLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { +// if (!(event.getEntity() instanceof ServerPlayer player)) { +// return; +// } +// if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem) || !ScorpionWhipTetherManager.hasTether(player)) { +// return; +// } +// event.setCanceled(true); +// } +// +// static void handleScorpionWhipRightClickBlock(PlayerInteractEvent.RightClickBlock event) { +// if (!(event.getEntity() instanceof ServerPlayer player)) { +// return; +// } +// if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem)) { +// return; +// } +// if (!ScorpionWhipTetherManager.hasTether(player)) { +// return; +// } +// if (ScorpionWhipTetherManager.pullAndDetach(player)) { +// event.setCanceled(true); +// event.setCancellationResult(InteractionResult.SUCCESS); +// } +// } +// +// static void handleScorpionWhipRightClickItem(PlayerInteractEvent.RightClickItem event) { +// if (!(event.getEntity() instanceof ServerPlayer player)) { +// return; +// } +// if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem)) { +// return; +// } +// if (!ScorpionWhipTetherManager.hasTether(player)) { +// return; +// } +// if (ScorpionWhipTetherManager.pullAndDetach(player)) { +// event.setCanceled(true); +// event.setCancellationResult(InteractionResult.SUCCESS); +// } +// } +// +// static void handleParalyzedAttackEntity(AttackEntityEvent event) { +// if (isParalyzed(event.getEntity())) { +// event.setCanceled(true); +// } +// } +// +// static void handleParalyzedLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { +// if (isParalyzed(event.getEntity())) { +// event.setCanceled(true); +// } +// } +// +// static void handleParalyzedRightClickBlock(PlayerInteractEvent.RightClickBlock event) { +// if (isParalyzed(event.getEntity())) { +// event.setCancellationResult(InteractionResult.FAIL); +// event.setCanceled(true); +// } +// } +// +// static void handleParalyzedRightClickItem(PlayerInteractEvent.RightClickItem event) { +// if (isParalyzed(event.getEntity())) { +// event.setCancellationResult(InteractionResult.FAIL); +// event.setCanceled(true); +// } +// } +// +// static void handleParalyzedEntityInteract(PlayerInteractEvent.EntityInteract event) { +// if (isParalyzed(event.getEntity())) { +// event.setCancellationResult(InteractionResult.FAIL); +// event.setCanceled(true); +// } +// } +// +// static void handleParalyzedEntityInteractSpecific(PlayerInteractEvent.EntityInteractSpecific event) { +// if (isParalyzed(event.getEntity())) { +// event.setCancellationResult(InteractionResult.FAIL); +// event.setCanceled(true); +// } +// } +// +// private static boolean isParalyzed(Player player) { +// return player.hasEffect(PARALYZED); +// } +// +// static void handleDreamSandJump(LivingEvent.LivingJumpEvent event) { +// LivingEntity livingEntity = event.getEntity(); +// if (!AntarchySettings.dreamSandEnabled() || isDreamSandLowGravityBlacklisted(livingEntity)) { +// clearDreamSandLowGravity(livingEntity); +// } else if (isStandingOnDreamSand(livingEntity)) { +// livingEntity.setDeltaMovement( +// livingEntity.getDeltaMovement().x, +// livingEntity.getDeltaMovement().y * AntarchySettings.dreamSandJumpVelocityMultiplier(), +// livingEntity.getDeltaMovement().z +// ); +// DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); +// access.antarchy$setDreamSandLowGravityActive(true); +// access.antarchy$setDreamSandLowGravityTicksRemaining((int) Math.max(1L, Math.round(AntarchySettings.dreamSandEffectDurationSeconds() * 20.0D))); +// access.antarchy$setDreamSandLandingGraceTicks(0); +// } +// +// } +// +// static void tickDreadAndIchor(PlayerTickEvent.Post event) { +// Player player = event.getEntity(); +// if (player.level().isClientSide()) { +// return; +// } +// if (player.isInFluidType(ICHOR_TYPE.get()) && AntarchySettings.ichorWitherEnabled()) { +// player.addEffect(new MobEffectInstance(MobEffects.WITHER, 40, 0, false, true, true)); +// } +// } +// +// static void tickScorpionWhips(PlayerTickEvent.Post event) { +// if (event.getEntity() instanceof ServerPlayer player) { +// ScorpionWhipTetherManager.tick(player); +// } +// } +// +// static void tickDreamSandLowGravity(EntityTickEvent.Post event) { +// if (!(event.getEntity() instanceof LivingEntity livingEntity)) { +// return; +// } +// +// DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); +// int landingGraceTicks = access.antarchy$getDreamSandLandingGraceTicks(); +// if (landingGraceTicks > 0) { +// access.antarchy$setDreamSandLandingGraceTicks(landingGraceTicks - 1); +// } +// +// if (!AntarchySettings.dreamSandEnabled() || isDreamSandLowGravityBlacklisted(livingEntity) || !access.antarchy$isDreamSandLowGravityActive()) { +// return; +// } +// +// int remainingTicks = access.antarchy$getDreamSandLowGravityTicksRemaining(); +// if (remainingTicks > 0) { +// access.antarchy$setDreamSandLowGravityTicksRemaining(remainingTicks - 1); +// } +// if (access.antarchy$getDreamSandLowGravityTicksRemaining() <= 0) { +// clearDreamSandLowGravity(livingEntity); +// return; +// } +// +// if (isOnSolidGround(livingEntity)) { +// access.antarchy$setDreamSandLowGravityActive(false); +// access.antarchy$setDreamSandLowGravityTicksRemaining(0); +// access.antarchy$setDreamSandLandingGraceTicks(2); +// } else if (!livingEntity.onGround() && livingEntity.getDeltaMovement().y < 0.0D) { +// livingEntity.setDeltaMovement( +// livingEntity.getDeltaMovement().x, +// livingEntity.getDeltaMovement().y * AntarchySettings.dreamSandGravityMultiplier(), +// livingEntity.getDeltaMovement().z +// ); +// } +// +// } +// +// static void handleAntiwaterFall(LivingFallEvent event) { +// LivingEntity livingEntity = event.getEntity(); +// if (intersectsAntiwater(livingEntity, livingEntity.getBoundingBox().inflate(0.05D))) { +// event.setCanceled(true); +// } +// } +// +// static void handleDreamSandFall(LivingFallEvent event) { +// LivingEntity livingEntity = event.getEntity(); +// DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); +// if (!AntarchySettings.dreamSandEnabled() +// || isDreamSandLowGravityBlacklisted(livingEntity) +// || (!access.antarchy$isDreamSandLowGravityActive() && access.antarchy$getDreamSandLandingGraceTicks() <= 0)) { +// return; +// } +// +// event.setCanceled(true); +// } +// +// private static boolean intersectsAntiwater(Entity entity, AABB box) { +// BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); +// BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); +// BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); +// for (int x = min.getX(); x <= max.getX(); x++) { +// for (int y = min.getY(); y <= max.getY(); y++) { +// for (int z = min.getZ(); z <= max.getZ(); z++) { +// cursor.set(x, y, z); +// FluidState fluidState = entity.level().getFluidState(cursor); +// if (PotentNyxiteBlock.isAntiwater(fluidState)) { +// return true; +// } +// } +// } +// } +// return false; +// } +// +// private static final int ANTIMETAL_INVERTED_REFRESH_TICKS = 20; +// +// static void tickOverheadInversion(EntityTickEvent.Post event) { +// if (!(event.getEntity() instanceof LivingEntity livingEntity)) { +// return; +// } +// if (livingEntity.level().isClientSide()) { +// return; +// } +// if (livingEntity instanceof Player player && player.isSpectator()) { +// return; +// } +// if (!isDirectlyBelowAntimetal(livingEntity)) { +// return; +// } +// +// MobEffectInstance existingInverted = livingEntity.getEffect(INVERTED); +// if (existingInverted == null || existingInverted.getDuration() <= 5) { +// livingEntity.addEffect(new MobEffectInstance(INVERTED, ANTIMETAL_INVERTED_REFRESH_TICKS, 0, false, false, false)); +// spawnAntimetalInversionParticles(livingEntity); +// } +// } +// +// +// private static boolean isInOrBelowAntimetalScaffolding(LivingEntity entity) { +// AABB bounds = entity.getBoundingBox().deflate(1.0E-3D); +// int minX = net.minecraft.util.Mth.floor(bounds.minX); +// int maxX = net.minecraft.util.Mth.floor(bounds.maxX); +// int minY = net.minecraft.util.Mth.floor(bounds.minY); +// int maxY = net.minecraft.util.Mth.floor(bounds.maxY); +// int minZ = net.minecraft.util.Mth.floor(bounds.minZ); +// int maxZ = net.minecraft.util.Mth.floor(bounds.maxZ); +// +// for (int x = minX; x <= maxX; x++) { +// for (int z = minZ; z <= maxZ; z++) { +// for (int y = minY; y <= maxY; y++) { +// if (entity.level().getBlockState(new net.minecraft.core.BlockPos(x, y, z)) +// .getBlock() instanceof com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock) { +// return true; +// } +// } +// net.minecraft.core.BlockPos abovePos = new net.minecraft.core.BlockPos(x, maxY + 1, z); +// if (entity.level().getBlockState(abovePos) +// .getBlock() instanceof com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock) { +// return true; +// } +// } +// } +// return false; +// } +// +// private static boolean isDirectlyBelowAntimetal(LivingEntity entity) { +// AABB bounds = entity.getBoundingBox().deflate(1.0E-3D); +// +// int minX = net.minecraft.util.Mth.floor(bounds.minX); +// int maxX = net.minecraft.util.Mth.floor(bounds.maxX); +// int minY = net.minecraft.util.Mth.floor(bounds.minY); +// int maxY = net.minecraft.util.Mth.floor(bounds.maxY); +// int minZ = net.minecraft.util.Mth.floor(bounds.minZ); +// int maxZ = net.minecraft.util.Mth.floor(bounds.maxZ); +// +// for (int x = minX; x <= maxX; x++) { +// for (int y = minY; y <= maxY; y++) { +// for (int z = minZ; z <= maxZ; z++) { +// net.minecraft.core.BlockPos crystalPos = new net.minecraft.core.BlockPos(x, y + 1, z); +// if (entity.level().getBlockState(crystalPos).is(ANTIMETAL.get()) +// || entity.level().getBlockState(crystalPos).is(POLISHED_ANTIMETAL.get())) { +// return true; +// } +// } +// } +// } +// +// return false; +// } +// +// private static void spawnAntimetalInversionParticles(LivingEntity entity) { +// if (!(entity.level() instanceof ServerLevel serverLevel)) { +// return; +// } +// +// double x = entity.getX(); +// double y = entity.getBoundingBox().maxY + 0.1D; +// double z = entity.getZ(); +// serverLevel.sendParticles( +// new net.minecraft.core.particles.DustParticleOptions(new org.joml.Vector3f(1.0F, 0.1F, 0.1F), 1.0F), +// x, +// y, +// z, +// 6, +// 0.2D, +// 0.05D, +// 0.2D, +// 0.0D +// ); +// } +// +// static void tickDuctTapeStickiness(EntityTickEvent.Post event) { +// DuctTapeBlock.tickStuckEntity(event.getEntity()); +// } +// +// static void handleDreadDeath(LivingDeathEvent event) { +// LivingEntity entity = event.getEntity(); +// clearDreamSandLowGravity(entity); +// if (!entity.hasEffect(DREAD)) { +// return; +// } +// +// entity.removeEffect(DREAD); +// } +// +// static void handleFallenKingCrownKill(LivingDeathEvent event) { +// if (!(event.getEntity() instanceof Enemy)) { +// return; +// } +// +// Entity attacker = event.getSource().getEntity(); +// if (!(attacker instanceof Player player) || player.level().isClientSide()) { +// return; +// } +// +// if (!player.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.HEAD).is(FALLEN_KING_CROWN.get())) { +// return; +// } +// +// player.addEffect(new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE, 6000, 0, false, true, true)); +// } +// +// +// private static final String DREAD_BED_BUG_NEXT_SPAWN_KEY = Antarchy.MODID + ":dread_bed_bug_next_spawn"; +// private static final int DREAD_BED_BUG_SPAWN_COOLDOWN_TICKS = 6000; +// +// static void handleDreadBedSleep(net.neoforged.neoforge.event.entity.player.CanPlayerSleepEvent event) { +// if (!event.getEntity().hasEffect(DREAD)) { +// return; +// } +// if (event.getEntity() instanceof Player player) { +// player.displayClientMessage(net.minecraft.network.chat.Component.translatable("message.antarchy.dread_too_scared_to_sleep"), true); +// } +// event.setProblem(net.minecraft.world.entity.player.Player.BedSleepingProblem.OTHER_PROBLEM); +// +// net.minecraft.server.level.ServerLevel level = (net.minecraft.server.level.ServerLevel) event.getLevel(); +// Player player = event.getEntity(); +// long gameTime = level.getGameTime(); +// long nextSpawnTime = player.getPersistentData().getLong(DREAD_BED_BUG_NEXT_SPAWN_KEY); +// if (nextSpawnTime > gameTime) { +// return; +// } +// +// net.minecraft.core.BlockPos bedPos = event.getPos(); +// com.craisinlord.antarchy.content.entity.BedBugEntity bedBug = AntarchyObjects.BED_BUG.get().create(level); +// if (bedBug == null) { +// return; +// } +// +// player.getPersistentData().putLong(DREAD_BED_BUG_NEXT_SPAWN_KEY, gameTime + DREAD_BED_BUG_SPAWN_COOLDOWN_TICKS); +// bedBug.moveTo(bedPos.getX() + 0.5D, bedPos.getY() + 0.5D, bedPos.getZ() + 0.5D, +// level.random.nextFloat() * 360.0F, 0.0F); +// bedBug.finalizeSpawn(level, level.getCurrentDifficultyAt(bedPos), +// net.minecraft.world.entity.MobSpawnType.EVENT, null); +// level.addFreshEntity(bedBug); +// } +// +// static void handleNaturalRabbitReplacement(MobSpawnEvent.PositionCheck event) { +// if (!AntarchySettings.easterBunnyEnabled()) { +// return; +// } +// if (event.getSpawnType() != MobSpawnType.NATURAL || !(event.getEntity() instanceof Rabbit rabbit)) { +// return; +// } +// if (rabbit instanceof EasterBunnyEntity) { +// return; +// } +// +// int chancePercent = AntarchySettings.easterBunnyNaturalSpawnChancePercent(); +// if (chancePercent <= 0 || event.getLevel().getRandom().nextInt(100) >= chancePercent) { +// return; +// } +// +// ServerLevel level = (ServerLevel) event.getLevel(); +// EasterBunnyEntity easterBunny = EASTER_BUNNY.get().create(level); +// if (easterBunny == null) { +// return; +// } +// +// easterBunny.moveTo(event.getX(), event.getY(), event.getZ(), rabbit.getYRot(), rabbit.getXRot()); +// easterBunny.finalizeSpawn(level, level.getCurrentDifficultyAt(event.getEntity().blockPosition()), MobSpawnType.NATURAL, null); +// level.addFreshEntity(easterBunny); +// event.setResult(MobSpawnEvent.PositionCheck.Result.FAIL); +// } +// +// +// static void registerCommands(RegisterCommandsEvent event) { +// CaterpillarCommand.register(event.getDispatcher()); +// GravityCommand.register(event.getDispatcher()); +// // ThoraxisWeatherCommand.register(event.getDispatcher()); +// } +// +// static void handleStartTracking(PlayerEvent.StartTracking event) { +// if (event.getTarget().level().isClientSide()) { +// return; +// } +// +// AntarchyGravityNetworking.syncEntity(event.getTarget()); +// } +// +// static void handlePlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { +// if (event.getEntity().level().isClientSide()) { +// return; +// } +// +// clearDreamSandLowGravity(event.getEntity()); +// // Use syncToPlayer so gravity reaches the player directly � on login, sendToPlayersTrackingEntityAndSelf +// // may fire before the player is in the tracking system, causing the packet to be dropped. +// if (event.getEntity() instanceof ServerPlayer serverPlayer) { +// AntarchyGravityNetworking.syncToPlayer(serverPlayer, serverPlayer); +// } else { +// AntarchyGravityNetworking.syncEntity(event.getEntity()); +// } +// if (event.getEntity() instanceof ServerPlayer serverPlayer && serverPlayer.serverLevel() != null) { +// // Thoraxis weather system temporarily disabled for further iteration. +// // ThoraxisWeatherNetworking.syncPlayer(serverPlayer, ThoraxisWeatherManager.snapshot(serverPlayer.serverLevel())); +// } +// } +// +// static void handleDreamSandLogout(PlayerEvent.PlayerLoggedOutEvent event) { +// clearDreamSandLowGravity(event.getEntity()); +// } +// +// static void handleDreamSandDimensionChange(PlayerEvent.PlayerChangedDimensionEvent event) { +// clearDreamSandLowGravity(event.getEntity()); +// if (event.getEntity() instanceof ServerPlayer serverPlayer && serverPlayer.serverLevel() != null) { +// // Thoraxis weather system temporarily disabled for further iteration. +// // ThoraxisWeatherNetworking.syncPlayer(serverPlayer, ThoraxisWeatherManager.snapshot(serverPlayer.serverLevel())); +// } +// } +// +// static void tickThoraxisWeather(LevelTickEvent.Post event) { +// if (event.getLevel() instanceof ServerLevel serverLevel) { +// var snapshot = ThoraxisWeatherManager.tick(serverLevel); +// if (snapshot != null) { +// ThoraxisWeatherNetworking.syncLevel(serverLevel, snapshot); +// } +// } +// } +// +// static void debugThoraxisSpawnPlacements(MobSpawnEvent.SpawnPlacementCheck event) { +// EntityType entityType = event.getEntityType(); +// if (entityType != NIGHTMARE.get() && entityType != LUCID.get()) { +// return; +// } +// if (event.getSpawnType() != MobSpawnType.NATURAL && event.getSpawnType() != MobSpawnType.CHUNK_GENERATION) { +// return; +// } +// if (!event.getLevel().getLevel().dimension().location().equals(THORAXIS_DIMENSION_ID)) { +// return; +// } +// +// long gameTime = event.getLevel().getLevel().getGameTime(); +// if (gameTime - lastThoraxisSpawnPlacementLogTick < 40L) { +// return; +// } +// lastThoraxisSpawnPlacementLogTick = gameTime; +// +// BlockPos pos = event.getPos(); +// Antarchy.LOGGER.info( +// "[SpawnDebug][ThoraxisPlacement] type={} reason={} pos={} biome={} defaultResult={} placementResult={}", +// entityType, +// event.getSpawnType(), +// pos, +// biomeName(event.getLevel().getBiome(pos)), +// event.getDefaultResult(), +// event.getPlacementCheckResult() +// ); +// } +// +// +// private static String biomeName(net.minecraft.core.Holder biomeHolder) { +// return biomeHolder.unwrapKey() +// .map(resourceKey -> resourceKey.location().toString()) +// .orElse("unregistered"); +// } +// +// private static BaseFlowingFluid.Properties ichorProperties() { +// return new BaseFlowingFluid.Properties(ICHOR_TYPE, ICHOR, FLOWING_ICHOR) +// .bucket(() -> ICHOR_BUCKET.get()) +// .block(() -> ICHOR_BLOCK.get()) +// .slopeFindDistance(4) +// .levelDecreasePerBlock(1) +// .tickRate(5); +// } +// +// private static BaseFlowingFluid.Properties antiwaterProperties() { +// return new BaseFlowingFluid.Properties(ANTIWATER_TYPE, ANTIWATER, FLOWING_ANTIWATER) +// .bucket(() -> ANTIWATER_BUCKET.get()) +// .block(() -> ANTIWATER_BLOCK.get()) +// .slopeFindDistance(4) +// .levelDecreasePerBlock(1) +// .tickRate(5); +// } +// +// +// +// private static DeferredHolder registerSoundEvent(String path) { +// return SOUND_EVENTS.register(path, +// () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path))); +// } +// +// private static boolean isModLoaded(String modId) { +// try { +// return ModList.get().isLoaded(modId); +// } catch (Throwable ignored) { +// return false; +// } +// } +// +// +// private static DreamSandLowGravityAccess dreamSandAccess(LivingEntity livingEntity) { +// return (DreamSandLowGravityAccess) livingEntity; +// } +// +// private static boolean isDreamSandLowGravityBlacklisted(LivingEntity livingEntity) { +// return livingEntity.getType().is(AntarchyTags.Entities.DREAM_SAND_LOW_GRAVITY_BLACKLIST); +// } +// +// private static Ingredient bloodCrystalRepairIngredient() { +// return Ingredient.of(BuiltInRegistries.ITEM.getOptional(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal_shard")) +// .orElse(Items.AIR)); +// } +// +// private static void clearDreamSandLowGravity(LivingEntity livingEntity) { +// DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); +// access.antarchy$setDreamSandLowGravityActive(false); +// access.antarchy$setDreamSandLowGravityTicksRemaining(0); +// access.antarchy$setDreamSandLandingGraceTicks(0); +// } +// +// private static boolean isOnSolidGround(LivingEntity livingEntity) { +// return livingEntity.onGround() && livingEntity.getBlockStateOn().blocksMotion(); +// } +// +// private static boolean isStandingOnDreamSand(LivingEntity livingEntity) { +// return livingEntity.level().getBlockState(livingEntity.getOnPosLegacy()).is(DREAM_SAND.get()); +// } +// +// private static Ingredient ultimateRepairIngredient() { +// return Ingredient.of(TITANIUM_INGOT.get()); +// } +// +// private static java.util.EnumMap createUltimateArmorDefense() { +// java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); +// defense.put(ArmorItem.Type.BOOTS, 6); +// defense.put(ArmorItem.Type.LEGGINGS, 12); +// defense.put(ArmorItem.Type.CHESTPLATE, 16); +// defense.put(ArmorItem.Type.HELMET, 6); +// defense.put(ArmorItem.Type.BODY, 16); +// return defense; +// } +// +// private static java.util.EnumMap createNightmareArmorDefense() { +// java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); +// defense.put(ArmorItem.Type.BOOTS, 4); +// defense.put(ArmorItem.Type.LEGGINGS, 9); +// defense.put(ArmorItem.Type.CHESTPLATE, 11); +// defense.put(ArmorItem.Type.HELMET, 4); +// defense.put(ArmorItem.Type.BODY, 11); +// return defense; +// } +// +// private static java.util.EnumMap createBloodCrystalArmorDefense() { +// java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); +// defense.put(ArmorItem.Type.BOOTS, 2); +// defense.put(ArmorItem.Type.LEGGINGS, 5); +// defense.put(ArmorItem.Type.CHESTPLATE, 6); +// defense.put(ArmorItem.Type.HELMET, 2); +// defense.put(ArmorItem.Type.BODY, 6); +// return defense; +// } +// +// private static java.util.EnumMap createMogglesArmorDefense() { +// java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); +// defense.put(ArmorItem.Type.BOOTS, 0); +// defense.put(ArmorItem.Type.LEGGINGS, 0); +// defense.put(ArmorItem.Type.CHESTPLATE, 0); +// defense.put(ArmorItem.Type.HELMET, 2); +// defense.put(ArmorItem.Type.BODY, 2); +// return defense; +// } +// +// private static java.util.EnumMap createFallenKingCrownDefense() { +// java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); +// defense.put(ArmorItem.Type.BOOTS, 0); +// defense.put(ArmorItem.Type.LEGGINGS, 0); +// defense.put(ArmorItem.Type.CHESTPLATE, 0); +// defense.put(ArmorItem.Type.HELMET, 2); +// defense.put(ArmorItem.Type.BODY, 2); +// return defense; +// } +// +// static void modifyEntityAttributes(EntityAttributeModificationEvent event) { +// event.add(EntityType.PLAYER, BLOODGLASS_MAX_HEARTS); +// event.add(EntityType.PLAYER, DOUBLE_DAMAGE_CHANCE); +// } +// +// static void handleBloodCrystalBootsFall(LivingFallEvent event) { +// if (!(event.getEntity() instanceof Player player)) return; +// if (!com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.isGravityInverted(player)) return; +// if (!(player.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.FEET).getItem() instanceof BloodCrystalArmorItem)) return; +// event.setCanceled(true); +// } +// +// static void handleBloodglassShield(LivingIncomingDamageEvent event) { +// if (!(event.getEntity() instanceof Player player)) return; +// if (player.level().isClientSide()) return; +// +// if (event.getAmount() <= 1.0f) return; +// +// if (event.getSource().is(BYPASSES_BLOODGLASS)) return; +// +// BloodglassAccess access = (BloodglassAccess) player; +// int totalActive = access.antarchy$getTotalShieldsActive(); +// if (totalActive <= 0) return; +// +// // Consume apple shields first, then armor shields +// if (access.antarchy$getAppleShieldsActive() > 0) { +// access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() - 1); +// access.antarchy$setAppleShieldLostCount(access.antarchy$getAppleShieldLostCount() + 1); +// if (access.antarchy$getAppleRechargeTimer() == 0) { +// access.antarchy$setAppleRechargeTimer(AntarchySettings.bloodCrystalAppleShieldRechargeTicks()); +// } +// } else { +// access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); +// access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); +// if (access.antarchy$getArmorRechargeTimer() == 0) { +// access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); +// } +// } +// +// event.setCanceled(true); +// +// net.minecraft.server.level.ServerLevel serverLevel = (net.minecraft.server.level.ServerLevel) player.level(); +// +// serverLevel.broadcastEntityEvent(player, (byte) 2); +// +// serverLevel.playSound(null, player.blockPosition(), +// net.minecraft.sounds.SoundEvents.GLASS_BREAK, +// net.minecraft.sounds.SoundSource.PLAYERS, 1.0f, 1.0f); +// +// serverLevel.sendParticles( +// new net.minecraft.core.particles.DustParticleOptions( +// new org.joml.Vector3f(0.85f, 0.18f, 0.38f), 1.2f), +// player.getX(), player.getEyeY(), player.getZ(), +// 35, 0.35, 0.55, 0.35, 0.12); +// +// syncBloodglass((ServerPlayer) player); +// } +// +// static void handleBloodCrystalArmorEquip(LivingEquipmentChangeEvent event) { +// if (!(event.getEntity() instanceof Player player)) return; +// if (player.level().isClientSide()) return; +// +// net.minecraft.world.entity.EquipmentSlot slot = event.getSlot(); +// if (slot != net.minecraft.world.entity.EquipmentSlot.HEAD +// && slot != net.minecraft.world.entity.EquipmentSlot.CHEST +// && slot != net.minecraft.world.entity.EquipmentSlot.LEGS +// && slot != net.minecraft.world.entity.EquipmentSlot.FEET) return; +// +// boolean fromIsBC = event.getFrom().getItem() instanceof BloodCrystalArmorItem; +// boolean toIsBC = event.getTo().getItem() instanceof BloodCrystalArmorItem; +// +// BloodglassAccess access = (BloodglassAccess) player; +// +// if (fromIsBC && !toIsBC) { +// // Unequipped BC armor, remove one shield slot (active first, then recharging) +// if (access.antarchy$getArmorShieldsActive() > 0) { +// access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); +// } else if (access.antarchy$getArmorShieldLostCount() > 0) { +// access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); +// if (access.antarchy$getArmorShieldLostCount() == 0) { +// access.antarchy$setArmorRechargeTimer(0); +// } +// } +// } else if (!fromIsBC && toIsBC) { +// // Newly equipped BC armor,only add if not already accounted for (by respawn init) +// int bcPieces = countBCArmorPieces(player); +// int currentTotal = access.antarchy$getArmorShieldsActive() + access.antarchy$getArmorShieldLostCount(); +// if (currentTotal < bcPieces) { +// access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); +// access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); +// } +// } else if (fromIsBC) { +// // BC armor replaced with another BC armor (or same after re-equip sequence) +// // Remove old shield, start recharging new one and reset timer +// if (access.antarchy$getArmorShieldsActive() > 0) { +// access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); +// } else if (access.antarchy$getArmorShieldLostCount() > 0) { +// access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); +// } +// access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); +// access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); +// } +// +// syncBloodglass((ServerPlayer) player); +// } +// +// static void handleBloodglassWardApplied(MobEffectEvent.Added event) { +// if (!event.getEffectInstance().is(BLOODGLASS_WARD)) return; +// if (!(event.getEntity() instanceof Player player)) return; +// if (player.level().isClientSide()) return; +// +// BloodglassAccess access = (BloodglassAccess) player; +// int shieldCount = 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); +// } +// +// private static void clearAppleShields(Player player) { +// BloodglassAccess access = (BloodglassAccess) player; +// access.antarchy$setAppleShieldsActive(0); +// access.antarchy$setAppleShieldLostCount(0); +// access.antarchy$setAppleRechargeTimer(0); +// if (player instanceof ServerPlayer sp) syncBloodglass(sp); +// } +// +// static void handleBloodglassWardRemoved(MobEffectEvent.Remove event) { +// if (!event.getEffect().is(BLOODGLASS_WARD)) return; +// if (!(event.getEntity() instanceof Player player)) return; +// if (player.level().isClientSide()) return; +// clearAppleShields(player); +// } +// +// static void handleBloodglassWardExpired(MobEffectEvent.Expired event) { +// if (!event.getEffectInstance().is(BLOODGLASS_WARD)) return; +// if (!(event.getEntity() instanceof Player player)) return; +// if (player.level().isClientSide()) return; +// clearAppleShields(player); +// } +// +// static void tickBloodglassRecharge(PlayerTickEvent.Post event) { +// Player player = event.getEntity(); +// if (player.level().isClientSide()) return; +// +// BloodglassAccess access = (BloodglassAccess) player; +// boolean changed = false; +// int hardCap = AntarchySettings.bloodCrystalHardMaxShields(); +// +// if (access.antarchy$getArmorShieldLostCount() > 0) { +// int timer = access.antarchy$getArmorRechargeTimer(); +// if (timer > 1) { +// access.antarchy$setArmorRechargeTimer(timer - 1); +// } else if (timer == 1) { +// int currentTotal = access.antarchy$getTotalShieldsActive(); +// if (currentTotal < hardCap) { +// access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() + 1); +// access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); +// changed = true; +// } +// if (access.antarchy$getArmorShieldLostCount() > 0) { +// access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); +// } else { +// access.antarchy$setArmorRechargeTimer(0); +// } +// } +// } +// +// if (access.antarchy$getAppleShieldLostCount() > 0 && player.hasEffect(BLOODGLASS_WARD)) { +// int timer = access.antarchy$getAppleRechargeTimer(); +// if (timer > 1) { +// access.antarchy$setAppleRechargeTimer(timer - 1); +// } else if (timer == 1) { +// int currentTotal = access.antarchy$getTotalShieldsActive(); +// if (currentTotal < hardCap) { +// access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() + 1); +// access.antarchy$setAppleShieldLostCount(access.antarchy$getAppleShieldLostCount() - 1); +// changed = true; +// } +// if (access.antarchy$getAppleShieldLostCount() > 0) { +// access.antarchy$setAppleRechargeTimer(AntarchySettings.bloodCrystalAppleShieldRechargeTicks()); +// } else { +// access.antarchy$setAppleRechargeTimer(0); +// } +// } +// } +// +// if (changed && player instanceof ServerPlayer sp) { +// syncBloodglass(sp); +// sp.playNotifySound( +// net.minecraft.sounds.SoundEvents.AMETHYST_BLOCK_CHIME, +// net.minecraft.sounds.SoundSource.PLAYERS, 0.6f, 1.6f); +// } +// } +// +// private static int countBCArmorPieces(Player player) { +// int count = 0; +// for (net.minecraft.world.entity.EquipmentSlot slot : new net.minecraft.world.entity.EquipmentSlot[]{ +// net.minecraft.world.entity.EquipmentSlot.HEAD, +// net.minecraft.world.entity.EquipmentSlot.CHEST, +// net.minecraft.world.entity.EquipmentSlot.LEGS, +// net.minecraft.world.entity.EquipmentSlot.FEET}) { +// if (player.getItemBySlot(slot).getItem() instanceof BloodCrystalArmorItem) count++; +// } +// return count; +// } +// +// private static void syncBloodglass(ServerPlayer player) { +// BloodglassAccess access = (BloodglassAccess) player; +// PacketDistributor.sendToPlayer(player, +// new com.craisinlord.antarchy.content.network.BloodglassStatePayload( +// access.antarchy$getTotalShieldsActive(), +// access.antarchy$getTotalShieldsMax() +// ) +// ); +// } +// +// static void handleBloodglassPlayerDeath(LivingDeathEvent event) { +// if (!(event.getEntity() instanceof ServerPlayer sp)) return; +// BloodglassAccess access = (BloodglassAccess) sp; +// access.antarchy$setArmorShieldsActive(0); +// access.antarchy$setArmorShieldLostCount(0); +// access.antarchy$setArmorRechargeTimer(0); +// access.antarchy$setAppleShieldsActive(0); +// access.antarchy$setAppleShieldLostCount(0); +// access.antarchy$setAppleRechargeTimer(0); +// syncBloodglass(sp); +// } +// +// static void handleBloodglassRespawn(PlayerEvent.PlayerRespawnEvent event) { +// if (!(event.getEntity() instanceof ServerPlayer sp)) return; +// BloodglassAccess access = (BloodglassAccess) sp; +// int bcCount = 0; +// for (net.minecraft.world.entity.EquipmentSlot slot : new net.minecraft.world.entity.EquipmentSlot[]{ +// net.minecraft.world.entity.EquipmentSlot.HEAD, +// net.minecraft.world.entity.EquipmentSlot.CHEST, +// net.minecraft.world.entity.EquipmentSlot.LEGS, +// net.minecraft.world.entity.EquipmentSlot.FEET}) { +// if (sp.getItemBySlot(slot).getItem() instanceof BloodCrystalArmorItem) bcCount++; +// } +// int shields = Math.min(bcCount, AntarchySettings.bloodCrystalHardMaxShields()); +// access.antarchy$setArmorShieldsActive(shields); +// access.antarchy$setArmorShieldLostCount(0); +// access.antarchy$setArmorRechargeTimer(0); +// syncBloodglass(sp); +// } +// +// static void handleBloodglassLogin(PlayerEvent.PlayerLoggedInEvent event) { +// if (!(event.getEntity() instanceof ServerPlayer sp)) return; +// BloodglassAccess access = (BloodglassAccess) sp; +// if (sp.hasEffect(BLOODGLASS_WARD)) { +// net.minecraft.world.effect.MobEffectInstance effect = sp.getEffect(BLOODGLASS_WARD); +// if (effect != null) { +// int cap = Math.max(0, AntarchySettings.bloodCrystalHardMaxShields() +// - access.antarchy$getArmorShieldsActive() +// - access.antarchy$getArmorShieldLostCount()); +// int shieldCount = Math.min(effect.getAmplifier() + 1, cap); +// access.antarchy$setAppleShieldsActive(shieldCount); +// access.antarchy$setAppleShieldLostCount(0); +// access.antarchy$setAppleRechargeTimer(0); +// } +// } +// syncBloodglass(sp); +// } +// +// private static ParticleType particleType( +// java.util.function.Function, com.mojang.serialization.MapCodec> codecFactory, +// java.util.function.Function, StreamCodec> streamCodecFactory +// ) { +// return new ParticleType(false) { +// @Override +// public com.mojang.serialization.MapCodec codec() { +// return codecFactory.apply(this); +// } +// +// @Override +// public StreamCodec streamCodec() { +// return streamCodecFactory.apply(this); +// } +// }; +// } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoForgeFluidTypes.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoForgeFluidTypes.java new file mode 100644 index 00000000..fdea9f54 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoForgeFluidTypes.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.neoforge; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluidType; +import net.minecraft.sounds.SoundEvents; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.common.SoundActions; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.NeoForgeRegistries; + +public final class AntarchyNeoForgeFluidTypes { + private static final DeferredRegister FLUID_TYPES = + DeferredRegister.create(NeoForgeRegistries.Keys.FLUID_TYPES, Antarchy.MODID); + + public static final DeferredHolder ANTIWATER_TYPE = FLUID_TYPES.register("antiwater", + () -> new AntiwaterFluidType(FluidType.Properties.create() + .descriptionId("block.antarchy.antiwater") + .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))); + + public static final DeferredHolder ICHOR_TYPE = FLUID_TYPES.register("ichor", + () -> new FluidType(FluidType.Properties.create() + .descriptionId("block.antarchy.ichor") + .fallDistanceModifier(0.0F) + .supportsBoating(true) + .sound(SoundActions.BUCKET_FILL, SoundEvents.BUCKET_FILL) + .sound(SoundActions.BUCKET_EMPTY, SoundEvents.BUCKET_EMPTY) + .density(1200) + .viscosity(1400))); + + private AntarchyNeoForgeFluidTypes() { + } + + public static void register(IEventBus modEventBus) { + FLUID_TYPES.register(modEventBus); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java new file mode 100644 index 00000000..4665d3f0 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -0,0 +1,39 @@ +package com.craisinlord.antarchy.neoforge; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.neoforge.registry.*; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.ModList; +import net.neoforged.fml.common.Mod; + + +@Mod(Antarchy.MODID) +public class AntarchyNeoforge { + public static final boolean CREATE_LOADED = isModLoaded("create"); + + public static IEventBus modEventBusTempHolder = null; + + public AntarchyNeoforge(IEventBus modEventBus, ModContainer modContainer) { + modEventBusTempHolder = modEventBus; + AntarchyConfigModuleNeoforge.init(modContainer); + AntarchyNeoForgeEvents.register(modEventBus); + AntarchyNeoforgeSounds.register(modEventBus); + AntarchyNeoforgeEntites.register(modEventBus); + AntarchyNeoforgeBlocks.register(modEventBus); + AntarchyNeoforgeItems.register(modEventBus); + AntarchyNeoforgeMisc.register(modEventBus); + AntarchyNeoforgeSpawnPlacements.register(modEventBus); + AntarchyNeoforgeCreativeModeTabs.register(modEventBus); + AntarchyNeoforgeEntityAttributes.register(modEventBus); + AntarchyNeoforgePayloadHandlers.register(modEventBus); + Antarchy.init(); + } + private static boolean isModLoaded(String modId) { + try { + return ModList.get().isLoaded(modId); + } catch (Throwable ignored) { + return false; + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java new file mode 100644 index 00000000..d7633684 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java @@ -0,0 +1,587 @@ +package com.craisinlord.antarchy.neoforge; + +import net.neoforged.neoforge.common.ModConfigSpec; + +public final class AntarchyToolsConfig { + public static final ModConfigSpec SPEC; + + // ------------------------------------------------------------------------- + // Basilisk Dagger + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue BASILISK_DAGGER_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue BASILISK_DAGGER_ATTACK_SPEED; + private static final ModConfigSpec.IntValue BASILISK_DAGGER_POISON_DURATION_TICKS; + private static final ModConfigSpec.IntValue BASILISK_DAGGER_POISON_AMPLIFIER; + + // ------------------------------------------------------------------------- + // Ultimate Tools + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue ULTIMATE_SWORD_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue ULTIMATE_SWORD_ATTACK_SPEED; + private static final ModConfigSpec.DoubleValue ULTIMATE_PICKAXE_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue ULTIMATE_PICKAXE_ATTACK_SPEED; + private static final ModConfigSpec.DoubleValue ULTIMATE_AXE_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue ULTIMATE_AXE_ATTACK_SPEED; + private static final ModConfigSpec.DoubleValue ULTIMATE_SHOVEL_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue ULTIMATE_SHOVEL_ATTACK_SPEED; + private static final ModConfigSpec.DoubleValue ULTIMATE_HOE_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue ULTIMATE_HOE_ATTACK_SPEED; + private static final ModConfigSpec.IntValue ULTIMATE_TOOL_ENCHANTABILITY; + private static final ModConfigSpec.BooleanValue ULTIMATE_TOOLS_THREE_BY_THREE_ENABLED; + + // ------------------------------------------------------------------------- + // Ultimate Bow + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue ULTIMATE_BOW_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue ULTIMATE_BOW_PLAYER_HEAL; + private static final ModConfigSpec.DoubleValue ULTIMATE_BOW_DRAW_SPEED_MULTIPLIER; + private static final ModConfigSpec.BooleanValue ULTIMATE_BOW_COMES_ENCHANTED_WITH_FLAME; + private static final ModConfigSpec.IntValue ULTIMATE_BOW_ENCHANTABILITY; + + // ------------------------------------------------------------------------- + // Ultimate Crossbow + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue ULTIMATE_CROSSBOW_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue ULTIMATE_CROSSBOW_CHARGE_SPEED_MULTIPLIER; + private static final ModConfigSpec.IntValue ULTIMATE_CROSSBOW_ENCHANTABILITY; + + // ------------------------------------------------------------------------- + // Ultimate Mace + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue ULTIMATE_MACE_DAMAGE_MULTIPLIER; + private static final ModConfigSpec.DoubleValue ULTIMATE_MACE_ATTACK_SPEED; + private static final ModConfigSpec.IntValue ULTIMATE_MACE_ENCHANTABILITY; + + // ------------------------------------------------------------------------- + // Ultimate Armor + // ------------------------------------------------------------------------- + private static final ModConfigSpec.BooleanValue ULTIMATE_ARMOR_COMES_ENCHANTED; + private static final ModConfigSpec.IntValue ULTIMATE_ARMOR_ENCHANTABILITY; + private static final ModConfigSpec.IntValue ULTIMATE_HELMET_ARMOR_VALUE; + private static final ModConfigSpec.IntValue ULTIMATE_CHESTPLATE_ARMOR_VALUE; + private static final ModConfigSpec.IntValue ULTIMATE_LEGGINGS_ARMOR_VALUE; + private static final ModConfigSpec.IntValue ULTIMATE_BOOTS_ARMOR_VALUE; + private static final ModConfigSpec.DoubleValue ULTIMATE_HELMET_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue ULTIMATE_CHESTPLATE_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue ULTIMATE_LEGGINGS_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue ULTIMATE_BOOTS_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue ULTIMATE_ARMOR_KNOCKBACK_RESISTANCE; + + // ------------------------------------------------------------------------- + // Battle Axe + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue BATTLE_AXE_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue BATTLE_AXE_ATTACK_SPEED; + + // ------------------------------------------------------------------------- + // Big Bertha + // ------------------------------------------------------------------------- + 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.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; + private static final ModConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS; + private static final ModConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT; + private static final ModConfigSpec.DoubleValue SCORPION_WHIP_BASE_DAMAGE; + private static final ModConfigSpec.DoubleValue SCORPION_WHIP_REACH_BONUS; + private static final ModConfigSpec.IntValue SCORPION_WHIP_POISON_DURATION_TICKS; + private static final ModConfigSpec.DoubleValue SCORPION_WHIP_TETHER_MAX_RANGE; + private static final ModConfigSpec.IntValue SCORPION_WHIP_REEL_COOLDOWN_TICKS; + private static final ModConfigSpec.DoubleValue SCORPION_WHIP_SNAP_BONUS_DAMAGE; + private static final ModConfigSpec.IntValue SCORPION_WHIP_SNAP_COOLDOWN_TICKS; + private static final ModConfigSpec.DoubleValue SCORPION_WHIP_PULL_STRENGTH; + private static final ModConfigSpec.DoubleValue SCORPION_WHIP_HEAVY_PULL_MULTIPLIER; + private static final ModConfigSpec.DoubleValue SCORPION_WHIP_SELF_PULL_MULTIPLIER; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_KATANA_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue BLOOD_CRYSTAL_KATANA_LAUNCH_STRENGTH; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_KATANA_TRAIL_DURATION_TICKS; + + // ------------------------------------------------------------------------- + // Nightmare Gear + // ------------------------------------------------------------------------- + private static final ModConfigSpec.IntValue NIGHTMARE_HELMET_ARMOR_VALUE; + private static final ModConfigSpec.IntValue NIGHTMARE_CHESTPLATE_ARMOR_VALUE; + private static final ModConfigSpec.IntValue NIGHTMARE_LEGGINGS_ARMOR_VALUE; + private static final ModConfigSpec.IntValue NIGHTMARE_BOOTS_ARMOR_VALUE; + private static final ModConfigSpec.DoubleValue NIGHTMARE_HELMET_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue NIGHTMARE_CHESTPLATE_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue NIGHTMARE_LEGGINGS_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue NIGHTMARE_BOOTS_ARMOR_TOUGHNESS; + private static final ModConfigSpec.DoubleValue NIGHTMARE_ARMOR_KNOCKBACK_RESISTANCE; + private static final ModConfigSpec.DoubleValue NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE; + private static final ModConfigSpec.DoubleValue NIGHTMARE_SWORD_BASE_DAMAGE; + private static final ModConfigSpec.DoubleValue NIGHTMARE_SWORD_ATTACK_SPEED; + private static final ModConfigSpec.DoubleValue NIGHTMARE_SWORD_SCALING_FACTOR; + + // ------------------------------------------------------------------------- + // Fallen King's Crown + // ------------------------------------------------------------------------- + private static final ModConfigSpec.IntValue FALLEN_KING_CROWN_ARMOR_VALUE; + private static final ModConfigSpec.DoubleValue FALLEN_KING_CROWN_ARMOR_TOUGHNESS; + + // ------------------------------------------------------------------------- + // Blood Crystal Armor + // ------------------------------------------------------------------------- + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_ARMOR_SHIELD_RECHARGE_TICKS; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_APPLE_SHIELD_COUNT; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_APPLE_DURATION_TICKS; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_APPLE_SHIELD_RECHARGE_TICKS; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_HARD_MAX_SHIELDS; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_HELMET_DEFENSE; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_CHESTPLATE_DEFENSE; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_LEGGINGS_DEFENSE; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_BOOTS_DEFENSE; + private static final ModConfigSpec.DoubleValue BLOOD_CRYSTAL_ARMOR_TOUGHNESS; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_HELMET_DURABILITY; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_CHESTPLATE_DURABILITY; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_LEGGINGS_DURABILITY; + private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_BOOTS_DURABILITY; + + // ------------------------------------------------------------------------- + // Squidzooka + // ------------------------------------------------------------------------- + private static final ModConfigSpec.DoubleValue SQUIDZOOKA_COOLDOWN_SECONDS; + private static final ModConfigSpec.DoubleValue SQUIDZOOKA_LAUNCH_VELOCITY; + + // ------------------------------------------------------------------------- + // Size Rays + // ------------------------------------------------------------------------- + private static final ModConfigSpec.BooleanValue SIZE_CHANGING_RAYS_ENABLED; + private static final ModConfigSpec.DoubleValue SIZE_RAY_COOLDOWN_SECONDS; + private static final ModConfigSpec.DoubleValue SIZE_RAY_MIN_SCALE; + private static final ModConfigSpec.DoubleValue SIZE_RAY_MAX_SCALE; + private static final ModConfigSpec.DoubleValue SIZE_RAY_DELTA_PER_HIT; + private static final ModConfigSpec.DoubleValue SHRINKING_POTION_DELTA; + private static final ModConfigSpec.DoubleValue GROWTH_POTION_DELTA; + + // ------------------------------------------------------------------------- + // Gravity Gun + // ------------------------------------------------------------------------- + private static final ModConfigSpec.BooleanValue GRAVITY_GUN_ENABLED; + private static final ModConfigSpec.BooleanValue GRAVITY_GUN_BLOCKS_ENABLED; + private static final ModConfigSpec.BooleanValue GRAVITY_GUN_ENTITIES_ENABLED; + private static final ModConfigSpec.DoubleValue GRAVITY_GUN_RANGE; + private static final ModConfigSpec.DoubleValue GRAVITY_GUN_THROW_STRENGTH; + private static final ModConfigSpec.DoubleValue GRAVITY_GUN_BLAST_STRENGTH; + private static final ModConfigSpec.DoubleValue GRAVITY_GUN_COOLDOWN_SECONDS; + private static final ModConfigSpec.DoubleValue GRAVITY_GUN_MAX_HOLD_DISTANCE; + + // ------------------------------------------------------------------------- + // 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; + // ------------------------------------------------------------------------- + // Moggles + // ------------------------------------------------------------------------- + private static final ModConfigSpec.IntValue MOGGLES_VISION_RADIUS; + private static final ModConfigSpec.IntValue MOGGLES_VISION_MAX_LIGHT; + private static final ModConfigSpec.DoubleValue MOGGLES_VISION_ALPHA; + + static { + ModConfigSpec.Builder b = new ModConfigSpec.Builder(); + + + // Basilisk Dagger + + b.push("basiliskDagger"); + BASILISK_DAGGER_ATTACK_DAMAGE = b.comment("Attack damage.") .defineInRange("attackDamage", 6.0D, 0.0D, 1024.0D); + BASILISK_DAGGER_ATTACK_SPEED = b.comment("Attack speed.") .defineInRange("attackSpeed", -1.8D, -10.0D, 10.0D); + BASILISK_DAGGER_POISON_DURATION_TICKS = b.comment("Poison duration applied on hit.") .defineInRange("poisonDurationTicks", 200, 0, 20000); + BASILISK_DAGGER_POISON_AMPLIFIER = b.comment("Poison level applied on hit (0 = I).") .defineInRange("poisonAmplifier", 2, 0, 10); + b.pop(); + + + // Ultimate Tools + + b.push("ultimateTools"); + ULTIMATE_SWORD_ATTACK_DAMAGE = b.comment("Attack damage of the Ultimate Sword.") .defineInRange("swordAttackDamage", 30.0D, 0.0D, 1024.0D); + ULTIMATE_SWORD_ATTACK_SPEED = b.comment("Attack speed of the Ultimate Sword.") .defineInRange("swordAttackSpeed", -2.4D, -10.0D, 10.0D); + ULTIMATE_PICKAXE_ATTACK_DAMAGE = b.comment("Attack damage of the Ultimate Pickaxe.") .defineInRange("pickaxeAttackDamage", 22.0D, 0.0D, 1024.0D); + ULTIMATE_PICKAXE_ATTACK_SPEED = b.comment("Attack speed of the Ultimate Pickaxe.") .defineInRange("pickaxeAttackSpeed", -2.8D, -10.0D, 10.0D); + ULTIMATE_AXE_ATTACK_DAMAGE = b.comment("Attack damage of the Ultimate Axe.") .defineInRange("axeAttackDamage", 38.0D, 0.0D, 1024.0D); + ULTIMATE_AXE_ATTACK_SPEED = b.comment("Attack speed of the Ultimate Axe.") .defineInRange("axeAttackSpeed", -3.0D, -10.0D, 10.0D); + ULTIMATE_SHOVEL_ATTACK_DAMAGE = b.comment("Attack damage of the Ultimate Shovel.") .defineInRange("shovelAttackDamage", 24.0D, 0.0D, 1024.0D); + ULTIMATE_SHOVEL_ATTACK_SPEED = b.comment("Attack speed of the Ultimate Shovel.") .defineInRange("shovelAttackSpeed", -3.0D, -10.0D, 10.0D); + ULTIMATE_HOE_ATTACK_DAMAGE = b.comment("Attack damage of the Ultimate Hoe.") .defineInRange("hoeAttackDamage", 8.0D, 0.0D, 1024.0D); + ULTIMATE_HOE_ATTACK_SPEED = b.comment("Attack speed of the Ultimate Hoe.") .defineInRange("hoeAttackSpeed", 0.0D, -10.0D, 10.0D); + ULTIMATE_TOOL_ENCHANTABILITY = b.comment("Enchantability for all Ultimate tools.") .defineInRange("toolEnchantability", 25, 0, 100); + ULTIMATE_TOOLS_THREE_BY_THREE_ENABLED = b + .comment("If false, Ultimate pickaxe, axe, shovel, and hoe lose their 3x3 mining mode and tooltip.") + .define("threeByThreeEnabled", true); + b.pop(); + + + // Ultimate Bow + + b.push("ultimateBow"); + ULTIMATE_BOW_ATTACK_DAMAGE = b.comment("Damage dealt to non-player targets.") .defineInRange("attackDamage", 18.0D, 0.0D, 1024.0D); + ULTIMATE_BOW_PLAYER_HEAL = b.comment("Health restored to players hit by arrows from this bow.") .defineInRange("playerHeal", 8.0D, 0.0D, 1024.0D); + ULTIMATE_BOW_DRAW_SPEED_MULTIPLIER = b.comment("Draw speed relative to a normal bow. 2.5 = 2.5x as fast.") .defineInRange("drawSpeedMultiplier", 2.5D, 0.1D, 16.0D); + ULTIMATE_BOW_COMES_ENCHANTED_WITH_FLAME = b.comment("If true, Ultimate Bows are automatically given and keep the Flame enchant.") .define("comesEnchantedWithFlame", true); + ULTIMATE_BOW_ENCHANTABILITY = b.comment("Enchantability of the Ultimate Bow.") .defineInRange("enchantability", 20, 0, 100); + b.pop(); + + + // Ultimate Crossbow + + b.push("ultimateCrossbow"); + ULTIMATE_CROSSBOW_ATTACK_DAMAGE = b.comment("Damage dealt by projectiles fired from the Ultimate Crossbow.").defineInRange("attackDamage", 8.0D, 0.0D, 1024.0D); + ULTIMATE_CROSSBOW_CHARGE_SPEED_MULTIPLIER = b + .comment( + "Charge speed relative to a normal crossbow. Below 1.0 is slower.", + "Default 0.25 means 4x slower (16-arrow full load ~5 s). Quick Charge still applies." + ) + .defineInRange("chargeSpeedMultiplier", 0.25D, 0.01D, 16.0D); + ULTIMATE_CROSSBOW_ENCHANTABILITY = b.comment("Enchantability of the Ultimate Crossbow.").defineInRange("enchantability", 20, 0, 100); + b.pop(); + + + // Ultimate Mace + + b.push("ultimateMace"); + ULTIMATE_MACE_DAMAGE_MULTIPLIER = b.comment("Multiplier on both base damage and smash bonus. 1.5 = 50% stronger than a normal mace.").defineInRange("damageMultiplier", 1.5D, 0.1D, 16.0D); + ULTIMATE_MACE_ATTACK_SPEED = b.comment("Attack speed of the Ultimate Mace.") .defineInRange("attackSpeed", -3.4D, -10.0D, 10.0D); + ULTIMATE_MACE_ENCHANTABILITY = b.comment("Enchantability of the Ultimate Mace.") .defineInRange("enchantability", 20, 0, 100); + b.pop(); + + + // Ultimate Armor + + b.push("ultimateArmor"); + ULTIMATE_ARMOR_COMES_ENCHANTED = b.comment("If true, newly crafted Ultimate Armor has Protection, Fire Protection, Projectile Protection, and Blast Protection.").define("comesEnchanted", true); + ULTIMATE_ARMOR_ENCHANTABILITY = b.comment("Enchantability for all Ultimate Armor pieces.") .defineInRange("enchantability", 10, 0, 100); + ULTIMATE_HELMET_ARMOR_VALUE = b.comment("Armor points of the Ultimate Helmet.") .defineInRange("helmetArmor", 4, 0, 100); + ULTIMATE_CHESTPLATE_ARMOR_VALUE = b.comment("Armor points of the Ultimate Chestplate.") .defineInRange("chestplateArmor", 9, 0, 100); + ULTIMATE_LEGGINGS_ARMOR_VALUE = b.comment("Armor points of the Ultimate Leggings.") .defineInRange("leggingsArmor", 7, 0, 100); + ULTIMATE_BOOTS_ARMOR_VALUE = b.comment("Armor points of the Ultimate Boots.") .defineInRange("bootsArmor", 4, 0, 100); + ULTIMATE_HELMET_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Ultimate Helmet.") .defineInRange("helmetToughness", 3.0D, 0.0D, 100.0D); + ULTIMATE_CHESTPLATE_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Ultimate Chestplate.") .defineInRange("chestplateToughness", 3.0D, 0.0D, 100.0D); + ULTIMATE_LEGGINGS_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Ultimate Leggings.") .defineInRange("leggingsToughness", 3.0D, 0.0D, 100.0D); + ULTIMATE_BOOTS_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Ultimate Boots.") .defineInRange("bootsToughness", 3.0D, 0.0D, 100.0D); + ULTIMATE_ARMOR_KNOCKBACK_RESISTANCE = b.comment("Knockback resistance granted by each Ultimate Armor piece.") .defineInRange("knockbackResistance", 0.1D, 0.0D, 1.0D); + b.pop(); + + + // Battle Axe + + b.push("battleAxe"); + BATTLE_AXE_ATTACK_DAMAGE = b.comment("Attack damage of the Battle Axe.").defineInRange("attackDamage", 44.0D, 0.0D, 4096.0D); + BATTLE_AXE_ATTACK_SPEED = b.comment("Attack speed of the Battle Axe.") .defineInRange("attackSpeed", -3.1D, -10.0D, 10.0D); + b.pop(); + + + // Big Bertha + + b.push("bigBertha"); + BIG_BERTHA_ATTACK_DAMAGE = b.comment("Attack damage of Big Bertha.") .defineInRange("attackDamage", 55.0D, 0.0D, 4096.0D); + BIG_BERTHA_REACH_BONUS = b.comment("Extra attack range in blocks while held in main hand.") .defineInRange("reachBonus", 3.0D, 0.0D, 32.0D); + BIG_BERTHA_ATTACK_SPEED = b.comment("Attack speed of Big Bertha.") .defineInRange("attackSpeed", -3.0D, -10.0D, 10.0D); + BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS = b.comment("Paralyze duration used by Basilisk mode.") .defineInRange("basiliskParalyzeDurationTicks", 80, 0, 20000); + BIG_BERTHA_KRAKEN_SLOW_TICKS = b.comment("Slow duration used by Kraken mode.") .defineInRange("krakenSlowTicks", 80, 0, 20000); + BIG_BERTHA_BASILISK_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after using Basilisk mode's right-click paralyze.") .defineInRange("basiliskModeCooldownSeconds", 7.0D, 0.0D, 3600.0D); + BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS = b.comment("How long Lucid mode's inversion lasts on a target, in seconds.") .defineInRange("lucidModeInvertedDurationSeconds", 3.0D, 0.0D, 3600.0D); + 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("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); + SCORPION_WHIP_POISON_DURATION_TICKS = b.comment("Poison duration applied on lash.").defineInRange("poisonDurationTicks", 100, 0, 20000); + SCORPION_WHIP_TETHER_MAX_RANGE = b.comment("Maximum tether distance before it breaks.").defineInRange("tetherMaxRange", 10.0D, 0.0D, 128.0D); + SCORPION_WHIP_REEL_COOLDOWN_TICKS = b.comment("Cooldown in ticks between reel pulls.").defineInRange("reelCooldownTicks", 10, 0, 20000); + SCORPION_WHIP_SNAP_BONUS_DAMAGE = b.comment("Bonus damage dealt when snapping the tether free.").defineInRange("snapBonusDamage", 6.0D, 0.0D, 4096.0D); + SCORPION_WHIP_SNAP_COOLDOWN_TICKS = b.comment("Cooldown in ticks after a snap release.").defineInRange("snapCooldownTicks", 30, 0, 20000); + SCORPION_WHIP_PULL_STRENGTH = b.comment("Pull strength applied to normal tethered targets.").defineInRange("pullStrength", 0.75D, 0.0D, 8.0D); + SCORPION_WHIP_HEAVY_PULL_MULTIPLIER = b.comment("Reduced pull strength applied to heavy targets.").defineInRange("heavyPullMultiplier", 0.25D, 0.0D, 8.0D); + SCORPION_WHIP_SELF_PULL_MULTIPLIER = b.comment("Self-pull strength toward heavy tethered targets.").defineInRange("selfPullMultiplier", 0.45D, 0.0D, 8.0D); + b.pop(); + + b.push("bloodCrystalKatana"); + BLOOD_CRYSTAL_KATANA_ATTACK_DAMAGE = b.comment("Attack damage of the Blood Crystal Katana.").defineInRange("attackDamage", 7, 0, 1024); + BLOOD_CRYSTAL_KATANA_LAUNCH_STRENGTH = b.comment("Forward launch strength applied to the wielder when the katana hits.").defineInRange("launchStrength", 1.1D, 0.0D, 8.0D); + BLOOD_CRYSTAL_KATANA_TRAIL_DURATION_TICKS = b.comment("How long the crimson trail lingers after a katana hit, in ticks.").defineInRange("trailDurationTicks", 12, 0, 200); + b.pop(); + + + // Nightmare Gear + + b.push("nightmareArmor"); + NIGHTMARE_HELMET_ARMOR_VALUE = b.comment("Armor points of the Nightmare Helmet. (Netherite default: 3)") .defineInRange("helmetArmor", 3, 0, 100); + NIGHTMARE_CHESTPLATE_ARMOR_VALUE = b.comment("Armor points of the Nightmare Chestplate. (Netherite default: 8)") .defineInRange("chestplateArmor", 8, 0, 100); + NIGHTMARE_LEGGINGS_ARMOR_VALUE = b.comment("Armor points of the Nightmare Leggings. (Netherite default: 6)") .defineInRange("leggingsArmor", 6, 0, 100); + NIGHTMARE_BOOTS_ARMOR_VALUE = b.comment("Armor points of the Nightmare Boots. (Netherite default: 3)") .defineInRange("bootsArmor", 3, 0, 100); + NIGHTMARE_HELMET_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Nightmare Helmet.") .defineInRange("helmetToughness", 3.0D, 0.0D, 100.0D); + NIGHTMARE_CHESTPLATE_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Nightmare Chestplate.") .defineInRange("chestplateToughness", 3.0D, 0.0D, 100.0D); + NIGHTMARE_LEGGINGS_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Nightmare Leggings.") .defineInRange("leggingsToughness", 3.0D, 0.0D, 100.0D); + NIGHTMARE_BOOTS_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Nightmare Boots.") .defineInRange("bootsToughness", 3.0D, 0.0D, 100.0D); + NIGHTMARE_ARMOR_KNOCKBACK_RESISTANCE = b.comment("Knockback resistance granted by each Nightmare Armor piece.") .defineInRange("knockbackResistance", 0.1D, 0.0D, 1.0D); + NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE = b + .comment( + "Dread Aura radius added per Nightmare Armor piece worn.", + "Full set (4 pieces) gives 5.0 blocks by default." + ) + .defineInRange("dreadAuraRangePerPiece", 1.25D, 0.0D, 64.0D); + b.pop(); + + b.push("nightmareSword"); + NIGHTMARE_SWORD_BASE_DAMAGE = b + .comment( + "Base attack damage. Also the minimum damage at full health.", + "Formula: damage = baseDamage * (1 + missingHealthFraction * scalingFactor)" + ) + .defineInRange("baseDamage", 30.0D, 0.0D, 1024.0D); + NIGHTMARE_SWORD_ATTACK_SPEED = b.comment("Attack speed of the Nightmare Sword.").defineInRange("attackSpeed", -2.4D, -10.0D, 10.0D); + NIGHTMARE_SWORD_SCALING_FACTOR = b + .comment( + "How much damage scales with missing health.", + "At 1.0 and 0 HP remaining: damage doubles. At full health: always baseDamage." + ) + .defineInRange("scalingFactor", 1.0D, 0.0D, 100.0D); + b.pop(); + + b.push("fallenKingCrown"); + FALLEN_KING_CROWN_ARMOR_VALUE = b.comment("Armor value of the Fallen King's Crown. Default: 2 (gold helmet).").defineInRange("armorValue", 2, 0, 100); + FALLEN_KING_CROWN_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Fallen King's Crown. Default: 0.0 (gold helmet).").defineInRange("armorToughness", 0.0D, 0.0D, 100.0D); + b.pop(); + + + // Blood Crystal Armor + + b.push("bloodCrystalArmor"); + BLOOD_CRYSTAL_ARMOR_SHIELD_RECHARGE_TICKS = b.comment("Ticks (20/s) for each armor Bloodglass Shield to recharge after shattering. Default: 600 (30s).").defineInRange("armorShieldRechargeTicks", 600, 1, 72000); + BLOOD_CRYSTAL_APPLE_SHIELD_COUNT = b.comment("Number of Bloodglass Shields granted by a Blood Crystal Apple (Bloodglass Ward level). Default: 2.").defineInRange("appleShieldCount", 2, 1, 8); + BLOOD_CRYSTAL_APPLE_DURATION_TICKS = b.comment("Duration in ticks of the Bloodglass Ward effect from a Blood Crystal Apple. Default: 2400 (120s).").defineInRange("appleDurationTicks", 2400, 1, 144000); + BLOOD_CRYSTAL_APPLE_SHIELD_RECHARGE_TICKS = b.comment("Ticks for each apple Bloodglass Shield to recharge while Bloodglass Ward is active. Default: 600 (30s).").defineInRange("appleShieldRechargeTicks", 600, 1, 72000); + BLOOD_CRYSTAL_HARD_MAX_SHIELDS = b.comment("Hard cap on total Bloodglass Shields from all sources combined. Default: 8.").defineInRange("hardMaxShields", 8, 1, 20); + BLOOD_CRYSTAL_HELMET_DEFENSE = b.comment("Armor defense value for Blood Crystal Helmet. Default: 2 (iron).").defineInRange("helmetDefense", 2, 0, 30); + BLOOD_CRYSTAL_CHESTPLATE_DEFENSE = b.comment("Armor defense value for Blood Crystal Chestplate. Default: 6 (iron).").defineInRange("chestplateDefense", 6, 0, 30); + BLOOD_CRYSTAL_LEGGINGS_DEFENSE = b.comment("Armor defense value for Blood Crystal Leggings. Default: 5 (iron).").defineInRange("leggingsDefense", 5, 0, 30); + BLOOD_CRYSTAL_BOOTS_DEFENSE = b.comment("Armor defense value for Blood Crystal Boots. Default: 2 (iron).").defineInRange("bootsDefense", 2, 0, 30); + BLOOD_CRYSTAL_ARMOR_TOUGHNESS = b.comment("Armor toughness for all Blood Crystal armor pieces. Default: 0.0 (iron).").defineInRange("armorToughness", 0.0, 0.0, 20.0); + BLOOD_CRYSTAL_HELMET_DURABILITY = b.comment("Max durability of Blood Crystal Helmet. Default: 77 (gold).").defineInRange("helmetDurability", 77, 1, 2000); + BLOOD_CRYSTAL_CHESTPLATE_DURABILITY = b.comment("Max durability of Blood Crystal Chestplate. Default: 112 (gold).").defineInRange("chestplateDurability", 112, 1, 2000); + BLOOD_CRYSTAL_LEGGINGS_DURABILITY = b.comment("Max durability of Blood Crystal Leggings. Default: 105 (gold).").defineInRange("leggingsDurability", 105, 1, 2000); + BLOOD_CRYSTAL_BOOTS_DURABILITY = b.comment("Max durability of Blood Crystal Boots. Default: 91 (gold).").defineInRange("bootsDurability", 91, 1, 2000); + b.pop(); + + + // Squidzooka + + b.push("squidzooka"); + SQUIDZOOKA_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after firing. Set to 0 to disable.").defineInRange("cooldownSeconds", 1.0D, 0.0D, 3600.0D); + SQUIDZOOKA_LAUNCH_VELOCITY = b.comment("Initial launch velocity applied to the Missile Squid.") .defineInRange("launchVelocity", 2.1D, 0.1D, 20.0D); + b.pop(); + + + // Size Rays + + b.push("sizeRays"); + SIZE_CHANGING_RAYS_ENABLED = b + .comment( + "If false, shrink and grow rays cannot be fired by players or dispensers.", + "Immune entities tag: data/antarchy/tags/entity_types/size_changing_immune.json" + ) + .define("enabled", true); + SIZE_RAY_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after firing. Set to 0 to disable.") .defineInRange("cooldownSeconds", 1.0D, 0.0D, 3600.0D); + SIZE_RAY_MIN_SCALE = b.comment("Minimum entity scale the shrink ray can reach. 1.0 is normal size.") .defineInRange("minScale", 0.1D, 0.01D, 64.0D); + SIZE_RAY_MAX_SCALE = b.comment("Maximum entity scale the growth ray can reach. 1.0 is normal size.") .defineInRange("maxScale", 5.0D, 0.01D, 64.0D); + SIZE_RAY_DELTA_PER_HIT = b.comment("Scale delta per projectile hit. 0.25 changes scale by 25% of normal per hit.") .defineInRange("deltaPerHit", 0.25D, 0.001D, 64.0D); + SHRINKING_POTION_DELTA = b.comment("Scale delta per level of Shrinking Potion. Level II applies double this value.") .defineInRange("shrinkingPotionDelta", 0.3D, 0.001D, 64.0D); + GROWTH_POTION_DELTA = b.comment("Scale delta per level of Growth Potion. Level II applies double this value.") .defineInRange("growthPotionDelta", 0.5D, 0.001D, 64.0D); + b.pop(); + + + // Gravity + + b.push("gravity"); + INVERT_PROJECTILES_FROM_INVERTED_PLAYERS = b + .comment( + "If true, projectiles fired by inverted players keep their inverted launch and gravity.", + "Affects bows, crossbows, throwables, and firework boosts." + ) + .define("invertProjectilesFromInvertedPlayers", false); + b.pop(); + + + // Gravity Gun + + b.push("gravityGun"); + GRAVITY_GUN_ENABLED = b.comment("Master toggle for the Gravity Gun.") .define("enabled", true); + GRAVITY_GUN_BLOCKS_ENABLED = b.comment("If false, the Gravity Gun cannot grab blocks.") .define("blocksEnabled", true); + GRAVITY_GUN_ENTITIES_ENABLED = b.comment("If false, the Gravity Gun cannot grab entities.") .define("entitiesEnabled", true); + GRAVITY_GUN_RANGE = b.comment("Search range for a target in blocks.") .defineInRange("range", 16.0D, 1.0D, 64.0D); + GRAVITY_GUN_THROW_STRENGTH = b.comment("Velocity multiplier when throwing a held target.") .defineInRange("throwStrength", 1.8D, 0.1D, 10.0D); + GRAVITY_GUN_BLAST_STRENGTH = b.comment("Velocity multiplier for the push blast.") .defineInRange("blastStrength", 1.4D, 0.1D, 10.0D); + GRAVITY_GUN_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after any Gravity Gun action.") .defineInRange("cooldownSeconds", 0.35D, 0.0D, 10.0D); + GRAVITY_GUN_MAX_HOLD_DISTANCE = b.comment("Maximum distance a held target can be pushed from the player, in blocks.") .defineInRange("maxHoldDistance", 10.0D, 1.5D, 64.0D); + b.pop(); + + + // Miscellaneous items / consumables + + b.push("ductTape"); + DUCT_TAPE_REPAIR_PERCENT_PER_USE = b + .comment("Fraction of max durability repaired per use. 0.25 = 25% per application.") + .defineInRange("repairPercentPerUse", 0.25D, 0.0D, 1.0D); + b.pop(); + + b.push("potentNyxite"); + POTENT_NYXITE_INVERTED_DURATION_SECONDS = b + .comment("How long the Inverted effect from Potent Nyxite eruptions lasts, in seconds.") + .defineInRange("invertedDurationSeconds", 10.0D, 0.0D, 3600.0D); + b.pop(); + + b.push("corneaEar"); + CORNEA_EAR_NIGHT_VISION_SECONDS = b + .comment("How long Cornea Ear grants Night Vision after being eaten, in seconds.") + .defineInRange("nightVisionSeconds", 15, 0, 600); + 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); + MOGGLES_VISION_ALPHA = b.comment("Alpha of blocks made visible by Moggles. 0 = invisible, 1 = opaque.").defineInRange("visionAlpha", 0.35D, 0.05D, 1.0D); + b.pop(); + + SPEC = b.build(); + } + + private AntarchyToolsConfig() {} + + static double basiliskDaggerAttackDamage() { return BASILISK_DAGGER_ATTACK_DAMAGE.get(); } + static double basiliskDaggerAttackSpeed() { return BASILISK_DAGGER_ATTACK_SPEED.get(); } + static int basiliskDaggerPoisonDurationTicks() { return BASILISK_DAGGER_POISON_DURATION_TICKS.get(); } + static int basiliskDaggerPoisonAmplifier() { return BASILISK_DAGGER_POISON_AMPLIFIER.get(); } + + static double ultimateSwordAttackDamage() { return ULTIMATE_SWORD_ATTACK_DAMAGE.get(); } + static double ultimateSwordAttackSpeed() { return ULTIMATE_SWORD_ATTACK_SPEED.get(); } + static double ultimatePickaxeAttackDamage() { return ULTIMATE_PICKAXE_ATTACK_DAMAGE.get(); } + static double ultimatePickaxeAttackSpeed() { return ULTIMATE_PICKAXE_ATTACK_SPEED.get(); } + static double ultimateAxeAttackDamage() { return ULTIMATE_AXE_ATTACK_DAMAGE.get(); } + static double ultimateAxeAttackSpeed() { return ULTIMATE_AXE_ATTACK_SPEED.get(); } + static double ultimateShovelAttackDamage() { return ULTIMATE_SHOVEL_ATTACK_DAMAGE.get(); } + static double ultimateShovelAttackSpeed() { return ULTIMATE_SHOVEL_ATTACK_SPEED.get(); } + static double ultimateHoeAttackDamage() { return ULTIMATE_HOE_ATTACK_DAMAGE.get(); } + static double ultimateHoeAttackSpeed() { return ULTIMATE_HOE_ATTACK_SPEED.get(); } + static int ultimateToolEnchantability() { return ULTIMATE_TOOL_ENCHANTABILITY.get(); } + static boolean ultimateToolsThreeByThreeEnabled() { return ULTIMATE_TOOLS_THREE_BY_THREE_ENABLED.get(); } + + static double ultimateBowAttackDamage() { return ULTIMATE_BOW_ATTACK_DAMAGE.get(); } + static double ultimateBowPlayerHeal() { return ULTIMATE_BOW_PLAYER_HEAL.get(); } + static double ultimateBowDrawSpeedMultiplier() { return ULTIMATE_BOW_DRAW_SPEED_MULTIPLIER.get(); } + static boolean ultimateBowComesEnchantedWithFlame() { return ULTIMATE_BOW_COMES_ENCHANTED_WITH_FLAME.get(); } + static int ultimateBowEnchantability() { return ULTIMATE_BOW_ENCHANTABILITY.get(); } + + static double ultimateCrossbowAttackDamage() { return ULTIMATE_CROSSBOW_ATTACK_DAMAGE.get(); } + static double ultimateCrossbowChargeSpeedMultiplier() { return ULTIMATE_CROSSBOW_CHARGE_SPEED_MULTIPLIER.get(); } + static int ultimateCrossbowEnchantability() { return ULTIMATE_CROSSBOW_ENCHANTABILITY.get(); } + + static double ultimateMaceDamageMultiplier() { return ULTIMATE_MACE_DAMAGE_MULTIPLIER.get(); } + static double ultimateMaceAttackSpeed() { return ULTIMATE_MACE_ATTACK_SPEED.get(); } + static int ultimateMaceEnchantability() { return ULTIMATE_MACE_ENCHANTABILITY.get(); } + + static boolean ultimateArmorComesEnchanted() { return ULTIMATE_ARMOR_COMES_ENCHANTED.get(); } + static int ultimateArmorEnchantability() { return ULTIMATE_ARMOR_ENCHANTABILITY.get(); } + static int ultimateHelmetArmorValue() { return ULTIMATE_HELMET_ARMOR_VALUE.get(); } + static int ultimateChestplateArmorValue() { return ULTIMATE_CHESTPLATE_ARMOR_VALUE.get(); } + static int ultimateLeggingsArmorValue() { return ULTIMATE_LEGGINGS_ARMOR_VALUE.get(); } + static int ultimateBootsArmorValue() { return ULTIMATE_BOOTS_ARMOR_VALUE.get(); } + static double ultimateHelmetArmorToughness() { return ULTIMATE_HELMET_ARMOR_TOUGHNESS.get(); } + static double ultimateChestplateArmorToughness() { return ULTIMATE_CHESTPLATE_ARMOR_TOUGHNESS.get(); } + static double ultimateLeggingsArmorToughness() { return ULTIMATE_LEGGINGS_ARMOR_TOUGHNESS.get(); } + static double ultimateBootsArmorToughness() { return ULTIMATE_BOOTS_ARMOR_TOUGHNESS.get(); } + static double ultimateArmorKnockbackResistance() { return ULTIMATE_ARMOR_KNOCKBACK_RESISTANCE.get(); } + + static double battleAxeAttackDamage() { return BATTLE_AXE_ATTACK_DAMAGE.get(); } + static double battleAxeAttackSpeed() { return BATTLE_AXE_ATTACK_SPEED.get(); } + + static double bigBerthaAttackDamage() { return BIG_BERTHA_ATTACK_DAMAGE.get(); } + static double bigBerthaReachBonus() { return BIG_BERTHA_REACH_BONUS.get(); } + static double bigBerthaAttackSpeed() { return BIG_BERTHA_ATTACK_SPEED.get(); } + static int bigBerthaBasiliskParalyzeDurationTicks() { return BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS.get(); } + static int bigBerthaKrakenSlowTicks() { return BIG_BERTHA_KRAKEN_SLOW_TICKS.get(); } + 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 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(); } + static double scorpionWhipTetherMaxRange() { return SCORPION_WHIP_TETHER_MAX_RANGE.get(); } + static int scorpionWhipReelCooldownTicks() { return SCORPION_WHIP_REEL_COOLDOWN_TICKS.get(); } + static double scorpionWhipSnapBonusDamage() { return SCORPION_WHIP_SNAP_BONUS_DAMAGE.get(); } + static int scorpionWhipSnapCooldownTicks() { return SCORPION_WHIP_SNAP_COOLDOWN_TICKS.get(); } + static double scorpionWhipPullStrength() { return SCORPION_WHIP_PULL_STRENGTH.get(); } + static double scorpionWhipHeavyPullMultiplier() { return SCORPION_WHIP_HEAVY_PULL_MULTIPLIER.get(); } + static double scorpionWhipSelfPullMultiplier() { return SCORPION_WHIP_SELF_PULL_MULTIPLIER.get(); } + static int bloodCrystalKatanaAttackDamage() { return BLOOD_CRYSTAL_KATANA_ATTACK_DAMAGE.get(); } + static double bloodCrystalKatanaLaunchStrength() { return BLOOD_CRYSTAL_KATANA_LAUNCH_STRENGTH.get(); } + static int bloodCrystalKatanaTrailDurationTicks() { return BLOOD_CRYSTAL_KATANA_TRAIL_DURATION_TICKS.get(); } + + static int nightmareHelmetArmorValue() { return NIGHTMARE_HELMET_ARMOR_VALUE.get(); } + static int nightmareChestplateArmorValue() { return NIGHTMARE_CHESTPLATE_ARMOR_VALUE.get(); } + static int nightmareLeggingsArmorValue() { return NIGHTMARE_LEGGINGS_ARMOR_VALUE.get(); } + static int nightmareBootsArmorValue() { return NIGHTMARE_BOOTS_ARMOR_VALUE.get(); } + static double nightmareHelmetArmorToughness() { return NIGHTMARE_HELMET_ARMOR_TOUGHNESS.get(); } + static double nightmareChestplateArmorToughness() { return NIGHTMARE_CHESTPLATE_ARMOR_TOUGHNESS.get(); } + static double nightmareLeggingsArmorToughness() { return NIGHTMARE_LEGGINGS_ARMOR_TOUGHNESS.get(); } + static double nightmareBootsArmorToughness() { return NIGHTMARE_BOOTS_ARMOR_TOUGHNESS.get(); } + static double nightmareArmorKnockbackResistance() { return NIGHTMARE_ARMOR_KNOCKBACK_RESISTANCE.get(); } + static double nightmareArmorDreadAuraRangePerPiece() { return NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE.get(); } + static double nightmareSwordBaseDamage() { return NIGHTMARE_SWORD_BASE_DAMAGE.get(); } + static double nightmareSwordAttackSpeed() { return NIGHTMARE_SWORD_ATTACK_SPEED.get(); } + static double nightmareSwordScalingFactor() { return NIGHTMARE_SWORD_SCALING_FACTOR.get(); } + + static int fallenKingCrownArmorValue() { return FALLEN_KING_CROWN_ARMOR_VALUE.get(); } + static double fallenKingCrownArmorToughness() { return FALLEN_KING_CROWN_ARMOR_TOUGHNESS.get(); } + + static int bloodCrystalArmorShieldRechargeTicks() { return BLOOD_CRYSTAL_ARMOR_SHIELD_RECHARGE_TICKS.get(); } + static int bloodCrystalAppleShieldCount() { return BLOOD_CRYSTAL_APPLE_SHIELD_COUNT.get(); } + static int bloodCrystalAppleDurationTicks() { return BLOOD_CRYSTAL_APPLE_DURATION_TICKS.get(); } + static int bloodCrystalAppleShieldRechargeTicks() { return BLOOD_CRYSTAL_APPLE_SHIELD_RECHARGE_TICKS.get(); } + static int bloodCrystalHardMaxShields() { return BLOOD_CRYSTAL_HARD_MAX_SHIELDS.get(); } + static int bloodCrystalHelmetDefense() { return BLOOD_CRYSTAL_HELMET_DEFENSE.get(); } + static int bloodCrystalChestplateDefense() { return BLOOD_CRYSTAL_CHESTPLATE_DEFENSE.get(); } + static int bloodCrystalLeggingsDefense() { return BLOOD_CRYSTAL_LEGGINGS_DEFENSE.get(); } + static int bloodCrystalBootsDefense() { return BLOOD_CRYSTAL_BOOTS_DEFENSE.get(); } + static double bloodCrystalArmorToughness() { return BLOOD_CRYSTAL_ARMOR_TOUGHNESS.get(); } + static int bloodCrystalHelmetDurability() { return BLOOD_CRYSTAL_HELMET_DURABILITY.get(); } + static int bloodCrystalChestplateDurability() { return BLOOD_CRYSTAL_CHESTPLATE_DURABILITY.get(); } + static int bloodCrystalLeggingsDurability() { return BLOOD_CRYSTAL_LEGGINGS_DURABILITY.get(); } + static int bloodCrystalBootsDurability() { return BLOOD_CRYSTAL_BOOTS_DURABILITY.get(); } + + static double squidzookaCooldownSeconds() { return SQUIDZOOKA_COOLDOWN_SECONDS.get(); } + static double squidzookaLaunchVelocity() { return SQUIDZOOKA_LAUNCH_VELOCITY.get(); } + + static boolean sizeChangingRaysEnabled() { return SIZE_CHANGING_RAYS_ENABLED.get(); } + static double sizeRayCooldownSeconds() { return SIZE_RAY_COOLDOWN_SECONDS.get(); } + static double sizeRayMinScale() { return SIZE_RAY_MIN_SCALE.get(); } + static double sizeRayMaxScale() { return SIZE_RAY_MAX_SCALE.get(); } + static double sizeRayDeltaPerHit() { return SIZE_RAY_DELTA_PER_HIT.get(); } + static double shrinkingPotionDelta() { return SHRINKING_POTION_DELTA.get(); } + static double growthPotionDelta() { return GROWTH_POTION_DELTA.get(); } + + static boolean invertProjectilesFromInvertedPlayers() { return INVERT_PROJECTILES_FROM_INVERTED_PLAYERS.get(); } + + static boolean gravityGunEnabled() { return GRAVITY_GUN_ENABLED.get(); } + static boolean gravityGunBlocksEnabled() { return GRAVITY_GUN_BLOCKS_ENABLED.get(); } + static boolean gravityGunEntitiesEnabled() { return GRAVITY_GUN_ENTITIES_ENABLED.get(); } + static double gravityGunRange() { return GRAVITY_GUN_RANGE.get(); } + static double gravityGunThrowStrength() { return GRAVITY_GUN_THROW_STRENGTH.get(); } + static double gravityGunBlastStrength() { return GRAVITY_GUN_BLAST_STRENGTH.get(); } + static double gravityGunCooldownSeconds() { return GRAVITY_GUN_COOLDOWN_SECONDS.get(); } + static double gravityGunMaxHoldDistance() { return GRAVITY_GUN_MAX_HOLD_DISTANCE.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 int mogglesVisionRadius() { return MOGGLES_VISION_RADIUS.get(); } + static int mogglesVisionMaxLight() { return MOGGLES_VISION_MAX_LIGHT.get(); } + static float mogglesVisionAlpha() { return MOGGLES_VISION_ALPHA.get().floatValue(); } + +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/NeoForgeInfinityCompat.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/NeoForgeInfinityCompat.java new file mode 100644 index 00000000..a2f5d37a --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/NeoForgeInfinityCompat.java @@ -0,0 +1,34 @@ +package com.craisinlord.antarchy.neoforge; + +import com.craisinlord.antarchy.compat.infinity.InfinityCompatBridge; +import net.lerariemann.infinity.util.InfinityMethods; +import net.lerariemann.infinity.util.teleport.WarpLogic; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.util.RandomSource; + +public final class NeoForgeInfinityCompat implements InfinityCompatBridge { + @Override + public boolean isAvailable() { + return true; + } + + @Override + public ResourceLocation getRandomDimensionId(RandomSource random) { + try { + return InfinityMethods.getRandomId(random); + } catch (Throwable throwable) { + return null; + } + } + + @Override + public boolean requestWarp(ServerPlayer player, ResourceLocation dimensionId) { + try { + WarpLogic.requestWarp(player, dimensionId, false); + return true; + } catch (Throwable throwable) { + return false; + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/OuranwoodWoodTypes.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/OuranwoodWoodTypes.java new file mode 100644 index 00000000..bf085257 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/OuranwoodWoodTypes.java @@ -0,0 +1,16 @@ +package com.craisinlord.antarchy.neoforge; + +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 static final WoodType OURANWOOD = register("ouranwood"); + + private OuranwoodWoodTypes() { + } + + private static WoodType register(String name) { + return WoodType.register(new WoodType(Antarchy.MODID + ":" + name, BlockSetType.JUNGLE)); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java new file mode 100644 index 00000000..d98270f3 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java @@ -0,0 +1,30 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.client.KeyMapping; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; +import net.neoforged.neoforge.client.settings.KeyConflictContext; + +@EventBusSubscriber(modid = Antarchy.MODID, bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public final class AntarchyKeyBindings { + public static final String CATEGORY = "key.categories.antarchy"; + + public static final KeyMapping BRUTALFLY_FLAP = new KeyMapping( + "key.antarchy.brutalfly_flap", + KeyConflictContext.IN_GAME, + InputConstants.Type.KEYSYM, + InputConstants.KEY_LSHIFT, + CATEGORY + ); + + private AntarchyKeyBindings() {} + + @SubscribeEvent + public static void onRegisterKeyMappings(RegisterKeyMappingsEvent event) { + event.register(BRUTALFLY_FLAP); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java new file mode 100644 index 00000000..0bb864b8 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -0,0 +1,457 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.hud.BloodglassHudRenderer; +import com.craisinlord.antarchy.content.client.particle.*; +import com.craisinlord.antarchy.content.client.renderer.*; +import com.craisinlord.antarchy.neoforge.AntarchyNeoForgeFluidTypes; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeBlocks; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeEntites; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeItems; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import com.mojang.blaze3d.shaders.FogShape; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.BoatModel; +import net.minecraft.client.model.ChestBoatModel; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.resources.PlayerSkin; +import net.minecraft.client.renderer.entity.ThrownItemRenderer; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import software.bernie.geckolib.renderer.GeoEntityRenderer; +import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.BiomeColors; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.blockentity.CampfireRenderer; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.item.ItemProperties; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.item.CrossbowItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.component.ChargedProjectiles; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.FoliageColor; +import net.minecraft.world.level.material.FluidState; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +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.EntityRenderersEvent; +import net.neoforged.neoforge.client.event.RegisterGuiLayersEvent; +import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; +import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; +import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent; +import net.neoforged.neoforge.client.model.DynamicFluidContainerModel; +import org.joml.Vector3f; +import software.bernie.geckolib.animatable.GeoAnimatable; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; + +@EventBusSubscriber(modid = Antarchy.MODID, bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +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 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"); + private static final ResourceLocation UNDERWATER_OVERLAY = ResourceLocation.withDefaultNamespace("textures/misc/underwater.png"); + private static final ResourceLocation ANTIWATER_STILL = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_still"); + private static final ResourceLocation ANTIWATER_FLOW = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_flow"); + private AntarchyNeoForgeClient() { + } + + @SubscribeEvent + public static void registerRenderers(EntityRenderersEvent.RegisterRenderers event) { + event.registerBlockEntityRenderer(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), CampfireRenderer::new); + event.registerEntityRenderer(AntarchyNeoforgeEntites.EASTER_BUNNY.get(), context -> withParalyzedGeoLayer(new EasterBunnyRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.FLYING_SQUIRREL.get(), context -> withParalyzedGeoLayer(new FlyingSquirrelRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.CATERPILLAR.get(), context -> withParalyzedGeoLayer(new CaterpillarRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.BUTTERFLY.get(), context -> withParalyzedGeoLayer(new ButterflyRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.REVERIE.get(), context -> withParalyzedGeoLayer(new ReverieRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.BRUTALFLY.get(), context -> withParalyzedGeoLayer(new BrutalflyRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.RED_ANT.get(), context -> withParalyzedGeoLayer(new AntRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.BROWN_ANT.get(), context -> withParalyzedGeoLayer(new AntRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.RAINBOW_ANT.get(), context -> withParalyzedGeoLayer(new AntRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.MOLEWORM.get(), context -> withParalyzedGeoLayer(new MolewormRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.MANTIS.get(), context -> withParalyzedGeoLayer(new MantisRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.MOLEVORE.get(), context -> withParalyzedGeoLayer(new MolevoreRenderer(context))); + 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.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))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.DIAMOND_MINECART.get(), DiamondMinecartRenderer::new); + 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.MISSILE_SQUID.get(), context -> withParalyzedGeoLayer(new MissileSquidRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.NIGHTMARE.get(), context -> withParalyzedGeoLayer(new NightmareRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.LUCID.get(), context -> withParalyzedGeoLayer(new LucidRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.BED_BUG.get(), context -> withParalyzedGeoLayer(new BedBugRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.WASP.get(), context -> withParalyzedGeoLayer(new WaspRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.BOMBER.get(), context -> withParalyzedGeoLayer(new BomberRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.BASILISK.get(), context -> withParalyzedGeoLayer(new BasiliskRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.SHRINK_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); + 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.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); + event.registerEntityRenderer(AntarchyNeoforgeEntites.SCORPION.get(), context -> withParalyzedGeoLayer(new ScorpionRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), context -> withParalyzedGeoLayer(new EmperorScorpionRenderer(context))); + } + + @SubscribeEvent + @SuppressWarnings({"unchecked", "rawtypes"}) + public static void addRenderLayers(EntityRenderersEvent.AddLayers event) { + for (PlayerSkin.Model skin : event.getSkins()) { + LivingEntityRenderer> renderer = + (LivingEntityRenderer>) event.getSkin(skin); + if (renderer != null) { + renderer.addLayer(new ParalyzedStonePlayerLayer(renderer)); + renderer.addLayer(new BrutalflyElytraLayer(renderer)); + renderer.addLayer(new FallenKingCrownLayer(renderer)); + } + } + BuiltInRegistries.ENTITY_TYPE.forEach(entityType -> addParalyzedLayerToEntity(event, entityType)); + } + + @SubscribeEvent + public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { + event.registerLayerDefinition(OuranwoodBoatRenderer.boatLayer(), BoatModel::createBodyModel); + event.registerLayerDefinition(OuranwoodBoatRenderer.chestBoatLayer(), ChestBoatModel::createBodyModel); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + private static void addParalyzedLayerToEntity(EntityRenderersEvent.AddLayers event, EntityType entityType) { + if (entityType == EntityType.PLAYER) { + return; + } + var renderer = event.getRenderer(entityType); + if (renderer == null) { + return; + } + if (!(renderer instanceof LivingEntityRenderer livingRenderer)) { + return; + } + if (renderer instanceof GeoEntityRenderer) { + return; + } + ((LivingEntityRenderer) livingRenderer).addLayer(new ParalyzedStoneLivingLayer<>(livingRenderer)); + } + + private static GeoEntityRenderer withParalyzedGeoLayer(GeoEntityRenderer renderer) { + renderer.addRenderLayer(new ParalyzedStoneGeoLayer<>(renderer)); + return renderer; + } + + @SubscribeEvent + public static void registerBlockColors(RegisterColorHandlersEvent.Block event) { + event.register( + (state, level, pos, tintIndex) -> level != null && pos != null + ? BiomeColors.getAverageFoliageColor(level, pos) + : FoliageColor.getDefaultColor(), + AntarchyNeoforgeBlocks.OURANWOOD_LEAVES.get() + ); + event.register( + (state, level, pos, tintIndex) -> 0xFF4A0000, + AntarchyNeoforgeBlocks.ANTIWATER_BLOCK.get() + ); + } + + @SubscribeEvent + public static void registerItemColors(RegisterColorHandlersEvent.Item event) { + event.register( + (stack, tintIndex) -> FoliageColor.getDefaultColor(), + AntarchyNeoforgeItems.OURANWOOD_LEAVES_ITEM.get() + ); + event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.ICHOR_BUCKET.get()); + event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.ANTIWATER_BUCKET.get()); + } + + @SubscribeEvent + public static void registerParticleProviders(RegisterParticleProvidersEvent event) { + event.registerSpriteSet(AntarchyNeoforgeMisc.DREAM_FIRE_FLAME.get(), DreamFlameParticle.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()); + event.registerSpecial(AntarchyNeoforgeMisc.HYPNOTIC_GAS_CLOUD_DOWN.get(), new HypnoticGasCloudParticle.Provider(true)); + event.registerSpriteSet(AntarchyNeoforgeMisc.INVERTED_GEYSER_BASE.get(), InvertedGeyserBaseParticle.Provider::new); + event.registerSpriteSet(AntarchyNeoforgeMisc.INVERTED_GEYSER_PLUME.get(), InvertedGeyserPlumeParticle.Provider::new); + event.registerSpriteSet(AntarchyNeoforgeMisc.INVERTED_GEYSER_POOF.get(), InvertedGeyserBaseParticle.Provider::new); + event.registerSpecial(AntarchyNeoforgeMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); + event.registerSpriteSet(AntarchyNeoforgeMisc.FIREFLY.get(), FireflyParticle.Provider::new); + } + + @SubscribeEvent + public static void registerGuiLayers(RegisterGuiLayersEvent event) { + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dread_darkness"), + (guiGraphics, partialTick) -> DreadHudRenderer.render(guiGraphics) + ); + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "paralyzed_stone"), + (guiGraphics, partialTick) -> ParalyzedHudRenderer.render(guiGraphics) + ); + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "brutalfly_elytra"), + (guiGraphics, partialTick) -> BrutalflyElytraHudRenderer.render(guiGraphics) + ); + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "bloodglass_hearts"), + (guiGraphics, partialTick) -> BloodglassHudRenderer.render(guiGraphics) + ); + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "triffid_goo"), + (guiGraphics, partialTick) -> TriffidGooHudRenderer.render(guiGraphics) + ); + } + + @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 ANTIWATER_STILL; + } + + @Override + public ResourceLocation getFlowingTexture() { + return ANTIWATER_FLOW; + } + + @Override + public ResourceLocation getOverlayTexture() { + return WATER_OVERLAY; + } + + @Override + public ResourceLocation getRenderOverlayTexture(Minecraft mc) { + return UNDERWATER_OVERLAY; + } + + @Override + public int getTintColor() { + return 0xFF2A0306; + } + + @Override + public int getTintColor(FluidState state, BlockAndTintGetter getter, net.minecraft.core.BlockPos pos) { + return 0xFF2A0306; + } + + @Override + public Vector3f modifyFogColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, Vector3f fluidFogColor) { + return new Vector3f(0.16F, 0.02F, 0.03F); + } + + @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.5F); + RenderSystem.setShaderFogEnd(Math.min(farDistance, 10.0F)); + RenderSystem.setShaderFogShape(FogShape.CYLINDER); + } + }, AntarchyNeoForgeFluidTypes.ICHOR_TYPE.get()); + + event.registerFluidType(new IClientFluidTypeExtensions() { + @Override + public ResourceLocation getStillTexture() { + return WATER_STILL; + } + + @Override + public ResourceLocation getFlowingTexture() { + return WATER_FLOW; + } + + @Override + public ResourceLocation getOverlayTexture() { + return WATER_OVERLAY; + } + + @Override + public ResourceLocation getRenderOverlayTexture(Minecraft mc) { + return UNDERWATER_OVERLAY; + } + + @Override + public int getTintColor() { + return 0xFFFF1A1A; + } + + @Override + public int getTintColor(FluidState state, BlockAndTintGetter getter, net.minecraft.core.BlockPos pos) { + return 0xFFFF1A1A; + } + + @Override + public boolean renderFluid(FluidState fluidState, BlockAndTintGetter getter, net.minecraft.core.BlockPos pos, VertexConsumer vertexConsumer, net.minecraft.world.level.block.state.BlockState blockState) { + var sprites = net.neoforged.neoforge.client.textures.FluidSpriteCache.getFluidSprites(getter, pos, fluidState); + int tint = net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions.of(fluidState).getTintColor(fluidState, getter, pos); + AntiwaterFluidRenderer.render(getter, pos, vertexConsumer, blockState, fluidState, sprites[0], sprites[1], sprites[2], tint); + return true; + } + + @Override + public Vector3f modifyFogColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, Vector3f fluidFogColor) { + return new Vector3f(0.52F, 0.06F, 0.06F); + } + + @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.5F); + RenderSystem.setShaderFogEnd(Math.min(farDistance, 12.0F)); + RenderSystem.setShaderFogShape(FogShape.CYLINDER); + } + }, AntarchyNeoForgeFluidTypes.ANTIWATER_TYPE.get()); + + registerGeoItemExtensionSizeRay(event, AntarchyNeoforgeItems.SHRINK_RAY.get()); + 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.BATTLE_AXE.get()); + registerGeoItemExtension(event, AntarchyNeoforgeItems.BIG_BERTHA.get()); + } + + @SubscribeEvent + public static void onClientSetup(FMLClientSetupEvent event) { + event.enqueueWork(() -> { + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.OURANWOOD_LEAVES.get(), RenderType.cutout()); + 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.DUPLICATOR_SAPLING.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ORANGE_MILKWEED.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PINK_MILKWEED.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TORCHFLOWER_BUSH.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.HUSHWEED.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORNEA_STALK.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.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()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.BLOOD_CRYSTAL_CRYSTAL.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_TORCH.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_WALL_TORCH.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_LANTERN.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE.get(), RenderType.cutout()); + 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.TRIFFID_GOO_BLOCK.get(), RenderType.translucent()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.URANIUM_DOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TITANIUM_DOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.URANIUM_TRAPDOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TITANIUM_TRAPDOOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.URANIUM_BARS.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TITANIUM_BARS.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CLOUD_BLOCK.get(), RenderType.translucent()); + registerUltimateBowProperties(); + registerUltimateCrossbowProperties(); + }); + } + + private static void registerUltimateBowProperties() { + ItemProperties.register( + AntarchyNeoforgeItems.ULTIMATE_BOW.get(), + ResourceLocation.withDefaultNamespace("pull"), + (stack, level, entity, seed) -> { + if (entity == null || entity.getUseItem() != stack) { + return 0.0F; + } + + return (stack.getItem().getUseDuration(stack, entity) - entity.getUseItemRemainingTicks()) / 20.0F; + } + ); + ItemProperties.register( + AntarchyNeoforgeItems.ULTIMATE_BOW.get(), + ResourceLocation.withDefaultNamespace("pulling"), + (stack, level, entity, seed) -> + entity != null && entity.isUsingItem() && entity.getUseItem() == stack ? 1.0F : 0.0F + ); + } + + private static void registerUltimateCrossbowProperties() { + ItemProperties.register( + AntarchyNeoforgeItems.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("pull"), + (stack, level, entity, seed) -> { + if (entity == null || CrossbowItem.isCharged(stack) || entity.getUseItem() != stack) { + return 0.0F; + } + + float adjustedChargeDuration = Math.max(1.0F, stack.getItem().getUseDuration(stack, entity) - 3.0F); + return Mth.clamp((stack.getItem().getUseDuration(stack, entity) - entity.getUseItemRemainingTicks()) / adjustedChargeDuration, 0.0F, 1.0F); + } + ); + ItemProperties.register( + AntarchyNeoforgeItems.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("pulling"), + (stack, level, entity, seed) -> + entity != null && entity.isUsingItem() && entity.getUseItem() == stack && !CrossbowItem.isCharged(stack) ? 1.0F : 0.0F + ); + ItemProperties.register( + AntarchyNeoforgeItems.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("charged"), + (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) ? 1.0F : 0.0F + ); + ItemProperties.register( + AntarchyNeoforgeItems.ULTIMATE_CROSSBOW.get(), + ResourceLocation.withDefaultNamespace("firework"), + (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) && ChargedProjectiles.of(stack).contains(Items.FIREWORK_ROCKET) ? 1.0F : 0.0F + ); + } + + private static void registerGeoItemExtension(RegisterClientExtensionsEvent event, Item item) { + registerGeoItemExtension(event, item, null); + } + + private static void registerGeoItemExtension(RegisterClientExtensionsEvent event, Item item, HumanoidModel.ArmPose armPose) { + event.registerItem(new IClientItemExtensions() { + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() { + return GeoRenderProvider.of(item).getGeoItemRenderer(); + } + + @Override + public HumanoidModel.ArmPose getArmPose(LivingEntity entityLiving, net.minecraft.world.InteractionHand hand, net.minecraft.world.item.ItemStack itemStack) { + return armPose; + } + }, item); + } + + private static void registerGeoItemExtensionSizeRay(RegisterClientExtensionsEvent event, Item item) { + event.registerItem(new IClientItemExtensions() { + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() { + return GeoRenderProvider.of(item).getGeoItemRenderer(); + } + + @Override + public HumanoidModel.ArmPose getArmPose(LivingEntity entityLiving, net.minecraft.world.InteractionHand hand, net.minecraft.world.item.ItemStack itemStack) { + if (entityLiving.isUsingItem() && entityLiving.getUsedItemHand() == hand) { + return HumanoidModel.ArmPose.CROSSBOW_HOLD; + } + return null; + } + }, item); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BloodCrystalKatanaTrailHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BloodCrystalKatanaTrailHandler.java new file mode 100644 index 00000000..953df6ab --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BloodCrystalKatanaTrailHandler.java @@ -0,0 +1,213 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.BloodCrystalKatanaTrailClientState; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexFormat; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import org.joml.Matrix4f; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.GAME) +public final class BloodCrystalKatanaTrailHandler { + private static final int MAX_TRAIL_POINTS = 16; + private static final int POINT_LIFETIME_TICKS = 10; + private static final double MIN_DISTANCE_BETWEEN_POINTS = 0.05D; + private static final float CORE_WIDTH = 0.06F; + private static final float GLOW_WIDTH = 0.16F; + private static final Map> TRAILS = new HashMap<>(); + + private BloodCrystalKatanaTrailHandler() {} + + private static final class TrailPoint { + private final Vec3 position; + private int age; + + private TrailPoint(Vec3 position) { + this.position = position; + } + + private float alpha() { + return 1.0F - ((float) age / POINT_LIFETIME_TICKS); + } + + private boolean expired() { + return age >= POINT_LIFETIME_TICKS || alpha() <= 0.01F; + } + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) { + TRAILS.clear(); + BloodCrystalKatanaTrailClientState.clear(); + return; + } + if (mc.isPaused()) { + return; + } + + BloodCrystalKatanaTrailClientState.tick(); + Set activeIds = new HashSet<>(); + + for (Entity entity : mc.level.entitiesForRendering()) { + int remaining = BloodCrystalKatanaTrailClientState.getRemainingTicks(entity.getId()); + if (remaining <= 0) { + continue; + } + + activeIds.add(entity.getId()); + Vec3 position = entity.position().add(0.0D, entity.getBbHeight() * 0.45D, 0.0D); + ArrayDeque points = TRAILS.computeIfAbsent(entity.getId(), id -> new ArrayDeque<>()); + + if (points.isEmpty() || points.peekFirst().position.distanceToSqr(position) >= MIN_DISTANCE_BETWEEN_POINTS * MIN_DISTANCE_BETWEEN_POINTS) { + points.addFirst(new TrailPoint(position)); + while (points.size() > MAX_TRAIL_POINTS) { + points.pollLast(); + } + } + } + + TRAILS.keySet().removeIf(id -> !activeIds.contains(id)); + for (ArrayDeque points : TRAILS.values()) { + Iterator iterator = points.iterator(); + while (iterator.hasNext()) { + TrailPoint point = iterator.next(); + point.age++; + if (point.expired()) { + iterator.remove(); + } + } + } + TRAILS.values().removeIf(ArrayDeque::isEmpty); + } + + @SubscribeEvent + public static void onRenderLevelStage(RenderLevelStageEvent event) { + if (event.getStage() != RenderLevelStageEvent.Stage.AFTER_PARTICLES || TRAILS.isEmpty()) { + return; + } + + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) { + return; + } + + Camera camera = event.getCamera(); + Vec3 cameraPos = camera.getPosition(); + Matrix4f matrix = event.getPoseStack().last().pose(); + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + + Tesselator tesselator = Tesselator.getInstance(); + List> snapshots = new ArrayList<>(TRAILS.size()); + for (ArrayDeque deque : TRAILS.values()) { + if (deque.size() >= 2) { + snapshots.add(new ArrayList<>(deque)); + } + } + + if (snapshots.isEmpty()) { + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + return; + } + + BufferBuilder glowBuffer = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) { + buildTrail(glowBuffer, matrix, points, cameraPos, GLOW_WIDTH, 0.95F, 0.14F, 0.18F, 0.38F); + } + MeshData glowMesh = glowBuffer.build(); + if (glowMesh != null) { + BufferUploader.drawWithShader(glowMesh); + } + + BufferBuilder coreBuffer = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) { + buildTrail(coreBuffer, matrix, points, cameraPos, CORE_WIDTH, 1.0F, 0.32F, 0.36F, 0.92F); + } + MeshData coreMesh = coreBuffer.build(); + if (coreMesh != null) { + BufferUploader.drawWithShader(coreMesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + } + + private static void buildTrail(BufferBuilder builder, Matrix4f matrix, List points, Vec3 cameraPos, + float width, float red, float green, float blue, float alphaScale) { + for (int i = 0; i < points.size() - 1; i++) { + TrailPoint newer = points.get(i); + TrailPoint older = points.get(i + 1); + Vec3 side = cameraFacingRight(newer.position, older.position, cameraPos); + if (side == null) { + continue; + } + + float nearAlpha = newer.alpha() * alphaScale; + float farAlpha = older.alpha() * alphaScale * 0.85F; + Vec3 nearOffset = side.scale(width); + Vec3 farOffset = side.scale(width); + Vec3 nearPos = newer.position.subtract(cameraPos); + Vec3 farPos = older.position.subtract(cameraPos); + + builder.addVertex(matrix, (float) (nearPos.x + nearOffset.x), (float) (nearPos.y + nearOffset.y), (float) (nearPos.z + nearOffset.z)).setColor(red, green, blue, nearAlpha); + builder.addVertex(matrix, (float) (nearPos.x - nearOffset.x), (float) (nearPos.y - nearOffset.y), (float) (nearPos.z - nearOffset.z)).setColor(red, green, blue, nearAlpha); + builder.addVertex(matrix, (float) (farPos.x - farOffset.x), (float) (farPos.y - farOffset.y), (float) (farPos.z - farOffset.z)).setColor(red, green, blue, farAlpha); + builder.addVertex(matrix, (float) (farPos.x + farOffset.x), (float) (farPos.y + farOffset.y), (float) (farPos.z + farOffset.z)).setColor(red, green, blue, farAlpha); + } + } + + private static Vec3 cameraFacingRight(Vec3 current, Vec3 next, Vec3 cameraPos) { + Vec3 segmentDirection = next.subtract(current); + if (segmentDirection.lengthSqr() < 1.0E-8D) { + return null; + } + segmentDirection = segmentDirection.normalize(); + + Vec3 midpoint = current.add(next).scale(0.5D); + Vec3 cameraDirection = cameraPos.subtract(midpoint); + if (cameraDirection.lengthSqr() < 1.0E-8D) { + return null; + } + cameraDirection = cameraDirection.normalize(); + + Vec3 side = segmentDirection.cross(cameraDirection); + if (side.lengthSqr() < 1.0E-8D) { + side = segmentDirection.cross(new Vec3(0.0D, 1.0D, 0.0D)); + if (side.lengthSqr() < 1.0E-8D) { + return null; + } + } + return side.normalize(); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BrutalflyElytraClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BrutalflyElytraClientHandler.java new file mode 100644 index 00000000..1bef7140 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BrutalflyElytraClientHandler.java @@ -0,0 +1,85 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.BrutalflyElytraClientState; +import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.network.BrutalflyElytraFlapPayload; +import net.minecraft.client.Minecraft; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.client.event.RenderGuiLayerEvent; +import net.neoforged.neoforge.client.gui.VanillaGuiLayers; +import net.neoforged.neoforge.network.PacketDistributor; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class BrutalflyElytraClientHandler { + private static final Logger LOGGER = LoggerFactory.getLogger("Antarchy/BrutalflyElytra"); + private static boolean lastJumpDown; + private static int chargeTicks; + + static { + BrutalflyElytraItem.FLAP_KEY_NAME = () -> AntarchyKeyBindings.BRUTALFLY_FLAP.getTranslatedKeyMessage(); + } + + private BrutalflyElytraClientHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + BrutalflyElytraClientState.tick(); + + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player == null || minecraft.level == null || minecraft.screen != null) { + reset(); + return; + } + + if (!BrutalflyElytraItem.isWearingBrutalflyElytra(minecraft.player) || !minecraft.player.isFallFlying()) { + reset(); + return; + } + + boolean sneakDown = AntarchyKeyBindings.BRUTALFLY_FLAP.isDown(); + boolean wasSneakDown = lastJumpDown; + lastJumpDown = sneakDown; + + if (sneakDown) { + chargeTicks = Math.min(chargeTicks + 1, BrutalflyElytraFlightHelper.FLAP_CHARGE_TICKS_MAX); + return; + } + + if (wasSneakDown && chargeTicks > 0) { + PacketDistributor.sendToServer(new BrutalflyElytraFlapPayload(chargeTicks)); + } + chargeTicks = 0; + } + + private static void reset() { + lastJumpDown = false; + chargeTicks = 0; + } + + @SubscribeEvent + public static void onRenderGuiLayer(RenderGuiLayerEvent.Pre event) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player == null || !BrutalflyElytraItem.isWearingBrutalflyElytra(minecraft.player) || !minecraft.player.isFallFlying()) { + return; + } + if (event.getName().equals(VanillaGuiLayers.EXPERIENCE_BAR) || event.getName().equals(VanillaGuiLayers.EXPERIENCE_LEVEL)) { + event.setCanceled(true); + } + } + + public static boolean isCharging() { + return chargeTicks > 0 && lastJumpDown; + } + + public static int getChargeTicks() { + return chargeTicks; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BrutalflyElytraHudRenderer.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BrutalflyElytraHudRenderer.java new file mode 100644 index 00000000..04829ecb --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/BrutalflyElytraHudRenderer.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; + +public final class BrutalflyElytraHudRenderer { + private static final ResourceLocation JUMP_BAR_BACKGROUND = ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_background.png"); + private static final ResourceLocation JUMP_BAR_PROGRESS = ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_progress.png"); + private static final int BAR_WIDTH = 182; + private static final int BAR_HEIGHT = 5; + + private BrutalflyElytraHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + if (player == null || minecraft.screen != null || player.isDeadOrDying()) { + return; + } + if (!BrutalflyElytraItem.isWearingBrutalflyElytra(player) || !player.isFallFlying()) { + return; + } + + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + int x0 = width / 2 - BAR_WIDTH / 2; + int y0 = height - 29; + + guiGraphics.blit(JUMP_BAR_BACKGROUND, x0, y0, 0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + + int chargeTicks = BrutalflyElytraClientHandler.getChargeTicks(); + float chargeRatio = Mth.clamp(chargeTicks / (float) BrutalflyElytraFlightHelper.FLAP_CHARGE_TICKS_MAX, 0.0F, 1.0F); + int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH); + if (filledWidth > 0) { + guiGraphics.setColor(1.0F, 1.0F, 1.0F, 0.35F + chargeRatio * 0.65F); + guiGraphics.blit(JUMP_BAR_PROGRESS, x0, y0, 0, 0, filledWidth, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + guiGraphics.setColor(1.0F, 1.0F, 1.0F, 1.0F); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DiamondMinecartClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DiamondMinecartClientHandler.java new file mode 100644 index 00000000..982e35c1 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DiamondMinecartClientHandler.java @@ -0,0 +1,49 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.network.DiamondMinecartInputPayload; +import net.minecraft.client.Minecraft; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.network.PacketDistributor; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class DiamondMinecartClientHandler { + + private DiamondMinecartClientHandler() { + } + + + private static byte lastFlags = 0; + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + + if (!AntarchySettings.diamondMinecartEnabled()) return; + if (mc.player == null || mc.level == null) return; + if (!(mc.player.getVehicle() instanceof DiamondMinecartEntity)) return; + if (mc.screen != null) { + if (lastFlags != 0) { + PacketDistributor.sendToServer(new DiamondMinecartInputPayload((byte) 0)); + lastFlags = 0; + } + return; + } + + byte flags = 0; + if (mc.options.keyUp.isDown()) flags |= DiamondMinecartInputPayload.FLAG_FORWARD; + if (mc.options.keyDown.isDown()) flags |= DiamondMinecartInputPayload.FLAG_BACK; + if (mc.options.keyLeft.isDown()) flags |= DiamondMinecartInputPayload.FLAG_LEFT; + if (mc.options.keyRight.isDown()) flags |= DiamondMinecartInputPayload.FLAG_RIGHT; + + if (flags != lastFlags) { + PacketDistributor.sendToServer(new DiamondMinecartInputPayload(flags)); + lastFlags = flags; + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DreadClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DreadClientHandler.java new file mode 100644 index 00000000..6163cc0b --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DreadClientHandler.java @@ -0,0 +1,390 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeSounds; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.DeathScreen; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; +import java.util.Random; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class DreadClientHandler { + private static final int FOOTSTEP_MIN_INTERVAL_TICKS = 10; + private static final int FOOTSTEP_MAX_INTERVAL_TICKS = 22; + private static final int APPARITION_MIN_DURATION_TICKS = 16; + private static final int APPARITION_MAX_DURATION_TICKS = 34; + private static final int LUNGE_MIN_DURATION_TICKS = 10; + private static final int LUNGE_MAX_DURATION_TICKS = 16; + + private static int nextSoundTick = 0; + private static int nextApparitionTick = 0; + private static int nextFootstepTick = 0; + private static final List ACTIVE_APPARITIONS = new ArrayList<>(); + private static final Random RANDOM = new Random(); + + private DreadClientHandler() { + } + + private enum ApparitionType { + PERIPHERAL_SILHOUETTE, + CROSSING_SHADOW, + LUNGE_FLASH + } + + private static final class ApparitionEntry { + private final ApparitionType type; + private final float scale; + private final int lifetime; + private final int baseColor; + private float xNorm; + private float yNorm; + private float xVelocity; + private float yVelocity; + private int age; + + private ApparitionEntry(ApparitionType type, float xNorm, float yNorm, float xVelocity, float yVelocity, float scale, int lifetime, int baseColor) { + this.type = type; + this.xNorm = xNorm; + this.yNorm = yNorm; + this.xVelocity = xVelocity; + this.yVelocity = yVelocity; + this.scale = scale; + this.lifetime = lifetime; + this.baseColor = baseColor; + } + + private void tick() { + this.age++; + this.xNorm += this.xVelocity; + this.yNorm += this.yVelocity; + } + + private boolean expired() { + return this.age >= this.lifetime; + } + + private float alpha() { + float progress = this.lifetime <= 0 ? 1.0F : (float) this.age / (float) this.lifetime; + return Mth.clamp(Mth.sin(progress * (float) Math.PI), 0.0F, 1.0F); + } + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null || mc.player == null) { + resetState(); + return; + } + if (mc.isPaused()) { + return; + } + + Player player = mc.player; + if (!player.isAlive() || player.isRemoved() || player.deathTime > 0 || player.isDeadOrDying() || mc.screen instanceof DeathScreen) { + resetState(); + return; + } + + tickApparitions(); + + if (!player.hasEffect(AntarchyNeoforgeMisc.DREAD)) { + resetState(); + return; + } + + if (AntarchySettings.dreadHallucinationSoundsEnabled()) { + nextSoundTick--; + if (nextSoundTick <= 0) { + playHallucinationSound(mc, player); + nextSoundTick = randomIntervalTicks( + AntarchySettings.dreadHallucinationSoundMinInterval(), + AntarchySettings.dreadHallucinationSoundMaxInterval() + ); + } + } else { + nextSoundTick = 0; + } + + nextFootstepTick--; + if (nextFootstepTick <= 0) { + if (player.onGround() && player.getDeltaMovement().horizontalDistanceSqr() > 0.0025D) { + playFootstepSound(mc, player); + nextFootstepTick = randomTickInterval(FOOTSTEP_MIN_INTERVAL_TICKS, FOOTSTEP_MAX_INTERVAL_TICKS); + } else { + nextFootstepTick = 4; + } + } + + if (AntarchySettings.dreadHallucinationMobsEnabled()) { + nextApparitionTick--; + if (nextApparitionTick <= 0) { + spawnApparition(mc, player); + nextApparitionTick = randomIntervalTicks( + AntarchySettings.dreadHallucinationMobMinInterval(), + AntarchySettings.dreadHallucinationMobMaxInterval() + ); + } + } else { + nextApparitionTick = 0; + ACTIVE_APPARITIONS.clear(); + } + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null || !player.hasEffect(AntarchyNeoforgeMisc.DREAD) || ACTIVE_APPARITIONS.isEmpty()) { + return; + } + + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); + for (ApparitionEntry entry : ACTIVE_APPARITIONS) { + float alpha = entry.alpha(); + if (alpha <= 0.01F) { + continue; + } + + switch (entry.type) { + case PERIPHERAL_SILHOUETTE -> renderPeripheralSilhouette(guiGraphics, width, height, entry, alpha); + case CROSSING_SHADOW -> renderCrossingShadow(guiGraphics, width, height, entry, alpha); + case LUNGE_FLASH -> renderLungeFlash(guiGraphics, width, height, entry, alpha); + } + } + } + + private static void tickApparitions() { + Iterator iterator = ACTIVE_APPARITIONS.iterator(); + while (iterator.hasNext()) { + ApparitionEntry entry = iterator.next(); + entry.tick(); + if (entry.expired()) { + iterator.remove(); + } + } + } + + private static void playHallucinationSound(Minecraft mc, Player player) { + Optional> tagOpt = + BuiltInRegistries.SOUND_EVENT.getTag(AntarchyTags.SoundEvents.DREAD_HALLUCINATION_SOUNDS); + if (tagOpt.isEmpty()) { + return; + } + + List> sounds = tagOpt.get().stream().toList(); + if (sounds.isEmpty()) { + return; + } + + SoundEvent soundEvent = sounds.get(RANDOM.nextInt(sounds.size())).value(); + + Vec3 look = player.getLookAngle(); + double baseAngle = Math.atan2(-look.x, -look.z); + double spread = (RANDOM.nextDouble() - 0.5D) * Math.PI; + double angle = baseAngle + spread; + double distance = 10.0D + RANDOM.nextDouble() * 15.0D; + + double soundX = player.getX() + Math.sin(angle) * distance; + double soundY = player.getY() + RANDOM.nextDouble() * 4.0D - 1.0D; + double soundZ = player.getZ() + Math.cos(angle) * distance; + + mc.level.playLocalSound( + soundX, + soundY, + soundZ, + soundEvent, + SoundSource.HOSTILE, + 1.0F, + 0.85F + RANDOM.nextFloat() * 0.3F, + false + ); + } + + private static void spawnApparition(Minecraft mc, Player player) { + double roll = RANDOM.nextDouble(); + if (roll < 0.5D) { + spawnPeripheralSilhouette(); + return; + } + if (roll < 0.82D) { + spawnCrossingShadow(); + return; + } + spawnLungeFlash(mc, player); + } + + private static void spawnPeripheralSilhouette() { + boolean leftSide = RANDOM.nextBoolean(); + float xNorm = leftSide ? 0.08F + RANDOM.nextFloat() * 0.08F : 0.84F + RANDOM.nextFloat() * 0.08F; + float yNorm = 0.48F + (RANDOM.nextFloat() - 0.5F) * 0.26F; + float scale = 0.85F + RANDOM.nextFloat() * 0.4F; + int lifetime = randomTickInterval(APPARITION_MIN_DURATION_TICKS, APPARITION_MAX_DURATION_TICKS); + ACTIVE_APPARITIONS.add(new ApparitionEntry( + ApparitionType.PERIPHERAL_SILHOUETTE, + xNorm, + yNorm, + leftSide ? -0.0015F : 0.0015F, + 0.0F, + scale, + lifetime, + 0x160000 + )); + } + + private static void spawnCrossingShadow() { + boolean leftToRight = RANDOM.nextBoolean(); + float xNorm = leftToRight ? -0.18F : 1.18F; + float yNorm = 0.38F + RANDOM.nextFloat() * 0.36F; + float velocity = leftToRight ? 0.04F + RANDOM.nextFloat() * 0.015F : -(0.04F + RANDOM.nextFloat() * 0.015F); + float scale = 0.9F + RANDOM.nextFloat() * 0.45F; + int lifetime = randomTickInterval(APPARITION_MIN_DURATION_TICKS, APPARITION_MAX_DURATION_TICKS); + ACTIVE_APPARITIONS.add(new ApparitionEntry( + ApparitionType.CROSSING_SHADOW, + xNorm, + yNorm, + velocity, + 0.0F, + scale, + lifetime, + 0x1A0000 + )); + } + + private static void spawnLungeFlash(Minecraft mc, Player player) { + float xNorm = 0.5F + (RANDOM.nextBoolean() ? -1.0F : 1.0F) * (0.12F + RANDOM.nextFloat() * 0.12F); + float yNorm = 0.58F + (RANDOM.nextFloat() - 0.5F) * 0.12F; + float scale = 0.95F + RANDOM.nextFloat() * 0.35F; + int lifetime = randomTickInterval(LUNGE_MIN_DURATION_TICKS, LUNGE_MAX_DURATION_TICKS); + ACTIVE_APPARITIONS.add(new ApparitionEntry( + ApparitionType.LUNGE_FLASH, + xNorm, + yNorm, + 0.0F, + -0.002F, + scale, + lifetime, + 0x2A0000 + )); + mc.level.playLocalSound( + player.getX(), + player.getY() + 1.0D, + player.getZ(), + AntarchyNeoforgeSounds.NIGHTMARE_BITE.get(), + SoundSource.HOSTILE, + 0.4F, + 0.88F + RANDOM.nextFloat() * 0.12F, + false + ); + } + + private static void playFootstepSound(Minecraft mc, Player player) { + double soundX = player.getX() + (RANDOM.nextDouble() - 0.5D) * 1.2D; + double soundY = player.getY() - 0.95D; + double soundZ = player.getZ() + (RANDOM.nextDouble() - 0.5D) * 1.2D; + + mc.level.playLocalSound( + soundX, + soundY, + soundZ, + SoundEvents.SILVERFISH_STEP, + SoundSource.HOSTILE, + 0.45F, + 0.85F + RANDOM.nextFloat() * 0.25F, + false + ); + } + + private static void renderPeripheralSilhouette(GuiGraphics guiGraphics, int width, int height, ApparitionEntry entry, float alpha) { + int centerX = Math.round(entry.xNorm * width); + int baseY = Math.round(entry.yNorm * height); + int bodyWidth = Math.round(width * 0.045F * entry.scale); + int bodyHeight = Math.round(height * 0.24F * entry.scale); + int headSize = Math.round(bodyWidth * 0.78F); + int x0 = centerX - bodyWidth / 2; + int y0 = baseY - bodyHeight / 2; + + int outerColor = alphaColor(entry.baseColor, alpha * 0.8F); + int innerColor = alphaColor(0x5A0000, alpha * 0.22F); + + guiGraphics.fill(x0, y0, x0 + bodyWidth, y0 + bodyHeight, outerColor); + guiGraphics.fill(x0 - headSize / 2 + bodyWidth / 2, y0 - headSize / 2, x0 + bodyWidth / 2 + headSize / 2, y0 + headSize / 2, outerColor); + guiGraphics.fill(x0 + bodyWidth / 6, y0 + bodyHeight / 6, x0 + bodyWidth - bodyWidth / 6, y0 + bodyHeight - bodyHeight / 7, innerColor); + } + + private static void renderCrossingShadow(GuiGraphics guiGraphics, int width, int height, ApparitionEntry entry, float alpha) { + int centerX = Math.round(entry.xNorm * width); + int centerY = Math.round(entry.yNorm * height); + int shadowWidth = Math.round(width * 0.22F * entry.scale); + int shadowHeight = Math.round(height * 0.035F * entry.scale); + + int outerColor = alphaColor(entry.baseColor, alpha * 0.65F); + int innerColor = alphaColor(0x340000, alpha * 0.28F); + + guiGraphics.fill(centerX - shadowWidth / 2, centerY - shadowHeight / 2, centerX + shadowWidth / 2, centerY + shadowHeight / 2, outerColor); + guiGraphics.fill(centerX - shadowWidth / 3, centerY - shadowHeight, centerX + shadowWidth / 3, centerY + shadowHeight, innerColor); + } + + private static void renderLungeFlash(GuiGraphics guiGraphics, int width, int height, ApparitionEntry entry, float alpha) { + int centerX = Math.round(entry.xNorm * width); + int centerY = Math.round(entry.yNorm * height); + int faceWidth = Math.round(width * 0.11F * entry.scale); + int faceHeight = Math.round(height * 0.12F * entry.scale); + + int shadowColor = alphaColor(entry.baseColor, alpha * 0.82F); + int glowColor = alphaColor(0x4A0000, alpha * 0.25F); + int eyeColor = alphaColor(0xB02020, alpha * 0.8F); + + guiGraphics.fill(centerX - faceWidth / 2, centerY - faceHeight / 2, centerX + faceWidth / 2, centerY + faceHeight / 2, shadowColor); + guiGraphics.fill(centerX - faceWidth, centerY - faceHeight / 3, centerX + faceWidth, centerY + faceHeight, glowColor); + + int eyeWidth = Math.max(2, faceWidth / 7); + int eyeHeight = Math.max(2, faceHeight / 12); + int eyeY = centerY - faceHeight / 8; + int eyeOffset = faceWidth / 4; + guiGraphics.fill(centerX - eyeOffset - eyeWidth, eyeY, centerX - eyeOffset + eyeWidth, eyeY + eyeHeight, eyeColor); + guiGraphics.fill(centerX + eyeOffset - eyeWidth, eyeY, centerX + eyeOffset + eyeWidth, eyeY + eyeHeight, eyeColor); + } + + private static void resetState() { + ACTIVE_APPARITIONS.clear(); + nextSoundTick = 0; + nextApparitionTick = 0; + nextFootstepTick = 0; + } + + private static int randomIntervalTicks(double minSeconds, double maxSeconds) { + double seconds = minSeconds + RANDOM.nextDouble() * Math.max(0.0D, maxSeconds - minSeconds); + return Math.max(1, (int) (seconds * 20.0D)); + } + + private static int randomTickInterval(int minTicks, int maxTicks) { + return minTicks + RANDOM.nextInt(Math.max(1, maxTicks - minTicks + 1)); + } + + private static int alphaColor(int rgb, float alpha) { + int alphaByte = Mth.clamp((int) (alpha * 255.0F), 0, 255); + return (alphaByte << 24) | rgb; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DreadHudRenderer.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DreadHudRenderer.java new file mode 100644 index 00000000..6353db25 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DreadHudRenderer.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; + +public final class DreadHudRenderer { + private DreadHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + if (player == null || minecraft.screen != null || player.isDeadOrDying() || !player.hasEffect(AntarchyNeoforgeMisc.DREAD)) { + return; + } + + float pulse = Math.max(0.0F, Mth.sin(player.tickCount * ((float) Math.PI * 2.0F / 80.0F))); + int alpha = Mth.clamp(18 + Mth.floor(pulse * 64.0F), 0, 255); + int color = (alpha << 24) | 0x120000; + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + guiGraphics.fill(0, 0, width, height, color); + DreadClientHandler.render(guiGraphics); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DuctTapeClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DuctTapeClientHandler.java new file mode 100644 index 00000000..950c7ed9 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/DuctTapeClientHandler.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.block.DuctTapeBlock; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.MovementInputUpdateEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class DuctTapeClientHandler { + private DuctTapeClientHandler() { + } + + @SubscribeEvent + public static void onMovementInputUpdate(MovementInputUpdateEvent event) { + if (!(event.getEntity() instanceof LocalPlayer player)) { + return; + } + + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null || (!player.isNoGravity() && !DuctTapeBlock.isTouchingTape(mc.level, player))) { + return; + } + + var input = event.getInput(); + input.left = false; + input.right = false; + input.up = false; + input.down = false; + input.leftImpulse = 0.0F; + input.forwardImpulse = 0.0F; + input.jumping = false; + input.shiftKeyDown = false; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ElythiaFireflyManager.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ElythiaFireflyManager.java new file mode 100644 index 00000000..f0fc69f1 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ElythiaFireflyManager.java @@ -0,0 +1,87 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.client.renderer.ElythiaSkyRenderer; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.player.Player; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class ElythiaFireflyManager { + private static final long NIGHT_START = 13000L; + private static final long NIGHT_END = 23000L; + private static final int SPAWN_INTERVAL = 3; + private static final int SPAWN_RADIUS_H = 20; + private static final int SPAWN_Y_MIN = -2; + private static final int SPAWN_Y_MAX = 10; + private static final int SOUND_INTERVAL_MIN = 250; + private static final int SOUND_INTERVAL_MAX = 450; + + private static int nextSoundTick = SOUND_INTERVAL_MIN; + + private ElythiaFireflyManager() {} + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + ClientLevel level = mc.level; + if (level == null || mc.player == null) return; + if (mc.isPaused()) return; + if (!ElythiaSkyRenderer.shouldRender(level)) return; + + long dayTime = level.getDayTime() % 24000L; + if (dayTime < NIGHT_START || dayTime > NIGHT_END) return; + + long gameTime = level.getGameTime(); + + if (AntarchySettings.elythiaFireflyParticlesEnabled()) { + if (gameTime % SPAWN_INTERVAL == 0) { + Player player = mc.player; + int px = (int) player.getX(); + int py = (int) player.getY(); + int pz = (int) player.getZ(); + + int attempts = 1 + level.random.nextInt(3); + for (int i = 0; i < attempts; i++) { + int ox = level.random.nextInt(SPAWN_RADIUS_H * 2 + 1) - SPAWN_RADIUS_H; + int oy = SPAWN_Y_MIN + level.random.nextInt(SPAWN_Y_MAX - SPAWN_Y_MIN + 1); + int oz = level.random.nextInt(SPAWN_RADIUS_H * 2 + 1) - SPAWN_RADIUS_H; + + BlockPos candidate = new BlockPos(px + ox, py + oy, pz + oz); + if (!level.getBlockState(candidate).isAir()) continue; + + level.addParticle( + AntarchyNeoforgeMisc.FIREFLY.get(), + candidate.getX() + level.random.nextDouble(), + candidate.getY() + level.random.nextDouble(), + candidate.getZ() + level.random.nextDouble(), + 0.0, 0.0, 0.0 + ); + } + } + } + + nextSoundTick--; + if (nextSoundTick <= 0) { + nextSoundTick = SOUND_INTERVAL_MIN + level.random.nextInt(SOUND_INTERVAL_MAX - SOUND_INTERVAL_MIN + 1); + Player player = mc.player; + level.playLocalSound( + player.getX(), player.getY(), player.getZ(), + AntarchySoundEvents.ELYTHIA_FIREFLY_AMBIENT.get(), + SoundSource.AMBIENT, + 0.6f + level.random.nextFloat() * 0.3f, + 0.9f + level.random.nextFloat() * 0.2f, + false + ); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/FallenKingCrownLayer.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/FallenKingCrownLayer.java new file mode 100644 index 00000000..68db2ade --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/FallenKingCrownLayer.java @@ -0,0 +1,61 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeItems; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; + +public final class FallenKingCrownLayer extends RenderLayer> { + private static final ModelResourceLocation WORN_MODEL = ModelResourceLocation.inventory( + net.minecraft.resources.ResourceLocation.fromNamespaceAndPath("antarchy", "fallen_king_crown_worn") + ); + private final ItemRenderer itemRenderer; + + public FallenKingCrownLayer(RenderLayerParent> renderer) { + super(renderer); + this.itemRenderer = Minecraft.getInstance().getItemRenderer(); + } + + @Override + public void render( + PoseStack poseStack, + MultiBufferSource buffer, + int packedLight, + AbstractClientPlayer player, + float limbSwing, + float limbSwingAmount, + float partialTick, + float ageInTicks, + float netHeadYaw, + float headPitch + ) { + ItemStack headStack = player.getItemBySlot(EquipmentSlot.HEAD); + if (!headStack.is(AntarchyNeoforgeItems.FALLEN_KING_CROWN.get()) || player.isInvisible()) { + return; + } + + poseStack.pushPose(); + this.getParentModel().head.translateAndRotate(poseStack); + this.itemRenderer.render( + headStack, + ItemDisplayContext.HEAD, + false, + poseStack, + buffer, + packedLight, + LivingEntityRenderer.getOverlayCoords(player, 0.0F), + Minecraft.getInstance().getModelManager().getModel(WORN_MODEL) + ); + poseStack.popPose(); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/GravityGunClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/GravityGunClientHandler.java new file mode 100644 index 00000000..a00d22c2 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/GravityGunClientHandler.java @@ -0,0 +1,63 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.network.GravityGunPrimaryPayload; +import com.craisinlord.antarchy.content.network.GravityGunScrollPayload; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.util.Mth; +import org.lwjgl.glfw.GLFW; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.InputEvent; +import net.neoforged.neoforge.network.PacketDistributor; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class GravityGunClientHandler { + private static final double SCROLL_STEP_DISTANCE = 0.75D; + + private GravityGunClientHandler() { + } + + @SubscribeEvent + public static void onMouseButton(InputEvent.MouseButton.Pre event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null || mc.screen != null || !AntarchySettings.gravityGunEnabled()) { + return; + } + + if (event.getButton() != GLFW.GLFW_MOUSE_BUTTON_LEFT || event.getAction() != GLFW.GLFW_PRESS) { + return; + } + + if (!(mc.player.getMainHandItem().getItem() instanceof GravityGunItem)) { + return; + } + + PacketDistributor.sendToServer(new GravityGunPrimaryPayload()); + event.setCanceled(true); + } + + @SubscribeEvent + public static void onMouseScroll(InputEvent.MouseScrollingEvent event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null || mc.screen != null || !Screen.hasControlDown() || !AntarchySettings.gravityGunEnabled()) { + return; + } + + if (!(mc.player.getMainHandItem().getItem() instanceof GravityGunItem) || !GravityGunItem.hasHeldTarget(mc.player.getMainHandItem())) { + return; + } + + double scrollAmount = Mth.clamp(event.getScrollDeltaY(), -1.0D, 1.0D); + if (Math.abs(scrollAmount) < 1.0E-4D) { + return; + } + + PacketDistributor.sendToServer(new GravityGunScrollPayload(scrollAmount * SCROLL_STEP_DISTANCE)); + event.setCanceled(true); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/InvertedGeyserEruptionParticle.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/InvertedGeyserEruptionParticle.java new file mode 100644 index 00000000..cd22dc44 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/InvertedGeyserEruptionParticle.java @@ -0,0 +1,77 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.NoRenderParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; + +public final class InvertedGeyserEruptionParticle extends NoRenderParticle { + private final int fluidBlocks; + private final double motionX; + private final double motionY; + private final double motionZ; + private final InvertedGeyserParticleOptions plumeParticle; + private final InvertedGeyserBaseParticleOptions baseParticle; + private final InvertedGeyserBaseParticleOptions poofParticle; + + protected InvertedGeyserEruptionParticle( + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd, + InvertedGeyserParticleOptions options + ) { + super(level, x, y, z); + this.motionX = xd; + this.motionY = yd; + this.motionZ = zd; + this.fluidBlocks = options.fluidBlocks(); + this.lifetime = 20; + this.plumeParticle = new InvertedGeyserParticleOptions(AntarchyNeoforgeMisc.INVERTED_GEYSER_PLUME.get(), this.fluidBlocks, options.direction()); + this.baseParticle = new InvertedGeyserBaseParticleOptions(AntarchyNeoforgeMisc.INVERTED_GEYSER_BASE.get(), this.fluidBlocks, 1.5F, options.direction()); + this.poofParticle = new InvertedGeyserBaseParticleOptions(AntarchyNeoforgeMisc.INVERTED_GEYSER_POOF.get(), this.fluidBlocks, 2.0F, options.direction()); + } + + @Override + public void tick() { + super.tick(); + + if (this.age % 2 == 0) { + for (int i = 0; i < 2; i++) { + this.level.addParticle(this.baseParticle, this.x, this.y, this.z, this.motionX, this.motionY, this.motionZ); + } + } + + for (int i = 0; i < this.fluidBlocks + 2; i++) { + this.level.addParticle(this.plumeParticle, this.x, this.y, this.z, this.motionX, this.motionY, this.motionZ); + } + + if (this.age % 10 == 0) { + for (int i = 0; i < 20; i++) { + this.level.addParticle(this.poofParticle, this.x, this.y, this.z, this.motionX, this.motionY, this.motionZ); + } + } + } + + public static final class Provider implements ParticleProvider { + @Override + public Particle createParticle( + InvertedGeyserParticleOptions options, + ClientLevel level, + double x, + double y, + double z, + double xd, + double yd, + double zd + ) { + return new InvertedGeyserEruptionParticle(level, x, y, z, xd, yd, zd, options); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/LucidSoundHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/LucidSoundHandler.java new file mode 100644 index 00000000..81758b76 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/LucidSoundHandler.java @@ -0,0 +1,290 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeSounds; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.DeathScreen; +import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class LucidSoundHandler { + private static final double START_SCAN_RADIUS = 96.0D; + private static final int ANIM_ATTACK = 2; + private static final int ANIM_DEATH = 3; + private static final Map ACTIVE_LOOPS = new HashMap<>(); + + private LucidSoundHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null || mc.player == null || mc.isPaused()) { + resetAll(mc); + return; + } + + if (!mc.player.isAlive() || mc.player.isRemoved() || mc.player.isDeadOrDying() || mc.screen instanceof DeathScreen) { + resetAll(mc); + return; + } + + pruneStaleLoops(mc); + refreshNearbyLucids(mc); + } + + private static void refreshNearbyLucids(Minecraft mc) { + List lucids = mc.level.getEntitiesOfClass( + LucidEntity.class, + mc.player.getBoundingBox().inflate(START_SCAN_RADIUS) + ); + + for (LucidEntity lucid : lucids) { + if (!lucid.shouldPlayAmbientLoop()) { + continue; + } + + LucidLoopSet set = ACTIVE_LOOPS.get(lucid.getUUID()); + if (set == null) { + set = new LucidLoopSet(lucid); + ACTIVE_LOOPS.put(lucid.getUUID(), set); + set.start(mc); + continue; + } + + set.refresh(mc, lucid); + } + } + + private static void pruneStaleLoops(Minecraft mc) { + Iterator> iterator = ACTIVE_LOOPS.entrySet().iterator(); + while (iterator.hasNext()) { + LucidLoopSet set = iterator.next().getValue(); + if (!set.isValid()) { + set.stop(mc); + iterator.remove(); + continue; + } + + if (!set.entity.shouldPlayAmbientLoop()) { + set.stop(mc); + iterator.remove(); + } + } + } + + private static void resetAll(Minecraft mc) { + for (LucidLoopSet set : ACTIVE_LOOPS.values()) { + set.stop(mc); + } + ACTIVE_LOOPS.clear(); + } + + private static final class LucidLoopSet { + private LucidEntity entity; + @Nullable private LucidLoopSound ambient; + @Nullable private LucidLoopSound flying; + private int lastAnimationState = -1; + + private LucidLoopSet(LucidEntity entity) { + this.entity = entity; + } + + private boolean isValid() { + return this.entity != null && this.entity.isAlive() && !this.entity.isRemoved(); + } + + private void start(Minecraft mc) { + this.playAttackSoundIfNeeded(mc, this.entity); + + if (this.ambient == null || !mc.getSoundManager().isActive(this.ambient)) { + this.ambient = new LucidLoopSound( + this.entity, + AntarchyNeoforgeSounds.LUCID_AMBIENT.get(), + SoundSource.HOSTILE, + 0.14F, + 0.97F, + true + ); + mc.getSoundManager().play(this.ambient); + } + + if (this.entity.shouldPlayFlyingLoop() && (this.flying == null || !mc.getSoundManager().isActive(this.flying))) { + this.flying = new LucidLoopSound( + this.entity, + AntarchyNeoforgeSounds.LUCID_FLYING.get(), + SoundSource.HOSTILE, + 0.18F, + 1.0F, + false + ); + mc.getSoundManager().play(this.flying); + } + } + + private void refresh(Minecraft mc, LucidEntity entity) { + this.entity = entity; + this.playAttackSoundIfNeeded(mc, entity); + + if (this.ambient == null || !mc.getSoundManager().isActive(this.ambient)) { + this.ambient = new LucidLoopSound( + entity, + AntarchyNeoforgeSounds.LUCID_AMBIENT.get(), + SoundSource.HOSTILE, + 0.14F, + 0.97F, + true + ); + mc.getSoundManager().play(this.ambient); + } else { + this.ambient.setEntity(entity); + } + + if (entity.shouldPlayFlyingLoop()) { + if (this.flying == null || !mc.getSoundManager().isActive(this.flying)) { + this.flying = new LucidLoopSound( + entity, + AntarchyNeoforgeSounds.LUCID_FLYING.get(), + SoundSource.HOSTILE, + 0.18F, + 1.0F, + false + ); + mc.getSoundManager().play(this.flying); + } else { + this.flying.setEntity(entity); + } + } else if (this.flying != null) { + mc.getSoundManager().stop(this.flying); + this.flying = null; + } + } + + private void stop(Minecraft mc) { + if (this.ambient != null) { + mc.getSoundManager().stop(this.ambient); + this.ambient = null; + } + if (this.flying != null) { + mc.getSoundManager().stop(this.flying); + this.flying = null; + } + this.lastAnimationState = -1; + } + + private void playAttackSoundIfNeeded(Minecraft mc, LucidEntity entity) { + int currentState = entity.getAnimationState(); + if (currentState == ANIM_ATTACK && this.lastAnimationState != ANIM_ATTACK) { + mc.getSoundManager().play(new LucidOneShotSound( + entity, + AntarchyNeoforgeSounds.LUCID_ATTACK.get(), + SoundSource.HOSTILE, + 1.0F, + 1.02F + entity.getRandom().nextFloat() * 0.08F + )); + } + this.lastAnimationState = currentState; + } + } + + private static final class LucidLoopSound extends AbstractTickableSoundInstance { + private LucidEntity entity; + private final boolean ambient; + + private LucidLoopSound(LucidEntity entity, SoundEvent soundEvent, SoundSource source, + float volume, float pitch, boolean ambient) { + super(soundEvent, source, RandomSource.create()); + this.entity = entity; + this.ambient = ambient; + this.looping = true; + this.delay = 0; + this.relative = false; + this.attenuation = SoundInstance.Attenuation.LINEAR; + this.volume = volume; + this.pitch = pitch; + this.x = entity.getX(); + this.y = entity.getY(); + this.z = entity.getZ(); + } + + private void setEntity(LucidEntity entity) { + this.entity = entity; + } + + @Override + public void tick() { + if (this.entity == null + || this.entity.isRemoved() + || this.entity.isDeadOrDying() + || this.entity.getAnimationState() == 3 + || !this.entity.shouldPlayAmbientLoop()) { + this.stop(); + return; + } + + if (!this.ambient && !this.entity.shouldPlayFlyingLoop()) { + this.stop(); + return; + } + + this.x = this.entity.getX(); + this.y = this.entity.getY(); + this.z = this.entity.getZ(); + } + + @Override + public boolean canStartSilent() { + return true; + } + } + + private static final class LucidOneShotSound extends AbstractTickableSoundInstance { + private LucidEntity entity; + + private LucidOneShotSound(LucidEntity entity, SoundEvent soundEvent, SoundSource source, + float volume, float pitch) { + super(soundEvent, source, RandomSource.create()); + this.entity = entity; + this.looping = false; + this.delay = 0; + this.relative = false; + this.attenuation = SoundInstance.Attenuation.LINEAR; + this.volume = volume; + this.pitch = pitch; + this.x = entity.getX(); + this.y = entity.getY(); + this.z = entity.getZ(); + } + + @Override + public void tick() { + if (this.entity == null + || this.entity.isRemoved() + || this.entity.isDeadOrDying() + || this.entity.getAnimationState() == ANIM_DEATH) { + this.stop(); + return; + } + + this.x = this.entity.getX(); + this.y = this.entity.getY(); + this.z = this.entity.getZ(); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/MogglesClientRenderer.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/MogglesClientRenderer.java new file mode 100644 index 00000000..6bbb1544 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/MogglesClientRenderer.java @@ -0,0 +1,62 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.item.MogglesCaveDetector; +import com.craisinlord.antarchy.content.item.MogglesLogic; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, bus = EventBusSubscriber.Bus.GAME, value = Dist.CLIENT) +public final class MogglesClientRenderer { + private MogglesClientRenderer() {} + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + Level level = mc.level; + if (player == null || level == null) return; + + if (!MogglesLogic.isWearingMoggles(player) || level.canSeeSky(player.blockPosition())) { + MogglesCaveDetector.clear(); + return; + } + + // Run cave BFS (internally rate-limited to every 40 ticks). + MogglesCaveDetector.tick(player, level); + + BlockPos target = MogglesCaveDetector.getCaveTarget(); + if (target == null) return; + + // Spawn particle trail toward the cave every 2 ticks. + if (level.getGameTime() % 2 != 0) return; + + Vec3 eye = player.getEyePosition(); + Vec3 end = Vec3.atCenterOf(target); + double totalDist = eye.distanceTo(end); + if (totalDist < 1.5) return; + + Vec3 dir = end.subtract(eye).normalize(); + + // Place up to 5 particles spaced evenly between 1.5 m ahead and the target. + int steps = Math.min(5, (int) (totalDist / 1.5)); + double spacing = (totalDist - 1.5) / Math.max(steps, 1); + + for (int i = 0; i < steps; i++) { + double t = 1.5 + i * spacing; + Vec3 p = eye.add(dir.scale(t)); + Vec3 vel = dir.scale(0.04); + level.addParticle(ParticleTypes.END_ROD, + p.x, p.y, p.z, + vel.x, vel.y, vel.z); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/NightmareCameraShakeHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/NightmareCameraShakeHandler.java new file mode 100644 index 00000000..beae8706 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/NightmareCameraShakeHandler.java @@ -0,0 +1,52 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import net.minecraft.client.Minecraft; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ViewportEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class NightmareCameraShakeHandler { + private static final double MAX_SHAKE_RANGE = 32.0D; + + private NightmareCameraShakeHandler() { + } + + @SubscribeEvent + public static void onComputeCameraAngles(ViewportEvent.ComputeCameraAngles event) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null || minecraft.player == null) { + return; + } + + Vec3 cameraPos = event.getCamera().getPosition(); + float shakeStrength = 0.0F; + + for (NightmareEntity nightmare : minecraft.level.getEntitiesOfClass( + NightmareEntity.class, + minecraft.player.getBoundingBox().inflate(MAX_SHAKE_RANGE), + nightmare -> nightmare.isAlive() && nightmare.isRoaring() + )) { + double distance = Math.sqrt(cameraPos.distanceToSqr(nightmare.position().add(0.0D, nightmare.getBbHeight() * 0.5D, 0.0D))); + if (distance > MAX_SHAKE_RANGE) { + continue; + } + + shakeStrength += (float) ((1.0D - distance / MAX_SHAKE_RANGE) * 1.35D); + } + + if (shakeStrength <= 0.0F) { + return; + } + + float time = (float) (minecraft.player.tickCount + event.getPartialTick()); + event.setYaw(event.getYaw() + Mth.sin(time * 1.85F) * shakeStrength * 1.8F); + event.setPitch(event.getPitch() + Mth.cos(time * 2.15F) * shakeStrength * 1.45F); + event.setRoll(event.getRoll() + Mth.sin(time * 2.65F) * shakeStrength * 1.05F); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedClientHandler.java new file mode 100644 index 00000000..1194323b --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedClientHandler.java @@ -0,0 +1,94 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.particles.BlockParticleOption; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.client.event.MovementInputUpdateEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class ParalyzedClientHandler { + + + private static final int PARTICLE_INTERVAL = 3; + + private static final int PARTICLES_PER_ENTITY = 4; + + private static final double PARTICLE_RADIUS = 24.0; + + private ParalyzedClientHandler() { + } + + + @SubscribeEvent + public static void onMovementInputUpdate(MovementInputUpdateEvent event) { + if (!event.getEntity().hasEffect(AntarchyNeoforgeMisc.PARALYZED)) { + return; + } + + var input = event.getInput(); + input.left = false; + input.right = false; + input.up = false; + input.down = false; + input.leftImpulse = 0.0F; + input.forwardImpulse = 0.0F; + input.jumping = false; + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null) { + return; + } + + Player player = mc.player; + if (player.hasEffect(AntarchyNeoforgeMisc.PARALYZED)) { + while (mc.options.keyAttack.consumeClick()) { } + while (mc.options.keyUse.consumeClick()) { } + } + if (player.tickCount % PARTICLE_INTERVAL != 0) { + return; + } + + ClientLevel level = mc.level; + level.getEntitiesOfClass( + LivingEntity.class, + player.getBoundingBox().inflate(PARTICLE_RADIUS), + entity -> entity != player + && entity.isAlive() + && entity.hasEffect(AntarchyNeoforgeMisc.PARALYZED) + ).forEach(entity -> spawnStoneParticles(level, entity)); + } + + private static void spawnStoneParticles(ClientLevel level, LivingEntity entity) { + BlockState stone = Blocks.STONE.defaultBlockState(); + BlockParticleOption particle = new BlockParticleOption(ParticleTypes.BLOCK, stone); + + float w = entity.getBbWidth(); + float h = entity.getBbHeight(); + + for (int i = 0; i < PARTICLES_PER_ENTITY; i++) { + double px = entity.getX() + (Math.random() - 0.5) * w; + double py = entity.getY() + Math.random() * h; + double pz = entity.getZ() + (Math.random() - 0.5) * w; + + double vx = (Math.random() - 0.5) * 0.08; + double vy = Math.random() * 0.06; + double vz = (Math.random() - 0.5) * 0.08; + + level.addParticle(particle, px, py, pz, vx, vy, vz); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedHudRenderer.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedHudRenderer.java new file mode 100644 index 00000000..4d131225 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedHudRenderer.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Player; + +public final class ParalyzedHudRenderer { + + private ParalyzedHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null || player.isDeadOrDying()) { + return; + } + + MobEffectInstance effect = player.getEffect(AntarchyNeoforgeMisc.PARALYZED); + if (effect == null) { + return; + } + + int duration = effect.getDuration(); + float fade = effect.isInfiniteDuration() + ? 1.0F + : Math.min(1.0F, Math.max(duration, 20) / 20.0F); + float pulse = 0.85F + 0.15F * Mth.sin(player.tickCount * ((float) Math.PI * 2.0F / 120.0F)); + + int alpha = Mth.clamp((int) (fade * pulse * 0xC0), 0, 0xFF); + + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); + int color = (alpha << 24) | 0x303030; + guiGraphics.fill(0, 0, width, height, color); + int innerAlpha = Mth.clamp(alpha / 3, 0, 0xFF); + int innerColor = (innerAlpha << 24) | 0x606060; + int margin = Math.min(width, height) / 6; + guiGraphics.fill(margin, margin, width - margin, height - margin, innerColor); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedStoneRenderHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedStoneRenderHandler.java new file mode 100644 index 00000000..bc57329f --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ParalyzedStoneRenderHandler.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import software.bernie.geckolib.event.GeoRenderEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class ParalyzedStoneRenderHandler { + + private ParalyzedStoneRenderHandler() { + } + @SubscribeEvent + public static void onCompileGeoEntityLayers(GeoRenderEvent.Entity.CompileRenderLayers event) { + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ReverieTrailHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ReverieTrailHandler.java new file mode 100644 index 00000000..8daed2f6 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ReverieTrailHandler.java @@ -0,0 +1,285 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexFormat; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import org.joml.Matrix4f; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.GAME) +public final class ReverieTrailHandler { + + private static final int MAX_TRAIL_POINTS = 20; + private static final int IDLE_LIFETIME_TICKS = 8; + private static final int NORMAL_LIFETIME_TICKS = 14; + private static final int DASH_LIFETIME_TICKS = 22; + private static final float CORE_LINE_WIDTH = 0.035f; + private static final float GLOW_LINE_WIDTH = 0.10f; + private static final double MIN_DISTANCE_BETWEEN_POINTS = 0.05; + private static final double DASH_DISTANCE_THRESHOLD = 0.35; + + private static final Map> TRAILS = new HashMap<>(); + + private ReverieTrailHandler() {} + + private static final class TrailPoint { + final Vec3 pos; + final ReverieEntity.Mood mood; + int age; + final int lifetime; + + TrailPoint(Vec3 pos, ReverieEntity.Mood mood, int lifetime) { + this.pos = pos; + this.mood = mood; + this.age = 0; + this.lifetime = lifetime; + } + + float progress() { + return lifetime <= 0 ? 1f : (float) age / (float) lifetime; + } + + boolean expired() { + return age >= lifetime; + } + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) { + TRAILS.clear(); + return; + } + if (mc.isPaused()) return; + + Set activeIds = new HashSet<>(); + + for (Entity entity : mc.level.entitiesForRendering()) { + if (!(entity instanceof ReverieEntity reverie)) continue; + + int id = reverie.getId(); + activeIds.add(id); + ReverieEntity.Mood mood = reverie.getMood(); + Vec3 pos = reverie.position().add(0.0, reverie.getBbHeight() * 0.5, 0.0); + + ArrayDeque points = TRAILS.computeIfAbsent(id, k -> new ArrayDeque<>()); + + if (points.isEmpty()) { + points.addFirst(new TrailPoint(pos, mood, lifetimeFor(mood, false))); + } else { + Vec3 lastPos = points.peekFirst().pos; + double distSq = pos.distanceToSqr(lastPos); + if (distSq >= MIN_DISTANCE_BETWEEN_POINTS * MIN_DISTANCE_BETWEEN_POINTS) { + boolean isDash = distSq >= DASH_DISTANCE_THRESHOLD * DASH_DISTANCE_THRESHOLD; + points.addFirst(new TrailPoint(pos, mood, lifetimeFor(mood, isDash))); + while (points.size() > MAX_TRAIL_POINTS) { + points.pollLast(); + } + } + } + + Iterator it = points.iterator(); + while (it.hasNext()) { + TrailPoint p = it.next(); + p.age++; + if (p.expired()) it.remove(); + } + } + + TRAILS.keySet().removeIf(id -> !activeIds.contains(id)); + } + + private static int lifetimeFor(ReverieEntity.Mood mood, boolean isDash) { + if (isDash || mood == ReverieEntity.Mood.PURPLE) return DASH_LIFETIME_TICKS; + if (mood == ReverieEntity.Mood.WHITE) return IDLE_LIFETIME_TICKS; + return NORMAL_LIFETIME_TICKS; + } + + @SubscribeEvent + public static void onRenderLevelStage(RenderLevelStageEvent event) { + if (event.getStage() != RenderLevelStageEvent.Stage.AFTER_PARTICLES) return; + if (TRAILS.isEmpty()) return; + + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) return; + + Camera camera = event.getCamera(); + Vec3 camPos = camera.getPosition(); + Matrix4f mat = event.getPoseStack().last().pose(); + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + + Tesselator tesselator = Tesselator.getInstance(); + + List> snapshots = new ArrayList<>(TRAILS.size()); + for (ArrayDeque deque : TRAILS.values()) { + if (deque.size() >= 2) snapshots.add(new ArrayList<>(deque)); + } + + if (snapshots.isEmpty()) { + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + return; + } + + BufferBuilder glowBuf = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) { + buildPass(glowBuf, mat, points, camPos, true); + } + MeshData glowMesh = glowBuf.build(); + if (glowMesh != null) { + BufferUploader.drawWithShader(glowMesh); + } + + BufferBuilder coreBuf = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (List points : snapshots) { + buildPass(coreBuf, mat, points, camPos, false); + } + MeshData coreMesh = coreBuf.build(); + if (coreMesh != null) { + BufferUploader.drawWithShader(coreMesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + } + + private static void buildPass(BufferBuilder buf, Matrix4f mat, List points, Vec3 camPos, boolean glow) { + int n = points.size(); + + for (int i = 0; i < n - 1; i++) { + TrailPoint newer = points.get(i); + TrailPoint older = points.get(i + 1); + + float alphaNearer = (glow ? glowAlpha(newer.mood) : coreAlpha(newer.mood)) * indexAlpha(i, n) * (1f - newer.progress()); + float alphaFarther = (glow ? glowAlpha(older.mood) : coreAlpha(older.mood)) * indexAlpha(i + 1, n) * (1f - older.progress()); + if (alphaNearer < 0.005f && alphaFarther < 0.005f) continue; + + Vec3 right = cameraFacingRight(newer.pos, older.pos, camPos); + if (right == null) continue; + + float halfWidth = glow ? glowHalfWidth(newer.mood) : coreHalfWidth(newer.mood); + right = right.scale(halfWidth); + + float[] cn = color(newer.mood); + float[] co = color(older.mood); + Vec3 na = newer.pos.subtract(camPos); + Vec3 nb = older.pos.subtract(camPos); + + buf.addVertex(mat, (float)(na.x + right.x), (float)(na.y + right.y), (float)(na.z + right.z)).setColor(cn[0], cn[1], cn[2], alphaNearer); + buf.addVertex(mat, (float)(na.x - right.x), (float)(na.y - right.y), (float)(na.z - right.z)).setColor(cn[0], cn[1], cn[2], alphaNearer); + buf.addVertex(mat, (float)(nb.x - right.x), (float)(nb.y - right.y), (float)(nb.z - right.z)).setColor(co[0], co[1], co[2], alphaFarther); + buf.addVertex(mat, (float)(nb.x + right.x), (float)(nb.y + right.y), (float)(nb.z + right.z)).setColor(co[0], co[1], co[2], alphaFarther); + } + } + + private static Vec3 cameraFacingRight(Vec3 a, Vec3 b, Vec3 camPos) { + Vec3 segDir = b.subtract(a); + if (segDir.lengthSqr() < 1e-12) return null; + segDir = segDir.normalize(); + Vec3 mid = a.add(b).scale(0.5); + Vec3 toCamera = camPos.subtract(mid); + if (toCamera.lengthSqr() < 1e-12) return null; + toCamera = toCamera.normalize(); + Vec3 right = segDir.cross(toCamera); + if (right.lengthSqr() < 1e-10) { + right = segDir.cross(new Vec3(0.0, 1.0, 0.0)); + if (right.lengthSqr() < 1e-10) return null; + } + return right.normalize(); + } + + private static float indexAlpha(int i, int n) { + if (n <= 1) return 1f; + return 1f - (float) i / (float) (n - 1); + } + + private static final float[] COLOR_WHITE = { 1.0f, 1.0f, 1.0f }; + private static final float[] COLOR_YELLOW = { 1.0f, 0.85f, 0.1f }; + private static final float[] COLOR_RED = { 1.0f, 0.1f, 0.05f }; + private static final float[] COLOR_PURPLE = { 0.7f, 0.1f, 1.0f }; + private static final float[] COLOR_BLUE = { 0.1f, 0.5f, 1.0f }; + + private static float[] color(ReverieEntity.Mood mood) { + return switch (mood) { + case WHITE -> COLOR_WHITE; + case YELLOW -> COLOR_YELLOW; + case RED -> COLOR_RED; + case PURPLE -> COLOR_PURPLE; + case BLUE -> COLOR_BLUE; + }; + } + + private static float glowAlpha(ReverieEntity.Mood mood) { + return switch (mood) { + case WHITE -> 0.15f; + case YELLOW -> 0.30f; + case RED -> 0.55f; + case PURPLE -> 0.65f; + case BLUE -> 0.35f; + }; + } + + private static float coreAlpha(ReverieEntity.Mood mood) { + return switch (mood) { + case WHITE -> 0.35f; + case YELLOW -> 0.55f; + case RED -> 0.85f; + case PURPLE -> 0.95f; + case BLUE -> 0.60f; + }; + } + + private static float glowHalfWidth(ReverieEntity.Mood mood) { + float base = GLOW_LINE_WIDTH * 0.5f; + return switch (mood) { + case WHITE -> base * 0.60f; + case YELLOW -> base * 0.80f; + case RED -> base * 1.00f; + case PURPLE -> base * 1.25f; + case BLUE -> base * 0.90f; + }; + } + + private static float coreHalfWidth(ReverieEntity.Mood mood) { + float base = CORE_LINE_WIDTH * 0.5f; + return switch (mood) { + case WHITE -> base * 0.60f; + case YELLOW -> base * 0.80f; + case RED -> base * 1.20f; + case PURPLE -> base * 1.50f; + case BLUE -> base * 1.00f; + }; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ScorpionWhipTetherRenderHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ScorpionWhipTetherRenderHandler.java new file mode 100644 index 00000000..ab912c04 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ScorpionWhipTetherRenderHandler.java @@ -0,0 +1,152 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexFormat; +import java.util.Map; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import org.joml.Matrix4f; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.GAME) +public final class ScorpionWhipTetherRenderHandler { + private ScorpionWhipTetherRenderHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + ScorpionWhipTetherClientState.clear(); + } + } + + @SubscribeEvent + public static void onRenderLevelStage(RenderLevelStageEvent event) { + if (event.getStage() != RenderLevelStageEvent.Stage.AFTER_PARTICLES) { + return; + } + + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + return; + } + + Map tethers = ScorpionWhipTetherClientState.snapshot(); + if (tethers.isEmpty()) { + return; + } + + Camera camera = event.getCamera(); + Vec3 cameraPos = camera.getPosition(); + Matrix4f pose = event.getPoseStack().last().pose(); + + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.depthMask(false); + RenderSystem.disableCull(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + + BufferBuilder buffer = Tesselator.getInstance().begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + for (Map.Entry entry : tethers.entrySet()) { + Entity source = minecraft.level.getEntity(entry.getKey()); + Entity target = minecraft.level.getEntity(entry.getValue()); + if (!(source instanceof Player player) || target == null || target.isRemoved()) { + continue; + } + + buildTether( + buffer, + pose, + tetherStart(player, event.getPartialTick().getGameTimeDeltaPartialTick(false)), + target.position().add(0.0D, target.getBbHeight() * 0.5D, 0.0D), + cameraPos + ); + } + + MeshData mesh = buffer.build(); + if (mesh != null) { + BufferUploader.drawWithShader(mesh); + } + + RenderSystem.enableCull(); + RenderSystem.depthMask(true); + RenderSystem.disableBlend(); + } + + private static Vec3 tetherStart(Player player, float partialTick) { + Vec3 start = player.getEyePosition(partialTick).add(0.0D, -0.45D, 0.0D); + boolean mainHandWhip = player.getMainHandItem().getItem() instanceof ScorpionWhipItem; + boolean offHandWhip = player.getOffhandItem().getItem() instanceof ScorpionWhipItem; + if (!mainHandWhip && !offHandWhip) { + return start; + } + + boolean useMainHand = mainHandWhip || !offHandWhip; + HumanoidArm arm = useMainHand ? player.getMainArm() : player.getMainArm().getOpposite(); + float bodyYaw = Mth.rotLerp(partialTick, player.yBodyRotO, player.yBodyRot); + double radians = Math.toRadians(bodyYaw + 90.0F); + double side = arm == HumanoidArm.RIGHT ? -0.28D : 0.28D; + return start.add(Math.cos(radians) * side, -0.12D, Math.sin(radians) * side); + } + + private static void buildTether(BufferBuilder buffer, Matrix4f pose, Vec3 start, Vec3 end, Vec3 cameraPos) { + Vec3 delta = end.subtract(start); + double length = delta.length(); + if (length < 0.001D) { + return; + } + + Vec3 forward = delta.scale(1.0D / length); + Vec3 right = forward.cross(new Vec3(0.0D, 1.0D, 0.0D)); + if (right.lengthSqr() < 1.0E-6D) { + right = forward.cross(new Vec3(1.0D, 0.0D, 0.0D)); + } + right = right.normalize(); + + int segments = Math.max(16, Mth.ceil(length * 8.0D)); + for (int i = 0; i < segments; i++) { + double t0 = (double) i / (double) segments; + double t1 = (double) (i + 1) / (double) segments; + Vec3 p0 = ropePoint(start, delta, t0, length); + Vec3 p1 = ropePoint(start, delta, t1, length); + float width = 0.045F; + Vec3 offset = right.scale(width); + + Vec3 a = p0.subtract(cameraPos); + Vec3 b = p1.subtract(cameraPos); + float shade = i % 2 == 0 ? 0.82F : 0.62F; + float red = 0.36F * shade; + float green = 0.20F * shade; + float blue = 0.11F * shade; + + buffer.addVertex(pose, (float) (a.x + offset.x), (float) (a.y + offset.y), (float) (a.z + offset.z)).setColor(red, green, blue, 1.0F); + buffer.addVertex(pose, (float) (a.x - offset.x), (float) (a.y - offset.y), (float) (a.z - offset.z)).setColor(red, green, blue, 1.0F); + buffer.addVertex(pose, (float) (b.x - offset.x), (float) (b.y - offset.y), (float) (b.z - offset.z)).setColor(red, green, blue, 1.0F); + buffer.addVertex(pose, (float) (b.x + offset.x), (float) (b.y + offset.y), (float) (b.z + offset.z)).setColor(red, green, blue, 1.0F); + } + } + + private static Vec3 ropePoint(Vec3 start, Vec3 delta, double t, double length) { + double sag = Math.sin(t * Math.PI) * Math.min(0.45D, length * 0.07D); + return start.add(delta.scale(t)).add(0.0D, -sag, 0.0D); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ThoraxisGravityCameraHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ThoraxisGravityCameraHandler.java new file mode 100644 index 00000000..c4d43628 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/ThoraxisGravityCameraHandler.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ViewportEvent; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class ThoraxisGravityCameraHandler { + private ThoraxisGravityCameraHandler() { + } + + @SubscribeEvent + public static void onComputeCameraAngles(ViewportEvent.ComputeCameraAngles event) { + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/TriffidGooHudRenderer.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/TriffidGooHudRenderer.java new file mode 100644 index 00000000..d76a9984 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/TriffidGooHudRenderer.java @@ -0,0 +1,45 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeBlocks; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.Block; + +public final class TriffidGooHudRenderer { + private TriffidGooHudRenderer() { + } + private static float fadeProgress = 0f; + private static final float FADE_SPEED = 0.05f; + private static final int MAX_ALPHA = 0x55; + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + if (player == null || player.isDeadOrDying()) { + fadeProgress = Math.max(0f, fadeProgress - FADE_SPEED); + if (fadeProgress <= 0f) return; + } else { + Block goo = AntarchyNeoforgeBlocks.TRIFFID_GOO_BLOCK.get(); + BlockPos feet = player.blockPosition(); + boolean inGoo = player.level().getBlockState(feet).is(goo) + || player.level().getBlockState(feet.above()).is(goo); + + if (inGoo) { + fadeProgress = Math.min(1f, fadeProgress + FADE_SPEED); + } else { + fadeProgress = Math.max(0f, fadeProgress - FADE_SPEED); + } + + if (fadeProgress <= 0f || minecraft.screen != null) return; + } + + int alpha = Mth.floor(MAX_ALPHA * fadeProgress); + int color = (alpha << 24) | 0x003300; + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + guiGraphics.fill(0, 0, width, height, color); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/WaspSoundHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/WaspSoundHandler.java new file mode 100644 index 00000000..fef0c034 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/WaspSoundHandler.java @@ -0,0 +1,119 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeSounds; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.UUID; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import org.jetbrains.annotations.Nullable; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class WaspSoundHandler { + private static final double START_SCAN_RADIUS = 96.0D; + private static final Map ACTIVE_LOOPS = new HashMap<>(); + + private WaspSoundHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + // Ambient buzzing now comes from the wasp entity itself. + } + + private static void refreshNearbyWasps(Minecraft mc) { + for (WaspEntity wasp : mc.level.getEntitiesOfClass(WaspEntity.class, mc.player.getBoundingBox().inflate(START_SCAN_RADIUS))) { + WaspLoopSound loopSound = ACTIVE_LOOPS.get(wasp.getUUID()); + if (loopSound == null || !mc.getSoundManager().isActive(loopSound)) { + loopSound = new WaspLoopSound( + wasp, + AntarchyNeoforgeSounds.WASP_IDLE.get(), + SoundSource.HOSTILE, + 0.12F, + 1.0F + ); + ACTIVE_LOOPS.put(wasp.getUUID(), loopSound); + mc.getSoundManager().play(loopSound); + } else { + loopSound.setEntity(wasp); + } + } + } + + private static void pruneStaleLoops(Minecraft mc) { + Iterator> iterator = ACTIVE_LOOPS.entrySet().iterator(); + while (iterator.hasNext()) { + WaspLoopSound loopSound = iterator.next().getValue(); + if (!loopSound.isValid()) { + loopSound.stop(mc); + iterator.remove(); + } + } + } + + private static void resetAll(Minecraft mc) { + for (WaspLoopSound loopSound : ACTIVE_LOOPS.values()) { + loopSound.stop(mc); + } + ACTIVE_LOOPS.clear(); + } + + private static final class WaspLoopSound extends AbstractTickableSoundInstance { + @Nullable + private WaspEntity entity; + + private WaspLoopSound(WaspEntity entity, SoundEvent soundEvent, SoundSource source, float volume, float pitch) { + super(soundEvent, source, RandomSource.create()); + this.entity = entity; + this.looping = true; + this.delay = 0; + this.relative = false; + this.attenuation = SoundInstance.Attenuation.LINEAR; + this.volume = volume; + this.pitch = pitch; + this.x = entity.getX(); + this.y = entity.getY(); + this.z = entity.getZ(); + } + + private void setEntity(WaspEntity entity) { + this.entity = entity; + } + + private boolean isValid() { + return this.entity != null && this.entity.isAlive() && !this.entity.isRemoved(); + } + + private void stop(Minecraft mc) { + mc.getSoundManager().stop(this); + } + + @Override + public void tick() { + if (this.entity == null || this.entity.isRemoved() || this.entity.isDeadOrDying() || !this.entity.isAlive()) { + this.stop(); + return; + } + + this.x = this.entity.getX(); + this.y = this.entity.getY(); + this.z = this.entity.getZ(); + } + + @Override + public boolean canStartSilent() { + return true; + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluid.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluid.java new file mode 100644 index 00000000..61d1829a --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluid.java @@ -0,0 +1,460 @@ +package com.craisinlord.antarchy.neoforge.content.fluid; + +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeBlocks; +import java.util.HashSet; +import java.util.Set; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.Vec3; +import net.neoforged.neoforge.common.NeoForgeMod; +import net.neoforged.neoforge.event.EventHooks; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; + +public abstract class AntiwaterFluid extends BaseFlowingFluid { + private static final int MAX_HORIZONTAL_SPREAD_AMOUNT = 5; + private static final int MAX_VERTICAL_FLOW_AMOUNT = 7; + + protected AntiwaterFluid(Properties properties) { + super(properties); + } + + @Override + protected BlockState createLegacyBlock(FluidState state) { + return AntarchyNeoforgeBlocks.ANTIWATER_BLOCK.get() + .defaultBlockState() + .setValue(LiquidBlock.LEVEL, getLegacyLevel(state)); + } + + @Override + public Vec3 getFlow(BlockGetter level, BlockPos pos, FluidState state) { + double flowX = 0.0D; + double flowZ = 0.0D; + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos neighborPos = pos.relative(direction); + FluidState neighborFluid = level.getFluidState(neighborPos); + int neighborAmount = this.isSame(neighborFluid.getType()) ? neighborFluid.getAmount() : 0; + int currentAmount = state.getAmount(); + int delta = neighborAmount - currentAmount; + if (delta != 0) { + flowX += direction.getStepX() * delta; + flowZ += direction.getStepZ() * delta; + } + } + + Vec3 flow = new Vec3(flowX, 1.0D, flowZ); + return flow.lengthSqr() < 1.0E-6D ? new Vec3(0.0D, 1.0D, 0.0D) : flow.normalize(); + } + + @Override + protected boolean canConvertToSource(Level level) { + return false; + } + + @Override + public int getTickDelay(LevelReader level) { + return 5; + } + + @Override + protected int getSpreadDelay(Level level, BlockPos pos, FluidState currentState, FluidState newState) { + return this.getTickDelay(level); + } + + @Override + protected boolean canBeReplacedWith(FluidState state, BlockGetter level, BlockPos pos, Fluid fluid, Direction direction) { + return direction != Direction.DOWN && !this.isSame(fluid); + } + + @Override + protected boolean canSpreadTo( + BlockGetter level, + BlockPos fromPos, + BlockState fromState, + Direction direction, + BlockPos toPos, + BlockState toState, + FluidState toFluidState, + Fluid fluid + ) { + if (direction == Direction.DOWN) { + return false; + } + + return super.canSpreadTo(level, fromPos, fromState, direction, toPos, toState, toFluidState, fluid); + } + + @Override + protected FluidState getNewLiquid(Level level, BlockPos pos, BlockState blockState) { + FluidState currentState = blockState.getFluidState(); + if (!currentState.isSource() && !this.isFlowingStateValid(level, pos, currentState)) { + return Fluids.EMPTY.defaultFluidState(); + } + + if (this.canCreateSourceAt(level, pos)) { + return this.getSource(false); + } + + if (this.isValidVerticalSupport(level, pos)) { + return this.getFlowing(MAX_VERTICAL_FLOW_AMOUNT, false); + } + + int bestNeighborAmount = this.getBestHorizontalNeighborAmount(level, pos); + if (bestNeighborAmount > 1) { + return this.getFlowing(bestNeighborAmount - 1, false); + } + + return net.minecraft.world.level.material.Fluids.EMPTY.defaultFluidState(); + } + + /* + @Override + protected void spread(Level level, BlockPos pos, FluidState state) { + if (state.isEmpty()) { + return; + } + if (!state.isSource() && !this.isFlowingStateValid(level, pos, state)) { + level.setBlockAndUpdate(pos, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()); + this.scheduleCleanup(level, pos); + return; + } + + BlockState blockState = level.getBlockState(pos); + int nextAmount = state.getAmount() - 1; + + BlockPos abovePos = pos.above(); + BlockState aboveState = level.getBlockState(abovePos); + FluidState aboveFluid = level.getFluidState(abovePos); + + if (!aboveState.isSolid() && !aboveFluid.getType().isSame(this)) { + FluidState upwardState = this.getFlowing(8, false); + if (this.canSpreadTo(level, pos, blockState, Direction.UP, abovePos, aboveState, aboveFluid, upwardState.getType())) { + this.spreadTo(level, abovePos, aboveState, Direction.UP, upwardState); + } + } + + if (!this.canHangAt(level, pos)) { + return; + } + + if (nextAmount <= 0) { + return; + } + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos targetPos = pos.relative(direction); + BlockState targetState = level.getBlockState(targetPos); + FluidState targetFluid = targetState.getFluidState(); + if (!this.canSpreadHorizontallyInto(level, targetPos)) { + continue; + } + + FluidState horizontalState = this.getFlowing(Math.min(nextAmount, MAX_HORIZONTAL_SPREAD_AMOUNT), false); + if (!this.canSpreadTo(level, pos, blockState, direction, targetPos, targetState, targetFluid, horizontalState.getType())) { + continue; + } + + this.spreadTo(level, targetPos, targetState, direction, horizontalState); + } + } + */ + + @Override + protected void spread(Level level, BlockPos pos, FluidState state) { + if (state.isEmpty()) { + return; + } + + if (!state.isSource() && !this.isFlowingStateValid(level, pos, state)) { + level.setBlockAndUpdate(pos, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()); + this.scheduleCleanup(level, pos); + return; + } + + BlockState blockState = level.getBlockState(pos); + this.spreadUpward(level, pos, state, blockState); + + if (!this.canHangAt(level, pos)) { + return; + } + + int nextAmount = state.getAmount() - 1; + if (nextAmount <= 0) { + return; + } + + this.spreadHorizontally(level, pos, blockState, nextAmount); + } + + @Override + protected int getSlopeFindDistance(LevelReader level) { + return 4; + } + + @Override + public void tick(Level level, BlockPos pos, FluidState state) { + if (!state.isSource() && !this.isFlowingStateValid(level, pos, state)) { + level.setBlockAndUpdate(pos, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()); + this.scheduleDependentCleanup(level, pos); + return; + } + + super.tick(level, pos, state); + } + + private boolean hasCeiling(Level level, BlockPos pos) { + return level.getBlockState(pos.above()).isSolid(); + } + + private boolean canHangAt(Level level, BlockPos pos) { + return this.hasCeiling(level, pos); + } + + private boolean hasHorizontalSupport(Level level, BlockPos pos) { + FluidState state = level.getFluidState(pos); + if (!this.isAntiwater(state)) { + return false; + } + + int currentAmount = state.getAmount(); + for (Direction direction : Direction.Plane.HORIZONTAL) { + FluidState neighbor = level.getFluidState(pos.relative(direction)); + if (!this.isAntiwater(neighbor)) { + continue; + } + + if (this.getHorizontalSpreadAmount(neighbor) > currentAmount) { + return true; + } + } + + return false; + } + + private boolean canSpreadHorizontallyInto(Level level, BlockPos pos) { + return true; + } + + private int getBestHorizontalNeighborAmount(Level level, BlockPos pos) { + int bestAmount = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos neighborPos = pos.relative(direction); + FluidState neighborFluid = level.getFluidState(neighborPos); + if (neighborFluid.isEmpty() || !neighborFluid.getType().isSame(this)) { + continue; + } + + if (!this.hasSourceConnection(level, neighborPos, neighborFluid, new HashSet<>())) { + continue; + } + + bestAmount = Math.max(bestAmount, this.getHorizontalSpreadAmount(neighborFluid)); + } + + return bestAmount; + } + + private int getHorizontalSpreadAmount(FluidState state) { + if (state.isSource() || this.isValidVerticalSupportState(state)) { + return MAX_HORIZONTAL_SPREAD_AMOUNT + 1; + } + + return state.getAmount(); + } + + private boolean isValidVerticalSupportState(FluidState state) { + return this.isAntiwater(state) && !state.isSource() && state.getAmount() >= MAX_VERTICAL_FLOW_AMOUNT; + } + + private boolean isFlowingStateValid(Level level, BlockPos pos, FluidState state) { + return state.isSource() + || this.hasImmediateVerticalSupport(level, pos) + || this.hasHorizontalSupport(level, pos); + } + + private boolean canCreateSourceAt(Level level, BlockPos pos) { + if (!this.canHangAt(level, pos)) { + return false; + } + + int sourceNeighbors = 0; + for (Direction direction : Direction.Plane.HORIZONTAL) { + FluidState neighbor = level.getFluidState(pos.relative(direction)); + if (this.isAntiwater(neighbor) && neighbor.isSource()) { + sourceNeighbors++; + if (sourceNeighbors >= 2) { + return true; + } + } + } + + return false; + } + + private boolean isValidVerticalSupport(Level level, BlockPos pos) { + return this.hasImmediateVerticalSupport(level, pos); + } + + private boolean isAntiwater(FluidState state) { + return !state.isEmpty() && state.getType().isSame(this); + } + + private boolean hasImmediateVerticalSupport(Level level, BlockPos pos) { + FluidState below = level.getFluidState(pos.below()); + return this.isAntiwater(below); + } + + private void spreadUpward(Level level, BlockPos pos, FluidState state, BlockState blockState) { + BlockPos abovePos = pos.above(); + BlockState aboveState = level.getBlockState(abovePos); + FluidState aboveFluid = level.getFluidState(abovePos); + + // Antiwater flowing into water solidifies rather than displacing it + if (aboveFluid.getFluidType() == NeoForgeMod.WATER_TYPE.value()) { + BlockState result = state.isSource() + ? AntarchyNeoforgeBlocks.ANTIMETAL.get().defaultBlockState() + : AntarchyNeoforgeBlocks.NYXITE.get().defaultBlockState(); + level.setBlockAndUpdate(pos, EventHooks.fireFluidPlaceBlockEvent(level, pos, pos, result)); + level.levelEvent(1501, pos, 0); + return; + } + + FluidState upwardState = this.getFlowing(MAX_VERTICAL_FLOW_AMOUNT, false); + + if (!this.canSpreadTo(level, pos, blockState, Direction.UP, abovePos, aboveState, aboveFluid, upwardState.getType())) { + return; + } + + if (aboveFluid.getType().isSame(this) && aboveFluid.getAmount() >= upwardState.getAmount()) { + return; + } + + this.spreadTo(level, abovePos, aboveState, Direction.UP, upwardState); + } + + private void spreadHorizontally(Level level, BlockPos pos, BlockState blockState, int nextAmount) { + FluidState horizontalState = this.getFlowing(Math.min(nextAmount, MAX_HORIZONTAL_SPREAD_AMOUNT), false); + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos targetPos = pos.relative(direction); + BlockState targetState = level.getBlockState(targetPos); + FluidState targetFluid = targetState.getFluidState(); + if (!this.canSpreadHorizontallyInto(level, targetPos)) { + continue; + } + + if (targetFluid.getType().isSame(this) && targetFluid.getAmount() >= horizontalState.getAmount()) { + continue; + } + + if (!this.canSpreadTo(level, pos, blockState, direction, targetPos, targetState, targetFluid, horizontalState.getType())) { + continue; + } + + this.spreadTo(level, targetPos, targetState, direction, horizontalState); + } + } + + private boolean hasSourceConnection(Level level, BlockPos pos, FluidState state, Set visited) { + if (!this.isAntiwater(state)) { + return false; + } + + if (state.isSource()) { + return true; + } + + if (!visited.add(pos)) { + return false; + } + + FluidState below = level.getFluidState(pos.below()); + if (this.hasSourceConnection(level, pos.below(), below, visited)) { + return true; + } + + int currentAmount = state.getAmount(); + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos neighborPos = pos.relative(direction); + FluidState neighbor = level.getFluidState(neighborPos); + if (!this.isAntiwater(neighbor)) { + continue; + } + + if (this.getHorizontalSpreadAmount(neighbor) <= currentAmount) { + continue; + } + + if (this.hasSourceConnection(level, neighborPos, neighbor, visited)) { + return true; + } + } + + return false; + } + + private void scheduleCleanup(Level level, BlockPos pos) { + int tickDelay = this.getTickDelay(level); + level.scheduleTick(pos, this, tickDelay); + level.scheduleTick(pos.above(), this, tickDelay); + level.scheduleTick(pos.below(), this, tickDelay); + for (Direction direction : Direction.Plane.HORIZONTAL) { + level.scheduleTick(pos.relative(direction), this, tickDelay); + } + } + + private void scheduleDependentCleanup(Level level, BlockPos pos) { + int tickDelay = this.getTickDelay(level); + level.scheduleTick(pos.above(), this, tickDelay); + for (Direction direction : Direction.Plane.HORIZONTAL) { + level.scheduleTick(pos.relative(direction), this, tickDelay); + } + } + + public static final class Source extends AntiwaterFluid { + public Source(Properties properties) { + super(properties); + } + + @Override + public int getAmount(FluidState state) { + return 8; + } + + @Override + public boolean isSource(FluidState state) { + return true; + } + } + + public static final class Flowing extends AntiwaterFluid { + public Flowing(Properties properties) { + super(properties); + this.registerDefaultState(this.getStateDefinition().any().setValue(LEVEL, 7)); + } + + @Override + protected void createFluidStateDefinition(net.minecraft.world.level.block.state.StateDefinition.Builder builder) { + super.createFluidStateDefinition(builder); + builder.add(LEVEL); + } + + @Override + public int getAmount(FluidState state) { + return state.getValue(LEVEL); + } + + @Override + public boolean isSource(FluidState state) { + return false; + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluidType.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluidType.java new file mode 100644 index 00000000..20c08c9d --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluidType.java @@ -0,0 +1,76 @@ +package com.craisinlord.antarchy.neoforge.content.fluid; + +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.Vec3; +import net.neoforged.neoforge.fluids.FluidType; + +public class AntiwaterFluidType extends FluidType { + + public AntiwaterFluidType(Properties properties) { + super(properties); + } + + + @Override + public boolean move(FluidState state, LivingEntity entity, Vec3 movementVector, double gravity) { + double prevY = entity.getY(); + float swimSpeed = entity.isSprinting() ? 0.026F : 0.02F; + + entity.moveRelative(swimSpeed, movementVector); + entity.move(MoverType.SELF, entity.getDeltaMovement()); + + Vec3 motion = entity.getDeltaMovement(); + if (entity.horizontalCollision && entity.onClimbable()) { + motion = new Vec3(motion.x, 0.2, motion.z); + } + + AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(entity); + Vec3 worldMotion = gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecPlayerToWorld(motion, gravityDirection) + : motion; + + double drag = entity.isSwimming() ? 0.9 : 0.8; + worldMotion = worldMotion.scale(drag); + boolean isFlying = entity instanceof Player p && p.getAbilities().flying; + if (!isFlying) { + worldMotion = worldMotion.add(0.0D, 0.005D, 0.0D); + } + + entity.setDeltaMovement( + gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecWorldToPlayer(worldMotion, gravityDirection) + : worldMotion + ); + if (entity.horizontalCollision && entity.isFree( + worldMotion.x, + worldMotion.y + 0.6 - entity.getY() + prevY, + worldMotion.z)) { + Vec3 boostedWorldMotion = new Vec3(worldMotion.x, 0.3D, worldMotion.z); + entity.setDeltaMovement( + gravityDirection.isInverted() + ? AntarchyGravityRotationUtil.vecWorldToPlayer(boostedWorldMotion, gravityDirection) + : boostedWorldMotion + ); + } + + return true; + } + + + @Override + public void setItemMovement(ItemEntity entity) { + Vec3 vec3 = entity.getDeltaMovement(); + entity.setDeltaMovement( + vec3.x * 0.99, + vec3.y + (vec3.y < 0.06 ? 5.0E-4 : 0.0), + vec3.z * 0.99 + ); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartEntity.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartEntity.java new file mode 100644 index 00000000..554ec3ed --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartEntity.java @@ -0,0 +1,195 @@ +package com.craisinlord.antarchy.neoforge.entity.multipart; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; +import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework; +import com.craisinlord.antarchy.content.entity.multipart.MultipartPartAccess; +import com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.OwnableEntity; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; +import net.neoforged.neoforge.entity.PartEntity; +import org.jetbrains.annotations.Nullable; + +public class MultipartPartEntity extends PartEntity implements OwnableEntity, MultipartPartAccess { + private final MultipartEntityOwner owner; + private final int partIndex; + private final MultipartPartDefinition definition; + + public MultipartPartEntity(Entity parent, MultipartEntityOwner owner, int partIndex, MultipartPartDefinition definition) { + super(parent); + this.owner = owner; + this.partIndex = partIndex; + this.definition = definition; + this.setNoGravity(true); + this.refreshDimensions(); + this.antarchy$syncFromParent(); + } + + public int getPartIndex() { + return this.partIndex; + } + + public String getPartName() { + return this.definition.name(); + } + + public float getDamageMultiplier() { + return this.definition.damageMultiplier(); + } + + public MultipartPartDefinition getPartDefinition() { + return this.definition; + } + + @Override + public @Nullable java.util.UUID getOwnerUUID() { + Entity parent = this.getParent(); + return parent instanceof OwnableEntity ownable ? ownable.getOwnerUUID() : null; + } + + @Override + public EntityDimensions getDimensions(Pose pose) { + return EntityDimensions.scalable(this.definition.width(), this.definition.height()); + } + + @Override + public void antarchy$syncFromParent() { + Entity parent = this.getParent(); + if (parent == null || parent.isRemoved()) { + return; + } + + double oldX = this.getX(); + double oldY = this.getY(); + double oldZ = this.getZ(); + double yawRadians = Math.toRadians(parent.getYRot()); + Vec3 forward = new Vec3(-Math.sin(yawRadians), 0.0D, Math.cos(yawRadians)); + Vec3 right = new Vec3(forward.z, 0.0D, -forward.x); + Vec3 position = new Vec3( + parent.getX() + forward.x * this.definition.forwardOffset() + right.x * this.definition.lateralOffset(), + parent.getY() + this.definition.yOffset(), + parent.getZ() + forward.z * this.definition.forwardOffset() + right.z * this.definition.lateralOffset() + ); + this.setPos(position.x, position.y, position.z); + this.setRot(parent.getYRot(), parent.getXRot()); + this.xo = oldX; + this.yo = oldY; + this.zo = oldZ; + this.xOld = oldX; + this.yOld = oldY; + this.zOld = oldZ; + } + + @Override + public boolean is(Entity entity) { + return entity == this || entity == this.getParent(); + } + + @Override + public boolean isPickable() { + return true; + } + + @Override + public boolean isAttackable() { + return true; + } + + @Override + public boolean isPushable() { + return false; + } + + @Override + public boolean canBeCollidedWith() { + // Always true so player melee raycasts (ProjectileUtil.getEntityHitResult) can find this part. + // Physical push is prevented separately via isPushable()=false and canCollideWith()=false. + return !this.isRemoved(); + } + + @Override + public boolean canCollideWith(Entity entity) { + if (!this.definition.collisionEnabled()) { + return false; + } + + Entity parent = this.getParent(); + if (entity == parent) { + return false; + } + + if (entity instanceof PartEntity otherPart && otherPart.getParent() == parent) { + return false; + } + + return entity.canBeCollidedWith() && !this.isPassengerOfSameVehicle(entity); + } + + @Override + public boolean shouldBeSaved() { + return false; + } + + @Override + public ItemStack getPickResult() { + Entity parent = this.getParent(); + return parent == null ? ItemStack.EMPTY : parent.getPickResult(); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + Entity parent = this.getParent(); + if (parent == null || parent.isRemoved()) { + return false; + } + + if (this.level().isClientSide()) { + if (source.getEntity() instanceof Player) { + MultipartFramework.sendMultipartAttack(parent.getUUID(), this.partIndex, amount * this.definition.damageMultiplier()); + } + return true; + } + + return this.owner.antarchy$hurtMultipartPart(this, source, amount * this.definition.damageMultiplier()); + } + + @Override + public boolean isInvulnerableTo(DamageSource source) { + return false; + } + + @Override + public InteractionResult interactAt(Player player, Vec3 vec, InteractionHand hand) { + Entity parent = this.getParent(); + if (parent == null || parent.isRemoved()) { + return InteractionResult.PASS; + } + + if (this.level().isClientSide()) { + MultipartFramework.sendMultipartInteract(parent.getUUID(), this.partIndex, hand.ordinal()); + return InteractionResult.SUCCESS; + } + + return this.owner.antarchy$interactMultipartPart(this, player, vec, hand); + } + + @Override + protected void defineSynchedData(net.minecraft.network.syncher.SynchedEntityData.Builder builder) { + } + + @Override + protected void readAdditionalSaveData(CompoundTag tag) { + } + + @Override + protected void addAdditionalSaveData(CompoundTag tag) { + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartLevelRegistry.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartLevelRegistry.java new file mode 100644 index 00000000..19141c45 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartLevelRegistry.java @@ -0,0 +1,64 @@ +package com.craisinlord.antarchy.neoforge.entity.multipart; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; +import com.craisinlord.antarchy.neoforge.mixins.level.ClientLevelPartEntitiesAccessor; +import com.craisinlord.antarchy.neoforge.mixins.level.ServerLevelPartEntitiesAccessor; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.neoforged.neoforge.entity.PartEntity; + +public final class MultipartPartLevelRegistry { + private MultipartPartLevelRegistry() { + } + + public static void register(MultipartEntityOwner owner) { + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + return; + } + + Int2ObjectMap> registry = getRegistry(((Entity) owner).level()); + if (registry == null) { + return; + } + + for (Entity part : parts) { + if (part instanceof PartEntity partEntity) { + registry.put(partEntity.getId(), partEntity); + } + } + } + + public static void unregister(MultipartEntityOwner owner) { + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + return; + } + + Int2ObjectMap> registry = getRegistry(((Entity) owner).level()); + if (registry == null) { + return; + } + + for (Entity part : parts) { + if (part instanceof PartEntity partEntity) { + registry.remove(partEntity.getId()); + } + } + } + + private static Int2ObjectMap> getRegistry(Level level) { + if (level instanceof ServerLevel serverLevel) { + return ((ServerLevelPartEntitiesAccessor) serverLevel).antarchy$getPartEntities(); + } + + if (level instanceof ClientLevel clientLevel) { + return ((ClientLevelPartEntitiesAccessor) clientLevel).antarchy$getPartEntities(); + } + + return null; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/compat/SablePhysicsColliderBlockGetterMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/compat/SablePhysicsColliderBlockGetterMixin.java new file mode 100644 index 00000000..ac63dcf0 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/compat/SablePhysicsColliderBlockGetterMixin.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.neoforge.mixins.compat; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(targets = "dev.ryanhcode.sable.physics.impl.rapier.collider.PhysicsColliderBlockGetter", remap = false) +public class SablePhysicsColliderBlockGetterMixin { + @Shadow + private BlockState state; + + @Inject(method = "getFluidState", at = @At("HEAD"), cancellable = true, remap = false) + private void antarchy$nullSafeFluidState(BlockPos pos, CallbackInfoReturnable cir) { + if (this.state == null) { + cir.setReturnValue(Fluids.EMPTY.defaultFluidState()); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/MultipartEntityBridgeMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/MultipartEntityBridgeMixin.java new file mode 100644 index 00000000..09806c09 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/MultipartEntityBridgeMixin.java @@ -0,0 +1,56 @@ +package com.craisinlord.antarchy.neoforge.mixins.entity; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; +import net.minecraft.world.entity.Entity; +import net.neoforged.neoforge.entity.PartEntity; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(Entity.class) +/* + * Exposes multipart child lookup from base entities. + */ +public abstract class MultipartEntityBridgeMixin { + @Unique + private Entity[] antarchy$multipartSourceParts; + + @Unique + private PartEntity[] antarchy$multipartBridgeParts; + + public boolean isMultipartEntity() { + return (Object) this instanceof MultipartEntityOwner; + } + + @Nullable + public PartEntity[] getParts() { + if (!((Object) this instanceof MultipartEntityOwner owner)) { + return null; + } + + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + parts = owner.antarchy$createMultipartParts(); + owner.antarchy$setMultipartParts(parts); + owner.antarchy$syncMultipartParts(); + } + + if (parts.length == 0) { + return new PartEntity[0]; + } + + if (this.antarchy$multipartSourceParts != parts || this.antarchy$multipartBridgeParts == null || this.antarchy$multipartBridgeParts.length != parts.length) { + PartEntity[] bridgedParts = new PartEntity[parts.length]; + for (int i = 0; i < parts.length; i++) { + if (!(parts[i] instanceof PartEntity part)) { + throw new IllegalStateException("Multipart owner returned a non-PartEntity child: " + parts[i]); + } + bridgedParts[i] = part; + } + this.antarchy$multipartSourceParts = parts; + this.antarchy$multipartBridgeParts = bridgedParts; + } + + return this.antarchy$multipartBridgeParts; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/MultipartEntityLevelRegistryMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/MultipartEntityLevelRegistryMixin.java new file mode 100644 index 00000000..326992ca --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/MultipartEntityLevelRegistryMixin.java @@ -0,0 +1,34 @@ +package com.craisinlord.antarchy.neoforge.mixins.entity; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; +import com.craisinlord.antarchy.neoforge.entity.multipart.MultipartPartLevelRegistry; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.entity.EntityInLevelCallback; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +/* + * Keeps multipart child entities registered in NeoForge levels. + */ +public abstract class MultipartEntityLevelRegistryMixin { + @Inject(method = "setLevelCallback", at = @At("TAIL")) + private void antarchy$registerMultipartParts(EntityInLevelCallback entityInLevelCallback, CallbackInfo ci) { + if ((Object) this instanceof MultipartEntityOwner owner + && entityInLevelCallback != EntityInLevelCallback.NULL) { + if (owner.antarchy$getMultipartParts() == null) { + owner.antarchy$spawnMultipartParts(); + } + MultipartPartLevelRegistry.register(owner); + } + } + + @Inject(method = "setRemoved", at = @At("HEAD")) + private void antarchy$unregisterMultipartParts(Entity.RemovalReason removalReason, CallbackInfo ci) { + if ((Object) this instanceof MultipartEntityOwner owner) { + MultipartPartLevelRegistry.unregister(owner); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/ParalyzedMobFreezeMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/ParalyzedMobFreezeMixin.java new file mode 100644 index 00000000..8c421e28 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/entity/ParalyzedMobFreezeMixin.java @@ -0,0 +1,25 @@ +package com.craisinlord.antarchy.neoforge.mixins.entity; + +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import net.minecraft.world.entity.Mob; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Mob.class) +/* + * Stops mob AI movement while paralyzed. + */ +public abstract class ParalyzedMobFreezeMixin { + @Inject(method = "serverAiStep", at = @At("HEAD")) + private void antarchy$freezeAiWhileParalyzed(CallbackInfo ci) { + Mob mob = (Mob) (Object) this; + if (!mob.hasEffect(AntarchyNeoforgeMisc.PARALYZED)) { + return; + } + + mob.getNavigation().stop(); + mob.setJumping(false); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/PortalCreatorMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/PortalCreatorMixin.java new file mode 100644 index 00000000..4c6539e7 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/PortalCreatorMixin.java @@ -0,0 +1,43 @@ +package com.craisinlord.antarchy.neoforge.mixins.infinity; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.lerariemann.infinity.util.teleport.PortalCreator; +import net.minecraft.server.level.ServerLevel; + +@Mixin(value = PortalCreator.class, remap = false) +/* + * Blocks Infinity portal creation when the config says no + */ +public interface PortalCreatorMixin { + @Inject( + method = "tryCreatePortalFromItem(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/item/ItemEntity;)V", + at = @At("HEAD"), + cancellable = true, + remap = false + ) + private static void antarchy$blockInfinityBookActivation(ServerLevel level, BlockPos pos, ItemEntity itemEntity, CallbackInfo ci) { + if (!AntarchySettings.disableInfinityBookPortalCreation()) { + return; + } + + if (itemEntity.isRemoved()) { + return; + } + + ItemStack stack = itemEntity.getItem(); + if (!stack.has(DataComponents.WRITABLE_BOOK_CONTENT) && !stack.has(DataComponents.WRITTEN_BOOK_CONTENT)) { + return; + } + + ci.cancel(); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/RandomSpringMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/RandomSpringMixin.java new file mode 100644 index 00000000..d80afdaf --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/RandomSpringMixin.java @@ -0,0 +1,37 @@ +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"); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/item/BucketItemThoraxisWaterMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/item/BucketItemThoraxisWaterMixin.java new file mode 100644 index 00000000..59c0cf21 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/item/BucketItemThoraxisWaterMixin.java @@ -0,0 +1,85 @@ +package com.craisinlord.antarchy.neoforge.mixins.item; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeMisc; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.BlockHitResult; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BucketItem.class) +public abstract class BucketItemThoraxisWaterMixin { + private static final ResourceLocation THORAXIS_DIMENSION_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis"); + + @Shadow + @Final + public Fluid content; + + @Shadow + protected abstract void playEmptySound(@Nullable Player player, LevelAccessor level, BlockPos pos); + + @Inject( + method = "emptyContents(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/phys/BlockHitResult;Lnet/minecraft/world/item/ItemStack;)Z", + at = @At( + value = "INVOKE", + target = "Lnet/neoforged/neoforge/fluids/FluidType;isVaporizedOnPlacement(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/neoforged/neoforge/fluids/FluidStack;)Z" + ), + cancellable = true + ) + private void antarchy$replaceWaterVaporizeCheckWithAntiwater( + @Nullable Player player, + Level level, + BlockPos pos, + @Nullable BlockHitResult hitResult, + @Nullable ItemStack container, + CallbackInfoReturnable cir + ) { + if (this.content != Fluids.WATER) { + return; + } + if (!level.dimension().location().equals(THORAXIS_DIMENSION_ID)) { + return; + } + if (container == null) { + return; + } + + BlockState state = level.getBlockState(pos); + boolean canReplace = state.canBeReplaced(this.content); + + if (!state.isAir() && !canReplace && !state.getFluidState().isSource()) { + cir.setReturnValue(false); + return; + } + + if (!level.isClientSide) { + if (canReplace && !state.liquid()) { + level.destroyBlock(pos, true); + } + } + + boolean placed = level.setBlock(pos, AntarchyNeoforgeMisc.ANTIWATER.get().defaultFluidState().createLegacyBlock(), 11); + if (placed || state.getFluidState().isSource()) { + this.playEmptySound(player, level, pos); + cir.setReturnValue(true); + return; + } + + cir.setReturnValue(false); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/level/ClientLevelPartEntitiesAccessor.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/level/ClientLevelPartEntitiesAccessor.java new file mode 100644 index 00000000..bfdce95b --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/level/ClientLevelPartEntitiesAccessor.java @@ -0,0 +1,16 @@ +package com.craisinlord.antarchy.neoforge.mixins.level; + +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.client.multiplayer.ClientLevel; +import net.neoforged.neoforge.entity.PartEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ClientLevel.class) +/* + * Accessor for client part-entity storage. + */ +public interface ClientLevelPartEntitiesAccessor { + @Accessor("partEntities") + Int2ObjectMap> antarchy$getPartEntities(); +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/level/ServerLevelPartEntitiesAccessor.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/level/ServerLevelPartEntitiesAccessor.java new file mode 100644 index 00000000..c744af6c --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/level/ServerLevelPartEntitiesAccessor.java @@ -0,0 +1,16 @@ +package com.craisinlord.antarchy.neoforge.mixins.level; + +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.server.level.ServerLevel; +import net.neoforged.neoforge.entity.PartEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ServerLevel.class) +/* + * Accessor for server part-entity storage. + */ +public interface ServerLevelPartEntitiesAccessor { + @Accessor("dragonParts") + Int2ObjectMap> antarchy$getPartEntities(); +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java new file mode 100644 index 00000000..6d418f8c --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java @@ -0,0 +1,121 @@ +package com.craisinlord.antarchy.neoforge.network; + +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.network.GravityGunPrimaryPayload; +import com.craisinlord.antarchy.content.network.GravityGunScrollPayload; +import com.craisinlord.antarchy.content.network.GravityStatePayload; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.neoforged.neoforge.network.PacketDistributor; +import net.neoforged.neoforge.network.handling.IPayloadContext; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; + +public final class AntarchyGravityNetworking { + private AntarchyGravityNetworking() { + } + + public static void register(PayloadRegistrar registrar) { + registrar.playToClient( + GravityStatePayload.TYPE, + GravityStatePayload.STREAM_CODEC, + AntarchyGravityNetworking::handleGravityState + ).playToServer( + GravityGunPrimaryPayload.TYPE, + GravityGunPrimaryPayload.STREAM_CODEC, + AntarchyGravityNetworking::handleGravityGunPrimary + ).playToServer( + GravityGunScrollPayload.TYPE, + GravityGunScrollPayload.STREAM_CODEC, + AntarchyGravityNetworking::handleGravityGunScroll + ).playToServer( + com.craisinlord.antarchy.content.network.DiamondMinecartInputPayload.TYPE, + com.craisinlord.antarchy.content.network.DiamondMinecartInputPayload.STREAM_CODEC, + AntarchyGravityNetworking::handleDiamondMinecartInput + ); + } + + public static void syncToPlayer(ServerPlayer target, Entity entity) { + GravityStatePayload payload = new GravityStatePayload( + entity.getId(), + AntarchyGravityApi.getGravityDirection(entity), + AntarchyGravityApi.getPrevGravityDirection(entity), + AntarchyGravityApi.isGravityForced(entity), + AntarchyGravityApi.getTransitionDuration(entity), + AntarchyGravityApi.getTransitionRemaining(entity) + ); + PacketDistributor.sendToPlayer(target, payload); + } + + public static void syncEntity(Entity entity) { + GravityStatePayload payload = new GravityStatePayload( + entity.getId(), + AntarchyGravityApi.getGravityDirection(entity), + AntarchyGravityApi.getPrevGravityDirection(entity), + AntarchyGravityApi.isGravityForced(entity), + AntarchyGravityApi.getTransitionDuration(entity), + AntarchyGravityApi.getTransitionRemaining(entity) + ); + PacketDistributor.sendToPlayersTrackingEntityAndSelf(entity, payload); + } + + private static void handleGravityState(GravityStatePayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + Entity entity = context.player().level().getEntity(payload.entityId()); + // On relog the local player entity may not yet be in the level's entity lookup, + // so fall back to context.player() to ensure the local player always gets synced. + if (entity == null && context.player().getId() == payload.entityId()) { + entity = context.player(); + } + if (entity == null) { + return; + } + + AntarchyGravityApi.applySyncedState( + entity, + payload.direction(), + payload.previousDirection(), + payload.forced(), + payload.transitionDuration(), + payload.transitionRemaining() + ); + }); + } + + private static void handleGravityGunScroll(GravityGunScrollPayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer serverPlayer)) { + return; + } + + if (!(serverPlayer.getMainHandItem().getItem() instanceof GravityGunItem)) { + return; + } + + GravityGunItem.adjustHeldDistance(serverPlayer.getMainHandItem(), payload.distanceDelta()); + }); + } + + private static void handleDiamondMinecartInput(com.craisinlord.antarchy.content.network.DiamondMinecartInputPayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer serverPlayer)) return; + if (!(serverPlayer.getVehicle() instanceof DiamondMinecartEntity cart)) return; + cart.onInputReceived(payload.inputFlags()); + }); + } + + private static void handleGravityGunPrimary(GravityGunPrimaryPayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer serverPlayer)) { + return; + } + + if (!(serverPlayer.getMainHandItem().getItem() instanceof GravityGunItem gravityGunItem)) { + return; + } + + gravityGunItem.firePrimary(serverPlayer.serverLevel(), serverPlayer, serverPlayer.getMainHandItem()); + }); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/BrutalflyElytraNetworking.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/BrutalflyElytraNetworking.java new file mode 100644 index 00000000..56f1cdac --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/BrutalflyElytraNetworking.java @@ -0,0 +1,94 @@ +package com.craisinlord.antarchy.neoforge.network; + +import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.network.BrutalflyElytraAnimationPayload; +import com.craisinlord.antarchy.content.network.BrutalflyElytraFlapPayload; +import com.craisinlord.antarchy.content.client.BrutalflyElytraClientState; +import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; +import net.neoforged.neoforge.network.PacketDistributor; +import net.neoforged.neoforge.network.handling.IPayloadContext; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; + +public final class BrutalflyElytraNetworking { + private BrutalflyElytraNetworking() { + } + + public static void register(PayloadRegistrar registrar) { + registrar.playToServer( + BrutalflyElytraFlapPayload.TYPE, + BrutalflyElytraFlapPayload.STREAM_CODEC, + BrutalflyElytraNetworking::handleFlap + ).playToClient( + BrutalflyElytraAnimationPayload.TYPE, + BrutalflyElytraAnimationPayload.STREAM_CODEC, + BrutalflyElytraNetworking::handleAnimation + ); + } + + private static void handleFlap(com.craisinlord.antarchy.content.network.BrutalflyElytraFlapPayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer serverPlayer)) { + return; + } + + ItemStack chestStack = serverPlayer.getItemBySlot(EquipmentSlot.CHEST); + if (!(chestStack.getItem() instanceof BrutalflyElytraItem)) { + return; + } + if (serverPlayer.isSpectator() || !serverPlayer.isFallFlying() || serverPlayer.isPassenger()) { + return; + } + if (serverPlayer.getCooldowns().isOnCooldown(chestStack.getItem())) { + return; + } + + BrutalflyElytraFlightHelper.FlapTier tier = BrutalflyElytraFlightHelper.resolveFlapTier(payload.chargeTicks()); + if (tier == BrutalflyElytraFlightHelper.FlapTier.FAIL) { + return; + } + + float lift = BrutalflyElytraFlightHelper.liftFor(tier); + float forwardBoost = BrutalflyElytraFlightHelper.forwardBoostFor(tier); + Vec3 look = serverPlayer.getLookAngle(); + Vec3 boost = new Vec3(look.x * forwardBoost, lift, look.z * forwardBoost); + serverPlayer.setDeltaMovement(serverPlayer.getDeltaMovement().add(boost)); + serverPlayer.hasImpulse = true; + serverPlayer.hurtMarked = true; + serverPlayer.resetFallDistance(); + serverPlayer.connection.send(new ClientboundSetEntityMotionPacket(serverPlayer)); + chestStack.hurtAndBreak(1, serverPlayer, EquipmentSlot.CHEST); + serverPlayer.getCooldowns().addCooldown(chestStack.getItem(), BrutalflyElytraFlightHelper.FLAP_COOLDOWN_TICKS); + serverPlayer.level().playSound( + null, + serverPlayer.blockPosition(), + SoundEvents.PHANTOM_FLAP, + SoundSource.PLAYERS, + 0.9F, + tier == BrutalflyElytraFlightHelper.FlapTier.PERFECT ? 0.8F : tier == BrutalflyElytraFlightHelper.FlapTier.GOOD ? 0.95F : 1.1F + ); + PacketDistributor.sendToPlayersTrackingEntityAndSelf( + serverPlayer, + new BrutalflyElytraAnimationPayload( + serverPlayer.getId(), + BrutalflyElytraFlightHelper.animationTicksFor(tier), + lift + ) + ); + }); + } + + private static void handleAnimation(BrutalflyElytraAnimationPayload payload, IPayloadContext context) { + context.enqueueWork(() -> BrutalflyElytraClientState.trigger( + payload.entityId(), + payload.durationTicks(), + payload.strength() + )); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/MultipartNetworking.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/MultipartNetworking.java new file mode 100644 index 00000000..2287c37f --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/MultipartNetworking.java @@ -0,0 +1,96 @@ +package com.craisinlord.antarchy.neoforge.network; + +import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; +import com.craisinlord.antarchy.content.entity.multipart.network.MultipartAttackPayload; +import com.craisinlord.antarchy.content.entity.multipart.network.MultipartInteractPayload; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.neoforged.neoforge.network.handling.IPayloadContext; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; + +public final class MultipartNetworking { + private MultipartNetworking() { + } + + public static void register(PayloadRegistrar registrar) { + registrar.playToServer( + MultipartAttackPayload.TYPE, + MultipartAttackPayload.STREAM_CODEC, + MultipartNetworking::handleAttack + ).playToServer( + MultipartInteractPayload.TYPE, + MultipartInteractPayload.STREAM_CODEC, + MultipartNetworking::handleInteract + ); + } + + private static void handleAttack(MultipartAttackPayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer serverPlayer)) { + return; + } + + Entity entity = serverPlayer.serverLevel().getEntity(payload.parentId()); + if (!(entity instanceof MultipartEntityOwner owner)) { + return; + } + + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + parts = owner.antarchy$createMultipartParts(); + owner.antarchy$setMultipartParts(parts); + owner.antarchy$syncMultipartParts(); + } + + if (payload.partIndex() < 0 || payload.partIndex() >= parts.length) { + return; + } + + Entity part = parts[payload.partIndex()]; + if (part == null || part.isRemoved()) { + return; + } + + if (serverPlayer.distanceToSqr(part) > 10000.0D) { + return; + } + + DamageSource source = serverPlayer.level().damageSources().playerAttack(serverPlayer); + owner.antarchy$hurtMultipartPart(part, source, payload.damage()); + }); + } + + private static void handleInteract(MultipartInteractPayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer serverPlayer)) { + return; + } + + Entity entity = serverPlayer.serverLevel().getEntity(payload.parentId()); + if (!(entity instanceof MultipartEntityOwner owner)) { + return; + } + + Entity[] parts = owner.antarchy$getMultipartParts(); + if (parts == null) { + parts = owner.antarchy$createMultipartParts(); + owner.antarchy$setMultipartParts(parts); + owner.antarchy$syncMultipartParts(); + } + + if (payload.partIndex() < 0 || payload.partIndex() >= parts.length) { + return; + } + + Entity part = parts[payload.partIndex()]; + if (part == null || part.isRemoved()) { + return; + } + + InteractionHand hand = payload.handId() == 0 ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; + owner.antarchy$interactMultipartPart(part, serverPlayer, part.position(), hand); + }); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/ThoraxisWeatherNetworking.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/ThoraxisWeatherNetworking.java new file mode 100644 index 00000000..2c1806ac --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/ThoraxisWeatherNetworking.java @@ -0,0 +1,62 @@ +package com.craisinlord.antarchy.neoforge.network; + +import com.craisinlord.antarchy.content.client.ThoraxisWeatherClientState; +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherKind; +import com.craisinlord.antarchy.content.weather.ThoraxisWeatherSnapshot; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.neoforged.neoforge.network.PacketDistributor; +import net.neoforged.neoforge.network.handling.IPayloadContext; +import net.neoforged.neoforge.network.registration.PayloadRegistrar; + +public final class ThoraxisWeatherNetworking { + private ThoraxisWeatherNetworking() { + } + + public static void register(PayloadRegistrar registrar) { + registrar.playToClient( + com.craisinlord.antarchy.content.network.ThoraxisWeatherPayload.TYPE, + com.craisinlord.antarchy.content.network.ThoraxisWeatherPayload.STREAM_CODEC, + ThoraxisWeatherNetworking::handleWeatherPayload + ); + } + + public static void syncLevel(ServerLevel level, ThoraxisWeatherSnapshot snapshot) { + com.craisinlord.antarchy.content.network.ThoraxisWeatherPayload payload = new com.craisinlord.antarchy.content.network.ThoraxisWeatherPayload( + snapshot.dimension(), + snapshot.kind(), + snapshot.expiresAt(), + snapshot.anchor().getX(), + snapshot.anchor().getY(), + snapshot.anchor().getZ() + ); + + for (ServerPlayer player : level.players()) { + PacketDistributor.sendToPlayer(player, payload); + } + } + + public static void syncPlayer(ServerPlayer player, ThoraxisWeatherSnapshot snapshot) { + com.craisinlord.antarchy.content.network.ThoraxisWeatherPayload payload = new com.craisinlord.antarchy.content.network.ThoraxisWeatherPayload( + snapshot.dimension(), + snapshot.kind(), + snapshot.expiresAt(), + snapshot.anchor().getX(), + snapshot.anchor().getY(), + snapshot.anchor().getZ() + ); + PacketDistributor.sendToPlayer(player, payload); + } + + private static void handleWeatherPayload(com.craisinlord.antarchy.content.network.ThoraxisWeatherPayload payload, IPayloadContext context) { + context.enqueueWork(() -> ThoraxisWeatherClientState.apply( + ResourceLocation.parse(payload.dimensionId()), + ThoraxisWeatherKind.byId(payload.weatherId()), + payload.expiresAt(), + payload.anchorX(), + payload.anchorY(), + payload.anchorZ() + )); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java new file mode 100644 index 00000000..e0f0fc62 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -0,0 +1,1125 @@ +package com.craisinlord.antarchy.neoforge.registry; + +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.block.DuctTapeBlock; +import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.bloodglass.BloodglassAccess; +import com.craisinlord.antarchy.content.entity.*; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework; +import com.craisinlord.antarchy.content.entity.trades.DrTrayaurusTradeManager; +import com.craisinlord.antarchy.content.item.*; +import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper; +import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.neoforge.AntarchyNeoForgeFluidTypes; +import com.craisinlord.antarchy.neoforge.entity.multipart.MultipartPartEntity; +import com.craisinlord.antarchy.neoforge.network.AntarchyGravityNetworking; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.monster.Enemy; +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.minecraft.world.level.block.ComposterBlock; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.common.ItemAbilities; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.common.NeoForgeMod; +import net.neoforged.neoforge.event.AddReloadListenerEvent; +import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent; +import net.neoforged.neoforge.event.entity.EntityAttributeModificationEvent; +import net.neoforged.neoforge.event.entity.living.*; +import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +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.fluids.FluidInteractionRegistry; +import net.neoforged.neoforge.network.PacketDistributor; + +public final class AntarchyNeoForgeEvents { + private AntarchyNeoForgeEvents() {} + + public static void register(IEventBus modEventBus) { + modEventBus.addListener(AntarchyNeoForgeEvents::onCommonSetup); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::onMissileSquidDeath); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::onLivingBreathe); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::registerBrewingRecipes); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleNaturalRabbitReplacement); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBlockToolModification); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::onMobEffectApplicable); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::onInvertedEffectRemoved); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::onInvertedEffectExpired); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleUltimateBowDamage); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleUltimateCrossbowDamage); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleNightmareSwordDamage); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleNightmareArmorDoubleDamage); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleScorpionWhipAttackEntity); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleScorpionWhipLeftClickBlock); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleScorpionWhipRightClickBlock); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleScorpionWhipRightClickItem); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleParalyzedAttackEntity); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleParalyzedLeftClickBlock); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleParalyzedRightClickBlock); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleParalyzedRightClickItem); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleParalyzedEntityInteract); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleParalyzedEntityInteractSpecific); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleDreamSandJump); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickDreadAndIchor); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickScorpionWhips); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickDreamSandLowGravity); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleAntiwaterDamage); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleAntiwaterFall); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleDreamSandFall); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodCrystalBootsFall); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassShield); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodCrystalArmorEquip); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassWardApplied); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassWardRemoved); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassWardExpired); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickBloodglassRecharge); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassPlayerDeath); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassRespawn); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassLogin); + modEventBus.addListener(AntarchyNeoForgeEvents::modifyEntityAttributes); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickOverheadInversion); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickDuctTapeStickiness); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleDreadDeath); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleFallenKingCrownKill); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleDreadBedSleep); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleStartTracking); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleDreamSandLogout); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::registerReloadListeners); + } + + public static void onMissileSquidDeath(LivingDeathEvent event) { + if (!(event.getEntity() instanceof MissileSquidEntity)) return; + if (!(event.getEntity().level() instanceof ServerLevel serverLevel)) return; + + BlockPos deathPos = event.getEntity().blockPosition(); + + if (AntarchySettings.krakenSquidSpawnEnabled() && serverLevel.random.nextInt(100) == 0) { + spawnKrakens(serverLevel, deathPos, 1); + } + + if (AntarchySettings.krakenMassSpawnEnabled() && serverLevel.random.nextInt(100) == 0) { + spawnKrakens(serverLevel, deathPos, 10); + } + } + + public static void onLivingBreathe(LivingBreatheEvent event) { + if (!(event.getEntity() instanceof Player)) { + return; + } + + if (event.getEntity().getEyeInFluidType() != AntarchyNeoForgeFluidTypes.ANTIWATER_TYPE.get()) { + return; + } + + event.setConsumeAirAmount(event.getConsumeAirAmount() * 2); + } + + private static void spawnKrakens(ServerLevel level, BlockPos origin, int count) { + for (int i = 0; i < count; i++) { + BlockPos spawnPos = findKrakenSpawnPos(level, origin); + KrakenEntity kraken = AntarchyObjects.KRAKEN.get().create(level); + if (kraken == null) continue; + kraken.moveTo(spawnPos.getX() + 0.5D, spawnPos.getY() + 1.0D, spawnPos.getZ() + 0.5D, + level.random.nextFloat() * 360.0F, 0.0F); + kraken.finalizeSpawn(level, level.getCurrentDifficultyAt(spawnPos), MobSpawnType.EVENT, null); + level.addFreshEntity(kraken); + } + } + + private static BlockPos findKrakenSpawnPos(ServerLevel level, BlockPos origin) { + for (int attempt = 0; attempt < 20; attempt++) { + BlockPos candidate = origin.offset( + level.random.nextInt(33) - 16, + level.random.nextInt(9) - 4, + level.random.nextInt(33) - 16 + ); + if (level.getFluidState(candidate).is(FluidTags.WATER)) { + return candidate; + } + } + return origin.above(3); + } + + static void registerReloadListeners(AddReloadListenerEvent event) { + event.addListener(new DrTrayaurusTradeManager()); + } + static void handleDreamSandLogout(PlayerEvent.PlayerLoggedOutEvent event) { + clearDreamSandLowGravity(event.getEntity()); + } + private static void clearDreamSandLowGravity(LivingEntity livingEntity) { + DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); + access.antarchy$setDreamSandLowGravityActive(false); + access.antarchy$setDreamSandLowGravityTicksRemaining(0); + access.antarchy$setDreamSandLandingGraceTicks(0); + } + private static DreamSandLowGravityAccess dreamSandAccess(LivingEntity livingEntity) { + return (DreamSandLowGravityAccess) livingEntity; + } + + static void handleStartTracking(PlayerEvent.StartTracking event) { + if (event.getTarget().level().isClientSide()) { + return; + } + + AntarchyGravityNetworking.syncEntity(event.getTarget()); + } + + private static final String DREAD_BED_BUG_NEXT_SPAWN_KEY = Antarchy.MODID + ":dread_bed_bug_next_spawn"; + private static final int DREAD_BED_BUG_SPAWN_COOLDOWN_TICKS = 6000; + static void handleDreadBedSleep(net.neoforged.neoforge.event.entity.player.CanPlayerSleepEvent event) { + if (!event.getEntity().hasEffect(AntarchyNeoforgeMisc.DREAD)) { + return; + } + if (event.getEntity() instanceof Player player) { + player.displayClientMessage(net.minecraft.network.chat.Component.translatable("message.antarchy.dread_too_scared_to_sleep"), true); + } + event.setProblem(net.minecraft.world.entity.player.Player.BedSleepingProblem.OTHER_PROBLEM); + + net.minecraft.server.level.ServerLevel level = (net.minecraft.server.level.ServerLevel) event.getLevel(); + Player player = event.getEntity(); + long gameTime = level.getGameTime(); + long nextSpawnTime = player.getPersistentData().getLong(DREAD_BED_BUG_NEXT_SPAWN_KEY); + if (nextSpawnTime > gameTime) { + return; + } + + net.minecraft.core.BlockPos bedPos = event.getPos(); + com.craisinlord.antarchy.content.entity.BedBugEntity bedBug = AntarchyObjects.BED_BUG.get().create(level); + if (bedBug == null) { + return; + } + + player.getPersistentData().putLong(DREAD_BED_BUG_NEXT_SPAWN_KEY, gameTime + DREAD_BED_BUG_SPAWN_COOLDOWN_TICKS); + bedBug.moveTo(bedPos.getX() + 0.5D, bedPos.getY() + 0.5D, bedPos.getZ() + 0.5D, + level.random.nextFloat() * 360.0F, 0.0F); + bedBug.finalizeSpawn(level, level.getCurrentDifficultyAt(bedPos), + net.minecraft.world.entity.MobSpawnType.EVENT, null); + level.addFreshEntity(bedBug); + } + + static void handleNaturalRabbitReplacement(MobSpawnEvent.PositionCheck event) { + if (!AntarchySettings.easterBunnyEnabled()) { + return; + } + if (event.getSpawnType() != MobSpawnType.NATURAL || !(event.getEntity() instanceof Rabbit rabbit)) { + return; + } + if (rabbit instanceof EasterBunnyEntity) { + return; + } + + int chancePercent = AntarchySettings.easterBunnyNaturalSpawnChancePercent(); + if (chancePercent <= 0 || event.getLevel().getRandom().nextInt(100) >= chancePercent) { + return; + } + + ServerLevel level = (ServerLevel) event.getLevel(); + EasterBunnyEntity easterBunny = AntarchyNeoforgeEntites.EASTER_BUNNY.get().create(level); + if (easterBunny == null) { + return; + } + + easterBunny.moveTo(event.getX(), event.getY(), event.getZ(), rabbit.getYRot(), rabbit.getXRot()); + easterBunny.finalizeSpawn(level, level.getCurrentDifficultyAt(event.getEntity().blockPosition()), MobSpawnType.NATURAL, null); + level.addFreshEntity(easterBunny); + event.setResult(MobSpawnEvent.PositionCheck.Result.FAIL); + } + + static void tickDuctTapeStickiness(EntityTickEvent.Post event) { + DuctTapeBlock.tickStuckEntity(event.getEntity()); + } + + static void handleDreadDeath(LivingDeathEvent event) { + LivingEntity entity = event.getEntity(); + clearDreamSandLowGravity(entity); + if (!entity.hasEffect(AntarchyNeoforgeMisc.DREAD)) { + return; + } + + entity.removeEffect(AntarchyNeoforgeMisc.DREAD); + } + + static void handleFallenKingCrownKill(LivingDeathEvent event) { + if (!(event.getEntity() instanceof Enemy)) { + return; + } + + Entity attacker = event.getSource().getEntity(); + if (!(attacker instanceof Player player) || player.level().isClientSide()) { + return; + } + + if (!player.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.HEAD).is(AntarchyNeoforgeItems.FALLEN_KING_CROWN.get())) { + return; + } + + player.addEffect(new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE, 6000, 0, false, true, true)); + } + + private static final int ANTIMETAL_INVERTED_REFRESH_TICKS = 20; + + static void tickOverheadInversion(EntityTickEvent.Post event) { + if (!(event.getEntity() instanceof LivingEntity livingEntity)) { + return; + } + if (livingEntity.level().isClientSide()) { + return; + } + if (livingEntity instanceof Player player && player.isSpectator()) { + return; + } + if (!isDirectlyBelowAntimetal(livingEntity)) { + return; + } + + MobEffectInstance existingInverted = livingEntity.getEffect(AntarchyNeoforgeMisc.INVERTED); + if (existingInverted == null || existingInverted.getDuration() <= 5) { + livingEntity.addEffect(new MobEffectInstance(AntarchyNeoforgeMisc.INVERTED, ANTIMETAL_INVERTED_REFRESH_TICKS, 0, false, false, false)); + spawnAntimetalInversionParticles(livingEntity); + } + } + + private static boolean isInOrBelowAntimetalScaffolding(LivingEntity entity) { + AABB bounds = entity.getBoundingBox().deflate(1.0E-3D); + int minX = net.minecraft.util.Mth.floor(bounds.minX); + int maxX = net.minecraft.util.Mth.floor(bounds.maxX); + int minY = net.minecraft.util.Mth.floor(bounds.minY); + int maxY = net.minecraft.util.Mth.floor(bounds.maxY); + int minZ = net.minecraft.util.Mth.floor(bounds.minZ); + int maxZ = net.minecraft.util.Mth.floor(bounds.maxZ); + + for (int x = minX; x <= maxX; x++) { + for (int z = minZ; z <= maxZ; z++) { + for (int y = minY; y <= maxY; y++) { + if (entity.level().getBlockState(new net.minecraft.core.BlockPos(x, y, z)) + .getBlock() instanceof com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock) { + return true; + } + } + net.minecraft.core.BlockPos abovePos = new net.minecraft.core.BlockPos(x, maxY + 1, z); + if (entity.level().getBlockState(abovePos) + .getBlock() instanceof com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock) { + return true; + } + } + } + return false; + } + + private static boolean isDirectlyBelowAntimetal(LivingEntity entity) { + AABB bounds = entity.getBoundingBox().deflate(1.0E-3D); + + int minX = net.minecraft.util.Mth.floor(bounds.minX); + int maxX = net.minecraft.util.Mth.floor(bounds.maxX); + int minY = net.minecraft.util.Mth.floor(bounds.minY); + int maxY = net.minecraft.util.Mth.floor(bounds.maxY); + int minZ = net.minecraft.util.Mth.floor(bounds.minZ); + int maxZ = net.minecraft.util.Mth.floor(bounds.maxZ); + + for (int x = minX; x <= maxX; x++) { + for (int y = minY; y <= maxY; y++) { + for (int z = minZ; z <= maxZ; z++) { + net.minecraft.core.BlockPos crystalPos = new net.minecraft.core.BlockPos(x, y + 1, z); + if (entity.level().getBlockState(crystalPos).is(AntarchyNeoforgeBlocks.ANTIMETAL.get()) + || entity.level().getBlockState(crystalPos).is(AntarchyNeoforgeBlocks.POLISHED_ANTIMETAL.get())) { + return true; + } + } + } + } + + return false; + } + + private static void spawnAntimetalInversionParticles(LivingEntity entity) { + if (!(entity.level() instanceof ServerLevel serverLevel)) { + return; + } + + double x = entity.getX(); + double y = entity.getBoundingBox().maxY + 0.1D; + double z = entity.getZ(); + serverLevel.sendParticles( + new net.minecraft.core.particles.DustParticleOptions(new org.joml.Vector3f(1.0F, 0.1F, 0.1F), 1.0F), + x, + y, + z, + 6, + 0.2D, + 0.05D, + 0.2D, + 0.0D + ); + } + + static void modifyEntityAttributes(EntityAttributeModificationEvent event) { + event.add(EntityType.PLAYER, AntarchyNeoforgeMisc.BLOODGLASS_MAX_HEARTS); + event.add(EntityType.PLAYER, AntarchyNeoforgeMisc.DOUBLE_DAMAGE_CHANCE); + } + + static void handleBloodglassPlayerDeath(LivingDeathEvent event) { + if (!(event.getEntity() instanceof ServerPlayer sp)) return; + BloodglassAccess access = (BloodglassAccess) sp; + access.antarchy$setArmorShieldsActive(0); + access.antarchy$setArmorShieldLostCount(0); + access.antarchy$setArmorRechargeTimer(0); + access.antarchy$setAppleShieldsActive(0); + access.antarchy$setAppleShieldLostCount(0); + access.antarchy$setAppleRechargeTimer(0); + syncBloodglass(sp); + } + + static void handleBloodglassRespawn(PlayerEvent.PlayerRespawnEvent event) { + if (!(event.getEntity() instanceof ServerPlayer sp)) return; + BloodglassAccess access = (BloodglassAccess) sp; + int bcCount = 0; + for (net.minecraft.world.entity.EquipmentSlot slot : new net.minecraft.world.entity.EquipmentSlot[]{ + net.minecraft.world.entity.EquipmentSlot.HEAD, + net.minecraft.world.entity.EquipmentSlot.CHEST, + net.minecraft.world.entity.EquipmentSlot.LEGS, + net.minecraft.world.entity.EquipmentSlot.FEET}) { + if (sp.getItemBySlot(slot).getItem() instanceof BloodCrystalArmorItem) bcCount++; + } + int shields = Math.min(bcCount, AntarchySettings.bloodCrystalHardMaxShields()); + access.antarchy$setArmorShieldsActive(shields); + access.antarchy$setArmorShieldLostCount(0); + access.antarchy$setArmorRechargeTimer(0); + syncBloodglass(sp); + } + + static void handleBloodglassLogin(PlayerEvent.PlayerLoggedInEvent event) { + if (!(event.getEntity() instanceof ServerPlayer sp)) return; + BloodglassAccess access = (BloodglassAccess) sp; + if (sp.hasEffect(AntarchyNeoforgeMisc.BLOODGLASS_WARD)) { + net.minecraft.world.effect.MobEffectInstance effect = sp.getEffect(AntarchyNeoforgeMisc.BLOODGLASS_WARD); + if (effect != null) { + int cap = Math.max(0, AntarchySettings.bloodCrystalHardMaxShields() + - access.antarchy$getArmorShieldsActive() + - access.antarchy$getArmorShieldLostCount()); + int shieldCount = Math.min(effect.getAmplifier() + 1, cap); + access.antarchy$setAppleShieldsActive(shieldCount); + access.antarchy$setAppleShieldLostCount(0); + access.antarchy$setAppleRechargeTimer(0); + } + } + syncBloodglass(sp); + } + + private static void syncBloodglass(ServerPlayer player) { + BloodglassAccess access = (BloodglassAccess) player; + PacketDistributor.sendToPlayer(player, + new com.craisinlord.antarchy.content.network.BloodglassStatePayload( + access.antarchy$getTotalShieldsActive(), + access.antarchy$getTotalShieldsMax() + ) + ); + } + + static void handleBloodglassWardApplied(MobEffectEvent.Added event) { + if (!event.getEffectInstance().is(AntarchyNeoforgeMisc.BLOODGLASS_WARD)) return; + if (!(event.getEntity() instanceof Player player)) return; + if (player.level().isClientSide()) return; + + BloodglassAccess access = (BloodglassAccess) player; + int shieldCount = 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); + } + + private static void clearAppleShields(Player player) { + BloodglassAccess access = (BloodglassAccess) player; + access.antarchy$setAppleShieldsActive(0); + access.antarchy$setAppleShieldLostCount(0); + access.antarchy$setAppleRechargeTimer(0); + if (player instanceof ServerPlayer sp) syncBloodglass(sp); + } + + static void handleBloodglassWardRemoved(MobEffectEvent.Remove event) { + if (!event.getEffect().is(AntarchyNeoforgeMisc.BLOODGLASS_WARD)) return; + if (!(event.getEntity() instanceof Player player)) return; + if (player.level().isClientSide()) return; + clearAppleShields(player); + } + + static void handleBloodglassWardExpired(MobEffectEvent.Expired event) { + if (!event.getEffectInstance().is(AntarchyNeoforgeMisc.BLOODGLASS_WARD)) return; + if (!(event.getEntity() instanceof Player player)) return; + if (player.level().isClientSide()) return; + clearAppleShields(player); + } + + static void tickBloodglassRecharge(PlayerTickEvent.Post event) { + Player player = event.getEntity(); + if (player.level().isClientSide()) return; + + BloodglassAccess access = (BloodglassAccess) player; + boolean changed = false; + int hardCap = AntarchySettings.bloodCrystalHardMaxShields(); + + if (access.antarchy$getArmorShieldLostCount() > 0) { + int timer = access.antarchy$getArmorRechargeTimer(); + if (timer > 1) { + access.antarchy$setArmorRechargeTimer(timer - 1); + } else if (timer == 1) { + int currentTotal = access.antarchy$getTotalShieldsActive(); + if (currentTotal < hardCap) { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() + 1); + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); + changed = true; + } + if (access.antarchy$getArmorShieldLostCount() > 0) { + access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); + } else { + access.antarchy$setArmorRechargeTimer(0); + } + } + } + + if (access.antarchy$getAppleShieldLostCount() > 0 && player.hasEffect(AntarchyNeoforgeMisc.BLOODGLASS_WARD)) { + int timer = access.antarchy$getAppleRechargeTimer(); + if (timer > 1) { + access.antarchy$setAppleRechargeTimer(timer - 1); + } else if (timer == 1) { + int currentTotal = access.antarchy$getTotalShieldsActive(); + if (currentTotal < hardCap) { + access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() + 1); + access.antarchy$setAppleShieldLostCount(access.antarchy$getAppleShieldLostCount() - 1); + changed = true; + } + if (access.antarchy$getAppleShieldLostCount() > 0) { + access.antarchy$setAppleRechargeTimer(AntarchySettings.bloodCrystalAppleShieldRechargeTicks()); + } else { + access.antarchy$setAppleRechargeTimer(0); + } + } + } + + if (changed && player instanceof ServerPlayer sp) { + syncBloodglass(sp); + sp.playNotifySound( + net.minecraft.sounds.SoundEvents.AMETHYST_BLOCK_CHIME, + net.minecraft.sounds.SoundSource.PLAYERS, 0.6f, 1.6f); + } + } + static void handleBloodCrystalArmorEquip(LivingEquipmentChangeEvent event) { + if (!(event.getEntity() instanceof Player player)) return; + if (player.level().isClientSide()) return; + + net.minecraft.world.entity.EquipmentSlot slot = event.getSlot(); + if (slot != net.minecraft.world.entity.EquipmentSlot.HEAD + && slot != net.minecraft.world.entity.EquipmentSlot.CHEST + && slot != net.minecraft.world.entity.EquipmentSlot.LEGS + && slot != net.minecraft.world.entity.EquipmentSlot.FEET) return; + + boolean fromIsBC = event.getFrom().getItem() instanceof BloodCrystalArmorItem; + boolean toIsBC = event.getTo().getItem() instanceof BloodCrystalArmorItem; + + BloodglassAccess access = (BloodglassAccess) player; + + if (fromIsBC && !toIsBC) { + // Unequipped BC armor, remove one shield slot + if (access.antarchy$getArmorShieldsActive() > 0) { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); + } else if (access.antarchy$getArmorShieldLostCount() > 0) { + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); + if (access.antarchy$getArmorShieldLostCount() == 0) { + access.antarchy$setArmorRechargeTimer(0); + } + } + } else if (!fromIsBC && toIsBC) { + // Newly equipped BC armor,only add if not already accounted for (by respawn init) + int bcPieces = countBCArmorPieces(player); + int currentTotal = access.antarchy$getArmorShieldsActive() + access.antarchy$getArmorShieldLostCount(); + if (currentTotal < bcPieces) { + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); + access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); + } + } else if (fromIsBC) { + // BC armor replaced with another BC armor (or same after re-equip sequence) + // Remove old shield, start recharging new one and reset timer + if (access.antarchy$getArmorShieldsActive() > 0) { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); + } else if (access.antarchy$getArmorShieldLostCount() > 0) { + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() - 1); + } + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); + access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); + } + + syncBloodglass((ServerPlayer) player); + } + + private static int countBCArmorPieces(Player player) { + int count = 0; + for (net.minecraft.world.entity.EquipmentSlot slot : new net.minecraft.world.entity.EquipmentSlot[]{ + net.minecraft.world.entity.EquipmentSlot.HEAD, + net.minecraft.world.entity.EquipmentSlot.CHEST, + net.minecraft.world.entity.EquipmentSlot.LEGS, + net.minecraft.world.entity.EquipmentSlot.FEET}) { + if (player.getItemBySlot(slot).getItem() instanceof BloodCrystalArmorItem) count++; + } + return count; + } + + static void handleBloodCrystalBootsFall(LivingFallEvent event) { + if (!(event.getEntity() instanceof Player player)) return; + if (!com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.isGravityInverted(player)) return; + if (!(player.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.FEET).getItem() instanceof BloodCrystalArmorItem)) return; + event.setCanceled(true); + } + + static void handleBloodglassShield(LivingIncomingDamageEvent event) { + if (!(event.getEntity() instanceof Player player)) return; + if (player.level().isClientSide()) return; + + if (event.getAmount() <= 1.0f) return; + + if (event.getSource().is(AntarchyTags.DamageType.BYPASSES_BLOODGLASS)) return; + + BloodglassAccess access = (BloodglassAccess) player; + int totalActive = access.antarchy$getTotalShieldsActive(); + if (totalActive <= 0) return; + + // Consume apple shields first, then armor shields + if (access.antarchy$getAppleShieldsActive() > 0) { + access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() - 1); + access.antarchy$setAppleShieldLostCount(access.antarchy$getAppleShieldLostCount() + 1); + if (access.antarchy$getAppleRechargeTimer() == 0) { + access.antarchy$setAppleRechargeTimer(AntarchySettings.bloodCrystalAppleShieldRechargeTicks()); + } + } else { + access.antarchy$setArmorShieldsActive(access.antarchy$getArmorShieldsActive() - 1); + access.antarchy$setArmorShieldLostCount(access.antarchy$getArmorShieldLostCount() + 1); + if (access.antarchy$getArmorRechargeTimer() == 0) { + access.antarchy$setArmorRechargeTimer(AntarchySettings.bloodCrystalArmorShieldRechargeTicks()); + } + } + + event.setCanceled(true); + + net.minecraft.server.level.ServerLevel serverLevel = (net.minecraft.server.level.ServerLevel) player.level(); + + serverLevel.broadcastEntityEvent(player, (byte) 2); + + serverLevel.playSound(null, player.blockPosition(), + net.minecraft.sounds.SoundEvents.GLASS_BREAK, + net.minecraft.sounds.SoundSource.PLAYERS, 1.0f, 1.0f); + + serverLevel.sendParticles( + new net.minecraft.core.particles.DustParticleOptions( + new org.joml.Vector3f(0.85f, 0.18f, 0.38f), 1.2f), + player.getX(), player.getEyeY(), player.getZ(), + 35, 0.35, 0.55, 0.35, 0.12); + + syncBloodglass((ServerPlayer) player); + } + static void handleUltimateBowDamage(LivingIncomingDamageEvent event) { + if (!UltimateGearHelper.isUltimateBowArrow(event.getSource().getDirectEntity())) { + return; + } + + LivingEntity target = event.getEntity(); + if (target instanceof Player player) { + event.setAmount(0.0F); + event.setInvulnerabilityTicks(0); + player.clearFire(); + player.heal((float) AntarchySettings.ultimateBowPlayerHeal()); + return; + } + + // Shared item code now scales arrow base damage directly so attribute and projectile + // modifiers stay in the damage pipeline. Leave non-player hits untouched here. + } + + static void handleUltimateCrossbowDamage(LivingIncomingDamageEvent event) { + if (!UltimateGearHelper.isUltimateCrossbowProjectile(event.getSource().getDirectEntity())) { + return; + } + } + + + static void handleNightmareSwordDamage(LivingIncomingDamageEvent event) { + net.minecraft.world.damagesource.DamageSource source = event.getSource(); + if (!(source.getEntity() instanceof Player attacker)) return; + if (!(attacker.getMainHandItem().getItem() instanceof NightmareSwordItem)) return; + + float maxHealth = attacker.getMaxHealth(); + if (maxHealth <= 0) return; + float missingFraction = (maxHealth - attacker.getHealth()) / maxHealth; + float baseDamage = (float) AntarchySettings.nightmareSwordBaseDamage(); + float scalingFactor = (float) AntarchySettings.nightmareSwordScalingFactor(); + + event.setAmount(baseDamage + missingFraction * scalingFactor * baseDamage); + } + + static void handleNightmareArmorDoubleDamage(LivingIncomingDamageEvent event) { + net.minecraft.world.damagesource.DamageSource source = event.getSource(); + if (!(source.getEntity() instanceof net.minecraft.world.entity.LivingEntity attacker)) return; + if (!attacker.getAttributes().hasAttribute(AntarchyNeoforgeMisc.DOUBLE_DAMAGE_CHANCE)) return; + double chance = attacker.getAttributeValue(AntarchyNeoforgeMisc.DOUBLE_DAMAGE_CHANCE); + if (chance <= 0.0) return; + if (attacker.getRandom().nextDouble() < chance) { + event.setAmount(event.getAmount() * 2.0F); + LivingEntity victim = event.getEntity(); + if (victim.level() instanceof ServerLevel serverLevel) { + serverLevel.playSound(null, victim.blockPosition(), + AntarchySoundEvents.NIGHTMARE_BITE.get(), + net.minecraft.sounds.SoundSource.PLAYERS, 0.9f, 0.85f + victim.getRandom().nextFloat() * 0.3f); + serverLevel.sendParticles( + new net.minecraft.core.particles.DustParticleOptions(new org.joml.Vector3f(0.55f, 0.0f, 0.05f), 1.4f), + victim.getX(), victim.getY() + victim.getBbHeight() * 0.5, victim.getZ(), + 30, 0.4, 0.5, 0.4, 0.15); + } + } + } + + private static boolean isWearingFullNightmareArmor(Player player) { + for (ItemStack stack : player.getArmorSlots()) { + if (!(stack.getItem() instanceof NightmareArmorItem)) return false; + } + return true; + } + + static void handleAntiwaterDamage(LivingIncomingDamageEvent event) { + if (!event.getSource().is(DamageTypes.FALL)) { + return; + } + + LivingEntity livingEntity = event.getEntity(); + if (!intersectsAntiwater(livingEntity, livingEntity.getBoundingBox().inflate(0.05D))) { + return; + } + + event.setCanceled(true); + } + + static void handleScorpionWhipAttackEntity(AttackEntityEvent event) { + if (!(event.getEntity() instanceof ServerPlayer player)) { + return; + } + + if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem) || !(event.getTarget() instanceof LivingEntity target)) { + return; + } + + if (ScorpionWhipTetherManager.hasTether(player)) { + event.setCanceled(true); + if (ScorpionWhipTetherManager.isTetheredTo(player, target)) { + player.resetAttackStrengthTicker(); + } + } + } + + static void handleScorpionWhipLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { + if (!(event.getEntity() instanceof ServerPlayer player)) { + return; + } + if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem) || !ScorpionWhipTetherManager.hasTether(player)) { + return; + } + event.setCanceled(true); + } + + static void handleScorpionWhipRightClickBlock(PlayerInteractEvent.RightClickBlock event) { + if (!(event.getEntity() instanceof ServerPlayer player)) { + return; + } + if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem)) { + return; + } + if (!ScorpionWhipTetherManager.hasTether(player)) { + return; + } + if (ScorpionWhipTetherManager.pullAndDetach(player)) { + event.setCanceled(true); + event.setCancellationResult(InteractionResult.SUCCESS); + } + } + + static void handleScorpionWhipRightClickItem(PlayerInteractEvent.RightClickItem event) { + if (!(event.getEntity() instanceof ServerPlayer player)) { + return; + } + if (!(player.getMainHandItem().getItem() instanceof ScorpionWhipItem)) { + return; + } + if (!ScorpionWhipTetherManager.hasTether(player)) { + return; + } + if (ScorpionWhipTetherManager.pullAndDetach(player)) { + event.setCanceled(true); + event.setCancellationResult(InteractionResult.SUCCESS); + } + } + + static void handleParalyzedAttackEntity(AttackEntityEvent event) { + if (isParalyzed(event.getEntity())) { + event.setCanceled(true); + } + } + + static void handleParalyzedLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { + if (isParalyzed(event.getEntity())) { + event.setCanceled(true); + } + } + + static void handleParalyzedRightClickBlock(PlayerInteractEvent.RightClickBlock event) { + if (isParalyzed(event.getEntity())) { + event.setCancellationResult(InteractionResult.FAIL); + event.setCanceled(true); + } + } + + static void handleParalyzedRightClickItem(PlayerInteractEvent.RightClickItem event) { + if (isParalyzed(event.getEntity())) { + event.setCancellationResult(InteractionResult.FAIL); + event.setCanceled(true); + } + } + + static void handleParalyzedEntityInteract(PlayerInteractEvent.EntityInteract event) { + if (isParalyzed(event.getEntity())) { + event.setCancellationResult(InteractionResult.FAIL); + event.setCanceled(true); + } + } + + static void handleParalyzedEntityInteractSpecific(PlayerInteractEvent.EntityInteractSpecific event) { + if (isParalyzed(event.getEntity())) { + event.setCancellationResult(InteractionResult.FAIL); + event.setCanceled(true); + } + } + + private static boolean isParalyzed(Player player) { + return player.hasEffect(AntarchyNeoforgeMisc.PARALYZED); + } + + static void handleDreamSandJump(LivingEvent.LivingJumpEvent event) { + LivingEntity livingEntity = event.getEntity(); + if (!AntarchySettings.dreamSandEnabled() || isDreamSandLowGravityBlacklisted(livingEntity)) { + clearDreamSandLowGravity(livingEntity); + } else if (isStandingOnDreamSand(livingEntity)) { + livingEntity.setDeltaMovement( + livingEntity.getDeltaMovement().x, + livingEntity.getDeltaMovement().y * AntarchySettings.dreamSandJumpVelocityMultiplier(), + livingEntity.getDeltaMovement().z + ); + DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); + access.antarchy$setDreamSandLowGravityActive(true); + access.antarchy$setDreamSandLowGravityTicksRemaining((int) Math.max(1L, Math.round(AntarchySettings.dreamSandEffectDurationSeconds() * 20.0D))); + access.antarchy$setDreamSandLandingGraceTicks(0); + } + + } + + static void tickDreadAndIchor(PlayerTickEvent.Post event) { + Player player = event.getEntity(); + if (player.level().isClientSide()) { + return; + } + if (player.isInFluidType(AntarchyNeoForgeFluidTypes.ICHOR_TYPE.get()) && AntarchySettings.ichorWitherEnabled()) { + player.addEffect(new MobEffectInstance(MobEffects.WITHER, 40, 0, false, true, true)); + } + } + + static void tickScorpionWhips(PlayerTickEvent.Post event) { + if (event.getEntity() instanceof ServerPlayer player) { + ScorpionWhipTetherManager.tick(player); + } + } + + static void tickDreamSandLowGravity(EntityTickEvent.Post event) { + if (!(event.getEntity() instanceof LivingEntity livingEntity)) { + return; + } + + DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); + int landingGraceTicks = access.antarchy$getDreamSandLandingGraceTicks(); + if (landingGraceTicks > 0) { + access.antarchy$setDreamSandLandingGraceTicks(landingGraceTicks - 1); + } + + if (!AntarchySettings.dreamSandEnabled() || isDreamSandLowGravityBlacklisted(livingEntity) || !access.antarchy$isDreamSandLowGravityActive()) { + return; + } + + int remainingTicks = access.antarchy$getDreamSandLowGravityTicksRemaining(); + if (remainingTicks > 0) { + access.antarchy$setDreamSandLowGravityTicksRemaining(remainingTicks - 1); + } + if (access.antarchy$getDreamSandLowGravityTicksRemaining() <= 0) { + clearDreamSandLowGravity(livingEntity); + return; + } + + if (isOnSolidGround(livingEntity)) { + access.antarchy$setDreamSandLowGravityActive(false); + access.antarchy$setDreamSandLowGravityTicksRemaining(0); + access.antarchy$setDreamSandLandingGraceTicks(2); + } else if (!livingEntity.onGround() && livingEntity.getDeltaMovement().y < 0.0D) { + livingEntity.setDeltaMovement( + livingEntity.getDeltaMovement().x, + livingEntity.getDeltaMovement().y * AntarchySettings.dreamSandGravityMultiplier(), + livingEntity.getDeltaMovement().z + ); + } + } + + private static boolean isOnSolidGround(LivingEntity livingEntity) { + return livingEntity.onGround() && livingEntity.getBlockStateOn().blocksMotion(); + } + + private static boolean isStandingOnDreamSand(LivingEntity livingEntity) { + return livingEntity.level().getBlockState(livingEntity.getOnPosLegacy()).is(AntarchyNeoforgeBlocks.DREAM_SAND.get()); + } + + static void handleAntiwaterFall(LivingFallEvent event) { + LivingEntity livingEntity = event.getEntity(); + if (intersectsAntiwater(livingEntity, livingEntity.getBoundingBox().inflate(0.05D))) { + event.setCanceled(true); + } + } + + static void handleDreamSandFall(LivingFallEvent event) { + LivingEntity livingEntity = event.getEntity(); + DreamSandLowGravityAccess access = dreamSandAccess(livingEntity); + if (!AntarchySettings.dreamSandEnabled() + || isDreamSandLowGravityBlacklisted(livingEntity) + || (!access.antarchy$isDreamSandLowGravityActive() && access.antarchy$getDreamSandLandingGraceTicks() <= 0)) { + return; + } + + event.setCanceled(true); + } + + private static boolean isDreamSandLowGravityBlacklisted(LivingEntity livingEntity) { + return livingEntity.getType().is(AntarchyTags.Entities.DREAM_SAND_LOW_GRAVITY_BLACKLIST); + } + + + private static boolean intersectsAntiwater(Entity entity, AABB box) { + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (PotentNyxiteBlock.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } + + static void onInvertedEffectExpired(MobEffectEvent.Expired event) { + if (event.getEffectInstance() == null) return; + if (!event.getEffectInstance().is(AntarchyNeoforgeMisc.INVERTED)) return; + LivingEntity entity = event.getEntity(); + if (!entity.level().isClientSide()) { + com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection( + entity, + com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN, + new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12)); + if (entity instanceof Player player) { + notifyNearbyReveriesOfInversionChange(player); + } + } + } + + private static void notifyNearbyReveriesOfInversionChange(Player player) { + for (ReverieEntity reverie : player.level().getEntitiesOfClass( + ReverieEntity.class, + player.getBoundingBox().inflate(48.0D) + )) { + reverie.syncFocusInversionState(); + } + } + + static void registerBrewingRecipes(RegisterBrewingRecipesEvent event) { + 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.BASILISK_FANG.get(), AntarchyNeoforgeMisc.PARALYSIS); + event.getBuilder().addMix(AntarchyNeoforgeMisc.PARALYSIS, Items.REDSTONE, AntarchyNeoforgeMisc.LONG_PARALYSIS); + event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.MOLEWORM_ITEM.get(), AntarchyNeoforgeMisc.HASTE); + event.getBuilder().addMix(AntarchyNeoforgeMisc.HASTE, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.STRONG_HASTE); + event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.CLOUD_SHARK_FIN.get(), Potions.SLOW_FALLING); + event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.CORNEA_EAR.get(), Potions.NIGHT_VISION); + event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.URANIUM_NUGGET.get(), AntarchyNeoforgeMisc.SHRINKING); + event.getBuilder().addMix(AntarchyNeoforgeMisc.SHRINKING, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.STRONG_SHRINKING); + event.getBuilder().addMix(AntarchyNeoforgeMisc.STRONG_SHRINKING, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.EXTREME_SHRINKING); + event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.TITANIUM_NUGGET.get(), AntarchyNeoforgeMisc.GROWING); + event.getBuilder().addMix(AntarchyNeoforgeMisc.GROWING, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.STRONG_GROWING); + event.getBuilder().addMix(AntarchyNeoforgeMisc.STRONG_GROWING, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.EXTREME_GROWING); + + } + + static void onMobEffectApplicable(MobEffectEvent.Applicable event) { + if (event.getEffectInstance() == null) { + return; + } + + if (event.getEffectInstance().is(AntarchyNeoforgeMisc.DREAD) && !(event.getEntity() instanceof Player)) { + event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); + return; + } + + if (event.getEntity() instanceof Player player && isWearingFullNightmareArmor(player) + && (event.getEffectInstance().is(net.minecraft.world.effect.MobEffects.WITHER) + || event.getEffectInstance().is(AntarchyNeoforgeMisc.DREAD))) { + event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); + return; + } + + if (event.getEntity().getType().is(AntarchyTags.Entities.INVERTED_IMMUNE) + && event.getEffectInstance().is(AntarchyNeoforgeMisc.INVERTED)) { + event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); + return; + } + + if (event.getEntity().getType().is(AntarchyTags.Entities.SIZE_CHANGING_IMMUNE) + && (event.getEffectInstance().is(AntarchyNeoforgeMisc.SHRINKING_EFFECT) || event.getEffectInstance().is(AntarchyNeoforgeMisc.GROWTH_EFFECT))) { + event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); + return; + } + + if (event.getEntity().getType().is(AntarchyTags.Entities.PARALYSIS_IMMUNE) + && event.getEffectInstance().is(AntarchyNeoforgeMisc.PARALYZED)) { + event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); + return; + } + + if (event.getEntity() instanceof Player player + && event.getEffectInstance().is(AntarchyNeoforgeMisc.INVERTED) + && !player.hasEffect(AntarchyNeoforgeMisc.INVERTED)) { + notifyNearbyReveriesOfInversionChange(player); + } + } + + + static void onInvertedEffectRemoved(MobEffectEvent.Remove event) { + if (!event.getEffect().is(AntarchyNeoforgeMisc.INVERTED)) return; + LivingEntity entity = event.getEntity(); + if (!entity.level().isClientSide()) { + com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection( + entity, + com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN, + new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12)); + if (entity instanceof Player player) { + notifyNearbyReveriesOfInversionChange(player); + } + } + } + + static void handleBlockToolModification(BlockEvent.BlockToolModificationEvent event) { + if (event.getItemAbility() != ItemAbilities.AXE_STRIP) { + return; + } + + BlockState state = event.getState(); + if (!state.hasProperty(RotatedPillarBlock.AXIS)) { + return; + } + + if (state.is(AntarchyNeoforgeBlocks.OURANWOOD_LOG.get())) { + event.setFinalState(AntarchyNeoforgeBlocks.STRIPPED_OURANWOOD_LOG.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); + return; + } + + if (state.is(AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_LOG.get())) { + event.setFinalState(AntarchyNeoforgeBlocks.STRIPPED_OURANWOOD_LOG.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); + return; + } + + if (state.is(AntarchyNeoforgeBlocks.OURANWOOD_WOOD.get())) { + event.setFinalState(AntarchyNeoforgeBlocks.STRIPPED_OURANWOOD_WOOD.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); + return; + } + + if (state.is(AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_WOOD.get())) { + event.setFinalState(AntarchyNeoforgeBlocks.STRIPPED_OURANWOOD_WOOD.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS))); + } + } + + static void onCommonSetup(FMLCommonSetupEvent event) { + BloodCrystalShardItem.SYNC_BLOODGLASS = AntarchyNeoForgeEvents::syncBloodglass; + event.enqueueWork(() -> { + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SHRINK_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.GROWTH_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); + LucidEyeProjectileEntity.defaultItemSupplier = () -> AntarchyNeoforgeItems.LUCID_PEARL.get(); + LucidEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; + FluidInteractionRegistry.addInteraction( + AntarchyNeoForgeFluidTypes.ANTIWATER_TYPE.get(), + new FluidInteractionRegistry.InteractionInformation( + NeoForgeMod.WATER_TYPE.value(), + fluidState -> fluidState.isSource() + ? AntarchyNeoforgeBlocks.ANTIMETAL.get().defaultBlockState() + : AntarchyNeoforgeBlocks.NYXITE.get().defaultBlockState() + ) + ); + LucidEntity.boltEntityTypeSupplier = () -> AntarchyNeoforgeEntites.LUCID_BOLT.get(); + LucidBoltEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; + LucidEyeProjectileEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; + MultipartFramework.bootstrap( + (owner, partIndex, spec) -> new MultipartPartEntity((Entity) owner, owner, partIndex, spec), + new MultipartFramework.NetworkBridge() { + @Override + public void sendAttack(java.util.UUID parentId, int partIndex, float damage) { + net.neoforged.neoforge.network.PacketDistributor.sendToServer( + new com.craisinlord.antarchy.content.entity.multipart.network.MultipartAttackPayload(parentId, partIndex, damage) + ); + } + + @Override + public void sendInteract(java.util.UUID parentId, int partIndex, int handId) { + net.neoforged.neoforge.network.PacketDistributor.sendToServer( + new com.craisinlord.antarchy.content.entity.multipart.network.MultipartInteractPayload(parentId, partIndex, handId) + ); + } + } + ); + 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.HUSHWEED.get().asItem(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeItems.CORNEA_EAR.get(), 0.65f); + }); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java new file mode 100644 index 00000000..5b258481 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java @@ -0,0 +1,392 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.neoforge.OuranwoodWoodTypes; +import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluidType; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.Registries; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockSetType; +import net.minecraft.world.level.block.state.properties.WoodType; +import net.minecraft.world.level.material.FlowingFluid; +import net.minecraft.world.level.material.FluidState; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +public final class AntarchyNeoforgeBlocks { + private static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Antarchy.MODID); + private static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, Antarchy.MODID); + + public static final DeferredBlock DUPLICATOR_LOG = BLOCKS.register("duplicator_log", + () -> new DuplicatorLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_LOG).randomTicks())); + public static final DeferredBlock OURANWOOD_LOG = BLOCKS.register("ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + public static final DeferredBlock OURANWOOD_WOOD = BLOCKS.register("ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + public static final DeferredBlock MOSSY_OURANWOOD_LOG = BLOCKS.register("mossy_ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + public static final DeferredBlock MOSSY_OURANWOOD_WOOD = BLOCKS.register("mossy_ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + public static final DeferredBlock STRIPPED_OURANWOOD_LOG = BLOCKS.register("stripped_ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + public static final DeferredBlock STRIPPED_OURANWOOD_WOOD = BLOCKS.register("stripped_ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + public static final DeferredBlock OURANWOOD_PLANKS = BLOCKS.register("ouranwood_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + public static final DeferredBlock OURANWOOD_STAIRS = BLOCKS.register("ouranwood_stairs", + () -> new StairBlock(OURANWOOD_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + public static final DeferredBlock OURANWOOD_SLAB = BLOCKS.register("ouranwood_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + public static final DeferredBlock OURANWOOD_FENCE = BLOCKS.register("ouranwood_fence", + () -> new FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + public static final DeferredBlock OURANWOOD_FENCE_GATE = BLOCKS.register("ouranwood_fence_gate", + () -> new FenceGateBlock(WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + public static final DeferredBlock OURANWOOD_DOOR = BLOCKS.register("ouranwood_door", + () -> new DoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + public static final DeferredBlock OURANWOOD_TRAPDOOR = BLOCKS.register("ouranwood_trapdoor", + () -> new TrapDoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + public static final DeferredBlock OURANWOOD_PRESSURE_PLATE = BLOCKS.register("ouranwood_pressure_plate", + () -> new PressurePlateBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + public static final DeferredBlock OURANWOOD_BUTTON = BLOCKS.register("ouranwood_button", + () -> new ButtonBlock(BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + public static final DeferredBlock OURANWOOD_LEAVES = BLOCKS.register("ouranwood_leaves", + () -> new OuranwoodLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + public static final DeferredBlock OURANWOOD_ACORN_BLOCK = BLOCKS.register("ouranwood_acorn", + () -> new OuranwoodAcornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock ORANGE_MILKWEED = BLOCKS.register("orange_milkweed", + () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + public static final DeferredBlock PINK_MILKWEED = BLOCKS.register("pink_milkweed", + () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + public static final DeferredBlock TORCHFLOWER_BUSH = BLOCKS.register("torchflower_bush", + () -> new TorchflowerBushBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY) + .lightLevel(state -> AntarchySettings.glowingTorchflowers() ? 15 : 0))); + public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", + () -> new StandingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", + () -> new WallSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + public static final DeferredBlock OURANWOOD_HANGING_SIGN = BLOCKS.register("ouranwood_hanging_sign", + () -> new CeilingHangingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + public static final DeferredBlock OURANWOOD_WALL_HANGING_SIGN = BLOCKS.register("ouranwood_wall_hanging_sign", + () -> new WallHangingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + public static final DeferredBlock DUPLICATOR_SAPLING = BLOCKS.register("duplicator_sapling", + () -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + public static final DeferredBlock DUCT_TAPE = BLOCKS.register("duct_tape", + () -> new DuctTapeBlock(BlockBehaviour.Properties.of() + .strength(0.2F) + .sound(SoundType.WOOL) + .noOcclusion() + .replaceable())); + public static final DeferredBlock INFESTED_ROOTED_DIRT = BLOCKS.register("infested_rooted_dirt", + () -> new InfestedRootedDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.ROOTED_DIRT).randomTicks())); + public static final DeferredBlock INFESTED_COARSE_DIRT = BLOCKS.register("infested_coarse_dirt", + () -> new InfestedCoarseDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).randomTicks())); + public static final DeferredBlock NYXITE = BLOCKS.register("nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE = BLOCKS.register("polished_nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock CHISELED_NYXITE = BLOCKS.register("chiseled_nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICKS = BLOCKS.register("nyxite_bricks", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock NYXITE_STAIRS = BLOCKS.register("nyxite_stairs", + () -> new StairBlock(NYXITE.get().defaultBlockState(), nyxiteProperties())); + public static final DeferredBlock NYXITE_SLAB = BLOCKS.register("nyxite_slab", + () -> new SlabBlock(nyxiteProperties())); + public static final DeferredBlock NYXITE_WALL = BLOCKS.register("nyxite_wall", + () -> new WallBlock(nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE_STAIRS = BLOCKS.register("polished_nyxite_stairs", + () -> new StairBlock(POLISHED_NYXITE.get().defaultBlockState(), nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE_SLAB = BLOCKS.register("polished_nyxite_slab", + () -> new SlabBlock(nyxiteProperties())); + public static final DeferredBlock POLISHED_NYXITE_WALL = BLOCKS.register("polished_nyxite_wall", + () -> new WallBlock(nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICK_STAIRS = BLOCKS.register("nyxite_brick_stairs", + () -> new StairBlock(NYXITE_BRICKS.get().defaultBlockState(), nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICK_SLAB = BLOCKS.register("nyxite_brick_slab", + () -> new SlabBlock(nyxiteProperties())); + public static final DeferredBlock NYXITE_BRICK_WALL = BLOCKS.register("nyxite_brick_wall", + () -> new WallBlock(nyxiteProperties())); + public static final DeferredBlock TRIFFID_GOO_BLOCK = BLOCKS.register("triffid_goo_block", + () -> new com.craisinlord.antarchy.content.block.TriffidGooBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SLIME_BLOCK).noOcclusion().isViewBlocking((s, l, p) -> false).isSuffocating((s, l, p) -> false))); + public static final DeferredBlock CLOUD_BLOCK = BLOCKS.register("cloud_block", + () -> new com.craisinlord.antarchy.content.block.CloudBlock( + AntarchyNeoforgeItems::cloudBucketItem, + BlockBehaviour.Properties.ofFullCopy(Blocks.POWDER_SNOW).noLootTable().noOcclusion() + )); + public static final DeferredBlock PALE_NYXITE = BLOCKS.register("pale_nyxite", + () -> new Block(nyxiteProperties())); + public static final DeferredBlock NYXITE_SPIKE = BLOCKS.register("nyxite_spike", + () -> new NyxiteSpikeBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POINTED_DRIPSTONE))); + public static final DeferredBlock POTENT_NYXITE = BLOCKS.register("potent_nyxite", + () -> new PotentNyxiteBlock( + AntarchyNeoforgeItems::potentNyxiteBlockEntityType, + BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK).lightLevel(state -> 3) + )); + public static final DeferredBlock UMBRAL_MOSS_BLOCK = BLOCKS.register("umbral_moss_block", + () -> new UmbralMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); + public static final DeferredBlock UMBRAL_MOSS_CARPET = BLOCKS.register("umbral_moss_carpet", + () -> new UmbralMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion())); + public static final DeferredBlock DREAM_TORCH = BLOCKS.register("dream_torch", + () -> new DreamTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); + public static final DeferredBlock DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch", + () -> new DreamWallTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_WALL_TORCH))); + public static final DeferredBlock DREAM_LANTERN = BLOCKS.register("dream_lantern", + () -> new LanternBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_LANTERN))); + public static final DeferredBlock DREAM_CAMPFIRE = BLOCKS.register("dream_campfire", + () -> new DreamCampfireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_CAMPFIRE))); + public static final DeferredBlock DREAM_FIRE = BLOCKS.register("dream_fire", + () -> new DreamFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); + public static final DeferredBlock DREAM_CEILING_FIRE = BLOCKS.register("dream_fire_ceiling", + () -> new DreamCeilingFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); + public static final DeferredBlock BED_BUG_EGG = BLOCKS.register("bed_bug_egg", + () -> new BedBugEggBlock(BlockBehaviour.Properties.of() + .strength(0.15F) + .sound(SoundType.METAL) + .randomTicks() + .noOcclusion() + .noCollission() + .replaceable())); + public static final DeferredBlock WASP_NEST = BLOCKS.register("wasp_nest", + () -> new WaspNestBlock(AntarchyNeoforgeItems::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST))); + public static final DeferredBlock OURANWOOD_SQUIRREL_NEST = BLOCKS.register("ouranwood_squirrel_nest", + () -> new com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).noLootTable())); + public static final DeferredBlock HUSHWEED = BLOCKS.register("hushweed", + () -> new HushweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AZALEA).noCollission().noOcclusion())); + public static final DeferredBlock ICHOR_BLOCK = BLOCKS.register("ichor", + () -> new LiquidBlock((FlowingFluid) AntarchyNeoforgeMisc.ICHOR.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); + public static final DeferredBlock 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 RED_ANT_NEST = BLOCKS.register("red_ant_nest", + () -> new AntNestBlock( + AntarchyNeoforgeEntites.RED_ANT, + AntarchyNeoforgeItems::antNestBlockEntityType, + true, + BlockBehaviour.Properties.ofFullCopy(Blocks.MAGMA_BLOCK).lightLevel(state -> 3).noLootTable() + )); + public static final DeferredBlock BROWN_ANT_NEST = BLOCKS.register("brown_ant_nest", + () -> new AntNestBlock(AntarchyNeoforgeEntites.BROWN_ANT, AntarchyNeoforgeItems::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); + public static final DeferredBlock RAINBOW_ANT_NEST = BLOCKS.register("rainbow_ant_nest", + () -> new AntNestBlock(AntarchyNeoforgeEntites.RAINBOW_ANT, AntarchyNeoforgeItems::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); + public static final DeferredBlock URANIUM_ORE = BLOCKS.register("uranium_ore", + () -> createOre(Blocks.EMERALD_ORE, 4, 8)); + public static final DeferredBlock DEEPSLATE_URANIUM_ORE = BLOCKS.register("deepslate_uranium_ore", + () -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8)); + public static final DeferredBlock TITANIUM_ORE = BLOCKS.register("titanium_ore", + () -> createOre(Blocks.DIAMOND_ORE, 4, 8)); + public static final DeferredBlock DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore", + () -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8)); + public static final DeferredBlock URANIUM_BLOCK = BLOCKS.register("uranium_block", + () -> createStorageBlock(Blocks.EMERALD_BLOCK)); + public static final DeferredBlock TITANIUM_BLOCK = BLOCKS.register("titanium_block", + () -> createStorageBlock(Blocks.DIAMOND_BLOCK)); + public static final DeferredBlock RAW_URANIUM_BLOCK = BLOCKS.register("raw_uranium_block", + () -> createRawStorageBlock(Blocks.RAW_GOLD_BLOCK)); + public static final DeferredBlock RAW_TITANIUM_BLOCK = BLOCKS.register("raw_titanium_block", + () -> createRawStorageBlock(Blocks.RAW_IRON_BLOCK)); + public static final DeferredBlock CUT_URANIUM = BLOCKS.register("cut_uranium", + () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); + public static final DeferredBlock CUT_TITANIUM = BLOCKS.register("cut_titanium", + () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); + public static final DeferredBlock CUT_URANIUM_SLAB = BLOCKS.register("cut_uranium_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); + public static final DeferredBlock CUT_TITANIUM_SLAB = BLOCKS.register("cut_titanium_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); + public static final DeferredBlock CUT_URANIUM_STAIRS = BLOCKS.register("cut_uranium_stairs", + () -> new StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); + public static final DeferredBlock CUT_TITANIUM_STAIRS = BLOCKS.register("cut_titanium_stairs", + () -> new StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); + public static final DeferredBlock CHISELED_URANIUM = BLOCKS.register("chiseled_uranium", + () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); + public static final DeferredBlock CHISELED_TITANIUM = BLOCKS.register("chiseled_titanium", + () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); + public static final DeferredBlock URANIUM_BULB = BLOCKS.register("uranium_bulb", + () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); + public static final DeferredBlock TITANIUM_BULB = BLOCKS.register("titanium_bulb", + () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); + public static final DeferredBlock URANIUM_DOOR = BLOCKS.register("uranium_door", + () -> new DoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); + public static final DeferredBlock TITANIUM_DOOR = BLOCKS.register("titanium_door", + () -> new DoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); + public static final DeferredBlock URANIUM_TRAPDOOR = BLOCKS.register("uranium_trapdoor", + () -> new TrapDoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); + public static final DeferredBlock TITANIUM_TRAPDOOR = BLOCKS.register("titanium_trapdoor", + () -> new TrapDoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); + public static final DeferredBlock URANIUM_BARS = BLOCKS.register("uranium_bars", + () -> new IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); + public static final DeferredBlock TITANIUM_BARS = BLOCKS.register("titanium_bars", + () -> new IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); + public static final DeferredBlock ANTIMETAL = BLOCKS.register("antimetal", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BASALT))); + public static final DeferredBlock POLISHED_ANTIMETAL = BLOCKS.register("polished_antimetal", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POLISHED_BASALT))); + public static final DeferredBlock ANTIMETAL_SCAFFOLDING = BLOCKS.register("antimetal_scaffolding", + () -> new com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SCAFFOLDING))); + public static final DeferredBlock CORNEA_STALK = BLOCKS.register("cornea_stalk", + () -> new CorneaStalkBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SWEET_BERRY_BUSH).randomTicks())); + public static final DeferredBlock SMALL_BLOOD_CRYSTAL_BUD = BLOCKS.register("small_blood_crystal_bud", + () -> new AmethystClusterBlock(3.0F, 4.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.SMALL_AMETHYST_BUD))); + public static final DeferredBlock MEDIUM_BLOOD_CRYSTAL_BUD = BLOCKS.register("medium_blood_crystal_bud", + () -> new AmethystClusterBlock(4.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.MEDIUM_AMETHYST_BUD))); + public static final DeferredBlock LARGE_BLOOD_CRYSTAL_BUD = BLOCKS.register("large_blood_crystal_bud", + () -> new AmethystClusterBlock(5.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.LARGE_AMETHYST_BUD))); + public static final DeferredBlock BUDDING_BLOOD_CRYSTAL = BLOCKS.register("budding_blood_crystal", + () -> new BuddingBloodCrystalBlock( + BlockBehaviour.Properties.ofFullCopy(Blocks.BUDDING_AMETHYST), + AntarchyNeoforgeBlocks::smallBloodCrystalBudBlock, + AntarchyNeoforgeBlocks::mediumBloodCrystalBudBlock, + AntarchyNeoforgeBlocks::largeBloodCrystalBudBlock, + AntarchyNeoforgeBlocks::bloodCrystalCrystalBlock + )); + public static final DeferredBlock BLOOD_CRYSTAL = BLOCKS.register("blood_crystal_block", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); + public static final DeferredBlock BLOOD_CRYSTAL_CRYSTAL = BLOCKS.register("blood_crystal_cluster", + () -> new AmethystClusterBlock(7.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_CLUSTER))); + public static final DeferredBlock DREAM_SAND = BLOCKS.register("dream_sand", + () -> new DreamSandBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SAND))); + public static final DeferredBlock DREAM_SANDSTONE = BLOCKS.register("dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE))); + public static final DeferredBlock CHISELED_DREAM_SANDSTONE = BLOCKS.register("chiseled_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CHISELED_SANDSTONE))); + public static final DeferredBlock CUT_DREAM_SANDSTONE = BLOCKS.register("cut_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE))); + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE = BLOCKS.register("smooth_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE))); + public static final DeferredBlock DREAM_SANDSTONE_STAIRS = BLOCKS.register("dream_sandstone_stairs", + () -> new StairBlock(DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_STAIRS))); + public static final DeferredBlock DREAM_SANDSTONE_SLAB = BLOCKS.register("dream_sandstone_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_SLAB))); + public static final DeferredBlock DREAM_SANDSTONE_WALL = BLOCKS.register("dream_sandstone_wall", + () -> new WallBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_WALL))); + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_STAIRS = BLOCKS.register("smooth_dream_sandstone_stairs", + () -> new StairBlock(SMOOTH_DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_STAIRS))); + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_SLAB = BLOCKS.register("smooth_dream_sandstone_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_SLAB))); + public static final DeferredBlock CUT_DREAM_SANDSTONE_SLAB = BLOCKS.register("cut_dream_sandstone_slab", + () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB))); + + // Block entity types + public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", + () -> BlockEntityType.Builder.of( + AntNestBlockEntity::new, + RED_ANT_NEST.get(), + BROWN_ANT_NEST.get(), + RAINBOW_ANT_NEST.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> DREAM_CAMPFIRE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("dream_campfire", + () -> BlockEntityType.Builder.of( + DreamCampfireBlockEntity::new, + DREAM_CAMPFIRE.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> WASP_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("wasp_nest", + () -> BlockEntityType.Builder.of( + WaspNestBlockEntity::new, + WASP_NEST.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> HUSHWEED_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("hushweed", + () -> BlockEntityType.Builder.of( + HushweedBlockEntity::new, + HUSHWEED.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> POTENT_NYXITE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("potent_nyxite", + () -> BlockEntityType.Builder.of( + (pos, state) -> new PotentNyxiteBlockEntity(pos, state, AntarchyNeoforgeItems::potentNyxiteBlockEntityType), + POTENT_NYXITE.get() + ).build(null)); + + private AntarchyNeoforgeBlocks() {} + + public static void register(IEventBus modEventBus) { + BLOCKS.register(modEventBus); + BLOCK_ENTITY_TYPES.register(modEventBus); + } + + static BlockBehaviour.Properties nyxiteProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK); + } + + private static Block createOre(Block copyFrom, int minExperience, int maxExperience) { + return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + static Block createStorageBlock(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + static Block createHorizontalFacingStorageBlock(Block copyFrom) { + return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + static Block createRawStorageBlock(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom) + .strength(3.5F, 6.0F) + .requiresCorrectToolForDrops()); + } + + private static Block smallBloodCrystalBudBlock() { + return SMALL_BLOOD_CRYSTAL_BUD.get(); + } + + private static Block mediumBloodCrystalBudBlock() { + return MEDIUM_BLOOD_CRYSTAL_BUD.get(); + } + + private static Block largeBloodCrystalBudBlock() { + return LARGE_BLOOD_CRYSTAL_BUD.get(); + } + + private static Block bloodCrystalCrystalBlock() { + return BLOOD_CRYSTAL_CRYSTAL.get(); + } + + private static final class SimpleHorizontalFacingBlock extends HorizontalDirectionalBlock { + private static final MapCodec CODEC = simpleCodec(SimpleHorizontalFacingBlock::new); + + private SimpleHorizontalFacingBlock(BlockBehaviour.Properties properties) { + super(properties); + registerDefaultState(stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @Override + protected MapCodec codec() { + return CODEC; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return state.rotate(mirror.getRotation(state.getValue(FACING))); + } + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java new file mode 100644 index 00000000..44558ddc --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java @@ -0,0 +1,400 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.item.*; +import net.minecraft.world.item.alchemy.PotionContents; +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() {} + + private static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Antarchy.MODID); + + public static void register(IEventBus modEventBus) { + CREATIVE_MODE_TABS.register(modEventBus); + modEventBus.addListener(AntarchyNeoforgeCreativeModeTabs::buildCreativeTabs); + } + + public static final DeferredHolder ANTARCHY_TAB = CREATIVE_MODE_TABS.register("antarchy", + () -> CreativeModeTab.builder() + .title(net.minecraft.network.chat.Component.translatable("itemGroup.antarchy.antarchy")) + .icon(() -> new ItemStack(AntarchyNeoforgeItems.BIG_BERTHA.get())) + .displayItems((parameters, output) -> {}) + .build()); + + + static void buildCreativeTabs(BuildCreativeModeTabContentsEvent event) { + if (event.getTabKey() == ANTARCHY_TAB.getKey()) { + java.util.ArrayList sortedItems = new java.util.ArrayList<>(); + for (var holder : AntarchyNeoforgeItems.ITEMS.getEntries()) { + Item item = holder.get(); + if (item != Items.AIR) sortedItems.add(item); + } + sortedItems.sort(Comparator + .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); + } + + if (event.getTabKey() == CreativeModeTabs.SPAWN_EGGS) { + event.accept(AntarchyNeoforgeItems.EASTER_BUNNY_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.FLYING_SQUIRREL_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.CATERPILLAR_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.BUTTERFLY_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.REVERIE_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.BRUTALFLY_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.RED_ANT_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.BROWN_ANT_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.RAINBOW_ANT_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.MOLEWORM_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.MANTIS_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.MOLEVORE_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.TRIFFID_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.APPLE_COW_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.GOLDEN_APPLE_COW_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.DR_TRAYAURUS_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.WASP_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.BOMBER_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.CLOUD_SHARK_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.KRAKEN_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.MISSILE_SQUID_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.NIGHTMARE_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.BED_BUG_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.LUCID_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.SCORPION_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.BASILISK_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_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.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.TORCHFLOWER_BUSH_ITEM.get()); + event.accept(AntarchyNeoforgeItems.HUSHWEED_ITEM.get()); + event.accept(AntarchyNeoforgeItems.INFESTED_ROOTED_DIRT_ITEM.get()); + event.accept(AntarchyNeoforgeItems.INFESTED_COARSE_DIRT_ITEM.get()); + event.accept(AntarchyNeoforgeItems.TRIFFID_GOO_BLOCK_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BED_BUG_EGG_ITEM.get()); + event.accept(AntarchyNeoforgeItems.WASP_NEST_ITEM.get()); + event.accept(AntarchyNeoforgeItems.RED_ANT_NEST_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BROWN_ANT_NEST_ITEM.get()); + event.accept(AntarchyNeoforgeItems.RAINBOW_ANT_NEST_ITEM.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_ORE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DEEPSLATE_URANIUM_ORE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_ORE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DEEPSLATE_TITANIUM_ORE_ITEM.get()); + } + + if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) { + event.insertAfter(new ItemStack(Items.SHEARS), new ItemStack(AntarchyNeoforgeItems.DUCT_TAPE_ITEM.get()), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + 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.CLOUD_BUCKET.get()); + event.accept(AntarchyNeoforgeItems.REVERIE_BOTTLE.get()); + event.accept(AntarchyNeoforgeItems.ULTIMATE_PICKAXE.get()); + event.accept(AntarchyNeoforgeItems.ULTIMATE_AXE.get()); + event.accept(AntarchyNeoforgeItems.ULTIMATE_SHOVEL.get()); + event.accept(AntarchyNeoforgeItems.ULTIMATE_HOE.get()); + } + + if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) { + event.accept(AntarchyNeoforgeItems.RAW_URANIUM_SCRAP.get()); + event.accept(AntarchyNeoforgeItems.RAW_TITANIUM_SCRAP.get()); + event.accept(AntarchyNeoforgeItems.RAW_URANIUM.get()); + event.accept(AntarchyNeoforgeItems.RAW_TITANIUM.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_NUGGET.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_NUGGET.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_INGOT.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_INGOT.get()); + event.accept(AntarchyNeoforgeItems.CLOUD_SHARK_FIN.get()); + event.accept(AntarchyNeoforgeItems.CLOUD_SHARK_FIN_SOUP.get()); + event.accept(AntarchyNeoforgeItems.BASILISK_FANG.get()); + event.accept(AntarchyNeoforgeItems.NIGHTMARE_SCALE.get()); + event.accept(AntarchyNeoforgeItems.MOLEVORE_NOSE.get()); + event.accept(AntarchyNeoforgeItems.MOLEWORM_ITEM.get()); + event.accept(AntarchyNeoforgeItems.MUD_PIE.get()); + event.accept(AntarchyNeoforgeItems.LUCID_EYE.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_SHARD.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_APPLE.get()); + event.accept(AntarchyNeoforgeItems.MANTIS_CLAW.get()); + event.accept(AntarchyNeoforgeItems.BRUTALFLY_WING.get()); + event.accept(AntarchyNeoforgeItems.PRIMORDIAL_SCUTE.get()); + event.accept(AntarchyNeoforgeItems.TRIFFID_GOO.get()); + event.accept(AntarchyNeoforgeItems.VORTEX_EYE.get()); + event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_STINGER.get()); + event.accept(AntarchyNeoforgeItems.KRAKEN_TOOTH.get()); + event.accept(AntarchyNeoforgeItems.JUMPY_BUG_LEG.get()); + event.accept(AntarchyNeoforgeItems.CORNEA_EAR.get()); + event.accept(AntarchyNeoforgeItems.RAINBOW_SUGAR.get()); + event.accept(AntarchyNeoforgeItems.BIG_BERTHA_BLADE.get()); + event.accept(AntarchyNeoforgeItems.BIG_BERTHA_HANDLE.get()); + event.accept(AntarchyNeoforgeItems.BIG_BERTHA_HILT.get()); + } + + if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) { + event.accept(AntarchyNeoforgeItems.OURANWOOD_LOG_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_WOOD_ITEM.get()); + event.accept(AntarchyNeoforgeItems.MOSSY_OURANWOOD_LOG_ITEM.get()); + event.accept(AntarchyNeoforgeItems.MOSSY_OURANWOOD_WOOD_ITEM.get()); + event.accept(AntarchyNeoforgeItems.STRIPPED_OURANWOOD_LOG_ITEM.get()); + event.accept(AntarchyNeoforgeItems.STRIPPED_OURANWOOD_WOOD_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_PLANKS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_FENCE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_FENCE_GATE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_BOAT.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_CHEST_BOAT.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_DOOR_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_TRAPDOOR_ITEM.get()); + event.accept(AntarchyNeoforgeItems.OURANWOOD_PRESSURE_PLATE_ITEM.get()); + 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.NYXITE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_WALL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_WALL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_BRICKS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_BRICK_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_BRICK_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_BRICK_WALL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CHISELED_NYXITE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.PALE_NYXITE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.NYXITE_SPIKE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POTENT_NYXITE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_BLOCK_ITEM.get()); + event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_CARPET_ITEM.get()); + event.accept(AntarchyNeoforgeItems.ANTIMETAL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_ANTIMETAL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.ANTIMETAL_SCAFFOLDING_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.DREAM_SAND_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CHISELED_DREAM_SANDSTONE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_DREAM_SANDSTONE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SMOOTH_DREAM_SANDSTONE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_WALL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SMOOTH_DREAM_SANDSTONE_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_DREAM_SANDSTONE_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BUDDING_BLOOD_CRYSTAL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_CRYSTAL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SMALL_BLOOD_CRYSTAL_BUD_ITEM.get()); + event.accept(AntarchyNeoforgeItems.MEDIUM_BLOOD_CRYSTAL_BUD_ITEM.get()); + event.accept(AntarchyNeoforgeItems.LARGE_BLOOD_CRYSTAL_BUD_ITEM.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_BLOCK_ITEM.get()); + event.accept(AntarchyNeoforgeItems.RAW_URANIUM_BLOCK_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_URANIUM_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_URANIUM_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_URANIUM_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CHISELED_URANIUM_ITEM.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_DOOR_ITEM.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_TRAPDOOR_ITEM.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_BARS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.URANIUM_BULB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_BLOCK_ITEM.get()); + event.accept(AntarchyNeoforgeItems.RAW_TITANIUM_BLOCK_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_TITANIUM_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_TITANIUM_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CUT_TITANIUM_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CHISELED_TITANIUM_ITEM.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_DOOR_ITEM.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_TRAPDOOR_ITEM.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_BARS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.TITANIUM_BULB_ITEM.get()); + } + + if (event.getTabKey() == CreativeModeTabs.COMBAT) { + event.accept(AntarchyNeoforgeItems.BATTLE_AXE.get()); + event.accept(AntarchyNeoforgeItems.BIG_BERTHA.get()); + event.accept(AntarchyNeoforgeItems.BASILISK_DAGGER.get()); + event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_HELMET.get(), event.getParameters().holders())); + event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_CHESTPLATE.get(), event.getParameters().holders())); + event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_LEGGINGS.get(), event.getParameters().holders())); + event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_BOOTS.get(), event.getParameters().holders())); + event.accept(AntarchyNeoforgeItems.ULTIMATE_SWORD.get()); + 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.SHRINK_RAY.get()); + event.accept(AntarchyNeoforgeItems.GROWTH_RAY.get()); + event.accept(AntarchyNeoforgeItems.GRAVITY_GUN.get()); + event.accept(AntarchyNeoforgeItems.LUCID_PEARL.get()); + event.accept(AntarchyNeoforgeItems.NIGHTMARE_HELMET.get()); + event.accept(AntarchyNeoforgeItems.NIGHTMARE_CHESTPLATE.get()); + event.accept(AntarchyNeoforgeItems.NIGHTMARE_LEGGINGS.get()); + event.accept(AntarchyNeoforgeItems.NIGHTMARE_BOOTS.get()); + event.accept(AntarchyNeoforgeItems.NIGHTMARE_SWORD.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_KATANA.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_HELMET.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_CHESTPLATE.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_LEGGINGS.get()); + event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_BOOTS.get()); + event.accept(AntarchyNeoforgeItems.MOGGLES.get()); + event.accept(AntarchyNeoforgeItems.SCORPION_WHIP.get()); + event.accept(AntarchyNeoforgeItems.FALLEN_KING_CROWN.get()); + event.accept(AntarchyNeoforgeItems.BRUTALFLY_ELYTRA.get()); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.SHRINKING)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.STRONG_SHRINKING)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.EXTREME_SHRINKING)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.PARALYSIS)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.LONG_PARALYSIS)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.HASTE)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.STRONG_HASTE)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.GROWING)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.STRONG_GROWING)); + event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.EXTREME_GROWING)); + } + } + + 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; + + // 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 - Antimetal blocks + case "antimetal", "polished_antimetal" -> 2; + + // 3 - 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" -> 3; + + // 4 - Umbral moss + case "umbral_moss_block", "umbral_moss_carpet" -> 4; + + // 5 - 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" -> 5; + + // 6 - Raw ores + case "raw_uranium", "raw_titanium", "raw_uranium_scrap", "raw_titanium_scrap", + "raw_uranium_block", "raw_titanium_block" -> 6; + + // 7 - 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" -> 7; + + // 8 - Ouranwood leaves + case "ouranwood_leaves" -> 8; + + // 9 - Saplings / seeds + case "duplicator_sapling", "ouranwood_acorn" -> 9; + + // 10 - Plants and flowers + case "orange_milkweed", "pink_milkweed", "torchflower_bush", "hushweed", + "triffid_goo_block", "wasp_nest", + "red_ant_nest", "brown_ant_nest", "rainbow_ant_nest" -> 10; + + // 11 - Dream lighting + case "dream_torch", "dream_lantern", "dream_campfire" -> 11; + + // 12 - Antimetal scaffolding + case "antimetal_scaffolding" -> 12; + + // 13 - Infested blocks + case "infested_rooted_dirt", "infested_coarse_dirt", "bed_bug_egg" -> 13; + + // 14 - Tools + case "ultimate_pickaxe", "ultimate_axe", "ultimate_shovel", "ultimate_hoe", + "duct_tape", "diamond_minecart", "gravity_sculk_sensor" -> 14; + + // 15 - Liquid buckets + case "ichor_bucket", "antiwater_bucket", "cloud_bucket" -> 15; + + // 16 - Misc wearables / gadgets + case "moggles", "brutalfly_elytra", "fallen_king_crown" -> 16; + + // 17 - Weapons + case "battle_axe", "basilisk_dagger", "squidzooka", "shrink_ray", "growth_ray", + "gravity_gun", "nightmare_sword", "lucid_pearl", "scorpion_whip", "blood_crystal_katana", + "big_bertha", "big_bertha_blade", "big_bertha_handle", "big_bertha_hilt", + "ultimate_sword", "ultimate_mace" -> 17; + + // 18 - Armor sets + case "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" -> 18; + + // 19 - Ranged weapons + case "ultimate_bow", "ultimate_crossbow" -> 19; + + // 20 - Foods + case "cloud_shark_fin_soup", "mud_pie", "rainbow_sugar", + "blood_crystal_apple" -> 20; + + // 21 - 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" -> 21; + + // 22 - Arrows (reserved for future arrow types) + + // 23 - Potions + case "reverie_bottle" -> 23; + + // 24 - 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") ? 24 : 99; + } + }; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java new file mode 100644 index 00000000..1bbcb8c9 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java @@ -0,0 +1,270 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.HoneyedAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +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.ReverieEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +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.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.animal.Cow; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.fml.ModList; +import net.neoforged.neoforge.registries.DeferredRegister; + +public final class AntarchyNeoforgeEntites { + private static final DeferredRegister> ENTITY_TYPES = DeferredRegister.create(Registries.ENTITY_TYPE, Antarchy.MODID); + + public static final boolean CREATE_LOADED = isModLoaded("create"); + + private static boolean isModLoaded(String modId) { + try { + return ModList.get().isLoaded(modId); + } catch (Throwable ignored) { + return false; + } + } + + public static final DeferredHolder, EntityType> RED_ANT = ENTITY_TYPES.register("red_ant", + () -> buildAntType(RedAntEntity::new, MobCategory.CREATURE, "red_ant")); + public static final DeferredHolder, EntityType> BROWN_ANT = ENTITY_TYPES.register("brown_ant", + () -> buildAntType(BrownAntEntity::new, MobCategory.CREATURE, "brown_ant")); + public static final DeferredHolder, EntityType> RAINBOW_ANT = ENTITY_TYPES.register("rainbow_ant", + () -> buildAntType(RainbowAntEntity::new, MobCategory.CREATURE, "rainbow_ant")); + public static final DeferredHolder, EntityType> MOLEWORM = ENTITY_TYPES.register("moleworm", + () -> EntityType.Builder.of(MolewormEntity::new, MobCategory.MONSTER) + .sized(0.4F, 0.3F) + .clientTrackingRange(8) + .build("moleworm")); + public static final DeferredHolder, EntityType> MANTIS = ENTITY_TYPES.register("mantis", + () -> EntityType.Builder.of(MantisEntity::new, MobCategory.MONSTER) + .sized(3.125F, 2.5F) + .clientTrackingRange(8) + .build("mantis")); + public static final DeferredHolder, EntityType> OURANWOOD_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_boat", + () -> EntityType.Builder.of(OuranwoodBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("ouranwood_boat")); + public static final DeferredHolder, EntityType> OURANWOOD_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_chest_boat", + () -> EntityType.Builder.of(OuranwoodChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("ouranwood_chest_boat")); + public static final DeferredHolder, EntityType> MOLEVORE = ENTITY_TYPES.register("molevore", + () -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER) + .sized(1.95F, 1.1F) + .clientTrackingRange(10) + .build("molevore")); + public static final DeferredHolder, EntityType> TRIFFID = ENTITY_TYPES.register("triffid", + () -> EntityType.Builder.of(TriffidEntity::new, MobCategory.MONSTER) + .sized(2.0F, 5.0F) + .clientTrackingRange(10) + .build("triffid")); + public static final DeferredHolder, EntityType> BED_BUG = ENTITY_TYPES.register("bed_bug", + () -> EntityType.Builder.of(BedBugEntity::new, MobCategory.CREATURE) + .sized(1.15F, 0.8F) + .clientTrackingRange(8) + .build("bed_bug")); + public static final DeferredHolder, EntityType> WASP = ENTITY_TYPES.register("wasp", + () -> EntityType.Builder.of(WaspEntity::new, MobCategory.MONSTER) + .sized(0.8625F, 1.365F) + .clientTrackingRange(8) + .build("wasp")); + public static final DeferredHolder, EntityType> BOMBER = ENTITY_TYPES.register("bomber", + () -> EntityType.Builder.of(BomberEntity::new, MobCategory.MONSTER) + .sized(0.55F, 0.75F) + .clientTrackingRange(8) + .build("bomber")); + public static final DeferredHolder, EntityType> SHRINK_RAY_PROJECTILE = ENTITY_TYPES.register("shrink_ray_projectile", + () -> EntityType.Builder.of(SizeRayProjectileEntity::createShrink, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("shrink_ray_projectile")); + public static final DeferredHolder, EntityType> GROWTH_RAY_PROJECTILE = ENTITY_TYPES.register("growth_ray_projectile", + () -> EntityType.Builder.of(SizeRayProjectileEntity::createGrowth, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("growth_ray_projectile")); + public static final DeferredHolder, EntityType> DIAMOND_MINECART = ENTITY_TYPES.register("diamond_minecart", + () -> EntityType.Builder.of((entityType, level) -> new DiamondMinecartEntity(entityType, level, AntarchyNeoforgeItems.diamondMinecartItem()), MobCategory.MISC) + .sized(0.98F, 0.7F) + .clientTrackingRange(8) + .build("diamond_minecart")); + public static final DeferredHolder, EntityType> EASTER_BUNNY = ENTITY_TYPES.register("easter_bunny", + () -> EntityType.Builder.of(EasterBunnyEntity::new, MobCategory.CREATURE) + .sized(0.5F, 1.0F) + .clientTrackingRange(8) + .build("easter_bunny")); + public static final DeferredHolder, EntityType> FLYING_SQUIRREL = ENTITY_TYPES.register("flying_squirrel", + () -> EntityType.Builder.of(FlyingSquirrelEntity::new, MobCategory.CREATURE) + .sized(0.6F, 0.7F) + .clientTrackingRange(8) + .build("flying_squirrel")); + public static final DeferredHolder, EntityType> CATERPILLAR = ENTITY_TYPES.register("caterpillar", + () -> EntityType.Builder.of(CaterpillarEntity::new, MobCategory.CREATURE) + .sized(0.8775F, 0.585F) + .clientTrackingRange(8) + .build("caterpillar")); + public static final DeferredHolder, EntityType> BUTTERFLY = ENTITY_TYPES.register("butterfly", + () -> EntityType.Builder.of(ButterflyEntity::new, MobCategory.AMBIENT) + .sized(1.125F, 1.375F) + .clientTrackingRange(8) + .build("butterfly")); + public static final DeferredHolder, EntityType> REVERIE = ENTITY_TYPES.register("reverie", + () -> EntityType.Builder.of(ReverieEntity::new, MobCategory.AMBIENT) + .sized(0.7F, 0.7F) + .clientTrackingRange(8) + .build("reverie")); + public static final DeferredHolder, EntityType> BRUTALFLY = ENTITY_TYPES.register("brutalfly", + () -> EntityType.Builder.of(BrutalflyEntity::new, MobCategory.MONSTER) + .sized(2.4F, 2.1F) + .clientTrackingRange(12) + .build("brutalfly")); + public static final DeferredHolder, EntityType> APPLE_COW = ENTITY_TYPES.register("apple_cow", + () -> buildCowType(AppleCow::new, "apple_cow")); + public static final DeferredHolder, EntityType> GOLDEN_APPLE_COW = ENTITY_TYPES.register("golden_apple_cow", + () -> buildCowType(GoldenAppleCow::new, "golden_apple_cow")); + public static final DeferredHolder, EntityType> ENCHANTED_GOLDEN_APPLE_COW = ENTITY_TYPES.register("enchanted_golden_apple_cow", + () -> buildCowType(EnchantedGoldenAppleCow::new, "enchanted_golden_apple_cow")); + public static final DeferredHolder, EntityType> HONEYED_APPLE_COW = CREATE_LOADED + ? ENTITY_TYPES.register("honeyed_apple_cow", () -> buildCowType(HoneyedAppleCow::new, "honeyed_apple_cow")) + : null; + public static final DeferredHolder, EntityType> DR_TRAYAURUS = ENTITY_TYPES.register("dr_trayaurus", + () -> EntityType.Builder.of(DrTrayaurusEntity::new, MobCategory.MISC) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build("dr_trayaurus")); + public static final DeferredHolder, EntityType> CLOUD_SHARK = ENTITY_TYPES.register("cloud_shark", + () -> EntityType.Builder.of(CloudSharkEntity::new, MobCategory.MONSTER) + .sized(2.4F, 0.9F) + .clientTrackingRange(10) + .build("cloud_shark")); + public static final DeferredHolder, EntityType> KRAKEN = ENTITY_TYPES.register("kraken", + () -> EntityType.Builder.of(KrakenEntity::new, MobCategory.MONSTER) + .sized(5.2F, 9.8F) + .clientTrackingRange(12) + .build("kraken")); + public static final DeferredHolder, EntityType> MISSILE_SQUID = ENTITY_TYPES.register("missile_squid", + () -> EntityType.Builder.of(MissileSquidEntity::new, MobCategory.MONSTER) + .sized(1.62F, 3.18F) + .clientTrackingRange(10) + .build("missile_squid")); + public static final DeferredHolder, EntityType> NIGHTMARE = ENTITY_TYPES.register("nightmare", + () -> EntityType.Builder.of(NightmareEntity::new, MobCategory.MONSTER) + .sized(3.2F, 3.8F) + .clientTrackingRange(12) + .build("nightmare")); + public static final DeferredHolder, EntityType> LUCID = ENTITY_TYPES.register("lucid", + () -> EntityType.Builder.of(LucidEntity::new, MobCategory.MONSTER) + .sized(2.0F, 2.0F) + .clientTrackingRange(10) + .build("lucid")); + public static final DeferredHolder, EntityType> LUCID_BOLT = ENTITY_TYPES.register("lucid_bolt", + () -> EntityType.Builder.of(LucidBoltEntity::new, MobCategory.MISC) + .sized(0.3F, 0.3F) + .clientTrackingRange(8) + .updateInterval(1) + .build("lucid_bolt")); + public static final DeferredHolder, EntityType> SCORPION = ENTITY_TYPES.register("scorpion", + () -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER) + .sized(1.5F, 1.0F) + .clientTrackingRange(8) + .build("scorpion")); + public static final DeferredHolder, EntityType> BASILISK = ENTITY_TYPES.register("basilisk", + () -> EntityType.Builder.of(BasiliskEntity::new, MobCategory.MONSTER) + .sized(2.0F, 3.5F) + .clientTrackingRange(14) + .build("basilisk")); + public static final DeferredHolder, EntityType> EMPEROR_SCORPION = ENTITY_TYPES.register("emperor_scorpion", + () -> EntityType.Builder.of(EmperorScorpionEntity::new, MobCategory.MONSTER) + .sized(4.05F, 1.35F) + .clientTrackingRange(10) + .build("emperor_scorpion")); + public static final DeferredHolder, EntityType> LUCID_PEARL_PROJECTILE = ENTITY_TYPES.register("lucid_pearl_projectile", + () -> EntityType.Builder.of(LucidEyeProjectileEntity::new, MobCategory.MISC) + .sized(0.25F, 0.25F) + .clientTrackingRange(8) + .updateInterval(1) + .build("lucid_pearl_projectile")); + public static final DeferredHolder, EntityType> HUSH_PROJECTILE = ENTITY_TYPES.register("hush_projectile", + () -> EntityType.Builder.of(HushProjectileEntity::new, MobCategory.MISC) + .sized(0.35F, 0.35F) + .clientTrackingRange(8) + .updateInterval(1) + .build("hush_projectile")); + public static final DeferredHolder, EntityType> BRUTALFLY_ORB = ENTITY_TYPES.register("brutalfly_orb", + () -> EntityType.Builder.of(BrutalflyOrbEntity::new, MobCategory.MISC) + .sized(0.75F, 0.75F) + .clientTrackingRange(10) + .updateInterval(1) + .build("brutalfly_orb")); + public static final DeferredHolder, EntityType> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block", + () -> EntityType.Builder.of( + UpwardFallingBlockEntity::new, MobCategory.MISC) + .sized(0.98F, 0.98F) + .clientTrackingRange(10) + .updateInterval(1) + .build("upward_falling_block")); + + private AntarchyNeoforgeEntites() {} + + public static void register(IEventBus modEventBus) { + ENTITY_TYPES.register(modEventBus); + } + + static EntityType buildAntType(EntityType.EntityFactory factory, MobCategory category, String name) { + return EntityType.Builder.of(factory, category) + .sized(0.6375F, 0.2125F) + .clientTrackingRange(8) + .build(name); + } + + static EntityType buildCowType(EntityType.EntityFactory factory, String name) { + return EntityType.Builder.of(factory, MobCategory.CREATURE) + .sized(0.9F, 1.4F) + .clientTrackingRange(10) + .build(name); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java new file mode 100644 index 00000000..6f3cd66b --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java @@ -0,0 +1,73 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.entity.*; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +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.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.npc.Villager; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; + +public class AntarchyNeoforgeEntityAttributes { + private AntarchyNeoforgeEntityAttributes() {} + + public static void register(IEventBus modEventBus) { + modEventBus.addListener(AntarchyNeoforgeEntityAttributes::registerEntityAttributes); + } + + static void registerEntityAttributes(EntityAttributeCreationEvent event) { + AttributeSupplier rabbitAttributes = Rabbit.createAttributes().build(); + event.put(AntarchyNeoforgeEntites.EASTER_BUNNY.get(), rabbitAttributes); + event.put(AntarchyNeoforgeEntites.FLYING_SQUIRREL.get(), FlyingSquirrelEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.CATERPILLAR.get(), CaterpillarEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.BUTTERFLY.get(), ButterflyEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.REVERIE.get(), ReverieEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.BRUTALFLY.get(), BrutalflyEntity.createAttributes().build()); + + AttributeSupplier cowAttributes = Cow.createAttributes().build(); + event.put(AntarchyNeoforgeEntites.APPLE_COW.get(), cowAttributes); + event.put(AntarchyNeoforgeEntites.GOLDEN_APPLE_COW.get(), cowAttributes); + event.put(AntarchyNeoforgeEntites.ENCHANTED_GOLDEN_APPLE_COW.get(), cowAttributes); + event.put(AntarchyNeoforgeEntites.DR_TRAYAURUS.get(), Villager.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.CLOUD_SHARK.get(), CloudSharkEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.KRAKEN.get(), KrakenEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.MISSILE_SQUID.get(), MissileSquidEntity.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()); + event.put(AntarchyNeoforgeEntites.BOMBER.get(), BomberEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.MANTIS.get(), MantisEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.TRIFFID.get(), TriffidEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.LUCID.get(), LucidEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.SCORPION.get(), ScorpionEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.BASILISK.get(), BasiliskEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build()); + + AttributeSupplier redAntAttributes = buildAntAttributes(AntarchySettings.redAntHealth(), AntarchySettings.redAntMovementSpeed(), AntarchySettings.redAntAttackDamage()).build(); + AttributeSupplier brownAntAttributes = buildAntAttributes(AntarchySettings.brownAntHealth(), AntarchySettings.brownAntMovementSpeed(), AntarchySettings.brownAntAttackDamage()).build(); + AttributeSupplier rainbowAntAttributes = buildAntAttributes(AntarchySettings.rainbowAntHealth(), AntarchySettings.rainbowAntMovementSpeed(), AntarchySettings.rainbowAntAttackDamage()).build(); + AttributeSupplier termiteAttributes = buildAntAttributes(AntarchySettings.termiteHealth(), AntarchySettings.termiteMovementSpeed(), AntarchySettings.termiteAttackDamage()).build(); + event.put(AntarchyNeoforgeEntites.RED_ANT.get(), redAntAttributes); + event.put(AntarchyNeoforgeEntites.BROWN_ANT.get(), brownAntAttributes); + event.put(AntarchyNeoforgeEntites.RAINBOW_ANT.get(), rainbowAntAttributes); + event.put(AntarchyNeoforgeEntites.MOLEWORM.get(), MolewormEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.MOLEVORE.get(), MolevoreEntity.createAttributes().build()); + } + + private static AttributeSupplier.Builder buildAntAttributes(double health, double speed, double attackDamage) { + return net.minecraft.world.entity.Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, health) + .add(Attributes.MOVEMENT_SPEED, speed) + .add(Attributes.ATTACK_DAMAGE, attackDamage); + } + +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java new file mode 100644 index 00000000..6fe690b5 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java @@ -0,0 +1,583 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.item.*; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.item.BloodCrystalShardItem; +import com.craisinlord.antarchy.content.item.ultimate.*; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +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.crafting.Ingredient; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.common.DeferredSpawnEggItem; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.minecraft.sounds.SoundEvents; + +import java.util.Collection; +import java.util.EnumMap; +import java.util.List; + +public final class AntarchyNeoforgeItems { + static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Antarchy.MODID); + private static final DeferredRegister ARMOR_MATERIALS = DeferredRegister.create(Registries.ARMOR_MATERIAL, Antarchy.MODID); + + // Tier constants + public static final Tier ULTIMATE_TIER = new SimpleToolTier( + 3072, + 10.5F, + 0.0F, + Tiers.NETHERITE.getIncorrectBlocksForDrops(), + 25, + AntarchyNeoforgeItems::ultimateRepairIngredient + ); + public static final Tier BLOOD_CRYSTAL_KATANA_TIER = new SimpleToolTier( + 1200, + 8.0F, + 0.0F, + Tiers.DIAMOND.getIncorrectBlocksForDrops(), + 18, + AntarchyNeoforgeItems::bloodCrystalRepairIngredient + ); + + public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); + + private static final DeferredHolder ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate", + () -> new ArmorMaterial( + createUltimateArmorDefense(), + 10, + SoundEvents.ARMOR_EQUIP_DIAMOND, + AntarchyNeoforgeItems::ultimateRepairIngredient, + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ultimate_armor"))), + 2.0F, + (float) AntarchySettings.ultimateArmorKnockbackResistance() + )); + private static final DeferredHolder NIGHTMARE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("nightmare", + () -> new ArmorMaterial( + createNightmareArmorDefense(), + 10, + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(NIGHTMARE_SCALE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_armor"))), + 3.0F, + (float) AntarchySettings.nightmareArmorKnockbackResistance() + )); + private static final DeferredHolder BLOOD_CRYSTAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("blood_crystal", + () -> new ArmorMaterial( + createBloodCrystalArmorDefense(), + 30, + SoundEvents.ARMOR_EQUIP_DIAMOND, + AntarchyNeoforgeItems::bloodCrystalRepairIngredient, + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal"))), + 0.0F, + 0.0F + )); + private static final DeferredHolder MOGGLES_ARMOR_MATERIAL = ARMOR_MATERIALS.register("moggles", + () -> new ArmorMaterial( + createMogglesArmorDefense(), + 12, + SoundEvents.ARMOR_EQUIP_GOLD, + () -> Ingredient.of(Items.GOLD_INGOT), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "moggles"))), + 0.0F, + 0.0F + )); + private static final DeferredHolder FALLEN_KING_CROWN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("fallen_king_crown", + () -> new ArmorMaterial( + createFallenKingCrownDefense(), + 25, + SoundEvents.ARMOR_EQUIP_GOLD, + () -> Ingredient.of(Items.GOLD_INGOT), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "fallen_king_crown"))), + 0.0F, + 0.0F + )); + + // Block items + public static final DeferredItem DUPLICATOR_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DUPLICATOR_LOG); + public static final DeferredItem OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_LOG); + public static final DeferredItem OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_WOOD); + public static final DeferredItem MOSSY_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_LOG); + public static final DeferredItem MOSSY_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_WOOD); + public static final DeferredItem STRIPPED_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_OURANWOOD_LOG); + public static final DeferredItem STRIPPED_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_OURANWOOD_WOOD); + public static final DeferredItem OURANWOOD_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_PLANKS); + public static final DeferredItem OURANWOOD_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_STAIRS); + public static final DeferredItem OURANWOOD_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_SLAB); + public static final DeferredItem OURANWOOD_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_FENCE); + public static final DeferredItem OURANWOOD_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_FENCE_GATE); + public static final DeferredItem OURANWOOD_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_DOOR); + public static final DeferredItem OURANWOOD_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_TRAPDOOR); + public static final DeferredItem OURANWOOD_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_PRESSURE_PLATE); + public static final DeferredItem OURANWOOD_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_BUTTON); + public static final DeferredItem OURANWOOD_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_LEAVES); + public static final DeferredItem OURANWOOD_ACORN = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_ACORN_BLOCK); + public static final DeferredItem ORANGE_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ORANGE_MILKWEED); + public static final DeferredItem PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PINK_MILKWEED); + public static final DeferredItem TORCHFLOWER_BUSH_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TORCHFLOWER_BUSH); + public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", + () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.OURANWOOD_SIGN.get(), AntarchyNeoforgeBlocks.OURANWOOD_WALL_SIGN.get())); + public static final DeferredItem OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign", + () -> new net.minecraft.world.item.HangingSignItem(AntarchyNeoforgeBlocks.OURANWOOD_HANGING_SIGN.get(), AntarchyNeoforgeBlocks.OURANWOOD_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + public static final DeferredItem OURANWOOD_BOAT = ITEMS.register("ouranwood_boat", + () -> new OuranwoodBoatOnlyItem(AntarchyNeoforgeEntites.OURANWOOD_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem 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 DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING); + public static final DeferredItem RED_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RED_ANT_NEST); + public static final DeferredItem BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROWN_ANT_NEST); + public static final DeferredItem RAINBOW_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RAINBOW_ANT_NEST); + public static final DeferredItem URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_ORE); + public static final DeferredItem DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEEPSLATE_URANIUM_ORE); + public static final DeferredItem TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_ORE); + public static final DeferredItem DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEEPSLATE_TITANIUM_ORE); + public static final DeferredItem URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_BLOCK); + public static final DeferredItem TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_BLOCK); + public static final DeferredItem RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RAW_URANIUM_BLOCK); + public static final DeferredItem RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RAW_TITANIUM_BLOCK); + public static final DeferredItem CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM); + public static final DeferredItem CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM); + public static final DeferredItem CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM_SLAB); + public static final DeferredItem CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM_SLAB); + public static final DeferredItem CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM_STAIRS); + public static final DeferredItem CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM_STAIRS); + public static final DeferredItem CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_URANIUM); + public static final DeferredItem CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_TITANIUM); + public static final DeferredItem URANIUM_BULB_ITEM = ITEMS.register("uranium_bulb", + () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyNeoforgeBlocks.URANIUM_BULB.get(), new Item.Properties())); + public static final DeferredItem TITANIUM_BULB_ITEM = ITEMS.register("titanium_bulb", + () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyNeoforgeBlocks.TITANIUM_BULB.get(), new Item.Properties())); + public static final DeferredItem URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_DOOR); + public static final DeferredItem TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_DOOR); + public static final DeferredItem URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_TRAPDOOR); + public static final DeferredItem TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_TRAPDOOR); + public static final DeferredItem URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_BARS); + public static final DeferredItem TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_BARS); + public static final DeferredItem ANTIMETAL_ITEM = ITEMS.register("antimetal", + () -> new AntimetalBlockItem(AntarchyNeoforgeBlocks.ANTIMETAL.get(), new Item.Properties())); + public static final DeferredItem POLISHED_ANTIMETAL_ITEM = ITEMS.register("polished_antimetal", + () -> new AntimetalBlockItem(AntarchyNeoforgeBlocks.POLISHED_ANTIMETAL.get(), new Item.Properties())); + public static final DeferredItem ANTIMETAL_SCAFFOLDING_ITEM = ITEMS.register("antimetal_scaffolding", + () -> new AntimetalScaffoldingItem(AntarchyNeoforgeBlocks.ANTIMETAL_SCAFFOLDING.get(), new Item.Properties())); + public static final DeferredItem SMALL_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMALL_BLOOD_CRYSTAL_BUD); + public static final DeferredItem MEDIUM_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.MEDIUM_BLOOD_CRYSTAL_BUD); + public static final DeferredItem LARGE_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.LARGE_BLOOD_CRYSTAL_BUD); + public static final DeferredItem BUDDING_BLOOD_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BUDDING_BLOOD_CRYSTAL); + public static final DeferredItem BLOOD_CRYSTAL_ITEM = ITEMS.register("blood_crystal_block", + () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.BLOOD_CRYSTAL.get(), new Item.Properties())); + public static final DeferredItem BLOOD_CRYSTAL_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BLOOD_CRYSTAL_CRYSTAL); + public static final DeferredItem DREAM_SAND_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_SAND); + public static final DeferredItem DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_SANDSTONE); + public static final DeferredItem CHISELED_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_DREAM_SANDSTONE); + public static final DeferredItem CUT_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_DREAM_SANDSTONE); + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMOOTH_DREAM_SANDSTONE); + public static final DeferredItem DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_SANDSTONE_STAIRS); + public static final DeferredItem DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_SANDSTONE_SLAB); + public static final DeferredItem DREAM_SANDSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_SANDSTONE_WALL); + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMOOTH_DREAM_SANDSTONE_STAIRS); + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMOOTH_DREAM_SANDSTONE_SLAB); + public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_DREAM_SANDSTONE_SLAB); + public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", + () -> new DuctTapeBlockItem(AntarchyNeoforgeBlocks.DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.INFESTED_ROOTED_DIRT); + public static final DeferredItem INFESTED_COARSE_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.INFESTED_COARSE_DIRT); + public static final DeferredItem NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE); + public static final DeferredItem POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_NYXITE); + public static final DeferredItem CHISELED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_NYXITE); + public static final DeferredItem NYXITE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICKS); + public static final DeferredItem NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_STAIRS); + public static final DeferredItem NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_SLAB); + public static final DeferredItem NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_WALL); + public static final DeferredItem POLISHED_NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_NYXITE_STAIRS); + public static final DeferredItem POLISHED_NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_NYXITE_SLAB); + public static final DeferredItem POLISHED_NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_NYXITE_WALL); + public static final DeferredItem NYXITE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICK_STAIRS); + public static final DeferredItem NYXITE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICK_SLAB); + public static final DeferredItem NYXITE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICK_WALL); + public static final DeferredItem TRIFFID_GOO_BLOCK_ITEM = ITEMS.register("triffid_goo_block", + () -> new com.craisinlord.antarchy.content.item.TriffidGooBlockItem(AntarchyNeoforgeBlocks.TRIFFID_GOO_BLOCK.get(), new Item.Properties())); + public static final DeferredItem PALE_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PALE_NYXITE); + public static final DeferredItem NYXITE_SPIKE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_SPIKE); + public static final DeferredItem POTENT_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POTENT_NYXITE); + public static final DeferredItem UMBRAL_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.UMBRAL_MOSS_BLOCK); + public static final DeferredItem UMBRAL_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.UMBRAL_MOSS_CARPET); + public static final DeferredItem 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 DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_LANTERN); + public static final DeferredItem DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE); + public static final DeferredItem BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BED_BUG_EGG); + public static final DeferredItem WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.WASP_NEST); + public static final DeferredItem HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.HUSHWEED); + public static final DeferredItem ICHOR_BUCKET = ITEMS.register("ichor_bucket", + () -> new BucketItem(AntarchyNeoforgeMisc.ICHOR.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + public static final DeferredItem ANTIWATER_BUCKET = ITEMS.register("antiwater_bucket", + () -> new BucketItem(AntarchyNeoforgeMisc.ANTIWATER.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + public static final DeferredItem 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 BLOOD_CRYSTAL_SHARD = ITEMS.register("blood_crystal_shard", + () -> new BloodCrystalShardItem(new Item.Properties())); + public static final DeferredItem BLOOD_CRYSTAL_APPLE = ITEMS.register("blood_crystal_apple", + () -> new BloodCrystalAppleItem(new Item.Properties() + .rarity(Rarity.RARE) + .food(new FoodProperties.Builder() + .nutrition(4) + .saturationModifier(1.2f) + .effect(() -> new MobEffectInstance(net.minecraft.world.effect.MobEffects.REGENERATION, 100, 1), 1.0f) + .alwaysEdible() + .build()))); + public static final DeferredItem BLOOD_CRYSTAL_HELMET = ITEMS.register("blood_crystal_helmet", + () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_CHESTPLATE = ITEMS.register("blood_crystal_chestplate", + () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_LEGGINGS = ITEMS.register("blood_crystal_leggings", + () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_BOOTS = ITEMS.register("blood_crystal_boots", + () -> new BloodCrystalArmorItem(BLOOD_CRYSTAL_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BLOOD_CRYSTAL_KATANA = ITEMS.register("blood_crystal_katana", + () -> new BloodCrystalKatanaItem( + BLOOD_CRYSTAL_KATANA_TIER, + new Item.Properties().stacksTo(1).durability(1200).rarity(Rarity.RARE), + AntarchySettings.bloodCrystalKatanaAttackDamage(), + -2.2F + )); + public static final DeferredItem MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem JUMPY_BUG_LEG = ITEMS.register("jumpy_bug_leg", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem BRUTALFLY_WING = ITEMS.registerSimpleItem("brutalfly_wing", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem BRUTALFLY_ELYTRA = ITEMS.register("brutalfly_elytra", + () -> new BrutalflyElytraItem(new Item.Properties().rarity(Rarity.UNCOMMON).durability(480))); + public static final DeferredItem CORNEA_EAR = ITEMS.register("cornea_ear", + () -> new CorneaEarItem(new Item.Properties() + .rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder() + .nutrition(2) + .saturationModifier(0.4F) + .build()))); + public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.register("primordial_scute", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo", + new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem VORTEX_EYE = ITEMS.register("vortex_eye", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem RAW_URANIUM_SCRAP = ITEMS.registerSimpleItem("raw_uranium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem RAW_TITANIUM_SCRAP = ITEMS.registerSimpleItem("raw_titanium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem RAW_URANIUM = ITEMS.registerSimpleItem("raw_uranium", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem RAW_TITANIUM = ITEMS.registerSimpleItem("raw_titanium", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem MUD_PIE = ITEMS.register("mud_pie", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(10) + .saturationModifier(0.9F) + .effect(() -> new MobEffectInstance(MobEffects.CONFUSION, 200), 1.0F) + .build()))); + public static final DeferredItem RAINBOW_SUGAR = ITEMS.register("rainbow_sugar", + () -> new RainbowSugarItem(new Item.Properties() + .rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder().nutrition(1).saturationModifier(0.0F).alwaysEdible().build()))); + public static final DeferredItem URANIUM_NUGGET = ITEMS.registerSimpleItem("uranium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem TITANIUM_NUGGET = ITEMS.registerSimpleItem("titanium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem URANIUM_INGOT = ITEMS.registerSimpleItem("uranium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); + public static final DeferredItem TITANIUM_INGOT = ITEMS.registerSimpleItem("titanium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); + public static final DeferredItem MOLEVORE_NOSE = ITEMS.registerSimpleItem("molevore_nose", new Item.Properties().rarity(Rarity.RARE)); + public static final DeferredItem MOLEWORM_ITEM = ITEMS.register("moleworm", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(1) + .saturationModifier(0.0F) + .effect(() -> new MobEffectInstance(MobEffects.HUNGER, 600), 0.8F) + .build()))); + public static final DeferredItem CLOUD_SHARK_FIN = ITEMS.registerSimpleItem("cloud_shark_fin", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem CLOUD_SHARK_FIN_SOUP = ITEMS.register("cloud_shark_fin_soup", + () -> new CloudSharkFinSoupItem(new Item.Properties() + .stacksTo(1) + .craftRemainder(Items.BOWL) + .food(new FoodProperties.Builder() + .nutrition(10) + .saturationModifier(0.8F) + .effect(() -> new MobEffectInstance(MobEffects.DAMAGE_BOOST, 600, 0), 1.0F) + .effect(() -> new MobEffectInstance(MobEffects.SLOW_FALLING, 600, 0), 1.0F) + .build()))); + public static final DeferredItem KRAKEN_TOOTH = ITEMS.register("kraken_tooth", + () -> new Item(new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BASILISK_FANG = ITEMS.registerSimpleItem("basilisk_fang", new Item.Properties().rarity(Rarity.RARE)); + public static final DeferredItem BASILISK_DAGGER = ITEMS.register("basilisk_dagger", + () -> new BasiliskDaggerItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE), 4, -1.8F)); + public static final DeferredItem EMPEROR_SCORPION_STINGER = ITEMS.registerSimpleItem("emperor_scorpion_stinger", new Item.Properties().rarity(Rarity.RARE)); + public static final DeferredItem SCORPION_WHIP = ITEMS.register("scorpion_whip", + () -> new ScorpionWhipItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE).durability(384))); + public static final DeferredItem MOGGLES = ITEMS.register("moggles", + () -> new MogglesItem(MOGGLES_ARMOR_MATERIAL, new Item.Properties().rarity(Rarity.RARE).stacksTo(1))); + public static final DeferredItem FALLEN_KING_CROWN = ITEMS.register("fallen_king_crown", + () -> new com.craisinlord.antarchy.content.item.FallenKingCrownItem( + FALLEN_KING_CROWN_ARMOR_MATERIAL, + new Item.Properties().rarity(Rarity.RARE) + )); + public static final DeferredItem ULTIMATE_HELMET = ITEMS.register("ultimate_helmet", + () -> new UltimateArmorItem(ULTIMATE_ARMOR_MATERIAL, ArmorItem.Type.HELMET, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.HELMET.getDurability(41)))); + public static final DeferredItem ULTIMATE_CHESTPLATE = ITEMS.register("ultimate_chestplate", + () -> new UltimateArmorItem(ULTIMATE_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.CHESTPLATE.getDurability(41)))); + public static final DeferredItem ULTIMATE_LEGGINGS = ITEMS.register("ultimate_leggings", + () -> new UltimateArmorItem(ULTIMATE_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.LEGGINGS.getDurability(41)))); + public static final DeferredItem ULTIMATE_BOOTS = ITEMS.register("ultimate_boots", + () -> new UltimateArmorItem(ULTIMATE_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(41)))); + public static final DeferredItem ULTIMATE_SWORD = ITEMS.register("ultimate_sword", + () -> new UltimateSwordItem(ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateSwordAttackDamage, -2.4F)); + public static final DeferredItem ULTIMATE_PICKAXE = ITEMS.register("ultimate_pickaxe", + () -> new UltimatePickaxeItem(ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimatePickaxeAttackDamage, -2.8F)); + public static final DeferredItem ULTIMATE_AXE = ITEMS.register("ultimate_axe", + () -> new UltimateAxeItem(ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateAxeAttackDamage, -3.0F)); + public static final DeferredItem ULTIMATE_SHOVEL = ITEMS.register("ultimate_shovel", + () -> new UtlimateShovelItem(ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateShovelAttackDamage, -3.0F)); + public static final DeferredItem ULTIMATE_HOE = ITEMS.register("ultimate_hoe", + () -> new UltimateHoeItem(ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateHoeAttackDamage, 0.0F)); + public static final DeferredItem ULTIMATE_BOW = ITEMS.register("ultimate_bow", + () -> new UltimateBowItem(new Item.Properties().stacksTo(1).durability(768).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ULTIMATE_CROSSBOW = ITEMS.register("ultimate_crossbow", + () -> new UltimateCrossbowItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem NIGHTMARE_HELMET = ITEMS.register("nightmare_helmet", + () -> new NightmareArmorItem(NIGHTMARE_ARMOR_MATERIAL, ArmorItem.Type.HELMET, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.HELMET.getDurability(41)))); + public static final DeferredItem NIGHTMARE_CHESTPLATE = ITEMS.register("nightmare_chestplate", + () -> new NightmareArmorItem(NIGHTMARE_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.CHESTPLATE.getDurability(41)))); + public static final DeferredItem NIGHTMARE_LEGGINGS = ITEMS.register("nightmare_leggings", + () -> new NightmareArmorItem(NIGHTMARE_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.LEGGINGS.getDurability(41)))); + public static final DeferredItem NIGHTMARE_BOOTS = ITEMS.register("nightmare_boots", + () -> new NightmareArmorItem(NIGHTMARE_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(41)))); + public static final DeferredItem NIGHTMARE_SWORD = ITEMS.register("nightmare_sword", + () -> new NightmareSwordItem(ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), -2.4F)); + public static final DeferredItem SHRINK_RAY = ITEMS.register("shrink_ray", + () -> new SizeRayItem( + new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), + AntarchyNeoforgeEntites.SHRINK_RAY_PROJECTILE, + SizeRayProjectileEntity.SizeRayType.SHRINK, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/shrink_ray.geo.json"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/shrink_ray.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/shrink_ray.animation.json"), + "shrink_ray_active" + )); + public static final DeferredItem GROWTH_RAY = ITEMS.register("growth_ray", + () -> new SizeRayItem( + new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), + AntarchyNeoforgeEntites.GROWTH_RAY_PROJECTILE, + SizeRayProjectileEntity.SizeRayType.GROWTH, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/growth_ray.geo.json"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/growth_ray.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/growth_ray.animation.json"), + "growth_ray_active" + )); + public static final DeferredItem GRAVITY_GUN = ITEMS.register("gravity_gun", + () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); + public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", + () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); + public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", + () -> new BattleAxeItem(Tiers.NETHERITE, + new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant(), + AntarchySettings::battleAxeAttackDamage, -3.1F)); + public static final DeferredItem DIAMOND_MINECART_ITEM = ITEMS.register("diamond_minecart", + () -> new DiamondMinecartItem(AntarchyNeoforgeEntites.DIAMOND_MINECART, new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + public static final DeferredItem REVERIE_BOTTLE = ITEMS.register("reverie_bottle", + () -> new ReverieBottleItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + public static final DeferredItem BIG_BERTHA_BLADE = ITEMS.registerSimpleItem("big_bertha_blade", + new Item.Properties().rarity(Rarity.EPIC).fireResistant()); + public static final DeferredItem BIG_BERTHA_HANDLE = ITEMS.registerSimpleItem("big_bertha_handle", + new Item.Properties().rarity(Rarity.EPIC).fireResistant()); + public static final DeferredItem BIG_BERTHA_HILT = ITEMS.registerSimpleItem("big_bertha_hilt", + new Item.Properties().rarity(Rarity.EPIC).fireResistant()); + public static final DeferredItem BIG_BERTHA = ITEMS.register("big_bertha", + () -> new BigBerthaItem(Tiers.NETHERITE, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant())); + + // Spawn eggs + public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties())); + public static final DeferredItem FLYING_SQUIRREL_SPAWN_EGG = ITEMS.register("flying_squirrel_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.FLYING_SQUIRREL, 0x7D6649, 0xDCC59C, new Item.Properties())); + public static final DeferredItem CATERPILLAR_SPAWN_EGG = ITEMS.register("caterpillar_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.CATERPILLAR, 0xA8D96A, 0xF4E04D, new Item.Properties())); + public static final DeferredItem BUTTERFLY_SPAWN_EGG = ITEMS.register("butterfly_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.BUTTERFLY, 0x111111, 0xFF7A00, new Item.Properties())); + public static final DeferredItem REVERIE_SPAWN_EGG = ITEMS.register("reverie_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.REVERIE, 0xF2F2F2, 0xBFC3C7, new Item.Properties())); + public static final DeferredItem BRUTALFLY_SPAWN_EGG = ITEMS.register("brutalfly_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.BRUTALFLY, 0x4A2214, 0xFF8A1D, new Item.Properties().rarity(Rarity.EPIC))); + public static final DeferredItem RED_ANT_SPAWN_EGG = ITEMS.register("red_ant_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.RED_ANT, 0xA31818, 0x2B0909, new Item.Properties())); + public static final DeferredItem BROWN_ANT_SPAWN_EGG = ITEMS.register("brown_ant_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.BROWN_ANT, 0x6A4320, 0x26160A, new Item.Properties())); + public static final DeferredItem RAINBOW_ANT_SPAWN_EGG = ITEMS.register("rainbow_ant_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.RAINBOW_ANT, 0x56D4F0, 0xF66DBB, new Item.Properties())); + public static final DeferredItem MOLEWORM_SPAWN_EGG = ITEMS.register("moleworm_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MOLEWORM, 0x7A6150, 0xD2B8A3, new Item.Properties())); + public static final DeferredItem MANTIS_SPAWN_EGG = ITEMS.register("mantis_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MANTIS, 0xF8F8F2, 0x63B44A, new Item.Properties())); + public static final DeferredItem MOLEVORE_SPAWN_EGG = ITEMS.register("molevore_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MOLEVORE, 0x3E2E24, 0xB67B4F, new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem TRIFFID_SPAWN_EGG = ITEMS.register("triffid_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.TRIFFID, 0x4C8F3A, 0xFF2FB3, new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem APPLE_COW_SPAWN_EGG = ITEMS.register("apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.APPLE_COW, 0xFF1A1A, 0x32FF32, new Item.Properties())); + public static final DeferredItem GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("golden_apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.GOLDEN_APPLE_COW, 0xFFE14A, 0x32FF32, new Item.Properties())); + public static final DeferredItem ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("enchanted_golden_apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.ENCHANTED_GOLDEN_APPLE_COW, 0x7040B6, 0xFFE14A, new Item.Properties())); + public static final DeferredItem DR_TRAYAURUS_SPAWN_EGG = ITEMS.register("dr_trayaurus_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.DR_TRAYAURUS, 0xB7A27B, 0x4A3D29, new Item.Properties())); + public static final DeferredItem WASP_SPAWN_EGG = ITEMS.register("wasp_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.WASP, 0x111111, 0xF1D800, new Item.Properties())); + public static final DeferredItem BOMBER_SPAWN_EGG = ITEMS.register("bomber_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.BOMBER, 0x7A7A7A, 0xB32020, new Item.Properties())); + public static final DeferredItem CLOUD_SHARK_SPAWN_EGG = ITEMS.register("cloud_shark_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.CLOUD_SHARK, 0xDDEAF4, 0x7F96A8, new Item.Properties())); + public static final DeferredItem KRAKEN_SPAWN_EGG = ITEMS.register("kraken_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.KRAKEN, 0x163C53, 0x4F8E99, new Item.Properties().rarity(Rarity.EPIC))); + public static final DeferredItem MISSILE_SQUID_SPAWN_EGG = ITEMS.register("missile_squid_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MISSILE_SQUID, 0xD88FA7, 0x8D5269, new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem NIGHTMARE_SPAWN_EGG = ITEMS.register("nightmare_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.NIGHTMARE, 0x22121C, 0xB51B2D, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem BED_BUG_SPAWN_EGG = ITEMS.register("bed_bug_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.BED_BUG, 0x3B2218, 0x611111, new Item.Properties())); + public static final DeferredItem LUCID_SPAWN_EGG = ITEMS.register("lucid_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.LUCID, 0xE53935, 0xF4D03F, new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem SCORPION_SPAWN_EGG = ITEMS.register("scorpion_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.SCORPION, 0xA8D8FF, 0xE04B5A, new Item.Properties())); + public static final DeferredItem BASILISK_SPAWN_EGG = ITEMS.register("basilisk_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.BASILISK, 0x4A7C40, 0xD4A040, new Item.Properties())); + public static final DeferredItem EMPEROR_SCORPION_SPAWN_EGG = ITEMS.register("emperor_scorpion_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.EMPEROR_SCORPION, 0x1A1A0A, 0x8B2200, new Item.Properties())); + public static final DeferredItem LUCID_EYE = ITEMS.register("lucid_eye", + () -> new LucidEyeItem(new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON))); + public static final DeferredItem LUCID_PEARL = ITEMS.register("lucid_pearl", + () -> new LucidPearlItem( + new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON), + AntarchyNeoforgeEntites.LUCID_PEARL_PROJECTILE + )); + + private AntarchyNeoforgeItems() {} + + public static Collection> getItemEntries() { + return ITEMS.getEntries(); + } + + public static void register(IEventBus modEventBus) { + ITEMS.register(modEventBus); + ARMOR_MATERIALS.register(modEventBus); + } + + static Item cloudBucketItem() { + return CLOUD_BUCKET.get(); + } + + static Item diamondMinecartItem() { + return DIAMOND_MINECART_ITEM.get(); + } + + static BlockEntityType potentNyxiteBlockEntityType() { + return AntarchyNeoforgeBlocks.POTENT_NYXITE_BLOCK_ENTITY.get(); + } + + static BlockEntityType antNestBlockEntityType() { + return AntarchyNeoforgeBlocks.ANT_NEST_BLOCK_ENTITY.get(); + } + + static BlockEntityType waspNestBlockEntityType() { + return AntarchyNeoforgeBlocks.WASP_NEST_BLOCK_ENTITY.get(); + } + + static Ingredient ultimateRepairIngredient() { + return Ingredient.of(TITANIUM_INGOT.get()); + } + + static Ingredient bloodCrystalRepairIngredient() { + return Ingredient.of(BuiltInRegistries.ITEM.getOptional(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal_shard")) + .orElse(Items.AIR)); + } + + private static EnumMap createUltimateArmorDefense() { + EnumMap defense = new EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 6); + defense.put(ArmorItem.Type.LEGGINGS, 12); + defense.put(ArmorItem.Type.CHESTPLATE, 16); + defense.put(ArmorItem.Type.HELMET, 6); + defense.put(ArmorItem.Type.BODY, 16); + return defense; + } + + private static EnumMap createNightmareArmorDefense() { + EnumMap defense = new EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 4); + defense.put(ArmorItem.Type.LEGGINGS, 9); + defense.put(ArmorItem.Type.CHESTPLATE, 11); + defense.put(ArmorItem.Type.HELMET, 4); + defense.put(ArmorItem.Type.BODY, 11); + return defense; + } + + private static EnumMap createBloodCrystalArmorDefense() { + EnumMap defense = new EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 2); + defense.put(ArmorItem.Type.LEGGINGS, 5); + defense.put(ArmorItem.Type.CHESTPLATE, 6); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 6); + return defense; + } + + private static EnumMap createMogglesArmorDefense() { + EnumMap defense = new EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 0); + defense.put(ArmorItem.Type.LEGGINGS, 0); + defense.put(ArmorItem.Type.CHESTPLATE, 0); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 2); + return defense; + } + + private static EnumMap createFallenKingCrownDefense() { + EnumMap defense = new EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 0); + defense.put(ArmorItem.Type.LEGGINGS, 0); + defense.put(ArmorItem.Type.CHESTPLATE, 0); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 2); + return defense; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java new file mode 100644 index 00000000..8eb54663 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -0,0 +1,294 @@ +package com.craisinlord.antarchy.neoforge.registry; + +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.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.*; +import com.craisinlord.antarchy.content.worldgen.thoraxis.*; +import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluidType; +import com.mojang.serialization.MapCodec; +import net.minecraft.advancements.critereon.EntitySubPredicate; +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.resources.ResourceLocation; +import net.minecraft.world.damagesource.DamageType; +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.item.alchemy.Potion; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.tags.TagKey; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.common.SoundActions; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.NeoForgeRegistries; +import net.minecraft.sounds.SoundEvents; + +import java.util.function.Function; + +public final class AntarchyNeoforgeMisc { + private static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(Registries.MOB_EFFECT, Antarchy.MODID); + private static final DeferredRegister POTIONS = DeferredRegister.create(Registries.POTION, Antarchy.MODID); + private static final DeferredRegister FLUID_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.FLUID_TYPES, Antarchy.MODID); + private static final DeferredRegister FLUIDS = DeferredRegister.create(Registries.FLUID, Antarchy.MODID); + private static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(Registries.PARTICLE_TYPE, Antarchy.MODID); + private static final DeferredRegister> FEATURES = DeferredRegister.create(Registries.FEATURE, Antarchy.MODID); + private static final DeferredRegister> BIOME_SOURCES = DeferredRegister.create(Registries.BIOME_SOURCE, Antarchy.MODID); + private static final DeferredRegister> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, Antarchy.MODID); + private static final DeferredRegister> ENTITY_SUB_PREDICATES = DeferredRegister.create(Registries.ENTITY_SUB_PREDICATE_TYPE, Antarchy.MODID); + private static final DeferredRegister ATTRIBUTES = DeferredRegister.create(Registries.ATTRIBUTE, Antarchy.MODID); + + // Attributes + public static final DeferredHolder DOUBLE_DAMAGE_CHANCE = ATTRIBUTES.register( + "double_damage_chance", + () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.double_damage_chance", 0.0, 0.0, 1.0).setSyncable(true) + ); + public static final DeferredHolder BLOODGLASS_MAX_HEARTS = ATTRIBUTES.register( + "bloodglass_max_hearts", + () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.bloodglass_max_hearts", 0.0, 0.0, 8.0).setSyncable(true) + ); + + // Mob effects + public static final DeferredHolder DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new); + public static final DeferredHolder PARALYZED = MOB_EFFECTS.register("paralyzed", ParalyzedMobEffect::new); + public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); + public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); + public static final DeferredHolder SHRINKING_EFFECT = MOB_EFFECTS.register("shrinking", ShrinkMobEffect::new); + public static final DeferredHolder GROWTH_EFFECT = MOB_EFFECTS.register("growth", GrowthMobEffect::new); + + // Potions + public static final DeferredHolder INVERSION = POTIONS.register("inversion", + () -> new Potion(new MobEffectInstance(INVERTED, 600))); + public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", + () -> new Potion("inversion", new MobEffectInstance(INVERTED, 2400))); + public static final DeferredHolder PARALYSIS = POTIONS.register("paralysis", + () -> new Potion(new MobEffectInstance(PARALYZED, 200))); + public static final DeferredHolder LONG_PARALYSIS = POTIONS.register("long_paralysis", + () -> new Potion("paralysis", new MobEffectInstance(PARALYZED, 400))); + public static final DeferredHolder HASTE = POTIONS.register("haste", + () -> new Potion(new MobEffectInstance(MobEffects.DIG_SPEED, 1200, 0))); + public static final DeferredHolder STRONG_HASTE = POTIONS.register("strong_haste", + () -> new Potion("haste", new MobEffectInstance(MobEffects.DIG_SPEED, 600, 1))); + public static final DeferredHolder SHRINKING = POTIONS.register("shrinking", + () -> new Potion(new MobEffectInstance(SHRINKING_EFFECT, 1200, 0))); + public static final DeferredHolder STRONG_SHRINKING = POTIONS.register("strong_shrinking", + () -> new Potion("shrinking", new MobEffectInstance(SHRINKING_EFFECT, 900, 1))); + public static final DeferredHolder EXTREME_SHRINKING = POTIONS.register("extreme_shrinking", + () -> new Potion("shrinking", new MobEffectInstance(SHRINKING_EFFECT, 600, 2))); + public static final DeferredHolder GROWING = POTIONS.register("growing", + () -> new Potion(new MobEffectInstance(GROWTH_EFFECT, 1200, 0))); + public static final DeferredHolder STRONG_GROWING = POTIONS.register("strong_growing", + () -> new Potion("growing", new MobEffectInstance(GROWTH_EFFECT, 900, 1))); + public static final DeferredHolder EXTREME_GROWING = POTIONS.register("extreme_growing", + () -> new Potion("growing", new MobEffectInstance(GROWTH_EFFECT, 600, 2))); + + // Fluid types + public static final DeferredHolder ICHOR_TYPE = FLUID_TYPES.register("ichor", + () -> new FluidType(FluidType.Properties.create() + .descriptionId("block.antarchy.ichor") + .fallDistanceModifier(0.0F) + .supportsBoating(true) + .sound(SoundActions.BUCKET_FILL, SoundEvents.BUCKET_FILL) + .sound(SoundActions.BUCKET_EMPTY, SoundEvents.BUCKET_EMPTY) + .density(1200) + .viscosity(1400))); + public static final DeferredHolder ANTIWATER_TYPE = FLUID_TYPES.register("antiwater", + () -> new AntiwaterFluidType(FluidType.Properties.create() + .descriptionId("block.antarchy.antiwater") + .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))); + + // Fluids + public static final DeferredHolder ICHOR = FLUIDS.register("ichor", + () -> new BaseFlowingFluid.Source(ichorProperties())); + public static final DeferredHolder FLOWING_ICHOR = FLUIDS.register("flowing_ichor", + () -> new BaseFlowingFluid.Flowing(ichorProperties())); + public static final DeferredHolder ANTIWATER = FLUIDS.register("antiwater", + () -> new AntiwaterFluid.Source(antiwaterProperties())); + public static final DeferredHolder FLOWING_ANTIWATER = FLUIDS.register("flowing_antiwater", + () -> new AntiwaterFluid.Flowing(antiwaterProperties())); + + // Particle types + public static final DeferredHolder, SimpleParticleType> DREAM_FIRE_FLAME = PARTICLE_TYPES.register("dream_fire_flame", + () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas", + () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD = PARTICLE_TYPES.register("hypnotic_gas_cloud", + () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_DOWN = PARTICLE_TYPES.register("hypnotic_gas_down", + () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD_DOWN = PARTICLE_TYPES.register("hypnotic_gas_cloud_down", + () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> FIREFLY = PARTICLE_TYPES.register("firefly", + () -> new SimpleParticleType(true)); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", + () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", + () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_POOF = PARTICLE_TYPES.register("inverted_geyser_poof", + () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_ERUPTION = PARTICLE_TYPES.register("inverted_geyser_eruption", + () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); + + // Features + public static final DeferredHolder, RedAntNestFeature> RED_ANT_NEST_FEATURE = FEATURES.register("red_ant_nest", + () -> new RedAntNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, BrownAntNestFeature> BROWN_ANT_NEST_FEATURE = FEATURES.register("brown_ant_nest", + () -> new BrownAntNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, RainbowAntNestFeature> RAINBOW_ANT_NEST_FEATURE = FEATURES.register("rainbow_ant_nest", + () -> new RainbowAntNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, TermiteNestFeature> TERMITE_NEST_FEATURE = FEATURES.register("termite_nest", + () -> new TermiteNestFeature(SimpleBlockConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_LARGE_TREE = FEATURES.register("ouranwood_large_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_YOUNG_TREE = FEATURES.register("ouranwood_young_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_MEDIUM_TREE = FEATURES.register("ouranwood_medium_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, OuranwoodCocoonTreeFeature> OURANWOOD_COCOON_TREE = FEATURES.register("ouranwood_cocoon_tree", + () -> new OuranwoodCocoonTreeFeature(OuranwoodTreeConfiguration.CODEC)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.MEADOW)); + public static final DeferredHolder, ElythiaFloraFeature> FLOWER_FOREST_MILKWEED = FEATURES.register("flower_forest_milkweed", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FLOWER_FOREST_MILKWEED)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_TORCHFLOWER_FIELDS_FLORA = FEATURES.register("elythia_torchflower_fields_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.TORCHFLOWER_FIELDS)); + public static final DeferredHolder, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover", + () -> new ElythiaSurfaceCoverFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ElythiaUndergroundFeature> ELYTHIA_UNDERGROUND = FEATURES.register("elythia_underground", + () -> new ElythiaUndergroundFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, BrutalflyCocoonFeature> BRUTALFLY_COCOON = FEATURES.register("brutalfly_cocoon", + () -> new BrutalflyCocoonFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormTunnelsFeature> ELYTHIA_MOLEWORM_TUNNELS = FEATURES.register("elythia_moleworm_tunnels", + () -> new MolewormTunnelsFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormCaveEntranceFeature> ELYTHIA_MOLEWORM_CAVE_ENTRANCES = FEATURES.register("elythia_moleworm_cave_entrances", + () -> new MolewormCaveEntranceFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormWarrensFeature> ELYTHIA_MOLEWORM_WARRENS = FEATURES.register("elythia_moleworm_warrens", + () -> new MolewormWarrensFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, MolewormSurfaceMoundsFeature> ELYTHIA_MOLEWORM_SURFACE_MOUNDS = FEATURES.register("elythia_moleworm_surface_mounds", + () -> new MolewormSurfaceMoundsFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, TriffidPatchFeature> TRIFFID_PATCH = FEATURES.register("triffid_patch", + () -> new TriffidPatchFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ElythiaPondFeature> ELYTHIA_POND = FEATURES.register("elythia_pond", + () -> new ElythiaPondFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ElythiaTuffBoulderFeature> ELYTHIA_TUFF_BOULDER = FEATURES.register("elythia_tuff_boulder", + () -> new ElythiaTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ElythiaLargeTuffBoulderFeature> ELYTHIA_LARGE_TUFF_BOULDER = FEATURES.register("elythia_large_tuff_boulder", + () -> new ElythiaLargeTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisFissureFeature> THORAXIS_FISSURE = FEATURES.register("thoraxis_fissure", + () -> new ThoraxisFissureFeature(ThoraxisFissureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisRibColumnsFeature> THORAXIS_RIB_COLUMNS = FEATURES.register("thoraxis_rib_columns", + () -> new ThoraxisRibColumnsFeature(ThoraxisRibColumnsConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisSpikeFeature> THORAXIS_SPIKE = FEATURES.register("thoraxis_spike", + () -> new ThoraxisSpikeFeature(ThoraxisSpikeConfiguration.CODEC)); + public static final DeferredHolder, NyxiteSpikeFeature> NYXITE_SPIKES = FEATURES.register("nyxite_spikes", + () -> new NyxiteSpikeFeature(NyxiteSpikeConfiguration.CODEC)); + public static final DeferredHolder, AntiwaterSpringsFeature> ANTIWATER_SPRINGS = FEATURES.register("antiwater_springs", + () -> new AntiwaterSpringsFeature(AntiwaterSpringsConfiguration.CODEC)); + public static final DeferredHolder, PotentNyxiteFeature> POTENT_NYXITE_FEATURE = FEATURES.register("potent_nyxite", + () -> new PotentNyxiteFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisBloodCrystalFeature> THORAXIS_BLOOD_CRYSTAL_SPIRES = FEATURES.register("thoraxis_blood_crystal_spires", + () -> new ThoraxisBloodCrystalFeature(ThoraxisBloodCrystalConfiguration.CODEC)); + public static final DeferredHolder, CloudSeaCalciteFeature> CLOUD_SEA_CALCITE_BANKS = FEATURES.register("cloud_sea_calcite_banks", + () -> new CloudSeaCalciteFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, BedBugNestFeature> BED_BUG_NEST = FEATURES.register("bed_bug_nest", + () -> new BedBugNestFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, BedBugSurfaceClusterFeature> BED_BUG_SURFACE_CLUSTER = FEATURES.register("bed_bug_surface_cluster", + () -> new BedBugSurfaceClusterFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisAntiwaterPoolFeature> THORAXIS_ANTIWATER_POOL = FEATURES.register("thoraxis_antiwater_pool", + () -> new ThoraxisAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); + public static final DeferredHolder, LucidAntiwaterPoolFeature> LUCID_ANTIWATER_POOL = FEATURES.register("lucid_antiwater_pool", + () -> new LucidAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); + public static final DeferredHolder, ThoraxisDuneFeature> THORAXIS_DUNE = FEATURES.register("thoraxis_dune", + () -> new ThoraxisDuneFeature(ThoraxisDuneConfiguration.CODEC)); + + // Biome sources + public static final DeferredHolder, MapCodec> ELYTHIA_BIOME_SOURCE = BIOME_SOURCES.register("elythia_biome_source", + () -> ElythiaBiomeSource.CODEC); + public static final DeferredHolder, MapCodec> THORAXIS_BIOME_SOURCE = BIOME_SOURCES.register("thoraxis_biome_source", + () -> ThoraxisBiomeSource.CODEC); + + // Density function + public static final DeferredHolder, MapCodec> ELYTHIA_RIVER_CARVE = DENSITY_FUNCTION_TYPES.register("elythia_river_carve", + () -> ElythiaRiverCarveFunction.CODEC); + + private AntarchyNeoforgeMisc() {} + + public static void register(IEventBus modEventBus) { + MOB_EFFECTS.register(modEventBus); + POTIONS.register(modEventBus); + FLUID_TYPES.register(modEventBus); + FLUIDS.register(modEventBus); + PARTICLE_TYPES.register(modEventBus); + FEATURES.register(modEventBus); + BIOME_SOURCES.register(modEventBus); + DENSITY_FUNCTION_TYPES.register(modEventBus); + ENTITY_SUB_PREDICATES.register(modEventBus); + ATTRIBUTES.register(modEventBus); + } + + static BaseFlowingFluid.Properties ichorProperties() { + return new BaseFlowingFluid.Properties(ICHOR_TYPE, ICHOR, FLOWING_ICHOR) + .bucket(() -> AntarchyNeoforgeItems.ICHOR_BUCKET.get()) + .block(() -> AntarchyNeoforgeBlocks.ICHOR_BLOCK.get()) + .slopeFindDistance(4) + .levelDecreasePerBlock(1) + .tickRate(5); + } + + static BaseFlowingFluid.Properties antiwaterProperties() { + return new BaseFlowingFluid.Properties(ANTIWATER_TYPE, ANTIWATER, FLOWING_ANTIWATER) + .bucket(() -> AntarchyNeoforgeItems.ANTIWATER_BUCKET.get()) + .block(() -> AntarchyNeoforgeBlocks.ANTIWATER_BLOCK.get()) + .slopeFindDistance(4) + .levelDecreasePerBlock(1) + .tickRate(5); + } + + private static ParticleType particleType( + Function, com.mojang.serialization.MapCodec> codecFactory, + Function, StreamCodec> streamCodecFactory + ) { + return new ParticleType(false) { + @Override + public com.mojang.serialization.MapCodec codec() { + return codecFactory.apply(this); + } + + @Override + public StreamCodec streamCodec() { + return streamCodecFactory.apply(this); + } + }; + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java new file mode 100644 index 00000000..84da8558 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java @@ -0,0 +1,45 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.content.network.BloodCrystalKatanaTrailPayload; +import com.craisinlord.antarchy.neoforge.network.AntarchyGravityNetworking; +import com.craisinlord.antarchy.neoforge.network.BrutalflyElytraNetworking; +import com.craisinlord.antarchy.neoforge.network.MultipartNetworking; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; + +public class AntarchyNeoforgePayloadHandlers { + private AntarchyNeoforgePayloadHandlers() {} + + public static void register(IEventBus modEventBus) { + modEventBus.addListener(AntarchyNeoforgePayloadHandlers::registerPayloadHandlers); + } + + static void registerPayloadHandlers(RegisterPayloadHandlersEvent event) { + var registrar = event.registrar("1"); + AntarchyGravityNetworking.register(registrar); + BrutalflyElytraNetworking.register(registrar); + registrar.playToClient( + com.craisinlord.antarchy.content.network.BloodglassStatePayload.TYPE, + com.craisinlord.antarchy.content.network.BloodglassStatePayload.STREAM_CODEC, + (payload, ctx) -> ctx.enqueueWork(() -> + com.craisinlord.antarchy.content.client.BloodglassClientState.update(payload.shieldsActive(), payload.shieldsMax()) + ) + ); + registrar.playToClient( + BloodCrystalKatanaTrailPayload.TYPE, + BloodCrystalKatanaTrailPayload.STREAM_CODEC, + (payload, ctx) -> ctx.enqueueWork(() -> + com.craisinlord.antarchy.content.client.BloodCrystalKatanaTrailClientState.trigger(payload.entityId(), payload.durationTicks()) + ) + ); + registrar.playToClient( + com.craisinlord.antarchy.content.network.ScorpionWhipTetherPayload.TYPE, + com.craisinlord.antarchy.content.network.ScorpionWhipTetherPayload.STREAM_CODEC, + (payload, ctx) -> ctx.enqueueWork(() -> + com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState.update(payload.playerId(), payload.targetId()) + ) + ); + MultipartNetworking.register(registrar); + // ThoraxisWeatherNetworking.register(registrar); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java new file mode 100644 index 00000000..fa8bc34f --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java @@ -0,0 +1,141 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +public final class AntarchyNeoforgeSounds { + private static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(Registries.SOUND_EVENT, Antarchy.MODID); + + public static final DeferredHolder SQUIDZOOKA_FIRE = registerSoundEvent("squidzooka_fire"); + public static final DeferredHolder SHRINK_RAY_SOUND = registerSoundEvent("shrink_ray"); + public static final DeferredHolder GROWTH_RAY_SOUND = registerSoundEvent("growth_ray"); + public static final DeferredHolder SIZE_RAY_CHARGE = registerSoundEvent("size_ray_charge"); + public static final DeferredHolder ANT_AMBIENT = registerSoundEvent("ant_ambient"); + public static final DeferredHolder ANT_IDLE = registerSoundEvent("ant_idle"); + public static final DeferredHolder ANT_HURT = registerSoundEvent("ant_hurt"); + public static final DeferredHolder ANT_BITE = registerSoundEvent("ant_bite"); + public static final DeferredHolder ANT_GATHER = registerSoundEvent("ant_gather"); + public static final DeferredHolder ANT_NEST = registerSoundEvent("ant_nest"); + public static final DeferredHolder CLOUD_SHARK_BITE = registerSoundEvent("cloud_shark_bite"); + public static final DeferredHolder CLOUD_SHARK_IDLE = registerSoundEvent("cloud_shark_idle"); + public static final DeferredHolder CLOUD_SHARK_HURT = registerSoundEvent("cloud_shark_hurt"); + public static final DeferredHolder CLOUD_SHARK_DEATH = registerSoundEvent("cloud_shark_death"); + public static final DeferredHolder CLOUD_SHARK_FLY = registerSoundEvent("cloud_shark_fly"); + public static final DeferredHolder CATERPILLAR_IDLE = registerSoundEvent("caterpillar_idle"); + public static final DeferredHolder CATERPILLAR_HURT = registerSoundEvent("caterpillar_hurt"); + public static final DeferredHolder CATERPILLAR_CRAWL = registerSoundEvent("caterpillar_crawl"); + public static final DeferredHolder BUTTERFLY_HURT = registerSoundEvent("butterfly_hurt"); + public static final DeferredHolder BRUTALFLY_IDLE = registerSoundEvent("brutalfly_idle"); + public static final DeferredHolder BRUTALFLY_DEATH = registerSoundEvent("brutalfly_death"); + public static final DeferredHolder ELYTHIA_FIREFLY_AMBIENT = registerSoundEvent("ambient.elythia.firefly"); + public static final DeferredHolder MISSILE_SQUID_AMBIENT = registerSoundEvent("missile_squid_ambient"); + public static final DeferredHolder MISSILE_SQUID_HURT = registerSoundEvent("missile_squid_hurt"); + public static final DeferredHolder MISSILE_SQUID_DEATH = registerSoundEvent("missile_squid_death"); + public static final DeferredHolder MISSILE_SQUID_ATTACK = registerSoundEvent("missile_squid_attack"); + public static final DeferredHolder KRAKEN_FLYING_LOOP = registerSoundEvent("kraken_flying_loop"); + public static final DeferredHolder KRAKEN_FLYING_SIDEWAYS_LOOP = registerSoundEvent("kraken_flying_sideways_loop"); + public static final DeferredHolder KRAKEN_ATTACK = registerSoundEvent("kraken_attack"); + public static final DeferredHolder KRAKEN_SPIN = registerSoundEvent("kraken_spin"); + public static final DeferredHolder KRAKEN_ROAR = registerSoundEvent("kraken_roar"); + public static final DeferredHolder KRAKEN_SUMMON = registerSoundEvent("kraken_summon"); + public static final DeferredHolder KRAKEN_HURT = registerSoundEvent("kraken_hurt"); + public static final DeferredHolder KRAKEN_DEATH = registerSoundEvent("kraken_death"); + public static final DeferredHolder BASILISK_IDLE_LOOP = registerSoundEvent("basilisk_idle_loop"); + public static final DeferredHolder BASILISK_SLITHER_LOOP = registerSoundEvent("basilisk_slither_loop"); + public static final DeferredHolder BASILISK_BITE = registerSoundEvent("basilisk_bite"); + public static final DeferredHolder BASILISK_HISS = registerSoundEvent("basilisk_hiss"); + public static final DeferredHolder BASILISK_HURT = registerSoundEvent("basilisk_hurt"); + public static final DeferredHolder BASILISK_DEATH = registerSoundEvent("basilisk_death"); + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_AMBIENT = registerSoundEvent("thoraxis_nightmare_wastes_ambient"); + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_ADDITIONS = registerSoundEvent("thoraxis_nightmare_wastes_additions"); + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_MOOD = registerSoundEvent("thoraxis_nightmare_wastes_mood"); + public static final DeferredHolder THORAXIS_DREAM_DUNES_AMBIENT = registerSoundEvent("thoraxis_dream_dunes_ambient"); + public static final DeferredHolder THORAXIS_DREAM_DUNES_ADDITIONS = registerSoundEvent("thoraxis_dream_dunes_additions"); + public static final DeferredHolder THORAXIS_DREAM_DUNES_MOOD = registerSoundEvent("thoraxis_dream_dunes_mood"); + public static final DeferredHolder THORAXIS_LUCID_POOLS_AMBIENT = registerSoundEvent("thoraxis_lucid_pools_ambient"); + public static final DeferredHolder THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions"); + public static final DeferredHolder THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood"); + public static final DeferredHolder LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); + public static final DeferredHolder LUCID_FLYING = registerSoundEvent("lucid_flying"); + public static final DeferredHolder LUCID_ATTACK = registerSoundEvent("lucid_attack"); + public static final DeferredHolder LUCID_BOLT_SOUND = registerSoundEvent("lucid_bolt"); + public static final DeferredHolder LUCID_HURT = registerSoundEvent("lucid_hurt"); + public static final DeferredHolder LUCID_DEATH = registerSoundEvent("lucid_death"); + public static final DeferredHolder REVERIE_IDLE = registerSoundEvent("reverie_idle"); + public static final DeferredHolder REVERIE_HURT = registerSoundEvent("reverie_hurt"); + public static final DeferredHolder REVERIE_WORRY = registerSoundEvent("reverie_worry"); + public static final DeferredHolder REVERIE_SAVE = registerSoundEvent("reverie_save"); + public static final DeferredHolder REVERIE_JOIN_PLAYER = registerSoundEvent("reverie_join_player"); + public static final DeferredHolder REVERIE_ALERT = registerSoundEvent("reverie_alert"); + public static final DeferredHolder FLYING_SQUIRREL_IDLE = registerSoundEvent("flying_squirrel_idle"); + public static final DeferredHolder FLYING_SQUIRREL_BEG = registerSoundEvent("flying_squirrel_beg"); + public static final DeferredHolder FLYING_SQUIRREL_NUT = registerSoundEvent("flying_squirrel_nut"); + public static final DeferredHolder FLYING_SQUIRREL_GLIDE_LOOP = registerSoundEvent("flying_squirrel_glide_loop"); + public static final DeferredHolder FLYING_SQUIRREL_HURT = registerSoundEvent("flying_squirrel_hurt"); + public static final DeferredHolder FLYING_SQUIRREL_DEATH = registerSoundEvent("flying_squirrel_death"); + public static final DeferredHolder NIGHTMARE_IDLE = registerSoundEvent("nightmare_idle"); + public static final DeferredHolder NIGHTMARE_HURT = registerSoundEvent("nightmare_hurt"); + public static final DeferredHolder NIGHTMARE_ROAR = registerSoundEvent("nightmare_roar"); + public static final DeferredHolder NIGHTMARE_DEATH = registerSoundEvent("nightmare_death"); + public static final DeferredHolder NIGHTMARE_BITE = registerSoundEvent("nightmare_bite"); + public static final DeferredHolder NIGHTMARE_FLAP = registerSoundEvent("nightmare_flap"); + public static final DeferredHolder TRIFFID_ATTACK = registerSoundEvent("triffid_attack"); + public static final DeferredHolder TRIFFID_GRAB = registerSoundEvent("triffid_grab"); + public static final DeferredHolder TRIFFID_HURT = registerSoundEvent("triffid_hurt"); + public static final DeferredHolder TRIFFID_DEATH = registerSoundEvent("triffid_death"); + public static final DeferredHolder TRIFFID_HISS = registerSoundEvent("triffid_hiss"); + public static final DeferredHolder TRIFFID_GROWL = registerSoundEvent("triffid_growl"); + public static final DeferredHolder MANTIS_AMBIENT = registerSoundEvent("mantis_ambient"); + public static final DeferredHolder MANTIS_HURT = registerSoundEvent("mantis_hurt"); + public static final DeferredHolder MANTIS_ATTACK = registerSoundEvent("mantis_attack"); + public static final DeferredHolder MANTIS_FLY_LOOP = registerSoundEvent("mantis_fly_loop"); + public static final DeferredHolder GRAVITY_GUN_PICKUP = registerSoundEvent("gravity_gun_pickup"); + public static final DeferredHolder GRAVITY_GUN_DROP = registerSoundEvent("gravity_gun_drop"); + public static final DeferredHolder GRAVITY_GUN_HOLD_LOOP = registerSoundEvent("gravity_gun_hold_loop"); + public static final DeferredHolder GRAVITY_GUN_LAUNCH = registerSoundEvent("gravity_gun_launch"); + public static final DeferredHolder GRAVITY_GUN_DRYFIRE = registerSoundEvent("gravity_gun_dryfire"); + public static final DeferredHolder BED_BUG_AMBIENT = registerSoundEvent("bed_bug_ambient"); + public static final DeferredHolder BED_BUG_HURT = registerSoundEvent("bed_bug_hurt"); + public static final DeferredHolder BED_BUG_ATTACK = registerSoundEvent("bed_bug_attack"); + public static final DeferredHolder WASP_IDLE = registerSoundEvent("wasp_idle"); + public static final DeferredHolder WASP_HURT = registerSoundEvent("wasp_hurt"); + public static final DeferredHolder WASP_ATTACK = registerSoundEvent("wasp_attack"); + public static final DeferredHolder WASP_DEATH = registerSoundEvent("wasp_death"); + public static final DeferredHolder SCORPION_AMBIENT = registerSoundEvent("scorpion_ambient"); + public static final DeferredHolder SCORPION_HURT = registerSoundEvent("scorpion_hurt"); + public static final DeferredHolder SCORPION_ATTACK = registerSoundEvent("scorpion_attack"); + public static final DeferredHolder EMPEROR_SCORPION_AMBIENT = registerSoundEvent("emperor_scorpion_ambient"); + public static final DeferredHolder EMPEROR_SCORPION_HURT = registerSoundEvent("emperor_scorpion_hurt"); + public static final DeferredHolder EMPEROR_SCORPION_ATTACK = registerSoundEvent("emperor_scorpion_attack"); + public static final DeferredHolder EMPEROR_SCORPION_ROAR = registerSoundEvent("emperor_scorpion_roar"); + public static final DeferredHolder MOLEWORM_AMBIENT = registerSoundEvent("moleworm_ambient"); + public static final DeferredHolder MOLEWORM_HURT = registerSoundEvent("moleworm_hurt"); + public static final DeferredHolder MOLEWORM_ATTACK = registerSoundEvent("moleworm_attack"); + public static final DeferredHolder MOLEWORM_DIG = registerSoundEvent("moleworm_dig"); + public static final DeferredHolder MOLEVORE_AMBIENT = registerSoundEvent("molevore_ambient"); + public static final DeferredHolder MOLEVORE_HURT = registerSoundEvent("molevore_hurt"); + public static final DeferredHolder MOLEVORE_ATTACK = registerSoundEvent("molevore_attack"); + public static final DeferredHolder MOLEVORE_DIG = registerSoundEvent("molevore_dig"); + public static final DeferredHolder DUCT_TAPE_USE = registerSoundEvent("duct_tape_use"); + public static final DeferredHolder POTENT_NYXITE_HYPNOTIC_GAS = registerSoundEvent("potent_nyxite_hypnotic_gas"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_START = registerSoundEvent("potent_nyxite_geyser_eruption_start"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_ACTIVE = registerSoundEvent("potent_nyxite_geyser_eruption_active"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_START = registerSoundEvent("potent_nyxite_geyser_continuous_start"); + public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_ACTIVE = registerSoundEvent("potent_nyxite_geyser_continuous_active"); + + private AntarchyNeoforgeSounds() {} + + public static void register(IEventBus modEventBus) { + SOUND_EVENTS.register(modEventBus); + } + + private static DeferredHolder registerSoundEvent(String path) { + return SOUND_EVENTS.register(path, + () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path))); + } +} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java new file mode 100644 index 00000000..7711e1e1 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java @@ -0,0 +1,48 @@ +package com.craisinlord.antarchy.neoforge.registry; + +import com.craisinlord.antarchy.content.entity.*; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +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.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.level.levelgen.Heightmap; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.event.entity.RegisterSpawnPlacementsEvent; + +public class AntarchyNeoforgeSpawnPlacements { + private AntarchyNeoforgeSpawnPlacements() {} + + public static void register(IEventBus modEventBus) { + modEventBus.addListener(AntarchyNeoforgeSpawnPlacements::registerSpawnPlacements); + } + + static void registerSpawnPlacements(RegisterSpawnPlacementsEvent event) { + event.register(AntarchyNeoforgeEntites.FLYING_SQUIRREL.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, FlyingSquirrelEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.CATERPILLAR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CaterpillarEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.BUTTERFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ButterflyEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.REVERIE.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ReverieEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.BRUTALFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.ENCHANTED_GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.CLOUD_SHARK.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CloudSharkEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.WASP.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WaspEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.BOMBER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BomberEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.KRAKEN.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, KrakenEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.MISSILE_SQUID.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MissileSquidEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.MOLEWORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolewormEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MantisEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.MOLEVORE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolevoreEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.BED_BUG.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BedBugEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.LUCID.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, LucidEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ScorpionEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + 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); + } +} diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml new file mode 100644 index 00000000..be0d7086 --- /dev/null +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,40 @@ +modLoader="javafml" #mandatory +loaderVersion="[2,)" #mandatory +license="All rights reserved" + +[[mods]] #mandatory +modId="antarchy" #mandatory +logoFile="../assets/antarchy_/antarchy_logo.png" + logoBlur=false + version="${version}" #mandatory + displayName="Antarchy" #mandatory +displayURL="https://www.curseforge.com/minecraft/mc-mods/antarchy" + authors="CraisinLord" + description=''' + ANTS! ANTS! ANTS! ANTS! + ''' + +[[mixins]] + config = "antarchy-common.mixins.json" + +[[mixins]] + config = "antarchy-neoforge.mixins.json" + +[[dependencies.antarchy]] + modId="minecraft" + type="required" + versionRange="[1.21.1,)" + +[[dependencies.antarchy]] + modId="integrated_api" + type="required" + versionRange="[1.6.2,)" + ordering="AFTER" + side="BOTH" + +[[dependencies.antarchy]] + modId="geckolib" + type="required" + versionRange="*" + ordering="AFTER" + side="BOTH" \ No newline at end of file diff --git a/neoforge/src/main/resources/antarchy-neoforge.mixins.json b/neoforge/src/main/resources/antarchy-neoforge.mixins.json new file mode 100644 index 00000000..14623a58 --- /dev/null +++ b/neoforge/src/main/resources/antarchy-neoforge.mixins.json @@ -0,0 +1,23 @@ +{ + "required": true, + "package": "com.craisinlord.antarchy.neoforge.mixins", + "refmap": "antarchy.refmap.json", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "compat.SablePhysicsColliderBlockGetterMixin", + "item.BucketItemThoraxisWaterMixin", + "entity.MultipartEntityBridgeMixin", + "entity.MultipartEntityLevelRegistryMixin", + "entity.ParalyzedMobFreezeMixin", + "infinity.PortalCreatorMixin", + "infinity.RandomSpringMixin", + "level.ClientLevelPartEntitiesAccessor", + "level.ServerLevelPartEntitiesAccessor" + ], + "client": [ + ], + "injectors": { + "defaultRequire": 1 + }, + "minVersion": "0.8" +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/antiwater_bucket.json b/neoforge/src/main/resources/assets/antarchy/models/item/antiwater_bucket.json new file mode 100644 index 00000000..2e443b8f --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/antiwater_bucket.json @@ -0,0 +1,5 @@ +{ + "parent": "neoforge:item/bucket", + "loader": "neoforge:fluid_container", + "fluid": "antarchy:antiwater" +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/battle_axe.json b/neoforge/src/main/resources/assets/antarchy/models/item/battle_axe.json new file mode 100644 index 00000000..f2037157 --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/battle_axe.json @@ -0,0 +1,25 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/battle_axe/battle_axe_item" + }, + "base": { + "parent": "antarchy:item/battle_axe_held" + }, + "texture_size": [ + 64, + 64 + ], + "perspectives": { + "gui": { + "parent": "antarchy:item/battle_axe_gui" + }, + "ground": { + "parent": "antarchy:item/battle_axe_gui" + }, + "fixed": { + "parent": "antarchy:item/battle_axe_gui" + } + } +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/big_bertha.json b/neoforge/src/main/resources/assets/antarchy/models/item/big_bertha.json new file mode 100644 index 00000000..0654e457 --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/big_bertha.json @@ -0,0 +1,25 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/big_bertha/big_bertha_item" + }, + "base": { + "parent": "antarchy:item/big_bertha_held" + }, + "texture_size": [ + 64, + 64 + ], + "perspectives": { + "gui": { + "parent": "antarchy:item/big_bertha_gui" + }, + "ground": { + "parent": "antarchy:item/big_bertha_gui" + }, + "fixed": { + "parent": "antarchy:item/big_bertha_gui" + } + } +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/gravity_gun.json b/neoforge/src/main/resources/assets/antarchy/models/item/gravity_gun.json new file mode 100644 index 00000000..f0da5cd5 --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/gravity_gun.json @@ -0,0 +1,18 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "base": { + "parent": "antarchy:item/gravity_gun_held_geo" + }, + "perspectives": { + "gui": { + "parent": "antarchy:item/gravity_gun_gui" + }, + "ground": { + "parent": "antarchy:item/gravity_gun_gui" + }, + "fixed": { + "parent": "antarchy:item/gravity_gun_gui" + } + } +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/grow_ray.json b/neoforge/src/main/resources/assets/antarchy/models/item/grow_ray.json new file mode 100644 index 00000000..bd6a200a --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/grow_ray.json @@ -0,0 +1,18 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "base": { + "parent": "antarchy:item/grow_ray_held_geo" + }, + "perspectives": { + "gui": { + "parent": "antarchy:item/grow_ray_gui" + }, + "ground": { + "parent": "antarchy:item/grow_ray_gui" + }, + "fixed": { + "parent": "antarchy:item/grow_ray_gui" + } + } +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/growth_ray.json b/neoforge/src/main/resources/assets/antarchy/models/item/growth_ray.json new file mode 100644 index 00000000..bd6a200a --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/growth_ray.json @@ -0,0 +1,18 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "base": { + "parent": "antarchy:item/grow_ray_held_geo" + }, + "perspectives": { + "gui": { + "parent": "antarchy:item/grow_ray_gui" + }, + "ground": { + "parent": "antarchy:item/grow_ray_gui" + }, + "fixed": { + "parent": "antarchy:item/grow_ray_gui" + } + } +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/ichor_bucket.json b/neoforge/src/main/resources/assets/antarchy/models/item/ichor_bucket.json new file mode 100644 index 00000000..895a0ba3 --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/ichor_bucket.json @@ -0,0 +1,5 @@ +{ + "parent": "neoforge:item/bucket", + "loader": "neoforge:fluid_container", + "fluid": "antarchy:ichor" +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/shrink_ray.json b/neoforge/src/main/resources/assets/antarchy/models/item/shrink_ray.json new file mode 100644 index 00000000..204d65b1 --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/shrink_ray.json @@ -0,0 +1,18 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "base": { + "parent": "antarchy:item/shrink_ray_held_geo" + }, + "perspectives": { + "gui": { + "parent": "antarchy:item/shrink_ray_gui" + }, + "ground": { + "parent": "antarchy:item/shrink_ray_gui" + }, + "fixed": { + "parent": "antarchy:item/shrink_ray_gui" + } + } +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/squidzooka.json b/neoforge/src/main/resources/assets/antarchy/models/item/squidzooka.json new file mode 100644 index 00000000..e09e56ac --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/squidzooka.json @@ -0,0 +1,18 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "base": { + "parent": "antarchy:item/squidzooka_held_geo" + }, + "perspectives": { + "gui": { + "parent": "antarchy:item/squidzooka_gui" + }, + "ground": { + "parent": "antarchy:item/squidzooka_gui" + }, + "fixed": { + "parent": "antarchy:item/squidzooka_gui" + } + } +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ant_nests_in_forests.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ant_nests_in_forests.json new file mode 100644 index 00000000..45283482 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ant_nests_in_forests.json @@ -0,0 +1,9 @@ +{ + "type": "neoforge:add_features", + "biomes": "#antarchy:overworld_ant_nest_spawn_biomes", + "features": [ + "antarchy:brown_ant_nest", + "antarchy:rainbow_ant_nest" + ], + "step": "vegetal_decoration" +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/apple_cow_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/apple_cow_spawns.json new file mode 100644 index 00000000..56d37a76 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/apple_cow_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:apple_cow_spawn_biomes", + "spawners": [ + { + "type": "antarchy:apple_cow", + "weight": 10, + "minCount": 2, + "maxCount": 4 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flower_forest_butterfly_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flower_forest_butterfly_spawns.json new file mode 100644 index 00000000..d33716ff --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flower_forest_butterfly_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:flower_forest_butterfly_spawn_biomes", + "spawners": [ + { + "type": "antarchy:butterfly", + "weight": 28, + "minCount": 2, + "maxCount": 5 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flower_forest_caterpillar_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flower_forest_caterpillar_spawns.json new file mode 100644 index 00000000..11677bc2 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flower_forest_caterpillar_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:flower_forest_caterpillar_spawn_biomes", + "spawners": [ + { + "type": "antarchy:caterpillar", + "weight": 24, + "minCount": 2, + "maxCount": 4 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flying_squirrel_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flying_squirrel_spawns.json new file mode 100644 index 00000000..a507b07b --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/flying_squirrel_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:flying_squirrel_spawn_biomes", + "spawners": [ + { + "type": "antarchy:flying_squirrel", + "weight": 8, + "minCount": 1, + "maxCount": 3 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/golden_apple_cow_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/golden_apple_cow_spawns.json new file mode 100644 index 00000000..bb996235 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/golden_apple_cow_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:golden_apple_cow_spawn_biomes", + "spawners": [ + { + "type": "antarchy:golden_apple_cow", + "weight": 3, + "minCount": 1, + "maxCount": 3 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/honeyed_apple_cow_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/honeyed_apple_cow_spawns.json new file mode 100644 index 00000000..4df5d6b0 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/honeyed_apple_cow_spawns.json @@ -0,0 +1,18 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:mod_loaded", + "modid": "create" + } + ], + "type": "neoforge:add_spawns", + "biomes": "#antarchy:honeyed_apple_cow_spawn_biomes", + "spawners": [ + { + "type": "antarchy:honeyed_apple_cow", + "weight": 2, + "minCount": 1, + "maxCount": 2 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/milkweed_in_flower_forests.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/milkweed_in_flower_forests.json new file mode 100644 index 00000000..041b3378 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/milkweed_in_flower_forests.json @@ -0,0 +1,8 @@ +{ + "type": "neoforge:add_features", + "biomes": "#antarchy:milkweed_spawn_biomes", + "features": [ + "antarchy:flower_forest_milkweed" + ], + "step": "vegetal_decoration" +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/missile_squid_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/missile_squid_spawns.json new file mode 100644 index 00000000..218b4c94 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/missile_squid_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:missile_squid_spawn_biomes", + "spawners": [ + { + "type": "antarchy:missile_squid", + "weight": 2, + "minCount": 1, + "maxCount": 2 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ores_in_elythia.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ores_in_elythia.json new file mode 100644 index 00000000..dca3e3bb --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ores_in_elythia.json @@ -0,0 +1,9 @@ +{ + "type": "neoforge:add_features", + "biomes": "#antarchy:is_elythia", + "features": [ + "antarchy:uranium_ore", + "antarchy:titanium_ore" + ], + "step": "underground_ores" +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ores_in_overworld.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ores_in_overworld.json new file mode 100644 index 00000000..e5406487 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/ores_in_overworld.json @@ -0,0 +1,9 @@ +{ + "type": "neoforge:add_features", + "biomes": "#minecraft:is_overworld", + "features": [ + "antarchy:uranium_ore", + "antarchy:titanium_ore" + ], + "step": "underground_ores" +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/red_ant_nests_in_nether.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/red_ant_nests_in_nether.json new file mode 100644 index 00000000..c9981ced --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/red_ant_nests_in_nether.json @@ -0,0 +1,8 @@ +{ + "type": "neoforge:add_features", + "biomes": "#antarchy:red_ant_nest_spawn_biomes", + "features": [ + "antarchy:red_ant_nest" + ], + "step": "vegetal_decoration" +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..bc767295 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,17 @@ +pluginManagement { + repositories { + maven { url "https://maven.fabricmc.net/" } + maven { url "https://maven.architectury.dev/" } + maven { url "https://maven.minecraftforge.net/" } + maven { url "https://maven.neoforged.net/" } + maven { url "https://maven.shedaniel.me/" } + maven { url "https://maven.terraformersmc.com/releases/" } + gradlePluginPortal() + } +} + +include("common") +include("neoforge") +include("fabric") + +rootProject.name = "Antarchy" \ No newline at end of file